@capybara-hq/kernel 0.1.0-rc.2 → 0.1.0-rc.21
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 +94 -5
- package/dist/admin/admin-agents.controller.d.ts +28 -0
- package/dist/admin/admin-agents.controller.js +79 -0
- package/dist/admin/admin-connectors.controller.d.ts +29 -0
- package/dist/admin/admin-connectors.controller.js +79 -0
- package/dist/admin/admin-items.schemas.d.ts +42 -0
- package/dist/admin/admin-items.schemas.js +48 -0
- package/dist/admin/admin.controller.d.ts +52 -80
- package/dist/admin/admin.controller.js +112 -81
- package/dist/admin/admin.module.d.ts +4 -1
- package/dist/admin/admin.module.js +50 -4
- package/dist/admin/admin.schemas.d.ts +69 -0
- package/dist/admin/admin.schemas.js +53 -0
- package/dist/admin/audit.controller.d.ts +14 -0
- package/dist/admin/audit.controller.js +42 -0
- package/dist/admin/audit.schemas.d.ts +8 -0
- package/dist/admin/audit.schemas.js +17 -0
- package/dist/admin/extensions.controller.d.ts +34 -3
- package/dist/admin/extensions.controller.js +66 -8
- package/dist/admin/extensions.schemas.d.ts +7 -0
- package/dist/admin/extensions.schemas.js +10 -0
- package/dist/admin/health.service.d.ts +104 -0
- package/dist/admin/health.service.js +246 -0
- package/dist/admin/limit-defaults.d.ts +20 -0
- package/dist/admin/limit-defaults.js +10 -0
- package/dist/admin/overview.controller.d.ts +31 -0
- package/dist/admin/overview.controller.js +78 -0
- package/dist/admin/overview.schemas.d.ts +8 -0
- package/dist/admin/overview.schemas.js +13 -0
- package/dist/admin/overview.service.d.ts +112 -0
- package/dist/admin/overview.service.js +223 -0
- package/dist/admin/platform-audit.service.d.ts +41 -0
- package/dist/admin/platform-audit.service.js +70 -0
- package/dist/admin/setup-lock.d.ts +1 -1
- package/dist/admin/setup-lock.js +1 -1
- package/dist/admin/setup.controller.d.ts +1 -1
- package/dist/admin/setup.controller.js +1 -1
- package/dist/admin/setup.service.d.ts +4 -4
- package/dist/admin/setup.service.js +8 -8
- package/dist/admin/usage.service.d.ts +149 -0
- package/dist/admin/usage.service.js +321 -0
- package/dist/agents/admin-agents.d.ts +92 -0
- package/dist/agents/admin-agents.js +170 -0
- package/dist/agents/agent-lookup.d.ts +24 -0
- package/dist/agents/agent-lookup.js +46 -2
- package/dist/agents/agent-profile.service.d.ts +31 -0
- package/dist/agents/agent-profile.service.js +122 -0
- package/dist/agents/agents.controller.d.ts +53 -168
- package/dist/agents/agents.controller.js +163 -34
- package/dist/agents/agents.module.d.ts +6 -2
- package/dist/agents/agents.module.js +41 -7
- package/dist/agents/agents.schemas.d.ts +392 -0
- package/dist/agents/agents.schemas.js +126 -0
- package/dist/agents/agents.service.d.ts +121 -36
- package/dist/agents/agents.service.js +411 -121
- package/dist/agents/definition.d.ts +142 -21
- package/dist/agents/definition.js +389 -43
- package/dist/agents/from-template.d.ts +106 -0
- package/dist/agents/from-template.js +680 -0
- package/dist/agents/from-template.service.d.ts +72 -0
- package/dist/agents/from-template.service.js +178 -0
- package/dist/agents/instruction-files.d.ts +60 -0
- package/dist/agents/instruction-files.js +111 -0
- package/dist/agents/models.controller.d.ts +44 -6
- package/dist/agents/models.controller.js +84 -8
- package/dist/agents/org-templates.d.ts +186 -0
- package/dist/agents/org-templates.js +876 -0
- package/dist/agents/pending-connector-requests.d.ts +79 -0
- package/dist/agents/pending-connector-requests.js +215 -0
- package/dist/agents/pending-connectors.controller.d.ts +39 -0
- package/dist/agents/pending-connectors.controller.js +91 -0
- package/dist/agents/pending-connectors.service.d.ts +62 -0
- package/dist/agents/pending-connectors.service.js +282 -0
- package/dist/agents/profile.d.ts +114 -0
- package/dist/agents/profile.js +55 -0
- package/dist/agents/readiness.controller.d.ts +26 -0
- package/dist/agents/readiness.controller.js +56 -0
- package/dist/agents/templates.controller.d.ts +77 -5
- package/dist/agents/templates.controller.js +153 -7
- package/dist/agents/templates.d.ts +127 -23
- package/dist/agents/templates.js +482 -44
- package/dist/agents/templates.schemas.d.ts +20 -0
- package/dist/agents/templates.schemas.js +45 -0
- package/dist/background/background.controller.d.ts +38 -0
- package/dist/background/background.controller.js +88 -0
- package/dist/background/background.module.d.ts +10 -0
- package/dist/background/background.module.js +39 -0
- package/dist/background/background.schemas.d.ts +10 -0
- package/dist/background/background.schemas.js +16 -0
- package/dist/background/finish.d.ts +44 -0
- package/dist/background/finish.js +95 -0
- package/dist/background/launch-lock.d.ts +15 -0
- package/dist/background/launch-lock.js +40 -0
- package/dist/background/launch.d.ts +42 -0
- package/dist/background/launch.js +77 -0
- package/dist/background/poll.job.d.ts +56 -0
- package/dist/background/poll.job.js +195 -0
- package/dist/background/render.d.ts +23 -0
- package/dist/background/render.js +48 -0
- package/dist/background/session.d.ts +48 -0
- package/dist/background/session.js +80 -0
- package/dist/background/status.d.ts +35 -0
- package/dist/background/status.js +57 -0
- package/dist/background/stop.d.ts +68 -0
- package/dist/background/stop.js +244 -0
- package/dist/background/store.d.ts +167 -0
- package/dist/background/store.js +361 -0
- package/dist/background/store.module.d.ts +6 -0
- package/dist/background/store.module.js +22 -0
- package/dist/background/tasks.service.d.ts +109 -0
- package/dist/background/tasks.service.js +271 -0
- package/dist/background/wake-rules.d.ts +66 -0
- package/dist/background/wake-rules.js +113 -0
- package/dist/background/wake.d.ts +30 -0
- package/dist/background/wake.js +63 -0
- package/dist/catalog/admin-catalog.controller.d.ts +136 -52
- package/dist/catalog/admin-catalog.controller.js +275 -65
- package/dist/catalog/admin-catalog.schemas.d.ts +82 -0
- package/dist/catalog/admin-catalog.schemas.js +99 -0
- package/dist/catalog/appearance.schemas.d.ts +10 -0
- package/dist/catalog/appearance.schemas.js +20 -0
- package/dist/catalog/appearance.service.d.ts +105 -0
- package/dist/catalog/appearance.service.js +306 -0
- package/dist/catalog/catalog-content.d.ts +122 -35
- package/dist/catalog/catalog-content.js +122 -14
- package/dist/catalog/catalog-files.d.ts +42 -0
- package/dist/catalog/catalog-files.js +89 -0
- package/dist/catalog/catalog-import.module.d.ts +7 -0
- package/dist/catalog/catalog-import.module.js +63 -0
- package/dist/catalog/catalog-items.d.ts +122 -7
- package/dist/catalog/catalog-items.js +301 -13
- package/dist/catalog/catalog-scope.service.d.ts +293 -0
- package/dist/catalog/catalog-scope.service.js +1236 -0
- package/dist/catalog/catalog.module.d.ts +7 -9
- package/dist/catalog/catalog.module.js +47 -31
- package/dist/catalog/catalog.service.d.ts +122 -31
- package/dist/catalog/catalog.service.js +177 -105
- package/dist/catalog/claude/agents.js +15 -10
- package/dist/catalog/claude/translate.js +3 -0
- package/dist/catalog/cli.d.ts +11 -1
- package/dist/catalog/cli.js +29 -1
- package/dist/catalog/component-promotion.d.ts +96 -0
- package/dist/catalog/component-promotion.js +395 -0
- package/dist/catalog/component-scope.controller.d.ts +102 -0
- package/dist/catalog/component-scope.controller.js +257 -0
- package/dist/catalog/component-scope.schemas.d.ts +118 -0
- package/dist/catalog/component-scope.schemas.js +97 -0
- package/dist/catalog/component-scope.service.d.ts +394 -0
- package/dist/catalog/component-scope.service.js +1133 -0
- package/dist/catalog/component-state.d.ts +207 -0
- package/dist/catalog/component-state.js +484 -0
- package/dist/catalog/git-source.d.ts +9 -1
- package/dist/catalog/git-source.js +29 -2
- package/dist/catalog/job-ids.d.ts +30 -0
- package/dist/catalog/job-ids.js +25 -0
- package/dist/catalog/marketplace-fetch.d.ts +1 -1
- package/dist/catalog/marketplace-icons.d.ts +64 -0
- package/dist/catalog/marketplace-icons.js +131 -0
- package/dist/catalog/marketplaces.controller.d.ts +50 -41
- package/dist/catalog/marketplaces.controller.js +130 -46
- package/dist/catalog/marketplaces.schemas.d.ts +48 -0
- package/dist/catalog/marketplaces.schemas.js +53 -0
- package/dist/catalog/marketplaces.service.d.ts +110 -17
- package/dist/catalog/marketplaces.service.js +337 -29
- package/dist/catalog/org-catalog.controller.d.ts +114 -62
- package/dist/catalog/org-catalog.controller.js +191 -98
- package/dist/catalog/org-catalog.schemas.d.ts +104 -0
- package/dist/catalog/org-catalog.schemas.js +107 -0
- package/dist/catalog/org-catalog.service.d.ts +72 -33
- package/dist/catalog/org-catalog.service.js +367 -158
- package/dist/catalog/org-extension-switch.d.ts +41 -0
- package/dist/catalog/org-extension-switch.js +115 -0
- package/dist/catalog/org-extension.controller.d.ts +133 -0
- package/dist/catalog/org-extension.controller.js +313 -0
- package/dist/catalog/org-extension.schemas.d.ts +15 -0
- package/dist/catalog/org-extension.schemas.js +22 -0
- package/dist/catalog/org-plugin-uploads.controller.d.ts +77 -0
- package/dist/catalog/org-plugin-uploads.controller.js +200 -0
- package/dist/catalog/org-plugin-uploads.d.ts +71 -0
- package/dist/catalog/org-plugin-uploads.js +122 -0
- package/dist/catalog/org-plugin-uploads.schemas.d.ts +20 -0
- package/dist/catalog/org-plugin-uploads.schemas.js +32 -0
- package/dist/catalog/owned-items.d.ts +188 -0
- package/dist/catalog/owned-items.js +808 -0
- package/dist/catalog/owned-plugin-cleanup.d.ts +56 -0
- package/dist/catalog/owned-plugin-cleanup.js +194 -0
- package/dist/catalog/ownership.d.ts +172 -0
- package/dist/catalog/ownership.js +326 -0
- package/dist/catalog/platform-components.d.ts +243 -0
- package/dist/catalog/platform-components.js +872 -0
- package/dist/catalog/platform-migration.d.ts +115 -0
- package/dist/catalog/platform-migration.js +583 -0
- package/dist/catalog/plugin-import.d.ts +254 -47
- package/dist/catalog/plugin-import.js +810 -112
- package/dist/catalog/plugin-install.d.ts +205 -42
- package/dist/catalog/plugin-install.js +828 -126
- package/dist/catalog/plugin-package.d.ts +43 -4
- package/dist/catalog/plugin-package.js +194 -7
- package/dist/catalog/plugin-upgrade.d.ts +308 -225
- package/dist/catalog/plugin-upgrade.js +1325 -1131
- package/dist/catalog/request-rules.d.ts +65 -0
- package/dist/catalog/request-rules.js +217 -0
- package/dist/catalog/requests.service.d.ts +194 -118
- package/dist/catalog/requests.service.js +530 -343
- package/dist/catalog/reserved-names.d.ts +8 -0
- package/dist/catalog/reserved-names.js +42 -0
- package/dist/catalog/scope-orgs.d.ts +21 -0
- package/dist/catalog/scope-orgs.js +67 -0
- package/dist/catalog/scope-state.d.ts +35 -0
- package/dist/catalog/scope-state.js +87 -0
- package/dist/catalog/scope-sync-workers.d.ts +7 -0
- package/dist/catalog/scope-sync-workers.js +29 -0
- package/dist/catalog/scope-sync.d.ts +176 -0
- package/dist/catalog/scope-sync.js +576 -0
- package/dist/catalog/scope.d.ts +42 -0
- package/dist/catalog/scope.js +42 -0
- package/dist/catalog/unshare.d.ts +22 -0
- package/dist/catalog/unshare.js +119 -0
- package/dist/channels/actions.js +10 -3
- package/dist/channels/cards.d.ts +36 -10
- package/dist/channels/cards.js +100 -25
- package/dist/channels/channels.module.js +13 -2
- package/dist/channels/channels.schemas.d.ts +41 -0
- package/dist/channels/channels.schemas.js +40 -0
- package/dist/channels/connections.controller.d.ts +46 -37
- package/dist/channels/connections.controller.js +76 -34
- package/dist/channels/connections.service.d.ts +102 -10
- package/dist/channels/connections.service.js +271 -24
- package/dist/channels/inbound.d.ts +11 -1
- package/dist/channels/inbound.js +87 -7
- package/dist/channels/outbound.d.ts +14 -1
- package/dist/channels/outbound.js +64 -15
- package/dist/channels/phrases.d.ts +33 -2
- package/dist/channels/phrases.js +29 -1
- package/dist/channels/supervisor.d.ts +2 -0
- package/dist/channels/supervisor.js +4 -0
- package/dist/channels/threads.d.ts +5 -0
- package/dist/channels/threads.js +8 -0
- package/dist/channels/webhook.d.ts +21 -1
- package/dist/channels/webhook.js +39 -4
- package/dist/client/client-access.service.d.ts +102 -0
- package/dist/client/client-access.service.js +303 -0
- package/dist/client/client-builds.service.d.ts +109 -0
- package/dist/client/client-builds.service.js +229 -0
- package/dist/client/client-delivery.controller.d.ts +25 -0
- package/dist/client/client-delivery.controller.js +66 -0
- package/dist/client/client-files.d.ts +48 -0
- package/dist/client/client-files.js +136 -0
- package/dist/client/client-reports.cron.d.ts +13 -0
- package/dist/client/client-reports.cron.js +42 -0
- package/dist/client/client-reports.service.d.ts +30 -0
- package/dist/client/client-reports.service.js +102 -0
- package/dist/client/client-sign-in.service.d.ts +21 -0
- package/dist/client/client-sign-in.service.js +49 -0
- package/dist/client/client.controller.d.ts +49 -0
- package/dist/client/client.controller.js +129 -0
- package/dist/client/client.module.d.ts +8 -0
- package/dist/client/client.module.js +28 -0
- package/dist/client/client.schemas.d.ts +61 -0
- package/dist/client/client.schemas.js +27 -0
- package/dist/config/docs.js +5 -1
- package/dist/config/schema.d.ts +35 -2
- package/dist/config/schema.js +216 -21
- package/dist/conversations/access.d.ts +6 -4
- package/dist/conversations/access.js +29 -5
- package/dist/conversations/agent-tree.d.ts +46 -0
- package/dist/conversations/agent-tree.js +92 -0
- package/dist/conversations/artifacts.d.ts +1 -1
- package/dist/conversations/artifacts.js +1 -1
- package/dist/conversations/attachments.service.d.ts +30 -0
- package/dist/conversations/attachments.service.js +130 -5
- package/dist/conversations/conversations.controller.d.ts +79 -44
- package/dist/conversations/conversations.controller.js +133 -82
- package/dist/conversations/conversations.module.d.ts +1 -1
- package/dist/conversations/conversations.module.js +10 -7
- package/dist/conversations/conversations.schemas.d.ts +52 -0
- package/dist/conversations/conversations.schemas.js +79 -0
- package/dist/conversations/conversations.service.d.ts +161 -13
- package/dist/conversations/conversations.service.js +329 -57
- package/dist/conversations/device-status.d.ts +24 -0
- package/dist/conversations/device-status.js +71 -0
- package/dist/conversations/event-log.d.ts +45 -9
- package/dist/conversations/event-log.js +113 -6
- package/dist/conversations/events.d.ts +255 -9
- package/dist/conversations/events.js +250 -34
- package/dist/conversations/message-context.d.ts +79 -0
- package/dist/conversations/message-context.js +145 -0
- package/dist/conversations/queue.d.ts +5 -2
- package/dist/conversations/queue.js +24 -4
- package/dist/conversations/queue.service.d.ts +2 -2
- package/dist/conversations/queue.service.js +21 -3
- package/dist/conversations/titles.d.ts +12 -3
- package/dist/conversations/titles.js +40 -16
- package/dist/conversations/tree.d.ts +17 -0
- package/dist/conversations/tree.js +42 -0
- package/dist/ctx/create-ctx.d.ts +48 -5
- package/dist/ctx/create-ctx.js +174 -34
- package/dist/db/kernel-schema.d.ts +668 -27
- package/dist/db/pool.d.ts +5 -0
- package/dist/db/pool.js +3 -0
- package/dist/devices/access.d.ts +66 -0
- package/dist/devices/access.js +113 -0
- package/dist/devices/conversation-devices.d.ts +75 -0
- package/dist/devices/conversation-devices.js +230 -0
- package/dist/devices/devices.controller.d.ts +36 -0
- package/dist/devices/devices.controller.js +124 -0
- package/dist/devices/devices.module.d.ts +8 -0
- package/dist/devices/devices.module.js +34 -0
- package/dist/devices/devices.schemas.d.ts +3 -0
- package/dist/devices/devices.schemas.js +14 -0
- package/dist/devices/devices.service.d.ts +251 -0
- package/dist/devices/devices.service.js +791 -0
- package/dist/devices/dto.d.ts +25 -0
- package/dist/devices/dto.js +12 -0
- package/dist/devices/label.d.ts +11 -0
- package/dist/devices/label.js +25 -0
- package/dist/devices/legacy-cleanup.job.d.ts +34 -0
- package/dist/devices/legacy-cleanup.job.js +141 -0
- package/dist/errors.d.ts +215 -3
- package/dist/errors.js +215 -3
- package/dist/evals/evals.module.js +11 -2
- package/dist/evals/evals.schemas.d.ts +110 -0
- package/dist/evals/evals.schemas.js +107 -0
- package/dist/evals/reconstruct.d.ts +18 -9
- package/dist/evals/reconstruct.js +36 -10
- package/dist/evals/recorded-tools.d.ts +37 -1
- package/dist/evals/recorded-tools.js +120 -10
- package/dist/evals/run-replay.d.ts +20 -3
- package/dist/evals/run-replay.js +78 -14
- package/dist/evals/runs.controller.d.ts +2 -57
- package/dist/evals/runs.controller.js +1 -42
- package/dist/evals/runs.service.d.ts +8 -7
- package/dist/evals/runs.service.js +45 -30
- package/dist/evals/sets.controller.d.ts +2 -28
- package/dist/evals/sets.controller.js +1 -31
- package/dist/evals/sets.service.d.ts +7 -7
- package/dist/evals/sets.service.js +23 -17
- package/dist/evals/snapshot.d.ts +3 -2
- package/dist/evals/snapshot.js +17 -4
- package/dist/evals/step-replay.d.ts +4 -6
- package/dist/evals/step-replay.js +16 -9
- package/dist/evals/trajectory.d.ts +5 -3
- package/dist/evals/trajectory.js +4 -1
- package/dist/evals/trajectory.service.d.ts +8 -3
- package/dist/evals/trajectory.service.js +26 -14
- package/dist/evals/worker.d.ts +5 -5
- package/dist/evals/worker.js +9 -3
- package/dist/extensions/admin-ops.d.ts +81 -14
- package/dist/extensions/admin-ops.js +181 -47
- package/dist/extensions/admin-view.d.ts +57 -10
- package/dist/extensions/admin-view.js +249 -27
- package/dist/extensions/approvals.d.ts +12 -2
- package/dist/extensions/blobs.d.ts +14 -1
- package/dist/extensions/blobs.js +49 -5
- package/dist/extensions/bootstrap.d.ts +85 -10
- package/dist/extensions/bootstrap.js +215 -36
- package/dist/extensions/cli.d.ts +12 -0
- package/dist/extensions/cli.js +11 -2
- package/dist/extensions/config-hash.d.ts +10 -0
- package/dist/extensions/config-hash.js +38 -0
- package/dist/extensions/config-issues.d.ts +13 -1
- package/dist/extensions/config-issues.js +22 -5
- package/dist/extensions/config-json-schema.d.ts +43 -7
- package/dist/extensions/config-json-schema.js +124 -58
- package/dist/extensions/deployment-config-store.d.ts +6 -0
- package/dist/extensions/deployment-config.d.ts +94 -9
- package/dist/extensions/deployment-config.js +255 -34
- package/dist/extensions/display-name.d.ts +22 -0
- package/dist/extensions/display-name.js +77 -0
- package/dist/extensions/effective-config.d.ts +133 -0
- package/dist/extensions/effective-config.js +379 -0
- package/dist/extensions/extensions.module.js +31 -12
- package/dist/extensions/guide-places.d.ts +68 -0
- package/dist/extensions/guide-places.js +152 -0
- package/dist/extensions/hooks.d.ts +37 -4
- package/dist/extensions/hooks.js +82 -16
- package/dist/extensions/host.d.ts +105 -12
- package/dist/extensions/host.js +372 -87
- package/dist/extensions/installs.d.ts +30 -9
- package/dist/extensions/installs.js +57 -16
- package/dist/extensions/instance.d.ts +17 -2
- package/dist/extensions/instance.js +21 -0
- package/dist/extensions/ledger.d.ts +1 -1
- package/dist/extensions/locks.d.ts +12 -0
- package/dist/extensions/locks.js +26 -0
- package/dist/extensions/org-config.d.ts +97 -7
- package/dist/extensions/org-config.js +215 -45
- package/dist/extensions/org-levels.d.ts +37 -0
- package/dist/extensions/org-levels.js +71 -0
- package/dist/extensions/org-overrides.d.ts +151 -0
- package/dist/extensions/org-overrides.js +524 -0
- package/dist/extensions/package.d.ts +18 -4
- package/dist/extensions/package.js +56 -3
- package/dist/extensions/permission-set.d.ts +35 -5
- package/dist/extensions/permission-set.js +36 -5
- package/dist/extensions/permission-view.d.ts +106 -13
- package/dist/extensions/permission-view.js +33 -15
- package/dist/extensions/plugin-guides.d.ts +282 -0
- package/dist/extensions/plugin-guides.js +554 -0
- package/dist/extensions/plugin-icons.d.ts +54 -0
- package/dist/extensions/plugin-icons.js +125 -0
- package/dist/extensions/plugin-items.d.ts +21 -0
- package/dist/extensions/plugin-items.js +42 -0
- package/dist/extensions/point-defaults.controller.d.ts +28 -0
- package/dist/extensions/point-defaults.controller.js +69 -0
- package/dist/extensions/point-defaults.d.ts +73 -0
- package/dist/extensions/point-defaults.js +236 -0
- package/dist/extensions/point-defaults.schemas.d.ts +9 -0
- package/dist/extensions/point-defaults.schemas.js +14 -0
- package/dist/extensions/registry.d.ts +1 -1
- package/dist/extensions/registry.js +2 -0
- package/dist/extensions/resolve.d.ts +51 -1
- package/dist/extensions/resolve.js +85 -3
- package/dist/extensions/single-provider.d.ts +92 -0
- package/dist/extensions/single-provider.js +180 -0
- package/dist/extensions/sources.d.ts +13 -2
- package/dist/extensions/sources.js +2 -0
- package/dist/extensions/state.module.d.ts +9 -0
- package/dist/extensions/state.module.js +46 -0
- package/dist/extensions/unavailable.d.ts +50 -0
- package/dist/extensions/unavailable.js +115 -0
- package/dist/files/previewers.controller.js +2 -3
- package/dist/files/previewers.d.ts +10 -3
- package/dist/files/previewers.js +40 -11
- package/dist/files/previewers.schemas.d.ts +10 -0
- package/dist/files/previewers.schemas.js +9 -0
- package/dist/http/api.module.js +76 -4
- package/dist/http/app.d.ts +11 -2
- package/dist/http/app.js +31 -5
- package/dist/http/gateway-routes.d.ts +7 -3
- package/dist/http/gateway-routes.js +6 -3
- package/dist/http/nest-logger.d.ts +6 -5
- package/dist/http/nest-logger.js +24 -10
- package/dist/http/plugin-dispatch.d.ts +4 -1
- package/dist/http/plugin-dispatch.js +14 -2
- package/dist/identity/accounts.d.ts +77 -31
- package/dist/identity/accounts.js +133 -52
- package/dist/identity/audit.d.ts +2 -1
- package/dist/identity/auth.controller.js +9 -5
- package/dist/identity/auth.guard.d.ts +13 -5
- package/dist/identity/auth.guard.js +35 -9
- package/dist/identity/cookies.d.ts +26 -5
- package/dist/identity/cookies.js +58 -6
- package/dist/identity/identity.module.d.ts +1 -1
- package/dist/identity/identity.module.js +7 -4
- package/dist/identity/initial-passwords.controller.d.ts +22 -0
- package/dist/identity/initial-passwords.controller.js +49 -0
- package/dist/identity/initial-passwords.d.ts +61 -0
- package/dist/identity/initial-passwords.job.d.ts +16 -0
- package/dist/identity/initial-passwords.job.js +46 -0
- package/dist/identity/initial-passwords.js +159 -0
- package/dist/identity/me.controller.d.ts +17 -1
- package/dist/identity/me.controller.js +45 -4
- package/dist/identity/me.schemas.d.ts +24 -0
- package/dist/identity/me.schemas.js +25 -0
- package/dist/identity/principal.d.ts +11 -3
- package/dist/identity/principal.js +11 -3
- package/dist/identity/sessions.d.ts +12 -0
- package/dist/identity/sessions.js +45 -0
- package/dist/identity/settings.d.ts +99 -12
- package/dist/identity/settings.js +234 -25
- package/dist/identity/{enterprise-admin.d.ts → super-admin.d.ts} +5 -5
- package/dist/identity/{enterprise-admin.js → super-admin.js} +24 -24
- package/dist/identity/write-actor.d.ts +11 -0
- package/dist/identity/write-actor.js +7 -0
- package/dist/inbox/inbox.module.d.ts +4 -1
- package/dist/inbox/inbox.module.js +7 -3
- package/dist/inbox/inbox.schemas.d.ts +8 -0
- package/dist/inbox/inbox.schemas.js +11 -0
- package/dist/inbox/inbox.service.d.ts +64 -4
- package/dist/inbox/inbox.service.js +74 -4
- package/dist/inbox/org-notices.d.ts +63 -0
- package/dist/inbox/org-notices.js +91 -0
- package/dist/inbox/platform-inbox.controller.d.ts +23 -0
- package/dist/inbox/platform-inbox.controller.js +58 -0
- package/dist/inbox/platform-inbox.service.d.ts +157 -0
- package/dist/inbox/platform-inbox.service.js +281 -0
- package/dist/inbox/platform-notices.d.ts +19 -0
- package/dist/inbox/platform-notices.js +9 -0
- package/dist/index.d.ts +6 -2
- package/dist/index.js +7 -1
- package/dist/infra/cli/kernel-cli.module.js +9 -1
- package/dist/infra/config/kernel-config.service.js +32 -1
- package/dist/infra/database/database.module.js +1 -0
- package/dist/infra/database/xact-lock.d.ts +1 -1
- package/dist/infra/database/xact-lock.js +1 -1
- package/dist/infra/events/kernel-events.d.ts +31 -3
- package/dist/infra/lifecycle/process-guards.js +4 -0
- package/dist/infra/lock/lock.service.d.ts +8 -0
- package/dist/infra/lock/lock.service.js +27 -0
- package/dist/infra/logging/logging.module.d.ts +4 -2
- package/dist/infra/logging/logging.module.js +24 -6
- package/dist/infra/presence/presence.module.d.ts +6 -0
- package/dist/infra/presence/presence.module.js +22 -0
- package/dist/infra/presence/replica-presence.d.ts +87 -0
- package/dist/infra/presence/replica-presence.js +189 -0
- package/dist/infra/queue/add-job-once.d.ts +14 -0
- package/dist/infra/queue/add-job-once.js +16 -0
- package/dist/infra/queue/redis-connection.d.ts +6 -0
- package/dist/infra/queue/redis-connection.js +7 -0
- package/dist/infra/redis/redis.module.js +6 -2
- package/dist/infra/throttler/named-throttlers.d.ts +12 -0
- package/dist/infra/throttler/named-throttlers.js +67 -0
- package/dist/infra/throttler/throttler.guard.js +1 -1
- package/dist/infra/tokens.d.ts +6 -1
- package/dist/infra/tokens.js +6 -1
- package/dist/kernel.module.js +15 -0
- package/dist/lifecycle/kernel-lifecycle.d.ts +9 -3
- package/dist/lifecycle/kernel-lifecycle.js +51 -11
- package/dist/local-devices/device-auth.controller.d.ts +42 -0
- package/dist/local-devices/device-auth.controller.js +116 -0
- package/dist/local-devices/device-auth.d.ts +119 -0
- package/dist/local-devices/device-auth.js +401 -0
- package/dist/local-devices/device-auth.module.d.ts +7 -0
- package/dist/local-devices/device-auth.module.js +25 -0
- package/dist/local-devices/device-routes.d.ts +36 -0
- package/dist/local-devices/device-routes.js +90 -0
- package/dist/local-devices/dto.d.ts +66 -0
- package/dist/local-devices/dto.js +44 -0
- package/dist/local-devices/keys.d.ts +25 -0
- package/dist/local-devices/keys.js +25 -0
- package/dist/local-devices/local-device-gateway.d.ts +134 -0
- package/dist/local-devices/local-device-gateway.js +542 -0
- package/dist/local-devices/local-device-provider.d.ts +89 -0
- package/dist/local-devices/local-device-provider.js +151 -0
- package/dist/local-devices/local-devices.module.d.ts +16 -0
- package/dist/local-devices/local-devices.module.js +44 -0
- package/dist/local-devices/machines.d.ts +118 -0
- package/dist/local-devices/machines.js +366 -0
- package/dist/local-devices/relay.d.ts +100 -0
- package/dist/local-devices/relay.js +373 -0
- package/dist/local-devices/targets.d.ts +28 -0
- package/dist/local-devices/targets.js +73 -0
- package/dist/log.d.ts +13 -1
- package/dist/log.js +93 -17
- package/dist/models/embeddings.d.ts +82 -0
- package/dist/models/embeddings.js +326 -0
- package/dist/models/enablement.controller.d.ts +40 -0
- package/dist/models/enablement.controller.js +74 -0
- package/dist/models/enablement.d.ts +101 -0
- package/dist/models/enablement.js +264 -0
- package/dist/models/models.module.d.ts +5 -1
- package/dist/models/models.module.js +16 -4
- package/dist/models/org-models.schemas.d.ts +8 -0
- package/dist/models/org-models.schemas.js +22 -0
- package/dist/models/prices.d.ts +8 -6
- package/dist/models/prices.js +11 -9
- package/dist/models/purposes.controller.d.ts +6 -4
- package/dist/models/purposes.controller.js +13 -7
- package/dist/models/purposes.d.ts +72 -14
- package/dist/models/purposes.js +115 -34
- package/dist/orgs/directory-sync.d.ts +14 -5
- package/dist/orgs/directory-sync.js +41 -17
- package/dist/orgs/offboarding.d.ts +12 -8
- package/dist/orgs/offboarding.js +54 -33
- package/dist/orgs/org-lock.d.ts +5 -0
- package/dist/orgs/org-lock.js +13 -0
- package/dist/orgs/org.guard.d.ts +10 -0
- package/dist/orgs/org.guard.js +43 -32
- package/dist/orgs/orgs.controller.d.ts +2 -5
- package/dist/orgs/orgs.controller.js +3 -6
- package/dist/orgs/orgs.module.js +3 -0
- package/dist/orgs/orgs.schemas.d.ts +8 -0
- package/dist/orgs/orgs.schemas.js +16 -0
- package/dist/orgs/orgs.service.d.ts +23 -8
- package/dist/orgs/orgs.service.js +38 -16
- package/dist/orgs/roles.d.ts +1 -1
- package/dist/orgs/roles.js +5 -1
- package/dist/orgs/settings.controller.d.ts +1 -1
- package/dist/orgs/settings.service.d.ts +66 -6
- package/dist/orgs/settings.service.js +89 -10
- package/dist/overrides.d.ts +16 -1
- package/dist/overrides.js +10 -0
- package/dist/platform/actor.d.ts +48 -0
- package/dist/platform/actor.js +100 -0
- package/dist/platform/agent-docs.d.ts +18 -0
- package/dist/platform/agent-docs.js +59 -0
- package/dist/platform/availability.d.ts +14 -0
- package/dist/platform/availability.js +43 -0
- package/dist/platform/errors.d.ts +28 -0
- package/dist/platform/errors.js +65 -0
- package/dist/platform/exclusions.d.ts +11 -0
- package/dist/platform/exclusions.js +774 -0
- package/dist/platform/method.d.ts +6 -0
- package/dist/platform/method.js +15 -0
- package/dist/platform/operation.d.ts +169 -0
- package/dist/platform/operation.js +102 -0
- package/dist/platform/ops/accounts.ops.d.ts +32 -0
- package/dist/platform/ops/accounts.ops.js +291 -0
- package/dist/platform/ops/admin-items.ops.d.ts +37 -0
- package/dist/platform/ops/admin-items.ops.js +278 -0
- package/dist/platform/ops/admin.ops.d.ts +38 -0
- package/dist/platform/ops/admin.ops.js +497 -0
- package/dist/platform/ops/agent-skills.ops.d.ts +50 -0
- package/dist/platform/ops/agent-skills.ops.js +509 -0
- package/dist/platform/ops/agent-templates.ops.d.ts +17 -0
- package/dist/platform/ops/agent-templates.ops.js +272 -0
- package/dist/platform/ops/agents.ops.d.ts +37 -0
- package/dist/platform/ops/agents.ops.js +730 -0
- package/dist/platform/ops/approvals.ops.d.ts +30 -0
- package/dist/platform/ops/approvals.ops.js +116 -0
- package/dist/platform/ops/background.ops.d.ts +14 -0
- package/dist/platform/ops/background.ops.js +134 -0
- package/dist/platform/ops/catalog-admin.ops.d.ts +92 -0
- package/dist/platform/ops/catalog-admin.ops.js +682 -0
- package/dist/platform/ops/channels.ops.d.ts +16 -0
- package/dist/platform/ops/channels.ops.js +195 -0
- package/dist/platform/ops/components.ops.d.ts +46 -0
- package/dist/platform/ops/components.ops.js +854 -0
- package/dist/platform/ops/connectors.ops.d.ts +17 -0
- package/dist/platform/ops/connectors.ops.js +190 -0
- package/dist/platform/ops/conversations.ops.d.ts +30 -0
- package/dist/platform/ops/conversations.ops.js +470 -0
- package/dist/platform/ops/devices.ops.d.ts +26 -0
- package/dist/platform/ops/devices.ops.js +311 -0
- package/dist/platform/ops/errors.d.ts +16 -0
- package/dist/platform/ops/errors.js +30 -0
- package/dist/platform/ops/evals.ops.d.ts +28 -0
- package/dist/platform/ops/evals.ops.js +783 -0
- package/dist/platform/ops/extensions-admin.ops.d.ts +25 -0
- package/dist/platform/ops/extensions-admin.ops.js +372 -0
- package/dist/platform/ops/extensions.ops.d.ts +25 -0
- package/dist/platform/ops/extensions.ops.js +347 -0
- package/dist/platform/ops/inbox.ops.d.ts +25 -0
- package/dist/platform/ops/inbox.ops.js +381 -0
- package/dist/platform/ops/marketplaces.ops.d.ts +22 -0
- package/dist/platform/ops/marketplaces.ops.js +466 -0
- package/dist/platform/ops/models.ops.d.ts +25 -0
- package/dist/platform/ops/models.ops.js +232 -0
- package/dist/platform/ops/org-plugins.ops.d.ts +35 -0
- package/dist/platform/ops/org-plugins.ops.js +388 -0
- package/dist/platform/ops/org-settings.ops.d.ts +18 -0
- package/dist/platform/ops/org-settings.ops.js +127 -0
- package/dist/platform/ops/orgs.ops.d.ts +28 -0
- package/dist/platform/ops/orgs.ops.js +298 -0
- package/dist/platform/ops/other-orgs.d.ts +20 -0
- package/dist/platform/ops/other-orgs.js +72 -0
- package/dist/platform/ops/paging.d.ts +14 -0
- package/dist/platform/ops/paging.js +20 -0
- package/dist/platform/ops/platform.ops.d.ts +30 -0
- package/dist/platform/ops/platform.ops.js +231 -0
- package/dist/platform/ops/plugins.ops.d.ts +35 -0
- package/dist/platform/ops/plugins.ops.js +476 -0
- package/dist/platform/ops/previewers.ops.d.ts +14 -0
- package/dist/platform/ops/previewers.ops.js +109 -0
- package/dist/platform/ops/requests.ops.d.ts +14 -0
- package/dist/platform/ops/requests.ops.js +191 -0
- package/dist/platform/ops/role.d.ts +4 -0
- package/dist/platform/ops/role.js +10 -0
- package/dist/platform/ops/setup.ops.d.ts +24 -0
- package/dist/platform/ops/setup.ops.js +212 -0
- package/dist/platform/ops/skills.ops.d.ts +17 -0
- package/dist/platform/ops/skills.ops.js +160 -0
- package/dist/platform/ops/summary.d.ts +10 -0
- package/dist/platform/ops/summary.js +18 -0
- package/dist/platform/ops/themes.ops.d.ts +14 -0
- package/dist/platform/ops/themes.ops.js +47 -0
- package/dist/platform/ops/ui.ops.d.ts +8 -0
- package/dist/platform/ops/ui.ops.js +41 -0
- package/dist/platform/ops/unavailable.d.ts +23 -0
- package/dist/platform/ops/unavailable.js +118 -0
- package/dist/platform/parity.d.ts +33 -0
- package/dist/platform/parity.js +272 -0
- package/dist/platform/platform-ops.module.d.ts +43 -0
- package/dist/platform/platform-ops.module.js +142 -0
- package/dist/platform/platform.module.d.ts +8 -0
- package/dist/platform/platform.module.js +25 -0
- package/dist/platform/registry.d.ts +30 -0
- package/dist/platform/registry.js +111 -0
- package/dist/platform/route-schemas.d.ts +18 -0
- package/dist/platform/route-schemas.js +85 -0
- package/dist/roles/gateway-role.d.ts +18 -3
- package/dist/roles/gateway-role.js +33 -5
- package/dist/roles/gateway.module.d.ts +2 -1
- package/dist/roles/gateway.module.js +6 -3
- package/dist/roles/worker-role.d.ts +6 -4
- package/dist/roles/worker-role.js +14 -7
- package/dist/roles/worker.module.d.ts +1 -1
- package/dist/roles/worker.module.js +21 -1
- package/dist/runtime/context/build.d.ts +21 -13
- package/dist/runtime/context/build.js +106 -29
- package/dist/runtime/context/claude-tools.d.ts +4 -1
- package/dist/runtime/context/claude-tools.js +13 -12
- package/dist/runtime/context/compaction.js +24 -1
- package/dist/runtime/context/device-paths.d.ts +40 -0
- package/dist/runtime/context/device-paths.js +48 -0
- package/dist/runtime/context/legacy-text.d.ts +22 -0
- package/dist/runtime/context/legacy-text.js +37 -0
- package/dist/runtime/context/reminders.d.ts +2 -0
- package/dist/runtime/context/reminders.js +2 -0
- package/dist/runtime/context/run-context.d.ts +65 -0
- package/dist/runtime/context/run-context.js +215 -0
- package/dist/runtime/context/skills.d.ts +29 -11
- package/dist/runtime/context/skills.js +46 -32
- package/dist/runtime/context/tool-changes.d.ts +27 -0
- package/dist/runtime/context/tool-changes.js +60 -0
- package/dist/runtime/hook-calls.d.ts +8 -1
- package/dist/runtime/hook-calls.js +40 -7
- package/dist/runtime/langgraph-loop.d.ts +3 -1
- package/dist/runtime/langgraph-loop.js +36 -17
- package/dist/runtime/loop.d.ts +35 -6
- package/dist/runtime/maintenance.d.ts +9 -4
- package/dist/runtime/maintenance.js +35 -8
- package/dist/runtime/model-call.d.ts +54 -11
- package/dist/runtime/model-call.js +105 -28
- package/dist/runtime/providers.d.ts +149 -29
- package/dist/runtime/providers.js +332 -63
- package/dist/runtime/run-context.service.d.ts +65 -0
- package/dist/runtime/run-context.service.js +236 -0
- package/dist/runtime/run-control.d.ts +11 -1
- package/dist/runtime/run-control.js +12 -0
- package/dist/runtime/run-drafts.d.ts +85 -0
- package/dist/runtime/run-drafts.js +230 -0
- package/dist/runtime/run-finish.d.ts +1 -1
- package/dist/runtime/run-jobs.d.ts +3 -5
- package/dist/runtime/run-jobs.js +7 -9
- package/dist/runtime/run-queue.d.ts +62 -5
- package/dist/runtime/run-queue.js +313 -40
- package/dist/runtime/run-worker.d.ts +19 -8
- package/dist/runtime/run-worker.js +105 -44
- package/dist/runtime/runtime.module.js +13 -3
- package/dist/runtime/step-log.d.ts +15 -4
- package/dist/runtime/step-log.js +24 -7
- package/dist/runtime/stream.controller.d.ts +23 -1
- package/dist/runtime/stream.controller.js +60 -3
- package/dist/runtime/stream.d.ts +4 -1
- package/dist/runtime/stream.js +27 -3
- package/dist/runtime/subagents/child.d.ts +55 -7
- package/dist/runtime/subagents/child.js +105 -7
- package/dist/runtime/subagents/definition.d.ts +31 -26
- package/dist/runtime/subagents/definition.js +89 -142
- package/dist/runtime/subagents/deliveries.d.ts +71 -0
- package/dist/runtime/subagents/deliveries.js +228 -0
- package/dist/runtime/subagents/dispatch.d.ts +116 -27
- package/dist/runtime/subagents/dispatch.js +213 -142
- package/dist/runtime/subagents/limits.d.ts +24 -5
- package/dist/runtime/subagents/limits.js +40 -6
- package/dist/runtime/subagents/messages.d.ts +95 -0
- package/dist/runtime/subagents/messages.js +328 -0
- package/dist/runtime/subagents/org-agents.js +2 -1
- package/dist/runtime/subagents/preamble.d.ts +4 -4
- package/dist/runtime/subagents/preamble.js +9 -7
- package/dist/runtime/subagents/progress.d.ts +8 -6
- package/dist/runtime/subagents/progress.js +11 -6
- package/dist/runtime/subagents/render.d.ts +30 -0
- package/dist/runtime/subagents/render.js +53 -0
- package/dist/runtime/subagents/roster.d.ts +25 -8
- package/dist/runtime/subagents/roster.js +48 -12
- package/dist/runtime/subagents/skill-fork.d.ts +4 -3
- package/dist/runtime/subagents/skill-fork.js +9 -5
- package/dist/runtime/subagents/status.d.ts +14 -0
- package/dist/runtime/subagents/status.js +23 -0
- package/dist/runtime/subagents/subagents.service.d.ts +9 -6
- package/dist/runtime/subagents/subagents.service.js +13 -8
- package/dist/runtime/usage-report-jobs.d.ts +88 -0
- package/dist/runtime/usage-report-jobs.js +158 -0
- package/dist/runtime/usage-report.d.ts +35 -39
- package/dist/runtime/usage-report.js +171 -97
- package/dist/runtime/waits.d.ts +148 -39
- package/dist/runtime/waits.js +426 -112
- package/dist/sandbox/jobs.d.ts +40 -13
- package/dist/sandbox/jobs.js +57 -20
- package/dist/sandbox/leases.d.ts +37 -54
- package/dist/sandbox/leases.js +71 -115
- package/dist/sandbox/providers.d.ts +34 -7
- package/dist/sandbox/providers.js +54 -9
- package/dist/sandbox/sandbox-file-reader.d.ts +35 -0
- package/dist/sandbox/sandbox-file-reader.js +98 -0
- package/dist/sandbox/sandbox.module.d.ts +3 -2
- package/dist/sandbox/sandbox.module.js +10 -4
- package/dist/sandbox/sandbox.service.d.ts +345 -132
- package/dist/sandbox/sandbox.service.js +883 -399
- package/dist/sandbox/unreachable.d.ts +30 -0
- package/dist/sandbox/unreachable.js +108 -0
- package/dist/setup/kernel-checks.d.ts +91 -0
- package/dist/setup/kernel-checks.js +295 -0
- package/dist/setup/oauth-token-probe.d.ts +47 -0
- package/dist/setup/oauth-token-probe.js +108 -0
- package/dist/setup/redact-check.d.ts +18 -0
- package/dist/setup/redact-check.js +46 -0
- package/dist/setup/setup-check-registry.d.ts +86 -0
- package/dist/setup/setup-check-registry.js +75 -0
- package/dist/setup/setup-checks.controller.d.ts +28 -0
- package/dist/setup/setup-checks.controller.js +78 -0
- package/dist/setup/setup-checks.schemas.d.ts +38 -0
- package/dist/setup/setup-checks.schemas.js +43 -0
- package/dist/setup/setup-checks.service.d.ts +144 -0
- package/dist/setup/setup-checks.service.js +683 -0
- package/dist/setup/setup-guides.controller.d.ts +18 -0
- package/dist/setup/setup-guides.controller.js +48 -0
- package/dist/setup/setup-guides.schemas.d.ts +10 -0
- package/dist/setup/setup-guides.schemas.js +6 -0
- package/dist/setup/setup-guides.service.d.ts +126 -0
- package/dist/setup/setup-guides.service.js +315 -0
- package/dist/setup/setup.module.d.ts +8 -0
- package/dist/setup/setup.module.js +31 -0
- package/dist/skills/agent-skills.controller.d.ts +48 -0
- package/dist/skills/agent-skills.controller.js +131 -0
- package/dist/skills/agent-skills.service.d.ts +262 -0
- package/dist/skills/agent-skills.service.js +996 -0
- package/dist/skills/catalog.d.ts +14 -11
- package/dist/skills/catalog.js +32 -50
- package/dist/skills/changes.controller.d.ts +12 -22
- package/dist/skills/changes.controller.js +27 -56
- package/dist/skills/changes.service.d.ts +69 -115
- package/dist/skills/changes.service.js +249 -598
- package/dist/skills/conversation-catalog.d.ts +53 -0
- package/dist/skills/conversation-catalog.js +149 -0
- package/dist/skills/invocable.controller.d.ts +1 -1
- package/dist/skills/invocable.controller.js +2 -2
- package/dist/skills/invocation-keys.d.ts +1 -1
- package/dist/skills/invocation-keys.js +1 -1
- package/dist/skills/invoke.d.ts +3 -3
- package/dist/skills/invoke.js +21 -8
- package/dist/skills/package.d.ts +15 -1
- package/dist/skills/package.js +14 -1
- package/dist/skills/skills.controller.d.ts +32 -6
- package/dist/skills/skills.controller.js +64 -11
- package/dist/skills/skills.module.js +25 -3
- package/dist/skills/skills.schemas.d.ts +44 -0
- package/dist/skills/skills.schemas.js +68 -0
- package/dist/skills/skills.service.d.ts +123 -26
- package/dist/skills/skills.service.js +493 -76
- package/dist/skills/usable.d.ts +82 -0
- package/dist/skills/usable.js +388 -0
- package/dist/themes/render-css.d.ts +13 -0
- package/dist/themes/render-css.js +135 -0
- package/dist/themes/theme-delivery.service.d.ts +36 -0
- package/dist/themes/theme-delivery.service.js +116 -0
- package/dist/themes/theme-state.d.ts +116 -0
- package/dist/themes/theme-state.js +221 -0
- package/dist/themes/theme-usage.d.ts +61 -0
- package/dist/themes/theme-usage.js +98 -0
- package/dist/themes/themes-public.controller.d.ts +33 -0
- package/dist/themes/themes-public.controller.js +98 -0
- package/dist/themes/themes.controller.d.ts +13 -0
- package/dist/themes/themes.controller.js +38 -0
- package/dist/themes/themes.module.d.ts +3 -0
- package/dist/themes/themes.module.js +21 -0
- package/dist/themes/themes.schemas.d.ts +3 -0
- package/dist/themes/themes.schemas.js +2 -0
- package/dist/themes/themes.service.d.ts +50 -0
- package/dist/themes/themes.service.js +99 -0
- package/dist/time-zone.d.ts +5 -0
- package/dist/time-zone.js +19 -0
- package/dist/tools/admin-connectors.d.ts +69 -0
- package/dist/tools/admin-connectors.js +135 -0
- package/dist/tools/approvals.controller.js +2 -3
- package/dist/tools/approvals.schemas.d.ts +21 -0
- package/dist/tools/approvals.schemas.js +15 -0
- package/dist/tools/approvals.service.d.ts +26 -2
- package/dist/tools/approvals.service.js +44 -5
- package/dist/tools/builtin-names.d.ts +104 -0
- package/dist/tools/builtin-names.js +164 -0
- package/dist/tools/builtins/agent.d.ts +27 -25
- package/dist/tools/builtins/agent.js +66 -63
- package/dist/tools/builtins/ask-user.d.ts +1 -1
- package/dist/tools/builtins/ask-user.js +5 -4
- package/dist/tools/builtins/builtin-tools.d.ts +23 -4
- package/dist/tools/builtins/builtin-tools.js +78 -12
- package/dist/tools/builtins/current-time.d.ts +26 -0
- package/dist/tools/builtins/current-time.js +99 -0
- package/dist/tools/builtins/handback.d.ts +28 -0
- package/dist/tools/builtins/handback.js +53 -0
- package/dist/tools/builtins/platform.d.ts +51 -0
- package/dist/tools/builtins/platform.js +451 -0
- package/dist/tools/builtins/read-tool-output.d.ts +1 -1
- package/dist/tools/builtins/read-tool-output.js +2 -2
- package/dist/tools/builtins/sandbox/bash.d.ts +5 -5
- package/dist/tools/builtins/sandbox/bash.js +291 -39
- package/dist/tools/builtins/sandbox/common.d.ts +135 -36
- package/dist/tools/builtins/sandbox/common.js +222 -62
- package/dist/tools/builtins/sandbox/deliver.d.ts +1 -1
- package/dist/tools/builtins/sandbox/deliver.js +19 -16
- package/dist/tools/builtins/sandbox/edit.d.ts +1 -1
- package/dist/tools/builtins/sandbox/edit.js +64 -50
- package/dist/tools/builtins/sandbox/file-state.d.ts +34 -0
- package/dist/tools/builtins/sandbox/file-state.js +34 -0
- package/dist/tools/builtins/sandbox/glob-match.d.ts +1 -1
- package/dist/tools/builtins/sandbox/glob-match.js +1 -1
- package/dist/tools/builtins/sandbox/glob.d.ts +1 -1
- package/dist/tools/builtins/sandbox/glob.js +17 -12
- package/dist/tools/builtins/sandbox/grep.d.ts +7 -4
- package/dist/tools/builtins/sandbox/grep.js +153 -34
- package/dist/tools/builtins/sandbox/index.d.ts +9 -5
- package/dist/tools/builtins/sandbox/index.js +13 -5
- package/dist/tools/builtins/sandbox/read.d.ts +2 -2
- package/dist/tools/builtins/sandbox/read.js +29 -19
- package/dist/tools/builtins/sandbox/task-output.d.ts +79 -0
- package/dist/tools/builtins/sandbox/task-output.js +334 -0
- package/dist/tools/builtins/sandbox/task-stop.d.ts +10 -0
- package/dist/tools/builtins/sandbox/task-stop.js +113 -0
- package/dist/tools/builtins/sandbox/write.d.ts +1 -1
- package/dist/tools/builtins/sandbox/write.js +51 -44
- package/dist/tools/builtins/send-message.d.ts +56 -0
- package/dist/tools/builtins/send-message.js +100 -0
- package/dist/tools/builtins/skill-load.d.ts +29 -18
- package/dist/tools/builtins/skill-load.js +125 -73
- package/dist/tools/builtins/tool-search.d.ts +13 -9
- package/dist/tools/builtins/tool-search.js +25 -14
- package/dist/tools/builtins/web/errors.d.ts +8 -0
- package/dist/tools/builtins/web/errors.js +53 -0
- package/dist/tools/builtins/web/extract.d.ts +62 -0
- package/dist/tools/builtins/web/extract.js +271 -0
- package/dist/tools/builtins/web/fetch.d.ts +55 -0
- package/dist/tools/builtins/web/fetch.js +175 -0
- package/dist/tools/builtins/web/index.d.ts +13 -0
- package/dist/tools/builtins/web/index.js +12 -0
- package/dist/tools/builtins/web/page-cache.d.ts +25 -0
- package/dist/tools/builtins/web/page-cache.js +77 -0
- package/dist/tools/builtins/web/search.d.ts +25 -0
- package/dist/tools/builtins/web/search.js +210 -0
- package/dist/tools/builtins/web/url.d.ts +17 -0
- package/dist/tools/builtins/web/url.js +43 -0
- package/dist/tools/connector-account-policies.d.ts +51 -0
- package/dist/tools/connector-account-policies.js +165 -0
- package/dist/tools/connectors.controller.d.ts +74 -9
- package/dist/tools/connectors.controller.js +133 -16
- package/dist/tools/connectors.schemas.d.ts +27 -0
- package/dist/tools/connectors.schemas.js +34 -0
- package/dist/tools/connectors.service.d.ts +101 -8
- package/dist/tools/connectors.service.js +266 -28
- package/dist/tools/credentials.d.ts +23 -0
- package/dist/tools/credentials.js +90 -1
- package/dist/tools/display-names.d.ts +9 -0
- package/dist/tools/display-names.js +24 -0
- package/dist/tools/drift.js +5 -5
- package/dist/tools/elicitation.js +1 -1
- package/dist/tools/extension-tools.controller.d.ts +14 -0
- package/dist/tools/extension-tools.controller.js +37 -0
- package/dist/tools/info.d.ts +61 -4
- package/dist/tools/info.js +119 -33
- package/dist/tools/legacy-data.d.ts +34 -0
- package/dist/tools/legacy-data.js +76 -0
- package/dist/tools/legacy-keys.d.ts +51 -0
- package/dist/tools/legacy-keys.js +114 -0
- package/dist/tools/naming.d.ts +1 -5
- package/dist/tools/naming.js +1 -7
- package/dist/tools/oauth/flow-paths.d.ts +1 -1
- package/dist/tools/oauth/flow-paths.js +1 -1
- package/dist/tools/oauth/flow.js +1 -1
- package/dist/tools/oauth/tokens.d.ts +54 -7
- package/dist/tools/oauth/tokens.js +87 -17
- package/dist/tools/org-tool-switches.d.ts +89 -0
- package/dist/tools/org-tool-switches.js +201 -0
- package/dist/tools/outputs.js +1 -1
- package/dist/tools/pipeline.d.ts +67 -47
- package/dist/tools/pipeline.js +319 -380
- package/dist/tools/policy.d.ts +30 -23
- package/dist/tools/policy.js +142 -64
- package/dist/tools/questions.controller.d.ts +1 -1
- package/dist/tools/questions.controller.js +1 -1
- package/dist/tools/questions.service.d.ts +23 -2
- package/dist/tools/questions.service.js +104 -2
- package/dist/tools/registry.d.ts +189 -68
- package/dist/tools/registry.js +318 -236
- package/dist/tools/resources.d.ts +1 -1
- package/dist/tools/resources.js +1 -1
- package/dist/tools/tools.module.js +31 -3
- package/dist/tools/validate.js +1 -1
- package/dist/ui/admin-ui.controller.d.ts +56 -0
- package/dist/ui/admin-ui.controller.js +192 -0
- package/dist/ui/arrangement.d.ts +65 -0
- package/dist/ui/arrangement.js +171 -0
- package/dist/ui/embed-token.d.ts +2 -2
- package/dist/ui/embed-token.js +30 -5
- package/dist/ui/registry.d.ts +42 -17
- package/dist/ui/registry.js +46 -14
- package/dist/ui/slots.controller.d.ts +11 -0
- package/dist/ui/slots.controller.js +25 -0
- package/dist/ui/ui-stream.d.ts +20 -3
- package/dist/ui/ui-stream.js +25 -7
- package/dist/ui/ui.schemas.d.ts +70 -0
- package/dist/ui/ui.schemas.js +65 -0
- package/dist/ui/views.controller.d.ts +35 -49
- package/dist/ui/views.controller.js +48 -70
- package/dist/ui/views.d.ts +112 -18
- package/dist/ui/views.js +254 -47
- package/package.json +6 -3
- package/src/migrations/0063_tool_keys_claude_code.sql +220 -0
- package/src/migrations/0064_account_last_org.sql +7 -0
- package/src/migrations/0065_conversation_archive.sql +8 -0
- package/src/migrations/0066_extension_display_name.sql +4 -0
- package/src/migrations/0067_agent_profiles.sql +20 -0
- package/src/migrations/0068_agent_avatar_uploads.sql +7 -0
- package/src/migrations/0069_attachments_agent_idx.sql +3 -0
- package/src/migrations/0070_background_tasks.sql +37 -0
- package/src/migrations/0071_background_tasks_reserve.sql +6 -0
- package/src/migrations/0072_background_tasks_stopping.sql +5 -0
- package/src/migrations/0073_org_extension_point_defaults.sql +11 -0
- package/src/migrations/0074_subagent_tree.sql +50 -0
- package/src/migrations/0075_plugin_scope.sql +61 -0
- package/src/migrations/0076_skills_created_by_nullable.sql +6 -0
- package/src/migrations/0077_scope_requests.sql +52 -0
- package/src/migrations/0078_scope_grant_switches.sql +18 -0
- package/src/migrations/0079_scope_live_install_switches.sql +19 -0
- package/src/migrations/0080_rename_enterprise_admin.sql +18 -0
- package/src/migrations/0081_platform_components.sql +129 -0
- package/src/migrations/0082_platform_migration.sql +33 -0
- package/src/migrations/0083_plugin_scope_sync_failures.sql +15 -0
- package/src/migrations/0084_org_owned_items.sql +85 -0
- package/src/migrations/0085_agent_templates_phase4.sql +45 -0
- package/src/migrations/0086_org_layering.sql +30 -0
- package/src/migrations/0087_approval_summary.sql +6 -0
- package/src/migrations/0088_environments.sql +80 -0
- package/src/migrations/0089_model_kinds_usage.sql +38 -0
- package/src/migrations/0090_initial_passwords.sql +27 -0
- package/src/migrations/0091_account_time_zone.sql +4 -0
- package/src/migrations/0092_tools_default_on.sql +27 -0
- package/src/migrations/0093_connected_environments.sql +37 -0
- package/src/migrations/0094_environment_paths_idx.sql +7 -0
- package/src/migrations/0095_environment_files_resets.sql +5 -0
- package/src/migrations/0096_environment_demoted_default.sql +18 -0
- package/src/migrations/0097_extension_installs_enabled_at.sql +16 -0
- package/src/migrations/0098_single_provider_running_first.sql +41 -0
- package/src/migrations/0099_channel_connection_guide_ack.sql +6 -0
- package/src/migrations/0100_catalog_files.sql +13 -0
- package/src/migrations/0101_marketplace_icons.sql +32 -0
- package/src/migrations/0102_themes.sql +64 -0
- package/src/migrations/0103_ui_theme_setting.sql +7 -0
- package/src/migrations/0104_connector_tool_account_policies.sql +16 -0
- package/src/migrations/0105_devices_rename.sql +136 -0
- package/src/migrations/0106_setup_guides_v2.sql +10 -0
- package/src/migrations/0107_extension_client_builds.sql +50 -0
- package/src/migrations/0108_question_skipped.sql +6 -0
- package/src/migrations/0109_audit_platform_idx.sql +5 -0
- package/src/migrations/0110_usage_time_idx.sql +8 -0
- package/src/migrations/0111_agent_skill_sharing.sql +22 -0
- package/src/migrations/0112_skill_share_requests.sql +4 -0
- package/dist/catalog/upgrade-targets.d.ts +0 -56
- package/dist/catalog/upgrade-targets.js +0 -90
- package/dist/conversations/sandbox-status.d.ts +0 -24
- package/dist/conversations/sandbox-status.js +0 -52
- package/dist/extensions/org-config.controller.d.ts +0 -24
- package/dist/extensions/org-config.controller.js +0 -62
- package/dist/tools/builtins/sandbox/names.d.ts +0 -7
- package/dist/tools/builtins/sandbox/names.js +0 -20
- package/dist/tools/builtins/skill-write.d.ts +0 -59
- package/dist/tools/builtins/skill-write.js +0 -244
package/dist/runtime/waits.js
CHANGED
|
@@ -11,7 +11,9 @@ import { getQueueToken } from "@nestjs/bullmq";
|
|
|
11
11
|
import { Inject, Injectable } from "@nestjs/common";
|
|
12
12
|
import { DelayedError } from "bullmq";
|
|
13
13
|
import { sql } from "kysely";
|
|
14
|
+
import { BackgroundTaskStopper } from "../background/stop.js";
|
|
14
15
|
import { EventLog } from "../conversations/event-log.js";
|
|
16
|
+
import { conversationTree } from "../conversations/tree.js";
|
|
15
17
|
import { KernelDb } from "../infra/database/kernel-db.js";
|
|
16
18
|
import { TransactionHost } from "../infra/database/transaction-host.js";
|
|
17
19
|
import { Transactional } from "../infra/database/transactional.decorator.js";
|
|
@@ -29,7 +31,8 @@ import { MAINTENANCE_QUEUE_NAME } from "./maintenance-queue.js";
|
|
|
29
31
|
import { assistantIdemKey } from "./model-call.js";
|
|
30
32
|
import { notifyFinished, RunFinish, TERMINAL_STATUSES } from "./run-finish.js";
|
|
31
33
|
import { ACTIVE_RUN_STATUSES, RunQueue } from "./run-queue.js";
|
|
32
|
-
import { childResult,
|
|
34
|
+
import { childResult, deliveryRowOfChildRun, finishedEvent, rootSurfaceOf, } from "./subagents/child.js";
|
|
35
|
+
import { SubagentDeliveries } from "./subagents/deliveries.js";
|
|
33
36
|
/** 等待超时任务所在的内核维护队列(见 maintenance.ts)。 */
|
|
34
37
|
export { MAINTENANCE_QUEUE_NAME };
|
|
35
38
|
/** 等待超时任务的名字与 jobId(每个审批 / 输入请求一个,重复投递被 BullMQ 忽略)。 */
|
|
@@ -69,13 +72,16 @@ let Waits = class Waits {
|
|
|
69
72
|
checkpoints;
|
|
70
73
|
abort;
|
|
71
74
|
timeouts;
|
|
75
|
+
events;
|
|
72
76
|
log;
|
|
77
|
+
background;
|
|
78
|
+
deliveries;
|
|
73
79
|
txHost;
|
|
74
80
|
/** Drops the `run.orphaned` subscription (the events may outlive this instance). */
|
|
75
81
|
unsubscribe;
|
|
76
82
|
constructor(kdb, eventLog, approvals, questions, runQueue,
|
|
77
83
|
/**
|
|
78
|
-
* Writes, in the caller's transaction, the results of a stopped run's open `
|
|
84
|
+
* Writes, in the caller's transaction, the results of a stopped run's open `Agent` calls;
|
|
79
85
|
* `fire` runs their observe hooks after the commit.
|
|
80
86
|
*/
|
|
81
87
|
pipeline, finisher,
|
|
@@ -88,7 +94,11 @@ let Waits = class Waits {
|
|
|
88
94
|
*/
|
|
89
95
|
abort,
|
|
90
96
|
/** The maintenance queue: wait timeout jobs (`MaintenanceProcessor` consumes them). */
|
|
91
|
-
timeouts, events, log,
|
|
97
|
+
timeouts, events, log,
|
|
98
|
+
/** Stops a finished sub-agent run's background tasks ({@link childFinished}). */
|
|
99
|
+
background,
|
|
100
|
+
/** Delivers a background child's finish to its parent ({@link childFinished}). */
|
|
101
|
+
deliveries, txHost) {
|
|
92
102
|
this.kdb = kdb;
|
|
93
103
|
this.eventLog = eventLog;
|
|
94
104
|
this.approvals = approvals;
|
|
@@ -99,10 +109,14 @@ let Waits = class Waits {
|
|
|
99
109
|
this.checkpoints = checkpoints;
|
|
100
110
|
this.abort = abort;
|
|
101
111
|
this.timeouts = timeouts;
|
|
112
|
+
this.events = events;
|
|
102
113
|
this.log = log;
|
|
114
|
+
this.background = background;
|
|
115
|
+
this.deliveries = deliveries;
|
|
103
116
|
this.txHost = txHost;
|
|
104
|
-
// an orphaned parent run (marked failed by `ensureRun`) stops its
|
|
105
|
-
//
|
|
117
|
+
// an orphaned parent run (marked failed by `ensureRun`) stops its fork child at once
|
|
118
|
+
// (background children keep running, agent map spec §5.4); the sweep's
|
|
119
|
+
// `sweepForkChildrenOfFinished` is the backstop
|
|
106
120
|
this.unsubscribe = events.on("run.orphaned", ({ runId }) => this.stopChildren(runId, null)
|
|
107
121
|
.then(() => { })
|
|
108
122
|
.catch((err) => this.log.error("cannot stop the sub-agents of an orphaned run", { runId, err })));
|
|
@@ -130,12 +144,17 @@ let Waits = class Waits {
|
|
|
130
144
|
requeued: 0,
|
|
131
145
|
orphaned: 0,
|
|
132
146
|
stopped: 0,
|
|
147
|
+
delivered: 0,
|
|
148
|
+
restarted: 0,
|
|
133
149
|
};
|
|
134
150
|
out.cancelled = await this.sweepFinishedRuns();
|
|
135
151
|
out.expired = await this.sweepOverdue();
|
|
136
152
|
Object.assign(out, await this.sweepSubagentOrphans());
|
|
137
153
|
out.repaired = await this.sweepOpenAgentCalls();
|
|
138
|
-
out.stopped =
|
|
154
|
+
out.stopped =
|
|
155
|
+
(await this.sweepForkChildrenOfFinished()) + (await this.sweepTreesOfDeletedRoots());
|
|
156
|
+
out.delivered = await this.sweepUndelivered();
|
|
157
|
+
out.restarted = await this.sweepParkedMessages();
|
|
139
158
|
out.resumed = await this.sweepStuckRuns();
|
|
140
159
|
return out;
|
|
141
160
|
}
|
|
@@ -167,35 +186,41 @@ let Waits = class Waits {
|
|
|
167
186
|
if (stop && (await this.abortWaiting(conversationId, runId, stop.byAccountId, stop.detail))) {
|
|
168
187
|
return;
|
|
169
188
|
}
|
|
170
|
-
await this.
|
|
189
|
+
await this.surfaceInRoot(runId, conversationId, waitingFor);
|
|
171
190
|
await this.scheduleTimeout(waitingFor, runId);
|
|
172
191
|
if (await this.isSettled(waitingFor, runId))
|
|
173
192
|
await this.resume(runId, waitingFor.id);
|
|
174
193
|
}
|
|
175
194
|
/**
|
|
176
195
|
* A sub-agent's run waits for an approval or an input (sub-agents spec §9): appends
|
|
177
|
-
* `subagent_waiting` to the
|
|
178
|
-
*
|
|
179
|
-
*
|
|
180
|
-
*
|
|
196
|
+
* `subagent_waiting` to the **root** conversation of its tree, whatever its depth (agent map spec
|
|
197
|
+
* §7, {@link rootSurfaceOf}; idem `subagent_waiting:<childRunId>:<waitId>`), so the web and the
|
|
198
|
+
* channel outbound show the card where the person looks. The approval or question itself stays
|
|
199
|
+
* the child run's, with the run's trigger account (inherited down the chain) as the person asked.
|
|
200
|
+
* Not a run of a sub-agent, or a `subagents` wait: nothing. Display only: a failure is logged,
|
|
201
|
+
* the wait goes on.
|
|
181
202
|
*/
|
|
182
|
-
async
|
|
203
|
+
async surfaceInRoot(runId, conversationId, waitingFor) {
|
|
183
204
|
if (waitingFor.kind === "subagents")
|
|
184
205
|
return;
|
|
185
206
|
try {
|
|
186
|
-
const
|
|
187
|
-
|
|
188
|
-
.select(["parent_conversation_id", "parent_run_id", "child_conversation_id"])
|
|
189
|
-
.where("child_run_id", "=", runId)
|
|
190
|
-
.executeTakeFirst();
|
|
191
|
-
if (!d)
|
|
207
|
+
const target = await rootSurfaceOf(this.db, conversationId, runId);
|
|
208
|
+
if (!target)
|
|
192
209
|
return;
|
|
193
210
|
const row = waitingFor.kind === "approval"
|
|
194
211
|
? await this.db
|
|
195
212
|
.selectFrom("approvals")
|
|
196
|
-
.select(["tool_key", "expires_at"])
|
|
213
|
+
.select(["tool_key", "expires_at", "requested_for", "approver_role"])
|
|
197
214
|
.where("id", "=", waitingFor.id)
|
|
198
215
|
.executeTakeFirst()
|
|
216
|
+
.then((r) => r && {
|
|
217
|
+
tool_key: r.tool_key,
|
|
218
|
+
expires_at: r.expires_at,
|
|
219
|
+
approver: {
|
|
220
|
+
requestedFor: r.requested_for,
|
|
221
|
+
approverRole: r.approver_role,
|
|
222
|
+
},
|
|
223
|
+
})
|
|
199
224
|
: await this.db
|
|
200
225
|
.selectFrom("questions")
|
|
201
226
|
.select([sql `spec->>'toolKey'`.as("tool_key"), "expires_at"])
|
|
@@ -203,17 +228,21 @@ let Waits = class Waits {
|
|
|
203
228
|
.executeTakeFirst();
|
|
204
229
|
if (!row)
|
|
205
230
|
return;
|
|
206
|
-
await this.eventLog.append(
|
|
231
|
+
await this.eventLog.append(target.conversationId, [
|
|
207
232
|
{
|
|
208
233
|
type: "subagent_waiting",
|
|
209
|
-
runId:
|
|
234
|
+
runId: target.runId,
|
|
210
235
|
idemKey: subagentWaitingIdemKey(runId, waitingFor.id),
|
|
211
236
|
payload: {
|
|
212
|
-
subagentId:
|
|
237
|
+
subagentId: conversationId,
|
|
213
238
|
childRunId: runId,
|
|
239
|
+
path: target.path,
|
|
214
240
|
kind: waitingFor.kind,
|
|
215
241
|
...(waitingFor.kind === "approval"
|
|
216
|
-
? {
|
|
242
|
+
? {
|
|
243
|
+
approvalId: waitingFor.id,
|
|
244
|
+
...row.approver,
|
|
245
|
+
}
|
|
217
246
|
: { questionId: waitingFor.id }),
|
|
218
247
|
toolKey: row.tool_key,
|
|
219
248
|
expiresAt: new Date(row.expires_at).toISOString(),
|
|
@@ -222,7 +251,7 @@ let Waits = class Waits {
|
|
|
222
251
|
]);
|
|
223
252
|
}
|
|
224
253
|
catch (err) {
|
|
225
|
-
this.log.error("cannot surface a sub-agent's wait in its
|
|
254
|
+
this.log.error("cannot surface a sub-agent's wait in its root conversation", { runId, err });
|
|
226
255
|
}
|
|
227
256
|
}
|
|
228
257
|
/**
|
|
@@ -251,12 +280,13 @@ let Waits = class Waits {
|
|
|
251
280
|
.select(sql `1`.as("one"))
|
|
252
281
|
.where("questions.run_id", "=", runId)
|
|
253
282
|
.where("questions.status", "=", "pending"))))
|
|
254
|
-
// sub-
|
|
255
|
-
//
|
|
283
|
+
// a fork invocation's sub-agent (phase D; agent map spec §5.4: background `Agent`
|
|
284
|
+
// children never hold their parent run) is no longer active
|
|
256
285
|
.where(({ not, exists, selectFrom }) => not(exists(selectFrom("subagent_dispatches as sd")
|
|
257
286
|
.innerJoin("runs as cr", "cr.id", "sd.child_run_id")
|
|
258
287
|
.select(sql `1`.as("one"))
|
|
259
288
|
.where("sd.parent_run_id", "=", runId)
|
|
289
|
+
.where("sd.for_skill", "=", true)
|
|
260
290
|
.where("cr.status", "in", ACTIVE_RUN_STATUSES))))
|
|
261
291
|
.returning(["conversation_id"])
|
|
262
292
|
.executeTakeFirst();
|
|
@@ -286,8 +316,8 @@ let Waits = class Waits {
|
|
|
286
316
|
*/
|
|
287
317
|
async expire(kind, id, at) {
|
|
288
318
|
if (kind === "subagents") {
|
|
289
|
-
// A safety net (spec §7.2, §12)
|
|
290
|
-
// stopped
|
|
319
|
+
// A safety net (spec §7.2, §12) of a fork invocation's wait: its child, still active, is
|
|
320
|
+
// stopped and reports to the parent, which then resumes. The resume tried here
|
|
291
321
|
// covers a step whose children were all done already.
|
|
292
322
|
if (!at) {
|
|
293
323
|
this.log.warn("sub-agent wait timeout without its run; ignored", { id });
|
|
@@ -332,12 +362,12 @@ let Waits = class Waits {
|
|
|
332
362
|
stopped?.fire();
|
|
333
363
|
// a stopped sub-agent reports to its parent now, not at the next sweep (a no-op for other runs)
|
|
334
364
|
await this.childFinished(runId).catch((err) => this.log.error("cannot report stopped sub-agent run", { runId, err }));
|
|
335
|
-
// a stopped
|
|
336
|
-
//
|
|
365
|
+
// a stopped run stops its fork child (spec §12), on its behalf (no account: it reports
|
|
366
|
+
// "stopped with this run"); background children keep running; the wait sweep is the backstop
|
|
337
367
|
await this.stopChildren(runId, null).catch((err) => this.log.error("cannot stop the sub-agents of a run", { runId, err }));
|
|
338
368
|
return true;
|
|
339
369
|
}
|
|
340
|
-
/** {@link abortWaiting}'s transaction; the open `
|
|
370
|
+
/** {@link abortWaiting}'s transaction; the open `Agent` calls it wrote go back through `st`. */
|
|
341
371
|
async abortWaitingIn(conversationId, runId, byAccountId, detail, st) {
|
|
342
372
|
const t = this.db;
|
|
343
373
|
await t
|
|
@@ -385,7 +415,7 @@ let Waits = class Waits {
|
|
|
385
415
|
if (typeof spec.step === "number")
|
|
386
416
|
steps.add(spec.step);
|
|
387
417
|
}
|
|
388
|
-
// a
|
|
418
|
+
// a run waiting on its fork invocation's sub-agent: the report (`pairStoppedForks`)
|
|
389
419
|
const agents = await this.pipeline.stopOpenAgentCalls(runId);
|
|
390
420
|
for (const step of agents.steps)
|
|
391
421
|
steps.add(step);
|
|
@@ -527,9 +557,9 @@ let Waits = class Waits {
|
|
|
527
557
|
}
|
|
528
558
|
/**
|
|
529
559
|
* Sub-agents waits past their `runs.wait_expires_at` (their timeout job was lost): expired the
|
|
530
|
-
* way the timeout job would ({@link expire}: the
|
|
531
|
-
* parent resumes once
|
|
532
|
-
*
|
|
560
|
+
* way the timeout job would ({@link expire}: the fork invocation's active child stops as
|
|
561
|
+
* `timed out`, the parent resumes once it is done). Only fork invocations wait (agent map spec
|
|
562
|
+
* §5.4); their step is the run's fork dispatch step. A run stays here until its children have
|
|
533
563
|
* stopped; a pass that neither stopped a child nor resumed the run is not counted.
|
|
534
564
|
*/
|
|
535
565
|
async sweepOverdueSubagents() {
|
|
@@ -548,6 +578,7 @@ let Waits = class Waits {
|
|
|
548
578
|
.selectFrom("subagent_dispatches")
|
|
549
579
|
.select(sql `max(step)`.as("step"))
|
|
550
580
|
.where("parent_run_id", "=", r.id)
|
|
581
|
+
.where("for_skill", "=", true)
|
|
551
582
|
.executeTakeFirst();
|
|
552
583
|
if (last?.step == null)
|
|
553
584
|
continue;
|
|
@@ -626,33 +657,72 @@ let Waits = class Waits {
|
|
|
626
657
|
return out;
|
|
627
658
|
}
|
|
628
659
|
/**
|
|
629
|
-
*
|
|
630
|
-
*
|
|
631
|
-
*
|
|
632
|
-
*
|
|
633
|
-
*
|
|
634
|
-
* stopped
|
|
635
|
-
*
|
|
660
|
+
* Idle sub-agent conversations (no active run, not deleted) with a message newer than what they
|
|
661
|
+
* consumed, written past the grace period and within the last day: a `SendMessage` that reached a
|
|
662
|
+
* run after its last model call is started by that run's post-job `ensureRun`
|
|
663
|
+
* (`RunQueue.childWakeIn`), which a replica dying after the terminal commit skips. Re-derived with
|
|
664
|
+
* the same `ensureRun` (its rules decide: a paused root starts nothing). A sub-agent whose last
|
|
665
|
+
* run was stopped (`aborted`) can never start from a message, so it is left out here, and the
|
|
666
|
+
* newest conversations come first (active within the last day), so parked messages that cannot
|
|
667
|
+
* start never fill the batch. Returns how many runs started.
|
|
636
668
|
*/
|
|
637
|
-
async
|
|
638
|
-
const
|
|
639
|
-
.selectFrom("
|
|
640
|
-
.
|
|
641
|
-
.
|
|
642
|
-
.
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
.where("
|
|
646
|
-
.where((
|
|
669
|
+
async sweepParkedMessages() {
|
|
670
|
+
const rows = await this.db
|
|
671
|
+
.selectFrom("conversations as c")
|
|
672
|
+
.select("c.id")
|
|
673
|
+
.where("c.kind", "=", "subagent")
|
|
674
|
+
.where("c.deleted_at", "is", null)
|
|
675
|
+
// every append bumps `updated_at`: a message of the last day implies it (an index-friendly
|
|
676
|
+
// bound before the event lookups)
|
|
677
|
+
.where("c.updated_at", ">", sql `now() - interval '1 day'`)
|
|
678
|
+
.where((eb) => sql `(
|
|
679
|
+
SELECT r.status FROM capybara.runs r WHERE r.conversation_id = ${eb.ref("c.id")}
|
|
680
|
+
ORDER BY r.created_at DESC, r.id DESC LIMIT 1
|
|
681
|
+
) IS DISTINCT FROM 'aborted'`)
|
|
682
|
+
.where(({ exists, selectFrom }) => exists(selectFrom("conversation_events as e")
|
|
683
|
+
.select(sql `1`.as("one"))
|
|
684
|
+
.whereRef("e.conversation_id", "=", "c.id")
|
|
685
|
+
.where("e.type", "=", "user_message")
|
|
686
|
+
.whereRef("e.seq", ">", "c.consumed_seq")
|
|
687
|
+
.where("e.created_at", "<", sql `now() - ${WAIT_SWEEP_GRACE_MS}::integer * interval '1 millisecond'`)
|
|
688
|
+
.where("e.created_at", ">", sql `now() - interval '1 day'`)))
|
|
689
|
+
.where(({ not, exists, selectFrom }) => not(exists(selectFrom("runs as r")
|
|
647
690
|
.select(sql `1`.as("one"))
|
|
648
|
-
.whereRef("
|
|
649
|
-
.where("
|
|
650
|
-
|
|
651
|
-
.
|
|
691
|
+
.whereRef("r.conversation_id", "=", "c.id")
|
|
692
|
+
.where("r.status", "in", ACTIVE_RUN_STATUSES))))
|
|
693
|
+
.orderBy("c.updated_at", "desc")
|
|
694
|
+
.orderBy("c.id")
|
|
652
695
|
.limit(WAIT_SWEEP_BATCH)
|
|
653
696
|
.execute();
|
|
654
|
-
|
|
655
|
-
|
|
697
|
+
let n = 0;
|
|
698
|
+
for (const c of rows) {
|
|
699
|
+
try {
|
|
700
|
+
if ((await this.runQueue.ensureRun(c.id)) === null)
|
|
701
|
+
continue;
|
|
702
|
+
n++;
|
|
703
|
+
this.log.warn("wait sweep: started a sub-agent's parked message", { conversationId: c.id });
|
|
704
|
+
}
|
|
705
|
+
catch (err) {
|
|
706
|
+
this.log.error("wait sweep: cannot start a sub-agent's parked message", {
|
|
707
|
+
conversationId: c.id,
|
|
708
|
+
err,
|
|
709
|
+
});
|
|
710
|
+
}
|
|
711
|
+
}
|
|
712
|
+
return n;
|
|
713
|
+
}
|
|
714
|
+
/**
|
|
715
|
+
* Finished runs (past the grace period, within the last day) triggered by a fork invocation that
|
|
716
|
+
* has no report ({@link unreportedForkRuns}): a terminal path that skipped
|
|
717
|
+
* `stopOpenAgentCalls`, such as an old replica's abort, would otherwise leave a fork lead without
|
|
718
|
+
* its report. Each is repaired under the conversation row lock with the normal
|
|
719
|
+
* `stopOpenAgentCalls` (an ended child gives its result, an active one the stopped text;
|
|
720
|
+
* idempotency keys make it safe against the regular paths); an active fork child is then stopped
|
|
721
|
+
* by {@link sweepForkChildrenOfFinished}. An `Agent` call has its result from its dispatch (agent
|
|
722
|
+
* map spec §4.1).
|
|
723
|
+
*/
|
|
724
|
+
async sweepOpenAgentCalls() {
|
|
725
|
+
const runs = await unreportedForkRuns(this.db);
|
|
656
726
|
let total = 0;
|
|
657
727
|
for (const r of runs) {
|
|
658
728
|
try {
|
|
@@ -665,13 +735,13 @@ let Waits = class Waits {
|
|
|
665
735
|
await this.eventLog.notify(r.parent_conversation_id, toSeq);
|
|
666
736
|
fire();
|
|
667
737
|
total++;
|
|
668
|
-
this.log.warn("wait sweep: wrote missing
|
|
738
|
+
this.log.warn("wait sweep: wrote the missing fork report of a finished run", {
|
|
669
739
|
runId: r.parent_run_id,
|
|
670
740
|
conversationId: r.parent_conversation_id,
|
|
671
741
|
});
|
|
672
742
|
}
|
|
673
743
|
catch (err) {
|
|
674
|
-
this.log.error("wait sweep: cannot write missing
|
|
744
|
+
this.log.error("wait sweep: cannot write the missing fork report of a finished run", {
|
|
675
745
|
runId: r.parent_run_id,
|
|
676
746
|
err,
|
|
677
747
|
});
|
|
@@ -703,16 +773,19 @@ let Waits = class Waits {
|
|
|
703
773
|
return stopped.toSeq ?? null;
|
|
704
774
|
}
|
|
705
775
|
/**
|
|
706
|
-
* Active sub-agent runs of a parent run that finished more than the
|
|
707
|
-
* §12:
|
|
776
|
+
* Active fork sub-agent runs (phase D, `for_skill`) of a parent run that finished more than the
|
|
777
|
+
* grace period ago (§12: the run's terminal state stops its fork child and reports it stopped;
|
|
778
|
+
* this is the backstop) → stopped. Background `Agent` children of a finished run are the normal
|
|
779
|
+
* case and keep running (agent map spec §5.4).
|
|
708
780
|
*/
|
|
709
|
-
async
|
|
781
|
+
async sweepForkChildrenOfFinished() {
|
|
710
782
|
const parents = await this.db
|
|
711
783
|
.selectFrom("subagent_dispatches as sd")
|
|
712
784
|
.innerJoin("runs as cr", "cr.id", "sd.child_run_id")
|
|
713
785
|
.innerJoin("runs as pr", "pr.id", "sd.parent_run_id")
|
|
714
786
|
.select("sd.parent_run_id")
|
|
715
787
|
.distinct()
|
|
788
|
+
.where("sd.for_skill", "=", true)
|
|
716
789
|
.where("cr.status", "in", ACTIVE_RUN_STATUSES)
|
|
717
790
|
.where("pr.status", "in", TERMINAL_RUN_STATUSES)
|
|
718
791
|
.where("pr.finished_at", "<", sql `now() - ${WAIT_SWEEP_GRACE_MS}::integer * interval '1 millisecond'`)
|
|
@@ -725,13 +798,13 @@ let Waits = class Waits {
|
|
|
725
798
|
if (n === 0)
|
|
726
799
|
continue;
|
|
727
800
|
total += n;
|
|
728
|
-
this.log.warn("wait sweep: stopped sub-
|
|
801
|
+
this.log.warn("wait sweep: stopped the fork sub-agent of a finished run", {
|
|
729
802
|
runId: p.parent_run_id,
|
|
730
803
|
count: n,
|
|
731
804
|
});
|
|
732
805
|
}
|
|
733
806
|
catch (err) {
|
|
734
|
-
this.log.error("wait sweep: cannot stop sub-
|
|
807
|
+
this.log.error("wait sweep: cannot stop the fork sub-agent of a finished run", {
|
|
735
808
|
runId: p.parent_run_id,
|
|
736
809
|
err,
|
|
737
810
|
});
|
|
@@ -739,6 +812,109 @@ let Waits = class Waits {
|
|
|
739
812
|
}
|
|
740
813
|
return total;
|
|
741
814
|
}
|
|
815
|
+
/**
|
|
816
|
+
* Active sub-agent runs with a deleted ancestor (agent map spec §10: deleting the root stops the
|
|
817
|
+
* whole tree; the delete's own {@link stopTree} is the normal path, this the backstop for a crash
|
|
818
|
+
* between marking the root deleted and stopping its tree, or a dispatch that raced it) → stopped
|
|
819
|
+
* on the deleter's behalf (no account). No grace period: nothing in a deleted tree should run.
|
|
820
|
+
*/
|
|
821
|
+
async sweepTreesOfDeletedRoots() {
|
|
822
|
+
const r = await sql `
|
|
823
|
+
WITH RECURSIVE up(run_id, conversation_id, status, ancestor, n) AS (
|
|
824
|
+
SELECT r.id, r.conversation_id, r.status, c.parent_conversation_id, 1
|
|
825
|
+
FROM capybara.runs r JOIN capybara.conversations c ON c.id = r.conversation_id
|
|
826
|
+
WHERE r.status IN ('queued', 'running', 'waiting') AND c.kind = 'subagent'
|
|
827
|
+
AND c.parent_conversation_id IS NOT NULL
|
|
828
|
+
UNION ALL
|
|
829
|
+
SELECT up.run_id, up.conversation_id, up.status, c.parent_conversation_id, up.n + 1
|
|
830
|
+
FROM up JOIN capybara.conversations c ON c.id = up.ancestor
|
|
831
|
+
WHERE c.deleted_at IS NULL AND c.parent_conversation_id IS NOT NULL AND up.n < 16
|
|
832
|
+
)
|
|
833
|
+
SELECT DISTINCT up.run_id, up.conversation_id, up.status
|
|
834
|
+
FROM up JOIN capybara.conversations a ON a.id = up.ancestor
|
|
835
|
+
WHERE a.deleted_at IS NOT NULL
|
|
836
|
+
LIMIT ${WAIT_SWEEP_BATCH}`.execute(this.db);
|
|
837
|
+
let total = 0;
|
|
838
|
+
for (const run of r.rows) {
|
|
839
|
+
try {
|
|
840
|
+
// already asked to stop (a worker holds it and stops it at its next check): not again
|
|
841
|
+
if (run.status === "running" && (await this.abort.requested(run.run_id)) !== null)
|
|
842
|
+
continue;
|
|
843
|
+
await this.stopRun(run.conversation_id, run.run_id, run.status, null);
|
|
844
|
+
total++;
|
|
845
|
+
this.log.warn("wait sweep: stopped a sub-agent run of a deleted conversation's tree", {
|
|
846
|
+
runId: run.run_id,
|
|
847
|
+
});
|
|
848
|
+
}
|
|
849
|
+
catch (err) {
|
|
850
|
+
this.log.error("wait sweep: cannot stop a sub-agent run of a deleted tree", {
|
|
851
|
+
runId: run.run_id,
|
|
852
|
+
err,
|
|
853
|
+
});
|
|
854
|
+
}
|
|
855
|
+
}
|
|
856
|
+
return total;
|
|
857
|
+
}
|
|
858
|
+
/**
|
|
859
|
+
* Background sub-agent runs that finished more than the grace period ago (within the last day)
|
|
860
|
+
* whose parent has no `subagent_finished` for them (agent map spec §10: the finisher died after
|
|
861
|
+
* the child's terminal commit; the finish path writes `subagent_finished` and the delivery in one
|
|
862
|
+
* transaction) → {@link childFinished}, idempotent against a late finisher. Keyed on the child
|
|
863
|
+
* run, so a run nobody dispatched (a wake run, §5.3) is repaired too, and on
|
|
864
|
+
* `subagent_finished`, not on the delivery, so a child that finished before background
|
|
865
|
+
* dispatch (its result was the `Agent` call's, its `subagent_finished` written then) is never
|
|
866
|
+
* delivered a second time. Fork invocations' runs, a run without a terminal event in its log
|
|
867
|
+
* (nothing to deliver), a conversation never dispatched and a child whose parent conversation
|
|
868
|
+
* was deleted are skipped; only a written delivery counts.
|
|
869
|
+
*/
|
|
870
|
+
async sweepUndelivered() {
|
|
871
|
+
const runs = await this.db
|
|
872
|
+
.selectFrom("runs as cr")
|
|
873
|
+
.innerJoin("conversations as cc", "cc.id", "cr.conversation_id")
|
|
874
|
+
.innerJoin("conversations as pc", "pc.id", "cc.parent_conversation_id")
|
|
875
|
+
.select("cr.id as child_run_id")
|
|
876
|
+
.where("cc.kind", "=", "subagent")
|
|
877
|
+
.where("pc.deleted_at", "is", null)
|
|
878
|
+
.where("cr.status", "in", TERMINAL_RUN_STATUSES)
|
|
879
|
+
.where("cr.finished_at", "<", sql `now() - ${WAIT_SWEEP_GRACE_MS}::integer * interval '1 millisecond'`)
|
|
880
|
+
.where("cr.finished_at", ">", sql `now() - interval '1 day'`)
|
|
881
|
+
.where(({ exists, selectFrom }) => exists(selectFrom("subagent_dispatches as sd")
|
|
882
|
+
.select(sql `1`.as("one"))
|
|
883
|
+
.whereRef("sd.child_conversation_id", "=", "cc.id")))
|
|
884
|
+
.where(({ not, exists, selectFrom }) => not(exists(selectFrom("subagent_dispatches as fd")
|
|
885
|
+
.select(sql `1`.as("one"))
|
|
886
|
+
.whereRef("fd.child_run_id", "=", "cr.id")
|
|
887
|
+
.where("fd.for_skill", "=", true))))
|
|
888
|
+
.where(({ not, exists, selectFrom }) => not(exists(selectFrom("conversation_events as e")
|
|
889
|
+
.select(sql `1`.as("one"))
|
|
890
|
+
.whereRef("e.conversation_id", "=", "pc.id")
|
|
891
|
+
.where("e.idem_key", "=", sql `'subagent_finished:' || cr.id`))))
|
|
892
|
+
.where(({ exists, selectFrom }) => exists(selectFrom("conversation_events as t")
|
|
893
|
+
.select(sql `1`.as("one"))
|
|
894
|
+
.whereRef("t.conversation_id", "=", "cc.id")
|
|
895
|
+
.whereRef("t.run_id", "=", "cr.id")
|
|
896
|
+
.where("t.type", "in", ["run_finished", "run_failed", "run_aborted"])))
|
|
897
|
+
.limit(WAIT_SWEEP_BATCH)
|
|
898
|
+
.execute();
|
|
899
|
+
let total = 0;
|
|
900
|
+
for (const r of runs) {
|
|
901
|
+
try {
|
|
902
|
+
if (!(await this.childFinished(r.child_run_id)))
|
|
903
|
+
continue;
|
|
904
|
+
total++;
|
|
905
|
+
this.log.warn("wait sweep: delivered the finish of a sub-agent run", {
|
|
906
|
+
childRunId: r.child_run_id,
|
|
907
|
+
});
|
|
908
|
+
}
|
|
909
|
+
catch (err) {
|
|
910
|
+
this.log.error("wait sweep: cannot deliver the finish of a sub-agent run", {
|
|
911
|
+
childRunId: r.child_run_id,
|
|
912
|
+
err,
|
|
913
|
+
});
|
|
914
|
+
}
|
|
915
|
+
}
|
|
916
|
+
return total;
|
|
917
|
+
}
|
|
742
918
|
/**
|
|
743
919
|
* 扫描 2:waiting 超过宽限期、却已没有 pending 等待的运行(决定提交后进程崩溃、续跑投递失败回滚等)→
|
|
744
920
|
* {@link resume}(条件更新 `waiting → queued` + 投递)。续跑任务的 jobId 用该运行最近一次等待的 id
|
|
@@ -758,11 +934,12 @@ let Waits = class Waits {
|
|
|
758
934
|
.select(sql `1`.as("one"))
|
|
759
935
|
.whereRef("questions.run_id", "=", "runs.id")
|
|
760
936
|
.where("questions.status", "=", "pending"))))
|
|
761
|
-
// the resume condition's third clause: a
|
|
937
|
+
// the resume condition's third clause: a run with an active fork child is not stuck
|
|
762
938
|
.where(({ not, exists, selectFrom }) => not(exists(selectFrom("subagent_dispatches as sd")
|
|
763
939
|
.innerJoin("runs as cr", "cr.id", "sd.child_run_id")
|
|
764
940
|
.select(sql `1`.as("one"))
|
|
765
941
|
.whereRef("sd.parent_run_id", "=", "runs.id")
|
|
942
|
+
.where("sd.for_skill", "=", true)
|
|
766
943
|
.where("cr.status", "in", ACTIVE_RUN_STATUSES))))
|
|
767
944
|
.limit(WAIT_SWEEP_BATCH)
|
|
768
945
|
.execute();
|
|
@@ -786,8 +963,8 @@ let Waits = class Waits {
|
|
|
786
963
|
return total;
|
|
787
964
|
}
|
|
788
965
|
/**
|
|
789
|
-
* The id of the run's latest wait (by creation time): an approval, an input request or a
|
|
790
|
-
*
|
|
966
|
+
* The id of the run's latest wait (by creation time): an approval, an input request or a fork
|
|
967
|
+
* invocation's dispatch, whose wait id is its child run id (the id the child's finisher resumes
|
|
791
968
|
* with, so a sweep resume and a late finisher resume share one job id).
|
|
792
969
|
*/
|
|
793
970
|
async lastWaitId(runId) {
|
|
@@ -803,7 +980,8 @@ let Waits = class Waits {
|
|
|
803
980
|
.unionAll(this.db
|
|
804
981
|
.selectFrom("subagent_dispatches")
|
|
805
982
|
.select(["child_run_id as id", "created_at"])
|
|
806
|
-
.where("parent_run_id", "=", runId)
|
|
983
|
+
.where("parent_run_id", "=", runId)
|
|
984
|
+
.where("for_skill", "=", true))
|
|
807
985
|
.as("w"))
|
|
808
986
|
.select("w.id")
|
|
809
987
|
.orderBy("w.created_at", "desc")
|
|
@@ -845,7 +1023,7 @@ let Waits = class Waits {
|
|
|
845
1023
|
}
|
|
846
1024
|
/**
|
|
847
1025
|
* Whether the wait is over: an approval or input request is no longer pending (decided, expired
|
|
848
|
-
* or cancelled); `subagents`:
|
|
1026
|
+
* or cancelled); `subagents`: the run's fork invocation child is no longer active.
|
|
849
1027
|
*/
|
|
850
1028
|
async isSettled(w, runId) {
|
|
851
1029
|
if (w.kind === "subagents") {
|
|
@@ -854,6 +1032,7 @@ let Waits = class Waits {
|
|
|
854
1032
|
.innerJoin("runs as cr", "cr.id", "sd.child_run_id")
|
|
855
1033
|
.select("cr.id")
|
|
856
1034
|
.where("sd.parent_run_id", "=", runId)
|
|
1035
|
+
.where("sd.for_skill", "=", true)
|
|
857
1036
|
.where("cr.status", "in", ACTIVE_RUN_STATUSES)
|
|
858
1037
|
.executeTakeFirst();
|
|
859
1038
|
return active === undefined;
|
|
@@ -887,7 +1066,7 @@ let Waits = class Waits {
|
|
|
887
1066
|
* 等待中的调用给取消说明,其余(排在等待调用之后、尚未执行的)给「未执行」说明。
|
|
888
1067
|
*/
|
|
889
1068
|
async stoppedResults(t, conversationId, runId, steps, cancelled,
|
|
890
|
-
/** Calls whose result the caller writes itself (open `
|
|
1069
|
+
/** Calls whose result the caller writes itself (open `Agent` calls). */
|
|
891
1070
|
skip = new Set()) {
|
|
892
1071
|
const out = [];
|
|
893
1072
|
for (const step of steps.sort((a, b) => a - b)) {
|
|
@@ -919,36 +1098,86 @@ let Waits = class Waits {
|
|
|
919
1098
|
return out;
|
|
920
1099
|
}
|
|
921
1100
|
/**
|
|
922
|
-
* After a child run's terminal state committed (sub-agents spec §7.3
|
|
923
|
-
*
|
|
924
|
-
*
|
|
925
|
-
*
|
|
926
|
-
*
|
|
927
|
-
*
|
|
928
|
-
* `
|
|
1101
|
+
* After a child run's terminal state committed (sub-agents spec §7.3, agent map spec §4.5,
|
|
1102
|
+
* §5.2): a background child's run, whether dispatched, sent a message or woken
|
|
1103
|
+
* ({@link deliveryRowOfChildRun}), is delivered to its parent
|
|
1104
|
+
* ({@link SubagentDeliveries.childFinished}: `subagent_finished` and a `finished` delivery,
|
|
1105
|
+
* idempotent by the run); a fork invocation's child (phase D, `for_skill`) appends
|
|
1106
|
+
* `subagent_finished` (idempotent; not model-visible) and tries
|
|
1107
|
+
* {@link resume}`(parentRunId, childRunId)`, which succeeds once its parent run waits on nothing
|
|
1108
|
+
* else. A run of a conversation never dispatched, or not terminal yet, is left alone. A crash in
|
|
1109
|
+
* between is repaired by the wait sweep (the orphan repair calls this again). A fork child's
|
|
1110
|
+
* running background tasks the terminal run started are then stopped (not those of a later run);
|
|
1111
|
+
* a stopped background child's are all stopped, whichever of its runs started them; a background
|
|
1112
|
+
* child that ended on its own keeps them, and their finish wakes it (agent map spec §5.3). True
|
|
1113
|
+
* when a background child's finish was written by this call.
|
|
929
1114
|
*/
|
|
930
1115
|
async childFinished(childRunId) {
|
|
931
|
-
const row = await
|
|
1116
|
+
const row = await deliveryRowOfChildRun(this.db, childRunId);
|
|
932
1117
|
if (!row)
|
|
933
|
-
return;
|
|
1118
|
+
return false;
|
|
934
1119
|
const run = await this.db
|
|
935
1120
|
.selectFrom("runs")
|
|
936
1121
|
.select("status")
|
|
937
1122
|
.where("id", "=", childRunId)
|
|
938
1123
|
.executeTakeFirst();
|
|
939
1124
|
if (!run || !TERMINAL_STATUSES.has(run.status))
|
|
940
|
-
return;
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
|
|
1125
|
+
return false;
|
|
1126
|
+
if (row.forSkill !== true) {
|
|
1127
|
+
try {
|
|
1128
|
+
return await this.deliveries.childFinished(childRunId);
|
|
1129
|
+
}
|
|
1130
|
+
finally {
|
|
1131
|
+
// a background child that ended on its own keeps its tasks: their finish wakes it (agent
|
|
1132
|
+
// map spec §5.3); a stopped one's tasks all stop with it, also those an earlier run of it
|
|
1133
|
+
// started, so none of them wakes it. Once a later run of it exists (a `SendMessage`
|
|
1134
|
+
// started it again before this late call), only the stopped run's own tasks stop: the
|
|
1135
|
+
// others may be the new run's. Never throws.
|
|
1136
|
+
if (run.status === "aborted") {
|
|
1137
|
+
const later = await this.hasLaterRun(row.childConversationId, childRunId);
|
|
1138
|
+
await this.background.stopSubagentTasks(row.childConversationId, later ? childRunId : undefined);
|
|
1139
|
+
}
|
|
1140
|
+
}
|
|
945
1141
|
}
|
|
946
|
-
|
|
947
|
-
|
|
1142
|
+
try {
|
|
1143
|
+
const r = await childResult(this.eventLog, row);
|
|
1144
|
+
if (!r) {
|
|
1145
|
+
this.log.warn("sub-agent run is terminal without a terminal event", { childRunId });
|
|
1146
|
+
return false;
|
|
1147
|
+
}
|
|
1148
|
+
await this.eventLog.append(row.parentConversationId, [finishedEvent(row, r.finished)]);
|
|
1149
|
+
await this.resume(row.parentRunId, childRunId);
|
|
1150
|
+
return false;
|
|
1151
|
+
}
|
|
1152
|
+
finally {
|
|
1153
|
+
// a fork child, whichever way its run ended (its worker, a stop while waiting, an orphan
|
|
1154
|
+
// repair): nobody reads or stops the background tasks that run started through its model
|
|
1155
|
+
// any more (background Bash spec §4.3); a background child's are handled above. Never throws.
|
|
1156
|
+
await this.background.stopSubagentTasks(row.childConversationId, childRunId);
|
|
1157
|
+
}
|
|
1158
|
+
}
|
|
1159
|
+
/**
|
|
1160
|
+
* Whether the conversation has an active run other than `runId`, or one created after it (a
|
|
1161
|
+
* sub-agent started again after `runId` ended).
|
|
1162
|
+
*/
|
|
1163
|
+
async hasLaterRun(conversationId, runId) {
|
|
1164
|
+
const hit = await this.db
|
|
1165
|
+
.selectFrom("runs as r")
|
|
1166
|
+
.select("r.id")
|
|
1167
|
+
.where("r.conversation_id", "=", conversationId)
|
|
1168
|
+
.where("r.id", "<>", runId)
|
|
1169
|
+
.where((eb) => eb.or([
|
|
1170
|
+
eb("r.status", "in", ACTIVE_RUN_STATUSES),
|
|
1171
|
+
eb("r.created_at", ">", eb.selectFrom("runs as o").select("o.created_at").where("o.id", "=", runId)),
|
|
1172
|
+
]))
|
|
1173
|
+
.limit(1)
|
|
1174
|
+
.executeTakeFirst();
|
|
1175
|
+
return hit !== undefined;
|
|
948
1176
|
}
|
|
949
1177
|
/**
|
|
950
|
-
* Stops the active
|
|
951
|
-
* `
|
|
1178
|
+
* Stops the active fork invocation child of a parent run (sub-agents spec §12, phase D;
|
|
1179
|
+
* `for_skill`), or only one dispatched in `opts.step`; background `Agent` children are never
|
|
1180
|
+
* stopped with the run that dispatched them (agent map spec §5.4, §6): a `waiting` child through its own {@link abortWaiting}, a `queued` / `running` one
|
|
952
1181
|
* that no worker holds directly (`RunQueue.abortIfOrphaned`), any other through
|
|
953
1182
|
* `RunAbort.request` (the cross-replica broadcast plus the marker key, so a child that starts
|
|
954
1183
|
* later still sees it), after which a child found `waiting` is stopped through `abortWaiting`
|
|
@@ -965,36 +1194,119 @@ let Waits = class Waits {
|
|
|
965
1194
|
.innerJoin("runs as cr", "cr.id", "sd.child_run_id")
|
|
966
1195
|
.select(["sd.child_conversation_id", "sd.child_run_id", "cr.status"])
|
|
967
1196
|
.where("sd.parent_run_id", "=", parentRunId)
|
|
1197
|
+
.where("sd.for_skill", "=", true)
|
|
968
1198
|
.where("cr.status", "in", ACTIVE_RUN_STATUSES);
|
|
969
1199
|
if (opts.step !== undefined)
|
|
970
1200
|
q = q.where("sd.step", "=", opts.step);
|
|
971
1201
|
const children = await q.execute();
|
|
972
1202
|
for (const c of children) {
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
1203
|
+
await this.stopRun(c.child_conversation_id, c.child_run_id, c.status, byAccountId, opts.detail);
|
|
1204
|
+
}
|
|
1205
|
+
return children.length;
|
|
1206
|
+
}
|
|
1207
|
+
/**
|
|
1208
|
+
* Stops a sub-agent with its descendants (agent map spec §6: stopping an agent of the map stops
|
|
1209
|
+
* it and everything below it; deleting the root stops the whole tree): every active run of
|
|
1210
|
+
* `conversationId` (unless `includeSelf` is false) and of each sub-agent conversation below it,
|
|
1211
|
+
* shallowest first, each the way {@link stopChildren} stops a child (a stopped agent delivers its
|
|
1212
|
+
* finish to its own parent as `aborted`). A run a worker holds ends later; its worker's
|
|
1213
|
+
* {@link stopDescendantsOfStopped} stops what it dispatched after this read. Then the running
|
|
1214
|
+
* background tasks of every covered sub-agent conversation stop, whether it was running or idle.
|
|
1215
|
+
* Returns the number of runs asked to stop.
|
|
1216
|
+
*
|
|
1217
|
+
* Lock order: nothing is held across runs. Each run's stop is its own transaction (or none), and
|
|
1218
|
+
* one that writes the terminal state locks that run's conversation row, then its run row, the
|
|
1219
|
+
* order of `StepLog.appendCounted` (conversation row, then the root's budget run row) and of
|
|
1220
|
+
* dispatch (conversation, run, budget run). No stop here locks a budget run, let alone before a
|
|
1221
|
+
* descendant's conversation row, so the order is never inverted.
|
|
1222
|
+
*/
|
|
1223
|
+
async stopTree(conversationId, byAccountId, opts = {}) {
|
|
1224
|
+
const tree = await conversationTree(this.db, conversationId);
|
|
1225
|
+
const ids = tree.filter((c) => opts.includeSelf !== false || c.level > 0).map((c) => c.id);
|
|
1226
|
+
if (ids.length === 0)
|
|
1227
|
+
return 0;
|
|
1228
|
+
const level = new Map(tree.map((c) => [c.id, c.level]));
|
|
1229
|
+
const runs = (await this.db
|
|
1230
|
+
.selectFrom("runs")
|
|
1231
|
+
.select(["id", "conversation_id", "status"])
|
|
1232
|
+
.where("conversation_id", "in", ids)
|
|
1233
|
+
.where("status", "in", ACTIVE_RUN_STATUSES)
|
|
1234
|
+
.execute()).sort((a, b) => (level.get(a.conversation_id) ?? 0) - (level.get(b.conversation_id) ?? 0));
|
|
1235
|
+
for (const r of runs) {
|
|
1236
|
+
try {
|
|
1237
|
+
if (await this.stopRun(r.conversation_id, r.id, r.status, byAccountId)) {
|
|
1238
|
+
// its approval / question cards changed (RunControl.abortWaiting's event)
|
|
1239
|
+
await this.events.emit("run.wait-stopped", {
|
|
1240
|
+
conversationId: r.conversation_id,
|
|
1241
|
+
runId: r.id,
|
|
1242
|
+
});
|
|
1243
|
+
}
|
|
983
1244
|
}
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
// may have checked the marker before it was set, so check `waiting` again after setting it
|
|
987
|
-
// (review M1)
|
|
988
|
-
const now = await this.db
|
|
989
|
-
.selectFrom("runs")
|
|
990
|
-
.select("status")
|
|
991
|
-
.where("id", "=", runId)
|
|
992
|
-
.executeTakeFirst();
|
|
993
|
-
if (now?.status === "waiting") {
|
|
994
|
-
await this.abortWaiting(conv, runId, byAccountId, opts.detail);
|
|
1245
|
+
catch (err) {
|
|
1246
|
+
this.log.error("cannot stop a sub-agent run of the tree", { runId: r.id, err });
|
|
995
1247
|
}
|
|
996
1248
|
}
|
|
997
|
-
|
|
1249
|
+
// every running background task of the covered sub-agents stops with them, idle ones too
|
|
1250
|
+
// (their finish would wake the idle agent, whose delivery would restart the stopped branch):
|
|
1251
|
+
// all of each conversation's tasks, as a stopped child's run end does (`childFinished`), with
|
|
1252
|
+
// which this is idempotent (only running tasks are stopped; `stoppedBy: "subagent_end"`
|
|
1253
|
+
// never wakes). A root conversation is skipped (`stopSubagentTasks`); never throws.
|
|
1254
|
+
await Promise.all(ids.map((id) => this.background.stopSubagentTasks(id)));
|
|
1255
|
+
return runs.length;
|
|
1256
|
+
}
|
|
1257
|
+
/**
|
|
1258
|
+
* After a sub-agent run's terminal commit (its worker): a run a person stopped (`run_aborted`
|
|
1259
|
+
* with an account and no `detail`; only {@link stopTree} stops a sub-agent's run that way) stops
|
|
1260
|
+
* the active runs below its conversation as well, so a descendant it dispatched after the tree
|
|
1261
|
+
* stop read the tree still stops (dispatch needs its run `running`, so after its terminal commit
|
|
1262
|
+
* the set is final). Any other end leaves its children running (agent map spec §5.4). Returns
|
|
1263
|
+
* the number of runs asked to stop. A root conversation's run never stops its children here.
|
|
1264
|
+
*/
|
|
1265
|
+
async stopDescendantsOfStopped(runId) {
|
|
1266
|
+
const ev = await this.db
|
|
1267
|
+
.selectFrom("runs as r")
|
|
1268
|
+
.innerJoin("conversation_events as e", (j) => j.onRef("e.conversation_id", "=", "r.conversation_id").onRef("e.run_id", "=", "r.id"))
|
|
1269
|
+
.innerJoin("conversations as c", "c.id", "r.conversation_id")
|
|
1270
|
+
.select(["r.conversation_id", "e.payload"])
|
|
1271
|
+
.where("r.id", "=", runId)
|
|
1272
|
+
// a root's stop leaves its children running (agent map spec §6): a person-stopped root run
|
|
1273
|
+
// reaching here (a redelivered job, the failure path) stops nothing
|
|
1274
|
+
.where("c.kind", "=", "subagent")
|
|
1275
|
+
.where("r.status", "=", "aborted")
|
|
1276
|
+
.where("e.type", "=", "run_aborted")
|
|
1277
|
+
.executeTakeFirst();
|
|
1278
|
+
const p = ev?.payload;
|
|
1279
|
+
if (!ev || typeof p?.byAccountId !== "string" || p.detail !== undefined)
|
|
1280
|
+
return 0;
|
|
1281
|
+
return this.stopTree(ev.conversation_id, p.byAccountId, { includeSelf: false });
|
|
1282
|
+
}
|
|
1283
|
+
/**
|
|
1284
|
+
* Stops one active sub-agent run: a `waiting` one through its own {@link abortWaiting}, a
|
|
1285
|
+
* `queued` / `running` one that no worker holds directly (`RunQueue.abortIfOrphaned`, then
|
|
1286
|
+
* reported through {@link childFinished}), any other through `RunAbort.request` (the
|
|
1287
|
+
* cross-replica broadcast plus the marker key, so a run that starts later still sees it), after
|
|
1288
|
+
* which a run found `waiting` is stopped through `abortWaiting` too. True when it was stopped
|
|
1289
|
+
* while waiting.
|
|
1290
|
+
*/
|
|
1291
|
+
async stopRun(conv, runId, status, byAccountId, detail) {
|
|
1292
|
+
// abortWaiting reports the stopped child to the parent itself (childFinished)
|
|
1293
|
+
if (status === "waiting" && (await this.abortWaiting(conv, runId, byAccountId, detail))) {
|
|
1294
|
+
return true;
|
|
1295
|
+
}
|
|
1296
|
+
if (await this.runQueue.abortIfOrphaned(conv, runId, byAccountId, detail)) {
|
|
1297
|
+
await this.childFinished(runId);
|
|
1298
|
+
return false;
|
|
1299
|
+
}
|
|
1300
|
+
await this.abort.request(runId, byAccountId, detail);
|
|
1301
|
+
// the suspend handshake (see suspend): a run that became `waiting` after the read above may
|
|
1302
|
+
// have checked the marker before it was set, so check `waiting` again after setting it
|
|
1303
|
+
// (review M1)
|
|
1304
|
+
const now = await this.db
|
|
1305
|
+
.selectFrom("runs")
|
|
1306
|
+
.select("status")
|
|
1307
|
+
.where("id", "=", runId)
|
|
1308
|
+
.executeTakeFirst();
|
|
1309
|
+
return now?.status === "waiting" && (await this.abortWaiting(conv, runId, byAccountId, detail));
|
|
998
1310
|
}
|
|
999
1311
|
};
|
|
1000
1312
|
__decorate([
|
|
@@ -1020,7 +1332,9 @@ Waits = __decorate([
|
|
|
1020
1332
|
__param(9, Inject(getQueueToken(MAINTENANCE_QUEUE_NAME))),
|
|
1021
1333
|
__param(10, Inject(KernelEvents)),
|
|
1022
1334
|
__param(11, Inject(KERNEL_LOGGER)),
|
|
1023
|
-
__param(12, Inject(
|
|
1335
|
+
__param(12, Inject(BackgroundTaskStopper)),
|
|
1336
|
+
__param(13, Inject(SubagentDeliveries)),
|
|
1337
|
+
__param(14, Inject(TransactionHost))
|
|
1024
1338
|
], Waits);
|
|
1025
1339
|
export { Waits };
|
|
1026
1340
|
/**
|