@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
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { environmentsEncryptionKeyBytes } from "@opengeni/config";
|
|
2
|
+
import { modelUnavailableHttpException } from "@opengeni/core";
|
|
2
3
|
import {
|
|
3
4
|
AUTOMATION_WEBHOOK_MAX_BYTES,
|
|
4
5
|
AUTOMATION_MAX_MATCHED_TRIGGERS,
|
|
@@ -15,6 +16,7 @@ import {
|
|
|
15
16
|
type BundledSkillId,
|
|
16
17
|
} from "@opengeni/contracts";
|
|
17
18
|
import {
|
|
19
|
+
AutomationCredentialRestrictionConflictError,
|
|
18
20
|
AutomationDeliveryConflictError,
|
|
19
21
|
AutomationRevisionConflictError,
|
|
20
22
|
createAutomationRun,
|
|
@@ -35,24 +37,47 @@ import {
|
|
|
35
37
|
updateAutomationTrigger,
|
|
36
38
|
withWorkspaceGatewayCustomModelReadLock,
|
|
37
39
|
withWorkspaceOpenRouterCustomModelReadLock,
|
|
40
|
+
withWorkspaceProviderCustomModelReadLock,
|
|
38
41
|
type AutomationSourceSecret,
|
|
39
42
|
} from "@opengeni/db";
|
|
40
43
|
import {
|
|
41
44
|
automationRequestDigest,
|
|
45
|
+
automationCredentialRestrictionForGrant,
|
|
46
|
+
assertNotSiteClampedAgent,
|
|
42
47
|
assertWorkspaceModelPolicyAllows,
|
|
43
48
|
buildAutomationAcceptedExecution,
|
|
44
49
|
canonicalConfiguredModel,
|
|
45
50
|
creationInitiatorForGrant,
|
|
51
|
+
currentSiteSessionOrigin,
|
|
46
52
|
workspaceCustomModelReference,
|
|
47
53
|
lockActiveCustomModelForAdmission,
|
|
48
54
|
requireAccessGrant,
|
|
49
55
|
requireAutomationAdapter,
|
|
50
56
|
requirePermission,
|
|
57
|
+
requireAutomationCredentialRestrictionPermissions,
|
|
51
58
|
resolveWorkspaceCatalogSettings,
|
|
52
59
|
type ApiRouteDeps,
|
|
53
60
|
} from "@opengeni/core";
|
|
54
|
-
import type { Hono } from "hono";
|
|
61
|
+
import type { Context, Hono } from "hono";
|
|
55
62
|
import { HTTPException } from "hono/http-exception";
|
|
63
|
+
import { parseRequestJson } from "../http/request-body";
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Create, change, delete or fire an automation: a workspace admin, but never
|
|
67
|
+
* a Site page (a tool it called) or an agent started from one. Site pages and
|
|
68
|
+
* their agents act with the page's reach, so no automation starts from a Site.
|
|
69
|
+
*/
|
|
70
|
+
async function requireAutomationWriter(
|
|
71
|
+
c: Context,
|
|
72
|
+
deps: ApiRouteDeps,
|
|
73
|
+
workspaceId: string,
|
|
74
|
+
): Promise<AccessGrant> {
|
|
75
|
+
const grant = await requireAccessGrant(c, deps, workspaceId, "workspace:admin");
|
|
76
|
+
if (currentSiteSessionOrigin())
|
|
77
|
+
throw new HTTPException(403, { message: "A Site page cannot create or change automations" });
|
|
78
|
+
await assertNotSiteClampedAgent(deps.db, grant, "automations");
|
|
79
|
+
return grant;
|
|
80
|
+
}
|
|
56
81
|
|
|
57
82
|
async function callerBundleSelection(
|
|
58
83
|
deps: ApiRouteDeps,
|
|
@@ -85,9 +110,10 @@ export function registerAutomationRoutes(app: Hono, deps: ApiRouteDeps): void {
|
|
|
85
110
|
|
|
86
111
|
app.post("/v1/workspaces/:workspaceId/automations/sources", async (c) => {
|
|
87
112
|
const workspaceId = c.req.param("workspaceId");
|
|
88
|
-
const grant = await
|
|
113
|
+
const grant = await requireAutomationWriter(c, deps, workspaceId);
|
|
89
114
|
requirePermission(grant, "secrets:write");
|
|
90
|
-
const request =
|
|
115
|
+
const request = await parseRequestJson(c, CreateAutomationSourceRequest);
|
|
116
|
+
assertGenericTriggerMutable(request);
|
|
91
117
|
requireAutomationAdapter(request.adapterId).validateSourceConfiguration(request.configuration);
|
|
92
118
|
const key = requireEncryptionKey(deps);
|
|
93
119
|
const source = await createAutomationSource(deps.db, {
|
|
@@ -102,8 +128,8 @@ export function registerAutomationRoutes(app: Hono, deps: ApiRouteDeps): void {
|
|
|
102
128
|
|
|
103
129
|
app.patch("/v1/workspaces/:workspaceId/automations/sources/:sourceId", async (c) => {
|
|
104
130
|
const workspaceId = c.req.param("workspaceId");
|
|
105
|
-
const grant = await
|
|
106
|
-
const request =
|
|
131
|
+
const grant = await requireAutomationWriter(c, deps, workspaceId);
|
|
132
|
+
const request = await parseRequestJson(c, UpdateAutomationSourceRequest);
|
|
107
133
|
const current = await requireSource(
|
|
108
134
|
deps,
|
|
109
135
|
grant.accountId,
|
|
@@ -139,7 +165,7 @@ export function registerAutomationRoutes(app: Hono, deps: ApiRouteDeps): void {
|
|
|
139
165
|
|
|
140
166
|
app.delete("/v1/workspaces/:workspaceId/automations/sources/:sourceId", async (c) => {
|
|
141
167
|
const workspaceId = c.req.param("workspaceId");
|
|
142
|
-
const grant = await
|
|
168
|
+
const grant = await requireAutomationWriter(c, deps, workspaceId);
|
|
143
169
|
const current = await requireSource(
|
|
144
170
|
deps,
|
|
145
171
|
grant.accountId,
|
|
@@ -169,18 +195,18 @@ export function registerAutomationRoutes(app: Hono, deps: ApiRouteDeps): void {
|
|
|
169
195
|
|
|
170
196
|
app.post("/v1/workspaces/:workspaceId/automations/triggers", async (c) => {
|
|
171
197
|
const workspaceId = c.req.param("workspaceId");
|
|
172
|
-
const grant = await
|
|
173
|
-
const request =
|
|
198
|
+
const grant = await requireAutomationWriter(c, deps, workspaceId);
|
|
199
|
+
const request = await parseRequestJson(c, CreateAutomationTriggerRequest);
|
|
200
|
+
const credentialRestriction = await automationCredentialRestrictionForGrant(deps.db, grant);
|
|
201
|
+
requireAutomationCredentialRestrictionPermissions(
|
|
202
|
+
credentialRestriction,
|
|
203
|
+
request.sessionTemplate.firstPartyMcpPermissions,
|
|
204
|
+
);
|
|
174
205
|
request.sessionTemplate.bundledSkillIds = await callerBundleSelection(
|
|
175
206
|
deps,
|
|
176
207
|
grant,
|
|
177
208
|
request.sessionTemplate.bundledSkillIds,
|
|
178
209
|
);
|
|
179
|
-
if (request.packInstallationId || request.packTemplateId) {
|
|
180
|
-
throw new HTTPException(409, {
|
|
181
|
-
message: "Pack-owned automation triggers must be created through their Pack setup API",
|
|
182
|
-
});
|
|
183
|
-
}
|
|
184
210
|
const source = await requireSource(deps, grant.accountId, workspaceId, request.sourceId);
|
|
185
211
|
assertGenericSourceMutable(source);
|
|
186
212
|
if (source.status !== "active") {
|
|
@@ -223,6 +249,7 @@ export function registerAutomationRoutes(app: Hono, deps: ApiRouteDeps): void {
|
|
|
223
249
|
createdBySubjectId: grant.subjectId,
|
|
224
250
|
request: normalizedRequest,
|
|
225
251
|
adapterId: adapter.id,
|
|
252
|
+
...(credentialRestriction ? { credentialRestriction } : {}),
|
|
226
253
|
...(beforeCreateCommit ? { beforeCreateCommit } : {}),
|
|
227
254
|
}),
|
|
228
255
|
201,
|
|
@@ -231,8 +258,8 @@ export function registerAutomationRoutes(app: Hono, deps: ApiRouteDeps): void {
|
|
|
231
258
|
|
|
232
259
|
app.patch("/v1/workspaces/:workspaceId/automations/triggers/:triggerId", async (c) => {
|
|
233
260
|
const workspaceId = c.req.param("workspaceId");
|
|
234
|
-
const grant = await
|
|
235
|
-
const request =
|
|
261
|
+
const grant = await requireAutomationWriter(c, deps, workspaceId);
|
|
262
|
+
const request = await parseRequestJson(c, UpdateAutomationTriggerRequest);
|
|
236
263
|
const existing = (await listAutomationTriggers(deps.db, workspaceId)).find(
|
|
237
264
|
(trigger) => trigger.id === c.req.param("triggerId"),
|
|
238
265
|
);
|
|
@@ -241,6 +268,13 @@ export function registerAutomationRoutes(app: Hono, deps: ApiRouteDeps): void {
|
|
|
241
268
|
message: "automation trigger not found",
|
|
242
269
|
});
|
|
243
270
|
assertGenericTriggerMutable(existing);
|
|
271
|
+
const credentialRestriction =
|
|
272
|
+
existing.sessionTemplate.credentialRestriction ??
|
|
273
|
+
(await automationCredentialRestrictionForGrant(deps.db, grant));
|
|
274
|
+
requireAutomationCredentialRestrictionPermissions(
|
|
275
|
+
credentialRestriction,
|
|
276
|
+
(request.sessionTemplate ?? existing.sessionTemplate).firstPartyMcpPermissions,
|
|
277
|
+
);
|
|
244
278
|
if (request.configuration) {
|
|
245
279
|
requireAutomationAdapter(existing.adapterId).validateTriggerConfiguration(
|
|
246
280
|
request.configuration,
|
|
@@ -306,6 +340,7 @@ export function registerAutomationRoutes(app: Hono, deps: ApiRouteDeps): void {
|
|
|
306
340
|
triggerId: c.req.param("triggerId"),
|
|
307
341
|
subjectId: grant.subjectId,
|
|
308
342
|
request: normalizedRequest,
|
|
343
|
+
...(credentialRestriction ? { credentialRestriction } : {}),
|
|
309
344
|
...(beforeUpdateCommit ? { beforeUpdateCommit } : {}),
|
|
310
345
|
});
|
|
311
346
|
if (!trigger)
|
|
@@ -323,7 +358,7 @@ export function registerAutomationRoutes(app: Hono, deps: ApiRouteDeps): void {
|
|
|
323
358
|
|
|
324
359
|
app.delete("/v1/workspaces/:workspaceId/automations/triggers/:triggerId", async (c) => {
|
|
325
360
|
const workspaceId = c.req.param("workspaceId");
|
|
326
|
-
const grant = await
|
|
361
|
+
const grant = await requireAutomationWriter(c, deps, workspaceId);
|
|
327
362
|
const expectedRevision = Number(c.req.query("expectedRevision"));
|
|
328
363
|
if (!Number.isSafeInteger(expectedRevision) || expectedRevision < 1) {
|
|
329
364
|
throw new HTTPException(400, {
|
|
@@ -366,8 +401,9 @@ export function registerAutomationRoutes(app: Hono, deps: ApiRouteDeps): void {
|
|
|
366
401
|
|
|
367
402
|
app.post("/v1/workspaces/:workspaceId/automations/sources/:sourceId/events", async (c) => {
|
|
368
403
|
const workspaceId = c.req.param("workspaceId");
|
|
369
|
-
const grant = await
|
|
370
|
-
const request =
|
|
404
|
+
const grant = await requireAutomationWriter(c, deps, workspaceId);
|
|
405
|
+
const request = await parseRequestJson(c, TriggerAutomationManuallyRequest);
|
|
406
|
+
const credentialRestriction = await automationCredentialRestrictionForGrant(deps.db, grant);
|
|
371
407
|
const source = await requireSource(deps, grant.accountId, workspaceId, c.req.param("sourceId"));
|
|
372
408
|
if (source.status !== "active") {
|
|
373
409
|
throw new HTTPException(409, {
|
|
@@ -384,15 +420,26 @@ export function registerAutomationRoutes(app: Hono, deps: ApiRouteDeps): void {
|
|
|
384
420
|
payload: request.payload,
|
|
385
421
|
});
|
|
386
422
|
const bytes = new TextEncoder().encode(stableJson(request));
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
423
|
+
try {
|
|
424
|
+
return c.json(
|
|
425
|
+
await acceptAutomationEvent(deps, source, {
|
|
426
|
+
deliveryKey:
|
|
427
|
+
request.deliveryId ?? `manual:${automationRequestDigest(source.adapterId, bytes)}`,
|
|
428
|
+
requestDigest: automationRequestDigest(source.adapterId, bytes),
|
|
429
|
+
normalizedEvent,
|
|
430
|
+
...(credentialRestriction ? { credentialRestriction } : {}),
|
|
431
|
+
}),
|
|
432
|
+
202,
|
|
433
|
+
);
|
|
434
|
+
} catch (error) {
|
|
435
|
+
if (
|
|
436
|
+
error instanceof AutomationDeliveryConflictError ||
|
|
437
|
+
error instanceof AutomationCredentialRestrictionConflictError
|
|
438
|
+
) {
|
|
439
|
+
throw new HTTPException(409, { message: error.message });
|
|
440
|
+
}
|
|
441
|
+
throw error;
|
|
442
|
+
}
|
|
396
443
|
});
|
|
397
444
|
|
|
398
445
|
app.post("/v1/webhooks/automations/:endpointId", async (c) => {
|
|
@@ -456,7 +503,10 @@ export function registerAutomationRoutes(app: Hono, deps: ApiRouteDeps): void {
|
|
|
456
503
|
});
|
|
457
504
|
return c.json(result, 202);
|
|
458
505
|
} catch (error) {
|
|
459
|
-
if (
|
|
506
|
+
if (
|
|
507
|
+
error instanceof AutomationDeliveryConflictError ||
|
|
508
|
+
error instanceof AutomationCredentialRestrictionConflictError
|
|
509
|
+
) {
|
|
460
510
|
throw new HTTPException(409, { message: error.message });
|
|
461
511
|
}
|
|
462
512
|
throw error;
|
|
@@ -471,9 +521,13 @@ export async function acceptAutomationEvent(
|
|
|
471
521
|
deliveryKey: string;
|
|
472
522
|
requestDigest: string;
|
|
473
523
|
normalizedEvent: AutomationNormalizedEvent;
|
|
524
|
+
/** Canonical manual caller restriction, not normalized event metadata. */
|
|
525
|
+
credentialRestriction?: "developer_setup";
|
|
474
526
|
},
|
|
475
527
|
) {
|
|
476
|
-
|
|
528
|
+
const { credentialRestriction: _untrustedRestriction, ...eventData } = input.normalizedEvent;
|
|
529
|
+
const normalizedEvent = AutomationNormalizedEvent.parse(eventData);
|
|
530
|
+
if (normalizedEvent.adapterId !== source.adapterId) {
|
|
477
531
|
throw new HTTPException(422, {
|
|
478
532
|
message: "automation event adapter does not match source",
|
|
479
533
|
});
|
|
@@ -485,7 +539,7 @@ export async function acceptAutomationEvent(
|
|
|
485
539
|
sourceId: source.id,
|
|
486
540
|
});
|
|
487
541
|
const matchingByEvent = triggers.filter((trigger) =>
|
|
488
|
-
adapter.matches({ event:
|
|
542
|
+
adapter.matches({ event: normalizedEvent, trigger }),
|
|
489
543
|
);
|
|
490
544
|
if (matchingByEvent.length > AUTOMATION_MAX_MATCHED_TRIGGERS) {
|
|
491
545
|
throw new HTTPException(422, {
|
|
@@ -503,7 +557,10 @@ export async function acceptAutomationEvent(
|
|
|
503
557
|
matchedTriggerRevisions: [],
|
|
504
558
|
deliveryKey: input.deliveryKey,
|
|
505
559
|
requestDigest: input.requestDigest,
|
|
506
|
-
normalizedEvent
|
|
560
|
+
normalizedEvent,
|
|
561
|
+
...(input.credentialRestriction
|
|
562
|
+
? { credentialRestriction: input.credentialRestriction }
|
|
563
|
+
: {}),
|
|
507
564
|
ignoredReason: "no_matching_triggers",
|
|
508
565
|
})
|
|
509
566
|
: await withWorkspaceGatewayCustomModelReadLock(
|
|
@@ -513,55 +570,72 @@ export async function acceptAutomationEvent(
|
|
|
513
570
|
await withWorkspaceOpenRouterCustomModelReadLock(
|
|
514
571
|
gatewayLockedDb,
|
|
515
572
|
{ accountId: source.accountId, workspaceId: source.workspaceId },
|
|
516
|
-
async (
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
573
|
+
async (openRouterLockedDb) =>
|
|
574
|
+
await withWorkspaceProviderCustomModelReadLock(
|
|
575
|
+
openRouterLockedDb,
|
|
576
|
+
{
|
|
520
577
|
accountId: source.accountId,
|
|
521
578
|
workspaceId: source.workspaceId,
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
579
|
+
providerKind: "opper",
|
|
580
|
+
},
|
|
581
|
+
async (lockedDb) => {
|
|
582
|
+
const catalogSourceSettings = deps.catalogSourceSettings ?? deps.settings;
|
|
583
|
+
const catalogSettings = (
|
|
584
|
+
await resolveWorkspaceCatalogSettings(lockedDb, catalogSourceSettings, {
|
|
585
|
+
accountId: source.accountId,
|
|
586
|
+
workspaceId: source.workspaceId,
|
|
587
|
+
})
|
|
588
|
+
).settings;
|
|
589
|
+
const matchingAtAcceptance = [];
|
|
590
|
+
for (const trigger of matchingByEvent) {
|
|
591
|
+
try {
|
|
592
|
+
const render = adapter.render({
|
|
593
|
+
event: normalizedEvent,
|
|
594
|
+
trigger,
|
|
595
|
+
source,
|
|
596
|
+
});
|
|
597
|
+
requireAutomationCredentialRestrictionPermissions(
|
|
598
|
+
trigger.sessionTemplate.credentialRestriction ??
|
|
599
|
+
input.credentialRestriction,
|
|
600
|
+
render.sessionTemplate.firstPartyMcpPermissions,
|
|
601
|
+
);
|
|
602
|
+
const requestedModel =
|
|
603
|
+
render.sessionTemplate.model ?? catalogSettings.openaiModel;
|
|
604
|
+
const model = canonicalConfiguredModel(catalogSettings, requestedModel);
|
|
605
|
+
if (!model) continue;
|
|
606
|
+
await assertWorkspaceModelPolicyAllows(
|
|
607
|
+
lockedDb,
|
|
608
|
+
catalogSettings,
|
|
609
|
+
source.workspaceId,
|
|
610
|
+
model,
|
|
611
|
+
);
|
|
612
|
+
matchingAtAcceptance.push(trigger);
|
|
613
|
+
} catch (error) {
|
|
614
|
+
if (isUnprocessableEntity(error)) continue;
|
|
615
|
+
throw error;
|
|
616
|
+
}
|
|
617
|
+
}
|
|
618
|
+
return await recordAutomationEvent(lockedDb, {
|
|
619
|
+
accountId: source.accountId,
|
|
620
|
+
workspaceId: source.workspaceId,
|
|
621
|
+
sourceId: source.id,
|
|
622
|
+
sourceVersion: source.version,
|
|
623
|
+
sourceConfiguration: source.configuration,
|
|
624
|
+
matchedTriggerRevisions: matchingAtAcceptance.map((trigger) => ({
|
|
625
|
+
triggerId: trigger.id,
|
|
626
|
+
revision: trigger.revision,
|
|
627
|
+
})),
|
|
628
|
+
deliveryKey: input.deliveryKey,
|
|
629
|
+
requestDigest: input.requestDigest,
|
|
630
|
+
normalizedEvent,
|
|
631
|
+
...(input.credentialRestriction
|
|
632
|
+
? { credentialRestriction: input.credentialRestriction }
|
|
633
|
+
: {}),
|
|
634
|
+
ignoredReason:
|
|
635
|
+
matchingAtAcceptance.length === 0 ? "no_executable_triggers" : null,
|
|
531
636
|
});
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
const model = canonicalConfiguredModel(catalogSettings, requestedModel);
|
|
535
|
-
if (!model) continue;
|
|
536
|
-
await assertWorkspaceModelPolicyAllows(
|
|
537
|
-
lockedDb,
|
|
538
|
-
catalogSettings,
|
|
539
|
-
source.workspaceId,
|
|
540
|
-
model,
|
|
541
|
-
);
|
|
542
|
-
matchingAtAcceptance.push(trigger);
|
|
543
|
-
} catch (error) {
|
|
544
|
-
if (isUnprocessableEntity(error)) continue;
|
|
545
|
-
throw error;
|
|
546
|
-
}
|
|
547
|
-
}
|
|
548
|
-
return await recordAutomationEvent(lockedDb, {
|
|
549
|
-
accountId: source.accountId,
|
|
550
|
-
workspaceId: source.workspaceId,
|
|
551
|
-
sourceId: source.id,
|
|
552
|
-
sourceVersion: source.version,
|
|
553
|
-
sourceConfiguration: source.configuration,
|
|
554
|
-
matchedTriggerRevisions: matchingAtAcceptance.map((trigger) => ({
|
|
555
|
-
triggerId: trigger.id,
|
|
556
|
-
revision: trigger.revision,
|
|
557
|
-
})),
|
|
558
|
-
deliveryKey: input.deliveryKey,
|
|
559
|
-
requestDigest: input.requestDigest,
|
|
560
|
-
normalizedEvent: input.normalizedEvent,
|
|
561
|
-
ignoredReason:
|
|
562
|
-
matchingAtAcceptance.length === 0 ? "no_executable_triggers" : null,
|
|
563
|
-
});
|
|
564
|
-
},
|
|
637
|
+
},
|
|
638
|
+
),
|
|
565
639
|
),
|
|
566
640
|
);
|
|
567
641
|
const matching = await getAutomationTriggerRevisions(deps.db, {
|
|
@@ -573,6 +647,7 @@ export async function acceptAutomationEvent(
|
|
|
573
647
|
version: stored.event.sourceVersion,
|
|
574
648
|
configuration: stored.event.sourceConfiguration,
|
|
575
649
|
};
|
|
650
|
+
const { credentialRestriction, ...acceptedEvent } = stored.event.normalizedEvent;
|
|
576
651
|
const runIds: string[] = [];
|
|
577
652
|
const triggerAutomationRun = deps.workflowClient.triggerAutomationRun;
|
|
578
653
|
if (matching.length > 0 && !triggerAutomationRun) {
|
|
@@ -582,7 +657,7 @@ export async function acceptAutomationEvent(
|
|
|
582
657
|
}
|
|
583
658
|
for (const trigger of matching) {
|
|
584
659
|
const render = adapter.render({
|
|
585
|
-
event:
|
|
660
|
+
event: acceptedEvent,
|
|
586
661
|
trigger,
|
|
587
662
|
source: acceptedSource,
|
|
588
663
|
});
|
|
@@ -592,8 +667,9 @@ export async function acceptAutomationEvent(
|
|
|
592
667
|
source: acceptedSource,
|
|
593
668
|
trigger,
|
|
594
669
|
eventId: stored.event.id,
|
|
595
|
-
event:
|
|
670
|
+
event: acceptedEvent,
|
|
596
671
|
render,
|
|
672
|
+
...(credentialRestriction ? { credentialRestriction } : {}),
|
|
597
673
|
});
|
|
598
674
|
const { run } = await createAutomationRun(deps.db, {
|
|
599
675
|
accountId: source.accountId,
|
|
@@ -642,11 +718,12 @@ function workspaceCustomModelCommitGuard(input: {
|
|
|
642
718
|
accountId: input.accountId,
|
|
643
719
|
workspaceId: input.workspaceId,
|
|
644
720
|
reference,
|
|
721
|
+
// Automation configuration carries no accepted Claude authority, so an
|
|
722
|
+
// organization Claude model is refused here (unchanged behaviour).
|
|
723
|
+
claudeAuthority: null,
|
|
645
724
|
});
|
|
646
725
|
if (!active) {
|
|
647
|
-
throw
|
|
648
|
-
message: `model is not available: ${input.modelId}`,
|
|
649
|
-
});
|
|
726
|
+
throw modelUnavailableHttpException(input.modelId);
|
|
650
727
|
}
|
|
651
728
|
};
|
|
652
729
|
}
|
|
@@ -667,17 +744,13 @@ async function requireSource(
|
|
|
667
744
|
}
|
|
668
745
|
|
|
669
746
|
function assertGenericSourceMutable(source: AutomationSourceSecret): void {
|
|
670
|
-
|
|
671
|
-
throw new HTTPException(409, {
|
|
672
|
-
message: "Pack-owned automation sources must be managed through their Pack setup API",
|
|
673
|
-
});
|
|
674
|
-
}
|
|
747
|
+
assertGenericTriggerMutable(source);
|
|
675
748
|
}
|
|
676
749
|
|
|
677
|
-
function assertGenericTriggerMutable(trigger: {
|
|
678
|
-
if (trigger.
|
|
750
|
+
function assertGenericTriggerMutable(trigger: { adapterId: string }): void {
|
|
751
|
+
if (trigger.adapterId === "source-control.pull-request.v1") {
|
|
679
752
|
throw new HTTPException(409, {
|
|
680
|
-
message: "
|
|
753
|
+
message: "PR Review automations must be managed through the PR Review setup API",
|
|
681
754
|
});
|
|
682
755
|
}
|
|
683
756
|
}
|