@capybara-hq/kernel 0.1.0-rc.2 → 0.1.0-rc.20
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/bootstrap.json +85 -5
- package/dist/admin/admin-agents.controller.d.ts +28 -0
- package/dist/admin/admin-agents.controller.js +79 -0
- package/dist/admin/admin-connectors.controller.d.ts +29 -0
- package/dist/admin/admin-connectors.controller.js +79 -0
- package/dist/admin/admin-items.schemas.d.ts +42 -0
- package/dist/admin/admin-items.schemas.js +48 -0
- package/dist/admin/admin.controller.d.ts +52 -80
- package/dist/admin/admin.controller.js +112 -81
- package/dist/admin/admin.module.d.ts +4 -1
- package/dist/admin/admin.module.js +50 -4
- package/dist/admin/admin.schemas.d.ts +69 -0
- package/dist/admin/admin.schemas.js +53 -0
- package/dist/admin/audit.controller.d.ts +14 -0
- package/dist/admin/audit.controller.js +42 -0
- package/dist/admin/audit.schemas.d.ts +8 -0
- package/dist/admin/audit.schemas.js +17 -0
- package/dist/admin/extensions.controller.d.ts +34 -3
- package/dist/admin/extensions.controller.js +66 -8
- package/dist/admin/extensions.schemas.d.ts +7 -0
- package/dist/admin/extensions.schemas.js +10 -0
- package/dist/admin/health.service.d.ts +104 -0
- package/dist/admin/health.service.js +246 -0
- package/dist/admin/limit-defaults.d.ts +20 -0
- package/dist/admin/limit-defaults.js +10 -0
- package/dist/admin/overview.controller.d.ts +31 -0
- package/dist/admin/overview.controller.js +78 -0
- package/dist/admin/overview.schemas.d.ts +8 -0
- package/dist/admin/overview.schemas.js +13 -0
- package/dist/admin/overview.service.d.ts +112 -0
- package/dist/admin/overview.service.js +223 -0
- package/dist/admin/platform-audit.service.d.ts +41 -0
- package/dist/admin/platform-audit.service.js +70 -0
- package/dist/admin/setup-lock.d.ts +1 -1
- package/dist/admin/setup-lock.js +1 -1
- package/dist/admin/setup.controller.d.ts +1 -1
- package/dist/admin/setup.controller.js +1 -1
- package/dist/admin/setup.service.d.ts +4 -4
- package/dist/admin/setup.service.js +8 -8
- package/dist/admin/usage.service.d.ts +149 -0
- package/dist/admin/usage.service.js +321 -0
- package/dist/agents/admin-agents.d.ts +92 -0
- package/dist/agents/admin-agents.js +170 -0
- package/dist/agents/agent-lookup.d.ts +24 -0
- package/dist/agents/agent-lookup.js +46 -2
- package/dist/agents/agent-profile.service.d.ts +31 -0
- package/dist/agents/agent-profile.service.js +122 -0
- package/dist/agents/agents.controller.d.ts +53 -168
- package/dist/agents/agents.controller.js +163 -34
- package/dist/agents/agents.module.d.ts +6 -2
- package/dist/agents/agents.module.js +41 -7
- package/dist/agents/agents.schemas.d.ts +392 -0
- package/dist/agents/agents.schemas.js +126 -0
- package/dist/agents/agents.service.d.ts +121 -36
- package/dist/agents/agents.service.js +411 -121
- package/dist/agents/definition.d.ts +142 -21
- package/dist/agents/definition.js +389 -43
- package/dist/agents/from-template.d.ts +106 -0
- package/dist/agents/from-template.js +680 -0
- package/dist/agents/from-template.service.d.ts +72 -0
- package/dist/agents/from-template.service.js +178 -0
- package/dist/agents/instruction-files.d.ts +60 -0
- package/dist/agents/instruction-files.js +111 -0
- package/dist/agents/models.controller.d.ts +44 -6
- package/dist/agents/models.controller.js +84 -8
- package/dist/agents/org-templates.d.ts +186 -0
- package/dist/agents/org-templates.js +876 -0
- package/dist/agents/pending-connector-requests.d.ts +79 -0
- package/dist/agents/pending-connector-requests.js +215 -0
- package/dist/agents/pending-connectors.controller.d.ts +39 -0
- package/dist/agents/pending-connectors.controller.js +91 -0
- package/dist/agents/pending-connectors.service.d.ts +62 -0
- package/dist/agents/pending-connectors.service.js +282 -0
- package/dist/agents/profile.d.ts +114 -0
- package/dist/agents/profile.js +55 -0
- package/dist/agents/readiness.controller.d.ts +26 -0
- package/dist/agents/readiness.controller.js +56 -0
- package/dist/agents/templates.controller.d.ts +77 -5
- package/dist/agents/templates.controller.js +153 -7
- package/dist/agents/templates.d.ts +127 -23
- package/dist/agents/templates.js +482 -44
- package/dist/agents/templates.schemas.d.ts +20 -0
- package/dist/agents/templates.schemas.js +45 -0
- package/dist/background/background.controller.d.ts +38 -0
- package/dist/background/background.controller.js +88 -0
- package/dist/background/background.module.d.ts +10 -0
- package/dist/background/background.module.js +39 -0
- package/dist/background/background.schemas.d.ts +10 -0
- package/dist/background/background.schemas.js +16 -0
- package/dist/background/finish.d.ts +44 -0
- package/dist/background/finish.js +95 -0
- package/dist/background/launch-lock.d.ts +15 -0
- package/dist/background/launch-lock.js +40 -0
- package/dist/background/launch.d.ts +42 -0
- package/dist/background/launch.js +77 -0
- package/dist/background/poll.job.d.ts +56 -0
- package/dist/background/poll.job.js +195 -0
- package/dist/background/render.d.ts +23 -0
- package/dist/background/render.js +48 -0
- package/dist/background/session.d.ts +48 -0
- package/dist/background/session.js +80 -0
- package/dist/background/status.d.ts +35 -0
- package/dist/background/status.js +57 -0
- package/dist/background/stop.d.ts +68 -0
- package/dist/background/stop.js +244 -0
- package/dist/background/store.d.ts +167 -0
- package/dist/background/store.js +361 -0
- package/dist/background/store.module.d.ts +6 -0
- package/dist/background/store.module.js +22 -0
- package/dist/background/tasks.service.d.ts +109 -0
- package/dist/background/tasks.service.js +271 -0
- package/dist/background/wake-rules.d.ts +66 -0
- package/dist/background/wake-rules.js +113 -0
- package/dist/background/wake.d.ts +30 -0
- package/dist/background/wake.js +63 -0
- package/dist/catalog/admin-catalog.controller.d.ts +136 -52
- package/dist/catalog/admin-catalog.controller.js +275 -65
- package/dist/catalog/admin-catalog.schemas.d.ts +82 -0
- package/dist/catalog/admin-catalog.schemas.js +99 -0
- package/dist/catalog/appearance.schemas.d.ts +10 -0
- package/dist/catalog/appearance.schemas.js +20 -0
- package/dist/catalog/appearance.service.d.ts +105 -0
- package/dist/catalog/appearance.service.js +306 -0
- package/dist/catalog/catalog-content.d.ts +122 -35
- package/dist/catalog/catalog-content.js +122 -14
- package/dist/catalog/catalog-files.d.ts +42 -0
- package/dist/catalog/catalog-files.js +89 -0
- package/dist/catalog/catalog-import.module.d.ts +7 -0
- package/dist/catalog/catalog-import.module.js +63 -0
- package/dist/catalog/catalog-items.d.ts +122 -7
- package/dist/catalog/catalog-items.js +301 -13
- package/dist/catalog/catalog-scope.service.d.ts +293 -0
- package/dist/catalog/catalog-scope.service.js +1236 -0
- package/dist/catalog/catalog.module.d.ts +7 -9
- package/dist/catalog/catalog.module.js +47 -31
- package/dist/catalog/catalog.service.d.ts +122 -31
- package/dist/catalog/catalog.service.js +177 -105
- package/dist/catalog/claude/agents.js +15 -10
- package/dist/catalog/claude/translate.js +3 -0
- package/dist/catalog/cli.d.ts +11 -1
- package/dist/catalog/cli.js +29 -1
- package/dist/catalog/component-promotion.d.ts +96 -0
- package/dist/catalog/component-promotion.js +395 -0
- package/dist/catalog/component-scope.controller.d.ts +102 -0
- package/dist/catalog/component-scope.controller.js +257 -0
- package/dist/catalog/component-scope.schemas.d.ts +118 -0
- package/dist/catalog/component-scope.schemas.js +97 -0
- package/dist/catalog/component-scope.service.d.ts +394 -0
- package/dist/catalog/component-scope.service.js +1133 -0
- package/dist/catalog/component-state.d.ts +207 -0
- package/dist/catalog/component-state.js +484 -0
- package/dist/catalog/git-source.d.ts +9 -1
- package/dist/catalog/git-source.js +29 -2
- package/dist/catalog/job-ids.d.ts +30 -0
- package/dist/catalog/job-ids.js +25 -0
- package/dist/catalog/marketplace-fetch.d.ts +1 -1
- package/dist/catalog/marketplace-icons.d.ts +64 -0
- package/dist/catalog/marketplace-icons.js +131 -0
- package/dist/catalog/marketplaces.controller.d.ts +50 -41
- package/dist/catalog/marketplaces.controller.js +130 -46
- package/dist/catalog/marketplaces.schemas.d.ts +48 -0
- package/dist/catalog/marketplaces.schemas.js +53 -0
- package/dist/catalog/marketplaces.service.d.ts +110 -17
- package/dist/catalog/marketplaces.service.js +337 -29
- package/dist/catalog/org-catalog.controller.d.ts +114 -62
- package/dist/catalog/org-catalog.controller.js +191 -98
- package/dist/catalog/org-catalog.schemas.d.ts +104 -0
- package/dist/catalog/org-catalog.schemas.js +107 -0
- package/dist/catalog/org-catalog.service.d.ts +72 -33
- package/dist/catalog/org-catalog.service.js +367 -158
- package/dist/catalog/org-extension-switch.d.ts +41 -0
- package/dist/catalog/org-extension-switch.js +115 -0
- package/dist/catalog/org-extension.controller.d.ts +133 -0
- package/dist/catalog/org-extension.controller.js +313 -0
- package/dist/catalog/org-extension.schemas.d.ts +15 -0
- package/dist/catalog/org-extension.schemas.js +22 -0
- package/dist/catalog/org-plugin-uploads.controller.d.ts +77 -0
- package/dist/catalog/org-plugin-uploads.controller.js +200 -0
- package/dist/catalog/org-plugin-uploads.d.ts +71 -0
- package/dist/catalog/org-plugin-uploads.js +122 -0
- package/dist/catalog/org-plugin-uploads.schemas.d.ts +20 -0
- package/dist/catalog/org-plugin-uploads.schemas.js +32 -0
- package/dist/catalog/owned-items.d.ts +188 -0
- package/dist/catalog/owned-items.js +808 -0
- package/dist/catalog/owned-plugin-cleanup.d.ts +56 -0
- package/dist/catalog/owned-plugin-cleanup.js +194 -0
- package/dist/catalog/ownership.d.ts +172 -0
- package/dist/catalog/ownership.js +326 -0
- package/dist/catalog/platform-components.d.ts +243 -0
- package/dist/catalog/platform-components.js +872 -0
- package/dist/catalog/platform-migration.d.ts +115 -0
- package/dist/catalog/platform-migration.js +583 -0
- package/dist/catalog/plugin-import.d.ts +254 -47
- package/dist/catalog/plugin-import.js +810 -112
- package/dist/catalog/plugin-install.d.ts +205 -42
- package/dist/catalog/plugin-install.js +828 -126
- package/dist/catalog/plugin-package.d.ts +43 -4
- package/dist/catalog/plugin-package.js +194 -7
- package/dist/catalog/plugin-upgrade.d.ts +308 -225
- package/dist/catalog/plugin-upgrade.js +1325 -1131
- package/dist/catalog/request-rules.d.ts +65 -0
- package/dist/catalog/request-rules.js +217 -0
- package/dist/catalog/requests.service.d.ts +194 -118
- package/dist/catalog/requests.service.js +530 -343
- package/dist/catalog/reserved-names.d.ts +8 -0
- package/dist/catalog/reserved-names.js +42 -0
- package/dist/catalog/scope-orgs.d.ts +21 -0
- package/dist/catalog/scope-orgs.js +67 -0
- package/dist/catalog/scope-state.d.ts +35 -0
- package/dist/catalog/scope-state.js +87 -0
- package/dist/catalog/scope-sync-workers.d.ts +7 -0
- package/dist/catalog/scope-sync-workers.js +29 -0
- package/dist/catalog/scope-sync.d.ts +176 -0
- package/dist/catalog/scope-sync.js +576 -0
- package/dist/catalog/scope.d.ts +42 -0
- package/dist/catalog/scope.js +42 -0
- package/dist/catalog/unshare.d.ts +22 -0
- package/dist/catalog/unshare.js +119 -0
- package/dist/channels/actions.js +10 -3
- package/dist/channels/cards.d.ts +36 -10
- package/dist/channels/cards.js +100 -25
- package/dist/channels/channels.module.js +13 -2
- package/dist/channels/channels.schemas.d.ts +41 -0
- package/dist/channels/channels.schemas.js +40 -0
- package/dist/channels/connections.controller.d.ts +46 -37
- package/dist/channels/connections.controller.js +76 -34
- package/dist/channels/connections.service.d.ts +102 -10
- package/dist/channels/connections.service.js +271 -24
- package/dist/channels/inbound.d.ts +11 -1
- package/dist/channels/inbound.js +87 -7
- package/dist/channels/outbound.d.ts +14 -1
- package/dist/channels/outbound.js +64 -15
- package/dist/channels/phrases.d.ts +33 -2
- package/dist/channels/phrases.js +29 -1
- package/dist/channels/supervisor.d.ts +2 -0
- package/dist/channels/supervisor.js +4 -0
- package/dist/channels/threads.d.ts +5 -0
- package/dist/channels/threads.js +8 -0
- package/dist/channels/webhook.d.ts +21 -1
- package/dist/channels/webhook.js +39 -4
- package/dist/client/client-access.service.d.ts +102 -0
- package/dist/client/client-access.service.js +303 -0
- package/dist/client/client-builds.service.d.ts +109 -0
- package/dist/client/client-builds.service.js +229 -0
- package/dist/client/client-delivery.controller.d.ts +25 -0
- package/dist/client/client-delivery.controller.js +66 -0
- package/dist/client/client-files.d.ts +48 -0
- package/dist/client/client-files.js +136 -0
- package/dist/client/client-reports.cron.d.ts +13 -0
- package/dist/client/client-reports.cron.js +42 -0
- package/dist/client/client-reports.service.d.ts +30 -0
- package/dist/client/client-reports.service.js +102 -0
- package/dist/client/client-sign-in.service.d.ts +21 -0
- package/dist/client/client-sign-in.service.js +49 -0
- package/dist/client/client.controller.d.ts +49 -0
- package/dist/client/client.controller.js +129 -0
- package/dist/client/client.module.d.ts +8 -0
- package/dist/client/client.module.js +28 -0
- package/dist/client/client.schemas.d.ts +61 -0
- package/dist/client/client.schemas.js +27 -0
- package/dist/config/docs.js +5 -1
- package/dist/config/schema.d.ts +35 -2
- package/dist/config/schema.js +216 -21
- package/dist/conversations/access.d.ts +6 -4
- package/dist/conversations/access.js +29 -5
- package/dist/conversations/agent-tree.d.ts +46 -0
- package/dist/conversations/agent-tree.js +92 -0
- package/dist/conversations/artifacts.d.ts +1 -1
- package/dist/conversations/artifacts.js +1 -1
- package/dist/conversations/attachments.service.d.ts +30 -0
- package/dist/conversations/attachments.service.js +130 -5
- package/dist/conversations/conversations.controller.d.ts +79 -44
- package/dist/conversations/conversations.controller.js +133 -82
- package/dist/conversations/conversations.module.d.ts +1 -1
- package/dist/conversations/conversations.module.js +10 -7
- package/dist/conversations/conversations.schemas.d.ts +52 -0
- package/dist/conversations/conversations.schemas.js +79 -0
- package/dist/conversations/conversations.service.d.ts +161 -13
- package/dist/conversations/conversations.service.js +329 -57
- package/dist/conversations/device-status.d.ts +24 -0
- package/dist/conversations/device-status.js +71 -0
- package/dist/conversations/event-log.d.ts +45 -9
- package/dist/conversations/event-log.js +113 -6
- package/dist/conversations/events.d.ts +255 -9
- package/dist/conversations/events.js +250 -34
- package/dist/conversations/message-context.d.ts +79 -0
- package/dist/conversations/message-context.js +145 -0
- package/dist/conversations/queue.d.ts +5 -2
- package/dist/conversations/queue.js +24 -4
- package/dist/conversations/queue.service.d.ts +2 -2
- package/dist/conversations/queue.service.js +21 -3
- package/dist/conversations/titles.d.ts +12 -3
- package/dist/conversations/titles.js +40 -16
- package/dist/conversations/tree.d.ts +17 -0
- package/dist/conversations/tree.js +42 -0
- package/dist/ctx/create-ctx.d.ts +48 -5
- package/dist/ctx/create-ctx.js +174 -34
- package/dist/db/kernel-schema.d.ts +668 -27
- package/dist/db/pool.d.ts +5 -0
- package/dist/db/pool.js +3 -0
- package/dist/devices/access.d.ts +66 -0
- package/dist/devices/access.js +113 -0
- package/dist/devices/conversation-devices.d.ts +75 -0
- package/dist/devices/conversation-devices.js +230 -0
- package/dist/devices/devices.controller.d.ts +36 -0
- package/dist/devices/devices.controller.js +124 -0
- package/dist/devices/devices.module.d.ts +8 -0
- package/dist/devices/devices.module.js +34 -0
- package/dist/devices/devices.schemas.d.ts +3 -0
- package/dist/devices/devices.schemas.js +14 -0
- package/dist/devices/devices.service.d.ts +251 -0
- package/dist/devices/devices.service.js +791 -0
- package/dist/devices/dto.d.ts +25 -0
- package/dist/devices/dto.js +12 -0
- package/dist/devices/label.d.ts +11 -0
- package/dist/devices/label.js +25 -0
- package/dist/devices/legacy-cleanup.job.d.ts +34 -0
- package/dist/devices/legacy-cleanup.job.js +141 -0
- package/dist/errors.d.ts +215 -3
- package/dist/errors.js +215 -3
- package/dist/evals/evals.module.js +11 -2
- package/dist/evals/evals.schemas.d.ts +110 -0
- package/dist/evals/evals.schemas.js +107 -0
- package/dist/evals/reconstruct.d.ts +18 -9
- package/dist/evals/reconstruct.js +36 -10
- package/dist/evals/recorded-tools.d.ts +37 -1
- package/dist/evals/recorded-tools.js +120 -10
- package/dist/evals/run-replay.d.ts +20 -3
- package/dist/evals/run-replay.js +78 -14
- package/dist/evals/runs.controller.d.ts +2 -57
- package/dist/evals/runs.controller.js +1 -42
- package/dist/evals/runs.service.d.ts +8 -7
- package/dist/evals/runs.service.js +45 -30
- package/dist/evals/sets.controller.d.ts +2 -28
- package/dist/evals/sets.controller.js +1 -31
- package/dist/evals/sets.service.d.ts +7 -7
- package/dist/evals/sets.service.js +23 -17
- package/dist/evals/snapshot.d.ts +3 -2
- package/dist/evals/snapshot.js +17 -4
- package/dist/evals/step-replay.d.ts +4 -6
- package/dist/evals/step-replay.js +16 -9
- package/dist/evals/trajectory.d.ts +5 -3
- package/dist/evals/trajectory.js +4 -1
- package/dist/evals/trajectory.service.d.ts +8 -3
- package/dist/evals/trajectory.service.js +26 -14
- package/dist/evals/worker.d.ts +5 -5
- package/dist/evals/worker.js +9 -3
- package/dist/extensions/admin-ops.d.ts +81 -14
- package/dist/extensions/admin-ops.js +181 -47
- package/dist/extensions/admin-view.d.ts +57 -10
- package/dist/extensions/admin-view.js +249 -27
- package/dist/extensions/approvals.d.ts +12 -2
- package/dist/extensions/blobs.d.ts +14 -1
- package/dist/extensions/blobs.js +49 -5
- package/dist/extensions/bootstrap.d.ts +41 -5
- package/dist/extensions/bootstrap.js +121 -19
- package/dist/extensions/cli.d.ts +12 -0
- package/dist/extensions/cli.js +11 -2
- package/dist/extensions/config-hash.d.ts +10 -0
- package/dist/extensions/config-hash.js +38 -0
- package/dist/extensions/config-issues.d.ts +13 -1
- package/dist/extensions/config-issues.js +22 -5
- package/dist/extensions/config-json-schema.d.ts +43 -7
- package/dist/extensions/config-json-schema.js +124 -58
- package/dist/extensions/deployment-config-store.d.ts +6 -0
- package/dist/extensions/deployment-config.d.ts +94 -9
- package/dist/extensions/deployment-config.js +255 -34
- package/dist/extensions/display-name.d.ts +22 -0
- package/dist/extensions/display-name.js +77 -0
- package/dist/extensions/effective-config.d.ts +133 -0
- package/dist/extensions/effective-config.js +379 -0
- package/dist/extensions/extensions.module.js +31 -12
- package/dist/extensions/guide-places.d.ts +68 -0
- package/dist/extensions/guide-places.js +152 -0
- package/dist/extensions/hooks.d.ts +37 -4
- package/dist/extensions/hooks.js +82 -16
- package/dist/extensions/host.d.ts +105 -12
- package/dist/extensions/host.js +372 -87
- package/dist/extensions/installs.d.ts +30 -9
- package/dist/extensions/installs.js +57 -16
- package/dist/extensions/instance.d.ts +17 -2
- package/dist/extensions/instance.js +21 -0
- package/dist/extensions/ledger.d.ts +1 -1
- package/dist/extensions/locks.d.ts +12 -0
- package/dist/extensions/locks.js +26 -0
- package/dist/extensions/org-config.d.ts +97 -7
- package/dist/extensions/org-config.js +215 -45
- package/dist/extensions/org-levels.d.ts +37 -0
- package/dist/extensions/org-levels.js +71 -0
- package/dist/extensions/org-overrides.d.ts +151 -0
- package/dist/extensions/org-overrides.js +524 -0
- package/dist/extensions/package.d.ts +18 -4
- package/dist/extensions/package.js +56 -3
- package/dist/extensions/permission-set.d.ts +35 -5
- package/dist/extensions/permission-set.js +36 -5
- package/dist/extensions/permission-view.d.ts +106 -13
- package/dist/extensions/permission-view.js +33 -15
- package/dist/extensions/plugin-guides.d.ts +282 -0
- package/dist/extensions/plugin-guides.js +554 -0
- package/dist/extensions/plugin-icons.d.ts +54 -0
- package/dist/extensions/plugin-icons.js +125 -0
- package/dist/extensions/plugin-items.d.ts +21 -0
- package/dist/extensions/plugin-items.js +42 -0
- package/dist/extensions/point-defaults.controller.d.ts +28 -0
- package/dist/extensions/point-defaults.controller.js +69 -0
- package/dist/extensions/point-defaults.d.ts +73 -0
- package/dist/extensions/point-defaults.js +236 -0
- package/dist/extensions/point-defaults.schemas.d.ts +9 -0
- package/dist/extensions/point-defaults.schemas.js +14 -0
- package/dist/extensions/registry.d.ts +1 -1
- package/dist/extensions/registry.js +2 -0
- package/dist/extensions/resolve.d.ts +51 -1
- package/dist/extensions/resolve.js +85 -3
- package/dist/extensions/single-provider.d.ts +92 -0
- package/dist/extensions/single-provider.js +180 -0
- package/dist/extensions/sources.d.ts +13 -2
- package/dist/extensions/sources.js +2 -0
- package/dist/extensions/state.module.d.ts +9 -0
- package/dist/extensions/state.module.js +46 -0
- package/dist/extensions/unavailable.d.ts +50 -0
- package/dist/extensions/unavailable.js +115 -0
- package/dist/files/previewers.controller.js +2 -3
- package/dist/files/previewers.d.ts +10 -3
- package/dist/files/previewers.js +40 -11
- package/dist/files/previewers.schemas.d.ts +10 -0
- package/dist/files/previewers.schemas.js +9 -0
- package/dist/http/api.module.js +76 -4
- package/dist/http/app.d.ts +11 -2
- package/dist/http/app.js +31 -5
- package/dist/http/gateway-routes.d.ts +7 -3
- package/dist/http/gateway-routes.js +6 -3
- package/dist/http/nest-logger.d.ts +6 -5
- package/dist/http/nest-logger.js +24 -10
- package/dist/http/plugin-dispatch.d.ts +4 -1
- package/dist/http/plugin-dispatch.js +14 -2
- package/dist/identity/accounts.d.ts +77 -31
- package/dist/identity/accounts.js +133 -52
- package/dist/identity/audit.d.ts +2 -1
- package/dist/identity/auth.controller.js +9 -5
- package/dist/identity/auth.guard.d.ts +13 -5
- package/dist/identity/auth.guard.js +35 -9
- package/dist/identity/cookies.d.ts +26 -5
- package/dist/identity/cookies.js +58 -6
- package/dist/identity/identity.module.d.ts +1 -1
- package/dist/identity/identity.module.js +7 -4
- package/dist/identity/initial-passwords.controller.d.ts +22 -0
- package/dist/identity/initial-passwords.controller.js +49 -0
- package/dist/identity/initial-passwords.d.ts +61 -0
- package/dist/identity/initial-passwords.job.d.ts +16 -0
- package/dist/identity/initial-passwords.job.js +46 -0
- package/dist/identity/initial-passwords.js +159 -0
- package/dist/identity/me.controller.d.ts +17 -1
- package/dist/identity/me.controller.js +45 -4
- package/dist/identity/me.schemas.d.ts +24 -0
- package/dist/identity/me.schemas.js +25 -0
- package/dist/identity/principal.d.ts +11 -3
- package/dist/identity/principal.js +11 -3
- package/dist/identity/sessions.d.ts +12 -0
- package/dist/identity/sessions.js +45 -0
- package/dist/identity/settings.d.ts +99 -12
- package/dist/identity/settings.js +234 -25
- package/dist/identity/{enterprise-admin.d.ts → super-admin.d.ts} +5 -5
- package/dist/identity/{enterprise-admin.js → super-admin.js} +24 -24
- package/dist/identity/write-actor.d.ts +11 -0
- package/dist/identity/write-actor.js +7 -0
- package/dist/inbox/inbox.module.d.ts +4 -1
- package/dist/inbox/inbox.module.js +7 -3
- package/dist/inbox/inbox.schemas.d.ts +8 -0
- package/dist/inbox/inbox.schemas.js +11 -0
- package/dist/inbox/inbox.service.d.ts +64 -4
- package/dist/inbox/inbox.service.js +74 -4
- package/dist/inbox/org-notices.d.ts +63 -0
- package/dist/inbox/org-notices.js +91 -0
- package/dist/inbox/platform-inbox.controller.d.ts +23 -0
- package/dist/inbox/platform-inbox.controller.js +58 -0
- package/dist/inbox/platform-inbox.service.d.ts +157 -0
- package/dist/inbox/platform-inbox.service.js +281 -0
- package/dist/inbox/platform-notices.d.ts +19 -0
- package/dist/inbox/platform-notices.js +9 -0
- package/dist/index.d.ts +6 -2
- package/dist/index.js +7 -1
- package/dist/infra/cli/kernel-cli.module.js +9 -1
- package/dist/infra/config/kernel-config.service.js +32 -1
- package/dist/infra/database/database.module.js +1 -0
- package/dist/infra/database/xact-lock.d.ts +1 -1
- package/dist/infra/database/xact-lock.js +1 -1
- package/dist/infra/events/kernel-events.d.ts +31 -3
- package/dist/infra/lifecycle/process-guards.js +4 -0
- package/dist/infra/lock/lock.service.d.ts +8 -0
- package/dist/infra/lock/lock.service.js +27 -0
- package/dist/infra/logging/logging.module.d.ts +4 -2
- package/dist/infra/logging/logging.module.js +24 -6
- package/dist/infra/presence/presence.module.d.ts +6 -0
- package/dist/infra/presence/presence.module.js +22 -0
- package/dist/infra/presence/replica-presence.d.ts +87 -0
- package/dist/infra/presence/replica-presence.js +189 -0
- package/dist/infra/queue/add-job-once.d.ts +14 -0
- package/dist/infra/queue/add-job-once.js +16 -0
- package/dist/infra/queue/redis-connection.d.ts +6 -0
- package/dist/infra/queue/redis-connection.js +7 -0
- package/dist/infra/redis/redis.module.js +6 -2
- package/dist/infra/throttler/named-throttlers.d.ts +12 -0
- package/dist/infra/throttler/named-throttlers.js +67 -0
- package/dist/infra/throttler/throttler.guard.js +1 -1
- package/dist/infra/tokens.d.ts +6 -1
- package/dist/infra/tokens.js +6 -1
- package/dist/kernel.module.js +15 -0
- package/dist/lifecycle/kernel-lifecycle.d.ts +4 -2
- package/dist/lifecycle/kernel-lifecycle.js +35 -7
- package/dist/local-devices/device-auth.controller.d.ts +42 -0
- package/dist/local-devices/device-auth.controller.js +116 -0
- package/dist/local-devices/device-auth.d.ts +119 -0
- package/dist/local-devices/device-auth.js +401 -0
- package/dist/local-devices/device-auth.module.d.ts +7 -0
- package/dist/local-devices/device-auth.module.js +25 -0
- package/dist/local-devices/device-routes.d.ts +36 -0
- package/dist/local-devices/device-routes.js +90 -0
- package/dist/local-devices/dto.d.ts +66 -0
- package/dist/local-devices/dto.js +44 -0
- package/dist/local-devices/keys.d.ts +25 -0
- package/dist/local-devices/keys.js +25 -0
- package/dist/local-devices/local-device-gateway.d.ts +134 -0
- package/dist/local-devices/local-device-gateway.js +542 -0
- package/dist/local-devices/local-device-provider.d.ts +89 -0
- package/dist/local-devices/local-device-provider.js +151 -0
- package/dist/local-devices/local-devices.module.d.ts +16 -0
- package/dist/local-devices/local-devices.module.js +44 -0
- package/dist/local-devices/machines.d.ts +118 -0
- package/dist/local-devices/machines.js +366 -0
- package/dist/local-devices/relay.d.ts +100 -0
- package/dist/local-devices/relay.js +373 -0
- package/dist/local-devices/targets.d.ts +28 -0
- package/dist/local-devices/targets.js +73 -0
- package/dist/log.d.ts +13 -1
- package/dist/log.js +93 -17
- package/dist/models/embeddings.d.ts +82 -0
- package/dist/models/embeddings.js +326 -0
- package/dist/models/enablement.controller.d.ts +40 -0
- package/dist/models/enablement.controller.js +74 -0
- package/dist/models/enablement.d.ts +101 -0
- package/dist/models/enablement.js +264 -0
- package/dist/models/models.module.d.ts +5 -1
- package/dist/models/models.module.js +16 -4
- package/dist/models/org-models.schemas.d.ts +8 -0
- package/dist/models/org-models.schemas.js +22 -0
- package/dist/models/prices.d.ts +8 -6
- package/dist/models/prices.js +11 -9
- package/dist/models/purposes.controller.d.ts +6 -4
- package/dist/models/purposes.controller.js +13 -7
- package/dist/models/purposes.d.ts +72 -14
- package/dist/models/purposes.js +115 -34
- package/dist/orgs/directory-sync.d.ts +14 -5
- package/dist/orgs/directory-sync.js +41 -17
- package/dist/orgs/offboarding.d.ts +12 -8
- package/dist/orgs/offboarding.js +54 -33
- package/dist/orgs/org-lock.d.ts +5 -0
- package/dist/orgs/org-lock.js +13 -0
- package/dist/orgs/org.guard.d.ts +10 -0
- package/dist/orgs/org.guard.js +43 -32
- package/dist/orgs/orgs.controller.d.ts +2 -5
- package/dist/orgs/orgs.controller.js +3 -6
- package/dist/orgs/orgs.module.js +3 -0
- package/dist/orgs/orgs.schemas.d.ts +8 -0
- package/dist/orgs/orgs.schemas.js +16 -0
- package/dist/orgs/orgs.service.d.ts +23 -8
- package/dist/orgs/orgs.service.js +38 -16
- package/dist/orgs/roles.d.ts +1 -1
- package/dist/orgs/roles.js +5 -1
- package/dist/orgs/settings.controller.d.ts +1 -1
- package/dist/orgs/settings.service.d.ts +66 -6
- package/dist/orgs/settings.service.js +89 -10
- package/dist/overrides.d.ts +16 -1
- package/dist/overrides.js +10 -0
- package/dist/platform/actor.d.ts +48 -0
- package/dist/platform/actor.js +100 -0
- package/dist/platform/agent-docs.d.ts +18 -0
- package/dist/platform/agent-docs.js +59 -0
- package/dist/platform/availability.d.ts +14 -0
- package/dist/platform/availability.js +43 -0
- package/dist/platform/errors.d.ts +28 -0
- package/dist/platform/errors.js +65 -0
- package/dist/platform/exclusions.d.ts +11 -0
- package/dist/platform/exclusions.js +774 -0
- package/dist/platform/method.d.ts +6 -0
- package/dist/platform/method.js +15 -0
- package/dist/platform/operation.d.ts +169 -0
- package/dist/platform/operation.js +102 -0
- package/dist/platform/ops/accounts.ops.d.ts +32 -0
- package/dist/platform/ops/accounts.ops.js +291 -0
- package/dist/platform/ops/admin-items.ops.d.ts +37 -0
- package/dist/platform/ops/admin-items.ops.js +278 -0
- package/dist/platform/ops/admin.ops.d.ts +38 -0
- package/dist/platform/ops/admin.ops.js +497 -0
- package/dist/platform/ops/agent-skills.ops.d.ts +50 -0
- package/dist/platform/ops/agent-skills.ops.js +509 -0
- package/dist/platform/ops/agent-templates.ops.d.ts +17 -0
- package/dist/platform/ops/agent-templates.ops.js +272 -0
- package/dist/platform/ops/agents.ops.d.ts +37 -0
- package/dist/platform/ops/agents.ops.js +730 -0
- package/dist/platform/ops/approvals.ops.d.ts +30 -0
- package/dist/platform/ops/approvals.ops.js +116 -0
- package/dist/platform/ops/background.ops.d.ts +14 -0
- package/dist/platform/ops/background.ops.js +134 -0
- package/dist/platform/ops/catalog-admin.ops.d.ts +92 -0
- package/dist/platform/ops/catalog-admin.ops.js +682 -0
- package/dist/platform/ops/channels.ops.d.ts +16 -0
- package/dist/platform/ops/channels.ops.js +195 -0
- package/dist/platform/ops/components.ops.d.ts +46 -0
- package/dist/platform/ops/components.ops.js +854 -0
- package/dist/platform/ops/connectors.ops.d.ts +17 -0
- package/dist/platform/ops/connectors.ops.js +190 -0
- package/dist/platform/ops/conversations.ops.d.ts +30 -0
- package/dist/platform/ops/conversations.ops.js +470 -0
- package/dist/platform/ops/devices.ops.d.ts +26 -0
- package/dist/platform/ops/devices.ops.js +311 -0
- package/dist/platform/ops/errors.d.ts +16 -0
- package/dist/platform/ops/errors.js +30 -0
- package/dist/platform/ops/evals.ops.d.ts +28 -0
- package/dist/platform/ops/evals.ops.js +783 -0
- package/dist/platform/ops/extensions-admin.ops.d.ts +25 -0
- package/dist/platform/ops/extensions-admin.ops.js +372 -0
- package/dist/platform/ops/extensions.ops.d.ts +25 -0
- package/dist/platform/ops/extensions.ops.js +347 -0
- package/dist/platform/ops/inbox.ops.d.ts +25 -0
- package/dist/platform/ops/inbox.ops.js +381 -0
- package/dist/platform/ops/marketplaces.ops.d.ts +22 -0
- package/dist/platform/ops/marketplaces.ops.js +466 -0
- package/dist/platform/ops/models.ops.d.ts +25 -0
- package/dist/platform/ops/models.ops.js +232 -0
- package/dist/platform/ops/org-plugins.ops.d.ts +35 -0
- package/dist/platform/ops/org-plugins.ops.js +388 -0
- package/dist/platform/ops/org-settings.ops.d.ts +18 -0
- package/dist/platform/ops/org-settings.ops.js +127 -0
- package/dist/platform/ops/orgs.ops.d.ts +28 -0
- package/dist/platform/ops/orgs.ops.js +298 -0
- package/dist/platform/ops/other-orgs.d.ts +20 -0
- package/dist/platform/ops/other-orgs.js +72 -0
- package/dist/platform/ops/paging.d.ts +14 -0
- package/dist/platform/ops/paging.js +20 -0
- package/dist/platform/ops/platform.ops.d.ts +30 -0
- package/dist/platform/ops/platform.ops.js +231 -0
- package/dist/platform/ops/plugins.ops.d.ts +35 -0
- package/dist/platform/ops/plugins.ops.js +476 -0
- package/dist/platform/ops/previewers.ops.d.ts +14 -0
- package/dist/platform/ops/previewers.ops.js +109 -0
- package/dist/platform/ops/requests.ops.d.ts +14 -0
- package/dist/platform/ops/requests.ops.js +191 -0
- package/dist/platform/ops/role.d.ts +4 -0
- package/dist/platform/ops/role.js +10 -0
- package/dist/platform/ops/setup.ops.d.ts +24 -0
- package/dist/platform/ops/setup.ops.js +212 -0
- package/dist/platform/ops/skills.ops.d.ts +17 -0
- package/dist/platform/ops/skills.ops.js +160 -0
- package/dist/platform/ops/summary.d.ts +10 -0
- package/dist/platform/ops/summary.js +18 -0
- package/dist/platform/ops/themes.ops.d.ts +14 -0
- package/dist/platform/ops/themes.ops.js +47 -0
- package/dist/platform/ops/ui.ops.d.ts +8 -0
- package/dist/platform/ops/ui.ops.js +41 -0
- package/dist/platform/ops/unavailable.d.ts +23 -0
- package/dist/platform/ops/unavailable.js +118 -0
- package/dist/platform/parity.d.ts +33 -0
- package/dist/platform/parity.js +272 -0
- package/dist/platform/platform-ops.module.d.ts +43 -0
- package/dist/platform/platform-ops.module.js +142 -0
- package/dist/platform/platform.module.d.ts +8 -0
- package/dist/platform/platform.module.js +25 -0
- package/dist/platform/registry.d.ts +30 -0
- package/dist/platform/registry.js +111 -0
- package/dist/platform/route-schemas.d.ts +18 -0
- package/dist/platform/route-schemas.js +85 -0
- package/dist/roles/gateway-role.d.ts +18 -3
- package/dist/roles/gateway-role.js +33 -5
- package/dist/roles/gateway.module.d.ts +2 -1
- package/dist/roles/gateway.module.js +6 -3
- package/dist/roles/worker-role.d.ts +6 -4
- package/dist/roles/worker-role.js +14 -7
- package/dist/roles/worker.module.d.ts +1 -1
- package/dist/roles/worker.module.js +21 -1
- package/dist/runtime/context/build.d.ts +21 -13
- package/dist/runtime/context/build.js +106 -29
- package/dist/runtime/context/claude-tools.d.ts +4 -1
- package/dist/runtime/context/claude-tools.js +13 -12
- package/dist/runtime/context/compaction.js +24 -1
- package/dist/runtime/context/device-paths.d.ts +40 -0
- package/dist/runtime/context/device-paths.js +48 -0
- package/dist/runtime/context/legacy-text.d.ts +22 -0
- package/dist/runtime/context/legacy-text.js +37 -0
- package/dist/runtime/context/reminders.d.ts +2 -0
- package/dist/runtime/context/reminders.js +2 -0
- package/dist/runtime/context/run-context.d.ts +65 -0
- package/dist/runtime/context/run-context.js +215 -0
- package/dist/runtime/context/skills.d.ts +29 -11
- package/dist/runtime/context/skills.js +46 -32
- package/dist/runtime/context/tool-changes.d.ts +27 -0
- package/dist/runtime/context/tool-changes.js +60 -0
- package/dist/runtime/hook-calls.d.ts +8 -1
- package/dist/runtime/hook-calls.js +40 -7
- package/dist/runtime/langgraph-loop.d.ts +3 -1
- package/dist/runtime/langgraph-loop.js +36 -17
- package/dist/runtime/loop.d.ts +35 -6
- package/dist/runtime/maintenance.d.ts +9 -4
- package/dist/runtime/maintenance.js +35 -8
- package/dist/runtime/model-call.d.ts +54 -11
- package/dist/runtime/model-call.js +105 -28
- package/dist/runtime/providers.d.ts +149 -29
- package/dist/runtime/providers.js +332 -63
- package/dist/runtime/run-context.service.d.ts +65 -0
- package/dist/runtime/run-context.service.js +236 -0
- package/dist/runtime/run-control.d.ts +11 -1
- package/dist/runtime/run-control.js +12 -0
- package/dist/runtime/run-drafts.d.ts +85 -0
- package/dist/runtime/run-drafts.js +230 -0
- package/dist/runtime/run-finish.d.ts +1 -1
- package/dist/runtime/run-jobs.d.ts +3 -5
- package/dist/runtime/run-jobs.js +7 -9
- package/dist/runtime/run-queue.d.ts +62 -5
- package/dist/runtime/run-queue.js +313 -40
- package/dist/runtime/run-worker.d.ts +19 -8
- package/dist/runtime/run-worker.js +105 -44
- package/dist/runtime/runtime.module.js +13 -3
- package/dist/runtime/step-log.d.ts +15 -4
- package/dist/runtime/step-log.js +24 -7
- package/dist/runtime/stream.controller.d.ts +23 -1
- package/dist/runtime/stream.controller.js +60 -3
- package/dist/runtime/stream.d.ts +4 -1
- package/dist/runtime/stream.js +27 -3
- package/dist/runtime/subagents/child.d.ts +55 -7
- package/dist/runtime/subagents/child.js +105 -7
- package/dist/runtime/subagents/definition.d.ts +31 -26
- package/dist/runtime/subagents/definition.js +89 -142
- package/dist/runtime/subagents/deliveries.d.ts +71 -0
- package/dist/runtime/subagents/deliveries.js +228 -0
- package/dist/runtime/subagents/dispatch.d.ts +116 -27
- package/dist/runtime/subagents/dispatch.js +213 -142
- package/dist/runtime/subagents/limits.d.ts +24 -5
- package/dist/runtime/subagents/limits.js +40 -6
- package/dist/runtime/subagents/messages.d.ts +95 -0
- package/dist/runtime/subagents/messages.js +328 -0
- package/dist/runtime/subagents/org-agents.js +2 -1
- package/dist/runtime/subagents/preamble.d.ts +4 -4
- package/dist/runtime/subagents/preamble.js +9 -7
- package/dist/runtime/subagents/progress.d.ts +8 -6
- package/dist/runtime/subagents/progress.js +11 -6
- package/dist/runtime/subagents/render.d.ts +30 -0
- package/dist/runtime/subagents/render.js +53 -0
- package/dist/runtime/subagents/roster.d.ts +25 -8
- package/dist/runtime/subagents/roster.js +48 -12
- package/dist/runtime/subagents/skill-fork.d.ts +4 -3
- package/dist/runtime/subagents/skill-fork.js +9 -5
- package/dist/runtime/subagents/status.d.ts +14 -0
- package/dist/runtime/subagents/status.js +23 -0
- package/dist/runtime/subagents/subagents.service.d.ts +9 -6
- package/dist/runtime/subagents/subagents.service.js +13 -8
- package/dist/runtime/usage-report-jobs.d.ts +88 -0
- package/dist/runtime/usage-report-jobs.js +158 -0
- package/dist/runtime/usage-report.d.ts +35 -39
- package/dist/runtime/usage-report.js +171 -97
- package/dist/runtime/waits.d.ts +148 -39
- package/dist/runtime/waits.js +426 -112
- package/dist/sandbox/jobs.d.ts +40 -13
- package/dist/sandbox/jobs.js +57 -20
- package/dist/sandbox/leases.d.ts +37 -54
- package/dist/sandbox/leases.js +71 -115
- package/dist/sandbox/providers.d.ts +34 -7
- package/dist/sandbox/providers.js +54 -9
- package/dist/sandbox/sandbox-file-reader.d.ts +35 -0
- package/dist/sandbox/sandbox-file-reader.js +98 -0
- package/dist/sandbox/sandbox.module.d.ts +3 -2
- package/dist/sandbox/sandbox.module.js +10 -4
- package/dist/sandbox/sandbox.service.d.ts +345 -132
- package/dist/sandbox/sandbox.service.js +883 -399
- package/dist/sandbox/unreachable.d.ts +30 -0
- package/dist/sandbox/unreachable.js +108 -0
- package/dist/setup/kernel-checks.d.ts +91 -0
- package/dist/setup/kernel-checks.js +295 -0
- package/dist/setup/oauth-token-probe.d.ts +47 -0
- package/dist/setup/oauth-token-probe.js +108 -0
- package/dist/setup/redact-check.d.ts +18 -0
- package/dist/setup/redact-check.js +46 -0
- package/dist/setup/setup-check-registry.d.ts +86 -0
- package/dist/setup/setup-check-registry.js +75 -0
- package/dist/setup/setup-checks.controller.d.ts +28 -0
- package/dist/setup/setup-checks.controller.js +78 -0
- package/dist/setup/setup-checks.schemas.d.ts +38 -0
- package/dist/setup/setup-checks.schemas.js +43 -0
- package/dist/setup/setup-checks.service.d.ts +144 -0
- package/dist/setup/setup-checks.service.js +683 -0
- package/dist/setup/setup-guides.controller.d.ts +18 -0
- package/dist/setup/setup-guides.controller.js +48 -0
- package/dist/setup/setup-guides.schemas.d.ts +10 -0
- package/dist/setup/setup-guides.schemas.js +6 -0
- package/dist/setup/setup-guides.service.d.ts +126 -0
- package/dist/setup/setup-guides.service.js +315 -0
- package/dist/setup/setup.module.d.ts +8 -0
- package/dist/setup/setup.module.js +31 -0
- package/dist/skills/agent-skills.controller.d.ts +48 -0
- package/dist/skills/agent-skills.controller.js +131 -0
- package/dist/skills/agent-skills.service.d.ts +262 -0
- package/dist/skills/agent-skills.service.js +996 -0
- package/dist/skills/catalog.d.ts +14 -11
- package/dist/skills/catalog.js +32 -50
- package/dist/skills/changes.controller.d.ts +12 -22
- package/dist/skills/changes.controller.js +27 -56
- package/dist/skills/changes.service.d.ts +69 -115
- package/dist/skills/changes.service.js +249 -598
- package/dist/skills/conversation-catalog.d.ts +53 -0
- package/dist/skills/conversation-catalog.js +149 -0
- package/dist/skills/invocable.controller.d.ts +1 -1
- package/dist/skills/invocable.controller.js +2 -2
- package/dist/skills/invocation-keys.d.ts +1 -1
- package/dist/skills/invocation-keys.js +1 -1
- package/dist/skills/invoke.d.ts +3 -3
- package/dist/skills/invoke.js +21 -8
- package/dist/skills/package.d.ts +15 -1
- package/dist/skills/package.js +14 -1
- package/dist/skills/skills.controller.d.ts +32 -6
- package/dist/skills/skills.controller.js +64 -11
- package/dist/skills/skills.module.js +25 -3
- package/dist/skills/skills.schemas.d.ts +44 -0
- package/dist/skills/skills.schemas.js +68 -0
- package/dist/skills/skills.service.d.ts +123 -26
- package/dist/skills/skills.service.js +493 -76
- package/dist/skills/usable.d.ts +82 -0
- package/dist/skills/usable.js +388 -0
- package/dist/themes/render-css.d.ts +13 -0
- package/dist/themes/render-css.js +135 -0
- package/dist/themes/theme-delivery.service.d.ts +36 -0
- package/dist/themes/theme-delivery.service.js +116 -0
- package/dist/themes/theme-state.d.ts +116 -0
- package/dist/themes/theme-state.js +221 -0
- package/dist/themes/theme-usage.d.ts +61 -0
- package/dist/themes/theme-usage.js +98 -0
- package/dist/themes/themes-public.controller.d.ts +33 -0
- package/dist/themes/themes-public.controller.js +98 -0
- package/dist/themes/themes.controller.d.ts +13 -0
- package/dist/themes/themes.controller.js +38 -0
- package/dist/themes/themes.module.d.ts +3 -0
- package/dist/themes/themes.module.js +21 -0
- package/dist/themes/themes.schemas.d.ts +3 -0
- package/dist/themes/themes.schemas.js +2 -0
- package/dist/themes/themes.service.d.ts +50 -0
- package/dist/themes/themes.service.js +99 -0
- package/dist/time-zone.d.ts +5 -0
- package/dist/time-zone.js +19 -0
- package/dist/tools/admin-connectors.d.ts +69 -0
- package/dist/tools/admin-connectors.js +135 -0
- package/dist/tools/approvals.controller.js +2 -3
- package/dist/tools/approvals.schemas.d.ts +21 -0
- package/dist/tools/approvals.schemas.js +15 -0
- package/dist/tools/approvals.service.d.ts +26 -2
- package/dist/tools/approvals.service.js +44 -5
- package/dist/tools/builtin-names.d.ts +104 -0
- package/dist/tools/builtin-names.js +164 -0
- package/dist/tools/builtins/agent.d.ts +27 -25
- package/dist/tools/builtins/agent.js +66 -63
- package/dist/tools/builtins/ask-user.d.ts +1 -1
- package/dist/tools/builtins/ask-user.js +5 -4
- package/dist/tools/builtins/builtin-tools.d.ts +23 -4
- package/dist/tools/builtins/builtin-tools.js +78 -12
- package/dist/tools/builtins/current-time.d.ts +26 -0
- package/dist/tools/builtins/current-time.js +99 -0
- package/dist/tools/builtins/handback.d.ts +28 -0
- package/dist/tools/builtins/handback.js +53 -0
- package/dist/tools/builtins/platform.d.ts +51 -0
- package/dist/tools/builtins/platform.js +451 -0
- package/dist/tools/builtins/read-tool-output.d.ts +1 -1
- package/dist/tools/builtins/read-tool-output.js +2 -2
- package/dist/tools/builtins/sandbox/bash.d.ts +5 -5
- package/dist/tools/builtins/sandbox/bash.js +291 -39
- package/dist/tools/builtins/sandbox/common.d.ts +135 -36
- package/dist/tools/builtins/sandbox/common.js +222 -62
- package/dist/tools/builtins/sandbox/deliver.d.ts +1 -1
- package/dist/tools/builtins/sandbox/deliver.js +19 -16
- package/dist/tools/builtins/sandbox/edit.d.ts +1 -1
- package/dist/tools/builtins/sandbox/edit.js +64 -50
- package/dist/tools/builtins/sandbox/file-state.d.ts +34 -0
- package/dist/tools/builtins/sandbox/file-state.js +34 -0
- package/dist/tools/builtins/sandbox/glob-match.d.ts +1 -1
- package/dist/tools/builtins/sandbox/glob-match.js +1 -1
- package/dist/tools/builtins/sandbox/glob.d.ts +1 -1
- package/dist/tools/builtins/sandbox/glob.js +17 -12
- package/dist/tools/builtins/sandbox/grep.d.ts +7 -4
- package/dist/tools/builtins/sandbox/grep.js +153 -34
- package/dist/tools/builtins/sandbox/index.d.ts +9 -5
- package/dist/tools/builtins/sandbox/index.js +13 -5
- package/dist/tools/builtins/sandbox/read.d.ts +2 -2
- package/dist/tools/builtins/sandbox/read.js +29 -19
- package/dist/tools/builtins/sandbox/task-output.d.ts +79 -0
- package/dist/tools/builtins/sandbox/task-output.js +334 -0
- package/dist/tools/builtins/sandbox/task-stop.d.ts +10 -0
- package/dist/tools/builtins/sandbox/task-stop.js +113 -0
- package/dist/tools/builtins/sandbox/write.d.ts +1 -1
- package/dist/tools/builtins/sandbox/write.js +51 -44
- package/dist/tools/builtins/send-message.d.ts +56 -0
- package/dist/tools/builtins/send-message.js +100 -0
- package/dist/tools/builtins/skill-load.d.ts +29 -18
- package/dist/tools/builtins/skill-load.js +125 -73
- package/dist/tools/builtins/tool-search.d.ts +13 -9
- package/dist/tools/builtins/tool-search.js +25 -14
- package/dist/tools/builtins/web/errors.d.ts +8 -0
- package/dist/tools/builtins/web/errors.js +53 -0
- package/dist/tools/builtins/web/extract.d.ts +62 -0
- package/dist/tools/builtins/web/extract.js +271 -0
- package/dist/tools/builtins/web/fetch.d.ts +55 -0
- package/dist/tools/builtins/web/fetch.js +175 -0
- package/dist/tools/builtins/web/index.d.ts +13 -0
- package/dist/tools/builtins/web/index.js +12 -0
- package/dist/tools/builtins/web/page-cache.d.ts +25 -0
- package/dist/tools/builtins/web/page-cache.js +77 -0
- package/dist/tools/builtins/web/search.d.ts +25 -0
- package/dist/tools/builtins/web/search.js +210 -0
- package/dist/tools/builtins/web/url.d.ts +17 -0
- package/dist/tools/builtins/web/url.js +43 -0
- package/dist/tools/connector-account-policies.d.ts +51 -0
- package/dist/tools/connector-account-policies.js +165 -0
- package/dist/tools/connectors.controller.d.ts +74 -9
- package/dist/tools/connectors.controller.js +133 -16
- package/dist/tools/connectors.schemas.d.ts +27 -0
- package/dist/tools/connectors.schemas.js +34 -0
- package/dist/tools/connectors.service.d.ts +101 -8
- package/dist/tools/connectors.service.js +266 -28
- package/dist/tools/credentials.d.ts +23 -0
- package/dist/tools/credentials.js +90 -1
- package/dist/tools/display-names.d.ts +9 -0
- package/dist/tools/display-names.js +24 -0
- package/dist/tools/drift.js +5 -5
- package/dist/tools/elicitation.js +1 -1
- package/dist/tools/extension-tools.controller.d.ts +14 -0
- package/dist/tools/extension-tools.controller.js +37 -0
- package/dist/tools/info.d.ts +61 -4
- package/dist/tools/info.js +119 -33
- package/dist/tools/legacy-data.d.ts +34 -0
- package/dist/tools/legacy-data.js +76 -0
- package/dist/tools/legacy-keys.d.ts +51 -0
- package/dist/tools/legacy-keys.js +114 -0
- package/dist/tools/naming.d.ts +1 -5
- package/dist/tools/naming.js +1 -7
- package/dist/tools/oauth/flow-paths.d.ts +1 -1
- package/dist/tools/oauth/flow-paths.js +1 -1
- package/dist/tools/oauth/flow.js +1 -1
- package/dist/tools/oauth/tokens.d.ts +54 -7
- package/dist/tools/oauth/tokens.js +87 -17
- package/dist/tools/org-tool-switches.d.ts +89 -0
- package/dist/tools/org-tool-switches.js +201 -0
- package/dist/tools/outputs.js +1 -1
- package/dist/tools/pipeline.d.ts +67 -47
- package/dist/tools/pipeline.js +319 -380
- package/dist/tools/policy.d.ts +30 -23
- package/dist/tools/policy.js +142 -64
- package/dist/tools/questions.controller.d.ts +1 -1
- package/dist/tools/questions.controller.js +1 -1
- package/dist/tools/questions.service.d.ts +23 -2
- package/dist/tools/questions.service.js +104 -2
- package/dist/tools/registry.d.ts +189 -68
- package/dist/tools/registry.js +318 -236
- package/dist/tools/resources.d.ts +1 -1
- package/dist/tools/resources.js +1 -1
- package/dist/tools/tools.module.js +31 -3
- package/dist/tools/validate.js +1 -1
- package/dist/ui/admin-ui.controller.d.ts +56 -0
- package/dist/ui/admin-ui.controller.js +192 -0
- package/dist/ui/arrangement.d.ts +65 -0
- package/dist/ui/arrangement.js +171 -0
- package/dist/ui/embed-token.d.ts +2 -2
- package/dist/ui/embed-token.js +30 -5
- package/dist/ui/registry.d.ts +42 -17
- package/dist/ui/registry.js +46 -14
- package/dist/ui/slots.controller.d.ts +11 -0
- package/dist/ui/slots.controller.js +25 -0
- package/dist/ui/ui-stream.d.ts +20 -3
- package/dist/ui/ui-stream.js +25 -7
- package/dist/ui/ui.schemas.d.ts +70 -0
- package/dist/ui/ui.schemas.js +65 -0
- package/dist/ui/views.controller.d.ts +35 -49
- package/dist/ui/views.controller.js +48 -70
- package/dist/ui/views.d.ts +112 -18
- package/dist/ui/views.js +254 -47
- package/package.json +6 -3
- package/src/migrations/0063_tool_keys_claude_code.sql +220 -0
- package/src/migrations/0064_account_last_org.sql +7 -0
- package/src/migrations/0065_conversation_archive.sql +8 -0
- package/src/migrations/0066_extension_display_name.sql +4 -0
- package/src/migrations/0067_agent_profiles.sql +20 -0
- package/src/migrations/0068_agent_avatar_uploads.sql +7 -0
- package/src/migrations/0069_attachments_agent_idx.sql +3 -0
- package/src/migrations/0070_background_tasks.sql +37 -0
- package/src/migrations/0071_background_tasks_reserve.sql +6 -0
- package/src/migrations/0072_background_tasks_stopping.sql +5 -0
- package/src/migrations/0073_org_extension_point_defaults.sql +11 -0
- package/src/migrations/0074_subagent_tree.sql +50 -0
- package/src/migrations/0075_plugin_scope.sql +61 -0
- package/src/migrations/0076_skills_created_by_nullable.sql +6 -0
- package/src/migrations/0077_scope_requests.sql +52 -0
- package/src/migrations/0078_scope_grant_switches.sql +18 -0
- package/src/migrations/0079_scope_live_install_switches.sql +19 -0
- package/src/migrations/0080_rename_enterprise_admin.sql +18 -0
- package/src/migrations/0081_platform_components.sql +129 -0
- package/src/migrations/0082_platform_migration.sql +33 -0
- package/src/migrations/0083_plugin_scope_sync_failures.sql +15 -0
- package/src/migrations/0084_org_owned_items.sql +85 -0
- package/src/migrations/0085_agent_templates_phase4.sql +45 -0
- package/src/migrations/0086_org_layering.sql +30 -0
- package/src/migrations/0087_approval_summary.sql +6 -0
- package/src/migrations/0088_environments.sql +80 -0
- package/src/migrations/0089_model_kinds_usage.sql +38 -0
- package/src/migrations/0090_initial_passwords.sql +27 -0
- package/src/migrations/0091_account_time_zone.sql +4 -0
- package/src/migrations/0092_tools_default_on.sql +27 -0
- package/src/migrations/0093_connected_environments.sql +37 -0
- package/src/migrations/0094_environment_paths_idx.sql +7 -0
- package/src/migrations/0095_environment_files_resets.sql +5 -0
- package/src/migrations/0096_environment_demoted_default.sql +18 -0
- package/src/migrations/0097_extension_installs_enabled_at.sql +16 -0
- package/src/migrations/0098_single_provider_running_first.sql +41 -0
- package/src/migrations/0099_channel_connection_guide_ack.sql +6 -0
- package/src/migrations/0100_catalog_files.sql +13 -0
- package/src/migrations/0101_marketplace_icons.sql +32 -0
- package/src/migrations/0102_themes.sql +64 -0
- package/src/migrations/0103_ui_theme_setting.sql +7 -0
- package/src/migrations/0104_connector_tool_account_policies.sql +16 -0
- package/src/migrations/0105_devices_rename.sql +136 -0
- package/src/migrations/0106_setup_guides_v2.sql +10 -0
- package/src/migrations/0107_extension_client_builds.sql +50 -0
- package/src/migrations/0108_question_skipped.sql +6 -0
- package/src/migrations/0109_audit_platform_idx.sql +5 -0
- package/src/migrations/0110_usage_time_idx.sql +8 -0
- package/src/migrations/0111_agent_skill_sharing.sql +22 -0
- package/src/migrations/0112_skill_share_requests.sql +4 -0
- package/dist/catalog/upgrade-targets.d.ts +0 -56
- package/dist/catalog/upgrade-targets.js +0 -90
- package/dist/conversations/sandbox-status.d.ts +0 -24
- package/dist/conversations/sandbox-status.js +0 -52
- package/dist/extensions/org-config.controller.d.ts +0 -24
- package/dist/extensions/org-config.controller.js +0 -62
- package/dist/tools/builtins/sandbox/names.d.ts +0 -7
- package/dist/tools/builtins/sandbox/names.js +0 -20
- package/dist/tools/builtins/skill-write.d.ts +0 -59
- package/dist/tools/builtins/skill-write.js +0 -244
package/dist/tools/policy.d.ts
CHANGED
|
@@ -1,20 +1,6 @@
|
|
|
1
1
|
import type { KernelSchemaDb } from "../db/kernel-schema.js";
|
|
2
2
|
import type { DecidePolicy } from "./pipeline.js";
|
|
3
3
|
import type { ResolvedTool, ToolPolicy } from "./registry.js";
|
|
4
|
-
/**
|
|
5
|
-
* spec 3.6 R3「有权 ≠ 已确认」固定清单上的工具 key:策略至少为 `ask`,记住的授权也不放行。
|
|
6
|
-
*
|
|
7
|
-
* R3 清单:发布到公共市场、安装连接器、提插件申请、改角色与成员、删除、改共享技能、改自己的指令。
|
|
8
|
-
* M3 的内置工具(`ask_user`、`read_tool_output`、`tool_search`)与连接器工具都不在清单上;M5 T15 加入
|
|
9
|
-
* `skill_write`(改共享技能)。后续实现上述动作的内置工具时把 key 登记在这里。连接器 / 插件工具由
|
|
10
|
-
* `annotations.requiresUserInteraction` 表达同一约束。
|
|
11
|
-
*/
|
|
12
|
-
export declare const R3_FIXED_ASK_TOOL_KEYS: ReadonlySet<string>;
|
|
13
|
-
/**
|
|
14
|
-
* R3 清单里只对共享 agent 生效的 key(窄口子):R3 的条目是「改共享技能」,私有 agent(`visibility = private`,
|
|
15
|
-
* 只有负责人本人能用)的技能不是共享的,`skill_write` 直接生效、不询问(R4)。其余 R3 条目不论可见性一律固定 ask。
|
|
16
|
-
*/
|
|
17
|
-
export declare const R3_SHARED_AGENT_ONLY_TOOL_KEYS: ReadonlySet<string>;
|
|
18
4
|
/** 取更严的策略(`allow < ask < deny`)。 */
|
|
19
5
|
export declare function stricter(a: ToolPolicy, b: ToolPolicy | undefined): ToolPolicy;
|
|
20
6
|
export interface PolicyInput {
|
|
@@ -22,22 +8,43 @@ export interface PolicyInput {
|
|
|
22
8
|
connectorDefault: ToolPolicy;
|
|
23
9
|
/** agent 负责人的收紧(`definition.toolPolicies[key]`)。 */
|
|
24
10
|
agentOverride?: "ask" | "deny";
|
|
25
|
-
/**
|
|
11
|
+
/** `requiresUserInteraction`。 */
|
|
26
12
|
fixedAsk: boolean;
|
|
27
13
|
/** 已记住且 specHash 与当前一致的授权。 */
|
|
28
14
|
grant: "session" | "always" | null;
|
|
29
15
|
}
|
|
30
16
|
/**
|
|
31
|
-
* 策略判定(纯函数):取组织默认、agent
|
|
32
|
-
* 记住的授权只能把 `ask` 放行为 `allow`,不能越过 `deny`,对
|
|
17
|
+
* 策略判定(纯函数):取组织默认、agent 收紧、固定询问三者中最严者;
|
|
18
|
+
* 记住的授权只能把 `ask` 放行为 `allow`,不能越过 `deny`,对 `requiresUserInteraction` 的工具无效。
|
|
33
19
|
*/
|
|
34
20
|
export declare function decide(input: PolicyInput): ToolPolicy;
|
|
35
21
|
/**
|
|
36
|
-
*
|
|
37
|
-
*
|
|
38
|
-
|
|
22
|
+
* Whether the tool is a fixed ask: its spec declares `requiresUserInteraction`, so its policy is
|
|
23
|
+
* at least `ask` and remembered grants never let it through.
|
|
24
|
+
*/
|
|
25
|
+
export declare function isFixedAsk(tool: ResolvedTool): boolean;
|
|
26
|
+
/** Which level decided a connector tool's policy ({@link connectorPolicy}). */
|
|
27
|
+
export type ConnectorPolicySource = "org" | "member" | "agent";
|
|
28
|
+
/**
|
|
29
|
+
* A personal-credential connector tool's policy for one call (maintainer decisions 2026-11-09;
|
|
30
|
+
* an org-credential connector's tool keeps the org default with the agent's tightening only),
|
|
31
|
+
* highest first:
|
|
32
|
+
* 1. the org's default `deny` (a tool the org switched off never gets here: it is unavailable);
|
|
33
|
+
* 2. the member's own `deny` for calls with their connection (`member`): a floor no agent lifts;
|
|
34
|
+
* 3. the agent's setting (`agent`, from its tools page): `allow` / `ask` / `deny`;
|
|
35
|
+
* 4. the member's own `allow` / `ask`;
|
|
36
|
+
* 5. the org's default (`connector_tools.default_policy`, the annotation default unless an org
|
|
37
|
+
* admin changed it: `readOnlyHint: true` allows, anything else asks).
|
|
38
|
+
* Fixed asks (`requiresUserInteraction`), role escalation and grants apply after this.
|
|
39
39
|
*/
|
|
40
|
-
export declare function
|
|
40
|
+
export declare function connectorPolicy(input: {
|
|
41
|
+
orgDefault: ToolPolicy;
|
|
42
|
+
member?: ToolPolicy | undefined;
|
|
43
|
+
agent?: ToolPolicy | undefined;
|
|
44
|
+
}): {
|
|
45
|
+
policy: ToolPolicy;
|
|
46
|
+
source: ConnectorPolicySource;
|
|
47
|
+
};
|
|
41
48
|
/**
|
|
42
49
|
* 执行时的策略判定(spec 3.6 R5:在动作执行那一刻判定)。每次调用都实时读取:
|
|
43
50
|
* - 沙箱工具(bash / write / edit / deliver)的组织设置 `sandboxToolPolicy`(为 ask 时组织默认至少 ask);
|
|
@@ -47,9 +54,9 @@ export declare function isFixedAsk(tool: ResolvedTool, visibility?: "private" |
|
|
|
47
54
|
* - a sub-agent (template or general-purpose): `agentDef` is its frozen effective definition (the
|
|
48
55
|
* parent's policies with the template's on top) and `ctx.agentId` is the parent's agent, so the
|
|
49
56
|
* parent's current version still tightens it (sub-agents spec §5.3, §9); its "this conversation"
|
|
50
|
-
* grants are the
|
|
57
|
+
* grants are the root conversation's (agent map spec §7); an org agent sub-agent (§5.5): `ctx.agentId` is the
|
|
51
58
|
* dispatched agent (its current version, its "always" grants) and the parent agent's current
|
|
52
|
-
* policies apply on top ({@link
|
|
59
|
+
* policies apply on top ({@link parentAgentSetting});
|
|
53
60
|
* - 授权表(`conversation_tool_grants` / `tool_grants`),`spec_hash` 与当前定义不一致视为无效(D8),
|
|
54
61
|
* `connector_id` 与工具的来源连接器不一致也无效(删除后用同一 slug 重新安装的连接器不继承旧授权);
|
|
55
62
|
* - 工具声明了 `requiredRole`(R1)时,发起人在组织中的当前角色:不是成员 → 拒绝;角色不足 → 按角色升级的审批
|
package/dist/tools/policy.js
CHANGED
|
@@ -1,29 +1,17 @@
|
|
|
1
1
|
import { sql } from "kysely";
|
|
2
2
|
import { roleAtLeast } from "../orgs/roles.js";
|
|
3
3
|
import { readOrgSettings } from "../orgs/settings.service.js";
|
|
4
|
-
import { SANDBOX_ASK_TOOL_NAMES } from "./
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
*
|
|
8
|
-
* R3 清单:发布到公共市场、安装连接器、提插件申请、改角色与成员、删除、改共享技能、改自己的指令。
|
|
9
|
-
* M3 的内置工具(`ask_user`、`read_tool_output`、`tool_search`)与连接器工具都不在清单上;M5 T15 加入
|
|
10
|
-
* `skill_write`(改共享技能)。后续实现上述动作的内置工具时把 key 登记在这里。连接器 / 插件工具由
|
|
11
|
-
* `annotations.requiresUserInteraction` 表达同一约束。
|
|
12
|
-
*/
|
|
13
|
-
export const R3_FIXED_ASK_TOOL_KEYS = new Set(["skill_write"]);
|
|
14
|
-
/**
|
|
15
|
-
* R3 清单里只对共享 agent 生效的 key(窄口子):R3 的条目是「改共享技能」,私有 agent(`visibility = private`,
|
|
16
|
-
* 只有负责人本人能用)的技能不是共享的,`skill_write` 直接生效、不询问(R4)。其余 R3 条目不论可见性一律固定 ask。
|
|
17
|
-
*/
|
|
18
|
-
export const R3_SHARED_AGENT_ONLY_TOOL_KEYS = new Set(["skill_write"]);
|
|
4
|
+
import { SANDBOX_ASK_TOOL_NAMES } from "./builtin-names.js";
|
|
5
|
+
import { personalAuth } from "./connector-account-policies.js";
|
|
6
|
+
import { normalizeStoredDefinitionIn } from "./legacy-data.js";
|
|
19
7
|
const RANK = { allow: 0, ask: 1, deny: 2 };
|
|
20
8
|
/** 取更严的策略(`allow < ask < deny`)。 */
|
|
21
9
|
export function stricter(a, b) {
|
|
22
10
|
return b !== undefined && RANK[b] > RANK[a] ? b : a;
|
|
23
11
|
}
|
|
24
12
|
/**
|
|
25
|
-
* 策略判定(纯函数):取组织默认、agent
|
|
26
|
-
* 记住的授权只能把 `ask` 放行为 `allow`,不能越过 `deny`,对
|
|
13
|
+
* 策略判定(纯函数):取组织默认、agent 收紧、固定询问三者中最严者;
|
|
14
|
+
* 记住的授权只能把 `ask` 放行为 `allow`,不能越过 `deny`,对 `requiresUserInteraction` 的工具无效。
|
|
27
15
|
*/
|
|
28
16
|
export function decide(input) {
|
|
29
17
|
let p = stricter(input.connectorDefault, input.agentOverride);
|
|
@@ -34,20 +22,58 @@ export function decide(input) {
|
|
|
34
22
|
return p;
|
|
35
23
|
}
|
|
36
24
|
/**
|
|
37
|
-
*
|
|
38
|
-
*
|
|
39
|
-
|
|
25
|
+
* Whether the tool is a fixed ask: its spec declares `requiresUserInteraction`, so its policy is
|
|
26
|
+
* at least `ask` and remembered grants never let it through.
|
|
27
|
+
*/
|
|
28
|
+
export function isFixedAsk(tool) {
|
|
29
|
+
return tool.spec.annotations?.requiresUserInteraction === true;
|
|
30
|
+
}
|
|
31
|
+
const asSetting = (v) => v === "allow" || v === "ask" || v === "deny" ? v : undefined;
|
|
32
|
+
/** The stricter of the settings that are set (none set: undefined). */
|
|
33
|
+
function combine(...xs) {
|
|
34
|
+
let out;
|
|
35
|
+
for (const x of xs)
|
|
36
|
+
if (x !== undefined)
|
|
37
|
+
out = out === undefined ? x : stricter(out, x);
|
|
38
|
+
return out;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* An agent's setting for a call: its policy on the tool key and, for a per-call key
|
|
42
|
+
* (`Platform:<operation>`), on that key, the stricter of the two; undefined when neither is set.
|
|
43
|
+
* `allow` counts only for a connector tool ({@link connectorPolicy}); elsewhere an agent's policy
|
|
44
|
+
* can only tighten ({@link tighteningOf}).
|
|
40
45
|
*/
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
46
|
+
function settingOf(policies, toolKey, policyKey) {
|
|
47
|
+
const own = asSetting(policies?.[toolKey]);
|
|
48
|
+
if (policyKey === toolKey)
|
|
49
|
+
return own;
|
|
50
|
+
return combine(own, asSetting(policies?.[policyKey]));
|
|
51
|
+
}
|
|
52
|
+
/** An agent setting as a tightening (`allow` tightens nothing). */
|
|
53
|
+
const tighteningOf = (s) => s === "ask" || s === "deny" ? s : undefined;
|
|
54
|
+
/**
|
|
55
|
+
* A personal-credential connector tool's policy for one call (maintainer decisions 2026-11-09;
|
|
56
|
+
* an org-credential connector's tool keeps the org default with the agent's tightening only),
|
|
57
|
+
* highest first:
|
|
58
|
+
* 1. the org's default `deny` (a tool the org switched off never gets here: it is unavailable);
|
|
59
|
+
* 2. the member's own `deny` for calls with their connection (`member`): a floor no agent lifts;
|
|
60
|
+
* 3. the agent's setting (`agent`, from its tools page): `allow` / `ask` / `deny`;
|
|
61
|
+
* 4. the member's own `allow` / `ask`;
|
|
62
|
+
* 5. the org's default (`connector_tools.default_policy`, the annotation default unless an org
|
|
63
|
+
* admin changed it: `readOnlyHint: true` allows, anything else asks).
|
|
64
|
+
* Fixed asks (`requiresUserInteraction`), role escalation and grants apply after this.
|
|
65
|
+
*/
|
|
66
|
+
export function connectorPolicy(input) {
|
|
67
|
+
if (input.orgDefault === "deny")
|
|
68
|
+
return { policy: "deny", source: "org" };
|
|
69
|
+
if (input.member === "deny")
|
|
70
|
+
return { policy: "deny", source: "member" };
|
|
71
|
+
if (input.agent !== undefined)
|
|
72
|
+
return { policy: input.agent, source: "agent" };
|
|
73
|
+
if (input.member !== undefined)
|
|
74
|
+
return { policy: input.member, source: "member" };
|
|
75
|
+
return { policy: input.orgDefault, source: "org" };
|
|
49
76
|
}
|
|
50
|
-
const asOverride = (v) => v === "ask" || v === "deny" ? v : undefined;
|
|
51
77
|
/**
|
|
52
78
|
* 执行时的策略判定(spec 3.6 R5:在动作执行那一刻判定)。每次调用都实时读取:
|
|
53
79
|
* - 沙箱工具(bash / write / edit / deliver)的组织设置 `sandboxToolPolicy`(为 ask 时组织默认至少 ask);
|
|
@@ -57,9 +83,9 @@ const asOverride = (v) => v === "ask" || v === "deny" ? v : undefined;
|
|
|
57
83
|
* - a sub-agent (template or general-purpose): `agentDef` is its frozen effective definition (the
|
|
58
84
|
* parent's policies with the template's on top) and `ctx.agentId` is the parent's agent, so the
|
|
59
85
|
* parent's current version still tightens it (sub-agents spec §5.3, §9); its "this conversation"
|
|
60
|
-
* grants are the
|
|
86
|
+
* grants are the root conversation's (agent map spec §7); an org agent sub-agent (§5.5): `ctx.agentId` is the
|
|
61
87
|
* dispatched agent (its current version, its "always" grants) and the parent agent's current
|
|
62
|
-
* policies apply on top ({@link
|
|
88
|
+
* policies apply on top ({@link parentAgentSetting});
|
|
63
89
|
* - 授权表(`conversation_tool_grants` / `tool_grants`),`spec_hash` 与当前定义不一致视为无效(D8),
|
|
64
90
|
* `connector_id` 与工具的来源连接器不一致也无效(删除后用同一 slug 重新安装的连接器不继承旧授权);
|
|
65
91
|
* - 工具声明了 `requiredRole`(R1)时,发起人在组织中的当前角色:不是成员 → 拒绝;角色不足 → 按角色升级的审批
|
|
@@ -69,14 +95,22 @@ const asOverride = (v) => v === "ask" || v === "deny" ? v : undefined;
|
|
|
69
95
|
*/
|
|
70
96
|
export function createDecidePolicy(db) {
|
|
71
97
|
return async (tool, agentDef, ctx) => {
|
|
72
|
-
|
|
98
|
+
// a per-call policy (Platform tool spec §6.2): its key replaces the tool key for policies,
|
|
99
|
+
// grants and approvals, and its policy replaces the tool's default
|
|
100
|
+
const call = ctx.callPolicy ?? null;
|
|
101
|
+
const policyKey = call?.key ?? tool.key;
|
|
102
|
+
let connectorDefault = call?.policy ?? tool.defaultPolicy;
|
|
73
103
|
let connectorId = null;
|
|
74
104
|
let hashCurrent = true;
|
|
105
|
+
/** The member's own setting for a call with their connection (a personal-credential connector). */
|
|
106
|
+
let memberSetting;
|
|
107
|
+
/** A personal-credential connector: calls use the acting account's own connection. */
|
|
108
|
+
let personal = false;
|
|
75
109
|
if (tool.source.kind === "connector") {
|
|
76
110
|
connectorId = tool.source.connectorId;
|
|
77
111
|
const app = await db
|
|
78
112
|
.selectFrom("connectors")
|
|
79
|
-
.select(["slug", "status", "deleted_at"])
|
|
113
|
+
.select(["slug", "status", "deleted_at", "auth"])
|
|
80
114
|
.where("id", "=", tool.source.connectorId)
|
|
81
115
|
.where("org_id", "=", ctx.orgId)
|
|
82
116
|
.executeTakeFirst();
|
|
@@ -102,6 +136,19 @@ export function createDecidePolicy(db) {
|
|
|
102
136
|
return { unavailable: "Tool is pending review" };
|
|
103
137
|
connectorDefault = row.default_policy;
|
|
104
138
|
hashCurrent = row.spec_hash === tool.specHash;
|
|
139
|
+
// The call is made with the acting account's own connection (the credential the pipeline
|
|
140
|
+
// injects for `ctx.accountId`): that account's settings apply, never another's
|
|
141
|
+
personal = personalAuth(app.auth);
|
|
142
|
+
if (personal) {
|
|
143
|
+
const mine = await db
|
|
144
|
+
.selectFrom("connector_tool_account_policies")
|
|
145
|
+
.select("policy")
|
|
146
|
+
.where("connector_id", "=", tool.source.connectorId)
|
|
147
|
+
.where("account_id", "=", ctx.accountId)
|
|
148
|
+
.where("tool_name", "=", tool.source.name)
|
|
149
|
+
.executeTakeFirst();
|
|
150
|
+
memberSetting = mine?.policy;
|
|
151
|
+
}
|
|
105
152
|
}
|
|
106
153
|
// 沙箱工具的组织默认(M5 T8):组织设置 sandboxToolPolicy 为 ask 时,有副作用的沙箱工具至少 ask
|
|
107
154
|
// `orgAsk`: the org setting, not the tool's own default, is what makes it ask
|
|
@@ -113,22 +160,47 @@ export function createDecidePolicy(db) {
|
|
|
113
160
|
}
|
|
114
161
|
}
|
|
115
162
|
// 运行所用版本可能是加 toolPolicies 字段之前保存的:缺省为空
|
|
116
|
-
const
|
|
163
|
+
const runSetting = settingOf(agentDef.toolPolicies, tool.key, policyKey);
|
|
117
164
|
const current = await db
|
|
118
165
|
.selectFrom("agents")
|
|
119
166
|
.innerJoin("agent_versions", (j) => j
|
|
120
167
|
.onRef("agent_versions.agent_id", "=", "agents.id")
|
|
121
168
|
.onRef("agent_versions.version", "=", "agents.current_version"))
|
|
122
|
-
.select(["agent_versions.definition"
|
|
169
|
+
.select(["agent_versions.definition"])
|
|
123
170
|
.where("agents.id", "=", ctx.agentId)
|
|
124
171
|
.executeTakeFirst();
|
|
125
|
-
|
|
126
|
-
const
|
|
127
|
-
|
|
172
|
+
// stored raw: an rc version's keys read as current keys, so its deny keeps applying (§8.3)
|
|
173
|
+
const currentDef = current === undefined
|
|
174
|
+
? undefined
|
|
175
|
+
: await normalizeStoredDefinitionIn(db, ctx.orgId, current.definition);
|
|
176
|
+
const currentPolicies = currentDef?.toolPolicies;
|
|
177
|
+
const currentSetting = settingOf(currentPolicies, tool.key, policyKey);
|
|
178
|
+
// the run's version, the agent's current version and (a sub-agent) its parent agent's
|
|
179
|
+
// current version: the stricter of the ones that are set
|
|
180
|
+
// (an `allow` the owner removed since the run started no longer applies: removing it tightens)
|
|
181
|
+
const runKept = runSetting === "allow" && current !== undefined && currentSetting === undefined
|
|
182
|
+
? undefined
|
|
183
|
+
: runSetting;
|
|
184
|
+
let agentSetting = combine(runKept, currentSetting);
|
|
128
185
|
if (ctx.parentConversationId !== undefined && ctx.parentAgentDiffers !== false) {
|
|
129
|
-
|
|
186
|
+
agentSetting = combine(agentSetting, await parentAgentSetting(db, tool.key, policyKey, ctx));
|
|
187
|
+
}
|
|
188
|
+
let agentOverride = tighteningOf(agentSetting);
|
|
189
|
+
// A personal-credential connector's tool: the levels of `connectorPolicy` decide its base
|
|
190
|
+
// policy (an agent's `allow` counts here, below the org's and the member's deny). A connector
|
|
191
|
+
// with one org credential has no member level and its calls act as the whole org: there the
|
|
192
|
+
// agent's setting only tightens the org default, as for every other tool (review 2026-11-09)
|
|
193
|
+
let decidedBy = null;
|
|
194
|
+
if (tool.source.kind === "connector" && personal) {
|
|
195
|
+
const r = connectorPolicy({
|
|
196
|
+
orgDefault: connectorDefault,
|
|
197
|
+
member: memberSetting,
|
|
198
|
+
agent: agentSetting,
|
|
199
|
+
});
|
|
200
|
+
connectorDefault = r.policy;
|
|
201
|
+
decidedBy = r.source;
|
|
202
|
+
agentOverride = undefined;
|
|
130
203
|
}
|
|
131
|
-
const agentOverride = strictest === "allow" ? undefined : strictest;
|
|
132
204
|
let escalateTo = null;
|
|
133
205
|
if (tool.requiredRole !== undefined) {
|
|
134
206
|
const m = await db
|
|
@@ -142,10 +214,10 @@ export function createDecidePolicy(db) {
|
|
|
142
214
|
if (!roleAtLeast(m.role, tool.requiredRole))
|
|
143
215
|
escalateTo = tool.requiredRole;
|
|
144
216
|
}
|
|
145
|
-
//
|
|
146
|
-
//
|
|
147
|
-
const
|
|
148
|
-
|
|
217
|
+
// `remember: false` on a call that is not a plain allow (an org / platform operation, or a read
|
|
218
|
+
// an agent tightened to ask): every call asks, grants never apply. A read (`allow`) never asks.
|
|
219
|
+
const fixedAsk = isFixedAsk(tool) ||
|
|
220
|
+
(call !== null && !call.remember && (call.policy !== "allow" || agentOverride !== undefined));
|
|
149
221
|
const input = {
|
|
150
222
|
connectorDefault,
|
|
151
223
|
...(agentOverride !== undefined && { agentOverride }),
|
|
@@ -156,7 +228,7 @@ export function createDecidePolicy(db) {
|
|
|
156
228
|
if (pre === "deny")
|
|
157
229
|
return "deny";
|
|
158
230
|
if (pre === "ask" && !fixedAsk && escalateTo === null && hashCurrent) {
|
|
159
|
-
input.grant = await findGrant(db, tool, connectorId, ctx);
|
|
231
|
+
input.grant = await findGrant(db, tool, policyKey, connectorId, ctx);
|
|
160
232
|
}
|
|
161
233
|
const result = decide(input);
|
|
162
234
|
if (result === "allow" && escalateTo === null) {
|
|
@@ -164,25 +236,27 @@ export function createDecidePolicy(db) {
|
|
|
164
236
|
return pre === "ask" && input.grant !== null ? { grant: input.grant } : "allow";
|
|
165
237
|
}
|
|
166
238
|
const ask = {
|
|
167
|
-
toolKey:
|
|
239
|
+
toolKey: policyKey,
|
|
168
240
|
specHash: tool.specHash,
|
|
169
241
|
connectorId,
|
|
170
242
|
requestedFor: escalateTo === null ? ctx.accountId : null,
|
|
171
243
|
approverRole: escalateTo,
|
|
172
244
|
// the most specific rule that asked: role escalation, the agent's tightening, the connector,
|
|
173
|
-
// a fixed ask (
|
|
245
|
+
// a fixed ask (requiresUserInteraction), the org's sandboxToolPolicy, else the tool's own
|
|
174
246
|
// default
|
|
175
247
|
policy: escalateTo !== null
|
|
176
248
|
? "role"
|
|
177
|
-
: agentOverride === "ask"
|
|
249
|
+
: agentOverride === "ask" || (decidedBy === "agent" && connectorDefault === "ask")
|
|
178
250
|
? "agent"
|
|
179
|
-
:
|
|
180
|
-
? "
|
|
181
|
-
:
|
|
182
|
-
? "
|
|
183
|
-
:
|
|
184
|
-
? "
|
|
185
|
-
:
|
|
251
|
+
: decidedBy === "member" && connectorDefault === "ask"
|
|
252
|
+
? "member"
|
|
253
|
+
: tool.source.kind === "connector" && connectorDefault === "ask"
|
|
254
|
+
? "connector"
|
|
255
|
+
: fixedAsk
|
|
256
|
+
? "fixed"
|
|
257
|
+
: orgAsk
|
|
258
|
+
? "org"
|
|
259
|
+
: "default",
|
|
186
260
|
};
|
|
187
261
|
return { ask };
|
|
188
262
|
};
|
|
@@ -193,7 +267,7 @@ export function createDecidePolicy(db) {
|
|
|
193
267
|
* policy for the same key applies on top, so the parent's owner can tighten a running child too.
|
|
194
268
|
* For a template or general-purpose child the parent conversation has the same agent, already read.
|
|
195
269
|
*/
|
|
196
|
-
async function
|
|
270
|
+
async function parentAgentSetting(db, toolKey, policyKey, ctx) {
|
|
197
271
|
const row = await db
|
|
198
272
|
.selectFrom("conversations as c")
|
|
199
273
|
.innerJoin("agents as a", "a.id", "c.agent_id")
|
|
@@ -203,22 +277,26 @@ async function parentAgentOverride(db, toolKey, ctx) {
|
|
|
203
277
|
.executeTakeFirst();
|
|
204
278
|
if (!row || row.id === ctx.agentId)
|
|
205
279
|
return undefined;
|
|
206
|
-
|
|
207
|
-
|
|
280
|
+
// stored raw: an rc version's keys read as current keys, so its deny keeps applying (§8.3)
|
|
281
|
+
const policies = (await normalizeStoredDefinitionIn(db, ctx.orgId, row.definition))
|
|
282
|
+
.toolPolicies;
|
|
283
|
+
return settingOf(policies, toolKey, policyKey);
|
|
208
284
|
}
|
|
209
285
|
/**
|
|
210
|
-
* A grant matching the current definition hash and source connector
|
|
286
|
+
* A grant matching the current definition hash and source connector, keyed by the call's policy key
|
|
287
|
+
* (the tool key, or a per-call key such as `Platform:<operation>`): this conversation's first,
|
|
211
288
|
* then "always". `connectorId` is the tool's source connector (null for plugin and builtin tools,
|
|
212
289
|
* which match only grants without a connector). A sub-agent's "this conversation" grants live on
|
|
213
|
-
*
|
|
290
|
+
* the root conversation of its tree (agent map spec §7), so the root and every sub-agent at any
|
|
291
|
+
* depth are approved once.
|
|
214
292
|
*/
|
|
215
|
-
async function findGrant(db, tool, connectorId, ctx) {
|
|
293
|
+
async function findGrant(db, tool, policyKey, connectorId, ctx) {
|
|
216
294
|
const sameConnector = sql `connector_id IS NOT DISTINCT FROM ${connectorId}`;
|
|
217
295
|
const session = await db
|
|
218
296
|
.selectFrom("conversation_tool_grants")
|
|
219
297
|
.select("spec_hash")
|
|
220
|
-
.where("conversation_id", "=", ctx.
|
|
221
|
-
.where("tool_key", "=",
|
|
298
|
+
.where("conversation_id", "=", ctx.rootConversationId ?? ctx.conversationId)
|
|
299
|
+
.where("tool_key", "=", policyKey)
|
|
222
300
|
.where(sameConnector)
|
|
223
301
|
.executeTakeFirst();
|
|
224
302
|
if (session?.spec_hash === tool.specHash)
|
|
@@ -229,7 +307,7 @@ async function findGrant(db, tool, connectorId, ctx) {
|
|
|
229
307
|
.where("org_id", "=", ctx.orgId)
|
|
230
308
|
.where("account_id", "=", ctx.accountId)
|
|
231
309
|
.where("agent_id", "=", ctx.agentId)
|
|
232
|
-
.where("tool_key", "=",
|
|
310
|
+
.where("tool_key", "=", policyKey)
|
|
233
311
|
.where(sameConnector)
|
|
234
312
|
.executeTakeFirst();
|
|
235
313
|
return always?.spec_hash === tool.specHash ? "always" : null;
|
|
@@ -7,7 +7,7 @@ declare const AnswerBody: z.ZodObject<{
|
|
|
7
7
|
answer: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
8
8
|
}, z.core.$strict>;
|
|
9
9
|
/**
|
|
10
|
-
* 输入请求(`
|
|
10
|
+
* 输入请求(`AskUserQuestion`、插件工具的 `input_required`):`/api/v1/orgs/:orgId/questions`。
|
|
11
11
|
* 动作用 `approvals.decide`(访客起、仅限用户主体):回答必须由人做出,agent / 服务令牌不能代答;
|
|
12
12
|
* 具体是否允许由服务判定——只有该运行的发起人能读取与回答,其他成员 403。
|
|
13
13
|
*/
|
|
@@ -19,7 +19,7 @@ const AnswerBody = z.object({ answer: z.record(z.string().max(200), z.unknown())
|
|
|
19
19
|
class QuestionAnswerBody extends createZodDto(AnswerBody, "QuestionAnswerBody") {
|
|
20
20
|
}
|
|
21
21
|
/**
|
|
22
|
-
* 输入请求(`
|
|
22
|
+
* 输入请求(`AskUserQuestion`、插件工具的 `input_required`):`/api/v1/orgs/:orgId/questions`。
|
|
23
23
|
* 动作用 `approvals.decide`(访客起、仅限用户主体):回答必须由人做出,agent / 服务令牌不能代答;
|
|
24
24
|
* 具体是否允许由服务判定——只有该运行的发起人能读取与回答,其他成员 403。
|
|
25
25
|
*/
|
|
@@ -4,8 +4,8 @@ import { KernelConfigService } from "../infra/config/kernel-config.service.js";
|
|
|
4
4
|
import { KernelDb } from "../infra/database/kernel-db.js";
|
|
5
5
|
import { TransactionHost } from "../infra/database/transaction-host.js";
|
|
6
6
|
import { KernelEvents } from "../infra/events/kernel-events.js";
|
|
7
|
-
export type QuestionStatus = "pending" | "answered" | "expired" | "cancelled";
|
|
8
|
-
/** 一条输入请求(`
|
|
7
|
+
export type QuestionStatus = "pending" | "answered" | "skipped" | "expired" | "cancelled";
|
|
8
|
+
/** 一条输入请求(`AskUserQuestion`、插件工具的 `input_required`、MCP elicitation 共用)。 */
|
|
9
9
|
export interface QuestionRecord {
|
|
10
10
|
id: string;
|
|
11
11
|
orgId: string;
|
|
@@ -75,6 +75,13 @@ export declare class QuestionsService {
|
|
|
75
75
|
* 传 `orgId` 时还要求输入请求属于该组织(HTTP 接口用)。
|
|
76
76
|
*/
|
|
77
77
|
answer(questionId: string, accountId: string, answer: unknown, orgId?: string): Promise<QuestionRecord>;
|
|
78
|
+
/**
|
|
79
|
+
* Locks the conversation row of question `questionId` (`SELECT … FOR UPDATE`; re-entrant with the
|
|
80
|
+
* lock `EventLog.appendIn` takes later). Every write to a question row takes the conversation lock
|
|
81
|
+
* first, then the question row (reply-while-question spec §8.2, D7), as the message's skip and
|
|
82
|
+
* the stop of a waiting run do, so no two of them can deadlock. False: no such question (in `orgId`).
|
|
83
|
+
*/
|
|
84
|
+
private lockConversationOf;
|
|
78
85
|
private answerIn;
|
|
79
86
|
/**
|
|
80
87
|
* 超时(等待机制的超时任务调用):仍 pending 且已到期 → 置 expired、写 `question_answered{expired}`。
|
|
@@ -99,6 +106,20 @@ export declare class QuestionsService {
|
|
|
99
106
|
records: QuestionRecord[];
|
|
100
107
|
seqs: Map<string, number>;
|
|
101
108
|
}>;
|
|
109
|
+
/**
|
|
110
|
+
* Skips, in the caller's transaction (`mandatory`, the message's), every question a message by
|
|
111
|
+
* `accountId` just written at `messageSeq` closes (reply-while-question spec §4.2, §8.1): pending,
|
|
112
|
+
* not yet due, asked in `conversationId` (a sub-agent's question lives in the child conversation)
|
|
113
|
+
* by a run of it that is `running` or `waiting` and was started by `accountId`. The caller holds
|
|
114
|
+
* the conversation row lock (its `appendIn`), so only questions logged before the message are
|
|
115
|
+
* seen. Each becomes `skipped` with `question_answered { outcome: "skipped", skippedBySeq }`.
|
|
116
|
+
* Returns the records and the highest seq written (null: none); the caller notifies and emits
|
|
117
|
+
* `question.answered` after the commit.
|
|
118
|
+
*/
|
|
119
|
+
skipPendingIn(conversationId: string, accountId: string, messageSeq: number): Promise<{
|
|
120
|
+
records: QuestionRecord[];
|
|
121
|
+
toSeq: number | null;
|
|
122
|
+
}>;
|
|
102
123
|
/** `question_answered` in the current transaction; returns its seq. */
|
|
103
124
|
private answeredEvent;
|
|
104
125
|
}
|
|
@@ -169,13 +169,38 @@ let QuestionsService = class QuestionsService {
|
|
|
169
169
|
orgId: record.orgId,
|
|
170
170
|
conversationId: record.conversationId,
|
|
171
171
|
runId: record.runId,
|
|
172
|
+
outcome: "answered",
|
|
172
173
|
});
|
|
173
174
|
return record;
|
|
174
175
|
}
|
|
176
|
+
/**
|
|
177
|
+
* Locks the conversation row of question `questionId` (`SELECT … FOR UPDATE`; re-entrant with the
|
|
178
|
+
* lock `EventLog.appendIn` takes later). Every write to a question row takes the conversation lock
|
|
179
|
+
* first, then the question row (reply-while-question spec §8.2, D7), as the message's skip and
|
|
180
|
+
* the stop of a waiting run do, so no two of them can deadlock. False: no such question (in `orgId`).
|
|
181
|
+
*/
|
|
182
|
+
async lockConversationOf(questionId, orgId) {
|
|
183
|
+
const t = this.db.db;
|
|
184
|
+
let q = t.selectFrom("questions").select("conversation_id").where("id", "=", questionId);
|
|
185
|
+
if (orgId !== undefined)
|
|
186
|
+
q = q.where("org_id", "=", orgId);
|
|
187
|
+
const row = await q.executeTakeFirst();
|
|
188
|
+
if (!row)
|
|
189
|
+
return false;
|
|
190
|
+
await t
|
|
191
|
+
.selectFrom("conversations")
|
|
192
|
+
.select("id")
|
|
193
|
+
.where("id", "=", row.conversation_id)
|
|
194
|
+
.forUpdate()
|
|
195
|
+
.executeTakeFirst();
|
|
196
|
+
return true;
|
|
197
|
+
}
|
|
175
198
|
// its own transaction (as the legacy one was): `question.answered` is emitted only after the
|
|
176
199
|
// answer committed, even when a caller has a transaction open
|
|
177
200
|
async answerIn(questionId, accountId, answer, orgId) {
|
|
178
201
|
const t = this.db.db;
|
|
202
|
+
if (!(await this.lockConversationOf(questionId, orgId)))
|
|
203
|
+
throw notFound();
|
|
179
204
|
let q = t
|
|
180
205
|
.selectFrom("questions")
|
|
181
206
|
.selectAll()
|
|
@@ -194,6 +219,9 @@ let QuestionsService = class QuestionsService {
|
|
|
194
219
|
if (run?.trigger_account_id !== accountId)
|
|
195
220
|
throw notInitiator();
|
|
196
221
|
const before = toRecord(locked);
|
|
222
|
+
if (before.status === "skipped") {
|
|
223
|
+
throw new ApiError("question.already_answered", "Question was skipped: the user sent a message instead");
|
|
224
|
+
}
|
|
197
225
|
if (before.status !== "pending") {
|
|
198
226
|
throw new ApiError("question.already_answered", "Question has already been answered");
|
|
199
227
|
}
|
|
@@ -233,6 +261,8 @@ let QuestionsService = class QuestionsService {
|
|
|
233
261
|
}
|
|
234
262
|
async expireIn(questionId) {
|
|
235
263
|
const t = this.db.db;
|
|
264
|
+
if (!(await this.lockConversationOf(questionId)))
|
|
265
|
+
return { outcome: "settled" };
|
|
236
266
|
const locked = await t
|
|
237
267
|
.selectFrom("questions")
|
|
238
268
|
.selectAll()
|
|
@@ -291,10 +321,33 @@ let QuestionsService = class QuestionsService {
|
|
|
291
321
|
*/
|
|
292
322
|
async cancelPendingFor(orgId, accountId) {
|
|
293
323
|
const t = this.db.db;
|
|
324
|
+
// the conversations first, in id order (lock order D7: conversation, then question rows)
|
|
325
|
+
const convs = await t
|
|
326
|
+
.selectFrom("questions")
|
|
327
|
+
.select("conversation_id")
|
|
328
|
+
.distinct()
|
|
329
|
+
.where("org_id", "=", orgId)
|
|
330
|
+
.where("status", "=", "pending")
|
|
331
|
+
.where("run_id", "in", (eb) => eb.selectFrom("runs").select("id").where("trigger_account_id", "=", accountId))
|
|
332
|
+
.execute();
|
|
333
|
+
if (convs.length > 0) {
|
|
334
|
+
await t
|
|
335
|
+
.selectFrom("conversations")
|
|
336
|
+
.select("id")
|
|
337
|
+
.where("id", "in", convs.map((c) => c.conversation_id))
|
|
338
|
+
.orderBy("id")
|
|
339
|
+
.forUpdate()
|
|
340
|
+
.execute();
|
|
341
|
+
}
|
|
342
|
+
// only the conversations locked above: a question asked meanwhile in another one waits for
|
|
343
|
+
// the run's stop (offboarding aborts it) or the sweep, so no conversation is locked after a row
|
|
344
|
+
if (convs.length === 0)
|
|
345
|
+
return { records: [], seqs: new Map() };
|
|
294
346
|
const rows = await t
|
|
295
347
|
.selectFrom("questions")
|
|
296
348
|
.selectAll()
|
|
297
349
|
.where("org_id", "=", orgId)
|
|
350
|
+
.where("conversation_id", "in", convs.map((c) => c.conversation_id))
|
|
298
351
|
.where("status", "=", "pending")
|
|
299
352
|
.where("run_id", "in", (eb) => eb.selectFrom("runs").select("id").where("trigger_account_id", "=", accountId))
|
|
300
353
|
.orderBy("created_at")
|
|
@@ -315,14 +368,60 @@ let QuestionsService = class QuestionsService {
|
|
|
315
368
|
}
|
|
316
369
|
return { records, seqs };
|
|
317
370
|
}
|
|
371
|
+
/**
|
|
372
|
+
* Skips, in the caller's transaction (`mandatory`, the message's), every question a message by
|
|
373
|
+
* `accountId` just written at `messageSeq` closes (reply-while-question spec §4.2, §8.1): pending,
|
|
374
|
+
* not yet due, asked in `conversationId` (a sub-agent's question lives in the child conversation)
|
|
375
|
+
* by a run of it that is `running` or `waiting` and was started by `accountId`. The caller holds
|
|
376
|
+
* the conversation row lock (its `appendIn`), so only questions logged before the message are
|
|
377
|
+
* seen. Each becomes `skipped` with `question_answered { outcome: "skipped", skippedBySeq }`.
|
|
378
|
+
* Returns the records and the highest seq written (null: none); the caller notifies and emits
|
|
379
|
+
* `question.answered` after the commit.
|
|
380
|
+
*/
|
|
381
|
+
async skipPendingIn(conversationId, accountId, messageSeq) {
|
|
382
|
+
const t = this.db.db;
|
|
383
|
+
const rows = await t
|
|
384
|
+
.selectFrom("questions as q")
|
|
385
|
+
.innerJoin("runs as r", "r.id", "q.run_id")
|
|
386
|
+
.selectAll("q")
|
|
387
|
+
.where("q.conversation_id", "=", conversationId)
|
|
388
|
+
.where("q.status", "=", "pending")
|
|
389
|
+
.where(sql `q.expires_at > now()`)
|
|
390
|
+
.where("r.status", "in", ["running", "waiting"])
|
|
391
|
+
.where("r.trigger_account_id", "=", accountId)
|
|
392
|
+
.orderBy("q.created_at")
|
|
393
|
+
.orderBy("q.id")
|
|
394
|
+
.forUpdate("q")
|
|
395
|
+
.execute();
|
|
396
|
+
const records = [];
|
|
397
|
+
let toSeq = null;
|
|
398
|
+
for (const row of rows) {
|
|
399
|
+
const updated = await t
|
|
400
|
+
.updateTable("questions")
|
|
401
|
+
.set({ status: "skipped", answered_by: accountId, answered_at: sql `now()` })
|
|
402
|
+
.where("id", "=", row.id)
|
|
403
|
+
.returningAll()
|
|
404
|
+
.executeTakeFirstOrThrow();
|
|
405
|
+
toSeq = await this.answeredEvent(toRecord(row), null, accountId, "skipped", messageSeq);
|
|
406
|
+
records.push(toRecord(updated));
|
|
407
|
+
}
|
|
408
|
+
return { records, toSeq };
|
|
409
|
+
}
|
|
318
410
|
/** `question_answered` in the current transaction; returns its seq. */
|
|
319
|
-
async answeredEvent(q, answer, byAccountId, outcome) {
|
|
411
|
+
async answeredEvent(q, answer, byAccountId, outcome, skippedBySeq) {
|
|
320
412
|
const written = await this.eventLog.appendIn(q.conversationId, [
|
|
321
413
|
{
|
|
322
414
|
type: "question_answered",
|
|
323
415
|
runId: q.runId,
|
|
324
416
|
idemKey: `question_answered:${q.id}`,
|
|
325
|
-
payload: {
|
|
417
|
+
payload: {
|
|
418
|
+
questionId: q.id,
|
|
419
|
+
callId: q.callId,
|
|
420
|
+
answer,
|
|
421
|
+
byAccountId,
|
|
422
|
+
outcome,
|
|
423
|
+
...(skippedBySeq !== undefined && { skippedBySeq }),
|
|
424
|
+
},
|
|
326
425
|
},
|
|
327
426
|
]);
|
|
328
427
|
return Math.max(...written.map((e) => e.seq));
|
|
@@ -343,6 +442,9 @@ __decorate([
|
|
|
343
442
|
__decorate([
|
|
344
443
|
Transactional({ propagation: "mandatory" })
|
|
345
444
|
], QuestionsService.prototype, "cancelPendingFor", null);
|
|
445
|
+
__decorate([
|
|
446
|
+
Transactional({ propagation: "mandatory" })
|
|
447
|
+
], QuestionsService.prototype, "skipPendingIn", null);
|
|
346
448
|
QuestionsService = __decorate([
|
|
347
449
|
Injectable(),
|
|
348
450
|
__param(0, Inject(KernelDb)),
|