@kortix/sdk 0.13.4 → 0.13.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +63 -6
- package/dist/browser/cache/idb-sync-cache.d.ts +19 -1
- package/dist/browser/cache/idb-sync-cache.d.ts.map +1 -1
- package/dist/browser/cache/idb-sync-cache.js +39 -4
- package/dist/browser/cache/idb-sync-cache.js.map +1 -1
- package/dist/browser/session-sync/server-transcript-mirror.d.ts +82 -0
- package/dist/browser/session-sync/server-transcript-mirror.d.ts.map +1 -0
- package/dist/browser/session-sync/server-transcript-mirror.js +143 -0
- package/dist/browser/session-sync/server-transcript-mirror.js.map +1 -0
- package/dist/browser/session-sync/session-sync-registry.d.ts +11 -1
- package/dist/browser/session-sync/session-sync-registry.d.ts.map +1 -1
- package/dist/browser/session-sync/session-sync-registry.js +117 -9
- package/dist/browser/session-sync/session-sync-registry.js.map +1 -1
- package/dist/browser/session-sync/visibility.d.ts +19 -0
- package/dist/browser/session-sync/visibility.d.ts.map +1 -0
- package/dist/browser/session-sync/visibility.js +16 -0
- package/dist/browser/session-sync/visibility.js.map +1 -0
- package/dist/browser/stores/sandbox-connection-store.d.ts +13 -1
- package/dist/browser/stores/sandbox-connection-store.d.ts.map +1 -1
- package/dist/browser/stores/sandbox-connection-store.js +6 -3
- package/dist/browser/stores/sandbox-connection-store.js.map +1 -1
- package/dist/browser/stores/session-working-store.d.ts +10 -5
- package/dist/browser/stores/session-working-store.d.ts.map +1 -1
- package/dist/browser/stores/session-working-store.js +32 -8
- package/dist/browser/stores/session-working-store.js.map +1 -1
- package/dist/browser/stores/sync-store.d.ts +56 -2
- package/dist/browser/stores/sync-store.d.ts.map +1 -1
- package/dist/browser/stores/sync-store.js +682 -402
- package/dist/browser/stores/sync-store.js.map +1 -1
- package/dist/core/auth/app-viewer.d.ts +57 -0
- package/dist/core/auth/app-viewer.d.ts.map +1 -0
- package/dist/core/auth/app-viewer.js +82 -0
- package/dist/core/auth/app-viewer.js.map +1 -0
- package/dist/core/auth/session.d.ts +45 -0
- package/dist/core/auth/session.d.ts.map +1 -0
- package/dist/core/auth/session.js +113 -0
- package/dist/core/auth/session.js.map +1 -0
- package/dist/core/client/kortix.d.ts +37 -29
- package/dist/core/client/kortix.d.ts.map +1 -1
- package/dist/core/client/kortix.js +61 -8
- package/dist/core/client/kortix.js.map +1 -1
- package/dist/core/http/config.d.ts +4 -2
- package/dist/core/http/config.d.ts.map +1 -1
- package/dist/core/http/config.js.map +1 -1
- package/dist/core/http/opencode-errors.d.ts +17 -0
- package/dist/core/http/opencode-errors.d.ts.map +1 -1
- package/dist/core/http/opencode-errors.js +25 -0
- package/dist/core/http/opencode-errors.js.map +1 -1
- package/dist/core/rest/platform-client/auth.d.ts +120 -0
- package/dist/core/rest/platform-client/auth.d.ts.map +1 -0
- package/dist/core/rest/platform-client/auth.js +98 -0
- package/dist/core/rest/platform-client/auth.js.map +1 -0
- package/dist/core/rest/platform-client/host-boundary.d.ts +5 -0
- package/dist/core/rest/platform-client/host-boundary.d.ts.map +1 -1
- package/dist/core/rest/platform-client/host-boundary.js.map +1 -1
- package/dist/core/rest/projects-client/accounts.d.ts +57 -0
- package/dist/core/rest/projects-client/accounts.d.ts.map +1 -1
- package/dist/core/rest/projects-client/accounts.js +31 -0
- package/dist/core/rest/projects-client/accounts.js.map +1 -1
- package/dist/core/rest/projects-client/apps.d.ts +9 -0
- package/dist/core/rest/projects-client/apps.d.ts.map +1 -1
- package/dist/core/rest/projects-client/apps.js.map +1 -1
- package/dist/core/rest/projects-client/billing.d.ts +2 -0
- package/dist/core/rest/projects-client/billing.d.ts.map +1 -1
- package/dist/core/rest/projects-client/billing.js.map +1 -1
- package/dist/core/rest/projects-client/channels.d.ts +0 -3
- package/dist/core/rest/projects-client/channels.d.ts.map +1 -1
- package/dist/core/rest/projects-client/channels.js +0 -6
- package/dist/core/rest/projects-client/channels.js.map +1 -1
- package/dist/core/rest/projects-client/connectors.d.ts +104 -19
- package/dist/core/rest/projects-client/connectors.d.ts.map +1 -1
- package/dist/core/rest/projects-client/connectors.js +56 -2
- package/dist/core/rest/projects-client/connectors.js.map +1 -1
- package/dist/core/rest/projects-client/index.d.ts +1 -2
- package/dist/core/rest/projects-client/index.d.ts.map +1 -1
- package/dist/core/rest/projects-client/index.js +1 -2
- package/dist/core/rest/projects-client/index.js.map +1 -1
- package/dist/core/rest/projects-client/oauth-clients.d.ts +47 -0
- package/dist/core/rest/projects-client/oauth-clients.d.ts.map +1 -0
- package/dist/core/rest/projects-client/oauth-clients.js +33 -0
- package/dist/core/rest/projects-client/oauth-clients.js.map +1 -0
- package/dist/core/rest/projects-client/projects.d.ts +23 -6
- package/dist/core/rest/projects-client/projects.d.ts.map +1 -1
- package/dist/core/rest/projects-client/projects.js +6 -3
- package/dist/core/rest/projects-client/projects.js.map +1 -1
- package/dist/core/rest/projects-client/session-sandbox.d.ts +52 -0
- package/dist/core/rest/projects-client/session-sandbox.d.ts.map +1 -1
- package/dist/core/rest/projects-client/session-sandbox.js.map +1 -1
- package/dist/core/rest/projects-client/sessions.d.ts +142 -34
- package/dist/core/rest/projects-client/sessions.d.ts.map +1 -1
- package/dist/core/rest/projects-client/sessions.js +48 -19
- package/dist/core/rest/projects-client/sessions.js.map +1 -1
- package/dist/core/runtime/attachment-part.d.ts +26 -0
- package/dist/core/runtime/attachment-part.d.ts.map +1 -0
- package/dist/core/runtime/attachment-part.js +41 -0
- package/dist/core/runtime/attachment-part.js.map +1 -0
- package/dist/core/runtime/client.d.ts +4 -2
- package/dist/core/runtime/client.d.ts.map +1 -1
- package/dist/core/runtime/client.js +3 -2
- package/dist/core/runtime/client.js.map +1 -1
- package/dist/core/runtime/opencode-v2-event-aliases.d.ts +184 -0
- package/dist/core/runtime/opencode-v2-event-aliases.d.ts.map +1 -0
- package/dist/core/runtime/opencode-v2-event-aliases.js +2 -0
- package/dist/core/runtime/opencode-v2-event-aliases.js.map +1 -0
- package/dist/core/runtime/pty.d.ts +11 -1
- package/dist/core/runtime/pty.d.ts.map +1 -1
- package/dist/core/runtime/pty.js +19 -6
- package/dist/core/runtime/pty.js.map +1 -1
- package/dist/core/session/connection.d.ts +64 -0
- package/dist/core/session/connection.d.ts.map +1 -0
- package/dist/core/session/connection.js +36 -0
- package/dist/core/session/connection.js.map +1 -0
- package/dist/core/session/index.d.ts +2 -0
- package/dist/core/session/index.d.ts.map +1 -1
- package/dist/core/session/index.js +2 -0
- package/dist/core/session/index.js.map +1 -1
- package/dist/core/session/open-bundle.d.ts +110 -0
- package/dist/core/session/open-bundle.d.ts.map +1 -0
- package/dist/core/session/open-bundle.js +183 -0
- package/dist/core/session/open-bundle.js.map +1 -0
- package/dist/core/session/poll-owner.d.ts +35 -0
- package/dist/core/session/poll-owner.d.ts.map +1 -0
- package/dist/core/session/poll-owner.js +90 -0
- package/dist/core/session/poll-owner.js.map +1 -0
- package/dist/core/session/preview-auth.d.ts +25 -0
- package/dist/core/session/preview-auth.d.ts.map +1 -1
- package/dist/core/session/preview-auth.js +31 -1
- package/dist/core/session/preview-auth.js.map +1 -1
- package/dist/core/session/preview-config.d.ts +26 -0
- package/dist/core/session/preview-config.d.ts.map +1 -0
- package/dist/core/session/preview-config.js +95 -0
- package/dist/core/session/preview-config.js.map +1 -0
- package/dist/core/session/preview-options.d.ts +25 -0
- package/dist/core/session/preview-options.d.ts.map +1 -0
- package/dist/core/session/preview-options.js +45 -0
- package/dist/core/session/preview-options.js.map +1 -0
- package/dist/core/session/preview.d.ts +8 -3
- package/dist/core/session/preview.d.ts.map +1 -1
- package/dist/core/session/preview.js +11 -4
- package/dist/core/session/preview.js.map +1 -1
- package/dist/core/session/rewind.d.ts +67 -24
- package/dist/core/session/rewind.d.ts.map +1 -1
- package/dist/core/session/rewind.js +74 -26
- package/dist/core/session/rewind.js.map +1 -1
- package/dist/core/session/server-store/active.d.ts +10 -12
- package/dist/core/session/server-store/active.d.ts.map +1 -1
- package/dist/core/session/server-store/active.js +11 -9
- package/dist/core/session/server-store/active.js.map +1 -1
- package/dist/core/session/server-store/url-helpers.d.ts +11 -2
- package/dist/core/session/server-store/url-helpers.d.ts.map +1 -1
- package/dist/core/session/server-store/url-helpers.js +11 -2
- package/dist/core/session/server-store/url-helpers.js.map +1 -1
- package/dist/core/session/static-file-preview.d.ts +50 -0
- package/dist/core/session/static-file-preview.d.ts.map +1 -0
- package/dist/core/session/static-file-preview.js +91 -0
- package/dist/core/session/static-file-preview.js.map +1 -0
- package/dist/core/session/url.d.ts +25 -2
- package/dist/core/session/url.d.ts.map +1 -1
- package/dist/core/session/url.js +87 -11
- package/dist/core/session/url.js.map +1 -1
- package/dist/core/session/wake-escalation.d.ts +188 -0
- package/dist/core/session/wake-escalation.d.ts.map +1 -0
- package/dist/core/session/wake-escalation.js +241 -0
- package/dist/core/session/wake-escalation.js.map +1 -0
- package/dist/core/session/working.d.ts +107 -2
- package/dist/core/session/working.d.ts.map +1 -1
- package/dist/core/session/working.js +206 -7
- package/dist/core/session/working.js.map +1 -1
- package/dist/core/session-sync/durable-log.d.ts +96 -0
- package/dist/core/session-sync/durable-log.d.ts.map +1 -0
- package/dist/core/session-sync/durable-log.js +94 -0
- package/dist/core/session-sync/durable-log.js.map +1 -0
- package/dist/core/session-sync/fragment.d.ts +27 -0
- package/dist/core/session-sync/fragment.d.ts.map +1 -0
- package/dist/core/session-sync/fragment.js +24 -0
- package/dist/core/session-sync/fragment.js.map +1 -0
- package/dist/core/session-sync/session-sync-controller.d.ts +117 -11
- package/dist/core/session-sync/session-sync-controller.d.ts.map +1 -1
- package/dist/core/session-sync/session-sync-controller.js +278 -26
- package/dist/core/session-sync/session-sync-controller.js.map +1 -1
- package/dist/core/stream/keepalive.d.ts +17 -0
- package/dist/core/stream/keepalive.d.ts.map +1 -0
- package/dist/core/stream/keepalive.js +19 -0
- package/dist/core/stream/keepalive.js.map +1 -0
- package/dist/core/turns/grouping.d.ts.map +1 -1
- package/dist/core/turns/grouping.js +73 -23
- package/dist/core/turns/grouping.js.map +1 -1
- package/dist/core/turns/types.d.ts +5 -0
- package/dist/core/turns/types.d.ts.map +1 -1
- package/dist/index.d.ts +16 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +19 -0
- package/dist/index.js.map +1 -1
- package/dist/kortix.esm.min.js +25 -25
- package/dist/kortix.global.js +25 -25
- package/dist/node/app-viewer.d.ts +41 -0
- package/dist/node/app-viewer.d.ts.map +1 -0
- package/dist/node/app-viewer.js +150 -0
- package/dist/node/app-viewer.js.map +1 -0
- package/dist/node/auth.d.ts +84 -0
- package/dist/node/auth.d.ts.map +1 -0
- package/dist/node/auth.js +414 -0
- package/dist/node/auth.js.map +1 -0
- package/dist/node/server.d.ts +19 -0
- package/dist/node/server.d.ts.map +1 -1
- package/dist/node/server.js +13 -1
- package/dist/node/server.js.map +1 -1
- package/dist/platform/auth-core.d.ts +13 -1
- package/dist/platform/auth-core.d.ts.map +1 -1
- package/dist/platform/auth-core.js +13 -1
- package/dist/platform/auth-core.js.map +1 -1
- package/dist/react/bedrock-invokable.d.ts +58 -0
- package/dist/react/bedrock-invokable.d.ts.map +1 -0
- package/dist/react/bedrock-invokable.js +83 -0
- package/dist/react/bedrock-invokable.js.map +1 -0
- package/dist/react/index.d.ts +3 -0
- package/dist/react/index.d.ts.map +1 -1
- package/dist/react/index.js +7 -0
- package/dist/react/index.js.map +1 -1
- package/dist/react/model-flatten.d.ts +14 -1
- package/dist/react/model-flatten.d.ts.map +1 -1
- package/dist/react/model-flatten.js +3 -4
- package/dist/react/model-flatten.js.map +1 -1
- package/dist/react/opencode.d.ts +3 -1
- package/dist/react/opencode.d.ts.map +1 -1
- package/dist/react/opencode.js +5 -1
- package/dist/react/opencode.js.map +1 -1
- package/dist/react/provider-selection.d.ts +58 -0
- package/dist/react/provider-selection.d.ts.map +1 -1
- package/dist/react/provider-selection.js +253 -2
- package/dist/react/provider-selection.js.map +1 -1
- package/dist/react/session-start-giveup.d.ts +12 -0
- package/dist/react/session-start-giveup.d.ts.map +1 -0
- package/dist/react/session-start-giveup.js +13 -0
- package/dist/react/session-start-giveup.js.map +1 -0
- package/dist/react/session-title-sync.d.ts.map +1 -1
- package/dist/react/session-title-sync.js +15 -5
- package/dist/react/session-title-sync.js.map +1 -1
- package/dist/react/sign-in-with-kortix.d.ts +346 -0
- package/dist/react/sign-in-with-kortix.d.ts.map +1 -0
- package/dist/react/sign-in-with-kortix.js +65 -0
- package/dist/react/sign-in-with-kortix.js.map +1 -0
- package/dist/react/use-admin-accounts.d.ts +36 -1
- package/dist/react/use-admin-accounts.d.ts.map +1 -1
- package/dist/react/use-admin-accounts.js +19 -0
- package/dist/react/use-admin-accounts.js.map +1 -1
- package/dist/react/use-gateway-routing-policy.d.ts +1 -0
- package/dist/react/use-gateway-routing-policy.d.ts.map +1 -1
- package/dist/react/use-gateway-routing-policy.js +12 -1
- package/dist/react/use-gateway-routing-policy.js.map +1 -1
- package/dist/react/use-kortix-app-viewer.d.ts +13 -0
- package/dist/react/use-kortix-app-viewer.d.ts.map +1 -0
- package/dist/react/use-kortix-app-viewer.js +29 -0
- package/dist/react/use-kortix-app-viewer.js.map +1 -0
- package/dist/react/use-model-defaults.d.ts +7 -0
- package/dist/react/use-model-defaults.d.ts.map +1 -1
- package/dist/react/use-model-defaults.js +7 -1
- package/dist/react/use-model-defaults.js.map +1 -1
- package/dist/react/use-model-enablement.d.ts.map +1 -1
- package/dist/react/use-model-enablement.js +5 -1
- package/dist/react/use-model-enablement.js.map +1 -1
- package/dist/react/use-model-store.d.ts +31 -0
- package/dist/react/use-model-store.d.ts.map +1 -1
- package/dist/react/use-model-store.js +31 -2
- package/dist/react/use-model-store.js.map +1 -1
- package/dist/react/use-opencode-events/handle-event.d.ts.map +1 -1
- package/dist/react/use-opencode-events/handle-event.js +26 -0
- package/dist/react/use-opencode-events/handle-event.js.map +1 -1
- package/dist/react/use-opencode-events/helpers.d.ts +49 -5
- package/dist/react/use-opencode-events/helpers.d.ts.map +1 -1
- package/dist/react/use-opencode-events/helpers.js +54 -6
- package/dist/react/use-opencode-events/helpers.js.map +1 -1
- package/dist/react/use-opencode-events/index.d.ts.map +1 -1
- package/dist/react/use-opencode-events/index.js +80 -8
- package/dist/react/use-opencode-events/index.js.map +1 -1
- package/dist/react/use-opencode-events/rehydrate-targets.d.ts +18 -0
- package/dist/react/use-opencode-events/rehydrate-targets.d.ts.map +1 -0
- package/dist/react/use-opencode-events/rehydrate-targets.js +20 -0
- package/dist/react/use-opencode-events/rehydrate-targets.js.map +1 -0
- package/dist/react/use-opencode-events/stream-revival.d.ts +37 -0
- package/dist/react/use-opencode-events/stream-revival.d.ts.map +1 -0
- package/dist/react/use-opencode-events/stream-revival.js +53 -0
- package/dist/react/use-opencode-events/stream-revival.js.map +1 -0
- package/dist/react/use-opencode-events/use-event-stream-refs.d.ts.map +1 -1
- package/dist/react/use-opencode-events/use-event-stream-refs.js +14 -2
- package/dist/react/use-opencode-events/use-event-stream-refs.js.map +1 -1
- package/dist/react/use-opencode-local.d.ts.map +1 -1
- package/dist/react/use-opencode-local.js +27 -8
- package/dist/react/use-opencode-local.js.map +1 -1
- package/dist/react/use-opencode-pty.d.ts +7 -1
- package/dist/react/use-opencode-pty.d.ts.map +1 -1
- package/dist/react/use-opencode-pty.js +6 -2
- package/dist/react/use-opencode-pty.js.map +1 -1
- package/dist/react/use-opencode-sessions/agents.d.ts.map +1 -1
- package/dist/react/use-opencode-sessions/agents.js +13 -2
- package/dist/react/use-opencode-sessions/agents.js.map +1 -1
- package/dist/react/use-opencode-sessions/commands.d.ts +12 -0
- package/dist/react/use-opencode-sessions/commands.d.ts.map +1 -1
- package/dist/react/use-opencode-sessions/commands.js +15 -3
- package/dist/react/use-opencode-sessions/commands.js.map +1 -1
- package/dist/react/use-opencode-sessions/index.d.ts +1 -0
- package/dist/react/use-opencode-sessions/index.d.ts.map +1 -1
- package/dist/react/use-opencode-sessions/index.js +1 -0
- package/dist/react/use-opencode-sessions/index.js.map +1 -1
- package/dist/react/use-opencode-sessions/keys.d.ts +8 -0
- package/dist/react/use-opencode-sessions/keys.d.ts.map +1 -1
- package/dist/react/use-opencode-sessions/keys.js +8 -0
- package/dist/react/use-opencode-sessions/keys.js.map +1 -1
- package/dist/react/use-opencode-sessions/providers.d.ts.map +1 -1
- package/dist/react/use-opencode-sessions/providers.js +56 -5
- package/dist/react/use-opencode-sessions/providers.js.map +1 -1
- package/dist/react/use-opencode-sessions/shared.d.ts +23 -0
- package/dist/react/use-opencode-sessions/shared.d.ts.map +1 -1
- package/dist/react/use-opencode-sessions/shared.js +31 -0
- package/dist/react/use-opencode-sessions/shared.js.map +1 -1
- package/dist/react/use-opencode-sessions/vcs.d.ts +28 -0
- package/dist/react/use-opencode-sessions/vcs.d.ts.map +1 -0
- package/dist/react/use-opencode-sessions/vcs.js +42 -0
- package/dist/react/use-opencode-sessions/vcs.js.map +1 -0
- package/dist/react/use-poll-owner.d.ts +14 -0
- package/dist/react/use-poll-owner.d.ts.map +1 -0
- package/dist/react/use-poll-owner.js +32 -0
- package/dist/react/use-poll-owner.js.map +1 -0
- package/dist/react/use-project-llm-gateway.d.ts +27 -0
- package/dist/react/use-project-llm-gateway.d.ts.map +1 -0
- package/dist/react/use-project-llm-gateway.js +41 -0
- package/dist/react/use-project-llm-gateway.js.map +1 -0
- package/dist/react/use-project-models.d.ts +9 -0
- package/dist/react/use-project-models.d.ts.map +1 -1
- package/dist/react/use-project-models.js +24 -1
- package/dist/react/use-project-models.js.map +1 -1
- package/dist/react/use-runtime-reconnect.d.ts +11 -0
- package/dist/react/use-runtime-reconnect.d.ts.map +1 -1
- package/dist/react/use-runtime-reconnect.js +34 -3
- package/dist/react/use-runtime-reconnect.js.map +1 -1
- package/dist/react/use-session-prompts.d.ts +53 -3
- package/dist/react/use-session-prompts.d.ts.map +1 -1
- package/dist/react/use-session-prompts.js +133 -21
- package/dist/react/use-session-prompts.js.map +1 -1
- package/dist/react/use-session-send.d.ts +17 -0
- package/dist/react/use-session-send.d.ts.map +1 -1
- package/dist/react/use-session-send.js +54 -5
- package/dist/react/use-session-send.js.map +1 -1
- package/dist/react/use-session-start-give-up.d.ts +20 -0
- package/dist/react/use-session-start-give-up.d.ts.map +1 -0
- package/dist/react/use-session-start-give-up.js +60 -0
- package/dist/react/use-session-start-give-up.js.map +1 -0
- package/dist/react/use-session-sync.d.ts +35 -1
- package/dist/react/use-session-sync.d.ts.map +1 -1
- package/dist/react/use-session-sync.js +135 -53
- package/dist/react/use-session-sync.js.map +1 -1
- package/dist/react/use-session-working.d.ts +55 -0
- package/dist/react/use-session-working.d.ts.map +1 -1
- package/dist/react/use-session-working.js +114 -13
- package/dist/react/use-session-working.js.map +1 -1
- package/dist/react/use-session.d.ts +13 -13
- package/dist/react/use-session.d.ts.map +1 -1
- package/dist/react/use-session.js +74 -53
- package/dist/react/use-session.js.map +1 -1
- package/dist/react/use-static-file-preview.d.ts +12 -0
- package/dist/react/use-static-file-preview.d.ts.map +1 -0
- package/dist/react/use-static-file-preview.js +119 -0
- package/dist/react/use-static-file-preview.js.map +1 -0
- package/dist/react/use-wake-escalation.d.ts +51 -0
- package/dist/react/use-wake-escalation.d.ts.map +1 -0
- package/dist/react/use-wake-escalation.js +62 -0
- package/dist/react/use-wake-escalation.js.map +1 -0
- package/package.json +6 -4
- package/dist/browser/session-sync/session-transcript-cache.d.ts +0 -79
- package/dist/browser/session-sync/session-transcript-cache.d.ts.map +0 -1
- package/dist/browser/session-sync/session-transcript-cache.js +0 -91
- package/dist/browser/session-sync/session-transcript-cache.js.map +0 -1
- package/dist/core/rest/projects-client/public-voice-join.d.ts +0 -59
- package/dist/core/rest/projects-client/public-voice-join.d.ts.map +0 -1
- package/dist/core/rest/projects-client/public-voice-join.js +0 -64
- package/dist/core/rest/projects-client/public-voice-join.js.map +0 -1
- package/dist/core/rest/projects-client/transcription.d.ts +0 -5
- package/dist/core/rest/projects-client/transcription.d.ts.map +0 -1
- package/dist/core/rest/projects-client/transcription.js +0 -14
- package/dist/core/rest/projects-client/transcription.js.map +0 -1
|
@@ -1,6 +1,43 @@
|
|
|
1
1
|
import { type QueryClient } from '@tanstack/react-query';
|
|
2
2
|
import { type Session } from '../use-opencode-sessions/index.js';
|
|
3
3
|
import type { OpenCodeEvent } from './types.js';
|
|
4
|
+
/**
|
|
5
|
+
* How long a WIRE status frame owns its slot against the reconnect status
|
|
6
|
+
* fill. Equal to the projection's own stream bound on purpose: past it,
|
|
7
|
+
* `projectWorking` no longer lets the frame answer for the present, so
|
|
8
|
+
* letting it keep blocking the one REST read that could correct it protected
|
|
9
|
+
* nothing but the staleness itself.
|
|
10
|
+
*/
|
|
11
|
+
export declare const WIRE_STATUS_FILL_FRESHNESS_MS = 45000;
|
|
12
|
+
/**
|
|
13
|
+
* Whether `hydrateCore`'s `client.session.status()` snapshot must leave a
|
|
14
|
+
* session's status slot alone.
|
|
15
|
+
*
|
|
16
|
+
* Two failures pull in opposite directions, and this rule serves both:
|
|
17
|
+
*
|
|
18
|
+
* - The fill is a reading stamped at ISSUE time. Written unconditionally, a
|
|
19
|
+
* `busy` that was true on the way out overwrote an idle frame that landed
|
|
20
|
+
* while it was in flight (the original bug: Stop came back on a finished
|
|
21
|
+
* turn). So a slot a LIVE stream owns is off limits.
|
|
22
|
+
* - The reconnect that runs this fill happens BECAUSE a stream died — and a
|
|
23
|
+
* dead stream's last frame is exactly what the fill exists to correct. A
|
|
24
|
+
* turn inside one long tool call moves no transcript, so the
|
|
25
|
+
* hydrate-movement evidence is silent, and an unconditionally-protected
|
|
26
|
+
* stale wire idle kept vetoing the open `/turn` row for the whole run
|
|
27
|
+
* (prod, 2026-08-26). So a wire frame's ownership expires with its
|
|
28
|
+
* freshness (`WIRE_STATUS_FILL_FRESHNESS_MS`, from the store's
|
|
29
|
+
* `sessionStatusAt` stamp).
|
|
30
|
+
*
|
|
31
|
+
* A `local` slot never blocks (a fabrication must stay correctable), and a
|
|
32
|
+
* wire slot with no stamp is treated as fresh — conservative, and only
|
|
33
|
+
* reachable for a slot written before the stamp slice existed.
|
|
34
|
+
*/
|
|
35
|
+
export declare function shouldSkipStatusFill(input: {
|
|
36
|
+
hasSlot: boolean;
|
|
37
|
+
origin: 'wire' | 'local' | undefined;
|
|
38
|
+
stampedAtMs: number | undefined;
|
|
39
|
+
nowMs: number;
|
|
40
|
+
}): boolean;
|
|
4
41
|
/**
|
|
5
42
|
* session.created/updated/deleted carry the Session object either nested under
|
|
6
43
|
* `properties.info` (the SDK type) or FLAT as `properties` itself — the opencode
|
|
@@ -59,11 +96,18 @@ export declare function scheduleProjectMetadataRefetch(queryClient: QueryClient)
|
|
|
59
96
|
* project's session queries are ever the ones this event is actually about,
|
|
60
97
|
* and firing a broader refetch would refresh unrelated data (a different
|
|
61
98
|
* project's secrets/gateway state) on every title/tree change for no reason.
|
|
62
|
-
* `qk.project.sessionsScope(projectId)` — the current route's
|
|
63
|
-
* the correct reach: the list
|
|
64
|
-
*
|
|
65
|
-
*
|
|
66
|
-
*
|
|
99
|
+
* `[...qk.project.sessionsScope(projectId), 'list']` — the current route's
|
|
100
|
+
* project, LIST family only — is the correct reach: the list in every scope,
|
|
101
|
+
* nothing outside the sessions family, and nothing for a project this event was
|
|
102
|
+
* never about. Outside a project route (`projectId` null) there is nothing to
|
|
103
|
+
* mirror, so this is a no-op.
|
|
104
|
+
*
|
|
105
|
+
* NOT the whole `sessionsScope` prefix, which this used to be: that prefix also
|
|
106
|
+
* covers `sessionTurn`, `sessionPrompts` and `messages` (see `query-keys.ts`),
|
|
107
|
+
* so every `session.created` and every title-changing `session.updated`
|
|
108
|
+
* re-issued `GET .../turn` and `GET .../prompts` as a side effect of mirroring
|
|
109
|
+
* a TITLE. Those two have their own cadences and their own reasons to refetch;
|
|
110
|
+
* a title event is not one of them.
|
|
67
111
|
*/
|
|
68
112
|
export declare function refetchKortixSessionMirrors(queryClient: QueryClient, projectId: string | null): void;
|
|
69
113
|
export declare function realRuntimeTitle(value: unknown): string | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/react/use-opencode-events/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/react/use-opencode-events/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEzD,OAAO,EAAgB,KAAK,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAEtE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C;;;;;;GAMG;AACH,eAAO,MAAM,6BAA6B,QAA4B,CAAC;AAEvE;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE;IAC1C,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;IACrC,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,KAAK,EAAE,MAAM,CAAC;CACf,GAAG,OAAO,CAKV;AASD;;;;;;;;GAQG;AACH,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,OAAO,CAAC;IACtB,cAAc,EAAE,OAAO,CAAC;IACxB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,mBAAmB,GAAG,MAAM,GAAG,IAAI,CAalF;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,GAAG,SAAS,CAMzE;AAED;;yCAEyC;AACzC,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAEtE;AAED,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAQlE;AAED,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAE/D;AAED,wBAAgB,8BAA8B,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI,CAqB7E;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,2BAA2B,CACzC,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,MAAM,GAAG,IAAI,GACvB,IAAI,CAMN;AAOD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAI9D;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,8BAA8B,CAC5C,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,MAAM,GAAG,IAAI,EACxB,eAAe,EAAE,MAAM,EACvB,KAAK,EAAE,MAAM,GAAG,IAAI,GACnB,IAAI,CAsBN"}
|
|
@@ -1,5 +1,46 @@
|
|
|
1
|
+
import { STREAM_OBSERVATION_MAX_MS } from '../../core/session/working.js';
|
|
1
2
|
import { opencodeKeys } from '../use-opencode-sessions/index.js';
|
|
2
3
|
import { qk } from '../query-keys.js';
|
|
4
|
+
/**
|
|
5
|
+
* How long a WIRE status frame owns its slot against the reconnect status
|
|
6
|
+
* fill. Equal to the projection's own stream bound on purpose: past it,
|
|
7
|
+
* `projectWorking` no longer lets the frame answer for the present, so
|
|
8
|
+
* letting it keep blocking the one REST read that could correct it protected
|
|
9
|
+
* nothing but the staleness itself.
|
|
10
|
+
*/
|
|
11
|
+
export const WIRE_STATUS_FILL_FRESHNESS_MS = STREAM_OBSERVATION_MAX_MS;
|
|
12
|
+
/**
|
|
13
|
+
* Whether `hydrateCore`'s `client.session.status()` snapshot must leave a
|
|
14
|
+
* session's status slot alone.
|
|
15
|
+
*
|
|
16
|
+
* Two failures pull in opposite directions, and this rule serves both:
|
|
17
|
+
*
|
|
18
|
+
* - The fill is a reading stamped at ISSUE time. Written unconditionally, a
|
|
19
|
+
* `busy` that was true on the way out overwrote an idle frame that landed
|
|
20
|
+
* while it was in flight (the original bug: Stop came back on a finished
|
|
21
|
+
* turn). So a slot a LIVE stream owns is off limits.
|
|
22
|
+
* - The reconnect that runs this fill happens BECAUSE a stream died — and a
|
|
23
|
+
* dead stream's last frame is exactly what the fill exists to correct. A
|
|
24
|
+
* turn inside one long tool call moves no transcript, so the
|
|
25
|
+
* hydrate-movement evidence is silent, and an unconditionally-protected
|
|
26
|
+
* stale wire idle kept vetoing the open `/turn` row for the whole run
|
|
27
|
+
* (prod, 2026-08-26). So a wire frame's ownership expires with its
|
|
28
|
+
* freshness (`WIRE_STATUS_FILL_FRESHNESS_MS`, from the store's
|
|
29
|
+
* `sessionStatusAt` stamp).
|
|
30
|
+
*
|
|
31
|
+
* A `local` slot never blocks (a fabrication must stay correctable), and a
|
|
32
|
+
* wire slot with no stamp is treated as fresh — conservative, and only
|
|
33
|
+
* reachable for a slot written before the stamp slice existed.
|
|
34
|
+
*/
|
|
35
|
+
export function shouldSkipStatusFill(input) {
|
|
36
|
+
if (!input.hasSlot)
|
|
37
|
+
return false;
|
|
38
|
+
if (input.origin === 'local')
|
|
39
|
+
return false;
|
|
40
|
+
if (input.stampedAtMs === undefined)
|
|
41
|
+
return true;
|
|
42
|
+
return input.nowMs - input.stampedAtMs <= WIRE_STATUS_FILL_FRESHNESS_MS;
|
|
43
|
+
}
|
|
3
44
|
const MESSAGE_REHYDRATE_COOLDOWN_MS = 30_000;
|
|
4
45
|
const PROJECT_METADATA_REFETCH_COOLDOWN_MS = 5_000;
|
|
5
46
|
const messageRehydrateInFlight = new Set();
|
|
@@ -103,17 +144,24 @@ export function scheduleProjectMetadataRefetch(queryClient) {
|
|
|
103
144
|
* project's session queries are ever the ones this event is actually about,
|
|
104
145
|
* and firing a broader refetch would refresh unrelated data (a different
|
|
105
146
|
* project's secrets/gateway state) on every title/tree change for no reason.
|
|
106
|
-
* `qk.project.sessionsScope(projectId)` — the current route's
|
|
107
|
-
* the correct reach: the list
|
|
108
|
-
*
|
|
109
|
-
*
|
|
110
|
-
*
|
|
147
|
+
* `[...qk.project.sessionsScope(projectId), 'list']` — the current route's
|
|
148
|
+
* project, LIST family only — is the correct reach: the list in every scope,
|
|
149
|
+
* nothing outside the sessions family, and nothing for a project this event was
|
|
150
|
+
* never about. Outside a project route (`projectId` null) there is nothing to
|
|
151
|
+
* mirror, so this is a no-op.
|
|
152
|
+
*
|
|
153
|
+
* NOT the whole `sessionsScope` prefix, which this used to be: that prefix also
|
|
154
|
+
* covers `sessionTurn`, `sessionPrompts` and `messages` (see `query-keys.ts`),
|
|
155
|
+
* so every `session.created` and every title-changing `session.updated`
|
|
156
|
+
* re-issued `GET .../turn` and `GET .../prompts` as a side effect of mirroring
|
|
157
|
+
* a TITLE. Those two have their own cadences and their own reasons to refetch;
|
|
158
|
+
* a title event is not one of them.
|
|
111
159
|
*/
|
|
112
160
|
export function refetchKortixSessionMirrors(queryClient, projectId) {
|
|
113
161
|
if (!projectId)
|
|
114
162
|
return;
|
|
115
163
|
void queryClient.refetchQueries({
|
|
116
|
-
queryKey: qk.project.sessionsScope(projectId),
|
|
164
|
+
queryKey: [...qk.project.sessionsScope(projectId), 'list'],
|
|
117
165
|
type: 'active',
|
|
118
166
|
});
|
|
119
167
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/react/use-opencode-events/helpers.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/react/use-opencode-events/helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/react/use-opencode-events/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/react/use-opencode-events/index.ts"],"names":[],"mappings":"AAqCA;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAO,QAqUzE;AAED;;;;;;GAMG;AACH,wBAAgB,2BAA2B,SAG1C"}
|
|
@@ -11,12 +11,14 @@ import { noteRuntimeEvidence, useSandboxConnectionStore, } from '../../browser/s
|
|
|
11
11
|
import { useServerStore } from '../../browser/stores/server-store.js';
|
|
12
12
|
import { useCurrentRuntime } from '../use-current-runtime.js';
|
|
13
13
|
import { useQueryClient } from '@tanstack/react-query';
|
|
14
|
-
import { useEffect, useRef } from 'react';
|
|
14
|
+
import { useEffect, useMemo, useRef, useState } from 'react';
|
|
15
15
|
import { opencodeKeys } from '../use-opencode-sessions/index.js';
|
|
16
16
|
import { useKortixRouteProjectId } from '../route-project.js';
|
|
17
17
|
import { resetPrefetchState } from '../use-session-prefetch.js';
|
|
18
18
|
import { createEventHandler } from './handle-event.js';
|
|
19
|
-
import { releaseMessageRehydrate, reserveMessageRehydrate, resolveClientEvictionUrl, } from './helpers.js';
|
|
19
|
+
import { releaseMessageRehydrate, reserveMessageRehydrate, resolveClientEvictionUrl, shouldSkipStatusFill, } from './helpers.js';
|
|
20
|
+
import { sessionsNeedingRehydrate } from './rehydrate-targets.js';
|
|
21
|
+
import { createStreamRevival } from './stream-revival.js';
|
|
20
22
|
import { useEventStreamRefs } from './use-event-stream-refs.js';
|
|
21
23
|
import { openEventStream } from '../../core/stream/event-stream.js';
|
|
22
24
|
/**
|
|
@@ -57,6 +59,12 @@ export function useOpenCodeEventStream(options = {}) {
|
|
|
57
59
|
const isMountRef = useRef(true);
|
|
58
60
|
const prevRuntimeVersionRef = useRef(runtimeVersion);
|
|
59
61
|
const prevServerUrlRef = useRef(activeServerUrl);
|
|
62
|
+
// Bumped when a parked stream earns another attempt. It is an effect DEP, so
|
|
63
|
+
// the bump tears the dead handle down and opens a fresh one — the same path
|
|
64
|
+
// a runtime switch takes, rather than a second reconnect mechanism.
|
|
65
|
+
const [streamGeneration, setStreamGeneration] = useState(0);
|
|
66
|
+
const revival = useMemo(() => createStreamRevival(() => setStreamGeneration((generation) => generation + 1)), []);
|
|
67
|
+
useEffect(() => revival.stop, [revival]);
|
|
60
68
|
const { normalizeDiagnosticPaths, fetchLspDiagnosticsDebounced, markSessionAbortedLocally, reconcileMissingBusySessions, } = useEventStreamRefs({ queryClient, stopCompaction, applySyncEvent });
|
|
61
69
|
useEffect(() => {
|
|
62
70
|
// On first mount, always start clean — the provider may have remounted
|
|
@@ -185,14 +193,62 @@ export function useOpenCodeEventStream(options = {}) {
|
|
|
185
193
|
// for the rest.
|
|
186
194
|
const statuses = res.data ?? {};
|
|
187
195
|
for (const [sessionID, status] of Object.entries(statuses)) {
|
|
196
|
+
// ONLY where this read is newer than what the live stream has
|
|
197
|
+
// already said. The read is a snapshot of the moment it was ISSUED,
|
|
198
|
+
// it carries no timestamp of its own, and it used to be written in
|
|
199
|
+
// unconditionally — so a `busy` that was true when the request left
|
|
200
|
+
// overwrote an `idle` frame that arrived while it was in flight, and
|
|
201
|
+
// because the object identity changed the store restamped the stale
|
|
202
|
+
// reading as the freshest observation there is. That put the Stop
|
|
203
|
+
// button and the turn shimmer back on a finished turn, and
|
|
204
|
+
// `hydrateCore` runs on every heartbeat-gap rehydrate, so it could
|
|
205
|
+
// land on any turn boundary.
|
|
206
|
+
// FILL A GAP, NEVER OVERWRITE. This snapshot describes the moment
|
|
207
|
+
// the request was ISSUED and carries no timestamp of its own, so an
|
|
208
|
+
// unconditional write let a `busy` that was true on the way out
|
|
209
|
+
// clobber an `idle` frame that arrived while it was in flight — and
|
|
210
|
+
// because the object identity changed, the store restamped that
|
|
211
|
+
// stale reading as the freshest observation there is. Stop and the
|
|
212
|
+
// turn shimmer came back on a finished turn, and `hydrateCore` runs
|
|
213
|
+
// on every heartbeat-gap rehydrate, so it could land on any turn
|
|
214
|
+
// boundary. While the live stream is delivering (~140ms per frame
|
|
215
|
+
// for a busy session, and this runs on connect) the stream owns this
|
|
216
|
+
// value; the correction for a session that went idle unseen is
|
|
217
|
+
// `reconcileMissingBusySessions` below, which reads ABSENCE from the
|
|
218
|
+
// complete list rather than a per-session reading.
|
|
219
|
+
//
|
|
220
|
+
// Only a FRESH wire frame owns the slot (`shouldSkipStatusFill`).
|
|
221
|
+
// A `'local'` value is the tab's own fabrication (the missing-busy
|
|
222
|
+
// sweep, a synthetic abort) and never blocks — letting it block
|
|
223
|
+
// made a fabrication self-sustaining. A STALE wire frame no longer
|
|
224
|
+
// blocks either: this fill runs on reconnect, a reconnect happens
|
|
225
|
+
// because a stream died, and a dead stream's last frame — a wire
|
|
226
|
+
// idle vetoing the open `/turn` row while a long tool call moves
|
|
227
|
+
// no transcript — is exactly what this read exists to correct
|
|
228
|
+
// (prod, 2026-08-26).
|
|
229
|
+
const slotState = useSyncStore.getState();
|
|
230
|
+
if (shouldSkipStatusFill({
|
|
231
|
+
hasSlot: !!slotState.sessionStatus[sessionID],
|
|
232
|
+
origin: slotState.sessionStatusOrigin[sessionID],
|
|
233
|
+
stampedAtMs: slotState.sessionStatusAt[sessionID],
|
|
234
|
+
nowMs: Date.now(),
|
|
235
|
+
}))
|
|
236
|
+
continue;
|
|
188
237
|
// Locally-synthesized event (this is a REST poll, not an SSE
|
|
189
238
|
// frame) — omits the `id` field every real `Event` union member
|
|
190
|
-
// carries, hence the assertion.
|
|
239
|
+
// carries, hence the assertion. `synthetic: true` marks its write
|
|
240
|
+
// `'local'`: a snapshot is a reading ABOUT the runtime taken at
|
|
241
|
+
// issue time, not the runtime speaking on the wire.
|
|
191
242
|
applySyncEvent({
|
|
192
243
|
type: 'session.status',
|
|
244
|
+
synthetic: true,
|
|
193
245
|
properties: { sessionID, status },
|
|
194
246
|
});
|
|
195
247
|
}
|
|
248
|
+
// The ENUMERATION half is not a per-session reading and does not go
|
|
249
|
+
// stale the same way: a session absent from a complete list was not
|
|
250
|
+
// running when the list was taken, and the repair it drives
|
|
251
|
+
// (`markSessionIdleLocally`) is guarded on its own.
|
|
196
252
|
reconcileMissingBusySessions.current(statuses);
|
|
197
253
|
})
|
|
198
254
|
.catch((err) => {
|
|
@@ -211,11 +267,11 @@ export function useOpenCodeEventStream(options = {}) {
|
|
|
211
267
|
}
|
|
212
268
|
if (options?.rehydrateMessages) {
|
|
213
269
|
const syncState = useSyncStore.getState();
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
270
|
+
// EVERY held transcript, not only the ones the status slot calls busy
|
|
271
|
+
// — see `sessionsNeedingRehydrate`. The slot is filled by the stream,
|
|
272
|
+
// so a gap wide enough to lose message frames is wide enough to lose
|
|
273
|
+
// the frame that would have marked the session busy.
|
|
274
|
+
for (const sid of sessionsNeedingRehydrate(Object.keys(syncState.messages))) {
|
|
219
275
|
if (!reserveMessageRehydrate(sid))
|
|
220
276
|
continue;
|
|
221
277
|
reconcileSessionTail(sid, 'sse-gap')
|
|
@@ -232,6 +288,17 @@ export function useOpenCodeEventStream(options = {}) {
|
|
|
232
288
|
// the QueryClient-dependent event handler and the gap-rehydrate hook.
|
|
233
289
|
const handle = openEventStream({
|
|
234
290
|
client,
|
|
291
|
+
// A park is not a verdict about the sandbox — only about the last few
|
|
292
|
+
// attempts. Nothing supplied this callback before, so the stream's
|
|
293
|
+
// documented "terminal for this handle" silently became terminal for the
|
|
294
|
+
// PAGE: the session view kept rendering a transcript nobody was updating
|
|
295
|
+
// until the user reloaded. See `createStreamRevival`.
|
|
296
|
+
onParked: (info) => {
|
|
297
|
+
logger.warn('SSE stream parked — arming revival', {
|
|
298
|
+
consecutiveFailures: info.consecutiveFailures,
|
|
299
|
+
});
|
|
300
|
+
revival.park();
|
|
301
|
+
},
|
|
235
302
|
onEvent: (event) => {
|
|
236
303
|
// Every delivered frame is live proof the runtime is reachable — it
|
|
237
304
|
// vetoes concurrent health-probe failures (a loaded box can miss the
|
|
@@ -243,6 +310,7 @@ export function useOpenCodeEventStream(options = {}) {
|
|
|
243
310
|
onGapRehydrate: () => hydrateCore({ rehydrateMessages: true }),
|
|
244
311
|
});
|
|
245
312
|
return () => {
|
|
313
|
+
revival.stop();
|
|
246
314
|
handle.close();
|
|
247
315
|
};
|
|
248
316
|
// NOTE: urlVersion is intentionally excluded from deps. We only reconnect
|
|
@@ -264,6 +332,10 @@ export function useOpenCodeEventStream(options = {}) {
|
|
|
264
332
|
applySyncEvent,
|
|
265
333
|
stopCompaction,
|
|
266
334
|
projectId,
|
|
335
|
+
revival,
|
|
336
|
+
// A revived park re-opens the stream through this effect. Without it the
|
|
337
|
+
// park stayed terminal for the page.
|
|
338
|
+
streamGeneration,
|
|
267
339
|
]);
|
|
268
340
|
}
|
|
269
341
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/react/use-opencode-events/index.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAGb,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EACL,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,kDAAkD,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAC7E,OAAO,EAAE,0BAA0B,EAAE,MAAM,gDAAgD,CAAC;AAC5F,OAAO,EAAE,uBAAuB,EAAE,MAAM,6CAA6C,CAAC;AACtF,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EACL,mBAAmB,EACnB,yBAAyB,GAC1B,MAAM,+CAA+C,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/react/use-opencode-events/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Which sessions get their transcript re-read after an SSE gap.
|
|
3
|
+
*
|
|
4
|
+
* The old rule was "the ones whose status slot says busy", and it could not
|
|
5
|
+
* work: the status slot is filled BY the stream, so a gap long enough to lose
|
|
6
|
+
* message frames is long enough to lose the status frame that would have
|
|
7
|
+
* marked the session busy. The sessions most likely to be missing content were
|
|
8
|
+
* therefore the ones most likely to be skipped — and a session that went
|
|
9
|
+
* silently idle during the gap kept a truncated final answer with nothing left
|
|
10
|
+
* to correct it.
|
|
11
|
+
*
|
|
12
|
+
* A gap means: for some interval, this tab is not sure what the runtime said.
|
|
13
|
+
* The honest response is to re-read every transcript this tab is holding. That
|
|
14
|
+
* is bounded — a tab holds one open session plus a handful of recently viewed
|
|
15
|
+
* ones — and each read is a single tail page.
|
|
16
|
+
*/
|
|
17
|
+
export declare function sessionsNeedingRehydrate(loadedSessionIds: string[]): string[];
|
|
18
|
+
//# sourceMappingURL=rehydrate-targets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rehydrate-targets.d.ts","sourceRoot":"","sources":["../../../src/react/use-opencode-events/rehydrate-targets.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,wBAAwB,CAAC,gBAAgB,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAE7E"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Which sessions get their transcript re-read after an SSE gap.
|
|
3
|
+
*
|
|
4
|
+
* The old rule was "the ones whose status slot says busy", and it could not
|
|
5
|
+
* work: the status slot is filled BY the stream, so a gap long enough to lose
|
|
6
|
+
* message frames is long enough to lose the status frame that would have
|
|
7
|
+
* marked the session busy. The sessions most likely to be missing content were
|
|
8
|
+
* therefore the ones most likely to be skipped — and a session that went
|
|
9
|
+
* silently idle during the gap kept a truncated final answer with nothing left
|
|
10
|
+
* to correct it.
|
|
11
|
+
*
|
|
12
|
+
* A gap means: for some interval, this tab is not sure what the runtime said.
|
|
13
|
+
* The honest response is to re-read every transcript this tab is holding. That
|
|
14
|
+
* is bounded — a tab holds one open session plus a handful of recently viewed
|
|
15
|
+
* ones — and each read is a single tail page.
|
|
16
|
+
*/
|
|
17
|
+
export function sessionsNeedingRehydrate(loadedSessionIds) {
|
|
18
|
+
return [...new Set(loadedSessionIds)];
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=rehydrate-targets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rehydrate-targets.js","sourceRoot":"","sources":["../../../src/react/use-opencode-events/rehydrate-targets.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,wBAAwB,CAAC,gBAA0B;IACjE,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC;AACxC,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bring a PARKED event stream back.
|
|
3
|
+
*
|
|
4
|
+
* `openEventStream` parks after a run of hard failures and documents itself as
|
|
5
|
+
* terminal for that handle — correct, and the point: a dead or archived sandbox
|
|
6
|
+
* should not be hammered forever. But nothing in this package supplied
|
|
7
|
+
* `onParked`, so "terminal for this handle" silently became "terminal for this
|
|
8
|
+
* page". The session view went on rendering a transcript nobody was updating,
|
|
9
|
+
* with no error and no retry, until the user reloaded. That is the "it just
|
|
10
|
+
* loses connection" report.
|
|
11
|
+
*
|
|
12
|
+
* Parking is not a verdict about the sandbox, only about the last few attempts.
|
|
13
|
+
* So revive on the cheapest evidence that something may have changed —
|
|
14
|
+
*
|
|
15
|
+
* - the tab came back (it was throttled; the world moved without us)
|
|
16
|
+
* - the network came back
|
|
17
|
+
* - nothing happened for `reviveAfterMs`, so try once anyway
|
|
18
|
+
*
|
|
19
|
+
* — and revive exactly ONCE per park, so a genuinely dead box costs one connect
|
|
20
|
+
* attempt per interval instead of a retry storm.
|
|
21
|
+
*/
|
|
22
|
+
export interface StreamRevivalOptions {
|
|
23
|
+
/** Self-heal delay when no external signal arrives. Default 30s. */
|
|
24
|
+
reviveAfterMs?: number;
|
|
25
|
+
setTimeout?: (handler: () => void, ms: number) => unknown;
|
|
26
|
+
clearTimeout?: (handle: unknown) => void;
|
|
27
|
+
/** Subscribe to a global event; returns its unsubscribe. Injected for tests. */
|
|
28
|
+
listen?: (event: string, handler: () => void) => () => void;
|
|
29
|
+
}
|
|
30
|
+
export interface StreamRevival {
|
|
31
|
+
/** The stream parked. Arm the triggers. */
|
|
32
|
+
park: () => void;
|
|
33
|
+
/** Tear down, whether or not a revival is armed. */
|
|
34
|
+
stop: () => void;
|
|
35
|
+
}
|
|
36
|
+
export declare function createStreamRevival(revive: () => void, options?: StreamRevivalOptions): StreamRevival;
|
|
37
|
+
//# sourceMappingURL=stream-revival.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stream-revival.d.ts","sourceRoot":"","sources":["../../../src/react/use-opencode-events/stream-revival.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,WAAW,oBAAoB;IACnC,oEAAoE;IACpE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,IAAI,EAAE,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC;IAC1D,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IACzC,gFAAgF;IAChF,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,KAAK,MAAM,IAAI,CAAC;CAC7D;AAED,MAAM,WAAW,aAAa;IAC5B,2CAA2C;IAC3C,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,oDAAoD;IACpD,IAAI,EAAE,MAAM,IAAI,CAAC;CAClB;AAkBD,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,IAAI,EAClB,OAAO,GAAE,oBAAyB,GACjC,aAAa,CAkCf"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
const DEFAULT_REVIVE_AFTER_MS = 30_000;
|
|
2
|
+
function defaultListen(event, handler) {
|
|
3
|
+
if (typeof globalThis.addEventListener !== 'function')
|
|
4
|
+
return () => { };
|
|
5
|
+
const target = event === 'visibilitychange' && typeof document !== 'undefined' ? document : globalThis;
|
|
6
|
+
const wrapped = () => {
|
|
7
|
+
// A hidden tab is not evidence of anything; only the return is.
|
|
8
|
+
if (event === 'visibilitychange' && typeof document !== 'undefined') {
|
|
9
|
+
if (document.visibilityState !== 'visible')
|
|
10
|
+
return;
|
|
11
|
+
}
|
|
12
|
+
handler();
|
|
13
|
+
};
|
|
14
|
+
target.addEventListener(event, wrapped);
|
|
15
|
+
return () => target.removeEventListener(event, wrapped);
|
|
16
|
+
}
|
|
17
|
+
export function createStreamRevival(revive, options = {}) {
|
|
18
|
+
const reviveAfterMs = options.reviveAfterMs ?? DEFAULT_REVIVE_AFTER_MS;
|
|
19
|
+
const setTimer = options.setTimeout ?? ((handler, ms) => setTimeout(handler, ms));
|
|
20
|
+
const clearTimer = options.clearTimeout ?? ((handle) => clearTimeout(handle));
|
|
21
|
+
const listen = options.listen ?? defaultListen;
|
|
22
|
+
let armed = false;
|
|
23
|
+
let timer;
|
|
24
|
+
let unsubscribers = [];
|
|
25
|
+
const disarm = () => {
|
|
26
|
+
if (!armed)
|
|
27
|
+
return;
|
|
28
|
+
armed = false;
|
|
29
|
+
if (timer !== undefined)
|
|
30
|
+
clearTimer(timer);
|
|
31
|
+
timer = undefined;
|
|
32
|
+
for (const unsubscribe of unsubscribers)
|
|
33
|
+
unsubscribe();
|
|
34
|
+
unsubscribers = [];
|
|
35
|
+
};
|
|
36
|
+
const fire = () => {
|
|
37
|
+
if (!armed)
|
|
38
|
+
return;
|
|
39
|
+
disarm();
|
|
40
|
+
revive();
|
|
41
|
+
};
|
|
42
|
+
return {
|
|
43
|
+
park: () => {
|
|
44
|
+
if (armed)
|
|
45
|
+
return;
|
|
46
|
+
armed = true;
|
|
47
|
+
timer = setTimer(fire, reviveAfterMs);
|
|
48
|
+
unsubscribers = [listen('visibilitychange', fire), listen('online', fire)];
|
|
49
|
+
},
|
|
50
|
+
stop: disarm,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=stream-revival.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stream-revival.js","sourceRoot":"","sources":["../../../src/react/use-opencode-events/stream-revival.ts"],"names":[],"mappings":"AAqCA,MAAM,uBAAuB,GAAG,MAAM,CAAC;AAEvC,SAAS,aAAa,CAAC,KAAa,EAAE,OAAmB;IACvD,IAAI,OAAO,UAAU,CAAC,gBAAgB,KAAK,UAAU;QAAE,OAAO,GAAG,EAAE,GAAE,CAAC,CAAC;IACvE,MAAM,MAAM,GAAG,KAAK,KAAK,kBAAkB,IAAI,OAAO,QAAQ,KAAK,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC;IACvG,MAAM,OAAO,GAAG,GAAG,EAAE;QACnB,gEAAgE;QAChE,IAAI,KAAK,KAAK,kBAAkB,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE,CAAC;YACpE,IAAI,QAAQ,CAAC,eAAe,KAAK,SAAS;gBAAE,OAAO;QACrD,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC;IACF,MAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACxC,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,MAAkB,EAClB,UAAgC,EAAE;IAElC,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,uBAAuB,CAAC;IACvE,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;IAClF,MAAM,UAAU,GAAG,OAAO,CAAC,YAAY,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,YAAY,CAAC,MAAe,CAAC,CAAC,CAAC;IACvF,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,aAAa,CAAC;IAE/C,IAAI,KAAK,GAAG,KAAK,CAAC;IAClB,IAAI,KAAc,CAAC;IACnB,IAAI,aAAa,GAAsB,EAAE,CAAC;IAE1C,MAAM,MAAM,GAAG,GAAG,EAAE;QAClB,IAAI,CAAC,KAAK;YAAE,OAAO;QACnB,KAAK,GAAG,KAAK,CAAC;QACd,IAAI,KAAK,KAAK,SAAS;YAAE,UAAU,CAAC,KAAK,CAAC,CAAC;QAC3C,KAAK,GAAG,SAAS,CAAC;QAClB,KAAK,MAAM,WAAW,IAAI,aAAa;YAAE,WAAW,EAAE,CAAC;QACvD,aAAa,GAAG,EAAE,CAAC;IACrB,CAAC,CAAC;IAEF,MAAM,IAAI,GAAG,GAAG,EAAE;QAChB,IAAI,CAAC,KAAK;YAAE,OAAO;QACnB,MAAM,EAAE,CAAC;QACT,MAAM,EAAE,CAAC;IACX,CAAC,CAAC;IAEF,OAAO;QACL,IAAI,EAAE,GAAG,EAAE;YACT,IAAI,KAAK;gBAAE,OAAO;YAClB,KAAK,GAAG,IAAI,CAAC;YACb,KAAK,GAAG,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;YACtC,aAAa,GAAG,CAAC,MAAM,CAAC,kBAAkB,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;QAC7E,CAAC;QACD,IAAI,EAAE,MAAM;KACb,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-event-stream-refs.d.ts","sourceRoot":"","sources":["../../../src/react/use-opencode-events/use-event-stream-refs.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,KAAK,IAAI,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAO5E,OAAO,EAA+B,KAAK,aAAa,EAAgB,MAAM,0BAA0B,CAAC;AAEzG,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AA+BxD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE;IACvC,WAAW,EAAE,WAAW,CAAC;IACzB,cAAc,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,cAAc,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,CAAC;CACnD;0DAY2C,MAAM,KAAG,MAAM;;;qEA+E3C,MAAM;
|
|
1
|
+
{"version":3,"file":"use-event-stream-refs.d.ts","sourceRoot":"","sources":["../../../src/react/use-opencode-events/use-event-stream-refs.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,KAAK,IAAI,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAO5E,OAAO,EAA+B,KAAK,aAAa,EAAgB,MAAM,0BAA0B,CAAC;AAEzG,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AA+BxD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE;IACvC,WAAW,EAAE,WAAW,CAAC;IACzB,cAAc,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,cAAc,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,CAAC;CACnD;0DAY2C,MAAM,KAAG,MAAM;;;qEA+E3C,MAAM;kEA+C8B,MAAM;2EAoCG,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC;EAwBzF"}
|
|
@@ -143,8 +143,12 @@ export function useEventStreamRefs(deps) {
|
|
|
143
143
|
// the SDK's `session.error` error union). The sync store's `applyEvent`
|
|
144
144
|
// handles both structurally (see `MessageError`); the assertion just
|
|
145
145
|
// documents that this event is fabricated, not wire data.
|
|
146
|
+
// `synthetic: true` is what that fabrication COSTS: the idle status this
|
|
147
|
+
// writes lands with `'local'` origin, so it may fill a gap but can never
|
|
148
|
+
// veto the control plane's open turn (`WorkingStreamInput.origin`).
|
|
146
149
|
applySyncEvent({
|
|
147
150
|
type: 'session.error',
|
|
151
|
+
synthetic: true,
|
|
148
152
|
properties: { sessionID, error },
|
|
149
153
|
});
|
|
150
154
|
// A brand-new session whose first prompt has not been echoed yet is the
|
|
@@ -169,12 +173,20 @@ export function useEventStreamRefs(deps) {
|
|
|
169
173
|
if (!sessionID)
|
|
170
174
|
return;
|
|
171
175
|
stopCompaction(sessionID);
|
|
172
|
-
// Same locally-synthesized-event caveat as above: no real `id
|
|
176
|
+
// Same locally-synthesized-event caveat as above: no real `id`, and
|
|
177
|
+
// `synthetic: true` so the idle it writes is `'local'`-origin — an
|
|
178
|
+
// INFERENCE from a snapshot's absence, which may answer for a session
|
|
179
|
+
// nothing else speaks for but may never contradict an open `/turn` row.
|
|
180
|
+
// Unmarked, one sweep un-busied a session mid-turn and the unbounded idle
|
|
181
|
+
// veto then discarded every fresh `/turn` read for the rest of the turn
|
|
182
|
+
// (dev, 2026-08-24: no busy indicator, Send instead of Stop, transcript
|
|
183
|
+
// liveness poll off — all while the agent was running).
|
|
173
184
|
applySyncEvent({
|
|
174
185
|
type: 'session.idle',
|
|
186
|
+
synthetic: true,
|
|
175
187
|
properties: { sessionID },
|
|
176
188
|
});
|
|
177
|
-
useSyncStore.getState().setStatus(sessionID, { type: 'idle' });
|
|
189
|
+
useSyncStore.getState().setStatus(sessionID, { type: 'idle' }, 'local');
|
|
178
190
|
useSyncStore.getState().clearOptimisticMessages(sessionID);
|
|
179
191
|
});
|
|
180
192
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-event-stream-refs.js","sourceRoot":"","sources":["../../../src/react/use-opencode-events/use-event-stream-refs.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"use-event-stream-refs.js","sourceRoot":"","sources":["../../../src/react/use-opencode-events/use-event-stream-refs.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-opencode-local.d.ts","sourceRoot":"","sources":["../../src/react/use-opencode-local.ts"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;AAEH,OAAO,EAAiC,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEhF,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"use-opencode-local.d.ts","sourceRoot":"","sources":["../../src/react/use-opencode-local.ts"],"names":[],"mappings":"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"}
|