@opengeni/api-router 3.0.1 → 3.0.2-canary.38894290271001
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-AJ62T5QN.js → chunk-GBUJ2DYZ.js} +80507 -39878
- package/dist/chunk-GBUJ2DYZ.js.map +1 -0
- package/dist/chunk-OGQDXVXY.js +18 -0
- package/dist/chunk-OGQDXVXY.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 +150 -49
- 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
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type WorkspaceMember as WorkspaceMemberValue } from "@opengeni/contracts";
|
|
1
|
+
import { type AccessContext, type WorkspaceMember as WorkspaceMemberValue } from "@opengeni/contracts";
|
|
2
2
|
import type { Hono } from "hono";
|
|
3
3
|
import type { ApiRouteDeps } from "@opengeni/core";
|
|
4
4
|
import { type Settings } from "@opengeni/config";
|
|
@@ -16,10 +16,19 @@ export declare function workspaceMembersResponse(members: readonly WorkspaceMemb
|
|
|
16
16
|
subjectId: string;
|
|
17
17
|
subjectLabel: string | null;
|
|
18
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" | "variable-sets:attach" | "variable-sets:list" | "variable-sets:manage" | "variable-sets:read" | "variable-sets:use" | "variable-sets:write" | "workspace:admin" | "workspace:create" | "workspace:read")[];
|
|
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:use" | "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
20
|
createdAt: string;
|
|
21
21
|
}[];
|
|
22
22
|
};
|
|
23
|
+
export declare function workspaceUpdateRequestsSettings(value: unknown): boolean;
|
|
23
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;
|
|
24
33
|
export declare function registerWorkspaceRoutes(app: Hono, deps: ApiRouteDeps): void;
|
|
25
34
|
export {};
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import type { Settings } from "@opengeni/config";
|
|
2
|
+
import { type Database, type EnrollmentRecord } from "@opengeni/db";
|
|
3
|
+
import type { EventBus } from "@opengeni/events";
|
|
4
|
+
import type { Observability } from "@opengeni/observability";
|
|
5
|
+
export type AgentUpdateDeps = {
|
|
6
|
+
db: Database;
|
|
7
|
+
bus?: EventBus | null;
|
|
8
|
+
settings: Settings;
|
|
9
|
+
};
|
|
10
|
+
export type AgentUpdateRequestResult = {
|
|
11
|
+
kind: "accepted";
|
|
12
|
+
operationId: string;
|
|
13
|
+
targetVersion: string;
|
|
14
|
+
} | {
|
|
15
|
+
kind: "refused";
|
|
16
|
+
status: 409 | 422 | 502;
|
|
17
|
+
message: string;
|
|
18
|
+
};
|
|
19
|
+
/** Reserve one exact-generation operation, ask the authoritative runner to
|
|
20
|
+
* apply the promoted release, then let progress events + the successor Hello
|
|
21
|
+
* drive the durable state to completion. `live` must be the enrollment's
|
|
22
|
+
* current live connection. */
|
|
23
|
+
export declare function requestAgentUpdate(deps: AgentUpdateDeps, live: EnrollmentRecord, input: {
|
|
24
|
+
releaseBaseUrl: string;
|
|
25
|
+
}): Promise<AgentUpdateRequestResult>;
|
|
26
|
+
/** First agent release whose restart detaches from its managed browsers so
|
|
27
|
+
* the successor adopts them with their tabs and page state. An older agent
|
|
28
|
+
* closes every managed browser while it shuts down for an update. */
|
|
29
|
+
export declare const BROWSER_PRESERVING_AGENT_VERSION = "0.1.58";
|
|
30
|
+
/** Recorded when the automatic updater leaves an older agent alone because
|
|
31
|
+
* updating it would close managed browsers. A `update_busy_*` code, so it
|
|
32
|
+
* reads and retries as a postponement rather than a failure. */
|
|
33
|
+
export declare const UPDATE_POSTPONED_FOR_BROWSERS = "update_busy_browsers";
|
|
34
|
+
/** Whether updating this agent would close browsers it manages. */
|
|
35
|
+
export declare function agentUpdateWouldCloseBrowsers(db: Database, enrollment: EnrollmentRecord): Promise<boolean>;
|
|
36
|
+
/** How long the automatic updater leaves a machine alone after an attempt. */
|
|
37
|
+
export declare const AUTOMATIC_AGENT_UPDATE_RETRY_MS: {
|
|
38
|
+
/** A machine postponed because it was busy (running work, or managed
|
|
39
|
+
* browsers an older agent would close) is looked at again soon: the check
|
|
40
|
+
* is instant and interrupts nothing. */
|
|
41
|
+
readonly busy: number;
|
|
42
|
+
/** A request the runner never answered is re-sent under the same operation. */
|
|
43
|
+
readonly unanswered: number;
|
|
44
|
+
/** Other retryable failures (download, verification, a replaced process). */
|
|
45
|
+
readonly retryable: number;
|
|
46
|
+
};
|
|
47
|
+
/** Whether a live machine should be asked now to move to `targetVersion`.
|
|
48
|
+
* Pure: decided from the enrollment the heartbeat already read. Only upgrades
|
|
49
|
+
* are automatic; moving a machine to an older promoted build stays an explicit
|
|
50
|
+
* per-machine request. A non-retryable failure waits for a newer promotion. */
|
|
51
|
+
export declare function automaticAgentUpdateDue(enrollment: EnrollmentRecord, targetVersion: string, now: number): boolean;
|
|
52
|
+
export type AutomaticAgentUpdater = {
|
|
53
|
+
/** Consider one live machine, typically from the enrollment its heartbeat
|
|
54
|
+
* just read and renewed. Never blocks the caller. */
|
|
55
|
+
consider(enrollment: EnrollmentRecord): void;
|
|
56
|
+
};
|
|
57
|
+
/** Keep live machines on their promoted build. Returns null when the
|
|
58
|
+
* deployment turned automatic updates off or has no public base URL for the
|
|
59
|
+
* agent to fetch the release manifest from. Concurrent API replicas are safe:
|
|
60
|
+
* reserving an operation is an atomic conditional write. */
|
|
61
|
+
export declare function createAutomaticAgentUpdater(deps: AgentUpdateDeps & {
|
|
62
|
+
observability?: Observability;
|
|
63
|
+
now?: () => number;
|
|
64
|
+
}): AutomaticAgentUpdater | null;
|
|
@@ -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
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { type Settings } from "@opengeni/config";
|
|
2
|
-
import type { Session } from "@opengeni/contracts";
|
|
2
|
+
import type { AccessGrant, 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
6
|
import type { ObjectStorage } from "@opengeni/storage";
|
|
7
7
|
import { SandboxChannelAService, type ChannelASession, type EstablishedSandboxSession, type RoutingSandboxSession } from "@opengeni/runtime/sandbox";
|
|
8
|
+
import { type ChannelAMachineAuthority } from "@opengeni/core";
|
|
8
9
|
export type ChannelAServices = {
|
|
9
10
|
db: Database;
|
|
10
11
|
settings: Settings;
|
|
@@ -18,6 +19,9 @@ export type ChannelAContext = {
|
|
|
18
19
|
workspaceId: string;
|
|
19
20
|
session: Session;
|
|
20
21
|
subjectId: string;
|
|
22
|
+
/** The authenticated route grant, when one drives the op. It resolves the
|
|
23
|
+
* session's Sandbox Environment for an agent attempt as its initiating human. */
|
|
24
|
+
grant?: AccessGrant | undefined;
|
|
21
25
|
/** Cancel lifecycle waiting when the originating HTTP request disconnects. */
|
|
22
26
|
waitSignal?: AbortSignal | undefined;
|
|
23
27
|
/** Bounded route identity for metrics and safe operator diagnostics. */
|
|
@@ -27,6 +31,10 @@ export type ChannelAContext = {
|
|
|
27
31
|
* provider handle and replay the request. Tab/lifecycle mutations that lack
|
|
28
32
|
* a controller operation id must never opt into this recovery. */
|
|
29
33
|
retryControllerTransport?: boolean | undefined;
|
|
34
|
+
/** Ephemeral browser callbacks must never replay after an ambiguous result. */
|
|
35
|
+
allowOperationReplay?: boolean | undefined;
|
|
36
|
+
/** Exact existing interaction provider; may not spawn/rotate on image drift. */
|
|
37
|
+
retainedInstanceId?: string | undefined;
|
|
30
38
|
};
|
|
31
39
|
export type ChannelAOperationFailureReason = "request_cancelled" | "provider_read_busy" | "provider_unavailable" | "lifecycle_conflict" | "request_rejected" | "unexpected";
|
|
32
40
|
export type ChannelAOperationFailureDiagnostic = {
|
|
@@ -44,6 +52,10 @@ export type ChannelAHandle = {
|
|
|
44
52
|
* active-sandbox pointer and is safe for placement-bound controllers. */
|
|
45
53
|
homeSession: ChannelASession;
|
|
46
54
|
routingSession: RoutingSandboxSession;
|
|
55
|
+
/** Whose access this request uses to reach a Connected Machine: the person
|
|
56
|
+
* who started an agent's turn, or the calling person. Routes that look up
|
|
57
|
+
* the routed machine again must use it rather than the raw caller grant. */
|
|
58
|
+
machineAuthority: () => Promise<ChannelAMachineAuthority>;
|
|
47
59
|
requestId: string;
|
|
48
60
|
};
|
|
49
61
|
export type EstablishedHandleCacheKind = "read" | "process" | "none";
|
|
@@ -65,6 +77,8 @@ type ChannelAReadRecoveryOptions = {
|
|
|
65
77
|
/** Modal may expose one more stale command-router route after the first
|
|
66
78
|
* successful handle rebuild. Keep this closed and statically bounded. */
|
|
67
79
|
maxFreshHandleRetries?: 1 | 2;
|
|
80
|
+
/** Explicit opt-out overrides every transport/provider retry classification. */
|
|
81
|
+
allowOperationReplay?: boolean | undefined;
|
|
68
82
|
/** Never start another provider attempt after the originating request ends. */
|
|
69
83
|
waitSignal?: AbortSignal | undefined;
|
|
70
84
|
/** Additional callback-specific failure that is safe to replay. */
|
|
@@ -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;
|
|
@@ -69,13 +75,17 @@ export declare function denyDeviceEnrollment(services: EnrollmentServices, input
|
|
|
69
75
|
denied: boolean;
|
|
70
76
|
}>;
|
|
71
77
|
/** MINT a headless enroll token (design 11 §A2.2). Signs an `oget_` token bound to
|
|
72
|
-
* the workspace + account + the screen-control consent, with a 1h TTL.
|
|
73
|
-
*
|
|
74
|
-
*
|
|
78
|
+
* the workspace + account + the screen-control consent, with a 1h TTL. With an
|
|
79
|
+
* `ownerSubjectId` the token is personal (`enroll_user`): the machine it connects
|
|
80
|
+
* belongs to that person. Callers must pass only an authenticated human's own
|
|
81
|
+
* subject. Returns null when the credential plane is disabled (no signing secret)
|
|
82
|
+
* so the route can mirror poll's "disabled" handling. The token value is NEVER
|
|
83
|
+
* logged. */
|
|
75
84
|
export declare function mintEnrollToken(services: EnrollmentServices, input: {
|
|
76
85
|
accountId: string;
|
|
77
86
|
workspaceId: string;
|
|
78
87
|
allowScreenControl: boolean;
|
|
88
|
+
ownerSubjectId?: string | null;
|
|
79
89
|
}): Promise<MintEnrollTokenResponse | null>;
|
|
80
90
|
/** Distinguishes the two exchange failure modes for the route. */
|
|
81
91
|
export type ExchangeEnrollTokenResult = {
|
|
@@ -87,6 +97,18 @@ export type ExchangeEnrollTokenResult = {
|
|
|
87
97
|
} | {
|
|
88
98
|
ok: false;
|
|
89
99
|
reason: "invalid";
|
|
100
|
+
} | {
|
|
101
|
+
ok: false;
|
|
102
|
+
reason: "used";
|
|
103
|
+
} | {
|
|
104
|
+
ok: false;
|
|
105
|
+
reason: "owner_unavailable";
|
|
106
|
+
} | {
|
|
107
|
+
ok: false;
|
|
108
|
+
reason: "connected_elsewhere";
|
|
109
|
+
} | {
|
|
110
|
+
ok: false;
|
|
111
|
+
reason: "busy";
|
|
90
112
|
};
|
|
91
113
|
/** EXCHANGE a headless enroll token (design 11 §A2.3) — the UNAUTHENTICATED path
|
|
92
114
|
* where the token IS the auth. Verifies the `oget_` token, then performs the SAME
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { ChangeMachineAudienceResponse, MachineAudiencePreview, type MachineAudience } from "@opengeni/contracts";
|
|
2
|
+
import type { MachineAudienceChangeRecord, MachineAudiencePreviewRecord, MachineAudienceRefusal } from "@opengeni/db";
|
|
3
|
+
import { ApiHttpError } from "../http/api-error.js";
|
|
4
|
+
type AudienceCaller = {
|
|
5
|
+
subjectId: string;
|
|
6
|
+
permissions: readonly string[];
|
|
7
|
+
};
|
|
8
|
+
type AudienceMachine = {
|
|
9
|
+
workspaceId: string;
|
|
10
|
+
scope: "organization" | "workspace" | "user";
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* Decide whether the caller may ask for this change and who would own the
|
|
14
|
+
* machine. Narrowing to Only me: the person who will own it, or a workspace
|
|
15
|
+
* admin acting for that person. Sharing with the workspace: a workspace admin
|
|
16
|
+
* (the database also requires the caller to be the machine's owner, so nobody
|
|
17
|
+
* can expose another person's Only me machine).
|
|
18
|
+
*/
|
|
19
|
+
export declare function machineAudienceRequestFor(caller: AudienceCaller, routeWorkspaceId: string, machine: AudienceMachine, request: {
|
|
20
|
+
audience: MachineAudience;
|
|
21
|
+
ownerSubjectId?: string | undefined;
|
|
22
|
+
}): {
|
|
23
|
+
ownerSubjectId: string | null;
|
|
24
|
+
};
|
|
25
|
+
export declare function machineAudienceRefusalError(refusal: MachineAudienceRefusal): ApiHttpError;
|
|
26
|
+
export declare function machineAudiencePreview(record: MachineAudiencePreviewRecord): MachineAudiencePreview;
|
|
27
|
+
/** Map an applied change, or explain why nothing changed. */
|
|
28
|
+
export declare function machineAudienceChangeResponse(record: MachineAudienceChangeRecord): ChangeMachineAudienceResponse;
|
|
29
|
+
export {};
|
|
@@ -1,10 +1,22 @@
|
|
|
1
1
|
import type { Settings } from "@opengeni/config";
|
|
2
|
-
import { type Database, type MachineMetricsRow } from "@opengeni/db";
|
|
3
|
-
import { MetricSample, type MachinesResponse } from "@opengeni/contracts";
|
|
2
|
+
import { type Database, type EnrollmentRecord, type MachineMetricsRow } from "@opengeni/db";
|
|
3
|
+
import { MetricSample, type MachineRuntime, type MachinesResponse } from "@opengeni/contracts";
|
|
4
4
|
export type MachinesServices = {
|
|
5
5
|
db: Database;
|
|
6
6
|
settings: Settings;
|
|
7
7
|
};
|
|
8
|
+
export declare const ACTIVE_UPDATE_STATUSES: ReadonlySet<string>;
|
|
9
|
+
export declare function compareAgentVersions(left: string, right: string): number | null;
|
|
10
|
+
/** The build the operator promoted for a machine's update channel. */
|
|
11
|
+
export declare function promotedAgentVersion(settings: Pick<Settings, "agentStableVersion" | "agentBetaVersion">, channel: string | null): string;
|
|
12
|
+
/** Older Mac updaters replace a single file inside a sealed app. They must
|
|
13
|
+
* bootstrap once through the official whole-app installer, never an RPC swap. */
|
|
14
|
+
export declare function machineUpdateBlockedReason(os: string, version: string | null): string | null;
|
|
15
|
+
type AgentUpdateRecord = EnrollmentRecord["agentUpdate"];
|
|
16
|
+
/** Where the installed agent stands against the promoted build. A failed update
|
|
17
|
+
* stops mattering once its target (or newer) is installed, and a busy machine
|
|
18
|
+
* postponing an update (`update_busy_*`) has not failed: it is still outdated. */
|
|
19
|
+
export declare function agentVersionState(installedVersion: string | null, desiredVersion: string | null, update: AgentUpdateRecord): MachineRuntime["versionState"];
|
|
8
20
|
/**
|
|
9
21
|
* Project a stored `machine_metrics_latest` row to the contract `MetricSample`.
|
|
10
22
|
* The DB carries `gpuUtilPercent` + `gpuMemUsedBytes`/`gpuMemTotalBytes`; the wire
|
|
@@ -27,3 +39,4 @@ export declare function listMachines(services: MachinesServices, input: {
|
|
|
27
39
|
subjectId?: string;
|
|
28
40
|
sessionId?: string | null;
|
|
29
41
|
}): Promise<MachinesResponse>;
|
|
42
|
+
export {};
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { type Database, type MachineMetricsSample } from "@opengeni/db";
|
|
1
|
+
import { type Database, type EnrollmentMacPermissions, type MachineMetricsSample } from "@opengeni/db";
|
|
2
2
|
import { type AttachedBrowserInventorySnapshot as AttachedBrowserInventoryContractValue } from "@opengeni/contracts";
|
|
3
3
|
import { type EventBus } from "@opengeni/events";
|
|
4
4
|
import type { Observability } from "@opengeni/observability";
|
|
5
|
+
import type { AutomaticAgentUpdater } from "./agent-update.js";
|
|
5
6
|
import { Hello, type AttachedBrowserInventorySnapshot as WireAttachedBrowserInventorySnapshot, type MetricsSample } from "@opengeni/agent-proto";
|
|
6
7
|
/** The wildcard subject the agent event plane publishes heartbeats on. */
|
|
7
8
|
export declare const AGENT_EVENTS_SUBJECT = "agent.*.*.connection.*.events";
|
|
@@ -57,7 +58,7 @@ export declare function wireAttachedBrowserInventoryToContract(wire: WireAttache
|
|
|
57
58
|
* are reported + swallowed. `bus` (when present) enables the session-event
|
|
58
59
|
* fan-out; the live consumer always supplies it, pure unit tests may omit it.
|
|
59
60
|
*/
|
|
60
|
-
export declare function handleAgentEventPayload(db: Database, observability: Observability | undefined, payload: Uint8Array, subject: string, bus?: EventBus): Promise<void>;
|
|
61
|
+
export declare function handleAgentEventPayload(db: Database, observability: Observability | undefined, payload: Uint8Array, subject: string, bus?: EventBus, agentUpdates?: AutomaticAgentUpdater | null): Promise<void>;
|
|
61
62
|
/**
|
|
62
63
|
* Start the metrics-ingestion consumer: subscribe exact process events and ingest
|
|
63
64
|
* every heartbeat. Gated by sandboxSelfhostedEnabled (the caller checks the flag;
|
|
@@ -67,6 +68,7 @@ export declare function startMetricsIngestion(deps: {
|
|
|
67
68
|
db: Database;
|
|
68
69
|
bus: EventBus;
|
|
69
70
|
observability?: Observability;
|
|
71
|
+
agentUpdates?: AutomaticAgentUpdater | null;
|
|
70
72
|
}): () => void;
|
|
71
73
|
/**
|
|
72
74
|
* The LIVE display presence the agent's Hello reports: a desktop framebuffer is
|
|
@@ -100,6 +102,8 @@ export declare function refreshEnrollmentDisplay(db: Database, input: {
|
|
|
100
102
|
agentId: string;
|
|
101
103
|
hasDisplay: boolean;
|
|
102
104
|
desktopUnavailableReason?: string | null;
|
|
105
|
+
runtimeDesktop?: boolean;
|
|
106
|
+
macPermissions?: EnrollmentMacPermissions;
|
|
103
107
|
connectionInstanceId?: string;
|
|
104
108
|
}): Promise<{
|
|
105
109
|
updated: boolean;
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { type Hello } from "@opengeni/agent-proto";
|
|
2
|
+
import { EnableMachineScreenControlResponse, OpenMachinePrivacySettingsResponse, type MachinePrivacySettingsPane } from "@opengeni/contracts";
|
|
3
|
+
import { type FleetServices } from "@opengeni/core";
|
|
4
|
+
import { type EnrollmentRecord } from "@opengeni/db";
|
|
5
|
+
import type { EventBus } from "@opengeni/events";
|
|
6
|
+
import type { Observability } from "@opengeni/observability";
|
|
7
|
+
type Services = Pick<FleetServices, "db" | "settings" | "bus"> & {
|
|
8
|
+
observability?: Observability | undefined;
|
|
9
|
+
};
|
|
10
|
+
type EnrollmentAccess = string | {
|
|
11
|
+
accountId: string;
|
|
12
|
+
workspaceId: string;
|
|
13
|
+
subjectId: string;
|
|
14
|
+
};
|
|
15
|
+
/** macOS System Settings deep links for the three desktop permissions. */
|
|
16
|
+
export declare const MAC_PRIVACY_PANE_URLS: Record<MachinePrivacySettingsPane, string>;
|
|
17
|
+
/** Read access for live-connection lookups, matching the machine's scope. */
|
|
18
|
+
export declare function enrollmentAccess(enrollment: Pick<EnrollmentRecord, "scope" | "workspaceId">, personal: {
|
|
19
|
+
accountId: string;
|
|
20
|
+
workspaceId: string;
|
|
21
|
+
subjectId: string;
|
|
22
|
+
}): EnrollmentAccess;
|
|
23
|
+
export type CredentialRenewOutcome = {
|
|
24
|
+
kind: "renewed";
|
|
25
|
+
consentedScreenControl: boolean;
|
|
26
|
+
} | {
|
|
27
|
+
kind: "offline";
|
|
28
|
+
} | {
|
|
29
|
+
kind: "failed";
|
|
30
|
+
failureCode: string;
|
|
31
|
+
};
|
|
32
|
+
/** Ask one exact live runner process to renew its credentials now. */
|
|
33
|
+
export declare function requestCredentialRenew(bus: EventBus | undefined, target: {
|
|
34
|
+
workspaceId: string;
|
|
35
|
+
enrollmentId: string;
|
|
36
|
+
connectionInstanceId: string;
|
|
37
|
+
}): Promise<CredentialRenewOutcome>;
|
|
38
|
+
/** The enrollment was revoked or removed between lookup and update. */
|
|
39
|
+
export declare class MachineNotActiveError extends Error {
|
|
40
|
+
constructor();
|
|
41
|
+
}
|
|
42
|
+
/** Who turned screen control on, for the audit trail. */
|
|
43
|
+
export type ScreenControlActor = {
|
|
44
|
+
subjectId: string | null;
|
|
45
|
+
sessionId?: string | null;
|
|
46
|
+
attemptId?: string | null;
|
|
47
|
+
};
|
|
48
|
+
/**
|
|
49
|
+
* Turn screen control on for one enrolled machine, in place. The caller has
|
|
50
|
+
* already authorized the actor for this enrollment (enrollments:manage, plus
|
|
51
|
+
* account:admin for an organization machine, plus personal-machine admission
|
|
52
|
+
* for an agent attempt). Safe to repeat: a retry re-requests the renewal.
|
|
53
|
+
*/
|
|
54
|
+
export declare function enableMachineScreenControl(services: Services, input: {
|
|
55
|
+
enrollment: EnrollmentRecord;
|
|
56
|
+
access: EnrollmentAccess;
|
|
57
|
+
actor: ScreenControlActor;
|
|
58
|
+
}): Promise<EnableMachineScreenControlResponse>;
|
|
59
|
+
/**
|
|
60
|
+
* A machine whose enrollment allows screen control but whose credentials do
|
|
61
|
+
* not (it was offline, or updated from an agent without credential_renew)
|
|
62
|
+
* renews them as soon as it says Hello. The agent subscribes to requests just
|
|
63
|
+
* after its Hello, so wait briefly and retry once. Never throws.
|
|
64
|
+
*/
|
|
65
|
+
export declare function reconcileScreenControlOnHello(deps: {
|
|
66
|
+
bus: EventBus | undefined;
|
|
67
|
+
observability?: Observability | undefined;
|
|
68
|
+
sleep?: (ms: number) => Promise<void>;
|
|
69
|
+
}, input: {
|
|
70
|
+
authority: Pick<EnrollmentRecord, "allowScreenControl">;
|
|
71
|
+
hello: Hello;
|
|
72
|
+
target: {
|
|
73
|
+
workspaceId: string;
|
|
74
|
+
enrollmentId: string;
|
|
75
|
+
connectionInstanceId: string;
|
|
76
|
+
};
|
|
77
|
+
}): Promise<CredentialRenewOutcome | null>;
|
|
78
|
+
/** Open one macOS Privacy & Security pane on a connected Mac. Opening a pane
|
|
79
|
+
* grants nothing; the person flips the switch for Opengeni. */
|
|
80
|
+
export declare function openMachinePrivacySettings(services: Services, input: {
|
|
81
|
+
enrollment: EnrollmentRecord;
|
|
82
|
+
access: EnrollmentAccess;
|
|
83
|
+
pane: MachinePrivacySettingsPane;
|
|
84
|
+
}): Promise<OpenMachinePrivacySettingsResponse>;
|
|
85
|
+
export {};
|
package/dist/sandbox/viewer.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Settings } from "@opengeni/config";
|
|
2
|
-
import { type Session } from "@opengeni/contracts";
|
|
2
|
+
import { type AccessGrant, type Session } from "@opengeni/contracts";
|
|
3
3
|
import { type Database, type LeaseSnapshot, type SandboxRecord } from "@opengeni/db";
|
|
4
4
|
import { type EventBus } from "@opengeni/events";
|
|
5
5
|
import type { ObjectStorage } from "@opengeni/storage";
|
|
@@ -73,6 +73,10 @@ export declare function attachViewer(services: ViewerServices, input: {
|
|
|
73
73
|
/** The authenticated subject attaching this viewer (0281): recorded on
|
|
74
74
|
* the holder row together with the live session authority epoch. */
|
|
75
75
|
viewerSubjectId?: string;
|
|
76
|
+
/** The authenticated route grant, when one drives the attach. It resolves
|
|
77
|
+
* the session's Sandbox Environment for an agent attempt as its
|
|
78
|
+
* initiating human. */
|
|
79
|
+
grant?: AccessGrant;
|
|
76
80
|
/** Cancel lifecycle waiting when the originating HTTP request disconnects. */
|
|
77
81
|
waitSignal?: AbortSignal;
|
|
78
82
|
}): Promise<ViewerAttachResult>;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { SandboxFileArtifactReceipt, type AccessGrant, type Session } from "@opengeni/contracts";
|
|
2
2
|
import { type ApiRouteDeps, type AccessGrantAuthorization } from "@opengeni/core";
|
|
3
3
|
import { getFile } from "@opengeni/db";
|
|
4
|
+
import { type SandboxChannelAService } from "@opengeni/runtime/sandbox";
|
|
4
5
|
/** Original bytes inherit the already-authorized source session's ownership. */
|
|
5
6
|
export declare function publishSandboxFileArtifact(deps: ApiRouteDeps, input: Parameters<typeof publishSandboxFileArtifactInScope>[1]): Promise<SandboxFileArtifactReceipt>;
|
|
6
7
|
declare function publishSandboxFileArtifactInScope(deps: ApiRouteDeps, input: {
|
|
@@ -10,7 +11,22 @@ declare function publishSandboxFileArtifactInScope(deps: ApiRouteDeps, input: {
|
|
|
10
11
|
path: string;
|
|
11
12
|
signal?: AbortSignal | undefined;
|
|
12
13
|
}): Promise<SandboxFileArtifactReceipt>;
|
|
13
|
-
|
|
14
|
+
/** Use the root captured by the same fenced Channel-A service that reads bytes,
|
|
15
|
+
* not the session's placement-home label or a caller-supplied root. */
|
|
16
|
+
export declare function readSandboxArtifactFile(service: Pick<SandboxChannelAService, "capabilities" | "fsRead">, value: string, maxBytes: number): Promise<{
|
|
17
|
+
path: string;
|
|
18
|
+
sandboxPath: string;
|
|
19
|
+
read: {
|
|
20
|
+
path: string;
|
|
21
|
+
encoding: "base64" | "utf8";
|
|
22
|
+
content: string;
|
|
23
|
+
sizeBytes: number;
|
|
24
|
+
truncated: boolean;
|
|
25
|
+
isBinary: boolean;
|
|
26
|
+
revision: number;
|
|
27
|
+
};
|
|
28
|
+
}>;
|
|
29
|
+
export declare function sandboxArtifactRelativePath(value: string, workspaceRoot?: string): string;
|
|
14
30
|
export declare function sandboxArtifactSafeFilename(filename: string): string;
|
|
15
31
|
export declare function sandboxFileContentType(filename: string): string;
|
|
16
32
|
export declare function sandboxArtifactIdentity(input: {
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { type Database, type ScheduledTaskBlockerDecision, type ScheduledTaskBlockerFacts, type ScheduledTaskBlockerRun } from "@opengeni/db";
|
|
2
|
+
import { type EventBus } from "@opengeni/events";
|
|
3
|
+
import type { Observability } from "@opengeni/observability";
|
|
4
|
+
/**
|
|
5
|
+
* A schedule must never stay stuck without its owner knowing. After each
|
|
6
|
+
* settled scheduled run:
|
|
7
|
+
*
|
|
8
|
+
* - When the platform knows no later run can start until a person acts (its
|
|
9
|
+
* chat is paused or gone, a pinned account or other resource it needs is
|
|
10
|
+
* unavailable, or it was refused as non-retryable), the schedule pauses
|
|
11
|
+
* itself with that reason and its owner is told once.
|
|
12
|
+
* - When runs keep failing or being skipped for a reason that may clear by
|
|
13
|
+
* itself, the owner is told once, after {@link SCHEDULED_TASK_BLOCKER_STREAK}
|
|
14
|
+
* in a row; the schedule keeps running. A single skip or failure is normal.
|
|
15
|
+
*
|
|
16
|
+
* The notice is withdrawn when a later run succeeds or a person resumes,
|
|
17
|
+
* pauses or deletes the schedule. Only scheduled (not manual) runs count, and
|
|
18
|
+
* only runs since the schedule was last edited or resumed.
|
|
19
|
+
*/
|
|
20
|
+
export declare const SCHEDULED_TASK_BLOCKER_STREAK = 3;
|
|
21
|
+
type Blocker = {
|
|
22
|
+
reason: string;
|
|
23
|
+
text: string;
|
|
24
|
+
};
|
|
25
|
+
/** A blocker no later run can get past until a person acts, or null. */
|
|
26
|
+
export declare function scheduledRunHardBlocker(task: Pick<ScheduledTaskBlockerFacts["task"], "runMode">, run: ScheduledTaskBlockerRun): Blocker | null;
|
|
27
|
+
export declare function scheduledTaskBlockerNoticeKey(taskId: string): string;
|
|
28
|
+
/** The pure review of one schedule's newest settled scheduled run. */
|
|
29
|
+
export declare function decideScheduledTaskBlocker(facts: ScheduledTaskBlockerFacts): ScheduledTaskBlockerDecision;
|
|
30
|
+
type Dependencies = {
|
|
31
|
+
db: Database;
|
|
32
|
+
bus: EventBus;
|
|
33
|
+
observability?: Pick<Observability, "error"> | undefined;
|
|
34
|
+
};
|
|
35
|
+
/** Post or withdraw the owner notice a review left pending. */
|
|
36
|
+
export declare function deliverScheduledTaskBlockerNotice(deps: Dependencies, workspaceId: string, taskId: string): Promise<void>;
|
|
37
|
+
/** One bounded pass over schedules with a run to review or a notice to deliver. */
|
|
38
|
+
export declare function reviewScheduledTaskBlockerInventory(deps: Dependencies): Promise<void>;
|
|
39
|
+
export {};
|
|
@@ -1,13 +1,12 @@
|
|
|
1
|
-
import type { ScheduledTask as ScheduledTaskValue } from "@opengeni/contracts";
|
|
1
|
+
import type { AccessGrant, ScheduledTask as ScheduledTaskValue } from "@opengeni/contracts";
|
|
2
2
|
import { type ApiRouteDeps } from "@opengeni/core";
|
|
3
3
|
import type { TemporalScheduleCleanupClaim } from "@opengeni/db";
|
|
4
4
|
/** Execute one exact connector obligation frozen into the tombstone outbox row. */
|
|
5
5
|
export declare function cleanupScheduledTaskConnectorAuthorization(deps: ApiRouteDeps, claim: TemporalScheduleCleanupClaim): Promise<void>;
|
|
6
6
|
/** Shared HTTP/MCP domain operation: authorize, tombstone, persist, then accelerate cleanup. */
|
|
7
|
-
export declare function deleteScheduledTaskWithDurableCleanup(deps: ApiRouteDeps,
|
|
8
|
-
|
|
7
|
+
export declare function deleteScheduledTaskWithDurableCleanup(deps: ApiRouteDeps, request: {
|
|
8
|
+
grant: AccessGrant;
|
|
9
9
|
taskId: string;
|
|
10
|
-
subjectId: string;
|
|
11
10
|
}): Promise<{
|
|
12
11
|
task: ScheduledTaskValue;
|
|
13
12
|
changed: boolean;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { type Database } from "@opengeni/db";
|
|
2
|
+
import type { ScheduledTask } from "@opengeni/contracts";
|
|
3
|
+
import type { EventBus } from "@opengeni/events";
|
|
4
|
+
import type { Observability } from "@opengeni/observability";
|
|
5
|
+
type Dependencies = {
|
|
6
|
+
db: Database;
|
|
7
|
+
sync(task: Pick<ScheduledTask, "id" | "workspaceId" | "temporalScheduleId">): Promise<void>;
|
|
8
|
+
/** Enables blocked-schedule review: self-pause and the owner notice it posts. */
|
|
9
|
+
bus?: EventBus;
|
|
10
|
+
observability?: Pick<Observability, "error">;
|
|
11
|
+
};
|
|
12
|
+
export declare function reconcileExhaustedScheduledTasks(deps: Dependencies): Promise<void>;
|
|
13
|
+
export declare function startScheduledTaskLifecyclePump(deps: Dependencies, intervalMs?: number): () => Promise<void>;
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Secret ask-card answers on the way in. Every surface that accepts an answer
|
|
3
|
+
* (the events route, `session_human_input_respond`) prepares them here: the
|
|
4
|
+
* value is generated when asked for, encrypted with the vault key and sized.
|
|
5
|
+
* The prepared answers go to `acceptSessionHumanInputResponse`, which writes
|
|
6
|
+
* them in the accept transaction; nothing here is stored or logged.
|
|
7
|
+
*/
|
|
8
|
+
import { type Settings } from "@opengeni/config";
|
|
9
|
+
import { type HumanInputSecretAnswer, type SecretPrincipal } from "@opengeni/contracts";
|
|
10
|
+
import { type PreparedSecretAnswer, type VaultDbContext } from "@opengeni/db";
|
|
11
|
+
export type SecretAnswerSource = "human" | "agent";
|
|
12
|
+
/**
|
|
13
|
+
* Generate and encrypt write-only secret answers. Agents may only send a
|
|
14
|
+
* generate spec (AC-7): a raw value from an agent is refused here, before
|
|
15
|
+
* anything is written.
|
|
16
|
+
*/
|
|
17
|
+
export declare function prepareSecretAnswers(settings: Settings, answers: readonly HumanInputSecretAnswer[], source: SecretAnswerSource): PreparedSecretAnswer[];
|
|
18
|
+
/** A raw value where only a reference or generate spec is allowed. */
|
|
19
|
+
export declare class SecretAnswerRejectedError extends Error {
|
|
20
|
+
readonly name = "SecretAnswerRejectedError";
|
|
21
|
+
}
|
|
22
|
+
/** The vault authority that writes a person's answers. */
|
|
23
|
+
export declare function humanSecretWriteContext(input: {
|
|
24
|
+
accountId: string;
|
|
25
|
+
workspaceId: string;
|
|
26
|
+
subjectId: string;
|
|
27
|
+
}): VaultDbContext;
|
|
28
|
+
/** The vault authority that writes an agent attempt's generated answers. */
|
|
29
|
+
export declare function attemptSecretWriteContext(principal: Extract<SecretPrincipal, {
|
|
30
|
+
kind: "attempt";
|
|
31
|
+
}>): VaultDbContext;
|
|
32
|
+
/**
|
|
33
|
+
* Separate the write-only secret answers from a submitted response. They may
|
|
34
|
+
* arrive inside the response (the documented shape) or next to it on the
|
|
35
|
+
* event payload; both are merged and removed from what gets stored.
|
|
36
|
+
*/
|
|
37
|
+
export declare function splitSecretAnswers<T>(response: T, besideResponse: readonly HumanInputSecretAnswer[] | undefined): {
|
|
38
|
+
response: T;
|
|
39
|
+
secretAnswers: HumanInputSecretAnswer[];
|
|
40
|
+
};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { type Observability } from "@opengeni/observability";
|
|
2
|
+
type SessionCreatePhase = "authorization" | "body_read" | "site_origin" | "core_create" | "response_projection";
|
|
3
|
+
/** Content-free child boundaries within the existing HTTP request span. */
|
|
4
|
+
export declare function measureSessionCreatePhase<T>(observability: Pick<Observability, "startSpan"> | null | undefined, phase: SessionCreatePhase, work: () => Promise<T>): Promise<T>;
|
|
5
|
+
export {};
|