@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,3 +1,10 @@
|
|
|
1
1
|
import type { AccessGrant } from "@opengeni/contracts";
|
|
2
2
|
import { type ApiRouteDeps } from "@opengeni/core";
|
|
3
|
-
|
|
3
|
+
import { type CreditDebitAttribution } from "@opengeni/db";
|
|
4
|
+
/**
|
|
5
|
+
* Trusted payer for a non-agent grant: an authenticated human session pays as
|
|
6
|
+
* that human; keys and services are service work. An agent attempt must be
|
|
7
|
+
* resolved through the validated middleware context installed below.
|
|
8
|
+
*/
|
|
9
|
+
export declare function creditDebitAttributionForGrant(grant: AccessGrant): CreditDebitAttribution;
|
|
10
|
+
export declare function withAccessGrantSessionRlsContext<T>(deps: Pick<ApiRouteDeps, "db">, grant: AccessGrant, fn: () => Promise<T>): Promise<T>;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { Observability } from "@opengeni/observability";
|
|
2
|
+
/** Only committed, non-replayed server event identities mint admission anchors. */
|
|
3
|
+
export declare function recordAcceptedApiAdmission(observability: Observability | undefined, result: {
|
|
4
|
+
accepted: {
|
|
5
|
+
id: string;
|
|
6
|
+
};
|
|
7
|
+
replay: boolean;
|
|
8
|
+
}): void;
|
package/dist/app.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type FirstPartyMcpToolPolicySettings } from "@opengeni/config";
|
|
2
|
+
import { type AccessGrant, type ErrorCode, type FirstPartyMcpToolName, type Session } from "@opengeni/contracts";
|
|
2
3
|
import { Hono } from "hono";
|
|
3
4
|
import type { ApiRouteDeps, AppDependencies } from "@opengeni/core";
|
|
4
5
|
export { allowedCorsOrigin } from "./http/cors.js";
|
|
@@ -20,11 +21,57 @@ export declare function createAppComposition(deps: AppDependencies): {
|
|
|
20
21
|
};
|
|
21
22
|
export declare function appendVary(current: string | null, value: string): string;
|
|
22
23
|
export declare function workspaceActorContextExempt(method: string, pathname: string): boolean;
|
|
24
|
+
/** Configured SDK credentials cannot regain tools from widened legacy columns. */
|
|
25
|
+
export declare function configuredCodemodeSessionProxyTools(settings: FirstPartyMcpToolPolicySettings, session: Pick<Session, "agent">): FirstPartyMcpToolName[] | null;
|
|
26
|
+
/**
|
|
27
|
+
* Permissions span capabilities: project_create grants sessions:create,
|
|
28
|
+
* and runtime titling grants sessions:control. Fence the endpoint family
|
|
29
|
+
* too, without changing null-config routing or ordinary REST authorization.
|
|
30
|
+
*/
|
|
31
|
+
export declare function assertConfiguredCodemodeSessionProxyPath(session: Pick<Session, "id" | "agent">, path: string, method: string): void;
|
|
23
32
|
export declare function httpStatusForError(error: unknown): number;
|
|
24
33
|
export declare function errorCodeForStatus(status: number): ErrorCode;
|
|
25
|
-
export declare function routeLabel(pathname: string): string;
|
|
26
34
|
/**
|
|
27
|
-
*
|
|
35
|
+
* Bounded route label for metrics, spans, and request logs. Explicit patterns
|
|
36
|
+
* keep established label spellings stable; any other request answered by a
|
|
37
|
+
* registered handler uses that handler's code-owned path template (see
|
|
38
|
+
* `registeredHandlerRoutePath`). Only unregistered paths fall into `unknown`.
|
|
39
|
+
*/
|
|
40
|
+
export declare function routeLabel(pathname: string, registeredRoutePath?: string | null): string;
|
|
41
|
+
/**
|
|
42
|
+
* API contract revisions no longer admitted from ANY caller, including bearer
|
|
43
|
+
* integrations that would otherwise be accepted across revisions. Add a
|
|
44
|
+
* revision here only for a truly breaking wire change (which also requires a
|
|
45
|
+
* major release-train change); ordinary revision bumps stay additive.
|
|
46
|
+
*/
|
|
47
|
+
export declare const REFUSED_API_CONTRACT_REVISIONS: ReadonlySet<string>;
|
|
48
|
+
/**
|
|
49
|
+
* The rollout fence for state-changing product calls.
|
|
50
|
+
*
|
|
51
|
+
* The exact-revision check exists to stop a stale first-party browser tab
|
|
52
|
+
* (cookie session, or unauthenticated local mode) from writing with an old
|
|
53
|
+
* request shape after a deployment; it answers 409 so the page reloads onto
|
|
54
|
+
* the matching bundle. That tab never sends `Authorization`, so this is not a
|
|
55
|
+
* header a stale bundle can choose to bypass it with.
|
|
56
|
+
*
|
|
57
|
+
* Bearer-authenticated callers (organization/workspace API keys, delegated
|
|
58
|
+
* tokens, the deployment key sent as a bearer) are integrations pinned to an
|
|
59
|
+
* SDK version: reloading cannot upgrade them, and the API is additive within a
|
|
60
|
+
* major release train. They are admitted with an older revision or with no
|
|
61
|
+
* revision claim at all. Only a revision listed in
|
|
62
|
+
* `REFUSED_API_CONTRACT_REVISIONS` is refused for them.
|
|
63
|
+
*
|
|
64
|
+
* This is a compatibility fence, not an authorization boundary: every route
|
|
65
|
+
* still authenticates and authorizes the request independently.
|
|
66
|
+
*/
|
|
67
|
+
export declare function apiContractAdmission(input: {
|
|
68
|
+
method: string;
|
|
69
|
+
pathname: string;
|
|
70
|
+
authorization: string | undefined;
|
|
71
|
+
claimedRevision: string | undefined;
|
|
72
|
+
}, refusedRevisions?: ReadonlySet<string>): "admit" | "reject";
|
|
73
|
+
/**
|
|
74
|
+
* State-changing Opengeni HTTP calls must never cross an incompatible rollout
|
|
28
75
|
* boundary. Standard third-party protocols and externally initiated callbacks
|
|
29
76
|
* are intentionally outside this product API contract.
|
|
30
77
|
*/
|
package/dist/app.js
CHANGED
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
API_MAX_REQUEST_BODY_BYTES,
|
|
3
|
+
REFUSED_API_CONTRACT_REVISIONS,
|
|
3
4
|
allowedCorsOrigin,
|
|
5
|
+
apiContractAdmission,
|
|
4
6
|
apiRequestBodyLimitBytes,
|
|
5
7
|
appendVary,
|
|
8
|
+
assertConfiguredCodemodeSessionProxyPath,
|
|
9
|
+
configuredCodemodeSessionProxyTools,
|
|
6
10
|
createApp,
|
|
7
11
|
createAppComposition,
|
|
8
12
|
errorCodeForStatus,
|
|
@@ -24,12 +28,17 @@ import {
|
|
|
24
28
|
withDefaultEnabledCapabilityMcpTools,
|
|
25
29
|
workflowIdForSession,
|
|
26
30
|
workspaceActorContextExempt
|
|
27
|
-
} from "./chunk-
|
|
31
|
+
} from "./chunk-GBUJ2DYZ.js";
|
|
32
|
+
import "./chunk-OGQDXVXY.js";
|
|
28
33
|
export {
|
|
29
34
|
API_MAX_REQUEST_BODY_BYTES,
|
|
35
|
+
REFUSED_API_CONTRACT_REVISIONS,
|
|
30
36
|
allowedCorsOrigin,
|
|
37
|
+
apiContractAdmission,
|
|
31
38
|
apiRequestBodyLimitBytes,
|
|
32
39
|
appendVary,
|
|
40
|
+
assertConfiguredCodemodeSessionProxyPath,
|
|
41
|
+
configuredCodemodeSessionProxyTools,
|
|
33
42
|
createApp,
|
|
34
43
|
createAppComposition,
|
|
35
44
|
errorCodeForStatus,
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { AccessGrant } from "@opengeni/contracts";
|
|
2
|
+
import { type ApiRouteDeps } from "@opengeni/core";
|
|
3
|
+
import type { AttachedBrowserViewer } from "@opengeni/db";
|
|
4
|
+
/**
|
|
5
|
+
* The person whose machine access decides which attached browsers a caller
|
|
6
|
+
* may see and control. Personal (Only me) machines belong to one person, so a
|
|
7
|
+
* human sees and controls their own; an agent acts for the person who started
|
|
8
|
+
* its turn (never merely for the workspace). Other callers (keys, services)
|
|
9
|
+
* reach only machines that are not personal.
|
|
10
|
+
*/
|
|
11
|
+
export declare function attachedBrowserViewer(deps: Pick<ApiRouteDeps, "db">, grant: AccessGrant, workspaceId: string): Promise<AttachedBrowserViewer>;
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
export declare function runManagedSignInConnect<T>(intentId: string, action: () => T): T;
|
|
2
|
+
export declare function currentManagedSignInConnectIntent(): string | undefined;
|
|
1
3
|
export declare function runManagedAuthAttempt<T>(transactionId: string, providerId: "credential" | "google" | "github", action: () => T): T;
|
|
2
4
|
export declare function runManagedAuthProvider<T>(providerId: "credential" | "google" | "github", action: () => T): T;
|
|
3
5
|
export declare function runManagedAuthDiscardedProviderSession<T>(action: () => T): T;
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
import type { Database } from "@opengeni/db";
|
|
2
|
+
import { APIError } from "better-auth/api";
|
|
3
|
+
export type ManagedAuthClientRateLimitRule = {
|
|
4
|
+
window: number;
|
|
5
|
+
max: number;
|
|
6
|
+
};
|
|
7
|
+
/**
|
|
8
|
+
* Better Auth's per-client-address limits, keyed by endpoint path relative to
|
|
9
|
+
* `/v1/auth`. The client address is the trusted source address stamped by the
|
|
10
|
+
* API (see `TRUSTED_CLIENT_ADDRESS_HEADER`), never a caller-supplied header.
|
|
11
|
+
*
|
|
12
|
+
* Better Auth keys each counter on `(client address, path)` and resets it only
|
|
13
|
+
* after `window` seconds pass without an admitted request. Its database store
|
|
14
|
+
* prunes rows idle for longer than 60 s, so no window here exceeds 60 s; a
|
|
15
|
+
* longer window would silently shrink to that pruning horizon. The limits are
|
|
16
|
+
* sized for launch traffic that shares one address (office and carrier NAT)
|
|
17
|
+
* while bounding scripted credential guessing and mail sending from one
|
|
18
|
+
* source. Per-email throttles below cap the same abuse across many addresses.
|
|
19
|
+
*
|
|
20
|
+
* Email sign-in and sign-up allow 20 per minute, at least Better Auth's
|
|
21
|
+
* previous default (3 per 10 s, about 18 per minute). Until the edge forwards
|
|
22
|
+
* real client addresses (for example ingress-nginx behind a cloud load
|
|
23
|
+
* balancer with `externalTrafficPolicy: Cluster`), every user shares a few
|
|
24
|
+
* node addresses, and these two limits then bound the whole deployment's
|
|
25
|
+
* email sign-in and sign-up rate; they must not fall below that default.
|
|
26
|
+
*/
|
|
27
|
+
export declare const MANAGED_AUTH_CLIENT_RATE_LIMIT_RULES: {
|
|
28
|
+
readonly "/sign-in/email": {
|
|
29
|
+
readonly window: 60;
|
|
30
|
+
readonly max: 20;
|
|
31
|
+
};
|
|
32
|
+
readonly "/sign-up/email": {
|
|
33
|
+
readonly window: 60;
|
|
34
|
+
readonly max: 20;
|
|
35
|
+
};
|
|
36
|
+
readonly "/sign-in/social": {
|
|
37
|
+
readonly window: 60;
|
|
38
|
+
readonly max: 20;
|
|
39
|
+
};
|
|
40
|
+
readonly "/callback/*": {
|
|
41
|
+
readonly window: 60;
|
|
42
|
+
readonly max: 30;
|
|
43
|
+
};
|
|
44
|
+
readonly "/request-password-reset": {
|
|
45
|
+
readonly window: 60;
|
|
46
|
+
readonly max: 5;
|
|
47
|
+
};
|
|
48
|
+
readonly "/send-verification-email": {
|
|
49
|
+
readonly window: 60;
|
|
50
|
+
readonly max: 5;
|
|
51
|
+
};
|
|
52
|
+
readonly "/verify-email": {
|
|
53
|
+
readonly window: 60;
|
|
54
|
+
readonly max: 20;
|
|
55
|
+
};
|
|
56
|
+
readonly "/reset-password": {
|
|
57
|
+
readonly window: 60;
|
|
58
|
+
readonly max: 10;
|
|
59
|
+
};
|
|
60
|
+
readonly "/reset-password/*": {
|
|
61
|
+
readonly window: 60;
|
|
62
|
+
readonly max: 20;
|
|
63
|
+
};
|
|
64
|
+
};
|
|
65
|
+
export type ManagedAuthEmailThrottle = {
|
|
66
|
+
purpose: "sign_in" | "sign_up" | "password_reset" | "verification_email";
|
|
67
|
+
windowSeconds: number;
|
|
68
|
+
/** Attempts one client address (an IPv6 /64) may make against one email. */
|
|
69
|
+
perSourceMax: number;
|
|
70
|
+
/** Attempts all client addresses together may make against one email. */
|
|
71
|
+
perEmailMax: number;
|
|
72
|
+
};
|
|
73
|
+
/**
|
|
74
|
+
* Per-email throttles for the endpoints that verify a password or send mail
|
|
75
|
+
* to an address. They bound password guessing against one account and mail
|
|
76
|
+
* bombing of one inbox regardless of how many client addresses an attacker
|
|
77
|
+
* rotates through. Every attempt counts, including successful sign-ins.
|
|
78
|
+
*
|
|
79
|
+
* Each email has two fixed windows. The tight one is per (email, client
|
|
80
|
+
* address); an attempt it refuses never reaches the looser per-email window.
|
|
81
|
+
* One source can therefore spend only its own share of an email's budget:
|
|
82
|
+
* locking a person out of email/password sign-in, sign-up, password reset, or
|
|
83
|
+
* verification mail takes at least `perEmailMax / perSourceMax` (5) distinct
|
|
84
|
+
* client addresses (IPv6: /64 blocks) inside the window, while one address
|
|
85
|
+
* can exhaust that email's budget only for requests from the same address.
|
|
86
|
+
* Social sign-in is never throttled per email. The accepted cost is that a
|
|
87
|
+
* distributed attacker may make up to `perEmailMax` attempts per window
|
|
88
|
+
* against one email, and can deny that email's password sign-in for the rest
|
|
89
|
+
* of the window once it spends them.
|
|
90
|
+
*/
|
|
91
|
+
export declare const MANAGED_AUTH_EMAIL_THROTTLES: {
|
|
92
|
+
readonly "/sign-in/email": {
|
|
93
|
+
readonly purpose: "sign_in";
|
|
94
|
+
readonly windowSeconds: number;
|
|
95
|
+
readonly perSourceMax: 10;
|
|
96
|
+
readonly perEmailMax: 50;
|
|
97
|
+
};
|
|
98
|
+
readonly "/sign-up/email": {
|
|
99
|
+
readonly purpose: "sign_up";
|
|
100
|
+
readonly windowSeconds: number;
|
|
101
|
+
readonly perSourceMax: 5;
|
|
102
|
+
readonly perEmailMax: 25;
|
|
103
|
+
};
|
|
104
|
+
readonly "/request-password-reset": {
|
|
105
|
+
readonly purpose: "password_reset";
|
|
106
|
+
readonly windowSeconds: number;
|
|
107
|
+
readonly perSourceMax: 5;
|
|
108
|
+
readonly perEmailMax: 25;
|
|
109
|
+
};
|
|
110
|
+
readonly "/send-verification-email": {
|
|
111
|
+
readonly purpose: "verification_email";
|
|
112
|
+
readonly windowSeconds: number;
|
|
113
|
+
readonly perSourceMax: 5;
|
|
114
|
+
readonly perEmailMax: 25;
|
|
115
|
+
};
|
|
116
|
+
};
|
|
117
|
+
export declare const MANAGED_AUTH_EMAIL_THROTTLE_KEY_PREFIX = "opengeni:email-throttle:v1:";
|
|
118
|
+
/** A per-email throttle refusal; an ordinary Better Auth 429 on the wire. */
|
|
119
|
+
export declare class ManagedAuthEmailThrottleError extends APIError {
|
|
120
|
+
readonly retryAfterSeconds: number;
|
|
121
|
+
constructor(retryAfterSeconds: number);
|
|
122
|
+
}
|
|
123
|
+
export declare function managedAuthEmailThrottleFor(path: string): ManagedAuthEmailThrottle | null;
|
|
124
|
+
/**
|
|
125
|
+
* Content-free counter key for one email. The address is normalized the way
|
|
126
|
+
* Better Auth stores it and keyed-hashed so the rate-limit table never holds
|
|
127
|
+
* an email.
|
|
128
|
+
*/
|
|
129
|
+
export declare function managedAuthEmailThrottleKey(secret: string, purpose: ManagedAuthEmailThrottle["purpose"], email: string): string;
|
|
130
|
+
/**
|
|
131
|
+
* Content-free counter key for one (email, client address) pair; `source` is
|
|
132
|
+
* a {@link requestSourceRateLimitKey}. Neither value is stored.
|
|
133
|
+
*/
|
|
134
|
+
export declare function managedAuthEmailSourceThrottleKey(secret: string, purpose: ManagedAuthEmailThrottle["purpose"], email: string, source: string): string;
|
|
135
|
+
/**
|
|
136
|
+
* The limiter source for a Better Auth request: the trusted address the API
|
|
137
|
+
* stamped on it, as a rate-limit key. The API strips caller-supplied copies,
|
|
138
|
+
* so a request without one (an in-process call without a transport peer)
|
|
139
|
+
* shares the unknown-source bucket.
|
|
140
|
+
*/
|
|
141
|
+
export declare function managedAuthThrottleSource(headers: Headers | null | undefined): string;
|
|
142
|
+
/**
|
|
143
|
+
* Atomically count one attempt in a fixed window shared by every API replica.
|
|
144
|
+
*
|
|
145
|
+
* Rows live in Better Auth's `auth_rate_limits` table. For these keys
|
|
146
|
+
* `last_request` holds the window deadline (epoch milliseconds) rather than
|
|
147
|
+
* the last request time: Better Auth prunes rows whose `last_request` is more
|
|
148
|
+
* than 60 s in the past, so storing the deadline keeps an active window alive
|
|
149
|
+
* and lets pruning reclaim it 60 s after it expires. Database time is the only
|
|
150
|
+
* clock, so replicas with skewed clocks agree.
|
|
151
|
+
*/
|
|
152
|
+
export declare function consumeManagedAuthEmailThrottle(db: Pick<Database, "execute">, input: {
|
|
153
|
+
key: string;
|
|
154
|
+
windowSeconds: number;
|
|
155
|
+
max: number;
|
|
156
|
+
}): Promise<{
|
|
157
|
+
allowed: boolean;
|
|
158
|
+
retryAfterSeconds: number;
|
|
159
|
+
}>;
|
|
160
|
+
/**
|
|
161
|
+
* Better Auth `hooks.before` middleware. It runs after Better Auth's own
|
|
162
|
+
* per-client-address limiter and for both HTTP requests and server-side
|
|
163
|
+
* `auth.api.*` calls, so the product session-set sign-in is covered too. The
|
|
164
|
+
* per-(email, address) window is consumed first; only an attempt it admits
|
|
165
|
+
* counts toward the email's shared window.
|
|
166
|
+
*/
|
|
167
|
+
export declare function createManagedAuthEmailThrottleHook(db: Pick<Database, "execute">, secret: string): (inputContext: import("better-auth").MiddlewareInputContext<import("better-auth").MiddlewareOptions>) => Promise<void>;
|
|
@@ -1,4 +1,12 @@
|
|
|
1
1
|
import type { ManagedAuthSessionAdapter } from "@opengeni/core/managed-auth-session-sets";
|
|
2
2
|
import type { Database } from "@opengeni/db";
|
|
3
|
-
import type
|
|
3
|
+
import { type ManagedAuth } from "@opengeni/core";
|
|
4
|
+
/** Server-only proof for a product-owned endpoint; never returned to a browser. */
|
|
5
|
+
export declare function managedAuthSelectedProofHeaders(auth: ManagedAuth, token: string): Promise<Headers>;
|
|
4
6
|
export declare function createBetterAuthSessionAdapter(auth: ManagedAuth, db: Database): ManagedAuthSessionAdapter;
|
|
7
|
+
/**
|
|
8
|
+
* The provider's own session cookie for an exact session token (or its
|
|
9
|
+
* expiry when `token` is null), plus invalidation of stale provider cache
|
|
10
|
+
* cookies, exactly as a browser sign-in would set them.
|
|
11
|
+
*/
|
|
12
|
+
export declare function managedAuthSessionCookieHeaders(auth: ManagedAuth, token: string | null, currentCookieHeader?: string | null): Promise<string[]>;
|
|
@@ -1,21 +1,88 @@
|
|
|
1
1
|
import { type Settings } from "@opengeni/config";
|
|
2
2
|
import { type ManagedAuth, type ManagedEmailMessage, type ManagedEmailTransport } from "@opengeni/core";
|
|
3
3
|
import type { Database } from "@opengeni/db";
|
|
4
|
+
import type { Observability } from "@opengeni/observability";
|
|
5
|
+
import { APIError } from "better-auth/api";
|
|
6
|
+
import { Pool } from "pg";
|
|
7
|
+
import { type ManagedAuthNewSignupsGate } from "./new-signups-gate.js";
|
|
4
8
|
export type { ManagedAuth };
|
|
5
|
-
export declare function managedAuthRequiresEmailVerification(settings: Pick<Settings, "environment">): boolean;
|
|
6
|
-
export declare function managedAuthUserCreateOverride(settings: Pick<Settings, "environment">, user: {
|
|
9
|
+
export declare function managedAuthRequiresEmailVerification(settings: Pick<Settings, "environment" | "managedAuthRequireEmailVerification">): boolean;
|
|
10
|
+
export declare function managedAuthUserCreateOverride(settings: Pick<Settings, "environment" | "managedAuthRequireEmailVerification">, user: {
|
|
7
11
|
emailVerified: boolean;
|
|
8
12
|
} & Record<string, unknown>): {
|
|
9
13
|
data: typeof user;
|
|
10
14
|
} | undefined;
|
|
11
|
-
export declare
|
|
15
|
+
export declare const MANAGED_AUTH_NEW_SIGNUPS_PAUSED_MESSAGE = "We're at capacity for new accounts right now. Please try again later.";
|
|
16
|
+
/**
|
|
17
|
+
* Typed refusal for a new account while the deployment has paused sign-ups.
|
|
18
|
+
* Existing accounts are unaffected; the body mirrors Better Auth's
|
|
19
|
+
* `{ code, message }` error shape so browser and SDK callers parse it alike.
|
|
20
|
+
*/
|
|
21
|
+
export declare function managedAuthNewSignupsPausedResponse(): Response;
|
|
22
|
+
/**
|
|
23
|
+
* Thrown from the user-create hook while the runtime switch has paused new
|
|
24
|
+
* sign-ups. Better Auth returns it as `403 { code: "NEW_SIGNUPS_PAUSED" }` on
|
|
25
|
+
* email sign-up, and its OAuth callback turns the message into the
|
|
26
|
+
* `error=signup_disabled` redirect it also uses for a static provider refusal.
|
|
27
|
+
*/
|
|
28
|
+
export declare class ManagedAuthNewSignupsPausedError extends APIError {
|
|
29
|
+
constructor();
|
|
30
|
+
}
|
|
31
|
+
export declare function managedAuthUserCreateAdmission(settings: Pick<Settings, "environment" | "allowedUserEmails"> & Partial<Pick<Settings, "managedAuthNewSignupsEnabled" | "managedAuthRequireEmailVerification">>, user: {
|
|
12
32
|
emailVerified: boolean;
|
|
13
33
|
} & Record<string, unknown>, providerId: string): {
|
|
14
34
|
data: typeof user;
|
|
15
35
|
} | false | undefined;
|
|
36
|
+
/**
|
|
37
|
+
* Per-provider Better Auth options while sign-ups are paused. A social sign-in
|
|
38
|
+
* for an existing human still signs in (and may link a verified provider);
|
|
39
|
+
* an unknown human is redirected back with `error=signup_disabled`.
|
|
40
|
+
* `disableSignUp` is the hard switch: `disableImplicitSignUp` alone can be
|
|
41
|
+
* overridden by a client-supplied `requestSignUp`.
|
|
42
|
+
*/
|
|
43
|
+
export declare function managedAuthSocialSignupOptions(settings: Pick<Settings, "managedAuthNewSignupsEnabled">): {
|
|
44
|
+
disableImplicitSignUp?: true;
|
|
45
|
+
disableSignUp?: true;
|
|
46
|
+
};
|
|
16
47
|
/** Keep Better Auth password policy and storage format behind this boundary. */
|
|
17
48
|
export declare function hashManagedAuthPassword(password: string): Promise<string>;
|
|
18
|
-
export declare function
|
|
49
|
+
export declare function verifyManagedAuthPassword(password: string, hash: string): Promise<boolean>;
|
|
50
|
+
type ManagedAuthPoolObservability = Pick<Observability, "warn" | "incrementCounter">;
|
|
51
|
+
/**
|
|
52
|
+
* Bounded pool settings for Better Auth's dedicated `pg` pool. A connection
|
|
53
|
+
* attempt fails after 10 s instead of queueing requests indefinitely while the
|
|
54
|
+
* database is unreachable, and connections recycle like the main postgres-js
|
|
55
|
+
* pool so a pooler- or failover-replaced backend is not held forever.
|
|
56
|
+
*/
|
|
57
|
+
export declare const MANAGED_AUTH_DATABASE_POOL_OPTIONS: {
|
|
58
|
+
readonly max: 10;
|
|
59
|
+
readonly connectionTimeoutMillis: 10000;
|
|
60
|
+
readonly idleTimeoutMillis: 30000;
|
|
61
|
+
readonly maxLifetimeSeconds: 1800;
|
|
62
|
+
readonly keepAlive: true;
|
|
63
|
+
};
|
|
64
|
+
/**
|
|
65
|
+
* Better Auth's `pg` pool. When the server closes a connection (a restart,
|
|
66
|
+
* failover, or maintenance window) `pg` emits `error`: on the pool for an idle
|
|
67
|
+
* client, and on the client itself for one checked out by Better Auth's query
|
|
68
|
+
* layer. Without listeners either becomes an uncaught exception and the API's
|
|
69
|
+
* fatal process boundary exits. Both listeners record one content-free signal
|
|
70
|
+
* and keep serving. The pool has already discarded a failed idle client and
|
|
71
|
+
* opens a fresh connection for the next checkout; a checked-out client's
|
|
72
|
+
* in-flight query already rejects to its caller, and the pool discards the
|
|
73
|
+
* dead client on release. An idle client's error also reaches its own
|
|
74
|
+
* listener, so that listener records only while the client is checked out,
|
|
75
|
+
* and at most once per checkout.
|
|
76
|
+
*/
|
|
77
|
+
export declare function createManagedAuthDatabasePool(databaseUrl: string, observability?: ManagedAuthPoolObservability): Pool;
|
|
78
|
+
export declare const MANAGED_AUTH_DATABASE_POOL_ERRORS_METRIC: {
|
|
79
|
+
readonly name: "opengeni_managed_auth_database_pool_errors_total";
|
|
80
|
+
readonly help: "Managed-auth database connections the server closed or lost, by pool state.";
|
|
81
|
+
};
|
|
82
|
+
export declare function createManagedAuth(settings: Settings, db: Database, managedEmailTransport: ManagedEmailTransport, options?: {
|
|
83
|
+
observability?: ManagedAuthPoolObservability;
|
|
84
|
+
newSignupsGate?: ManagedAuthNewSignupsGate;
|
|
85
|
+
}): ManagedAuth | null;
|
|
19
86
|
export type ManagedAuthOAuthAttempt = {
|
|
20
87
|
transactionId: string;
|
|
21
88
|
provider: "google" | "github";
|
|
@@ -25,7 +92,7 @@ export type ManagedAuthOAuthAttempt = {
|
|
|
25
92
|
expectedActorEpoch: string;
|
|
26
93
|
};
|
|
27
94
|
/**
|
|
28
|
-
* Resolve
|
|
95
|
+
* Resolve Opengeni's server-only login transaction proof from Better Auth's
|
|
29
96
|
* database-backed OAuth state before the provider callback consumes it.
|
|
30
97
|
*/
|
|
31
98
|
export declare function resolveManagedAuthOAuthAttempt(auth: ManagedAuth, request: Request, provider: "google" | "github", publicBaseUrl: string): Promise<ManagedAuthOAuthAttempt | null>;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { ManagedEmailTransport } from "@opengeni/core";
|
|
2
|
+
import type { Database } from "@opengeni/db";
|
|
3
|
+
export declare function deliverManagedSignInNotification(db: Database, transport: ManagedEmailTransport, operationId?: string | null): Promise<"sent" | "failed" | "outcome_unknown">;
|
|
4
|
+
export declare function startManagedSignInNotificationDelivery(db: Database, transport: ManagedEmailTransport): void;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { Settings } from "@opengeni/config";
|
|
2
|
+
import { type Database } from "@opengeni/db";
|
|
3
|
+
import type { Observability } from "@opengeni/observability";
|
|
4
|
+
/**
|
|
5
|
+
* Decides whether a new managed account may be created right now.
|
|
6
|
+
*
|
|
7
|
+
* `OPENGENI_MANAGED_AUTH_NEW_SIGNUPS_ENABLED` is the deployment ceiling (read at
|
|
8
|
+
* startup). While it allows sign-ups, the newest revision of the operator
|
|
9
|
+
* runtime switch (migration 0585) decides, read on every call so a flip
|
|
10
|
+
* applies to the next request on every API replica without a restart.
|
|
11
|
+
*
|
|
12
|
+
* Fail-safe: if the read fails, the last value this process observed wins;
|
|
13
|
+
* before any successful read, the deployment ceiling wins. A missing revision
|
|
14
|
+
* (pre-0585 schema) also follows the ceiling.
|
|
15
|
+
*/
|
|
16
|
+
export type ManagedAuthNewSignupsGate = {
|
|
17
|
+
signupsOpen(): Promise<boolean>;
|
|
18
|
+
};
|
|
19
|
+
export declare function createManagedAuthNewSignupsGate(input: {
|
|
20
|
+
db: Database;
|
|
21
|
+
settings: Pick<Settings, "managedAuthNewSignupsEnabled">;
|
|
22
|
+
observability?: Pick<Observability, "warn"> | undefined;
|
|
23
|
+
}): ManagedAuthNewSignupsGate;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { Observability } from "@opengeni/observability";
|
|
2
|
+
/**
|
|
3
|
+
* Content-free sign-up funnel counters. Every label is a closed set: no user,
|
|
4
|
+
* email, organization, workspace, or campaign value ever becomes a label.
|
|
5
|
+
*/
|
|
6
|
+
export declare const AUTH_FUNNEL_EVENTS: readonly ["sign_up", "email_verified", "sign_in"];
|
|
7
|
+
export type AuthFunnelEvent = (typeof AUTH_FUNNEL_EVENTS)[number];
|
|
8
|
+
export declare const AUTH_FUNNEL_METHODS: readonly ["email", "google", "github", "other"];
|
|
9
|
+
export type AuthFunnelMethod = (typeof AUTH_FUNNEL_METHODS)[number];
|
|
10
|
+
export declare const ORGANIZATION_SETUP_OUTCOMES: readonly ["created", "failed"];
|
|
11
|
+
export type OrganizationSetupOutcome = (typeof ORGANIZATION_SETUP_OUTCOMES)[number];
|
|
12
|
+
/** The only observability surface funnel telemetry uses. */
|
|
13
|
+
export type SignupFunnelObservability = Pick<Observability, "incrementCounter">;
|
|
14
|
+
/** Better Auth request-body / OAuth-state key that carries first-touch attribution. */
|
|
15
|
+
export declare const SIGNUP_ATTRIBUTION_AUTH_FIELD = "opengeniAttribution";
|
|
16
|
+
export type SignupFunnelMetrics = {
|
|
17
|
+
/** A managed auth user was created (Better Auth `user.create.after`). */
|
|
18
|
+
recordSignUp(authContext: unknown): Promise<void>;
|
|
19
|
+
/** A managed user verified their email address. */
|
|
20
|
+
recordEmailVerified(): void;
|
|
21
|
+
/**
|
|
22
|
+
* A provider session was created that is not an internally discarded one.
|
|
23
|
+
* In the legacy session-set mode this includes the session the first
|
|
24
|
+
* successful email-verification click creates: that is the new user's first
|
|
25
|
+
* sign-in, so it is counted rather than folded into `email_verified`.
|
|
26
|
+
*/
|
|
27
|
+
recordSignIn(): void;
|
|
28
|
+
};
|
|
29
|
+
export declare function authFunnelMethod(providerId: string | null | undefined): AuthFunnelMethod;
|
|
30
|
+
/**
|
|
31
|
+
* Publish every closed series at zero so dashboards and alerts can tell a quiet
|
|
32
|
+
* funnel from missing instrumentation. Never throws: a metric-registry failure
|
|
33
|
+
* must not stop managed auth (and with it API startup) from composing.
|
|
34
|
+
*/
|
|
35
|
+
export declare function registerSignupFunnelMetricBaselines(observability: SignupFunnelObservability): void;
|
|
36
|
+
export declare function createSignupFunnelMetrics(observability: SignupFunnelObservability): SignupFunnelMetrics;
|
|
37
|
+
/** Count one self-service organization setup request outcome. */
|
|
38
|
+
export declare function recordOrganizationSetupOutcome(observability: SignupFunnelObservability | undefined, outcome: OrganizationSetupOutcome): void;
|
|
39
|
+
/**
|
|
40
|
+
* Read untrusted first-touch attribution from the Better Auth endpoint that is
|
|
41
|
+
* creating the user: the email sign-up body, or the server-side OAuth state
|
|
42
|
+
* (`additionalData`) that the social start stored for its callback.
|
|
43
|
+
*/
|
|
44
|
+
export declare function signupAttributionFromAuthContext(authContext: unknown): Promise<unknown>;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { Settings } from "@opengeni/config";
|
|
2
|
+
import type { CodexRealtimeWebrtcRequest } from "@opengeni/contracts";
|
|
3
|
+
import { type Database } from "@opengeni/db";
|
|
4
|
+
export declare const AZURE_LIVE_MODEL_ID: "opengeni-azure/gpt-live-1";
|
|
5
|
+
export declare function azureLiveConfigured(settings: Settings): boolean;
|
|
6
|
+
/** Server-authenticated SDP exchange. Never returns provider credentials. */
|
|
7
|
+
export declare function brokerAzureLive(input: {
|
|
8
|
+
settings: Settings;
|
|
9
|
+
request: Pick<CodexRealtimeWebrtcRequest, "sdp" | "instructions" | "voice">;
|
|
10
|
+
initialItems: Array<{
|
|
11
|
+
role: string;
|
|
12
|
+
text: string;
|
|
13
|
+
}>;
|
|
14
|
+
signal?: AbortSignal | undefined;
|
|
15
|
+
fetch?: typeof fetch;
|
|
16
|
+
}): Promise<{
|
|
17
|
+
sdp: string;
|
|
18
|
+
version: "v3";
|
|
19
|
+
model: "opengeni-azure/gpt-live-1";
|
|
20
|
+
}>;
|
|
21
|
+
export declare function buildSessionAzureLiveBroker(db: Database, settings: Settings, workspaceId: string, sessionId: string, fetchImpl?: typeof fetch): (input: {
|
|
22
|
+
request: Pick<CodexRealtimeWebrtcRequest, "sdp" | "instructions" | "voice">;
|
|
23
|
+
signal?: AbortSignal | undefined;
|
|
24
|
+
}) => Promise<{
|
|
25
|
+
sdp: string;
|
|
26
|
+
version: "v3";
|
|
27
|
+
model: "opengeni-azure/gpt-live-1";
|
|
28
|
+
}>;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { BrowserActionRequest, BrowserTargetState } from "@opengeni/contracts";
|
|
2
|
+
export type BrowserActionFences = {
|
|
3
|
+
expectedTargetGeneration: string;
|
|
4
|
+
expectedDocumentGeneration: string | null;
|
|
5
|
+
expectedFrameId: string | null;
|
|
6
|
+
};
|
|
7
|
+
/**
|
|
8
|
+
* Complete a browser action's causal fences. Supplied fences are kept exactly;
|
|
9
|
+
* any omitted one is the target's current value, read from the live controller
|
|
10
|
+
* only when needed. This keeps the "act on the current document" request to
|
|
11
|
+
* one API round trip instead of a separate target-state request before it.
|
|
12
|
+
*/
|
|
13
|
+
export declare function resolveBrowserActionFences(request: Pick<BrowserActionRequest, "expectedTargetGeneration" | "expectedDocumentGeneration" | "expectedFrameId">, readTargetState: () => Promise<Pick<BrowserTargetState, "targetGeneration" | "documentGeneration" | "frameId">>): Promise<BrowserActionFences>;
|
|
@@ -1,61 +1 @@
|
|
|
1
|
-
|
|
2
|
-
type BrowserControllerAuthorityScope = {
|
|
3
|
-
rootSecret: string;
|
|
4
|
-
accountId: string;
|
|
5
|
-
workspaceId: string;
|
|
6
|
-
placement: InteractionPlacement;
|
|
7
|
-
placementInstanceId: string;
|
|
8
|
-
};
|
|
9
|
-
type BrowserSessionAuthorityScope = BrowserControllerAuthorityScope & {
|
|
10
|
-
browserSessionId: string;
|
|
11
|
-
controllerGeneration: string;
|
|
12
|
-
tokenGeneration: number;
|
|
13
|
-
};
|
|
14
|
-
type ComputerSessionAuthorityScope = BrowserControllerAuthorityScope & {
|
|
15
|
-
computerSessionId: string;
|
|
16
|
-
controllerGeneration: string;
|
|
17
|
-
tokenGeneration: number;
|
|
18
|
-
};
|
|
19
|
-
/** Stable placement-admin authority. This token is installed owner-only inside
|
|
20
|
-
* the exact placement and is never persisted or returned by the public API. */
|
|
21
|
-
export declare function deriveBrowserControllerAdminToken(scope: BrowserControllerAuthorityScope): string;
|
|
22
|
-
/** Deterministic controller credentials. The durable generations are the only
|
|
23
|
-
* stored authority; plaintext tokens can be reconstructed only by API replicas
|
|
24
|
-
* holding the deployment HMAC root. */
|
|
25
|
-
export declare function deriveBrowserSessionControllerTokens(scope: BrowserSessionAuthorityScope): {
|
|
26
|
-
controlToken: string;
|
|
27
|
-
viewToken: string;
|
|
28
|
-
};
|
|
29
|
-
/** Secret-safe durable identity for one exact route launch. The digest binds
|
|
30
|
-
* the route snapshot and proxy credential without making a password-verifier
|
|
31
|
-
* hash available to database readers. */
|
|
32
|
-
export declare function deriveBrowserNetworkRouteAuthorityDigest(scope: {
|
|
33
|
-
rootSecret: string;
|
|
34
|
-
accountId: string;
|
|
35
|
-
workspaceId: string;
|
|
36
|
-
browserSessionId: string;
|
|
37
|
-
routeId: string;
|
|
38
|
-
routeVersion: number;
|
|
39
|
-
credentialVersion: number | null;
|
|
40
|
-
configuration: NetworkRouteConfiguration;
|
|
41
|
-
consistency: NetworkRouteConsistency;
|
|
42
|
-
proxyCredential: {
|
|
43
|
-
username: string;
|
|
44
|
-
password: string;
|
|
45
|
-
} | null;
|
|
46
|
-
}): string;
|
|
47
|
-
export declare function deriveBrowserViewGrantToken(scope: BrowserSessionAuthorityScope & {
|
|
48
|
-
grantId: string;
|
|
49
|
-
expiresAt: string;
|
|
50
|
-
}): string;
|
|
51
|
-
/** ComputerSession credentials share the placement controller root while using
|
|
52
|
-
* resource-specific domains. Browser and computer authority cannot collide. */
|
|
53
|
-
export declare function deriveComputerSessionControllerTokens(scope: ComputerSessionAuthorityScope): {
|
|
54
|
-
controlToken: string;
|
|
55
|
-
viewToken: string;
|
|
56
|
-
};
|
|
57
|
-
export declare function deriveComputerViewGrantToken(scope: ComputerSessionAuthorityScope & {
|
|
58
|
-
grantId: string;
|
|
59
|
-
expiresAt: string;
|
|
60
|
-
}): string;
|
|
61
|
-
export {};
|
|
1
|
+
export * from "@opengeni/interaction/browser-controller-authority";
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { BrowserSession, CreateBrowserSessionRequest } from "@opengeni/contracts";
|
|
2
|
+
export declare function assertEphemeralBrowserCreateEnabled(request: CreateBrowserSessionRequest, enabled: boolean): void;
|
|
3
|
+
/** Only persisted session identity and server-resolved physical placement enter
|
|
4
|
+
* this private controller partition. Public callers never supply a pool key. */
|
|
5
|
+
export declare function ephemeralBrowserPartition(session: BrowserSession, placementInstanceId: string, rootSecret: string): string;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { type BrowserControlClient } from "@opengeni/runtime/sandbox";
|
|
2
|
+
type BrowserEndClient = Pick<BrowserControlClient, "endSession">;
|
|
3
|
+
/** A person ending a browser. When the browser's controller lost the running
|
|
4
|
+
* browser (it restarted, or the runtime vanished) it preserves the working
|
|
5
|
+
* runtime and refuses a plain end; the person's explicit end then discards
|
|
6
|
+
* it. Cleanup after a failed or expired resume never takes this path, so a
|
|
7
|
+
* possibly accepted launch stays preserved there. Controllers older than the
|
|
8
|
+
* discard flag reject it as an unknown field and keep their original refusal. */
|
|
9
|
+
export declare function endBrowserDiscardingLostRuntime(client: BrowserEndClient, reference: {
|
|
10
|
+
browserSessionId: string;
|
|
11
|
+
controllerGeneration: string;
|
|
12
|
+
}): Promise<void>;
|
|
13
|
+
/** Return an expired resume to its checkpoint. A plain end of the expired
|
|
14
|
+
* generation succeeds when its launch provably never happened (or is already
|
|
15
|
+
* gone). When the controller instead preserves an interrupted launch (one that
|
|
16
|
+
* never recorded completion, so it can't be adopted), it is asked to move that
|
|
17
|
+
* launch's directory aside intact; nothing is discarded, and a launch that did
|
|
18
|
+
* complete, or whose profile may still be in use, keeps refusing. Controllers
|
|
19
|
+
* older than the set-aside flag reject it and keep their original refusal. */
|
|
20
|
+
export declare function endExpiredResumeSettingAsideInterruptedLaunch(client: BrowserEndClient, reference: {
|
|
21
|
+
browserSessionId: string;
|
|
22
|
+
controllerGeneration: string;
|
|
23
|
+
}): Promise<void>;
|
|
24
|
+
export {};
|