@opengeni/api-router 0.30.3 → 1.0.0
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/dist/access-grant-rls.d.ts +3 -0
- package/dist/admission-trace.d.ts +8 -0
- package/dist/api-websocket.d.ts +18 -0
- package/dist/app.d.ts +50 -2
- package/dist/app.js +12 -1
- package/dist/artifact-catalog-cursor.d.ts +27 -0
- package/dist/auth/managed-auth-attempt-context.d.ts +10 -0
- package/dist/auth/managed-auth-rate-limits.d.ts +167 -0
- package/dist/auth/managed-auth-session-adapter.d.ts +6 -0
- package/dist/auth/managed-auth.d.ts +102 -3
- package/dist/auth/managed-email.d.ts +29 -0
- package/dist/auth/managed-sign-in-notifications.d.ts +4 -0
- package/dist/auth/new-signups-gate.d.ts +23 -0
- package/dist/auth/organization-user-setup.d.ts +80 -0
- package/dist/auth/signup-funnel-metrics.d.ts +44 -0
- package/dist/browser-controller-authority.d.ts +1 -61
- package/dist/browser-ephemeral.d.ts +5 -0
- package/dist/browser-state-authority.d.ts +1 -27
- package/dist/chunk-6TZ5LG3O.js +123948 -0
- package/dist/chunk-6TZ5LG3O.js.map +1 -0
- package/dist/chunk-OGQDXVXY.js +18 -0
- package/dist/chunk-OGQDXVXY.js.map +1 -0
- package/dist/claude-subscription-account-conflicts.d.ts +1 -0
- package/dist/claude-subscription-account-usage.d.ts +39 -0
- package/dist/claude-subscription-oauth.d.ts +25 -0
- package/dist/claude-subscription-profile.d.ts +9 -0
- package/dist/claude-subscription-usage.d.ts +44 -0
- package/dist/claude-workspace-connection.d.ts +15 -0
- package/dist/codemode.d.ts +32 -1
- package/dist/company-brain-okf.d.ts +24 -0
- package/dist/connected-machine-computer-access.d.ts +11 -0
- package/dist/connection-ownership.d.ts +54 -0
- package/dist/controller-data-plane.d.ts +32 -0
- package/dist/editable-artifact-source-session.d.ts +3 -0
- package/dist/editable-artifact-websocket.d.ts +10 -18
- package/dist/editable-artifact-workspace-files.d.ts +1 -1
- package/dist/fatal-process-boundary.d.ts +25 -0
- package/dist/github-access.d.ts +31 -2
- package/dist/http/acting-person.d.ts +24 -0
- package/dist/http/api-contract-compat.d.ts +19 -0
- package/dist/http/api-error.d.ts +27 -1
- package/dist/http/cors.d.ts +17 -0
- package/dist/http/deprecation.d.ts +42 -0
- package/dist/http/interaction-control-error.d.ts +13 -0
- package/dist/http/keyed-admission.d.ts +12 -0
- package/dist/http/local-browser-boundary.d.ts +72 -0
- package/dist/http/metrics-listener.d.ts +22 -0
- package/dist/http/path-identifier.d.ts +17 -0
- package/dist/http/registered-route-label.d.ts +16 -0
- package/dist/http/request-body.d.ts +27 -0
- package/dist/http/request-source.d.ts +52 -0
- package/dist/http/sse.d.ts +17 -6
- package/dist/http/unmatched-route.d.ts +18 -0
- package/dist/http/user-content.d.ts +36 -0
- package/dist/http/websocket-upgrade-dispatch.d.ts +18 -0
- package/dist/index.d.ts +10 -3
- package/dist/index.js +1091 -162
- package/dist/index.js.map +1 -1
- package/dist/integration-endpoint-test.d.ts +20 -0
- package/dist/integrations/api-integrations.d.ts +2 -2
- package/dist/integrations/atlassian.d.ts +29 -3
- package/dist/integrations/connect-authority.d.ts +1 -0
- package/dist/integrations/connect-callback-return.d.ts +6 -0
- package/dist/integrations/fiken.d.ts +16 -2
- package/dist/integrations/github-app-connect.d.ts +47 -0
- package/dist/integrations/github-installation-proof.d.ts +3 -0
- package/dist/integrations/github-lens-connect.d.ts +116 -0
- package/dist/integrations/github-skill-source.d.ts +1 -5
- package/dist/integrations/google-drive.d.ts +24 -0
- package/dist/integrations/integration-commit-authority.d.ts +13 -0
- package/dist/integrations/marketplace-plugin.d.ts +2691 -0
- package/dist/integrations/oauth-client.d.ts +178 -18
- package/dist/integrations/oauth-profiles.d.ts +222 -0
- package/dist/integrations/oauth-return-path.d.ts +1 -0
- package/dist/integrations/personal-github-repositories.d.ts +84 -0
- package/dist/integrations/personal-github.d.ts +42 -0
- package/dist/integrations/pr-review-provider.d.ts +22 -0
- package/dist/integrations/provider-oauth.d.ts +19 -1
- package/dist/integrations/slack-app-home.d.ts +24 -0
- package/dist/integrations/slack-bot.d.ts +367 -12
- package/dist/integrations/slack-file-upload-flow.d.ts +62 -0
- package/dist/integrations/slack-install.d.ts +20 -0
- package/dist/integrations/slack-interactions.d.ts +107 -9
- package/dist/integrations/slack-mrkdwn.d.ts +41 -0
- package/dist/integrations/slack-routing.d.ts +120 -0
- package/dist/integrations/slack-session-defaults.d.ts +58 -0
- package/dist/integrations/slack-task-file-upload.d.ts +36 -0
- package/dist/integrations/social-oauth.d.ts +7 -0
- package/dist/interaction-agent-access.d.ts +15 -0
- package/dist/interaction-frame-proxy.d.ts +68 -0
- package/dist/interaction-metrics.d.ts +2 -0
- package/dist/mcp/action-catalog-types.d.ts +9 -0
- package/dist/mcp/action-catalog.gen.d.ts +2 -0
- package/dist/mcp/capability-account-readiness.d.ts +7 -0
- package/dist/mcp/child-read-evidence.d.ts +9 -0
- package/dist/mcp/command-read.d.ts +24 -0
- package/dist/mcp/company-profile-agent-admin.d.ts +44 -0
- package/dist/mcp/contract-input.d.ts +11 -0
- package/dist/mcp/documents.d.ts +7 -5
- package/dist/mcp/files.d.ts +2 -2
- package/dist/mcp/first-party-tool-permissions.d.ts +650 -0
- package/dist/mcp/knowledge-entries.d.ts +5 -0
- package/dist/mcp/orchestration-failure-diagnostic.d.ts +43 -0
- package/dist/mcp/receipts.d.ts +9 -0
- package/dist/mcp/request-abort.d.ts +19 -0
- package/dist/mcp/scheduled-task-input.d.ts +1189 -0
- package/dist/mcp/scheduled-task-view.d.ts +22 -4
- package/dist/mcp/server.d.ts +255 -3
- package/dist/mcp/session-event-view.d.ts +94 -0
- package/dist/mcp/session-view.d.ts +66 -2
- package/dist/mcp/session-wait.d.ts +174 -0
- package/dist/mcp-oauth.d.ts +52 -0
- package/dist/model-catalog.d.ts +11 -31
- package/dist/observability.d.ts +3 -1
- package/dist/organization-mcp.d.ts +52 -0
- package/dist/organization-recovery-notifications.d.ts +41 -0
- package/dist/routes/analytics-consent.d.ts +26 -0
- package/dist/routes/api-integrations.d.ts +25 -0
- package/dist/routes/api-keys.d.ts +17 -0
- package/dist/routes/artifact-catalog.d.ts +6 -0
- package/dist/routes/automations.d.ts +19 -0
- package/dist/routes/billing.d.ts +49 -0
- package/dist/routes/browser-sessions.d.ts +59 -2
- package/dist/routes/claude-subscription-accounts.d.ts +3 -0
- package/dist/routes/claude-subscription-oauth.d.ts +3 -0
- package/dist/routes/client-errors.d.ts +146 -0
- package/dist/routes/codex.d.ts +76 -2
- package/dist/routes/company-brain.d.ts +3 -0
- package/dist/routes/company-profile.d.ts +2 -1
- package/dist/routes/computer-sessions.d.ts +14 -0
- package/dist/routes/connect.d.ts +5 -0
- package/dist/routes/editable-artifacts.d.ts +2 -0
- package/dist/routes/external-identity-links.d.ts +6 -0
- package/dist/routes/feedback.d.ts +3 -0
- package/dist/routes/github-browser-pages.d.ts +12 -0
- package/dist/routes/github.d.ts +2 -0
- package/dist/routes/insights-response-cache.d.ts +10 -0
- package/dist/routes/insights-usage.d.ts +12 -0
- package/dist/routes/insights.d.ts +30 -1
- package/dist/routes/knowledge.d.ts +3 -0
- package/dist/routes/managed-auth-session-sets.d.ts +26 -0
- package/dist/routes/managed-onboarding.d.ts +29 -0
- package/dist/routes/managed-sign-in-methods.d.ts +6 -0
- package/dist/routes/model-connection-access.d.ts +3 -0
- package/dist/routes/organization-integration-policy.d.ts +3 -0
- package/dist/routes/organization-integrations.d.ts +6 -0
- package/dist/routes/organization-mcp-connections.d.ts +3 -0
- package/dist/routes/organization-model-providers.d.ts +3 -0
- package/dist/routes/organization-recovery.d.ts +19 -0
- package/dist/routes/organization-service-accounts.d.ts +3 -0
- package/dist/routes/organization-sessions.d.ts +26 -0
- package/dist/routes/personal-github-git-broker.d.ts +29 -0
- package/dist/routes/personal-github.d.ts +3 -0
- package/dist/routes/pr-review-github.d.ts +3 -0
- package/dist/routes/pr-review.d.ts +3 -0
- package/dist/routes/session-artifact-associations.d.ts +4 -0
- package/dist/routes/session-history-imports.d.ts +9 -0
- package/dist/routes/sessions.d.ts +44 -6
- package/dist/routes/skill-content.d.ts +4 -0
- package/dist/routes/skill-install-authority.d.ts +6 -0
- package/dist/routes/subscription-account-pools.d.ts +34 -0
- package/dist/routes/subscription-pool-access.d.ts +16 -0
- package/dist/routes/supergrok.d.ts +6 -1
- package/dist/routes/usage-allowances.d.ts +12 -0
- package/dist/routes/user-resource-authorities.d.ts +3 -0
- package/dist/routes/workspace-artifacts.d.ts +2 -1
- package/dist/routes/workspace-capture.d.ts +10 -2
- package/dist/routes/workspace-integrations.d.ts +35 -0
- package/dist/routes/workspace-learning.d.ts +3 -0
- package/dist/routes/workspace-model-providers.d.ts +4 -0
- package/dist/routes/workspaces.d.ts +29 -0
- package/dist/sandbox/auth-callout.d.ts +8 -0
- package/dist/sandbox/channel-a.d.ts +19 -1
- package/dist/sandbox/connection-authority.d.ts +3 -0
- package/dist/sandbox/enrollment.d.ts +9 -1
- package/dist/sandbox/machines.d.ts +5 -2
- package/dist/sandbox/metrics-ingestion.d.ts +28 -20
- package/dist/sandbox/rematerialize.d.ts +2 -0
- package/dist/sandbox/session-attach-variable-sets.d.ts +30 -0
- package/dist/sandbox/viewer.d.ts +26 -1
- package/dist/sandbox-file-artifacts.d.ts +50 -0
- package/dist/scheduled-task-deletion.d.ts +13 -0
- package/dist/session-create-observability.d.ts +5 -0
- package/dist/session-event-view-MPS2OZD3.js +292 -0
- package/dist/session-event-view-MPS2OZD3.js.map +1 -0
- package/dist/site-session-origin.d.ts +13 -0
- package/dist/site-uploads.d.ts +41 -0
- package/dist/slack-reaction-files.d.ts +1 -1
- package/dist/temporal-schedule-cleanup.d.ts +1 -0
- package/dist/temporal-schedule-sync.d.ts +26 -0
- package/dist/transcription/providers/xai-subscription.d.ts +1 -0
- package/dist/transcription/service.d.ts +2 -1
- package/dist/work-discovery-observability.d.ts +33 -0
- package/dist/workspace-artifact-content.d.ts +28 -0
- package/dist/workspace-artifact-provenance.d.ts +7 -0
- package/dist/workspace-delete-observability.d.ts +10 -0
- package/dist/workspace-deletion.d.ts +6 -0
- package/dist/workspace-state-projection.d.ts +3 -5
- package/dist/workspace-tool-gateway-observability.d.ts +17 -0
- package/dist/workspace-tool-gateway.d.ts +123 -0
- package/dist/workspace-webhook-dispatch.d.ts +26 -0
- package/package.json +23 -19
- package/src/access-grant-rls.ts +75 -0
- package/src/admission-trace.ts +14 -0
- package/src/api-websocket.ts +23 -0
- package/src/app.ts +1967 -252
- package/src/artifact-catalog-cursor.ts +60 -0
- package/src/auth/managed-auth-attempt-context.ts +70 -0
- package/src/auth/managed-auth-rate-limits.ts +252 -0
- package/src/auth/managed-auth-session-adapter.ts +222 -0
- package/src/auth/managed-auth.ts +536 -60
- package/src/auth/managed-email.ts +174 -0
- package/src/auth/managed-sign-in-notifications.ts +81 -0
- package/src/auth/new-signups-gate.ts +49 -0
- package/src/auth/organization-user-setup.ts +307 -0
- package/src/auth/signup-funnel-metrics.ts +164 -0
- package/src/browser-controller-authority.ts +1 -186
- package/src/browser-ephemeral.ts +39 -0
- package/src/browser-state-authority.ts +1 -236
- package/src/claude-subscription-account-conflicts.ts +12 -0
- package/src/claude-subscription-account-usage.ts +48 -0
- package/src/claude-subscription-oauth.ts +362 -0
- package/src/claude-subscription-profile.ts +73 -0
- package/src/claude-subscription-usage.ts +97 -0
- package/src/claude-workspace-connection.ts +82 -0
- package/src/codemode.ts +194 -30
- package/src/codex-realtime.ts +8 -2
- package/src/company-brain-okf.ts +340 -0
- package/src/connected-machine-computer-access.ts +33 -0
- package/src/connection-ownership.ts +199 -0
- package/src/controller-data-plane.ts +81 -0
- package/src/editable-artifact-native-kernel.ts +26 -15
- package/src/editable-artifact-office-import.ts +28 -3
- package/src/editable-artifact-production.ts +23 -7
- package/src/editable-artifact-source-session.ts +123 -0
- package/src/editable-artifact-websocket.ts +27 -21
- package/src/editable-artifact-workspace-files.ts +31 -6
- package/src/fatal-process-boundary.ts +246 -0
- package/src/gateway-realtime.ts +1 -1
- package/src/github-access.ts +147 -5
- package/src/http/acting-person.ts +71 -0
- package/src/http/api-contract-compat.ts +49 -0
- package/src/http/api-error.ts +115 -1
- package/src/http/auth.ts +48 -0
- package/src/http/cors.ts +67 -0
- package/src/http/deprecation.ts +118 -0
- package/src/http/interaction-control-error.ts +164 -0
- package/src/http/keyed-admission.ts +29 -0
- package/src/http/local-browser-boundary.ts +343 -0
- package/src/http/metrics-listener.ts +57 -0
- package/src/http/path-identifier.ts +54 -0
- package/src/http/registered-route-label.ts +34 -0
- package/src/http/request-body.ts +127 -0
- package/src/http/request-source.ts +178 -0
- package/src/http/sse.ts +486 -132
- package/src/http/unmatched-route.ts +60 -0
- package/src/http/user-content.ts +158 -0
- package/src/http/websocket-upgrade-dispatch.ts +29 -0
- package/src/index.ts +157 -52
- package/src/integration-endpoint-test.ts +291 -0
- package/src/integrations/api-integrations.ts +98 -11
- package/src/integrations/atlassian.ts +474 -136
- package/src/integrations/connect-authority.ts +2 -0
- package/src/integrations/connect-callback-return.ts +86 -0
- package/src/integrations/fiken.ts +354 -64
- package/src/integrations/github-app-connect.ts +435 -0
- package/src/integrations/github-installation-proof.ts +60 -0
- package/src/integrations/github-lens-connect.ts +76 -0
- package/src/integrations/github-skill-source.ts +2 -142
- package/src/integrations/google-drive.ts +717 -225
- package/src/integrations/integration-commit-authority.ts +69 -0
- package/src/integrations/marketplace-plugin.ts +48 -0
- package/src/integrations/oauth-client.ts +1356 -459
- package/src/integrations/oauth-profiles.ts +537 -0
- package/src/integrations/oauth-return-path.ts +18 -0
- package/src/integrations/personal-github-repositories.ts +674 -0
- package/src/integrations/personal-github.ts +825 -0
- package/src/integrations/pr-review-provider.ts +246 -0
- package/src/integrations/provider-oauth.ts +250 -22
- package/src/integrations/slack-app-home.ts +300 -0
- package/src/integrations/slack-bot.ts +963 -239
- package/src/integrations/slack-file-upload-flow.ts +147 -0
- package/src/integrations/slack-install.ts +83 -0
- package/src/integrations/slack-interactions.ts +3167 -474
- package/src/integrations/slack-mrkdwn.ts +193 -0
- package/src/integrations/slack-routing.ts +337 -0
- package/src/integrations/slack-session-defaults.ts +224 -0
- package/src/integrations/slack-task-file-upload.ts +323 -0
- package/src/integrations/social-oauth.ts +213 -15
- package/src/interaction-agent-access.ts +48 -0
- package/src/interaction-frame-proxy.ts +409 -0
- package/src/interaction-metrics.ts +30 -0
- package/src/mcp/action-catalog-types.ts +9 -0
- package/src/mcp/action-catalog.gen.ts +6696 -0
- package/src/mcp/capability-account-readiness.ts +17 -0
- package/src/mcp/child-read-evidence.ts +19 -0
- package/src/mcp/command-read.ts +109 -0
- package/src/mcp/company-profile-agent-admin.ts +198 -0
- package/src/mcp/contract-input.ts +141 -0
- package/src/mcp/documents.ts +65 -377
- package/src/mcp/editable-artifacts.ts +12 -6
- package/src/mcp/files.ts +80 -43
- package/src/mcp/first-party-tool-permissions.ts +305 -0
- package/src/mcp/knowledge-entries.ts +322 -0
- package/src/mcp/orchestration-failure-diagnostic.ts +43 -0
- package/src/mcp/receipts.ts +34 -0
- package/src/mcp/request-abort.ts +44 -0
- package/src/mcp/scheduled-task-input.ts +76 -0
- package/src/mcp/scheduled-task-view.ts +44 -3
- package/src/mcp/server.ts +3030 -1267
- package/src/mcp/session-event-view.ts +383 -0
- package/src/mcp/session-view.ts +84 -3
- package/src/mcp/session-wait.ts +665 -0
- package/src/mcp-oauth.ts +1123 -0
- package/src/model-catalog.ts +91 -333
- package/src/observability.ts +15 -1
- package/src/organization-mcp.ts +397 -0
- package/src/organization-recovery-notifications.ts +103 -0
- package/src/routes/analytics-consent.ts +123 -0
- package/src/routes/api-integrations.ts +364 -74
- package/src/routes/api-keys.ts +336 -10
- package/src/routes/artifact-catalog.ts +279 -0
- package/src/routes/automations.ts +768 -0
- package/src/routes/billing.ts +461 -46
- package/src/routes/browser-sessions.ts +780 -112
- package/src/routes/canonical-human-identities.ts +90 -14
- package/src/routes/capabilities.ts +107 -6
- package/src/routes/channels.ts +20 -3
- package/src/routes/claude-subscription-accounts.ts +334 -0
- package/src/routes/claude-subscription-oauth.ts +142 -0
- package/src/routes/client-errors.ts +362 -0
- package/src/routes/codex.ts +833 -116
- package/src/routes/company-brain.ts +322 -0
- package/src/routes/company-profile.ts +65 -1
- package/src/routes/computer-sessions.ts +557 -106
- package/src/routes/connect.ts +1938 -0
- package/src/routes/connections.ts +1039 -349
- package/src/routes/documents.ts +488 -287
- package/src/routes/editable-artifacts.ts +79 -9
- package/src/routes/enrollments.ts +135 -39
- package/src/routes/environments.ts +154 -58
- package/src/routes/external-identity-links.ts +201 -0
- package/src/routes/feedback.ts +113 -0
- package/src/routes/files.ts +267 -33
- package/src/routes/github-browser-pages.ts +162 -0
- package/src/routes/github.ts +446 -144
- package/src/routes/insights-response-cache.ts +83 -0
- package/src/routes/insights-usage.ts +345 -0
- package/src/routes/insights.ts +153 -19
- package/src/routes/install.ts +133 -38
- package/src/routes/integration-facets.ts +107 -33
- package/src/routes/interaction-resources.ts +30 -3
- package/src/routes/knowledge.ts +488 -0
- package/src/routes/machines.ts +313 -15
- package/src/routes/managed-auth-session-sets.ts +1218 -0
- package/src/routes/managed-onboarding.ts +337 -0
- package/src/routes/managed-sign-in-methods.ts +433 -0
- package/src/routes/memory-slack-publications.ts +3 -2
- package/src/routes/model-connection-access.ts +208 -0
- package/src/routes/organization-integration-policy.ts +116 -0
- package/src/routes/organization-integrations.ts +326 -0
- package/src/routes/organization-mcp-connections.ts +178 -0
- package/src/routes/organization-memberships.ts +1019 -27
- package/src/routes/organization-model-providers.ts +293 -0
- package/src/routes/organization-recovery.ts +325 -0
- package/src/routes/organization-service-accounts.ts +128 -0
- package/src/routes/organization-sessions.ts +350 -0
- package/src/routes/personal-github-git-broker.ts +785 -0
- package/src/routes/personal-github.ts +370 -0
- package/src/routes/plugins.ts +251 -22
- package/src/routes/pr-review-github.ts +881 -0
- package/src/routes/pr-review.ts +622 -0
- package/src/routes/preference-registry.ts +12 -93
- package/src/routes/rigs.ts +167 -50
- package/src/routes/scheduled-tasks.ts +346 -41
- package/src/routes/session-artifact-associations.ts +87 -0
- package/src/routes/session-history-imports.ts +280 -0
- package/src/routes/sessions.ts +2306 -264
- package/src/routes/skill-content.ts +297 -0
- package/src/routes/skill-install-authority.ts +64 -0
- package/src/routes/skills.ts +62 -9
- package/src/routes/social.ts +46 -18
- package/src/routes/subscription-account-pools.ts +436 -0
- package/src/routes/subscription-pool-access.ts +126 -0
- package/src/routes/supergrok.ts +219 -303
- package/src/routes/transcription-recordings.ts +38 -3
- package/src/routes/transcriptions.ts +4 -0
- package/src/routes/usage-allowances.ts +378 -0
- package/src/routes/user-resource-authorities.ts +138 -0
- package/src/routes/video-generation.ts +14 -10
- package/src/routes/workspace-artifacts.ts +275 -69
- package/src/routes/workspace-capture.ts +21 -0
- package/src/routes/workspace-integrations.ts +576 -0
- package/src/routes/workspace-learning.ts +159 -0
- package/src/routes/workspace-model-providers.ts +148 -0
- package/src/routes/workspace-state.ts +38 -25
- package/src/routes/workspaces.ts +1004 -127
- package/src/sandbox/auth-callout.ts +96 -19
- package/src/sandbox/channel-a.ts +323 -24
- package/src/sandbox/connection-authority.ts +3 -0
- package/src/sandbox/enrollment.ts +81 -6
- package/src/sandbox/machines.ts +218 -76
- package/src/sandbox/metrics-ingestion.ts +411 -62
- package/src/sandbox/rematerialize.ts +121 -19
- package/src/sandbox/session-attach-variable-sets.ts +131 -0
- package/src/sandbox/viewer.ts +280 -25
- package/src/sandbox-file-artifacts.ts +413 -0
- package/src/scheduled-task-deletion.ts +138 -0
- package/src/session-create-observability.ts +46 -0
- package/src/session-realtime-context.ts +6 -3
- package/src/site-session-origin.ts +48 -0
- package/src/site-uploads.ts +224 -0
- package/src/slack-reaction-files.ts +16 -5
- package/src/temporal-schedule-cleanup.ts +13 -0
- package/src/temporal-schedule-sync.ts +74 -0
- package/src/transcription/providers/codex-subscription.ts +2 -0
- package/src/transcription/providers/openai.ts +1 -0
- package/src/transcription/providers/xai-subscription.ts +49 -3
- package/src/transcription/segmenter.ts +8 -2
- package/src/transcription/service.ts +43 -6
- package/src/work-discovery-observability.ts +121 -0
- package/src/workspace-artifact-content.ts +144 -0
- package/src/workspace-artifact-provenance.ts +104 -0
- package/src/workspace-delete-observability.ts +75 -0
- package/src/workspace-deletion.ts +73 -0
- package/src/workspace-state-projection.ts +18 -148
- package/src/workspace-tool-gateway-observability.ts +100 -0
- package/src/workspace-tool-gateway.ts +870 -0
- package/src/workspace-webhook-dispatch.ts +190 -0
- package/src/xai-subscription-auth.ts +9 -2
- package/dist/chunk-WCXHI3FF.js +0 -49920
- package/dist/chunk-WCXHI3FF.js.map +0 -1
- package/dist/routes/packs.d.ts +0 -3
- package/src/routes/packs.ts +0 -729
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { Settings } from "@opengeni/config";
|
|
2
|
+
import { parseWorkspaceArchiveObjectRef } from "@opengeni/contracts";
|
|
2
3
|
import {
|
|
3
4
|
adoptLegacyModalCheckpointArtifact,
|
|
4
5
|
beginSandboxRematerialization,
|
|
@@ -6,6 +7,7 @@ import {
|
|
|
6
7
|
failSandboxRematerialization,
|
|
7
8
|
failWarmingToCold,
|
|
8
9
|
markSandboxRestoreVerifying,
|
|
10
|
+
sessionHoldsFreshWorkspaceRecovery,
|
|
9
11
|
recordWarmingSandboxCreated,
|
|
10
12
|
SandboxLeaseRecoveryBlockedError,
|
|
11
13
|
SandboxLeaseSupersededError,
|
|
@@ -13,6 +15,7 @@ import {
|
|
|
13
15
|
type LeaseSnapshot,
|
|
14
16
|
} from "@opengeni/db";
|
|
15
17
|
import {
|
|
18
|
+
inlineWorkspaceArchiveForRestore,
|
|
16
19
|
describeLegacyNativeSnapshotArchive,
|
|
17
20
|
establishSandboxSessionFromEnvelope,
|
|
18
21
|
isProviderSandboxNotFoundError,
|
|
@@ -30,17 +33,68 @@ import {
|
|
|
30
33
|
type EstablishedSandboxSession,
|
|
31
34
|
type WorkspaceArchiveDescriptor,
|
|
32
35
|
} from "@opengeni/runtime/sandbox";
|
|
36
|
+
import {
|
|
37
|
+
downloadWorkspaceArchiveSpool,
|
|
38
|
+
WorkspaceArchiveStorageError,
|
|
39
|
+
type ObjectStorage,
|
|
40
|
+
} from "@opengeni/storage";
|
|
33
41
|
|
|
34
42
|
function hasWorkspaceArchive(envelope: Record<string, unknown> | null): boolean {
|
|
35
43
|
const sessionState =
|
|
36
|
-
envelope?.sessionState &&
|
|
44
|
+
envelope?.sessionState &&
|
|
45
|
+
typeof envelope.sessionState === "object" &&
|
|
46
|
+
!Array.isArray(envelope.sessionState)
|
|
37
47
|
? (envelope.sessionState as Record<string, unknown>)
|
|
38
48
|
: null;
|
|
39
49
|
return (
|
|
40
|
-
typeof sessionState?.workspaceArchive === "string" &&
|
|
50
|
+
(typeof sessionState?.workspaceArchive === "string" &&
|
|
51
|
+
sessionState.workspaceArchive.length > 0) ||
|
|
52
|
+
parseWorkspaceArchiveObjectRef(sessionState?.workspaceArchiveRef) !== null
|
|
41
53
|
);
|
|
42
54
|
}
|
|
43
55
|
|
|
56
|
+
async function materializeArchiveObjectRef(
|
|
57
|
+
envelope: Record<string, unknown> | null,
|
|
58
|
+
objectStorage: ObjectStorage | null | undefined,
|
|
59
|
+
): Promise<Record<string, unknown> | null> {
|
|
60
|
+
if (!envelope) return null;
|
|
61
|
+
const sessionState =
|
|
62
|
+
envelope.sessionState &&
|
|
63
|
+
typeof envelope.sessionState === "object" &&
|
|
64
|
+
!Array.isArray(envelope.sessionState)
|
|
65
|
+
? (envelope.sessionState as Record<string, unknown>)
|
|
66
|
+
: null;
|
|
67
|
+
if (!sessionState) return envelope;
|
|
68
|
+
if (sessionState.workspaceArchiveRef == null) return envelope;
|
|
69
|
+
if (!parseWorkspaceArchiveObjectRef(sessionState.workspaceArchiveRef)) {
|
|
70
|
+
throw new WorkspaceArchiveIntegrityError(
|
|
71
|
+
"archive_metadata_invalid",
|
|
72
|
+
"workspace archive object reference is malformed",
|
|
73
|
+
);
|
|
74
|
+
}
|
|
75
|
+
if (!objectStorage) {
|
|
76
|
+
throw new WorkspaceArchiveIntegrityError(
|
|
77
|
+
"archive_storage_unavailable",
|
|
78
|
+
"workspace archive object storage is not configured",
|
|
79
|
+
{ retryable: true },
|
|
80
|
+
);
|
|
81
|
+
}
|
|
82
|
+
const descriptor = parseWorkspaceArchiveDescriptor(sessionState.workspaceArchiveMeta);
|
|
83
|
+
if (
|
|
84
|
+
process.platform === "linux" &&
|
|
85
|
+
descriptor?.version === 1 &&
|
|
86
|
+
descriptor.workspace.projection === "sdk_local_archive_v1"
|
|
87
|
+
) {
|
|
88
|
+
return envelope;
|
|
89
|
+
}
|
|
90
|
+
return {
|
|
91
|
+
...envelope,
|
|
92
|
+
sessionState: await inlineWorkspaceArchiveForRestore(sessionState, (key) =>
|
|
93
|
+
objectStorage.getObjectBytes(key),
|
|
94
|
+
),
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
|
|
44
98
|
function legacyNativeArchiveFromEnvelope(envelope: Record<string, unknown> | null) {
|
|
45
99
|
const sessionState =
|
|
46
100
|
envelope?.sessionState && typeof envelope.sessionState === "object"
|
|
@@ -82,14 +136,31 @@ export async function establishApiSandboxSpawner(input: {
|
|
|
82
136
|
acquiredLease: LeaseSnapshot;
|
|
83
137
|
fallbackEnvelope: Record<string, unknown> | null;
|
|
84
138
|
dataPlaneUrl: string | null;
|
|
139
|
+
objectStorage?: ObjectStorage | null;
|
|
85
140
|
}): Promise<{ established: EstablishedSandboxSession; lease: LeaseSnapshot }> {
|
|
141
|
+
// An audited decision to continue a definitively lost workspace on a new
|
|
142
|
+
// EMPTY box: hydrate nothing, including a per-session legacy archive, and
|
|
143
|
+
// never resume a prior provider identity. Commit verifies the decision.
|
|
144
|
+
const freshWorkspaceRecoveryId = input.acquiredLease.freshWorkspaceRecoveryId ?? null;
|
|
145
|
+
// Backstop: a session already told its workspace is empty never gets a
|
|
146
|
+
// legacy per-session archive back, even if the lease marker was lost.
|
|
147
|
+
const legacyFallbackRefused =
|
|
148
|
+
!freshWorkspaceRecoveryId &&
|
|
149
|
+
input.acquiredLease.recovery.archive.status === "none" &&
|
|
150
|
+
hasWorkspaceArchive(input.fallbackEnvelope) &&
|
|
151
|
+
(await sessionHoldsFreshWorkspaceRecovery(input.db, input.workspaceId, input.sessionId));
|
|
86
152
|
const fallbackArchiveEnvelope =
|
|
153
|
+
!freshWorkspaceRecoveryId &&
|
|
154
|
+
!legacyFallbackRefused &&
|
|
87
155
|
input.acquiredLease.recovery.archive.status === "none" &&
|
|
88
156
|
hasWorkspaceArchive(input.fallbackEnvelope)
|
|
89
157
|
? withoutSandboxProviderIdentity(input.fallbackEnvelope)
|
|
90
158
|
: null;
|
|
91
|
-
let spawnEnvelope =
|
|
92
|
-
|
|
159
|
+
let spawnEnvelope = freshWorkspaceRecoveryId
|
|
160
|
+
? null
|
|
161
|
+
: legacyFallbackRefused
|
|
162
|
+
? (input.acquiredLease.resumeState ?? null)
|
|
163
|
+
: (fallbackArchiveEnvelope ?? input.acquiredLease.resumeState ?? input.fallbackEnvelope);
|
|
93
164
|
const archiveSource =
|
|
94
165
|
input.acquiredLease.recovery.archive.status === "none"
|
|
95
166
|
? fallbackArchiveEnvelope
|
|
@@ -108,9 +179,12 @@ export async function establishApiSandboxSpawner(input: {
|
|
|
108
179
|
const continuityRecovery = input.acquiredLease.recovery.continuity;
|
|
109
180
|
try {
|
|
110
181
|
if (
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
182
|
+
!freshWorkspaceRecoveryId &&
|
|
183
|
+
((input.acquiredLease.recovery.archive.status === "available" &&
|
|
184
|
+
(input.acquiredLease.archiveComplete ||
|
|
185
|
+
input.acquiredLease.historicalRecoveryAuthorized === true)) ||
|
|
186
|
+
(input.acquiredLease.recovery.archive.status === "none" &&
|
|
187
|
+
hasWorkspaceArchive(archiveSource)))
|
|
114
188
|
) {
|
|
115
189
|
const id = crypto.randomUUID();
|
|
116
190
|
const legacyNativeArchive = legacyNativeArchiveFromEnvelope(archiveSource);
|
|
@@ -153,7 +227,11 @@ export async function establishApiSandboxSpawner(input: {
|
|
|
153
227
|
legacyCheckpoint: begun.checkpointArtifact === null ? legacyNativeArchive : null,
|
|
154
228
|
legacyProviderBinding: null,
|
|
155
229
|
};
|
|
156
|
-
} else if (
|
|
230
|
+
} else if (
|
|
231
|
+
!freshWorkspaceRecoveryId &&
|
|
232
|
+
input.acquiredLease.recovery.archive.status !== "none" &&
|
|
233
|
+
!continuityRecovery
|
|
234
|
+
) {
|
|
157
235
|
throw new SandboxLeaseRecoveryBlockedError(
|
|
158
236
|
input.sandboxGroupId,
|
|
159
237
|
input.expectedEpoch,
|
|
@@ -162,10 +240,32 @@ export async function establishApiSandboxSpawner(input: {
|
|
|
162
240
|
);
|
|
163
241
|
}
|
|
164
242
|
|
|
243
|
+
const hydrateEnvelope = await materializeArchiveObjectRef(spawnEnvelope, input.objectStorage);
|
|
244
|
+
|
|
165
245
|
const providerCreateStartedAt = new Date();
|
|
166
|
-
established = await establishSandboxSessionFromEnvelope(input.settings,
|
|
246
|
+
established = await establishSandboxSessionFromEnvelope(input.settings, hydrateEnvelope, {
|
|
167
247
|
sessionId: input.sessionId,
|
|
168
248
|
recovery: "create-or-restore",
|
|
249
|
+
...(input.objectStorage
|
|
250
|
+
? {
|
|
251
|
+
loadHostWorkspaceArchive: async (ref) => {
|
|
252
|
+
try {
|
|
253
|
+
return await downloadWorkspaceArchiveSpool(input.objectStorage!, ref.key, {
|
|
254
|
+
bytes: ref.bytes,
|
|
255
|
+
sha256: ref.sha256,
|
|
256
|
+
});
|
|
257
|
+
} catch (error) {
|
|
258
|
+
if (error instanceof WorkspaceArchiveStorageError) {
|
|
259
|
+
throw new WorkspaceArchiveIntegrityError(error.code, error.message, {
|
|
260
|
+
retryable: error.retryable,
|
|
261
|
+
cause: error,
|
|
262
|
+
});
|
|
263
|
+
}
|
|
264
|
+
throw error;
|
|
265
|
+
}
|
|
266
|
+
},
|
|
267
|
+
}
|
|
268
|
+
: {}),
|
|
169
269
|
backendOverride: input.backend as never,
|
|
170
270
|
environment: input.environment,
|
|
171
271
|
onSandboxCreated: async (created) => {
|
|
@@ -308,16 +408,18 @@ export async function establishApiSandboxSpawner(input: {
|
|
|
308
408
|
dataPlaneUrl: input.dataPlaneUrl,
|
|
309
409
|
resumeBackendId: established.backendId,
|
|
310
410
|
resumeState,
|
|
311
|
-
...(
|
|
312
|
-
? {
|
|
313
|
-
:
|
|
314
|
-
? {
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
411
|
+
...(freshWorkspaceRecoveryId
|
|
412
|
+
? { freshWorkspace: { operationId: freshWorkspaceRecoveryId } }
|
|
413
|
+
: established.providerContinuity
|
|
414
|
+
? { continuityRecovery: established.providerContinuity }
|
|
415
|
+
: rematerialization
|
|
416
|
+
? {
|
|
417
|
+
rematerialization: {
|
|
418
|
+
id: rematerialization.id,
|
|
419
|
+
verifiedRevision: rematerialization.selectedRevision,
|
|
420
|
+
},
|
|
421
|
+
}
|
|
422
|
+
: {}),
|
|
321
423
|
leaseTtlMs: input.settings.sandboxLeaseTtlMs,
|
|
322
424
|
});
|
|
323
425
|
if (!committed.committed || !committed.lease) {
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import type { Settings } from "@opengeni/config";
|
|
2
|
+
import {
|
|
3
|
+
getScheduledScopedRigVersionMetadata,
|
|
4
|
+
loadWorkspaceEnvironmentForRun,
|
|
5
|
+
nestedPostgresSqlState,
|
|
6
|
+
type Database,
|
|
7
|
+
} from "@opengeni/db";
|
|
8
|
+
import { ApiHttpError } from "../http/api-error";
|
|
9
|
+
|
|
10
|
+
export type SessionAttachVariableSetSession = {
|
|
11
|
+
id: string;
|
|
12
|
+
rigId?: string | null | undefined;
|
|
13
|
+
rigVersionId?: string | null | undefined;
|
|
14
|
+
variableSetIds?: readonly string[] | null | undefined;
|
|
15
|
+
/** Legacy final-entry alias for projections that predate the plural field. */
|
|
16
|
+
variableSetId?: string | null | undefined;
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
type VariableSetSource = "sandbox_environment_default" | "session_selection";
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Decrypted Variable Set values for a direct session attach (terminal, Files,
|
|
23
|
+
* Git, desktop viewer), in the same order and precedence as the worker turn:
|
|
24
|
+
* the frozen Sandbox Environment version defaults first, then the session's
|
|
25
|
+
* own selection, so a box first warmed by an attach declares exactly the
|
|
26
|
+
* environment the next turn declares.
|
|
27
|
+
*
|
|
28
|
+
* A Variable Set the session can no longer use (the database seam answers
|
|
29
|
+
* 42501 and records a `variable_set.materialize.denied` fact) becomes a 403
|
|
30
|
+
* instead of a bare 500. Every failure is logged with the session, set, source
|
|
31
|
+
* and SQLSTATE, never a value.
|
|
32
|
+
*/
|
|
33
|
+
export async function loadSessionAttachVariableSetValues(
|
|
34
|
+
db: Database,
|
|
35
|
+
settings: Settings,
|
|
36
|
+
input: {
|
|
37
|
+
accountId: string;
|
|
38
|
+
workspaceId: string;
|
|
39
|
+
session: SessionAttachVariableSetSession;
|
|
40
|
+
/** The authenticated route subject driving the attach; null records the
|
|
41
|
+
* legacy service sentinel on the materialization audit fact. */
|
|
42
|
+
subjectId: string | null;
|
|
43
|
+
},
|
|
44
|
+
): Promise<Record<string, string>> {
|
|
45
|
+
const { accountId, workspaceId, session, subjectId } = input;
|
|
46
|
+
const values: Record<string, string> = {};
|
|
47
|
+
let defaultVariableSetIds: readonly string[] = [];
|
|
48
|
+
if (session.rigId && session.rigVersionId) {
|
|
49
|
+
try {
|
|
50
|
+
const rigVersion = await getScheduledScopedRigVersionMetadata(
|
|
51
|
+
db,
|
|
52
|
+
{ accountId, workspaceId, subjectId: subjectId ?? "session-attach" },
|
|
53
|
+
session.rigId,
|
|
54
|
+
session.rigVersionId,
|
|
55
|
+
);
|
|
56
|
+
defaultVariableSetIds = rigVersion?.version.defaultVariableSetIds ?? [];
|
|
57
|
+
} catch (error) {
|
|
58
|
+
logAttachFailure("sandbox environment lookup failed", error, {
|
|
59
|
+
sessionId: session.id,
|
|
60
|
+
rigId: session.rigId,
|
|
61
|
+
rigVersionId: session.rigVersionId,
|
|
62
|
+
});
|
|
63
|
+
throw error;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
// Older persisted/test projections can omit the plural field. Preserve the
|
|
67
|
+
// legacy final alias as the single explicit selection.
|
|
68
|
+
const selectedVariableSetIds =
|
|
69
|
+
session.variableSetIds ?? (session.variableSetId ? [session.variableSetId] : []);
|
|
70
|
+
const ordered: Array<{ variableSetId: string; source: VariableSetSource }> = [
|
|
71
|
+
...defaultVariableSetIds.map((variableSetId) => ({
|
|
72
|
+
variableSetId,
|
|
73
|
+
source: "sandbox_environment_default" as const,
|
|
74
|
+
})),
|
|
75
|
+
...selectedVariableSetIds.map((variableSetId) => ({
|
|
76
|
+
variableSetId,
|
|
77
|
+
source: "session_selection" as const,
|
|
78
|
+
})),
|
|
79
|
+
];
|
|
80
|
+
for (const { variableSetId, source } of ordered) {
|
|
81
|
+
try {
|
|
82
|
+
const loaded = await loadWorkspaceEnvironmentForRun(db, settings, {
|
|
83
|
+
accountId,
|
|
84
|
+
workspaceId,
|
|
85
|
+
variableSetId,
|
|
86
|
+
authority: { kind: "session_attach", sessionId: session.id, subjectId },
|
|
87
|
+
});
|
|
88
|
+
Object.assign(values, loaded?.values ?? {});
|
|
89
|
+
} catch (error) {
|
|
90
|
+
logAttachFailure("variable set materialization failed", error, {
|
|
91
|
+
sessionId: session.id,
|
|
92
|
+
variableSetId,
|
|
93
|
+
source,
|
|
94
|
+
});
|
|
95
|
+
if (nestedPostgresSqlState(error) === "42501") {
|
|
96
|
+
throw new ApiHttpError(403, {
|
|
97
|
+
code: "forbidden",
|
|
98
|
+
message:
|
|
99
|
+
source === "sandbox_environment_default"
|
|
100
|
+
? "A default Variable Set of this session's Sandbox Environment is not available to this session."
|
|
101
|
+
: "A Variable Set selected for this session is not available to this session.",
|
|
102
|
+
retryable: false,
|
|
103
|
+
details: { variableSetId, source },
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
throw error;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
return values;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
function logAttachFailure(message: string, error: unknown, context: Record<string, string>): void {
|
|
113
|
+
const sqlState = nestedPostgresSqlState(error);
|
|
114
|
+
console.warn(`[session-attach] ${message}`, {
|
|
115
|
+
...context,
|
|
116
|
+
...(sqlState ? { sqlState } : {}),
|
|
117
|
+
error: rootCauseMessage(error),
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
/** The innermost cause's message: the database's own reason rather than the
|
|
122
|
+
* query-builder wrapper that repeats the statement text. */
|
|
123
|
+
function rootCauseMessage(error: unknown): string {
|
|
124
|
+
let current: unknown = error;
|
|
125
|
+
for (let depth = 0; depth < 8; depth += 1) {
|
|
126
|
+
const cause = current instanceof Error ? current.cause : undefined;
|
|
127
|
+
if (!(cause instanceof Error)) break;
|
|
128
|
+
current = cause;
|
|
129
|
+
}
|
|
130
|
+
return current instanceof Error ? current.message : String(current);
|
|
131
|
+
}
|