@opengeni/api-router 3.0.1 → 3.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/access-grant-rls.d.ts +8 -1
- package/dist/admission-trace.d.ts +8 -0
- package/dist/app.d.ts +50 -3
- package/dist/app.js +10 -1
- package/dist/artifact-catalog-cursor.d.ts +1 -0
- package/dist/attached-browser-viewer.d.ts +11 -0
- package/dist/auth/managed-auth-attempt-context.d.ts +2 -0
- package/dist/auth/managed-auth-rate-limits.d.ts +167 -0
- package/dist/auth/managed-auth-session-adapter.d.ts +9 -1
- package/dist/auth/managed-auth.d.ts +72 -5
- package/dist/auth/managed-sign-in-notifications.d.ts +4 -0
- package/dist/auth/new-signups-gate.d.ts +23 -0
- package/dist/auth/signup-funnel-metrics.d.ts +44 -0
- package/dist/azure-live.d.ts +28 -0
- package/dist/browser-action-fences.d.ts +13 -0
- package/dist/browser-controller-authority.d.ts +1 -61
- package/dist/browser-ephemeral.d.ts +5 -0
- package/dist/browser-lost-runtime-end.d.ts +24 -0
- package/dist/browser-state-authority.d.ts +1 -27
- package/dist/chunk-OGQDXVXY.js +18 -0
- package/dist/chunk-OGQDXVXY.js.map +1 -0
- package/dist/{chunk-AJ62T5QN.js → chunk-OT56OY4V.js} +80503 -39869
- package/dist/chunk-OT56OY4V.js.map +1 -0
- package/dist/claude-default-models.d.ts +19 -0
- package/dist/claude-subscription-core.d.ts +50 -0
- package/dist/claude-subscription-oauth.d.ts +36 -0
- package/dist/claude-subscription-profile.d.ts +9 -0
- package/dist/claude-subscription-usage.d.ts +6 -0
- package/dist/claude-workspace-connection.d.ts +15 -0
- package/dist/codemode.d.ts +40 -5
- package/dist/codex-realtime.d.ts +29 -3
- package/dist/codex-session-pointers.d.ts +19 -0
- package/dist/connection-ownership.d.ts +6 -3
- package/dist/controller-data-plane.d.ts +16 -0
- package/dist/credit-promotion-snapshot.d.ts +6 -0
- package/dist/editable-artifact-source-session.d.ts +3 -0
- package/dist/editable-artifact-websocket.d.ts +5 -3
- package/dist/fatal-process-boundary.d.ts +9 -1
- package/dist/github-access.d.ts +7 -1
- package/dist/github-browser-flow.d.ts +1 -1
- package/dist/http/acting-person.d.ts +36 -0
- package/dist/http/api-contract-compat.d.ts +19 -0
- package/dist/http/api-error.d.ts +50 -1
- package/dist/http/auth.d.ts +8 -1
- package/dist/http/cors.d.ts +12 -0
- package/dist/http/deprecation.d.ts +42 -0
- package/dist/http/keyed-admission.d.ts +12 -0
- package/dist/http/local-browser-boundary.d.ts +72 -0
- package/dist/http/metrics-listener.d.ts +22 -0
- package/dist/http/path-identifier.d.ts +17 -0
- package/dist/http/registered-route-label.d.ts +16 -0
- package/dist/http/rejection-telemetry.d.ts +34 -0
- package/dist/http/request-body.d.ts +27 -0
- package/dist/http/request-source.d.ts +41 -3
- package/dist/http/sse.d.ts +12 -1
- package/dist/http/unmatched-route.d.ts +18 -0
- package/dist/http/user-content.d.ts +36 -0
- package/dist/http/variable-sets-removed.d.ts +41 -0
- package/dist/http/websocket-upgrade-dispatch.d.ts +18 -0
- package/dist/index.js +1279 -108
- package/dist/index.js.map +1 -1
- package/dist/integration-connect-metrics.d.ts +35 -0
- package/dist/integration-endpoint-test.d.ts +20 -0
- package/dist/integrations/api-integrations.d.ts +2 -2
- package/dist/integrations/atlassian.d.ts +8 -3
- package/dist/integrations/fiken.d.ts +3 -1
- package/dist/integrations/github-lens-connect.d.ts +37 -66
- package/dist/integrations/google-drive.d.ts +2 -0
- package/dist/integrations/integration-commit-authority.d.ts +13 -0
- package/dist/integrations/marketplace-plugin.d.ts +43 -43
- package/dist/integrations/oauth-client.d.ts +171 -12
- package/dist/integrations/oauth-profiles.d.ts +42 -13
- package/dist/integrations/onepassword-vault-provider.d.ts +9 -0
- package/dist/integrations/slack-bot.d.ts +285 -7
- package/dist/integrations/slack-file-upload-flow.d.ts +62 -0
- package/dist/integrations/slack-interactions.d.ts +89 -10
- package/dist/integrations/slack-mrkdwn.d.ts +41 -0
- package/dist/integrations/slack-routing.d.ts +1 -1
- package/dist/integrations/slack-session-defaults.d.ts +58 -0
- package/dist/integrations/slack-task-file-upload.d.ts +36 -0
- package/dist/integrations/slack-tool-review.d.ts +5 -0
- package/dist/interaction-agent-access.d.ts +13 -8
- package/dist/interaction-agent-version.d.ts +21 -0
- package/dist/interaction-holder-heartbeat.d.ts +5 -0
- package/dist/interaction-metrics.d.ts +27 -2
- package/dist/interaction-route-stages.d.ts +25 -0
- package/dist/interaction-secrets-vault.d.ts +20 -0
- package/dist/interaction-secrets.d.ts +103 -0
- package/dist/mcp/action-catalog-types.d.ts +14 -0
- package/dist/mcp/action-catalog.gen.d.ts +2 -0
- package/dist/mcp/action-descriptions.d.ts +4 -0
- package/dist/mcp/action-schema-imports.gen.d.ts +1 -0
- package/dist/mcp/capability-account-readiness.d.ts +7 -0
- package/dist/mcp/child-read-evidence.d.ts +9 -0
- package/dist/mcp/company-profile-agent-admin.d.ts +12 -0
- package/dist/mcp/contract-input.d.ts +13 -0
- package/dist/mcp/documents.d.ts +2 -0
- package/dist/mcp/first-party-tool-permissions.d.ts +3 -606
- package/dist/mcp/notification-tools.d.ts +26 -0
- package/dist/mcp/orchestration-failure-diagnostic.d.ts +43 -0
- package/dist/mcp/scheduled-task-input.d.ts +1309 -0
- package/dist/mcp/scheduled-task-view.d.ts +217 -3
- package/dist/mcp/secret-tools.d.ts +14 -0
- package/dist/mcp/server.d.ts +108 -5
- package/dist/mcp/session-admin-access-tools.d.ts +33 -0
- package/dist/mcp/session-event-errors.d.ts +28 -0
- package/dist/mcp/session-event-view.d.ts +62 -0
- package/dist/mcp/session-view.d.ts +15 -0
- package/dist/mcp/session-wait.d.ts +18 -0
- package/dist/mcp/site-agent-clamp-tools.d.ts +38 -0
- package/dist/mcp/site-data-tools.d.ts +22 -0
- package/dist/mcp/site-publication-tools.d.ts +19 -0
- package/dist/mcp/site-sql-tools.d.ts +27 -0
- package/dist/mcp-oauth.d.ts +37 -4
- package/dist/model-calls/chat-completions.d.ts +87 -0
- package/dist/model-calls/pending-usage-settlements.d.ts +57 -0
- package/dist/model-calls/service.d.ts +36 -0
- package/dist/model-catalog.d.ts +9 -3
- package/dist/native-push-dispatch.d.ts +69 -0
- package/dist/observability.d.ts +3 -1
- package/dist/organization-mcp.d.ts +82 -0
- package/dist/prepared-mcp-actor.d.ts +77 -0
- package/dist/prepared-mcp-permissions.d.ts +8 -0
- package/dist/routes/analytics-consent.d.ts +26 -0
- package/dist/routes/api-integrations.d.ts +11 -0
- package/dist/routes/api-keys.d.ts +7 -7
- package/dist/routes/automations.d.ts +2 -0
- package/dist/routes/billing.d.ts +59 -0
- package/dist/routes/browser-sessions.d.ts +65 -2
- package/dist/routes/chat-completions.d.ts +11 -0
- package/dist/routes/claude-core-usage.d.ts +20 -0
- package/dist/routes/claude-subscription-accounts.d.ts +3 -0
- package/dist/routes/claude-subscription-oauth.d.ts +3 -0
- package/dist/routes/client-errors.d.ts +182 -0
- package/dist/routes/codex-core.d.ts +401 -0
- package/dist/routes/codex.d.ts +64 -2
- package/dist/routes/computer-sessions.d.ts +6 -1
- package/dist/routes/desktop-distribution.d.ts +32 -0
- package/dist/routes/github-browser-fonts.gen.d.ts +2 -0
- package/dist/routes/github-browser-pages.d.ts +27 -0
- package/dist/routes/inbox.d.ts +13 -0
- package/dist/routes/insights-response-cache.d.ts +10 -0
- package/dist/routes/insights-usage.d.ts +12 -0
- package/dist/routes/insights.d.ts +28 -0
- package/dist/routes/interaction-placement-message.d.ts +7 -0
- package/dist/routes/managed-sign-in-methods.d.ts +6 -0
- package/dist/routes/model-account-choice.d.ts +13 -0
- package/dist/routes/model-account-settings.d.ts +19 -0
- package/dist/routes/native-app-auth.d.ts +12 -0
- package/dist/routes/organization-integration-policy.d.ts +8 -0
- package/dist/routes/organization-integrations.d.ts +6 -0
- package/dist/routes/organization-mcp-connections.d.ts +3 -0
- package/dist/routes/organization-model-defaults.d.ts +9 -0
- package/dist/routes/organization-service-accounts.d.ts +3 -0
- package/dist/routes/personal-api-keys.d.ts +3 -0
- package/dist/routes/session-admin-access.d.ts +3 -0
- package/dist/routes/session-artifact-associations.d.ts +4 -0
- package/dist/routes/session-history-imports.d.ts +20 -0
- package/dist/routes/sessions.d.ts +38 -2
- package/dist/routes/site-data.d.ts +18 -0
- package/dist/routes/site-publishing.d.ts +5 -0
- package/dist/routes/site-runtime.d.ts +31 -0
- package/dist/routes/site-sql.d.ts +16 -0
- package/dist/routes/slack-bot-access.d.ts +3 -0
- package/dist/routes/subscription-account-pools.d.ts +21 -0
- package/dist/routes/subscription-core-http.d.ts +5 -0
- package/dist/routes/subscription-pool-access.d.ts +37 -0
- package/dist/routes/subscription-pool-core.d.ts +153 -0
- package/dist/routes/supergrok.d.ts +6 -6
- package/dist/routes/usage-allowances.d.ts +12 -0
- package/dist/routes/variable-sets-removed.d.ts +2 -0
- package/dist/routes/vault-providers.d.ts +34 -0
- package/dist/routes/vaults.d.ts +3 -0
- package/dist/routes/workspace-integrations.d.ts +35 -0
- package/dist/routes/workspace-model-providers.d.ts +4 -0
- package/dist/routes/workspaces.d.ts +11 -2
- package/dist/sandbox/agent-update.d.ts +64 -0
- package/dist/sandbox/auth-callout.d.ts +8 -0
- package/dist/sandbox/channel-a.d.ts +15 -1
- package/dist/sandbox/enrollment.d.ts +26 -4
- package/dist/sandbox/machine-audience.d.ts +29 -0
- package/dist/sandbox/machines.d.ts +15 -2
- package/dist/sandbox/metrics-ingestion.d.ts +6 -2
- package/dist/sandbox/screen-control.d.ts +85 -0
- package/dist/sandbox/viewer.d.ts +5 -1
- package/dist/sandbox-file-artifacts.d.ts +17 -1
- package/dist/scheduled-task-blockers.d.ts +39 -0
- package/dist/scheduled-task-deletion.d.ts +3 -4
- package/dist/scheduled-task-lifecycle.d.ts +14 -0
- package/dist/secret-answers.d.ts +40 -0
- package/dist/session-create-observability.d.ts +5 -0
- package/dist/session-event-view-36GO3IL7.js +528 -0
- package/dist/session-event-view-36GO3IL7.js.map +1 -0
- package/dist/signed-state-secret.d.ts +18 -0
- package/dist/site-agent-guard.d.ts +53 -0
- package/dist/site-data/operations.d.ts +103 -0
- package/dist/site-data/service.d.ts +203 -0
- package/dist/site-frame-guard.d.ts +32 -0
- package/dist/site-publishing/agent-data-tools.d.ts +84 -0
- package/dist/site-publishing/agent-model.d.ts +58 -0
- package/dist/site-publishing/agent-session.d.ts +16 -0
- package/dist/site-publishing/content-scanner.d.ts +31 -0
- package/dist/site-publishing/edge-sync.d.ts +48 -0
- package/dist/site-publishing/gateway-signature.d.ts +56 -0
- package/dist/site-publishing/limits.d.ts +63 -0
- package/dist/site-publishing/page-tool-authority.d.ts +30 -0
- package/dist/site-publishing/platform-usage.d.ts +113 -0
- package/dist/site-publishing/platform.d.ts +21 -0
- package/dist/site-publishing/readiness.d.ts +62 -0
- package/dist/site-publishing/runtime.d.ts +179 -0
- package/dist/site-publishing/service.d.ts +264 -0
- package/dist/site-publishing/session-events.d.ts +22 -0
- package/dist/site-publishing/session-views.d.ts +36 -0
- package/dist/site-publishing/viewer.d.ts +40 -0
- package/dist/site-session-origin.d.ts +31 -6
- package/dist/site-sql/format.d.ts +47 -0
- package/dist/site-sql/gateway.d.ts +50 -0
- package/dist/site-sql/service.d.ts +213 -0
- package/dist/temporal-schedule-sync.d.ts +26 -0
- package/dist/transcription/billing-refusal.d.ts +8 -0
- package/dist/transcription/normalize.d.ts +23 -0
- package/dist/transcription/providers/azure-mai.d.ts +12 -0
- package/dist/transcription/providers/azure-openai.d.ts +4 -0
- package/dist/transcription/providers/openai.d.ts +16 -0
- package/dist/transcription/providers/subscription-core.d.ts +39 -0
- package/dist/transcription/service.d.ts +10 -1
- package/dist/transcription/wav-duration.d.ts +8 -0
- package/dist/workspace-tool-gateway-attestations.d.ts +37 -0
- package/dist/workspace-tool-gateway-observability.d.ts +16 -0
- package/dist/workspace-tool-gateway-secrets.d.ts +27 -0
- package/dist/workspace-tool-gateway.d.ts +102 -6
- package/dist/workspace-tool-target-fence.d.ts +116 -0
- package/dist/workspace-tool-target.d.ts +225 -0
- package/dist/workspace-webhook-dispatch.d.ts +26 -0
- package/dist/xai-subscription-core.d.ts +60 -0
- package/package.json +25 -20
- package/src/access-grant-rls.ts +64 -14
- package/src/admission-trace.ts +14 -0
- package/src/app.ts +1684 -252
- package/src/artifact-catalog-cursor.ts +1 -0
- package/src/attached-browser-viewer.ts +26 -0
- package/src/auth/managed-auth-attempt-context.ts +9 -0
- package/src/auth/managed-auth-rate-limits.ts +252 -0
- package/src/auth/managed-auth-session-adapter.ts +64 -29
- package/src/auth/managed-auth.ts +303 -35
- package/src/auth/managed-email.ts +18 -1
- package/src/auth/managed-sign-in-notifications.ts +81 -0
- package/src/auth/new-signups-gate.ts +49 -0
- package/src/auth/organization-user-setup.ts +3 -3
- package/src/auth/signup-funnel-metrics.ts +164 -0
- package/src/azure-live.ts +103 -0
- package/src/browser-action-fences.ts +45 -0
- package/src/browser-controller-authority.ts +1 -186
- package/src/browser-ephemeral.ts +39 -0
- package/src/browser-lost-runtime-end.ts +71 -0
- package/src/browser-state-authority.ts +1 -236
- package/src/claude-default-models.ts +37 -0
- package/src/claude-subscription-core.ts +154 -0
- package/src/claude-subscription-oauth.ts +352 -0
- package/src/claude-subscription-profile.ts +73 -0
- package/src/claude-subscription-usage.ts +51 -0
- package/src/claude-workspace-connection.ts +82 -0
- package/src/codemode.ts +236 -39
- package/src/codex-realtime.ts +181 -53
- package/src/codex-session-pointers.ts +80 -0
- package/src/company-brain-okf.ts +1 -1
- package/src/connected-machine-computer-access.ts +2 -1
- package/src/connection-ownership.ts +19 -13
- package/src/controller-data-plane.ts +34 -0
- package/src/credit-promotion-snapshot.ts +36 -0
- package/src/editable-artifact-production.ts +10 -0
- package/src/editable-artifact-source-session.ts +123 -0
- package/src/editable-artifact-websocket.ts +16 -3
- package/src/fatal-process-boundary.ts +67 -3
- package/src/gateway-realtime.ts +12 -8
- package/src/github-access.ts +31 -5
- package/src/github-browser-flow.ts +1 -1
- package/src/http/acting-person.ts +105 -0
- package/src/http/api-contract-compat.ts +49 -0
- package/src/http/api-error.ts +210 -2
- package/src/http/auth.ts +68 -4
- package/src/http/cors.ts +37 -5
- package/src/http/deprecation.ts +118 -0
- package/src/http/keyed-admission.ts +29 -0
- package/src/http/local-browser-boundary.ts +343 -0
- package/src/http/metrics-listener.ts +57 -0
- package/src/http/path-identifier.ts +54 -0
- package/src/http/registered-route-label.ts +34 -0
- package/src/http/rejection-telemetry.ts +120 -0
- package/src/http/request-body.ts +127 -0
- package/src/http/request-source.ts +154 -13
- package/src/http/sse.ts +88 -28
- package/src/http/unmatched-route.ts +60 -0
- package/src/http/user-content.ts +158 -0
- package/src/http/variable-sets-removed.ts +122 -0
- package/src/http/websocket-upgrade-dispatch.ts +29 -0
- package/src/index.ts +107 -57
- package/src/integration-connect-metrics.ts +228 -0
- package/src/integration-endpoint-test.ts +291 -0
- package/src/integrations/api-integrations.ts +81 -7
- package/src/integrations/atlassian.ts +202 -83
- package/src/integrations/fiken.ts +66 -38
- package/src/integrations/github-app-connect.ts +64 -18
- package/src/integrations/github-lens-connect.ts +8 -29
- package/src/integrations/google-drive.ts +448 -152
- package/src/integrations/integration-commit-authority.ts +69 -0
- package/src/integrations/marketplace-plugin.ts +1 -1
- package/src/integrations/oauth-client.ts +733 -193
- package/src/integrations/oauth-profiles.ts +116 -45
- package/src/integrations/onepassword-vault-provider.ts +16 -0
- package/src/integrations/personal-github-repositories.ts +1 -1
- package/src/integrations/personal-github.ts +61 -35
- package/src/integrations/provider-oauth.ts +67 -85
- package/src/integrations/slack-app-home.ts +5 -5
- package/src/integrations/slack-bot.ts +893 -201
- package/src/integrations/slack-file-upload-flow.ts +147 -0
- package/src/integrations/slack-install.ts +7 -7
- package/src/integrations/slack-interactions.ts +1589 -299
- package/src/integrations/slack-mrkdwn.ts +193 -0
- package/src/integrations/slack-routing.ts +2 -2
- package/src/integrations/slack-session-defaults.ts +224 -0
- package/src/integrations/slack-task-file-upload.ts +323 -0
- package/src/integrations/slack-tool-review.ts +65 -0
- package/src/integrations/social-oauth.ts +90 -58
- package/src/interaction-agent-access.ts +40 -20
- package/src/interaction-agent-version.ts +85 -0
- package/src/interaction-holder-heartbeat.ts +24 -8
- package/src/interaction-metrics.ts +164 -2
- package/src/interaction-route-stages.ts +94 -0
- package/src/interaction-secrets-vault.ts +213 -0
- package/src/interaction-secrets.ts +426 -0
- package/src/mcp/action-catalog-types.ts +14 -0
- package/src/mcp/action-catalog.gen.ts +8014 -0
- package/src/mcp/action-descriptions.ts +299 -0
- package/src/mcp/action-schema-imports.gen.ts +304 -0
- package/src/mcp/capability-account-readiness.ts +17 -0
- package/src/mcp/child-read-evidence.ts +19 -0
- package/src/mcp/company-profile-agent-admin.ts +13 -0
- package/src/mcp/contract-input.ts +165 -0
- package/src/mcp/documents.ts +9 -2
- package/src/mcp/editable-artifacts.ts +29 -11
- package/src/mcp/files.ts +5 -1
- package/src/mcp/first-party-tool-permissions.ts +7 -285
- package/src/mcp/knowledge-entries.ts +108 -34
- package/src/mcp/notification-tools.ts +480 -0
- package/src/mcp/orchestration-failure-diagnostic.ts +43 -0
- package/src/mcp/scheduled-task-input.ts +89 -0
- package/src/mcp/scheduled-task-view.ts +63 -3
- package/src/mcp/secret-tools.ts +185 -0
- package/src/mcp/server.ts +2213 -1116
- package/src/mcp/session-admin-access-tools.ts +163 -0
- package/src/mcp/session-event-errors.ts +123 -0
- package/src/mcp/session-event-view.ts +395 -13
- package/src/mcp/session-view.ts +3 -0
- package/src/mcp/session-wait.ts +67 -7
- package/src/mcp/site-agent-clamp-tools.ts +140 -0
- package/src/mcp/site-data-tools.ts +339 -0
- package/src/mcp/site-publication-tools.ts +201 -0
- package/src/mcp/site-sql-tools.ts +427 -0
- package/src/mcp-oauth.ts +635 -45
- package/src/model-calls/chat-completions.ts +352 -0
- package/src/model-calls/pending-usage-settlements.ts +125 -0
- package/src/model-calls/service.ts +694 -0
- package/src/model-catalog.ts +68 -17
- package/src/native-push-dispatch.ts +457 -0
- package/src/observability.ts +15 -1
- package/src/organization-mcp.ts +485 -0
- package/src/prepared-mcp-actor.ts +154 -0
- package/src/prepared-mcp-permissions.ts +38 -0
- package/src/routes/analytics-consent.ts +123 -0
- package/src/routes/api-integrations.ts +268 -9
- package/src/routes/api-keys.ts +164 -25
- package/src/routes/artifact-catalog.ts +111 -0
- package/src/routes/automations.ts +163 -90
- package/src/routes/billing.ts +535 -59
- package/src/routes/browser-sessions.ts +966 -342
- package/src/routes/canonical-human-identities.ts +61 -0
- package/src/routes/capabilities.ts +112 -5
- package/src/routes/channels.ts +4 -3
- package/src/routes/chat-completions.ts +235 -0
- package/src/routes/claude-core-usage.ts +147 -0
- package/src/routes/claude-subscription-accounts.ts +233 -0
- package/src/routes/claude-subscription-oauth.ts +175 -0
- package/src/routes/client-errors.ts +394 -0
- package/src/routes/codex-core.ts +687 -0
- package/src/routes/codex.ts +1277 -1119
- package/src/routes/company-brain.ts +4 -0
- package/src/routes/computer-sessions.ts +319 -85
- package/src/routes/connect.ts +277 -175
- package/src/routes/connections.ts +690 -363
- package/src/routes/desktop-distribution.ts +217 -0
- package/src/routes/documents.ts +13 -7
- package/src/routes/editable-artifacts.ts +74 -4
- package/src/routes/enrollments.ts +110 -16
- package/src/routes/external-identity-links.ts +13 -12
- package/src/routes/files.ts +41 -16
- package/src/routes/github-browser-fonts.gen.ts +12 -0
- package/src/routes/github-browser-pages.ts +258 -0
- package/src/routes/github.ts +200 -75
- package/src/routes/inbox.ts +353 -0
- package/src/routes/insights-response-cache.ts +83 -0
- package/src/routes/insights-usage.ts +345 -0
- package/src/routes/insights.ts +103 -8
- package/src/routes/install.ts +51 -10
- package/src/routes/integration-facets.ts +70 -28
- package/src/routes/interaction-placement-message.ts +12 -0
- package/src/routes/knowledge.ts +136 -27
- package/src/routes/machines.ts +189 -135
- package/src/routes/managed-auth-session-sets.ts +43 -10
- package/src/routes/managed-onboarding.ts +39 -19
- package/src/routes/managed-sign-in-methods.ts +433 -0
- package/src/routes/memory-slack-publications.ts +3 -2
- package/src/routes/model-account-choice.ts +194 -0
- package/src/routes/model-account-settings.ts +235 -0
- package/src/routes/model-connection-access.ts +210 -48
- package/src/routes/native-app-auth.ts +296 -0
- package/src/routes/organization-integration-policy.ts +116 -0
- package/src/routes/organization-integrations.ts +326 -0
- package/src/routes/organization-mcp-connections.ts +183 -0
- package/src/routes/organization-memberships.ts +205 -19
- package/src/routes/organization-model-defaults.ts +110 -0
- package/src/routes/organization-model-providers.ts +74 -3
- package/src/routes/organization-service-accounts.ts +128 -0
- package/src/routes/organization-sessions.ts +21 -5
- package/src/routes/personal-api-keys.ts +184 -0
- package/src/routes/personal-github-git-broker.ts +2 -2
- package/src/routes/personal-github.ts +9 -4
- package/src/routes/plugins.ts +46 -7
- package/src/routes/pr-review-github.ts +105 -118
- package/src/routes/pr-review.ts +88 -82
- package/src/routes/preference-registry.ts +18 -0
- package/src/routes/rigs.ts +48 -13
- package/src/routes/scheduled-tasks.ts +347 -27
- package/src/routes/session-admin-access.ts +271 -0
- package/src/routes/session-artifact-associations.ts +164 -0
- package/src/routes/session-history-imports.ts +305 -0
- package/src/routes/sessions.ts +1682 -363
- package/src/routes/site-data.ts +340 -0
- package/src/routes/site-publishing.ts +584 -0
- package/src/routes/site-runtime.ts +1944 -0
- package/src/routes/site-sql.ts +263 -0
- package/src/routes/skill-content.ts +72 -7
- package/src/routes/skills.ts +5 -4
- package/src/routes/slack-bot-access.ts +108 -0
- package/src/routes/social.ts +27 -15
- package/src/routes/subscription-account-pools.ts +209 -0
- package/src/routes/subscription-core-http.ts +18 -0
- package/src/routes/subscription-pool-access.ts +180 -0
- package/src/routes/subscription-pool-core.ts +552 -0
- package/src/routes/supergrok.ts +174 -655
- package/src/routes/transcription-recordings.ts +71 -4
- package/src/routes/transcriptions.ts +26 -2
- package/src/routes/usage-allowances.ts +381 -0
- package/src/routes/variable-sets-removed.ts +19 -0
- package/src/routes/vault-providers.ts +782 -0
- package/src/routes/vaults.ts +421 -0
- package/src/routes/video-generation.ts +30 -12
- package/src/routes/workspace-artifacts.ts +165 -53
- package/src/routes/workspace-integrations.ts +576 -0
- package/src/routes/workspace-model-providers.ts +148 -0
- package/src/routes/workspace-state.ts +4 -0
- package/src/routes/workspaces.ts +625 -117
- package/src/sandbox/agent-update.ts +315 -0
- package/src/sandbox/auth-callout.ts +104 -21
- package/src/sandbox/channel-a.ts +165 -55
- package/src/sandbox/enrollment.ts +131 -22
- package/src/sandbox/machine-audience.ts +192 -0
- package/src/sandbox/machines.ts +75 -31
- package/src/sandbox/metrics-ingestion.ts +133 -2
- package/src/sandbox/rematerialize.ts +51 -21
- package/src/sandbox/screen-control.ts +289 -0
- package/src/sandbox/viewer.ts +33 -58
- package/src/sandbox-file-artifacts.ts +53 -27
- package/src/scheduled-task-blockers.ts +293 -0
- package/src/scheduled-task-deletion.ts +13 -3
- package/src/scheduled-task-lifecycle.ts +84 -0
- package/src/secret-answers.ts +119 -0
- package/src/session-create-observability.ts +46 -0
- package/src/session-realtime-context.ts +26 -4
- package/src/signed-state-secret.ts +58 -0
- package/src/site-agent-guard.ts +261 -0
- package/src/site-data/operations.ts +777 -0
- package/src/site-data/service.ts +1043 -0
- package/src/site-frame-guard.ts +107 -0
- package/src/site-publishing/agent-data-tools.ts +250 -0
- package/src/site-publishing/agent-model.ts +127 -0
- package/src/site-publishing/agent-session.ts +148 -0
- package/src/site-publishing/content-scanner.ts +93 -0
- package/src/site-publishing/edge-sync.ts +148 -0
- package/src/site-publishing/gateway-signature.ts +198 -0
- package/src/site-publishing/limits.ts +315 -0
- package/src/site-publishing/page-tool-authority.ts +111 -0
- package/src/site-publishing/platform-usage.ts +479 -0
- package/src/site-publishing/platform.ts +98 -0
- package/src/site-publishing/readiness.ts +330 -0
- package/src/site-publishing/runtime.ts +831 -0
- package/src/site-publishing/service.ts +1282 -0
- package/src/site-publishing/session-events.ts +262 -0
- package/src/site-publishing/session-views.ts +262 -0
- package/src/site-publishing/viewer.ts +75 -0
- package/src/site-session-origin.ts +91 -6
- package/src/site-sql/format.ts +134 -0
- package/src/site-sql/gateway.ts +168 -0
- package/src/site-sql/service.ts +1636 -0
- package/src/site-uploads.ts +27 -5
- package/src/temporal-schedule-sync.ts +74 -0
- package/src/transcription/billing-refusal.ts +14 -0
- package/src/transcription/normalize.ts +77 -0
- package/src/transcription/providers/azure-mai.ts +98 -0
- package/src/transcription/providers/azure-openai.ts +16 -7
- package/src/transcription/providers/codex-subscription.ts +190 -67
- package/src/transcription/providers/openai.ts +79 -5
- package/src/transcription/providers/subscription-core.ts +125 -0
- package/src/transcription/providers/xai-subscription.ts +81 -83
- package/src/transcription/segmenter.ts +7 -1
- package/src/transcription/service.ts +239 -10
- package/src/transcription/wav-duration.ts +39 -0
- package/src/workspace-deletion.ts +25 -1
- package/src/workspace-tool-gateway-attestations.ts +133 -0
- package/src/workspace-tool-gateway-observability.ts +64 -0
- package/src/workspace-tool-gateway-secrets.ts +104 -0
- package/src/workspace-tool-gateway.ts +921 -103
- package/src/workspace-tool-target-fence.ts +380 -0
- package/src/workspace-tool-target.ts +554 -0
- package/src/workspace-webhook-dispatch.ts +225 -0
- package/src/xai-realtime.ts +85 -81
- package/src/xai-subscription-core.ts +172 -0
- package/dist/browser-auth-broker.d.ts +0 -20
- package/dist/chunk-AJ62T5QN.js.map +0 -1
- package/dist/connection-authority-owner.d.ts +0 -59
- package/dist/routes/connection-authorities.d.ts +0 -3
- package/dist/routes/environments.d.ts +0 -5
- package/dist/routes/host-mcp-bindings.d.ts +0 -5
- package/dist/routes/host-mcp-resolvers.d.ts +0 -3
- package/dist/routes/packs.d.ts +0 -3
- package/dist/session-event-view-MU3HMNV3.js +0 -264
- package/dist/session-event-view-MU3HMNV3.js.map +0 -1
- package/dist/xai-subscription-auth.d.ts +0 -23
- package/src/browser-auth-broker.ts +0 -155
- package/src/connection-authority-owner.ts +0 -61
- package/src/routes/connection-authorities.ts +0 -139
- package/src/routes/environments.ts +0 -388
- package/src/routes/host-mcp-bindings.ts +0 -122
- package/src/routes/host-mcp-resolvers.ts +0 -41
- package/src/routes/packs.ts +0 -784
- package/src/xai-subscription-auth.ts +0 -139
|
@@ -0,0 +1,330 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
AccessGrant,
|
|
3
|
+
SitePublishWarningFix,
|
|
4
|
+
SiteAccessMode,
|
|
5
|
+
SiteDataAccessMode,
|
|
6
|
+
SiteDataGuestAccess,
|
|
7
|
+
SitePublishWarning,
|
|
8
|
+
SiteSqlQueryAudience,
|
|
9
|
+
} from "@opengeni/contracts";
|
|
10
|
+
import {
|
|
11
|
+
getPublishedSite,
|
|
12
|
+
getPublishedSiteVersion,
|
|
13
|
+
listSiteSqlQueries,
|
|
14
|
+
type SitePublicationRecord,
|
|
15
|
+
type SitePublishingScope,
|
|
16
|
+
} from "@opengeni/db";
|
|
17
|
+
import type { ApiRouteDeps } from "@opengeni/core";
|
|
18
|
+
import { defineSiteDataCollection } from "../site-data/operations";
|
|
19
|
+
import { siteDataStore } from "../site-data/service";
|
|
20
|
+
import { defineSiteSqlQuery } from "../site-sql/service";
|
|
21
|
+
import { resolveSiteOutsideModel, type SiteOutsideModelChoice } from "./agent-model";
|
|
22
|
+
import { effectiveSiteAccess, siteGuestsAllowed } from "./viewer";
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Publish readiness: what the published version uses that its audience may
|
|
26
|
+
* not do. A conservative static reading of the page (the stored HTML) plus
|
|
27
|
+
* the Site's declared tools, collections and named queries; it never blocks
|
|
28
|
+
* publishing. The heuristics (docs/published-sites.md, "Readiness check"):
|
|
29
|
+
*
|
|
30
|
+
* - a collection is used when the page names it in `collection("name")`; it
|
|
31
|
+
* is written when that expression, or a variable assigned from it, calls
|
|
32
|
+
* insert, put, patch, delete or increment;
|
|
33
|
+
* - a named query is used when the page calls `sql.run("name")`;
|
|
34
|
+
* - workspace tools are used when the version requests tools, or the page
|
|
35
|
+
* calls `tools.<server>.<tool>` or `tools.$call`.
|
|
36
|
+
*
|
|
37
|
+
* Names built at run time are not seen, so a clean result is not a proof.
|
|
38
|
+
*/
|
|
39
|
+
|
|
40
|
+
const NAME = "[A-Za-z][A-Za-z0-9_-]{0,63}";
|
|
41
|
+
const WRITE_METHODS = "insert|put|patch|delete|increment";
|
|
42
|
+
/** Writes beyond adding a record (only `own` guest access allows them). */
|
|
43
|
+
const CHANGE_METHODS = new Set(["put", "patch", "delete", "increment"]);
|
|
44
|
+
/** The most HTML read for the check. */
|
|
45
|
+
export const SITE_READINESS_MAX_HTML_BYTES = 2 * 1024 * 1024;
|
|
46
|
+
|
|
47
|
+
/** Page readings by version id (least recently used first). */
|
|
48
|
+
const SITE_PAGE_USAGE_CACHE = new Map<string, SitePageUsage>();
|
|
49
|
+
const SITE_PAGE_USAGE_CACHE_ENTRIES = 256;
|
|
50
|
+
|
|
51
|
+
export type SitePageUsage = {
|
|
52
|
+
/** Collections the page names, and how it writes them. */
|
|
53
|
+
collections: Map<string, { writes: boolean; changes: boolean }>;
|
|
54
|
+
queries: Set<string>;
|
|
55
|
+
workspaceTools: boolean;
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
const escapeRegExp = (value: string) => value.replace(/[.*+?^${}()|[\]\\]/gu, "\\$&");
|
|
59
|
+
|
|
60
|
+
/** What a page's source uses (see the heuristics above). */
|
|
61
|
+
export function scanSitePageUsage(source: string): SitePageUsage {
|
|
62
|
+
const collections = new Map<string, { writes: boolean; changes: boolean }>();
|
|
63
|
+
const note = (name: string, method: string | undefined) => {
|
|
64
|
+
const entry = collections.get(name) ?? { writes: false, changes: false };
|
|
65
|
+
if (method) {
|
|
66
|
+
entry.writes = true;
|
|
67
|
+
if (CHANGE_METHODS.has(method)) entry.changes = true;
|
|
68
|
+
}
|
|
69
|
+
collections.set(name, entry);
|
|
70
|
+
};
|
|
71
|
+
const direct = new RegExp(
|
|
72
|
+
`collection\\(\\s*(["'\`])(${NAME})\\1\\s*\\)(?:\\s*\\.\\s*(${WRITE_METHODS})\\b)?`,
|
|
73
|
+
"gu",
|
|
74
|
+
);
|
|
75
|
+
for (const match of source.matchAll(direct)) note(match[2]!, match[3]);
|
|
76
|
+
const assigned = new RegExp(
|
|
77
|
+
`\\b([A-Za-z_$][\\w$]*)\\s*=\\s*(?:await\\s+)?[\\w$.]*collection\\(\\s*(["'\`])(${NAME})\\2\\s*\\)\\s*[;,\\n)]`,
|
|
78
|
+
"gu",
|
|
79
|
+
);
|
|
80
|
+
for (const match of source.matchAll(assigned)) {
|
|
81
|
+
const variable = match[1]!;
|
|
82
|
+
const name = match[3]!;
|
|
83
|
+
const calls = new RegExp(
|
|
84
|
+
`(?<![\\w$.])${escapeRegExp(variable)}\\s*\\.\\s*(${WRITE_METHODS})\\s*\\(`,
|
|
85
|
+
"gu",
|
|
86
|
+
);
|
|
87
|
+
for (const call of source.matchAll(calls)) note(name, call[1]);
|
|
88
|
+
}
|
|
89
|
+
const queries = new Set<string>();
|
|
90
|
+
for (const match of source.matchAll(
|
|
91
|
+
new RegExp(`sql\\s*\\.\\s*run\\(\\s*(["'\`])(${NAME})\\1`, "gu"),
|
|
92
|
+
))
|
|
93
|
+
queries.add(match[2]!);
|
|
94
|
+
const workspaceTools =
|
|
95
|
+
/\btools\s*\.\s*\$call\s*\(/u.test(source) ||
|
|
96
|
+
/\btools\s*\.\s*(?!\$)[A-Za-z_][\w$]*\s*\.\s*[A-Za-z_][\w$]*\s*\(/u.test(source);
|
|
97
|
+
return { collections, queries, workspaceTools };
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
export type SiteReadinessInput = {
|
|
101
|
+
access: SiteAccessMode;
|
|
102
|
+
/** Anonymous visitors are admitted (public, and not a login-only deployment). */
|
|
103
|
+
guestsAllowed: boolean;
|
|
104
|
+
page: SitePageUsage | null;
|
|
105
|
+
/** The page was too large to read (SITE_READINESS_MAX_HTML_BYTES). */
|
|
106
|
+
pageTooLarge?: boolean;
|
|
107
|
+
requestedTools: number;
|
|
108
|
+
agent: { enabled: boolean; tools: readonly string[] | null };
|
|
109
|
+
collections: ReadonlyArray<{
|
|
110
|
+
name: string;
|
|
111
|
+
accessMode: SiteDataAccessMode;
|
|
112
|
+
guestAccess: SiteDataGuestAccess;
|
|
113
|
+
}>;
|
|
114
|
+
queries: ReadonlyArray<{ name: string; audience: SiteSqlQueryAudience }>;
|
|
115
|
+
outsideModel: SiteOutsideModelChoice | null;
|
|
116
|
+
};
|
|
117
|
+
|
|
118
|
+
function audienceLabel(input: Pick<SiteReadinessInput, "access" | "guestsAllowed">): string {
|
|
119
|
+
if (input.access === "invited") return "invited people";
|
|
120
|
+
return input.guestsAllowed ? "public visitors" : "people outside the workspace";
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
/** The warnings for a members-only Site are none: members may do everything the page does. */
|
|
124
|
+
export function siteReadinessWarnings(input: SiteReadinessInput): SitePublishWarning[] {
|
|
125
|
+
if (input.access === "members") return [];
|
|
126
|
+
const who = audienceLabel(input);
|
|
127
|
+
const Who = who.charAt(0).toUpperCase() + who.slice(1);
|
|
128
|
+
const warnings: SitePublishWarning[] = [];
|
|
129
|
+
const add = (warning: Omit<SitePublishWarning, "fix"> & { fix?: SitePublishWarning["fix"] }) =>
|
|
130
|
+
warnings.push({ fix: null, ...warning });
|
|
131
|
+
if (input.requestedTools > 0 || input.page?.workspaceTools)
|
|
132
|
+
add({
|
|
133
|
+
code: "workspace_tools_members_only",
|
|
134
|
+
message: `The page uses workspace tools, which require workspace membership; ${who} on the published Site can't use them.`,
|
|
135
|
+
suggestion: "Build the page on Site Data and Site SQL instead, or publish to members only.",
|
|
136
|
+
});
|
|
137
|
+
if (input.agent.enabled && (input.agent.tools?.length ?? 0) > 0)
|
|
138
|
+
add({
|
|
139
|
+
code: "agent_tools_members_only",
|
|
140
|
+
message: `The assistant's workspace tools are only for workspace members who may use connections; ${who} get none.`,
|
|
141
|
+
suggestion: "Let the assistant answer from the page and the Site's own data for them.",
|
|
142
|
+
});
|
|
143
|
+
const byName = new Map(input.collections.map((collection) => [collection.name, collection]));
|
|
144
|
+
for (const [name, use] of input.page?.collections ?? []) {
|
|
145
|
+
const collection = byName.get(name);
|
|
146
|
+
if (!collection) continue;
|
|
147
|
+
if (use.writes && collection.accessMode === "shared_read")
|
|
148
|
+
add({
|
|
149
|
+
code: "site_data_members_write",
|
|
150
|
+
message: `${Who} can read ${name} but can't save to it: only the Site's managers write it.`,
|
|
151
|
+
suggestion: `Change ${name} to shared, per_viewer or append_only, or publish to members only.`,
|
|
152
|
+
});
|
|
153
|
+
if (!input.guestsAllowed) continue;
|
|
154
|
+
const guestAccess = collection.guestAccess;
|
|
155
|
+
if (use.writes && guestAccess !== "append" && guestAccess !== "own") {
|
|
156
|
+
const needed = use.changes ? "own" : "append";
|
|
157
|
+
add({
|
|
158
|
+
code: "site_data_guest_write",
|
|
159
|
+
message: `${name} can't be saved by anonymous public visitors.`,
|
|
160
|
+
suggestion: `Allow guests to ${needed === "own" ? "add and change their own" : "add"} ${name}, or publish to invited people only.`,
|
|
161
|
+
fix: { kind: "site_data_guest_access", collection: name, guestAccess: needed },
|
|
162
|
+
});
|
|
163
|
+
} else if (use.changes && guestAccess === "append")
|
|
164
|
+
add({
|
|
165
|
+
code: "site_data_guest_write",
|
|
166
|
+
message: `Anonymous public visitors can add to ${name} but can't change or delete what they added.`,
|
|
167
|
+
suggestion: `Allow guests to change their own ${name}, or publish to invited people only.`,
|
|
168
|
+
fix: { kind: "site_data_guest_access", collection: name, guestAccess: "own" },
|
|
169
|
+
});
|
|
170
|
+
else if (!use.writes && guestAccess === "none")
|
|
171
|
+
add({
|
|
172
|
+
code: "site_data_guest_read",
|
|
173
|
+
message: `${name} can't be read by anonymous public visitors.`,
|
|
174
|
+
suggestion: `Allow guests to read ${name}, or publish to invited people only.`,
|
|
175
|
+
fix: { kind: "site_data_guest_access", collection: name, guestAccess: "read" },
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
const queries = new Map(input.queries.map((query) => [query.name, query]));
|
|
179
|
+
for (const name of input.page?.queries ?? []) {
|
|
180
|
+
const query = queries.get(name);
|
|
181
|
+
if (!query) continue;
|
|
182
|
+
const audience = input.guestsAllowed ? "everyone" : "signed_in";
|
|
183
|
+
if (query.audience === "managers")
|
|
184
|
+
add({
|
|
185
|
+
code: "site_sql_query_managers",
|
|
186
|
+
message: `The query ${name} is for the Site's managers only, so the page can't run it for ${who}.`,
|
|
187
|
+
suggestion: `Let ${input.guestsAllowed ? "everyone" : "signed-in viewers"} run ${name}, or publish to members only.`,
|
|
188
|
+
fix: { kind: "site_sql_query_audience", query: name, audience },
|
|
189
|
+
});
|
|
190
|
+
else if (query.audience === "signed_in" && input.guestsAllowed)
|
|
191
|
+
add({
|
|
192
|
+
code: "site_sql_query_signed_in",
|
|
193
|
+
message: `The query ${name} needs a signed-in viewer, so anonymous public visitors can't run it.`,
|
|
194
|
+
suggestion: `Let everyone run ${name}, or publish to invited people only.`,
|
|
195
|
+
fix: { kind: "site_sql_query_audience", query: name, audience: "everyone" },
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
if (input.pageTooLarge)
|
|
199
|
+
add({
|
|
200
|
+
code: "page_not_checked",
|
|
201
|
+
message: `The page is too large to check, so it may use things ${who} can't.`,
|
|
202
|
+
suggestion: "Open it with View as visitor to try it as they would.",
|
|
203
|
+
});
|
|
204
|
+
// A working credit-billed fallback is not a problem: the publish dialog
|
|
205
|
+
// shows it as one quiet line (outsideAgentModel), not as a warning.
|
|
206
|
+
if (input.agent.enabled && input.outsideModel?.kind === "unavailable")
|
|
207
|
+
add({
|
|
208
|
+
code: "agent_model_outside_unavailable",
|
|
209
|
+
message: `The assistant uses a subscription, and this workspace has no credit-billed model, so ${who} can't use it.`,
|
|
210
|
+
suggestion: "Pick a credit-billed model for the Site's assistant.",
|
|
211
|
+
});
|
|
212
|
+
return warnings.slice(0, 50);
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
export type SiteReadiness = {
|
|
216
|
+
warnings: SitePublishWarning[];
|
|
217
|
+
/** The model people outside the workspace use instead of a subscription model. */
|
|
218
|
+
outsideAgentModel: string | null;
|
|
219
|
+
};
|
|
220
|
+
|
|
221
|
+
/**
|
|
222
|
+
* The readiness of a publication's current version. Any read that fails
|
|
223
|
+
* (no storage, a missing version) leaves that part out rather than failing
|
|
224
|
+
* the publication view.
|
|
225
|
+
*/
|
|
226
|
+
export async function readSitePublicationReadiness(
|
|
227
|
+
deps: Pick<ApiRouteDeps, "db" | "settings" | "objectStorage">,
|
|
228
|
+
scope: SitePublishingScope,
|
|
229
|
+
publication: Pick<SitePublicationRecord, "siteId" | "access" | "agent">,
|
|
230
|
+
): Promise<SiteReadiness> {
|
|
231
|
+
const access = effectiveSiteAccess(publication.access, deps.settings);
|
|
232
|
+
if (access === "members") return { warnings: [], outsideAgentModel: null };
|
|
233
|
+
const siteScope = { ...scope, siteId: publication.siteId };
|
|
234
|
+
const outsideModel = publication.agent.enabled
|
|
235
|
+
? await resolveSiteOutsideModel(deps, scope, {
|
|
236
|
+
siteId: publication.siteId,
|
|
237
|
+
agentModel: publication.agent.model,
|
|
238
|
+
}).catch(() => null)
|
|
239
|
+
: null;
|
|
240
|
+
const site = await getPublishedSite(deps.db, scope, publication.siteId).catch(() => null);
|
|
241
|
+
const version = site?.currentVersionId
|
|
242
|
+
? await getPublishedSiteVersion(
|
|
243
|
+
deps.db,
|
|
244
|
+
scope,
|
|
245
|
+
publication.siteId,
|
|
246
|
+
site.currentVersionId,
|
|
247
|
+
).catch(() => null)
|
|
248
|
+
: null;
|
|
249
|
+
const pageTooLarge = version !== null && version.sizeBytes > SITE_READINESS_MAX_HTML_BYTES;
|
|
250
|
+
let page: SitePageUsage | null = null;
|
|
251
|
+
if (version && deps.objectStorage && !pageTooLarge) {
|
|
252
|
+
// A version's content never changes, so its reading is cached by id.
|
|
253
|
+
page = SITE_PAGE_USAGE_CACHE.get(version.id) ?? null;
|
|
254
|
+
if (page) {
|
|
255
|
+
SITE_PAGE_USAGE_CACHE.delete(version.id);
|
|
256
|
+
} else {
|
|
257
|
+
const bytes = await deps.objectStorage.getObjectBytes(version.contentKey).catch(() => null);
|
|
258
|
+
if (bytes) page = scanSitePageUsage(new TextDecoder().decode(bytes.bytes));
|
|
259
|
+
}
|
|
260
|
+
if (page) {
|
|
261
|
+
SITE_PAGE_USAGE_CACHE.set(version.id, page);
|
|
262
|
+
if (SITE_PAGE_USAGE_CACHE.size > SITE_PAGE_USAGE_CACHE_ENTRIES)
|
|
263
|
+
SITE_PAGE_USAGE_CACHE.delete(SITE_PAGE_USAGE_CACHE.keys().next().value!);
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
const [described, queries] = await Promise.all([
|
|
267
|
+
page && page.collections.size > 0
|
|
268
|
+
? siteDataStore(deps.db)
|
|
269
|
+
.describe(siteScope)
|
|
270
|
+
.catch(() => null)
|
|
271
|
+
: null,
|
|
272
|
+
page && page.queries.size > 0 ? listSiteSqlQueries(deps.db, siteScope).catch(() => []) : [],
|
|
273
|
+
]);
|
|
274
|
+
return {
|
|
275
|
+
warnings: siteReadinessWarnings({
|
|
276
|
+
access,
|
|
277
|
+
guestsAllowed: siteGuestsAllowed(publication.access, deps.settings),
|
|
278
|
+
page,
|
|
279
|
+
pageTooLarge,
|
|
280
|
+
requestedTools: version?.requestedTools.length ?? 0,
|
|
281
|
+
agent: { enabled: publication.agent.enabled, tools: publication.agent.tools },
|
|
282
|
+
collections: described?.collections ?? [],
|
|
283
|
+
queries,
|
|
284
|
+
outsideModel,
|
|
285
|
+
}),
|
|
286
|
+
outsideAgentModel: outsideModel?.kind === "fallback" ? outsideModel.model : null,
|
|
287
|
+
};
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
/**
|
|
291
|
+
* Apply a readiness warning's safe fix through the ordinary definition
|
|
292
|
+
* paths (the same checks as defining the collection or query by hand): a
|
|
293
|
+
* collection's guest access, or a named query's audience. Everything else
|
|
294
|
+
* about the collection or query stays as it is.
|
|
295
|
+
*/
|
|
296
|
+
export async function applySitePublishWarningFix(
|
|
297
|
+
deps: ApiRouteDeps,
|
|
298
|
+
grant: AccessGrant,
|
|
299
|
+
scope: SitePublishingScope,
|
|
300
|
+
siteId: string,
|
|
301
|
+
fix: SitePublishWarningFix,
|
|
302
|
+
): Promise<void> {
|
|
303
|
+
const siteScope = { ...scope, siteId };
|
|
304
|
+
if (fix.kind === "site_data_guest_access") {
|
|
305
|
+
const collection = await siteDataStore(deps.db).getCollection(siteScope, fix.collection);
|
|
306
|
+
if (!collection)
|
|
307
|
+
throw new SiteFixTargetMissing(`There is no collection named ${fix.collection}`);
|
|
308
|
+
await defineSiteDataCollection(deps, grant, siteId, collection.name, {
|
|
309
|
+
accessMode: collection.accessMode,
|
|
310
|
+
privateRecords: collection.privateRecords,
|
|
311
|
+
guestAccess: fix.guestAccess,
|
|
312
|
+
jsonSchema: collection.jsonSchema,
|
|
313
|
+
indexedFields: collection.indexedFields,
|
|
314
|
+
uniqueFields: collection.uniqueFields,
|
|
315
|
+
});
|
|
316
|
+
return;
|
|
317
|
+
}
|
|
318
|
+
const query = (await listSiteSqlQueries(deps.db, siteScope)).find(
|
|
319
|
+
(candidate) => candidate.name === fix.query,
|
|
320
|
+
);
|
|
321
|
+
if (!query) throw new SiteFixTargetMissing(`There is no query named ${fix.query}`);
|
|
322
|
+
await defineSiteSqlQuery(deps, grant, siteId, query.name, {
|
|
323
|
+
sql: query.sql,
|
|
324
|
+
audience: fix.audience,
|
|
325
|
+
...(query.description ? { description: query.description } : {}),
|
|
326
|
+
...(query.maxRows ? { maxRows: query.maxRows } : {}),
|
|
327
|
+
});
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
export class SiteFixTargetMissing extends Error {}
|