@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,7 @@
|
|
|
1
|
+
import type { QueryClient } from '@tanstack/react-query';
|
|
2
|
+
type RefreshProjectProviderStateOptions = {
|
|
3
|
+
removeProjectScopedCache?: boolean;
|
|
4
|
+
};
|
|
5
|
+
export declare function refreshProjectProviderState(queryClient: QueryClient, projectId: string, opts?: RefreshProjectProviderStateOptions): void;
|
|
6
|
+
export {};
|
|
7
|
+
//# sourceMappingURL=provider-refresh.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider-refresh.d.ts","sourceRoot":"","sources":["../../src/react/provider-refresh.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAKzD,KAAK,kCAAkC,GAAG;IACxC,wBAAwB,CAAC,EAAE,OAAO,CAAC;CACpC,CAAC;AAEF,wBAAgB,2BAA2B,CACzC,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,MAAM,EACjB,IAAI,GAAE,kCAAuC,GAC5C,IAAI,CAuBN"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { configKeys } from './use-opencode-config.js';
|
|
3
|
+
import { clearProjectProviderCache, opencodeKeys } from './use-opencode-sessions/index.js';
|
|
4
|
+
export function refreshProjectProviderState(queryClient, projectId, opts = {}) {
|
|
5
|
+
const projectProviderKey = ['project-providers', projectId];
|
|
6
|
+
clearProjectProviderCache(projectId);
|
|
7
|
+
if (opts.removeProjectScopedCache) {
|
|
8
|
+
queryClient.removeQueries({ queryKey: projectProviderKey });
|
|
9
|
+
}
|
|
10
|
+
queryClient.invalidateQueries({ queryKey: projectProviderKey });
|
|
11
|
+
queryClient.invalidateQueries({ queryKey: ['project-secrets', projectId] });
|
|
12
|
+
queryClient.invalidateQueries({ queryKey: opencodeKeys.providers() });
|
|
13
|
+
queryClient.invalidateQueries({ queryKey: configKeys.all });
|
|
14
|
+
// Saving provider credentials hot-pushes env vars into active sandboxes and
|
|
15
|
+
// restarts OpenCode. A single immediate refetch can race that restart and
|
|
16
|
+
// accept the old native provider list as final, so follow up a few times.
|
|
17
|
+
if (typeof window === 'undefined')
|
|
18
|
+
return;
|
|
19
|
+
for (const delay of [500, 1500, 3000, 6000]) {
|
|
20
|
+
window.setTimeout(() => {
|
|
21
|
+
void queryClient.invalidateQueries({ queryKey: projectProviderKey });
|
|
22
|
+
void queryClient.invalidateQueries({ queryKey: ['project-secrets', projectId] });
|
|
23
|
+
void queryClient.refetchQueries({ queryKey: ['project-secrets', projectId], type: 'all' });
|
|
24
|
+
void queryClient.refetchQueries({ queryKey: projectProviderKey, type: 'active' });
|
|
25
|
+
}, delay);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=provider-refresh.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider-refresh.js","sourceRoot":"","sources":["../../src/react/provider-refresh.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAIb,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,yBAAyB,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAMlF,MAAM,UAAU,2BAA2B,CACzC,WAAwB,EACxB,SAAiB,EACjB,OAA2C,EAAE;IAE7C,MAAM,kBAAkB,GAAG,CAAC,mBAAmB,EAAE,SAAS,CAAC,CAAC;IAC5D,yBAAyB,CAAC,SAAS,CAAC,CAAC;IACrC,IAAI,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAClC,WAAW,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC,CAAC;IAC9D,CAAC;IACD,WAAW,CAAC,iBAAiB,CAAC,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC,CAAC;IAChE,WAAW,CAAC,iBAAiB,CAAC,EAAE,QAAQ,EAAE,CAAC,iBAAiB,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;IAC5E,WAAW,CAAC,iBAAiB,CAAC,EAAE,QAAQ,EAAE,YAAY,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IACtE,WAAW,CAAC,iBAAiB,CAAC,EAAE,QAAQ,EAAE,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC;IAE5D,4EAA4E;IAC5E,0EAA0E;IAC1E,0EAA0E;IAC1E,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAO;IAC1C,KAAK,MAAM,KAAK,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;QAC5C,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE;YACrB,KAAK,WAAW,CAAC,iBAAiB,CAAC,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC,CAAC;YACrE,KAAK,WAAW,CAAC,iBAAiB,CAAC,EAAE,QAAQ,EAAE,CAAC,iBAAiB,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;YACjF,KAAK,WAAW,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,CAAC,iBAAiB,EAAE,SAAS,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YAC3F,KAAK,WAAW,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,kBAAkB,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QACpF,CAAC,EAAE,KAAK,CAAC,CAAC;IACZ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { ProviderListResponse as SdkProviderListResponse } from '@opencode-ai/sdk/v2/client';
|
|
2
|
+
import type { ProjectLlmCatalogResponse } from '../platform/projects-client/index.js';
|
|
3
|
+
export type ProviderListResponse = SdkProviderListResponse;
|
|
4
|
+
/**
|
|
5
|
+
* Provider → credential env-var mapping, derived from the shared models.dev
|
|
6
|
+
* catalog. Mirrors the `{ id, envVars }` projection of the web's `LLM_PROVIDERS`
|
|
7
|
+
* (which is itself built from the same catalog), so connection inference is
|
|
8
|
+
* identical without depending on the web-only provider-modal catalog module.
|
|
9
|
+
*/
|
|
10
|
+
export declare const LLM_PROVIDER_CREDENTIALS: Array<{
|
|
11
|
+
id: string;
|
|
12
|
+
envVars: string[];
|
|
13
|
+
}>;
|
|
14
|
+
export declare const GATEWAY_PROVIDER_IDS: Set<string>;
|
|
15
|
+
export declare function normalizeProviderList(providers: ProviderListResponse): ProviderListResponse;
|
|
16
|
+
/**
|
|
17
|
+
* True when a provider-list response actually carries usable models — i.e. at
|
|
18
|
+
* least one CONNECTED provider that exposes >=1 model. A response failing this
|
|
19
|
+
* is a transient boot state, not a real answer.
|
|
20
|
+
*/
|
|
21
|
+
export declare function providerListHasModels(providers: ProviderListResponse | undefined): boolean;
|
|
22
|
+
export declare function providerListHasGateway(providers: ProviderListResponse | undefined): boolean;
|
|
23
|
+
export declare function filterToGatewayProviders(providers: ProviderListResponse): ProviderListResponse;
|
|
24
|
+
export declare function filterToNativeProviders(providers: ProviderListResponse): ProviderListResponse;
|
|
25
|
+
export declare function mergeProjectSecretConnectedProviders(providers: ProviderListResponse, secretNames: Set<string>, providerCredentials: Array<{
|
|
26
|
+
id: string;
|
|
27
|
+
envVars: string[];
|
|
28
|
+
}>): ProviderListResponse;
|
|
29
|
+
export declare function connectedGatewayProviderIdsFromSecretNames(secretNames: Set<string>): Set<string>;
|
|
30
|
+
export declare function projectLlmCatalogToProviderList(catalog: ProjectLlmCatalogResponse): ProviderListResponse;
|
|
31
|
+
//# sourceMappingURL=provider-selection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider-selection.d.ts","sourceRoot":"","sources":["../../src/react/provider-selection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,IAAI,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAGlG,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AAE7E,MAAM,MAAM,oBAAoB,GAAG,uBAAuB,CAAC;AAE3D;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,EAAE,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAIzE,CAAC;AAIN,eAAO,MAAM,oBAAoB,aAAsB,CAAC;AAGxD,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,oBAAoB,GAC9B,oBAAoB,CAiCtB;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,oBAAoB,GAAG,SAAS,GAAG,OAAO,CAY1F;AAED,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,oBAAoB,GAAG,SAAS,GAAG,OAAO,CAM3F;AAED,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,oBAAoB,GAAG,oBAAoB,CAS9F;AAED,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,oBAAoB,GAAG,oBAAoB,CAS7F;AAED,wBAAgB,oCAAoC,CAClD,SAAS,EAAE,oBAAoB,EAC/B,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,EACxB,mBAAmB,EAAE,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,GAC5D,oBAAoB,CAwBtB;AAED,wBAAgB,0CAA0C,CACxD,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,GACvB,GAAG,CAAC,MAAM,CAAC,CAcb;AAED,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE,yBAAyB,GACjC,oBAAoB,CAYtB"}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import { CATALOG } from '@kortix/llm-catalog';
|
|
2
|
+
/**
|
|
3
|
+
* Provider → credential env-var mapping, derived from the shared models.dev
|
|
4
|
+
* catalog. Mirrors the `{ id, envVars }` projection of the web's `LLM_PROVIDERS`
|
|
5
|
+
* (which is itself built from the same catalog), so connection inference is
|
|
6
|
+
* identical without depending on the web-only provider-modal catalog module.
|
|
7
|
+
*/
|
|
8
|
+
export const LLM_PROVIDER_CREDENTIALS = CATALOG.providers.map((provider) => ({
|
|
9
|
+
id: provider.id,
|
|
10
|
+
envVars: provider.env ?? [],
|
|
11
|
+
}));
|
|
12
|
+
// In gateway mode OpenCode must see Kortix as the single LLM provider. Native
|
|
13
|
+
// providers, including OpenCode Zen, belong only to native mode.
|
|
14
|
+
export const GATEWAY_PROVIDER_IDS = new Set(['kortix']);
|
|
15
|
+
const NATIVE_EXCLUDED_PROVIDER_IDS = new Set(['kortix']);
|
|
16
|
+
export function normalizeProviderList(providers) {
|
|
17
|
+
const modernAll = Array.isArray(providers.all) ? providers.all : [];
|
|
18
|
+
const modernConnected = Array.isArray(providers.connected) ? providers.connected : [];
|
|
19
|
+
if (modernAll.length > 0 || modernConnected.length > 0) {
|
|
20
|
+
return {
|
|
21
|
+
...providers,
|
|
22
|
+
all: modernAll,
|
|
23
|
+
connected: modernConnected,
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
// Legacy responses carried providers under `.providers` instead of `.all` —
|
|
27
|
+
// not part of the modern `ProviderListResponse` type, so duck-type via
|
|
28
|
+
// `unknown` rather than assume that (long-gone) legacy shape is still real.
|
|
29
|
+
const maybeLegacy = providers.providers;
|
|
30
|
+
const legacyProviders = Array.isArray(maybeLegacy)
|
|
31
|
+
? maybeLegacy
|
|
32
|
+
: [];
|
|
33
|
+
if (legacyProviders.length === 0) {
|
|
34
|
+
return {
|
|
35
|
+
...providers,
|
|
36
|
+
all: [],
|
|
37
|
+
connected: [],
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
return {
|
|
41
|
+
...providers,
|
|
42
|
+
all: legacyProviders,
|
|
43
|
+
connected: legacyProviders.map((provider) => provider.id),
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* True when a provider-list response actually carries usable models — i.e. at
|
|
48
|
+
* least one CONNECTED provider that exposes >=1 model. A response failing this
|
|
49
|
+
* is a transient boot state, not a real answer.
|
|
50
|
+
*/
|
|
51
|
+
export function providerListHasModels(providers) {
|
|
52
|
+
if (!providers)
|
|
53
|
+
return false;
|
|
54
|
+
const normalized = normalizeProviderList(providers);
|
|
55
|
+
const all = Array.isArray(normalized.all) ? normalized.all : [];
|
|
56
|
+
const connected = Array.isArray(normalized.connected) ? normalized.connected : [];
|
|
57
|
+
if (connected.length === 0)
|
|
58
|
+
return false;
|
|
59
|
+
return all.some((p) => connected.includes(p.id) &&
|
|
60
|
+
p.models &&
|
|
61
|
+
Object.keys(p.models).length > 0);
|
|
62
|
+
}
|
|
63
|
+
export function providerListHasGateway(providers) {
|
|
64
|
+
if (!providers)
|
|
65
|
+
return false;
|
|
66
|
+
const normalized = normalizeProviderList(providers);
|
|
67
|
+
const all = Array.isArray(normalized.all) ? normalized.all : [];
|
|
68
|
+
const connected = Array.isArray(normalized.connected) ? normalized.connected : [];
|
|
69
|
+
return connected.includes('kortix') || all.some((p) => p.id === 'kortix');
|
|
70
|
+
}
|
|
71
|
+
export function filterToGatewayProviders(providers) {
|
|
72
|
+
const normalized = normalizeProviderList(providers);
|
|
73
|
+
const all = Array.isArray(normalized.all) ? normalized.all : [];
|
|
74
|
+
const connected = Array.isArray(normalized.connected) ? normalized.connected : [];
|
|
75
|
+
return {
|
|
76
|
+
...normalized,
|
|
77
|
+
all: all.filter((p) => GATEWAY_PROVIDER_IDS.has(p.id)),
|
|
78
|
+
connected: connected.filter((id) => GATEWAY_PROVIDER_IDS.has(id)),
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
export function filterToNativeProviders(providers) {
|
|
82
|
+
const normalized = normalizeProviderList(providers);
|
|
83
|
+
const all = Array.isArray(normalized.all) ? normalized.all : [];
|
|
84
|
+
const connected = Array.isArray(normalized.connected) ? normalized.connected : [];
|
|
85
|
+
return {
|
|
86
|
+
...normalized,
|
|
87
|
+
all: all.filter((p) => !NATIVE_EXCLUDED_PROVIDER_IDS.has(p.id)),
|
|
88
|
+
connected: connected.filter((id) => !NATIVE_EXCLUDED_PROVIDER_IDS.has(id)),
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
export function mergeProjectSecretConnectedProviders(providers, secretNames, providerCredentials) {
|
|
92
|
+
const normalized = normalizeProviderList(providers);
|
|
93
|
+
const all = Array.isArray(normalized.all) ? normalized.all : [];
|
|
94
|
+
const allIds = new Set(all.map((provider) => provider.id));
|
|
95
|
+
const connected = new Set(Array.isArray(normalized.connected) ? normalized.connected : []);
|
|
96
|
+
for (const provider of providerCredentials) {
|
|
97
|
+
if (allIds.has(provider.id) &&
|
|
98
|
+
provider.envVars.length > 0 &&
|
|
99
|
+
provider.envVars.every((envVar) => secretNames.has(envVar))) {
|
|
100
|
+
connected.add(provider.id);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
if (allIds.has('codex') &&
|
|
104
|
+
(secretNames.has('CODEX_AUTH_JSON') || secretNames.has('OPENCODE_AUTH_JSON'))) {
|
|
105
|
+
connected.add('codex');
|
|
106
|
+
}
|
|
107
|
+
return { ...normalized, connected: [...connected] };
|
|
108
|
+
}
|
|
109
|
+
export function connectedGatewayProviderIdsFromSecretNames(secretNames) {
|
|
110
|
+
const ids = new Set();
|
|
111
|
+
for (const provider of LLM_PROVIDER_CREDENTIALS) {
|
|
112
|
+
if (provider.envVars.length > 0 &&
|
|
113
|
+
provider.envVars.every((envVar) => secretNames.has(envVar))) {
|
|
114
|
+
ids.add(provider.id);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
if (secretNames.has('CODEX_AUTH_JSON') || secretNames.has('OPENCODE_AUTH_JSON')) {
|
|
118
|
+
ids.add('codex');
|
|
119
|
+
}
|
|
120
|
+
return ids;
|
|
121
|
+
}
|
|
122
|
+
export function projectLlmCatalogToProviderList(catalog) {
|
|
123
|
+
const models = catalog.models ?? {};
|
|
124
|
+
return {
|
|
125
|
+
default: { kortix: models.auto ? 'auto' : (Object.keys(models)[0] ?? 'auto') },
|
|
126
|
+
connected: ['kortix'],
|
|
127
|
+
all: [{
|
|
128
|
+
id: 'kortix',
|
|
129
|
+
name: 'Kortix',
|
|
130
|
+
source: 'gateway',
|
|
131
|
+
models,
|
|
132
|
+
}],
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=provider-selection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider-selection.js","sourceRoot":"","sources":["../../src/react/provider-selection.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
export declare function KortixProjectProvider(props: {
|
|
3
|
+
projectId: string | null;
|
|
4
|
+
children?: ReactNode;
|
|
5
|
+
}): ReactNode;
|
|
6
|
+
export declare function useKortixRouteProjectId(): string | null;
|
|
7
|
+
//# sourceMappingURL=route-project.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"route-project.d.ts","sourceRoot":"","sources":["../../src/react/route-project.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAA4C,MAAM,OAAO,CAAC;AAajF,wBAAgB,qBAAqB,CAAC,KAAK,EAAE;IAC3C,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB,GAAG,SAAS,CAEZ;AAED,wBAAgB,uBAAuB,IAAI,MAAM,GAAG,IAAI,CAEvD"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { createContext, createElement, useContext } from 'react';
|
|
3
|
+
/**
|
|
4
|
+
* The route-scoped project id, injected by the host instead of read from a
|
|
5
|
+
* router. The SDK is router-agnostic: a Next host derives the id from
|
|
6
|
+
* `useParams()` and mounts `KortixProjectProvider` once near its root; native
|
|
7
|
+
* or CLI-driven hosts pass whatever their navigation state says. Hooks that
|
|
8
|
+
* need "the project the user is looking at" (`useOpenCodeProviders`,
|
|
9
|
+
* `useOpenCodeLocal`) read it via `useKortixRouteProjectId`, which yields
|
|
10
|
+
* `null` outside a project scope — the same as a non-project route.
|
|
11
|
+
*/
|
|
12
|
+
const KortixProjectContext = createContext(null);
|
|
13
|
+
export function KortixProjectProvider(props) {
|
|
14
|
+
return createElement(KortixProjectContext.Provider, { value: props.projectId }, props.children);
|
|
15
|
+
}
|
|
16
|
+
export function useKortixRouteProjectId() {
|
|
17
|
+
return useContext(KortixProjectContext);
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=route-project.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"route-project.js","sourceRoot":"","sources":["../../src/react/route-project.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAkB,aAAa,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAEjF;;;;;;;;GAQG;AACH,MAAM,oBAAoB,GAAG,aAAa,CAAgB,IAAI,CAAC,CAAC;AAEhE,MAAM,UAAU,qBAAqB,CAAC,KAGrC;IACC,OAAO,aAAa,CAAC,oBAAoB,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,SAAS,EAAE,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;AAClG,CAAC;AAED,MAAM,UAAU,uBAAuB;IACrC,OAAO,UAAU,CAAC,oBAAoB,CAAC,CAAC;AAC1C,CAAC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hand-off between a host's "new session" screen and the session workbench. The
|
|
3
|
+
* new-session UI collects {prompt, model, agent, variant} but the session
|
|
4
|
+
* runtime doesn't exist yet, so we stash them under the new session id;
|
|
5
|
+
* `useSession` replays them as the first message once the runtime is ready —
|
|
6
|
+
* that's how the chosen model/agent/variant apply to the opening turn. Owned by
|
|
7
|
+
* the SDK so the producer (new-session screen) and consumer (`useSession`)
|
|
8
|
+
* share one contract.
|
|
9
|
+
*/
|
|
10
|
+
import type { PromptPart } from './use-opencode-sessions/keys.js';
|
|
11
|
+
export interface StartStash {
|
|
12
|
+
prompt: string;
|
|
13
|
+
model: {
|
|
14
|
+
providerID: string;
|
|
15
|
+
modelID: string;
|
|
16
|
+
} | null;
|
|
17
|
+
agent: string | null;
|
|
18
|
+
variant?: string | null;
|
|
19
|
+
}
|
|
20
|
+
export declare function startStashKey(sessionId: string): string;
|
|
21
|
+
export declare function writeStartStash(sessionId: string, stash: StartStash): void;
|
|
22
|
+
export declare function readStartStash(sessionId: string): StartStash | null;
|
|
23
|
+
export declare function clearStartStash(sessionId: string): void;
|
|
24
|
+
/**
|
|
25
|
+
* Migrate a stash — canonical or legacy shape — from one session-id namespace
|
|
26
|
+
* to another. Producers sometimes stash under an id that isn't the eventual
|
|
27
|
+
* OpenCode session id (e.g. a project's route id, before the canonical
|
|
28
|
+
* session exists); once a later render resolves the real id, this hands the
|
|
29
|
+
* stash off. Reads the source via {@link readStartStash} (so it understands
|
|
30
|
+
* both the canonical JSON shape and the bare-prompt legacy shape at
|
|
31
|
+
* `fromSessionId`), writes the canonical shape at `toSessionId` — skipping the
|
|
32
|
+
* write if `toSessionId` already has a stash — and always clears the source
|
|
33
|
+
* (both its canonical and legacy keys), whether or not there was anything to
|
|
34
|
+
* migrate.
|
|
35
|
+
*/
|
|
36
|
+
export declare function migrateStash(fromSessionId: string, toSessionId: string): void;
|
|
37
|
+
/**
|
|
38
|
+
* Migrate a differently-keyed legacy hand-off (bare prompt string + optional
|
|
39
|
+
* `{agent,model,variant}` JSON options, each under their own arbitrary key)
|
|
40
|
+
* onto the canonical stash for `toSessionId`. Used by producers that predate
|
|
41
|
+
* this module and stash under arbitrary raw keys rather than a session-id
|
|
42
|
+
* namespace `readStartStash` can resolve on its own — prefer {@link
|
|
43
|
+
* migrateStash} for any producer that already writes under a session id via
|
|
44
|
+
* `writeStartStash`. The source keys are always cleared, whether or not there
|
|
45
|
+
* was anything to migrate.
|
|
46
|
+
*/
|
|
47
|
+
export declare function migrateLegacyStash(fromPromptKey: string, fromOptionsKey: string, toSessionId: string): void;
|
|
48
|
+
export declare function forkDraftKey(sessionId: string): string;
|
|
49
|
+
/** Stash a fork's prompt parts for the forked session to pick up as a draft.
|
|
50
|
+
* No-ops when there's nothing to stash. */
|
|
51
|
+
export declare function writeForkDraft(sessionId: string, prompt: PromptPart[]): void;
|
|
52
|
+
/** Read back a stashed fork draft, if any. Does not clear it — call
|
|
53
|
+
* `clearForkDraft` once consumed. */
|
|
54
|
+
export declare function readForkDraft(sessionId: string): PromptPart[] | null;
|
|
55
|
+
export declare function clearForkDraft(sessionId: string): void;
|
|
56
|
+
//# sourceMappingURL=session-start-stash.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-start-stash.d.ts","sourceRoot":"","sources":["../../src/react/session-start-stash.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAE/D,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACtD,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,IAAI,CAI1E;AAkED,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAQnE;AAED,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAKvD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAAC,aAAa,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAU7E;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAChC,aAAa,EAAE,MAAM,EACrB,cAAc,EAAE,MAAM,EACtB,WAAW,EAAE,MAAM,GAClB,IAAI,CAwBN;AAaD,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED;2CAC2C;AAC3C,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAK5E;AAED;qCACqC;AACrC,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,UAAU,EAAE,GAAG,IAAI,CAQpE;AAED,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAItD"}
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
export function startStashKey(sessionId) {
|
|
2
|
+
return `kortix:start:${sessionId}`;
|
|
3
|
+
}
|
|
4
|
+
export function writeStartStash(sessionId, stash) {
|
|
5
|
+
try {
|
|
6
|
+
sessionStorage.setItem(startStashKey(sessionId), JSON.stringify(stash));
|
|
7
|
+
}
|
|
8
|
+
catch { }
|
|
9
|
+
}
|
|
10
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
11
|
+
// Legacy hand-off shape (pre-dates this module). apps/web had several
|
|
12
|
+
// independent "new session" producers (dashboard, project workspace, legacy
|
|
13
|
+
// composer) that stash a bare prompt string under `opencode_pending_prompt:<id>`
|
|
14
|
+
// plus an optional `{ agent, model, variant }` JSON blob under
|
|
15
|
+
// `opencode_pending_options:<id>` — instead of one JSON stash. Those call sites
|
|
16
|
+
// are unchanged (out of scope for this migration); `readStartStash` /
|
|
17
|
+
// `clearStartStash` understand both shapes so every existing producer keeps
|
|
18
|
+
// working through the one shared contract.
|
|
19
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
20
|
+
function legacyPromptKey(sessionId) {
|
|
21
|
+
return `opencode_pending_prompt:${sessionId}`;
|
|
22
|
+
}
|
|
23
|
+
function legacyOptionsKey(sessionId) {
|
|
24
|
+
return `opencode_pending_options:${sessionId}`;
|
|
25
|
+
}
|
|
26
|
+
function parseLegacyModel(value) {
|
|
27
|
+
if (!value)
|
|
28
|
+
return null;
|
|
29
|
+
if (typeof value === 'object') {
|
|
30
|
+
const obj = value;
|
|
31
|
+
if (typeof obj.providerID === 'string' && typeof obj.modelID === 'string') {
|
|
32
|
+
return { providerID: obj.providerID, modelID: obj.modelID };
|
|
33
|
+
}
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
36
|
+
if (typeof value === 'string') {
|
|
37
|
+
const idx = value.indexOf('/');
|
|
38
|
+
if (idx > 0 && idx < value.length - 1) {
|
|
39
|
+
return { providerID: value.slice(0, idx), modelID: value.slice(idx + 1) };
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
44
|
+
function readLegacyStash(sessionId) {
|
|
45
|
+
try {
|
|
46
|
+
const prompt = sessionStorage.getItem(legacyPromptKey(sessionId));
|
|
47
|
+
if (!prompt)
|
|
48
|
+
return null;
|
|
49
|
+
let agent = null;
|
|
50
|
+
let model = null;
|
|
51
|
+
let variant = null;
|
|
52
|
+
const raw = sessionStorage.getItem(legacyOptionsKey(sessionId));
|
|
53
|
+
if (raw) {
|
|
54
|
+
const parsed = JSON.parse(raw);
|
|
55
|
+
if (parsed?.agent)
|
|
56
|
+
agent = parsed.agent;
|
|
57
|
+
if (parsed?.model)
|
|
58
|
+
model = parseLegacyModel(parsed.model);
|
|
59
|
+
if (parsed?.variant)
|
|
60
|
+
variant = parsed.variant;
|
|
61
|
+
}
|
|
62
|
+
return { prompt, model, agent, variant };
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
function clearLegacyStash(sessionId) {
|
|
69
|
+
try {
|
|
70
|
+
sessionStorage.removeItem(legacyPromptKey(sessionId));
|
|
71
|
+
sessionStorage.removeItem(legacyOptionsKey(sessionId));
|
|
72
|
+
}
|
|
73
|
+
catch { }
|
|
74
|
+
}
|
|
75
|
+
export function readStartStash(sessionId) {
|
|
76
|
+
try {
|
|
77
|
+
const raw = sessionStorage.getItem(startStashKey(sessionId));
|
|
78
|
+
if (raw)
|
|
79
|
+
return JSON.parse(raw);
|
|
80
|
+
}
|
|
81
|
+
catch {
|
|
82
|
+
// fall through to the legacy shape
|
|
83
|
+
}
|
|
84
|
+
return readLegacyStash(sessionId);
|
|
85
|
+
}
|
|
86
|
+
export function clearStartStash(sessionId) {
|
|
87
|
+
try {
|
|
88
|
+
sessionStorage.removeItem(startStashKey(sessionId));
|
|
89
|
+
}
|
|
90
|
+
catch { }
|
|
91
|
+
clearLegacyStash(sessionId);
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Migrate a stash — canonical or legacy shape — from one session-id namespace
|
|
95
|
+
* to another. Producers sometimes stash under an id that isn't the eventual
|
|
96
|
+
* OpenCode session id (e.g. a project's route id, before the canonical
|
|
97
|
+
* session exists); once a later render resolves the real id, this hands the
|
|
98
|
+
* stash off. Reads the source via {@link readStartStash} (so it understands
|
|
99
|
+
* both the canonical JSON shape and the bare-prompt legacy shape at
|
|
100
|
+
* `fromSessionId`), writes the canonical shape at `toSessionId` — skipping the
|
|
101
|
+
* write if `toSessionId` already has a stash — and always clears the source
|
|
102
|
+
* (both its canonical and legacy keys), whether or not there was anything to
|
|
103
|
+
* migrate.
|
|
104
|
+
*/
|
|
105
|
+
export function migrateStash(fromSessionId, toSessionId) {
|
|
106
|
+
if (fromSessionId === toSessionId)
|
|
107
|
+
return;
|
|
108
|
+
try {
|
|
109
|
+
if (!readStartStash(toSessionId)) {
|
|
110
|
+
const stash = readStartStash(fromSessionId);
|
|
111
|
+
if (stash)
|
|
112
|
+
writeStartStash(toSessionId, stash);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
finally {
|
|
116
|
+
clearStartStash(fromSessionId);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Migrate a differently-keyed legacy hand-off (bare prompt string + optional
|
|
121
|
+
* `{agent,model,variant}` JSON options, each under their own arbitrary key)
|
|
122
|
+
* onto the canonical stash for `toSessionId`. Used by producers that predate
|
|
123
|
+
* this module and stash under arbitrary raw keys rather than a session-id
|
|
124
|
+
* namespace `readStartStash` can resolve on its own — prefer {@link
|
|
125
|
+
* migrateStash} for any producer that already writes under a session id via
|
|
126
|
+
* `writeStartStash`. The source keys are always cleared, whether or not there
|
|
127
|
+
* was anything to migrate.
|
|
128
|
+
*/
|
|
129
|
+
export function migrateLegacyStash(fromPromptKey, fromOptionsKey, toSessionId) {
|
|
130
|
+
try {
|
|
131
|
+
const prompt = sessionStorage.getItem(fromPromptKey);
|
|
132
|
+
if (prompt && !readStartStash(toSessionId)) {
|
|
133
|
+
let agent = null;
|
|
134
|
+
let model = null;
|
|
135
|
+
let variant = null;
|
|
136
|
+
const raw = sessionStorage.getItem(fromOptionsKey);
|
|
137
|
+
if (raw) {
|
|
138
|
+
const parsed = JSON.parse(raw);
|
|
139
|
+
if (parsed?.agent)
|
|
140
|
+
agent = parsed.agent;
|
|
141
|
+
if (parsed?.model)
|
|
142
|
+
model = parseLegacyModel(parsed.model);
|
|
143
|
+
if (parsed?.variant)
|
|
144
|
+
variant = parsed.variant;
|
|
145
|
+
}
|
|
146
|
+
writeStartStash(toSessionId, { prompt, model, agent, variant });
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
catch {
|
|
150
|
+
// ignore — worst case the hand-off is dropped, never a crash
|
|
151
|
+
}
|
|
152
|
+
finally {
|
|
153
|
+
try {
|
|
154
|
+
sessionStorage.removeItem(fromPromptKey);
|
|
155
|
+
sessionStorage.removeItem(fromOptionsKey);
|
|
156
|
+
}
|
|
157
|
+
catch { }
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
161
|
+
// Fork-draft stash. A sibling hand-off to the start-stash above, but for the
|
|
162
|
+
// "fork this message" flow: apps/web's session-chat stashes the forked
|
|
163
|
+
// message's parts (text + file refs) under the NEW forked session's id so its
|
|
164
|
+
// composer can pick them up as a pre-filled draft once it mounts. Previously
|
|
165
|
+
// apps/web/session-chat.tsx and session-chat-input.tsx each independently
|
|
166
|
+
// redefined the same `opencode_fork_prompt:<id>` key — unified here so both
|
|
167
|
+
// (and any future host) share one contract. The storage key is unchanged for
|
|
168
|
+
// back-compat with anything already stashed under it.
|
|
169
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
170
|
+
export function forkDraftKey(sessionId) {
|
|
171
|
+
return `opencode_fork_prompt:${sessionId}`;
|
|
172
|
+
}
|
|
173
|
+
/** Stash a fork's prompt parts for the forked session to pick up as a draft.
|
|
174
|
+
* No-ops when there's nothing to stash. */
|
|
175
|
+
export function writeForkDraft(sessionId, prompt) {
|
|
176
|
+
if (prompt.length === 0)
|
|
177
|
+
return;
|
|
178
|
+
try {
|
|
179
|
+
sessionStorage.setItem(forkDraftKey(sessionId), JSON.stringify(prompt));
|
|
180
|
+
}
|
|
181
|
+
catch { }
|
|
182
|
+
}
|
|
183
|
+
/** Read back a stashed fork draft, if any. Does not clear it — call
|
|
184
|
+
* `clearForkDraft` once consumed. */
|
|
185
|
+
export function readForkDraft(sessionId) {
|
|
186
|
+
try {
|
|
187
|
+
const raw = sessionStorage.getItem(forkDraftKey(sessionId));
|
|
188
|
+
if (!raw)
|
|
189
|
+
return null;
|
|
190
|
+
return JSON.parse(raw);
|
|
191
|
+
}
|
|
192
|
+
catch {
|
|
193
|
+
return null;
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
export function clearForkDraft(sessionId) {
|
|
197
|
+
try {
|
|
198
|
+
sessionStorage.removeItem(forkDraftKey(sessionId));
|
|
199
|
+
}
|
|
200
|
+
catch { }
|
|
201
|
+
}
|
|
202
|
+
//# sourceMappingURL=session-start-stash.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-start-stash.js","sourceRoot":"","sources":["../../src/react/session-start-stash.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { type Session } from './use-opencode-sessions/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* OpenCode ↔ Kortix session mapping — READ side.
|
|
4
|
+
*
|
|
5
|
+
* The mapping is now fully SERVER-OWNED: `POST /sessions/:id/start` (see
|
|
6
|
+
* openSession in apps/api) resolves + persists the canonical OpenCode root and
|
|
7
|
+
* returns the pin in its payload. This hook no longer creates/heals the pin from
|
|
8
|
+
* the client (the old client-side `ensure-opencode` mutation caused the
|
|
9
|
+
* "session replaced / data lost" drift). It just surfaces the pin:
|
|
10
|
+
* 1. the value /start handed us this render (`pinFromStart`), else
|
|
11
|
+
* 2. the persisted pin on the Kortix session row (`getProjectSession`).
|
|
12
|
+
*
|
|
13
|
+
* The OpenCode session list is still read (read-only) for ?oc deep-links and
|
|
14
|
+
* sidebar sub-session rendering.
|
|
15
|
+
*/
|
|
16
|
+
/** Back-compat no-op: the pin is server-owned now, so there's no client guard to
|
|
17
|
+
* clear. Kept exported because the session page still calls it on teardown. */
|
|
18
|
+
export declare function clearOpencodeEnsureGuard(): void;
|
|
19
|
+
export interface CanonicalOpenCodeSession {
|
|
20
|
+
/** The authoritative pinned root id (server-managed), or null while resolving. */
|
|
21
|
+
rootSessionId: string | null;
|
|
22
|
+
/** The sandbox's live OpenCode session list (read-only) for ?oc + UI. */
|
|
23
|
+
sessions: Session[];
|
|
24
|
+
isLoading: boolean;
|
|
25
|
+
isError: boolean;
|
|
26
|
+
listed: boolean;
|
|
27
|
+
error: unknown;
|
|
28
|
+
}
|
|
29
|
+
export declare function useCanonicalOpenCodeSession(params: {
|
|
30
|
+
projectId: string;
|
|
31
|
+
sessionId: string;
|
|
32
|
+
/** The pin POST /start resolved server-side this render (preferred source). */
|
|
33
|
+
pinFromStart?: string | null;
|
|
34
|
+
}): CanonicalOpenCodeSession;
|
|
35
|
+
//# sourceMappingURL=use-canonical-opencode-session.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-canonical-opencode-session.d.ts","sourceRoot":"","sources":["../../src/react/use-canonical-opencode-session.ts"],"names":[],"mappings":"AAMA,OAAO,EAAuB,KAAK,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAE5E;;;;;;;;;;;;;GAaG;AAEH;gFACgF;AAChF,wBAAgB,wBAAwB,IAAI,IAAI,CAE/C;AAED,MAAM,WAAW,wBAAwB;IACvC,kFAAkF;IAClF,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,yEAAyE;IACzE,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,wBAAgB,2BAA2B,CAAC,MAAM,EAAE;IAClD,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,+EAA+E;IAC/E,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B,GAAG,wBAAwB,CA6B3B"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { useQuery } from '@tanstack/react-query';
|
|
3
|
+
import { getProjectSession } from '../platform/projects-client/index.js';
|
|
4
|
+
import { useOpenCodeSessions } from './use-opencode-sessions/index.js';
|
|
5
|
+
/**
|
|
6
|
+
* OpenCode ↔ Kortix session mapping — READ side.
|
|
7
|
+
*
|
|
8
|
+
* The mapping is now fully SERVER-OWNED: `POST /sessions/:id/start` (see
|
|
9
|
+
* openSession in apps/api) resolves + persists the canonical OpenCode root and
|
|
10
|
+
* returns the pin in its payload. This hook no longer creates/heals the pin from
|
|
11
|
+
* the client (the old client-side `ensure-opencode` mutation caused the
|
|
12
|
+
* "session replaced / data lost" drift). It just surfaces the pin:
|
|
13
|
+
* 1. the value /start handed us this render (`pinFromStart`), else
|
|
14
|
+
* 2. the persisted pin on the Kortix session row (`getProjectSession`).
|
|
15
|
+
*
|
|
16
|
+
* The OpenCode session list is still read (read-only) for ?oc deep-links and
|
|
17
|
+
* sidebar sub-session rendering.
|
|
18
|
+
*/
|
|
19
|
+
/** Back-compat no-op: the pin is server-owned now, so there's no client guard to
|
|
20
|
+
* clear. Kept exported because the session page still calls it on teardown. */
|
|
21
|
+
export function clearOpencodeEnsureGuard() {
|
|
22
|
+
/* no-op */
|
|
23
|
+
}
|
|
24
|
+
export function useCanonicalOpenCodeSession(params) {
|
|
25
|
+
const { projectId, sessionId, pinFromStart } = params;
|
|
26
|
+
const sessionsQuery = useOpenCodeSessions();
|
|
27
|
+
// The Kortix session row carries the authoritative, server-managed pin — used
|
|
28
|
+
// as a fallback when /start's value isn't in this render's props yet.
|
|
29
|
+
// The /start pin is authoritative on open, so only fall back to the persisted
|
|
30
|
+
// row pin when /start didn't hand us one THIS render — i.e. a deep-link refresh
|
|
31
|
+
// (no /start in flight yet) or the idle-stopped 'starting' window where the box
|
|
32
|
+
// reads active but the pin isn't resolved (pinFromStart null → query still runs).
|
|
33
|
+
// On a warm start pinFromStart is always present, so this saves a redundant
|
|
34
|
+
// round-trip that otherwise contends for connections during boot.
|
|
35
|
+
const projectSessionQuery = useQuery({
|
|
36
|
+
queryKey: ['project-session', projectId, sessionId],
|
|
37
|
+
queryFn: () => getProjectSession(projectId, sessionId, { showErrors: false }),
|
|
38
|
+
enabled: !!projectId && !!sessionId && !pinFromStart,
|
|
39
|
+
staleTime: 10_000,
|
|
40
|
+
});
|
|
41
|
+
const pin = projectSessionQuery.data?.opencode_session_id ?? null;
|
|
42
|
+
const rootSessionId = pinFromStart ?? pin ?? null;
|
|
43
|
+
return {
|
|
44
|
+
rootSessionId,
|
|
45
|
+
sessions: sessionsQuery.data ?? [],
|
|
46
|
+
isLoading: sessionsQuery.isLoading,
|
|
47
|
+
isError: sessionsQuery.isError,
|
|
48
|
+
listed: sessionsQuery.isSuccess,
|
|
49
|
+
error: sessionsQuery.error ?? null,
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=use-canonical-opencode-session.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-canonical-opencode-session.js","sourceRoot":"","sources":["../../src/react/use-canonical-opencode-session.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAEhE,OAAO,EAAE,mBAAmB,EAAgB,MAAM,yBAAyB,CAAC;AAE5E;;;;;;;;;;;;;GAaG;AAEH;gFACgF;AAChF,MAAM,UAAU,wBAAwB;IACtC,WAAW;AACb,CAAC;AAaD,MAAM,UAAU,2BAA2B,CAAC,MAK3C;IACC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,GAAG,MAAM,CAAC;IACtD,MAAM,aAAa,GAAG,mBAAmB,EAAE,CAAC;IAE5C,8EAA8E;IAC9E,sEAAsE;IACtE,8EAA8E;IAC9E,gFAAgF;IAChF,gFAAgF;IAChF,kFAAkF;IAClF,4EAA4E;IAC5E,kEAAkE;IAClE,MAAM,mBAAmB,GAAG,QAAQ,CAAC;QACnC,QAAQ,EAAE,CAAC,iBAAiB,EAAE,SAAS,EAAE,SAAS,CAAC;QACnD,OAAO,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,SAAS,EAAE,SAAS,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;QAC7E,OAAO,EAAE,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,SAAS,IAAI,CAAC,YAAY;QACpD,SAAS,EAAE,MAAM;KAClB,CAAC,CAAC;IACH,MAAM,GAAG,GAAG,mBAAmB,CAAC,IAAI,EAAE,mBAAmB,IAAI,IAAI,CAAC;IAClE,MAAM,aAAa,GAAG,YAAY,IAAI,GAAG,IAAI,IAAI,CAAC;IAElD,OAAO;QACL,aAAa;QACb,QAAQ,EAAE,aAAa,CAAC,IAAI,IAAI,EAAE;QAClC,SAAS,EAAE,aAAa,CAAC,SAAS;QAClC,OAAO,EAAE,aAAa,CAAC,OAAO;QAC9B,MAAM,EAAE,aAAa,CAAC,SAAS;QAC/B,KAAK,EAAE,aAAa,CAAC,KAAK,IAAI,IAAI;KACnC,CAAC;AACJ,CAAC"}
|