@opengeni/api-router 3.0.1 → 3.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/access-grant-rls.d.ts +8 -1
- package/dist/admission-trace.d.ts +8 -0
- package/dist/app.d.ts +50 -3
- package/dist/app.js +10 -1
- package/dist/artifact-catalog-cursor.d.ts +1 -0
- package/dist/attached-browser-viewer.d.ts +11 -0
- package/dist/auth/managed-auth-attempt-context.d.ts +2 -0
- package/dist/auth/managed-auth-rate-limits.d.ts +167 -0
- package/dist/auth/managed-auth-session-adapter.d.ts +9 -1
- package/dist/auth/managed-auth.d.ts +72 -5
- package/dist/auth/managed-sign-in-notifications.d.ts +4 -0
- package/dist/auth/new-signups-gate.d.ts +23 -0
- package/dist/auth/signup-funnel-metrics.d.ts +44 -0
- package/dist/azure-live.d.ts +28 -0
- package/dist/browser-action-fences.d.ts +13 -0
- package/dist/browser-controller-authority.d.ts +1 -61
- package/dist/browser-ephemeral.d.ts +5 -0
- package/dist/browser-lost-runtime-end.d.ts +24 -0
- package/dist/browser-state-authority.d.ts +1 -27
- package/dist/chunk-OGQDXVXY.js +18 -0
- package/dist/chunk-OGQDXVXY.js.map +1 -0
- package/dist/{chunk-AJ62T5QN.js → chunk-OT56OY4V.js} +80503 -39869
- package/dist/chunk-OT56OY4V.js.map +1 -0
- package/dist/claude-default-models.d.ts +19 -0
- package/dist/claude-subscription-core.d.ts +50 -0
- package/dist/claude-subscription-oauth.d.ts +36 -0
- package/dist/claude-subscription-profile.d.ts +9 -0
- package/dist/claude-subscription-usage.d.ts +6 -0
- package/dist/claude-workspace-connection.d.ts +15 -0
- package/dist/codemode.d.ts +40 -5
- package/dist/codex-realtime.d.ts +29 -3
- package/dist/codex-session-pointers.d.ts +19 -0
- package/dist/connection-ownership.d.ts +6 -3
- package/dist/controller-data-plane.d.ts +16 -0
- package/dist/credit-promotion-snapshot.d.ts +6 -0
- package/dist/editable-artifact-source-session.d.ts +3 -0
- package/dist/editable-artifact-websocket.d.ts +5 -3
- package/dist/fatal-process-boundary.d.ts +9 -1
- package/dist/github-access.d.ts +7 -1
- package/dist/github-browser-flow.d.ts +1 -1
- package/dist/http/acting-person.d.ts +36 -0
- package/dist/http/api-contract-compat.d.ts +19 -0
- package/dist/http/api-error.d.ts +50 -1
- package/dist/http/auth.d.ts +8 -1
- package/dist/http/cors.d.ts +12 -0
- package/dist/http/deprecation.d.ts +42 -0
- package/dist/http/keyed-admission.d.ts +12 -0
- package/dist/http/local-browser-boundary.d.ts +72 -0
- package/dist/http/metrics-listener.d.ts +22 -0
- package/dist/http/path-identifier.d.ts +17 -0
- package/dist/http/registered-route-label.d.ts +16 -0
- package/dist/http/rejection-telemetry.d.ts +34 -0
- package/dist/http/request-body.d.ts +27 -0
- package/dist/http/request-source.d.ts +41 -3
- package/dist/http/sse.d.ts +12 -1
- package/dist/http/unmatched-route.d.ts +18 -0
- package/dist/http/user-content.d.ts +36 -0
- package/dist/http/variable-sets-removed.d.ts +41 -0
- package/dist/http/websocket-upgrade-dispatch.d.ts +18 -0
- package/dist/index.js +1279 -108
- package/dist/index.js.map +1 -1
- package/dist/integration-connect-metrics.d.ts +35 -0
- package/dist/integration-endpoint-test.d.ts +20 -0
- package/dist/integrations/api-integrations.d.ts +2 -2
- package/dist/integrations/atlassian.d.ts +8 -3
- package/dist/integrations/fiken.d.ts +3 -1
- package/dist/integrations/github-lens-connect.d.ts +37 -66
- package/dist/integrations/google-drive.d.ts +2 -0
- package/dist/integrations/integration-commit-authority.d.ts +13 -0
- package/dist/integrations/marketplace-plugin.d.ts +43 -43
- package/dist/integrations/oauth-client.d.ts +171 -12
- package/dist/integrations/oauth-profiles.d.ts +42 -13
- package/dist/integrations/onepassword-vault-provider.d.ts +9 -0
- package/dist/integrations/slack-bot.d.ts +285 -7
- package/dist/integrations/slack-file-upload-flow.d.ts +62 -0
- package/dist/integrations/slack-interactions.d.ts +89 -10
- package/dist/integrations/slack-mrkdwn.d.ts +41 -0
- package/dist/integrations/slack-routing.d.ts +1 -1
- package/dist/integrations/slack-session-defaults.d.ts +58 -0
- package/dist/integrations/slack-task-file-upload.d.ts +36 -0
- package/dist/integrations/slack-tool-review.d.ts +5 -0
- package/dist/interaction-agent-access.d.ts +13 -8
- package/dist/interaction-agent-version.d.ts +21 -0
- package/dist/interaction-holder-heartbeat.d.ts +5 -0
- package/dist/interaction-metrics.d.ts +27 -2
- package/dist/interaction-route-stages.d.ts +25 -0
- package/dist/interaction-secrets-vault.d.ts +20 -0
- package/dist/interaction-secrets.d.ts +103 -0
- package/dist/mcp/action-catalog-types.d.ts +14 -0
- package/dist/mcp/action-catalog.gen.d.ts +2 -0
- package/dist/mcp/action-descriptions.d.ts +4 -0
- package/dist/mcp/action-schema-imports.gen.d.ts +1 -0
- package/dist/mcp/capability-account-readiness.d.ts +7 -0
- package/dist/mcp/child-read-evidence.d.ts +9 -0
- package/dist/mcp/company-profile-agent-admin.d.ts +12 -0
- package/dist/mcp/contract-input.d.ts +13 -0
- package/dist/mcp/documents.d.ts +2 -0
- package/dist/mcp/first-party-tool-permissions.d.ts +3 -606
- package/dist/mcp/notification-tools.d.ts +26 -0
- package/dist/mcp/orchestration-failure-diagnostic.d.ts +43 -0
- package/dist/mcp/scheduled-task-input.d.ts +1309 -0
- package/dist/mcp/scheduled-task-view.d.ts +217 -3
- package/dist/mcp/secret-tools.d.ts +14 -0
- package/dist/mcp/server.d.ts +108 -5
- package/dist/mcp/session-admin-access-tools.d.ts +33 -0
- package/dist/mcp/session-event-errors.d.ts +28 -0
- package/dist/mcp/session-event-view.d.ts +62 -0
- package/dist/mcp/session-view.d.ts +15 -0
- package/dist/mcp/session-wait.d.ts +18 -0
- package/dist/mcp/site-agent-clamp-tools.d.ts +38 -0
- package/dist/mcp/site-data-tools.d.ts +22 -0
- package/dist/mcp/site-publication-tools.d.ts +19 -0
- package/dist/mcp/site-sql-tools.d.ts +27 -0
- package/dist/mcp-oauth.d.ts +37 -4
- package/dist/model-calls/chat-completions.d.ts +87 -0
- package/dist/model-calls/pending-usage-settlements.d.ts +57 -0
- package/dist/model-calls/service.d.ts +36 -0
- package/dist/model-catalog.d.ts +9 -3
- package/dist/native-push-dispatch.d.ts +69 -0
- package/dist/observability.d.ts +3 -1
- package/dist/organization-mcp.d.ts +82 -0
- package/dist/prepared-mcp-actor.d.ts +77 -0
- package/dist/prepared-mcp-permissions.d.ts +8 -0
- package/dist/routes/analytics-consent.d.ts +26 -0
- package/dist/routes/api-integrations.d.ts +11 -0
- package/dist/routes/api-keys.d.ts +7 -7
- package/dist/routes/automations.d.ts +2 -0
- package/dist/routes/billing.d.ts +59 -0
- package/dist/routes/browser-sessions.d.ts +65 -2
- package/dist/routes/chat-completions.d.ts +11 -0
- package/dist/routes/claude-core-usage.d.ts +20 -0
- package/dist/routes/claude-subscription-accounts.d.ts +3 -0
- package/dist/routes/claude-subscription-oauth.d.ts +3 -0
- package/dist/routes/client-errors.d.ts +182 -0
- package/dist/routes/codex-core.d.ts +401 -0
- package/dist/routes/codex.d.ts +64 -2
- package/dist/routes/computer-sessions.d.ts +6 -1
- package/dist/routes/desktop-distribution.d.ts +32 -0
- package/dist/routes/github-browser-fonts.gen.d.ts +2 -0
- package/dist/routes/github-browser-pages.d.ts +27 -0
- package/dist/routes/inbox.d.ts +13 -0
- package/dist/routes/insights-response-cache.d.ts +10 -0
- package/dist/routes/insights-usage.d.ts +12 -0
- package/dist/routes/insights.d.ts +28 -0
- package/dist/routes/interaction-placement-message.d.ts +7 -0
- package/dist/routes/managed-sign-in-methods.d.ts +6 -0
- package/dist/routes/model-account-choice.d.ts +13 -0
- package/dist/routes/model-account-settings.d.ts +19 -0
- package/dist/routes/native-app-auth.d.ts +12 -0
- package/dist/routes/organization-integration-policy.d.ts +8 -0
- package/dist/routes/organization-integrations.d.ts +6 -0
- package/dist/routes/organization-mcp-connections.d.ts +3 -0
- package/dist/routes/organization-model-defaults.d.ts +9 -0
- package/dist/routes/organization-service-accounts.d.ts +3 -0
- package/dist/routes/personal-api-keys.d.ts +3 -0
- package/dist/routes/session-admin-access.d.ts +3 -0
- package/dist/routes/session-artifact-associations.d.ts +4 -0
- package/dist/routes/session-history-imports.d.ts +20 -0
- package/dist/routes/sessions.d.ts +38 -2
- package/dist/routes/site-data.d.ts +18 -0
- package/dist/routes/site-publishing.d.ts +5 -0
- package/dist/routes/site-runtime.d.ts +31 -0
- package/dist/routes/site-sql.d.ts +16 -0
- package/dist/routes/slack-bot-access.d.ts +3 -0
- package/dist/routes/subscription-account-pools.d.ts +21 -0
- package/dist/routes/subscription-core-http.d.ts +5 -0
- package/dist/routes/subscription-pool-access.d.ts +37 -0
- package/dist/routes/subscription-pool-core.d.ts +153 -0
- package/dist/routes/supergrok.d.ts +6 -6
- package/dist/routes/usage-allowances.d.ts +12 -0
- package/dist/routes/variable-sets-removed.d.ts +2 -0
- package/dist/routes/vault-providers.d.ts +34 -0
- package/dist/routes/vaults.d.ts +3 -0
- package/dist/routes/workspace-integrations.d.ts +35 -0
- package/dist/routes/workspace-model-providers.d.ts +4 -0
- package/dist/routes/workspaces.d.ts +11 -2
- package/dist/sandbox/agent-update.d.ts +64 -0
- package/dist/sandbox/auth-callout.d.ts +8 -0
- package/dist/sandbox/channel-a.d.ts +15 -1
- package/dist/sandbox/enrollment.d.ts +26 -4
- package/dist/sandbox/machine-audience.d.ts +29 -0
- package/dist/sandbox/machines.d.ts +15 -2
- package/dist/sandbox/metrics-ingestion.d.ts +6 -2
- package/dist/sandbox/screen-control.d.ts +85 -0
- package/dist/sandbox/viewer.d.ts +5 -1
- package/dist/sandbox-file-artifacts.d.ts +17 -1
- package/dist/scheduled-task-blockers.d.ts +39 -0
- package/dist/scheduled-task-deletion.d.ts +3 -4
- package/dist/scheduled-task-lifecycle.d.ts +14 -0
- package/dist/secret-answers.d.ts +40 -0
- package/dist/session-create-observability.d.ts +5 -0
- package/dist/session-event-view-36GO3IL7.js +528 -0
- package/dist/session-event-view-36GO3IL7.js.map +1 -0
- package/dist/signed-state-secret.d.ts +18 -0
- package/dist/site-agent-guard.d.ts +53 -0
- package/dist/site-data/operations.d.ts +103 -0
- package/dist/site-data/service.d.ts +203 -0
- package/dist/site-frame-guard.d.ts +32 -0
- package/dist/site-publishing/agent-data-tools.d.ts +84 -0
- package/dist/site-publishing/agent-model.d.ts +58 -0
- package/dist/site-publishing/agent-session.d.ts +16 -0
- package/dist/site-publishing/content-scanner.d.ts +31 -0
- package/dist/site-publishing/edge-sync.d.ts +48 -0
- package/dist/site-publishing/gateway-signature.d.ts +56 -0
- package/dist/site-publishing/limits.d.ts +63 -0
- package/dist/site-publishing/page-tool-authority.d.ts +30 -0
- package/dist/site-publishing/platform-usage.d.ts +113 -0
- package/dist/site-publishing/platform.d.ts +21 -0
- package/dist/site-publishing/readiness.d.ts +62 -0
- package/dist/site-publishing/runtime.d.ts +179 -0
- package/dist/site-publishing/service.d.ts +264 -0
- package/dist/site-publishing/session-events.d.ts +22 -0
- package/dist/site-publishing/session-views.d.ts +36 -0
- package/dist/site-publishing/viewer.d.ts +40 -0
- package/dist/site-session-origin.d.ts +31 -6
- package/dist/site-sql/format.d.ts +47 -0
- package/dist/site-sql/gateway.d.ts +50 -0
- package/dist/site-sql/service.d.ts +213 -0
- package/dist/temporal-schedule-sync.d.ts +26 -0
- package/dist/transcription/billing-refusal.d.ts +8 -0
- package/dist/transcription/normalize.d.ts +23 -0
- package/dist/transcription/providers/azure-mai.d.ts +12 -0
- package/dist/transcription/providers/azure-openai.d.ts +4 -0
- package/dist/transcription/providers/openai.d.ts +16 -0
- package/dist/transcription/providers/subscription-core.d.ts +39 -0
- package/dist/transcription/service.d.ts +10 -1
- package/dist/transcription/wav-duration.d.ts +8 -0
- package/dist/workspace-tool-gateway-attestations.d.ts +37 -0
- package/dist/workspace-tool-gateway-observability.d.ts +16 -0
- package/dist/workspace-tool-gateway-secrets.d.ts +27 -0
- package/dist/workspace-tool-gateway.d.ts +102 -6
- package/dist/workspace-tool-target-fence.d.ts +116 -0
- package/dist/workspace-tool-target.d.ts +225 -0
- package/dist/workspace-webhook-dispatch.d.ts +26 -0
- package/dist/xai-subscription-core.d.ts +60 -0
- package/package.json +25 -20
- package/src/access-grant-rls.ts +64 -14
- package/src/admission-trace.ts +14 -0
- package/src/app.ts +1684 -252
- package/src/artifact-catalog-cursor.ts +1 -0
- package/src/attached-browser-viewer.ts +26 -0
- package/src/auth/managed-auth-attempt-context.ts +9 -0
- package/src/auth/managed-auth-rate-limits.ts +252 -0
- package/src/auth/managed-auth-session-adapter.ts +64 -29
- package/src/auth/managed-auth.ts +303 -35
- package/src/auth/managed-email.ts +18 -1
- package/src/auth/managed-sign-in-notifications.ts +81 -0
- package/src/auth/new-signups-gate.ts +49 -0
- package/src/auth/organization-user-setup.ts +3 -3
- package/src/auth/signup-funnel-metrics.ts +164 -0
- package/src/azure-live.ts +103 -0
- package/src/browser-action-fences.ts +45 -0
- package/src/browser-controller-authority.ts +1 -186
- package/src/browser-ephemeral.ts +39 -0
- package/src/browser-lost-runtime-end.ts +71 -0
- package/src/browser-state-authority.ts +1 -236
- package/src/claude-default-models.ts +37 -0
- package/src/claude-subscription-core.ts +154 -0
- package/src/claude-subscription-oauth.ts +352 -0
- package/src/claude-subscription-profile.ts +73 -0
- package/src/claude-subscription-usage.ts +51 -0
- package/src/claude-workspace-connection.ts +82 -0
- package/src/codemode.ts +236 -39
- package/src/codex-realtime.ts +181 -53
- package/src/codex-session-pointers.ts +80 -0
- package/src/company-brain-okf.ts +1 -1
- package/src/connected-machine-computer-access.ts +2 -1
- package/src/connection-ownership.ts +19 -13
- package/src/controller-data-plane.ts +34 -0
- package/src/credit-promotion-snapshot.ts +36 -0
- package/src/editable-artifact-production.ts +10 -0
- package/src/editable-artifact-source-session.ts +123 -0
- package/src/editable-artifact-websocket.ts +16 -3
- package/src/fatal-process-boundary.ts +67 -3
- package/src/gateway-realtime.ts +12 -8
- package/src/github-access.ts +31 -5
- package/src/github-browser-flow.ts +1 -1
- package/src/http/acting-person.ts +105 -0
- package/src/http/api-contract-compat.ts +49 -0
- package/src/http/api-error.ts +210 -2
- package/src/http/auth.ts +68 -4
- package/src/http/cors.ts +37 -5
- package/src/http/deprecation.ts +118 -0
- package/src/http/keyed-admission.ts +29 -0
- package/src/http/local-browser-boundary.ts +343 -0
- package/src/http/metrics-listener.ts +57 -0
- package/src/http/path-identifier.ts +54 -0
- package/src/http/registered-route-label.ts +34 -0
- package/src/http/rejection-telemetry.ts +120 -0
- package/src/http/request-body.ts +127 -0
- package/src/http/request-source.ts +154 -13
- package/src/http/sse.ts +88 -28
- package/src/http/unmatched-route.ts +60 -0
- package/src/http/user-content.ts +158 -0
- package/src/http/variable-sets-removed.ts +122 -0
- package/src/http/websocket-upgrade-dispatch.ts +29 -0
- package/src/index.ts +107 -57
- package/src/integration-connect-metrics.ts +228 -0
- package/src/integration-endpoint-test.ts +291 -0
- package/src/integrations/api-integrations.ts +81 -7
- package/src/integrations/atlassian.ts +202 -83
- package/src/integrations/fiken.ts +66 -38
- package/src/integrations/github-app-connect.ts +64 -18
- package/src/integrations/github-lens-connect.ts +8 -29
- package/src/integrations/google-drive.ts +448 -152
- package/src/integrations/integration-commit-authority.ts +69 -0
- package/src/integrations/marketplace-plugin.ts +1 -1
- package/src/integrations/oauth-client.ts +733 -193
- package/src/integrations/oauth-profiles.ts +116 -45
- package/src/integrations/onepassword-vault-provider.ts +16 -0
- package/src/integrations/personal-github-repositories.ts +1 -1
- package/src/integrations/personal-github.ts +61 -35
- package/src/integrations/provider-oauth.ts +67 -85
- package/src/integrations/slack-app-home.ts +5 -5
- package/src/integrations/slack-bot.ts +893 -201
- package/src/integrations/slack-file-upload-flow.ts +147 -0
- package/src/integrations/slack-install.ts +7 -7
- package/src/integrations/slack-interactions.ts +1589 -299
- package/src/integrations/slack-mrkdwn.ts +193 -0
- package/src/integrations/slack-routing.ts +2 -2
- package/src/integrations/slack-session-defaults.ts +224 -0
- package/src/integrations/slack-task-file-upload.ts +323 -0
- package/src/integrations/slack-tool-review.ts +65 -0
- package/src/integrations/social-oauth.ts +90 -58
- package/src/interaction-agent-access.ts +40 -20
- package/src/interaction-agent-version.ts +85 -0
- package/src/interaction-holder-heartbeat.ts +24 -8
- package/src/interaction-metrics.ts +164 -2
- package/src/interaction-route-stages.ts +94 -0
- package/src/interaction-secrets-vault.ts +213 -0
- package/src/interaction-secrets.ts +426 -0
- package/src/mcp/action-catalog-types.ts +14 -0
- package/src/mcp/action-catalog.gen.ts +8014 -0
- package/src/mcp/action-descriptions.ts +299 -0
- package/src/mcp/action-schema-imports.gen.ts +304 -0
- package/src/mcp/capability-account-readiness.ts +17 -0
- package/src/mcp/child-read-evidence.ts +19 -0
- package/src/mcp/company-profile-agent-admin.ts +13 -0
- package/src/mcp/contract-input.ts +165 -0
- package/src/mcp/documents.ts +9 -2
- package/src/mcp/editable-artifacts.ts +29 -11
- package/src/mcp/files.ts +5 -1
- package/src/mcp/first-party-tool-permissions.ts +7 -285
- package/src/mcp/knowledge-entries.ts +108 -34
- package/src/mcp/notification-tools.ts +480 -0
- package/src/mcp/orchestration-failure-diagnostic.ts +43 -0
- package/src/mcp/scheduled-task-input.ts +89 -0
- package/src/mcp/scheduled-task-view.ts +63 -3
- package/src/mcp/secret-tools.ts +185 -0
- package/src/mcp/server.ts +2213 -1116
- package/src/mcp/session-admin-access-tools.ts +163 -0
- package/src/mcp/session-event-errors.ts +123 -0
- package/src/mcp/session-event-view.ts +395 -13
- package/src/mcp/session-view.ts +3 -0
- package/src/mcp/session-wait.ts +67 -7
- package/src/mcp/site-agent-clamp-tools.ts +140 -0
- package/src/mcp/site-data-tools.ts +339 -0
- package/src/mcp/site-publication-tools.ts +201 -0
- package/src/mcp/site-sql-tools.ts +427 -0
- package/src/mcp-oauth.ts +635 -45
- package/src/model-calls/chat-completions.ts +352 -0
- package/src/model-calls/pending-usage-settlements.ts +125 -0
- package/src/model-calls/service.ts +694 -0
- package/src/model-catalog.ts +68 -17
- package/src/native-push-dispatch.ts +457 -0
- package/src/observability.ts +15 -1
- package/src/organization-mcp.ts +485 -0
- package/src/prepared-mcp-actor.ts +154 -0
- package/src/prepared-mcp-permissions.ts +38 -0
- package/src/routes/analytics-consent.ts +123 -0
- package/src/routes/api-integrations.ts +268 -9
- package/src/routes/api-keys.ts +164 -25
- package/src/routes/artifact-catalog.ts +111 -0
- package/src/routes/automations.ts +163 -90
- package/src/routes/billing.ts +535 -59
- package/src/routes/browser-sessions.ts +966 -342
- package/src/routes/canonical-human-identities.ts +61 -0
- package/src/routes/capabilities.ts +112 -5
- package/src/routes/channels.ts +4 -3
- package/src/routes/chat-completions.ts +235 -0
- package/src/routes/claude-core-usage.ts +147 -0
- package/src/routes/claude-subscription-accounts.ts +233 -0
- package/src/routes/claude-subscription-oauth.ts +175 -0
- package/src/routes/client-errors.ts +394 -0
- package/src/routes/codex-core.ts +687 -0
- package/src/routes/codex.ts +1277 -1119
- package/src/routes/company-brain.ts +4 -0
- package/src/routes/computer-sessions.ts +319 -85
- package/src/routes/connect.ts +277 -175
- package/src/routes/connections.ts +690 -363
- package/src/routes/desktop-distribution.ts +217 -0
- package/src/routes/documents.ts +13 -7
- package/src/routes/editable-artifacts.ts +74 -4
- package/src/routes/enrollments.ts +110 -16
- package/src/routes/external-identity-links.ts +13 -12
- package/src/routes/files.ts +41 -16
- package/src/routes/github-browser-fonts.gen.ts +12 -0
- package/src/routes/github-browser-pages.ts +258 -0
- package/src/routes/github.ts +200 -75
- package/src/routes/inbox.ts +353 -0
- package/src/routes/insights-response-cache.ts +83 -0
- package/src/routes/insights-usage.ts +345 -0
- package/src/routes/insights.ts +103 -8
- package/src/routes/install.ts +51 -10
- package/src/routes/integration-facets.ts +70 -28
- package/src/routes/interaction-placement-message.ts +12 -0
- package/src/routes/knowledge.ts +136 -27
- package/src/routes/machines.ts +189 -135
- package/src/routes/managed-auth-session-sets.ts +43 -10
- package/src/routes/managed-onboarding.ts +39 -19
- package/src/routes/managed-sign-in-methods.ts +433 -0
- package/src/routes/memory-slack-publications.ts +3 -2
- package/src/routes/model-account-choice.ts +194 -0
- package/src/routes/model-account-settings.ts +235 -0
- package/src/routes/model-connection-access.ts +210 -48
- package/src/routes/native-app-auth.ts +296 -0
- package/src/routes/organization-integration-policy.ts +116 -0
- package/src/routes/organization-integrations.ts +326 -0
- package/src/routes/organization-mcp-connections.ts +183 -0
- package/src/routes/organization-memberships.ts +205 -19
- package/src/routes/organization-model-defaults.ts +110 -0
- package/src/routes/organization-model-providers.ts +74 -3
- package/src/routes/organization-service-accounts.ts +128 -0
- package/src/routes/organization-sessions.ts +21 -5
- package/src/routes/personal-api-keys.ts +184 -0
- package/src/routes/personal-github-git-broker.ts +2 -2
- package/src/routes/personal-github.ts +9 -4
- package/src/routes/plugins.ts +46 -7
- package/src/routes/pr-review-github.ts +105 -118
- package/src/routes/pr-review.ts +88 -82
- package/src/routes/preference-registry.ts +18 -0
- package/src/routes/rigs.ts +48 -13
- package/src/routes/scheduled-tasks.ts +347 -27
- package/src/routes/session-admin-access.ts +271 -0
- package/src/routes/session-artifact-associations.ts +164 -0
- package/src/routes/session-history-imports.ts +305 -0
- package/src/routes/sessions.ts +1682 -363
- package/src/routes/site-data.ts +340 -0
- package/src/routes/site-publishing.ts +584 -0
- package/src/routes/site-runtime.ts +1944 -0
- package/src/routes/site-sql.ts +263 -0
- package/src/routes/skill-content.ts +72 -7
- package/src/routes/skills.ts +5 -4
- package/src/routes/slack-bot-access.ts +108 -0
- package/src/routes/social.ts +27 -15
- package/src/routes/subscription-account-pools.ts +209 -0
- package/src/routes/subscription-core-http.ts +18 -0
- package/src/routes/subscription-pool-access.ts +180 -0
- package/src/routes/subscription-pool-core.ts +552 -0
- package/src/routes/supergrok.ts +174 -655
- package/src/routes/transcription-recordings.ts +71 -4
- package/src/routes/transcriptions.ts +26 -2
- package/src/routes/usage-allowances.ts +381 -0
- package/src/routes/variable-sets-removed.ts +19 -0
- package/src/routes/vault-providers.ts +782 -0
- package/src/routes/vaults.ts +421 -0
- package/src/routes/video-generation.ts +30 -12
- package/src/routes/workspace-artifacts.ts +165 -53
- package/src/routes/workspace-integrations.ts +576 -0
- package/src/routes/workspace-model-providers.ts +148 -0
- package/src/routes/workspace-state.ts +4 -0
- package/src/routes/workspaces.ts +625 -117
- package/src/sandbox/agent-update.ts +315 -0
- package/src/sandbox/auth-callout.ts +104 -21
- package/src/sandbox/channel-a.ts +165 -55
- package/src/sandbox/enrollment.ts +131 -22
- package/src/sandbox/machine-audience.ts +192 -0
- package/src/sandbox/machines.ts +75 -31
- package/src/sandbox/metrics-ingestion.ts +133 -2
- package/src/sandbox/rematerialize.ts +51 -21
- package/src/sandbox/screen-control.ts +289 -0
- package/src/sandbox/viewer.ts +33 -58
- package/src/sandbox-file-artifacts.ts +53 -27
- package/src/scheduled-task-blockers.ts +293 -0
- package/src/scheduled-task-deletion.ts +13 -3
- package/src/scheduled-task-lifecycle.ts +84 -0
- package/src/secret-answers.ts +119 -0
- package/src/session-create-observability.ts +46 -0
- package/src/session-realtime-context.ts +26 -4
- package/src/signed-state-secret.ts +58 -0
- package/src/site-agent-guard.ts +261 -0
- package/src/site-data/operations.ts +777 -0
- package/src/site-data/service.ts +1043 -0
- package/src/site-frame-guard.ts +107 -0
- package/src/site-publishing/agent-data-tools.ts +250 -0
- package/src/site-publishing/agent-model.ts +127 -0
- package/src/site-publishing/agent-session.ts +148 -0
- package/src/site-publishing/content-scanner.ts +93 -0
- package/src/site-publishing/edge-sync.ts +148 -0
- package/src/site-publishing/gateway-signature.ts +198 -0
- package/src/site-publishing/limits.ts +315 -0
- package/src/site-publishing/page-tool-authority.ts +111 -0
- package/src/site-publishing/platform-usage.ts +479 -0
- package/src/site-publishing/platform.ts +98 -0
- package/src/site-publishing/readiness.ts +330 -0
- package/src/site-publishing/runtime.ts +831 -0
- package/src/site-publishing/service.ts +1282 -0
- package/src/site-publishing/session-events.ts +262 -0
- package/src/site-publishing/session-views.ts +262 -0
- package/src/site-publishing/viewer.ts +75 -0
- package/src/site-session-origin.ts +91 -6
- package/src/site-sql/format.ts +134 -0
- package/src/site-sql/gateway.ts +168 -0
- package/src/site-sql/service.ts +1636 -0
- package/src/site-uploads.ts +27 -5
- package/src/temporal-schedule-sync.ts +74 -0
- package/src/transcription/billing-refusal.ts +14 -0
- package/src/transcription/normalize.ts +77 -0
- package/src/transcription/providers/azure-mai.ts +98 -0
- package/src/transcription/providers/azure-openai.ts +16 -7
- package/src/transcription/providers/codex-subscription.ts +190 -67
- package/src/transcription/providers/openai.ts +79 -5
- package/src/transcription/providers/subscription-core.ts +125 -0
- package/src/transcription/providers/xai-subscription.ts +81 -83
- package/src/transcription/segmenter.ts +7 -1
- package/src/transcription/service.ts +239 -10
- package/src/transcription/wav-duration.ts +39 -0
- package/src/workspace-deletion.ts +25 -1
- package/src/workspace-tool-gateway-attestations.ts +133 -0
- package/src/workspace-tool-gateway-observability.ts +64 -0
- package/src/workspace-tool-gateway-secrets.ts +104 -0
- package/src/workspace-tool-gateway.ts +921 -103
- package/src/workspace-tool-target-fence.ts +380 -0
- package/src/workspace-tool-target.ts +554 -0
- package/src/workspace-webhook-dispatch.ts +225 -0
- package/src/xai-realtime.ts +85 -81
- package/src/xai-subscription-core.ts +172 -0
- package/dist/browser-auth-broker.d.ts +0 -20
- package/dist/chunk-AJ62T5QN.js.map +0 -1
- package/dist/connection-authority-owner.d.ts +0 -59
- package/dist/routes/connection-authorities.d.ts +0 -3
- package/dist/routes/environments.d.ts +0 -5
- package/dist/routes/host-mcp-bindings.d.ts +0 -5
- package/dist/routes/host-mcp-resolvers.d.ts +0 -3
- package/dist/routes/packs.d.ts +0 -3
- package/dist/session-event-view-MU3HMNV3.js +0 -264
- package/dist/session-event-view-MU3HMNV3.js.map +0 -1
- package/dist/xai-subscription-auth.d.ts +0 -23
- package/src/browser-auth-broker.ts +0 -155
- package/src/connection-authority-owner.ts +0 -61
- package/src/routes/connection-authorities.ts +0 -139
- package/src/routes/environments.ts +0 -388
- package/src/routes/host-mcp-bindings.ts +0 -122
- package/src/routes/host-mcp-resolvers.ts +0 -41
- package/src/routes/packs.ts +0 -784
- package/src/xai-subscription-auth.ts +0 -139
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { type AccessGrantAuthorization, type ApiRouteDeps } from "@opengeni/core";
|
|
2
|
+
import { type Database } from "@opengeni/db";
|
|
3
|
+
import { ApiHttpError } from "./http/api-error.js";
|
|
4
|
+
/**
|
|
5
|
+
* One evaluation's budget. Below the MCP SDK's 5 s setup-request timeout, so a
|
|
6
|
+
* stalled authority read is reported as unavailable authority rather than
|
|
7
|
+
* silently dropping the target connector (a 404).
|
|
8
|
+
*/
|
|
9
|
+
export declare const TARGET_FENCE_DEADLINE_MS = 2500;
|
|
10
|
+
/**
|
|
11
|
+
* A part of the live fence. `db` is the evaluation's bounded transaction;
|
|
12
|
+
* `stop` aborts once the evaluation's deadline passes or its request ends. The
|
|
13
|
+
* evaluation checks it before each part; the route part also checks it between
|
|
14
|
+
* its capability, integration and connection reads.
|
|
15
|
+
*/
|
|
16
|
+
export type TargetFenceCheck = (db: Database, stop: AbortSignal) => Promise<void>;
|
|
17
|
+
export type TargetFenceCaller = {
|
|
18
|
+
/** Read inside the evaluation's bounded transaction. */
|
|
19
|
+
scoped?: TargetFenceCheck;
|
|
20
|
+
/** Runs beside it: its own bounded transaction, or the route's fresh grant. */
|
|
21
|
+
standalone?: (stop: AbortSignal) => Promise<void>;
|
|
22
|
+
};
|
|
23
|
+
type Outcome = "denied" | "approval_required" | "unavailable" | "aborted" | "closed";
|
|
24
|
+
export type TargetFenceStats = {
|
|
25
|
+
/** Started evaluations (caller-only plus full). */
|
|
26
|
+
evaluations: number;
|
|
27
|
+
full: number;
|
|
28
|
+
/** Wall time spent inside evaluations, summed (they may overlap). */
|
|
29
|
+
durationMs: number;
|
|
30
|
+
outcomes: Partial<Record<Outcome, number>>;
|
|
31
|
+
};
|
|
32
|
+
/**
|
|
33
|
+
* Authority could not be read in time: a 503 distinct from a provider failure
|
|
34
|
+
* (502, outcome unknown). Never names the target, its connector or its owner.
|
|
35
|
+
*/
|
|
36
|
+
export declare function targetAuthorityUnavailable(retryable: boolean): ApiHttpError;
|
|
37
|
+
/**
|
|
38
|
+
* Live caller authority for one targeted request. A verified organization key
|
|
39
|
+
* is read without a lock or write (admission already recorded its use); an
|
|
40
|
+
* external continuation keeps its complete commit authorizer; a person keeps
|
|
41
|
+
* the route's fresh grant (`reauthorize`), unchanged. That grant runs outside
|
|
42
|
+
* the evaluation's transaction: the deadline answers the request without
|
|
43
|
+
* cancelling it.
|
|
44
|
+
*/
|
|
45
|
+
export declare function targetFenceCaller(deps: Pick<ApiRouteDeps, "db">, authorization: AccessGrantAuthorization, reauthorize: (() => Promise<void>) | undefined): TargetFenceCaller;
|
|
46
|
+
/**
|
|
47
|
+
* The single live fence of one targeted request: exact caller, pinned Site,
|
|
48
|
+
* selected route (connector configuration and connection) and action policy.
|
|
49
|
+
*
|
|
50
|
+
* Every evaluation reads current state; nothing is cached, shared between
|
|
51
|
+
* physical requests, or reused across requests. `full()` runs once for each
|
|
52
|
+
* installed physical-request boundary, after that request's last credential
|
|
53
|
+
* step. Its Site, route, policy and organization-key reads share one
|
|
54
|
+
* transaction bounded by `statement_timeout`; an external actor's authorizer
|
|
55
|
+
* runs in a second bounded transaction and a person's fresh grant beside them.
|
|
56
|
+
* At the deadline the evaluation is answered as unavailable authority and no
|
|
57
|
+
* further part starts. The running part may still finish its current read and
|
|
58
|
+
* issue its remaining ones (a pinned Site's version after its artifact, the
|
|
59
|
+
* next selected connection), each bounded by the statement timeout; the
|
|
60
|
+
* transaction then rolls back.
|
|
61
|
+
* Boundaries swallow hook failures, so the fence records each outcome itself;
|
|
62
|
+
* `settle()` reports a recorded denial or unavailable authority instead of an
|
|
63
|
+
* opaque missing connector. After `close()` (strictly after the awaited
|
|
64
|
+
* cleanup) every evaluation fails, so nothing is authorized once the request
|
|
65
|
+
* scope ends.
|
|
66
|
+
*/
|
|
67
|
+
export declare class TargetAuthorityFence {
|
|
68
|
+
#private;
|
|
69
|
+
private readonly input;
|
|
70
|
+
readonly stats: TargetFenceStats;
|
|
71
|
+
constructor(input: {
|
|
72
|
+
db: Database;
|
|
73
|
+
/** A targeted request must install its route before any full evaluation. */
|
|
74
|
+
targeted: boolean;
|
|
75
|
+
caller: TargetFenceCaller;
|
|
76
|
+
signal?: AbortSignal | undefined;
|
|
77
|
+
deadlineMs?: number;
|
|
78
|
+
});
|
|
79
|
+
/** Each part is installed once; a later install never replaces it. */
|
|
80
|
+
setSite(check: TargetFenceCheck): void;
|
|
81
|
+
/** Installed by preparation before any provider is constructed. */
|
|
82
|
+
setRoute(check: TargetFenceCheck): void;
|
|
83
|
+
/** Installed when the selected call's action policy is decided. */
|
|
84
|
+
setPolicy(check: TargetFenceCheck): void;
|
|
85
|
+
/** Live caller only: before credential acquisition may refresh or record use. */
|
|
86
|
+
caller(): Promise<void>;
|
|
87
|
+
/** Admission: the live caller, with unavailable authority as a retryable 503. */
|
|
88
|
+
admit(): Promise<void>;
|
|
89
|
+
/** Caller, Site, route and policy: once per physical provider request. */
|
|
90
|
+
full(): Promise<void>;
|
|
91
|
+
/** Credential hooks report a boolean; their failure is recorded, not lost. */
|
|
92
|
+
allows(): Promise<boolean>;
|
|
93
|
+
/**
|
|
94
|
+
* An explicit fence before an application step. Denials keep their error;
|
|
95
|
+
* unavailable authority becomes a 503 (retryable only before begin).
|
|
96
|
+
*/
|
|
97
|
+
check(options: {
|
|
98
|
+
retryable: boolean;
|
|
99
|
+
}): Promise<void>;
|
|
100
|
+
/** Transport boundary of a credential-fenced connector: no database read. */
|
|
101
|
+
assertOpen(): void;
|
|
102
|
+
close(): void;
|
|
103
|
+
/**
|
|
104
|
+
* Classify a failed preparation or a missing target. Waits (bounded) for
|
|
105
|
+
* evaluations already started, then prefers a recorded denial, then an
|
|
106
|
+
* approval change, then unavailable authority; otherwise `error` stands.
|
|
107
|
+
* In-flight, aborted and post-close evaluations never decide by themselves.
|
|
108
|
+
*/
|
|
109
|
+
settle(error: unknown, options?: {
|
|
110
|
+
retryable: boolean;
|
|
111
|
+
}): Promise<never>;
|
|
112
|
+
failure(options?: {
|
|
113
|
+
retryable: boolean;
|
|
114
|
+
}): Promise<unknown>;
|
|
115
|
+
}
|
|
116
|
+
export {};
|
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
import { type ToolGatewayResolveRequest, type ToolGatewayInvokeRequest, type ToolGatewayTargetApprovalRequest, type ToolGatewayManifestRequest } from "@opengeni/contracts";
|
|
2
|
+
import { type AccessGrantAuthorization, type ApiRouteDeps } from "@opengeni/core";
|
|
3
|
+
import { beginTargetToolGatewayCall, issueToolGatewayApproval } from "@opengeni/db";
|
|
4
|
+
import { prepareWorkspaceToolGateway, requireWorkspaceSiteToolAuthorization, type WorkspaceToolGatewayAuthorization } from "./workspace-tool-gateway.js";
|
|
5
|
+
import { TargetAuthorityFence } from "./workspace-tool-target-fence.js";
|
|
6
|
+
export type TargetGatewayOptions = {
|
|
7
|
+
signal?: AbortSignal;
|
|
8
|
+
/** The route's fresh human grant; organization keys and external actors use their own reads. */
|
|
9
|
+
reauthorize?: () => Promise<void>;
|
|
10
|
+
prepare?: typeof prepareWorkspaceToolGateway;
|
|
11
|
+
begin?: typeof beginTargetToolGatewayCall;
|
|
12
|
+
issue?: typeof issueToolGatewayApproval;
|
|
13
|
+
authorizeSite?: typeof requireWorkspaceSiteToolAuthorization;
|
|
14
|
+
/** Observes the request's fence (statistics), never its authority. */
|
|
15
|
+
onFence?: (fence: TargetAuthorityFence) => void;
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* The request's single live fence. The owner closes it strictly after the
|
|
19
|
+
* awaited preparation cleanup. `targeted` requests must install their route.
|
|
20
|
+
*/
|
|
21
|
+
export declare function createTargetFence(deps: ApiRouteDeps, authorization: WorkspaceToolGatewayAuthorization, options: TargetGatewayOptions, targeted: boolean): TargetAuthorityFence;
|
|
22
|
+
export declare function resolveWorkspaceToolTarget(deps: ApiRouteDeps, authorization: WorkspaceToolGatewayAuthorization, request: ToolGatewayResolveRequest, options?: TargetGatewayOptions): Promise<{
|
|
23
|
+
version: 1;
|
|
24
|
+
definitionDigest: string;
|
|
25
|
+
entry: {
|
|
26
|
+
identity: {
|
|
27
|
+
serverId: string;
|
|
28
|
+
toolName: string;
|
|
29
|
+
};
|
|
30
|
+
modelName: string;
|
|
31
|
+
codemodePath: string[];
|
|
32
|
+
title?: string | undefined;
|
|
33
|
+
description?: string | undefined;
|
|
34
|
+
inputSchema: Record<string, import("zod").JSONType>;
|
|
35
|
+
outputSchema?: Record<string, import("zod").JSONType> | undefined;
|
|
36
|
+
annotations?: {
|
|
37
|
+
[x: string]: unknown;
|
|
38
|
+
title?: string | undefined;
|
|
39
|
+
readOnlyHint?: boolean | undefined;
|
|
40
|
+
destructiveHint?: boolean | undefined;
|
|
41
|
+
idempotentHint?: boolean | undefined;
|
|
42
|
+
openWorldHint?: boolean | undefined;
|
|
43
|
+
} | undefined;
|
|
44
|
+
icons?: {
|
|
45
|
+
src: string;
|
|
46
|
+
mimeType?: string | undefined;
|
|
47
|
+
sizes?: string[] | undefined;
|
|
48
|
+
theme?: "dark" | "light" | undefined;
|
|
49
|
+
}[] | undefined;
|
|
50
|
+
source: "codex_apps" | "docs" | "files" | "interaction" | "mcp" | "opengeni";
|
|
51
|
+
approval: "human" | "none" | "policy";
|
|
52
|
+
};
|
|
53
|
+
}>;
|
|
54
|
+
export declare function invokeWorkspaceToolTarget(deps: ApiRouteDeps, authorization: WorkspaceToolGatewayAuthorization, request: ToolGatewayInvokeRequest, options?: TargetGatewayOptions): Promise<{
|
|
55
|
+
operationId: string;
|
|
56
|
+
tool: {
|
|
57
|
+
version: 1;
|
|
58
|
+
definitionDigest: string;
|
|
59
|
+
entry: {
|
|
60
|
+
identity: {
|
|
61
|
+
serverId: string;
|
|
62
|
+
toolName: string;
|
|
63
|
+
};
|
|
64
|
+
modelName: string;
|
|
65
|
+
codemodePath: string[];
|
|
66
|
+
title?: string | undefined;
|
|
67
|
+
description?: string | undefined;
|
|
68
|
+
inputSchema: Record<string, import("zod").JSONType>;
|
|
69
|
+
outputSchema?: Record<string, import("zod").JSONType> | undefined;
|
|
70
|
+
annotations?: {
|
|
71
|
+
[x: string]: unknown;
|
|
72
|
+
title?: string | undefined;
|
|
73
|
+
readOnlyHint?: boolean | undefined;
|
|
74
|
+
destructiveHint?: boolean | undefined;
|
|
75
|
+
idempotentHint?: boolean | undefined;
|
|
76
|
+
openWorldHint?: boolean | undefined;
|
|
77
|
+
} | undefined;
|
|
78
|
+
icons?: {
|
|
79
|
+
src: string;
|
|
80
|
+
mimeType?: string | undefined;
|
|
81
|
+
sizes?: string[] | undefined;
|
|
82
|
+
theme?: "dark" | "light" | undefined;
|
|
83
|
+
}[] | undefined;
|
|
84
|
+
source: "codex_apps" | "docs" | "files" | "interaction" | "mcp" | "opengeni";
|
|
85
|
+
approval: "human" | "none" | "policy";
|
|
86
|
+
};
|
|
87
|
+
};
|
|
88
|
+
result: {
|
|
89
|
+
[x: string]: unknown;
|
|
90
|
+
content: ({
|
|
91
|
+
[x: string]: unknown;
|
|
92
|
+
type: "text";
|
|
93
|
+
text: string;
|
|
94
|
+
annotations?: Record<string, import("zod").JSONType> | undefined;
|
|
95
|
+
_meta?: Record<string, import("zod").JSONType> | undefined;
|
|
96
|
+
} | {
|
|
97
|
+
[x: string]: unknown;
|
|
98
|
+
type: "image";
|
|
99
|
+
data: string;
|
|
100
|
+
mimeType: string;
|
|
101
|
+
annotations?: Record<string, import("zod").JSONType> | undefined;
|
|
102
|
+
_meta?: Record<string, import("zod").JSONType> | undefined;
|
|
103
|
+
} | {
|
|
104
|
+
[x: string]: unknown;
|
|
105
|
+
type: "audio";
|
|
106
|
+
data: string;
|
|
107
|
+
mimeType: string;
|
|
108
|
+
annotations?: Record<string, import("zod").JSONType> | undefined;
|
|
109
|
+
_meta?: Record<string, import("zod").JSONType> | undefined;
|
|
110
|
+
} | {
|
|
111
|
+
[x: string]: unknown;
|
|
112
|
+
type: "resource_link";
|
|
113
|
+
name: string;
|
|
114
|
+
title?: string | undefined;
|
|
115
|
+
uri: string;
|
|
116
|
+
description?: string | undefined;
|
|
117
|
+
mimeType?: string | undefined;
|
|
118
|
+
size?: number | undefined;
|
|
119
|
+
icons?: {
|
|
120
|
+
src: string;
|
|
121
|
+
mimeType?: string | undefined;
|
|
122
|
+
sizes?: string[] | undefined;
|
|
123
|
+
theme?: "dark" | "light" | undefined;
|
|
124
|
+
}[] | undefined;
|
|
125
|
+
annotations?: Record<string, import("zod").JSONType> | undefined;
|
|
126
|
+
_meta?: Record<string, import("zod").JSONType> | undefined;
|
|
127
|
+
} | {
|
|
128
|
+
[x: string]: unknown;
|
|
129
|
+
type: "resource";
|
|
130
|
+
resource: {
|
|
131
|
+
[x: string]: unknown;
|
|
132
|
+
uri: string;
|
|
133
|
+
mimeType?: string | undefined;
|
|
134
|
+
text: string;
|
|
135
|
+
_meta?: Record<string, import("zod").JSONType> | undefined;
|
|
136
|
+
} | {
|
|
137
|
+
[x: string]: unknown;
|
|
138
|
+
uri: string;
|
|
139
|
+
mimeType?: string | undefined;
|
|
140
|
+
blob: string;
|
|
141
|
+
_meta?: Record<string, import("zod").JSONType> | undefined;
|
|
142
|
+
};
|
|
143
|
+
annotations?: Record<string, import("zod").JSONType> | undefined;
|
|
144
|
+
_meta?: Record<string, import("zod").JSONType> | undefined;
|
|
145
|
+
})[];
|
|
146
|
+
structuredContent?: Record<string, import("zod").JSONType> | undefined;
|
|
147
|
+
isError?: boolean | undefined;
|
|
148
|
+
_meta?: Record<string, import("zod").JSONType> | undefined;
|
|
149
|
+
};
|
|
150
|
+
}>;
|
|
151
|
+
export declare function approveWorkspaceToolTarget(deps: ApiRouteDeps, authorization: AccessGrantAuthorization, request: ToolGatewayTargetApprovalRequest, options?: TargetGatewayOptions): Promise<{
|
|
152
|
+
bindingVersion: 2;
|
|
153
|
+
operationId: string;
|
|
154
|
+
tool: {
|
|
155
|
+
version: 1;
|
|
156
|
+
definitionDigest: string;
|
|
157
|
+
entry: {
|
|
158
|
+
identity: {
|
|
159
|
+
serverId: string;
|
|
160
|
+
toolName: string;
|
|
161
|
+
};
|
|
162
|
+
modelName: string;
|
|
163
|
+
codemodePath: string[];
|
|
164
|
+
title?: string | undefined;
|
|
165
|
+
description?: string | undefined;
|
|
166
|
+
inputSchema: Record<string, import("zod").JSONType>;
|
|
167
|
+
outputSchema?: Record<string, import("zod").JSONType> | undefined;
|
|
168
|
+
annotations?: {
|
|
169
|
+
[x: string]: unknown;
|
|
170
|
+
title?: string | undefined;
|
|
171
|
+
readOnlyHint?: boolean | undefined;
|
|
172
|
+
destructiveHint?: boolean | undefined;
|
|
173
|
+
idempotentHint?: boolean | undefined;
|
|
174
|
+
openWorldHint?: boolean | undefined;
|
|
175
|
+
} | undefined;
|
|
176
|
+
icons?: {
|
|
177
|
+
src: string;
|
|
178
|
+
mimeType?: string | undefined;
|
|
179
|
+
sizes?: string[] | undefined;
|
|
180
|
+
theme?: "dark" | "light" | undefined;
|
|
181
|
+
}[] | undefined;
|
|
182
|
+
source: "codex_apps" | "docs" | "files" | "interaction" | "mcp" | "opengeni";
|
|
183
|
+
approval: "human" | "none" | "policy";
|
|
184
|
+
};
|
|
185
|
+
};
|
|
186
|
+
approvalToken: string;
|
|
187
|
+
expiresAt: string;
|
|
188
|
+
}>;
|
|
189
|
+
/** Compatibility discovery is bounded by requested identities, grouped per connector. */
|
|
190
|
+
export declare function resolveWorkspaceToolManifest(deps: ApiRouteDeps, authorization: AccessGrantAuthorization, request: ToolGatewayManifestRequest, options?: TargetGatewayOptions): Promise<{
|
|
191
|
+
version: 1;
|
|
192
|
+
digest: string;
|
|
193
|
+
tools: {
|
|
194
|
+
version: 1;
|
|
195
|
+
entry: {
|
|
196
|
+
identity: {
|
|
197
|
+
serverId: string;
|
|
198
|
+
toolName: string;
|
|
199
|
+
};
|
|
200
|
+
modelName: string;
|
|
201
|
+
codemodePath: string[];
|
|
202
|
+
title?: string | undefined;
|
|
203
|
+
description?: string | undefined;
|
|
204
|
+
inputSchema: Record<string, import("zod").JSONType>;
|
|
205
|
+
outputSchema?: Record<string, import("zod").JSONType> | undefined;
|
|
206
|
+
annotations?: {
|
|
207
|
+
[x: string]: unknown;
|
|
208
|
+
title?: string | undefined;
|
|
209
|
+
readOnlyHint?: boolean | undefined;
|
|
210
|
+
destructiveHint?: boolean | undefined;
|
|
211
|
+
idempotentHint?: boolean | undefined;
|
|
212
|
+
openWorldHint?: boolean | undefined;
|
|
213
|
+
} | undefined;
|
|
214
|
+
icons?: {
|
|
215
|
+
src: string;
|
|
216
|
+
mimeType?: string | undefined;
|
|
217
|
+
sizes?: string[] | undefined;
|
|
218
|
+
theme?: "dark" | "light" | undefined;
|
|
219
|
+
}[] | undefined;
|
|
220
|
+
source: "codex_apps" | "docs" | "files" | "interaction" | "mcp" | "opengeni";
|
|
221
|
+
approval: "human" | "none" | "policy";
|
|
222
|
+
};
|
|
223
|
+
definitionDigest: string;
|
|
224
|
+
}[];
|
|
225
|
+
}>;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { type Settings } from "@opengeni/config";
|
|
2
|
+
import { type Database } from "@opengeni/db";
|
|
3
|
+
import { pinnedFetch } from "@opengeni/network";
|
|
4
|
+
import type { Observability } from "@opengeni/observability";
|
|
5
|
+
export declare const WORKSPACE_WEBHOOK_DISPATCH_BATCH_SIZE = 32;
|
|
6
|
+
export type WorkspaceWebhookDispatchDeps = {
|
|
7
|
+
db: Database;
|
|
8
|
+
settings: Settings;
|
|
9
|
+
observability?: Pick<Observability, "info" | "warn" | "error"> & Partial<Pick<Observability, "incrementCounter">>;
|
|
10
|
+
fetch?: typeof pinnedFetch;
|
|
11
|
+
};
|
|
12
|
+
export type WorkspaceWebhookBatchResult = {
|
|
13
|
+
claimed: number;
|
|
14
|
+
delivered: number;
|
|
15
|
+
failed: number;
|
|
16
|
+
};
|
|
17
|
+
/** Claim and deliver one globally bounded batch. At-least-once: receivers dedupe on event id. */
|
|
18
|
+
export declare function drainWorkspaceWebhookDeliveries(deps: WorkspaceWebhookDispatchDeps): Promise<WorkspaceWebhookBatchResult>;
|
|
19
|
+
/**
|
|
20
|
+
* One non-overlapping loop per API replica. PostgreSQL claims coordinate
|
|
21
|
+
* replicas; a crash only delays a delivery until its claim expires.
|
|
22
|
+
*/
|
|
23
|
+
export declare function startWorkspaceWebhookDispatchPump(deps: WorkspaceWebhookDispatchDeps, options?: {
|
|
24
|
+
intervalMs?: number;
|
|
25
|
+
drain?: (deps: WorkspaceWebhookDispatchDeps) => Promise<WorkspaceWebhookBatchResult>;
|
|
26
|
+
}): () => Promise<void>;
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import type { Settings } from "@opengeni/config";
|
|
2
|
+
import { type Database } from "@opengeni/db";
|
|
3
|
+
/**
|
|
4
|
+
* Whether SuperGrok can serve a workspace-level operation (video funding,
|
|
5
|
+
* realtime catalog, transcription): "a shared xAI candidate exists for
|
|
6
|
+
* this workspace" on the shared core, organization- or workspace-scoped
|
|
7
|
+
* shared connections only, never the viewer's personal accounts (design 5.3,
|
|
8
|
+
* EP-N11). Any route other than `core` (maintenance, or no receipt, which
|
|
9
|
+
* this binary's readiness check refuses) serves nothing.
|
|
10
|
+
*/
|
|
11
|
+
export declare function workspaceXaiOperationAvailable(db: Database, settings: Settings, input: {
|
|
12
|
+
accountId: string;
|
|
13
|
+
workspaceId: string;
|
|
14
|
+
subjectId: string;
|
|
15
|
+
}): Promise<boolean>;
|
|
16
|
+
/** The SuperGrok status payload. */
|
|
17
|
+
export type XaiStatusPayload<Model> = {
|
|
18
|
+
connected: boolean;
|
|
19
|
+
valid: boolean;
|
|
20
|
+
accountCount: number;
|
|
21
|
+
models?: Model[];
|
|
22
|
+
activeAccount?: {
|
|
23
|
+
id: string;
|
|
24
|
+
label: string | null;
|
|
25
|
+
subject: string | null;
|
|
26
|
+
scope: "workspace" | "organization" | "user";
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* The SuperGrok status after the cutover receipt (design 5.3, status
|
|
31
|
+
* probe): the workspace's shared pool and its effective primary, validated
|
|
32
|
+
* by one live model read through the adapter on that connection. Any route
|
|
33
|
+
* other than the shared core reports nothing usable.
|
|
34
|
+
*
|
|
35
|
+
* The viewer's own personal connections count as connected wherever the
|
|
36
|
+
* owner-only reader shows them. Only in the viewer's own Personal workspace,
|
|
37
|
+
* only without a shared primary, and only for a caller who passes the
|
|
38
|
+
* owner check of a private account (`ownerVerified`: the verified owning
|
|
39
|
+
* person with `connections:write`, by browser sign-in, a verified
|
|
40
|
+
* external-identity assertion linked to them, or an agent acting with their
|
|
41
|
+
* full access; never a read-only agent, a plain bearer or the person's own
|
|
42
|
+
* API keys), is a personal connection the effective account (legacy scope
|
|
43
|
+
* `user`),
|
|
44
|
+
* validated by one live usage read as its owner there; that read also
|
|
45
|
+
* applies the organization's personal-connections rule (0735). Any other
|
|
46
|
+
* caller gets the stored count only, with no live read and no wake.
|
|
47
|
+
* Another person's personal connections are never listed.
|
|
48
|
+
*/
|
|
49
|
+
export declare function readXaiCoreStatus<Model>(deps: {
|
|
50
|
+
db: Database;
|
|
51
|
+
settings: Settings;
|
|
52
|
+
}, input: {
|
|
53
|
+
accountId: string;
|
|
54
|
+
workspaceId: string;
|
|
55
|
+
subjectId: string;
|
|
56
|
+
models: () => Promise<Model[]>;
|
|
57
|
+
/** Asked only before a live personal read; false refuses it. */
|
|
58
|
+
ownerVerified: () => Promise<boolean>;
|
|
59
|
+
fetch?: unknown;
|
|
60
|
+
}): Promise<XaiStatusPayload<Model>>;
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@opengeni/api-router",
|
|
3
|
-
"version": "3.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "3.1.2",
|
|
4
|
+
"description": "Opengeni HTTP surface: the Hono adapter/router (createApp), routes, MCP HTTP transport, and HTTP access adapters over @opengeni/core. An engine-distribution surface — its runtime closure includes engine-internal packages.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
@@ -38,30 +38,35 @@
|
|
|
38
38
|
"prepublishOnly": "bash ../../scripts/prepublish-guard"
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
|
+
"@1password/sdk": "0.5.0",
|
|
41
42
|
"@aws-sdk/client-s3": "^3.1044.0",
|
|
42
43
|
"@aws-sdk/s3-request-presigner": "^3.1044.0",
|
|
43
44
|
"@hono/zod-validator": "^0.7.6",
|
|
44
45
|
"@llamaindex/liteparse": "2.14.2",
|
|
45
46
|
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
46
|
-
"@opengeni/agent-proto": "
|
|
47
|
-
"@opengeni/artifact-tool": "
|
|
48
|
-
"@opengeni/capabilities": "
|
|
49
|
-
"@opengeni/codemode": "
|
|
50
|
-
"@opengeni/codex": "
|
|
51
|
-
"@opengeni/config": "
|
|
52
|
-
"@opengeni/contracts": "
|
|
53
|
-
"@opengeni/core": "
|
|
54
|
-
"@opengeni/db": "
|
|
55
|
-
"@opengeni/documents": "
|
|
56
|
-
"@opengeni/events": "
|
|
57
|
-
"@opengeni/github": "
|
|
58
|
-
"@opengeni/
|
|
59
|
-
"@opengeni/
|
|
60
|
-
"@opengeni/
|
|
61
|
-
"@opengeni/
|
|
62
|
-
"@opengeni/
|
|
63
|
-
"@opengeni/
|
|
47
|
+
"@opengeni/agent-proto": "3.1.2",
|
|
48
|
+
"@opengeni/artifact-tool": "3.1.2",
|
|
49
|
+
"@opengeni/capabilities": "3.1.2",
|
|
50
|
+
"@opengeni/codemode": "3.1.2",
|
|
51
|
+
"@opengeni/codex": "3.1.2",
|
|
52
|
+
"@opengeni/config": "3.1.2",
|
|
53
|
+
"@opengeni/contracts": "3.1.2",
|
|
54
|
+
"@opengeni/core": "3.1.2",
|
|
55
|
+
"@opengeni/db": "3.1.2",
|
|
56
|
+
"@opengeni/documents": "3.1.2",
|
|
57
|
+
"@opengeni/events": "3.1.2",
|
|
58
|
+
"@opengeni/github": "3.1.2",
|
|
59
|
+
"@opengeni/interaction": "3.1.2",
|
|
60
|
+
"@opengeni/network": "3.1.2",
|
|
61
|
+
"@opengeni/observability": "3.1.2",
|
|
62
|
+
"@opengeni/runtime": "3.1.2",
|
|
63
|
+
"@opengeni/storage": "3.1.2",
|
|
64
|
+
"@opengeni/tool-gateway": "3.1.2",
|
|
65
|
+
"@opengeni/vaults": "3.1.2",
|
|
66
|
+
"@opengeni/vaults-onepassword": "3.1.2",
|
|
67
|
+
"@opengeni/xai-subscription": "3.1.2",
|
|
64
68
|
"@temporalio/client": "^1.17.0",
|
|
69
|
+
"ajv": "^8.20.0",
|
|
65
70
|
"better-auth": "^1.6.14",
|
|
66
71
|
"hono": "^4.12.18",
|
|
67
72
|
"json-bigint": "^1.0.0",
|
package/src/access-grant-rls.ts
CHANGED
|
@@ -4,20 +4,64 @@ import {
|
|
|
4
4
|
SessionAuthorizationDeniedError,
|
|
5
5
|
type ApiRouteDeps,
|
|
6
6
|
} from "@opengeni/core";
|
|
7
|
-
import {
|
|
8
|
-
|
|
7
|
+
import {
|
|
8
|
+
freezeAgentLearningPolicy,
|
|
9
|
+
withSessionRlsActorContext,
|
|
10
|
+
withCreditDebitAttribution,
|
|
11
|
+
type CreditDebitAttribution,
|
|
12
|
+
currentCreditDebitAttribution,
|
|
13
|
+
} from "@opengeni/db";
|
|
14
|
+
import { ApiHttpError } from "./http/api-error";
|
|
15
|
+
|
|
16
|
+
const AGENT_ATTEMPT_AUTHORITY_INVALID = "agent attempt authority is invalid";
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* A refused agent-attempt credential. The detail code names why, so request
|
|
20
|
+
* telemetry can tell a process that outlived its turn (`caller_stale`) from a
|
|
21
|
+
* malformed or revoked credential instead of reporting it as unclassified.
|
|
22
|
+
*/
|
|
23
|
+
function agentAttemptAuthorityError(
|
|
24
|
+
reason: "malformed" | SessionAuthorizationDeniedError["reason"],
|
|
25
|
+
cause?: unknown,
|
|
26
|
+
): ApiHttpError {
|
|
27
|
+
const error = new ApiHttpError(403, {
|
|
28
|
+
code: "forbidden",
|
|
29
|
+
message: AGENT_ATTEMPT_AUTHORITY_INVALID,
|
|
30
|
+
retryable: false,
|
|
31
|
+
outcomeUnknown: false,
|
|
32
|
+
details: { code: `agent_attempt_${reason}` },
|
|
33
|
+
});
|
|
34
|
+
if (cause !== undefined) error.cause = cause;
|
|
35
|
+
return error;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Trusted payer for a non-agent grant: an authenticated human session pays as
|
|
40
|
+
* that human; keys and services are service work. An agent attempt must be
|
|
41
|
+
* resolved through the validated middleware context installed below.
|
|
42
|
+
*/
|
|
43
|
+
export function creditDebitAttributionForGrant(grant: AccessGrant): CreditDebitAttribution {
|
|
44
|
+
if (grant.principalKind === "agent_attempt") return currentCreditDebitAttribution();
|
|
45
|
+
return grant.principalKind === "human_session"
|
|
46
|
+
? { kind: "human", initiatingHumanSubjectId: grant.subjectId }
|
|
47
|
+
: ["service", "api_key", "configured_key", "mcp_gateway"].includes(grant.principalKind ?? "")
|
|
48
|
+
? { kind: "service" }
|
|
49
|
+
: { kind: "unknown" };
|
|
50
|
+
}
|
|
9
51
|
|
|
10
52
|
export async function withAccessGrantSessionRlsContext<T>(
|
|
11
|
-
deps: ApiRouteDeps,
|
|
53
|
+
deps: Pick<ApiRouteDeps, "db">,
|
|
12
54
|
grant: AccessGrant,
|
|
13
55
|
fn: () => Promise<T>,
|
|
14
56
|
): Promise<T> {
|
|
15
57
|
if (grant.principalKind !== "agent_attempt") {
|
|
16
|
-
return await
|
|
58
|
+
return await withCreditDebitAttribution(creditDebitAttributionForGrant(grant), () =>
|
|
59
|
+
withSessionRlsActorContext({ subjectId: grant.subjectId }, fn),
|
|
60
|
+
);
|
|
17
61
|
}
|
|
18
62
|
const callerSessionId = grant.metadata?.sessionId;
|
|
19
63
|
if (typeof callerSessionId !== "string") {
|
|
20
|
-
throw
|
|
64
|
+
throw agentAttemptAuthorityError("malformed");
|
|
21
65
|
}
|
|
22
66
|
try {
|
|
23
67
|
const actor = await requireLiveAgentAttemptAuthorization(deps.db, grant, callerSessionId);
|
|
@@ -32,20 +76,26 @@ export async function withAccessGrantSessionRlsContext<T>(
|
|
|
32
76
|
executionGeneration: actor.executionGeneration,
|
|
33
77
|
},
|
|
34
78
|
});
|
|
35
|
-
return await
|
|
79
|
+
return await withCreditDebitAttribution(
|
|
36
80
|
{
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
81
|
+
kind: "turn",
|
|
82
|
+
turnId: actor.turnId,
|
|
83
|
+
initiatingHumanSubjectId: actor.initiatingHumanSubjectId ?? null,
|
|
40
84
|
},
|
|
41
|
-
|
|
85
|
+
() =>
|
|
86
|
+
withSessionRlsActorContext(
|
|
87
|
+
{
|
|
88
|
+
subjectId: actor.subjectId,
|
|
89
|
+
initiatingHumanSubjectId: actor.initiatingHumanSubjectId,
|
|
90
|
+
privateFileOwnerSubjectId:
|
|
91
|
+
learning.defaultScope === "personal" ? learning.subjectId : null,
|
|
92
|
+
},
|
|
93
|
+
fn,
|
|
94
|
+
),
|
|
42
95
|
);
|
|
43
96
|
} catch (error) {
|
|
44
97
|
if (error instanceof SessionAuthorizationDeniedError) {
|
|
45
|
-
throw
|
|
46
|
-
message: "agent attempt authority is invalid",
|
|
47
|
-
cause: error,
|
|
48
|
-
});
|
|
98
|
+
throw agentAttemptAuthorityError(error.reason, error);
|
|
49
99
|
}
|
|
50
100
|
throw error;
|
|
51
101
|
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { Observability } from "@opengeni/observability";
|
|
2
|
+
|
|
3
|
+
/** Only committed, non-replayed server event identities mint admission anchors. */
|
|
4
|
+
export function recordAcceptedApiAdmission(
|
|
5
|
+
observability: Observability | undefined,
|
|
6
|
+
result: { accepted: { id: string }; replay: boolean },
|
|
7
|
+
): void {
|
|
8
|
+
if (result.replay) return;
|
|
9
|
+
try {
|
|
10
|
+
observability?.recordAdmissionTrace(result.accepted.id);
|
|
11
|
+
} catch {
|
|
12
|
+
// Telemetry must never turn a committed admission into an HTTP failure.
|
|
13
|
+
}
|
|
14
|
+
}
|