@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
|
@@ -26,6 +26,15 @@ export type RegisterCompanyProfileAgentAdminToolsInput = {
|
|
|
26
26
|
db: Database;
|
|
27
27
|
attempt: CompanyProfileAgentAttempt;
|
|
28
28
|
authorize: () => Promise<void>;
|
|
29
|
+
/**
|
|
30
|
+
* The refusal for a caller that may not administer the organization
|
|
31
|
+
* profile even with the owner's authority (an agent started from a Site
|
|
32
|
+
* page), or null.
|
|
33
|
+
*/
|
|
34
|
+
refuseSiteAgent: () => Promise<{
|
|
35
|
+
isError: true;
|
|
36
|
+
content: Array<{ type: "text"; text: string }>;
|
|
37
|
+
} | null>;
|
|
29
38
|
json: JsonResult;
|
|
30
39
|
router?: Pick<ReturnType<typeof createCompanyProfileAgentAdminRouter>, "propose" | "confirm">;
|
|
31
40
|
};
|
|
@@ -137,6 +146,8 @@ export function registerCompanyProfileAgentAdminTools(
|
|
|
137
146
|
},
|
|
138
147
|
async (request) => {
|
|
139
148
|
await input.authorize();
|
|
149
|
+
const refused = await input.refuseSiteAgent();
|
|
150
|
+
if (refused) return refused;
|
|
140
151
|
const parsed = AgentAuthoredCompanyProfileContent.safeParse({
|
|
141
152
|
identity: request.identity,
|
|
142
153
|
mission: request.mission,
|
|
@@ -185,6 +196,8 @@ export function registerCompanyProfileAgentAdminTools(
|
|
|
185
196
|
},
|
|
186
197
|
async (request) => {
|
|
187
198
|
await input.authorize();
|
|
199
|
+
const refused = await input.refuseSiteAgent();
|
|
200
|
+
if (refused) return refused;
|
|
188
201
|
try {
|
|
189
202
|
return input.json(await router.confirm({ attempt: input.attempt, request }));
|
|
190
203
|
} catch (error) {
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import * as z from "zod/v4";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Publish the input side of a contract, validate it, and retain the exact call.
|
|
5
|
+
* MCP parsing must not insert defaults, trim text, or erase omitted fields before
|
|
6
|
+
* the application applies presence-sensitive inheritance and authority rules.
|
|
7
|
+
* A narrower projection may hide host-only fields; validation retains the full
|
|
8
|
+
* contract's preprocessors and cross-field checks.
|
|
9
|
+
*/
|
|
10
|
+
export function contractToolInput<T extends z.ZodObject>(
|
|
11
|
+
projection: T,
|
|
12
|
+
validation: z.ZodType = projection,
|
|
13
|
+
options: { jsonObjectFields?: readonly string[] } = {},
|
|
14
|
+
): z.ZodType<z.input<T>, z.input<T>> {
|
|
15
|
+
const inputProjection = projection.strict();
|
|
16
|
+
const jsonSchema = z.toJSONSchema(inputProjection, {
|
|
17
|
+
io: "input",
|
|
18
|
+
target: "draft-7",
|
|
19
|
+
});
|
|
20
|
+
assertDescribedToolInput(jsonSchema);
|
|
21
|
+
for (const field of options.jsonObjectFields ?? []) {
|
|
22
|
+
const property = (jsonSchema.properties as Record<string, { type?: string }>)[field];
|
|
23
|
+
if (property?.type !== "object") {
|
|
24
|
+
throw new Error(`JSON string normalization requires an object-only input: ${field}`);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
const normalizeObject = (value: unknown): unknown => {
|
|
28
|
+
if (typeof value !== "string") return value;
|
|
29
|
+
try {
|
|
30
|
+
const parsed: unknown = JSON.parse(value);
|
|
31
|
+
if (parsed !== null && typeof parsed === "object" && !Array.isArray(parsed)) return parsed;
|
|
32
|
+
} catch {
|
|
33
|
+
// The normal value-free contract error reports the expected object.
|
|
34
|
+
}
|
|
35
|
+
return value;
|
|
36
|
+
};
|
|
37
|
+
// MCP's SDK only publishes recognized object schemas. A passthrough object
|
|
38
|
+
// keeps the call intact, while metadata supplies the projected JSON Schema.
|
|
39
|
+
return z
|
|
40
|
+
.object(
|
|
41
|
+
Object.fromEntries(
|
|
42
|
+
(options.jsonObjectFields ?? []).map((field) => [
|
|
43
|
+
field,
|
|
44
|
+
z.preprocess(normalizeObject, z.unknown()).optional(),
|
|
45
|
+
]),
|
|
46
|
+
),
|
|
47
|
+
)
|
|
48
|
+
.catchall(z.unknown())
|
|
49
|
+
.superRefine((args, context) => {
|
|
50
|
+
const projected = inputProjection.safeParse(args);
|
|
51
|
+
const parsed = projected.success ? validation.safeParse(args) : projected;
|
|
52
|
+
if (!parsed.success) {
|
|
53
|
+
for (const issue of inputIssues(parsed.error.issues)) context.addIssue({ ...issue });
|
|
54
|
+
}
|
|
55
|
+
})
|
|
56
|
+
.meta(jsonSchema) as unknown as z.ZodType<z.input<T>, z.input<T>>;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/** Every named input and array element needs a schema. Dictionary values may be arbitrary JSON. */
|
|
60
|
+
export function assertDescribedToolInput(schema: unknown, tool = "tool"): void {
|
|
61
|
+
const activeRefs = new Set<string>();
|
|
62
|
+
function visit(value: unknown, path: string, allowOpaque = false): void {
|
|
63
|
+
if (value === false) return;
|
|
64
|
+
if (value === true && allowOpaque) return;
|
|
65
|
+
if (!value || typeof value !== "object" || Array.isArray(value)) {
|
|
66
|
+
throw new Error(`${tool}: invalid input schema at ${path}`);
|
|
67
|
+
}
|
|
68
|
+
const node = value as Record<string, unknown>;
|
|
69
|
+
const constraints = ["type", "$ref", "enum", "const", "anyOf", "oneOf", "allOf", "not"];
|
|
70
|
+
if (!constraints.some((key) => Object.hasOwn(node, key))) {
|
|
71
|
+
if (allowOpaque) return;
|
|
72
|
+
throw new Error(`${tool}: input ${path} has no declared structure; use its contract schema`);
|
|
73
|
+
}
|
|
74
|
+
if (typeof node.$ref === "string" && node.$ref.startsWith("#/") && !activeRefs.has(node.$ref)) {
|
|
75
|
+
const ref = node.$ref;
|
|
76
|
+
let target = schema;
|
|
77
|
+
for (const part of ref.slice(2).split("/")) {
|
|
78
|
+
target = (target as Record<string, unknown>)?.[
|
|
79
|
+
part.replace(/~1/g, "/").replace(/~0/g, "~")
|
|
80
|
+
];
|
|
81
|
+
}
|
|
82
|
+
activeRefs.add(ref);
|
|
83
|
+
visit(target, path, allowOpaque);
|
|
84
|
+
activeRefs.delete(ref);
|
|
85
|
+
}
|
|
86
|
+
for (const [key, child] of Object.entries((node.properties ?? {}) as Record<string, unknown>)) {
|
|
87
|
+
visit(child, `${path}.${key}`);
|
|
88
|
+
}
|
|
89
|
+
if (node.type === "array" && node.items === undefined && node.prefixItems === undefined) {
|
|
90
|
+
throw new Error(
|
|
91
|
+
`${tool}: input ${path}[] has no declared structure; use its contract schema`,
|
|
92
|
+
);
|
|
93
|
+
}
|
|
94
|
+
if (Array.isArray(node.items)) {
|
|
95
|
+
node.items.forEach((child, index) => visit(child, `${path}[${index}]`));
|
|
96
|
+
if (node.additionalItems !== undefined) visit(node.additionalItems, `${path}[...]`);
|
|
97
|
+
else if (typeof node.maxItems !== "number" || node.maxItems > node.items.length) {
|
|
98
|
+
throw new Error(
|
|
99
|
+
`${tool}: input ${path}[...] has no declared structure; use its contract schema`,
|
|
100
|
+
);
|
|
101
|
+
}
|
|
102
|
+
} else if (node.items !== undefined) visit(node.items, `${path}[]`);
|
|
103
|
+
if (Array.isArray(node.prefixItems)) {
|
|
104
|
+
node.prefixItems.forEach((child, index) => visit(child, `${path}[${index}]`));
|
|
105
|
+
if (
|
|
106
|
+
node.items === undefined &&
|
|
107
|
+
(typeof node.maxItems !== "number" || node.maxItems > node.prefixItems.length)
|
|
108
|
+
) {
|
|
109
|
+
throw new Error(
|
|
110
|
+
`${tool}: input ${path}[...] has no declared structure; use its contract schema`,
|
|
111
|
+
);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
// An unconstrained dictionary is intentional extension data. If its values
|
|
115
|
+
// declare a structure, check that structure's fields just like named inputs.
|
|
116
|
+
const dictionary = node.additionalProperties;
|
|
117
|
+
if (dictionary && typeof dictionary === "object" && Object.keys(dictionary).length > 0) {
|
|
118
|
+
visit(dictionary, `${path}.*`, true);
|
|
119
|
+
}
|
|
120
|
+
for (const [key, child] of Object.entries(
|
|
121
|
+
(node.patternProperties ?? {}) as Record<string, unknown>,
|
|
122
|
+
)) {
|
|
123
|
+
if (child && typeof child === "object" && Object.keys(child).length === 0) continue;
|
|
124
|
+
visit(child, `${path}.[${key}]`, true);
|
|
125
|
+
}
|
|
126
|
+
for (const keyword of ["anyOf", "oneOf", "allOf"]) {
|
|
127
|
+
for (const [index, child] of ((node[keyword] ?? []) as unknown[]).entries()) {
|
|
128
|
+
visit(child, `${path}.${keyword}[${index}]`, allowOpaque);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
visit(schema, "arguments");
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/** Only raw contract preflight errors, never downstream provider or storage exceptions. */
|
|
136
|
+
function inputIssues(issues: readonly z.core.$ZodIssue[]): z.core.$ZodIssueCustom[] {
|
|
137
|
+
const result: z.core.$ZodIssueCustom[] = [];
|
|
138
|
+
for (const issue of issues.slice(0, 8)) {
|
|
139
|
+
const path = [...issue.path];
|
|
140
|
+
let message: string;
|
|
141
|
+
if (issue.code === "invalid_type") message = `expected ${issue.expected}`;
|
|
142
|
+
else if (issue.code === "invalid_value")
|
|
143
|
+
message = `allowed values: ${JSON.stringify(issue.values)}`;
|
|
144
|
+
else if (issue.code === "invalid_union" && issue.errors.length === 0 && issue.discriminator) {
|
|
145
|
+
if (path.at(-1) !== issue.discriminator) path.push(issue.discriminator);
|
|
146
|
+
message = `allowed values: ${JSON.stringify("options" in issue ? issue.options : [])}`;
|
|
147
|
+
} else if (issue.code === "invalid_union") {
|
|
148
|
+
// These are alternatives, never cumulative requirements.
|
|
149
|
+
message = "does not match any of the declared alternative input formats";
|
|
150
|
+
} else if (issue.code === "unrecognized_keys")
|
|
151
|
+
message = `fields not declared by this tool: ${JSON.stringify(issue.keys)}`;
|
|
152
|
+
else if (issue.code === "too_small") message = `must meet minimum ${issue.minimum}`;
|
|
153
|
+
else if (issue.code === "too_big") message = `must meet maximum ${issue.maximum}`;
|
|
154
|
+
else message = issue.message;
|
|
155
|
+
result.push({ code: "custom", path, message });
|
|
156
|
+
}
|
|
157
|
+
if (issues.length > 8) {
|
|
158
|
+
result.push({
|
|
159
|
+
code: "custom",
|
|
160
|
+
path: [],
|
|
161
|
+
message: `${issues.length - 8} additional input problems`,
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
return result;
|
|
165
|
+
}
|
package/src/mcp/documents.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { searchKnowledgeEntries } from "@opengeni/core";
|
|
2
|
+
import type { Settings } from "@opengeni/config";
|
|
2
3
|
import { KnowledgeEntryListRequest } from "@opengeni/contracts";
|
|
3
4
|
import type { DocumentServices } from "@opengeni/documents";
|
|
4
5
|
import {
|
|
@@ -17,7 +18,7 @@ export function buildDocumentsMcpServer(
|
|
|
17
18
|
accountId: string,
|
|
18
19
|
workspaceId: string,
|
|
19
20
|
documentServices: DocumentServices,
|
|
20
|
-
options: { knowledge: KnowledgeContext },
|
|
21
|
+
options: { knowledge: KnowledgeContext; settings?: Settings },
|
|
21
22
|
): McpServer {
|
|
22
23
|
const context = options.knowledge;
|
|
23
24
|
if (context.accountId !== accountId || context.workspaceId !== workspaceId)
|
|
@@ -39,7 +40,13 @@ export function buildDocumentsMcpServer(
|
|
|
39
40
|
{
|
|
40
41
|
type: "text",
|
|
41
42
|
text: JSON.stringify(
|
|
42
|
-
await searchKnowledgeEntries(
|
|
43
|
+
await searchKnowledgeEntries(
|
|
44
|
+
db,
|
|
45
|
+
context,
|
|
46
|
+
input,
|
|
47
|
+
() => documentServices.embedder,
|
|
48
|
+
options.settings,
|
|
49
|
+
),
|
|
43
50
|
),
|
|
44
51
|
},
|
|
45
52
|
],
|
|
@@ -19,6 +19,7 @@ import * as z from "zod/v4";
|
|
|
19
19
|
import type { ApiRouteDeps } from "@opengeni/core";
|
|
20
20
|
import { editableArtifactActorForGrant } from "../routes/editable-artifacts";
|
|
21
21
|
import { EditableArtifactQueryRequestSchema } from "./editable-artifact-query-schema";
|
|
22
|
+
import { siteAgentEditableArtifactRefusal } from "./site-agent-clamp-tools";
|
|
22
23
|
|
|
23
24
|
const ArtifactId = z
|
|
24
25
|
.string()
|
|
@@ -32,12 +33,13 @@ const ArtifactCommand = z
|
|
|
32
33
|
.object({ kind: z.string().min(1).max(128) })
|
|
33
34
|
.passthrough()
|
|
34
35
|
.describe(
|
|
35
|
-
"One canonical modality command. Use the exact
|
|
36
|
+
"One canonical modality command. Use the exact Opengeni document, spreadsheet, or presentation skill command contract; never send local-file facade calls here.",
|
|
36
37
|
);
|
|
37
38
|
|
|
38
39
|
const ArtifactMetadata = z
|
|
39
40
|
.object({
|
|
40
41
|
id: ArtifactId,
|
|
42
|
+
artifactReference: z.string(),
|
|
41
43
|
modality: Modality,
|
|
42
44
|
title: z.string(),
|
|
43
45
|
lifecycle: z.enum(["active", "archived"]),
|
|
@@ -100,6 +102,13 @@ export function registerEditableArtifactAgentTools(
|
|
|
100
102
|
await input.authorize();
|
|
101
103
|
return jsonResult(await operation());
|
|
102
104
|
};
|
|
105
|
+
/** Writes: an agent started from a Site page edits only what the Site declared. */
|
|
106
|
+
const executeWrite = async <T>(operation: () => Promise<T>, artifactId?: string) => {
|
|
107
|
+
await input.authorize();
|
|
108
|
+
const refused = await siteAgentEditableArtifactRefusal(input.deps, input.grant, artifactId);
|
|
109
|
+
if (refused) return refused;
|
|
110
|
+
return jsonResult(await operation());
|
|
111
|
+
};
|
|
103
112
|
|
|
104
113
|
input.server.registerTool(
|
|
105
114
|
"editable_artifact_list",
|
|
@@ -135,7 +144,7 @@ export function registerEditableArtifactAgentTools(
|
|
|
135
144
|
},
|
|
136
145
|
async ({ modality, title }, extra) => {
|
|
137
146
|
const invocation = context("editable_artifact_create", extra);
|
|
138
|
-
return await
|
|
147
|
+
return await executeWrite(
|
|
139
148
|
async () =>
|
|
140
149
|
await application().create({
|
|
141
150
|
...invocation,
|
|
@@ -164,7 +173,7 @@ export function registerEditableArtifactAgentTools(
|
|
|
164
173
|
},
|
|
165
174
|
async ({ fileId, modality, title }, extra) => {
|
|
166
175
|
const invocation = context("editable_artifact_import", extra);
|
|
167
|
-
return await
|
|
176
|
+
return await executeWrite(
|
|
168
177
|
async () =>
|
|
169
178
|
await application().import({
|
|
170
179
|
...invocation,
|
|
@@ -203,13 +212,17 @@ export function registerEditableArtifactAgentTools(
|
|
|
203
212
|
{
|
|
204
213
|
title: "Inspect editable artifact",
|
|
205
214
|
description:
|
|
206
|
-
"Query the artifact's current canonical head through the same native kernel used by the browser. Use bounded modality queries; results are current, not a sandbox-file snapshot.",
|
|
215
|
+
"Query the artifact's current canonical head through the same native kernel used by the browser. Use bounded modality queries; results are current, not a sandbox-file snapshot. Native document queries return a server-issued inspectionReceiptId; use a post-edit body inspection receipt for declared report completion. If the document changes during inspection, retry against its current head.",
|
|
207
216
|
inputSchema: {
|
|
208
217
|
artifactId: ArtifactId,
|
|
209
218
|
modality: Modality,
|
|
210
219
|
request: EditableArtifactQueryRequestSchema,
|
|
211
220
|
},
|
|
212
|
-
outputSchema: {
|
|
221
|
+
outputSchema: {
|
|
222
|
+
artifact: ArtifactMetadata,
|
|
223
|
+
projection: z.unknown(),
|
|
224
|
+
inspectionReceiptId: z.string().uuid().optional(),
|
|
225
|
+
},
|
|
213
226
|
annotations: readOnlyAnnotations("Inspect editable artifact"),
|
|
214
227
|
},
|
|
215
228
|
async ({ artifactId, modality, request }, extra) =>
|
|
@@ -244,7 +257,7 @@ export function registerEditableArtifactAgentTools(
|
|
|
244
257
|
},
|
|
245
258
|
async ({ artifactId, modality, expectedHeadSequence, expectedStateHash, commands }, extra) => {
|
|
246
259
|
const invocation = context("editable_artifact_apply", extra);
|
|
247
|
-
return await
|
|
260
|
+
return await executeWrite(
|
|
248
261
|
async () =>
|
|
249
262
|
await application().apply({
|
|
250
263
|
...invocation,
|
|
@@ -254,6 +267,7 @@ export function registerEditableArtifactAgentTools(
|
|
|
254
267
|
expectedStateHash,
|
|
255
268
|
batch: { modality, commands } as EditableArtifactAgentCommandBatch,
|
|
256
269
|
}),
|
|
270
|
+
artifactId,
|
|
257
271
|
);
|
|
258
272
|
},
|
|
259
273
|
);
|
|
@@ -262,11 +276,12 @@ export function registerEditableArtifactAgentTools(
|
|
|
262
276
|
"editable_artifact_export",
|
|
263
277
|
{
|
|
264
278
|
title: "Export editable artifact",
|
|
265
|
-
description:
|
|
266
|
-
"Pin the current artifact head and start an immutable Office/PDF/image export. This does not write into the sandbox. Poll opengeni__editable_artifact_export_status for the resulting workspace file ID.",
|
|
279
|
+
description: `Pin the current artifact head and start an immutable file export. ${input.deps.editableArtifactAgent?.describeExportFormats?.() ?? "No exporter capability description is available; query this deployment before promising a format."} This does not write into the sandbox. Poll opengeni__editable_artifact_export_status for the resulting workspace file ID.`,
|
|
267
280
|
inputSchema: {
|
|
268
281
|
artifactId: ArtifactId,
|
|
269
|
-
format: Format
|
|
282
|
+
format: Format.describe(
|
|
283
|
+
"Target file format. Only the formats listed in this tool's description are served; any other combination is refused with unsupported_format.",
|
|
284
|
+
),
|
|
270
285
|
options: JsonRecord.optional(),
|
|
271
286
|
},
|
|
272
287
|
outputSchema: {
|
|
@@ -281,7 +296,8 @@ export function registerEditableArtifactAgentTools(
|
|
|
281
296
|
},
|
|
282
297
|
async ({ artifactId, format, options }, extra) => {
|
|
283
298
|
const invocation = context("editable_artifact_export", extra);
|
|
284
|
-
|
|
299
|
+
// HTTP refuses the matching materialization for the same agent.
|
|
300
|
+
return await executeWrite(
|
|
285
301
|
async () =>
|
|
286
302
|
await application().startExport({
|
|
287
303
|
...invocation,
|
|
@@ -291,6 +307,7 @@ export function registerEditableArtifactAgentTools(
|
|
|
291
307
|
...(options ? { options } : {}),
|
|
292
308
|
signal: extra.signal,
|
|
293
309
|
}),
|
|
310
|
+
artifactId,
|
|
294
311
|
);
|
|
295
312
|
},
|
|
296
313
|
);
|
|
@@ -319,7 +336,7 @@ export function registerEditableArtifactAgentTools(
|
|
|
319
336
|
annotations: mutationAnnotations("Get artifact export", { idempotent: true }),
|
|
320
337
|
},
|
|
321
338
|
async ({ artifactId, versionId, jobId }, extra) =>
|
|
322
|
-
await
|
|
339
|
+
await executeWrite(
|
|
323
340
|
async () =>
|
|
324
341
|
await application().exportStatus({
|
|
325
342
|
...context("editable_artifact_export_status", extra),
|
|
@@ -328,6 +345,7 @@ export function registerEditableArtifactAgentTools(
|
|
|
328
345
|
jobId,
|
|
329
346
|
signal: extra.signal,
|
|
330
347
|
}),
|
|
348
|
+
artifactId,
|
|
331
349
|
),
|
|
332
350
|
);
|
|
333
351
|
}
|
package/src/mcp/files.ts
CHANGED
|
@@ -9,6 +9,7 @@ import {
|
|
|
9
9
|
} from "@opengeni/core";
|
|
10
10
|
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
11
11
|
import * as z from "zod/v4";
|
|
12
|
+
import { userContentSignedGetUrlOptions } from "../http/user-content";
|
|
12
13
|
|
|
13
14
|
/** Dedicated file MCP surface. The broad `opengeni` server never registers it. */
|
|
14
15
|
export function buildFilesMcpServer(
|
|
@@ -63,7 +64,10 @@ export function buildFilesMcpServer(
|
|
|
63
64
|
if (file.status !== "ready") {
|
|
64
65
|
throw new Error(`file is ${file.status}`);
|
|
65
66
|
}
|
|
66
|
-
const signed = await deps.objectStorage.createGetUrl({
|
|
67
|
+
const signed = await deps.objectStorage.createGetUrl({
|
|
68
|
+
key: file.objectKey,
|
|
69
|
+
...userContentSignedGetUrlOptions(file.contentType, file.filename),
|
|
70
|
+
});
|
|
67
71
|
// Principal-facing signed URL issuance is a metadata-only audit
|
|
68
72
|
// fact, awaited before the URL leaves the platform. Never the URL/key.
|
|
69
73
|
await recordAuditEvent(deps.db, {
|