@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,5 +1,5 @@
|
|
|
1
|
-
import { ClientSessionEvent, SteerSessionMessageRequest, type SessionGoalRevision, type SessionAuthorizationOperation } from "@opengeni/contracts";
|
|
2
|
-
import { type SessionDiscoveryCursor } from "@opengeni/db";
|
|
1
|
+
import { ClientSessionEvent, SessionScopeSubjectId, SteerSessionMessageRequest, type SessionStatus, type WorkClaimSubjectFilter, type SessionGoalRevision, type SessionAuthorizationOperation } from "@opengeni/contracts";
|
|
2
|
+
import { decodeSessionListCursor, type SessionDiscoveryCursor } from "@opengeni/db";
|
|
3
3
|
import type { Context, Hono } from "hono";
|
|
4
4
|
import type { ApiRouteDeps } from "@opengeni/core";
|
|
5
5
|
import { type ViewerServices } from "../sandbox/viewer.js";
|
|
@@ -12,16 +12,54 @@ export declare function goalProposalMatchesExpectedRevision(revision: Pick<Sessi
|
|
|
12
12
|
* host-managed mode; standalone deployments never consult this classifier.
|
|
13
13
|
*/
|
|
14
14
|
export declare function sessionAuthorizationOperationForHttp(method: string, pathname: string, sessionId: string): SessionAuthorizationOperation | null;
|
|
15
|
+
export declare function sessionTenancyHttpError(error: unknown): Error;
|
|
16
|
+
export declare function sessionListQuery(query: Record<string, string>, allowCursor?: boolean): {
|
|
17
|
+
originSiteId: string | undefined;
|
|
18
|
+
limit: string | undefined;
|
|
19
|
+
parentSessionId: string | null | undefined;
|
|
20
|
+
cursor: ReturnType<typeof decodeSessionListCursor> | undefined;
|
|
21
|
+
search: string | undefined;
|
|
22
|
+
pinsOnly: boolean;
|
|
23
|
+
includePinned: boolean;
|
|
24
|
+
includeTotals: boolean;
|
|
25
|
+
needsYouOnly: boolean;
|
|
26
|
+
archivedOnly: boolean;
|
|
27
|
+
sortBy: "updatedAt" | "createdAt" | "name" | undefined;
|
|
28
|
+
archiveStatus: "active" | "archived" | "all" | undefined;
|
|
29
|
+
channelId: string | null | undefined;
|
|
30
|
+
createdBy: {
|
|
31
|
+
kind: "subject" | "service";
|
|
32
|
+
subjectId: string;
|
|
33
|
+
} | undefined;
|
|
34
|
+
updatedFrom: Date | undefined;
|
|
35
|
+
updatedBefore: Date | undefined;
|
|
36
|
+
createdFrom: Date | undefined;
|
|
37
|
+
createdBefore: Date | undefined;
|
|
38
|
+
scopeSubjectId: SessionScopeSubjectId | undefined;
|
|
39
|
+
hasPageFilters: boolean;
|
|
40
|
+
};
|
|
15
41
|
export type AgentTopologyCursorEnvelope = {
|
|
16
42
|
cursor: SessionDiscoveryCursor;
|
|
17
|
-
parentSessionId: string | null;
|
|
18
|
-
|
|
43
|
+
parentSessionId: string | null | "all";
|
|
44
|
+
rootSessionId: string | null;
|
|
45
|
+
query: string | null;
|
|
46
|
+
statuses: SessionStatus[];
|
|
47
|
+
activeOnly: boolean;
|
|
48
|
+
recentHours: number | null;
|
|
49
|
+
subject: WorkClaimSubjectFilter | null;
|
|
50
|
+
claimLimit: number | null;
|
|
19
51
|
};
|
|
20
52
|
export declare function encodeAgentTopologyCursor(value: AgentTopologyCursorEnvelope): string;
|
|
21
53
|
export declare function agentTopologyQuery(query: Record<string, string>): {
|
|
22
54
|
limit: number;
|
|
23
|
-
parentSessionId: string | null;
|
|
24
|
-
|
|
55
|
+
parentSessionId: string | null | undefined;
|
|
56
|
+
rootSessionId: string | undefined;
|
|
57
|
+
query: string | undefined;
|
|
58
|
+
statuses: SessionStatus[] | undefined;
|
|
59
|
+
activeOnly: boolean;
|
|
60
|
+
recentHours: number | undefined;
|
|
61
|
+
subject: WorkClaimSubjectFilter | undefined;
|
|
62
|
+
claimLimit: number | undefined;
|
|
25
63
|
cursor: SessionDiscoveryCursor | undefined;
|
|
26
64
|
};
|
|
27
65
|
/** Stable, value-free JSON errors for only the create-session boundary. */
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { type SkillActor as SkillActorType } from "@opengeni/contracts";
|
|
2
|
+
import { type AccessGrantAuthorization } from "@opengeni/core";
|
|
3
|
+
/** Use authenticated request provenance, never a caller-supplied actor or subject alone. */
|
|
4
|
+
export declare function skillInstallerActor(access: AccessGrantAuthorization): SkillActorType;
|
|
5
|
+
/** Non-Skill component removals remain available to their existing callers. */
|
|
6
|
+
export declare function skillRemovalActor(access: AccessGrantAuthorization): SkillActorType | undefined;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { listOrganizationXaiSubscriptions, updateOrganizationXaiSubscription, updateOrganizationXaiRotation, listXaiSubscriptionAccountsMetadata, getXaiRotationSettings, ensureXaiRotationSettings, getXaiSubscriptionAccountAuthoritySnapshot, resolveXaiProviderAccountAuthoritySnapshotForAcceptance, setActiveXaiCredential, updateXaiRotationSettings, updateXaiAllocatorEligibility, renameXaiSubscriptionAccount, disconnectXaiSubscriptionCredentialAndRepick, wakeXaiCapacityWaiters, XaiSubscriptionAccountMetadata } from "@opengeni/db";
|
|
2
|
+
import { type ApiRouteDeps } from "@opengeni/core";
|
|
3
|
+
import type { Hono } from "hono";
|
|
4
|
+
type PoolRepository = {
|
|
5
|
+
listOrganizationSubscriptions: typeof listOrganizationXaiSubscriptions;
|
|
6
|
+
updateOrganizationSubscription: typeof updateOrganizationXaiSubscription;
|
|
7
|
+
updateOrganizationSubscriptionRotation: typeof updateOrganizationXaiRotation;
|
|
8
|
+
listSubscriptionAccountsMetadata: typeof listXaiSubscriptionAccountsMetadata;
|
|
9
|
+
getSubscriptionRotationSettings: typeof getXaiRotationSettings;
|
|
10
|
+
ensureSubscriptionRotationSettings: typeof ensureXaiRotationSettings;
|
|
11
|
+
getSubscriptionAccountAuthoritySnapshot: typeof getXaiSubscriptionAccountAuthoritySnapshot;
|
|
12
|
+
resolveSubscriptionProviderAccountAuthoritySnapshotForAcceptance: typeof resolveXaiProviderAccountAuthoritySnapshotForAcceptance;
|
|
13
|
+
setActiveSubscriptionCredential: typeof setActiveXaiCredential;
|
|
14
|
+
updateSubscriptionRotationSettings: typeof updateXaiRotationSettings;
|
|
15
|
+
updateSubscriptionAllocatorEligibility: typeof updateXaiAllocatorEligibility;
|
|
16
|
+
renameSubscriptionAccount: typeof renameXaiSubscriptionAccount;
|
|
17
|
+
disconnectSubscriptionCredentialAndRepick: typeof disconnectXaiSubscriptionCredentialAndRepick;
|
|
18
|
+
wakeSubscriptionCapacityWaiters: typeof wakeXaiCapacityWaiters;
|
|
19
|
+
};
|
|
20
|
+
/** Account CRUD uses one authority, allocator and wake contract for every pool. */
|
|
21
|
+
export declare function registerSubscriptionAccountPoolRoutes(app: Hono, deps: ApiRouteDeps, options: {
|
|
22
|
+
provider: "xai" | "claude";
|
|
23
|
+
route: "supergrok" | "claude";
|
|
24
|
+
displayName: "SuperGrok" | "Claude";
|
|
25
|
+
enabled: () => boolean;
|
|
26
|
+
repository: PoolRepository;
|
|
27
|
+
accountJson: (account: XaiSubscriptionAccountMetadata, activeId: string | null) => Record<string, unknown>;
|
|
28
|
+
projectAccounts?: (accounts: XaiSubscriptionAccountMetadata[], activeId: string | null, authority: {
|
|
29
|
+
accountId: string;
|
|
30
|
+
workspaceId: string | null;
|
|
31
|
+
subjectId: string;
|
|
32
|
+
}) => Promise<Record<string, unknown>[]>;
|
|
33
|
+
}): void;
|
|
34
|
+
export {};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { type ApiRouteDeps } from "@opengeni/core";
|
|
2
|
+
import type { Context } from "hono";
|
|
3
|
+
type ManagedCookieHuman = {
|
|
4
|
+
subjectId: string;
|
|
5
|
+
};
|
|
6
|
+
export declare function managedCookieHuman(c: Context, deps: ApiRouteDeps): Promise<ManagedCookieHuman | null>;
|
|
7
|
+
export declare function requireSameOriginBrowserMutation(c: Context, deps: ApiRouteDeps): void;
|
|
8
|
+
export declare function requirePrivateSubscriptionHuman(c: Context, deps: ApiRouteDeps, workspaceId: string, displayName: string): Promise<{
|
|
9
|
+
accountId: string;
|
|
10
|
+
subjectId: string;
|
|
11
|
+
}>;
|
|
12
|
+
export declare function requireSubscriptionScopeMutation(c: Context, deps: ApiRouteDeps, workspaceId: string, scope: "workspace" | "user" | "organization", displayName: string): Promise<{
|
|
13
|
+
accountId: string;
|
|
14
|
+
subjectId: string;
|
|
15
|
+
}>;
|
|
16
|
+
export {};
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
export { managedCookieHuman } from "./subscription-pool-access.js";
|
|
1
2
|
import { type ApiRouteDeps } from "@opengeni/core";
|
|
2
|
-
import type { Hono } from "hono";
|
|
3
|
+
import type { Context, Hono } from "hono";
|
|
4
|
+
export declare const requireScopeMutation: (c: Context, deps: ApiRouteDeps, workspaceId: string, scope: "workspace" | "user" | "organization") => Promise<{
|
|
5
|
+
accountId: string;
|
|
6
|
+
subjectId: string;
|
|
7
|
+
}>;
|
|
3
8
|
export declare function registerSuperGrokRoutes(app: Hono, deps: ApiRouteDeps): void;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Hono } from "hono";
|
|
2
|
+
import { type AccessContext } from "@opengeni/contracts";
|
|
3
|
+
import { type AccessGrantAuthorization, type ApiRouteDeps } from "@opengeni/core";
|
|
4
|
+
type Authority = {
|
|
5
|
+
authorization: AccessGrantAuthorization;
|
|
6
|
+
context: AccessContext;
|
|
7
|
+
};
|
|
8
|
+
type Operation = "read" | "budget-read" | "workspace-write" | "member-write" | "own";
|
|
9
|
+
/** No workspace wildcard, service initiator, or actor label can confer budget authority. */
|
|
10
|
+
export declare function requireAllowanceAuthority({ authorization, context }: Authority, operation: Operation): void;
|
|
11
|
+
export declare function registerUsageAllowanceRoutes(app: Hono, deps: ApiRouteDeps): void;
|
|
12
|
+
export {};
|
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
import { type ApiRouteDeps } from "@opengeni/core";
|
|
2
|
-
import type { Hono } from "hono";
|
|
2
|
+
import type { Context, Hono } from "hono";
|
|
3
|
+
export declare function workspaceArtifactErrorResponse(context: Context, error: unknown): Response;
|
|
3
4
|
export declare function registerWorkspaceArtifactRoutes(app: Hono, deps: ApiRouteDeps): void;
|
|
@@ -46,7 +46,15 @@ export declare class WorkspaceCaptureManifestCache {
|
|
|
46
46
|
* manifest blob has been GC'd (all graceful cold-fallback states — never errors).
|
|
47
47
|
* Inline manifest for ≤2MB, signed URL above.
|
|
48
48
|
*/
|
|
49
|
-
|
|
49
|
+
/** Awaited before a signed capture URL is returned to the caller: the route
|
|
50
|
+
* records the metadata-only issuance audit fact. A throwing recorder fails
|
|
51
|
+
* the serve closed - no recorded fact, no bearer capability. */
|
|
52
|
+
export type CaptureSignedUrlIssuanceRecorder = (fact: {
|
|
53
|
+
kind: "capture_manifest" | "capture_file";
|
|
54
|
+
revision: number;
|
|
55
|
+
expiresAt: string;
|
|
56
|
+
}) => Promise<void>;
|
|
57
|
+
export declare function serveWorkspaceCapture(row: WorkspaceCaptureRow | null, storage: CaptureStoragePort, cache?: WorkspaceCaptureManifestCache, onSignedUrlIssued?: CaptureSignedUrlIssuanceRecorder): Promise<GetWorkspaceCaptureResponse>;
|
|
50
58
|
/**
|
|
51
59
|
* Shape the GET …/workspace/capture/file response from a loaded row (the row
|
|
52
60
|
* already resolved to the requested revision, or the latest). Throws
|
|
@@ -55,5 +63,5 @@ export declare function serveWorkspaceCapture(row: WorkspaceCaptureRow | null, s
|
|
|
55
63
|
* a captured file whose after-image blob is missing). Inline content for ≤256KB,
|
|
56
64
|
* signed URL above.
|
|
57
65
|
*/
|
|
58
|
-
export declare function serveWorkspaceCaptureFile(row: WorkspaceCaptureRow | null, path: string, storage: CaptureStoragePort): Promise<GetWorkspaceCaptureFileResponse>;
|
|
66
|
+
export declare function serveWorkspaceCaptureFile(row: WorkspaceCaptureRow | null, path: string, storage: CaptureStoragePort, onSignedUrlIssued?: CaptureSignedUrlIssuanceRecorder): Promise<GetWorkspaceCaptureFileResponse>;
|
|
59
67
|
export {};
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { WorkspaceWebhookDelivery, type AccessGrant } from "@opengeni/contracts";
|
|
2
|
+
import { type ApiRouteDeps } from "@opengeni/core";
|
|
3
|
+
import { type WorkspaceCredentialProviderRow, type WorkspaceWebhookDeliveryRow, type WorkspaceWebhookRow } from "@opengeni/db";
|
|
4
|
+
import { type pinnedFetch } from "@opengeni/network";
|
|
5
|
+
import type { Context, Hono } from "hono";
|
|
6
|
+
import { z } from "zod";
|
|
7
|
+
export declare function newIntegrationSecret(prefix: string): string;
|
|
8
|
+
export declare function integrationWebhookFields(row: Omit<WorkspaceWebhookRow, "workspaceId">): {
|
|
9
|
+
id: string;
|
|
10
|
+
url: string;
|
|
11
|
+
eventTypes: string[];
|
|
12
|
+
enabled: boolean;
|
|
13
|
+
description: string | null;
|
|
14
|
+
createdAt: string;
|
|
15
|
+
updatedAt: string;
|
|
16
|
+
};
|
|
17
|
+
export declare function integrationDeliveryProjection(row: WorkspaceWebhookDeliveryRow): WorkspaceWebhookDelivery;
|
|
18
|
+
export declare function integrationProviderFields(row: Omit<WorkspaceCredentialProviderRow, "workspaceId">): {
|
|
19
|
+
url: string;
|
|
20
|
+
enabled: boolean;
|
|
21
|
+
timeoutMs: number;
|
|
22
|
+
createdAt: string;
|
|
23
|
+
updatedAt: string;
|
|
24
|
+
};
|
|
25
|
+
export declare function integrationBody<T extends z.ZodTypeAny>(c: Context, schema: T, invalidStatus?: 400 | 422): Promise<z.output<T>>;
|
|
26
|
+
export declare function integrationRouteConfiguration(deps: ApiRouteDeps, scope: "workspace" | "organization"): {
|
|
27
|
+
requireKey(): Uint8Array;
|
|
28
|
+
requireDeployableUrl(url: string): void;
|
|
29
|
+
};
|
|
30
|
+
export declare function isIntegrationAgent(grant: Pick<AccessGrant, "principalKind" | "metadata">): boolean;
|
|
31
|
+
export type WorkspaceIntegrationRouteOptions = {
|
|
32
|
+
/** Tests inject a fetch; production uses the pinned outbound client. */
|
|
33
|
+
fetch?: typeof pinnedFetch;
|
|
34
|
+
};
|
|
35
|
+
export declare function registerWorkspaceIntegrationRoutes(app: Hono, deps: ApiRouteDeps, options?: WorkspaceIntegrationRouteOptions): void;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type ApiRouteDeps } from "@opengeni/core";
|
|
2
|
+
import type { Hono } from "hono";
|
|
3
|
+
/** Workspace-owned Claude models use the same immutable-generation protocol as gateway models. */
|
|
4
|
+
export declare function registerWorkspaceModelProviderRoutes(app: Hono, deps: ApiRouteDeps): void;
|
|
@@ -1,5 +1,34 @@
|
|
|
1
|
+
import { type AccessContext, type WorkspaceMember as WorkspaceMemberValue } from "@opengeni/contracts";
|
|
1
2
|
import type { Hono } from "hono";
|
|
2
3
|
import type { ApiRouteDeps } from "@opengeni/core";
|
|
3
4
|
import { type Settings } from "@opengeni/config";
|
|
4
5
|
export declare function canonicalWorkspacePolicyModelIds(settings: Settings, modelIds: string[] | null | undefined): string[] | null;
|
|
6
|
+
type WorkspaceMemberProjectionInput = Omit<WorkspaceMemberValue, "permissions"> & {
|
|
7
|
+
permissions: unknown;
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* Keep the roster readable across stored-permission contract changes. Unknown
|
|
11
|
+
* values are never re-authorized: they are omitted from the public projection,
|
|
12
|
+
* while every currently recognized permission is preserved in stored order.
|
|
13
|
+
*/
|
|
14
|
+
export declare function workspaceMembersResponse(members: readonly WorkspaceMemberProjectionInput[]): {
|
|
15
|
+
members: {
|
|
16
|
+
subjectId: string;
|
|
17
|
+
subjectLabel: string | null;
|
|
18
|
+
role: string;
|
|
19
|
+
permissions: ("account:admin" | "account:read" | "api_keys:manage" | "artifacts:publish" | "artifacts:read" | "billing:manage" | "billing:read" | "capabilities:manage" | "codemode:call" | "connections:read" | "connections:write" | "documents:manage" | "documents:search" | "enrollments:manage" | "enrollments:read" | "environments:manage" | "environments:use" | "files:read" | "files:upload" | "files:write" | "github:manage" | "github:use" | "goals:manage" | "mcp_servers:attach" | "members:manage" | "rigs:manage" | "rigs:use" | "scheduled_tasks:manage" | "scheduled_tasks:run" | "secrets:list" | "secrets:read" | "secrets:write" | "sessions:control" | "sessions:create" | "sessions:read" | "stream:acknowledge" | "stream:control" | "stream:view" | "terminal:attach" | "usage_allowances:manage" | "variable-sets:attach" | "variable-sets:list" | "variable-sets:manage" | "variable-sets:read" | "variable-sets:use" | "variable-sets:write" | "workspace:admin" | "workspace:create" | "workspace:read")[];
|
|
20
|
+
createdAt: string;
|
|
21
|
+
}[];
|
|
22
|
+
};
|
|
23
|
+
export declare function workspaceUpdateRequestsSettings(value: unknown): boolean;
|
|
24
|
+
export declare function workspaceUpdateRequestsAccountTransfer(value: unknown): boolean;
|
|
25
|
+
/**
|
|
26
|
+
* Owning organization for `PUT /v1/workspaces/external`. An organization API
|
|
27
|
+
* key can only ever create workspaces in its own organization, so an omitted
|
|
28
|
+
* `accountId` resolves to that organization. Every other caller - notably a
|
|
29
|
+
* human who may belong to several organizations - must name it explicitly;
|
|
30
|
+
* guessing a default there could create the workspace in the wrong tenant.
|
|
31
|
+
*/
|
|
32
|
+
export declare function externalWorkspaceAccountId(context: AccessContext, requested: string | undefined): string;
|
|
5
33
|
export declare function registerWorkspaceRoutes(app: Hono, deps: ApiRouteDeps): void;
|
|
34
|
+
export {};
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type LogThrottle } from "@opengeni/observability";
|
|
1
2
|
import { type NatsCalloutConfig, type Settings } from "@opengeni/config";
|
|
2
3
|
import { type Database } from "@opengeni/db";
|
|
3
4
|
import { type ResponderConnection } from "@opengeni/events";
|
|
@@ -11,7 +12,14 @@ export interface AuthCalloutDeps {
|
|
|
11
12
|
settings: Settings;
|
|
12
13
|
callout: NatsCalloutConfig;
|
|
13
14
|
observability?: Observability;
|
|
15
|
+
/** Bounds repeated denial warnings; defaults to one process-wide throttle. */
|
|
16
|
+
denialWarningThrottle?: LogThrottle;
|
|
14
17
|
}
|
|
18
|
+
/** A stale or revoked machine re-dials on its reconnect backoff forever, so an
|
|
19
|
+
* unthrottled denial warning repeats every few seconds per machine. Log each
|
|
20
|
+
* distinct machine's first denial, then at most once per interval with the
|
|
21
|
+
* count of denials it hid. The denial decision itself is never throttled. */
|
|
22
|
+
export declare const AUTH_CALLOUT_DENIAL_WARNING_INTERVAL_MS = 60000;
|
|
15
23
|
/**
|
|
16
24
|
* The pure validate→scoped-JWT decision, isolated from the NATS transport so it is
|
|
17
25
|
* unit-testable. Given the raw authorization-request JWT bytes, returns the signed
|
|
@@ -3,14 +3,16 @@ import type { Session } from "@opengeni/contracts";
|
|
|
3
3
|
import { type Database, type LeaseSnapshot } from "@opengeni/db";
|
|
4
4
|
import { type EventBus } from "@opengeni/events";
|
|
5
5
|
import { type Observability } from "@opengeni/observability";
|
|
6
|
+
import type { ObjectStorage } from "@opengeni/storage";
|
|
6
7
|
import { SandboxChannelAService, type ChannelASession, type EstablishedSandboxSession, type RoutingSandboxSession } from "@opengeni/runtime/sandbox";
|
|
7
8
|
export type ChannelAServices = {
|
|
8
9
|
db: Database;
|
|
9
10
|
settings: Settings;
|
|
10
11
|
bus: EventBus;
|
|
12
|
+
objectStorage?: ObjectStorage | null;
|
|
11
13
|
observability?: Observability | undefined;
|
|
12
14
|
};
|
|
13
|
-
export type ChannelAOperation = "fs.list" | "fs.list-batch" | "fs.read" | "fs.write" | "fs.delete" | "fs.move" | "fs.mkdir" | "git.status" | "git.diff" | "git.read-batch" | "git.log" | "git.show" | "terminal.exec" | "terminal.pty.open" | "terminal.pty.write" | "terminal.pty.resize" | "terminal.pty.close" | "browser.create" | "browser.resume" | "browser.suspend" | "browser.end" | "browser.read" | "browser.action" | "browser.control" | "browser.download.save" | "browser.attach" | "computer.create" | "computer.end" | "computer.read" | "computer.action" | "computer.control" | "computer.attach";
|
|
15
|
+
export type ChannelAOperation = "fs.list" | "fs.list-batch" | "fs.read" | "artifact.publish" | "fs.write" | "fs.delete" | "fs.move" | "fs.mkdir" | "git.status" | "git.diff" | "git.read-batch" | "git.log" | "git.show" | "terminal.exec" | "terminal.pty.open" | "terminal.pty.write" | "terminal.pty.resize" | "terminal.pty.close" | "browser.create" | "browser.resume" | "browser.suspend" | "browser.end" | "browser.read" | "browser.action" | "browser.control" | "browser.download.save" | "browser.attach" | "computer.create" | "computer.end" | "computer.read" | "computer.action" | "computer.control" | "computer.attach";
|
|
14
16
|
export type ChannelAContext = {
|
|
15
17
|
accountId: string;
|
|
16
18
|
workspaceId: string;
|
|
@@ -25,6 +27,10 @@ export type ChannelAContext = {
|
|
|
25
27
|
* provider handle and replay the request. Tab/lifecycle mutations that lack
|
|
26
28
|
* a controller operation id must never opt into this recovery. */
|
|
27
29
|
retryControllerTransport?: boolean | undefined;
|
|
30
|
+
/** Ephemeral browser callbacks must never replay after an ambiguous result. */
|
|
31
|
+
allowOperationReplay?: boolean | undefined;
|
|
32
|
+
/** Exact existing interaction provider; may not spawn/rotate on image drift. */
|
|
33
|
+
retainedInstanceId?: string | undefined;
|
|
28
34
|
};
|
|
29
35
|
export type ChannelAOperationFailureReason = "request_cancelled" | "provider_read_busy" | "provider_unavailable" | "lifecycle_conflict" | "request_rejected" | "unexpected";
|
|
30
36
|
export type ChannelAOperationFailureDiagnostic = {
|
|
@@ -63,6 +69,8 @@ type ChannelAReadRecoveryOptions = {
|
|
|
63
69
|
/** Modal may expose one more stale command-router route after the first
|
|
64
70
|
* successful handle rebuild. Keep this closed and statically bounded. */
|
|
65
71
|
maxFreshHandleRetries?: 1 | 2;
|
|
72
|
+
/** Explicit opt-out overrides every transport/provider retry classification. */
|
|
73
|
+
allowOperationReplay?: boolean | undefined;
|
|
66
74
|
/** Never start another provider attempt after the originating request ends. */
|
|
67
75
|
waitSignal?: AbortSignal | undefined;
|
|
68
76
|
/** Additional callback-specific failure that is safe to replay. */
|
|
@@ -100,4 +108,14 @@ export declare function isChannelARequestCancellation(error: unknown, waitSignal
|
|
|
100
108
|
/** Structural classification only: exact provider exception text, codes, URLs,
|
|
101
109
|
* and identifiers never cross the telemetry boundary. */
|
|
102
110
|
export declare function channelAOperationFailureDiagnostic(error: unknown, waitSignal?: AbortSignal): ChannelAOperationFailureDiagnostic;
|
|
111
|
+
/** Exported for the telemetry contract tests; not a route surface. */
|
|
112
|
+
export declare function observeChannelAOperationFailure(services: ChannelAServices, input: {
|
|
113
|
+
workspaceId: string;
|
|
114
|
+
sandboxGroupId: string;
|
|
115
|
+
backend: string;
|
|
116
|
+
operation: string;
|
|
117
|
+
durationMs: number;
|
|
118
|
+
error: unknown;
|
|
119
|
+
waitSignal?: AbortSignal | undefined;
|
|
120
|
+
}): void;
|
|
103
121
|
export {};
|
|
@@ -1,10 +1,16 @@
|
|
|
1
1
|
import { type Settings } from "@opengeni/config";
|
|
2
|
-
import { type DeviceEnrollmentLookupResponse, type DeviceEnrollmentPollResponse, type DeviceEnrollmentStartResponse, type EnrollTokenExchangeResponse, type MintEnrollTokenResponse } from "@opengeni/contracts";
|
|
2
|
+
import { type RenewEnrollmentRequest, type DeviceEnrollmentLookupResponse, type DeviceEnrollmentPollResponse, type DeviceEnrollmentStartResponse, type EnrollmentCredentialsResponse, type EnrollTokenExchangeResponse, type MintEnrollTokenResponse } from "@opengeni/contracts";
|
|
3
3
|
import { type Database, type DeviceEnrollmentRequestRecord, type EnrollmentOs } from "@opengeni/db";
|
|
4
4
|
export declare const DEVICE_CODE_TTL_SECONDS = 600;
|
|
5
5
|
export declare const DEVICE_POLL_INTERVAL_SECONDS = 5;
|
|
6
6
|
export declare const ENROLLMENT_BEARER_TTL_SECONDS: number;
|
|
7
7
|
export declare const RELAY_TOKEN_TTL_SECONDS: number;
|
|
8
|
+
/** Renew an existing grant, including after a long offline interval. The expired
|
|
9
|
+
* bearer is only an authenticated enrollment/generation locator here: current
|
|
10
|
+
* install-key possession and live enrollment authority are both required. Normal
|
|
11
|
+
* NATS/relay authentication continues to reject expired transport credentials.
|
|
12
|
+
* Nothing creates/reactivates an enrollment or changes its consent or scope. */
|
|
13
|
+
export declare function renewEnrollmentCredentials(services: EnrollmentServices, input: RenewEnrollmentRequest, nowSeconds?: number): Promise<EnrollmentCredentialsResponse | null>;
|
|
8
14
|
export declare const ENROLL_TOKEN_TTL_SECONDS = 3600;
|
|
9
15
|
export type EnrollmentServices = {
|
|
10
16
|
db: Database;
|
|
@@ -35,6 +41,8 @@ export declare function startDeviceEnrollment(services: EnrollmentServices, inpu
|
|
|
35
41
|
export declare function approveDeviceEnrollment(services: EnrollmentServices, input: {
|
|
36
42
|
accountId: string;
|
|
37
43
|
workspaceId: string;
|
|
44
|
+
scope?: "organization" | "workspace" | "user";
|
|
45
|
+
allowOrganization?: boolean;
|
|
38
46
|
userCode: string;
|
|
39
47
|
allowScreenControl: boolean;
|
|
40
48
|
approvedBySubjectId: string;
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import type { Settings } from "@opengeni/config";
|
|
2
2
|
import { type Database, type MachineMetricsRow } from "@opengeni/db";
|
|
3
|
-
import type { EventBus } from "@opengeni/events";
|
|
4
3
|
import { MetricSample, type MachinesResponse } from "@opengeni/contracts";
|
|
5
4
|
export type MachinesServices = {
|
|
6
5
|
db: Database;
|
|
7
6
|
settings: Settings;
|
|
8
|
-
bus?: EventBus;
|
|
9
7
|
};
|
|
8
|
+
/** Older Mac updaters replace a single file inside a sealed app. They must
|
|
9
|
+
* bootstrap once through the official whole-app installer, never an RPC swap. */
|
|
10
|
+
export declare function machineUpdateBlockedReason(os: string, version: string | null): string | null;
|
|
10
11
|
/**
|
|
11
12
|
* Project a stored `machine_metrics_latest` row to the contract `MetricSample`.
|
|
12
13
|
* The DB carries `gpuUtilPercent` + `gpuMemUsedBytes`/`gpuMemTotalBytes`; the wire
|
|
@@ -24,6 +25,8 @@ export declare function metricRowToSample(row: MachineMetricsRow): MetricSample;
|
|
|
24
25
|
* the enrolled machines are listed.
|
|
25
26
|
*/
|
|
26
27
|
export declare function listMachines(services: MachinesServices, input: {
|
|
28
|
+
accountId?: string;
|
|
27
29
|
workspaceId: string;
|
|
30
|
+
subjectId?: string;
|
|
28
31
|
sessionId?: string | null;
|
|
29
32
|
}): Promise<MachinesResponse>;
|
|
@@ -4,18 +4,36 @@ import { type EventBus } from "@opengeni/events";
|
|
|
4
4
|
import type { Observability } from "@opengeni/observability";
|
|
5
5
|
import { Hello, type AttachedBrowserInventorySnapshot as WireAttachedBrowserInventorySnapshot, type MetricsSample } from "@opengeni/agent-proto";
|
|
6
6
|
/** The wildcard subject the agent event plane publishes heartbeats on. */
|
|
7
|
-
export declare const AGENT_EVENTS_SUBJECT = "agent.*.*.events";
|
|
7
|
+
export declare const AGENT_EVENTS_SUBJECT = "agent.*.*.connection.*.events";
|
|
8
8
|
/** The wildcard subject the agent publishes its connect Hello on. */
|
|
9
|
-
export declare const AGENT_HELLO_SUBJECT = "agent.*.*.hello";
|
|
10
|
-
|
|
9
|
+
export declare const AGENT_HELLO_SUBJECT = "agent.*.*.connection.*.hello";
|
|
10
|
+
export type AgentEventIngestionScheduler = {
|
|
11
|
+
enqueue: (payload: Uint8Array, subject: string) => void;
|
|
12
|
+
whenIdle: () => Promise<void>;
|
|
13
|
+
close: () => void;
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Drain agent events without making every Connected Machine wait behind one
|
|
17
|
+
* deployment-wide serial DB queue. Each exact process subject retains FIFO order;
|
|
18
|
+
* separate subjects drain concurrently. Consecutive pending heartbeats for one
|
|
19
|
+
* subject are latest-wins because they are point-in-time liveness/metrics samples,
|
|
20
|
+
* while GoingOffline and update-progress events remain ordered barriers.
|
|
21
|
+
*/
|
|
22
|
+
export declare function createAgentEventIngestionScheduler(handler: (payload: Uint8Array, subject: string) => void | Promise<void>, options?: {
|
|
23
|
+
maxConcurrentSubjects?: number;
|
|
24
|
+
onHeartbeatCoalesced?: () => void;
|
|
25
|
+
}): AgentEventIngestionScheduler;
|
|
26
|
+
/** Parse the exact process events subject (heartbeat plane). */
|
|
11
27
|
export declare function parseAgentEventSubject(subject: string): {
|
|
12
28
|
workspaceId: string;
|
|
13
29
|
agentId: string;
|
|
30
|
+
connectionInstanceId: string;
|
|
14
31
|
} | null;
|
|
15
|
-
/** Parse
|
|
32
|
+
/** Parse the exact process hello subject (connect plane). */
|
|
16
33
|
export declare function parseAgentHelloSubject(subject: string): {
|
|
17
34
|
workspaceId: string;
|
|
18
35
|
agentId: string;
|
|
36
|
+
connectionInstanceId: string;
|
|
19
37
|
} | null;
|
|
20
38
|
/**
|
|
21
39
|
* Project a wire `MetricsSample` (proto, ms-stamped, GPU as a repeated list) to
|
|
@@ -32,20 +50,6 @@ export declare function wireSampleToDbSample(wire: MetricsSample): MachineMetric
|
|
|
32
50
|
* discovery. Unknown enum values and unsafe uint64 counters reject the whole
|
|
33
51
|
* authoritative snapshot instead of partially disconnecting good endpoints. */
|
|
34
52
|
export declare function wireAttachedBrowserInventoryToContract(wire: WireAttachedBrowserInventorySnapshot): AttachedBrowserInventoryContractValue;
|
|
35
|
-
/**
|
|
36
|
-
* Ingest ONE decoded heartbeat for an enrolled machine. Resolves the enrollment's
|
|
37
|
-
* accountId (needed for the RLS-scoped writes) from the enrollment row; an
|
|
38
|
-
* unknown/cross-workspace agentId is ignored (no row → no write). Touches
|
|
39
|
-
* last-seen + upserts latest + downsamples the series.
|
|
40
|
-
*/
|
|
41
|
-
export declare function ingestHeartbeat(db: Database, input: {
|
|
42
|
-
workspaceId: string;
|
|
43
|
-
agentId: string;
|
|
44
|
-
sample: MetricsSample;
|
|
45
|
-
}): Promise<{
|
|
46
|
-
ingested: boolean;
|
|
47
|
-
seriesAppended: boolean;
|
|
48
|
-
}>;
|
|
49
53
|
/**
|
|
50
54
|
* Decode a raw `AgentEvent` payload + ingest it (the per-message handler). A
|
|
51
55
|
* heartbeat carrying a metrics sample is ingested; a going-offline records the
|
|
@@ -55,7 +59,7 @@ export declare function ingestHeartbeat(db: Database, input: {
|
|
|
55
59
|
*/
|
|
56
60
|
export declare function handleAgentEventPayload(db: Database, observability: Observability | undefined, payload: Uint8Array, subject: string, bus?: EventBus): Promise<void>;
|
|
57
61
|
/**
|
|
58
|
-
* Start the metrics-ingestion consumer: subscribe
|
|
62
|
+
* Start the metrics-ingestion consumer: subscribe exact process events and ingest
|
|
59
63
|
* every heartbeat. Gated by sandboxSelfhostedEnabled (the caller checks the flag;
|
|
60
64
|
* a disabled deployment never starts the consumer). Returns the unsubscribe fn.
|
|
61
65
|
*/
|
|
@@ -82,6 +86,7 @@ export declare function helloReportsDisplay(hello: Hello): boolean;
|
|
|
82
86
|
export declare function helloDesktopUnavailableReason(hello: Hello): string | null;
|
|
83
87
|
/** Whether the runner's current Hello advertises the op-stream engine. */
|
|
84
88
|
export declare function helloReportsOpStream(hello: Hello): boolean;
|
|
89
|
+
export declare function helloRuntimeCapabilities(hello: Hello): Record<string, boolean>;
|
|
85
90
|
/**
|
|
86
91
|
* Reconcile `enrollments.has_display` (+ the capture-blocked reason) to what a Hello
|
|
87
92
|
* reports. Resolves the enrollment (the accountId is the RLS principal + the
|
|
@@ -95,6 +100,8 @@ export declare function refreshEnrollmentDisplay(db: Database, input: {
|
|
|
95
100
|
agentId: string;
|
|
96
101
|
hasDisplay: boolean;
|
|
97
102
|
desktopUnavailableReason?: string | null;
|
|
103
|
+
runtimeDesktop?: boolean;
|
|
104
|
+
connectionInstanceId?: string;
|
|
98
105
|
}): Promise<{
|
|
99
106
|
updated: boolean;
|
|
100
107
|
}>;
|
|
@@ -108,6 +115,7 @@ export declare function refreshEnrollmentOpStream(db: Database, input: {
|
|
|
108
115
|
workspaceId: string;
|
|
109
116
|
agentId: string;
|
|
110
117
|
opStream: boolean;
|
|
118
|
+
connectionInstanceId?: string;
|
|
111
119
|
}): Promise<{
|
|
112
120
|
updated: boolean;
|
|
113
121
|
}>;
|
|
@@ -121,7 +129,7 @@ export declare function refreshEnrollmentOpStream(db: Database, input: {
|
|
|
121
129
|
*/
|
|
122
130
|
export declare function handleHelloPayload(db: Database, observability: Observability | undefined, payload: Uint8Array, subject: string, bus?: EventBus): Promise<void>;
|
|
123
131
|
/**
|
|
124
|
-
* Start the Hello display-refresh consumer: subscribe
|
|
132
|
+
* Start the Hello display-refresh consumer: subscribe exact process hellos and
|
|
125
133
|
* reconcile `has_display` to the live capability the agent reports on every
|
|
126
134
|
* connect. Gated by sandboxSelfhostedEnabled (the caller checks the flag). Returns
|
|
127
135
|
* the unsubscribe fn.
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { Settings } from "@opengeni/config";
|
|
2
2
|
import { type Database, type LeaseSnapshot } from "@opengeni/db";
|
|
3
3
|
import { type EstablishedSandboxSession } from "@opengeni/runtime/sandbox";
|
|
4
|
+
import { type ObjectStorage } from "@opengeni/storage";
|
|
4
5
|
/** The sole API-direct cold->warming owner path used by Channel A and viewer
|
|
5
6
|
* attach. It never publishes warm until archive identity, hydrated tree, command
|
|
6
7
|
* routing, provider identity, and the selected rematerialization attempt all
|
|
@@ -18,6 +19,7 @@ export declare function establishApiSandboxSpawner(input: {
|
|
|
18
19
|
acquiredLease: LeaseSnapshot;
|
|
19
20
|
fallbackEnvelope: Record<string, unknown> | null;
|
|
20
21
|
dataPlaneUrl: string | null;
|
|
22
|
+
objectStorage?: ObjectStorage | null;
|
|
21
23
|
}): Promise<{
|
|
22
24
|
established: EstablishedSandboxSession;
|
|
23
25
|
lease: LeaseSnapshot;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { Settings } from "@opengeni/config";
|
|
2
|
+
import { type Database } from "@opengeni/db";
|
|
3
|
+
export type SessionAttachVariableSetSession = {
|
|
4
|
+
id: string;
|
|
5
|
+
rigId?: string | null | undefined;
|
|
6
|
+
rigVersionId?: string | null | undefined;
|
|
7
|
+
variableSetIds?: readonly string[] | null | undefined;
|
|
8
|
+
/** Legacy final-entry alias for projections that predate the plural field. */
|
|
9
|
+
variableSetId?: string | null | undefined;
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* Decrypted Variable Set values for a direct session attach (terminal, Files,
|
|
13
|
+
* Git, desktop viewer), in the same order and precedence as the worker turn:
|
|
14
|
+
* the frozen Sandbox Environment version defaults first, then the session's
|
|
15
|
+
* own selection, so a box first warmed by an attach declares exactly the
|
|
16
|
+
* environment the next turn declares.
|
|
17
|
+
*
|
|
18
|
+
* A Variable Set the session can no longer use (the database seam answers
|
|
19
|
+
* 42501 and records a `variable_set.materialize.denied` fact) becomes a 403
|
|
20
|
+
* instead of a bare 500. Every failure is logged with the session, set, source
|
|
21
|
+
* and SQLSTATE, never a value.
|
|
22
|
+
*/
|
|
23
|
+
export declare function loadSessionAttachVariableSetValues(db: Database, settings: Settings, input: {
|
|
24
|
+
accountId: string;
|
|
25
|
+
workspaceId: string;
|
|
26
|
+
session: SessionAttachVariableSetSession;
|
|
27
|
+
/** The authenticated route subject driving the attach; null records the
|
|
28
|
+
* legacy service sentinel on the materialization audit fact. */
|
|
29
|
+
subjectId: string | null;
|
|
30
|
+
}): Promise<Record<string, string>>;
|