Structural subset of DurableObjectState the per-tenant hub DO (hub-do.ts)
reads: its OWN idFromName identity — id.name IS the bare tenantId, with no
':' join and no runId decode, unlike DurableObjectRunner whose name is
${workflowId}:${runId} — plus the Hibernatable-WebSocket members it fans
events out over. The hub holds no D1/DO storage, so storage is not
required here. Same OPTIONAL-WS, guard-on-presence posture as
DurableObjectRunnerState.
Structural subset of DurableObjectState the per-tenant hub DO (hub-do.ts) reads: its OWN idFromName identity —
id.nameIS the bare tenantId, with no ':' join and no runId decode, unlike DurableObjectRunner whose name is${workflowId}:${runId}— plus the Hibernatable-WebSocket members it fans events out over. The hub holds no D1/DO storage, sostorageis not required here. Same OPTIONAL-WS, guard-on-presence posture as DurableObjectRunnerState.