@capybara-hq/kernel 0.1.0-rc.1 → 0.1.0-rc.11
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.controller.d.ts +52 -71
- package/dist/admin/admin.controller.js +117 -63
- package/dist/admin/admin.module.d.ts +3 -0
- package/dist/admin/admin.module.js +22 -0
- package/dist/admin/admin.schemas.d.ts +60 -0
- package/dist/admin/admin.schemas.js +50 -0
- package/dist/admin/extensions.controller.d.ts +47 -16
- package/dist/admin/extensions.controller.js +94 -23
- package/dist/admin/extensions.schemas.d.ts +7 -0
- package/dist/admin/extensions.schemas.js +10 -0
- package/dist/admin/limit-defaults.d.ts +20 -0
- package/dist/admin/limit-defaults.js +10 -0
- package/dist/admin/setup-lock.d.ts +16 -0
- package/dist/admin/setup-lock.js +47 -0
- package/dist/admin/setup.controller.d.ts +9 -9
- package/dist/admin/setup.controller.js +28 -26
- package/dist/admin/setup.service.d.ts +20 -28
- package/dist/admin/setup.service.js +65 -65
- package/dist/agents/agent-lookup.d.ts +72 -0
- package/dist/agents/agent-lookup.js +208 -0
- 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 +54 -169
- package/dist/agents/agents.controller.js +172 -37
- package/dist/agents/agents.module.d.ts +10 -0
- package/dist/agents/agents.module.js +71 -0
- package/dist/agents/agents.schemas.d.ts +389 -0
- package/dist/agents/agents.schemas.js +126 -0
- package/dist/agents/agents.service.d.ts +104 -76
- package/dist/agents/agents.service.js +509 -383
- package/dist/agents/definition.d.ts +133 -21
- package/dist/agents/definition.js +361 -41
- 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 +868 -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 +78 -6
- package/dist/agents/templates.controller.js +154 -8
- package/dist/agents/templates.d.ts +132 -30
- package/dist/agents/templates.js +500 -46
- package/dist/agents/templates.schemas.d.ts +20 -0
- package/dist/agents/templates.schemas.js +45 -0
- package/dist/app.d.ts +93 -0
- package/dist/app.js +150 -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 +77 -0
- package/dist/background/tasks.service.js +216 -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 +102 -52
- package/dist/catalog/admin-catalog.controller.js +222 -67
- package/dist/catalog/admin-catalog.schemas.d.ts +72 -0
- package/dist/catalog/admin-catalog.schemas.js +92 -0
- package/dist/catalog/catalog-content.d.ts +264 -0
- package/dist/catalog/catalog-content.js +430 -0
- package/dist/catalog/catalog-files.d.ts +41 -0
- package/dist/catalog/catalog-files.js +86 -0
- package/dist/catalog/catalog-import.module.d.ts +7 -0
- package/dist/catalog/catalog-import.module.js +60 -0
- package/dist/catalog/catalog-items.d.ts +290 -0
- package/dist/catalog/catalog-items.js +677 -0
- package/dist/catalog/catalog-scope.service.d.ts +286 -0
- package/dist/catalog/catalog-scope.service.js +1196 -0
- package/dist/catalog/catalog.module.d.ts +12 -0
- package/dist/catalog/catalog.module.js +81 -0
- package/dist/catalog/catalog.service.d.ts +144 -207
- package/dist/catalog/catalog.service.js +258 -528
- package/dist/catalog/claude/agents.js +15 -10
- package/dist/catalog/claude/translate.js +3 -0
- package/dist/catalog/cli.d.ts +14 -3
- package/dist/catalog/cli.js +39 -32
- 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 +90 -0
- package/dist/catalog/component-scope.controller.js +234 -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 +366 -0
- package/dist/catalog/component-scope.service.js +1115 -0
- package/dist/catalog/component-state.d.ts +197 -0
- package/dist/catalog/component-state.js +473 -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 +45 -0
- package/dist/catalog/job-ids.js +40 -0
- package/dist/catalog/jobs.d.ts +27 -0
- package/dist/catalog/jobs.js +70 -0
- package/dist/catalog/locks.d.ts +24 -0
- package/dist/catalog/locks.js +63 -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 +53 -44
- package/dist/catalog/marketplaces.controller.js +146 -51
- package/dist/catalog/marketplaces.schemas.d.ts +48 -0
- package/dist/catalog/marketplaces.schemas.js +53 -0
- package/dist/catalog/marketplaces.service.d.ts +136 -26
- package/dist/catalog/marketplaces.service.js +663 -281
- package/dist/catalog/org-catalog.controller.d.ts +115 -63
- package/dist/catalog/org-catalog.controller.js +207 -100
- package/dist/catalog/org-catalog.schemas.d.ts +88 -0
- package/dist/catalog/org-catalog.schemas.js +93 -0
- package/dist/catalog/org-catalog.service.d.ts +89 -216
- package/dist/catalog/org-catalog.service.js +434 -472
- 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 +113 -0
- package/dist/catalog/org-extension.controller.js +271 -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 +293 -71
- package/dist/catalog/plugin-import.js +1039 -281
- package/dist/catalog/plugin-install.d.ts +271 -66
- package/dist/catalog/plugin-install.js +1198 -344
- package/dist/catalog/plugin-package.d.ts +41 -4
- package/dist/catalog/plugin-package.js +140 -7
- package/dist/catalog/plugin-upgrade.d.ts +312 -188
- package/dist/catalog/plugin-upgrade.js +1371 -1065
- package/dist/catalog/request-rules.d.ts +65 -0
- package/dist/catalog/request-rules.js +217 -0
- package/dist/catalog/requests.service.d.ts +205 -117
- package/dist/catalog/requests.service.js +612 -369
- 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.d.ts +6 -4
- package/dist/channels/actions.js +11 -4
- package/dist/channels/cards.d.ts +33 -11
- package/dist/channels/cards.js +96 -24
- package/dist/channels/channels.module.d.ts +40 -0
- package/dist/channels/channels.module.js +130 -0
- package/dist/channels/channels.schemas.d.ts +37 -0
- package/dist/channels/channels.schemas.js +38 -0
- package/dist/channels/connections.controller.d.ts +44 -37
- package/dist/channels/connections.controller.js +83 -38
- package/dist/channels/connections.service.d.ts +101 -30
- package/dist/channels/connections.service.js +380 -147
- package/dist/channels/inbound.d.ts +44 -38
- package/dist/channels/inbound.js +190 -44
- package/dist/channels/job-ids.d.ts +10 -0
- package/dist/channels/job-ids.js +10 -0
- package/dist/channels/jobs.d.ts +85 -0
- package/dist/channels/jobs.js +157 -0
- package/dist/channels/outbound.d.ts +71 -80
- package/dist/channels/outbound.js +219 -202
- package/dist/channels/phrases.d.ts +33 -2
- package/dist/channels/phrases.js +29 -1
- package/dist/channels/supervisor.d.ts +88 -46
- package/dist/channels/supervisor.js +230 -132
- package/dist/channels/threads.d.ts +34 -8
- package/dist/channels/threads.js +79 -13
- package/dist/channels/webhook.d.ts +20 -14
- package/dist/channels/webhook.js +51 -20
- package/dist/config/docs.js +5 -1
- package/dist/config/load.d.ts +3 -2
- package/dist/config/load.js +3 -2
- package/dist/config/nacos-source.js +11 -2
- package/dist/config/schema.d.ts +36 -2
- package/dist/config/schema.js +226 -25
- package/dist/conversations/access.d.ts +31 -0
- package/dist/conversations/access.js +110 -0
- package/dist/conversations/agent-tree.d.ts +46 -0
- package/dist/conversations/agent-tree.js +92 -0
- package/dist/conversations/artifacts.d.ts +11 -11
- package/dist/conversations/artifacts.js +36 -10
- package/dist/conversations/attachments.controller.d.ts +1 -1
- package/dist/conversations/attachments.controller.js +8 -6
- package/dist/conversations/attachments.module.d.ts +7 -0
- package/dist/conversations/attachments.module.js +25 -0
- package/dist/conversations/attachments.service.d.ts +60 -22
- package/dist/conversations/attachments.service.js +249 -51
- package/dist/conversations/conversations.controller.d.ts +86 -50
- package/dist/conversations/conversations.controller.js +184 -103
- package/dist/conversations/conversations.module.d.ts +8 -0
- package/dist/conversations/conversations.module.js +72 -0
- package/dist/conversations/conversations.schemas.d.ts +52 -0
- package/dist/conversations/conversations.schemas.js +79 -0
- package/dist/conversations/conversations.service.d.ts +166 -49
- package/dist/conversations/conversations.service.js +383 -179
- package/dist/conversations/environment-status.d.ts +24 -0
- package/dist/conversations/environment-status.js +71 -0
- package/dist/conversations/event-log.d.ts +64 -27
- package/dist/conversations/event-log.js +167 -31
- package/dist/conversations/events.d.ts +252 -9
- package/dist/conversations/events.js +243 -32
- package/dist/conversations/files.d.ts +10 -10
- package/dist/conversations/files.js +37 -11
- package/dist/conversations/idem-keys.d.ts +5 -0
- package/dist/conversations/idem-keys.js +5 -0
- package/dist/conversations/job-ids.d.ts +6 -0
- package/dist/conversations/job-ids.js +6 -0
- package/dist/conversations/message-context.d.ts +79 -0
- package/dist/conversations/message-context.js +145 -0
- package/dist/conversations/outputs-read.d.ts +11 -11
- package/dist/conversations/outputs-read.js +31 -7
- package/dist/conversations/queue.d.ts +53 -58
- package/dist/conversations/queue.js +37 -293
- package/dist/conversations/queue.service.d.ts +60 -0
- package/dist/conversations/queue.service.js +350 -0
- package/dist/conversations/titles.d.ts +83 -27
- package/dist/conversations/titles.js +195 -71
- package/dist/conversations/tree.d.ts +17 -0
- package/dist/conversations/tree.js +42 -0
- package/dist/ctx/bus.js +9 -3
- package/dist/ctx/create-ctx.d.ts +26 -1
- package/dist/ctx/create-ctx.js +45 -16
- package/dist/ctx/lock.d.ts +7 -3
- package/dist/ctx/lock.js +9 -20
- package/dist/ctx/secrets.d.ts +10 -2
- package/dist/ctx/secrets.js +7 -3
- package/dist/db/kernel-schema.d.ts +589 -27
- package/dist/db/pool.d.ts +10 -0
- package/dist/db/pool.js +4 -0
- package/dist/devices/device-auth.controller.d.ts +42 -0
- package/dist/devices/device-auth.controller.js +116 -0
- package/dist/devices/device-auth.d.ts +119 -0
- package/dist/devices/device-auth.js +403 -0
- package/dist/devices/device-auth.module.d.ts +7 -0
- package/dist/devices/device-auth.module.js +25 -0
- package/dist/devices/device-gateway.d.ts +128 -0
- package/dist/devices/device-gateway.js +530 -0
- package/dist/devices/device-provider.d.ts +89 -0
- package/dist/devices/device-provider.js +151 -0
- package/dist/devices/device-routes.d.ts +36 -0
- package/dist/devices/device-routes.js +90 -0
- package/dist/devices/devices.module.d.ts +16 -0
- package/dist/devices/devices.module.js +44 -0
- package/dist/devices/dto.d.ts +66 -0
- package/dist/devices/dto.js +44 -0
- package/dist/devices/keys.d.ts +25 -0
- package/dist/devices/keys.js +25 -0
- package/dist/devices/machines.d.ts +118 -0
- package/dist/devices/machines.js +366 -0
- package/dist/devices/relay.d.ts +100 -0
- package/dist/devices/relay.js +373 -0
- package/dist/devices/targets.d.ts +28 -0
- package/dist/devices/targets.js +73 -0
- package/dist/environments/access.d.ts +66 -0
- package/dist/environments/access.js +113 -0
- package/dist/environments/conversation-environments.d.ts +75 -0
- package/dist/environments/conversation-environments.js +231 -0
- package/dist/environments/dto.d.ts +25 -0
- package/dist/environments/dto.js +12 -0
- package/dist/environments/environments.controller.d.ts +36 -0
- package/dist/environments/environments.controller.js +124 -0
- package/dist/environments/environments.module.d.ts +8 -0
- package/dist/environments/environments.module.js +31 -0
- package/dist/environments/environments.schemas.d.ts +3 -0
- package/dist/environments/environments.schemas.js +14 -0
- package/dist/environments/environments.service.d.ts +251 -0
- package/dist/environments/environments.service.js +791 -0
- package/dist/environments/label.d.ts +11 -0
- package/dist/environments/label.js +25 -0
- package/dist/environments/legacy-cleanup.job.d.ts +34 -0
- package/dist/environments/legacy-cleanup.job.js +141 -0
- package/dist/errors.d.ts +160 -2
- package/dist/errors.js +160 -2
- package/dist/evals/budget.d.ts +42 -21
- package/dist/evals/budget.js +114 -62
- package/dist/evals/evals.module.d.ts +31 -0
- package/dist/evals/evals.module.js +114 -0
- package/dist/evals/evals.schemas.d.ts +110 -0
- package/dist/evals/evals.schemas.js +107 -0
- package/dist/evals/jobs.d.ts +20 -0
- package/dist/evals/jobs.js +45 -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 +75 -10
- package/dist/evals/run-replay.js +218 -94
- package/dist/evals/runs.controller.d.ts +3 -58
- package/dist/evals/runs.controller.js +18 -50
- package/dist/evals/runs.service.d.ts +31 -52
- package/dist/evals/runs.service.js +281 -255
- package/dist/evals/sets.controller.d.ts +3 -29
- package/dist/evals/sets.controller.js +18 -39
- package/dist/evals/sets.service.d.ts +29 -13
- package/dist/evals/sets.service.js +262 -202
- package/dist/evals/snapshot.d.ts +5 -4
- package/dist/evals/snapshot.js +17 -4
- package/dist/evals/step-replay.d.ts +6 -8
- package/dist/evals/step-replay.js +17 -10
- package/dist/evals/trajectory.controller.d.ts +1 -1
- package/dist/evals/trajectory.controller.js +11 -7
- package/dist/evals/trajectory.d.ts +2 -2
- package/dist/evals/trajectory.js +1 -1
- package/dist/evals/trajectory.service.d.ts +13 -7
- package/dist/evals/trajectory.service.js +56 -21
- package/dist/evals/worker.d.ts +48 -31
- package/dist/evals/worker.js +229 -124
- package/dist/extensions/admin-ops.d.ts +133 -41
- package/dist/extensions/admin-ops.js +378 -172
- package/dist/extensions/admin-view.d.ts +82 -32
- package/dist/extensions/admin-view.js +284 -71
- package/dist/extensions/approvals.d.ts +24 -10
- package/dist/extensions/approvals.js +73 -46
- package/dist/extensions/blobs.d.ts +27 -10
- package/dist/extensions/blobs.js +112 -45
- package/dist/extensions/bootstrap.d.ts +99 -36
- package/dist/extensions/bootstrap.js +290 -134
- package/dist/extensions/cli.d.ts +32 -10
- package/dist/extensions/cli.js +52 -98
- package/dist/extensions/config-hash.d.ts +10 -0
- package/dist/extensions/config-hash.js +38 -0
- package/dist/extensions/config-issues.d.ts +19 -0
- package/dist/extensions/config-issues.js +48 -0
- 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 +55 -0
- package/dist/extensions/deployment-config-store.js +133 -0
- package/dist/extensions/deployment-config.d.ts +146 -70
- package/dist/extensions/deployment-config.js +439 -246
- package/dist/extensions/display-name.d.ts +22 -0
- package/dist/extensions/display-name.js +77 -0
- package/dist/extensions/effective-config.d.ts +127 -0
- package/dist/extensions/effective-config.js +368 -0
- package/dist/extensions/enabled.d.ts +5 -5
- package/dist/extensions/extensions.module.d.ts +8 -0
- package/dist/extensions/extensions.module.js +96 -0
- package/dist/extensions/hooks.d.ts +40 -6
- package/dist/extensions/hooks.js +83 -17
- package/dist/extensions/host.d.ts +161 -80
- package/dist/extensions/host.js +505 -213
- package/dist/extensions/installs.d.ts +73 -19
- package/dist/extensions/installs.js +174 -37
- package/dist/extensions/job-ids.d.ts +6 -0
- package/dist/extensions/job-ids.js +6 -0
- package/dist/extensions/lifecycle-topics.d.ts +18 -0
- package/dist/extensions/lifecycle-topics.js +18 -0
- package/dist/extensions/lifecycle.d.ts +35 -47
- package/dist/extensions/lifecycle.js +103 -39
- package/dist/extensions/locks.d.ts +45 -0
- package/dist/extensions/locks.js +112 -0
- package/dist/extensions/migrate-lock.d.ts +3 -4
- package/dist/extensions/org-config.d.ts +141 -49
- package/dist/extensions/org-config.js +471 -243
- 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 +14 -1
- package/dist/extensions/package.js +51 -2
- package/dist/extensions/permission-view.d.ts +59 -6
- package/dist/extensions/permission-view.js +7 -5
- package/dist/extensions/plugin-guides.d.ts +129 -0
- package/dist/extensions/plugin-guides.js +283 -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 +50 -2
- package/dist/extensions/registry.js +91 -4
- 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 +19 -10
- package/dist/extensions/sources.js +34 -13
- package/dist/extensions/state.module.d.ts +9 -0
- package/dist/extensions/state.module.js +38 -0
- package/dist/extensions/unavailable.d.ts +50 -0
- package/dist/extensions/unavailable.js +115 -0
- package/dist/files/files.module.d.ts +3 -0
- package/dist/files/files.module.js +22 -0
- package/dist/files/previewers.controller.d.ts +7 -2
- package/dist/files/previewers.controller.js +19 -12
- package/dist/files/previewers.d.ts +21 -19
- package/dist/files/previewers.js +114 -38
- package/dist/files/previewers.schemas.d.ts +10 -0
- package/dist/files/previewers.schemas.js +9 -0
- package/dist/http/adapter.d.ts +3 -0
- package/dist/http/adapter.js +25 -0
- package/dist/http/api.module.d.ts +3 -110
- package/dist/http/api.module.js +93 -358
- package/dist/http/app.d.ts +22 -17
- package/dist/http/app.js +46 -65
- package/dist/http/error-filter.module.d.ts +5 -0
- package/dist/http/error-filter.module.js +18 -0
- package/dist/http/error.filter.js +2 -2
- package/dist/http/{gateway.module.d.ts → gateway-routes.d.ts} +7 -3
- package/dist/http/gateway-routes.js +16 -0
- 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 +137 -38
- package/dist/identity/accounts.js +386 -186
- package/dist/identity/api-tokens.d.ts +11 -7
- package/dist/identity/api-tokens.js +71 -44
- package/dist/identity/audit.d.ts +9 -5
- package/dist/identity/audit.js +5 -1
- package/dist/identity/auth.controller.d.ts +11 -10
- package/dist/identity/auth.controller.js +40 -30
- package/dist/identity/auth.guard.d.ts +16 -8
- package/dist/identity/auth.guard.js +41 -13
- package/dist/identity/binding.d.ts +9 -11
- package/dist/identity/binding.js +41 -13
- package/dist/identity/cookies.d.ts +26 -5
- package/dist/identity/cookies.js +58 -6
- package/dist/identity/external-identity-lock.d.ts +17 -0
- package/dist/identity/external-identity-lock.js +39 -0
- package/dist/identity/external.d.ts +19 -15
- package/dist/identity/external.js +163 -125
- package/dist/identity/identity.module.d.ts +6 -0
- package/dist/identity/identity.module.js +59 -0
- 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 +32 -15
- package/dist/identity/me.controller.js +80 -33
- 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 +24 -10
- package/dist/identity/sessions.js +119 -42
- package/dist/identity/settings.d.ts +69 -23
- package/dist/identity/settings.js +201 -72
- package/dist/identity/sso.controller.d.ts +7 -7
- package/dist/identity/sso.controller.js +13 -9
- package/dist/identity/sso.d.ts +9 -12
- package/dist/identity/sso.js +54 -24
- package/dist/identity/super-admin.d.ts +20 -0
- package/dist/identity/super-admin.js +81 -0
- package/dist/inbox/inbox.module.d.ts +6 -0
- package/dist/inbox/inbox.module.js +26 -0
- package/dist/inbox/inbox.schemas.d.ts +8 -0
- package/dist/inbox/inbox.schemas.js +11 -0
- package/dist/inbox/inbox.service.d.ts +68 -11
- package/dist/inbox/inbox.service.js +104 -13
- 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 +151 -0
- package/dist/inbox/platform-inbox.service.js +263 -0
- package/dist/inbox/platform-notices.d.ts +19 -0
- package/dist/inbox/platform-notices.js +9 -0
- package/dist/index.d.ts +22 -13
- package/dist/index.js +16 -7
- package/dist/infra/cache/cache.module.d.ts +3 -0
- package/dist/infra/cache/cache.module.js +16 -0
- package/dist/infra/cache/cache.service.d.ts +21 -0
- package/dist/infra/cache/cache.service.js +80 -0
- package/dist/infra/cache/cacheable.decorator.d.ts +32 -0
- package/dist/infra/cache/cacheable.decorator.js +83 -0
- package/dist/infra/cli/kernel-cli.module.d.ts +66 -0
- package/dist/infra/cli/kernel-cli.module.js +173 -0
- package/dist/infra/close-within.d.ts +15 -0
- package/dist/infra/close-within.js +36 -0
- package/dist/infra/config/config.module.d.ts +13 -0
- package/dist/infra/config/config.module.js +39 -0
- package/dist/infra/config/kernel-config.service.d.ts +25 -0
- package/dist/infra/config/kernel-config.service.js +157 -0
- package/dist/infra/database/after-commit.d.ts +6 -0
- package/dist/infra/database/after-commit.js +9 -0
- package/dist/infra/database/database.module.d.ts +25 -0
- package/dist/infra/database/database.module.js +91 -0
- package/dist/infra/database/kernel-db.d.ts +22 -0
- package/dist/infra/database/kernel-db.js +65 -0
- package/dist/infra/database/transaction-host.d.ts +50 -0
- package/dist/infra/database/transaction-host.js +125 -0
- package/dist/infra/database/transactional.decorator.d.ts +15 -0
- package/dist/infra/database/transactional.decorator.js +27 -0
- package/dist/infra/database/xact-lock.d.ts +17 -0
- package/dist/infra/database/xact-lock.js +43 -0
- package/dist/infra/events/kernel-events.d.ts +121 -0
- package/dist/infra/events/kernel-events.js +65 -0
- package/dist/infra/health/health.controller.d.ts +26 -0
- package/dist/infra/health/health.controller.js +104 -0
- package/dist/infra/health/health.module.d.ts +9 -0
- package/dist/infra/health/health.module.js +24 -0
- package/dist/infra/health/health.options.d.ts +10 -0
- package/dist/infra/health/health.options.js +15 -0
- package/dist/infra/health/shutdown-state.d.ts +6 -0
- package/dist/infra/health/shutdown-state.js +2 -0
- package/dist/infra/lifecycle/graceful-shutdown.module.d.ts +6 -0
- package/dist/infra/lifecycle/graceful-shutdown.module.js +23 -0
- package/dist/infra/lifecycle/graceful-shutdown.service.d.ts +70 -0
- package/dist/infra/lifecycle/graceful-shutdown.service.js +135 -0
- package/dist/infra/lifecycle/process-guards.d.ts +52 -0
- package/dist/infra/lifecycle/process-guards.js +90 -0
- package/dist/infra/lifecycle/shutdown-signals.d.ts +30 -0
- package/dist/infra/lifecycle/shutdown-signals.js +48 -0
- package/dist/infra/lock/key-template.d.ts +13 -0
- package/dist/infra/lock/key-template.js +46 -0
- package/dist/infra/lock/lock.module.d.ts +3 -0
- package/dist/infra/lock/lock.module.js +16 -0
- package/dist/infra/lock/lock.service.d.ts +120 -0
- package/dist/infra/lock/lock.service.js +343 -0
- package/dist/infra/lock/shared-lease.d.ts +44 -0
- package/dist/infra/lock/shared-lease.js +121 -0
- package/dist/infra/lock/with-lock.decorator.d.ts +28 -0
- package/dist/infra/lock/with-lock.decorator.js +49 -0
- package/dist/infra/logging/logging.module.d.ts +18 -0
- package/dist/infra/logging/logging.module.js +52 -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/configured-processor.d.ts +18 -0
- package/dist/infra/queue/configured-processor.js +23 -0
- package/dist/infra/queue/job-failure.d.ts +18 -0
- package/dist/infra/queue/job-failure.js +26 -0
- package/dist/infra/queue/queue-shutdown.d.ts +27 -0
- package/dist/infra/queue/queue-shutdown.js +81 -0
- package/dist/infra/queue/queue.module.d.ts +16 -0
- package/dist/infra/queue/queue.module.js +61 -0
- package/dist/infra/queue/redis-connection.d.ts +13 -0
- package/dist/infra/queue/redis-connection.js +25 -0
- package/dist/infra/queue/retired-schedulers.d.ts +7 -0
- package/dist/infra/queue/retired-schedulers.js +9 -0
- package/dist/infra/queue/run-job.d.ts +16 -0
- package/dist/infra/queue/run-job.js +19 -0
- package/dist/infra/redis/redis.module.d.ts +24 -0
- package/dist/infra/redis/redis.module.js +91 -0
- package/dist/infra/schedule/cron-tick.d.ts +12 -0
- package/dist/infra/schedule/cron-tick.js +25 -0
- package/dist/infra/schedule/locked-cron.decorator.d.ts +27 -0
- package/dist/infra/schedule/locked-cron.decorator.js +53 -0
- package/dist/infra/schedule/locked-interval.d.ts +69 -0
- package/dist/infra/schedule/locked-interval.js +190 -0
- package/dist/infra/schedule/locked-tick.d.ts +90 -0
- package/dist/infra/schedule/locked-tick.js +137 -0
- package/dist/infra/schedule/schedule.module.d.ts +8 -0
- package/dist/infra/schedule/schedule.module.js +27 -0
- package/dist/infra/schedule/scheduled-runs.d.ts +69 -0
- package/dist/infra/schedule/scheduled-runs.js +163 -0
- package/dist/infra/swagger/swagger.d.ts +16 -0
- package/dist/infra/swagger/swagger.js +31 -0
- package/dist/infra/throttler/credential-throttler.d.ts +35 -0
- package/dist/infra/throttler/credential-throttler.js +77 -0
- package/dist/infra/throttler/named-throttlers.d.ts +36 -0
- package/dist/infra/throttler/named-throttlers.js +157 -0
- package/dist/infra/throttler/redis-throttler-storage.d.ts +38 -0
- package/dist/infra/throttler/redis-throttler-storage.js +130 -0
- package/dist/infra/throttler/throttler.guard.d.ts +23 -0
- package/dist/infra/throttler/throttler.guard.js +68 -0
- package/dist/infra/throttler/throttler.module.d.ts +15 -0
- package/dist/infra/throttler/throttler.module.js +53 -0
- package/dist/infra/tokens.d.ts +20 -0
- package/dist/infra/tokens.js +20 -0
- package/dist/infra/validation/create-zod-dto.d.ts +23 -0
- package/dist/infra/validation/create-zod-dto.js +35 -0
- package/dist/infra/validation/parse-with-zod.d.ts +7 -0
- package/dist/infra/validation/parse-with-zod.js +12 -0
- package/dist/infra/validation/validation.module.d.ts +3 -0
- package/dist/infra/validation/validation.module.js +16 -0
- package/dist/infra/validation/zod-params.d.ts +7 -0
- package/dist/infra/validation/zod-params.js +42 -0
- package/dist/infra/validation/zod-validation.pipe.d.ts +11 -0
- package/dist/infra/validation/zod-validation.pipe.js +31 -0
- package/dist/kernel.d.ts +9 -244
- package/dist/kernel.js +8 -1305
- package/dist/kernel.module.d.ts +17 -0
- package/dist/kernel.module.js +145 -0
- package/dist/lifecycle/kernel-lifecycle.d.ts +140 -0
- package/dist/lifecycle/kernel-lifecycle.js +465 -0
- package/dist/lifecycle/tokens.d.ts +3 -0
- package/dist/lifecycle/tokens.js +3 -0
- package/dist/log-context.d.ts +2 -0
- package/dist/log-context.js +4 -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 +7 -0
- package/dist/models/models.module.js +36 -0
- 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 +13 -5
- package/dist/models/prices.js +69 -39
- package/dist/models/purposes.controller.d.ts +6 -4
- package/dist/models/purposes.controller.js +16 -11
- package/dist/models/purposes.d.ts +103 -23
- package/dist/models/purposes.js +208 -77
- package/dist/orgs/directory-sync.controller.d.ts +1 -1
- package/dist/orgs/directory-sync.controller.js +2 -2
- package/dist/orgs/directory-sync.d.ts +74 -35
- package/dist/orgs/directory-sync.js +243 -132
- package/dist/orgs/invitations.controller.d.ts +8 -8
- package/dist/orgs/invitations.controller.js +27 -26
- package/dist/orgs/invitations.service.d.ts +12 -9
- package/dist/orgs/invitations.service.js +130 -92
- package/dist/orgs/job-ids.d.ts +8 -0
- package/dist/orgs/job-ids.js +8 -0
- package/dist/orgs/members.service.d.ts +19 -12
- package/dist/orgs/members.service.js +161 -117
- package/dist/orgs/offboarding.d.ts +61 -60
- package/dist/orgs/offboarding.js +206 -95
- package/dist/orgs/org-lock.d.ts +33 -19
- package/dist/orgs/org-lock.js +94 -35
- package/dist/orgs/org.guard.d.ts +11 -1
- package/dist/orgs/org.guard.js +45 -34
- package/dist/orgs/orgs.controller.d.ts +13 -16
- package/dist/orgs/orgs.controller.js +29 -20
- package/dist/orgs/orgs.module.d.ts +6 -0
- package/dist/orgs/orgs.module.js +71 -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 +47 -21
- package/dist/orgs/orgs.service.js +166 -91
- package/dist/orgs/roles.d.ts +1 -1
- package/dist/orgs/roles.js +5 -1
- package/dist/orgs/settings.controller.d.ts +2 -2
- package/dist/orgs/settings.controller.js +8 -6
- package/dist/orgs/settings.service.d.ts +76 -14
- package/dist/orgs/settings.service.js +140 -51
- package/dist/overrides.d.ts +63 -0
- package/dist/overrides.js +34 -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 +683 -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 +94 -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.ops.d.ts +38 -0
- package/dist/platform/ops/admin.ops.js +407 -0
- package/dist/platform/ops/agent-skills.ops.d.ts +24 -0
- package/dist/platform/ops/agent-skills.ops.js +226 -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 +717 -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 +74 -0
- package/dist/platform/ops/catalog-admin.ops.js +599 -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 +188 -0
- package/dist/platform/ops/conversations.ops.d.ts +30 -0
- package/dist/platform/ops/conversations.ops.js +470 -0
- package/dist/platform/ops/environments.ops.d.ts +26 -0
- package/dist/platform/ops/environments.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 +378 -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 +29 -0
- package/dist/platform/ops/org-plugins.ops.js +329 -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 +296 -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/skills.ops.d.ts +17 -0
- package/dist/platform/ops/skills.ops.js +216 -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/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 +40 -0
- package/dist/platform/platform-ops.module.js +127 -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 +66 -0
- package/dist/roles/gateway-role.d.ts +54 -0
- package/dist/roles/gateway-role.js +118 -0
- package/dist/roles/gateway.module.d.ts +9 -0
- package/dist/roles/gateway.module.js +31 -0
- package/dist/roles/worker-role.d.ts +65 -0
- package/dist/roles/worker-role.js +151 -0
- package/dist/roles/worker.module.d.ts +14 -0
- package/dist/roles/worker.module.js +106 -0
- package/dist/runtime/abort.js +19 -2
- package/dist/runtime/checkpointer.d.ts +8 -3
- package/dist/runtime/checkpointer.js +87 -55
- 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/environment-paths.d.ts +40 -0
- package/dist/runtime/context/environment-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/conversation-lock.d.ts +20 -11
- package/dist/runtime/conversation-lock.js +62 -72
- package/dist/runtime/hook-calls.d.ts +11 -4
- package/dist/runtime/hook-calls.js +41 -13
- package/dist/runtime/job-ids.d.ts +10 -0
- package/dist/runtime/job-ids.js +10 -0
- package/dist/runtime/langgraph-loop.d.ts +3 -1
- package/dist/runtime/langgraph-loop.js +37 -18
- package/dist/runtime/loop.d.ts +42 -6
- package/dist/runtime/loop.js +14 -0
- package/dist/runtime/maintenance-queue.d.ts +10 -0
- package/dist/runtime/maintenance-queue.js +10 -0
- package/dist/runtime/maintenance.d.ts +50 -74
- package/dist/runtime/maintenance.js +166 -137
- package/dist/runtime/model-call.d.ts +61 -15
- package/dist/runtime/model-call.js +128 -84
- package/dist/runtime/providers.d.ts +158 -27
- package/dist/runtime/providers.js +373 -63
- package/dist/runtime/quota.d.ts +17 -3
- package/dist/runtime/quota.js +27 -2
- package/dist/runtime/retired-schedulers.d.ts +7 -0
- package/dist/runtime/retired-schedulers.js +31 -0
- 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 +43 -0
- package/dist/runtime/run-control.js +89 -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 +27 -18
- package/dist/runtime/run-finish.js +98 -51
- package/dist/runtime/run-jobs.d.ts +46 -0
- package/dist/runtime/run-jobs.js +91 -0
- package/dist/runtime/run-processors.d.ts +60 -0
- package/dist/runtime/run-processors.js +185 -0
- package/dist/runtime/run-queue.d.ts +90 -58
- package/dist/runtime/run-queue.js +566 -297
- package/dist/runtime/run-steps.d.ts +39 -0
- package/dist/runtime/run-steps.js +96 -0
- package/dist/runtime/run-worker.d.ts +134 -77
- package/dist/runtime/run-worker.js +412 -237
- package/dist/runtime/runtime.module.d.ts +10 -0
- package/dist/runtime/runtime.module.js +122 -0
- package/dist/runtime/step-log.d.ts +51 -0
- package/dist/runtime/step-log.js +111 -0
- package/dist/runtime/stream.controller.d.ts +28 -9
- package/dist/runtime/stream.controller.js +72 -13
- package/dist/runtime/stream.d.ts +27 -6
- package/dist/runtime/stream.js +102 -7
- package/dist/runtime/subagents/child.d.ts +58 -51
- package/dist/runtime/subagents/child.js +105 -86
- package/dist/runtime/subagents/definition.d.ts +32 -28
- package/dist/runtime/subagents/definition.js +89 -143
- package/dist/runtime/subagents/deliveries.d.ts +71 -0
- package/dist/runtime/subagents/deliveries.js +228 -0
- package/dist/runtime/subagents/dispatch.d.ts +197 -27
- package/dist/runtime/subagents/dispatch.js +336 -270
- package/dist/runtime/subagents/limits.d.ts +32 -8
- package/dist/runtime/subagents/limits.js +44 -8
- package/dist/runtime/subagents/messages.d.ts +95 -0
- package/dist/runtime/subagents/messages.js +328 -0
- package/dist/runtime/subagents/org-agents.d.ts +4 -4
- package/dist/runtime/subagents/org-agents.js +3 -2
- package/dist/runtime/subagents/preamble.d.ts +4 -4
- package/dist/runtime/subagents/preamble.js +9 -7
- package/dist/runtime/subagents/progress.d.ts +10 -8
- 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 +27 -10
- package/dist/runtime/subagents/roster.js +49 -13
- package/dist/runtime/subagents/skill-fork.d.ts +10 -10
- package/dist/runtime/subagents/skill-fork.js +23 -8
- 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 +43 -0
- package/dist/runtime/subagents/subagents.service.js +106 -0
- 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 +121 -83
- package/dist/runtime/usage-report.js +355 -181
- package/dist/runtime/waits.d.ts +258 -81
- package/dist/runtime/waits.js +800 -263
- package/dist/sandbox/job-ids.d.ts +10 -0
- package/dist/sandbox/job-ids.js +10 -0
- package/dist/sandbox/jobs.d.ts +68 -0
- package/dist/sandbox/jobs.js +150 -0
- package/dist/sandbox/leases.d.ts +73 -82
- package/dist/sandbox/leases.js +162 -346
- package/dist/sandbox/providers.d.ts +46 -0
- package/dist/sandbox/providers.js +83 -0
- package/dist/sandbox/sandbox.module.d.ts +9 -0
- package/dist/sandbox/sandbox.module.js +36 -0
- package/dist/sandbox/sandbox.service.d.ts +359 -151
- package/dist/sandbox/sandbox.service.js +950 -435
- package/dist/sandbox/unreachable.d.ts +30 -0
- package/dist/sandbox/unreachable.js +108 -0
- package/dist/skills/catalog.d.ts +40 -26
- package/dist/skills/catalog.js +120 -99
- package/dist/skills/changes.controller.d.ts +11 -4
- package/dist/skills/changes.controller.js +34 -9
- package/dist/skills/changes.service.d.ts +31 -21
- package/dist/skills/changes.service.js +426 -368
- package/dist/skills/invocable.controller.d.ts +2 -2
- package/dist/skills/invocable.controller.js +10 -7
- package/dist/skills/invocation-keys.d.ts +1 -1
- package/dist/skills/invocation-keys.js +1 -1
- package/dist/skills/invoke.d.ts +19 -18
- package/dist/skills/invoke.js +68 -24
- package/dist/skills/package.d.ts +20 -1
- package/dist/skills/package.js +28 -1
- package/dist/skills/skills.controller.d.ts +33 -7
- package/dist/skills/skills.controller.js +79 -12
- package/dist/skills/skills.module.d.ts +6 -0
- package/dist/skills/skills.module.js +39 -0
- package/dist/skills/skills.schemas.d.ts +48 -0
- package/dist/skills/skills.schemas.js +61 -0
- package/dist/skills/skills.service.d.ts +151 -44
- package/dist/skills/skills.service.js +636 -204
- package/dist/skills/usable.d.ts +81 -0
- package/dist/skills/usable.js +379 -0
- package/dist/storage/job-ids.d.ts +6 -0
- package/dist/storage/job-ids.js +6 -0
- package/dist/storage/purge.d.ts +22 -7
- package/dist/storage/purge.js +55 -3
- package/dist/storage/storage.module.d.ts +6 -0
- package/dist/storage/storage.module.js +23 -0
- package/dist/storage/storage.service.d.ts +18 -4
- package/dist/storage/storage.service.js +44 -3
- package/dist/themes/render-css.d.ts +12 -0
- package/dist/themes/render-css.js +132 -0
- package/dist/themes/theme-delivery.service.d.ts +34 -0
- package/dist/themes/theme-delivery.service.js +111 -0
- package/dist/themes/theme-state.d.ts +95 -0
- package/dist/themes/theme-state.js +203 -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 +28 -0
- package/dist/themes/themes-public.controller.js +92 -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/approvals.controller.d.ts +1 -1
- package/dist/tools/approvals.controller.js +14 -11
- package/dist/tools/approvals.schemas.d.ts +21 -0
- package/dist/tools/approvals.schemas.js +15 -0
- package/dist/tools/approvals.service.d.ts +53 -27
- package/dist/tools/approvals.service.js +365 -260
- package/dist/tools/breaker.d.ts +2 -2
- package/dist/tools/breaker.js +21 -3
- package/dist/tools/builtin-names.d.ts +109 -0
- package/dist/tools/builtin-names.js +173 -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 +3 -3
- package/dist/tools/builtins/ask-user.js +3 -3
- package/dist/tools/builtins/builtin-tools.d.ts +41 -0
- package/dist/tools/builtins/builtin-tools.js +151 -0
- 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 +3 -3
- package/dist/tools/builtins/read-tool-output.js +3 -3
- package/dist/tools/builtins/sandbox/bash.d.ts +5 -5
- package/dist/tools/builtins/sandbox/bash.js +293 -41
- package/dist/tools/builtins/sandbox/common.d.ts +137 -37
- 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 +21 -18
- package/dist/tools/builtins/sandbox/edit.d.ts +1 -1
- package/dist/tools/builtins/sandbox/edit.js +65 -51
- 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 +19 -14
- package/dist/tools/builtins/sandbox/grep.d.ts +7 -4
- package/dist/tools/builtins/sandbox/grep.js +155 -36
- 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 +30 -20
- 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 +52 -45
- 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 +32 -21
- package/dist/tools/builtins/skill-load.js +125 -74
- package/dist/tools/builtins/skill-write.d.ts +4 -4
- package/dist/tools/builtins/skill-write.js +12 -12
- 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/canonical-json.d.ts +6 -0
- package/dist/tools/canonical-json.js +16 -0
- package/dist/tools/connector-content.controller.d.ts +1 -1
- package/dist/tools/connector-content.controller.js +11 -6
- package/dist/tools/connector-content.d.ts +12 -15
- package/dist/tools/connector-content.js +53 -18
- package/dist/tools/connectors.controller.d.ts +16 -3
- package/dist/tools/connectors.controller.js +34 -14
- package/dist/tools/connectors.schemas.d.ts +12 -0
- package/dist/tools/connectors.schemas.js +19 -0
- package/dist/tools/connectors.service.d.ts +80 -18
- package/dist/tools/connectors.service.js +529 -358
- package/dist/tools/credentials.d.ts +20 -20
- package/dist/tools/credentials.js +55 -34
- package/dist/tools/display-names.d.ts +9 -0
- package/dist/tools/display-names.js +24 -0
- package/dist/tools/drift.d.ts +29 -41
- package/dist/tools/drift.js +116 -84
- 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 +73 -13
- package/dist/tools/info.js +151 -39
- package/dist/tools/job-ids.d.ts +13 -0
- package/dist/tools/job-ids.js +15 -0
- package/dist/tools/jobs.d.ts +24 -0
- package/dist/tools/jobs.js +69 -0
- 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 +115 -0
- package/dist/tools/naming.d.ts +1 -5
- package/dist/tools/naming.js +1 -7
- package/dist/tools/oauth/flow-paths.d.ts +16 -0
- package/dist/tools/oauth/flow-paths.js +38 -0
- package/dist/tools/oauth/flow.d.ts +30 -30
- package/dist/tools/oauth/flow.js +109 -81
- package/dist/tools/oauth/oauth.controller.d.ts +3 -3
- package/dist/tools/oauth/oauth.controller.js +12 -9
- package/dist/tools/oauth/tokens.d.ts +45 -10
- package/dist/tools/oauth/tokens.js +70 -24
- package/dist/tools/org-tool-switches.d.ts +88 -0
- package/dist/tools/org-tool-switches.js +201 -0
- package/dist/tools/outputs.d.ts +13 -4
- package/dist/tools/outputs.js +48 -4
- package/dist/tools/pipeline.d.ts +108 -80
- package/dist/tools/pipeline.js +396 -409
- package/dist/tools/policy.d.ts +4 -17
- package/dist/tools/policy.js +49 -35
- package/dist/tools/questions.controller.d.ts +2 -2
- package/dist/tools/questions.controller.js +9 -6
- package/dist/tools/questions.service.d.ts +26 -25
- package/dist/tools/questions.service.js +201 -142
- package/dist/tools/registry.d.ts +215 -84
- package/dist/tools/registry.js +382 -264
- package/dist/tools/resources.d.ts +1 -1
- package/dist/tools/resources.js +1 -1
- package/dist/tools/specs.d.ts +5 -4
- package/dist/tools/specs.js +3 -1
- package/dist/tools/tools.module.d.ts +10 -0
- package/dist/tools/tools.module.js +113 -0
- package/dist/tools/validate.js +1 -1
- package/dist/ui/call-extension.d.ts +16 -0
- package/dist/ui/call-extension.js +38 -0
- package/dist/ui/embed-token.d.ts +9 -5
- package/dist/ui/embed-token.js +34 -6
- package/dist/ui/ui-stream.d.ts +22 -17
- package/dist/ui/ui-stream.js +72 -12
- package/dist/ui/ui.module.d.ts +7 -0
- package/dist/ui/ui.module.js +28 -0
- package/dist/ui/views.controller.d.ts +14 -12
- package/dist/ui/views.controller.js +32 -25
- package/dist/ui/views.d.ts +10 -57
- package/dist/ui/views.js +58 -46
- package/package.json +13 -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/dist/catalog/upgrade-targets.d.ts +0 -59
- package/dist/catalog/upgrade-targets.js +0 -90
- package/dist/conversations/sandbox-status.d.ts +0 -21
- package/dist/conversations/sandbox-status.js +0 -24
- package/dist/extensions/org-config.controller.d.ts +0 -24
- package/dist/extensions/org-config.controller.js +0 -59
- package/dist/http/gateway.module.js +0 -13
- package/dist/http/health.controller.d.ts +0 -26
- package/dist/http/health.controller.js +0 -79
- package/dist/http/tokens.d.ts +0 -131
- package/dist/http/tokens.js +0 -131
- package/dist/http/zod.pipe.d.ts +0 -8
- package/dist/http/zod.pipe.js +0 -14
- package/dist/identity/enterprise-admin.d.ts +0 -14
- package/dist/identity/enterprise-admin.js +0 -27
- package/dist/identity/rate-limit.d.ts +0 -55
- package/dist/identity/rate-limit.js +0 -121
- package/dist/sandbox/lifecycle.d.ts +0 -21
- package/dist/sandbox/lifecycle.js +0 -68
- package/dist/tools/builtins/sandbox/names.d.ts +0 -7
- package/dist/tools/builtins/sandbox/names.js +0 -20
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { randomUUID } from "node:crypto";
|
|
2
2
|
import { sql } from "kysely";
|
|
3
|
-
import { normalizeStoredDefinition } from "../../agents/definition.js";
|
|
4
3
|
import { audit } from "../../identity/audit.js";
|
|
5
4
|
import { forkAgentUnknownText } from "../../skills/invoke.js";
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
5
|
+
import { SEND_MESSAGE } from "../../tools/builtin-names.js";
|
|
6
|
+
import { AGENT_REFUSALS, AGENT_TOOL, agentStartedText, } from "../../tools/builtins/agent.js";
|
|
7
|
+
import { ACTIVE_RUN_STATUSES, runJobId } from "../run-jobs.js";
|
|
8
|
+
import { childResult, finishedEvent } from "./child.js";
|
|
9
|
+
import { effectiveDefinition, SubagentTypeGoneError, } from "./definition.js";
|
|
9
10
|
import { subagentLimits } from "./limits.js";
|
|
10
11
|
import { auditRefusal, checkOrgAgent, currentAgentDefinition } from "./org-agents.js";
|
|
11
12
|
import { SUBAGENT_PREAMBLE } from "./preamble.js";
|
|
@@ -17,38 +18,40 @@ const GENERAL_ENTRY = {
|
|
|
17
18
|
source: "general",
|
|
18
19
|
description: GENERAL_PURPOSE_DESCRIPTION,
|
|
19
20
|
};
|
|
21
|
+
/**
|
|
22
|
+
* The depth of the run behind `ctx` below the root (agent map spec §6): 0 for a root
|
|
23
|
+
* conversation's run, its parent's depth plus one for a sub-agent's.
|
|
24
|
+
*/
|
|
25
|
+
export const runDepth = (ctx) => ctx.parent === undefined ? 0 : ctx.parent.depth + 1;
|
|
20
26
|
/** Idempotency key of the parent's `subagent_dispatched` event. */
|
|
21
27
|
export const dispatchedIdemKey = (runId, callId) => `subagent_dispatched:${runId}:${callId}`;
|
|
22
28
|
/**
|
|
23
|
-
* Dispatches the sub-agent of one `
|
|
24
|
-
* policy, approval and `tool.preExecute` stages
|
|
25
|
-
* definition, then in one transaction (holding the parent run's row lock, so the
|
|
26
|
-
* run serialize) inserts the child conversation, appends `subagent_started` and
|
|
27
|
-
* inserts the child run (`queued`) and the `subagent_dispatches` row, appends
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
* enqueue only logs (the dispatch is durable, the wait
|
|
29
|
+
* Dispatches the sub-agent of one `Agent` call (spec §7.1, agent map spec §4.1), after the
|
|
30
|
+
* pipeline's validation, policy, approval and `tool.preExecute` stages: resolves its type and
|
|
31
|
+
* effective definition, then in one transaction (holding the parent run's row lock, so the
|
|
32
|
+
* dispatches of one run serialize) inserts the child conversation, appends `subagent_started` and
|
|
33
|
+
* the task message, inserts the child run (`queued`) and the `subagent_dispatches` row, appends
|
|
34
|
+
* `subagent_dispatched` and the call's `tool_result` ({@link agentStartedText}: the sub-agent runs
|
|
35
|
+
* in the background) to the parent and audits `subagent.dispatched` and `tool.called`. After
|
|
36
|
+
* commit the child run is enqueued; a failed enqueue only logs (the dispatch is durable, the wait
|
|
37
|
+
* sweep re-enqueues it). A fork invocation (`forSkill`) writes no `tool_result`: its run waits on
|
|
38
|
+
* the child (`advanceSkillForks`).
|
|
31
39
|
*
|
|
32
|
-
* Refusals (§4.5) start nothing: a call from a
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
* or one whose run is still active.
|
|
40
|
+
* Refusals (§4.5) start nothing: a call from a run at `subagents.maxDepth` (agent map spec §4.1:
|
|
41
|
+
* its definition has no `Agent`, so only a forged call or a lowered limit gets here), an unknown
|
|
42
|
+
* type, or an org agent that fails one of its gates ({@link orgAgentGates}, checked at every
|
|
43
|
+
* level; audited `subagent.refused`).
|
|
37
44
|
*/
|
|
38
45
|
export async function dispatchSubagent(d, a) {
|
|
39
46
|
const { ctx, input } = a;
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
if (
|
|
43
|
-
|
|
44
|
-
return refused(AGENT_REFUSALS.resumeWithType);
|
|
45
|
-
}
|
|
46
|
-
return resume(d, { ...a, id: input.resume });
|
|
47
|
-
}
|
|
47
|
+
const { maxDepth } = await subagentLimits(d.db, d.config, ctx.orgId);
|
|
48
|
+
const childDepth = runDepth(ctx) + 1;
|
|
49
|
+
if (childDepth > maxDepth)
|
|
50
|
+
return refused(AGENT_REFUSALS.depthLimit(maxDepth));
|
|
48
51
|
const requested = input.subagent_type ?? "general-purpose";
|
|
49
52
|
const unknown = (types) => refused(AGENT_REFUSALS.unknownType(requested, types.map((e) => e.type)));
|
|
50
53
|
const fork = a.forSkill;
|
|
51
|
-
const listed = await resolveRoster(d.db, ctx.orgId, ctx.agent);
|
|
54
|
+
const listed = await resolveRoster(d.db, ctx.orgId, ctx.agent, d.log);
|
|
52
55
|
const roster = fork !== undefined && !listed.some((e) => e.type === GENERAL_ENTRY.type)
|
|
53
56
|
? [GENERAL_ENTRY, ...listed]
|
|
54
57
|
: listed;
|
|
@@ -75,6 +78,8 @@ export async function dispatchSubagent(d, a) {
|
|
|
75
78
|
parent: ctx.agent,
|
|
76
79
|
parentAgentId: ctx.agentId,
|
|
77
80
|
entry,
|
|
81
|
+
childDepth,
|
|
82
|
+
maxDepth,
|
|
78
83
|
...(input.model !== undefined && { tier: input.model }),
|
|
79
84
|
...(orgAgent !== undefined && { orgAgent }),
|
|
80
85
|
});
|
|
@@ -84,7 +89,7 @@ export async function dispatchSubagent(d, a) {
|
|
|
84
89
|
// the template went away since the roster was read (spec §13: refuse, never fail the run);
|
|
85
90
|
// the list offered instead is read again, without it
|
|
86
91
|
if (e instanceof SubagentTypeGoneError) {
|
|
87
|
-
return unknown(await resolveRoster(d.db, ctx.orgId, ctx.agent));
|
|
92
|
+
return unknown(await resolveRoster(d.db, ctx.orgId, ctx.agent, d.log));
|
|
88
93
|
}
|
|
89
94
|
throw e;
|
|
90
95
|
}
|
|
@@ -116,9 +121,10 @@ export async function dispatchSubagent(d, a) {
|
|
|
116
121
|
kind: "subagent",
|
|
117
122
|
parent_conversation_id: ctx.conversationId,
|
|
118
123
|
subagent_type: entry.type,
|
|
124
|
+
subagent_depth: childDepth,
|
|
119
125
|
})
|
|
120
126
|
.execute();
|
|
121
|
-
const [, task] = await d.eventLog.
|
|
127
|
+
const [, task] = await d.eventLog.appendIn(childId, [
|
|
122
128
|
{
|
|
123
129
|
type: "subagent_started",
|
|
124
130
|
idemKey: "subagent_started",
|
|
@@ -149,95 +155,12 @@ export async function dispatchSubagent(d, a) {
|
|
|
149
155
|
},
|
|
150
156
|
},
|
|
151
157
|
taskMessage(ctx, a.callId, fork === undefined ? input.prompt : fork.task(eff.definition), undefined, fork?.skill),
|
|
152
|
-
]
|
|
158
|
+
]);
|
|
153
159
|
return task;
|
|
154
160
|
});
|
|
155
161
|
// a new sub-agent's writer never refuses
|
|
156
162
|
return out ?? refused(AGENT_REFUSALS.notAvailableHere);
|
|
157
163
|
}
|
|
158
|
-
/**
|
|
159
|
-
* A follow-up to an existing sub-agent of this conversation (§4.2 `resume`). It keeps the frozen
|
|
160
|
-
* definition's instructions and model (replay), but is checked against what the parent may use
|
|
161
|
-
* now (final review I1): a `general` / inline / plugin child's type must still be in the roster
|
|
162
|
-
* of the dispatching run's version (a plugin template by its template id), else the call is
|
|
163
|
-
* refused as an unknown type; an org agent child passes its gates. Its tools and org skills are
|
|
164
|
-
* intersected with the current version ({@link narrowFollowUp}: the dispatching run's version,
|
|
165
|
-
* or the org agent's current version as the gates read it under the lock), and the result is
|
|
166
|
-
* recorded on the follow-up's task message for the run and for replay.
|
|
167
|
-
*/
|
|
168
|
-
async function resume(d, a) {
|
|
169
|
-
const { ctx } = a;
|
|
170
|
-
const child = await d.db
|
|
171
|
-
.selectFrom("conversations")
|
|
172
|
-
.select(["id", "subagent_type"])
|
|
173
|
-
.where("id", "=", a.id)
|
|
174
|
-
.where("org_id", "=", ctx.orgId)
|
|
175
|
-
.where("kind", "=", "subagent")
|
|
176
|
-
.where("parent_conversation_id", "=", ctx.conversationId)
|
|
177
|
-
.executeTakeFirst();
|
|
178
|
-
if (!child)
|
|
179
|
-
return refused(AGENT_REFUSALS.noSuchAgent(a.id));
|
|
180
|
-
const started = await d.eventLog.findByIdem(child.id, "subagent_started");
|
|
181
|
-
if (started?.type !== "subagent_started")
|
|
182
|
-
return refused(AGENT_REFUSALS.noSuchAgent(a.id));
|
|
183
|
-
const { template } = started.payload;
|
|
184
|
-
const agentType = child.subagent_type ?? started.payload.agentType;
|
|
185
|
-
// an org agent's gates hold for every follow-up too (§5.5); it keeps its frozen version
|
|
186
|
-
if (template.source === "agent") {
|
|
187
|
-
const gates = await orgAgentGates(d.db, a, template.id ?? "", agentType, true);
|
|
188
|
-
if ("refused" in gates)
|
|
189
|
-
return gates.refused;
|
|
190
|
-
}
|
|
191
|
-
else {
|
|
192
|
-
const roster = await resolveRoster(d.db, ctx.orgId, ctx.agent);
|
|
193
|
-
const entry = template.source === "plugin"
|
|
194
|
-
? roster.find((e) => e.source === "plugin" && e.templateId === template.id)
|
|
195
|
-
: findType(roster, agentType);
|
|
196
|
-
if (entry?.source !== template.source) {
|
|
197
|
-
return refused(AGENT_REFUSALS.unknownType(agentType, roster.map((e) => e.type)));
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
|
-
const frozen = normalizeStoredDefinition(started.payload.definition);
|
|
201
|
-
const plan = {
|
|
202
|
-
childConversationId: child.id,
|
|
203
|
-
agentType,
|
|
204
|
-
source: template.source,
|
|
205
|
-
agentId: template.source === "agent" ? (template.id ?? "") : ctx.agentId,
|
|
206
|
-
agentVersion: template.source === "agent" ? (template.version ?? ctx.agentVersion) : ctx.agentVersion,
|
|
207
|
-
resumed: true,
|
|
208
|
-
model: started.payload.definition.model,
|
|
209
|
-
tierFallback: false,
|
|
210
|
-
};
|
|
211
|
-
return commit(d, a, plan, async (t, checked) => {
|
|
212
|
-
const current = template.source === "agent" ? checked?.definition : ctx.agent;
|
|
213
|
-
if (current === undefined)
|
|
214
|
-
throw new Error("org agent follow-up without its checked version");
|
|
215
|
-
const activeRun = () => t
|
|
216
|
-
.selectFrom("runs")
|
|
217
|
-
.select("id")
|
|
218
|
-
.where("conversation_id", "=", child.id)
|
|
219
|
-
.where("status", "in", ACTIVE_RUN_STATUSES)
|
|
220
|
-
.executeTakeFirst();
|
|
221
|
-
// An active child is refused before its row is locked: a running child's token append locks
|
|
222
|
-
// its conversation row and then this parent run's row, which `commit` already holds, so
|
|
223
|
-
// waiting for the child's row here would be a lock-order cycle (review I1). The parent row
|
|
224
|
-
// lock serializes this parent's dispatches, so an earlier follow-up's run is visible here.
|
|
225
|
-
if (await activeRun())
|
|
226
|
-
return null;
|
|
227
|
-
// the child's row lock serializes follow-ups to one sub-agent; no run holds it now, so it is
|
|
228
|
-
// never held by an append waiting for the parent row
|
|
229
|
-
await t
|
|
230
|
-
.selectFrom("conversations")
|
|
231
|
-
.select("id")
|
|
232
|
-
.where("id", "=", child.id)
|
|
233
|
-
.forUpdate()
|
|
234
|
-
.executeTakeFirst();
|
|
235
|
-
if (await activeRun())
|
|
236
|
-
return null;
|
|
237
|
-
const [task] = await d.eventLog.append(child.id, [taskMessage(ctx, a.callId, a.input.prompt, narrowFollowUp(frozen, current))], t);
|
|
238
|
-
return task;
|
|
239
|
-
}).then((r) => r ?? refused(AGENT_REFUSALS.stillRunning(a.id)));
|
|
240
|
-
}
|
|
241
164
|
/**
|
|
242
165
|
* The gates of an org agent sub-agent (§5.5) for this call: the allowlist of the parent agent's
|
|
243
166
|
* **current** version (R5), the agent's `dispatchable`, its visibility to the person who started
|
|
@@ -246,7 +169,7 @@ async function resume(d, a) {
|
|
|
246
169
|
* sub-agent freezes the definition read here) and again inside it under the parent run's row lock
|
|
247
170
|
* ({@link commit}), so a gate revoked in between refuses (batch 9 review M1).
|
|
248
171
|
*/
|
|
249
|
-
async function orgAgentGates(db, a, agentId, agentType, resumed) {
|
|
172
|
+
export async function orgAgentGates(db, a, agentId, agentType, resumed) {
|
|
250
173
|
const { ctx } = a;
|
|
251
174
|
const parentDefinition = (await currentAgentDefinition(db, ctx.agentId)) ?? {};
|
|
252
175
|
const check = await checkOrgAgent(db, {
|
|
@@ -270,13 +193,19 @@ async function orgAgentGates(db, a, agentId, agentType, resumed) {
|
|
|
270
193
|
});
|
|
271
194
|
return { refused: refused(AGENT_REFUSALS.agentNotAvailable(agentType)) };
|
|
272
195
|
}
|
|
273
|
-
const taskMessage = (ctx, callId, prompt, narrowed,
|
|
274
196
|
/**
|
|
275
|
-
* A
|
|
197
|
+
* A sub-agent's task message, or (`message`) a `SendMessage` from its parent (agent map spec
|
|
198
|
+
* §5.1: `dispatch.kind: "message"`, idempotent by the sending call, with the follow-up narrowing
|
|
199
|
+
* the run it triggers uses).
|
|
200
|
+
*/
|
|
201
|
+
export const taskMessage = (ctx, callId, prompt, narrowed,
|
|
202
|
+
/**
|
|
203
|
+
* A fork invocation's record: the child's log then holds the invocation, so its `Skill`
|
|
276
204
|
* is offered and resolves the invoked version (phase D).
|
|
277
205
|
*/
|
|
278
|
-
skill) => ({
|
|
206
|
+
skill, message = false) => ({
|
|
279
207
|
type: "user_message",
|
|
208
|
+
...(message && { idemKey: sentMessageIdemKey(ctx.runId, callId) }),
|
|
280
209
|
payload: {
|
|
281
210
|
content: [{ type: "text", text: prompt }],
|
|
282
211
|
...(skill !== undefined && { skill }),
|
|
@@ -285,158 +214,263 @@ skill) => ({
|
|
|
285
214
|
parentConversationId: ctx.conversationId,
|
|
286
215
|
parentRunId: ctx.runId,
|
|
287
216
|
callId,
|
|
217
|
+
...(message && { kind: "message" }),
|
|
288
218
|
...(narrowed !== undefined && { narrowed }),
|
|
289
219
|
},
|
|
290
220
|
},
|
|
291
221
|
});
|
|
222
|
+
/** Idempotency key of a `SendMessage`'s `user_message` in the sub-agent's log. */
|
|
223
|
+
export const sentMessageIdemKey = (runId, callId) => `send_message:${runId}:${callId}`;
|
|
224
|
+
const isActiveStatus = (status) => ACTIVE_RUN_STATUSES.includes(status);
|
|
292
225
|
/**
|
|
293
|
-
* The
|
|
294
|
-
*
|
|
295
|
-
*
|
|
296
|
-
*
|
|
297
|
-
*
|
|
298
|
-
*
|
|
299
|
-
*
|
|
300
|
-
* Under the parent run's row lock it first re-checks what the pipeline checked without it: a call
|
|
301
|
-
* already dispatched (a second holder of the same step, e.g. after a stalled-job takeover) gets
|
|
302
|
-
* the existing child run back and writes nothing, and a parent run that is no longer `running`
|
|
303
|
-
* (stopped, orphaned) dispatches nothing. Then the run's limits (§8.2, {@link subagentLimits}),
|
|
304
|
-
* read fresh: its children's token counter at or over the cap, its dispatches (follow-ups
|
|
305
|
-
* included) at the cap, or as many active children as may run at once each refuse with the §4.5
|
|
306
|
-
* text. The lock serializes the dispatches of one run, so the counts cannot race.
|
|
226
|
+
* The result text of a child run that ended before its parent's call got a result and was never
|
|
227
|
+
* delivered (agent map spec, rc upgrade: a foreground-era dispatch whose rc finisher wrote
|
|
228
|
+
* `subagent_finished` and resumed the parent): the child's report (`childResult`), with the
|
|
229
|
+
* parent's `subagent_finished` appended in this transaction when it is missing (idempotent by its
|
|
230
|
+
* key), so the undelivered sweep never delivers it a second time. Null when the parent already
|
|
231
|
+
* has a delivery for the run (it carries the result) or the run has no terminal event yet.
|
|
307
232
|
*/
|
|
308
|
-
async function
|
|
309
|
-
|
|
310
|
-
|
|
233
|
+
async function rcFinishedResult(d, row) {
|
|
234
|
+
const delivered = await d.db
|
|
235
|
+
.selectFrom("conversation_events")
|
|
236
|
+
.select("seq")
|
|
237
|
+
.where("conversation_id", "=", row.parentConversationId)
|
|
238
|
+
.where("type", "=", "subagent_delivery")
|
|
239
|
+
.where(sql `payload ->> 'childRunId'`, "=", row.childRunId)
|
|
240
|
+
.limit(1)
|
|
241
|
+
.executeTakeFirst();
|
|
242
|
+
if (delivered)
|
|
243
|
+
return null;
|
|
244
|
+
const r = await childResult(d.eventLog, row);
|
|
245
|
+
if (!r)
|
|
246
|
+
return null;
|
|
247
|
+
await d.eventLog.appendIn(row.parentConversationId, [finishedEvent(row, r.finished)]);
|
|
248
|
+
return r.content;
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* {@link commit}'s transaction (run by `SubagentsService.commitDispatch`, `d.db` its handle).
|
|
252
|
+
* Null when `child` refused.
|
|
253
|
+
*/
|
|
254
|
+
export async function commitDispatchIn(d, a, plan, child) {
|
|
311
255
|
const { ctx, callId, input } = a;
|
|
312
256
|
const childRunId = randomUUID();
|
|
313
|
-
const
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
257
|
+
const t = d.db;
|
|
258
|
+
// the documented order, conversation row then run row (run-finish.ts, abortWaiting): the
|
|
259
|
+
// append to the parent below takes the conversation row, so it is taken first here, or a stop
|
|
260
|
+
// racing this commit could deadlock (final review m2); the child's row comes last
|
|
261
|
+
await t
|
|
262
|
+
.selectFrom("conversations")
|
|
263
|
+
.select("id")
|
|
264
|
+
.where("id", "=", ctx.conversationId)
|
|
265
|
+
.forUpdate()
|
|
266
|
+
.executeTakeFirst();
|
|
267
|
+
const parent = await t
|
|
268
|
+
.selectFrom("runs")
|
|
269
|
+
.select(["status", "subagent_tokens_used", "budget_run_id"])
|
|
270
|
+
.where("id", "=", ctx.runId)
|
|
271
|
+
.forUpdate()
|
|
272
|
+
.executeTakeFirst();
|
|
273
|
+
const existing = await t
|
|
274
|
+
.selectFrom("subagent_dispatches as sd")
|
|
275
|
+
.leftJoin("runs as cr", "cr.id", "sd.child_run_id")
|
|
276
|
+
.select(["sd.child_run_id", "sd.child_conversation_id", "cr.status", "cr.trigger_seq"])
|
|
277
|
+
.where("sd.parent_run_id", "=", ctx.runId)
|
|
278
|
+
.where("sd.parent_call_id", "=", callId)
|
|
279
|
+
.executeTakeFirst();
|
|
280
|
+
if (existing) {
|
|
281
|
+
// An `Agent` call's result was written with its first dispatch (this returns it). A call
|
|
282
|
+
// dispatched before `Agent` ran in the background (a foreground wait in flight across the
|
|
283
|
+
// upgrade) gets the immediate result now, so the log never keeps it unpaired; such a call
|
|
284
|
+
// reaches here again through the pipeline's policy stages, so it may ask for approval again.
|
|
285
|
+
let result = null;
|
|
286
|
+
if (a.forSkill === undefined) {
|
|
287
|
+
// an rc child that already ended under the foreground wait, whose rc finisher wrote
|
|
288
|
+
// `subagent_finished` and resumed this run (no delivery; the sweep never delivers a run with
|
|
289
|
+
// `subagent_finished`): its report is this call's result, as the rc gave it, or it is lost.
|
|
290
|
+
// Only while the call has no result: a call that has one (a background dispatch's second
|
|
291
|
+
// holder) keeps it, and its child's finish stays to its delivery or the undelivered sweep.
|
|
292
|
+
const resultKey = resultEvent(ctx, callId, AGENT_TOOL, "").idemKey;
|
|
293
|
+
const finished = a.sent === undefined &&
|
|
294
|
+
existing.status !== null &&
|
|
295
|
+
!isActiveStatus(existing.status) &&
|
|
296
|
+
(await d.eventLog.findByIdem(ctx.conversationId, resultKey)) === undefined
|
|
297
|
+
? await rcFinishedResult(d, {
|
|
298
|
+
parentRunId: ctx.runId,
|
|
299
|
+
parentCallId: callId,
|
|
300
|
+
parentConversationId: ctx.conversationId,
|
|
301
|
+
childConversationId: existing.child_conversation_id,
|
|
302
|
+
childRunId: existing.child_run_id,
|
|
303
|
+
})
|
|
304
|
+
: null;
|
|
305
|
+
const [ev] = await d.eventLog.appendIn(ctx.conversationId, [
|
|
306
|
+
resultEvent(ctx, callId, a.call?.toolKey ?? AGENT_TOOL, finished ?? a.sent?.content ?? agentStartedText(existing.child_conversation_id)),
|
|
307
|
+
]);
|
|
308
|
+
if (ev?.type === "tool_result")
|
|
309
|
+
result = { content: ev.payload.content, seq: ev.seq };
|
|
310
|
+
}
|
|
311
|
+
return {
|
|
312
|
+
kind: "existing",
|
|
313
|
+
childRunId: existing.child_run_id,
|
|
314
|
+
childConversationId: existing.child_conversation_id,
|
|
315
|
+
result,
|
|
316
|
+
// still queued: the first holder may have died before its enqueue (review M4)
|
|
317
|
+
requeue: existing.status === "queued" && existing.trigger_seq !== null
|
|
318
|
+
? {
|
|
319
|
+
conversationId: existing.child_conversation_id,
|
|
320
|
+
seq: Number(existing.trigger_seq),
|
|
321
|
+
}
|
|
322
|
+
: null,
|
|
323
|
+
};
|
|
324
|
+
}
|
|
325
|
+
if (parent?.status !== "running")
|
|
326
|
+
return { kind: "stopped" };
|
|
327
|
+
// the tree's budget run (agent map spec §6), locked after the parent run so the dispatches of
|
|
328
|
+
// every run of one tree serialize on it; the parent run itself when it opened the window
|
|
329
|
+
const budgetRunId = parent.budget_run_id ?? ctx.runId;
|
|
330
|
+
const tokensUsed = budgetRunId === ctx.runId
|
|
331
|
+
? parent.subagent_tokens_used
|
|
332
|
+
: ((await t
|
|
324
333
|
.selectFrom("runs")
|
|
325
|
-
.select(
|
|
326
|
-
.where("id", "=",
|
|
334
|
+
.select("subagent_tokens_used")
|
|
335
|
+
.where("id", "=", budgetRunId)
|
|
327
336
|
.forUpdate()
|
|
328
|
-
.executeTakeFirst();
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
if (existing) {
|
|
337
|
-
return {
|
|
338
|
-
kind: "existing",
|
|
339
|
-
childRunId: existing.child_run_id,
|
|
340
|
-
// still queued: the first holder may have died before its enqueue (review M4)
|
|
341
|
-
requeue: existing.status === "queued" && existing.trigger_seq !== null
|
|
342
|
-
? {
|
|
343
|
-
conversationId: existing.child_conversation_id,
|
|
344
|
-
seq: Number(existing.trigger_seq),
|
|
345
|
-
}
|
|
346
|
-
: null,
|
|
347
|
-
};
|
|
348
|
-
}
|
|
349
|
-
if (parent?.status !== "running")
|
|
350
|
-
return { kind: "stopped" };
|
|
351
|
-
const limit = await limitRefusal(t, d, ctx, parent.subagent_tokens_used);
|
|
352
|
-
if (limit !== null)
|
|
353
|
-
return { kind: "limit", content: limit };
|
|
354
|
-
let checked;
|
|
355
|
-
if (plan.source === "agent") {
|
|
356
|
-
// the org agent's gates again, under the parent run's lock, with both agents' rows held
|
|
357
|
-
// FOR SHARE (in id order) so a concurrent save of either serializes with this dispatch
|
|
358
|
-
await t
|
|
359
|
-
.selectFrom("agents")
|
|
360
|
-
.select("id")
|
|
361
|
-
.where("id", "in", [ctx.agentId, plan.agentId])
|
|
362
|
-
.orderBy("id")
|
|
363
|
-
.forShare()
|
|
364
|
-
.execute();
|
|
365
|
-
const gates = await orgAgentGates(t, a, plan.agentId, plan.agentType, plan.resumed);
|
|
366
|
-
if ("refused" in gates)
|
|
367
|
-
return { kind: "gate", outcome: gates.refused };
|
|
368
|
-
checked = gates.checked;
|
|
369
|
-
}
|
|
370
|
-
const task = await child(t, checked);
|
|
371
|
-
if (task === null)
|
|
372
|
-
return null;
|
|
337
|
+
.executeTakeFirst())?.subagent_tokens_used ?? 0);
|
|
338
|
+
const limit = await limitRefusal(t, d, ctx, budgetRunId, tokensUsed, a.sent?.refusals ?? AGENT_REFUSALS);
|
|
339
|
+
if (limit !== null)
|
|
340
|
+
return { kind: "limit", content: limit };
|
|
341
|
+
let checked;
|
|
342
|
+
if (plan.source === "agent") {
|
|
343
|
+
// the org agent's gates again, under the parent run's lock, with both agents' rows held
|
|
344
|
+
// FOR SHARE (in id order) so a concurrent save of either serializes with this dispatch
|
|
373
345
|
await t
|
|
374
|
-
.
|
|
375
|
-
.
|
|
376
|
-
id
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
agent_version: plan.agentVersion,
|
|
380
|
-
trigger_account_id: ctx.accountId,
|
|
381
|
-
trigger_seq: task.seq,
|
|
382
|
-
})
|
|
383
|
-
.execute();
|
|
384
|
-
await t
|
|
385
|
-
.insertInto("subagent_dispatches")
|
|
386
|
-
.values({
|
|
387
|
-
parent_run_id: ctx.runId,
|
|
388
|
-
parent_call_id: callId,
|
|
389
|
-
parent_conversation_id: ctx.conversationId,
|
|
390
|
-
step: ctx.step,
|
|
391
|
-
child_conversation_id: plan.childConversationId,
|
|
392
|
-
child_run_id: childRunId,
|
|
393
|
-
resumed: plan.resumed,
|
|
394
|
-
})
|
|
346
|
+
.selectFrom("agents")
|
|
347
|
+
.select("id")
|
|
348
|
+
.where("id", "in", [ctx.agentId, plan.agentId])
|
|
349
|
+
.orderBy("id")
|
|
350
|
+
.forShare()
|
|
395
351
|
.execute();
|
|
396
|
-
const
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
352
|
+
const gates = await orgAgentGates(t, a, plan.agentId, plan.agentType, plan.resumed);
|
|
353
|
+
if ("refused" in gates)
|
|
354
|
+
return { kind: "gate", outcome: gates.refused };
|
|
355
|
+
checked = gates.checked;
|
|
356
|
+
}
|
|
357
|
+
const task = await child(t, checked);
|
|
358
|
+
if (task === null)
|
|
359
|
+
return null;
|
|
360
|
+
await t
|
|
361
|
+
.insertInto("runs")
|
|
362
|
+
.values({
|
|
363
|
+
id: childRunId,
|
|
364
|
+
conversation_id: plan.childConversationId,
|
|
365
|
+
status: "queued",
|
|
366
|
+
agent_version: plan.agentVersion,
|
|
367
|
+
trigger_account_id: ctx.accountId,
|
|
368
|
+
trigger_seq: task.seq,
|
|
369
|
+
budget_run_id: budgetRunId,
|
|
370
|
+
})
|
|
371
|
+
.execute();
|
|
372
|
+
await t
|
|
373
|
+
.insertInto("subagent_dispatches")
|
|
374
|
+
.values({
|
|
375
|
+
parent_run_id: ctx.runId,
|
|
376
|
+
parent_call_id: callId,
|
|
377
|
+
parent_conversation_id: ctx.conversationId,
|
|
378
|
+
step: ctx.step,
|
|
379
|
+
child_conversation_id: plan.childConversationId,
|
|
380
|
+
child_run_id: childRunId,
|
|
381
|
+
resumed: plan.resumed,
|
|
382
|
+
budget_run_id: budgetRunId,
|
|
383
|
+
for_skill: a.forSkill !== undefined,
|
|
384
|
+
})
|
|
385
|
+
.execute();
|
|
386
|
+
// an org agent runs on its own model (§5.4): a `model` on the call was ignored
|
|
387
|
+
const ownModel = plan.source === "agent" && input.model !== undefined;
|
|
388
|
+
const content = a.sent?.content ?? agentStartedText(plan.childConversationId, { ownModel });
|
|
389
|
+
const parentEvents = await d.eventLog.appendIn(ctx.conversationId, [
|
|
390
|
+
{
|
|
391
|
+
type: "subagent_dispatched",
|
|
392
|
+
runId: ctx.runId,
|
|
393
|
+
idemKey: dispatchedIdemKey(ctx.runId, callId),
|
|
394
|
+
payload: {
|
|
395
|
+
step: ctx.step,
|
|
396
|
+
callId,
|
|
397
|
+
subagentId: plan.childConversationId,
|
|
398
|
+
childRunId,
|
|
399
|
+
agentType: plan.agentType,
|
|
400
|
+
description: input.description,
|
|
401
|
+
resumed: plan.resumed,
|
|
402
|
+
model: { provider: plan.model.provider, model: plan.model.model },
|
|
403
|
+
...(plan.tierFallback && { tierFallback: true }),
|
|
404
|
+
...(a.forSkill !== undefined && { invokedSeq: a.forSkill.seq }),
|
|
413
405
|
},
|
|
414
|
-
|
|
406
|
+
},
|
|
407
|
+
// an `Agent` call's result is immediate (agent map spec §4.1): the sub-agent works in the
|
|
408
|
+
// background and reports through `subagent_delivery`; a fork invocation has no tool call
|
|
409
|
+
...(a.forSkill === undefined
|
|
410
|
+
? [resultEvent(ctx, callId, a.call?.toolKey ?? AGENT_TOOL, content)]
|
|
411
|
+
: []),
|
|
412
|
+
]);
|
|
413
|
+
await audit(t, {
|
|
414
|
+
actorAccountId: ctx.accountId,
|
|
415
|
+
orgId: ctx.orgId,
|
|
416
|
+
action: "subagent.dispatched",
|
|
417
|
+
target: plan.childConversationId,
|
|
418
|
+
detail: {
|
|
419
|
+
parentConversationId: ctx.conversationId,
|
|
420
|
+
parentRunId: ctx.runId,
|
|
421
|
+
callId,
|
|
422
|
+
agentType: plan.agentType,
|
|
423
|
+
source: plan.source,
|
|
424
|
+
...(plan.source === "agent" && {
|
|
425
|
+
agentId: plan.agentId,
|
|
426
|
+
agentVersion: plan.agentVersion,
|
|
427
|
+
}),
|
|
428
|
+
resumed: plan.resumed,
|
|
429
|
+
childRunId,
|
|
430
|
+
},
|
|
431
|
+
});
|
|
432
|
+
if (a.forSkill === undefined) {
|
|
415
433
|
await audit(t, {
|
|
416
434
|
actorAccountId: ctx.accountId,
|
|
417
435
|
orgId: ctx.orgId,
|
|
418
|
-
action: "
|
|
419
|
-
target:
|
|
436
|
+
action: "tool.called",
|
|
437
|
+
target: ctx.conversationId,
|
|
420
438
|
detail: {
|
|
421
|
-
|
|
422
|
-
|
|
439
|
+
toolKey: a.sent !== undefined ? SEND_MESSAGE : AGENT_TOOL,
|
|
440
|
+
isError: false,
|
|
441
|
+
durationMs: a.call === undefined ? null : Math.max(0, Date.now() - a.call.startedAt),
|
|
442
|
+
agentId: ctx.agentId,
|
|
443
|
+
agentVersion: ctx.agentVersion,
|
|
444
|
+
conversationId: ctx.conversationId,
|
|
445
|
+
runId: ctx.runId,
|
|
423
446
|
callId,
|
|
424
|
-
|
|
425
|
-
source: plan.source,
|
|
426
|
-
...(plan.source === "agent" && {
|
|
427
|
-
agentId: plan.agentId,
|
|
428
|
-
agentVersion: plan.agentVersion,
|
|
429
|
-
}),
|
|
430
|
-
resumed: plan.resumed,
|
|
431
|
-
childRunId,
|
|
447
|
+
...a.call?.authorization,
|
|
432
448
|
},
|
|
433
449
|
});
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
450
|
+
}
|
|
451
|
+
return {
|
|
452
|
+
kind: "written",
|
|
453
|
+
childRunId,
|
|
454
|
+
childSeq: task.seq,
|
|
455
|
+
parentSeq: Math.max(...parentEvents.map((e) => e.seq)),
|
|
456
|
+
content,
|
|
457
|
+
};
|
|
458
|
+
}
|
|
459
|
+
/**
|
|
460
|
+
* The immediate `tool_result` of an `Agent` call ({@link agentStartedText}) or of a `SendMessage`
|
|
461
|
+
* that started an idle sub-agent, idempotent by the call.
|
|
462
|
+
*/
|
|
463
|
+
const resultEvent = (ctx, callId, toolKey, content) => ({
|
|
464
|
+
type: "tool_result",
|
|
465
|
+
runId: ctx.runId,
|
|
466
|
+
idemKey: `tool_result:${ctx.runId}:${callId}`,
|
|
467
|
+
payload: { step: ctx.step, callId, toolKey, content, isError: false },
|
|
468
|
+
});
|
|
469
|
+
export async function commit(d, a, plan,
|
|
470
|
+
/** Writes the child's events; `checked` is the org agent version the in-lock gates passed. */
|
|
471
|
+
child) {
|
|
472
|
+
const { ctx } = a;
|
|
473
|
+
const out = await d.commitDispatch(a, plan, child);
|
|
440
474
|
if (out === null)
|
|
441
475
|
return null;
|
|
442
476
|
if (out.kind === "existing") {
|
|
@@ -453,17 +487,26 @@ child) {
|
|
|
453
487
|
err,
|
|
454
488
|
}));
|
|
455
489
|
}
|
|
456
|
-
|
|
490
|
+
if (out.result !== null)
|
|
491
|
+
await d.eventLog.notify(ctx.conversationId, out.result.seq);
|
|
492
|
+
return {
|
|
493
|
+
kind: "dispatched",
|
|
494
|
+
childRunId: out.childRunId,
|
|
495
|
+
childConversationId: out.childConversationId,
|
|
496
|
+
content: out.result?.content ?? a.sent?.content ?? agentStartedText(out.childConversationId),
|
|
497
|
+
};
|
|
457
498
|
}
|
|
458
499
|
// the result is never read: the run is over
|
|
459
|
-
if (out.kind === "stopped")
|
|
460
|
-
return refused(AGENT_REFUSALS.notAvailableHere);
|
|
500
|
+
if (out.kind === "stopped") {
|
|
501
|
+
return refused((a.sent?.refusals ?? AGENT_REFUSALS).notAvailableHere);
|
|
502
|
+
}
|
|
461
503
|
if (out.kind === "limit")
|
|
462
504
|
return refused(out.content);
|
|
463
505
|
if (out.kind === "gate")
|
|
464
506
|
return out.outcome;
|
|
465
507
|
await d.eventLog.notify(plan.childConversationId, out.childSeq);
|
|
466
508
|
await d.eventLog.notify(ctx.conversationId, out.parentSeq);
|
|
509
|
+
const childRunId = out.childRunId;
|
|
467
510
|
const jobId = runJobId(plan.childConversationId, out.childSeq);
|
|
468
511
|
try {
|
|
469
512
|
await d.enqueue({ runId: childRunId, conversationId: plan.childConversationId }, jobId, "subagent");
|
|
@@ -472,31 +515,54 @@ child) {
|
|
|
472
515
|
// the dispatch is committed: the wait sweep re-enqueues the queued child run
|
|
473
516
|
d.log.error("cannot enqueue sub-agent run; the sweep retries", { childRunId, jobId, err });
|
|
474
517
|
}
|
|
475
|
-
return {
|
|
518
|
+
return {
|
|
519
|
+
kind: "dispatched",
|
|
520
|
+
childRunId,
|
|
521
|
+
childConversationId: plan.childConversationId,
|
|
522
|
+
content: out.content,
|
|
523
|
+
};
|
|
476
524
|
}
|
|
477
525
|
/**
|
|
478
|
-
* The §4.5 refusal of a dispatch the
|
|
479
|
-
* run's row
|
|
526
|
+
* The §4.5 refusal of a dispatch the limits forbid, or null (agent map spec §6). Runs under the
|
|
527
|
+
* parent conversation's, the parent run's and the budget run's row locks; `tokensUsed` is the
|
|
528
|
+
* budget run's counter read with its lock. A dispatch from a run at `maxDepth` is refused (the
|
|
529
|
+
* limit may have been lowered since the call's definition was frozen); tokens and dispatches
|
|
530
|
+
* (follow-ups included) count the whole tree on its budget run; concurrency counts the child
|
|
531
|
+
* conversations of the parent conversation that have an active run, whatever started that run.
|
|
480
532
|
*/
|
|
481
|
-
async function limitRefusal(t, d, ctx, tokensUsed) {
|
|
533
|
+
async function limitRefusal(t, d, ctx, budgetRunId, tokensUsed, texts) {
|
|
482
534
|
const limits = await subagentLimits(t, d.config, ctx.orgId);
|
|
483
|
-
if (
|
|
484
|
-
return
|
|
535
|
+
if (runDepth(ctx) >= limits.maxDepth)
|
|
536
|
+
return texts.depthLimit(limits.maxDepth);
|
|
537
|
+
// 0: no limit (the deployment config or the org's override)
|
|
538
|
+
if (limits.maxTokensPerRun > 0 && Number(tokensUsed) >= limits.maxTokensPerRun) {
|
|
539
|
+
return texts.budget(limits.maxTokensPerRun);
|
|
485
540
|
}
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
if (Number(counts.total) >= limits.maxDispatchesPerRun) {
|
|
496
|
-
return AGENT_REFUSALS.tooManyDispatches(limits.maxDispatchesPerRun);
|
|
541
|
+
if (limits.maxDispatchesPerRun > 0) {
|
|
542
|
+
const total = await t
|
|
543
|
+
.selectFrom("subagent_dispatches")
|
|
544
|
+
.select(sql `count(*)`.as("n"))
|
|
545
|
+
.where("budget_run_id", "=", budgetRunId)
|
|
546
|
+
.executeTakeFirstOrThrow();
|
|
547
|
+
if (Number(total.n) >= limits.maxDispatchesPerRun) {
|
|
548
|
+
return texts.tooManyDispatches(limits.maxDispatchesPerRun);
|
|
549
|
+
}
|
|
497
550
|
}
|
|
498
|
-
|
|
499
|
-
|
|
551
|
+
// every child conversation with an active run of any origin: a dispatch, a message it never
|
|
552
|
+
// absorbed (a continuation run) or a wake run all hold its slot
|
|
553
|
+
const active = await t
|
|
554
|
+
.selectFrom("conversations as c")
|
|
555
|
+
.select(sql `count(*)`.as("n"))
|
|
556
|
+
.where("c.parent_conversation_id", "=", ctx.conversationId)
|
|
557
|
+
.where("c.kind", "=", "subagent")
|
|
558
|
+
.where("c.deleted_at", "is", null)
|
|
559
|
+
.where(({ exists, selectFrom }) => exists(selectFrom("runs as cr")
|
|
560
|
+
.select(sql `1`.as("one"))
|
|
561
|
+
.whereRef("cr.conversation_id", "=", "c.id")
|
|
562
|
+
.where("cr.status", "in", ACTIVE_RUN_STATUSES)))
|
|
563
|
+
.executeTakeFirstOrThrow();
|
|
564
|
+
if (Number(active.n) >= limits.maxConcurrentPerConversation) {
|
|
565
|
+
return texts.tooManyConcurrent(limits.maxConcurrentPerConversation);
|
|
500
566
|
}
|
|
501
567
|
return null;
|
|
502
568
|
}
|