@capybara-hq/kernel 0.1.0-rc.1 → 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 +85 -5
- package/dist/admin/admin.controller.d.ts +52 -71
- package/dist/admin/admin.controller.js +117 -63
- package/dist/admin/admin.module.d.ts +3 -0
- package/dist/admin/admin.module.js +22 -0
- package/dist/admin/admin.schemas.d.ts +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 -202
- package/dist/channels/phrases.d.ts +33 -2
- package/dist/channels/phrases.js +29 -1
- package/dist/channels/supervisor.d.ts +88 -46
- package/dist/channels/supervisor.js +230 -132
- package/dist/channels/threads.d.ts +34 -8
- package/dist/channels/threads.js +79 -13
- package/dist/channels/webhook.d.ts +20 -14
- package/dist/channels/webhook.js +51 -20
- package/dist/config/docs.js +5 -1
- package/dist/config/load.d.ts +3 -2
- package/dist/config/load.js +3 -2
- package/dist/config/nacos-source.js +11 -2
- package/dist/config/schema.d.ts +36 -2
- package/dist/config/schema.js +226 -25
- package/dist/conversations/access.d.ts +31 -0
- package/dist/conversations/access.js +110 -0
- package/dist/conversations/agent-tree.d.ts +46 -0
- package/dist/conversations/agent-tree.js +92 -0
- package/dist/conversations/artifacts.d.ts +11 -11
- package/dist/conversations/artifacts.js +36 -10
- package/dist/conversations/attachments.controller.d.ts +1 -1
- package/dist/conversations/attachments.controller.js +8 -6
- package/dist/conversations/attachments.module.d.ts +7 -0
- package/dist/conversations/attachments.module.js +25 -0
- package/dist/conversations/attachments.service.d.ts +60 -22
- package/dist/conversations/attachments.service.js +249 -51
- package/dist/conversations/conversations.controller.d.ts +86 -50
- package/dist/conversations/conversations.controller.js +184 -103
- package/dist/conversations/conversations.module.d.ts +8 -0
- package/dist/conversations/conversations.module.js +72 -0
- package/dist/conversations/conversations.schemas.d.ts +52 -0
- package/dist/conversations/conversations.schemas.js +79 -0
- package/dist/conversations/conversations.service.d.ts +166 -49
- package/dist/conversations/conversations.service.js +383 -179
- package/dist/conversations/environment-status.d.ts +24 -0
- package/dist/conversations/environment-status.js +71 -0
- package/dist/conversations/event-log.d.ts +64 -27
- package/dist/conversations/event-log.js +167 -31
- package/dist/conversations/events.d.ts +252 -9
- package/dist/conversations/events.js +243 -32
- package/dist/conversations/files.d.ts +10 -10
- package/dist/conversations/files.js +37 -11
- package/dist/conversations/idem-keys.d.ts +5 -0
- package/dist/conversations/idem-keys.js +5 -0
- package/dist/conversations/job-ids.d.ts +6 -0
- package/dist/conversations/job-ids.js +6 -0
- package/dist/conversations/message-context.d.ts +79 -0
- package/dist/conversations/message-context.js +145 -0
- package/dist/conversations/outputs-read.d.ts +11 -11
- package/dist/conversations/outputs-read.js +31 -7
- package/dist/conversations/queue.d.ts +53 -58
- package/dist/conversations/queue.js +37 -293
- package/dist/conversations/queue.service.d.ts +60 -0
- package/dist/conversations/queue.service.js +350 -0
- package/dist/conversations/titles.d.ts +83 -27
- package/dist/conversations/titles.js +195 -71
- package/dist/conversations/tree.d.ts +17 -0
- package/dist/conversations/tree.js +42 -0
- package/dist/ctx/bus.js +9 -3
- package/dist/ctx/create-ctx.d.ts +26 -1
- package/dist/ctx/create-ctx.js +45 -16
- package/dist/ctx/lock.d.ts +7 -3
- package/dist/ctx/lock.js +9 -20
- package/dist/ctx/secrets.d.ts +10 -2
- package/dist/ctx/secrets.js +7 -3
- package/dist/db/kernel-schema.d.ts +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 +135 -2
- package/dist/errors.js +135 -2
- package/dist/evals/budget.d.ts +42 -21
- package/dist/evals/budget.js +114 -62
- package/dist/evals/evals.module.d.ts +31 -0
- package/dist/evals/evals.module.js +114 -0
- package/dist/evals/evals.schemas.d.ts +110 -0
- package/dist/evals/evals.schemas.js +107 -0
- package/dist/evals/jobs.d.ts +20 -0
- package/dist/evals/jobs.js +45 -0
- package/dist/evals/reconstruct.d.ts +18 -9
- package/dist/evals/reconstruct.js +36 -10
- package/dist/evals/recorded-tools.d.ts +37 -1
- package/dist/evals/recorded-tools.js +120 -10
- package/dist/evals/run-replay.d.ts +75 -10
- package/dist/evals/run-replay.js +218 -94
- package/dist/evals/runs.controller.d.ts +3 -58
- package/dist/evals/runs.controller.js +18 -50
- package/dist/evals/runs.service.d.ts +31 -52
- package/dist/evals/runs.service.js +281 -255
- package/dist/evals/sets.controller.d.ts +3 -29
- package/dist/evals/sets.controller.js +18 -39
- package/dist/evals/sets.service.d.ts +29 -13
- package/dist/evals/sets.service.js +262 -202
- package/dist/evals/snapshot.d.ts +5 -4
- package/dist/evals/snapshot.js +17 -4
- package/dist/evals/step-replay.d.ts +6 -8
- package/dist/evals/step-replay.js +17 -10
- package/dist/evals/trajectory.controller.d.ts +1 -1
- package/dist/evals/trajectory.controller.js +11 -7
- package/dist/evals/trajectory.d.ts +2 -2
- package/dist/evals/trajectory.js +1 -1
- package/dist/evals/trajectory.service.d.ts +13 -7
- package/dist/evals/trajectory.service.js +56 -21
- package/dist/evals/worker.d.ts +48 -31
- package/dist/evals/worker.js +229 -124
- package/dist/extensions/admin-ops.d.ts +133 -41
- package/dist/extensions/admin-ops.js +378 -172
- package/dist/extensions/admin-view.d.ts +82 -32
- package/dist/extensions/admin-view.js +284 -71
- package/dist/extensions/approvals.d.ts +24 -10
- package/dist/extensions/approvals.js +73 -46
- package/dist/extensions/blobs.d.ts +27 -10
- package/dist/extensions/blobs.js +112 -45
- package/dist/extensions/bootstrap.d.ts +99 -36
- package/dist/extensions/bootstrap.js +290 -134
- package/dist/extensions/cli.d.ts +32 -10
- package/dist/extensions/cli.js +52 -98
- package/dist/extensions/config-hash.d.ts +10 -0
- package/dist/extensions/config-hash.js +38 -0
- package/dist/extensions/config-issues.d.ts +19 -0
- package/dist/extensions/config-issues.js +48 -0
- package/dist/extensions/config-json-schema.d.ts +43 -7
- package/dist/extensions/config-json-schema.js +124 -58
- package/dist/extensions/deployment-config-store.d.ts +55 -0
- package/dist/extensions/deployment-config-store.js +133 -0
- package/dist/extensions/deployment-config.d.ts +146 -70
- package/dist/extensions/deployment-config.js +439 -246
- package/dist/extensions/display-name.d.ts +22 -0
- package/dist/extensions/display-name.js +77 -0
- package/dist/extensions/effective-config.d.ts +127 -0
- package/dist/extensions/effective-config.js +368 -0
- package/dist/extensions/enabled.d.ts +5 -5
- package/dist/extensions/extensions.module.d.ts +8 -0
- package/dist/extensions/extensions.module.js +96 -0
- package/dist/extensions/hooks.d.ts +40 -6
- package/dist/extensions/hooks.js +83 -17
- package/dist/extensions/host.d.ts +161 -80
- package/dist/extensions/host.js +505 -213
- package/dist/extensions/installs.d.ts +73 -19
- package/dist/extensions/installs.js +174 -37
- package/dist/extensions/job-ids.d.ts +6 -0
- package/dist/extensions/job-ids.js +6 -0
- package/dist/extensions/lifecycle-topics.d.ts +18 -0
- package/dist/extensions/lifecycle-topics.js +18 -0
- package/dist/extensions/lifecycle.d.ts +35 -47
- package/dist/extensions/lifecycle.js +103 -39
- package/dist/extensions/locks.d.ts +45 -0
- package/dist/extensions/locks.js +112 -0
- package/dist/extensions/migrate-lock.d.ts +3 -4
- package/dist/extensions/org-config.d.ts +141 -49
- package/dist/extensions/org-config.js +471 -243
- package/dist/extensions/org-levels.d.ts +37 -0
- package/dist/extensions/org-levels.js +71 -0
- package/dist/extensions/org-overrides.d.ts +151 -0
- package/dist/extensions/org-overrides.js +524 -0
- package/dist/extensions/package.d.ts +14 -1
- package/dist/extensions/package.js +51 -2
- package/dist/extensions/permission-view.d.ts +59 -6
- package/dist/extensions/permission-view.js +7 -5
- package/dist/extensions/plugin-guides.d.ts +129 -0
- package/dist/extensions/plugin-guides.js +283 -0
- package/dist/extensions/plugin-icons.d.ts +54 -0
- package/dist/extensions/plugin-icons.js +125 -0
- package/dist/extensions/plugin-items.d.ts +21 -0
- package/dist/extensions/plugin-items.js +42 -0
- package/dist/extensions/point-defaults.controller.d.ts +28 -0
- package/dist/extensions/point-defaults.controller.js +69 -0
- package/dist/extensions/point-defaults.d.ts +73 -0
- package/dist/extensions/point-defaults.js +236 -0
- package/dist/extensions/point-defaults.schemas.d.ts +9 -0
- package/dist/extensions/point-defaults.schemas.js +14 -0
- package/dist/extensions/registry.d.ts +50 -2
- package/dist/extensions/registry.js +91 -4
- package/dist/extensions/resolve.d.ts +51 -1
- package/dist/extensions/resolve.js +85 -3
- package/dist/extensions/single-provider.d.ts +92 -0
- package/dist/extensions/single-provider.js +180 -0
- package/dist/extensions/sources.d.ts +19 -10
- package/dist/extensions/sources.js +34 -13
- package/dist/extensions/state.module.d.ts +9 -0
- package/dist/extensions/state.module.js +38 -0
- package/dist/extensions/unavailable.d.ts +50 -0
- package/dist/extensions/unavailable.js +115 -0
- package/dist/files/files.module.d.ts +3 -0
- package/dist/files/files.module.js +22 -0
- package/dist/files/previewers.controller.d.ts +7 -2
- package/dist/files/previewers.controller.js +19 -12
- package/dist/files/previewers.d.ts +21 -19
- package/dist/files/previewers.js +114 -38
- package/dist/files/previewers.schemas.d.ts +10 -0
- package/dist/files/previewers.schemas.js +9 -0
- package/dist/http/adapter.d.ts +3 -0
- package/dist/http/adapter.js +25 -0
- package/dist/http/api.module.d.ts +3 -110
- package/dist/http/api.module.js +86 -358
- package/dist/http/app.d.ts +22 -17
- package/dist/http/app.js +46 -65
- package/dist/http/error-filter.module.d.ts +5 -0
- package/dist/http/error-filter.module.js +18 -0
- package/dist/http/error.filter.js +2 -2
- package/dist/http/{gateway.module.d.ts → gateway-routes.d.ts} +7 -3
- package/dist/http/gateway-routes.js +16 -0
- package/dist/http/nest-logger.d.ts +6 -5
- package/dist/http/nest-logger.js +24 -10
- package/dist/http/plugin-dispatch.d.ts +4 -1
- package/dist/http/plugin-dispatch.js +14 -2
- package/dist/identity/accounts.d.ts +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 +22 -13
- package/dist/index.js +16 -7
- package/dist/infra/cache/cache.module.d.ts +3 -0
- package/dist/infra/cache/cache.module.js +16 -0
- package/dist/infra/cache/cache.service.d.ts +21 -0
- package/dist/infra/cache/cache.service.js +80 -0
- package/dist/infra/cache/cacheable.decorator.d.ts +32 -0
- package/dist/infra/cache/cacheable.decorator.js +83 -0
- package/dist/infra/cli/kernel-cli.module.d.ts +66 -0
- package/dist/infra/cli/kernel-cli.module.js +173 -0
- package/dist/infra/close-within.d.ts +15 -0
- package/dist/infra/close-within.js +36 -0
- package/dist/infra/config/config.module.d.ts +13 -0
- package/dist/infra/config/config.module.js +39 -0
- package/dist/infra/config/kernel-config.service.d.ts +25 -0
- package/dist/infra/config/kernel-config.service.js +157 -0
- package/dist/infra/database/after-commit.d.ts +6 -0
- package/dist/infra/database/after-commit.js +9 -0
- package/dist/infra/database/database.module.d.ts +25 -0
- package/dist/infra/database/database.module.js +91 -0
- package/dist/infra/database/kernel-db.d.ts +22 -0
- package/dist/infra/database/kernel-db.js +65 -0
- package/dist/infra/database/transaction-host.d.ts +50 -0
- package/dist/infra/database/transaction-host.js +125 -0
- package/dist/infra/database/transactional.decorator.d.ts +15 -0
- package/dist/infra/database/transactional.decorator.js +27 -0
- package/dist/infra/database/xact-lock.d.ts +17 -0
- package/dist/infra/database/xact-lock.js +43 -0
- package/dist/infra/events/kernel-events.d.ts +121 -0
- package/dist/infra/events/kernel-events.js +65 -0
- package/dist/infra/health/health.controller.d.ts +26 -0
- package/dist/infra/health/health.controller.js +104 -0
- package/dist/infra/health/health.module.d.ts +9 -0
- package/dist/infra/health/health.module.js +24 -0
- package/dist/infra/health/health.options.d.ts +10 -0
- package/dist/infra/health/health.options.js +15 -0
- package/dist/infra/health/shutdown-state.d.ts +6 -0
- package/dist/infra/health/shutdown-state.js +2 -0
- package/dist/infra/lifecycle/graceful-shutdown.module.d.ts +6 -0
- package/dist/infra/lifecycle/graceful-shutdown.module.js +23 -0
- package/dist/infra/lifecycle/graceful-shutdown.service.d.ts +70 -0
- package/dist/infra/lifecycle/graceful-shutdown.service.js +135 -0
- package/dist/infra/lifecycle/process-guards.d.ts +52 -0
- package/dist/infra/lifecycle/process-guards.js +90 -0
- package/dist/infra/lifecycle/shutdown-signals.d.ts +30 -0
- package/dist/infra/lifecycle/shutdown-signals.js +48 -0
- package/dist/infra/lock/key-template.d.ts +13 -0
- package/dist/infra/lock/key-template.js +46 -0
- package/dist/infra/lock/lock.module.d.ts +3 -0
- package/dist/infra/lock/lock.module.js +16 -0
- package/dist/infra/lock/lock.service.d.ts +120 -0
- package/dist/infra/lock/lock.service.js +343 -0
- package/dist/infra/lock/shared-lease.d.ts +44 -0
- package/dist/infra/lock/shared-lease.js +121 -0
- package/dist/infra/lock/with-lock.decorator.d.ts +28 -0
- package/dist/infra/lock/with-lock.decorator.js +49 -0
- package/dist/infra/logging/logging.module.d.ts +18 -0
- package/dist/infra/logging/logging.module.js +52 -0
- package/dist/infra/queue/add-job-once.d.ts +14 -0
- package/dist/infra/queue/add-job-once.js +16 -0
- package/dist/infra/queue/configured-processor.d.ts +18 -0
- package/dist/infra/queue/configured-processor.js +23 -0
- package/dist/infra/queue/job-failure.d.ts +18 -0
- package/dist/infra/queue/job-failure.js +26 -0
- package/dist/infra/queue/queue-shutdown.d.ts +27 -0
- package/dist/infra/queue/queue-shutdown.js +81 -0
- package/dist/infra/queue/queue.module.d.ts +16 -0
- package/dist/infra/queue/queue.module.js +61 -0
- package/dist/infra/queue/redis-connection.d.ts +13 -0
- package/dist/infra/queue/redis-connection.js +25 -0
- package/dist/infra/queue/retired-schedulers.d.ts +7 -0
- package/dist/infra/queue/retired-schedulers.js +9 -0
- package/dist/infra/queue/run-job.d.ts +16 -0
- package/dist/infra/queue/run-job.js +19 -0
- package/dist/infra/redis/redis.module.d.ts +24 -0
- package/dist/infra/redis/redis.module.js +91 -0
- package/dist/infra/schedule/cron-tick.d.ts +12 -0
- package/dist/infra/schedule/cron-tick.js +25 -0
- package/dist/infra/schedule/locked-cron.decorator.d.ts +27 -0
- package/dist/infra/schedule/locked-cron.decorator.js +53 -0
- package/dist/infra/schedule/locked-interval.d.ts +69 -0
- package/dist/infra/schedule/locked-interval.js +190 -0
- package/dist/infra/schedule/locked-tick.d.ts +90 -0
- package/dist/infra/schedule/locked-tick.js +137 -0
- package/dist/infra/schedule/schedule.module.d.ts +8 -0
- package/dist/infra/schedule/schedule.module.js +27 -0
- package/dist/infra/schedule/scheduled-runs.d.ts +69 -0
- package/dist/infra/schedule/scheduled-runs.js +163 -0
- package/dist/infra/swagger/swagger.d.ts +16 -0
- package/dist/infra/swagger/swagger.js +31 -0
- package/dist/infra/throttler/credential-throttler.d.ts +35 -0
- package/dist/infra/throttler/credential-throttler.js +77 -0
- package/dist/infra/throttler/named-throttlers.d.ts +36 -0
- package/dist/infra/throttler/named-throttlers.js +157 -0
- package/dist/infra/throttler/redis-throttler-storage.d.ts +38 -0
- package/dist/infra/throttler/redis-throttler-storage.js +130 -0
- package/dist/infra/throttler/throttler.guard.d.ts +23 -0
- package/dist/infra/throttler/throttler.guard.js +68 -0
- package/dist/infra/throttler/throttler.module.d.ts +15 -0
- package/dist/infra/throttler/throttler.module.js +53 -0
- package/dist/infra/tokens.d.ts +20 -0
- package/dist/infra/tokens.js +20 -0
- package/dist/infra/validation/create-zod-dto.d.ts +23 -0
- package/dist/infra/validation/create-zod-dto.js +35 -0
- package/dist/infra/validation/parse-with-zod.d.ts +7 -0
- package/dist/infra/validation/parse-with-zod.js +12 -0
- package/dist/infra/validation/validation.module.d.ts +3 -0
- package/dist/infra/validation/validation.module.js +16 -0
- package/dist/infra/validation/zod-params.d.ts +7 -0
- package/dist/infra/validation/zod-params.js +42 -0
- package/dist/infra/validation/zod-validation.pipe.d.ts +11 -0
- package/dist/infra/validation/zod-validation.pipe.js +31 -0
- package/dist/kernel.d.ts +9 -244
- package/dist/kernel.js +8 -1305
- package/dist/kernel.module.d.ts +17 -0
- package/dist/kernel.module.js +145 -0
- package/dist/lifecycle/kernel-lifecycle.d.ts +140 -0
- package/dist/lifecycle/kernel-lifecycle.js +465 -0
- package/dist/lifecycle/tokens.d.ts +3 -0
- package/dist/lifecycle/tokens.js +3 -0
- package/dist/log-context.d.ts +2 -0
- package/dist/log-context.js +4 -0
- package/dist/log.d.ts +13 -1
- package/dist/log.js +93 -17
- package/dist/models/embeddings.d.ts +82 -0
- package/dist/models/embeddings.js +326 -0
- package/dist/models/enablement.controller.d.ts +40 -0
- package/dist/models/enablement.controller.js +74 -0
- package/dist/models/enablement.d.ts +101 -0
- package/dist/models/enablement.js +264 -0
- package/dist/models/models.module.d.ts +7 -0
- package/dist/models/models.module.js +36 -0
- package/dist/models/org-models.schemas.d.ts +8 -0
- package/dist/models/org-models.schemas.js +22 -0
- package/dist/models/prices.d.ts +13 -5
- package/dist/models/prices.js +69 -39
- package/dist/models/purposes.controller.d.ts +6 -4
- package/dist/models/purposes.controller.js +16 -11
- package/dist/models/purposes.d.ts +103 -23
- package/dist/models/purposes.js +208 -77
- package/dist/orgs/directory-sync.controller.d.ts +1 -1
- package/dist/orgs/directory-sync.controller.js +2 -2
- package/dist/orgs/directory-sync.d.ts +74 -35
- package/dist/orgs/directory-sync.js +243 -132
- package/dist/orgs/invitations.controller.d.ts +8 -8
- package/dist/orgs/invitations.controller.js +27 -26
- package/dist/orgs/invitations.service.d.ts +12 -9
- package/dist/orgs/invitations.service.js +130 -92
- package/dist/orgs/job-ids.d.ts +8 -0
- package/dist/orgs/job-ids.js +8 -0
- package/dist/orgs/members.service.d.ts +19 -12
- package/dist/orgs/members.service.js +161 -117
- package/dist/orgs/offboarding.d.ts +61 -60
- package/dist/orgs/offboarding.js +206 -95
- package/dist/orgs/org-lock.d.ts +33 -19
- package/dist/orgs/org-lock.js +94 -35
- package/dist/orgs/org.guard.d.ts +11 -1
- package/dist/orgs/org.guard.js +45 -34
- package/dist/orgs/orgs.controller.d.ts +13 -16
- package/dist/orgs/orgs.controller.js +29 -20
- package/dist/orgs/orgs.module.d.ts +6 -0
- package/dist/orgs/orgs.module.js +71 -0
- package/dist/orgs/orgs.schemas.d.ts +8 -0
- package/dist/orgs/orgs.schemas.js +16 -0
- package/dist/orgs/orgs.service.d.ts +47 -21
- package/dist/orgs/orgs.service.js +166 -91
- package/dist/orgs/roles.d.ts +1 -1
- package/dist/orgs/roles.js +5 -1
- package/dist/orgs/settings.controller.d.ts +2 -2
- package/dist/orgs/settings.controller.js +8 -6
- package/dist/orgs/settings.service.d.ts +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 -137
- package/dist/runtime/model-call.d.ts +61 -15
- package/dist/runtime/model-call.js +128 -84
- package/dist/runtime/providers.d.ts +158 -27
- package/dist/runtime/providers.js +373 -63
- package/dist/runtime/quota.d.ts +17 -3
- package/dist/runtime/quota.js +27 -2
- package/dist/runtime/retired-schedulers.d.ts +7 -0
- package/dist/runtime/retired-schedulers.js +31 -0
- package/dist/runtime/run-context.service.d.ts +65 -0
- package/dist/runtime/run-context.service.js +236 -0
- package/dist/runtime/run-control.d.ts +43 -0
- package/dist/runtime/run-control.js +89 -0
- package/dist/runtime/run-drafts.d.ts +85 -0
- package/dist/runtime/run-drafts.js +230 -0
- package/dist/runtime/run-finish.d.ts +27 -18
- package/dist/runtime/run-finish.js +98 -51
- package/dist/runtime/run-jobs.d.ts +46 -0
- package/dist/runtime/run-jobs.js +91 -0
- package/dist/runtime/run-processors.d.ts +60 -0
- package/dist/runtime/run-processors.js +185 -0
- package/dist/runtime/run-queue.d.ts +90 -58
- package/dist/runtime/run-queue.js +566 -297
- package/dist/runtime/run-steps.d.ts +39 -0
- package/dist/runtime/run-steps.js +96 -0
- package/dist/runtime/run-worker.d.ts +134 -77
- package/dist/runtime/run-worker.js +412 -237
- package/dist/runtime/runtime.module.d.ts +10 -0
- package/dist/runtime/runtime.module.js +122 -0
- package/dist/runtime/step-log.d.ts +51 -0
- package/dist/runtime/step-log.js +111 -0
- package/dist/runtime/stream.controller.d.ts +28 -9
- package/dist/runtime/stream.controller.js +72 -13
- package/dist/runtime/stream.d.ts +27 -6
- package/dist/runtime/stream.js +102 -7
- package/dist/runtime/subagents/child.d.ts +58 -51
- package/dist/runtime/subagents/child.js +105 -86
- package/dist/runtime/subagents/definition.d.ts +32 -28
- package/dist/runtime/subagents/definition.js +89 -143
- package/dist/runtime/subagents/deliveries.d.ts +71 -0
- package/dist/runtime/subagents/deliveries.js +228 -0
- package/dist/runtime/subagents/dispatch.d.ts +197 -27
- package/dist/runtime/subagents/dispatch.js +336 -270
- package/dist/runtime/subagents/limits.d.ts +32 -8
- package/dist/runtime/subagents/limits.js +44 -8
- package/dist/runtime/subagents/messages.d.ts +95 -0
- package/dist/runtime/subagents/messages.js +328 -0
- package/dist/runtime/subagents/org-agents.d.ts +4 -4
- package/dist/runtime/subagents/org-agents.js +3 -2
- package/dist/runtime/subagents/preamble.d.ts +4 -4
- package/dist/runtime/subagents/preamble.js +9 -7
- package/dist/runtime/subagents/progress.d.ts +10 -8
- package/dist/runtime/subagents/progress.js +11 -6
- package/dist/runtime/subagents/render.d.ts +30 -0
- package/dist/runtime/subagents/render.js +53 -0
- package/dist/runtime/subagents/roster.d.ts +27 -10
- package/dist/runtime/subagents/roster.js +49 -13
- package/dist/runtime/subagents/skill-fork.d.ts +10 -10
- package/dist/runtime/subagents/skill-fork.js +23 -8
- package/dist/runtime/subagents/status.d.ts +14 -0
- package/dist/runtime/subagents/status.js +23 -0
- package/dist/runtime/subagents/subagents.service.d.ts +43 -0
- package/dist/runtime/subagents/subagents.service.js +106 -0
- package/dist/runtime/usage-report-jobs.d.ts +88 -0
- package/dist/runtime/usage-report-jobs.js +158 -0
- package/dist/runtime/usage-report.d.ts +121 -83
- package/dist/runtime/usage-report.js +355 -181
- package/dist/runtime/waits.d.ts +258 -81
- package/dist/runtime/waits.js +800 -263
- package/dist/sandbox/job-ids.d.ts +10 -0
- package/dist/sandbox/job-ids.js +10 -0
- package/dist/sandbox/jobs.d.ts +68 -0
- package/dist/sandbox/jobs.js +150 -0
- package/dist/sandbox/leases.d.ts +73 -82
- package/dist/sandbox/leases.js +162 -346
- package/dist/sandbox/providers.d.ts +46 -0
- package/dist/sandbox/providers.js +83 -0
- package/dist/sandbox/sandbox.module.d.ts +9 -0
- package/dist/sandbox/sandbox.module.js +36 -0
- package/dist/sandbox/sandbox.service.d.ts +359 -151
- package/dist/sandbox/sandbox.service.js +950 -435
- package/dist/sandbox/unreachable.d.ts +30 -0
- package/dist/sandbox/unreachable.js +108 -0
- package/dist/skills/catalog.d.ts +40 -26
- package/dist/skills/catalog.js +120 -99
- package/dist/skills/changes.controller.d.ts +11 -4
- package/dist/skills/changes.controller.js +34 -9
- package/dist/skills/changes.service.d.ts +31 -21
- package/dist/skills/changes.service.js +426 -368
- package/dist/skills/invocable.controller.d.ts +2 -2
- package/dist/skills/invocable.controller.js +10 -7
- package/dist/skills/invocation-keys.d.ts +1 -1
- package/dist/skills/invocation-keys.js +1 -1
- package/dist/skills/invoke.d.ts +19 -18
- package/dist/skills/invoke.js +68 -24
- package/dist/skills/package.d.ts +20 -1
- package/dist/skills/package.js +28 -1
- package/dist/skills/skills.controller.d.ts +33 -7
- package/dist/skills/skills.controller.js +79 -12
- package/dist/skills/skills.module.d.ts +6 -0
- package/dist/skills/skills.module.js +39 -0
- package/dist/skills/skills.schemas.d.ts +48 -0
- package/dist/skills/skills.schemas.js +61 -0
- package/dist/skills/skills.service.d.ts +151 -44
- package/dist/skills/skills.service.js +636 -204
- package/dist/skills/usable.d.ts +81 -0
- package/dist/skills/usable.js +379 -0
- package/dist/storage/job-ids.d.ts +6 -0
- package/dist/storage/job-ids.js +6 -0
- package/dist/storage/purge.d.ts +22 -7
- package/dist/storage/purge.js +55 -3
- package/dist/storage/storage.module.d.ts +6 -0
- package/dist/storage/storage.module.js +23 -0
- package/dist/storage/storage.service.d.ts +18 -4
- package/dist/storage/storage.service.js +44 -3
- package/dist/time-zone.d.ts +5 -0
- package/dist/time-zone.js +19 -0
- package/dist/tools/approvals.controller.d.ts +1 -1
- package/dist/tools/approvals.controller.js +14 -11
- package/dist/tools/approvals.schemas.d.ts +21 -0
- package/dist/tools/approvals.schemas.js +15 -0
- package/dist/tools/approvals.service.d.ts +53 -27
- package/dist/tools/approvals.service.js +365 -260
- package/dist/tools/breaker.d.ts +2 -2
- package/dist/tools/breaker.js +21 -3
- package/dist/tools/builtin-names.d.ts +109 -0
- package/dist/tools/builtin-names.js +173 -0
- package/dist/tools/builtins/agent.d.ts +27 -25
- package/dist/tools/builtins/agent.js +66 -63
- package/dist/tools/builtins/ask-user.d.ts +3 -3
- package/dist/tools/builtins/ask-user.js +3 -3
- package/dist/tools/builtins/builtin-tools.d.ts +41 -0
- package/dist/tools/builtins/builtin-tools.js +151 -0
- package/dist/tools/builtins/current-time.d.ts +26 -0
- package/dist/tools/builtins/current-time.js +99 -0
- package/dist/tools/builtins/handback.d.ts +28 -0
- package/dist/tools/builtins/handback.js +53 -0
- package/dist/tools/builtins/platform.d.ts +51 -0
- package/dist/tools/builtins/platform.js +451 -0
- package/dist/tools/builtins/read-tool-output.d.ts +3 -3
- package/dist/tools/builtins/read-tool-output.js +3 -3
- package/dist/tools/builtins/sandbox/bash.d.ts +5 -5
- package/dist/tools/builtins/sandbox/bash.js +293 -41
- package/dist/tools/builtins/sandbox/common.d.ts +137 -37
- package/dist/tools/builtins/sandbox/common.js +222 -62
- package/dist/tools/builtins/sandbox/deliver.d.ts +1 -1
- package/dist/tools/builtins/sandbox/deliver.js +21 -18
- package/dist/tools/builtins/sandbox/edit.d.ts +1 -1
- package/dist/tools/builtins/sandbox/edit.js +65 -51
- package/dist/tools/builtins/sandbox/file-state.d.ts +34 -0
- package/dist/tools/builtins/sandbox/file-state.js +34 -0
- package/dist/tools/builtins/sandbox/glob-match.d.ts +1 -1
- package/dist/tools/builtins/sandbox/glob-match.js +1 -1
- package/dist/tools/builtins/sandbox/glob.d.ts +1 -1
- package/dist/tools/builtins/sandbox/glob.js +19 -14
- package/dist/tools/builtins/sandbox/grep.d.ts +7 -4
- package/dist/tools/builtins/sandbox/grep.js +155 -36
- package/dist/tools/builtins/sandbox/index.d.ts +9 -5
- package/dist/tools/builtins/sandbox/index.js +13 -5
- package/dist/tools/builtins/sandbox/read.d.ts +2 -2
- package/dist/tools/builtins/sandbox/read.js +30 -20
- package/dist/tools/builtins/sandbox/task-output.d.ts +79 -0
- package/dist/tools/builtins/sandbox/task-output.js +334 -0
- package/dist/tools/builtins/sandbox/task-stop.d.ts +10 -0
- package/dist/tools/builtins/sandbox/task-stop.js +113 -0
- package/dist/tools/builtins/sandbox/write.d.ts +1 -1
- package/dist/tools/builtins/sandbox/write.js +52 -45
- package/dist/tools/builtins/send-message.d.ts +56 -0
- package/dist/tools/builtins/send-message.js +100 -0
- package/dist/tools/builtins/skill-load.d.ts +32 -21
- package/dist/tools/builtins/skill-load.js +125 -74
- package/dist/tools/builtins/skill-write.d.ts +4 -4
- package/dist/tools/builtins/skill-write.js +12 -12
- package/dist/tools/builtins/tool-search.d.ts +13 -9
- package/dist/tools/builtins/tool-search.js +25 -14
- package/dist/tools/builtins/web/errors.d.ts +8 -0
- package/dist/tools/builtins/web/errors.js +53 -0
- package/dist/tools/builtins/web/extract.d.ts +62 -0
- package/dist/tools/builtins/web/extract.js +271 -0
- package/dist/tools/builtins/web/fetch.d.ts +55 -0
- package/dist/tools/builtins/web/fetch.js +175 -0
- package/dist/tools/builtins/web/index.d.ts +13 -0
- package/dist/tools/builtins/web/index.js +12 -0
- package/dist/tools/builtins/web/page-cache.d.ts +25 -0
- package/dist/tools/builtins/web/page-cache.js +77 -0
- package/dist/tools/builtins/web/search.d.ts +25 -0
- package/dist/tools/builtins/web/search.js +210 -0
- package/dist/tools/builtins/web/url.d.ts +17 -0
- package/dist/tools/builtins/web/url.js +43 -0
- package/dist/tools/canonical-json.d.ts +6 -0
- package/dist/tools/canonical-json.js +16 -0
- package/dist/tools/connector-content.controller.d.ts +1 -1
- package/dist/tools/connector-content.controller.js +11 -6
- package/dist/tools/connector-content.d.ts +12 -15
- package/dist/tools/connector-content.js +53 -18
- package/dist/tools/connectors.controller.d.ts +16 -3
- package/dist/tools/connectors.controller.js +34 -14
- package/dist/tools/connectors.schemas.d.ts +12 -0
- package/dist/tools/connectors.schemas.js +19 -0
- package/dist/tools/connectors.service.d.ts +80 -18
- package/dist/tools/connectors.service.js +529 -358
- package/dist/tools/credentials.d.ts +20 -20
- package/dist/tools/credentials.js +55 -34
- package/dist/tools/display-names.d.ts +9 -0
- package/dist/tools/display-names.js +24 -0
- package/dist/tools/drift.d.ts +29 -41
- package/dist/tools/drift.js +116 -84
- package/dist/tools/elicitation.js +1 -1
- package/dist/tools/extension-tools.controller.d.ts +14 -0
- package/dist/tools/extension-tools.controller.js +37 -0
- package/dist/tools/info.d.ts +73 -13
- package/dist/tools/info.js +151 -39
- package/dist/tools/job-ids.d.ts +13 -0
- package/dist/tools/job-ids.js +15 -0
- package/dist/tools/jobs.d.ts +24 -0
- package/dist/tools/jobs.js +69 -0
- package/dist/tools/legacy-data.d.ts +34 -0
- package/dist/tools/legacy-data.js +76 -0
- package/dist/tools/legacy-keys.d.ts +51 -0
- package/dist/tools/legacy-keys.js +115 -0
- package/dist/tools/naming.d.ts +1 -5
- package/dist/tools/naming.js +1 -7
- package/dist/tools/oauth/flow-paths.d.ts +16 -0
- package/dist/tools/oauth/flow-paths.js +38 -0
- package/dist/tools/oauth/flow.d.ts +30 -30
- package/dist/tools/oauth/flow.js +109 -81
- package/dist/tools/oauth/oauth.controller.d.ts +3 -3
- package/dist/tools/oauth/oauth.controller.js +12 -9
- package/dist/tools/oauth/tokens.d.ts +45 -10
- package/dist/tools/oauth/tokens.js +70 -24
- package/dist/tools/org-tool-switches.d.ts +88 -0
- package/dist/tools/org-tool-switches.js +201 -0
- package/dist/tools/outputs.d.ts +13 -4
- package/dist/tools/outputs.js +48 -4
- package/dist/tools/pipeline.d.ts +108 -80
- package/dist/tools/pipeline.js +396 -409
- package/dist/tools/policy.d.ts +4 -17
- package/dist/tools/policy.js +49 -35
- package/dist/tools/questions.controller.d.ts +2 -2
- package/dist/tools/questions.controller.js +9 -6
- package/dist/tools/questions.service.d.ts +26 -25
- package/dist/tools/questions.service.js +201 -142
- package/dist/tools/registry.d.ts +215 -84
- package/dist/tools/registry.js +382 -264
- package/dist/tools/resources.d.ts +1 -1
- package/dist/tools/resources.js +1 -1
- package/dist/tools/specs.d.ts +5 -4
- package/dist/tools/specs.js +3 -1
- package/dist/tools/tools.module.d.ts +10 -0
- package/dist/tools/tools.module.js +113 -0
- package/dist/tools/validate.js +1 -1
- package/dist/ui/call-extension.d.ts +16 -0
- package/dist/ui/call-extension.js +38 -0
- package/dist/ui/embed-token.d.ts +9 -5
- package/dist/ui/embed-token.js +34 -6
- package/dist/ui/ui-stream.d.ts +22 -17
- package/dist/ui/ui-stream.js +72 -12
- package/dist/ui/ui.module.d.ts +7 -0
- package/dist/ui/ui.module.js +28 -0
- package/dist/ui/views.controller.d.ts +14 -12
- package/dist/ui/views.controller.js +32 -25
- package/dist/ui/views.d.ts +10 -57
- package/dist/ui/views.js +58 -46
- package/package.json +13 -3
- package/src/migrations/0063_tool_keys_claude_code.sql +220 -0
- package/src/migrations/0064_account_last_org.sql +7 -0
- package/src/migrations/0065_conversation_archive.sql +8 -0
- package/src/migrations/0066_extension_display_name.sql +4 -0
- package/src/migrations/0067_agent_profiles.sql +20 -0
- package/src/migrations/0068_agent_avatar_uploads.sql +7 -0
- package/src/migrations/0069_attachments_agent_idx.sql +3 -0
- package/src/migrations/0070_background_tasks.sql +37 -0
- package/src/migrations/0071_background_tasks_reserve.sql +6 -0
- package/src/migrations/0072_background_tasks_stopping.sql +5 -0
- package/src/migrations/0073_org_extension_point_defaults.sql +11 -0
- package/src/migrations/0074_subagent_tree.sql +50 -0
- package/src/migrations/0075_plugin_scope.sql +61 -0
- package/src/migrations/0076_skills_created_by_nullable.sql +6 -0
- package/src/migrations/0077_scope_requests.sql +52 -0
- package/src/migrations/0078_scope_grant_switches.sql +18 -0
- package/src/migrations/0079_scope_live_install_switches.sql +19 -0
- package/src/migrations/0080_rename_enterprise_admin.sql +18 -0
- package/src/migrations/0081_platform_components.sql +129 -0
- package/src/migrations/0082_platform_migration.sql +33 -0
- package/src/migrations/0083_plugin_scope_sync_failures.sql +15 -0
- package/src/migrations/0084_org_owned_items.sql +85 -0
- package/src/migrations/0085_agent_templates_phase4.sql +45 -0
- package/src/migrations/0086_org_layering.sql +30 -0
- package/src/migrations/0087_approval_summary.sql +6 -0
- package/src/migrations/0088_environments.sql +80 -0
- package/src/migrations/0089_model_kinds_usage.sql +38 -0
- package/src/migrations/0090_initial_passwords.sql +27 -0
- package/src/migrations/0091_account_time_zone.sql +4 -0
- package/src/migrations/0092_tools_default_on.sql +27 -0
- package/src/migrations/0093_connected_environments.sql +37 -0
- package/src/migrations/0094_environment_paths_idx.sql +7 -0
- package/src/migrations/0095_environment_files_resets.sql +5 -0
- package/src/migrations/0096_environment_demoted_default.sql +18 -0
- package/src/migrations/0097_extension_installs_enabled_at.sql +16 -0
- package/src/migrations/0098_single_provider_running_first.sql +41 -0
- package/src/migrations/0099_channel_connection_guide_ack.sql +6 -0
- package/src/migrations/0100_catalog_files.sql +13 -0
- package/src/migrations/0101_marketplace_icons.sql +32 -0
- package/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,25 +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 {
|
|
8
|
-
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";
|
|
9
32
|
import { RunError } from "./model-call.js";
|
|
10
|
-
import { ProviderListError } from "./providers.js";
|
|
11
|
-
import { ORG_QUOTA_LEASE_MS, orgRunLimit } from "./quota.js";
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
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";
|
|
15
41
|
import { childRunDefinition } from "./subagents/definition.js";
|
|
16
42
|
import { forkBoundary } from "./subagents/skill-fork.js";
|
|
43
|
+
import { Waits } from "./waits.js";
|
|
17
44
|
/** 会话锁被占用时任务延后的时间。 */
|
|
18
45
|
const LOCK_BUSY_DELAY_MS = 1000;
|
|
19
46
|
/** 组织配额已满时任务延后的时间。 */
|
|
20
47
|
const QUOTA_FULL_DELAY_MS = 2000;
|
|
21
48
|
/** BullMQ stalled 检测允许的最大次数(超过则任务失败)。 */
|
|
22
|
-
const MAX_STALLED_COUNT = 3;
|
|
49
|
+
export const MAX_STALLED_COUNT = 3;
|
|
23
50
|
/** 停机时等待任务结束后处理(ensureRun 等)的最短时间。 */
|
|
24
51
|
const FOLLOW_UP_MIN_WAIT_MS = 250;
|
|
25
52
|
/** 读插话的分页大小。 */
|
|
@@ -29,88 +56,176 @@ const READ_PAGE = 500;
|
|
|
29
56
|
* 后续处理,由 close() 跟踪并限时;全部失败也不会让会话永远卡住——打开 SSE / 读事件时会再次 ensureRun。
|
|
30
57
|
*/
|
|
31
58
|
const ENSURE_RETRY_DELAYS_MS = [200, 1000, 3000];
|
|
32
|
-
|
|
59
|
+
/** Optional provider: the run worker's {@link RunHooks} (tests). */
|
|
60
|
+
export const RUN_HOOKS = Symbol("RUN_HOOKS");
|
|
33
61
|
/** 任务回到队列:延后 delayMs 再处理(不计入 attempts)。 */
|
|
34
62
|
async function requeue(job, token, delayMs) {
|
|
35
63
|
await job.moveToDelayed(Date.now() + delayMs, token);
|
|
36
64
|
throw new DelayedError();
|
|
37
65
|
}
|
|
38
66
|
/**
|
|
39
|
-
* 运行 worker(只在含 `worker`
|
|
40
|
-
*
|
|
41
|
-
*
|
|
67
|
+
* 运行 worker(只在含 `worker` 角色的进程消费):领取 `cap-kernel-runs` 与 `cap-kernel-subagent-runs` 的任务
|
|
68
|
+
* (两个 `@Processor`,见 run-processors.ts),取会话锁与组织配额,调用 AgentLoop,按结果写终态事件并推进
|
|
69
|
+
* `consumed_seq`;结束后再调用一次 `ensureRun` 处理运行期间到达但没被吸收的消息(Review Focus 2)。
|
|
42
70
|
*/
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
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. */
|
|
46
95
|
workers = [];
|
|
47
|
-
/** 传给 Worker 的连接:BullMQ 不关闭调用方传入的连接,close() 时自己关。 */
|
|
48
|
-
conn;
|
|
49
96
|
active = new Map();
|
|
50
97
|
/** 进行中的「任务结束后」处理(完成后的 ensureRun、失败标记):停机时等它们做完再关闭队列。 */
|
|
51
98
|
followUps = new Set();
|
|
52
99
|
closing = false;
|
|
53
100
|
/** close() 开始时触发:ensureRun 重试不再等待退避间隔。 */
|
|
54
101
|
closingSignal = new AbortController();
|
|
55
|
-
|
|
56
|
-
|
|
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;
|
|
57
152
|
}
|
|
58
|
-
|
|
59
|
-
|
|
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)
|
|
60
159
|
return;
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
const worker = new Worker(queue, (job, token) => withJobContext(queue, job, () => this.process(job, token)), {
|
|
65
|
-
// the worker name is recorded on the job (BullMQ processedBy): which replica ran it
|
|
66
|
-
name: `${hostname()}-${process.pid}`,
|
|
67
|
-
connection: this.conn,
|
|
68
|
-
concurrency: runtime.workerConcurrency,
|
|
69
|
-
lockDuration: runtime.jobLockMs,
|
|
70
|
-
stalledInterval: runtime.stalledIntervalMs,
|
|
71
|
-
maxStalledCount: MAX_STALLED_COUNT,
|
|
72
|
-
});
|
|
73
|
-
// ensureRun after a run goes after its job completed and left the queue: when the latest
|
|
74
|
-
// unconsumed message is this run's own trigger (e.g. a run ended by its deadline without
|
|
75
|
-
// absorbing it, R34), the new job has this job's id and would be dropped as a duplicate
|
|
76
|
-
// while this one is still active. Relies on BullMQ moving the job to completed (deleted by
|
|
77
|
-
// removeOnComplete) before emitting "completed" (pinned by the R34 test).
|
|
78
|
-
worker.on("completed", (job, result) => {
|
|
79
|
-
if (result !== "ensure")
|
|
80
|
-
return;
|
|
81
|
-
const { conversationId, runId } = job.data;
|
|
82
|
-
this.track(this.ensureAfterRun(conversationId, runId));
|
|
83
|
-
});
|
|
84
|
-
worker.on("error", (err) => this.d.log.error("run worker error", { err, queue }));
|
|
85
|
-
worker.on("failed", (job, err) => {
|
|
86
|
-
this.d.log.error("run job failed", { jobId: job?.id, runId: job?.data.runId, err });
|
|
87
|
-
if (job) {
|
|
88
|
-
this.track(this.onJobFailed(job.data, err).catch((e) => this.d.log.error("cannot mark failed run job", { runId: job.data.runId, err: e })));
|
|
89
|
-
}
|
|
90
|
-
});
|
|
91
|
-
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));
|
|
92
163
|
}
|
|
93
164
|
}
|
|
94
|
-
/**
|
|
95
|
-
|
|
96
|
-
|
|
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")
|
|
97
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) {
|
|
98
203
|
try {
|
|
99
|
-
await this.
|
|
204
|
+
await this.waits.stopChildren(runId, null);
|
|
100
205
|
}
|
|
101
206
|
catch (err) {
|
|
102
|
-
this.
|
|
207
|
+
this.log.error("cannot stop the sub-agents of a finished run", { runId, err });
|
|
103
208
|
}
|
|
104
209
|
}
|
|
105
|
-
/**
|
|
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
|
+
*/
|
|
106
215
|
async childFinished(runId) {
|
|
107
|
-
if (!this.d.onChildFinished)
|
|
108
|
-
return;
|
|
109
216
|
try {
|
|
110
|
-
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);
|
|
111
226
|
}
|
|
112
227
|
catch (err) {
|
|
113
|
-
this.
|
|
228
|
+
this.log.error("cannot stop the descendants of a stopped sub-agent", { runId, err });
|
|
114
229
|
}
|
|
115
230
|
}
|
|
116
231
|
/**
|
|
@@ -120,14 +235,14 @@ export class RunWorker {
|
|
|
120
235
|
async ensureAfterRun(conversationId, runId) {
|
|
121
236
|
for (let attempt = 0;; attempt++) {
|
|
122
237
|
try {
|
|
123
|
-
await this.
|
|
124
|
-
await this.
|
|
238
|
+
await this.hooks?.beforeEnsureRun?.(conversationId, attempt);
|
|
239
|
+
await this.queue.ensureRun(conversationId);
|
|
125
240
|
return;
|
|
126
241
|
}
|
|
127
242
|
catch (err) {
|
|
128
243
|
const delay = ENSURE_RETRY_DELAYS_MS[attempt];
|
|
129
244
|
if (delay === undefined) {
|
|
130
|
-
this.
|
|
245
|
+
this.log.error("ensureRun after run failed; giving up", {
|
|
131
246
|
conversationId,
|
|
132
247
|
runId,
|
|
133
248
|
attempts: attempt + 1,
|
|
@@ -135,7 +250,7 @@ export class RunWorker {
|
|
|
135
250
|
});
|
|
136
251
|
return;
|
|
137
252
|
}
|
|
138
|
-
this.
|
|
253
|
+
this.log.warn("ensureRun after run failed; retrying", {
|
|
139
254
|
conversationId,
|
|
140
255
|
runId,
|
|
141
256
|
attempt,
|
|
@@ -174,15 +289,15 @@ export class RunWorker {
|
|
|
174
289
|
async onJobFailed(data, err) {
|
|
175
290
|
const { runId, conversationId } = data;
|
|
176
291
|
const stalled = /stalled/i.test(err.message);
|
|
177
|
-
await this.
|
|
292
|
+
await this.lock.releaseFor(conversationId, runId);
|
|
178
293
|
// 运行已进入 waiting(暂停后任务才失败):它有自己的续跑路径(人工决定 / 超时任务),不标记失败。
|
|
179
|
-
const cur = await this.
|
|
294
|
+
const cur = await this.db
|
|
180
295
|
.selectFrom("runs")
|
|
181
296
|
.select("status")
|
|
182
297
|
.where("id", "=", runId)
|
|
183
298
|
.executeTakeFirst();
|
|
184
299
|
if (cur?.status === "waiting") {
|
|
185
|
-
this.
|
|
300
|
+
this.log.warn("run job failed after the run was suspended; leaving it waiting", { runId });
|
|
186
301
|
return;
|
|
187
302
|
}
|
|
188
303
|
await this.finish(conversationId, runId, "failed", null, {
|
|
@@ -215,25 +330,18 @@ export class RunWorker {
|
|
|
215
330
|
this.workers = [];
|
|
216
331
|
this.closing = true;
|
|
217
332
|
this.closingSignal.abort();
|
|
218
|
-
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 }))));
|
|
219
334
|
for (const a of this.active.values())
|
|
220
335
|
a.shutdown.abort();
|
|
221
336
|
const all = Promise.all([...this.active.values()].map((a) => a.done));
|
|
222
|
-
|
|
223
|
-
const finished = await Promise.race([
|
|
224
|
-
all.then(() => true),
|
|
225
|
-
new Promise((resolve) => {
|
|
226
|
-
timer = setTimeout(() => resolve(false), Math.max(0, budgetMs));
|
|
227
|
-
timer.unref();
|
|
228
|
-
}),
|
|
229
|
-
]);
|
|
230
|
-
clearTimeout(timer);
|
|
337
|
+
const finished = await waitWithin(all, budgetMs);
|
|
231
338
|
if (!finished) {
|
|
232
339
|
for (const [runId, a] of this.active) {
|
|
233
340
|
a.abandoned = true;
|
|
234
341
|
a.lease.abandon();
|
|
342
|
+
a.quota?.abandon();
|
|
235
343
|
a.stopTimers();
|
|
236
|
-
this.
|
|
344
|
+
this.log.warn("run did not reach a step boundary before shutdown; leaving it to another worker", {
|
|
237
345
|
runId,
|
|
238
346
|
});
|
|
239
347
|
}
|
|
@@ -242,26 +350,15 @@ export class RunWorker {
|
|
|
242
350
|
// 关闭期间完成 / 失败的任务登记的后续处理(ensureRun 等)要在调用方关闭运行队列之前做完,
|
|
243
351
|
// 否则投递半途被打断,待处理的消息无人处理。以剩余预算为限(至少留一点时间)。
|
|
244
352
|
if (this.followUps.size > 0) {
|
|
245
|
-
|
|
246
|
-
await Promise.race([
|
|
247
|
-
Promise.allSettled([...this.followUps]),
|
|
248
|
-
new Promise((resolve) => {
|
|
249
|
-
t = setTimeout(resolve, Math.max(FOLLOW_UP_MIN_WAIT_MS, deadline - Date.now()));
|
|
250
|
-
t.unref();
|
|
251
|
-
}),
|
|
252
|
-
]);
|
|
253
|
-
clearTimeout(t);
|
|
353
|
+
await waitWithin(Promise.allSettled([...this.followUps]), Math.max(FOLLOW_UP_MIN_WAIT_MS, deadline - Date.now()));
|
|
254
354
|
}
|
|
255
|
-
const conn = this.conn;
|
|
256
|
-
this.conn = undefined;
|
|
257
|
-
if (conn)
|
|
258
|
-
await conn.quit().catch(() => conn.disconnect());
|
|
259
355
|
}
|
|
356
|
+
/** One run job (the `@Processor`s of both run queues call it). */
|
|
260
357
|
async process(job, token) {
|
|
261
358
|
const { runId, conversationId } = job.data;
|
|
262
359
|
if (this.closing)
|
|
263
360
|
return requeue(job, token, 0);
|
|
264
|
-
const run = await this.
|
|
361
|
+
const run = await this.db
|
|
265
362
|
.selectFrom("runs")
|
|
266
363
|
.select([
|
|
267
364
|
"id",
|
|
@@ -271,6 +368,7 @@ export class RunWorker {
|
|
|
271
368
|
"trigger_seq",
|
|
272
369
|
"started_at",
|
|
273
370
|
"waited_ms",
|
|
371
|
+
"budget_run_id",
|
|
274
372
|
])
|
|
275
373
|
.where("id", "=", runId)
|
|
276
374
|
.executeTakeFirst();
|
|
@@ -286,22 +384,22 @@ export class RunWorker {
|
|
|
286
384
|
// 运行在等人处理(例如暂停后本任务被 stalled 机制重新投递):不执行,续跑由处理 / 超时发起的新任务负责。
|
|
287
385
|
if (run.status === "waiting")
|
|
288
386
|
return;
|
|
289
|
-
const conv = await this.
|
|
387
|
+
const conv = await this.db
|
|
290
388
|
.selectFrom("conversations")
|
|
291
|
-
.select(["org_id", "agent_id", "kind"])
|
|
389
|
+
.select(["org_id", "agent_id", "kind", "subagent_depth"])
|
|
292
390
|
.where("id", "=", conversationId)
|
|
293
391
|
.executeTakeFirst();
|
|
294
392
|
if (!conv)
|
|
295
393
|
return;
|
|
296
394
|
// 会话锁 TTL 与任务锁一致:持有者崩溃后,任务被判定 stalled 时会话锁也差不多同时过期。
|
|
297
|
-
const lease = await this.
|
|
395
|
+
const lease = await this.lock.acquire(conversationId, runId, this.hooks?.lockTtlMs ?? this.config.get().runtime.jobLockMs);
|
|
298
396
|
if (!lease)
|
|
299
397
|
return requeue(job, token, LOCK_BUSY_DELAY_MS);
|
|
300
398
|
// A sub-agent stopped while still queued (its parent's stop or wait timeout) ends here, before
|
|
301
399
|
// taking an org run slot: under a full quota it would otherwise wait for a slot only to be
|
|
302
400
|
// aborted, and its parent would stay waiting meanwhile (final review m7)
|
|
303
401
|
if (conv.kind === "subagent" && run.status === "queued") {
|
|
304
|
-
const stop = await this.
|
|
402
|
+
const stop = await this.abort.requested(runId);
|
|
305
403
|
if (stop !== null) {
|
|
306
404
|
try {
|
|
307
405
|
await this.finish(conversationId, runId, "aborted", null, {
|
|
@@ -316,7 +414,7 @@ export class RunWorker {
|
|
|
316
414
|
finally {
|
|
317
415
|
await lease
|
|
318
416
|
.release()
|
|
319
|
-
.catch((err) => this.
|
|
417
|
+
.catch((err) => this.log.warn("conversation lock release failed", { runId, err }));
|
|
320
418
|
}
|
|
321
419
|
await this.dropCheckpoints(runId);
|
|
322
420
|
await this.childFinished(runId);
|
|
@@ -346,30 +444,28 @@ export class RunWorker {
|
|
|
346
444
|
let entered = false;
|
|
347
445
|
let delayMs = null;
|
|
348
446
|
try {
|
|
349
|
-
const limit = await orgRunLimit(this.
|
|
350
|
-
|
|
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;
|
|
351
452
|
if (!entered) {
|
|
352
453
|
delayMs = QUOTA_FULL_DELAY_MS;
|
|
353
454
|
}
|
|
354
455
|
else {
|
|
355
456
|
// 运行开始执行(含续跑、stalled 后接手):通知旁路(渠道出站投递据此把输出投到 IM),失败不影响运行
|
|
356
|
-
|
|
357
|
-
this.d.onRunStart?.(conversationId);
|
|
358
|
-
}
|
|
359
|
-
catch (err) {
|
|
360
|
-
this.d.log.warn("onRunStart hook failed", { conversationId, err });
|
|
361
|
-
}
|
|
457
|
+
void this.events.emit("run.started", { conversationId, runId });
|
|
362
458
|
const r = await this.execute(run, { id: conversationId, ...conv }, state).catch(async (err) => {
|
|
363
459
|
if (state.abandoned)
|
|
364
460
|
return "abandoned";
|
|
365
461
|
if (state.leaseLost)
|
|
366
462
|
return "interrupted";
|
|
367
463
|
// 编排自身出错(如写事件失败):尽力把运行标记为失败,避免会话卡在 running。
|
|
368
|
-
this.
|
|
464
|
+
this.log.error("run orchestration failed", { conversationId, runId, err });
|
|
369
465
|
await this.finish(conversationId, runId, "failed", null, {
|
|
370
466
|
type: "run_failed",
|
|
371
467
|
payload: { error: { code: "run.internal", message: "The run failed unexpectedly" } },
|
|
372
|
-
}).catch((e) => this.
|
|
468
|
+
}).catch((e) => this.log.error("cannot mark run as failed", { runId, err: e }));
|
|
373
469
|
return "broken";
|
|
374
470
|
});
|
|
375
471
|
if (r === "interrupted")
|
|
@@ -379,16 +475,14 @@ export class RunWorker {
|
|
|
379
475
|
finally {
|
|
380
476
|
state.stopTimers();
|
|
381
477
|
if (!state.abandoned) {
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
.catch((err) => this.d.log.warn("org quota leave failed", { runId, err }));
|
|
386
|
-
}
|
|
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();
|
|
387
481
|
// 锁已丢失时不释放(已不属于本运行;RELEASE 虽比对 runId,这里也不再触碰)。
|
|
388
482
|
if (!state.leaseLost) {
|
|
389
483
|
await lease
|
|
390
484
|
.release()
|
|
391
|
-
.catch((err) => this.
|
|
485
|
+
.catch((err) => this.log.warn("conversation lock release failed", { runId, err }));
|
|
392
486
|
}
|
|
393
487
|
}
|
|
394
488
|
this.active.delete(runId);
|
|
@@ -401,7 +495,7 @@ export class RunWorker {
|
|
|
401
495
|
// 暂停:会话锁与配额已释放,checkpoint 保留;置 waiting 并投递超时任务。任务就此完成,不 ensureRun
|
|
402
496
|
// (等待期间的新消息在续跑后作为插话吸收)。
|
|
403
497
|
if (state.suspended) {
|
|
404
|
-
await this.
|
|
498
|
+
await this.waits.suspend(runId, conversationId, state.suspended.waitingFor, state.suspended.abort);
|
|
405
499
|
return;
|
|
406
500
|
}
|
|
407
501
|
// 运行已到达终态(broken 时已尽力标记失败):checkpoint 只用于续跑,删除。
|
|
@@ -415,51 +509,72 @@ export class RunWorker {
|
|
|
415
509
|
async execute(run, conv, state) {
|
|
416
510
|
const runId = run.id;
|
|
417
511
|
const conversationId = conv.id;
|
|
418
|
-
const runtime = this.
|
|
512
|
+
const runtime = this.config.get().runtime;
|
|
419
513
|
let agent;
|
|
420
514
|
// a chat run's saved agent version, under the conversation's model switch (UI refresh B); a
|
|
421
515
|
// sub-agent has none: it never takes a selection
|
|
422
516
|
let saved;
|
|
423
517
|
let maxSteps = runtime.maxSteps;
|
|
424
518
|
let parent;
|
|
519
|
+
/** A sub-agent's name in its run context: the roster name, or the forked skill's. */
|
|
520
|
+
let childName;
|
|
425
521
|
if (conv.kind === "subagent") {
|
|
426
522
|
// a sub-agent runs its effective definition frozen at dispatch, never agent_versions
|
|
427
523
|
// (spec §6.3), and works for the parent call that dispatched this run
|
|
428
|
-
const started = await this.
|
|
524
|
+
const started = await this.eventLog.findByIdem(conversationId, "subagent_started");
|
|
429
525
|
if (started?.type !== "subagent_started") {
|
|
430
526
|
throw new Error(`sub-agent conversation ${conversationId} has no subagent_started`);
|
|
431
527
|
}
|
|
432
528
|
// a follow-up runs with its task message's narrowing (final review I1): the frozen tools
|
|
433
529
|
// and org skills the current version still allows, recorded at its dispatch
|
|
434
|
-
const trigger = (await this.
|
|
435
|
-
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)
|
|
436
532
|
? trigger.payload.dispatch?.narrowed
|
|
437
533
|
: undefined);
|
|
438
534
|
maxSteps = Math.min(started.payload.maxSteps, runtime.maxSteps);
|
|
439
|
-
|
|
535
|
+
childName = started.payload.template.invokedSkill?.name ?? started.payload.agentType;
|
|
536
|
+
const row = await dispatchOfChildRun(this.db, runId);
|
|
440
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;
|
|
441
549
|
parent = row
|
|
442
550
|
? {
|
|
443
551
|
conversationId: row.parentConversationId,
|
|
444
552
|
runId: row.parentRunId,
|
|
445
553
|
callId: row.parentCallId,
|
|
554
|
+
depth,
|
|
555
|
+
rootConversationId,
|
|
446
556
|
otherAgent,
|
|
557
|
+
...(budgetRunId !== undefined && { budgetRunId }),
|
|
558
|
+
...(row.forSkill === true && { forSkill: true }),
|
|
447
559
|
}
|
|
448
560
|
: {
|
|
449
561
|
conversationId: started.payload.parent.conversationId,
|
|
450
562
|
runId: started.payload.parent.runId,
|
|
451
563
|
callId: started.payload.parent.callId,
|
|
564
|
+
depth,
|
|
565
|
+
rootConversationId,
|
|
452
566
|
otherAgent,
|
|
567
|
+
...(budgetRunId !== undefined && { budgetRunId }),
|
|
453
568
|
};
|
|
454
569
|
}
|
|
455
570
|
else {
|
|
456
|
-
const version = await this.
|
|
571
|
+
const version = await this.db
|
|
457
572
|
.selectFrom("agent_versions")
|
|
458
573
|
.select("definition")
|
|
459
574
|
.where("agent_id", "=", conv.agent_id)
|
|
460
575
|
.where("version", "=", run.agent_version)
|
|
461
576
|
.executeTakeFirstOrThrow();
|
|
462
|
-
saved =
|
|
577
|
+
saved = await normalizeStoredDefinitionIn(this.db, conv.org_id, version.definition);
|
|
463
578
|
agent = saved;
|
|
464
579
|
}
|
|
465
580
|
let startedAt = run.started_at;
|
|
@@ -467,66 +582,40 @@ export class RunWorker {
|
|
|
467
582
|
// run's `run_started`, read under the conversation lock when the run starts, so a replay
|
|
468
583
|
// (`selectionAt`) sees exactly what the run used.
|
|
469
584
|
// A sub-agent (no `saved`) runs its frozen definition as is.
|
|
470
|
-
const existingStart = await this.
|
|
585
|
+
const existingStart = await this.eventLog.findByIdem(conversationId, `run_started:${runId}`);
|
|
471
586
|
if (existingStart && saved !== undefined) {
|
|
472
|
-
agent = effectiveDefinition(saved, await readSelection(this.
|
|
587
|
+
agent = effectiveDefinition(saved, await readSelection(this.db, conversationId, existingStart.seq));
|
|
473
588
|
}
|
|
474
589
|
if (run.status === "queued" || startedAt === null) {
|
|
475
590
|
if (!existingStart) {
|
|
476
591
|
if (saved !== undefined)
|
|
477
|
-
await this.fallBackIfUnavailable(conversationId, runId, saved);
|
|
478
|
-
const
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
.select("id")
|
|
482
|
-
.where("id", "=", conversationId)
|
|
483
|
-
.forUpdate()
|
|
484
|
-
.execute();
|
|
485
|
-
if (saved !== undefined) {
|
|
486
|
-
agent = effectiveDefinition(saved, await readSelection(t, conversationId));
|
|
487
|
-
}
|
|
488
|
-
const [ev] = await this.d.eventLog.append(conversationId, [
|
|
489
|
-
{
|
|
490
|
-
type: "run_started",
|
|
491
|
-
runId,
|
|
492
|
-
idemKey: `run_started:${runId}`,
|
|
493
|
-
payload: {
|
|
494
|
-
agentVersion: run.agent_version,
|
|
495
|
-
model: agent.model,
|
|
496
|
-
triggerAccountId: run.trigger_account_id,
|
|
497
|
-
},
|
|
498
|
-
},
|
|
499
|
-
], t);
|
|
500
|
-
return ev?.seq;
|
|
501
|
-
});
|
|
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;
|
|
502
596
|
if (toSeq !== undefined)
|
|
503
|
-
await this.
|
|
597
|
+
await this.eventLog.notify(conversationId, toSeq);
|
|
504
598
|
}
|
|
505
599
|
// 技能目录快照(Ruling M17):在置为 running 之前写,崩溃重试时仍走这里(幂等键去重)
|
|
506
600
|
try {
|
|
507
|
-
await
|
|
508
|
-
db: this.d.db,
|
|
509
|
-
eventLog: this.d.eventLog,
|
|
510
|
-
log: this.d.log,
|
|
511
|
-
...(this.d.storage !== undefined && { storage: this.d.storage }),
|
|
512
|
-
}, {
|
|
601
|
+
await this.skillsCatalog.record({
|
|
513
602
|
orgId: conv.org_id,
|
|
514
603
|
agentId: conv.agent_id,
|
|
515
604
|
conversationId,
|
|
516
605
|
runId,
|
|
517
606
|
agent,
|
|
518
|
-
});
|
|
607
|
+
}, { log: this.log });
|
|
519
608
|
}
|
|
520
609
|
catch (e) {
|
|
521
610
|
// Pinned skill bodies could not be read (Decision 9), or the pinned skills kept changing
|
|
522
611
|
// while they were read (`conflict`): fail before any model request. A transient failure
|
|
523
612
|
// or a conflict is fixed by sending again; a permanent one names the skill for the owner
|
|
524
|
-
// (`
|
|
613
|
+
// (`SkillsCatalogService.record` already logged it at error). Other errors take the generic path.
|
|
525
614
|
if (!(e instanceof ApiError) ||
|
|
526
615
|
(e.code !== "storage.unavailable" && e.code !== "conflict")) {
|
|
527
616
|
throw e;
|
|
528
617
|
}
|
|
529
|
-
this.
|
|
618
|
+
this.log.warn("skills catalog not recorded at run start", {
|
|
530
619
|
conversationId,
|
|
531
620
|
runId,
|
|
532
621
|
code: e.code,
|
|
@@ -539,7 +628,23 @@ export class RunWorker {
|
|
|
539
628
|
});
|
|
540
629
|
return "finished";
|
|
541
630
|
}
|
|
542
|
-
|
|
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
|
|
543
648
|
.updateTable("runs")
|
|
544
649
|
.set({ status: "running", started_at: sql `COALESCE(started_at, now())` })
|
|
545
650
|
.where("id", "=", runId)
|
|
@@ -557,44 +662,34 @@ export class RunWorker {
|
|
|
557
662
|
deadlineHit = true;
|
|
558
663
|
ac.abort();
|
|
559
664
|
}, Math.max(0, deadline - Date.now()));
|
|
560
|
-
const quotaTimer = setInterval(() => {
|
|
561
|
-
this.d.quota
|
|
562
|
-
.renew(conv.org_id, runId, ORG_QUOTA_LEASE_MS)
|
|
563
|
-
.then((ok) => {
|
|
564
|
-
if (!ok)
|
|
565
|
-
this.d.log.warn("org quota lease lost", { runId, orgId: conv.org_id });
|
|
566
|
-
})
|
|
567
|
-
.catch((err) => this.d.log.warn("org quota renew failed", { runId, err }));
|
|
568
|
-
}, ORG_QUOTA_LEASE_MS / 3);
|
|
569
|
-
quotaTimer.unref();
|
|
570
665
|
state.stopTimers = () => {
|
|
571
666
|
clearTimeout(deadlineTimer);
|
|
572
|
-
clearInterval(quotaTimer);
|
|
573
667
|
};
|
|
574
668
|
let unwatch;
|
|
575
669
|
try {
|
|
576
|
-
unwatch = await this.
|
|
670
|
+
unwatch = await this.abort.watch(runId, (by, detail) => {
|
|
577
671
|
abortedBy = by;
|
|
578
672
|
abortDetail = detail;
|
|
579
673
|
ac.abort();
|
|
580
674
|
});
|
|
581
675
|
// 取得会话锁之后再读 consumed_seq(锁内不会有别的运行推进它)。
|
|
582
|
-
const { consumed_seq } = await this.
|
|
676
|
+
const { consumed_seq } = await this.db
|
|
583
677
|
.selectFrom("conversations")
|
|
584
678
|
.select("consumed_seq")
|
|
585
679
|
.where("id", "=", conversationId)
|
|
586
680
|
.executeTakeFirstOrThrow();
|
|
587
681
|
const startConsumed = Number(consumed_seq);
|
|
588
682
|
let absorbed = startConsumed;
|
|
589
|
-
const
|
|
683
|
+
const pendingAbsorbable = async (afterSeq) => {
|
|
590
684
|
// loop 声明已吸收到 afterSeq(续跑时来自 checkpoint,可能包含之前进程吸收的消息)。
|
|
591
685
|
absorbed = Math.max(absorbed, afterSeq);
|
|
592
686
|
const out = [];
|
|
593
687
|
let after = Math.max(afterSeq, startConsumed);
|
|
594
688
|
for (;;) {
|
|
595
|
-
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)
|
|
596
691
|
for (const e of page)
|
|
597
|
-
if (e
|
|
692
|
+
if (isAbsorbable(e))
|
|
598
693
|
out.push(e);
|
|
599
694
|
const last = page.at(-1);
|
|
600
695
|
if (page.length < READ_PAGE || !last)
|
|
@@ -610,7 +705,7 @@ export class RunWorker {
|
|
|
610
705
|
};
|
|
611
706
|
let outcome;
|
|
612
707
|
try {
|
|
613
|
-
outcome = await this.
|
|
708
|
+
outcome = await this.loop.run({
|
|
614
709
|
orgId: conv.org_id,
|
|
615
710
|
conversationId,
|
|
616
711
|
runId,
|
|
@@ -620,8 +715,8 @@ export class RunWorker {
|
|
|
620
715
|
agentVersion: run.agent_version,
|
|
621
716
|
signal: ac.signal,
|
|
622
717
|
shutdown: state.shutdown.signal,
|
|
623
|
-
sink: this.
|
|
624
|
-
|
|
718
|
+
sink: this.sinkFor(conversationId),
|
|
719
|
+
pendingAbsorbable,
|
|
625
720
|
limits: { maxSteps, deadline },
|
|
626
721
|
// a sub-agent's conversation fires hooks like a chat, with `parent` set (spec §11)
|
|
627
722
|
conversationKind: conv.kind === "eval" ? "eval" : conv.kind === "subagent" ? "subagent" : "chat",
|
|
@@ -635,7 +730,7 @@ export class RunWorker {
|
|
|
635
730
|
return "interrupted";
|
|
636
731
|
const err = e instanceof RunError ? e : new RunError("run.internal", "The run failed unexpectedly");
|
|
637
732
|
if (!(e instanceof RunError)) {
|
|
638
|
-
this.
|
|
733
|
+
this.log.error("agent loop threw", { conversationId, runId, err: e });
|
|
639
734
|
}
|
|
640
735
|
// 失败也推进 consumed_seq 到已吸收的位置:否则结束时的 ensureRun 会对同一条消息无限重试;
|
|
641
736
|
// 用户看到 run_failed 后可以重发。
|
|
@@ -645,6 +740,10 @@ export class RunWorker {
|
|
|
645
740
|
});
|
|
646
741
|
return "finished";
|
|
647
742
|
}
|
|
743
|
+
finally {
|
|
744
|
+
// the execution here ended: what this process held of the run's drafts goes
|
|
745
|
+
this.drafts.release(runId);
|
|
746
|
+
}
|
|
648
747
|
if (state.abandoned)
|
|
649
748
|
return "abandoned";
|
|
650
749
|
// 锁在运行中丢失:无论 loop 返回什么都不写终态,任务回到队列由持锁者续跑。
|
|
@@ -702,32 +801,26 @@ export class RunWorker {
|
|
|
702
801
|
}
|
|
703
802
|
finally {
|
|
704
803
|
state.stopTimers();
|
|
705
|
-
await unwatch?.().catch((err) => this.
|
|
804
|
+
await unwatch?.().catch((err) => this.log.warn("abort unwatch failed", { runId, err }));
|
|
706
805
|
}
|
|
707
806
|
}
|
|
708
807
|
completed(conversationId) {
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
}
|
|
712
|
-
catch (err) {
|
|
713
|
-
this.d.log.warn("onRunCompleted hook failed", { conversationId, err });
|
|
714
|
-
}
|
|
808
|
+
// a completed run enqueues the conversation's title job (never throws)
|
|
809
|
+
void this.titles.maybeEnqueue(conversationId);
|
|
715
810
|
}
|
|
716
811
|
/**
|
|
717
812
|
* When the conversation was switched to a model that no longer resolves (provider disabled,
|
|
718
813
|
* model removed), writes `model_switched { model: null, effort: null, reason: "unavailable" }`
|
|
719
814
|
* for this run (idempotent) and clears the cached selection: the run and the next ones use the
|
|
720
815
|
* agent's model. A provider that only failed to list its models is not "gone" (the run's ladder
|
|
721
|
-
* handles it).
|
|
816
|
+
* handles it). Resolved for the conversation's org (its effective provider config).
|
|
722
817
|
*/
|
|
723
|
-
async fallBackIfUnavailable(conversationId, runId, agent) {
|
|
724
|
-
|
|
725
|
-
return;
|
|
726
|
-
const sel = await readSelection(this.d.db, conversationId);
|
|
818
|
+
async fallBackIfUnavailable(orgId, conversationId, runId, agent) {
|
|
819
|
+
const sel = await readSelection(this.db, conversationId);
|
|
727
820
|
if (sel.model === null || sameModel(sel.model, agent.model))
|
|
728
821
|
return;
|
|
729
822
|
try {
|
|
730
|
-
await this.
|
|
823
|
+
await this.models.resolve(orgId, sel.model);
|
|
731
824
|
return;
|
|
732
825
|
}
|
|
733
826
|
catch (e) {
|
|
@@ -736,71 +829,153 @@ export class RunWorker {
|
|
|
736
829
|
if (!(e instanceof ApiError && e.code === "agent.model_unavailable"))
|
|
737
830
|
throw e;
|
|
738
831
|
}
|
|
739
|
-
this.
|
|
832
|
+
this.log.warn("switched-to model unavailable; falling back to the agent's model", {
|
|
740
833
|
conversationId,
|
|
741
834
|
runId,
|
|
742
835
|
model: sel.model,
|
|
743
836
|
});
|
|
744
|
-
const ev = await this.
|
|
745
|
-
// re-check under the row lock: a person who switched again since the read above wins
|
|
746
|
-
await t
|
|
747
|
-
.selectFrom("conversations")
|
|
748
|
-
.select("id")
|
|
749
|
-
.where("id", "=", conversationId)
|
|
750
|
-
.forUpdate()
|
|
751
|
-
.executeTakeFirst();
|
|
752
|
-
if (!sameSelection(await readSelection(t, conversationId), sel))
|
|
753
|
-
return null;
|
|
754
|
-
const [written] = await this.d.eventLog.append(conversationId, [
|
|
755
|
-
{
|
|
756
|
-
type: "model_switched",
|
|
757
|
-
runId,
|
|
758
|
-
idemKey: `model_fallback:${runId}`,
|
|
759
|
-
payload: { model: null, effort: null, byAccountId: null, reason: "unavailable" },
|
|
760
|
-
},
|
|
761
|
-
], t);
|
|
762
|
-
await t
|
|
763
|
-
.updateTable("conversations")
|
|
764
|
-
.set({ selection: JSON.stringify(NO_SELECTION) })
|
|
765
|
-
.where("id", "=", conversationId)
|
|
766
|
-
.execute();
|
|
767
|
-
return written ?? null;
|
|
768
|
-
});
|
|
837
|
+
const ev = await this.fallBackIn(conversationId, runId, sel);
|
|
769
838
|
if (ev === null)
|
|
770
839
|
return;
|
|
771
|
-
await this.
|
|
772
|
-
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;
|
|
773
916
|
}
|
|
774
917
|
/** 删除已结束运行的 checkpoint thread(失败只记日志)。 */
|
|
775
918
|
async dropCheckpoints(runId) {
|
|
776
|
-
await this.
|
|
777
|
-
|
|
778
|
-
.catch((err) => this.
|
|
919
|
+
await this.checkpoints
|
|
920
|
+
.deleteThread(runId)
|
|
921
|
+
.catch((err) => this.log.warn("checkpoint delete failed", { runId, err }));
|
|
779
922
|
}
|
|
780
923
|
/**
|
|
781
924
|
* 写终态(见 `finishRun`:运行仍未结束才写,同一事务内推进 `consumed_seq` 并更新 `runs.status`),
|
|
782
925
|
* 提交后发布会话通知,然后调用测试钩子。返回终态事件 seq;运行已是终态 → null。
|
|
783
926
|
*/
|
|
784
927
|
async finish(conversationId, runId, status, consumed, event, hook = true, floorToTrigger = true) {
|
|
785
|
-
const stopOpen = this.d.stopOpenCalls;
|
|
786
928
|
let fire = () => { };
|
|
787
|
-
const toSeq = await
|
|
929
|
+
const toSeq = await this.finisher.finish({
|
|
788
930
|
conversationId,
|
|
789
931
|
runId,
|
|
790
932
|
status,
|
|
791
933
|
consumed,
|
|
792
934
|
event,
|
|
793
935
|
floorToTrigger,
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
},
|
|
798
|
-
}),
|
|
936
|
+
beforeTerminal: async () => {
|
|
937
|
+
fire = (await this.pipeline.stopOpenAgentCalls(runId)).fire;
|
|
938
|
+
},
|
|
799
939
|
});
|
|
800
940
|
if (toSeq !== null)
|
|
801
941
|
fire();
|
|
802
942
|
if (hook)
|
|
803
|
-
await this.
|
|
943
|
+
await this.hooks?.beforeRelease?.(runId, conversationId);
|
|
804
944
|
return toSeq;
|
|
805
945
|
}
|
|
806
|
-
}
|
|
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 };
|