@kortix/sdk 0.9.98
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 +313 -0
- package/dist/files/client.d.ts +96 -0
- package/dist/files/client.d.ts.map +1 -0
- package/dist/files/client.js +346 -0
- package/dist/files/client.js.map +1 -0
- package/dist/files/types.d.ts +82 -0
- package/dist/files/types.d.ts.map +1 -0
- package/dist/files/types.js +6 -0
- package/dist/files/types.js.map +1 -0
- package/dist/index.d.ts +119 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +93 -0
- package/dist/index.js.map +1 -0
- package/dist/kortix.d.ts +897 -0
- package/dist/kortix.d.ts.map +1 -0
- package/dist/kortix.js +772 -0
- package/dist/kortix.js.map +1 -0
- package/dist/opencode/client.d.ts +89 -0
- package/dist/opencode/client.d.ts.map +1 -0
- package/dist/opencode/client.js +191 -0
- package/dist/opencode/client.js.map +1 -0
- package/dist/opencode/env.d.ts +13 -0
- package/dist/opencode/env.d.ts.map +1 -0
- package/dist/opencode/env.js +63 -0
- package/dist/opencode/env.js.map +1 -0
- package/dist/opencode/kortix-master.d.ts +487 -0
- package/dist/opencode/kortix-master.d.ts.map +1 -0
- package/dist/opencode/kortix-master.js +313 -0
- package/dist/opencode/kortix-master.js.map +1 -0
- package/dist/opencode/triggers.d.ts +6 -0
- package/dist/opencode/triggers.d.ts.map +1 -0
- package/dist/opencode/triggers.js +34 -0
- package/dist/opencode/triggers.js.map +1 -0
- package/dist/platform/api/errors.d.ts +106 -0
- package/dist/platform/api/errors.d.ts.map +1 -0
- package/dist/platform/api/errors.js +137 -0
- package/dist/platform/api/errors.js.map +1 -0
- package/dist/platform/api-client.d.ts +35 -0
- package/dist/platform/api-client.d.ts.map +1 -0
- package/dist/platform/api-client.js +279 -0
- package/dist/platform/api-client.js.map +1 -0
- package/dist/platform/auth-core.d.ts +60 -0
- package/dist/platform/auth-core.d.ts.map +1 -0
- package/dist/platform/auth-core.js +104 -0
- package/dist/platform/auth-core.js.map +1 -0
- package/dist/platform/auth.d.ts +88 -0
- package/dist/platform/auth.d.ts.map +1 -0
- package/dist/platform/auth.js +161 -0
- package/dist/platform/auth.js.map +1 -0
- package/dist/platform/config-node.d.ts +33 -0
- package/dist/platform/config-node.d.ts.map +1 -0
- package/dist/platform/config-node.js +63 -0
- package/dist/platform/config-node.js.map +1 -0
- package/dist/platform/config.d.ts +77 -0
- package/dist/platform/config.d.ts.map +1 -0
- package/dist/platform/config.js +62 -0
- package/dist/platform/config.js.map +1 -0
- package/dist/platform/feature-flags.d.ts +25 -0
- package/dist/platform/feature-flags.d.ts.map +1 -0
- package/dist/platform/feature-flags.js +114 -0
- package/dist/platform/feature-flags.js.map +1 -0
- package/dist/platform/fresh-sessions.d.ts +4 -0
- package/dist/platform/fresh-sessions.d.ts.map +1 -0
- package/dist/platform/fresh-sessions.js +22 -0
- package/dist/platform/fresh-sessions.js.map +1 -0
- package/dist/platform/instance-routes.d.ts +17 -0
- package/dist/platform/instance-routes.d.ts.map +1 -0
- package/dist/platform/instance-routes.js +105 -0
- package/dist/platform/instance-routes.js.map +1 -0
- package/dist/platform/logger.d.ts +20 -0
- package/dist/platform/logger.d.ts.map +1 -0
- package/dist/platform/logger.js +44 -0
- package/dist/platform/logger.js.map +1 -0
- package/dist/platform/opencode-errors.d.ts +20 -0
- package/dist/platform/opencode-errors.d.ts.map +1 -0
- package/dist/platform/opencode-errors.js +71 -0
- package/dist/platform/opencode-errors.js.map +1 -0
- package/dist/platform/platform-client/backups.d.ts +22 -0
- package/dist/platform/platform-client/backups.d.ts.map +1 -0
- package/dist/platform/platform-client/backups.js +16 -0
- package/dist/platform/platform-client/backups.js.map +1 -0
- package/dist/platform/platform-client/index.d.ts +21 -0
- package/dist/platform/platform-client/index.d.ts.map +1 -0
- package/dist/platform/platform-client/index.js +21 -0
- package/dist/platform/platform-client/index.js.map +1 -0
- package/dist/platform/platform-client/instance-admin.d.ts +67 -0
- package/dist/platform/platform-client/instance-admin.d.ts.map +1 -0
- package/dist/platform/platform-client/instance-admin.js +59 -0
- package/dist/platform/platform-client/instance-admin.js.map +1 -0
- package/dist/platform/platform-client/invites.d.ts +35 -0
- package/dist/platform/platform-client/invites.d.ts.map +1 -0
- package/dist/platform/platform-client/invites.js +25 -0
- package/dist/platform/platform-client/invites.js.map +1 -0
- package/dist/platform/platform-client/lifecycle.d.ts +78 -0
- package/dist/platform/platform-client/lifecycle.d.ts.map +1 -0
- package/dist/platform/platform-client/lifecycle.js +151 -0
- package/dist/platform/platform-client/lifecycle.js.map +1 -0
- package/dist/platform/platform-client/members.d.ts +81 -0
- package/dist/platform/platform-client/members.d.ts.map +1 -0
- package/dist/platform/platform-client/members.js +59 -0
- package/dist/platform/platform-client/members.js.map +1 -0
- package/dist/platform/platform-client/shared.d.ts +44 -0
- package/dist/platform/platform-client/shared.d.ts.map +1 -0
- package/dist/platform/platform-client/shared.js +177 -0
- package/dist/platform/platform-client/shared.js.map +1 -0
- package/dist/platform/platform-client/ssh.d.ts +29 -0
- package/dist/platform/platform-client/ssh.d.ts.map +1 -0
- package/dist/platform/platform-client/ssh.js +14 -0
- package/dist/platform/platform-client/ssh.js.map +1 -0
- package/dist/platform/platform-client/types.d.ts +56 -0
- package/dist/platform/platform-client/types.d.ts.map +1 -0
- package/dist/platform/platform-client/types.js +19 -0
- package/dist/platform/platform-client/types.js.map +1 -0
- package/dist/platform/platform-client/updates.d.ts +117 -0
- package/dist/platform/platform-client/updates.d.ts.map +1 -0
- package/dist/platform/platform-client/updates.js +97 -0
- package/dist/platform/platform-client/updates.js.map +1 -0
- package/dist/platform/platform-client/urls.d.ts +18 -0
- package/dist/platform/platform-client/urls.d.ts.map +1 -0
- package/dist/platform/platform-client/urls.js +31 -0
- package/dist/platform/platform-client/urls.js.map +1 -0
- package/dist/platform/projects-client/access.d.ts +273 -0
- package/dist/platform/projects-client/access.d.ts.map +1 -0
- package/dist/platform/projects-client/access.js +89 -0
- package/dist/platform/projects-client/access.js.map +1 -0
- package/dist/platform/projects-client/accounts.d.ts +184 -0
- package/dist/platform/projects-client/accounts.d.ts.map +1 -0
- package/dist/platform/projects-client/accounts.js +78 -0
- package/dist/platform/projects-client/accounts.js.map +1 -0
- package/dist/platform/projects-client/agent-config.d.ts +58 -0
- package/dist/platform/projects-client/agent-config.d.ts.map +1 -0
- package/dist/platform/projects-client/agent-config.js +9 -0
- package/dist/platform/projects-client/agent-config.js.map +1 -0
- package/dist/platform/projects-client/agent-scope.d.ts +12 -0
- package/dist/platform/projects-client/agent-scope.d.ts.map +1 -0
- package/dist/platform/projects-client/agent-scope.js +6 -0
- package/dist/platform/projects-client/agent-scope.js.map +1 -0
- package/dist/platform/projects-client/apps.d.ts +98 -0
- package/dist/platform/projects-client/apps.d.ts.map +1 -0
- package/dist/platform/projects-client/apps.js +29 -0
- package/dist/platform/projects-client/apps.js.map +1 -0
- package/dist/platform/projects-client/audit.d.ts +85 -0
- package/dist/platform/projects-client/audit.d.ts.map +1 -0
- package/dist/platform/projects-client/audit.js +51 -0
- package/dist/platform/projects-client/audit.js.map +1 -0
- package/dist/platform/projects-client/billing.d.ts +336 -0
- package/dist/platform/projects-client/billing.d.ts.map +1 -0
- package/dist/platform/projects-client/billing.js +260 -0
- package/dist/platform/projects-client/billing.js.map +1 -0
- package/dist/platform/projects-client/change-requests.d.ts +119 -0
- package/dist/platform/projects-client/change-requests.d.ts.map +1 -0
- package/dist/platform/projects-client/change-requests.js +56 -0
- package/dist/platform/projects-client/change-requests.js.map +1 -0
- package/dist/platform/projects-client/channels.d.ts +135 -0
- package/dist/platform/projects-client/channels.d.ts.map +1 -0
- package/dist/platform/projects-client/channels.js +103 -0
- package/dist/platform/projects-client/channels.js.map +1 -0
- package/dist/platform/projects-client/connectors.d.ts +148 -0
- package/dist/platform/projects-client/connectors.d.ts.map +1 -0
- package/dist/platform/projects-client/connectors.js +66 -0
- package/dist/platform/projects-client/connectors.js.map +1 -0
- package/dist/platform/projects-client/files.d.ts +37 -0
- package/dist/platform/projects-client/files.d.ts.map +1 -0
- package/dist/platform/projects-client/files.js +58 -0
- package/dist/platform/projects-client/files.js.map +1 -0
- package/dist/platform/projects-client/gateway.d.ts +177 -0
- package/dist/platform/projects-client/gateway.d.ts.map +1 -0
- package/dist/platform/projects-client/gateway.js +59 -0
- package/dist/platform/projects-client/gateway.js.map +1 -0
- package/dist/platform/projects-client/git-history.d.ts +74 -0
- package/dist/platform/projects-client/git-history.d.ts.map +1 -0
- package/dist/platform/projects-client/git-history.js +40 -0
- package/dist/platform/projects-client/git-history.js.map +1 -0
- package/dist/platform/projects-client/github.d.ts +62 -0
- package/dist/platform/projects-client/github.d.ts.map +1 -0
- package/dist/platform/projects-client/github.js +30 -0
- package/dist/platform/projects-client/github.js.map +1 -0
- package/dist/platform/projects-client/index.d.ts +32 -0
- package/dist/platform/projects-client/index.d.ts.map +1 -0
- package/dist/platform/projects-client/index.js +34 -0
- package/dist/platform/projects-client/index.js.map +1 -0
- package/dist/platform/projects-client/marketplace-catalog.d.ts +76 -0
- package/dist/platform/projects-client/marketplace-catalog.d.ts.map +1 -0
- package/dist/platform/projects-client/marketplace-catalog.js +48 -0
- package/dist/platform/projects-client/marketplace-catalog.js.map +1 -0
- package/dist/platform/projects-client/marketplace.d.ts +80 -0
- package/dist/platform/projects-client/marketplace.d.ts.map +1 -0
- package/dist/platform/projects-client/marketplace.js +52 -0
- package/dist/platform/projects-client/marketplace.js.map +1 -0
- package/dist/platform/projects-client/model-defaults.d.ts +36 -0
- package/dist/platform/projects-client/model-defaults.d.ts.map +1 -0
- package/dist/platform/projects-client/model-defaults.js +16 -0
- package/dist/platform/projects-client/model-defaults.js.map +1 -0
- package/dist/platform/projects-client/policies.d.ts +21 -0
- package/dist/platform/projects-client/policies.d.ts.map +1 -0
- package/dist/platform/projects-client/policies.js +10 -0
- package/dist/platform/projects-client/policies.js.map +1 -0
- package/dist/platform/projects-client/projects.d.ts +235 -0
- package/dist/platform/projects-client/projects.d.ts.map +1 -0
- package/dist/platform/projects-client/projects.js +161 -0
- package/dist/platform/projects-client/projects.js.map +1 -0
- package/dist/platform/projects-client/public-session-shares.d.ts +52 -0
- package/dist/platform/projects-client/public-session-shares.d.ts.map +1 -0
- package/dist/platform/projects-client/public-session-shares.js +54 -0
- package/dist/platform/projects-client/public-session-shares.js.map +1 -0
- package/dist/platform/projects-client/review.d.ts +57 -0
- package/dist/platform/projects-client/review.d.ts.map +1 -0
- package/dist/platform/projects-client/review.js +28 -0
- package/dist/platform/projects-client/review.js.map +1 -0
- package/dist/platform/projects-client/sandbox-shares.d.ts +25 -0
- package/dist/platform/projects-client/sandbox-shares.d.ts.map +1 -0
- package/dist/platform/projects-client/sandbox-shares.js +29 -0
- package/dist/platform/projects-client/sandbox-shares.js.map +1 -0
- package/dist/platform/projects-client/sandbox.d.ts +123 -0
- package/dist/platform/projects-client/sandbox.d.ts.map +1 -0
- package/dist/platform/projects-client/sandbox.js +45 -0
- package/dist/platform/projects-client/sandbox.js.map +1 -0
- package/dist/platform/projects-client/secrets.d.ts +122 -0
- package/dist/platform/projects-client/secrets.d.ts.map +1 -0
- package/dist/platform/projects-client/secrets.js +34 -0
- package/dist/platform/projects-client/secrets.js.map +1 -0
- package/dist/platform/projects-client/session-sandbox.d.ts +61 -0
- package/dist/platform/projects-client/session-sandbox.d.ts.map +1 -0
- package/dist/platform/projects-client/session-sandbox.js +82 -0
- package/dist/platform/projects-client/session-sandbox.js.map +1 -0
- package/dist/platform/projects-client/sessions.d.ts +216 -0
- package/dist/platform/projects-client/sessions.d.ts.map +1 -0
- package/dist/platform/projects-client/sessions.js +74 -0
- package/dist/platform/projects-client/sessions.js.map +1 -0
- package/dist/platform/projects-client/setup-links.d.ts +35 -0
- package/dist/platform/projects-client/setup-links.d.ts.map +1 -0
- package/dist/platform/projects-client/setup-links.js +24 -0
- package/dist/platform/projects-client/setup-links.js.map +1 -0
- package/dist/platform/projects-client/shared.d.ts +66 -0
- package/dist/platform/projects-client/shared.d.ts.map +1 -0
- package/dist/platform/projects-client/shared.js +44 -0
- package/dist/platform/projects-client/shared.js.map +1 -0
- package/dist/platform/projects-client/tokens.d.ts +77 -0
- package/dist/platform/projects-client/tokens.d.ts.map +1 -0
- package/dist/platform/projects-client/tokens.js +43 -0
- package/dist/platform/projects-client/tokens.js.map +1 -0
- package/dist/platform/projects-client/transcription.d.ts +5 -0
- package/dist/platform/projects-client/transcription.d.ts.map +1 -0
- package/dist/platform/projects-client/transcription.js +14 -0
- package/dist/platform/projects-client/transcription.js.map +1 -0
- package/dist/platform/projects-client/triggers.d.ts +102 -0
- package/dist/platform/projects-client/triggers.d.ts.map +1 -0
- package/dist/platform/projects-client/triggers.js +27 -0
- package/dist/platform/projects-client/triggers.js.map +1 -0
- package/dist/platform/session-id.d.ts +9 -0
- package/dist/platform/session-id.d.ts.map +1 -0
- package/dist/platform/session-id.js +23 -0
- package/dist/platform/session-id.js.map +1 -0
- package/dist/platform/storage/managed-storage.d.ts +97 -0
- package/dist/platform/storage/managed-storage.d.ts.map +1 -0
- package/dist/platform/storage/managed-storage.js +271 -0
- package/dist/platform/storage/managed-storage.js.map +1 -0
- package/dist/platform/strings.d.ts +12 -0
- package/dist/platform/strings.d.ts.map +1 -0
- package/dist/platform/strings.js +17 -0
- package/dist/platform/strings.js.map +1 -0
- package/dist/platform/ui.d.ts +11 -0
- package/dist/platform/ui.d.ts.map +1 -0
- package/dist/platform/ui.js +22 -0
- package/dist/platform/ui.js.map +1 -0
- package/dist/react/chat/index.d.ts +3 -0
- package/dist/react/chat/index.d.ts.map +1 -0
- package/dist/react/chat/index.js +7 -0
- package/dist/react/chat/index.js.map +1 -0
- package/dist/react/chat/render-parts.d.ts +39 -0
- package/dist/react/chat/render-parts.d.ts.map +1 -0
- package/dist/react/chat/render-parts.js +34 -0
- package/dist/react/chat/render-parts.js.map +1 -0
- package/dist/react/chat/use-chat-turns.d.ts +19 -0
- package/dist/react/chat/use-chat-turns.d.ts.map +1 -0
- package/dist/react/chat/use-chat-turns.js +27 -0
- package/dist/react/chat/use-chat-turns.js.map +1 -0
- package/dist/react/file-keys.d.ts +18 -0
- package/dist/react/file-keys.d.ts.map +1 -0
- package/dist/react/file-keys.js +18 -0
- package/dist/react/file-keys.js.map +1 -0
- package/dist/react/index.d.ts +12 -0
- package/dist/react/index.d.ts.map +1 -0
- package/dist/react/index.js +49 -0
- package/dist/react/index.js.map +1 -0
- package/dist/react/model-flatten.d.ts +33 -0
- package/dist/react/model-flatten.d.ts.map +1 -0
- package/dist/react/model-flatten.js +59 -0
- package/dist/react/model-flatten.js.map +1 -0
- package/dist/react/opencode.d.ts +43 -0
- package/dist/react/opencode.d.ts.map +1 -0
- package/dist/react/opencode.js +100 -0
- package/dist/react/opencode.js.map +1 -0
- package/dist/react/prefetch-session-start.d.ts +10 -0
- package/dist/react/prefetch-session-start.d.ts.map +1 -0
- package/dist/react/prefetch-session-start.js +17 -0
- package/dist/react/prefetch-session-start.js.map +1 -0
- package/dist/react/provider-refresh.d.ts +7 -0
- package/dist/react/provider-refresh.d.ts.map +1 -0
- package/dist/react/provider-refresh.js +28 -0
- package/dist/react/provider-refresh.js.map +1 -0
- package/dist/react/provider-selection.d.ts +31 -0
- package/dist/react/provider-selection.d.ts.map +1 -0
- package/dist/react/provider-selection.js +135 -0
- package/dist/react/provider-selection.js.map +1 -0
- package/dist/react/route-project.d.ts +7 -0
- package/dist/react/route-project.d.ts.map +1 -0
- package/dist/react/route-project.js +19 -0
- package/dist/react/route-project.js.map +1 -0
- package/dist/react/session-start-stash.d.ts +56 -0
- package/dist/react/session-start-stash.d.ts.map +1 -0
- package/dist/react/session-start-stash.js +202 -0
- package/dist/react/session-start-stash.js.map +1 -0
- package/dist/react/use-canonical-opencode-session.d.ts +35 -0
- package/dist/react/use-canonical-opencode-session.d.ts.map +1 -0
- package/dist/react/use-canonical-opencode-session.js +52 -0
- package/dist/react/use-canonical-opencode-session.js.map +1 -0
- package/dist/react/use-change-requests.d.ts +321 -0
- package/dist/react/use-change-requests.d.ts.map +1 -0
- package/dist/react/use-change-requests.js +43 -0
- package/dist/react/use-change-requests.js.map +1 -0
- package/dist/react/use-current-runtime.d.ts +8 -0
- package/dist/react/use-current-runtime.d.ts.map +1 -0
- package/dist/react/use-current-runtime.js +12 -0
- package/dist/react/use-current-runtime.js.map +1 -0
- package/dist/react/use-gateway-catalog-sync.d.ts +2 -0
- package/dist/react/use-gateway-catalog-sync.d.ts.map +1 -0
- package/dist/react/use-gateway-catalog-sync.js +39 -0
- package/dist/react/use-gateway-catalog-sync.js.map +1 -0
- package/dist/react/use-kortix-master.d.ts +384 -0
- package/dist/react/use-kortix-master.d.ts.map +1 -0
- package/dist/react/use-kortix-master.js +958 -0
- package/dist/react/use-kortix-master.js.map +1 -0
- package/dist/react/use-model-store.d.ts +71 -0
- package/dist/react/use-model-store.d.ts.map +1 -0
- package/dist/react/use-model-store.js +411 -0
- package/dist/react/use-model-store.js.map +1 -0
- package/dist/react/use-opencode-config.d.ts +15 -0
- package/dist/react/use-opencode-config.d.ts.map +1 -0
- package/dist/react/use-opencode-config.js +79 -0
- package/dist/react/use-opencode-config.js.map +1 -0
- package/dist/react/use-opencode-events/diagnostics.d.ts +11 -0
- package/dist/react/use-opencode-events/diagnostics.d.ts.map +1 -0
- package/dist/react/use-opencode-events/diagnostics.js +58 -0
- package/dist/react/use-opencode-events/diagnostics.js.map +1 -0
- package/dist/react/use-opencode-events/handle-event.d.ts +20 -0
- package/dist/react/use-opencode-events/handle-event.d.ts.map +1 -0
- package/dist/react/use-opencode-events/handle-event.js +450 -0
- package/dist/react/use-opencode-events/handle-event.js.map +1 -0
- package/dist/react/use-opencode-events/helpers.d.ts +30 -0
- package/dist/react/use-opencode-events/helpers.d.ts.map +1 -0
- package/dist/react/use-opencode-events/helpers.js +93 -0
- package/dist/react/use-opencode-events/helpers.js.map +1 -0
- package/dist/react/use-opencode-events/index.d.ts +25 -0
- package/dist/react/use-opencode-events/index.d.ts.map +1 -0
- package/dist/react/use-opencode-events/index.js +242 -0
- package/dist/react/use-opencode-events/index.js.map +1 -0
- package/dist/react/use-opencode-events/types.d.ts +10 -0
- package/dist/react/use-opencode-events/types.d.ts.map +1 -0
- package/dist/react/use-opencode-events/types.js +2 -0
- package/dist/react/use-opencode-events/types.js.map +1 -0
- package/dist/react/use-opencode-events/use-event-stream-refs.d.ts +22 -0
- package/dist/react/use-opencode-events/use-event-stream-refs.d.ts.map +1 -0
- package/dist/react/use-opencode-events/use-event-stream-refs.js +158 -0
- package/dist/react/use-opencode-events/use-event-stream-refs.js.map +1 -0
- package/dist/react/use-opencode-local.d.ts +139 -0
- package/dist/react/use-opencode-local.d.ts.map +1 -0
- package/dist/react/use-opencode-local.js +484 -0
- package/dist/react/use-opencode-local.js.map +1 -0
- package/dist/react/use-opencode-mcp.d.ts +34 -0
- package/dist/react/use-opencode-mcp.d.ts.map +1 -0
- package/dist/react/use-opencode-mcp.js +190 -0
- package/dist/react/use-opencode-mcp.js.map +1 -0
- package/dist/react/use-opencode-pty.d.ts +30 -0
- package/dist/react/use-opencode-pty.d.ts.map +1 -0
- package/dist/react/use-opencode-pty.js +126 -0
- package/dist/react/use-opencode-pty.js.map +1 -0
- package/dist/react/use-opencode-sessions/agents.d.ts +14 -0
- package/dist/react/use-opencode-sessions/agents.d.ts.map +1 -0
- package/dist/react/use-opencode-sessions/agents.js +82 -0
- package/dist/react/use-opencode-sessions/agents.js.map +1 -0
- package/dist/react/use-opencode-sessions/commands.d.ts +8 -0
- package/dist/react/use-opencode-sessions/commands.d.ts.map +1 -0
- package/dist/react/use-opencode-sessions/commands.js +46 -0
- package/dist/react/use-opencode-sessions/commands.js.map +1 -0
- package/dist/react/use-opencode-sessions/files.d.ts +2 -0
- package/dist/react/use-opencode-sessions/files.d.ts.map +1 -0
- package/dist/react/use-opencode-sessions/files.js +181 -0
- package/dist/react/use-opencode-sessions/files.js.map +1 -0
- package/dist/react/use-opencode-sessions/index.d.ts +15 -0
- package/dist/react/use-opencode-sessions/index.d.ts.map +1 -0
- package/dist/react/use-opencode-sessions/index.js +21 -0
- package/dist/react/use-opencode-sessions/index.js.map +1 -0
- package/dist/react/use-opencode-sessions/keys.d.ts +94 -0
- package/dist/react/use-opencode-sessions/keys.d.ts.map +1 -0
- package/dist/react/use-opencode-sessions/keys.js +39 -0
- package/dist/react/use-opencode-sessions/keys.js.map +1 -0
- package/dist/react/use-opencode-sessions/mcp.d.ts +3 -0
- package/dist/react/use-opencode-sessions/mcp.d.ts.map +1 -0
- package/dist/react/use-opencode-sessions/mcp.js +23 -0
- package/dist/react/use-opencode-sessions/mcp.js.map +1 -0
- package/dist/react/use-opencode-sessions/messages.d.ts +75 -0
- package/dist/react/use-opencode-sessions/messages.d.ts.map +1 -0
- package/dist/react/use-opencode-sessions/messages.js +319 -0
- package/dist/react/use-opencode-sessions/messages.js.map +1 -0
- package/dist/react/use-opencode-sessions/parts.d.ts +23 -0
- package/dist/react/use-opencode-sessions/parts.d.ts.map +1 -0
- package/dist/react/use-opencode-sessions/parts.js +49 -0
- package/dist/react/use-opencode-sessions/parts.js.map +1 -0
- package/dist/react/use-opencode-sessions/permissions.d.ts +17 -0
- package/dist/react/use-opencode-sessions/permissions.d.ts.map +1 -0
- package/dist/react/use-opencode-sessions/permissions.js +66 -0
- package/dist/react/use-opencode-sessions/permissions.js.map +1 -0
- package/dist/react/use-opencode-sessions/projects.d.ts +5 -0
- package/dist/react/use-opencode-sessions/projects.d.ts.map +1 -0
- package/dist/react/use-opencode-sessions/projects.js +54 -0
- package/dist/react/use-opencode-sessions/projects.js.map +1 -0
- package/dist/react/use-opencode-sessions/providers.d.ts +10 -0
- package/dist/react/use-opencode-sessions/providers.d.ts.map +1 -0
- package/dist/react/use-opencode-sessions/providers.js +98 -0
- package/dist/react/use-opencode-sessions/providers.js.map +1 -0
- package/dist/react/use-opencode-sessions/sessions.d.ts +35 -0
- package/dist/react/use-opencode-sessions/sessions.d.ts.map +1 -0
- package/dist/react/use-opencode-sessions/sessions.js +380 -0
- package/dist/react/use-opencode-sessions/sessions.js.map +1 -0
- package/dist/react/use-opencode-sessions/shared.d.ts +43 -0
- package/dist/react/use-opencode-sessions/shared.d.ts.map +1 -0
- package/dist/react/use-opencode-sessions/shared.js +109 -0
- package/dist/react/use-opencode-sessions/shared.js.map +1 -0
- package/dist/react/use-opencode-sessions/sharing.d.ts +4 -0
- package/dist/react/use-opencode-sessions/sharing.d.ts.map +1 -0
- package/dist/react/use-opencode-sessions/sharing.js +57 -0
- package/dist/react/use-opencode-sessions/sharing.js.map +1 -0
- package/dist/react/use-opencode-sessions/tools.d.ts +5 -0
- package/dist/react/use-opencode-sessions/tools.d.ts.map +1 -0
- package/dist/react/use-opencode-sessions/tools.js +54 -0
- package/dist/react/use-opencode-sessions/tools.js.map +1 -0
- package/dist/react/use-permission-self-heal.d.ts +45 -0
- package/dist/react/use-permission-self-heal.d.ts.map +1 -0
- package/dist/react/use-permission-self-heal.js +144 -0
- package/dist/react/use-permission-self-heal.js.map +1 -0
- package/dist/react/use-project-config.d.ts +11 -0
- package/dist/react/use-project-config.d.ts.map +1 -0
- package/dist/react/use-project-config.js +22 -0
- package/dist/react/use-project-config.js.map +1 -0
- package/dist/react/use-project-models.d.ts +11 -0
- package/dist/react/use-project-models.d.ts.map +1 -0
- package/dist/react/use-project-models.js +25 -0
- package/dist/react/use-project-models.js.map +1 -0
- package/dist/react/use-project-secrets.d.ts +265 -0
- package/dist/react/use-project-secrets.d.ts.map +1 -0
- package/dist/react/use-project-secrets.js +41 -0
- package/dist/react/use-project-secrets.js.map +1 -0
- package/dist/react/use-project-triggers.d.ts +228 -0
- package/dist/react/use-project-triggers.d.ts.map +1 -0
- package/dist/react/use-project-triggers.js +42 -0
- package/dist/react/use-project-triggers.js.map +1 -0
- package/dist/react/use-question-self-heal.d.ts +36 -0
- package/dist/react/use-question-self-heal.d.ts.map +1 -0
- package/dist/react/use-question-self-heal.js +95 -0
- package/dist/react/use-question-self-heal.js.map +1 -0
- package/dist/react/use-runtime-phase.d.ts +9 -0
- package/dist/react/use-runtime-phase.d.ts.map +1 -0
- package/dist/react/use-runtime-phase.js +20 -0
- package/dist/react/use-runtime-phase.js.map +1 -0
- package/dist/react/use-runtime-reconnect.d.ts +90 -0
- package/dist/react/use-runtime-reconnect.d.ts.map +1 -0
- package/dist/react/use-runtime-reconnect.js +234 -0
- package/dist/react/use-runtime-reconnect.js.map +1 -0
- package/dist/react/use-session-picks.d.ts +17 -0
- package/dist/react/use-session-picks.d.ts.map +1 -0
- package/dist/react/use-session-picks.js +36 -0
- package/dist/react/use-session-picks.js.map +1 -0
- package/dist/react/use-session-prefetch.d.ts +18 -0
- package/dist/react/use-session-prefetch.d.ts.map +1 -0
- package/dist/react/use-session-prefetch.js +84 -0
- package/dist/react/use-session-prefetch.js.map +1 -0
- package/dist/react/use-session-send.d.ts +183 -0
- package/dist/react/use-session-send.d.ts.map +1 -0
- package/dist/react/use-session-send.js +287 -0
- package/dist/react/use-session-send.js.map +1 -0
- package/dist/react/use-session-sync.d.ts +24 -0
- package/dist/react/use-session-sync.d.ts.map +1 -0
- package/dist/react/use-session-sync.js +375 -0
- package/dist/react/use-session-sync.js.map +1 -0
- package/dist/react/use-session.d.ts +171 -0
- package/dist/react/use-session.d.ts.map +1 -0
- package/dist/react/use-session.js +396 -0
- package/dist/react/use-session.js.map +1 -0
- package/dist/react/use-visible-agents.d.ts +22 -0
- package/dist/react/use-visible-agents.d.ts.map +1 -0
- package/dist/react/use-visible-agents.js +45 -0
- package/dist/react/use-visible-agents.js.map +1 -0
- package/dist/server.d.ts +55 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +122 -0
- package/dist/server.js.map +1 -0
- package/dist/session/health.d.ts +49 -0
- package/dist/session/health.d.ts.map +1 -0
- package/dist/session/health.js +57 -0
- package/dist/session/health.js.map +1 -0
- package/dist/session/index.d.ts +19 -0
- package/dist/session/index.d.ts.map +1 -0
- package/dist/session/index.js +19 -0
- package/dist/session/index.js.map +1 -0
- package/dist/session/preview.d.ts +24 -0
- package/dist/session/preview.d.ts.map +1 -0
- package/dist/session/preview.js +85 -0
- package/dist/session/preview.js.map +1 -0
- package/dist/session/url.d.ts +160 -0
- package/dist/session/url.d.ts.map +1 -0
- package/dist/session/url.js +522 -0
- package/dist/session/url.js.map +1 -0
- package/dist/state/chat-events.d.ts +141 -0
- package/dist/state/chat-events.d.ts.map +1 -0
- package/dist/state/chat-events.js +135 -0
- package/dist/state/chat-events.js.map +1 -0
- package/dist/state/current-runtime.d.ts +44 -0
- package/dist/state/current-runtime.d.ts.map +1 -0
- package/dist/state/current-runtime.js +44 -0
- package/dist/state/current-runtime.js.map +1 -0
- package/dist/state/diagnostics-store.d.ts +114 -0
- package/dist/state/diagnostics-store.d.ts.map +1 -0
- package/dist/state/diagnostics-store.js +319 -0
- package/dist/state/diagnostics-store.js.map +1 -0
- package/dist/state/event-stream.d.ts +134 -0
- package/dist/state/event-stream.d.ts.map +1 -0
- package/dist/state/event-stream.js +424 -0
- package/dist/state/event-stream.js.map +1 -0
- package/dist/state/idb-sync-cache.d.ts +18 -0
- package/dist/state/idb-sync-cache.d.ts.map +1 -0
- package/dist/state/idb-sync-cache.js +209 -0
- package/dist/state/idb-sync-cache.js.map +1 -0
- package/dist/state/opencode-compaction-store.d.ts +10 -0
- package/dist/state/opencode-compaction-store.d.ts.map +1 -0
- package/dist/state/opencode-compaction-store.js +32 -0
- package/dist/state/opencode-compaction-store.js.map +1 -0
- package/dist/state/opencode-pending-store.d.ts +19 -0
- package/dist/state/opencode-pending-store.d.ts.map +1 -0
- package/dist/state/opencode-pending-store.js +76 -0
- package/dist/state/opencode-pending-store.js.map +1 -0
- package/dist/state/sandbox-connection-store.d.ts +62 -0
- package/dist/state/sandbox-connection-store.d.ts.map +1 -0
- package/dist/state/sandbox-connection-store.js +290 -0
- package/dist/state/sandbox-connection-store.js.map +1 -0
- package/dist/state/server-store/active.d.ts +49 -0
- package/dist/state/server-store/active.d.ts.map +1 -0
- package/dist/state/server-store/active.js +76 -0
- package/dist/state/server-store/active.js.map +1 -0
- package/dist/state/server-store/types.d.ts +12 -0
- package/dist/state/server-store/types.d.ts.map +1 -0
- package/dist/state/server-store/types.js +2 -0
- package/dist/state/server-store/types.js.map +1 -0
- package/dist/state/server-store/url-helpers.d.ts +33 -0
- package/dist/state/server-store/url-helpers.d.ts.map +1 -0
- package/dist/state/server-store/url-helpers.js +55 -0
- package/dist/state/server-store/url-helpers.js.map +1 -0
- package/dist/state/server-store.d.ts +18 -0
- package/dist/state/server-store.d.ts.map +1 -0
- package/dist/state/server-store.js +23 -0
- package/dist/state/server-store.js.map +1 -0
- package/dist/state/session-runtime-registry.d.ts +49 -0
- package/dist/state/session-runtime-registry.d.ts.map +1 -0
- package/dist/state/session-runtime-registry.js +85 -0
- package/dist/state/session-runtime-registry.js.map +1 -0
- package/dist/state/sync-store/ascending-id.d.ts +2 -0
- package/dist/state/sync-store/ascending-id.d.ts.map +1 -0
- package/dist/state/sync-store/ascending-id.js +21 -0
- package/dist/state/sync-store/ascending-id.js.map +1 -0
- package/dist/state/sync-store/binary.d.ts +7 -0
- package/dist/state/sync-store/binary.d.ts.map +1 -0
- package/dist/state/sync-store/binary.js +21 -0
- package/dist/state/sync-store/binary.js.map +1 -0
- package/dist/state/sync-store/stream-cache.d.ts +2 -0
- package/dist/state/sync-store/stream-cache.d.ts.map +1 -0
- package/dist/state/sync-store/stream-cache.js +29 -0
- package/dist/state/sync-store/stream-cache.js.map +1 -0
- package/dist/state/sync-store/types.d.ts +29 -0
- package/dist/state/sync-store/types.d.ts.map +1 -0
- package/dist/state/sync-store/types.js +2 -0
- package/dist/state/sync-store/types.js.map +1 -0
- package/dist/state/sync-store.d.ts +39 -0
- package/dist/state/sync-store.d.ts.map +1 -0
- package/dist/state/sync-store.js +692 -0
- package/dist/state/sync-store.js.map +1 -0
- package/dist/state/tab-store.d.ts +91 -0
- package/dist/state/tab-store.d.ts.map +1 -0
- package/dist/state/tab-store.js +369 -0
- package/dist/state/tab-store.js.map +1 -0
- package/dist/transcript.d.ts +40 -0
- package/dist/transcript.d.ts.map +1 -0
- package/dist/transcript.js +126 -0
- package/dist/transcript.js.map +1 -0
- package/dist/turns/classify.d.ts +166 -0
- package/dist/turns/classify.d.ts.map +1 -0
- package/dist/turns/classify.js +259 -0
- package/dist/turns/classify.js.map +1 -0
- package/dist/turns/errors.d.ts +11 -0
- package/dist/turns/errors.d.ts.map +1 -0
- package/dist/turns/errors.js +85 -0
- package/dist/turns/errors.js.map +1 -0
- package/dist/turns/index.d.ts +264 -0
- package/dist/turns/index.d.ts.map +1 -0
- package/dist/turns/index.js +1243 -0
- package/dist/turns/index.js.map +1 -0
- package/dist/turns/tool-registry.d.ts +33 -0
- package/dist/turns/tool-registry.d.ts.map +1 -0
- package/dist/turns/tool-registry.js +108 -0
- package/dist/turns/tool-registry.js.map +1 -0
- package/dist/turns/types.d.ts +125 -0
- package/dist/turns/types.d.ts.map +1 -0
- package/dist/turns/types.js +12 -0
- package/dist/turns/types.js.map +1 -0
- package/dist/turns/view-model.d.ts +127 -0
- package/dist/turns/view-model.d.ts.map +1 -0
- package/dist/turns/view-model.js +401 -0
- package/dist/turns/view-model.js.map +1 -0
- package/package.json +155 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-session-prefetch.js","sourceRoot":"","sources":["../../src/react/use-session-prefetch.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
import { type KortixSendError } from './use-session.js';
|
|
2
|
+
import { type PromptPart, type SendMessageOptions } from './use-opencode-sessions/index.js';
|
|
3
|
+
import { type StartStash } from './session-start-stash.js';
|
|
4
|
+
/**
|
|
5
|
+
* Add a user message to the sync store optimistically (before the server has
|
|
6
|
+
* accepted it) and flip the session busy. Both actions are independent
|
|
7
|
+
* zustand writes (neither depends on the other's result), so callers that
|
|
8
|
+
* used to fire them in the opposite order see no observable difference.
|
|
9
|
+
*/
|
|
10
|
+
export declare function beginOptimisticSend(sessionId: string, messageId: string, text: string, partIds?: string[]): void;
|
|
11
|
+
/**
|
|
12
|
+
* A send that never reached the network at all (e.g. building the outgoing
|
|
13
|
+
* parts — file uploads — threw before `promptOpenCodeMessage` was even
|
|
14
|
+
* called). There is nothing to rehydrate from the server since it never saw
|
|
15
|
+
* this message, so just clear busy and drop the optimistic message outright
|
|
16
|
+
* — unlike `recoverFromSendFailure`, which keeps it pending a rehydrate.
|
|
17
|
+
*/
|
|
18
|
+
export declare function abandonOptimisticSend(sessionId: string, messageId: string): void;
|
|
19
|
+
/** The minimal slice of `OpencodeClient` the recovery rehydrate needs. */
|
|
20
|
+
export interface OpenCodeMessagesClient {
|
|
21
|
+
session: {
|
|
22
|
+
messages: (args: {
|
|
23
|
+
sessionID: string;
|
|
24
|
+
}) => Promise<{
|
|
25
|
+
data?: unknown;
|
|
26
|
+
}>;
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
export interface SendRecoveryOptions {
|
|
30
|
+
/** Resolve the client used to rehydrate messages on failure. Defaults to
|
|
31
|
+
* the SDK's `getClient` — inject a stub in tests, or a different client in
|
|
32
|
+
* a host that doesn't use the singleton runtime client. */
|
|
33
|
+
getClient?: () => OpenCodeMessagesClient;
|
|
34
|
+
/** Classify the raw error into a `KortixSendError`. Defaults to
|
|
35
|
+
* `classifySendError` — a host with richer message formatting (e.g.
|
|
36
|
+
* apps/web's `ProviderModelNotFoundError` special-casing) injects its own
|
|
37
|
+
* classifier that wraps it. */
|
|
38
|
+
classify?: (error: unknown) => KortixSendError;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* A send reached the network and failed (or the network dispatch itself
|
|
42
|
+
* threw). Classify the error, clear busy, and either rehydrate real messages
|
|
43
|
+
* from the server (keeping the optimistic message visible until then — some
|
|
44
|
+
* error paths never emit a `session.error` SSE event) or drop the optimistic
|
|
45
|
+
* message if the server has no record of it. The rehydrate is fire-and-forget
|
|
46
|
+
* (matches the original inline `.then()/.catch()` — callers don't await it),
|
|
47
|
+
* so this function itself resolves synchronously with the classified error.
|
|
48
|
+
*/
|
|
49
|
+
export declare function recoverFromSendFailure(sessionId: string, messageId: string, error: unknown, options?: SendRecoveryOptions): KortixSendError;
|
|
50
|
+
export interface SendAndRecoverArgs {
|
|
51
|
+
sessionId: string;
|
|
52
|
+
/** The optimistic message id to keep-or-drop on failure. */
|
|
53
|
+
messageId: string;
|
|
54
|
+
parts: PromptPart[];
|
|
55
|
+
options?: SendMessageOptions;
|
|
56
|
+
getClient?: () => OpenCodeMessagesClient;
|
|
57
|
+
classify?: (error: unknown) => KortixSendError;
|
|
58
|
+
}
|
|
59
|
+
export type SendAndRecoverResult = {
|
|
60
|
+
ok: true;
|
|
61
|
+
} | {
|
|
62
|
+
ok: false;
|
|
63
|
+
error: KortixSendError;
|
|
64
|
+
cause: unknown;
|
|
65
|
+
};
|
|
66
|
+
/**
|
|
67
|
+
* Send already-built parts via `promptOpenCodeMessage` (which owns network
|
|
68
|
+
* retry — this never re-wraps it) and run `recoverFromSendFailure` on
|
|
69
|
+
* failure. Assumes the optimistic message was already added by the caller
|
|
70
|
+
* (via `beginOptimisticSend`) — callers add it at different points relative
|
|
71
|
+
* to building `parts` (e.g. before vs. after an upload step that can itself
|
|
72
|
+
* fail), so this only owns the network call + failure recovery.
|
|
73
|
+
*/
|
|
74
|
+
export declare function sendAndRecover(args: SendAndRecoverArgs): Promise<SendAndRecoverResult>;
|
|
75
|
+
/**
|
|
76
|
+
* Optimistically mark the session idle and patch an "aborted" error onto the
|
|
77
|
+
* last assistant message that doesn't already have one, so an "Interrupted"
|
|
78
|
+
* label can render instantly instead of waiting for the SSE `session.error`
|
|
79
|
+
* round-trip. Call this immediately before issuing the actual abort request.
|
|
80
|
+
*/
|
|
81
|
+
export declare function applyOptimisticAbort(sessionId: string): void;
|
|
82
|
+
/** A timer handle — opaque, only ever round-tripped through the injected timers. */
|
|
83
|
+
export type StashReplayTimerHandle = unknown;
|
|
84
|
+
/** Injectable timer seam — defaults to the real globals. Lets tests drive the
|
|
85
|
+
* write-race/readiness-poll timing deterministically instead of depending on
|
|
86
|
+
* real wall-clock delays. */
|
|
87
|
+
export interface StashReplayTimers {
|
|
88
|
+
setTimeout: (handler: () => void, ms: number) => StashReplayTimerHandle;
|
|
89
|
+
clearTimeout: (handle: StashReplayTimerHandle | undefined) => void;
|
|
90
|
+
}
|
|
91
|
+
export interface PreparedStashSend {
|
|
92
|
+
/** The optimistic message id to add + keep-or-drop on failure. */
|
|
93
|
+
messageId: string;
|
|
94
|
+
/** Optimistic text to render immediately (may include e.g. upload markup —
|
|
95
|
+
* distinct from the actual outgoing parts, which `buildParts` builds). */
|
|
96
|
+
optimisticText: string;
|
|
97
|
+
partIds?: string[];
|
|
98
|
+
sendOptions?: SendMessageOptions;
|
|
99
|
+
/** Build the parts to actually send over the wire (e.g. after uploading
|
|
100
|
+
* attached files). Thrown failures are treated exactly like a network-send
|
|
101
|
+
* failure (stash restored, `onFailure` invoked with the classified error). */
|
|
102
|
+
buildParts: () => Promise<PromptPart[]>;
|
|
103
|
+
}
|
|
104
|
+
export interface StartStashReplayOptions<TReady> {
|
|
105
|
+
sessionId: string;
|
|
106
|
+
/** Defaults to the SDK's `readStartStash`; overridable for tests. */
|
|
107
|
+
readStash?: (sessionId: string) => StartStash | null;
|
|
108
|
+
/** How many `writeRaceIntervalMs`-spaced attempts to retry reading the
|
|
109
|
+
* stash before giving up — handles the write race where this can run
|
|
110
|
+
* before the producer (the "new session" screen) has written it. Default 5. */
|
|
111
|
+
writeRaceAttempts?: number;
|
|
112
|
+
/** Default 50ms. */
|
|
113
|
+
writeRaceIntervalMs?: number;
|
|
114
|
+
/**
|
|
115
|
+
* Poll for readiness (e.g. a selectable model) before sending. Return the
|
|
116
|
+
* resolved value once ready, or `null` to keep polling. Called with the
|
|
117
|
+
* stash on every attempt so a host can seed its own agent/model stores
|
|
118
|
+
* from it as a side effect (matching the original inline behavior) —
|
|
119
|
+
* deliberately host-owned so this module never hardcodes a model store.
|
|
120
|
+
*/
|
|
121
|
+
checkReadiness: (stash: StartStash) => TReady | null;
|
|
122
|
+
/** Default 120. */
|
|
123
|
+
readinessAttempts?: number;
|
|
124
|
+
/** Default 250ms. */
|
|
125
|
+
readinessIntervalMs?: number;
|
|
126
|
+
/** The readiness poll never resolved within `readinessAttempts`. */
|
|
127
|
+
onReadinessTimeout?: (stash: StartStash) => void;
|
|
128
|
+
/** Called once ready — build the optimistic message + parts to send. */
|
|
129
|
+
prepare: (stash: StartStash, ready: TReady) => PreparedStashSend;
|
|
130
|
+
/**
|
|
131
|
+
* Called on ANY send failure (building parts OR the network call). By the
|
|
132
|
+
* time this fires, the stash has already been restored (`writeStartStash`)
|
|
133
|
+
* and the optimistic message already recovered (idle + rehydrate-or-remove,
|
|
134
|
+
* via `recoverFromSendFailure`) — use this for host-specific extras (e.g.
|
|
135
|
+
* restoring pending file uploads, resetting an "already handled" flag,
|
|
136
|
+
* surfacing the classified error).
|
|
137
|
+
*/
|
|
138
|
+
onFailure?: (stash: StartStash, error: unknown, classified: KortixSendError) => void;
|
|
139
|
+
getClient?: () => OpenCodeMessagesClient;
|
|
140
|
+
classify?: (error: unknown) => KortixSendError;
|
|
141
|
+
timers?: StashReplayTimers;
|
|
142
|
+
}
|
|
143
|
+
export interface StartStashReplayHandle {
|
|
144
|
+
/** Stop all pending retries/polls and abandon any in-flight send's failure
|
|
145
|
+
* handling. Idempotent. */
|
|
146
|
+
cancel: () => void;
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Read a stashed new-session prompt (retrying across the producer's write
|
|
150
|
+
* race), poll for host-defined send readiness, then send it — restoring the
|
|
151
|
+
* stash (+ recovering the optimistic message) on any failure. Framework-free:
|
|
152
|
+
* safe to call from a `useEffect` (as apps/web's `session-chat.tsx` does) or
|
|
153
|
+
* any other host.
|
|
154
|
+
*/
|
|
155
|
+
export declare function replayStartStash<TReady>(options: StartStashReplayOptions<TReady>): StartStashReplayHandle;
|
|
156
|
+
export interface UseSessionSendOptions {
|
|
157
|
+
getClient?: () => OpenCodeMessagesClient;
|
|
158
|
+
classify?: (error: unknown) => KortixSendError;
|
|
159
|
+
}
|
|
160
|
+
export interface SendCallOptions {
|
|
161
|
+
/** Optimistic message id. Auto-generated (via the sync store's ascending
|
|
162
|
+
* id scheme) if omitted. */
|
|
163
|
+
messageId?: string;
|
|
164
|
+
/** Text to show optimistically before the server echoes it back. Defaults
|
|
165
|
+
* to the first text part's `text`. */
|
|
166
|
+
optimisticText?: string;
|
|
167
|
+
/** Part ids to reuse for the optimistic message (so the server's echo
|
|
168
|
+
* updates the same part instead of duplicating it). */
|
|
169
|
+
partIds?: string[];
|
|
170
|
+
}
|
|
171
|
+
export interface UseSessionSendResult {
|
|
172
|
+
send: (parts: PromptPart[], options?: SendMessageOptions, callOptions?: SendCallOptions) => Promise<SendAndRecoverResult>;
|
|
173
|
+
/** Abort the run and optimistically patch the last assistant message +
|
|
174
|
+
* session status (see `applyOptimisticAbort`). No-ops while a previous
|
|
175
|
+
* abort is still in flight. */
|
|
176
|
+
stop: () => void;
|
|
177
|
+
isSending: boolean;
|
|
178
|
+
isStopping: boolean;
|
|
179
|
+
/** Last `send` failure, or null. Reset on every new `send` call. */
|
|
180
|
+
sendError: KortixSendError | null;
|
|
181
|
+
}
|
|
182
|
+
export declare function useSessionSend(sessionId: string, options?: UseSessionSendOptions): UseSessionSendResult;
|
|
183
|
+
//# sourceMappingURL=use-session-send.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-session-send.d.ts","sourceRoot":"","sources":["../../src/react/use-session-send.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,287 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { useCallback, useState } from 'react';
|
|
3
|
+
import { getClient } from '../opencode/client.js';
|
|
4
|
+
import { ascendingId, useSyncStore } from '../state/sync-store.js';
|
|
5
|
+
import { classifySendError } from './use-session.js';
|
|
6
|
+
import { promptOpenCodeMessage, useAbortOpenCodeSession, } from './use-opencode-sessions/index.js';
|
|
7
|
+
import { readStartStash, writeStartStash } from './session-start-stash.js';
|
|
8
|
+
// ============================================================================
|
|
9
|
+
// Optimistic-send bookkeeping — pure sync-store mechanics, shared by every
|
|
10
|
+
// send path.
|
|
11
|
+
// ============================================================================
|
|
12
|
+
/**
|
|
13
|
+
* Add a user message to the sync store optimistically (before the server has
|
|
14
|
+
* accepted it) and flip the session busy. Both actions are independent
|
|
15
|
+
* zustand writes (neither depends on the other's result), so callers that
|
|
16
|
+
* used to fire them in the opposite order see no observable difference.
|
|
17
|
+
*/
|
|
18
|
+
export function beginOptimisticSend(sessionId, messageId, text, partIds) {
|
|
19
|
+
const parts = text.trim()
|
|
20
|
+
? [
|
|
21
|
+
{
|
|
22
|
+
id: partIds?.[0] ?? ascendingId('prt'),
|
|
23
|
+
sessionID: sessionId,
|
|
24
|
+
messageID: messageId,
|
|
25
|
+
type: 'text',
|
|
26
|
+
text,
|
|
27
|
+
},
|
|
28
|
+
]
|
|
29
|
+
: [];
|
|
30
|
+
// Minimal optimistic stub — omits `agent`/`model` (required on the real
|
|
31
|
+
// `UserMessage`) since the server fills those in; same stub-message
|
|
32
|
+
// convention used by the sync store's own SSE handlers.
|
|
33
|
+
const info = {
|
|
34
|
+
id: messageId,
|
|
35
|
+
sessionID: sessionId,
|
|
36
|
+
role: 'user',
|
|
37
|
+
time: { created: Date.now() },
|
|
38
|
+
};
|
|
39
|
+
useSyncStore.getState().optimisticAdd(sessionId, info, parts);
|
|
40
|
+
useSyncStore.getState().setStatus(sessionId, { type: 'busy' });
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* A send that never reached the network at all (e.g. building the outgoing
|
|
44
|
+
* parts — file uploads — threw before `promptOpenCodeMessage` was even
|
|
45
|
+
* called). There is nothing to rehydrate from the server since it never saw
|
|
46
|
+
* this message, so just clear busy and drop the optimistic message outright
|
|
47
|
+
* — unlike `recoverFromSendFailure`, which keeps it pending a rehydrate.
|
|
48
|
+
*/
|
|
49
|
+
export function abandonOptimisticSend(sessionId, messageId) {
|
|
50
|
+
useSyncStore.getState().setStatus(sessionId, { type: 'idle' });
|
|
51
|
+
useSyncStore.getState().optimisticRemove(sessionId, messageId);
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* A send reached the network and failed (or the network dispatch itself
|
|
55
|
+
* threw). Classify the error, clear busy, and either rehydrate real messages
|
|
56
|
+
* from the server (keeping the optimistic message visible until then — some
|
|
57
|
+
* error paths never emit a `session.error` SSE event) or drop the optimistic
|
|
58
|
+
* message if the server has no record of it. The rehydrate is fire-and-forget
|
|
59
|
+
* (matches the original inline `.then()/.catch()` — callers don't await it),
|
|
60
|
+
* so this function itself resolves synchronously with the classified error.
|
|
61
|
+
*/
|
|
62
|
+
export function recoverFromSendFailure(sessionId, messageId, error, options = {}) {
|
|
63
|
+
const classify = options.classify ?? classifySendError;
|
|
64
|
+
const resolveClient = options.getClient ?? getClient;
|
|
65
|
+
const classified = classify(error);
|
|
66
|
+
useSyncStore.getState().setStatus(sessionId, { type: 'idle' });
|
|
67
|
+
let client;
|
|
68
|
+
try {
|
|
69
|
+
client = resolveClient();
|
|
70
|
+
}
|
|
71
|
+
catch {
|
|
72
|
+
useSyncStore.getState().optimisticRemove(sessionId, messageId);
|
|
73
|
+
return classified;
|
|
74
|
+
}
|
|
75
|
+
client.session
|
|
76
|
+
.messages({ sessionID: sessionId })
|
|
77
|
+
.then((res) => {
|
|
78
|
+
if (res?.data) {
|
|
79
|
+
// hydrate() already drops superseded optimistic messages AND bridges
|
|
80
|
+
// their text onto the real server message. Do NOT also call
|
|
81
|
+
// clearOptimisticMessages here: on an error send whose user message
|
|
82
|
+
// the server hasn't persisted yet, that wipes the user's typed text
|
|
83
|
+
// and leaves an empty bubble. Keeping the optimistic message means
|
|
84
|
+
// the user always still sees what they sent.
|
|
85
|
+
useSyncStore.getState().hydrate(sessionId, res.data);
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
// No server data — just remove the optimistic message.
|
|
89
|
+
useSyncStore.getState().optimisticRemove(sessionId, messageId);
|
|
90
|
+
}
|
|
91
|
+
})
|
|
92
|
+
.catch(() => {
|
|
93
|
+
// Fetch failed — fall back to removing the optimistic message.
|
|
94
|
+
useSyncStore.getState().optimisticRemove(sessionId, messageId);
|
|
95
|
+
});
|
|
96
|
+
return classified;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Send already-built parts via `promptOpenCodeMessage` (which owns network
|
|
100
|
+
* retry — this never re-wraps it) and run `recoverFromSendFailure` on
|
|
101
|
+
* failure. Assumes the optimistic message was already added by the caller
|
|
102
|
+
* (via `beginOptimisticSend`) — callers add it at different points relative
|
|
103
|
+
* to building `parts` (e.g. before vs. after an upload step that can itself
|
|
104
|
+
* fail), so this only owns the network call + failure recovery.
|
|
105
|
+
*/
|
|
106
|
+
export async function sendAndRecover(args) {
|
|
107
|
+
try {
|
|
108
|
+
await promptOpenCodeMessage({
|
|
109
|
+
sessionId: args.sessionId,
|
|
110
|
+
parts: args.parts,
|
|
111
|
+
options: args.options,
|
|
112
|
+
});
|
|
113
|
+
return { ok: true };
|
|
114
|
+
}
|
|
115
|
+
catch (cause) {
|
|
116
|
+
const error = recoverFromSendFailure(args.sessionId, args.messageId, cause, {
|
|
117
|
+
getClient: args.getClient,
|
|
118
|
+
classify: args.classify,
|
|
119
|
+
});
|
|
120
|
+
return { ok: false, error, cause };
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
// ============================================================================
|
|
124
|
+
// Optimistic abort patch — the generic half of apps/web's `handleStop`. Pure
|
|
125
|
+
// sync-store manipulation (no web-specific concepts), so it's extracted; the
|
|
126
|
+
// abort mutation itself stays a shared per-host instance (apps/web fans it
|
|
127
|
+
// out to multiple call sites beyond stop, so `useSessionSend` deliberately
|
|
128
|
+
// does NOT own a second competing `useAbortOpenCodeSession()` instance for
|
|
129
|
+
// hosts that already have one — see `useSessionSend.stop` below for a host
|
|
130
|
+
// that doesn't).
|
|
131
|
+
// ============================================================================
|
|
132
|
+
/**
|
|
133
|
+
* Optimistically mark the session idle and patch an "aborted" error onto the
|
|
134
|
+
* last assistant message that doesn't already have one, so an "Interrupted"
|
|
135
|
+
* label can render instantly instead of waiting for the SSE `session.error`
|
|
136
|
+
* round-trip. Call this immediately before issuing the actual abort request.
|
|
137
|
+
*/
|
|
138
|
+
export function applyOptimisticAbort(sessionId) {
|
|
139
|
+
useSyncStore.getState().setStatus(sessionId, { type: 'idle' });
|
|
140
|
+
const store = useSyncStore.getState();
|
|
141
|
+
const msgs = store.messages[sessionId];
|
|
142
|
+
if (!msgs)
|
|
143
|
+
return;
|
|
144
|
+
for (let i = msgs.length - 1; i >= 0; i--) {
|
|
145
|
+
const msg = msgs[i];
|
|
146
|
+
if (msg.role === 'assistant' && !msg.error) {
|
|
147
|
+
// Typed as the wider `MessageError` (not just the literal shape below)
|
|
148
|
+
// so the assertion further down overlaps with `AssistantMessage.error`'s
|
|
149
|
+
// real union — see `MessageError` in the sync store.
|
|
150
|
+
const error = {
|
|
151
|
+
name: 'AbortError',
|
|
152
|
+
data: { message: 'The operation was aborted.' },
|
|
153
|
+
};
|
|
154
|
+
// `error`'s shape (`SyntheticAbortError`) isn't part of the SDK's
|
|
155
|
+
// `AssistantMessage.error` union — see `MessageError` in the sync
|
|
156
|
+
// store. TS flags the direct assertion as an insufficient-overlap
|
|
157
|
+
// mistake because it narrows the literal's `error` field back down to
|
|
158
|
+
// `SyntheticAbortError`; route through `unknown` as TS itself suggests.
|
|
159
|
+
const patched = { ...msg, error };
|
|
160
|
+
store.upsertMessage(sessionId, patched);
|
|
161
|
+
break;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
const realStashReplayTimers = {
|
|
166
|
+
setTimeout: (handler, ms) => setTimeout(handler, ms),
|
|
167
|
+
clearTimeout: (handle) => clearTimeout(handle),
|
|
168
|
+
};
|
|
169
|
+
/**
|
|
170
|
+
* Read a stashed new-session prompt (retrying across the producer's write
|
|
171
|
+
* race), poll for host-defined send readiness, then send it — restoring the
|
|
172
|
+
* stash (+ recovering the optimistic message) on any failure. Framework-free:
|
|
173
|
+
* safe to call from a `useEffect` (as apps/web's `session-chat.tsx` does) or
|
|
174
|
+
* any other host.
|
|
175
|
+
*/
|
|
176
|
+
export function replayStartStash(options) {
|
|
177
|
+
const { sessionId, readStash = readStartStash, writeRaceAttempts = 5, writeRaceIntervalMs = 50, checkReadiness, readinessAttempts = 120, readinessIntervalMs = 250, onReadinessTimeout, prepare, onFailure, getClient: getClientOpt, classify, } = options;
|
|
178
|
+
const t = options.timers ?? realStashReplayTimers;
|
|
179
|
+
let cancelled = false;
|
|
180
|
+
let timer;
|
|
181
|
+
const fail = (stash, messageId, error) => {
|
|
182
|
+
writeStartStash(sessionId, stash);
|
|
183
|
+
const classified = recoverFromSendFailure(sessionId, messageId, error, {
|
|
184
|
+
getClient: getClientOpt,
|
|
185
|
+
classify,
|
|
186
|
+
});
|
|
187
|
+
onFailure?.(stash, error, classified);
|
|
188
|
+
};
|
|
189
|
+
const attemptSend = (stash, ready) => {
|
|
190
|
+
const prepared = prepare(stash, ready);
|
|
191
|
+
beginOptimisticSend(sessionId, prepared.messageId, prepared.optimisticText, prepared.partIds);
|
|
192
|
+
void (async () => {
|
|
193
|
+
let parts;
|
|
194
|
+
try {
|
|
195
|
+
parts = await prepared.buildParts();
|
|
196
|
+
}
|
|
197
|
+
catch (err) {
|
|
198
|
+
// Unconditional — matches the original inline effect, which recovered
|
|
199
|
+
// this failure even if `cancel()` had already fired (only the
|
|
200
|
+
// network-send catch below was guarded there).
|
|
201
|
+
fail(stash, prepared.messageId, err);
|
|
202
|
+
return;
|
|
203
|
+
}
|
|
204
|
+
try {
|
|
205
|
+
await promptOpenCodeMessage({ sessionId, parts, options: prepared.sendOptions });
|
|
206
|
+
}
|
|
207
|
+
catch (err) {
|
|
208
|
+
if (!cancelled)
|
|
209
|
+
fail(stash, prepared.messageId, err);
|
|
210
|
+
}
|
|
211
|
+
})();
|
|
212
|
+
};
|
|
213
|
+
const pollReadiness = (stash, attempt) => {
|
|
214
|
+
if (cancelled)
|
|
215
|
+
return;
|
|
216
|
+
const ready = checkReadiness(stash);
|
|
217
|
+
if (ready !== null) {
|
|
218
|
+
attemptSend(stash, ready);
|
|
219
|
+
return;
|
|
220
|
+
}
|
|
221
|
+
if (attempt < readinessAttempts) {
|
|
222
|
+
timer = t.setTimeout(() => pollReadiness(stash, attempt + 1), readinessIntervalMs);
|
|
223
|
+
return;
|
|
224
|
+
}
|
|
225
|
+
onReadinessTimeout?.(stash);
|
|
226
|
+
};
|
|
227
|
+
const readWithRetry = (attempt) => {
|
|
228
|
+
if (cancelled)
|
|
229
|
+
return;
|
|
230
|
+
const stash = readStash(sessionId);
|
|
231
|
+
if (!stash?.prompt) {
|
|
232
|
+
if (attempt < writeRaceAttempts) {
|
|
233
|
+
timer = t.setTimeout(() => readWithRetry(attempt + 1), writeRaceIntervalMs);
|
|
234
|
+
return;
|
|
235
|
+
}
|
|
236
|
+
return;
|
|
237
|
+
}
|
|
238
|
+
// Carry the attempt count forward into the readiness poll (matches the
|
|
239
|
+
// original inline effect, which used one shared counter across both
|
|
240
|
+
// loops) rather than resetting to 0 — the write-race retry only ever
|
|
241
|
+
// consumes a handful of attempts before finding the stash, so this only
|
|
242
|
+
// trims the readiness budget by that same handful, never resets it.
|
|
243
|
+
pollReadiness(stash, attempt);
|
|
244
|
+
};
|
|
245
|
+
readWithRetry(0);
|
|
246
|
+
return {
|
|
247
|
+
cancel: () => {
|
|
248
|
+
cancelled = true;
|
|
249
|
+
if (timer !== undefined)
|
|
250
|
+
t.clearTimeout(timer);
|
|
251
|
+
},
|
|
252
|
+
};
|
|
253
|
+
}
|
|
254
|
+
export function useSessionSend(sessionId, options = {}) {
|
|
255
|
+
const { getClient: getClientOpt, classify } = options;
|
|
256
|
+
const [sendError, setSendError] = useState(null);
|
|
257
|
+
const [isSending, setIsSending] = useState(false);
|
|
258
|
+
const abortMutation = useAbortOpenCodeSession();
|
|
259
|
+
const send = useCallback(async (parts, sendOptions, callOptions = {}) => {
|
|
260
|
+
setSendError(null);
|
|
261
|
+
const messageId = callOptions.messageId ?? ascendingId('msg');
|
|
262
|
+
const firstText = parts.find((p) => p.type === 'text');
|
|
263
|
+
const optimisticText = callOptions.optimisticText ?? firstText?.text ?? '';
|
|
264
|
+
beginOptimisticSend(sessionId, messageId, optimisticText, callOptions.partIds);
|
|
265
|
+
setIsSending(true);
|
|
266
|
+
const result = await sendAndRecover({
|
|
267
|
+
sessionId,
|
|
268
|
+
messageId,
|
|
269
|
+
parts,
|
|
270
|
+
options: sendOptions,
|
|
271
|
+
getClient: getClientOpt,
|
|
272
|
+
classify,
|
|
273
|
+
});
|
|
274
|
+
setIsSending(false);
|
|
275
|
+
if (!result.ok)
|
|
276
|
+
setSendError(result.error);
|
|
277
|
+
return result;
|
|
278
|
+
}, [sessionId, getClientOpt, classify]);
|
|
279
|
+
const stop = useCallback(() => {
|
|
280
|
+
if (!sessionId || abortMutation.isPending)
|
|
281
|
+
return;
|
|
282
|
+
applyOptimisticAbort(sessionId);
|
|
283
|
+
abortMutation.mutate(sessionId);
|
|
284
|
+
}, [sessionId, abortMutation]);
|
|
285
|
+
return { send, stop, isSending, isStopping: abortMutation.isPending, sendError };
|
|
286
|
+
}
|
|
287
|
+
//# sourceMappingURL=use-session-send.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-session-send.js","sourceRoot":"","sources":["../../src/react/use-session-send.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { SessionStatus, Todo } from "@opencode-ai/sdk/v2/client";
|
|
2
|
+
type FileDiff = Omit<import('@opencode-ai/sdk/v2/client').SnapshotFileDiff, 'patch'> & {
|
|
3
|
+
patch?: string;
|
|
4
|
+
before?: string;
|
|
5
|
+
after?: string;
|
|
6
|
+
};
|
|
7
|
+
import { type MessageWithParts } from "../state/sync-store.js";
|
|
8
|
+
/**
|
|
9
|
+
* Single hook that provides all session data from the sync store.
|
|
10
|
+
* Replaces: useOpenCodeMessages + useOpenCodeSessionStatusStore + useOpenCodePendingStore
|
|
11
|
+
*
|
|
12
|
+
* On first access, fetches messages from the server and populates the store.
|
|
13
|
+
* After that, SSE events keep the store updated in real time.
|
|
14
|
+
*/
|
|
15
|
+
export declare function useSessionSync(sessionId: string): {
|
|
16
|
+
messages: MessageWithParts[];
|
|
17
|
+
status: SessionStatus;
|
|
18
|
+
isBusy: boolean;
|
|
19
|
+
isLoading: boolean;
|
|
20
|
+
diffs: FileDiff[];
|
|
21
|
+
todos: Todo[];
|
|
22
|
+
};
|
|
23
|
+
export {};
|
|
24
|
+
//# sourceMappingURL=use-session-sync.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-session-sync.d.ts","sourceRoot":"","sources":["../../src/react/use-session-sync.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAGX,aAAa,EACb,IAAI,EACJ,MAAM,4BAA4B,CAAC;AAKpC,KAAK,QAAQ,GAAG,IAAI,CAAC,OAAO,4BAA4B,EAAE,gBAAgB,EAAE,OAAO,CAAC,GAAG;IACtF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AACF,OAAO,EACN,KAAK,gBAAgB,EAErB,MAAM,qBAAqB,CAAC;AAuF7B;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM;;;;;;;EAoT/C"}
|