@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,287 +1,9 @@
|
|
|
1
|
-
import { type FirstPartyMcpToolName, type Permission } from "@opengeni/contracts";
|
|
2
|
-
|
|
3
|
-
export type FirstPartyToolAuthorization = {
|
|
4
|
-
sessionRequired?: true;
|
|
5
|
-
allOf?: readonly Permission[];
|
|
6
|
-
anyOf?: readonly Permission[];
|
|
7
|
-
};
|
|
8
|
-
|
|
9
1
|
/**
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
* registration predicate before it can compile.
|
|
2
|
+
* The per-tool registration predicate lives in `@opengeni/contracts` so the
|
|
3
|
+
* worker can read the same data; this module keeps the API's import path.
|
|
13
4
|
*/
|
|
14
|
-
export
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
wait_for_input: { sessionRequired: true, allOf: ["sessions:control"] },
|
|
20
|
-
goal_complete: { sessionRequired: true, allOf: ["goals:manage"] },
|
|
21
|
-
goal_pause: { sessionRequired: true, allOf: ["goals:manage"] },
|
|
22
|
-
goal_resume: { sessionRequired: true, allOf: ["goals:manage"] },
|
|
23
|
-
knowledge_search: { sessionRequired: true, allOf: ["documents:search"] },
|
|
24
|
-
knowledge_get: { sessionRequired: true, allOf: ["documents:search"] },
|
|
25
|
-
knowledge_browse: { sessionRequired: true, allOf: ["documents:search"] },
|
|
26
|
-
knowledge_retain_file: { sessionRequired: true, allOf: ["documents:search", "files:read"] },
|
|
27
|
-
knowledge_retain_message: { sessionRequired: true, allOf: ["documents:search", "sessions:read"] },
|
|
28
|
-
knowledge_save: { sessionRequired: true, allOf: ["documents:search"] },
|
|
29
|
-
knowledge_archive: { sessionRequired: true, allOf: ["documents:search"] },
|
|
30
|
-
instruction_policy_save: { sessionRequired: true, allOf: ["documents:search"] },
|
|
31
|
-
instruction_policy_get: { sessionRequired: true, allOf: ["documents:search"] },
|
|
32
|
-
memory_search: { sessionRequired: true, allOf: ["documents:search"] },
|
|
33
|
-
memory_save: { sessionRequired: true, allOf: ["documents:search"] },
|
|
34
|
-
memory_correct: { sessionRequired: true, allOf: ["documents:search"] },
|
|
35
|
-
preference_registry_summary: {
|
|
36
|
-
sessionRequired: true,
|
|
37
|
-
allOf: ["workspace:read"],
|
|
38
|
-
},
|
|
39
|
-
preference_registry_get: { sessionRequired: true, allOf: ["workspace:read"] },
|
|
40
|
-
task_notes_list: { sessionRequired: true, allOf: ["sessions:read"] },
|
|
41
|
-
task_note_save: { sessionRequired: true, allOf: ["sessions:control"] },
|
|
42
|
-
task_note_archive: { sessionRequired: true, allOf: ["sessions:control"] },
|
|
43
|
-
task_note_replace: { sessionRequired: true, allOf: ["sessions:control"] },
|
|
44
|
-
work_claim_upsert: { sessionRequired: true, allOf: ["sessions:control"] },
|
|
45
|
-
work_claim_release: { sessionRequired: true, allOf: ["sessions:control"] },
|
|
46
|
-
knowledge_propose: { sessionRequired: true, allOf: ["documents:search"] },
|
|
47
|
-
knowledge_correct: { sessionRequired: true, allOf: ["documents:search"] },
|
|
48
|
-
task_note_promote_knowledge: {
|
|
49
|
-
sessionRequired: true,
|
|
50
|
-
allOf: ["documents:search", "sessions:control"],
|
|
51
|
-
},
|
|
52
|
-
task_note_promote_instruction_policy: {
|
|
53
|
-
sessionRequired: true,
|
|
54
|
-
allOf: ["documents:search", "sessions:control", "workspace:read"],
|
|
55
|
-
},
|
|
56
|
-
task_note_promote_preference: {
|
|
57
|
-
sessionRequired: true,
|
|
58
|
-
allOf: ["documents:search", "sessions:control", "workspace:read"],
|
|
59
|
-
},
|
|
60
|
-
instruction_policy_propose: {
|
|
61
|
-
sessionRequired: true,
|
|
62
|
-
allOf: ["documents:search", "workspace:read"],
|
|
63
|
-
},
|
|
64
|
-
preference_propose: {
|
|
65
|
-
sessionRequired: true,
|
|
66
|
-
allOf: ["documents:search", "workspace:read"],
|
|
67
|
-
},
|
|
68
|
-
// Explicit user-directed remember composes task-note evidence with the
|
|
69
|
-
// governed promotion path, so it needs the union of both permission sets.
|
|
70
|
-
remember: {
|
|
71
|
-
sessionRequired: true,
|
|
72
|
-
allOf: ["documents:search", "sessions:control", "workspace:read"],
|
|
73
|
-
},
|
|
74
|
-
remember_confirm: {
|
|
75
|
-
sessionRequired: true,
|
|
76
|
-
allOf: ["documents:search", "sessions:control", "workspace:read"],
|
|
77
|
-
},
|
|
78
|
-
company_profile_propose: {
|
|
79
|
-
sessionRequired: true,
|
|
80
|
-
allOf: ["sessions:control", "workspace:read"],
|
|
81
|
-
},
|
|
82
|
-
company_profile_confirm: {
|
|
83
|
-
sessionRequired: true,
|
|
84
|
-
allOf: ["sessions:control", "workspace:read"],
|
|
85
|
-
},
|
|
86
|
-
sandboxes_list: { sessionRequired: true, allOf: ["sessions:read"] },
|
|
87
|
-
sandbox_attach: { sessionRequired: true, allOf: ["sessions:control"] },
|
|
88
|
-
sandbox_swap: { sessionRequired: true, allOf: ["sessions:control"] },
|
|
89
|
-
run_on: { sessionRequired: true, allOf: ["sessions:control"] },
|
|
90
|
-
sandbox_provision: { sessionRequired: true, allOf: ["sessions:control"] },
|
|
91
|
-
connected_machine_remove: { allOf: ["enrollments:manage"] },
|
|
92
|
-
rig_list: { allOf: ["rigs:use"] },
|
|
93
|
-
rig_get: { allOf: ["rigs:use"] },
|
|
94
|
-
rig_propose_change: { allOf: ["rigs:use"] },
|
|
95
|
-
rig_verify: { allOf: ["rigs:use"] },
|
|
96
|
-
rig_promote: { allOf: ["rigs:manage"] },
|
|
97
|
-
sessions_list: { allOf: ["sessions:read"] },
|
|
98
|
-
session_get: { allOf: ["sessions:read"] },
|
|
99
|
-
session_events: { allOf: ["sessions:read"] },
|
|
100
|
-
// Blocking wait inside a running turn: the live attempt's own session is the
|
|
101
|
-
// self target, so the tool exists only for session-scoped grants.
|
|
102
|
-
session_wait: { sessionRequired: true, allOf: ["sessions:read"] },
|
|
103
|
-
command_wait: { sessionRequired: true, allOf: ["sessions:read"] },
|
|
104
|
-
command_read: { sessionRequired: true, allOf: ["sessions:read"] },
|
|
105
|
-
session_create: { allOf: ["sessions:create"] },
|
|
106
|
-
session_send_message: { allOf: ["sessions:control"] },
|
|
107
|
-
session_pause: { allOf: ["sessions:control"] },
|
|
108
|
-
session_resume: { allOf: ["sessions:control"] },
|
|
109
|
-
session_steer: { sessionRequired: true, allOf: ["sessions:control"] },
|
|
110
|
-
// A live attempt may answer another session's structured human-input
|
|
111
|
-
// request (never a tool approval, which stays human-only).
|
|
112
|
-
session_human_input_respond: { sessionRequired: true, allOf: ["sessions:control"] },
|
|
113
|
-
set_other_session_title: { allOf: ["sessions:control"] },
|
|
114
|
-
interaction_discover: { sessionRequired: true, allOf: ["sessions:read"] },
|
|
115
|
-
browser_open: { sessionRequired: true, allOf: ["sessions:control"] },
|
|
116
|
-
browser_tabs: { sessionRequired: true, allOf: ["sessions:control"] },
|
|
117
|
-
browser_observe: { sessionRequired: true, allOf: ["sessions:read"] },
|
|
118
|
-
browser_act: { sessionRequired: true, allOf: ["sessions:control"] },
|
|
119
|
-
browser_clipboard: { sessionRequired: true, allOf: ["sessions:read"] },
|
|
120
|
-
browser_debug: { sessionRequired: true, allOf: ["sessions:read"] },
|
|
121
|
-
browser_auth: { sessionRequired: true, allOf: ["sessions:control"] },
|
|
122
|
-
interaction_request_human: {
|
|
123
|
-
sessionRequired: true,
|
|
124
|
-
allOf: ["sessions:control"],
|
|
125
|
-
},
|
|
126
|
-
browser_identity: { sessionRequired: true, allOf: ["sessions:control"] },
|
|
127
|
-
browser_publish: { sessionRequired: true, allOf: ["sessions:control"] },
|
|
128
|
-
browser_lifecycle: { sessionRequired: true, allOf: ["sessions:control"] },
|
|
129
|
-
computer_open: { sessionRequired: true, allOf: ["sessions:control"] },
|
|
130
|
-
computer_targets: { sessionRequired: true, allOf: ["sessions:read"] },
|
|
131
|
-
computer_observe: { sessionRequired: true, allOf: ["sessions:read"] },
|
|
132
|
-
computer_clipboard: { sessionRequired: true, allOf: ["sessions:read"] },
|
|
133
|
-
computer_act: { sessionRequired: true, allOf: ["sessions:control"] },
|
|
134
|
-
computer_lifecycle: { sessionRequired: true, allOf: ["sessions:control"] },
|
|
135
|
-
variable_set_list: { allOf: ["variable-sets:list", "secrets:list"] },
|
|
136
|
-
environment_list: { allOf: ["variable-sets:list", "secrets:list"] },
|
|
137
|
-
variable_set_get_variable: {
|
|
138
|
-
sessionRequired: true,
|
|
139
|
-
allOf: ["variable-sets:read", "secrets:read"],
|
|
140
|
-
},
|
|
141
|
-
variable_set_set_variable: {
|
|
142
|
-
allOf: ["variable-sets:write", "secrets:write"],
|
|
143
|
-
},
|
|
144
|
-
environment_set_variable: { allOf: ["variable-sets:write", "secrets:write"] },
|
|
145
|
-
capability_catalog_search: {
|
|
146
|
-
sessionRequired: true,
|
|
147
|
-
allOf: ["workspace:read"],
|
|
148
|
-
},
|
|
149
|
-
capability_authorization_request: {
|
|
150
|
-
sessionRequired: true,
|
|
151
|
-
allOf: ["workspace:read"],
|
|
152
|
-
},
|
|
153
|
-
github_connect_link: { allOf: ["github:use"] },
|
|
154
|
-
github_repositories_list: { allOf: ["github:use"] },
|
|
155
|
-
social_connections_list: { allOf: ["connections:read"] },
|
|
156
|
-
social_posts_recent: { allOf: ["connections:read"] },
|
|
157
|
-
social_daily_analysis_context: { allOf: ["connections:read"] },
|
|
158
|
-
social_search_live: { allOf: ["connections:read"] },
|
|
159
|
-
social_mentions_live: { allOf: ["connections:read"] },
|
|
160
|
-
social_thread_fetch: { allOf: ["connections:read"] },
|
|
161
|
-
// Writes the social_posts store, so it takes the write scope like the REST
|
|
162
|
-
// equivalent (POST /social/posts is workspace:admin).
|
|
163
|
-
social_posts_sync: { allOf: ["connections:write"] },
|
|
164
|
-
// Publishes under the user's identity: connections:write keeps it out of the
|
|
165
|
-
// default agent permission set, unlike the read-only social tools above.
|
|
166
|
-
social_post_reply: { allOf: ["connections:write"] },
|
|
167
|
-
x_accounts_list: { allOf: ["connections:read"] },
|
|
168
|
-
x_search_live: { allOf: ["connections:read"] },
|
|
169
|
-
x_mentions_live: { allOf: ["connections:read"] },
|
|
170
|
-
x_thread_fetch: { allOf: ["connections:read"] },
|
|
171
|
-
x_posts_sync: { allOf: ["connections:write"] },
|
|
172
|
-
x_post_reply: { allOf: ["connections:write"] },
|
|
173
|
-
reddit_accounts_list: { allOf: ["connections:read"] },
|
|
174
|
-
reddit_search_live: { allOf: ["connections:read"] },
|
|
175
|
-
reddit_mentions_live: { allOf: ["connections:read"] },
|
|
176
|
-
reddit_thread_fetch: { allOf: ["connections:read"] },
|
|
177
|
-
reddit_posts_sync: { allOf: ["connections:write"] },
|
|
178
|
-
reddit_post_reply: { allOf: ["connections:write"] },
|
|
179
|
-
scheduled_tasks_list: {
|
|
180
|
-
anyOf: ["scheduled_tasks:manage", "scheduled_tasks:run"],
|
|
181
|
-
},
|
|
182
|
-
scheduled_tasks_get: {
|
|
183
|
-
anyOf: ["scheduled_tasks:manage", "scheduled_tasks:run"],
|
|
184
|
-
},
|
|
185
|
-
scheduled_tasks_create: { allOf: ["scheduled_tasks:manage"] },
|
|
186
|
-
scheduled_tasks_update: { allOf: ["scheduled_tasks:manage"] },
|
|
187
|
-
scheduled_tasks_pause: { allOf: ["scheduled_tasks:manage"] },
|
|
188
|
-
scheduled_tasks_resume: { allOf: ["scheduled_tasks:manage"] },
|
|
189
|
-
scheduled_tasks_trigger: { allOf: ["scheduled_tasks:run"] },
|
|
190
|
-
scheduled_tasks_delete: { allOf: ["scheduled_tasks:manage"] },
|
|
191
|
-
scheduled_task_runs_list: {
|
|
192
|
-
anyOf: ["scheduled_tasks:manage", "scheduled_tasks:run"],
|
|
193
|
-
},
|
|
194
|
-
slack_bot_list_channels: { allOf: ["connections:read"] },
|
|
195
|
-
slack_bot_search: { allOf: ["connections:read"] },
|
|
196
|
-
slack_bot_channel_history: { allOf: ["connections:read"] },
|
|
197
|
-
slack_bot_thread_replies: { allOf: ["connections:read"] },
|
|
198
|
-
slack_bot_list_users: { allOf: ["connections:read"] },
|
|
199
|
-
slack_bot_list_files: { allOf: ["connections:read"] },
|
|
200
|
-
slack_bot_file_info: { allOf: ["connections:read"] },
|
|
201
|
-
slack_bot_file_content: { allOf: ["connections:read"] },
|
|
202
|
-
slack_bot_post_message: { allOf: ["connections:read"] },
|
|
203
|
-
slack_bot_delete_message: { allOf: ["connections:read"] },
|
|
204
|
-
fiken_companies_list: { allOf: ["connections:read"] },
|
|
205
|
-
fiken_contacts_list: { allOf: ["connections:read"] },
|
|
206
|
-
fiken_products_list: { allOf: ["connections:read"] },
|
|
207
|
-
fiken_invoices_list: { allOf: ["connections:read"] },
|
|
208
|
-
fiken_invoice_get: { allOf: ["connections:read"] },
|
|
209
|
-
fiken_bank_accounts_list: { allOf: ["connections:read"] },
|
|
210
|
-
fiken_purchases_list: { allOf: ["connections:read"] },
|
|
211
|
-
fiken_sales_list: { allOf: ["connections:read"] },
|
|
212
|
-
// Writes into the workspace's real accounting ledger surface take the write
|
|
213
|
-
// scope, keeping them out of the default agent permission set.
|
|
214
|
-
fiken_contact_create: { allOf: ["connections:write"] },
|
|
215
|
-
fiken_invoice_draft_create: { allOf: ["connections:write"] },
|
|
216
|
-
atlassian_sources_list: { allOf: ["connections:read"] },
|
|
217
|
-
atlassian_search: { allOf: ["connections:read"] },
|
|
218
|
-
atlassian_get: { allOf: ["connections:read"] },
|
|
219
|
-
artifacts_list: { allOf: ["artifacts:read"] },
|
|
220
|
-
artifacts_get_source: { sessionRequired: true, allOf: ["artifacts:read"] },
|
|
221
|
-
artifacts_prepare_upload: { sessionRequired: true, allOf: ["artifacts:publish"] },
|
|
222
|
-
artifacts_create: { sessionRequired: true, allOf: ["artifacts:publish"] },
|
|
223
|
-
artifacts_publish: { sessionRequired: true, allOf: ["artifacts:publish"] },
|
|
224
|
-
artifacts_rollback: { sessionRequired: true, allOf: ["artifacts:publish"] },
|
|
225
|
-
artifacts_archive: { sessionRequired: true, allOf: ["artifacts:publish"] },
|
|
226
|
-
artifacts_restore: { sessionRequired: true, allOf: ["artifacts:publish"] },
|
|
227
|
-
sandbox_file_publish: {
|
|
228
|
-
sessionRequired: true,
|
|
229
|
-
allOf: ["files:read", "files:upload"],
|
|
230
|
-
},
|
|
231
|
-
editable_artifact_list: { sessionRequired: true, allOf: ["artifacts:read"] },
|
|
232
|
-
editable_artifact_create: {
|
|
233
|
-
sessionRequired: true,
|
|
234
|
-
allOf: ["artifacts:publish"],
|
|
235
|
-
},
|
|
236
|
-
editable_artifact_import: {
|
|
237
|
-
sessionRequired: true,
|
|
238
|
-
allOf: ["artifacts:publish", "files:read"],
|
|
239
|
-
},
|
|
240
|
-
editable_artifact_get: { sessionRequired: true, allOf: ["artifacts:read"] },
|
|
241
|
-
editable_artifact_inspect: {
|
|
242
|
-
sessionRequired: true,
|
|
243
|
-
allOf: ["artifacts:read"],
|
|
244
|
-
},
|
|
245
|
-
editable_artifact_apply: {
|
|
246
|
-
sessionRequired: true,
|
|
247
|
-
allOf: ["artifacts:publish"],
|
|
248
|
-
},
|
|
249
|
-
editable_artifact_export: {
|
|
250
|
-
sessionRequired: true,
|
|
251
|
-
allOf: ["artifacts:read"],
|
|
252
|
-
},
|
|
253
|
-
editable_artifact_export_status: {
|
|
254
|
-
sessionRequired: true,
|
|
255
|
-
allOf: ["artifacts:read", "files:upload"],
|
|
256
|
-
},
|
|
257
|
-
project_list: { allOf: ["sessions:read"] },
|
|
258
|
-
project_get: { allOf: ["sessions:read"] },
|
|
259
|
-
project_create: { allOf: ["sessions:create"] },
|
|
260
|
-
project_update: { allOf: ["sessions:create"] },
|
|
261
|
-
project_reorder: { allOf: ["sessions:create"] },
|
|
262
|
-
project_delete: { allOf: ["sessions:create"] },
|
|
263
|
-
session_set_project: { allOf: ["sessions:control"] },
|
|
264
|
-
} satisfies Record<FirstPartyMcpToolName, FirstPartyToolAuthorization>;
|
|
265
|
-
|
|
266
|
-
/**
|
|
267
|
-
* The permissions a session's first-party tool selection can possibly
|
|
268
|
-
* exercise, derived from the same per-tool registration data that gates the
|
|
269
|
-
* MCP surface. A caller that only proxies REST handlers on behalf of a
|
|
270
|
-
* selection (the Codemode SDK proxy) must never hold more than this: a
|
|
271
|
-
* selection without any session_* orchestration tool cannot need
|
|
272
|
-
* sessions:create or sessions:control, so a delegated token for it must not
|
|
273
|
-
* carry them either. `anyOf` alternatives are all counted because any one of
|
|
274
|
-
* them could be the permission the selection actually holds.
|
|
275
|
-
*/
|
|
276
|
-
export function permissionsRequiredByFirstPartyTools(
|
|
277
|
-
tools: readonly FirstPartyMcpToolName[],
|
|
278
|
-
): Permission[] {
|
|
279
|
-
const required = new Set<Permission>();
|
|
280
|
-
for (const tool of tools) {
|
|
281
|
-
const policy: FirstPartyToolAuthorization | undefined = FIRST_PARTY_TOOL_AUTHORIZATION[tool];
|
|
282
|
-
if (!policy) continue;
|
|
283
|
-
for (const permission of policy.allOf ?? []) required.add(permission);
|
|
284
|
-
for (const permission of policy.anyOf ?? []) required.add(permission);
|
|
285
|
-
}
|
|
286
|
-
return [...required];
|
|
287
|
-
}
|
|
5
|
+
export {
|
|
6
|
+
FIRST_PARTY_TOOL_AUTHORIZATION,
|
|
7
|
+
permissionsRequiredByFirstPartyTools,
|
|
8
|
+
type FirstPartyToolAuthorization,
|
|
9
|
+
} from "@opengeni/contracts";
|
|
@@ -1,16 +1,21 @@
|
|
|
1
1
|
import {
|
|
2
2
|
AgentInstructionSaveRequest,
|
|
3
|
+
WORKSPACE_INSTRUCTION_POLICY_CONTENT_MAX_CHARS,
|
|
3
4
|
WorkspaceInstructionPolicyTarget,
|
|
4
5
|
KnowledgeEntryListRequest,
|
|
6
|
+
KnowledgeSavePreparationRequest,
|
|
5
7
|
KnowledgeEntrySaveRequest,
|
|
6
8
|
KnowledgeTaskNotePromotionRequest,
|
|
7
9
|
type AccessGrant,
|
|
8
10
|
} from "@opengeni/contracts";
|
|
9
11
|
import {
|
|
10
12
|
prepareKnowledgeFile,
|
|
13
|
+
prepareKnowledgeSave,
|
|
11
14
|
retainKnowledgeMessage,
|
|
12
15
|
searchKnowledgeEntries,
|
|
13
16
|
requireLiveAgentAttemptAuthorization,
|
|
17
|
+
siteAgentClamp,
|
|
18
|
+
siteClampedAgentMessage,
|
|
14
19
|
type ApiRouteDeps,
|
|
15
20
|
} from "@opengeni/core";
|
|
16
21
|
import {
|
|
@@ -26,6 +31,8 @@ import {
|
|
|
26
31
|
promoteTaskNoteToKnowledge,
|
|
27
32
|
withSessionRlsActorContext,
|
|
28
33
|
type KnowledgeContext,
|
|
34
|
+
KnowledgeEntryIdRequiredError,
|
|
35
|
+
KnowledgeEntryIdTakenError,
|
|
29
36
|
} from "@opengeni/db";
|
|
30
37
|
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
31
38
|
import { z } from "zod";
|
|
@@ -41,7 +48,24 @@ export function registerKnowledgeEntryTools(
|
|
|
41
48
|
async function run(
|
|
42
49
|
fn: (context: KnowledgeContext) => Promise<unknown>,
|
|
43
50
|
surface: "knowledge" | "instruction" = "knowledge",
|
|
51
|
+
mode: "read" | "write" = "read",
|
|
44
52
|
) {
|
|
53
|
+
// An agent started from a Site page does not learn: it reads Knowledge
|
|
54
|
+
// and instructions but never writes them.
|
|
55
|
+
if (mode === "write" && (await siteAgentClamp(deps.db, grant))?.clamped) {
|
|
56
|
+
const message = siteClampedAgentMessage(
|
|
57
|
+
surface === "instruction" ? "workspace instructions" : "Knowledge",
|
|
58
|
+
);
|
|
59
|
+
return {
|
|
60
|
+
isError: true,
|
|
61
|
+
content: [
|
|
62
|
+
{
|
|
63
|
+
type: "text" as const,
|
|
64
|
+
text: JSON.stringify({ error: { code: "site_agent_clamped", message } }),
|
|
65
|
+
},
|
|
66
|
+
],
|
|
67
|
+
};
|
|
68
|
+
}
|
|
45
69
|
try {
|
|
46
70
|
const attempt = await requireLiveAgentAttemptAuthorization(deps.db, grant, sessionId);
|
|
47
71
|
const context: KnowledgeContext = {
|
|
@@ -64,6 +88,20 @@ export function registerKnowledgeEntryTools(
|
|
|
64
88
|
);
|
|
65
89
|
return { content: [{ type: "text" as const, text: JSON.stringify(result) }] };
|
|
66
90
|
} catch (error) {
|
|
91
|
+
if (
|
|
92
|
+
error instanceof KnowledgeEntryIdTakenError ||
|
|
93
|
+
error instanceof KnowledgeEntryIdRequiredError
|
|
94
|
+
) {
|
|
95
|
+
return {
|
|
96
|
+
isError: true,
|
|
97
|
+
content: [
|
|
98
|
+
{
|
|
99
|
+
type: "text" as const,
|
|
100
|
+
text: JSON.stringify({ error: { code: error.code, message: error.message } }),
|
|
101
|
+
},
|
|
102
|
+
],
|
|
103
|
+
};
|
|
104
|
+
}
|
|
67
105
|
const state = nestedPostgresSqlState(error);
|
|
68
106
|
const message =
|
|
69
107
|
surface === "instruction"
|
|
@@ -74,7 +112,7 @@ export function registerKnowledgeEntryTools(
|
|
|
74
112
|
: state === "42501"
|
|
75
113
|
? "The instruction change is unavailable in this task's scope or Agent learning policy. Off disables authoring, not the task. Do not ask for approval to continue."
|
|
76
114
|
: state === "22023" || state === "23514"
|
|
77
|
-
?
|
|
115
|
+
? `Invalid instruction change. Read the current instruction, use append for a new rule, or edit with one localized exact oldText match to update or remove text. Agents cannot replace the complete instruction. Each supplied text and the resulting instruction must stay within ${WORKSPACE_INSTRUCTION_POLICY_CONTENT_MAX_CHARS} characters, the same limit as the human editor.`
|
|
78
116
|
: "Workspace instructions are temporarily unavailable. Retry the same operation ID only if the prior change may have succeeded."
|
|
79
117
|
: state === "40001"
|
|
80
118
|
? "This entry changed. Read its current revision and retry your correction with the current version."
|
|
@@ -112,30 +150,53 @@ export function registerKnowledgeEntryTools(
|
|
|
112
150
|
},
|
|
113
151
|
},
|
|
114
152
|
(input) =>
|
|
115
|
-
run(
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
153
|
+
run(
|
|
154
|
+
async (context) => {
|
|
155
|
+
if (input.claimId && !input.proposalId && !input.decisionReceiptId) {
|
|
156
|
+
return confirmLegacyKnowledge(deps.db, context, {
|
|
157
|
+
operationId: input.operationId,
|
|
158
|
+
claimId: input.claimId,
|
|
159
|
+
humanInputRequestId: input.humanInputRequestId,
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
if (input.proposalId && input.decisionReceiptId && !input.claimId) {
|
|
163
|
+
return confirmLegacyInstruction(deps.db, context, {
|
|
164
|
+
operationId: input.operationId,
|
|
165
|
+
proposalId: input.proposalId,
|
|
166
|
+
decisionReceiptId: input.decisionReceiptId,
|
|
167
|
+
humanInputRequestId: input.humanInputRequestId,
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
throw new Error("Pass exactly one existing confirmation target");
|
|
171
|
+
},
|
|
172
|
+
"knowledge",
|
|
173
|
+
"write",
|
|
174
|
+
),
|
|
175
|
+
);
|
|
176
|
+
server.registerTool(
|
|
177
|
+
"knowledge_prepare_save",
|
|
178
|
+
{
|
|
179
|
+
description:
|
|
180
|
+
"Before saving useful lasting Knowledge, find related published entries and unapproved proposals, and fetch the full authorized collection map with descriptions and parent IDs in one read-only call. First choose the destination: future behavior belongs in instruction_policy_save for short always-on workspace rules or skill_save for applicable procedures and preferences, not Knowledge. Supply a concise subject and the proposed fact, decision, requirement or incident. Search spans all authorized collections. Reuse an existing entry when unchanged; read its current content before a correction, preserve evidence, or create only when distinct. Pending matches are unapproved. Choose collections from this map in your writable scope. A collection may have both published and pending versions. If collections.complete is false, continue with collectionCursors=collections.nextCursors; never mistake a partial catalog for the whole map. Long descriptions explicitly report truncation and can be read with knowledge_get. This call saves and approves nothing.",
|
|
181
|
+
inputSchema: KnowledgeSavePreparationRequest.shape,
|
|
182
|
+
},
|
|
183
|
+
(input) =>
|
|
184
|
+
run((context) =>
|
|
185
|
+
prepareKnowledgeSave(
|
|
186
|
+
deps.db,
|
|
187
|
+
context,
|
|
188
|
+
input,
|
|
189
|
+
() => deps.getDocumentServices().embedder,
|
|
190
|
+
undefined,
|
|
191
|
+
deps.settings,
|
|
192
|
+
),
|
|
193
|
+
),
|
|
133
194
|
);
|
|
134
195
|
server.registerTool(
|
|
135
196
|
"knowledge_search",
|
|
136
197
|
{
|
|
137
198
|
description:
|
|
138
|
-
"Find Knowledge from retained sources
|
|
199
|
+
"Find Knowledge from useful findings and explicitly retained reference sources. Supporting chat/file evidence is excluded from ordinary published discovery; set includeEvidence=true only when searching that evidence deliberately. Use a concise subject or entity name first (for example Acme); omit scope to search all authorized scopes. If a query returns no entries, retry the key name alone in the same scope or browse groups before concluding the information is absent. Default view=published is accepted knowledge. Also search view=needs_review before creating or updating entries, to reuse pending findings and collections from earlier tasks. Pending revisions are unapproved proposals, not accepted facts or instructions; preserve that status when discussing them. Reading a proposal never approves it. Personal tasks search the verified user's personal and authorized shared Knowledge; shared tasks search shared Knowledge.",
|
|
139
200
|
inputSchema: KnowledgeEntryListRequest.omit({
|
|
140
201
|
view: true,
|
|
141
202
|
sessionId: true,
|
|
@@ -145,7 +206,13 @@ export function registerKnowledgeEntryTools(
|
|
|
145
206
|
},
|
|
146
207
|
(input) =>
|
|
147
208
|
run((context) =>
|
|
148
|
-
searchKnowledgeEntries(
|
|
209
|
+
searchKnowledgeEntries(
|
|
210
|
+
deps.db,
|
|
211
|
+
context,
|
|
212
|
+
input,
|
|
213
|
+
() => deps.getDocumentServices().embedder,
|
|
214
|
+
deps.settings,
|
|
215
|
+
),
|
|
149
216
|
),
|
|
150
217
|
);
|
|
151
218
|
server.registerTool(
|
|
@@ -210,28 +277,33 @@ export function registerKnowledgeEntryTools(
|
|
|
210
277
|
"knowledge_retain_file",
|
|
211
278
|
{
|
|
212
279
|
description:
|
|
213
|
-
"Retain
|
|
214
|
-
inputSchema: {
|
|
280
|
+
"Retain source text from an existing uploaded file only when it supports useful lasting Knowledge, or the user wants the file kept as a reusable reference. Ordinary chat attachments are not automatically added to Knowledge. Use purpose=evidence (default) for supporting material, or purpose=reference for a deliberately retained searchable reference. The original stays in Files. Read the image itself before drawing visual conclusions; OCR text is only evidence. Repeated calls reuse the same source and do not change its purpose, duplicate review requests or revive rejected/archived sources. To make previously retained evidence a searchable reference, read its current revision with knowledge_get and use knowledge_save to set source.purpose=reference while preserving content and links. Selected findings are optional separate knowledge_save entries with evidence pointing to the returned revision. A pending receipt never pauses the task.",
|
|
281
|
+
inputSchema: {
|
|
282
|
+
fileId: z.uuid(),
|
|
283
|
+
purpose: z.enum(["evidence", "reference"]).default("evidence"),
|
|
284
|
+
},
|
|
215
285
|
},
|
|
216
|
-
({ fileId }) =>
|
|
286
|
+
({ fileId, purpose }) =>
|
|
287
|
+
run((context) => prepareKnowledgeFile(deps, context, fileId, purpose), "knowledge", "write"),
|
|
217
288
|
);
|
|
218
289
|
server.registerTool(
|
|
219
290
|
"knowledge_retain_message",
|
|
220
291
|
{
|
|
221
292
|
description:
|
|
222
|
-
"Retain the exact text of a user message
|
|
293
|
+
"Retain the exact text of a user message as supporting evidence only after identifying useful lasting Knowledge to save. Do not retain routine approvals, acknowledgments, task instructions or status chatter merely because they occurred. The source stays out of ordinary Knowledge discovery and can be read through its evidence link. Use when a user supplies or confirms a durable fact, before saving a finding based on it. Omit messageId for the user message that triggered this turn, or pass an earlier user message event ID from this same conversation. The server copies the actual message, preserves its identity and follows this task's learning policy. Repeated calls reuse the source. Cite the returned entryId/revisionId as evidence in knowledge_save, with location.messageIds=[messageId]. Retaining a message does not prove every statement in it or approve a pending finding.",
|
|
223
294
|
inputSchema: { messageId: z.uuid().optional() },
|
|
224
295
|
},
|
|
225
|
-
({ messageId }) =>
|
|
296
|
+
({ messageId }) =>
|
|
297
|
+
run((context) => retainKnowledgeMessage(deps.db, context, messageId), "knowledge", "write"),
|
|
226
298
|
);
|
|
227
299
|
server.registerTool(
|
|
228
300
|
"knowledge_save",
|
|
229
301
|
{
|
|
230
302
|
description:
|
|
231
|
-
"Retain
|
|
303
|
+
"Retain retrieval-only facts, decisions, requirements, incidents or notes, or deliberately selected reference sources, not a behavioral preference or instruction for future sessions. Use instruction_policy_save for short always-on workspace rules and skill_save for applicable procedures and behavioral preferences; do not store them here as facts such as 'the user prefers concise replies', even if those destinations are unavailable or require review. First use knowledge_prepare_save when available (otherwise search published and needs_review Knowledge and browse collections). Skip unchanged duplicates; improve an existing entry when the subject is the same. Do not save routine approvals, acknowledgments, temporary instructions, screenshots or OCR merely because they occurred. State the reusable finding with enough context for a future task, preserve uncertainty and evidence, and place it in the relevant existing collections. Do this autonomously when useful for future work. Choose kind by content: source for retained original text; fact for a specific claim (the label is not verification); decision for a choice made and its reasoning; requirement for a need or constraint; incident for a problem with cause, fix and outcome when known; note for other useful context. Choose the closest kind without asking the user to classify it. A group is a collection about a customer, product, system or subject, not a finding type. Search published and needs_review views for an existing entry and relevant group before creating one, use groupIds to link entries across sources, and reuse an entry in multiple groups instead of copying it. Nest collections by setting a group entry's groupIds to its parent collections; keep the hierarchy shallow and useful, and never create circular membership. To create, omit entryId and pass expectedVersion 0; the returned entryId identifies the new entry. To correct or reorganize, pass an existing entryId and its current version. Source text and selected facts are independent entries, not mandatory duplicate stages. Evidence pins another entry's exact revision. When a user supplies or confirms a fact, retain the actual message with knowledge_retain_message and cite the returned revision; do not leave its provenance only in prose. Preserve existing evidence and relationships on corrections unless they are specifically no longer applicable; a contradictory original remains useful evidence of what changed. Use the same operationId only for an exact retry. Agent learning decides publication: published is available immediately; pending is saved for review and your task continues without an approval prompt. Do not turn Knowledge into instructions or Skills.",
|
|
232
304
|
inputSchema: KnowledgeEntrySaveRequest.omit({ scope: true }).shape,
|
|
233
305
|
},
|
|
234
|
-
(input) => run((context) => saveKnowledgeEntry(deps.db, context, input)),
|
|
306
|
+
(input) => run((context) => saveKnowledgeEntry(deps.db, context, input), "knowledge", "write"),
|
|
235
307
|
);
|
|
236
308
|
server.registerTool(
|
|
237
309
|
"knowledge_archive",
|
|
@@ -244,7 +316,8 @@ export function registerKnowledgeEntryTools(
|
|
|
244
316
|
expectedVersion: z.number().int().positive(),
|
|
245
317
|
},
|
|
246
318
|
},
|
|
247
|
-
(input) =>
|
|
319
|
+
(input) =>
|
|
320
|
+
run((context) => archiveKnowledgeEntry(deps.db, context, input), "knowledge", "write"),
|
|
248
321
|
);
|
|
249
322
|
server.registerTool(
|
|
250
323
|
"instruction_policy_get",
|
|
@@ -258,19 +331,20 @@ export function registerKnowledgeEntryTools(
|
|
|
258
331
|
server.registerTool(
|
|
259
332
|
"instruction_policy_save",
|
|
260
333
|
{
|
|
261
|
-
description:
|
|
262
|
-
"Change a concise standing workspace instruction through this task's Agent learning policy. Read the current policy first and submit its exact baseline. Use editMode=append by default for a new rule; it preserves the current content and adds one blank-line separator. Use edit with a localized oldText that occurs exactly once and newText to update or remove only that passage. Agents cannot replace the complete instruction; direct the user to the manual workspace-instruction editor for a whole-policy rewrite. Each supplied text and the resulting instruction are limited to 600 characters. Facts and incidents belong in knowledge_save and reusable procedures in skill_save. Review first saves an inactive revision and returns pending; continue the task without an approval question.",
|
|
334
|
+
description: `Change a concise standing workspace instruction through this task's Agent learning policy. Use for short always-on behavior such as 'Keep replies concise; expand when asked', within the intended workspace scope; active instructions enter applicable prompts without Knowledge retrieval. Read the current policy first and submit its exact baseline. Use editMode=append by default for a new rule; it preserves the current content and adds one blank-line separator. Use edit with a localized oldText that occurs exactly once and newText to update or remove only that passage. Agents cannot replace the complete instruction; direct the user to the manual workspace-instruction editor for a whole-policy rewrite. Each supplied text and the resulting instruction are limited to ${WORKSPACE_INSTRUCTION_POLICY_CONTENT_MAX_CHARS} characters, the same limit as the human editor. Facts and incidents belong in knowledge_save and reusable procedures or context-specific preferences in skill_save. Preserve personal scope rather than creating a workspace-wide rule. Review first saves an inactive revision and returns pending; continue the task without an approval question. Report the actual receipt; Knowledge is not a workaround for Off, pending review, unavailable scope or size limits.`,
|
|
263
335
|
inputSchema: AgentInstructionSaveRequest.shape,
|
|
264
336
|
},
|
|
265
|
-
(input) =>
|
|
337
|
+
(input) =>
|
|
338
|
+
run((context) => saveAgentInstruction(deps.db, context, input), "instruction", "write"),
|
|
266
339
|
);
|
|
267
340
|
server.registerTool(
|
|
268
341
|
"task_note_promote_knowledge",
|
|
269
342
|
{
|
|
270
343
|
description:
|
|
271
|
-
"Retain one active task note as durable Knowledge with its exact text and origin. The note stays temporary and unchanged; this creates one Knowledge entry in this task's scope, governed by the same learning policy. Pending review never pauses the task. Use knowledge_save for a selected or rewritten finding instead.",
|
|
344
|
+
"Retain one active task note as durable Knowledge with its exact text and origin, only for retrieval-only information. Do not promote behavior rules or preferences to Knowledge; use instruction_policy_save for short always-on workspace rules or skill_save for applicable procedures and preferences, under their own scope and learning policy. Omit entryId; the returned entryId identifies the new entry. The note stays temporary and unchanged; this creates one Knowledge entry in this task's scope, governed by the same learning policy. Pending review never pauses the task. Use knowledge_save for a selected or rewritten finding instead.",
|
|
272
345
|
inputSchema: KnowledgeTaskNotePromotionRequest.shape,
|
|
273
346
|
},
|
|
274
|
-
(input) =>
|
|
347
|
+
(input) =>
|
|
348
|
+
run((context) => promoteTaskNoteToKnowledge(deps.db, context, input), "knowledge", "write"),
|
|
275
349
|
);
|
|
276
350
|
}
|