@opengeni/api-router 3.0.1 → 3.1.2
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 +8 -1
- package/dist/admission-trace.d.ts +8 -0
- package/dist/app.d.ts +50 -3
- package/dist/app.js +10 -1
- package/dist/artifact-catalog-cursor.d.ts +1 -0
- package/dist/attached-browser-viewer.d.ts +11 -0
- package/dist/auth/managed-auth-attempt-context.d.ts +2 -0
- package/dist/auth/managed-auth-rate-limits.d.ts +167 -0
- package/dist/auth/managed-auth-session-adapter.d.ts +9 -1
- package/dist/auth/managed-auth.d.ts +72 -5
- package/dist/auth/managed-sign-in-notifications.d.ts +4 -0
- package/dist/auth/new-signups-gate.d.ts +23 -0
- package/dist/auth/signup-funnel-metrics.d.ts +44 -0
- package/dist/azure-live.d.ts +28 -0
- package/dist/browser-action-fences.d.ts +13 -0
- package/dist/browser-controller-authority.d.ts +1 -61
- package/dist/browser-ephemeral.d.ts +5 -0
- package/dist/browser-lost-runtime-end.d.ts +24 -0
- package/dist/browser-state-authority.d.ts +1 -27
- package/dist/chunk-OGQDXVXY.js +18 -0
- package/dist/chunk-OGQDXVXY.js.map +1 -0
- package/dist/{chunk-AJ62T5QN.js → chunk-OT56OY4V.js} +80503 -39869
- package/dist/chunk-OT56OY4V.js.map +1 -0
- package/dist/claude-default-models.d.ts +19 -0
- package/dist/claude-subscription-core.d.ts +50 -0
- package/dist/claude-subscription-oauth.d.ts +36 -0
- package/dist/claude-subscription-profile.d.ts +9 -0
- package/dist/claude-subscription-usage.d.ts +6 -0
- package/dist/claude-workspace-connection.d.ts +15 -0
- package/dist/codemode.d.ts +40 -5
- package/dist/codex-realtime.d.ts +29 -3
- package/dist/codex-session-pointers.d.ts +19 -0
- package/dist/connection-ownership.d.ts +6 -3
- package/dist/controller-data-plane.d.ts +16 -0
- package/dist/credit-promotion-snapshot.d.ts +6 -0
- package/dist/editable-artifact-source-session.d.ts +3 -0
- package/dist/editable-artifact-websocket.d.ts +5 -3
- package/dist/fatal-process-boundary.d.ts +9 -1
- package/dist/github-access.d.ts +7 -1
- package/dist/github-browser-flow.d.ts +1 -1
- package/dist/http/acting-person.d.ts +36 -0
- package/dist/http/api-contract-compat.d.ts +19 -0
- package/dist/http/api-error.d.ts +50 -1
- package/dist/http/auth.d.ts +8 -1
- package/dist/http/cors.d.ts +12 -0
- package/dist/http/deprecation.d.ts +42 -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/rejection-telemetry.d.ts +34 -0
- package/dist/http/request-body.d.ts +27 -0
- package/dist/http/request-source.d.ts +41 -3
- package/dist/http/sse.d.ts +12 -1
- package/dist/http/unmatched-route.d.ts +18 -0
- package/dist/http/user-content.d.ts +36 -0
- package/dist/http/variable-sets-removed.d.ts +41 -0
- package/dist/http/websocket-upgrade-dispatch.d.ts +18 -0
- package/dist/index.js +1279 -108
- package/dist/index.js.map +1 -1
- package/dist/integration-connect-metrics.d.ts +35 -0
- package/dist/integration-endpoint-test.d.ts +20 -0
- package/dist/integrations/api-integrations.d.ts +2 -2
- package/dist/integrations/atlassian.d.ts +8 -3
- package/dist/integrations/fiken.d.ts +3 -1
- package/dist/integrations/github-lens-connect.d.ts +37 -66
- package/dist/integrations/google-drive.d.ts +2 -0
- package/dist/integrations/integration-commit-authority.d.ts +13 -0
- package/dist/integrations/marketplace-plugin.d.ts +43 -43
- package/dist/integrations/oauth-client.d.ts +171 -12
- package/dist/integrations/oauth-profiles.d.ts +42 -13
- package/dist/integrations/onepassword-vault-provider.d.ts +9 -0
- package/dist/integrations/slack-bot.d.ts +285 -7
- package/dist/integrations/slack-file-upload-flow.d.ts +62 -0
- package/dist/integrations/slack-interactions.d.ts +89 -10
- package/dist/integrations/slack-mrkdwn.d.ts +41 -0
- package/dist/integrations/slack-routing.d.ts +1 -1
- package/dist/integrations/slack-session-defaults.d.ts +58 -0
- package/dist/integrations/slack-task-file-upload.d.ts +36 -0
- package/dist/integrations/slack-tool-review.d.ts +5 -0
- package/dist/interaction-agent-access.d.ts +13 -8
- package/dist/interaction-agent-version.d.ts +21 -0
- package/dist/interaction-holder-heartbeat.d.ts +5 -0
- package/dist/interaction-metrics.d.ts +27 -2
- package/dist/interaction-route-stages.d.ts +25 -0
- package/dist/interaction-secrets-vault.d.ts +20 -0
- package/dist/interaction-secrets.d.ts +103 -0
- package/dist/mcp/action-catalog-types.d.ts +14 -0
- package/dist/mcp/action-catalog.gen.d.ts +2 -0
- package/dist/mcp/action-descriptions.d.ts +4 -0
- package/dist/mcp/action-schema-imports.gen.d.ts +1 -0
- package/dist/mcp/capability-account-readiness.d.ts +7 -0
- package/dist/mcp/child-read-evidence.d.ts +9 -0
- package/dist/mcp/company-profile-agent-admin.d.ts +12 -0
- package/dist/mcp/contract-input.d.ts +13 -0
- package/dist/mcp/documents.d.ts +2 -0
- package/dist/mcp/first-party-tool-permissions.d.ts +3 -606
- package/dist/mcp/notification-tools.d.ts +26 -0
- package/dist/mcp/orchestration-failure-diagnostic.d.ts +43 -0
- package/dist/mcp/scheduled-task-input.d.ts +1309 -0
- package/dist/mcp/scheduled-task-view.d.ts +217 -3
- package/dist/mcp/secret-tools.d.ts +14 -0
- package/dist/mcp/server.d.ts +108 -5
- package/dist/mcp/session-admin-access-tools.d.ts +33 -0
- package/dist/mcp/session-event-errors.d.ts +28 -0
- package/dist/mcp/session-event-view.d.ts +62 -0
- package/dist/mcp/session-view.d.ts +15 -0
- package/dist/mcp/session-wait.d.ts +18 -0
- package/dist/mcp/site-agent-clamp-tools.d.ts +38 -0
- package/dist/mcp/site-data-tools.d.ts +22 -0
- package/dist/mcp/site-publication-tools.d.ts +19 -0
- package/dist/mcp/site-sql-tools.d.ts +27 -0
- package/dist/mcp-oauth.d.ts +37 -4
- package/dist/model-calls/chat-completions.d.ts +87 -0
- package/dist/model-calls/pending-usage-settlements.d.ts +57 -0
- package/dist/model-calls/service.d.ts +36 -0
- package/dist/model-catalog.d.ts +9 -3
- package/dist/native-push-dispatch.d.ts +69 -0
- package/dist/observability.d.ts +3 -1
- package/dist/organization-mcp.d.ts +82 -0
- package/dist/prepared-mcp-actor.d.ts +77 -0
- package/dist/prepared-mcp-permissions.d.ts +8 -0
- package/dist/routes/analytics-consent.d.ts +26 -0
- package/dist/routes/api-integrations.d.ts +11 -0
- package/dist/routes/api-keys.d.ts +7 -7
- package/dist/routes/automations.d.ts +2 -0
- package/dist/routes/billing.d.ts +59 -0
- package/dist/routes/browser-sessions.d.ts +65 -2
- package/dist/routes/chat-completions.d.ts +11 -0
- package/dist/routes/claude-core-usage.d.ts +20 -0
- 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 +182 -0
- package/dist/routes/codex-core.d.ts +401 -0
- package/dist/routes/codex.d.ts +64 -2
- package/dist/routes/computer-sessions.d.ts +6 -1
- package/dist/routes/desktop-distribution.d.ts +32 -0
- package/dist/routes/github-browser-fonts.gen.d.ts +2 -0
- package/dist/routes/github-browser-pages.d.ts +27 -0
- package/dist/routes/inbox.d.ts +13 -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 +28 -0
- package/dist/routes/interaction-placement-message.d.ts +7 -0
- package/dist/routes/managed-sign-in-methods.d.ts +6 -0
- package/dist/routes/model-account-choice.d.ts +13 -0
- package/dist/routes/model-account-settings.d.ts +19 -0
- package/dist/routes/native-app-auth.d.ts +12 -0
- package/dist/routes/organization-integration-policy.d.ts +8 -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-defaults.d.ts +9 -0
- package/dist/routes/organization-service-accounts.d.ts +3 -0
- package/dist/routes/personal-api-keys.d.ts +3 -0
- package/dist/routes/session-admin-access.d.ts +3 -0
- package/dist/routes/session-artifact-associations.d.ts +4 -0
- package/dist/routes/session-history-imports.d.ts +20 -0
- package/dist/routes/sessions.d.ts +38 -2
- package/dist/routes/site-data.d.ts +18 -0
- package/dist/routes/site-publishing.d.ts +5 -0
- package/dist/routes/site-runtime.d.ts +31 -0
- package/dist/routes/site-sql.d.ts +16 -0
- package/dist/routes/slack-bot-access.d.ts +3 -0
- package/dist/routes/subscription-account-pools.d.ts +21 -0
- package/dist/routes/subscription-core-http.d.ts +5 -0
- package/dist/routes/subscription-pool-access.d.ts +37 -0
- package/dist/routes/subscription-pool-core.d.ts +153 -0
- package/dist/routes/supergrok.d.ts +6 -6
- package/dist/routes/usage-allowances.d.ts +12 -0
- package/dist/routes/variable-sets-removed.d.ts +2 -0
- package/dist/routes/vault-providers.d.ts +34 -0
- package/dist/routes/vaults.d.ts +3 -0
- package/dist/routes/workspace-integrations.d.ts +35 -0
- package/dist/routes/workspace-model-providers.d.ts +4 -0
- package/dist/routes/workspaces.d.ts +11 -2
- package/dist/sandbox/agent-update.d.ts +64 -0
- package/dist/sandbox/auth-callout.d.ts +8 -0
- package/dist/sandbox/channel-a.d.ts +15 -1
- package/dist/sandbox/enrollment.d.ts +26 -4
- package/dist/sandbox/machine-audience.d.ts +29 -0
- package/dist/sandbox/machines.d.ts +15 -2
- package/dist/sandbox/metrics-ingestion.d.ts +6 -2
- package/dist/sandbox/screen-control.d.ts +85 -0
- package/dist/sandbox/viewer.d.ts +5 -1
- package/dist/sandbox-file-artifacts.d.ts +17 -1
- package/dist/scheduled-task-blockers.d.ts +39 -0
- package/dist/scheduled-task-deletion.d.ts +3 -4
- package/dist/scheduled-task-lifecycle.d.ts +14 -0
- package/dist/secret-answers.d.ts +40 -0
- package/dist/session-create-observability.d.ts +5 -0
- package/dist/session-event-view-36GO3IL7.js +528 -0
- package/dist/session-event-view-36GO3IL7.js.map +1 -0
- package/dist/signed-state-secret.d.ts +18 -0
- package/dist/site-agent-guard.d.ts +53 -0
- package/dist/site-data/operations.d.ts +103 -0
- package/dist/site-data/service.d.ts +203 -0
- package/dist/site-frame-guard.d.ts +32 -0
- package/dist/site-publishing/agent-data-tools.d.ts +84 -0
- package/dist/site-publishing/agent-model.d.ts +58 -0
- package/dist/site-publishing/agent-session.d.ts +16 -0
- package/dist/site-publishing/content-scanner.d.ts +31 -0
- package/dist/site-publishing/edge-sync.d.ts +48 -0
- package/dist/site-publishing/gateway-signature.d.ts +56 -0
- package/dist/site-publishing/limits.d.ts +63 -0
- package/dist/site-publishing/page-tool-authority.d.ts +30 -0
- package/dist/site-publishing/platform-usage.d.ts +113 -0
- package/dist/site-publishing/platform.d.ts +21 -0
- package/dist/site-publishing/readiness.d.ts +62 -0
- package/dist/site-publishing/runtime.d.ts +179 -0
- package/dist/site-publishing/service.d.ts +264 -0
- package/dist/site-publishing/session-events.d.ts +22 -0
- package/dist/site-publishing/session-views.d.ts +36 -0
- package/dist/site-publishing/viewer.d.ts +40 -0
- package/dist/site-session-origin.d.ts +31 -6
- package/dist/site-sql/format.d.ts +47 -0
- package/dist/site-sql/gateway.d.ts +50 -0
- package/dist/site-sql/service.d.ts +213 -0
- package/dist/temporal-schedule-sync.d.ts +26 -0
- package/dist/transcription/billing-refusal.d.ts +8 -0
- package/dist/transcription/normalize.d.ts +23 -0
- package/dist/transcription/providers/azure-mai.d.ts +12 -0
- package/dist/transcription/providers/azure-openai.d.ts +4 -0
- package/dist/transcription/providers/openai.d.ts +16 -0
- package/dist/transcription/providers/subscription-core.d.ts +39 -0
- package/dist/transcription/service.d.ts +10 -1
- package/dist/transcription/wav-duration.d.ts +8 -0
- package/dist/workspace-tool-gateway-attestations.d.ts +37 -0
- package/dist/workspace-tool-gateway-observability.d.ts +16 -0
- package/dist/workspace-tool-gateway-secrets.d.ts +27 -0
- package/dist/workspace-tool-gateway.d.ts +102 -6
- package/dist/workspace-tool-target-fence.d.ts +116 -0
- package/dist/workspace-tool-target.d.ts +225 -0
- package/dist/workspace-webhook-dispatch.d.ts +26 -0
- package/dist/xai-subscription-core.d.ts +60 -0
- package/package.json +25 -20
- package/src/access-grant-rls.ts +64 -14
- package/src/admission-trace.ts +14 -0
- package/src/app.ts +1684 -252
- package/src/artifact-catalog-cursor.ts +1 -0
- package/src/attached-browser-viewer.ts +26 -0
- package/src/auth/managed-auth-attempt-context.ts +9 -0
- package/src/auth/managed-auth-rate-limits.ts +252 -0
- package/src/auth/managed-auth-session-adapter.ts +64 -29
- package/src/auth/managed-auth.ts +303 -35
- package/src/auth/managed-email.ts +18 -1
- 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 +3 -3
- package/src/auth/signup-funnel-metrics.ts +164 -0
- package/src/azure-live.ts +103 -0
- package/src/browser-action-fences.ts +45 -0
- package/src/browser-controller-authority.ts +1 -186
- package/src/browser-ephemeral.ts +39 -0
- package/src/browser-lost-runtime-end.ts +71 -0
- package/src/browser-state-authority.ts +1 -236
- package/src/claude-default-models.ts +37 -0
- package/src/claude-subscription-core.ts +154 -0
- package/src/claude-subscription-oauth.ts +352 -0
- package/src/claude-subscription-profile.ts +73 -0
- package/src/claude-subscription-usage.ts +51 -0
- package/src/claude-workspace-connection.ts +82 -0
- package/src/codemode.ts +236 -39
- package/src/codex-realtime.ts +181 -53
- package/src/codex-session-pointers.ts +80 -0
- package/src/company-brain-okf.ts +1 -1
- package/src/connected-machine-computer-access.ts +2 -1
- package/src/connection-ownership.ts +19 -13
- package/src/controller-data-plane.ts +34 -0
- package/src/credit-promotion-snapshot.ts +36 -0
- package/src/editable-artifact-production.ts +10 -0
- package/src/editable-artifact-source-session.ts +123 -0
- package/src/editable-artifact-websocket.ts +16 -3
- package/src/fatal-process-boundary.ts +67 -3
- package/src/gateway-realtime.ts +12 -8
- package/src/github-access.ts +31 -5
- package/src/github-browser-flow.ts +1 -1
- package/src/http/acting-person.ts +105 -0
- package/src/http/api-contract-compat.ts +49 -0
- package/src/http/api-error.ts +210 -2
- package/src/http/auth.ts +68 -4
- package/src/http/cors.ts +37 -5
- package/src/http/deprecation.ts +118 -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/rejection-telemetry.ts +120 -0
- package/src/http/request-body.ts +127 -0
- package/src/http/request-source.ts +154 -13
- package/src/http/sse.ts +88 -28
- package/src/http/unmatched-route.ts +60 -0
- package/src/http/user-content.ts +158 -0
- package/src/http/variable-sets-removed.ts +122 -0
- package/src/http/websocket-upgrade-dispatch.ts +29 -0
- package/src/index.ts +107 -57
- package/src/integration-connect-metrics.ts +228 -0
- package/src/integration-endpoint-test.ts +291 -0
- package/src/integrations/api-integrations.ts +81 -7
- package/src/integrations/atlassian.ts +202 -83
- package/src/integrations/fiken.ts +66 -38
- package/src/integrations/github-app-connect.ts +64 -18
- package/src/integrations/github-lens-connect.ts +8 -29
- package/src/integrations/google-drive.ts +448 -152
- package/src/integrations/integration-commit-authority.ts +69 -0
- package/src/integrations/marketplace-plugin.ts +1 -1
- package/src/integrations/oauth-client.ts +733 -193
- package/src/integrations/oauth-profiles.ts +116 -45
- package/src/integrations/onepassword-vault-provider.ts +16 -0
- package/src/integrations/personal-github-repositories.ts +1 -1
- package/src/integrations/personal-github.ts +61 -35
- package/src/integrations/provider-oauth.ts +67 -85
- package/src/integrations/slack-app-home.ts +5 -5
- package/src/integrations/slack-bot.ts +893 -201
- package/src/integrations/slack-file-upload-flow.ts +147 -0
- package/src/integrations/slack-install.ts +7 -7
- package/src/integrations/slack-interactions.ts +1589 -299
- package/src/integrations/slack-mrkdwn.ts +193 -0
- package/src/integrations/slack-routing.ts +2 -2
- package/src/integrations/slack-session-defaults.ts +224 -0
- package/src/integrations/slack-task-file-upload.ts +323 -0
- package/src/integrations/slack-tool-review.ts +65 -0
- package/src/integrations/social-oauth.ts +90 -58
- package/src/interaction-agent-access.ts +40 -20
- package/src/interaction-agent-version.ts +85 -0
- package/src/interaction-holder-heartbeat.ts +24 -8
- package/src/interaction-metrics.ts +164 -2
- package/src/interaction-route-stages.ts +94 -0
- package/src/interaction-secrets-vault.ts +213 -0
- package/src/interaction-secrets.ts +426 -0
- package/src/mcp/action-catalog-types.ts +14 -0
- package/src/mcp/action-catalog.gen.ts +8014 -0
- package/src/mcp/action-descriptions.ts +299 -0
- package/src/mcp/action-schema-imports.gen.ts +304 -0
- package/src/mcp/capability-account-readiness.ts +17 -0
- package/src/mcp/child-read-evidence.ts +19 -0
- package/src/mcp/company-profile-agent-admin.ts +13 -0
- package/src/mcp/contract-input.ts +165 -0
- package/src/mcp/documents.ts +9 -2
- package/src/mcp/editable-artifacts.ts +29 -11
- package/src/mcp/files.ts +5 -1
- package/src/mcp/first-party-tool-permissions.ts +7 -285
- package/src/mcp/knowledge-entries.ts +108 -34
- package/src/mcp/notification-tools.ts +480 -0
- package/src/mcp/orchestration-failure-diagnostic.ts +43 -0
- package/src/mcp/scheduled-task-input.ts +89 -0
- package/src/mcp/scheduled-task-view.ts +63 -3
- package/src/mcp/secret-tools.ts +185 -0
- package/src/mcp/server.ts +2213 -1116
- package/src/mcp/session-admin-access-tools.ts +163 -0
- package/src/mcp/session-event-errors.ts +123 -0
- package/src/mcp/session-event-view.ts +395 -13
- package/src/mcp/session-view.ts +3 -0
- package/src/mcp/session-wait.ts +67 -7
- package/src/mcp/site-agent-clamp-tools.ts +140 -0
- package/src/mcp/site-data-tools.ts +339 -0
- package/src/mcp/site-publication-tools.ts +201 -0
- package/src/mcp/site-sql-tools.ts +427 -0
- package/src/mcp-oauth.ts +635 -45
- package/src/model-calls/chat-completions.ts +352 -0
- package/src/model-calls/pending-usage-settlements.ts +125 -0
- package/src/model-calls/service.ts +694 -0
- package/src/model-catalog.ts +68 -17
- package/src/native-push-dispatch.ts +457 -0
- package/src/observability.ts +15 -1
- package/src/organization-mcp.ts +485 -0
- package/src/prepared-mcp-actor.ts +154 -0
- package/src/prepared-mcp-permissions.ts +38 -0
- package/src/routes/analytics-consent.ts +123 -0
- package/src/routes/api-integrations.ts +268 -9
- package/src/routes/api-keys.ts +164 -25
- package/src/routes/artifact-catalog.ts +111 -0
- package/src/routes/automations.ts +163 -90
- package/src/routes/billing.ts +535 -59
- package/src/routes/browser-sessions.ts +966 -342
- package/src/routes/canonical-human-identities.ts +61 -0
- package/src/routes/capabilities.ts +112 -5
- package/src/routes/channels.ts +4 -3
- package/src/routes/chat-completions.ts +235 -0
- package/src/routes/claude-core-usage.ts +147 -0
- package/src/routes/claude-subscription-accounts.ts +233 -0
- package/src/routes/claude-subscription-oauth.ts +175 -0
- package/src/routes/client-errors.ts +394 -0
- package/src/routes/codex-core.ts +687 -0
- package/src/routes/codex.ts +1277 -1119
- package/src/routes/company-brain.ts +4 -0
- package/src/routes/computer-sessions.ts +319 -85
- package/src/routes/connect.ts +277 -175
- package/src/routes/connections.ts +690 -363
- package/src/routes/desktop-distribution.ts +217 -0
- package/src/routes/documents.ts +13 -7
- package/src/routes/editable-artifacts.ts +74 -4
- package/src/routes/enrollments.ts +110 -16
- package/src/routes/external-identity-links.ts +13 -12
- package/src/routes/files.ts +41 -16
- package/src/routes/github-browser-fonts.gen.ts +12 -0
- package/src/routes/github-browser-pages.ts +258 -0
- package/src/routes/github.ts +200 -75
- package/src/routes/inbox.ts +353 -0
- package/src/routes/insights-response-cache.ts +83 -0
- package/src/routes/insights-usage.ts +345 -0
- package/src/routes/insights.ts +103 -8
- package/src/routes/install.ts +51 -10
- package/src/routes/integration-facets.ts +70 -28
- package/src/routes/interaction-placement-message.ts +12 -0
- package/src/routes/knowledge.ts +136 -27
- package/src/routes/machines.ts +189 -135
- package/src/routes/managed-auth-session-sets.ts +43 -10
- package/src/routes/managed-onboarding.ts +39 -19
- package/src/routes/managed-sign-in-methods.ts +433 -0
- package/src/routes/memory-slack-publications.ts +3 -2
- package/src/routes/model-account-choice.ts +194 -0
- package/src/routes/model-account-settings.ts +235 -0
- package/src/routes/model-connection-access.ts +210 -48
- package/src/routes/native-app-auth.ts +296 -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 +183 -0
- package/src/routes/organization-memberships.ts +205 -19
- package/src/routes/organization-model-defaults.ts +110 -0
- package/src/routes/organization-model-providers.ts +74 -3
- package/src/routes/organization-service-accounts.ts +128 -0
- package/src/routes/organization-sessions.ts +21 -5
- package/src/routes/personal-api-keys.ts +184 -0
- package/src/routes/personal-github-git-broker.ts +2 -2
- package/src/routes/personal-github.ts +9 -4
- package/src/routes/plugins.ts +46 -7
- package/src/routes/pr-review-github.ts +105 -118
- package/src/routes/pr-review.ts +88 -82
- package/src/routes/preference-registry.ts +18 -0
- package/src/routes/rigs.ts +48 -13
- package/src/routes/scheduled-tasks.ts +347 -27
- package/src/routes/session-admin-access.ts +271 -0
- package/src/routes/session-artifact-associations.ts +164 -0
- package/src/routes/session-history-imports.ts +305 -0
- package/src/routes/sessions.ts +1682 -363
- package/src/routes/site-data.ts +340 -0
- package/src/routes/site-publishing.ts +584 -0
- package/src/routes/site-runtime.ts +1944 -0
- package/src/routes/site-sql.ts +263 -0
- package/src/routes/skill-content.ts +72 -7
- package/src/routes/skills.ts +5 -4
- package/src/routes/slack-bot-access.ts +108 -0
- package/src/routes/social.ts +27 -15
- package/src/routes/subscription-account-pools.ts +209 -0
- package/src/routes/subscription-core-http.ts +18 -0
- package/src/routes/subscription-pool-access.ts +180 -0
- package/src/routes/subscription-pool-core.ts +552 -0
- package/src/routes/supergrok.ts +174 -655
- package/src/routes/transcription-recordings.ts +71 -4
- package/src/routes/transcriptions.ts +26 -2
- package/src/routes/usage-allowances.ts +381 -0
- package/src/routes/variable-sets-removed.ts +19 -0
- package/src/routes/vault-providers.ts +782 -0
- package/src/routes/vaults.ts +421 -0
- package/src/routes/video-generation.ts +30 -12
- package/src/routes/workspace-artifacts.ts +165 -53
- package/src/routes/workspace-integrations.ts +576 -0
- package/src/routes/workspace-model-providers.ts +148 -0
- package/src/routes/workspace-state.ts +4 -0
- package/src/routes/workspaces.ts +625 -117
- package/src/sandbox/agent-update.ts +315 -0
- package/src/sandbox/auth-callout.ts +104 -21
- package/src/sandbox/channel-a.ts +165 -55
- package/src/sandbox/enrollment.ts +131 -22
- package/src/sandbox/machine-audience.ts +192 -0
- package/src/sandbox/machines.ts +75 -31
- package/src/sandbox/metrics-ingestion.ts +133 -2
- package/src/sandbox/rematerialize.ts +51 -21
- package/src/sandbox/screen-control.ts +289 -0
- package/src/sandbox/viewer.ts +33 -58
- package/src/sandbox-file-artifacts.ts +53 -27
- package/src/scheduled-task-blockers.ts +293 -0
- package/src/scheduled-task-deletion.ts +13 -3
- package/src/scheduled-task-lifecycle.ts +84 -0
- package/src/secret-answers.ts +119 -0
- package/src/session-create-observability.ts +46 -0
- package/src/session-realtime-context.ts +26 -4
- package/src/signed-state-secret.ts +58 -0
- package/src/site-agent-guard.ts +261 -0
- package/src/site-data/operations.ts +777 -0
- package/src/site-data/service.ts +1043 -0
- package/src/site-frame-guard.ts +107 -0
- package/src/site-publishing/agent-data-tools.ts +250 -0
- package/src/site-publishing/agent-model.ts +127 -0
- package/src/site-publishing/agent-session.ts +148 -0
- package/src/site-publishing/content-scanner.ts +93 -0
- package/src/site-publishing/edge-sync.ts +148 -0
- package/src/site-publishing/gateway-signature.ts +198 -0
- package/src/site-publishing/limits.ts +315 -0
- package/src/site-publishing/page-tool-authority.ts +111 -0
- package/src/site-publishing/platform-usage.ts +479 -0
- package/src/site-publishing/platform.ts +98 -0
- package/src/site-publishing/readiness.ts +330 -0
- package/src/site-publishing/runtime.ts +831 -0
- package/src/site-publishing/service.ts +1282 -0
- package/src/site-publishing/session-events.ts +262 -0
- package/src/site-publishing/session-views.ts +262 -0
- package/src/site-publishing/viewer.ts +75 -0
- package/src/site-session-origin.ts +91 -6
- package/src/site-sql/format.ts +134 -0
- package/src/site-sql/gateway.ts +168 -0
- package/src/site-sql/service.ts +1636 -0
- package/src/site-uploads.ts +27 -5
- package/src/temporal-schedule-sync.ts +74 -0
- package/src/transcription/billing-refusal.ts +14 -0
- package/src/transcription/normalize.ts +77 -0
- package/src/transcription/providers/azure-mai.ts +98 -0
- package/src/transcription/providers/azure-openai.ts +16 -7
- package/src/transcription/providers/codex-subscription.ts +190 -67
- package/src/transcription/providers/openai.ts +79 -5
- package/src/transcription/providers/subscription-core.ts +125 -0
- package/src/transcription/providers/xai-subscription.ts +81 -83
- package/src/transcription/segmenter.ts +7 -1
- package/src/transcription/service.ts +239 -10
- package/src/transcription/wav-duration.ts +39 -0
- package/src/workspace-deletion.ts +25 -1
- package/src/workspace-tool-gateway-attestations.ts +133 -0
- package/src/workspace-tool-gateway-observability.ts +64 -0
- package/src/workspace-tool-gateway-secrets.ts +104 -0
- package/src/workspace-tool-gateway.ts +921 -103
- package/src/workspace-tool-target-fence.ts +380 -0
- package/src/workspace-tool-target.ts +554 -0
- package/src/workspace-webhook-dispatch.ts +225 -0
- package/src/xai-realtime.ts +85 -81
- package/src/xai-subscription-core.ts +172 -0
- package/dist/browser-auth-broker.d.ts +0 -20
- package/dist/chunk-AJ62T5QN.js.map +0 -1
- package/dist/connection-authority-owner.d.ts +0 -59
- package/dist/routes/connection-authorities.d.ts +0 -3
- package/dist/routes/environments.d.ts +0 -5
- package/dist/routes/host-mcp-bindings.d.ts +0 -5
- package/dist/routes/host-mcp-resolvers.d.ts +0 -3
- package/dist/routes/packs.d.ts +0 -3
- package/dist/session-event-view-MU3HMNV3.js +0 -264
- package/dist/session-event-view-MU3HMNV3.js.map +0 -1
- package/dist/xai-subscription-auth.d.ts +0 -23
- package/src/browser-auth-broker.ts +0 -155
- package/src/connection-authority-owner.ts +0 -61
- package/src/routes/connection-authorities.ts +0 -139
- package/src/routes/environments.ts +0 -388
- package/src/routes/host-mcp-bindings.ts +0 -122
- package/src/routes/host-mcp-resolvers.ts +0 -41
- package/src/routes/packs.ts +0 -784
- package/src/xai-subscription-auth.ts +0 -139
|
@@ -0,0 +1,305 @@
|
|
|
1
|
+
import {
|
|
2
|
+
AppendArchivedSessionEventsRequest,
|
|
3
|
+
ImportArchivedSessionRequest,
|
|
4
|
+
SESSION_HISTORY_IMPORT_MAX_BODY_BYTES,
|
|
5
|
+
} from "@opengeni/contracts";
|
|
6
|
+
import { ExternalIdentityReference } from "@opengeni/contracts/external-identities";
|
|
7
|
+
import { SessionArchivedError } from "@opengeni/db";
|
|
8
|
+
import {
|
|
9
|
+
accountScopedApiKeyWorkspaceAuthority,
|
|
10
|
+
ArchivedSessionImportError,
|
|
11
|
+
appendArchivedSessionEventsForRequest,
|
|
12
|
+
externalAttributionForAuthorization,
|
|
13
|
+
importArchivedSessionForRequest,
|
|
14
|
+
isVerifiedOrganizationServiceAuthorization,
|
|
15
|
+
requireAccessContext,
|
|
16
|
+
requireAccessGrantAuthorization,
|
|
17
|
+
requireResolvedAccessGrantAuthorization,
|
|
18
|
+
SessionAuthorizationDeniedError,
|
|
19
|
+
SessionAuthorizationUnavailableError,
|
|
20
|
+
SessionTenancyManagedHumanRequiredError,
|
|
21
|
+
type AccessGrantAuthorization,
|
|
22
|
+
type ApiRouteDeps,
|
|
23
|
+
} from "@opengeni/core";
|
|
24
|
+
import {
|
|
25
|
+
findWorkspaceByExternalIdentity,
|
|
26
|
+
SessionTenancyNotActivatedError,
|
|
27
|
+
withAccountRls,
|
|
28
|
+
} from "@opengeni/db";
|
|
29
|
+
import type { Context, Hono } from "hono";
|
|
30
|
+
import { HTTPException } from "hono/http-exception";
|
|
31
|
+
|
|
32
|
+
/** Exact server-only routes with their own bounded, streaming JSON ingress. */
|
|
33
|
+
export function isSessionHistoryImportRequest(method: string, pathname: string): boolean {
|
|
34
|
+
return (
|
|
35
|
+
method === "POST" &&
|
|
36
|
+
/^\/v1\/workspaces\/(?:[^/]+|external\/[^/]+\/[^/]+)\/session-imports(?:\/[^/]+\/events)?$/.test(
|
|
37
|
+
pathname,
|
|
38
|
+
)
|
|
39
|
+
);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
class InvalidSessionImportRequestError extends Error {
|
|
43
|
+
constructor() {
|
|
44
|
+
super("Invalid archived session import request.");
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/** Resolve an existing organization-local mapping, never provision a tenant. */
|
|
49
|
+
async function resolveWorkspace(c: Context, deps: ApiRouteDeps): Promise<string> {
|
|
50
|
+
const workspaceId = c.req.param("workspaceId");
|
|
51
|
+
if (workspaceId) return workspaceId;
|
|
52
|
+
const context = await requireAccessContext(c, deps);
|
|
53
|
+
const organizationKey = accountScopedApiKeyWorkspaceAuthority(context);
|
|
54
|
+
// The canonical resolver routes every external-actor header through API-key
|
|
55
|
+
// authentication before considering delegated tokens or browser cookies.
|
|
56
|
+
// Thus this account comes from an authenticated asUser context, not a label.
|
|
57
|
+
const externalAccountId =
|
|
58
|
+
c.req.header("x-opengeni-external-actor") !== undefined ? context.defaultAccountId : null;
|
|
59
|
+
const accountId = organizationKey?.accountId ?? externalAccountId;
|
|
60
|
+
if (!accountId) throw new HTTPException(404, { message: "Workspace not found" });
|
|
61
|
+
const reference = ExternalIdentityReference.safeParse({
|
|
62
|
+
source: c.req.param("source"),
|
|
63
|
+
externalId: c.req.param("externalId"),
|
|
64
|
+
});
|
|
65
|
+
if (!reference.success) throw new InvalidSessionImportRequestError();
|
|
66
|
+
const workspace = await withAccountRls(deps.db, accountId, (tx) =>
|
|
67
|
+
findWorkspaceByExternalIdentity(tx, {
|
|
68
|
+
accountId,
|
|
69
|
+
externalSource: reference.data.source,
|
|
70
|
+
externalId: reference.data.externalId,
|
|
71
|
+
}),
|
|
72
|
+
);
|
|
73
|
+
if (!workspace) throw new HTTPException(404, { message: "Workspace not found" });
|
|
74
|
+
return workspace.id;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/** Integration provenance is required even when another principal has create. */
|
|
78
|
+
async function authorize(
|
|
79
|
+
c: Context,
|
|
80
|
+
deps: ApiRouteDeps,
|
|
81
|
+
workspaceId: string,
|
|
82
|
+
permission: "sessions:create" | "sessions:control",
|
|
83
|
+
): Promise<AccessGrantAuthorization> {
|
|
84
|
+
const context = await requireAccessContext(c, deps);
|
|
85
|
+
const authorization = await requireAccessGrantAuthorization(c, deps, workspaceId, permission);
|
|
86
|
+
const grant = requireResolvedAccessGrantAuthorization(authorization, workspaceId);
|
|
87
|
+
// credential is emitted only by authenticated API-key resolution. Delegated
|
|
88
|
+
// grant shapes, browser cookies, service labels and agent metadata confer none.
|
|
89
|
+
const workspaceKey =
|
|
90
|
+
context.credential?.kind === "workspace_api_key" &&
|
|
91
|
+
context.credential.accountId === grant.accountId &&
|
|
92
|
+
context.credential.workspaceId === workspaceId;
|
|
93
|
+
if (
|
|
94
|
+
grant.principalKind === "agent_attempt" ||
|
|
95
|
+
grant.metadata?.sessionId !== undefined ||
|
|
96
|
+
!(
|
|
97
|
+
workspaceKey ||
|
|
98
|
+
isVerifiedOrganizationServiceAuthorization(authorization) ||
|
|
99
|
+
externalAttributionForAuthorization(authorization, grant)
|
|
100
|
+
)
|
|
101
|
+
) {
|
|
102
|
+
throw new HTTPException(403, { message: "Session import requires an integration principal" });
|
|
103
|
+
}
|
|
104
|
+
return authorization;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
/** Count raw UTF-8 bytes before decoding or parsing, including chunked bodies. */
|
|
108
|
+
export async function readSessionHistoryImportJson(request: Request): Promise<unknown> {
|
|
109
|
+
const declaredLength = request.headers.get("content-length");
|
|
110
|
+
if (declaredLength !== null) {
|
|
111
|
+
const length = Number(declaredLength);
|
|
112
|
+
if (!/^\d+$/.test(declaredLength) || !Number.isSafeInteger(length) || length < 0) {
|
|
113
|
+
throw new InvalidSessionImportRequestError();
|
|
114
|
+
}
|
|
115
|
+
if (length > SESSION_HISTORY_IMPORT_MAX_BODY_BYTES) {
|
|
116
|
+
await request.body?.cancel().catch(() => undefined);
|
|
117
|
+
throw new InvalidSessionImportRequestError();
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
if (!request.body) throw new InvalidSessionImportRequestError();
|
|
121
|
+
const reader = request.body.getReader();
|
|
122
|
+
// A fixed byte buffer also bounds allocation overhead for one-byte chunks.
|
|
123
|
+
const bytes = new Uint8Array(SESSION_HISTORY_IMPORT_MAX_BODY_BYTES);
|
|
124
|
+
let total = 0;
|
|
125
|
+
for (;;) {
|
|
126
|
+
const next = await reader.read().catch(() => {
|
|
127
|
+
throw new InvalidSessionImportRequestError();
|
|
128
|
+
});
|
|
129
|
+
if (next.done) break;
|
|
130
|
+
if (next.value.byteLength > SESSION_HISTORY_IMPORT_MAX_BODY_BYTES - total) {
|
|
131
|
+
await reader.cancel().catch(() => undefined);
|
|
132
|
+
throw new InvalidSessionImportRequestError();
|
|
133
|
+
}
|
|
134
|
+
bytes.set(next.value, total);
|
|
135
|
+
total += next.value.byteLength;
|
|
136
|
+
}
|
|
137
|
+
// Bun's server request reader can throw from releaseLock(); this request-local
|
|
138
|
+
// reader is discarded after complete consumption or cancellation instead.
|
|
139
|
+
try {
|
|
140
|
+
return JSON.parse(
|
|
141
|
+
new TextDecoder("utf-8", { fatal: true }).decode(bytes.subarray(0, total)),
|
|
142
|
+
) as unknown;
|
|
143
|
+
} catch {
|
|
144
|
+
throw new InvalidSessionImportRequestError();
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
export const SESSION_ARCHIVED_MESSAGE =
|
|
149
|
+
"This session is archived and read-only. Start a new session to continue the work.";
|
|
150
|
+
export const SESSION_IMPORTED_MESSAGE = "Imported session history is read-only";
|
|
151
|
+
|
|
152
|
+
export type ReadOnlySessionRefusal = {
|
|
153
|
+
code: "SESSION_ARCHIVED_READ_ONLY" | "SESSION_IMPORTED_READ_ONLY";
|
|
154
|
+
message: string;
|
|
155
|
+
};
|
|
156
|
+
|
|
157
|
+
/**
|
|
158
|
+
* Classifies a write refused because its session is read-only (archived or an
|
|
159
|
+
* imported history), for HTTP responses and agent tool results alike.
|
|
160
|
+
*/
|
|
161
|
+
export function readOnlySessionRefusal(error: unknown): ReadOnlySessionRefusal | null {
|
|
162
|
+
// SQLSTATE OG002 is also used for unrelated admission refusals. Match the
|
|
163
|
+
// archive guard's closed message on the exact driver error, including a
|
|
164
|
+
// wrapped cause, rather than exposing SQL text or reclassifying every OG002.
|
|
165
|
+
const seen = new Set<object>();
|
|
166
|
+
let candidate = error;
|
|
167
|
+
while (candidate && typeof candidate === "object" && !seen.has(candidate)) {
|
|
168
|
+
seen.add(candidate);
|
|
169
|
+
const failure = candidate as { code?: unknown; message?: unknown; cause?: unknown };
|
|
170
|
+
if (failure.code === "OG002" && failure.message === "SESSION_IMPORTED_READ_ONLY") {
|
|
171
|
+
return { code: "SESSION_IMPORTED_READ_ONLY", message: SESSION_IMPORTED_MESSAGE };
|
|
172
|
+
}
|
|
173
|
+
if (
|
|
174
|
+
candidate instanceof SessionArchivedError ||
|
|
175
|
+
(failure.code === "SESSION_ARCHIVED_READ_ONLY" &&
|
|
176
|
+
(candidate as { name?: unknown }).name === "SessionArchivedError") ||
|
|
177
|
+
(failure.code === "OG002" && failure.message === "SESSION_ARCHIVED_READ_ONLY")
|
|
178
|
+
) {
|
|
179
|
+
return { code: "SESSION_ARCHIVED_READ_ONLY", message: SESSION_ARCHIVED_MESSAGE };
|
|
180
|
+
}
|
|
181
|
+
candidate = failure.cause;
|
|
182
|
+
}
|
|
183
|
+
return null;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
/** Also used by the composed API for imported- and archived-session Send/Steer refusals. */
|
|
187
|
+
export function archivedSessionImportErrorResponse(c: Context, error: unknown): Response | null {
|
|
188
|
+
const readOnly = readOnlySessionRefusal(error);
|
|
189
|
+
if (readOnly) return c.json(readOnly, 409);
|
|
190
|
+
const domainError =
|
|
191
|
+
error instanceof ArchivedSessionImportError
|
|
192
|
+
? error
|
|
193
|
+
: error instanceof HTTPException && error.cause instanceof ArchivedSessionImportError
|
|
194
|
+
? error.cause
|
|
195
|
+
: null;
|
|
196
|
+
if (!domainError) return null;
|
|
197
|
+
if (domainError.code === "SESSION_IMPORT_INVALID_FILE") {
|
|
198
|
+
return c.json(
|
|
199
|
+
{
|
|
200
|
+
code: "INVALID_SESSION_IMPORT_REQUEST",
|
|
201
|
+
message: "Invalid archived session import request.",
|
|
202
|
+
},
|
|
203
|
+
422,
|
|
204
|
+
);
|
|
205
|
+
}
|
|
206
|
+
if (domainError.code === "SESSION_IMPORT_NOT_FOUND") {
|
|
207
|
+
return c.json(
|
|
208
|
+
{ code: "SESSION_IMPORT_NOT_FOUND", message: "Imported session not found." },
|
|
209
|
+
404,
|
|
210
|
+
);
|
|
211
|
+
}
|
|
212
|
+
return c.json({ code: domainError.code, message: domainError.message }, 409);
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
function routeError(c: Context, error: unknown): Response {
|
|
216
|
+
const domainResponse = archivedSessionImportErrorResponse(c, error);
|
|
217
|
+
if (domainResponse) return domainResponse;
|
|
218
|
+
if (error instanceof InvalidSessionImportRequestError) {
|
|
219
|
+
return c.json(
|
|
220
|
+
{
|
|
221
|
+
code: "INVALID_SESSION_IMPORT_REQUEST",
|
|
222
|
+
message: "Invalid archived session import request.",
|
|
223
|
+
},
|
|
224
|
+
422,
|
|
225
|
+
);
|
|
226
|
+
}
|
|
227
|
+
if (error instanceof SessionTenancyManagedHumanRequiredError) {
|
|
228
|
+
return c.json(
|
|
229
|
+
{
|
|
230
|
+
code: "SESSION_IMPORT_FORBIDDEN",
|
|
231
|
+
message: "Private imports require an authenticated owning user.",
|
|
232
|
+
},
|
|
233
|
+
403,
|
|
234
|
+
);
|
|
235
|
+
}
|
|
236
|
+
if (error instanceof SessionTenancyNotActivatedError) {
|
|
237
|
+
return c.json(
|
|
238
|
+
{
|
|
239
|
+
code: "SESSION_TENANCY_NOT_ACTIVATED",
|
|
240
|
+
message: "Private sessions are not enabled for this organization.",
|
|
241
|
+
},
|
|
242
|
+
409,
|
|
243
|
+
);
|
|
244
|
+
}
|
|
245
|
+
if (error instanceof SessionAuthorizationDeniedError) {
|
|
246
|
+
return c.json(
|
|
247
|
+
{ code: "SESSION_IMPORT_NOT_FOUND", message: "Imported session not found." },
|
|
248
|
+
404,
|
|
249
|
+
);
|
|
250
|
+
}
|
|
251
|
+
if (error instanceof SessionAuthorizationUnavailableError) {
|
|
252
|
+
throw new HTTPException(503, { message: "Session authorization is unavailable" });
|
|
253
|
+
}
|
|
254
|
+
throw error;
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
export function registerSessionHistoryImportRoutes(app: Hono, deps: ApiRouteDeps): void {
|
|
258
|
+
for (const base of [
|
|
259
|
+
"/v1/workspaces/:workspaceId/session-imports",
|
|
260
|
+
"/v1/workspaces/external/:source/:externalId/session-imports",
|
|
261
|
+
]) {
|
|
262
|
+
app.post(base, async (c) => {
|
|
263
|
+
try {
|
|
264
|
+
const workspaceId = await resolveWorkspace(c, deps);
|
|
265
|
+
const authorization = await authorize(c, deps, workspaceId, "sessions:create");
|
|
266
|
+
const parsed = ImportArchivedSessionRequest.safeParse(
|
|
267
|
+
await readSessionHistoryImportJson(c.req.raw),
|
|
268
|
+
);
|
|
269
|
+
if (!parsed.success) throw new InvalidSessionImportRequestError();
|
|
270
|
+
const response = await importArchivedSessionForRequest(
|
|
271
|
+
deps,
|
|
272
|
+
authorization,
|
|
273
|
+
workspaceId,
|
|
274
|
+
parsed.data,
|
|
275
|
+
);
|
|
276
|
+
return c.json(response, response.created ? 201 : 200);
|
|
277
|
+
} catch (error) {
|
|
278
|
+
return routeError(c, error);
|
|
279
|
+
}
|
|
280
|
+
});
|
|
281
|
+
app.post(`${base}/:importId/events`, async (c) => {
|
|
282
|
+
try {
|
|
283
|
+
const workspaceId = await resolveWorkspace(c, deps);
|
|
284
|
+
const authorization = await authorize(c, deps, workspaceId, "sessions:control");
|
|
285
|
+
const importId = c.req.param("importId");
|
|
286
|
+
if (!importId || importId.length > 200) throw new InvalidSessionImportRequestError();
|
|
287
|
+
const parsed = AppendArchivedSessionEventsRequest.safeParse(
|
|
288
|
+
await readSessionHistoryImportJson(c.req.raw),
|
|
289
|
+
);
|
|
290
|
+
if (!parsed.success) throw new InvalidSessionImportRequestError();
|
|
291
|
+
return c.json(
|
|
292
|
+
await appendArchivedSessionEventsForRequest(
|
|
293
|
+
deps,
|
|
294
|
+
authorization,
|
|
295
|
+
workspaceId,
|
|
296
|
+
importId,
|
|
297
|
+
parsed.data,
|
|
298
|
+
),
|
|
299
|
+
);
|
|
300
|
+
} catch (error) {
|
|
301
|
+
return routeError(c, error);
|
|
302
|
+
}
|
|
303
|
+
});
|
|
304
|
+
}
|
|
305
|
+
}
|