@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,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Platform API client — sandbox lifecycle (providers, ensure/get/create/list,
|
|
3
|
+
* discovery, restart/stop, cancel/reactivate).
|
|
4
|
+
*/
|
|
5
|
+
import type { SandboxInfo, SandboxProviderName, ServerTypeOption, ProvidersInfo } from './types.js';
|
|
6
|
+
/**
|
|
7
|
+
* Get available sandbox providers from the platform service.
|
|
8
|
+
*/
|
|
9
|
+
export declare function getProviders(): Promise<ProvidersInfo>;
|
|
10
|
+
/**
|
|
11
|
+
* Ensure a sandbox is running. Idempotent:
|
|
12
|
+
* - Running → return it
|
|
13
|
+
* - Stopped → start it
|
|
14
|
+
* - Missing → create it
|
|
15
|
+
*/
|
|
16
|
+
export declare function ensureSandbox(opts?: {
|
|
17
|
+
provider?: SandboxProviderName;
|
|
18
|
+
serverType?: ServerTypeOption;
|
|
19
|
+
}): Promise<{
|
|
20
|
+
sandbox: SandboxInfo;
|
|
21
|
+
created: boolean;
|
|
22
|
+
}>;
|
|
23
|
+
/**
|
|
24
|
+
* Get the user's sandbox.
|
|
25
|
+
* Returns null if no sandbox exists (call ensureSandbox first).
|
|
26
|
+
*/
|
|
27
|
+
export declare function getSandbox(): Promise<SandboxInfo | null>;
|
|
28
|
+
/**
|
|
29
|
+
* Create a brand new remote sandbox. For local Docker this adopts an already
|
|
30
|
+
* running manual sandbox; it never starts, pulls, or creates a container.
|
|
31
|
+
*
|
|
32
|
+
* Use this when the user explicitly clicks a provider in the Instance Manager.
|
|
33
|
+
* For idempotent "make sure I have a sandbox" logic, use ensureSandbox() instead.
|
|
34
|
+
*/
|
|
35
|
+
export declare function createSandbox(opts?: {
|
|
36
|
+
provider?: SandboxProviderName;
|
|
37
|
+
serverType?: ServerTypeOption;
|
|
38
|
+
name?: string;
|
|
39
|
+
}): Promise<{
|
|
40
|
+
sandbox: SandboxInfo;
|
|
41
|
+
}>;
|
|
42
|
+
/**
|
|
43
|
+
* Get a single sandbox by ID from the list.
|
|
44
|
+
* Avoids fetching the full list when only one sandbox is needed.
|
|
45
|
+
*/
|
|
46
|
+
export declare function getSandboxById(sandboxId: unknown): Promise<SandboxInfo | null>;
|
|
47
|
+
export declare function renameSandbox(sandboxId: string, _name: string): Promise<SandboxInfo>;
|
|
48
|
+
/**
|
|
49
|
+
* List all sandboxes for the user's account.
|
|
50
|
+
*/
|
|
51
|
+
export declare function listSandboxes(sandboxId?: unknown): Promise<SandboxInfo[]>;
|
|
52
|
+
export declare function discoverLocalSandbox(): Promise<SandboxInfo | null>;
|
|
53
|
+
/**
|
|
54
|
+
* Restart a sandbox workload. For JustAVPS this repairs the managed workload
|
|
55
|
+
* container/service and only starts the host if it is currently stopped.
|
|
56
|
+
*/
|
|
57
|
+
export declare function restartSandbox(sandboxId?: string): Promise<void>;
|
|
58
|
+
/**
|
|
59
|
+
* Stop a sandbox in place — pauses the running sandbox (disk kept, resumable
|
|
60
|
+
* via restart/start) without deleting the session. Pass `sandboxId` to target
|
|
61
|
+
* a specific instance; omit to stop the user's active sandbox.
|
|
62
|
+
*
|
|
63
|
+
* Previously this called deleteProjectSession, which destroys the session
|
|
64
|
+
* instead of pausing it — fixed to use the dedicated stop endpoint.
|
|
65
|
+
*/
|
|
66
|
+
export declare function stopSandbox(sandboxId?: string): Promise<void>;
|
|
67
|
+
/**
|
|
68
|
+
* Schedule a sandbox for cancellation at end of billing period.
|
|
69
|
+
* The instance keeps running until then; reactivate to reverse.
|
|
70
|
+
*/
|
|
71
|
+
export declare function cancelSandbox(sandboxId?: string): Promise<{
|
|
72
|
+
cancel_at: string | null;
|
|
73
|
+
}>;
|
|
74
|
+
/**
|
|
75
|
+
* Reverse a scheduled cancellation — subscription continues as normal.
|
|
76
|
+
*/
|
|
77
|
+
export declare function reactivateSandbox(sandboxId?: string): Promise<void>;
|
|
78
|
+
//# sourceMappingURL=lifecycle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../../src/platform/platform-client/lifecycle.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAUH,OAAO,KAAK,EACV,WAAW,EACX,mBAAmB,EACnB,gBAAgB,EAChB,aAAa,EACd,MAAM,SAAS,CAAC;AAYjB;;GAEG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,aAAa,CAAC,CAE3D;AAED;;;;;GAKG;AACH,wBAAsB,aAAa,CAAC,IAAI,CAAC,EAAE;IACzC,QAAQ,CAAC,EAAE,mBAAmB,CAAC;IAC/B,UAAU,CAAC,EAAE,gBAAgB,CAAC;CAC/B,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,WAAW,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CAetD;AAED;;;GAGG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAG9D;AAED;;;;;;GAMG;AACH,wBAAsB,aAAa,CAAC,IAAI,CAAC,EAAE;IACzC,QAAQ,CAAC,EAAE,mBAAmB,CAAC;IAC/B,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,WAAW,CAAA;CAAE,CAAC,CAGpC;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAAC,SAAS,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAMpF;AAED,wBAAsB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAI1F;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,SAAS,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAW/E;AAED,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CA+BxE;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAOtE;AAED;;;;;;;GAOG;AACH,wBAAsB,WAAW,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAKnE;AAED;;;GAGG;AACH,wBAAsB,aAAa,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC,CAE7F;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEzE"}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Platform API client — sandbox lifecycle (providers, ensure/get/create/list,
|
|
3
|
+
* discovery, restart/stop, cancel/reactivate).
|
|
4
|
+
*/
|
|
5
|
+
import { createProjectSession, startProjectSession, listProjects, restartProjectSession, stopProjectSession, } from '../projects-client/index.js';
|
|
6
|
+
import { findProjectSessionSandbox, listProjectSessionSandboxes, projectSessionToSandboxInfo, normalizeSandboxId, getPlatformUrl, getLocalBridgeStatusUrl, LOCAL_PLATFORM_CANDIDATES, } from './shared.js';
|
|
7
|
+
/**
|
|
8
|
+
* Get available sandbox providers from the platform service.
|
|
9
|
+
*/
|
|
10
|
+
export async function getProviders() {
|
|
11
|
+
return { providers: ['managed'], default: 'managed' };
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Ensure a sandbox is running. Idempotent:
|
|
15
|
+
* - Running → return it
|
|
16
|
+
* - Stopped → start it
|
|
17
|
+
* - Missing → create it
|
|
18
|
+
*/
|
|
19
|
+
export async function ensureSandbox(opts) {
|
|
20
|
+
const existing = await findProjectSessionSandbox();
|
|
21
|
+
if (existing)
|
|
22
|
+
return { sandbox: existing.sandbox, created: false };
|
|
23
|
+
const projects = await listProjects();
|
|
24
|
+
const project = projects[0];
|
|
25
|
+
if (!project) {
|
|
26
|
+
throw new Error('Create a project before starting a sandbox');
|
|
27
|
+
}
|
|
28
|
+
const session = await createProjectSession(project.project_id, {
|
|
29
|
+
...(opts?.provider ? { agent_name: opts.provider } : {}),
|
|
30
|
+
});
|
|
31
|
+
const runtime = (await startProjectSession(project.project_id, session.session_id))?.sandbox ?? null;
|
|
32
|
+
return { sandbox: projectSessionToSandboxInfo(project, session, runtime), created: true };
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Get the user's sandbox.
|
|
36
|
+
* Returns null if no sandbox exists (call ensureSandbox first).
|
|
37
|
+
*/
|
|
38
|
+
export async function getSandbox() {
|
|
39
|
+
const row = await findProjectSessionSandbox().catch(() => null);
|
|
40
|
+
return row?.sandbox ?? null;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Create a brand new remote sandbox. For local Docker this adopts an already
|
|
44
|
+
* running manual sandbox; it never starts, pulls, or creates a container.
|
|
45
|
+
*
|
|
46
|
+
* Use this when the user explicitly clicks a provider in the Instance Manager.
|
|
47
|
+
* For idempotent "make sure I have a sandbox" logic, use ensureSandbox() instead.
|
|
48
|
+
*/
|
|
49
|
+
export async function createSandbox(opts) {
|
|
50
|
+
const result = await ensureSandbox(opts);
|
|
51
|
+
return { sandbox: result.sandbox };
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Get a single sandbox by ID from the list.
|
|
55
|
+
* Avoids fetching the full list when only one sandbox is needed.
|
|
56
|
+
*/
|
|
57
|
+
export async function getSandboxById(sandboxId) {
|
|
58
|
+
const normalizedSandboxId = normalizeSandboxId(sandboxId);
|
|
59
|
+
if (!normalizedSandboxId)
|
|
60
|
+
return null;
|
|
61
|
+
const row = await findProjectSessionSandbox(normalizedSandboxId).catch(() => null);
|
|
62
|
+
return row?.sandbox ?? null;
|
|
63
|
+
}
|
|
64
|
+
export async function renameSandbox(sandboxId, _name) {
|
|
65
|
+
const row = await findProjectSessionSandbox(sandboxId);
|
|
66
|
+
if (!row)
|
|
67
|
+
throw new Error('Project session sandbox not found');
|
|
68
|
+
throw new Error('Renaming project-session sandboxes is not exposed by the current API');
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* List all sandboxes for the user's account.
|
|
72
|
+
*/
|
|
73
|
+
export async function listSandboxes(sandboxId) {
|
|
74
|
+
const normalizedSandboxId = normalizeSandboxId(sandboxId);
|
|
75
|
+
const rows = await listProjectSessionSandboxes().catch(() => []);
|
|
76
|
+
return rows
|
|
77
|
+
.map((row) => row.sandbox)
|
|
78
|
+
.filter((sandbox) => !normalizedSandboxId ||
|
|
79
|
+
sandbox.sandbox_id === normalizedSandboxId ||
|
|
80
|
+
sandbox.external_id === normalizedSandboxId);
|
|
81
|
+
}
|
|
82
|
+
export async function discoverLocalSandbox() {
|
|
83
|
+
if (typeof window === 'undefined')
|
|
84
|
+
return null;
|
|
85
|
+
const currentPlatformUrl = getPlatformUrl();
|
|
86
|
+
const candidateBases = Array.from(new Set([currentPlatformUrl, ...LOCAL_PLATFORM_CANDIDATES]));
|
|
87
|
+
for (const baseUrl of candidateBases) {
|
|
88
|
+
try {
|
|
89
|
+
const response = await fetch(getLocalBridgeStatusUrl(baseUrl), {
|
|
90
|
+
method: 'GET',
|
|
91
|
+
signal: AbortSignal.timeout(1500),
|
|
92
|
+
headers: { Accept: 'application/json' },
|
|
93
|
+
});
|
|
94
|
+
if (!response.ok) {
|
|
95
|
+
continue;
|
|
96
|
+
}
|
|
97
|
+
const bridgeStatus = await response.json();
|
|
98
|
+
if (!bridgeStatus.success || bridgeStatus.status !== 'ready' || !bridgeStatus.data?.sandbox_id) {
|
|
99
|
+
continue;
|
|
100
|
+
}
|
|
101
|
+
return bridgeStatus.data;
|
|
102
|
+
}
|
|
103
|
+
catch {
|
|
104
|
+
continue;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
return null;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Restart a sandbox workload. For JustAVPS this repairs the managed workload
|
|
111
|
+
* container/service and only starts the host if it is currently stopped.
|
|
112
|
+
*/
|
|
113
|
+
export async function restartSandbox(sandboxId) {
|
|
114
|
+
if (!sandboxId) {
|
|
115
|
+
throw new Error('No sandbox selected for workload restart');
|
|
116
|
+
}
|
|
117
|
+
const row = await findProjectSessionSandbox(sandboxId);
|
|
118
|
+
if (!row)
|
|
119
|
+
throw new Error('Project session sandbox not found');
|
|
120
|
+
await restartProjectSession(row.project.project_id, row.session.session_id);
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Stop a sandbox in place — pauses the running sandbox (disk kept, resumable
|
|
124
|
+
* via restart/start) without deleting the session. Pass `sandboxId` to target
|
|
125
|
+
* a specific instance; omit to stop the user's active sandbox.
|
|
126
|
+
*
|
|
127
|
+
* Previously this called deleteProjectSession, which destroys the session
|
|
128
|
+
* instead of pausing it — fixed to use the dedicated stop endpoint.
|
|
129
|
+
*/
|
|
130
|
+
export async function stopSandbox(sandboxId) {
|
|
131
|
+
if (!sandboxId)
|
|
132
|
+
throw new Error('No sandbox selected to stop');
|
|
133
|
+
const row = await findProjectSessionSandbox(sandboxId);
|
|
134
|
+
if (!row)
|
|
135
|
+
throw new Error('Project session sandbox not found');
|
|
136
|
+
await stopProjectSession(row.project.project_id, row.session.session_id);
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Schedule a sandbox for cancellation at end of billing period.
|
|
140
|
+
* The instance keeps running until then; reactivate to reverse.
|
|
141
|
+
*/
|
|
142
|
+
export async function cancelSandbox(sandboxId) {
|
|
143
|
+
throw new Error('Cancellation is not exposed for project-session sandboxes');
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Reverse a scheduled cancellation — subscription continues as normal.
|
|
147
|
+
*/
|
|
148
|
+
export async function reactivateSandbox(sandboxId) {
|
|
149
|
+
throw new Error('Reactivation is not exposed for project-session sandboxes');
|
|
150
|
+
}
|
|
151
|
+
//# sourceMappingURL=lifecycle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../../src/platform/platform-client/lifecycle.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Platform API client — sandbox members, scopes, and legacy project ACL access.
|
|
3
|
+
*/
|
|
4
|
+
import type { SandboxInfo } from './types.js';
|
|
5
|
+
export type SandboxMemberRole = 'owner' | 'admin' | 'member';
|
|
6
|
+
export interface SandboxMember {
|
|
7
|
+
user_id: string;
|
|
8
|
+
email: string | null;
|
|
9
|
+
role: SandboxMemberRole | null;
|
|
10
|
+
added_by: string | null;
|
|
11
|
+
added_at: string;
|
|
12
|
+
monthly_spend_cap_cents?: number | null;
|
|
13
|
+
current_period_cents?: number;
|
|
14
|
+
}
|
|
15
|
+
export interface SandboxPendingInvite {
|
|
16
|
+
invite_id: string;
|
|
17
|
+
email: string;
|
|
18
|
+
role: 'admin' | 'member';
|
|
19
|
+
invited_by: string | null;
|
|
20
|
+
created_at: string;
|
|
21
|
+
expires_at: string;
|
|
22
|
+
}
|
|
23
|
+
export interface SandboxMembersResponse {
|
|
24
|
+
sandbox_id: string;
|
|
25
|
+
can_manage: boolean;
|
|
26
|
+
viewer_user_id: string;
|
|
27
|
+
members: SandboxMember[];
|
|
28
|
+
pending_invites: SandboxPendingInvite[];
|
|
29
|
+
}
|
|
30
|
+
export interface AddSandboxMemberResult {
|
|
31
|
+
status: 'added' | 'invited';
|
|
32
|
+
user_id?: string;
|
|
33
|
+
email?: string;
|
|
34
|
+
role?: 'admin' | 'member';
|
|
35
|
+
}
|
|
36
|
+
export declare function listSandboxMembers(sandboxId: string): Promise<SandboxMembersResponse>;
|
|
37
|
+
export declare function addSandboxMember(sandboxId: string, email: string, role?: 'admin' | 'member'): Promise<AddSandboxMemberResult>;
|
|
38
|
+
export declare function removeSandboxMember(sandboxId: string, userId: string): Promise<void>;
|
|
39
|
+
export declare function updateSandboxMemberRole(sandboxId: string, userId: string, role: SandboxMemberRole): Promise<void>;
|
|
40
|
+
export declare function updateSandboxMemberSpendCap(sandboxId: string, userId: string, capCents: number | null): Promise<void>;
|
|
41
|
+
export type ScopeEffect = 'grant' | 'revoke' | null;
|
|
42
|
+
export interface SandboxScopeCatalogEntry {
|
|
43
|
+
scope: string;
|
|
44
|
+
label: string;
|
|
45
|
+
description: string;
|
|
46
|
+
group: string;
|
|
47
|
+
}
|
|
48
|
+
export interface SandboxMemberScopes {
|
|
49
|
+
sandbox_id: string;
|
|
50
|
+
user_id: string;
|
|
51
|
+
role: 'owner' | 'admin' | 'member' | null;
|
|
52
|
+
inherited: string[];
|
|
53
|
+
grants: string[];
|
|
54
|
+
revokes: string[];
|
|
55
|
+
effective: string[];
|
|
56
|
+
catalog: SandboxScopeCatalogEntry[];
|
|
57
|
+
groups: Record<string, string[]>;
|
|
58
|
+
}
|
|
59
|
+
export interface SandboxViewerScopes {
|
|
60
|
+
sandbox_id: string;
|
|
61
|
+
role: 'owner' | 'admin' | 'member' | null;
|
|
62
|
+
scopes: string[];
|
|
63
|
+
}
|
|
64
|
+
export declare function getViewerSandboxScopes(sandboxId: string): Promise<SandboxViewerScopes>;
|
|
65
|
+
export declare function getSandboxMemberScopes(sandboxId: string, userId: string): Promise<SandboxMemberScopes>;
|
|
66
|
+
export declare function updateSandboxMemberScope(sandboxId: string, userId: string, scope: string, effect: ScopeEffect): Promise<void>;
|
|
67
|
+
export interface SandboxProjectMember {
|
|
68
|
+
user_id: string;
|
|
69
|
+
role: 'owner' | 'admin' | 'member';
|
|
70
|
+
added_by: string | null;
|
|
71
|
+
added_at: string;
|
|
72
|
+
}
|
|
73
|
+
export interface SandboxProjectMembersResponse {
|
|
74
|
+
project_id: string;
|
|
75
|
+
members: SandboxProjectMember[];
|
|
76
|
+
}
|
|
77
|
+
export declare function listSandboxProjectMembers(sandbox: SandboxInfo, projectId: string): Promise<SandboxProjectMembersResponse>;
|
|
78
|
+
export declare function grantSandboxProjectAccess(sandbox: SandboxInfo, projectId: string, userId: string, role?: 'admin' | 'member'): Promise<void>;
|
|
79
|
+
export declare function revokeSandboxProjectAccess(sandbox: SandboxInfo, projectId: string, userId: string): Promise<void>;
|
|
80
|
+
export declare function revokeSandboxInvite(sandboxId: string, inviteId: string): Promise<void>;
|
|
81
|
+
//# sourceMappingURL=members.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"members.d.ts","sourceRoot":"","sources":["../../../src/platform/platform-client/members.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Platform API client — sandbox members, scopes, and legacy project ACL access.
|
|
3
|
+
*/
|
|
4
|
+
import { authenticatedFetch } from '../auth.js';
|
|
5
|
+
import { stripTrailingSlashes } from '../strings.js';
|
|
6
|
+
import { getSandboxUrl } from './urls.js';
|
|
7
|
+
export async function listSandboxMembers(sandboxId) {
|
|
8
|
+
throw new Error('Sandbox members moved to project access; use project members for project-session sandboxes');
|
|
9
|
+
}
|
|
10
|
+
export async function addSandboxMember(sandboxId, email, role = 'member') {
|
|
11
|
+
throw new Error('Sandbox members moved to project access; invite the user to the project instead');
|
|
12
|
+
}
|
|
13
|
+
export async function removeSandboxMember(sandboxId, userId) {
|
|
14
|
+
throw new Error('Sandbox members moved to project access; update project access instead');
|
|
15
|
+
}
|
|
16
|
+
export async function updateSandboxMemberRole(sandboxId, userId, role) {
|
|
17
|
+
throw new Error('Sandbox members moved to project access; update project access instead');
|
|
18
|
+
}
|
|
19
|
+
export async function updateSandboxMemberSpendCap(sandboxId, userId, capCents) {
|
|
20
|
+
throw new Error('Sandbox member spend caps are not exposed for project-session sandboxes');
|
|
21
|
+
}
|
|
22
|
+
export async function getViewerSandboxScopes(sandboxId) {
|
|
23
|
+
throw new Error('Sandbox scopes moved to project access for project-session sandboxes');
|
|
24
|
+
}
|
|
25
|
+
export async function getSandboxMemberScopes(sandboxId, userId) {
|
|
26
|
+
throw new Error('Sandbox scopes moved to project access for project-session sandboxes');
|
|
27
|
+
}
|
|
28
|
+
export async function updateSandboxMemberScope(sandboxId, userId, scope, effect) {
|
|
29
|
+
throw new Error('Sandbox scopes moved to project access for project-session sandboxes');
|
|
30
|
+
}
|
|
31
|
+
async function fetchKortixMaster(sandbox, path, init) {
|
|
32
|
+
const base = getSandboxUrl(sandbox);
|
|
33
|
+
const res = await authenticatedFetch(`${stripTrailingSlashes(base)}${path}`, {
|
|
34
|
+
signal: AbortSignal.timeout(8_000),
|
|
35
|
+
headers: { 'Content-Type': 'application/json' },
|
|
36
|
+
...init,
|
|
37
|
+
});
|
|
38
|
+
if (!res.ok) {
|
|
39
|
+
const body = await res.text().catch(() => '');
|
|
40
|
+
throw new Error(body || `Request failed (${res.status})`);
|
|
41
|
+
}
|
|
42
|
+
return (await res.json());
|
|
43
|
+
}
|
|
44
|
+
export async function listSandboxProjectMembers(sandbox, projectId) {
|
|
45
|
+
return fetchKortixMaster(sandbox, `/kortix/projects/${encodeURIComponent(projectId)}/members`, { method: 'GET' });
|
|
46
|
+
}
|
|
47
|
+
export async function grantSandboxProjectAccess(sandbox, projectId, userId, role = 'member') {
|
|
48
|
+
await fetchKortixMaster(sandbox, `/kortix/projects/${encodeURIComponent(projectId)}/members`, {
|
|
49
|
+
method: 'POST',
|
|
50
|
+
body: JSON.stringify({ user_id: userId, role }),
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
export async function revokeSandboxProjectAccess(sandbox, projectId, userId) {
|
|
54
|
+
await fetchKortixMaster(sandbox, `/kortix/projects/${encodeURIComponent(projectId)}/members/${encodeURIComponent(userId)}`, { method: 'DELETE' });
|
|
55
|
+
}
|
|
56
|
+
export async function revokeSandboxInvite(sandboxId, inviteId) {
|
|
57
|
+
throw new Error('Sandbox invites moved to project access for project-session sandboxes');
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=members.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"members.js","sourceRoot":"","sources":["../../../src/platform/platform-client/members.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Platform API client — shared, non-exported helpers.
|
|
3
|
+
*
|
|
4
|
+
* These are internal to the platform-client module group. They are exported so
|
|
5
|
+
* sibling modules can use them, but they are intentionally NOT re-exported from
|
|
6
|
+
* the barrel index.ts, so the public surface stays unchanged.
|
|
7
|
+
*/
|
|
8
|
+
import { type KortixProject, type ProjectSession, type ProjectSessionSandbox } from '../projects-client/index.js';
|
|
9
|
+
import { type SandboxInfo } from './types.js';
|
|
10
|
+
/**
|
|
11
|
+
* Get the base URL for platform API calls.
|
|
12
|
+
*
|
|
13
|
+
* Uses NEXT_PUBLIC_BACKEND_URL directly (includes /v1).
|
|
14
|
+
*/
|
|
15
|
+
export declare function getPlatformUrl(): string;
|
|
16
|
+
export declare function normalizeSandboxId(value: unknown): string | undefined;
|
|
17
|
+
export interface PlatformResponse<T> {
|
|
18
|
+
success: boolean;
|
|
19
|
+
data?: T;
|
|
20
|
+
error?: string;
|
|
21
|
+
created?: boolean;
|
|
22
|
+
}
|
|
23
|
+
export interface LocalBridgeSandboxResponse {
|
|
24
|
+
success: boolean;
|
|
25
|
+
status?: string;
|
|
26
|
+
data?: SandboxInfo | null;
|
|
27
|
+
}
|
|
28
|
+
export declare const LOCAL_PLATFORM_CANDIDATES: string[];
|
|
29
|
+
export declare function getLocalBridgeStatusUrl(baseUrl: string): string;
|
|
30
|
+
export declare function projectSessionToSandboxInfo(project: KortixProject, session: ProjectSession, runtime?: ProjectSessionSandbox | null): SandboxInfo;
|
|
31
|
+
export declare function listProjectSessionSandboxes(): Promise<Array<{
|
|
32
|
+
project: KortixProject;
|
|
33
|
+
session: ProjectSession;
|
|
34
|
+
runtime: ProjectSessionSandbox | null;
|
|
35
|
+
sandbox: SandboxInfo;
|
|
36
|
+
}>>;
|
|
37
|
+
export declare function findProjectSessionSandbox(sandboxId?: string): Promise<{
|
|
38
|
+
project: KortixProject;
|
|
39
|
+
session: ProjectSession;
|
|
40
|
+
runtime: ProjectSessionSandbox | null;
|
|
41
|
+
sandbox: SandboxInfo;
|
|
42
|
+
} | null>;
|
|
43
|
+
export declare function platformFetch<T>(path: string, options?: RequestInit): Promise<PlatformResponse<T>>;
|
|
44
|
+
//# sourceMappingURL=shared.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/platform/platform-client/shared.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,EAGL,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,qBAAqB,EAC3B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAiB,KAAK,WAAW,EAA4B,MAAM,SAAS,CAAC;AAEpF;;;;GAIG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAUvC;AAQD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAiBrE;AAED,MAAM,WAAW,gBAAgB,CAAC,CAAC;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;CAC3B;AAED,eAAO,MAAM,yBAAyB,UAGrC,CAAC;AAEF,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAM/D;AAUD,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,aAAa,EACtB,OAAO,EAAE,cAAc,EACvB,OAAO,CAAC,EAAE,qBAAqB,GAAG,IAAI,GACrC,WAAW,CAoBb;AAED,wBAAsB,2BAA2B,IAAI,OAAO,CAAC,KAAK,CAAC;IACjE,OAAO,EAAE,aAAa,CAAC;IACvB,OAAO,EAAE,cAAc,CAAC;IACxB,OAAO,EAAE,qBAAqB,GAAG,IAAI,CAAC;IACtC,OAAO,EAAE,WAAW,CAAC;CACtB,CAAC,CAAC,CA+BF;AAED,wBAAsB,yBAAyB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC3E,OAAO,EAAE,aAAa,CAAC;IACvB,OAAO,EAAE,cAAc,CAAC;IACxB,OAAO,EAAE,qBAAqB,GAAG,IAAI,CAAC;IACtC,OAAO,EAAE,WAAW,CAAC;CACtB,GAAG,IAAI,CAAC,CASR;AAID,wBAAsB,aAAa,CAAC,CAAC,EACnC,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAiD9B"}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Platform API client — shared, non-exported helpers.
|
|
3
|
+
*
|
|
4
|
+
* These are internal to the platform-client module group. They are exported so
|
|
5
|
+
* sibling modules can use them, but they are intentionally NOT re-exported from
|
|
6
|
+
* the barrel index.ts, so the public surface stays unchanged.
|
|
7
|
+
*/
|
|
8
|
+
import { authenticatedFetch } from '../auth.js';
|
|
9
|
+
import { platformConfig } from '../config.js';
|
|
10
|
+
import { ApiError, parseBillingError } from '../api/errors.js';
|
|
11
|
+
import { listProjectSessions, listProjects, } from '../projects-client/index.js';
|
|
12
|
+
import { SANDBOX_PORTS } from './types.js';
|
|
13
|
+
/**
|
|
14
|
+
* Get the base URL for platform API calls.
|
|
15
|
+
*
|
|
16
|
+
* Uses NEXT_PUBLIC_BACKEND_URL directly (includes /v1).
|
|
17
|
+
*/
|
|
18
|
+
export function getPlatformUrl() {
|
|
19
|
+
// Server-side: prefer BACKEND_URL (internal Docker hostname) over
|
|
20
|
+
// NEXT_PUBLIC_BACKEND_URL (browser-facing localhost, unreachable from container)
|
|
21
|
+
const backendUrl = process.env.BACKEND_URL || platformConfig().backendUrl;
|
|
22
|
+
if (backendUrl) {
|
|
23
|
+
return backendUrl;
|
|
24
|
+
}
|
|
25
|
+
// Fallback for local dev
|
|
26
|
+
return 'http://localhost:8008/v1';
|
|
27
|
+
}
|
|
28
|
+
const UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
29
|
+
function isDbSandboxId(sandboxId) {
|
|
30
|
+
return !!sandboxId && UUID_RE.test(sandboxId);
|
|
31
|
+
}
|
|
32
|
+
export function normalizeSandboxId(value) {
|
|
33
|
+
if (typeof value === 'string') {
|
|
34
|
+
const trimmed = value.trim();
|
|
35
|
+
return trimmed.length > 0 ? trimmed : undefined;
|
|
36
|
+
}
|
|
37
|
+
if (Array.isArray(value)) {
|
|
38
|
+
for (const item of value) {
|
|
39
|
+
const normalized = normalizeSandboxId(item);
|
|
40
|
+
if (normalized)
|
|
41
|
+
return normalized;
|
|
42
|
+
}
|
|
43
|
+
return undefined;
|
|
44
|
+
}
|
|
45
|
+
if (value && typeof value === 'object') {
|
|
46
|
+
const record = value;
|
|
47
|
+
return normalizeSandboxId(record.sandboxId ?? record.id ?? record.slug ?? Object.values(record)[0]);
|
|
48
|
+
}
|
|
49
|
+
return undefined;
|
|
50
|
+
}
|
|
51
|
+
export const LOCAL_PLATFORM_CANDIDATES = [
|
|
52
|
+
'http://localhost:8008/v1',
|
|
53
|
+
'http://127.0.0.1:8008/v1',
|
|
54
|
+
];
|
|
55
|
+
export function getLocalBridgeStatusUrl(baseUrl) {
|
|
56
|
+
// Linear trailing-slash strip — the regex form (/\/+$/) backtracks
|
|
57
|
+
// quadratically on adversarial input (CodeQL js/polynomial-redos).
|
|
58
|
+
let end = baseUrl.length;
|
|
59
|
+
while (end > 0 && baseUrl.charCodeAt(end - 1) === 47 /* '/' */)
|
|
60
|
+
end--;
|
|
61
|
+
return `${baseUrl.slice(0, end)}/platform/local-bridge/status`;
|
|
62
|
+
}
|
|
63
|
+
function normalizeSessionStatus(status) {
|
|
64
|
+
if (status === 'running' || status === 'active')
|
|
65
|
+
return 'active';
|
|
66
|
+
if (status === 'queued' || status === 'branching' || status === 'provisioning')
|
|
67
|
+
return 'provisioning';
|
|
68
|
+
if (status === 'failed' || status === 'error')
|
|
69
|
+
return 'error';
|
|
70
|
+
if (status === 'stopped' || status === 'completed' || status === 'archived')
|
|
71
|
+
return 'stopped';
|
|
72
|
+
return status || 'unknown';
|
|
73
|
+
}
|
|
74
|
+
export function projectSessionToSandboxInfo(project, session, runtime) {
|
|
75
|
+
const externalId = runtime?.external_id || session.sandbox_url?.match(/\/p\/([^/]+)\//)?.[1] || session.sandbox_id;
|
|
76
|
+
return {
|
|
77
|
+
sandbox_id: runtime?.sandbox_id || session.sandbox_id || session.session_id,
|
|
78
|
+
external_id: externalId,
|
|
79
|
+
name: session.name || `${project.name} session`,
|
|
80
|
+
provider: runtime?.provider || session.sandbox_provider || 'managed',
|
|
81
|
+
base_url: runtime?.base_url || session.sandbox_url || (runtime?.external_id ? `${getPlatformUrl()}/p/${runtime.external_id}/${SANDBOX_PORTS.KORTIX_MASTER}` : ''),
|
|
82
|
+
status: normalizeSessionStatus(runtime?.status || session.status),
|
|
83
|
+
metadata: {
|
|
84
|
+
...(session.metadata ?? {}),
|
|
85
|
+
project_id: project.project_id,
|
|
86
|
+
session_id: session.session_id,
|
|
87
|
+
project_name: project.name,
|
|
88
|
+
runtime_status: runtime?.status,
|
|
89
|
+
error: session.error,
|
|
90
|
+
},
|
|
91
|
+
created_at: runtime?.created_at || session.created_at,
|
|
92
|
+
updated_at: runtime?.updated_at || session.updated_at,
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
export async function listProjectSessionSandboxes() {
|
|
96
|
+
const projects = await listProjects();
|
|
97
|
+
const rows = [];
|
|
98
|
+
for (const project of projects) {
|
|
99
|
+
const sessions = await listProjectSessions(project.project_id).catch(() => []);
|
|
100
|
+
for (const session of sessions) {
|
|
101
|
+
// Derive runtime info from the session row — do NOT call /start here, or
|
|
102
|
+
// listing would wake every sandbox across every project. The single-session
|
|
103
|
+
// open/create paths below use /start; a passive list must not.
|
|
104
|
+
const runtime = null;
|
|
105
|
+
rows.push({
|
|
106
|
+
project,
|
|
107
|
+
session,
|
|
108
|
+
runtime,
|
|
109
|
+
sandbox: projectSessionToSandboxInfo(project, session, runtime),
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
return rows.sort((a, b) => {
|
|
114
|
+
const priority = { active: 0, provisioning: 1, stopped: 2, error: 3 };
|
|
115
|
+
const statusDelta = (priority[a.sandbox.status] ?? 99) - (priority[b.sandbox.status] ?? 99);
|
|
116
|
+
if (statusDelta !== 0)
|
|
117
|
+
return statusDelta;
|
|
118
|
+
return Date.parse(b.sandbox.updated_at) - Date.parse(a.sandbox.updated_at);
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
export async function findProjectSessionSandbox(sandboxId) {
|
|
122
|
+
const rows = await listProjectSessionSandboxes();
|
|
123
|
+
if (!sandboxId)
|
|
124
|
+
return rows[0] ?? null;
|
|
125
|
+
return rows.find((row) => row.sandbox.sandbox_id === sandboxId ||
|
|
126
|
+
row.sandbox.external_id === sandboxId ||
|
|
127
|
+
row.session.session_id === sandboxId ||
|
|
128
|
+
row.runtime?.external_id === sandboxId) ?? null;
|
|
129
|
+
}
|
|
130
|
+
// ─── Fetch helper ────────────────────────────────────────────────────────────
|
|
131
|
+
export async function platformFetch(path, options = {}) {
|
|
132
|
+
const headers = {
|
|
133
|
+
'Content-Type': 'application/json',
|
|
134
|
+
...options.headers,
|
|
135
|
+
};
|
|
136
|
+
// Default 30s timeout for this (non-streaming, request/response JSON) call —
|
|
137
|
+
// callers that need a different budget (or none) pass their own `signal`.
|
|
138
|
+
const signal = options.signal ?? AbortSignal.timeout(30_000);
|
|
139
|
+
const res = await authenticatedFetch(`${getPlatformUrl()}${path}`, {
|
|
140
|
+
...options,
|
|
141
|
+
headers,
|
|
142
|
+
signal,
|
|
143
|
+
});
|
|
144
|
+
// Defensively parse the body: a non-JSON error body (proxy/gateway HTML, an
|
|
145
|
+
// empty response, a truncated stream) used to throw an opaque SyntaxError
|
|
146
|
+
// out of `res.json()` here, masking the real HTTP failure. Read the body
|
|
147
|
+
// ONCE as text, then attempt to JSON-parse that string — reading text
|
|
148
|
+
// first (rather than trying `res.json()` and falling back to `res.text()`
|
|
149
|
+
// on failure) avoids a "body already used" error on the fallback read,
|
|
150
|
+
// since a `Response` body can only be consumed once.
|
|
151
|
+
const rawText = await res.text().catch(() => undefined);
|
|
152
|
+
let body;
|
|
153
|
+
if (rawText) {
|
|
154
|
+
try {
|
|
155
|
+
body = JSON.parse(rawText);
|
|
156
|
+
}
|
|
157
|
+
catch {
|
|
158
|
+
/* not JSON — leave body undefined, rawText still available below */
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
if (!res.ok) {
|
|
162
|
+
const message = body?.error || body?.message || body?.detail || rawText || `Platform API error ${res.status}`;
|
|
163
|
+
let error = new ApiError(message, {
|
|
164
|
+
status: res.status,
|
|
165
|
+
code: body?.code || body?.error_code || String(res.status),
|
|
166
|
+
details: body ?? (rawText ? { rawText } : undefined),
|
|
167
|
+
response: res,
|
|
168
|
+
endpoint: path,
|
|
169
|
+
});
|
|
170
|
+
if (res.status === 402) {
|
|
171
|
+
error = parseBillingError(Object.assign(error, { response: res, status: res.status, data: body }));
|
|
172
|
+
}
|
|
173
|
+
throw error;
|
|
174
|
+
}
|
|
175
|
+
return body;
|
|
176
|
+
}
|
|
177
|
+
//# sourceMappingURL=shared.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../src/platform/platform-client/shared.ts"],"names":[],"mappings":"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"}
|