@capybara-hq/kernel 0.1.0-rc.0 → 0.1.0-rc.10
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 +92 -8
- 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 +57 -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 +232 -0
- package/dist/catalog/catalog-content.js +367 -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 +676 -0
- package/dist/catalog/catalog-scope.service.d.ts +260 -0
- package/dist/catalog/catalog-scope.service.js +1124 -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 +141 -206
- package/dist/catalog/catalog.service.js +237 -528
- package/dist/catalog/claude/agents.js +15 -10
- 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 +114 -0
- package/dist/catalog/component-scope.schemas.js +97 -0
- package/dist/catalog/component-scope.service.d.ts +327 -0
- package/dist/catalog/component-scope.service.js +990 -0
- package/dist/catalog/component-state.d.ts +188 -0
- package/dist/catalog/component-state.js +455 -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 +431 -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 +801 -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 +223 -0
- package/dist/catalog/platform-components.js +763 -0
- package/dist/catalog/platform-migration.d.ts +115 -0
- package/dist/catalog/platform-migration.js +582 -0
- package/dist/catalog/plugin-import.d.ts +270 -68
- package/dist/catalog/plugin-import.js +1004 -277
- package/dist/catalog/plugin-install.d.ts +251 -65
- package/dist/catalog/plugin-install.js +1128 -344
- package/dist/catalog/plugin-package.js +14 -1
- package/dist/catalog/plugin-upgrade.d.ts +301 -188
- package/dist/catalog/plugin-upgrade.js +1256 -1068
- 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 +118 -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 -201
- 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 +51 -3
- package/dist/config/schema.js +269 -27
- 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 -70
- 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/queue.js +3 -2
- package/dist/ctx/secrets.d.ts +10 -2
- package/dist/ctx/secrets.js +7 -3
- package/dist/db/kernel-schema.d.ts +550 -25
- 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 +136 -2
- package/dist/errors.js +136 -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 -123
- 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 +136 -46
- package/dist/extensions/bootstrap.js +417 -167
- 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 +86 -358
- package/dist/http/app.d.ts +22 -17
- package/dist/http/app.js +83 -52
- 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 +130 -38
- package/dist/identity/accounts.js +373 -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 +78 -33
- package/dist/identity/me.schemas.d.ts +14 -0
- package/dist/identity/me.schemas.js +17 -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 +42 -23
- package/dist/identity/settings.js +137 -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 +25 -14
- package/dist/index.js +20 -9
- 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 -241
- 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-config.d.ts +9 -0
- package/dist/log-config.js +27 -0
- package/dist/log-context.d.ts +34 -0
- package/dist/log-context.js +44 -0
- package/dist/log-loki.d.ts +34 -0
- package/dist/log-loki.js +145 -0
- package/dist/log.d.ts +53 -10
- package/dist/log.js +168 -18
- 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/net/public-address.js +3 -2
- 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 +45 -14
- package/dist/orgs/settings.service.js +110 -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 +667 -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 +90 -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 +36 -0
- package/dist/platform/ops/admin.ops.js +389 -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 +853 -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 +16 -0
- package/dist/platform/ops/org-settings.ops.js +102 -0
- package/dist/platform/ops/orgs.ops.d.ts +28 -0
- package/dist/platform/ops/orgs.ops.js +295 -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 +28 -0
- package/dist/platform/ops/platform.ops.js +204 -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/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 +39 -0
- package/dist/platform/platform-ops.module.js +122 -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 +63 -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 -136
- 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 -236
- 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 -180
- 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/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 +142 -40
- package/dist/tools/builtins/sandbox/common.js +227 -65
- 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 +15 -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/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,24 +1,52 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
8
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
9
|
+
};
|
|
10
|
+
import { Inject, Injectable, Optional } from "@nestjs/common";
|
|
11
|
+
import { DelayedError } from "bullmq";
|
|
3
12
|
import { sql } from "kysely";
|
|
4
|
-
import {
|
|
13
|
+
import { EventLog } from "../conversations/event-log.js";
|
|
14
|
+
import { isAbsorbable, } from "../conversations/events.js";
|
|
5
15
|
import { effectiveDefinition, NO_SELECTION, readSelection, sameModel, sameSelection, } from "../conversations/selection.js";
|
|
16
|
+
import { TitleQueue } from "../conversations/titles.js";
|
|
6
17
|
import { ApiError } from "../errors.js";
|
|
7
|
-
import {
|
|
18
|
+
import { SettingsService } from "../identity/settings.js";
|
|
19
|
+
import { waitWithin } from "../infra/close-within.js";
|
|
20
|
+
import { KernelConfigService } from "../infra/config/kernel-config.service.js";
|
|
21
|
+
import { KernelDb } from "../infra/database/kernel-db.js";
|
|
22
|
+
import { TransactionHost } from "../infra/database/transaction-host.js";
|
|
23
|
+
import { Transactional } from "../infra/database/transactional.decorator.js";
|
|
24
|
+
import { KernelEvents } from "../infra/events/kernel-events.js";
|
|
25
|
+
import { KERNEL_BUS, KERNEL_LOGGER } from "../infra/tokens.js";
|
|
26
|
+
import { pinnedFailureText, SkillsCatalogService } from "../skills/catalog.js";
|
|
27
|
+
import { normalizeStoredDefinitionIn } from "../tools/legacy-data.js";
|
|
28
|
+
import { ToolPipeline } from "../tools/pipeline.js";
|
|
29
|
+
import { RunAbort } from "./abort.js";
|
|
30
|
+
import { KyselyCheckpointSaver } from "./checkpointer.js";
|
|
31
|
+
import { ConversationLock } from "./conversation-lock.js";
|
|
8
32
|
import { RunError } from "./model-call.js";
|
|
9
|
-
import { ProviderListError } from "./providers.js";
|
|
10
|
-
import { ORG_QUOTA_LEASE_MS, orgRunLimit } from "./quota.js";
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
33
|
+
import { ProviderListError, ProviderRegistry } from "./providers.js";
|
|
34
|
+
import { ORG_QUOTA_LEASE_MS, orgRunLimit, RUN_QUOTA } from "./quota.js";
|
|
35
|
+
import { RunContextService } from "./run-context.service.js";
|
|
36
|
+
import { RunDrafts, streamSink } from "./run-drafts.js";
|
|
37
|
+
import { RunFinish, TERMINAL_STATUSES } from "./run-finish.js";
|
|
38
|
+
import { RunQueue } from "./run-queue.js";
|
|
39
|
+
import { AgentLoops, RunSteps } from "./run-steps.js";
|
|
40
|
+
import { dispatchOfChildRun, rootConversationOf } from "./subagents/child.js";
|
|
14
41
|
import { childRunDefinition } from "./subagents/definition.js";
|
|
15
42
|
import { forkBoundary } from "./subagents/skill-fork.js";
|
|
43
|
+
import { Waits } from "./waits.js";
|
|
16
44
|
/** 会话锁被占用时任务延后的时间。 */
|
|
17
45
|
const LOCK_BUSY_DELAY_MS = 1000;
|
|
18
46
|
/** 组织配额已满时任务延后的时间。 */
|
|
19
47
|
const QUOTA_FULL_DELAY_MS = 2000;
|
|
20
48
|
/** BullMQ stalled 检测允许的最大次数(超过则任务失败)。 */
|
|
21
|
-
const MAX_STALLED_COUNT = 3;
|
|
49
|
+
export const MAX_STALLED_COUNT = 3;
|
|
22
50
|
/** 停机时等待任务结束后处理(ensureRun 等)的最短时间。 */
|
|
23
51
|
const FOLLOW_UP_MIN_WAIT_MS = 250;
|
|
24
52
|
/** 读插话的分页大小。 */
|
|
@@ -28,88 +56,176 @@ const READ_PAGE = 500;
|
|
|
28
56
|
* 后续处理,由 close() 跟踪并限时;全部失败也不会让会话永远卡住——打开 SSE / 读事件时会再次 ensureRun。
|
|
29
57
|
*/
|
|
30
58
|
const ENSURE_RETRY_DELAYS_MS = [200, 1000, 3000];
|
|
31
|
-
|
|
59
|
+
/** Optional provider: the run worker's {@link RunHooks} (tests). */
|
|
60
|
+
export const RUN_HOOKS = Symbol("RUN_HOOKS");
|
|
32
61
|
/** 任务回到队列:延后 delayMs 再处理(不计入 attempts)。 */
|
|
33
62
|
async function requeue(job, token, delayMs) {
|
|
34
63
|
await job.moveToDelayed(Date.now() + delayMs, token);
|
|
35
64
|
throw new DelayedError();
|
|
36
65
|
}
|
|
37
66
|
/**
|
|
38
|
-
* 运行 worker(只在含 `worker`
|
|
39
|
-
*
|
|
40
|
-
*
|
|
67
|
+
* 运行 worker(只在含 `worker` 角色的进程消费):领取 `cap-kernel-runs` 与 `cap-kernel-subagent-runs` 的任务
|
|
68
|
+
* (两个 `@Processor`,见 run-processors.ts),取会话锁与组织配额,调用 AgentLoop,按结果写终态事件并推进
|
|
69
|
+
* `consumed_seq`;结束后再调用一次 `ensureRun` 处理运行期间到达但没被吸收的消息(Review Focus 2)。
|
|
41
70
|
*/
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
71
|
+
let RunWorker = class RunWorker {
|
|
72
|
+
kdb;
|
|
73
|
+
eventLog;
|
|
74
|
+
lock;
|
|
75
|
+
quota;
|
|
76
|
+
abort;
|
|
77
|
+
queue;
|
|
78
|
+
settings;
|
|
79
|
+
config;
|
|
80
|
+
log;
|
|
81
|
+
bus;
|
|
82
|
+
checkpoints;
|
|
83
|
+
waits;
|
|
84
|
+
events;
|
|
85
|
+
titles;
|
|
86
|
+
models;
|
|
87
|
+
skillsCatalog;
|
|
88
|
+
runContext;
|
|
89
|
+
pipeline;
|
|
90
|
+
finisher;
|
|
91
|
+
txHost;
|
|
92
|
+
drafts;
|
|
93
|
+
hooks;
|
|
94
|
+
/** The two run queues' BullMQ workers (spec §7.4), once {@link start}ed on the worker role. */
|
|
45
95
|
workers = [];
|
|
46
|
-
/** 传给 Worker 的连接:BullMQ 不关闭调用方传入的连接,close() 时自己关。 */
|
|
47
|
-
conn;
|
|
48
96
|
active = new Map();
|
|
49
97
|
/** 进行中的「任务结束后」处理(完成后的 ensureRun、失败标记):停机时等它们做完再关闭队列。 */
|
|
50
98
|
followUps = new Set();
|
|
51
99
|
closing = false;
|
|
52
100
|
/** close() 开始时触发:ensureRun 重试不再等待退避间隔。 */
|
|
53
101
|
closingSignal = new AbortController();
|
|
54
|
-
|
|
55
|
-
|
|
102
|
+
loop;
|
|
103
|
+
constructor(kdb, eventLog, lock, quota, abort, queue, settings, loops, steps, config, log, bus,
|
|
104
|
+
/** 运行到达终态后删除该运行(thread_id = runId)的 checkpoint thread(只用于续跑,结束后无用)。 */
|
|
105
|
+
checkpoints,
|
|
106
|
+
/** loop 返回 `suspended` 后把运行置为 waiting(释放会话锁与配额之后); the child lifecycle. */
|
|
107
|
+
waits,
|
|
108
|
+
/** `run.started` (the channel outbound enqueues the conversation's IM delivery). */
|
|
109
|
+
events,
|
|
110
|
+
/** A completed run enqueues the conversation's title job. */
|
|
111
|
+
titles,
|
|
112
|
+
/** Resolves a switched-to model at run start (fallback when it is gone; UI refresh B). */
|
|
113
|
+
models,
|
|
114
|
+
/** Run start's skills catalog snapshot (reads the pinned skills' bodies, phase B). */
|
|
115
|
+
skillsCatalog,
|
|
116
|
+
/** Run start's run context (run context spec §5): who the agent is, the day, the person. */
|
|
117
|
+
runContext,
|
|
118
|
+
/**
|
|
119
|
+
* In the terminal transaction of every run: writes its open `Agent` call results
|
|
120
|
+
* (`stopOpenAgentCalls`; a no-op without dispatches); `fire` runs their observe hooks after the
|
|
121
|
+
* commit (sub-agents spec §12, review m1: a failed or stalled parent too).
|
|
122
|
+
*/
|
|
123
|
+
pipeline, finisher, txHost,
|
|
124
|
+
/** The steps' live drafts this process writes for the runs it executes. */
|
|
125
|
+
drafts, hooks) {
|
|
126
|
+
this.kdb = kdb;
|
|
127
|
+
this.eventLog = eventLog;
|
|
128
|
+
this.lock = lock;
|
|
129
|
+
this.quota = quota;
|
|
130
|
+
this.abort = abort;
|
|
131
|
+
this.queue = queue;
|
|
132
|
+
this.settings = settings;
|
|
133
|
+
this.config = config;
|
|
134
|
+
this.log = log;
|
|
135
|
+
this.bus = bus;
|
|
136
|
+
this.checkpoints = checkpoints;
|
|
137
|
+
this.waits = waits;
|
|
138
|
+
this.events = events;
|
|
139
|
+
this.titles = titles;
|
|
140
|
+
this.models = models;
|
|
141
|
+
this.skillsCatalog = skillsCatalog;
|
|
142
|
+
this.runContext = runContext;
|
|
143
|
+
this.pipeline = pipeline;
|
|
144
|
+
this.finisher = finisher;
|
|
145
|
+
this.txHost = txHost;
|
|
146
|
+
this.drafts = drafts;
|
|
147
|
+
this.hooks = hooks;
|
|
148
|
+
this.loop = loops.create(steps.deps);
|
|
149
|
+
}
|
|
150
|
+
get db() {
|
|
151
|
+
return this.kdb.db;
|
|
56
152
|
}
|
|
57
|
-
|
|
58
|
-
|
|
153
|
+
/**
|
|
154
|
+
* Starts consuming (worker role only): `workers` are the `@Processor` workers of both run queues
|
|
155
|
+
* (built with `runtime.workerConcurrency`, `jobLockMs`, `stalledIntervalMs`; never autorun).
|
|
156
|
+
*/
|
|
157
|
+
start(workers) {
|
|
158
|
+
if (this.workers.length > 0 || this.closing)
|
|
59
159
|
return;
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
const worker = new Worker(queue, (job, token) => this.process(job, token), {
|
|
64
|
-
// the worker name is recorded on the job (BullMQ processedBy): which replica ran it
|
|
65
|
-
name: `${hostname()}-${process.pid}`,
|
|
66
|
-
connection: this.conn,
|
|
67
|
-
concurrency: runtime.workerConcurrency,
|
|
68
|
-
lockDuration: runtime.jobLockMs,
|
|
69
|
-
stalledInterval: runtime.stalledIntervalMs,
|
|
70
|
-
maxStalledCount: MAX_STALLED_COUNT,
|
|
71
|
-
});
|
|
72
|
-
// ensureRun after a run goes after its job completed and left the queue: when the latest
|
|
73
|
-
// unconsumed message is this run's own trigger (e.g. a run ended by its deadline without
|
|
74
|
-
// absorbing it, R34), the new job has this job's id and would be dropped as a duplicate
|
|
75
|
-
// while this one is still active. Relies on BullMQ moving the job to completed (deleted by
|
|
76
|
-
// removeOnComplete) before emitting "completed" (pinned by the R34 test).
|
|
77
|
-
worker.on("completed", (job, result) => {
|
|
78
|
-
if (result !== "ensure")
|
|
79
|
-
return;
|
|
80
|
-
const { conversationId, runId } = job.data;
|
|
81
|
-
this.track(this.ensureAfterRun(conversationId, runId));
|
|
82
|
-
});
|
|
83
|
-
worker.on("error", (err) => this.d.log.error("run worker error", { err, queue }));
|
|
84
|
-
worker.on("failed", (job, err) => {
|
|
85
|
-
this.d.log.error("run job failed", { jobId: job?.id, runId: job?.data.runId, err });
|
|
86
|
-
if (job) {
|
|
87
|
-
this.track(this.onJobFailed(job.data, err).catch((e) => this.d.log.error("cannot mark failed run job", { runId: job.data.runId, err: e })));
|
|
88
|
-
}
|
|
89
|
-
});
|
|
90
|
-
this.workers.push(worker);
|
|
160
|
+
this.workers = workers;
|
|
161
|
+
for (const w of workers) {
|
|
162
|
+
void w.run().catch((err) => this.onError(err, w.name));
|
|
91
163
|
}
|
|
92
164
|
}
|
|
93
|
-
/**
|
|
94
|
-
|
|
95
|
-
|
|
165
|
+
/** A worker's `error` event. */
|
|
166
|
+
onError(err, queue) {
|
|
167
|
+
this.log.error("run worker error", { err, queue });
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* A job completed (the worker's `completed` event). ensureRun after a run goes after its job
|
|
171
|
+
* completed and left the queue: when the latest unconsumed message is this run's own trigger
|
|
172
|
+
* (e.g. a run ended by its deadline without absorbing it, R34), the new job has this job's id
|
|
173
|
+
* and would be dropped as a duplicate while this one is still active. Relies on BullMQ moving
|
|
174
|
+
* the job to completed (deleted by removeOnComplete) before emitting "completed" (pinned by the
|
|
175
|
+
* R34 test).
|
|
176
|
+
*/
|
|
177
|
+
onCompleted(job, result) {
|
|
178
|
+
if (result !== "ensure")
|
|
96
179
|
return;
|
|
180
|
+
const { conversationId, runId } = job.data;
|
|
181
|
+
this.track(this.ensureAfterRun(conversationId, runId));
|
|
182
|
+
}
|
|
183
|
+
/** A job failed (the worker's `failed` event). */
|
|
184
|
+
onFailed(job, err) {
|
|
185
|
+
this.log.error("run job failed", { jobId: job?.id, runId: job?.data.runId, err });
|
|
186
|
+
if (job) {
|
|
187
|
+
this.track(this.onJobFailed(job.data, err).catch((e) => this.log.error("cannot mark failed run job", { runId: job.data.runId, err: e })));
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* The run's stream sink: deltas on the conversation's topic (any replica's subscribers get them)
|
|
192
|
+
* and the steps' live drafts in Redis ({@link streamSink}, spec 2026-11-07 §3.2).
|
|
193
|
+
*/
|
|
194
|
+
sinkFor(conversationId) {
|
|
195
|
+
return streamSink(conversationId, { bus: this.bus, drafts: this.drafts, log: this.log });
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* After any terminal commit of a run that is not a sub-agent's (sub-agents spec §12): stops its
|
|
199
|
+
* active fork invocation child on its behalf (no account); background `Agent` children keep
|
|
200
|
+
* running (agent map spec §5.4). The wait sweep is the backstop.
|
|
201
|
+
*/
|
|
202
|
+
async stopChildren(runId) {
|
|
97
203
|
try {
|
|
98
|
-
await this.
|
|
204
|
+
await this.waits.stopChildren(runId, null);
|
|
99
205
|
}
|
|
100
206
|
catch (err) {
|
|
101
|
-
this.
|
|
207
|
+
this.log.error("cannot stop the sub-agents of a finished run", { runId, err });
|
|
102
208
|
}
|
|
103
209
|
}
|
|
104
|
-
/**
|
|
210
|
+
/**
|
|
211
|
+
* After a sub-agent run's terminal state committed (sub-agents spec §7.3): reports it to the
|
|
212
|
+
* parent. Called with any run id whose conversation may be a child; runs that were not
|
|
213
|
+
* dispatched are ignored. Errors are logged (the wait sweep repairs a missed call).
|
|
214
|
+
*/
|
|
105
215
|
async childFinished(runId) {
|
|
106
|
-
if (!this.d.onChildFinished)
|
|
107
|
-
return;
|
|
108
216
|
try {
|
|
109
|
-
await this.
|
|
217
|
+
await this.waits.childFinished(runId);
|
|
218
|
+
}
|
|
219
|
+
catch (err) {
|
|
220
|
+
this.log.error("cannot report finished sub-agent run to its parent", { runId, err });
|
|
221
|
+
}
|
|
222
|
+
// a sub-agent a person stopped stops its descendants too, also one it dispatched after the
|
|
223
|
+
// tree stop read the tree (agent map spec §6); any other end leaves them running
|
|
224
|
+
try {
|
|
225
|
+
await this.waits.stopDescendantsOfStopped(runId);
|
|
110
226
|
}
|
|
111
227
|
catch (err) {
|
|
112
|
-
this.
|
|
228
|
+
this.log.error("cannot stop the descendants of a stopped sub-agent", { runId, err });
|
|
113
229
|
}
|
|
114
230
|
}
|
|
115
231
|
/**
|
|
@@ -119,14 +235,14 @@ export class RunWorker {
|
|
|
119
235
|
async ensureAfterRun(conversationId, runId) {
|
|
120
236
|
for (let attempt = 0;; attempt++) {
|
|
121
237
|
try {
|
|
122
|
-
await this.
|
|
123
|
-
await this.
|
|
238
|
+
await this.hooks?.beforeEnsureRun?.(conversationId, attempt);
|
|
239
|
+
await this.queue.ensureRun(conversationId);
|
|
124
240
|
return;
|
|
125
241
|
}
|
|
126
242
|
catch (err) {
|
|
127
243
|
const delay = ENSURE_RETRY_DELAYS_MS[attempt];
|
|
128
244
|
if (delay === undefined) {
|
|
129
|
-
this.
|
|
245
|
+
this.log.error("ensureRun after run failed; giving up", {
|
|
130
246
|
conversationId,
|
|
131
247
|
runId,
|
|
132
248
|
attempts: attempt + 1,
|
|
@@ -134,7 +250,7 @@ export class RunWorker {
|
|
|
134
250
|
});
|
|
135
251
|
return;
|
|
136
252
|
}
|
|
137
|
-
this.
|
|
253
|
+
this.log.warn("ensureRun after run failed; retrying", {
|
|
138
254
|
conversationId,
|
|
139
255
|
runId,
|
|
140
256
|
attempt,
|
|
@@ -173,15 +289,15 @@ export class RunWorker {
|
|
|
173
289
|
async onJobFailed(data, err) {
|
|
174
290
|
const { runId, conversationId } = data;
|
|
175
291
|
const stalled = /stalled/i.test(err.message);
|
|
176
|
-
await this.
|
|
292
|
+
await this.lock.releaseFor(conversationId, runId);
|
|
177
293
|
// 运行已进入 waiting(暂停后任务才失败):它有自己的续跑路径(人工决定 / 超时任务),不标记失败。
|
|
178
|
-
const cur = await this.
|
|
294
|
+
const cur = await this.db
|
|
179
295
|
.selectFrom("runs")
|
|
180
296
|
.select("status")
|
|
181
297
|
.where("id", "=", runId)
|
|
182
298
|
.executeTakeFirst();
|
|
183
299
|
if (cur?.status === "waiting") {
|
|
184
|
-
this.
|
|
300
|
+
this.log.warn("run job failed after the run was suspended; leaving it waiting", { runId });
|
|
185
301
|
return;
|
|
186
302
|
}
|
|
187
303
|
await this.finish(conversationId, runId, "failed", null, {
|
|
@@ -214,25 +330,18 @@ export class RunWorker {
|
|
|
214
330
|
this.workers = [];
|
|
215
331
|
this.closing = true;
|
|
216
332
|
this.closingSignal.abort();
|
|
217
|
-
await Promise.all(workers.map((w) => w.pause(true).catch((err) => this.
|
|
333
|
+
await Promise.all(workers.map((w) => w.pause(true).catch((err) => this.log.warn("run worker pause failed", { err }))));
|
|
218
334
|
for (const a of this.active.values())
|
|
219
335
|
a.shutdown.abort();
|
|
220
336
|
const all = Promise.all([...this.active.values()].map((a) => a.done));
|
|
221
|
-
|
|
222
|
-
const finished = await Promise.race([
|
|
223
|
-
all.then(() => true),
|
|
224
|
-
new Promise((resolve) => {
|
|
225
|
-
timer = setTimeout(() => resolve(false), Math.max(0, budgetMs));
|
|
226
|
-
timer.unref();
|
|
227
|
-
}),
|
|
228
|
-
]);
|
|
229
|
-
clearTimeout(timer);
|
|
337
|
+
const finished = await waitWithin(all, budgetMs);
|
|
230
338
|
if (!finished) {
|
|
231
339
|
for (const [runId, a] of this.active) {
|
|
232
340
|
a.abandoned = true;
|
|
233
341
|
a.lease.abandon();
|
|
342
|
+
a.quota?.abandon();
|
|
234
343
|
a.stopTimers();
|
|
235
|
-
this.
|
|
344
|
+
this.log.warn("run did not reach a step boundary before shutdown; leaving it to another worker", {
|
|
236
345
|
runId,
|
|
237
346
|
});
|
|
238
347
|
}
|
|
@@ -241,26 +350,15 @@ export class RunWorker {
|
|
|
241
350
|
// 关闭期间完成 / 失败的任务登记的后续处理(ensureRun 等)要在调用方关闭运行队列之前做完,
|
|
242
351
|
// 否则投递半途被打断,待处理的消息无人处理。以剩余预算为限(至少留一点时间)。
|
|
243
352
|
if (this.followUps.size > 0) {
|
|
244
|
-
|
|
245
|
-
await Promise.race([
|
|
246
|
-
Promise.allSettled([...this.followUps]),
|
|
247
|
-
new Promise((resolve) => {
|
|
248
|
-
t = setTimeout(resolve, Math.max(FOLLOW_UP_MIN_WAIT_MS, deadline - Date.now()));
|
|
249
|
-
t.unref();
|
|
250
|
-
}),
|
|
251
|
-
]);
|
|
252
|
-
clearTimeout(t);
|
|
353
|
+
await waitWithin(Promise.allSettled([...this.followUps]), Math.max(FOLLOW_UP_MIN_WAIT_MS, deadline - Date.now()));
|
|
253
354
|
}
|
|
254
|
-
const conn = this.conn;
|
|
255
|
-
this.conn = undefined;
|
|
256
|
-
if (conn)
|
|
257
|
-
await conn.quit().catch(() => conn.disconnect());
|
|
258
355
|
}
|
|
356
|
+
/** One run job (the `@Processor`s of both run queues call it). */
|
|
259
357
|
async process(job, token) {
|
|
260
358
|
const { runId, conversationId } = job.data;
|
|
261
359
|
if (this.closing)
|
|
262
360
|
return requeue(job, token, 0);
|
|
263
|
-
const run = await this.
|
|
361
|
+
const run = await this.db
|
|
264
362
|
.selectFrom("runs")
|
|
265
363
|
.select([
|
|
266
364
|
"id",
|
|
@@ -270,6 +368,7 @@ export class RunWorker {
|
|
|
270
368
|
"trigger_seq",
|
|
271
369
|
"started_at",
|
|
272
370
|
"waited_ms",
|
|
371
|
+
"budget_run_id",
|
|
273
372
|
])
|
|
274
373
|
.where("id", "=", runId)
|
|
275
374
|
.executeTakeFirst();
|
|
@@ -285,22 +384,22 @@ export class RunWorker {
|
|
|
285
384
|
// 运行在等人处理(例如暂停后本任务被 stalled 机制重新投递):不执行,续跑由处理 / 超时发起的新任务负责。
|
|
286
385
|
if (run.status === "waiting")
|
|
287
386
|
return;
|
|
288
|
-
const conv = await this.
|
|
387
|
+
const conv = await this.db
|
|
289
388
|
.selectFrom("conversations")
|
|
290
|
-
.select(["org_id", "agent_id", "kind"])
|
|
389
|
+
.select(["org_id", "agent_id", "kind", "subagent_depth"])
|
|
291
390
|
.where("id", "=", conversationId)
|
|
292
391
|
.executeTakeFirst();
|
|
293
392
|
if (!conv)
|
|
294
393
|
return;
|
|
295
394
|
// 会话锁 TTL 与任务锁一致:持有者崩溃后,任务被判定 stalled 时会话锁也差不多同时过期。
|
|
296
|
-
const lease = await this.
|
|
395
|
+
const lease = await this.lock.acquire(conversationId, runId, this.hooks?.lockTtlMs ?? this.config.get().runtime.jobLockMs);
|
|
297
396
|
if (!lease)
|
|
298
397
|
return requeue(job, token, LOCK_BUSY_DELAY_MS);
|
|
299
398
|
// A sub-agent stopped while still queued (its parent's stop or wait timeout) ends here, before
|
|
300
399
|
// taking an org run slot: under a full quota it would otherwise wait for a slot only to be
|
|
301
400
|
// aborted, and its parent would stay waiting meanwhile (final review m7)
|
|
302
401
|
if (conv.kind === "subagent" && run.status === "queued") {
|
|
303
|
-
const stop = await this.
|
|
402
|
+
const stop = await this.abort.requested(runId);
|
|
304
403
|
if (stop !== null) {
|
|
305
404
|
try {
|
|
306
405
|
await this.finish(conversationId, runId, "aborted", null, {
|
|
@@ -315,7 +414,7 @@ export class RunWorker {
|
|
|
315
414
|
finally {
|
|
316
415
|
await lease
|
|
317
416
|
.release()
|
|
318
|
-
.catch((err) => this.
|
|
417
|
+
.catch((err) => this.log.warn("conversation lock release failed", { runId, err }));
|
|
319
418
|
}
|
|
320
419
|
await this.dropCheckpoints(runId);
|
|
321
420
|
await this.childFinished(runId);
|
|
@@ -345,30 +444,28 @@ export class RunWorker {
|
|
|
345
444
|
let entered = false;
|
|
346
445
|
let delayMs = null;
|
|
347
446
|
try {
|
|
348
|
-
const limit = await orgRunLimit(this.
|
|
349
|
-
|
|
447
|
+
const limit = await orgRunLimit(this.settings, this.config, conv.org_id);
|
|
448
|
+
const slot = await this.quota.enter(conv.org_id, runId, limit, ORG_QUOTA_LEASE_MS);
|
|
449
|
+
if (slot !== undefined)
|
|
450
|
+
state.quota = slot;
|
|
451
|
+
entered = slot !== undefined;
|
|
350
452
|
if (!entered) {
|
|
351
453
|
delayMs = QUOTA_FULL_DELAY_MS;
|
|
352
454
|
}
|
|
353
455
|
else {
|
|
354
456
|
// 运行开始执行(含续跑、stalled 后接手):通知旁路(渠道出站投递据此把输出投到 IM),失败不影响运行
|
|
355
|
-
|
|
356
|
-
this.d.onRunStart?.(conversationId);
|
|
357
|
-
}
|
|
358
|
-
catch (err) {
|
|
359
|
-
this.d.log.warn("onRunStart hook failed", { conversationId, err });
|
|
360
|
-
}
|
|
457
|
+
void this.events.emit("run.started", { conversationId, runId });
|
|
361
458
|
const r = await this.execute(run, { id: conversationId, ...conv }, state).catch(async (err) => {
|
|
362
459
|
if (state.abandoned)
|
|
363
460
|
return "abandoned";
|
|
364
461
|
if (state.leaseLost)
|
|
365
462
|
return "interrupted";
|
|
366
463
|
// 编排自身出错(如写事件失败):尽力把运行标记为失败,避免会话卡在 running。
|
|
367
|
-
this.
|
|
464
|
+
this.log.error("run orchestration failed", { conversationId, runId, err });
|
|
368
465
|
await this.finish(conversationId, runId, "failed", null, {
|
|
369
466
|
type: "run_failed",
|
|
370
467
|
payload: { error: { code: "run.internal", message: "The run failed unexpectedly" } },
|
|
371
|
-
}).catch((e) => this.
|
|
468
|
+
}).catch((e) => this.log.error("cannot mark run as failed", { runId, err: e }));
|
|
372
469
|
return "broken";
|
|
373
470
|
});
|
|
374
471
|
if (r === "interrupted")
|
|
@@ -378,16 +475,14 @@ export class RunWorker {
|
|
|
378
475
|
finally {
|
|
379
476
|
state.stopTimers();
|
|
380
477
|
if (!state.abandoned) {
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
.catch((err) => this.d.log.warn("org quota leave failed", { runId, err }));
|
|
385
|
-
}
|
|
478
|
+
// releasing the slot stops its renewal and leaves (a failure is logged by the lock service)
|
|
479
|
+
if (entered)
|
|
480
|
+
await state.quota?.release();
|
|
386
481
|
// 锁已丢失时不释放(已不属于本运行;RELEASE 虽比对 runId,这里也不再触碰)。
|
|
387
482
|
if (!state.leaseLost) {
|
|
388
483
|
await lease
|
|
389
484
|
.release()
|
|
390
|
-
.catch((err) => this.
|
|
485
|
+
.catch((err) => this.log.warn("conversation lock release failed", { runId, err }));
|
|
391
486
|
}
|
|
392
487
|
}
|
|
393
488
|
this.active.delete(runId);
|
|
@@ -400,7 +495,7 @@ export class RunWorker {
|
|
|
400
495
|
// 暂停:会话锁与配额已释放,checkpoint 保留;置 waiting 并投递超时任务。任务就此完成,不 ensureRun
|
|
401
496
|
// (等待期间的新消息在续跑后作为插话吸收)。
|
|
402
497
|
if (state.suspended) {
|
|
403
|
-
await this.
|
|
498
|
+
await this.waits.suspend(runId, conversationId, state.suspended.waitingFor, state.suspended.abort);
|
|
404
499
|
return;
|
|
405
500
|
}
|
|
406
501
|
// 运行已到达终态(broken 时已尽力标记失败):checkpoint 只用于续跑,删除。
|
|
@@ -414,51 +509,72 @@ export class RunWorker {
|
|
|
414
509
|
async execute(run, conv, state) {
|
|
415
510
|
const runId = run.id;
|
|
416
511
|
const conversationId = conv.id;
|
|
417
|
-
const runtime = this.
|
|
512
|
+
const runtime = this.config.get().runtime;
|
|
418
513
|
let agent;
|
|
419
514
|
// a chat run's saved agent version, under the conversation's model switch (UI refresh B); a
|
|
420
515
|
// sub-agent has none: it never takes a selection
|
|
421
516
|
let saved;
|
|
422
517
|
let maxSteps = runtime.maxSteps;
|
|
423
518
|
let parent;
|
|
519
|
+
/** A sub-agent's name in its run context: the roster name, or the forked skill's. */
|
|
520
|
+
let childName;
|
|
424
521
|
if (conv.kind === "subagent") {
|
|
425
522
|
// a sub-agent runs its effective definition frozen at dispatch, never agent_versions
|
|
426
523
|
// (spec §6.3), and works for the parent call that dispatched this run
|
|
427
|
-
const started = await this.
|
|
524
|
+
const started = await this.eventLog.findByIdem(conversationId, "subagent_started");
|
|
428
525
|
if (started?.type !== "subagent_started") {
|
|
429
526
|
throw new Error(`sub-agent conversation ${conversationId} has no subagent_started`);
|
|
430
527
|
}
|
|
431
528
|
// a follow-up runs with its task message's narrowing (final review I1): the frozen tools
|
|
432
529
|
// and org skills the current version still allows, recorded at its dispatch
|
|
433
|
-
const trigger = (await this.
|
|
434
|
-
agent = childRunDefinition(
|
|
530
|
+
const trigger = (await this.eventLog.readAfter(conversationId, Number(run.trigger_seq) - 1, 1))[0];
|
|
531
|
+
agent = childRunDefinition(await normalizeStoredDefinitionIn(this.db, conv.org_id, started.payload.definition), trigger?.type === "user_message" && trigger.seq === Number(run.trigger_seq)
|
|
435
532
|
? trigger.payload.dispatch?.narrowed
|
|
436
533
|
: undefined);
|
|
437
534
|
maxSteps = Math.min(started.payload.maxSteps, runtime.maxSteps);
|
|
438
|
-
|
|
535
|
+
childName = started.payload.template.invokedSkill?.name ?? started.payload.agentType;
|
|
536
|
+
const row = await dispatchOfChildRun(this.db, runId);
|
|
439
537
|
const otherAgent = started.payload.template.source === "agent";
|
|
538
|
+
const parentConversationId = row?.parentConversationId ?? started.payload.parent.conversationId;
|
|
539
|
+
// a sub-agent conversation is at depth 1 at least: one written before depths were recorded
|
|
540
|
+
// (default 0) was a child of a root
|
|
541
|
+
const depth = Math.max(conv.subagent_depth, 1) - 1;
|
|
542
|
+
const rootConversationId = depth === 0
|
|
543
|
+
? parentConversationId
|
|
544
|
+
: await rootConversationOf(this.db, parentConversationId);
|
|
545
|
+
// the tree's budget window of THIS run (agent map spec §6): its own `budget_run_id`, set when
|
|
546
|
+
// it was created (a dispatch, or a wake run from the root's current window), else its
|
|
547
|
+
// dispatch's; never derived from the parent run, which for a wake run is the first dispatch's
|
|
548
|
+
const budgetRunId = run.budget_run_id ?? row?.budgetRunId;
|
|
440
549
|
parent = row
|
|
441
550
|
? {
|
|
442
551
|
conversationId: row.parentConversationId,
|
|
443
552
|
runId: row.parentRunId,
|
|
444
553
|
callId: row.parentCallId,
|
|
554
|
+
depth,
|
|
555
|
+
rootConversationId,
|
|
445
556
|
otherAgent,
|
|
557
|
+
...(budgetRunId !== undefined && { budgetRunId }),
|
|
558
|
+
...(row.forSkill === true && { forSkill: true }),
|
|
446
559
|
}
|
|
447
560
|
: {
|
|
448
561
|
conversationId: started.payload.parent.conversationId,
|
|
449
562
|
runId: started.payload.parent.runId,
|
|
450
563
|
callId: started.payload.parent.callId,
|
|
564
|
+
depth,
|
|
565
|
+
rootConversationId,
|
|
451
566
|
otherAgent,
|
|
567
|
+
...(budgetRunId !== undefined && { budgetRunId }),
|
|
452
568
|
};
|
|
453
569
|
}
|
|
454
570
|
else {
|
|
455
|
-
const version = await this.
|
|
571
|
+
const version = await this.db
|
|
456
572
|
.selectFrom("agent_versions")
|
|
457
573
|
.select("definition")
|
|
458
574
|
.where("agent_id", "=", conv.agent_id)
|
|
459
575
|
.where("version", "=", run.agent_version)
|
|
460
576
|
.executeTakeFirstOrThrow();
|
|
461
|
-
saved =
|
|
577
|
+
saved = await normalizeStoredDefinitionIn(this.db, conv.org_id, version.definition);
|
|
462
578
|
agent = saved;
|
|
463
579
|
}
|
|
464
580
|
let startedAt = run.started_at;
|
|
@@ -466,66 +582,40 @@ export class RunWorker {
|
|
|
466
582
|
// run's `run_started`, read under the conversation lock when the run starts, so a replay
|
|
467
583
|
// (`selectionAt`) sees exactly what the run used.
|
|
468
584
|
// A sub-agent (no `saved`) runs its frozen definition as is.
|
|
469
|
-
const existingStart = await this.
|
|
585
|
+
const existingStart = await this.eventLog.findByIdem(conversationId, `run_started:${runId}`);
|
|
470
586
|
if (existingStart && saved !== undefined) {
|
|
471
|
-
agent = effectiveDefinition(saved, await readSelection(this.
|
|
587
|
+
agent = effectiveDefinition(saved, await readSelection(this.db, conversationId, existingStart.seq));
|
|
472
588
|
}
|
|
473
589
|
if (run.status === "queued" || startedAt === null) {
|
|
474
590
|
if (!existingStart) {
|
|
475
591
|
if (saved !== undefined)
|
|
476
|
-
await this.fallBackIfUnavailable(conversationId, runId, saved);
|
|
477
|
-
const
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
.select("id")
|
|
481
|
-
.where("id", "=", conversationId)
|
|
482
|
-
.forUpdate()
|
|
483
|
-
.execute();
|
|
484
|
-
if (saved !== undefined) {
|
|
485
|
-
agent = effectiveDefinition(saved, await readSelection(t, conversationId));
|
|
486
|
-
}
|
|
487
|
-
const [ev] = await this.d.eventLog.append(conversationId, [
|
|
488
|
-
{
|
|
489
|
-
type: "run_started",
|
|
490
|
-
runId,
|
|
491
|
-
idemKey: `run_started:${runId}`,
|
|
492
|
-
payload: {
|
|
493
|
-
agentVersion: run.agent_version,
|
|
494
|
-
model: agent.model,
|
|
495
|
-
triggerAccountId: run.trigger_account_id,
|
|
496
|
-
},
|
|
497
|
-
},
|
|
498
|
-
], t);
|
|
499
|
-
return ev?.seq;
|
|
500
|
-
});
|
|
592
|
+
await this.fallBackIfUnavailable(conv.org_id, conversationId, runId, saved);
|
|
593
|
+
const started = await this.appendRunStarted(conversationId, run, agent, saved);
|
|
594
|
+
agent = started.agent;
|
|
595
|
+
const toSeq = started.toSeq;
|
|
501
596
|
if (toSeq !== undefined)
|
|
502
|
-
await this.
|
|
597
|
+
await this.eventLog.notify(conversationId, toSeq);
|
|
503
598
|
}
|
|
504
599
|
// 技能目录快照(Ruling M17):在置为 running 之前写,崩溃重试时仍走这里(幂等键去重)
|
|
505
600
|
try {
|
|
506
|
-
await
|
|
507
|
-
db: this.d.db,
|
|
508
|
-
eventLog: this.d.eventLog,
|
|
509
|
-
log: this.d.log,
|
|
510
|
-
...(this.d.storage !== undefined && { storage: this.d.storage }),
|
|
511
|
-
}, {
|
|
601
|
+
await this.skillsCatalog.record({
|
|
512
602
|
orgId: conv.org_id,
|
|
513
603
|
agentId: conv.agent_id,
|
|
514
604
|
conversationId,
|
|
515
605
|
runId,
|
|
516
606
|
agent,
|
|
517
|
-
});
|
|
607
|
+
}, { log: this.log });
|
|
518
608
|
}
|
|
519
609
|
catch (e) {
|
|
520
610
|
// Pinned skill bodies could not be read (Decision 9), or the pinned skills kept changing
|
|
521
611
|
// while they were read (`conflict`): fail before any model request. A transient failure
|
|
522
612
|
// or a conflict is fixed by sending again; a permanent one names the skill for the owner
|
|
523
|
-
// (`
|
|
613
|
+
// (`SkillsCatalogService.record` already logged it at error). Other errors take the generic path.
|
|
524
614
|
if (!(e instanceof ApiError) ||
|
|
525
615
|
(e.code !== "storage.unavailable" && e.code !== "conflict")) {
|
|
526
616
|
throw e;
|
|
527
617
|
}
|
|
528
|
-
this.
|
|
618
|
+
this.log.warn("skills catalog not recorded at run start", {
|
|
529
619
|
conversationId,
|
|
530
620
|
runId,
|
|
531
621
|
code: e.code,
|
|
@@ -538,7 +628,23 @@ export class RunWorker {
|
|
|
538
628
|
});
|
|
539
629
|
return "finished";
|
|
540
630
|
}
|
|
541
|
-
|
|
631
|
+
// run context (spec §5): after the catalog, before the run is running, so before any
|
|
632
|
+
// compaction and model call; a retried run start finds its event or no change
|
|
633
|
+
await this.runContext.record({
|
|
634
|
+
orgId: conv.org_id,
|
|
635
|
+
conversationId,
|
|
636
|
+
runId,
|
|
637
|
+
triggerSeq: Number(run.trigger_seq),
|
|
638
|
+
agent,
|
|
639
|
+
...(parent !== undefined && {
|
|
640
|
+
subagent: {
|
|
641
|
+
parentConversationId: parent.conversationId,
|
|
642
|
+
parentRunId: parent.runId,
|
|
643
|
+
name: childName ?? agent.name,
|
|
644
|
+
},
|
|
645
|
+
}),
|
|
646
|
+
});
|
|
647
|
+
const updated = await this.db
|
|
542
648
|
.updateTable("runs")
|
|
543
649
|
.set({ status: "running", started_at: sql `COALESCE(started_at, now())` })
|
|
544
650
|
.where("id", "=", runId)
|
|
@@ -556,44 +662,34 @@ export class RunWorker {
|
|
|
556
662
|
deadlineHit = true;
|
|
557
663
|
ac.abort();
|
|
558
664
|
}, Math.max(0, deadline - Date.now()));
|
|
559
|
-
const quotaTimer = setInterval(() => {
|
|
560
|
-
this.d.quota
|
|
561
|
-
.renew(conv.org_id, runId, ORG_QUOTA_LEASE_MS)
|
|
562
|
-
.then((ok) => {
|
|
563
|
-
if (!ok)
|
|
564
|
-
this.d.log.warn("org quota lease lost", { runId, orgId: conv.org_id });
|
|
565
|
-
})
|
|
566
|
-
.catch((err) => this.d.log.warn("org quota renew failed", { runId, err }));
|
|
567
|
-
}, ORG_QUOTA_LEASE_MS / 3);
|
|
568
|
-
quotaTimer.unref();
|
|
569
665
|
state.stopTimers = () => {
|
|
570
666
|
clearTimeout(deadlineTimer);
|
|
571
|
-
clearInterval(quotaTimer);
|
|
572
667
|
};
|
|
573
668
|
let unwatch;
|
|
574
669
|
try {
|
|
575
|
-
unwatch = await this.
|
|
670
|
+
unwatch = await this.abort.watch(runId, (by, detail) => {
|
|
576
671
|
abortedBy = by;
|
|
577
672
|
abortDetail = detail;
|
|
578
673
|
ac.abort();
|
|
579
674
|
});
|
|
580
675
|
// 取得会话锁之后再读 consumed_seq(锁内不会有别的运行推进它)。
|
|
581
|
-
const { consumed_seq } = await this.
|
|
676
|
+
const { consumed_seq } = await this.db
|
|
582
677
|
.selectFrom("conversations")
|
|
583
678
|
.select("consumed_seq")
|
|
584
679
|
.where("id", "=", conversationId)
|
|
585
680
|
.executeTakeFirstOrThrow();
|
|
586
681
|
const startConsumed = Number(consumed_seq);
|
|
587
682
|
let absorbed = startConsumed;
|
|
588
|
-
const
|
|
683
|
+
const pendingAbsorbable = async (afterSeq) => {
|
|
589
684
|
// loop 声明已吸收到 afterSeq(续跑时来自 checkpoint,可能包含之前进程吸收的消息)。
|
|
590
685
|
absorbed = Math.max(absorbed, afterSeq);
|
|
591
686
|
const out = [];
|
|
592
687
|
let after = Math.max(afterSeq, startConsumed);
|
|
593
688
|
for (;;) {
|
|
594
|
-
const page = await this.
|
|
689
|
+
const page = await this.eventLog.readAfter(conversationId, after, READ_PAGE);
|
|
690
|
+
// messages and finished background tasks (spec 2026-11-05-background-bash-design §2.4)
|
|
595
691
|
for (const e of page)
|
|
596
|
-
if (e
|
|
692
|
+
if (isAbsorbable(e))
|
|
597
693
|
out.push(e);
|
|
598
694
|
const last = page.at(-1);
|
|
599
695
|
if (page.length < READ_PAGE || !last)
|
|
@@ -609,7 +705,7 @@ export class RunWorker {
|
|
|
609
705
|
};
|
|
610
706
|
let outcome;
|
|
611
707
|
try {
|
|
612
|
-
outcome = await this.
|
|
708
|
+
outcome = await this.loop.run({
|
|
613
709
|
orgId: conv.org_id,
|
|
614
710
|
conversationId,
|
|
615
711
|
runId,
|
|
@@ -619,8 +715,8 @@ export class RunWorker {
|
|
|
619
715
|
agentVersion: run.agent_version,
|
|
620
716
|
signal: ac.signal,
|
|
621
717
|
shutdown: state.shutdown.signal,
|
|
622
|
-
sink: this.
|
|
623
|
-
|
|
718
|
+
sink: this.sinkFor(conversationId),
|
|
719
|
+
pendingAbsorbable,
|
|
624
720
|
limits: { maxSteps, deadline },
|
|
625
721
|
// a sub-agent's conversation fires hooks like a chat, with `parent` set (spec §11)
|
|
626
722
|
conversationKind: conv.kind === "eval" ? "eval" : conv.kind === "subagent" ? "subagent" : "chat",
|
|
@@ -634,7 +730,7 @@ export class RunWorker {
|
|
|
634
730
|
return "interrupted";
|
|
635
731
|
const err = e instanceof RunError ? e : new RunError("run.internal", "The run failed unexpectedly");
|
|
636
732
|
if (!(e instanceof RunError)) {
|
|
637
|
-
this.
|
|
733
|
+
this.log.error("agent loop threw", { conversationId, runId, err: e });
|
|
638
734
|
}
|
|
639
735
|
// 失败也推进 consumed_seq 到已吸收的位置:否则结束时的 ensureRun 会对同一条消息无限重试;
|
|
640
736
|
// 用户看到 run_failed 后可以重发。
|
|
@@ -644,6 +740,10 @@ export class RunWorker {
|
|
|
644
740
|
});
|
|
645
741
|
return "finished";
|
|
646
742
|
}
|
|
743
|
+
finally {
|
|
744
|
+
// the execution here ended: what this process held of the run's drafts goes
|
|
745
|
+
this.drafts.release(runId);
|
|
746
|
+
}
|
|
647
747
|
if (state.abandoned)
|
|
648
748
|
return "abandoned";
|
|
649
749
|
// 锁在运行中丢失:无论 loop 返回什么都不写终态,任务回到队列由持锁者续跑。
|
|
@@ -701,32 +801,26 @@ export class RunWorker {
|
|
|
701
801
|
}
|
|
702
802
|
finally {
|
|
703
803
|
state.stopTimers();
|
|
704
|
-
await unwatch?.().catch((err) => this.
|
|
804
|
+
await unwatch?.().catch((err) => this.log.warn("abort unwatch failed", { runId, err }));
|
|
705
805
|
}
|
|
706
806
|
}
|
|
707
807
|
completed(conversationId) {
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
}
|
|
711
|
-
catch (err) {
|
|
712
|
-
this.d.log.warn("onRunCompleted hook failed", { conversationId, err });
|
|
713
|
-
}
|
|
808
|
+
// a completed run enqueues the conversation's title job (never throws)
|
|
809
|
+
void this.titles.maybeEnqueue(conversationId);
|
|
714
810
|
}
|
|
715
811
|
/**
|
|
716
812
|
* When the conversation was switched to a model that no longer resolves (provider disabled,
|
|
717
813
|
* model removed), writes `model_switched { model: null, effort: null, reason: "unavailable" }`
|
|
718
814
|
* for this run (idempotent) and clears the cached selection: the run and the next ones use the
|
|
719
815
|
* agent's model. A provider that only failed to list its models is not "gone" (the run's ladder
|
|
720
|
-
* handles it).
|
|
816
|
+
* handles it). Resolved for the conversation's org (its effective provider config).
|
|
721
817
|
*/
|
|
722
|
-
async fallBackIfUnavailable(conversationId, runId, agent) {
|
|
723
|
-
|
|
724
|
-
return;
|
|
725
|
-
const sel = await readSelection(this.d.db, conversationId);
|
|
818
|
+
async fallBackIfUnavailable(orgId, conversationId, runId, agent) {
|
|
819
|
+
const sel = await readSelection(this.db, conversationId);
|
|
726
820
|
if (sel.model === null || sameModel(sel.model, agent.model))
|
|
727
821
|
return;
|
|
728
822
|
try {
|
|
729
|
-
await this.
|
|
823
|
+
await this.models.resolve(orgId, sel.model);
|
|
730
824
|
return;
|
|
731
825
|
}
|
|
732
826
|
catch (e) {
|
|
@@ -735,71 +829,153 @@ export class RunWorker {
|
|
|
735
829
|
if (!(e instanceof ApiError && e.code === "agent.model_unavailable"))
|
|
736
830
|
throw e;
|
|
737
831
|
}
|
|
738
|
-
this.
|
|
832
|
+
this.log.warn("switched-to model unavailable; falling back to the agent's model", {
|
|
739
833
|
conversationId,
|
|
740
834
|
runId,
|
|
741
835
|
model: sel.model,
|
|
742
836
|
});
|
|
743
|
-
const ev = await this.
|
|
744
|
-
// re-check under the row lock: a person who switched again since the read above wins
|
|
745
|
-
await t
|
|
746
|
-
.selectFrom("conversations")
|
|
747
|
-
.select("id")
|
|
748
|
-
.where("id", "=", conversationId)
|
|
749
|
-
.forUpdate()
|
|
750
|
-
.executeTakeFirst();
|
|
751
|
-
if (!sameSelection(await readSelection(t, conversationId), sel))
|
|
752
|
-
return null;
|
|
753
|
-
const [written] = await this.d.eventLog.append(conversationId, [
|
|
754
|
-
{
|
|
755
|
-
type: "model_switched",
|
|
756
|
-
runId,
|
|
757
|
-
idemKey: `model_fallback:${runId}`,
|
|
758
|
-
payload: { model: null, effort: null, byAccountId: null, reason: "unavailable" },
|
|
759
|
-
},
|
|
760
|
-
], t);
|
|
761
|
-
await t
|
|
762
|
-
.updateTable("conversations")
|
|
763
|
-
.set({ selection: JSON.stringify(NO_SELECTION) })
|
|
764
|
-
.where("id", "=", conversationId)
|
|
765
|
-
.execute();
|
|
766
|
-
return written ?? null;
|
|
767
|
-
});
|
|
837
|
+
const ev = await this.fallBackIn(conversationId, runId, sel);
|
|
768
838
|
if (ev === null)
|
|
769
839
|
return;
|
|
770
|
-
await this.
|
|
771
|
-
await this.
|
|
840
|
+
await this.eventLog.notify(conversationId, ev.seq);
|
|
841
|
+
await this.eventLog.publishChanged(conversationId, "selection");
|
|
842
|
+
}
|
|
843
|
+
/**
|
|
844
|
+
* `run_started` under the conversation row lock, with the model / effort switch in effect then
|
|
845
|
+
* (a chat run's `saved` version under the conversation's selection): what the run uses.
|
|
846
|
+
*/
|
|
847
|
+
async appendRunStarted(conversationId, run,
|
|
848
|
+
/** The definition so far (a sub-agent's frozen one is final). */
|
|
849
|
+
current, saved) {
|
|
850
|
+
const t = this.db;
|
|
851
|
+
await t
|
|
852
|
+
.selectFrom("conversations")
|
|
853
|
+
.select("id")
|
|
854
|
+
.where("id", "=", conversationId)
|
|
855
|
+
.forUpdate()
|
|
856
|
+
.execute();
|
|
857
|
+
const agent = saved !== undefined
|
|
858
|
+
? effectiveDefinition(saved, await readSelection(t, conversationId))
|
|
859
|
+
: current;
|
|
860
|
+
// a wake run's boundary is a finished background task (background Bash §3) or a sub-agent's
|
|
861
|
+
// delivery (agent map spec §5.3), not a message
|
|
862
|
+
const boundary = await t
|
|
863
|
+
.selectFrom("conversation_events")
|
|
864
|
+
.select("type")
|
|
865
|
+
.where("conversation_id", "=", conversationId)
|
|
866
|
+
.where("seq", "=", run.trigger_seq)
|
|
867
|
+
.executeTakeFirst();
|
|
868
|
+
const [ev] = await this.eventLog.appendIn(conversationId, [
|
|
869
|
+
{
|
|
870
|
+
type: "run_started",
|
|
871
|
+
runId: run.id,
|
|
872
|
+
idemKey: `run_started:${run.id}`,
|
|
873
|
+
payload: {
|
|
874
|
+
agentVersion: run.agent_version,
|
|
875
|
+
model: agent.model,
|
|
876
|
+
triggerAccountId: run.trigger_account_id,
|
|
877
|
+
...(boundary?.type === "background_task_finished" && {
|
|
878
|
+
trigger: "background_task",
|
|
879
|
+
triggerSeq: Number(run.trigger_seq),
|
|
880
|
+
}),
|
|
881
|
+
...(boundary?.type === "subagent_delivery" && {
|
|
882
|
+
trigger: "subagent",
|
|
883
|
+
triggerSeq: Number(run.trigger_seq),
|
|
884
|
+
}),
|
|
885
|
+
},
|
|
886
|
+
},
|
|
887
|
+
]);
|
|
888
|
+
return { toSeq: ev?.seq, agent };
|
|
889
|
+
}
|
|
890
|
+
/** {@link fallBackIfUnavailable}'s write: null when the person switched again meanwhile. */
|
|
891
|
+
async fallBackIn(conversationId, runId, sel) {
|
|
892
|
+
const t = this.db;
|
|
893
|
+
// re-check under the row lock: a person who switched again since the read above wins
|
|
894
|
+
await t
|
|
895
|
+
.selectFrom("conversations")
|
|
896
|
+
.select("id")
|
|
897
|
+
.where("id", "=", conversationId)
|
|
898
|
+
.forUpdate()
|
|
899
|
+
.executeTakeFirst();
|
|
900
|
+
if (!sameSelection(await readSelection(t, conversationId), sel))
|
|
901
|
+
return null;
|
|
902
|
+
const [written] = await this.eventLog.appendIn(conversationId, [
|
|
903
|
+
{
|
|
904
|
+
type: "model_switched",
|
|
905
|
+
runId,
|
|
906
|
+
idemKey: `model_fallback:${runId}`,
|
|
907
|
+
payload: { model: null, effort: null, byAccountId: null, reason: "unavailable" },
|
|
908
|
+
},
|
|
909
|
+
]);
|
|
910
|
+
await t
|
|
911
|
+
.updateTable("conversations")
|
|
912
|
+
.set({ selection: JSON.stringify(NO_SELECTION) })
|
|
913
|
+
.where("id", "=", conversationId)
|
|
914
|
+
.execute();
|
|
915
|
+
return written ?? null;
|
|
772
916
|
}
|
|
773
917
|
/** 删除已结束运行的 checkpoint thread(失败只记日志)。 */
|
|
774
918
|
async dropCheckpoints(runId) {
|
|
775
|
-
await this.
|
|
776
|
-
|
|
777
|
-
.catch((err) => this.
|
|
919
|
+
await this.checkpoints
|
|
920
|
+
.deleteThread(runId)
|
|
921
|
+
.catch((err) => this.log.warn("checkpoint delete failed", { runId, err }));
|
|
778
922
|
}
|
|
779
923
|
/**
|
|
780
924
|
* 写终态(见 `finishRun`:运行仍未结束才写,同一事务内推进 `consumed_seq` 并更新 `runs.status`),
|
|
781
925
|
* 提交后发布会话通知,然后调用测试钩子。返回终态事件 seq;运行已是终态 → null。
|
|
782
926
|
*/
|
|
783
927
|
async finish(conversationId, runId, status, consumed, event, hook = true, floorToTrigger = true) {
|
|
784
|
-
const stopOpen = this.d.stopOpenCalls;
|
|
785
928
|
let fire = () => { };
|
|
786
|
-
const toSeq = await
|
|
929
|
+
const toSeq = await this.finisher.finish({
|
|
787
930
|
conversationId,
|
|
788
931
|
runId,
|
|
789
932
|
status,
|
|
790
933
|
consumed,
|
|
791
934
|
event,
|
|
792
935
|
floorToTrigger,
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
},
|
|
797
|
-
}),
|
|
936
|
+
beforeTerminal: async () => {
|
|
937
|
+
fire = (await this.pipeline.stopOpenAgentCalls(runId)).fire;
|
|
938
|
+
},
|
|
798
939
|
});
|
|
799
940
|
if (toSeq !== null)
|
|
800
941
|
fire();
|
|
801
942
|
if (hook)
|
|
802
|
-
await this.
|
|
943
|
+
await this.hooks?.beforeRelease?.(runId, conversationId);
|
|
803
944
|
return toSeq;
|
|
804
945
|
}
|
|
805
|
-
}
|
|
946
|
+
};
|
|
947
|
+
__decorate([
|
|
948
|
+
Transactional({ propagation: "requires_new" })
|
|
949
|
+
], RunWorker.prototype, "appendRunStarted", null);
|
|
950
|
+
__decorate([
|
|
951
|
+
Transactional({ propagation: "requires_new" })
|
|
952
|
+
], RunWorker.prototype, "fallBackIn", null);
|
|
953
|
+
RunWorker = __decorate([
|
|
954
|
+
Injectable(),
|
|
955
|
+
__param(0, Inject(KernelDb)),
|
|
956
|
+
__param(1, Inject(EventLog)),
|
|
957
|
+
__param(2, Inject(ConversationLock)),
|
|
958
|
+
__param(3, Inject(RUN_QUOTA)),
|
|
959
|
+
__param(4, Inject(RunAbort)),
|
|
960
|
+
__param(5, Inject(RunQueue)),
|
|
961
|
+
__param(6, Inject(SettingsService)),
|
|
962
|
+
__param(7, Inject(AgentLoops)),
|
|
963
|
+
__param(8, Inject(RunSteps)),
|
|
964
|
+
__param(9, Inject(KernelConfigService)),
|
|
965
|
+
__param(10, Inject(KERNEL_LOGGER)),
|
|
966
|
+
__param(11, Inject(KERNEL_BUS)),
|
|
967
|
+
__param(12, Inject(KyselyCheckpointSaver)),
|
|
968
|
+
__param(13, Inject(Waits)),
|
|
969
|
+
__param(14, Inject(KernelEvents)),
|
|
970
|
+
__param(15, Inject(TitleQueue)),
|
|
971
|
+
__param(16, Inject(ProviderRegistry)),
|
|
972
|
+
__param(17, Inject(SkillsCatalogService)),
|
|
973
|
+
__param(18, Inject(RunContextService)),
|
|
974
|
+
__param(19, Inject(ToolPipeline)),
|
|
975
|
+
__param(20, Inject(RunFinish)),
|
|
976
|
+
__param(21, Inject(TransactionHost)),
|
|
977
|
+
__param(22, Inject(RunDrafts)),
|
|
978
|
+
__param(23, Optional()),
|
|
979
|
+
__param(23, Inject(RUN_HOOKS))
|
|
980
|
+
], RunWorker);
|
|
981
|
+
export { RunWorker };
|