@opengeni/api-router 3.0.1 → 3.0.2-canary.38894290271001
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/access-grant-rls.d.ts +8 -1
- package/dist/admission-trace.d.ts +8 -0
- package/dist/app.d.ts +50 -3
- package/dist/app.js +10 -1
- package/dist/artifact-catalog-cursor.d.ts +1 -0
- package/dist/attached-browser-viewer.d.ts +11 -0
- package/dist/auth/managed-auth-attempt-context.d.ts +2 -0
- package/dist/auth/managed-auth-rate-limits.d.ts +167 -0
- package/dist/auth/managed-auth-session-adapter.d.ts +9 -1
- package/dist/auth/managed-auth.d.ts +72 -5
- package/dist/auth/managed-sign-in-notifications.d.ts +4 -0
- package/dist/auth/new-signups-gate.d.ts +23 -0
- package/dist/auth/signup-funnel-metrics.d.ts +44 -0
- package/dist/azure-live.d.ts +28 -0
- package/dist/browser-action-fences.d.ts +13 -0
- package/dist/browser-controller-authority.d.ts +1 -61
- package/dist/browser-ephemeral.d.ts +5 -0
- package/dist/browser-lost-runtime-end.d.ts +24 -0
- package/dist/browser-state-authority.d.ts +1 -27
- package/dist/{chunk-AJ62T5QN.js → chunk-GBUJ2DYZ.js} +80507 -39878
- package/dist/chunk-GBUJ2DYZ.js.map +1 -0
- package/dist/chunk-OGQDXVXY.js +18 -0
- package/dist/chunk-OGQDXVXY.js.map +1 -0
- package/dist/claude-default-models.d.ts +19 -0
- package/dist/claude-subscription-core.d.ts +50 -0
- package/dist/claude-subscription-oauth.d.ts +36 -0
- package/dist/claude-subscription-profile.d.ts +9 -0
- package/dist/claude-subscription-usage.d.ts +6 -0
- package/dist/claude-workspace-connection.d.ts +15 -0
- package/dist/codemode.d.ts +40 -5
- package/dist/codex-realtime.d.ts +29 -3
- package/dist/codex-session-pointers.d.ts +19 -0
- package/dist/connection-ownership.d.ts +6 -3
- package/dist/controller-data-plane.d.ts +16 -0
- package/dist/credit-promotion-snapshot.d.ts +6 -0
- package/dist/editable-artifact-source-session.d.ts +3 -0
- package/dist/editable-artifact-websocket.d.ts +5 -3
- package/dist/fatal-process-boundary.d.ts +9 -1
- package/dist/github-access.d.ts +7 -1
- package/dist/github-browser-flow.d.ts +1 -1
- package/dist/http/acting-person.d.ts +36 -0
- package/dist/http/api-contract-compat.d.ts +19 -0
- package/dist/http/api-error.d.ts +50 -1
- package/dist/http/auth.d.ts +8 -1
- package/dist/http/cors.d.ts +12 -0
- package/dist/http/deprecation.d.ts +42 -0
- package/dist/http/keyed-admission.d.ts +12 -0
- package/dist/http/local-browser-boundary.d.ts +72 -0
- package/dist/http/metrics-listener.d.ts +22 -0
- package/dist/http/path-identifier.d.ts +17 -0
- package/dist/http/registered-route-label.d.ts +16 -0
- package/dist/http/rejection-telemetry.d.ts +34 -0
- package/dist/http/request-body.d.ts +27 -0
- package/dist/http/request-source.d.ts +41 -3
- package/dist/http/sse.d.ts +12 -1
- package/dist/http/unmatched-route.d.ts +18 -0
- package/dist/http/user-content.d.ts +36 -0
- package/dist/http/variable-sets-removed.d.ts +41 -0
- package/dist/http/websocket-upgrade-dispatch.d.ts +18 -0
- package/dist/index.js +1279 -108
- package/dist/index.js.map +1 -1
- package/dist/integration-connect-metrics.d.ts +35 -0
- package/dist/integration-endpoint-test.d.ts +20 -0
- package/dist/integrations/api-integrations.d.ts +2 -2
- package/dist/integrations/atlassian.d.ts +8 -3
- package/dist/integrations/fiken.d.ts +3 -1
- package/dist/integrations/github-lens-connect.d.ts +37 -66
- package/dist/integrations/google-drive.d.ts +2 -0
- package/dist/integrations/integration-commit-authority.d.ts +13 -0
- package/dist/integrations/marketplace-plugin.d.ts +43 -43
- package/dist/integrations/oauth-client.d.ts +171 -12
- package/dist/integrations/oauth-profiles.d.ts +42 -13
- package/dist/integrations/onepassword-vault-provider.d.ts +9 -0
- package/dist/integrations/slack-bot.d.ts +285 -7
- package/dist/integrations/slack-file-upload-flow.d.ts +62 -0
- package/dist/integrations/slack-interactions.d.ts +89 -10
- package/dist/integrations/slack-mrkdwn.d.ts +41 -0
- package/dist/integrations/slack-routing.d.ts +1 -1
- package/dist/integrations/slack-session-defaults.d.ts +58 -0
- package/dist/integrations/slack-task-file-upload.d.ts +36 -0
- package/dist/integrations/slack-tool-review.d.ts +5 -0
- package/dist/interaction-agent-access.d.ts +13 -8
- package/dist/interaction-agent-version.d.ts +21 -0
- package/dist/interaction-holder-heartbeat.d.ts +5 -0
- package/dist/interaction-metrics.d.ts +27 -2
- package/dist/interaction-route-stages.d.ts +25 -0
- package/dist/interaction-secrets-vault.d.ts +20 -0
- package/dist/interaction-secrets.d.ts +103 -0
- package/dist/mcp/action-catalog-types.d.ts +14 -0
- package/dist/mcp/action-catalog.gen.d.ts +2 -0
- package/dist/mcp/action-descriptions.d.ts +4 -0
- package/dist/mcp/action-schema-imports.gen.d.ts +1 -0
- package/dist/mcp/capability-account-readiness.d.ts +7 -0
- package/dist/mcp/child-read-evidence.d.ts +9 -0
- package/dist/mcp/company-profile-agent-admin.d.ts +12 -0
- package/dist/mcp/contract-input.d.ts +13 -0
- package/dist/mcp/documents.d.ts +2 -0
- package/dist/mcp/first-party-tool-permissions.d.ts +3 -606
- package/dist/mcp/notification-tools.d.ts +26 -0
- package/dist/mcp/orchestration-failure-diagnostic.d.ts +43 -0
- package/dist/mcp/scheduled-task-input.d.ts +1309 -0
- package/dist/mcp/scheduled-task-view.d.ts +217 -3
- package/dist/mcp/secret-tools.d.ts +14 -0
- package/dist/mcp/server.d.ts +108 -5
- package/dist/mcp/session-admin-access-tools.d.ts +33 -0
- package/dist/mcp/session-event-errors.d.ts +28 -0
- package/dist/mcp/session-event-view.d.ts +62 -0
- package/dist/mcp/session-view.d.ts +15 -0
- package/dist/mcp/session-wait.d.ts +18 -0
- package/dist/mcp/site-agent-clamp-tools.d.ts +38 -0
- package/dist/mcp/site-data-tools.d.ts +22 -0
- package/dist/mcp/site-publication-tools.d.ts +19 -0
- package/dist/mcp/site-sql-tools.d.ts +27 -0
- package/dist/mcp-oauth.d.ts +37 -4
- package/dist/model-calls/chat-completions.d.ts +87 -0
- package/dist/model-calls/pending-usage-settlements.d.ts +57 -0
- package/dist/model-calls/service.d.ts +36 -0
- package/dist/model-catalog.d.ts +9 -3
- package/dist/native-push-dispatch.d.ts +69 -0
- package/dist/observability.d.ts +3 -1
- package/dist/organization-mcp.d.ts +82 -0
- package/dist/prepared-mcp-actor.d.ts +77 -0
- package/dist/prepared-mcp-permissions.d.ts +8 -0
- package/dist/routes/analytics-consent.d.ts +26 -0
- package/dist/routes/api-integrations.d.ts +11 -0
- package/dist/routes/api-keys.d.ts +7 -7
- package/dist/routes/automations.d.ts +2 -0
- package/dist/routes/billing.d.ts +59 -0
- package/dist/routes/browser-sessions.d.ts +65 -2
- package/dist/routes/chat-completions.d.ts +11 -0
- package/dist/routes/claude-core-usage.d.ts +20 -0
- package/dist/routes/claude-subscription-accounts.d.ts +3 -0
- package/dist/routes/claude-subscription-oauth.d.ts +3 -0
- package/dist/routes/client-errors.d.ts +182 -0
- package/dist/routes/codex-core.d.ts +401 -0
- package/dist/routes/codex.d.ts +64 -2
- package/dist/routes/computer-sessions.d.ts +6 -1
- package/dist/routes/desktop-distribution.d.ts +32 -0
- package/dist/routes/github-browser-fonts.gen.d.ts +2 -0
- package/dist/routes/github-browser-pages.d.ts +27 -0
- package/dist/routes/inbox.d.ts +13 -0
- package/dist/routes/insights-response-cache.d.ts +10 -0
- package/dist/routes/insights-usage.d.ts +12 -0
- package/dist/routes/insights.d.ts +28 -0
- package/dist/routes/interaction-placement-message.d.ts +7 -0
- package/dist/routes/managed-sign-in-methods.d.ts +6 -0
- package/dist/routes/model-account-choice.d.ts +13 -0
- package/dist/routes/model-account-settings.d.ts +19 -0
- package/dist/routes/native-app-auth.d.ts +12 -0
- package/dist/routes/organization-integration-policy.d.ts +8 -0
- package/dist/routes/organization-integrations.d.ts +6 -0
- package/dist/routes/organization-mcp-connections.d.ts +3 -0
- package/dist/routes/organization-model-defaults.d.ts +9 -0
- package/dist/routes/organization-service-accounts.d.ts +3 -0
- package/dist/routes/personal-api-keys.d.ts +3 -0
- package/dist/routes/session-admin-access.d.ts +3 -0
- package/dist/routes/session-artifact-associations.d.ts +4 -0
- package/dist/routes/session-history-imports.d.ts +20 -0
- package/dist/routes/sessions.d.ts +38 -2
- package/dist/routes/site-data.d.ts +18 -0
- package/dist/routes/site-publishing.d.ts +5 -0
- package/dist/routes/site-runtime.d.ts +31 -0
- package/dist/routes/site-sql.d.ts +16 -0
- package/dist/routes/slack-bot-access.d.ts +3 -0
- package/dist/routes/subscription-account-pools.d.ts +21 -0
- package/dist/routes/subscription-core-http.d.ts +5 -0
- package/dist/routes/subscription-pool-access.d.ts +37 -0
- package/dist/routes/subscription-pool-core.d.ts +153 -0
- package/dist/routes/supergrok.d.ts +6 -6
- package/dist/routes/usage-allowances.d.ts +12 -0
- package/dist/routes/variable-sets-removed.d.ts +2 -0
- package/dist/routes/vault-providers.d.ts +34 -0
- package/dist/routes/vaults.d.ts +3 -0
- package/dist/routes/workspace-integrations.d.ts +35 -0
- package/dist/routes/workspace-model-providers.d.ts +4 -0
- package/dist/routes/workspaces.d.ts +11 -2
- package/dist/sandbox/agent-update.d.ts +64 -0
- package/dist/sandbox/auth-callout.d.ts +8 -0
- package/dist/sandbox/channel-a.d.ts +15 -1
- package/dist/sandbox/enrollment.d.ts +26 -4
- package/dist/sandbox/machine-audience.d.ts +29 -0
- package/dist/sandbox/machines.d.ts +15 -2
- package/dist/sandbox/metrics-ingestion.d.ts +6 -2
- package/dist/sandbox/screen-control.d.ts +85 -0
- package/dist/sandbox/viewer.d.ts +5 -1
- package/dist/sandbox-file-artifacts.d.ts +17 -1
- package/dist/scheduled-task-blockers.d.ts +39 -0
- package/dist/scheduled-task-deletion.d.ts +3 -4
- package/dist/scheduled-task-lifecycle.d.ts +14 -0
- package/dist/secret-answers.d.ts +40 -0
- package/dist/session-create-observability.d.ts +5 -0
- package/dist/session-event-view-36GO3IL7.js +528 -0
- package/dist/session-event-view-36GO3IL7.js.map +1 -0
- package/dist/signed-state-secret.d.ts +18 -0
- package/dist/site-agent-guard.d.ts +53 -0
- package/dist/site-data/operations.d.ts +103 -0
- package/dist/site-data/service.d.ts +203 -0
- package/dist/site-frame-guard.d.ts +32 -0
- package/dist/site-publishing/agent-data-tools.d.ts +84 -0
- package/dist/site-publishing/agent-model.d.ts +58 -0
- package/dist/site-publishing/agent-session.d.ts +16 -0
- package/dist/site-publishing/content-scanner.d.ts +31 -0
- package/dist/site-publishing/edge-sync.d.ts +48 -0
- package/dist/site-publishing/gateway-signature.d.ts +56 -0
- package/dist/site-publishing/limits.d.ts +63 -0
- package/dist/site-publishing/page-tool-authority.d.ts +30 -0
- package/dist/site-publishing/platform-usage.d.ts +113 -0
- package/dist/site-publishing/platform.d.ts +21 -0
- package/dist/site-publishing/readiness.d.ts +62 -0
- package/dist/site-publishing/runtime.d.ts +179 -0
- package/dist/site-publishing/service.d.ts +264 -0
- package/dist/site-publishing/session-events.d.ts +22 -0
- package/dist/site-publishing/session-views.d.ts +36 -0
- package/dist/site-publishing/viewer.d.ts +40 -0
- package/dist/site-session-origin.d.ts +31 -6
- package/dist/site-sql/format.d.ts +47 -0
- package/dist/site-sql/gateway.d.ts +50 -0
- package/dist/site-sql/service.d.ts +213 -0
- package/dist/temporal-schedule-sync.d.ts +26 -0
- package/dist/transcription/billing-refusal.d.ts +8 -0
- package/dist/transcription/normalize.d.ts +23 -0
- package/dist/transcription/providers/azure-mai.d.ts +12 -0
- package/dist/transcription/providers/azure-openai.d.ts +4 -0
- package/dist/transcription/providers/openai.d.ts +16 -0
- package/dist/transcription/providers/subscription-core.d.ts +39 -0
- package/dist/transcription/service.d.ts +10 -1
- package/dist/transcription/wav-duration.d.ts +8 -0
- package/dist/workspace-tool-gateway-attestations.d.ts +37 -0
- package/dist/workspace-tool-gateway-observability.d.ts +16 -0
- package/dist/workspace-tool-gateway-secrets.d.ts +27 -0
- package/dist/workspace-tool-gateway.d.ts +102 -6
- package/dist/workspace-tool-target-fence.d.ts +116 -0
- package/dist/workspace-tool-target.d.ts +225 -0
- package/dist/workspace-webhook-dispatch.d.ts +26 -0
- package/dist/xai-subscription-core.d.ts +60 -0
- package/package.json +25 -20
- package/src/access-grant-rls.ts +64 -14
- package/src/admission-trace.ts +14 -0
- package/src/app.ts +1684 -252
- package/src/artifact-catalog-cursor.ts +1 -0
- package/src/attached-browser-viewer.ts +26 -0
- package/src/auth/managed-auth-attempt-context.ts +9 -0
- package/src/auth/managed-auth-rate-limits.ts +252 -0
- package/src/auth/managed-auth-session-adapter.ts +64 -29
- package/src/auth/managed-auth.ts +303 -35
- package/src/auth/managed-email.ts +18 -1
- package/src/auth/managed-sign-in-notifications.ts +81 -0
- package/src/auth/new-signups-gate.ts +49 -0
- package/src/auth/organization-user-setup.ts +3 -3
- package/src/auth/signup-funnel-metrics.ts +164 -0
- package/src/azure-live.ts +103 -0
- package/src/browser-action-fences.ts +45 -0
- package/src/browser-controller-authority.ts +1 -186
- package/src/browser-ephemeral.ts +39 -0
- package/src/browser-lost-runtime-end.ts +71 -0
- package/src/browser-state-authority.ts +1 -236
- package/src/claude-default-models.ts +37 -0
- package/src/claude-subscription-core.ts +154 -0
- package/src/claude-subscription-oauth.ts +352 -0
- package/src/claude-subscription-profile.ts +73 -0
- package/src/claude-subscription-usage.ts +51 -0
- package/src/claude-workspace-connection.ts +82 -0
- package/src/codemode.ts +236 -39
- package/src/codex-realtime.ts +181 -53
- package/src/codex-session-pointers.ts +80 -0
- package/src/company-brain-okf.ts +1 -1
- package/src/connected-machine-computer-access.ts +2 -1
- package/src/connection-ownership.ts +19 -13
- package/src/controller-data-plane.ts +34 -0
- package/src/credit-promotion-snapshot.ts +36 -0
- package/src/editable-artifact-production.ts +10 -0
- package/src/editable-artifact-source-session.ts +123 -0
- package/src/editable-artifact-websocket.ts +16 -3
- package/src/fatal-process-boundary.ts +67 -3
- package/src/gateway-realtime.ts +12 -8
- package/src/github-access.ts +31 -5
- package/src/github-browser-flow.ts +1 -1
- package/src/http/acting-person.ts +105 -0
- package/src/http/api-contract-compat.ts +49 -0
- package/src/http/api-error.ts +210 -2
- package/src/http/auth.ts +68 -4
- package/src/http/cors.ts +37 -5
- package/src/http/deprecation.ts +118 -0
- package/src/http/keyed-admission.ts +29 -0
- package/src/http/local-browser-boundary.ts +343 -0
- package/src/http/metrics-listener.ts +57 -0
- package/src/http/path-identifier.ts +54 -0
- package/src/http/registered-route-label.ts +34 -0
- package/src/http/rejection-telemetry.ts +120 -0
- package/src/http/request-body.ts +127 -0
- package/src/http/request-source.ts +154 -13
- package/src/http/sse.ts +88 -28
- package/src/http/unmatched-route.ts +60 -0
- package/src/http/user-content.ts +158 -0
- package/src/http/variable-sets-removed.ts +122 -0
- package/src/http/websocket-upgrade-dispatch.ts +29 -0
- package/src/index.ts +107 -57
- package/src/integration-connect-metrics.ts +228 -0
- package/src/integration-endpoint-test.ts +291 -0
- package/src/integrations/api-integrations.ts +81 -7
- package/src/integrations/atlassian.ts +202 -83
- package/src/integrations/fiken.ts +66 -38
- package/src/integrations/github-app-connect.ts +64 -18
- package/src/integrations/github-lens-connect.ts +8 -29
- package/src/integrations/google-drive.ts +448 -152
- package/src/integrations/integration-commit-authority.ts +69 -0
- package/src/integrations/marketplace-plugin.ts +1 -1
- package/src/integrations/oauth-client.ts +733 -193
- package/src/integrations/oauth-profiles.ts +116 -45
- package/src/integrations/onepassword-vault-provider.ts +16 -0
- package/src/integrations/personal-github-repositories.ts +1 -1
- package/src/integrations/personal-github.ts +61 -35
- package/src/integrations/provider-oauth.ts +67 -85
- package/src/integrations/slack-app-home.ts +5 -5
- package/src/integrations/slack-bot.ts +893 -201
- package/src/integrations/slack-file-upload-flow.ts +147 -0
- package/src/integrations/slack-install.ts +7 -7
- package/src/integrations/slack-interactions.ts +1589 -299
- package/src/integrations/slack-mrkdwn.ts +193 -0
- package/src/integrations/slack-routing.ts +2 -2
- package/src/integrations/slack-session-defaults.ts +224 -0
- package/src/integrations/slack-task-file-upload.ts +323 -0
- package/src/integrations/slack-tool-review.ts +65 -0
- package/src/integrations/social-oauth.ts +90 -58
- package/src/interaction-agent-access.ts +40 -20
- package/src/interaction-agent-version.ts +85 -0
- package/src/interaction-holder-heartbeat.ts +24 -8
- package/src/interaction-metrics.ts +164 -2
- package/src/interaction-route-stages.ts +94 -0
- package/src/interaction-secrets-vault.ts +213 -0
- package/src/interaction-secrets.ts +426 -0
- package/src/mcp/action-catalog-types.ts +14 -0
- package/src/mcp/action-catalog.gen.ts +8014 -0
- package/src/mcp/action-descriptions.ts +299 -0
- package/src/mcp/action-schema-imports.gen.ts +304 -0
- package/src/mcp/capability-account-readiness.ts +17 -0
- package/src/mcp/child-read-evidence.ts +19 -0
- package/src/mcp/company-profile-agent-admin.ts +13 -0
- package/src/mcp/contract-input.ts +165 -0
- package/src/mcp/documents.ts +9 -2
- package/src/mcp/editable-artifacts.ts +29 -11
- package/src/mcp/files.ts +5 -1
- package/src/mcp/first-party-tool-permissions.ts +7 -285
- package/src/mcp/knowledge-entries.ts +108 -34
- package/src/mcp/notification-tools.ts +480 -0
- package/src/mcp/orchestration-failure-diagnostic.ts +43 -0
- package/src/mcp/scheduled-task-input.ts +89 -0
- package/src/mcp/scheduled-task-view.ts +63 -3
- package/src/mcp/secret-tools.ts +185 -0
- package/src/mcp/server.ts +2213 -1116
- package/src/mcp/session-admin-access-tools.ts +163 -0
- package/src/mcp/session-event-errors.ts +123 -0
- package/src/mcp/session-event-view.ts +395 -13
- package/src/mcp/session-view.ts +3 -0
- package/src/mcp/session-wait.ts +67 -7
- package/src/mcp/site-agent-clamp-tools.ts +140 -0
- package/src/mcp/site-data-tools.ts +339 -0
- package/src/mcp/site-publication-tools.ts +201 -0
- package/src/mcp/site-sql-tools.ts +427 -0
- package/src/mcp-oauth.ts +635 -45
- package/src/model-calls/chat-completions.ts +352 -0
- package/src/model-calls/pending-usage-settlements.ts +125 -0
- package/src/model-calls/service.ts +694 -0
- package/src/model-catalog.ts +68 -17
- package/src/native-push-dispatch.ts +457 -0
- package/src/observability.ts +15 -1
- package/src/organization-mcp.ts +485 -0
- package/src/prepared-mcp-actor.ts +154 -0
- package/src/prepared-mcp-permissions.ts +38 -0
- package/src/routes/analytics-consent.ts +123 -0
- package/src/routes/api-integrations.ts +268 -9
- package/src/routes/api-keys.ts +164 -25
- package/src/routes/artifact-catalog.ts +111 -0
- package/src/routes/automations.ts +163 -90
- package/src/routes/billing.ts +535 -59
- package/src/routes/browser-sessions.ts +966 -342
- package/src/routes/canonical-human-identities.ts +61 -0
- package/src/routes/capabilities.ts +112 -5
- package/src/routes/channels.ts +4 -3
- package/src/routes/chat-completions.ts +235 -0
- package/src/routes/claude-core-usage.ts +147 -0
- package/src/routes/claude-subscription-accounts.ts +233 -0
- package/src/routes/claude-subscription-oauth.ts +175 -0
- package/src/routes/client-errors.ts +394 -0
- package/src/routes/codex-core.ts +687 -0
- package/src/routes/codex.ts +1277 -1119
- package/src/routes/company-brain.ts +4 -0
- package/src/routes/computer-sessions.ts +319 -85
- package/src/routes/connect.ts +277 -175
- package/src/routes/connections.ts +690 -363
- package/src/routes/desktop-distribution.ts +217 -0
- package/src/routes/documents.ts +13 -7
- package/src/routes/editable-artifacts.ts +74 -4
- package/src/routes/enrollments.ts +110 -16
- package/src/routes/external-identity-links.ts +13 -12
- package/src/routes/files.ts +41 -16
- package/src/routes/github-browser-fonts.gen.ts +12 -0
- package/src/routes/github-browser-pages.ts +258 -0
- package/src/routes/github.ts +200 -75
- package/src/routes/inbox.ts +353 -0
- package/src/routes/insights-response-cache.ts +83 -0
- package/src/routes/insights-usage.ts +345 -0
- package/src/routes/insights.ts +103 -8
- package/src/routes/install.ts +51 -10
- package/src/routes/integration-facets.ts +70 -28
- package/src/routes/interaction-placement-message.ts +12 -0
- package/src/routes/knowledge.ts +136 -27
- package/src/routes/machines.ts +189 -135
- package/src/routes/managed-auth-session-sets.ts +43 -10
- package/src/routes/managed-onboarding.ts +39 -19
- package/src/routes/managed-sign-in-methods.ts +433 -0
- package/src/routes/memory-slack-publications.ts +3 -2
- package/src/routes/model-account-choice.ts +194 -0
- package/src/routes/model-account-settings.ts +235 -0
- package/src/routes/model-connection-access.ts +210 -48
- package/src/routes/native-app-auth.ts +296 -0
- package/src/routes/organization-integration-policy.ts +116 -0
- package/src/routes/organization-integrations.ts +326 -0
- package/src/routes/organization-mcp-connections.ts +183 -0
- package/src/routes/organization-memberships.ts +205 -19
- package/src/routes/organization-model-defaults.ts +110 -0
- package/src/routes/organization-model-providers.ts +74 -3
- package/src/routes/organization-service-accounts.ts +128 -0
- package/src/routes/organization-sessions.ts +21 -5
- package/src/routes/personal-api-keys.ts +184 -0
- package/src/routes/personal-github-git-broker.ts +2 -2
- package/src/routes/personal-github.ts +9 -4
- package/src/routes/plugins.ts +46 -7
- package/src/routes/pr-review-github.ts +105 -118
- package/src/routes/pr-review.ts +88 -82
- package/src/routes/preference-registry.ts +18 -0
- package/src/routes/rigs.ts +48 -13
- package/src/routes/scheduled-tasks.ts +347 -27
- package/src/routes/session-admin-access.ts +271 -0
- package/src/routes/session-artifact-associations.ts +164 -0
- package/src/routes/session-history-imports.ts +305 -0
- package/src/routes/sessions.ts +1682 -363
- package/src/routes/site-data.ts +340 -0
- package/src/routes/site-publishing.ts +584 -0
- package/src/routes/site-runtime.ts +1944 -0
- package/src/routes/site-sql.ts +263 -0
- package/src/routes/skill-content.ts +72 -7
- package/src/routes/skills.ts +5 -4
- package/src/routes/slack-bot-access.ts +108 -0
- package/src/routes/social.ts +27 -15
- package/src/routes/subscription-account-pools.ts +209 -0
- package/src/routes/subscription-core-http.ts +18 -0
- package/src/routes/subscription-pool-access.ts +180 -0
- package/src/routes/subscription-pool-core.ts +552 -0
- package/src/routes/supergrok.ts +174 -655
- package/src/routes/transcription-recordings.ts +71 -4
- package/src/routes/transcriptions.ts +26 -2
- package/src/routes/usage-allowances.ts +381 -0
- package/src/routes/variable-sets-removed.ts +19 -0
- package/src/routes/vault-providers.ts +782 -0
- package/src/routes/vaults.ts +421 -0
- package/src/routes/video-generation.ts +30 -12
- package/src/routes/workspace-artifacts.ts +165 -53
- package/src/routes/workspace-integrations.ts +576 -0
- package/src/routes/workspace-model-providers.ts +148 -0
- package/src/routes/workspace-state.ts +4 -0
- package/src/routes/workspaces.ts +625 -117
- package/src/sandbox/agent-update.ts +315 -0
- package/src/sandbox/auth-callout.ts +104 -21
- package/src/sandbox/channel-a.ts +150 -49
- package/src/sandbox/enrollment.ts +131 -22
- package/src/sandbox/machine-audience.ts +192 -0
- package/src/sandbox/machines.ts +75 -31
- package/src/sandbox/metrics-ingestion.ts +133 -2
- package/src/sandbox/rematerialize.ts +51 -21
- package/src/sandbox/screen-control.ts +289 -0
- package/src/sandbox/viewer.ts +33 -58
- package/src/sandbox-file-artifacts.ts +53 -27
- package/src/scheduled-task-blockers.ts +293 -0
- package/src/scheduled-task-deletion.ts +13 -3
- package/src/scheduled-task-lifecycle.ts +84 -0
- package/src/secret-answers.ts +119 -0
- package/src/session-create-observability.ts +46 -0
- package/src/session-realtime-context.ts +26 -4
- package/src/signed-state-secret.ts +58 -0
- package/src/site-agent-guard.ts +261 -0
- package/src/site-data/operations.ts +777 -0
- package/src/site-data/service.ts +1043 -0
- package/src/site-frame-guard.ts +107 -0
- package/src/site-publishing/agent-data-tools.ts +250 -0
- package/src/site-publishing/agent-model.ts +127 -0
- package/src/site-publishing/agent-session.ts +148 -0
- package/src/site-publishing/content-scanner.ts +93 -0
- package/src/site-publishing/edge-sync.ts +148 -0
- package/src/site-publishing/gateway-signature.ts +198 -0
- package/src/site-publishing/limits.ts +315 -0
- package/src/site-publishing/page-tool-authority.ts +111 -0
- package/src/site-publishing/platform-usage.ts +479 -0
- package/src/site-publishing/platform.ts +98 -0
- package/src/site-publishing/readiness.ts +330 -0
- package/src/site-publishing/runtime.ts +831 -0
- package/src/site-publishing/service.ts +1282 -0
- package/src/site-publishing/session-events.ts +262 -0
- package/src/site-publishing/session-views.ts +262 -0
- package/src/site-publishing/viewer.ts +75 -0
- package/src/site-session-origin.ts +91 -6
- package/src/site-sql/format.ts +134 -0
- package/src/site-sql/gateway.ts +168 -0
- package/src/site-sql/service.ts +1636 -0
- package/src/site-uploads.ts +27 -5
- package/src/temporal-schedule-sync.ts +74 -0
- package/src/transcription/billing-refusal.ts +14 -0
- package/src/transcription/normalize.ts +77 -0
- package/src/transcription/providers/azure-mai.ts +98 -0
- package/src/transcription/providers/azure-openai.ts +16 -7
- package/src/transcription/providers/codex-subscription.ts +190 -67
- package/src/transcription/providers/openai.ts +79 -5
- package/src/transcription/providers/subscription-core.ts +125 -0
- package/src/transcription/providers/xai-subscription.ts +81 -83
- package/src/transcription/segmenter.ts +7 -1
- package/src/transcription/service.ts +239 -10
- package/src/transcription/wav-duration.ts +39 -0
- package/src/workspace-deletion.ts +25 -1
- package/src/workspace-tool-gateway-attestations.ts +133 -0
- package/src/workspace-tool-gateway-observability.ts +64 -0
- package/src/workspace-tool-gateway-secrets.ts +104 -0
- package/src/workspace-tool-gateway.ts +921 -103
- package/src/workspace-tool-target-fence.ts +380 -0
- package/src/workspace-tool-target.ts +554 -0
- package/src/workspace-webhook-dispatch.ts +225 -0
- package/src/xai-realtime.ts +85 -81
- package/src/xai-subscription-core.ts +172 -0
- package/dist/browser-auth-broker.d.ts +0 -20
- package/dist/chunk-AJ62T5QN.js.map +0 -1
- package/dist/connection-authority-owner.d.ts +0 -59
- package/dist/routes/connection-authorities.d.ts +0 -3
- package/dist/routes/environments.d.ts +0 -5
- package/dist/routes/host-mcp-bindings.d.ts +0 -5
- package/dist/routes/host-mcp-resolvers.d.ts +0 -3
- package/dist/routes/packs.d.ts +0 -3
- package/dist/session-event-view-MU3HMNV3.js +0 -264
- package/dist/session-event-view-MU3HMNV3.js.map +0 -1
- package/dist/xai-subscription-auth.d.ts +0 -23
- package/src/browser-auth-broker.ts +0 -155
- package/src/connection-authority-owner.ts +0 -61
- package/src/routes/connection-authorities.ts +0 -139
- package/src/routes/environments.ts +0 -388
- package/src/routes/host-mcp-bindings.ts +0 -122
- package/src/routes/host-mcp-resolvers.ts +0 -41
- package/src/routes/packs.ts +0 -784
- package/src/xai-subscription-auth.ts +0 -139
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
|
+
assertOrganizationIntegrationAllowed,
|
|
2
3
|
IntegrationFacetMutationResult,
|
|
3
4
|
IntegrationFacetRemovalResult,
|
|
4
5
|
IntegrationInstanceFacetsResponse,
|
|
5
6
|
MutateIntegrationFacetRequest,
|
|
6
7
|
UpsertIntegrationFacetRequest,
|
|
7
8
|
} from "@opengeni/contracts";
|
|
9
|
+
import { withOrganizationIntegrationPolicyFence } from "@opengeni/db/organization-integration-policy";
|
|
10
|
+
import { CORE_INTEGRATION_DEFINITIONS } from "@opengeni/capabilities";
|
|
8
11
|
import {
|
|
9
12
|
hasPermission,
|
|
10
13
|
requireAccessGrant,
|
|
@@ -25,6 +28,7 @@ import {
|
|
|
25
28
|
removeIntegrationFacet,
|
|
26
29
|
replayCompletedIntegrationFacetOperation,
|
|
27
30
|
setIntegrationFacetLifecycle,
|
|
31
|
+
type IntegrationFacetAcquisitionAuthorizer,
|
|
28
32
|
} from "@opengeni/db";
|
|
29
33
|
import type { Hono } from "hono";
|
|
30
34
|
import { HTTPException } from "hono/http-exception";
|
|
@@ -33,6 +37,7 @@ import {
|
|
|
33
37
|
browseGoogleDriveFacetSource,
|
|
34
38
|
saveGoogleDriveFacetSource,
|
|
35
39
|
} from "../integrations/google-drive";
|
|
40
|
+
import { parseRequestJson } from "../http/request-body";
|
|
36
41
|
|
|
37
42
|
export function registerIntegrationFacetRoutes(app: Hono, deps: ApiRouteDeps): void {
|
|
38
43
|
app.get(
|
|
@@ -126,7 +131,7 @@ export function registerIntegrationFacetRoutes(app: Hono, deps: ApiRouteDeps): v
|
|
|
126
131
|
async (c) => {
|
|
127
132
|
const workspaceId = c.req.param("workspaceId");
|
|
128
133
|
const grant = await requireAccessGrant(c, deps, workspaceId, "capabilities:manage");
|
|
129
|
-
const payload =
|
|
134
|
+
const payload = await parseRequestJson(c, UpsertIntegrationFacetRequest);
|
|
130
135
|
const capabilityId = decoded(c.req.param("capabilityId"));
|
|
131
136
|
const instanceKey = decoded(c.req.param("instanceKey"));
|
|
132
137
|
const facetKey = decoded(c.req.param("facetKey"));
|
|
@@ -179,20 +184,30 @@ export function registerIntegrationFacetRoutes(app: Hono, deps: ApiRouteDeps): v
|
|
|
179
184
|
}
|
|
180
185
|
return c.json(
|
|
181
186
|
IntegrationFacetMutationResult.parse(
|
|
182
|
-
await
|
|
183
|
-
|
|
184
|
-
workspaceId,
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
187
|
+
await withOrganizationIntegrationPolicyFence(
|
|
188
|
+
deps.db,
|
|
189
|
+
{ accountId: grant.accountId, workspaceId },
|
|
190
|
+
(tx, policy) =>
|
|
191
|
+
configureIntegrationFacet(tx, {
|
|
192
|
+
accountId: grant.accountId,
|
|
193
|
+
workspaceId,
|
|
194
|
+
subjectId: grant.subjectId,
|
|
195
|
+
capabilityId,
|
|
196
|
+
instanceKey,
|
|
197
|
+
facetKey,
|
|
198
|
+
displayName: payload.displayName,
|
|
199
|
+
config: payload.config,
|
|
200
|
+
...(payload.expectedVersion !== undefined
|
|
201
|
+
? { expectedVersion: payload.expectedVersion }
|
|
202
|
+
: {}),
|
|
203
|
+
idempotencyKey: payload.idempotencyKey,
|
|
204
|
+
beforeAcquire: async (_db, context) =>
|
|
205
|
+
assertOrganizationIntegrationAllowed(
|
|
206
|
+
policy,
|
|
207
|
+
installedFacetIntegrationKey(context),
|
|
208
|
+
),
|
|
209
|
+
}),
|
|
210
|
+
),
|
|
196
211
|
),
|
|
197
212
|
payload.expectedVersion === undefined ? 201 : 200,
|
|
198
213
|
);
|
|
@@ -208,21 +223,31 @@ export function registerIntegrationFacetRoutes(app: Hono, deps: ApiRouteDeps): v
|
|
|
208
223
|
async (c) => {
|
|
209
224
|
const workspaceId = c.req.param("workspaceId");
|
|
210
225
|
const grant = await requireAccessGrant(c, deps, workspaceId, "capabilities:manage");
|
|
211
|
-
const payload =
|
|
226
|
+
const payload = await parseRequestJson(c, MutateIntegrationFacetRequest);
|
|
212
227
|
try {
|
|
213
228
|
return c.json(
|
|
214
229
|
IntegrationFacetMutationResult.parse(
|
|
215
|
-
await
|
|
216
|
-
|
|
217
|
-
workspaceId,
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
230
|
+
await withOrganizationIntegrationPolicyFence(
|
|
231
|
+
deps.db,
|
|
232
|
+
{ accountId: grant.accountId, workspaceId },
|
|
233
|
+
(tx, policy) =>
|
|
234
|
+
setIntegrationFacetLifecycle(tx, {
|
|
235
|
+
accountId: grant.accountId,
|
|
236
|
+
workspaceId,
|
|
237
|
+
subjectId: grant.subjectId,
|
|
238
|
+
capabilityId: decoded(c.req.param("capabilityId")),
|
|
239
|
+
instanceKey: decoded(c.req.param("instanceKey")),
|
|
240
|
+
facetKey: decoded(c.req.param("facetKey")),
|
|
241
|
+
action,
|
|
242
|
+
expectedVersion: payload.expectedVersion,
|
|
243
|
+
idempotencyKey: payload.idempotencyKey,
|
|
244
|
+
beforeAcquire: async (_db, context) =>
|
|
245
|
+
assertOrganizationIntegrationAllowed(
|
|
246
|
+
policy,
|
|
247
|
+
installedFacetIntegrationKey(context),
|
|
248
|
+
),
|
|
249
|
+
}),
|
|
250
|
+
),
|
|
226
251
|
),
|
|
227
252
|
);
|
|
228
253
|
} catch (error) {
|
|
@@ -237,7 +262,7 @@ export function registerIntegrationFacetRoutes(app: Hono, deps: ApiRouteDeps): v
|
|
|
237
262
|
async (c) => {
|
|
238
263
|
const workspaceId = c.req.param("workspaceId");
|
|
239
264
|
const grant = await requireAccessGrant(c, deps, workspaceId, "capabilities:manage");
|
|
240
|
-
const payload =
|
|
265
|
+
const payload = await parseRequestJson(c, MutateIntegrationFacetRequest);
|
|
241
266
|
try {
|
|
242
267
|
return c.json(
|
|
243
268
|
IntegrationFacetRemovalResult.parse(
|
|
@@ -264,6 +289,23 @@ function decoded(value: string): string {
|
|
|
264
289
|
return decodeURIComponent(value);
|
|
265
290
|
}
|
|
266
291
|
|
|
292
|
+
/** The DB context comes from the matching installed API facet and immutable
|
|
293
|
+
* server-authored version manifest, never request metadata or a provider domain.
|
|
294
|
+
*/
|
|
295
|
+
function installedFacetIntegrationKey(
|
|
296
|
+
context: Parameters<IntegrationFacetAcquisitionAuthorizer>[1],
|
|
297
|
+
): string | null {
|
|
298
|
+
if (context.apiProtocol !== "openapi" && context.apiProtocol !== "graphql") return null;
|
|
299
|
+
if (context.definitionProvenance === "workspace") return `custom:${context.apiProtocol}`;
|
|
300
|
+
if (
|
|
301
|
+
context.definitionProvenance === "curated" &&
|
|
302
|
+
CORE_INTEGRATION_DEFINITIONS.some((definition) => definition.id === context.definitionId)
|
|
303
|
+
) {
|
|
304
|
+
return context.definitionId;
|
|
305
|
+
}
|
|
306
|
+
return null;
|
|
307
|
+
}
|
|
308
|
+
|
|
267
309
|
function facetHttpError(error: unknown): HTTPException {
|
|
268
310
|
if (error instanceof HTTPException) return error;
|
|
269
311
|
if (error instanceof IntegrationFacetNotFoundError) {
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The 422 a session gets when it asks for a computer or browser on a Connected
|
|
3
|
+
* Machine it is not currently placed on. Name the exact way to get there so an
|
|
4
|
+
* agent switches itself over instead of delegating or giving up, and keep it
|
|
5
|
+
* conditional because not every session is allowed to swap.
|
|
6
|
+
*/
|
|
7
|
+
export function wrongInteractionPlacementMessage(targetSandboxId: string): string {
|
|
8
|
+
return (
|
|
9
|
+
"The requested Connected Machine is not this session's current placement. " +
|
|
10
|
+
`Move the session to that machine before creating an interaction resource: if sandbox_swap is available, call it with target "${targetSandboxId}", retry, and swap back (target "session") when done.`
|
|
11
|
+
);
|
|
12
|
+
}
|
package/src/routes/knowledge.ts
CHANGED
|
@@ -5,6 +5,7 @@ import {
|
|
|
5
5
|
AgentLearningContext,
|
|
6
6
|
AgentLearningOverridePatch,
|
|
7
7
|
KnowledgeEntryListRequest,
|
|
8
|
+
KnowledgeSavePreparationRequest,
|
|
8
9
|
KnowledgeReviewBatchListRequest,
|
|
9
10
|
KnowledgeEntryBatchReviewRequest,
|
|
10
11
|
AgentInstructionReviewRequest,
|
|
@@ -15,7 +16,11 @@ import {
|
|
|
15
16
|
} from "@opengeni/contracts";
|
|
16
17
|
import {
|
|
17
18
|
prepareKnowledgeFile,
|
|
19
|
+
prepareKnowledgeSave,
|
|
18
20
|
searchKnowledgeEntries,
|
|
21
|
+
KnowledgeVectorCreditsDisabledError,
|
|
22
|
+
KnowledgeVectorFundingError,
|
|
23
|
+
KnowledgeVectorQueryRejectedError,
|
|
19
24
|
hasPermission,
|
|
20
25
|
knowledgeContextForAccess,
|
|
21
26
|
requireAccessGrantAuthorization,
|
|
@@ -40,11 +45,16 @@ import {
|
|
|
40
45
|
reviewKnowledgeEntries,
|
|
41
46
|
reviewAgentInstruction,
|
|
42
47
|
listAgentInstructionReviews,
|
|
48
|
+
KnowledgeEntryIdRequiredError,
|
|
49
|
+
KnowledgeEntryIdTakenError,
|
|
43
50
|
} from "@opengeni/db";
|
|
44
51
|
import type { Context, Hono } from "hono";
|
|
45
52
|
import { HTTPException } from "hono/http-exception";
|
|
46
53
|
import { z } from "zod";
|
|
47
54
|
import { withAccessGrantSessionRlsContext } from "../access-grant-rls";
|
|
55
|
+
import { ApiHttpError } from "../http/api-error";
|
|
56
|
+
import { userContentSignedGetUrlOptions } from "../http/user-content";
|
|
57
|
+
import { parseRequestJson } from "../http/request-body";
|
|
48
58
|
|
|
49
59
|
const ReadSettings = z
|
|
50
60
|
.object({
|
|
@@ -61,6 +71,36 @@ const WriteSettings = ReadSettings.extend({
|
|
|
61
71
|
const Id = z.uuid();
|
|
62
72
|
function knowledgeHttpError(error: unknown): never {
|
|
63
73
|
if (error instanceof HTTPException) throw error;
|
|
74
|
+
if (error instanceof KnowledgeVectorFundingError)
|
|
75
|
+
throw new ApiHttpError(402, {
|
|
76
|
+
code: "payment_required",
|
|
77
|
+
message: error.message,
|
|
78
|
+
details: { code: error.code, keywordAvailable: true },
|
|
79
|
+
});
|
|
80
|
+
if (error instanceof KnowledgeVectorCreditsDisabledError)
|
|
81
|
+
throw new ApiHttpError(403, {
|
|
82
|
+
code: "forbidden",
|
|
83
|
+
message: error.message,
|
|
84
|
+
details: { code: error.code, keywordAvailable: true },
|
|
85
|
+
});
|
|
86
|
+
if (error instanceof KnowledgeVectorQueryRejectedError)
|
|
87
|
+
throw new ApiHttpError(error.code === "quota" ? 429 : 422, {
|
|
88
|
+
code: error.code === "quota" ? "limit_exceeded" : "validation_failed",
|
|
89
|
+
message: error.message,
|
|
90
|
+
details: { code: error.code, keywordAvailable: true },
|
|
91
|
+
});
|
|
92
|
+
if (error instanceof KnowledgeEntryIdTakenError)
|
|
93
|
+
throw new ApiHttpError(409, {
|
|
94
|
+
code: "conflict",
|
|
95
|
+
message: error.message,
|
|
96
|
+
details: { code: error.code },
|
|
97
|
+
});
|
|
98
|
+
if (error instanceof KnowledgeEntryIdRequiredError)
|
|
99
|
+
throw new ApiHttpError(422, {
|
|
100
|
+
code: "validation_failed",
|
|
101
|
+
message: error.message,
|
|
102
|
+
details: { code: error.code },
|
|
103
|
+
});
|
|
64
104
|
if (error instanceof z.ZodError)
|
|
65
105
|
throw new HTTPException(422, {
|
|
66
106
|
message: error.issues[0]?.message ?? "Invalid Knowledge request",
|
|
@@ -83,20 +123,29 @@ export function registerKnowledgeRoutes(app: Hono, deps: ApiRouteDeps) {
|
|
|
83
123
|
c: Context,
|
|
84
124
|
write: boolean,
|
|
85
125
|
fn: (context: Awaited<ReturnType<typeof knowledgeContextForAccess>>) => Promise<T>,
|
|
126
|
+
readPermission: "documents:search" | "workspace:read" = "documents:search",
|
|
86
127
|
) {
|
|
87
128
|
try {
|
|
88
129
|
const access = await requireAccessGrantAuthorization(
|
|
89
130
|
c,
|
|
90
131
|
deps,
|
|
91
132
|
c.req.param("workspaceId")!,
|
|
92
|
-
write
|
|
133
|
+
write
|
|
134
|
+
? "documents:manage"
|
|
135
|
+
: readPermission === "workspace:read"
|
|
136
|
+
? undefined
|
|
137
|
+
: readPermission,
|
|
93
138
|
);
|
|
139
|
+
// Preserve existing document-reader access to the settings read while
|
|
140
|
+
// admitting workspace readers to that one endpoint as well.
|
|
141
|
+
const permission = write
|
|
142
|
+
? "documents:manage"
|
|
143
|
+
: readPermission === "workspace:read" &&
|
|
144
|
+
hasPermission(access.grant.permissions, "documents:search")
|
|
145
|
+
? "documents:search"
|
|
146
|
+
: readPermission;
|
|
94
147
|
return await withAccessGrantSessionRlsContext(deps, access.grant, async () => {
|
|
95
|
-
const context = await knowledgeContextForAccess(
|
|
96
|
-
deps,
|
|
97
|
-
access,
|
|
98
|
-
write ? "documents:manage" : "documents:search",
|
|
99
|
-
);
|
|
148
|
+
const context = await knowledgeContextForAccess(deps, access, permission);
|
|
100
149
|
c.header("cache-control", "private, no-store");
|
|
101
150
|
return fn(context);
|
|
102
151
|
});
|
|
@@ -125,7 +174,20 @@ export function registerKnowledgeRoutes(app: Hono, deps: ApiRouteDeps) {
|
|
|
125
174
|
throw new HTTPException(403, {
|
|
126
175
|
message: "Source preparation is unavailable for this task",
|
|
127
176
|
});
|
|
128
|
-
|
|
177
|
+
const body = await c.req.text();
|
|
178
|
+
let input: unknown = {};
|
|
179
|
+
try {
|
|
180
|
+
input = body ? JSON.parse(body) : {};
|
|
181
|
+
} catch {
|
|
182
|
+
throw new HTTPException(400, { message: "Invalid source preparation JSON" });
|
|
183
|
+
}
|
|
184
|
+
const { purpose } = z
|
|
185
|
+
.object({ purpose: z.enum(["evidence", "reference"]).default("evidence") })
|
|
186
|
+
.strict()
|
|
187
|
+
.parse(input);
|
|
188
|
+
return c.json(
|
|
189
|
+
await prepareKnowledgeFile(deps, context, Id.parse(c.req.param("fileId")), purpose),
|
|
190
|
+
);
|
|
129
191
|
}),
|
|
130
192
|
);
|
|
131
193
|
app.post(`${base}/:entryId/file/download-url`, (c) =>
|
|
@@ -136,10 +198,10 @@ export function registerKnowledgeRoutes(app: Hono, deps: ApiRouteDeps) {
|
|
|
136
198
|
context.workspaceId,
|
|
137
199
|
"files:read",
|
|
138
200
|
);
|
|
139
|
-
const { revisionId } =
|
|
140
|
-
|
|
141
|
-
.strict()
|
|
142
|
-
|
|
201
|
+
const { revisionId } = await parseRequestJson(
|
|
202
|
+
c,
|
|
203
|
+
z.object({ revisionId: z.uuid().optional() }).strict(),
|
|
204
|
+
);
|
|
143
205
|
const entryId = Id.parse(c.req.param("entryId"));
|
|
144
206
|
const file = await getKnowledgeOriginalFile(deps.db, context, entryId, revisionId);
|
|
145
207
|
if (!file) throw new HTTPException(404, { message: "Original file unavailable" });
|
|
@@ -151,7 +213,10 @@ export function registerKnowledgeRoutes(app: Hono, deps: ApiRouteDeps) {
|
|
|
151
213
|
))
|
|
152
214
|
)
|
|
153
215
|
throw new HTTPException(410, { message: "Original file bytes are unavailable" });
|
|
154
|
-
const signed = await deps.objectStorage.createGetUrl({
|
|
216
|
+
const signed = await deps.objectStorage.createGetUrl({
|
|
217
|
+
key: file.objectKey,
|
|
218
|
+
...userContentSignedGetUrlOptions(file.contentType, file.filename),
|
|
219
|
+
});
|
|
155
220
|
await recordAuditEvent(deps.db, {
|
|
156
221
|
accountId: context.accountId,
|
|
157
222
|
workspaceId: context.workspaceId,
|
|
@@ -173,14 +238,49 @@ export function registerKnowledgeRoutes(app: Hono, deps: ApiRouteDeps) {
|
|
|
173
238
|
);
|
|
174
239
|
}),
|
|
175
240
|
);
|
|
241
|
+
app.post(`${base}/prepare-save`, (c) =>
|
|
242
|
+
run(c, false, async (context) => {
|
|
243
|
+
if (context.actor.kind === "agent") {
|
|
244
|
+
const access = await requireAccessGrantAuthorization(
|
|
245
|
+
c,
|
|
246
|
+
deps,
|
|
247
|
+
context.workspaceId,
|
|
248
|
+
"documents:search",
|
|
249
|
+
);
|
|
250
|
+
const selected = access.grant.metadata?.firstPartyMcpTools as
|
|
251
|
+
| FirstPartyMcpToolName[]
|
|
252
|
+
| undefined;
|
|
253
|
+
if (
|
|
254
|
+
!selected ||
|
|
255
|
+
!allowedFirstPartyMcpToolsForSession(deps.settings, selected).includes(
|
|
256
|
+
"knowledge_prepare_save",
|
|
257
|
+
)
|
|
258
|
+
)
|
|
259
|
+
throw new HTTPException(403, {
|
|
260
|
+
message: "Knowledge preparation is unavailable for this task",
|
|
261
|
+
});
|
|
262
|
+
}
|
|
263
|
+
return c.json(
|
|
264
|
+
await prepareKnowledgeSave(
|
|
265
|
+
deps.db,
|
|
266
|
+
context,
|
|
267
|
+
await parseRequestJson(c, KnowledgeSavePreparationRequest),
|
|
268
|
+
() => deps.getDocumentServices().embedder,
|
|
269
|
+
undefined,
|
|
270
|
+
deps.settings,
|
|
271
|
+
),
|
|
272
|
+
);
|
|
273
|
+
}),
|
|
274
|
+
);
|
|
176
275
|
app.post(`${base}/search`, (c) =>
|
|
177
276
|
run(c, false, async (context) =>
|
|
178
277
|
c.json(
|
|
179
278
|
await searchKnowledgeEntries(
|
|
180
279
|
deps.db,
|
|
181
280
|
context,
|
|
182
|
-
|
|
281
|
+
await parseRequestJson(c, KnowledgeEntryListRequest),
|
|
183
282
|
() => deps.getDocumentServices().embedder,
|
|
283
|
+
deps.settings,
|
|
184
284
|
),
|
|
185
285
|
),
|
|
186
286
|
),
|
|
@@ -206,7 +306,7 @@ export function registerKnowledgeRoutes(app: Hono, deps: ApiRouteDeps) {
|
|
|
206
306
|
await reviewKnowledgeEntries(
|
|
207
307
|
deps.db,
|
|
208
308
|
context,
|
|
209
|
-
|
|
309
|
+
await parseRequestJson(c, KnowledgeEntryBatchReviewRequest),
|
|
210
310
|
),
|
|
211
311
|
),
|
|
212
312
|
),
|
|
@@ -223,6 +323,7 @@ export function registerKnowledgeRoutes(app: Hono, deps: ApiRouteDeps) {
|
|
|
223
323
|
...(query.limit ? { limit: Number(query.limit) } : {}),
|
|
224
324
|
}),
|
|
225
325
|
() => deps.getDocumentServices().embedder,
|
|
326
|
+
deps.settings,
|
|
226
327
|
),
|
|
227
328
|
);
|
|
228
329
|
}),
|
|
@@ -232,7 +333,7 @@ export function registerKnowledgeRoutes(app: Hono, deps: ApiRouteDeps) {
|
|
|
232
333
|
const result = await saveKnowledgeEntry(
|
|
233
334
|
deps.db,
|
|
234
335
|
context,
|
|
235
|
-
|
|
336
|
+
await parseRequestJson(c, KnowledgeEntrySaveRequest),
|
|
236
337
|
);
|
|
237
338
|
return c.json(result, result.replayed ? 200 : 201);
|
|
238
339
|
}),
|
|
@@ -290,10 +391,10 @@ export function registerKnowledgeRoutes(app: Hono, deps: ApiRouteDeps) {
|
|
|
290
391
|
);
|
|
291
392
|
app.post(`${base}/:entryId/archive`, (c) =>
|
|
292
393
|
run(c, true, async (context) => {
|
|
293
|
-
const request =
|
|
294
|
-
|
|
295
|
-
.strict()
|
|
296
|
-
|
|
394
|
+
const request = await parseRequestJson(
|
|
395
|
+
c,
|
|
396
|
+
z.object({ operationId: Id, expectedVersion: z.number().int().positive() }).strict(),
|
|
397
|
+
);
|
|
297
398
|
return c.json(
|
|
298
399
|
await archiveKnowledgeEntry(deps.db, context, {
|
|
299
400
|
...request,
|
|
@@ -333,18 +434,26 @@ export function registerKnowledgeRoutes(app: Hono, deps: ApiRouteDeps) {
|
|
|
333
434
|
await reviewAgentInstruction(
|
|
334
435
|
deps.db,
|
|
335
436
|
await instructionReviewContext(c, context),
|
|
336
|
-
|
|
437
|
+
await parseRequestJson(c, AgentInstructionReviewRequest),
|
|
337
438
|
),
|
|
338
439
|
),
|
|
339
440
|
),
|
|
340
441
|
);
|
|
341
442
|
app.post(`${learning}/read`, (c) =>
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
443
|
+
// Members can inspect the settings relevant to their admitted workspace or
|
|
444
|
+
// owner context without gaining Knowledge search or settings-write access.
|
|
445
|
+
// The database still requires a human and checks each source's owner layer.
|
|
446
|
+
run(
|
|
447
|
+
c,
|
|
448
|
+
false,
|
|
449
|
+
async (context) => {
|
|
450
|
+
const request = await parseRequestJson(c, ReadSettings);
|
|
451
|
+
return c.json(
|
|
452
|
+
await getAgentLearningSettings(deps.db, context, request.scope, request.source),
|
|
453
|
+
);
|
|
454
|
+
},
|
|
455
|
+
"workspace:read",
|
|
456
|
+
),
|
|
348
457
|
);
|
|
349
458
|
app.get(`${learning}/overrides`, (c) =>
|
|
350
459
|
run(c, false, async (context) => {
|
|
@@ -357,7 +466,7 @@ export function registerKnowledgeRoutes(app: Hono, deps: ApiRouteDeps) {
|
|
|
357
466
|
);
|
|
358
467
|
app.post(learning, (c) =>
|
|
359
468
|
run(c, false, async (context) => {
|
|
360
|
-
const request =
|
|
469
|
+
const request = await parseRequestJson(c, WriteSettings);
|
|
361
470
|
if (context.actor.kind !== "human")
|
|
362
471
|
throw new HTTPException(403, { message: "Agents cannot change learning settings" });
|
|
363
472
|
const access = await requireAccessGrantAuthorization(c, deps, context.workspaceId);
|