@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,96 +1,112 @@
|
|
|
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
|
+
};
|
|
1
10
|
import { randomUUID } from "node:crypto";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
11
|
+
import { getQueueToken } from "@nestjs/bullmq";
|
|
12
|
+
import { Inject, Injectable } from "@nestjs/common";
|
|
4
13
|
import { sql } from "kysely";
|
|
5
|
-
import { visibleTo } from "../agents/
|
|
14
|
+
import { visibleTo } from "../agents/agent-lookup.js";
|
|
15
|
+
import { BG_WAKE_JOB, bgWakeJobId, wakeDecisionIn, } from "../background/wake-rules.js";
|
|
16
|
+
import { EventLog } from "../conversations/event-log.js";
|
|
6
17
|
import { dispatchQueuedIn, pauseQueueWith } from "../conversations/queue.js";
|
|
7
|
-
import {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
18
|
+
import { conversationTree } from "../conversations/tree.js";
|
|
19
|
+
import { KernelConfigService } from "../infra/config/kernel-config.service.js";
|
|
20
|
+
import { KernelDb } from "../infra/database/kernel-db.js";
|
|
21
|
+
import { TransactionHost } from "../infra/database/transaction-host.js";
|
|
22
|
+
import { Transactional } from "../infra/database/transactional.decorator.js";
|
|
23
|
+
import { KernelEvents } from "../infra/events/kernel-events.js";
|
|
24
|
+
import { KERNEL_LOGGER } from "../infra/tokens.js";
|
|
25
|
+
import { ToolPipeline } from "../tools/pipeline.js";
|
|
26
|
+
import { KyselyCheckpointSaver } from "./checkpointer.js";
|
|
27
|
+
import { ConversationLock } from "./conversation-lock.js";
|
|
28
|
+
import { MAINTENANCE_QUEUE_NAME } from "./maintenance-queue.js";
|
|
29
|
+
import { notifyFinished, RunFinish } from "./run-finish.js";
|
|
30
|
+
import { ACTIVE_RUN_STATUSES, RunJobs, runJobId, runQueueNameFor, } from "./run-jobs.js";
|
|
31
|
+
import { rootConversationOf } from "./subagents/child.js";
|
|
32
|
+
import { budgetWindowOf } from "./subagents/limits.js";
|
|
33
|
+
export { ACTIVE_RUN_STATUSES, RUN_QUEUE_NAME, runJobId, runQueueNameFor, SUBAGENT_RUN_QUEUE_NAME, } from "./run-jobs.js";
|
|
21
34
|
/**
|
|
22
35
|
* queued 运行的宽限期(秒):`ensureRun` / 续跑先提交 runs 行、再投递任务,两步之间任务暂时不存在;
|
|
23
36
|
* 只有进入 queued 超过这么久(`COALESCE(queued_at, created_at)`)仍没有任务的 queued 行才视为孤儿。
|
|
24
37
|
*/
|
|
25
38
|
const ORPHAN_QUEUED_GRACE_SECONDS = 30;
|
|
26
|
-
/**
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
39
|
+
/**
|
|
40
|
+
* Margin added to the delayed wake job: its window is read on the database's clock, the delay runs
|
|
41
|
+
* on this process's and Redis's, so the job does not usually fire just before the window ends (one
|
|
42
|
+
* that does reschedules itself under its next retry id, `bgWakeJobId`).
|
|
43
|
+
*/
|
|
44
|
+
const WAKE_JOB_MARGIN_MS = 1000;
|
|
32
45
|
/**
|
|
33
46
|
* 运行队列(生产方):`ensureRun` 在会话有未消费的用户消息、且没有进行中的运行时插入 `runs` 行并投递任务。
|
|
34
47
|
* 「是否已有运行」以 PG 为准(会话行锁内检查 `runs` 中的 queued / running),并参考会话锁的持有者;
|
|
35
48
|
* 多副本并发调用对同一会话串行化,同一时刻至多一个未结束的运行。
|
|
36
49
|
*/
|
|
37
|
-
|
|
38
|
-
|
|
50
|
+
let RunQueue = class RunQueue {
|
|
51
|
+
kdb;
|
|
39
52
|
eventLog;
|
|
40
53
|
lock;
|
|
41
|
-
|
|
42
|
-
|
|
54
|
+
jobs;
|
|
55
|
+
finisher;
|
|
43
56
|
checkpoints;
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
57
|
+
pipeline;
|
|
58
|
+
events;
|
|
59
|
+
log;
|
|
60
|
+
txHost;
|
|
61
|
+
config;
|
|
62
|
+
maintenance;
|
|
63
|
+
constructor(kdb, eventLog, lock, jobs, finisher,
|
|
49
64
|
/** 运行以孤儿结束(标记失败 / 直接中止)后删除它的 checkpoint thread(thread_id = runId)。 */
|
|
50
65
|
checkpoints,
|
|
51
|
-
/**
|
|
52
|
-
|
|
53
|
-
|
|
66
|
+
/** The run's open `Agent` call results, in the orphan repair's transaction (sub-agents spec §12). */
|
|
67
|
+
pipeline, events, log, txHost, config,
|
|
68
|
+
/** The producer side of the delayed `bg-wake` job (`MaintenanceProcessor` consumes it). */
|
|
69
|
+
maintenance) {
|
|
70
|
+
this.kdb = kdb;
|
|
54
71
|
this.eventLog = eventLog;
|
|
55
72
|
this.lock = lock;
|
|
56
|
-
this.
|
|
57
|
-
this.
|
|
73
|
+
this.jobs = jobs;
|
|
74
|
+
this.finisher = finisher;
|
|
58
75
|
this.checkpoints = checkpoints;
|
|
59
|
-
this.
|
|
76
|
+
this.pipeline = pipeline;
|
|
77
|
+
this.events = events;
|
|
78
|
+
this.log = log;
|
|
79
|
+
this.txHost = txHost;
|
|
80
|
+
this.config = config;
|
|
81
|
+
this.maintenance = maintenance;
|
|
82
|
+
}
|
|
83
|
+
get db() {
|
|
84
|
+
return this.kdb.db;
|
|
60
85
|
}
|
|
61
86
|
/**
|
|
62
|
-
* The `beforeTerminal` of an orphan repair: writes the run's open `
|
|
63
|
-
* `fire()` runs their observe hooks after the commit (review m1).
|
|
87
|
+
* The `beforeTerminal` of an orphan repair: writes the run's open `Agent` call results in the
|
|
88
|
+
* repair's transaction; `fire()` runs their observe hooks after the commit (review m1).
|
|
64
89
|
*/
|
|
65
90
|
stopOpenCalls(runId) {
|
|
66
|
-
const sub = this.subagents;
|
|
67
|
-
if (!sub)
|
|
68
|
-
return { fire: () => { } };
|
|
69
91
|
let fire = () => { };
|
|
70
92
|
return {
|
|
71
|
-
beforeTerminal: async (
|
|
72
|
-
fire = (await
|
|
93
|
+
beforeTerminal: async () => {
|
|
94
|
+
fire = (await this.pipeline.stopOpenAgentCalls(runId)).fire;
|
|
73
95
|
},
|
|
74
96
|
fire: () => fire(),
|
|
75
97
|
};
|
|
76
98
|
}
|
|
77
|
-
/** The BullMQ queue `name` (default: conversation runs); both share one connection. */
|
|
78
|
-
getQueue(name = RUN_QUEUE_NAME) {
|
|
79
|
-
if (this.closed)
|
|
80
|
-
throw new Error("run queue is closed");
|
|
81
|
-
let queue = this.queues.get(name);
|
|
82
|
-
if (!queue) {
|
|
83
|
-
this.conn ??= bullConnection(this.redisUrl, this.log);
|
|
84
|
-
queue = new Queue(name, { connection: this.conn });
|
|
85
|
-
queue.on("error", (err) => this.log.error("run queue error", { err, queue: name }));
|
|
86
|
-
this.queues.set(name, queue);
|
|
87
|
-
}
|
|
88
|
-
return queue;
|
|
89
|
-
}
|
|
90
99
|
/**
|
|
91
100
|
* 有未消费的用户消息(最新 user_message 的 seq > `consumed_seq`)、会话锁无人持有、
|
|
92
101
|
* 且没有 queued / running / waiting 的运行时:插入 `runs`(queued)并投递任务,返回 runId;否则返回 null。
|
|
93
102
|
*
|
|
103
|
+
* The boundary (`trigger_seq`) is that newest message; with none unconsumed, the queue's head
|
|
104
|
+
* once it is sent; with no head either, a wake-eligible finished background task or sub-agent
|
|
105
|
+
* delivery (background Bash spec §3, agent map spec §5.3, {@link wakeDecisionIn}): the run is
|
|
106
|
+
* then attributed to the event's trigger account and joins the tree's budget window, and an
|
|
107
|
+
* event inside the wake window schedules the delayed `bg-wake` job instead. A sub-agent's
|
|
108
|
+
* conversation is only woken this way ({@link childWakeIn}).
|
|
109
|
+
*
|
|
94
110
|
* 孤儿清理(R29,按需进行,没有定时器):已有的 queued / running 运行若 BullMQ 任务已不存在、
|
|
95
111
|
* 会话锁也无人持有(queued 的还要超过宽限期),说明没有任何 worker 会再执行它——写
|
|
96
112
|
* `run_failed { code: "run.orphaned" }` 把它标记为失败(consumed_seq 推进到它的触发消息),
|
|
@@ -99,155 +115,33 @@ export class RunQueue {
|
|
|
99
115
|
*
|
|
100
116
|
* agent 已软删除的会话不起新运行(孤儿清理照常进行)。
|
|
101
117
|
*/
|
|
102
|
-
async ensureRun(conversationId
|
|
118
|
+
async ensureRun(conversationId,
|
|
119
|
+
/** From the `bg-wake` job: it fired `wakeRetry - 1` times before its window ended. */
|
|
120
|
+
opts = {}) {
|
|
103
121
|
if ((await this.lock.holder(conversationId)) !== null)
|
|
104
122
|
return null;
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
//
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
.orderBy("seq", "desc")
|
|
128
|
-
.limit(1)
|
|
129
|
-
.executeTakeFirst();
|
|
130
|
-
if (!last || Number(last.seq) <= Number(conv.consumed_seq)) {
|
|
131
|
-
// Nothing unconsumed: the queue's head goes out when the conversation is idle (no active
|
|
132
|
-
// run, which includes runs waiting for approval or an answer) and the queue is not paused.
|
|
133
|
-
// Interjections are always unconsumed messages, so the queue never jumps ahead of them.
|
|
134
|
-
if (conv.queue_paused || (await this.activeRun(t, conversationId)))
|
|
135
|
-
return null;
|
|
136
|
-
const owner = await t
|
|
137
|
-
.selectFrom("agents")
|
|
138
|
-
.select("deleted_at")
|
|
139
|
-
.where("id", "=", conv.agent_id)
|
|
140
|
-
.executeTakeFirstOrThrow();
|
|
141
|
-
if (owner.deleted_at !== null)
|
|
142
|
-
return null;
|
|
143
|
-
const head = await t
|
|
144
|
-
.selectFrom("conversation_queue")
|
|
145
|
-
.select("id")
|
|
146
|
-
.where("conversation_id", "=", conversationId)
|
|
147
|
-
.limit(1)
|
|
148
|
-
.executeTakeFirst();
|
|
149
|
-
if (!head)
|
|
150
|
-
return null;
|
|
151
|
-
// A queued message may wait for hours: it goes out only while its author can still use
|
|
152
|
-
// the conversation (active, a member, the agent visible to them; the isAccessible rule).
|
|
153
|
-
// Otherwise the queue pauses instead of posting as someone who lost access.
|
|
154
|
-
if (!(await authorCanSend(t, conversationId, conv.account_id))) {
|
|
155
|
-
await pauseQueueWith(t, conversationId, "author_cannot_send");
|
|
156
|
-
pausedNow = true;
|
|
157
|
-
this.log.warn("queued message not sent: its author can no longer use the conversation", {
|
|
158
|
-
conversationId,
|
|
159
|
-
});
|
|
160
|
-
return null;
|
|
161
|
-
}
|
|
162
|
-
const sent = await dispatchQueuedIn(t, this.eventLog, conversationId);
|
|
163
|
-
if (!sent)
|
|
164
|
-
return null;
|
|
165
|
-
if ("paused" in sent) {
|
|
166
|
-
pausedNow = true;
|
|
167
|
-
this.log.warn("queued skill invocation not sent: the skill can no longer be invoked", {
|
|
168
|
-
conversationId,
|
|
169
|
-
});
|
|
170
|
-
return null;
|
|
171
|
-
}
|
|
172
|
-
dispatchedSeq = sent.event.seq;
|
|
173
|
-
dispatchedSwitch = sent.switched;
|
|
174
|
-
last = { seq: String(sent.event.seq), payload: sent.event.payload };
|
|
175
|
-
}
|
|
176
|
-
const active = await this.activeRun(t, conversationId);
|
|
177
|
-
if (active) {
|
|
178
|
-
if (!(await this.isOrphan(conversationId, active, conv.kind)))
|
|
179
|
-
return null;
|
|
180
|
-
this.log.warn("marking orphaned run as failed", { conversationId, runId: active.id });
|
|
181
|
-
orphanRunId = active.id;
|
|
182
|
-
const stop = this.stopOpenCalls(active.id);
|
|
183
|
-
orphanStop = stop;
|
|
184
|
-
orphanSeq = await finishRunIn(t, this.eventLog, {
|
|
185
|
-
conversationId,
|
|
186
|
-
runId: active.id,
|
|
187
|
-
status: "failed",
|
|
188
|
-
consumed: null,
|
|
189
|
-
...(stop.beforeTerminal !== undefined && { beforeTerminal: stop.beforeTerminal }),
|
|
190
|
-
event: {
|
|
191
|
-
type: "run_failed",
|
|
192
|
-
payload: {
|
|
193
|
-
error: { code: "run.orphaned", message: "The run was lost and will not continue" },
|
|
194
|
-
},
|
|
195
|
-
},
|
|
196
|
-
});
|
|
197
|
-
// 孤儿运行的触发消息已被消费:之后没有更新的消息就不起新一轮。
|
|
198
|
-
if (Number(last.seq) <= Math.max(Number(conv.consumed_seq), Number(active.trigger_seq))) {
|
|
199
|
-
return null;
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
// what is consumed now (an orphan's failure consumed up to its trigger)
|
|
203
|
-
const consumedNow = Math.max(Number(conv.consumed_seq), orphanRunId !== null && active ? Number(active.trigger_seq) : 0);
|
|
204
|
-
// phase D run boundary: the first unconsumed fork invocation is the trigger of the run that
|
|
205
|
-
// absorbs it (`forkBoundary`); later messages wait for the next run
|
|
206
|
-
const fork = await t
|
|
207
|
-
.selectFrom("conversation_events")
|
|
208
|
-
.select(["seq", "payload"])
|
|
209
|
-
.where("conversation_id", "=", conversationId)
|
|
210
|
-
.where("type", "=", "user_message")
|
|
211
|
-
.where("seq", ">", String(consumedNow))
|
|
212
|
-
.where(sql `payload -> 'skill' ->> 'mode' = 'fork'`)
|
|
213
|
-
.orderBy("seq")
|
|
214
|
-
.limit(1)
|
|
215
|
-
.executeTakeFirst();
|
|
216
|
-
const trigger = fork ?? last;
|
|
217
|
-
// BullMQ 对重复的 jobId 静默忽略(add 返回的 Job 由调用方数据构造,看不出是否真的入队):
|
|
218
|
-
// 先显式查同一触发点的任务;仍存在(例如属于刚结束、尚未从队列移除的运行)就不插入 runs 行。
|
|
219
|
-
const jobId = runJobId(conversationId, Number(trigger.seq));
|
|
220
|
-
const existing = await this.getQueue().getJob(jobId);
|
|
221
|
-
if (existing) {
|
|
222
|
-
this.log.warn("run job for this trigger already exists; not enqueuing", {
|
|
223
|
-
conversationId,
|
|
224
|
-
jobId,
|
|
225
|
-
existingRunId: existing.data?.runId,
|
|
226
|
-
});
|
|
227
|
-
return null;
|
|
228
|
-
}
|
|
229
|
-
const agent = await t
|
|
230
|
-
.selectFrom("agents")
|
|
231
|
-
.select(["current_version", "deleted_at"])
|
|
232
|
-
.where("id", "=", conv.agent_id)
|
|
233
|
-
.executeTakeFirstOrThrow();
|
|
234
|
-
// agent 已软删除:会话对任何人都不可见,不再为它起运行。
|
|
235
|
-
if (agent.deleted_at !== null)
|
|
236
|
-
return null;
|
|
237
|
-
const runId = randomUUID();
|
|
238
|
-
await t
|
|
239
|
-
.insertInto("runs")
|
|
240
|
-
.values({
|
|
241
|
-
id: runId,
|
|
242
|
-
conversation_id: conversationId,
|
|
243
|
-
status: "queued",
|
|
244
|
-
agent_version: agent.current_version,
|
|
245
|
-
trigger_account_id: trigger.payload.authorAccountId,
|
|
246
|
-
trigger_seq: Number(trigger.seq),
|
|
247
|
-
})
|
|
248
|
-
.execute();
|
|
249
|
-
return { runId, jobId };
|
|
250
|
-
});
|
|
123
|
+
const st = {
|
|
124
|
+
orphanSeq: null,
|
|
125
|
+
orphanRunId: null,
|
|
126
|
+
dispatchedSeq: null,
|
|
127
|
+
dispatchedSwitch: false,
|
|
128
|
+
dispatchedUnarchived: false,
|
|
129
|
+
pausedNow: false,
|
|
130
|
+
orphanStop: undefined,
|
|
131
|
+
wakeLater: null,
|
|
132
|
+
repairRunId: null,
|
|
133
|
+
};
|
|
134
|
+
const created = await this.ensureRunIn(conversationId, st);
|
|
135
|
+
if (st.repairRunId !== null) {
|
|
136
|
+
// a sub-agent's run nobody runs any more: requeued when queued, failed when running (its
|
|
137
|
+
// finish then reaches the parent through the wait sweep's undelivered repair)
|
|
138
|
+
await this.repairOrphan(conversationId, st.repairRunId);
|
|
139
|
+
}
|
|
140
|
+
if (st.wakeLater !== null) {
|
|
141
|
+
await this.scheduleWake(conversationId, st.wakeLater, opts.wakeRetry ?? 0);
|
|
142
|
+
}
|
|
143
|
+
const { orphanSeq, orphanRunId, dispatchedSeq, dispatchedSwitch, pausedNow, orphanStop } = st;
|
|
144
|
+
const { dispatchedUnarchived } = st;
|
|
251
145
|
if (orphanSeq !== null) {
|
|
252
146
|
await notifyFinished(this.eventLog, conversationId, orphanSeq, "failed");
|
|
253
147
|
orphanStop?.fire();
|
|
@@ -260,23 +154,22 @@ export class RunQueue {
|
|
|
260
154
|
await this.eventLog.publishChanged(conversationId, "queue");
|
|
261
155
|
if (dispatchedSwitch)
|
|
262
156
|
await this.eventLog.publishChanged(conversationId, "selection");
|
|
157
|
+
if (dispatchedUnarchived)
|
|
158
|
+
await this.eventLog.publishChanged(conversationId, "archived");
|
|
263
159
|
}
|
|
264
160
|
if (orphanRunId !== null) {
|
|
265
161
|
await this.dropCheckpoints(orphanRunId);
|
|
266
162
|
// a lost parent stops its children now, not at the next sweep (review m2)
|
|
267
163
|
if (orphanSeq !== null) {
|
|
268
|
-
await this.
|
|
269
|
-
runId: orphanRunId,
|
|
270
|
-
err,
|
|
271
|
-
}));
|
|
164
|
+
await this.events.emit("run.orphaned", { runId: orphanRunId });
|
|
272
165
|
}
|
|
273
166
|
}
|
|
274
167
|
if (!created)
|
|
275
168
|
return null;
|
|
276
|
-
const { runId, jobId } = created;
|
|
169
|
+
const { runId, jobId, kind } = created;
|
|
277
170
|
try {
|
|
278
|
-
const queue = this.
|
|
279
|
-
await
|
|
171
|
+
const queue = this.jobs.queue(runQueueNameFor(kind));
|
|
172
|
+
await this.jobs.enqueue({ runId, conversationId }, jobId, kind);
|
|
280
173
|
// 从 Redis 读回核对:检查与 add 之间出现了同 jobId 的任务时 add 被静默忽略,撤销本次插入,
|
|
281
174
|
// 不留下没有任务的 queued 行。读不到说明任务已被领取并移除(只可能是本次投递的),不撤销。
|
|
282
175
|
const stored = await queue.getJob(jobId);
|
|
@@ -297,25 +190,381 @@ export class RunQueue {
|
|
|
297
190
|
}
|
|
298
191
|
return runId;
|
|
299
192
|
}
|
|
193
|
+
/** {@link ensureRun}'s transaction: what it decided goes back through `st`. */
|
|
194
|
+
async ensureRunIn(conversationId, st) {
|
|
195
|
+
const t = this.db;
|
|
196
|
+
const conv = await t
|
|
197
|
+
.selectFrom("conversations")
|
|
198
|
+
.select([
|
|
199
|
+
"consumed_seq",
|
|
200
|
+
"org_id",
|
|
201
|
+
"agent_id",
|
|
202
|
+
"kind",
|
|
203
|
+
"queue_paused",
|
|
204
|
+
"account_id",
|
|
205
|
+
"deleted_at",
|
|
206
|
+
])
|
|
207
|
+
.where("id", "=", conversationId)
|
|
208
|
+
.forUpdate()
|
|
209
|
+
.executeTakeFirst();
|
|
210
|
+
// 评测回放的隐藏对话:运行由评测 worker 在里面直接驱动(工具只回放记录),绝不为它起真实运行
|
|
211
|
+
if (conv?.kind !== "chat" && conv?.kind !== "subagent")
|
|
212
|
+
return null;
|
|
213
|
+
// A deleted conversation starts no run, whatever is still unconsumed or queued
|
|
214
|
+
if (conv.deleted_at !== null)
|
|
215
|
+
return null;
|
|
216
|
+
if (conv.kind === "subagent")
|
|
217
|
+
return this.childWakeIn(conversationId, conv, st);
|
|
218
|
+
const newest = await t
|
|
219
|
+
.selectFrom("conversation_events")
|
|
220
|
+
.select(["seq", "payload"])
|
|
221
|
+
.where("conversation_id", "=", conversationId)
|
|
222
|
+
.where("type", "=", "user_message")
|
|
223
|
+
.orderBy("seq", "desc")
|
|
224
|
+
.limit(1)
|
|
225
|
+
.executeTakeFirst();
|
|
226
|
+
/** The boundary is a wake event: the run joins the tree's budget window (agent map §6). */
|
|
227
|
+
let isWake = false;
|
|
228
|
+
/** The run's boundary: its `trigger_seq` and the account it runs as. */
|
|
229
|
+
let last = newest && {
|
|
230
|
+
seq: newest.seq,
|
|
231
|
+
accountId: newest.payload.authorAccountId,
|
|
232
|
+
};
|
|
233
|
+
const idleActive = !last || Number(last.seq) <= Number(conv.consumed_seq)
|
|
234
|
+
? await this.activeRun(t, conversationId)
|
|
235
|
+
: undefined;
|
|
236
|
+
if (idleActive && Number(idleActive.trigger_seq) > Number(conv.consumed_seq)) {
|
|
237
|
+
// No unconsumed message, but a run whose boundary is not consumed yet (a wake run, whose
|
|
238
|
+
// boundary is a finished background task or a sub-agent's delivery): it goes through the
|
|
239
|
+
// orphan check below with that boundary, as a message's run does
|
|
240
|
+
last = { seq: idleActive.trigger_seq, accountId: idleActive.trigger_account_id };
|
|
241
|
+
}
|
|
242
|
+
else if (!last || Number(last.seq) <= Number(conv.consumed_seq)) {
|
|
243
|
+
// Nothing unconsumed: the queue's head goes out when the conversation is idle (no active
|
|
244
|
+
// run, which includes runs waiting for approval or an answer) and the queue is not paused.
|
|
245
|
+
// Interjections are always unconsumed messages, so the queue never jumps ahead of them.
|
|
246
|
+
if (conv.queue_paused || idleActive)
|
|
247
|
+
return null;
|
|
248
|
+
const owner = await t
|
|
249
|
+
.selectFrom("agents")
|
|
250
|
+
.select("deleted_at")
|
|
251
|
+
.where("id", "=", conv.agent_id)
|
|
252
|
+
.executeTakeFirstOrThrow();
|
|
253
|
+
if (owner.deleted_at !== null)
|
|
254
|
+
return null;
|
|
255
|
+
const head = await t
|
|
256
|
+
.selectFrom("conversation_queue")
|
|
257
|
+
.select("id")
|
|
258
|
+
.where("conversation_id", "=", conversationId)
|
|
259
|
+
.limit(1)
|
|
260
|
+
.executeTakeFirst();
|
|
261
|
+
if (head) {
|
|
262
|
+
// A queued message may wait for hours: it goes out only while its author can still use
|
|
263
|
+
// the conversation (active, a member, the agent visible to them; the isAccessible rule).
|
|
264
|
+
// Otherwise the queue pauses instead of posting as someone who lost access.
|
|
265
|
+
if (!(await authorCanSend(t, conversationId, conv.account_id))) {
|
|
266
|
+
await pauseQueueWith(t, conversationId, "author_cannot_send");
|
|
267
|
+
st.pausedNow = true;
|
|
268
|
+
this.log.warn("queued message not sent: its author can no longer use the conversation", {
|
|
269
|
+
conversationId,
|
|
270
|
+
});
|
|
271
|
+
return null;
|
|
272
|
+
}
|
|
273
|
+
const sent = await dispatchQueuedIn(t, this.eventLog, conversationId);
|
|
274
|
+
if (!sent)
|
|
275
|
+
return null;
|
|
276
|
+
if ("paused" in sent) {
|
|
277
|
+
st.pausedNow = true;
|
|
278
|
+
this.log.warn("queued skill invocation not sent: the skill can no longer be invoked", {
|
|
279
|
+
conversationId,
|
|
280
|
+
});
|
|
281
|
+
return null;
|
|
282
|
+
}
|
|
283
|
+
st.dispatchedSeq = sent.event.seq;
|
|
284
|
+
st.dispatchedSwitch = sent.switched;
|
|
285
|
+
st.dispatchedUnarchived = sent.unarchived;
|
|
286
|
+
last = {
|
|
287
|
+
seq: String(sent.event.seq),
|
|
288
|
+
accountId: sent.event.payload.authorAccountId,
|
|
289
|
+
};
|
|
290
|
+
}
|
|
291
|
+
else {
|
|
292
|
+
// Nothing queued either: a finished background task may wake the idle conversation
|
|
293
|
+
// (background Bash spec §3; a person's message or the queue always goes first)
|
|
294
|
+
const wake = await wakeDecisionIn(t, { id: conversationId, orgId: conv.org_id, rootId: conversationId }, Number(conv.consumed_seq), this.config.get().runtime.wakeOnBackgroundTask, (accountId) => authorCanSend(t, conversationId, accountId));
|
|
295
|
+
if (wake?.kind === "later")
|
|
296
|
+
st.wakeLater = wake;
|
|
297
|
+
if (wake?.kind !== "wake")
|
|
298
|
+
return null;
|
|
299
|
+
last = { seq: String(wake.seq), accountId: wake.triggerAccountId };
|
|
300
|
+
isWake = true;
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
const active = await this.activeRun(t, conversationId);
|
|
304
|
+
if (active) {
|
|
305
|
+
if (!(await this.isOrphan(conversationId, active, conv.kind)))
|
|
306
|
+
return null;
|
|
307
|
+
this.log.warn("marking orphaned run as failed", { conversationId, runId: active.id });
|
|
308
|
+
st.orphanRunId = active.id;
|
|
309
|
+
const stop = this.stopOpenCalls(active.id);
|
|
310
|
+
st.orphanStop = stop;
|
|
311
|
+
st.orphanSeq = await this.finisher.finishIn({
|
|
312
|
+
conversationId,
|
|
313
|
+
runId: active.id,
|
|
314
|
+
status: "failed",
|
|
315
|
+
consumed: null,
|
|
316
|
+
...(stop.beforeTerminal !== undefined && { beforeTerminal: stop.beforeTerminal }),
|
|
317
|
+
event: {
|
|
318
|
+
type: "run_failed",
|
|
319
|
+
payload: {
|
|
320
|
+
error: { code: "run.orphaned", message: "The run was lost and will not continue" },
|
|
321
|
+
},
|
|
322
|
+
},
|
|
323
|
+
});
|
|
324
|
+
// 孤儿运行的触发消息已被消费:之后没有更新的消息就不起新一轮。
|
|
325
|
+
if (Number(last.seq) <= Math.max(Number(conv.consumed_seq), Number(active.trigger_seq))) {
|
|
326
|
+
return null;
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
// what is consumed now (an orphan's failure consumed up to its trigger)
|
|
330
|
+
const consumedNow = Math.max(Number(conv.consumed_seq), st.orphanRunId !== null && active ? Number(active.trigger_seq) : 0);
|
|
331
|
+
// phase D run boundary: the first unconsumed fork invocation is the trigger of the run that
|
|
332
|
+
// absorbs it (`forkBoundary`); later messages wait for the next run
|
|
333
|
+
const fork = await t
|
|
334
|
+
.selectFrom("conversation_events")
|
|
335
|
+
.select(["seq", "payload"])
|
|
336
|
+
.where("conversation_id", "=", conversationId)
|
|
337
|
+
.where("type", "=", "user_message")
|
|
338
|
+
.where("seq", ">", String(consumedNow))
|
|
339
|
+
.where(sql `payload -> 'skill' ->> 'mode' = 'fork'`)
|
|
340
|
+
.orderBy("seq")
|
|
341
|
+
.limit(1)
|
|
342
|
+
.executeTakeFirst();
|
|
343
|
+
const trigger = fork
|
|
344
|
+
? { seq: fork.seq, accountId: fork.payload.authorAccountId }
|
|
345
|
+
: last;
|
|
346
|
+
// BullMQ 对重复的 jobId 静默忽略(add 返回的 Job 由调用方数据构造,看不出是否真的入队):
|
|
347
|
+
// 先显式查同一触发点的任务;仍存在(例如属于刚结束、尚未从队列移除的运行)就不插入 runs 行。
|
|
348
|
+
const jobId = runJobId(conversationId, Number(trigger.seq));
|
|
349
|
+
const existing = await this.jobs.getJob(jobId);
|
|
350
|
+
if (existing) {
|
|
351
|
+
this.log.warn("run job for this trigger already exists; not enqueuing", {
|
|
352
|
+
conversationId,
|
|
353
|
+
jobId,
|
|
354
|
+
existingRunId: existing.data?.runId,
|
|
355
|
+
});
|
|
356
|
+
return null;
|
|
357
|
+
}
|
|
358
|
+
const agent = await t
|
|
359
|
+
.selectFrom("agents")
|
|
360
|
+
.select(["current_version", "deleted_at"])
|
|
361
|
+
.where("id", "=", conv.agent_id)
|
|
362
|
+
.executeTakeFirstOrThrow();
|
|
363
|
+
// agent 已软删除:会话对任何人都不可见,不再为它起运行。
|
|
364
|
+
if (agent.deleted_at !== null)
|
|
365
|
+
return null;
|
|
366
|
+
const runId = randomUUID();
|
|
367
|
+
await t
|
|
368
|
+
.insertInto("runs")
|
|
369
|
+
.values({
|
|
370
|
+
id: runId,
|
|
371
|
+
conversation_id: conversationId,
|
|
372
|
+
status: "queued",
|
|
373
|
+
agent_version: agent.current_version,
|
|
374
|
+
trigger_account_id: trigger.accountId,
|
|
375
|
+
trigger_seq: Number(trigger.seq),
|
|
376
|
+
// a chat conversation always has its person-triggered run before any wake (a wake event
|
|
377
|
+
// comes from a run of it or of its tree); null would only make the wake run its own window
|
|
378
|
+
budget_run_id: isWake ? await budgetWindowOf(t, conversationId) : null,
|
|
379
|
+
})
|
|
380
|
+
.execute();
|
|
381
|
+
return { runId, jobId, kind: "chat" };
|
|
382
|
+
}
|
|
383
|
+
/**
|
|
384
|
+
* {@link ensureRunIn} for a sub-agent's conversation (agent map spec §5.3), under its row lock.
|
|
385
|
+
* Its runs from a task, or from a message to an idle sub-agent, are started by the dispatch
|
|
386
|
+
* (`Agent`, `SendMessage`), which also records the dispatch. Here it is started from a parent's
|
|
387
|
+
* message that reached its run after that run's last model call (agent map spec §10: a message
|
|
388
|
+
* racing the run's end starts a new run, never lost); and it is woken by its own background
|
|
389
|
+
* task's finish or a delivery from its own sub-agent, under the same rules as a chat
|
|
390
|
+
* conversation. Neither happens once its last run was stopped (`aborted`): a stopped sub-agent is
|
|
391
|
+
* started again only by its parent. Both read the queue and the trigger account's access on the root
|
|
392
|
+
* of its tree; a message needs no wake setting and has no wake window. The run counts against
|
|
393
|
+
* the root's budget window and runs on the sub-agent queue under `runJobId(child, boundary
|
|
394
|
+
* seq)`. An active run is left to the orphan repair after the commit (`repairRunId`), never
|
|
395
|
+
* started past.
|
|
396
|
+
*/
|
|
397
|
+
async childWakeIn(conversationId, conv, st) {
|
|
398
|
+
const t = this.db;
|
|
399
|
+
const active = await this.activeRun(t, conversationId);
|
|
400
|
+
if (active) {
|
|
401
|
+
if (active.status !== "waiting")
|
|
402
|
+
st.repairRunId = active.id;
|
|
403
|
+
return null;
|
|
404
|
+
}
|
|
405
|
+
// a stopped sub-agent (its last run `aborted`: a person's or a tree stop) stays stopped: no
|
|
406
|
+
// message, task finish or delivery that reached it before or during the stop wakes it (a
|
|
407
|
+
// descendant's report that landed just before the stop would otherwise restart the stopped
|
|
408
|
+
// branch); they are parked for its next run, which only its parent starts (`Agent`,
|
|
409
|
+
// `SendMessage`)
|
|
410
|
+
const last = await t
|
|
411
|
+
.selectFrom("runs")
|
|
412
|
+
.select("status")
|
|
413
|
+
.where("conversation_id", "=", conversationId)
|
|
414
|
+
.orderBy("created_at", "desc")
|
|
415
|
+
.orderBy("id", "desc")
|
|
416
|
+
.limit(1)
|
|
417
|
+
.executeTakeFirst();
|
|
418
|
+
if (last?.status === "aborted")
|
|
419
|
+
return null;
|
|
420
|
+
const rootId = await rootConversationOf(t, conversationId);
|
|
421
|
+
const wake = (await this.pendingMessageIn(conversationId, Number(conv.consumed_seq), rootId)) ??
|
|
422
|
+
(await wakeDecisionIn(t, { id: conversationId, orgId: conv.org_id, rootId }, Number(conv.consumed_seq), this.config.get().runtime.wakeOnBackgroundTask, (accountId) => authorCanSend(t, rootId, accountId)));
|
|
423
|
+
if (wake?.kind === "later")
|
|
424
|
+
st.wakeLater = wake;
|
|
425
|
+
if (wake?.kind !== "wake")
|
|
426
|
+
return null;
|
|
427
|
+
const jobId = runJobId(conversationId, wake.seq);
|
|
428
|
+
const existing = await this.jobs.getJob(jobId, runQueueNameFor("subagent"));
|
|
429
|
+
if (existing) {
|
|
430
|
+
this.log.warn("run job for this trigger already exists; not enqueuing", {
|
|
431
|
+
conversationId,
|
|
432
|
+
jobId,
|
|
433
|
+
existingRunId: existing.data?.runId,
|
|
434
|
+
});
|
|
435
|
+
return null;
|
|
436
|
+
}
|
|
437
|
+
const agent = await t
|
|
438
|
+
.selectFrom("agents")
|
|
439
|
+
.select(["current_version", "deleted_at"])
|
|
440
|
+
.where("id", "=", conv.agent_id)
|
|
441
|
+
.executeTakeFirstOrThrow();
|
|
442
|
+
if (agent.deleted_at !== null)
|
|
443
|
+
return null;
|
|
444
|
+
// a sub-agent runs its definition frozen at dispatch: its runs keep the version recorded then
|
|
445
|
+
const previous = await t
|
|
446
|
+
.selectFrom("runs")
|
|
447
|
+
.select("agent_version")
|
|
448
|
+
.where("conversation_id", "=", conversationId)
|
|
449
|
+
.orderBy("created_at", "desc")
|
|
450
|
+
.limit(1)
|
|
451
|
+
.executeTakeFirst();
|
|
452
|
+
const runId = randomUUID();
|
|
453
|
+
await t
|
|
454
|
+
.insertInto("runs")
|
|
455
|
+
.values({
|
|
456
|
+
id: runId,
|
|
457
|
+
conversation_id: conversationId,
|
|
458
|
+
status: "queued",
|
|
459
|
+
agent_version: previous?.agent_version ?? agent.current_version,
|
|
460
|
+
trigger_account_id: wake.triggerAccountId,
|
|
461
|
+
trigger_seq: wake.seq,
|
|
462
|
+
budget_run_id: await budgetWindowOf(t, rootId),
|
|
463
|
+
})
|
|
464
|
+
.execute();
|
|
465
|
+
return { runId, jobId, kind: "subagent" };
|
|
466
|
+
}
|
|
467
|
+
/**
|
|
468
|
+
* The newest unconsumed message of an idle sub-agent (a `SendMessage` its last run did not absorb)
|
|
469
|
+
* as a run boundary, or null: none; the root's queue is paused or the root deleted (the
|
|
470
|
+
* message waits for the unpause, {@link wakeHeldTree}); or its author can no longer send to the
|
|
471
|
+
* root (it waits for a later run). The caller already refused a stopped sub-agent (last run
|
|
472
|
+
* `aborted`): a message that reached it while running and then stopped is parked, and the next
|
|
473
|
+
* run its parent starts absorbs it. Called under the sub-agent's row lock.
|
|
474
|
+
*/
|
|
475
|
+
async pendingMessageIn(conversationId, consumed, rootId) {
|
|
476
|
+
const t = this.db;
|
|
477
|
+
const message = await t
|
|
478
|
+
.selectFrom("conversation_events")
|
|
479
|
+
.select(["seq", "payload"])
|
|
480
|
+
.where("conversation_id", "=", conversationId)
|
|
481
|
+
.where("type", "=", "user_message")
|
|
482
|
+
.where("seq", ">", String(consumed))
|
|
483
|
+
.orderBy("seq", "desc")
|
|
484
|
+
.limit(1)
|
|
485
|
+
.executeTakeFirst();
|
|
486
|
+
if (!message)
|
|
487
|
+
return null;
|
|
488
|
+
const root = await t
|
|
489
|
+
.selectFrom("conversations")
|
|
490
|
+
.select(["queue_paused", "deleted_at"])
|
|
491
|
+
.where("id", "=", rootId)
|
|
492
|
+
.executeTakeFirst();
|
|
493
|
+
if (!root || root.queue_paused || root.deleted_at !== null)
|
|
494
|
+
return null;
|
|
495
|
+
const accountId = message.payload.authorAccountId;
|
|
496
|
+
if (!(await authorCanSend(t, rootId, accountId)))
|
|
497
|
+
return null;
|
|
498
|
+
return { kind: "wake", seq: Number(message.seq), triggerAccountId: accountId };
|
|
499
|
+
}
|
|
500
|
+
/**
|
|
501
|
+
* Re-derives the wakes a paused root held for its tree (agent map spec §5.3: a paused root queue
|
|
502
|
+
* holds the wakes of the whole tree): after the root's queue is unpaused, {@link ensureRun} on
|
|
503
|
+
* every sub-agent conversation below it that has an unconsumed wake event or message and no
|
|
504
|
+
* active run (the root itself is the caller's own `ensureRun`). Errors are logged; the next
|
|
505
|
+
* event, run end or page opening of that conversation re-derives its wake.
|
|
506
|
+
*/
|
|
507
|
+
async wakeHeldTree(rootId) {
|
|
508
|
+
const ids = (await conversationTree(this.db, rootId))
|
|
509
|
+
.filter((c) => c.level > 0)
|
|
510
|
+
.map((c) => c.id);
|
|
511
|
+
if (ids.length === 0)
|
|
512
|
+
return;
|
|
513
|
+
const held = await this.db
|
|
514
|
+
.selectFrom("conversations as c")
|
|
515
|
+
.select("c.id")
|
|
516
|
+
.where("c.id", "in", ids)
|
|
517
|
+
.where("c.deleted_at", "is", null)
|
|
518
|
+
.where(({ exists, selectFrom }) => exists(selectFrom("conversation_events as e")
|
|
519
|
+
.select(sql `1`.as("one"))
|
|
520
|
+
.whereRef("e.conversation_id", "=", "c.id")
|
|
521
|
+
.where("e.type", "in", [
|
|
522
|
+
"background_task_finished",
|
|
523
|
+
"subagent_delivery",
|
|
524
|
+
"user_message",
|
|
525
|
+
])
|
|
526
|
+
.whereRef("e.seq", ">", "c.consumed_seq")))
|
|
527
|
+
.where(({ not, exists, selectFrom }) => not(exists(selectFrom("runs as r")
|
|
528
|
+
.select(sql `1`.as("one"))
|
|
529
|
+
.whereRef("r.conversation_id", "=", "c.id")
|
|
530
|
+
.where("r.status", "in", ACTIVE_RUN_STATUSES))))
|
|
531
|
+
.execute();
|
|
532
|
+
for (const c of held) {
|
|
533
|
+
try {
|
|
534
|
+
await this.ensureRun(c.id);
|
|
535
|
+
}
|
|
536
|
+
catch (err) {
|
|
537
|
+
this.log.warn("cannot wake a held sub-agent", { conversationId: c.id, err });
|
|
538
|
+
}
|
|
539
|
+
}
|
|
540
|
+
}
|
|
541
|
+
/**
|
|
542
|
+
* Schedules the delayed `bg-wake` job at the end of the conversation's wake window (after the
|
|
543
|
+
* commit): one job per conversation and window end, so finishes inside one window share it. It
|
|
544
|
+
* calls {@link ensureRun}, which wakes the conversation if a finish is still unconsumed. A failed
|
|
545
|
+
* enqueue is logged: the next message, run end or page opening re-derives the wake.
|
|
546
|
+
*/
|
|
547
|
+
async scheduleWake(conversationId, w, retry) {
|
|
548
|
+
const data = { conversationId, ...(retry > 0 && { retry }) };
|
|
549
|
+
try {
|
|
550
|
+
await this.maintenance.add(BG_WAKE_JOB, data, {
|
|
551
|
+
// a job that fired early reschedules under a new id (its own is still taken)
|
|
552
|
+
jobId: bgWakeJobId(conversationId, w.windowEnd, retry),
|
|
553
|
+
delay: w.delayMs + WAKE_JOB_MARGIN_MS,
|
|
554
|
+
removeOnComplete: true,
|
|
555
|
+
removeOnFail: true,
|
|
556
|
+
});
|
|
557
|
+
}
|
|
558
|
+
catch (err) {
|
|
559
|
+
this.log.error("cannot schedule the background task wake", { conversationId, err });
|
|
560
|
+
}
|
|
561
|
+
}
|
|
300
562
|
/**
|
|
301
563
|
* Enqueues a run job under the caller's job id (resumes, dispatches, repairs), with the same
|
|
302
|
-
* options as {@link ensureRun}
|
|
303
|
-
* to {@link SUBAGENT_RUN_QUEUE_NAME}); pass `kind` when the caller knows it, else it is read.
|
|
564
|
+
* options as {@link ensureRun} (see {@link RunJobs.enqueue}).
|
|
304
565
|
*/
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
(await this.db
|
|
308
|
-
.selectFrom("conversations")
|
|
309
|
-
.select("kind")
|
|
310
|
-
.where("id", "=", data.conversationId)
|
|
311
|
-
.executeTakeFirst())?.kind ??
|
|
312
|
-
"chat";
|
|
313
|
-
await this.getQueue(runQueueNameFor(k)).add("run", data, {
|
|
314
|
-
jobId,
|
|
315
|
-
attempts: 1,
|
|
316
|
-
removeOnComplete: true,
|
|
317
|
-
removeOnFail: true,
|
|
318
|
-
});
|
|
566
|
+
enqueue(data, jobId, kind) {
|
|
567
|
+
return this.jobs.enqueue(data, jobId, kind);
|
|
319
568
|
}
|
|
320
569
|
/**
|
|
321
570
|
* 中止一个孤儿运行(`POST .../abort` 用):运行仍是 queued / running、会话锁无人持有、BullMQ 任务已不存在
|
|
@@ -327,31 +576,7 @@ export class RunQueue {
|
|
|
327
576
|
if ((await this.lock.holder(conversationId)) !== null)
|
|
328
577
|
return false;
|
|
329
578
|
const stop = this.stopOpenCalls(runId);
|
|
330
|
-
const toSeq = await this.
|
|
331
|
-
const conv = await t
|
|
332
|
-
.selectFrom("conversations")
|
|
333
|
-
.select("kind")
|
|
334
|
-
.where("id", "=", conversationId)
|
|
335
|
-
.forUpdate()
|
|
336
|
-
.executeTakeFirst();
|
|
337
|
-
const active = await this.activeRun(t, conversationId);
|
|
338
|
-
if (!conv || !active || active.id !== runId)
|
|
339
|
-
return null;
|
|
340
|
-
if (!(await this.isOrphan(conversationId, active, conv.kind)))
|
|
341
|
-
return null;
|
|
342
|
-
this.log.warn("aborting orphaned run directly", { conversationId, runId });
|
|
343
|
-
return finishRunIn(t, this.eventLog, {
|
|
344
|
-
conversationId,
|
|
345
|
-
runId,
|
|
346
|
-
status: "aborted",
|
|
347
|
-
consumed: null,
|
|
348
|
-
...(stop.beforeTerminal !== undefined && { beforeTerminal: stop.beforeTerminal }),
|
|
349
|
-
event: {
|
|
350
|
-
type: "run_aborted",
|
|
351
|
-
payload: { byAccountId, reason: "user", ...(detail !== undefined && { detail }) },
|
|
352
|
-
},
|
|
353
|
-
});
|
|
354
|
-
});
|
|
579
|
+
const toSeq = await this.abortOrphanIn(conversationId, runId, byAccountId, detail, stop);
|
|
355
580
|
if (toSeq === null)
|
|
356
581
|
return false;
|
|
357
582
|
await notifyFinished(this.eventLog, conversationId, toSeq, "aborted");
|
|
@@ -359,6 +584,32 @@ export class RunQueue {
|
|
|
359
584
|
await this.dropCheckpoints(runId);
|
|
360
585
|
return true;
|
|
361
586
|
}
|
|
587
|
+
async abortOrphanIn(conversationId, runId, byAccountId, detail, stop) {
|
|
588
|
+
const t = this.db;
|
|
589
|
+
const conv = await t
|
|
590
|
+
.selectFrom("conversations")
|
|
591
|
+
.select("kind")
|
|
592
|
+
.where("id", "=", conversationId)
|
|
593
|
+
.forUpdate()
|
|
594
|
+
.executeTakeFirst();
|
|
595
|
+
const active = await this.activeRun(t, conversationId);
|
|
596
|
+
if (!conv || !active || active.id !== runId)
|
|
597
|
+
return null;
|
|
598
|
+
if (!(await this.isOrphan(conversationId, active, conv.kind)))
|
|
599
|
+
return null;
|
|
600
|
+
this.log.warn("aborting orphaned run directly", { conversationId, runId });
|
|
601
|
+
return this.finisher.finishIn({
|
|
602
|
+
conversationId,
|
|
603
|
+
runId,
|
|
604
|
+
status: "aborted",
|
|
605
|
+
consumed: null,
|
|
606
|
+
beforeTerminal: stop.beforeTerminal,
|
|
607
|
+
event: {
|
|
608
|
+
type: "run_aborted",
|
|
609
|
+
payload: { byAccountId, reason: "user", ...(detail !== undefined && { detail }) },
|
|
610
|
+
},
|
|
611
|
+
});
|
|
612
|
+
}
|
|
362
613
|
/**
|
|
363
614
|
* Repairs an orphaned run of a conversation nobody else repairs on demand (a sub-agent's: no
|
|
364
615
|
* `ensureRun` ever runs for it; sub-agents spec §7.5), with the same orphan test as
|
|
@@ -374,37 +625,7 @@ export class RunQueue {
|
|
|
374
625
|
async repairOrphan(conversationId, runId) {
|
|
375
626
|
if ((await this.lock.holder(conversationId)) !== null)
|
|
376
627
|
return null;
|
|
377
|
-
const r = await this.
|
|
378
|
-
const conv = await t
|
|
379
|
-
.selectFrom("conversations")
|
|
380
|
-
.select("kind")
|
|
381
|
-
.where("id", "=", conversationId)
|
|
382
|
-
.forUpdate()
|
|
383
|
-
.executeTakeFirst();
|
|
384
|
-
const active = await this.activeRun(t, conversationId);
|
|
385
|
-
if (!conv || !active || active.id !== runId)
|
|
386
|
-
return null;
|
|
387
|
-
if (!(await this.isOrphan(conversationId, active, conv.kind)))
|
|
388
|
-
return null;
|
|
389
|
-
if (active.status === "queued") {
|
|
390
|
-
const jobId = active.job_id ?? runJobId(conversationId, Number(active.trigger_seq));
|
|
391
|
-
return { kind: "requeued", jobId, convKind: conv.kind };
|
|
392
|
-
}
|
|
393
|
-
this.log.warn("marking orphaned run as failed", { conversationId, runId });
|
|
394
|
-
const seq = await finishRunIn(t, this.eventLog, {
|
|
395
|
-
conversationId,
|
|
396
|
-
runId,
|
|
397
|
-
status: "failed",
|
|
398
|
-
consumed: null,
|
|
399
|
-
event: {
|
|
400
|
-
type: "run_failed",
|
|
401
|
-
payload: {
|
|
402
|
-
error: { code: "run.orphaned", message: "The run was lost and will not continue" },
|
|
403
|
-
},
|
|
404
|
-
},
|
|
405
|
-
});
|
|
406
|
-
return { kind: "failed", seq };
|
|
407
|
-
});
|
|
628
|
+
const r = await this.repairOrphanIn(conversationId, runId);
|
|
408
629
|
if (!r)
|
|
409
630
|
return null;
|
|
410
631
|
if (r.kind === "requeued") {
|
|
@@ -416,6 +637,38 @@ export class RunQueue {
|
|
|
416
637
|
await this.dropCheckpoints(runId);
|
|
417
638
|
return "failed";
|
|
418
639
|
}
|
|
640
|
+
async repairOrphanIn(conversationId, runId) {
|
|
641
|
+
const t = this.db;
|
|
642
|
+
const conv = await t
|
|
643
|
+
.selectFrom("conversations")
|
|
644
|
+
.select("kind")
|
|
645
|
+
.where("id", "=", conversationId)
|
|
646
|
+
.forUpdate()
|
|
647
|
+
.executeTakeFirst();
|
|
648
|
+
const active = await this.activeRun(t, conversationId);
|
|
649
|
+
if (!conv || !active || active.id !== runId)
|
|
650
|
+
return null;
|
|
651
|
+
if (!(await this.isOrphan(conversationId, active, conv.kind)))
|
|
652
|
+
return null;
|
|
653
|
+
if (active.status === "queued") {
|
|
654
|
+
const jobId = active.job_id ?? runJobId(conversationId, Number(active.trigger_seq));
|
|
655
|
+
return { kind: "requeued", jobId, convKind: conv.kind };
|
|
656
|
+
}
|
|
657
|
+
this.log.warn("marking orphaned run as failed", { conversationId, runId });
|
|
658
|
+
const seq = await this.finisher.finishIn({
|
|
659
|
+
conversationId,
|
|
660
|
+
runId,
|
|
661
|
+
status: "failed",
|
|
662
|
+
consumed: null,
|
|
663
|
+
event: {
|
|
664
|
+
type: "run_failed",
|
|
665
|
+
payload: {
|
|
666
|
+
error: { code: "run.orphaned", message: "The run was lost and will not continue" },
|
|
667
|
+
},
|
|
668
|
+
},
|
|
669
|
+
});
|
|
670
|
+
return { kind: "failed", seq };
|
|
671
|
+
}
|
|
419
672
|
/** 会话当前未结束的运行(调用方已持有会话行锁)。 */
|
|
420
673
|
activeRun(t, conversationId) {
|
|
421
674
|
return t
|
|
@@ -424,6 +677,7 @@ export class RunQueue {
|
|
|
424
677
|
"id",
|
|
425
678
|
"status",
|
|
426
679
|
"trigger_seq",
|
|
680
|
+
"trigger_account_id",
|
|
427
681
|
"job_id",
|
|
428
682
|
sql `COALESCE(queued_at, created_at) < now() - make_interval(secs => ${ORPHAN_QUEUED_GRACE_SECONDS})`.as("past_grace"),
|
|
429
683
|
])
|
|
@@ -442,13 +696,13 @@ export class RunQueue {
|
|
|
442
696
|
if (active.status === "queued" && !active.past_grace)
|
|
443
697
|
return false;
|
|
444
698
|
const jobId = active.job_id ?? runJobId(conversationId, Number(active.trigger_seq));
|
|
445
|
-
const job = await this.
|
|
699
|
+
const job = await this.jobs.getJob(jobId, runQueueNameFor(kind));
|
|
446
700
|
return !job;
|
|
447
701
|
}
|
|
448
702
|
/** 删除已结束运行的 checkpoint thread(失败只记日志)。 */
|
|
449
703
|
async dropCheckpoints(runId) {
|
|
450
704
|
await this.checkpoints
|
|
451
|
-
|
|
705
|
+
.deleteThread(runId)
|
|
452
706
|
.catch((err) => this.log.warn("checkpoint delete failed", { runId, err }));
|
|
453
707
|
}
|
|
454
708
|
async deleteQueued(runId) {
|
|
@@ -458,17 +712,32 @@ export class RunQueue {
|
|
|
458
712
|
.where("status", "=", "queued")
|
|
459
713
|
.execute();
|
|
460
714
|
}
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
715
|
+
};
|
|
716
|
+
__decorate([
|
|
717
|
+
Transactional({ propagation: "requires_new" })
|
|
718
|
+
], RunQueue.prototype, "ensureRunIn", null);
|
|
719
|
+
__decorate([
|
|
720
|
+
Transactional({ propagation: "requires_new" })
|
|
721
|
+
], RunQueue.prototype, "abortOrphanIn", null);
|
|
722
|
+
__decorate([
|
|
723
|
+
Transactional({ propagation: "requires_new" })
|
|
724
|
+
], RunQueue.prototype, "repairOrphanIn", null);
|
|
725
|
+
RunQueue = __decorate([
|
|
726
|
+
Injectable(),
|
|
727
|
+
__param(0, Inject(KernelDb)),
|
|
728
|
+
__param(1, Inject(EventLog)),
|
|
729
|
+
__param(2, Inject(ConversationLock)),
|
|
730
|
+
__param(3, Inject(RunJobs)),
|
|
731
|
+
__param(4, Inject(RunFinish)),
|
|
732
|
+
__param(5, Inject(KyselyCheckpointSaver)),
|
|
733
|
+
__param(6, Inject(ToolPipeline)),
|
|
734
|
+
__param(7, Inject(KernelEvents)),
|
|
735
|
+
__param(8, Inject(KERNEL_LOGGER)),
|
|
736
|
+
__param(9, Inject(TransactionHost)),
|
|
737
|
+
__param(10, Inject(KernelConfigService)),
|
|
738
|
+
__param(11, Inject(getQueueToken(MAINTENANCE_QUEUE_NAME)))
|
|
739
|
+
], RunQueue);
|
|
740
|
+
export { RunQueue };
|
|
472
741
|
/** The conversation's owner is active and can still see its agent (`isAccessible`'s rule). */
|
|
473
742
|
async function authorCanSend(t, conversationId, accountId) {
|
|
474
743
|
const row = await t
|