@capybara-hq/kernel 0.1.0-rc.0 → 0.1.0-rc.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bootstrap.json +92 -8
- package/dist/admin/admin.controller.d.ts +52 -71
- package/dist/admin/admin.controller.js +117 -63
- package/dist/admin/admin.module.d.ts +3 -0
- package/dist/admin/admin.module.js +22 -0
- package/dist/admin/admin.schemas.d.ts +57 -0
- package/dist/admin/admin.schemas.js +50 -0
- package/dist/admin/extensions.controller.d.ts +47 -16
- package/dist/admin/extensions.controller.js +94 -23
- package/dist/admin/extensions.schemas.d.ts +7 -0
- package/dist/admin/extensions.schemas.js +10 -0
- package/dist/admin/limit-defaults.d.ts +20 -0
- package/dist/admin/limit-defaults.js +10 -0
- package/dist/admin/setup-lock.d.ts +16 -0
- package/dist/admin/setup-lock.js +47 -0
- package/dist/admin/setup.controller.d.ts +9 -9
- package/dist/admin/setup.controller.js +28 -26
- package/dist/admin/setup.service.d.ts +20 -28
- package/dist/admin/setup.service.js +65 -65
- package/dist/agents/agent-lookup.d.ts +72 -0
- package/dist/agents/agent-lookup.js +208 -0
- package/dist/agents/agent-profile.service.d.ts +31 -0
- package/dist/agents/agent-profile.service.js +122 -0
- package/dist/agents/agents.controller.d.ts +54 -169
- package/dist/agents/agents.controller.js +172 -37
- package/dist/agents/agents.module.d.ts +10 -0
- package/dist/agents/agents.module.js +71 -0
- package/dist/agents/agents.schemas.d.ts +389 -0
- package/dist/agents/agents.schemas.js +126 -0
- package/dist/agents/agents.service.d.ts +104 -76
- package/dist/agents/agents.service.js +509 -383
- package/dist/agents/definition.d.ts +133 -21
- package/dist/agents/definition.js +361 -41
- package/dist/agents/from-template.d.ts +106 -0
- package/dist/agents/from-template.js +680 -0
- package/dist/agents/from-template.service.d.ts +72 -0
- package/dist/agents/from-template.service.js +178 -0
- package/dist/agents/instruction-files.d.ts +60 -0
- package/dist/agents/instruction-files.js +111 -0
- package/dist/agents/models.controller.d.ts +44 -6
- package/dist/agents/models.controller.js +84 -8
- package/dist/agents/org-templates.d.ts +186 -0
- package/dist/agents/org-templates.js +868 -0
- package/dist/agents/pending-connector-requests.d.ts +79 -0
- package/dist/agents/pending-connector-requests.js +215 -0
- package/dist/agents/pending-connectors.controller.d.ts +39 -0
- package/dist/agents/pending-connectors.controller.js +91 -0
- package/dist/agents/pending-connectors.service.d.ts +62 -0
- package/dist/agents/pending-connectors.service.js +282 -0
- package/dist/agents/profile.d.ts +114 -0
- package/dist/agents/profile.js +55 -0
- package/dist/agents/readiness.controller.d.ts +26 -0
- package/dist/agents/readiness.controller.js +56 -0
- package/dist/agents/templates.controller.d.ts +78 -6
- package/dist/agents/templates.controller.js +154 -8
- package/dist/agents/templates.d.ts +132 -30
- package/dist/agents/templates.js +500 -46
- package/dist/agents/templates.schemas.d.ts +20 -0
- package/dist/agents/templates.schemas.js +45 -0
- package/dist/app.d.ts +93 -0
- package/dist/app.js +150 -0
- package/dist/background/background.controller.d.ts +38 -0
- package/dist/background/background.controller.js +88 -0
- package/dist/background/background.module.d.ts +10 -0
- package/dist/background/background.module.js +39 -0
- package/dist/background/background.schemas.d.ts +10 -0
- package/dist/background/background.schemas.js +16 -0
- package/dist/background/finish.d.ts +44 -0
- package/dist/background/finish.js +95 -0
- package/dist/background/launch-lock.d.ts +15 -0
- package/dist/background/launch-lock.js +40 -0
- package/dist/background/launch.d.ts +42 -0
- package/dist/background/launch.js +77 -0
- package/dist/background/poll.job.d.ts +56 -0
- package/dist/background/poll.job.js +195 -0
- package/dist/background/render.d.ts +23 -0
- package/dist/background/render.js +48 -0
- package/dist/background/session.d.ts +48 -0
- package/dist/background/session.js +80 -0
- package/dist/background/status.d.ts +35 -0
- package/dist/background/status.js +57 -0
- package/dist/background/stop.d.ts +68 -0
- package/dist/background/stop.js +244 -0
- package/dist/background/store.d.ts +167 -0
- package/dist/background/store.js +361 -0
- package/dist/background/store.module.d.ts +6 -0
- package/dist/background/store.module.js +22 -0
- package/dist/background/tasks.service.d.ts +77 -0
- package/dist/background/tasks.service.js +216 -0
- package/dist/background/wake-rules.d.ts +66 -0
- package/dist/background/wake-rules.js +113 -0
- package/dist/background/wake.d.ts +30 -0
- package/dist/background/wake.js +63 -0
- package/dist/catalog/admin-catalog.controller.d.ts +102 -52
- package/dist/catalog/admin-catalog.controller.js +222 -67
- package/dist/catalog/admin-catalog.schemas.d.ts +72 -0
- package/dist/catalog/admin-catalog.schemas.js +92 -0
- package/dist/catalog/catalog-content.d.ts +232 -0
- package/dist/catalog/catalog-content.js +367 -0
- package/dist/catalog/catalog-files.d.ts +41 -0
- package/dist/catalog/catalog-files.js +86 -0
- package/dist/catalog/catalog-import.module.d.ts +7 -0
- package/dist/catalog/catalog-import.module.js +60 -0
- package/dist/catalog/catalog-items.d.ts +290 -0
- package/dist/catalog/catalog-items.js +676 -0
- package/dist/catalog/catalog-scope.service.d.ts +260 -0
- package/dist/catalog/catalog-scope.service.js +1124 -0
- package/dist/catalog/catalog.module.d.ts +12 -0
- package/dist/catalog/catalog.module.js +81 -0
- package/dist/catalog/catalog.service.d.ts +141 -206
- package/dist/catalog/catalog.service.js +237 -528
- package/dist/catalog/claude/agents.js +15 -10
- package/dist/catalog/cli.d.ts +14 -3
- package/dist/catalog/cli.js +39 -32
- package/dist/catalog/component-promotion.d.ts +96 -0
- package/dist/catalog/component-promotion.js +395 -0
- package/dist/catalog/component-scope.controller.d.ts +90 -0
- package/dist/catalog/component-scope.controller.js +234 -0
- package/dist/catalog/component-scope.schemas.d.ts +114 -0
- package/dist/catalog/component-scope.schemas.js +97 -0
- package/dist/catalog/component-scope.service.d.ts +327 -0
- package/dist/catalog/component-scope.service.js +990 -0
- package/dist/catalog/component-state.d.ts +188 -0
- package/dist/catalog/component-state.js +455 -0
- package/dist/catalog/git-source.d.ts +9 -1
- package/dist/catalog/git-source.js +29 -2
- package/dist/catalog/job-ids.d.ts +45 -0
- package/dist/catalog/job-ids.js +40 -0
- package/dist/catalog/jobs.d.ts +27 -0
- package/dist/catalog/jobs.js +70 -0
- package/dist/catalog/locks.d.ts +24 -0
- package/dist/catalog/locks.js +63 -0
- package/dist/catalog/marketplace-fetch.d.ts +1 -1
- package/dist/catalog/marketplace-icons.d.ts +64 -0
- package/dist/catalog/marketplace-icons.js +131 -0
- package/dist/catalog/marketplaces.controller.d.ts +53 -44
- package/dist/catalog/marketplaces.controller.js +146 -51
- package/dist/catalog/marketplaces.schemas.d.ts +48 -0
- package/dist/catalog/marketplaces.schemas.js +53 -0
- package/dist/catalog/marketplaces.service.d.ts +136 -26
- package/dist/catalog/marketplaces.service.js +663 -281
- package/dist/catalog/org-catalog.controller.d.ts +115 -63
- package/dist/catalog/org-catalog.controller.js +207 -100
- package/dist/catalog/org-catalog.schemas.d.ts +88 -0
- package/dist/catalog/org-catalog.schemas.js +93 -0
- package/dist/catalog/org-catalog.service.d.ts +89 -216
- package/dist/catalog/org-catalog.service.js +431 -472
- package/dist/catalog/org-extension-switch.d.ts +41 -0
- package/dist/catalog/org-extension-switch.js +115 -0
- package/dist/catalog/org-extension.controller.d.ts +113 -0
- package/dist/catalog/org-extension.controller.js +271 -0
- package/dist/catalog/org-extension.schemas.d.ts +15 -0
- package/dist/catalog/org-extension.schemas.js +22 -0
- package/dist/catalog/org-plugin-uploads.controller.d.ts +77 -0
- package/dist/catalog/org-plugin-uploads.controller.js +200 -0
- package/dist/catalog/org-plugin-uploads.d.ts +71 -0
- package/dist/catalog/org-plugin-uploads.js +122 -0
- package/dist/catalog/org-plugin-uploads.schemas.d.ts +20 -0
- package/dist/catalog/org-plugin-uploads.schemas.js +32 -0
- package/dist/catalog/owned-items.d.ts +188 -0
- package/dist/catalog/owned-items.js +801 -0
- package/dist/catalog/owned-plugin-cleanup.d.ts +56 -0
- package/dist/catalog/owned-plugin-cleanup.js +194 -0
- package/dist/catalog/ownership.d.ts +172 -0
- package/dist/catalog/ownership.js +326 -0
- package/dist/catalog/platform-components.d.ts +223 -0
- package/dist/catalog/platform-components.js +763 -0
- package/dist/catalog/platform-migration.d.ts +115 -0
- package/dist/catalog/platform-migration.js +582 -0
- package/dist/catalog/plugin-import.d.ts +270 -68
- package/dist/catalog/plugin-import.js +1004 -277
- package/dist/catalog/plugin-install.d.ts +251 -65
- package/dist/catalog/plugin-install.js +1128 -344
- package/dist/catalog/plugin-package.js +14 -1
- package/dist/catalog/plugin-upgrade.d.ts +301 -188
- package/dist/catalog/plugin-upgrade.js +1256 -1068
- package/dist/catalog/request-rules.d.ts +65 -0
- package/dist/catalog/request-rules.js +217 -0
- package/dist/catalog/requests.service.d.ts +205 -117
- package/dist/catalog/requests.service.js +612 -369
- package/dist/catalog/reserved-names.d.ts +8 -0
- package/dist/catalog/reserved-names.js +42 -0
- package/dist/catalog/scope-orgs.d.ts +21 -0
- package/dist/catalog/scope-orgs.js +67 -0
- package/dist/catalog/scope-state.d.ts +35 -0
- package/dist/catalog/scope-state.js +87 -0
- package/dist/catalog/scope-sync-workers.d.ts +7 -0
- package/dist/catalog/scope-sync-workers.js +29 -0
- package/dist/catalog/scope-sync.d.ts +176 -0
- package/dist/catalog/scope-sync.js +576 -0
- package/dist/catalog/scope.d.ts +42 -0
- package/dist/catalog/scope.js +42 -0
- package/dist/catalog/unshare.d.ts +22 -0
- package/dist/catalog/unshare.js +118 -0
- package/dist/channels/actions.d.ts +6 -4
- package/dist/channels/actions.js +11 -4
- package/dist/channels/cards.d.ts +33 -11
- package/dist/channels/cards.js +96 -24
- package/dist/channels/channels.module.d.ts +40 -0
- package/dist/channels/channels.module.js +130 -0
- package/dist/channels/channels.schemas.d.ts +37 -0
- package/dist/channels/channels.schemas.js +38 -0
- package/dist/channels/connections.controller.d.ts +44 -37
- package/dist/channels/connections.controller.js +83 -38
- package/dist/channels/connections.service.d.ts +101 -30
- package/dist/channels/connections.service.js +380 -147
- package/dist/channels/inbound.d.ts +44 -38
- package/dist/channels/inbound.js +190 -44
- package/dist/channels/job-ids.d.ts +10 -0
- package/dist/channels/job-ids.js +10 -0
- package/dist/channels/jobs.d.ts +85 -0
- package/dist/channels/jobs.js +157 -0
- package/dist/channels/outbound.d.ts +71 -80
- package/dist/channels/outbound.js +219 -201
- package/dist/channels/phrases.d.ts +33 -2
- package/dist/channels/phrases.js +29 -1
- package/dist/channels/supervisor.d.ts +88 -46
- package/dist/channels/supervisor.js +230 -132
- package/dist/channels/threads.d.ts +34 -8
- package/dist/channels/threads.js +79 -13
- package/dist/channels/webhook.d.ts +20 -14
- package/dist/channels/webhook.js +51 -20
- package/dist/config/docs.js +5 -1
- package/dist/config/load.d.ts +3 -2
- package/dist/config/load.js +3 -2
- package/dist/config/nacos-source.js +11 -2
- package/dist/config/schema.d.ts +51 -3
- package/dist/config/schema.js +269 -27
- package/dist/conversations/access.d.ts +31 -0
- package/dist/conversations/access.js +110 -0
- package/dist/conversations/agent-tree.d.ts +46 -0
- package/dist/conversations/agent-tree.js +92 -0
- package/dist/conversations/artifacts.d.ts +11 -11
- package/dist/conversations/artifacts.js +36 -10
- package/dist/conversations/attachments.controller.d.ts +1 -1
- package/dist/conversations/attachments.controller.js +8 -6
- package/dist/conversations/attachments.module.d.ts +7 -0
- package/dist/conversations/attachments.module.js +25 -0
- package/dist/conversations/attachments.service.d.ts +60 -22
- package/dist/conversations/attachments.service.js +249 -51
- package/dist/conversations/conversations.controller.d.ts +86 -50
- package/dist/conversations/conversations.controller.js +184 -103
- package/dist/conversations/conversations.module.d.ts +8 -0
- package/dist/conversations/conversations.module.js +72 -0
- package/dist/conversations/conversations.schemas.d.ts +52 -0
- package/dist/conversations/conversations.schemas.js +79 -0
- package/dist/conversations/conversations.service.d.ts +166 -49
- package/dist/conversations/conversations.service.js +383 -179
- package/dist/conversations/environment-status.d.ts +24 -0
- package/dist/conversations/environment-status.js +71 -0
- package/dist/conversations/event-log.d.ts +64 -27
- package/dist/conversations/event-log.js +167 -31
- package/dist/conversations/events.d.ts +252 -9
- package/dist/conversations/events.js +243 -32
- package/dist/conversations/files.d.ts +10 -10
- package/dist/conversations/files.js +37 -11
- package/dist/conversations/idem-keys.d.ts +5 -0
- package/dist/conversations/idem-keys.js +5 -0
- package/dist/conversations/job-ids.d.ts +6 -0
- package/dist/conversations/job-ids.js +6 -0
- package/dist/conversations/message-context.d.ts +79 -0
- package/dist/conversations/message-context.js +145 -0
- package/dist/conversations/outputs-read.d.ts +11 -11
- package/dist/conversations/outputs-read.js +31 -7
- package/dist/conversations/queue.d.ts +53 -58
- package/dist/conversations/queue.js +37 -293
- package/dist/conversations/queue.service.d.ts +60 -0
- package/dist/conversations/queue.service.js +350 -0
- package/dist/conversations/titles.d.ts +83 -27
- package/dist/conversations/titles.js +195 -70
- package/dist/conversations/tree.d.ts +17 -0
- package/dist/conversations/tree.js +42 -0
- package/dist/ctx/bus.js +9 -3
- package/dist/ctx/create-ctx.d.ts +26 -1
- package/dist/ctx/create-ctx.js +45 -16
- package/dist/ctx/lock.d.ts +7 -3
- package/dist/ctx/lock.js +9 -20
- package/dist/ctx/queue.js +3 -2
- package/dist/ctx/secrets.d.ts +10 -2
- package/dist/ctx/secrets.js +7 -3
- package/dist/db/kernel-schema.d.ts +550 -25
- package/dist/db/pool.d.ts +10 -0
- package/dist/db/pool.js +4 -0
- package/dist/devices/device-auth.controller.d.ts +42 -0
- package/dist/devices/device-auth.controller.js +116 -0
- package/dist/devices/device-auth.d.ts +119 -0
- package/dist/devices/device-auth.js +403 -0
- package/dist/devices/device-auth.module.d.ts +7 -0
- package/dist/devices/device-auth.module.js +25 -0
- package/dist/devices/device-gateway.d.ts +128 -0
- package/dist/devices/device-gateway.js +530 -0
- package/dist/devices/device-provider.d.ts +89 -0
- package/dist/devices/device-provider.js +151 -0
- package/dist/devices/device-routes.d.ts +36 -0
- package/dist/devices/device-routes.js +90 -0
- package/dist/devices/devices.module.d.ts +16 -0
- package/dist/devices/devices.module.js +44 -0
- package/dist/devices/dto.d.ts +66 -0
- package/dist/devices/dto.js +44 -0
- package/dist/devices/keys.d.ts +25 -0
- package/dist/devices/keys.js +25 -0
- package/dist/devices/machines.d.ts +118 -0
- package/dist/devices/machines.js +366 -0
- package/dist/devices/relay.d.ts +100 -0
- package/dist/devices/relay.js +373 -0
- package/dist/devices/targets.d.ts +28 -0
- package/dist/devices/targets.js +73 -0
- package/dist/environments/access.d.ts +66 -0
- package/dist/environments/access.js +113 -0
- package/dist/environments/conversation-environments.d.ts +75 -0
- package/dist/environments/conversation-environments.js +231 -0
- package/dist/environments/dto.d.ts +25 -0
- package/dist/environments/dto.js +12 -0
- package/dist/environments/environments.controller.d.ts +36 -0
- package/dist/environments/environments.controller.js +124 -0
- package/dist/environments/environments.module.d.ts +8 -0
- package/dist/environments/environments.module.js +31 -0
- package/dist/environments/environments.schemas.d.ts +3 -0
- package/dist/environments/environments.schemas.js +14 -0
- package/dist/environments/environments.service.d.ts +251 -0
- package/dist/environments/environments.service.js +791 -0
- package/dist/environments/label.d.ts +11 -0
- package/dist/environments/label.js +25 -0
- package/dist/environments/legacy-cleanup.job.d.ts +34 -0
- package/dist/environments/legacy-cleanup.job.js +141 -0
- package/dist/errors.d.ts +136 -2
- package/dist/errors.js +136 -2
- package/dist/evals/budget.d.ts +42 -21
- package/dist/evals/budget.js +114 -62
- package/dist/evals/evals.module.d.ts +31 -0
- package/dist/evals/evals.module.js +114 -0
- package/dist/evals/evals.schemas.d.ts +110 -0
- package/dist/evals/evals.schemas.js +107 -0
- package/dist/evals/jobs.d.ts +20 -0
- package/dist/evals/jobs.js +45 -0
- package/dist/evals/reconstruct.d.ts +18 -9
- package/dist/evals/reconstruct.js +36 -10
- package/dist/evals/recorded-tools.d.ts +37 -1
- package/dist/evals/recorded-tools.js +120 -10
- package/dist/evals/run-replay.d.ts +75 -10
- package/dist/evals/run-replay.js +218 -94
- package/dist/evals/runs.controller.d.ts +3 -58
- package/dist/evals/runs.controller.js +18 -50
- package/dist/evals/runs.service.d.ts +31 -52
- package/dist/evals/runs.service.js +281 -255
- package/dist/evals/sets.controller.d.ts +3 -29
- package/dist/evals/sets.controller.js +18 -39
- package/dist/evals/sets.service.d.ts +29 -13
- package/dist/evals/sets.service.js +262 -202
- package/dist/evals/snapshot.d.ts +5 -4
- package/dist/evals/snapshot.js +17 -4
- package/dist/evals/step-replay.d.ts +6 -8
- package/dist/evals/step-replay.js +17 -10
- package/dist/evals/trajectory.controller.d.ts +1 -1
- package/dist/evals/trajectory.controller.js +11 -7
- package/dist/evals/trajectory.d.ts +2 -2
- package/dist/evals/trajectory.js +1 -1
- package/dist/evals/trajectory.service.d.ts +13 -7
- package/dist/evals/trajectory.service.js +56 -21
- package/dist/evals/worker.d.ts +48 -31
- package/dist/evals/worker.js +229 -123
- package/dist/extensions/admin-ops.d.ts +133 -41
- package/dist/extensions/admin-ops.js +378 -172
- package/dist/extensions/admin-view.d.ts +82 -32
- package/dist/extensions/admin-view.js +284 -71
- package/dist/extensions/approvals.d.ts +24 -10
- package/dist/extensions/approvals.js +73 -46
- package/dist/extensions/blobs.d.ts +27 -10
- package/dist/extensions/blobs.js +112 -45
- package/dist/extensions/bootstrap.d.ts +136 -46
- package/dist/extensions/bootstrap.js +417 -167
- package/dist/extensions/cli.d.ts +32 -10
- package/dist/extensions/cli.js +52 -98
- package/dist/extensions/config-hash.d.ts +10 -0
- package/dist/extensions/config-hash.js +38 -0
- package/dist/extensions/config-issues.d.ts +19 -0
- package/dist/extensions/config-issues.js +48 -0
- package/dist/extensions/config-json-schema.d.ts +43 -7
- package/dist/extensions/config-json-schema.js +124 -58
- package/dist/extensions/deployment-config-store.d.ts +55 -0
- package/dist/extensions/deployment-config-store.js +133 -0
- package/dist/extensions/deployment-config.d.ts +146 -70
- package/dist/extensions/deployment-config.js +439 -246
- package/dist/extensions/display-name.d.ts +22 -0
- package/dist/extensions/display-name.js +77 -0
- package/dist/extensions/effective-config.d.ts +127 -0
- package/dist/extensions/effective-config.js +368 -0
- package/dist/extensions/enabled.d.ts +5 -5
- package/dist/extensions/extensions.module.d.ts +8 -0
- package/dist/extensions/extensions.module.js +96 -0
- package/dist/extensions/hooks.d.ts +40 -6
- package/dist/extensions/hooks.js +83 -17
- package/dist/extensions/host.d.ts +161 -80
- package/dist/extensions/host.js +505 -213
- package/dist/extensions/installs.d.ts +73 -19
- package/dist/extensions/installs.js +174 -37
- package/dist/extensions/job-ids.d.ts +6 -0
- package/dist/extensions/job-ids.js +6 -0
- package/dist/extensions/lifecycle-topics.d.ts +18 -0
- package/dist/extensions/lifecycle-topics.js +18 -0
- package/dist/extensions/lifecycle.d.ts +35 -47
- package/dist/extensions/lifecycle.js +103 -39
- package/dist/extensions/locks.d.ts +45 -0
- package/dist/extensions/locks.js +112 -0
- package/dist/extensions/migrate-lock.d.ts +3 -4
- package/dist/extensions/org-config.d.ts +141 -49
- package/dist/extensions/org-config.js +471 -243
- package/dist/extensions/org-levels.d.ts +37 -0
- package/dist/extensions/org-levels.js +71 -0
- package/dist/extensions/org-overrides.d.ts +151 -0
- package/dist/extensions/org-overrides.js +524 -0
- package/dist/extensions/package.d.ts +14 -1
- package/dist/extensions/package.js +51 -2
- package/dist/extensions/permission-view.d.ts +59 -6
- package/dist/extensions/permission-view.js +7 -5
- package/dist/extensions/plugin-guides.d.ts +129 -0
- package/dist/extensions/plugin-guides.js +283 -0
- package/dist/extensions/plugin-icons.d.ts +54 -0
- package/dist/extensions/plugin-icons.js +125 -0
- package/dist/extensions/plugin-items.d.ts +21 -0
- package/dist/extensions/plugin-items.js +42 -0
- package/dist/extensions/point-defaults.controller.d.ts +28 -0
- package/dist/extensions/point-defaults.controller.js +69 -0
- package/dist/extensions/point-defaults.d.ts +73 -0
- package/dist/extensions/point-defaults.js +236 -0
- package/dist/extensions/point-defaults.schemas.d.ts +9 -0
- package/dist/extensions/point-defaults.schemas.js +14 -0
- package/dist/extensions/registry.d.ts +50 -2
- package/dist/extensions/registry.js +91 -4
- package/dist/extensions/resolve.d.ts +51 -1
- package/dist/extensions/resolve.js +85 -3
- package/dist/extensions/single-provider.d.ts +92 -0
- package/dist/extensions/single-provider.js +180 -0
- package/dist/extensions/sources.d.ts +19 -10
- package/dist/extensions/sources.js +34 -13
- package/dist/extensions/state.module.d.ts +9 -0
- package/dist/extensions/state.module.js +38 -0
- package/dist/extensions/unavailable.d.ts +50 -0
- package/dist/extensions/unavailable.js +115 -0
- package/dist/files/files.module.d.ts +3 -0
- package/dist/files/files.module.js +22 -0
- package/dist/files/previewers.controller.d.ts +7 -2
- package/dist/files/previewers.controller.js +19 -12
- package/dist/files/previewers.d.ts +21 -19
- package/dist/files/previewers.js +114 -38
- package/dist/files/previewers.schemas.d.ts +10 -0
- package/dist/files/previewers.schemas.js +9 -0
- package/dist/http/adapter.d.ts +3 -0
- package/dist/http/adapter.js +25 -0
- package/dist/http/api.module.d.ts +3 -110
- package/dist/http/api.module.js +86 -358
- package/dist/http/app.d.ts +22 -17
- package/dist/http/app.js +83 -52
- package/dist/http/error-filter.module.d.ts +5 -0
- package/dist/http/error-filter.module.js +18 -0
- package/dist/http/error.filter.js +2 -2
- package/dist/http/{gateway.module.d.ts → gateway-routes.d.ts} +7 -3
- package/dist/http/gateway-routes.js +16 -0
- package/dist/http/nest-logger.d.ts +6 -5
- package/dist/http/nest-logger.js +24 -10
- package/dist/http/plugin-dispatch.d.ts +4 -1
- package/dist/http/plugin-dispatch.js +14 -2
- package/dist/identity/accounts.d.ts +130 -38
- package/dist/identity/accounts.js +373 -186
- package/dist/identity/api-tokens.d.ts +11 -7
- package/dist/identity/api-tokens.js +71 -44
- package/dist/identity/audit.d.ts +9 -5
- package/dist/identity/audit.js +5 -1
- package/dist/identity/auth.controller.d.ts +11 -10
- package/dist/identity/auth.controller.js +40 -30
- package/dist/identity/auth.guard.d.ts +16 -8
- package/dist/identity/auth.guard.js +41 -13
- package/dist/identity/binding.d.ts +9 -11
- package/dist/identity/binding.js +41 -13
- package/dist/identity/cookies.d.ts +26 -5
- package/dist/identity/cookies.js +58 -6
- package/dist/identity/external-identity-lock.d.ts +17 -0
- package/dist/identity/external-identity-lock.js +39 -0
- package/dist/identity/external.d.ts +19 -15
- package/dist/identity/external.js +163 -125
- package/dist/identity/identity.module.d.ts +6 -0
- package/dist/identity/identity.module.js +59 -0
- package/dist/identity/initial-passwords.controller.d.ts +22 -0
- package/dist/identity/initial-passwords.controller.js +49 -0
- package/dist/identity/initial-passwords.d.ts +61 -0
- package/dist/identity/initial-passwords.job.d.ts +16 -0
- package/dist/identity/initial-passwords.job.js +46 -0
- package/dist/identity/initial-passwords.js +159 -0
- package/dist/identity/me.controller.d.ts +32 -15
- package/dist/identity/me.controller.js +78 -33
- package/dist/identity/me.schemas.d.ts +14 -0
- package/dist/identity/me.schemas.js +17 -0
- package/dist/identity/principal.d.ts +11 -3
- package/dist/identity/principal.js +11 -3
- package/dist/identity/sessions.d.ts +24 -10
- package/dist/identity/sessions.js +119 -42
- package/dist/identity/settings.d.ts +42 -23
- package/dist/identity/settings.js +137 -72
- package/dist/identity/sso.controller.d.ts +7 -7
- package/dist/identity/sso.controller.js +13 -9
- package/dist/identity/sso.d.ts +9 -12
- package/dist/identity/sso.js +54 -24
- package/dist/identity/super-admin.d.ts +20 -0
- package/dist/identity/super-admin.js +81 -0
- package/dist/inbox/inbox.module.d.ts +6 -0
- package/dist/inbox/inbox.module.js +26 -0
- package/dist/inbox/inbox.schemas.d.ts +8 -0
- package/dist/inbox/inbox.schemas.js +11 -0
- package/dist/inbox/inbox.service.d.ts +68 -11
- package/dist/inbox/inbox.service.js +104 -13
- package/dist/inbox/org-notices.d.ts +63 -0
- package/dist/inbox/org-notices.js +91 -0
- package/dist/inbox/platform-inbox.controller.d.ts +23 -0
- package/dist/inbox/platform-inbox.controller.js +58 -0
- package/dist/inbox/platform-inbox.service.d.ts +151 -0
- package/dist/inbox/platform-inbox.service.js +263 -0
- package/dist/inbox/platform-notices.d.ts +19 -0
- package/dist/inbox/platform-notices.js +9 -0
- package/dist/index.d.ts +25 -14
- package/dist/index.js +20 -9
- package/dist/infra/cache/cache.module.d.ts +3 -0
- package/dist/infra/cache/cache.module.js +16 -0
- package/dist/infra/cache/cache.service.d.ts +21 -0
- package/dist/infra/cache/cache.service.js +80 -0
- package/dist/infra/cache/cacheable.decorator.d.ts +32 -0
- package/dist/infra/cache/cacheable.decorator.js +83 -0
- package/dist/infra/cli/kernel-cli.module.d.ts +66 -0
- package/dist/infra/cli/kernel-cli.module.js +173 -0
- package/dist/infra/close-within.d.ts +15 -0
- package/dist/infra/close-within.js +36 -0
- package/dist/infra/config/config.module.d.ts +13 -0
- package/dist/infra/config/config.module.js +39 -0
- package/dist/infra/config/kernel-config.service.d.ts +25 -0
- package/dist/infra/config/kernel-config.service.js +157 -0
- package/dist/infra/database/after-commit.d.ts +6 -0
- package/dist/infra/database/after-commit.js +9 -0
- package/dist/infra/database/database.module.d.ts +25 -0
- package/dist/infra/database/database.module.js +91 -0
- package/dist/infra/database/kernel-db.d.ts +22 -0
- package/dist/infra/database/kernel-db.js +65 -0
- package/dist/infra/database/transaction-host.d.ts +50 -0
- package/dist/infra/database/transaction-host.js +125 -0
- package/dist/infra/database/transactional.decorator.d.ts +15 -0
- package/dist/infra/database/transactional.decorator.js +27 -0
- package/dist/infra/database/xact-lock.d.ts +17 -0
- package/dist/infra/database/xact-lock.js +43 -0
- package/dist/infra/events/kernel-events.d.ts +121 -0
- package/dist/infra/events/kernel-events.js +65 -0
- package/dist/infra/health/health.controller.d.ts +26 -0
- package/dist/infra/health/health.controller.js +104 -0
- package/dist/infra/health/health.module.d.ts +9 -0
- package/dist/infra/health/health.module.js +24 -0
- package/dist/infra/health/health.options.d.ts +10 -0
- package/dist/infra/health/health.options.js +15 -0
- package/dist/infra/health/shutdown-state.d.ts +6 -0
- package/dist/infra/health/shutdown-state.js +2 -0
- package/dist/infra/lifecycle/graceful-shutdown.module.d.ts +6 -0
- package/dist/infra/lifecycle/graceful-shutdown.module.js +23 -0
- package/dist/infra/lifecycle/graceful-shutdown.service.d.ts +70 -0
- package/dist/infra/lifecycle/graceful-shutdown.service.js +135 -0
- package/dist/infra/lifecycle/process-guards.d.ts +52 -0
- package/dist/infra/lifecycle/process-guards.js +90 -0
- package/dist/infra/lifecycle/shutdown-signals.d.ts +30 -0
- package/dist/infra/lifecycle/shutdown-signals.js +48 -0
- package/dist/infra/lock/key-template.d.ts +13 -0
- package/dist/infra/lock/key-template.js +46 -0
- package/dist/infra/lock/lock.module.d.ts +3 -0
- package/dist/infra/lock/lock.module.js +16 -0
- package/dist/infra/lock/lock.service.d.ts +120 -0
- package/dist/infra/lock/lock.service.js +343 -0
- package/dist/infra/lock/shared-lease.d.ts +44 -0
- package/dist/infra/lock/shared-lease.js +121 -0
- package/dist/infra/lock/with-lock.decorator.d.ts +28 -0
- package/dist/infra/lock/with-lock.decorator.js +49 -0
- package/dist/infra/logging/logging.module.d.ts +18 -0
- package/dist/infra/logging/logging.module.js +52 -0
- package/dist/infra/queue/add-job-once.d.ts +14 -0
- package/dist/infra/queue/add-job-once.js +16 -0
- package/dist/infra/queue/configured-processor.d.ts +18 -0
- package/dist/infra/queue/configured-processor.js +23 -0
- package/dist/infra/queue/job-failure.d.ts +18 -0
- package/dist/infra/queue/job-failure.js +26 -0
- package/dist/infra/queue/queue-shutdown.d.ts +27 -0
- package/dist/infra/queue/queue-shutdown.js +81 -0
- package/dist/infra/queue/queue.module.d.ts +16 -0
- package/dist/infra/queue/queue.module.js +61 -0
- package/dist/infra/queue/redis-connection.d.ts +13 -0
- package/dist/infra/queue/redis-connection.js +25 -0
- package/dist/infra/queue/retired-schedulers.d.ts +7 -0
- package/dist/infra/queue/retired-schedulers.js +9 -0
- package/dist/infra/queue/run-job.d.ts +16 -0
- package/dist/infra/queue/run-job.js +19 -0
- package/dist/infra/redis/redis.module.d.ts +24 -0
- package/dist/infra/redis/redis.module.js +91 -0
- package/dist/infra/schedule/cron-tick.d.ts +12 -0
- package/dist/infra/schedule/cron-tick.js +25 -0
- package/dist/infra/schedule/locked-cron.decorator.d.ts +27 -0
- package/dist/infra/schedule/locked-cron.decorator.js +53 -0
- package/dist/infra/schedule/locked-interval.d.ts +69 -0
- package/dist/infra/schedule/locked-interval.js +190 -0
- package/dist/infra/schedule/locked-tick.d.ts +90 -0
- package/dist/infra/schedule/locked-tick.js +137 -0
- package/dist/infra/schedule/schedule.module.d.ts +8 -0
- package/dist/infra/schedule/schedule.module.js +27 -0
- package/dist/infra/schedule/scheduled-runs.d.ts +69 -0
- package/dist/infra/schedule/scheduled-runs.js +163 -0
- package/dist/infra/swagger/swagger.d.ts +16 -0
- package/dist/infra/swagger/swagger.js +31 -0
- package/dist/infra/throttler/credential-throttler.d.ts +35 -0
- package/dist/infra/throttler/credential-throttler.js +77 -0
- package/dist/infra/throttler/named-throttlers.d.ts +36 -0
- package/dist/infra/throttler/named-throttlers.js +157 -0
- package/dist/infra/throttler/redis-throttler-storage.d.ts +38 -0
- package/dist/infra/throttler/redis-throttler-storage.js +130 -0
- package/dist/infra/throttler/throttler.guard.d.ts +23 -0
- package/dist/infra/throttler/throttler.guard.js +68 -0
- package/dist/infra/throttler/throttler.module.d.ts +15 -0
- package/dist/infra/throttler/throttler.module.js +53 -0
- package/dist/infra/tokens.d.ts +20 -0
- package/dist/infra/tokens.js +20 -0
- package/dist/infra/validation/create-zod-dto.d.ts +23 -0
- package/dist/infra/validation/create-zod-dto.js +35 -0
- package/dist/infra/validation/parse-with-zod.d.ts +7 -0
- package/dist/infra/validation/parse-with-zod.js +12 -0
- package/dist/infra/validation/validation.module.d.ts +3 -0
- package/dist/infra/validation/validation.module.js +16 -0
- package/dist/infra/validation/zod-params.d.ts +7 -0
- package/dist/infra/validation/zod-params.js +42 -0
- package/dist/infra/validation/zod-validation.pipe.d.ts +11 -0
- package/dist/infra/validation/zod-validation.pipe.js +31 -0
- package/dist/kernel.d.ts +9 -241
- package/dist/kernel.js +8 -1305
- package/dist/kernel.module.d.ts +17 -0
- package/dist/kernel.module.js +145 -0
- package/dist/lifecycle/kernel-lifecycle.d.ts +140 -0
- package/dist/lifecycle/kernel-lifecycle.js +465 -0
- package/dist/lifecycle/tokens.d.ts +3 -0
- package/dist/lifecycle/tokens.js +3 -0
- package/dist/log-config.d.ts +9 -0
- package/dist/log-config.js +27 -0
- package/dist/log-context.d.ts +34 -0
- package/dist/log-context.js +44 -0
- package/dist/log-loki.d.ts +34 -0
- package/dist/log-loki.js +145 -0
- package/dist/log.d.ts +53 -10
- package/dist/log.js +168 -18
- package/dist/models/embeddings.d.ts +82 -0
- package/dist/models/embeddings.js +326 -0
- package/dist/models/enablement.controller.d.ts +40 -0
- package/dist/models/enablement.controller.js +74 -0
- package/dist/models/enablement.d.ts +101 -0
- package/dist/models/enablement.js +264 -0
- package/dist/models/models.module.d.ts +7 -0
- package/dist/models/models.module.js +36 -0
- package/dist/models/org-models.schemas.d.ts +8 -0
- package/dist/models/org-models.schemas.js +22 -0
- package/dist/models/prices.d.ts +13 -5
- package/dist/models/prices.js +69 -39
- package/dist/models/purposes.controller.d.ts +6 -4
- package/dist/models/purposes.controller.js +16 -11
- package/dist/models/purposes.d.ts +103 -23
- package/dist/models/purposes.js +208 -77
- package/dist/net/public-address.js +3 -2
- package/dist/orgs/directory-sync.controller.d.ts +1 -1
- package/dist/orgs/directory-sync.controller.js +2 -2
- package/dist/orgs/directory-sync.d.ts +74 -35
- package/dist/orgs/directory-sync.js +243 -132
- package/dist/orgs/invitations.controller.d.ts +8 -8
- package/dist/orgs/invitations.controller.js +27 -26
- package/dist/orgs/invitations.service.d.ts +12 -9
- package/dist/orgs/invitations.service.js +130 -92
- package/dist/orgs/job-ids.d.ts +8 -0
- package/dist/orgs/job-ids.js +8 -0
- package/dist/orgs/members.service.d.ts +19 -12
- package/dist/orgs/members.service.js +161 -117
- package/dist/orgs/offboarding.d.ts +61 -60
- package/dist/orgs/offboarding.js +206 -95
- package/dist/orgs/org-lock.d.ts +33 -19
- package/dist/orgs/org-lock.js +94 -35
- package/dist/orgs/org.guard.d.ts +11 -1
- package/dist/orgs/org.guard.js +45 -34
- package/dist/orgs/orgs.controller.d.ts +13 -16
- package/dist/orgs/orgs.controller.js +29 -20
- package/dist/orgs/orgs.module.d.ts +6 -0
- package/dist/orgs/orgs.module.js +71 -0
- package/dist/orgs/orgs.schemas.d.ts +8 -0
- package/dist/orgs/orgs.schemas.js +16 -0
- package/dist/orgs/orgs.service.d.ts +47 -21
- package/dist/orgs/orgs.service.js +166 -91
- package/dist/orgs/roles.d.ts +1 -1
- package/dist/orgs/roles.js +5 -1
- package/dist/orgs/settings.controller.d.ts +2 -2
- package/dist/orgs/settings.controller.js +8 -6
- package/dist/orgs/settings.service.d.ts +45 -14
- package/dist/orgs/settings.service.js +110 -51
- package/dist/overrides.d.ts +63 -0
- package/dist/overrides.js +34 -0
- package/dist/platform/actor.d.ts +48 -0
- package/dist/platform/actor.js +100 -0
- package/dist/platform/agent-docs.d.ts +18 -0
- package/dist/platform/agent-docs.js +59 -0
- package/dist/platform/availability.d.ts +14 -0
- package/dist/platform/availability.js +43 -0
- package/dist/platform/errors.d.ts +28 -0
- package/dist/platform/errors.js +65 -0
- package/dist/platform/exclusions.d.ts +11 -0
- package/dist/platform/exclusions.js +667 -0
- package/dist/platform/method.d.ts +6 -0
- package/dist/platform/method.js +15 -0
- package/dist/platform/operation.d.ts +169 -0
- package/dist/platform/operation.js +90 -0
- package/dist/platform/ops/accounts.ops.d.ts +32 -0
- package/dist/platform/ops/accounts.ops.js +291 -0
- package/dist/platform/ops/admin.ops.d.ts +36 -0
- package/dist/platform/ops/admin.ops.js +389 -0
- package/dist/platform/ops/agent-skills.ops.d.ts +24 -0
- package/dist/platform/ops/agent-skills.ops.js +226 -0
- package/dist/platform/ops/agent-templates.ops.d.ts +17 -0
- package/dist/platform/ops/agent-templates.ops.js +272 -0
- package/dist/platform/ops/agents.ops.d.ts +37 -0
- package/dist/platform/ops/agents.ops.js +717 -0
- package/dist/platform/ops/approvals.ops.d.ts +30 -0
- package/dist/platform/ops/approvals.ops.js +116 -0
- package/dist/platform/ops/background.ops.d.ts +14 -0
- package/dist/platform/ops/background.ops.js +134 -0
- package/dist/platform/ops/catalog-admin.ops.d.ts +74 -0
- package/dist/platform/ops/catalog-admin.ops.js +599 -0
- package/dist/platform/ops/channels.ops.d.ts +16 -0
- package/dist/platform/ops/channels.ops.js +195 -0
- package/dist/platform/ops/components.ops.d.ts +46 -0
- package/dist/platform/ops/components.ops.js +853 -0
- package/dist/platform/ops/connectors.ops.d.ts +17 -0
- package/dist/platform/ops/connectors.ops.js +188 -0
- package/dist/platform/ops/conversations.ops.d.ts +30 -0
- package/dist/platform/ops/conversations.ops.js +470 -0
- package/dist/platform/ops/environments.ops.d.ts +26 -0
- package/dist/platform/ops/environments.ops.js +311 -0
- package/dist/platform/ops/errors.d.ts +16 -0
- package/dist/platform/ops/errors.js +30 -0
- package/dist/platform/ops/evals.ops.d.ts +28 -0
- package/dist/platform/ops/evals.ops.js +783 -0
- package/dist/platform/ops/extensions-admin.ops.d.ts +25 -0
- package/dist/platform/ops/extensions-admin.ops.js +372 -0
- package/dist/platform/ops/extensions.ops.d.ts +25 -0
- package/dist/platform/ops/extensions.ops.js +347 -0
- package/dist/platform/ops/inbox.ops.d.ts +25 -0
- package/dist/platform/ops/inbox.ops.js +378 -0
- package/dist/platform/ops/marketplaces.ops.d.ts +22 -0
- package/dist/platform/ops/marketplaces.ops.js +466 -0
- package/dist/platform/ops/models.ops.d.ts +25 -0
- package/dist/platform/ops/models.ops.js +232 -0
- package/dist/platform/ops/org-plugins.ops.d.ts +29 -0
- package/dist/platform/ops/org-plugins.ops.js +329 -0
- package/dist/platform/ops/org-settings.ops.d.ts +16 -0
- package/dist/platform/ops/org-settings.ops.js +102 -0
- package/dist/platform/ops/orgs.ops.d.ts +28 -0
- package/dist/platform/ops/orgs.ops.js +295 -0
- package/dist/platform/ops/other-orgs.d.ts +20 -0
- package/dist/platform/ops/other-orgs.js +72 -0
- package/dist/platform/ops/paging.d.ts +14 -0
- package/dist/platform/ops/paging.js +20 -0
- package/dist/platform/ops/platform.ops.d.ts +28 -0
- package/dist/platform/ops/platform.ops.js +204 -0
- package/dist/platform/ops/plugins.ops.d.ts +35 -0
- package/dist/platform/ops/plugins.ops.js +476 -0
- package/dist/platform/ops/previewers.ops.d.ts +14 -0
- package/dist/platform/ops/previewers.ops.js +109 -0
- package/dist/platform/ops/requests.ops.d.ts +14 -0
- package/dist/platform/ops/requests.ops.js +191 -0
- package/dist/platform/ops/role.d.ts +4 -0
- package/dist/platform/ops/role.js +10 -0
- package/dist/platform/ops/skills.ops.d.ts +17 -0
- package/dist/platform/ops/skills.ops.js +216 -0
- package/dist/platform/ops/summary.d.ts +10 -0
- package/dist/platform/ops/summary.js +18 -0
- package/dist/platform/ops/unavailable.d.ts +23 -0
- package/dist/platform/ops/unavailable.js +118 -0
- package/dist/platform/parity.d.ts +33 -0
- package/dist/platform/parity.js +272 -0
- package/dist/platform/platform-ops.module.d.ts +39 -0
- package/dist/platform/platform-ops.module.js +122 -0
- package/dist/platform/platform.module.d.ts +8 -0
- package/dist/platform/platform.module.js +25 -0
- package/dist/platform/registry.d.ts +30 -0
- package/dist/platform/registry.js +111 -0
- package/dist/platform/route-schemas.d.ts +18 -0
- package/dist/platform/route-schemas.js +63 -0
- package/dist/roles/gateway-role.d.ts +54 -0
- package/dist/roles/gateway-role.js +118 -0
- package/dist/roles/gateway.module.d.ts +9 -0
- package/dist/roles/gateway.module.js +31 -0
- package/dist/roles/worker-role.d.ts +65 -0
- package/dist/roles/worker-role.js +151 -0
- package/dist/roles/worker.module.d.ts +14 -0
- package/dist/roles/worker.module.js +106 -0
- package/dist/runtime/abort.js +19 -2
- package/dist/runtime/checkpointer.d.ts +8 -3
- package/dist/runtime/checkpointer.js +87 -55
- package/dist/runtime/context/build.d.ts +21 -13
- package/dist/runtime/context/build.js +106 -29
- package/dist/runtime/context/claude-tools.d.ts +4 -1
- package/dist/runtime/context/claude-tools.js +13 -12
- package/dist/runtime/context/compaction.js +24 -1
- package/dist/runtime/context/environment-paths.d.ts +40 -0
- package/dist/runtime/context/environment-paths.js +48 -0
- package/dist/runtime/context/legacy-text.d.ts +22 -0
- package/dist/runtime/context/legacy-text.js +37 -0
- package/dist/runtime/context/reminders.d.ts +2 -0
- package/dist/runtime/context/reminders.js +2 -0
- package/dist/runtime/context/run-context.d.ts +65 -0
- package/dist/runtime/context/run-context.js +215 -0
- package/dist/runtime/context/skills.d.ts +29 -11
- package/dist/runtime/context/skills.js +46 -32
- package/dist/runtime/context/tool-changes.d.ts +27 -0
- package/dist/runtime/context/tool-changes.js +60 -0
- package/dist/runtime/conversation-lock.d.ts +20 -11
- package/dist/runtime/conversation-lock.js +62 -72
- package/dist/runtime/hook-calls.d.ts +11 -4
- package/dist/runtime/hook-calls.js +41 -13
- package/dist/runtime/job-ids.d.ts +10 -0
- package/dist/runtime/job-ids.js +10 -0
- package/dist/runtime/langgraph-loop.d.ts +3 -1
- package/dist/runtime/langgraph-loop.js +37 -18
- package/dist/runtime/loop.d.ts +42 -6
- package/dist/runtime/loop.js +14 -0
- package/dist/runtime/maintenance-queue.d.ts +10 -0
- package/dist/runtime/maintenance-queue.js +10 -0
- package/dist/runtime/maintenance.d.ts +50 -74
- package/dist/runtime/maintenance.js +166 -136
- package/dist/runtime/model-call.d.ts +61 -15
- package/dist/runtime/model-call.js +128 -84
- package/dist/runtime/providers.d.ts +158 -27
- package/dist/runtime/providers.js +373 -63
- package/dist/runtime/quota.d.ts +17 -3
- package/dist/runtime/quota.js +27 -2
- package/dist/runtime/retired-schedulers.d.ts +7 -0
- package/dist/runtime/retired-schedulers.js +31 -0
- package/dist/runtime/run-context.service.d.ts +65 -0
- package/dist/runtime/run-context.service.js +236 -0
- package/dist/runtime/run-control.d.ts +43 -0
- package/dist/runtime/run-control.js +89 -0
- package/dist/runtime/run-drafts.d.ts +85 -0
- package/dist/runtime/run-drafts.js +230 -0
- package/dist/runtime/run-finish.d.ts +27 -18
- package/dist/runtime/run-finish.js +98 -51
- package/dist/runtime/run-jobs.d.ts +46 -0
- package/dist/runtime/run-jobs.js +91 -0
- package/dist/runtime/run-processors.d.ts +60 -0
- package/dist/runtime/run-processors.js +185 -0
- package/dist/runtime/run-queue.d.ts +90 -58
- package/dist/runtime/run-queue.js +566 -297
- package/dist/runtime/run-steps.d.ts +39 -0
- package/dist/runtime/run-steps.js +96 -0
- package/dist/runtime/run-worker.d.ts +134 -77
- package/dist/runtime/run-worker.js +412 -236
- package/dist/runtime/runtime.module.d.ts +10 -0
- package/dist/runtime/runtime.module.js +122 -0
- package/dist/runtime/step-log.d.ts +51 -0
- package/dist/runtime/step-log.js +111 -0
- package/dist/runtime/stream.controller.d.ts +28 -9
- package/dist/runtime/stream.controller.js +72 -13
- package/dist/runtime/stream.d.ts +27 -6
- package/dist/runtime/stream.js +102 -7
- package/dist/runtime/subagents/child.d.ts +58 -51
- package/dist/runtime/subagents/child.js +105 -86
- package/dist/runtime/subagents/definition.d.ts +32 -28
- package/dist/runtime/subagents/definition.js +89 -143
- package/dist/runtime/subagents/deliveries.d.ts +71 -0
- package/dist/runtime/subagents/deliveries.js +228 -0
- package/dist/runtime/subagents/dispatch.d.ts +197 -27
- package/dist/runtime/subagents/dispatch.js +336 -270
- package/dist/runtime/subagents/limits.d.ts +32 -8
- package/dist/runtime/subagents/limits.js +44 -8
- package/dist/runtime/subagents/messages.d.ts +95 -0
- package/dist/runtime/subagents/messages.js +328 -0
- package/dist/runtime/subagents/org-agents.d.ts +4 -4
- package/dist/runtime/subagents/org-agents.js +3 -2
- package/dist/runtime/subagents/preamble.d.ts +4 -4
- package/dist/runtime/subagents/preamble.js +9 -7
- package/dist/runtime/subagents/progress.d.ts +10 -8
- package/dist/runtime/subagents/progress.js +11 -6
- package/dist/runtime/subagents/render.d.ts +30 -0
- package/dist/runtime/subagents/render.js +53 -0
- package/dist/runtime/subagents/roster.d.ts +27 -10
- package/dist/runtime/subagents/roster.js +49 -13
- package/dist/runtime/subagents/skill-fork.d.ts +10 -10
- package/dist/runtime/subagents/skill-fork.js +23 -8
- package/dist/runtime/subagents/status.d.ts +14 -0
- package/dist/runtime/subagents/status.js +23 -0
- package/dist/runtime/subagents/subagents.service.d.ts +43 -0
- package/dist/runtime/subagents/subagents.service.js +106 -0
- package/dist/runtime/usage-report-jobs.d.ts +88 -0
- package/dist/runtime/usage-report-jobs.js +158 -0
- package/dist/runtime/usage-report.d.ts +121 -83
- package/dist/runtime/usage-report.js +355 -180
- package/dist/runtime/waits.d.ts +258 -81
- package/dist/runtime/waits.js +800 -263
- package/dist/sandbox/job-ids.d.ts +10 -0
- package/dist/sandbox/job-ids.js +10 -0
- package/dist/sandbox/jobs.d.ts +68 -0
- package/dist/sandbox/jobs.js +150 -0
- package/dist/sandbox/leases.d.ts +73 -82
- package/dist/sandbox/leases.js +162 -346
- package/dist/sandbox/providers.d.ts +46 -0
- package/dist/sandbox/providers.js +83 -0
- package/dist/sandbox/sandbox.module.d.ts +9 -0
- package/dist/sandbox/sandbox.module.js +36 -0
- package/dist/sandbox/sandbox.service.d.ts +359 -151
- package/dist/sandbox/sandbox.service.js +950 -435
- package/dist/sandbox/unreachable.d.ts +30 -0
- package/dist/sandbox/unreachable.js +108 -0
- package/dist/skills/catalog.d.ts +40 -26
- package/dist/skills/catalog.js +120 -99
- package/dist/skills/changes.controller.d.ts +11 -4
- package/dist/skills/changes.controller.js +34 -9
- package/dist/skills/changes.service.d.ts +31 -21
- package/dist/skills/changes.service.js +426 -368
- package/dist/skills/invocable.controller.d.ts +2 -2
- package/dist/skills/invocable.controller.js +10 -7
- package/dist/skills/invocation-keys.d.ts +1 -1
- package/dist/skills/invocation-keys.js +1 -1
- package/dist/skills/invoke.d.ts +19 -18
- package/dist/skills/invoke.js +68 -24
- package/dist/skills/package.d.ts +20 -1
- package/dist/skills/package.js +28 -1
- package/dist/skills/skills.controller.d.ts +33 -7
- package/dist/skills/skills.controller.js +79 -12
- package/dist/skills/skills.module.d.ts +6 -0
- package/dist/skills/skills.module.js +39 -0
- package/dist/skills/skills.schemas.d.ts +48 -0
- package/dist/skills/skills.schemas.js +61 -0
- package/dist/skills/skills.service.d.ts +151 -44
- package/dist/skills/skills.service.js +636 -204
- package/dist/skills/usable.d.ts +81 -0
- package/dist/skills/usable.js +379 -0
- package/dist/storage/job-ids.d.ts +6 -0
- package/dist/storage/job-ids.js +6 -0
- package/dist/storage/purge.d.ts +22 -7
- package/dist/storage/purge.js +55 -3
- package/dist/storage/storage.module.d.ts +6 -0
- package/dist/storage/storage.module.js +23 -0
- package/dist/storage/storage.service.d.ts +18 -4
- package/dist/storage/storage.service.js +44 -3
- package/dist/time-zone.d.ts +5 -0
- package/dist/time-zone.js +19 -0
- package/dist/tools/approvals.controller.d.ts +1 -1
- package/dist/tools/approvals.controller.js +14 -11
- package/dist/tools/approvals.schemas.d.ts +21 -0
- package/dist/tools/approvals.schemas.js +15 -0
- package/dist/tools/approvals.service.d.ts +53 -27
- package/dist/tools/approvals.service.js +365 -260
- package/dist/tools/breaker.d.ts +2 -2
- package/dist/tools/breaker.js +21 -3
- package/dist/tools/builtin-names.d.ts +109 -0
- package/dist/tools/builtin-names.js +173 -0
- package/dist/tools/builtins/agent.d.ts +27 -25
- package/dist/tools/builtins/agent.js +66 -63
- package/dist/tools/builtins/ask-user.d.ts +3 -3
- package/dist/tools/builtins/ask-user.js +3 -3
- package/dist/tools/builtins/builtin-tools.d.ts +41 -0
- package/dist/tools/builtins/builtin-tools.js +151 -0
- package/dist/tools/builtins/current-time.d.ts +26 -0
- package/dist/tools/builtins/current-time.js +99 -0
- package/dist/tools/builtins/handback.d.ts +28 -0
- package/dist/tools/builtins/handback.js +53 -0
- package/dist/tools/builtins/platform.d.ts +51 -0
- package/dist/tools/builtins/platform.js +451 -0
- package/dist/tools/builtins/read-tool-output.d.ts +3 -3
- package/dist/tools/builtins/read-tool-output.js +3 -3
- package/dist/tools/builtins/sandbox/bash.d.ts +5 -5
- package/dist/tools/builtins/sandbox/bash.js +293 -41
- package/dist/tools/builtins/sandbox/common.d.ts +142 -40
- package/dist/tools/builtins/sandbox/common.js +227 -65
- package/dist/tools/builtins/sandbox/deliver.d.ts +1 -1
- package/dist/tools/builtins/sandbox/deliver.js +21 -18
- package/dist/tools/builtins/sandbox/edit.d.ts +1 -1
- package/dist/tools/builtins/sandbox/edit.js +65 -51
- package/dist/tools/builtins/sandbox/file-state.d.ts +34 -0
- package/dist/tools/builtins/sandbox/file-state.js +34 -0
- package/dist/tools/builtins/sandbox/glob-match.d.ts +1 -1
- package/dist/tools/builtins/sandbox/glob-match.js +1 -1
- package/dist/tools/builtins/sandbox/glob.d.ts +1 -1
- package/dist/tools/builtins/sandbox/glob.js +19 -14
- package/dist/tools/builtins/sandbox/grep.d.ts +7 -4
- package/dist/tools/builtins/sandbox/grep.js +155 -36
- package/dist/tools/builtins/sandbox/index.d.ts +9 -5
- package/dist/tools/builtins/sandbox/index.js +13 -5
- package/dist/tools/builtins/sandbox/read.d.ts +2 -2
- package/dist/tools/builtins/sandbox/read.js +30 -20
- package/dist/tools/builtins/sandbox/task-output.d.ts +79 -0
- package/dist/tools/builtins/sandbox/task-output.js +334 -0
- package/dist/tools/builtins/sandbox/task-stop.d.ts +10 -0
- package/dist/tools/builtins/sandbox/task-stop.js +113 -0
- package/dist/tools/builtins/sandbox/write.d.ts +1 -1
- package/dist/tools/builtins/sandbox/write.js +52 -45
- package/dist/tools/builtins/send-message.d.ts +56 -0
- package/dist/tools/builtins/send-message.js +100 -0
- package/dist/tools/builtins/skill-load.d.ts +32 -21
- package/dist/tools/builtins/skill-load.js +125 -74
- package/dist/tools/builtins/skill-write.d.ts +4 -4
- package/dist/tools/builtins/skill-write.js +12 -12
- package/dist/tools/builtins/tool-search.d.ts +13 -9
- package/dist/tools/builtins/tool-search.js +25 -14
- package/dist/tools/builtins/web/errors.d.ts +8 -0
- package/dist/tools/builtins/web/errors.js +53 -0
- package/dist/tools/builtins/web/extract.d.ts +62 -0
- package/dist/tools/builtins/web/extract.js +271 -0
- package/dist/tools/builtins/web/fetch.d.ts +55 -0
- package/dist/tools/builtins/web/fetch.js +175 -0
- package/dist/tools/builtins/web/index.d.ts +13 -0
- package/dist/tools/builtins/web/index.js +12 -0
- package/dist/tools/builtins/web/page-cache.d.ts +25 -0
- package/dist/tools/builtins/web/page-cache.js +77 -0
- package/dist/tools/builtins/web/search.d.ts +25 -0
- package/dist/tools/builtins/web/search.js +210 -0
- package/dist/tools/builtins/web/url.d.ts +17 -0
- package/dist/tools/builtins/web/url.js +43 -0
- package/dist/tools/canonical-json.d.ts +6 -0
- package/dist/tools/canonical-json.js +16 -0
- package/dist/tools/connector-content.controller.d.ts +1 -1
- package/dist/tools/connector-content.controller.js +11 -6
- package/dist/tools/connector-content.d.ts +12 -15
- package/dist/tools/connector-content.js +53 -18
- package/dist/tools/connectors.controller.d.ts +16 -3
- package/dist/tools/connectors.controller.js +34 -14
- package/dist/tools/connectors.schemas.d.ts +12 -0
- package/dist/tools/connectors.schemas.js +19 -0
- package/dist/tools/connectors.service.d.ts +80 -18
- package/dist/tools/connectors.service.js +529 -358
- package/dist/tools/credentials.d.ts +20 -20
- package/dist/tools/credentials.js +55 -34
- package/dist/tools/display-names.d.ts +9 -0
- package/dist/tools/display-names.js +24 -0
- package/dist/tools/drift.d.ts +29 -41
- package/dist/tools/drift.js +116 -84
- package/dist/tools/elicitation.js +1 -1
- package/dist/tools/extension-tools.controller.d.ts +14 -0
- package/dist/tools/extension-tools.controller.js +37 -0
- package/dist/tools/info.d.ts +73 -13
- package/dist/tools/info.js +151 -39
- package/dist/tools/job-ids.d.ts +13 -0
- package/dist/tools/job-ids.js +15 -0
- package/dist/tools/jobs.d.ts +24 -0
- package/dist/tools/jobs.js +69 -0
- package/dist/tools/legacy-data.d.ts +34 -0
- package/dist/tools/legacy-data.js +76 -0
- package/dist/tools/legacy-keys.d.ts +51 -0
- package/dist/tools/legacy-keys.js +115 -0
- package/dist/tools/naming.d.ts +1 -5
- package/dist/tools/naming.js +1 -7
- package/dist/tools/oauth/flow-paths.d.ts +16 -0
- package/dist/tools/oauth/flow-paths.js +38 -0
- package/dist/tools/oauth/flow.d.ts +30 -30
- package/dist/tools/oauth/flow.js +109 -81
- package/dist/tools/oauth/oauth.controller.d.ts +3 -3
- package/dist/tools/oauth/oauth.controller.js +12 -9
- package/dist/tools/oauth/tokens.d.ts +45 -10
- package/dist/tools/oauth/tokens.js +70 -24
- package/dist/tools/org-tool-switches.d.ts +88 -0
- package/dist/tools/org-tool-switches.js +201 -0
- package/dist/tools/outputs.d.ts +13 -4
- package/dist/tools/outputs.js +48 -4
- package/dist/tools/pipeline.d.ts +108 -80
- package/dist/tools/pipeline.js +396 -409
- package/dist/tools/policy.d.ts +4 -17
- package/dist/tools/policy.js +49 -35
- package/dist/tools/questions.controller.d.ts +2 -2
- package/dist/tools/questions.controller.js +9 -6
- package/dist/tools/questions.service.d.ts +26 -25
- package/dist/tools/questions.service.js +201 -142
- package/dist/tools/registry.d.ts +215 -84
- package/dist/tools/registry.js +382 -264
- package/dist/tools/resources.d.ts +1 -1
- package/dist/tools/resources.js +1 -1
- package/dist/tools/specs.d.ts +5 -4
- package/dist/tools/specs.js +3 -1
- package/dist/tools/tools.module.d.ts +10 -0
- package/dist/tools/tools.module.js +113 -0
- package/dist/tools/validate.js +1 -1
- package/dist/ui/call-extension.d.ts +16 -0
- package/dist/ui/call-extension.js +38 -0
- package/dist/ui/embed-token.d.ts +9 -5
- package/dist/ui/embed-token.js +34 -6
- package/dist/ui/ui-stream.d.ts +22 -17
- package/dist/ui/ui-stream.js +72 -12
- package/dist/ui/ui.module.d.ts +7 -0
- package/dist/ui/ui.module.js +28 -0
- package/dist/ui/views.controller.d.ts +14 -12
- package/dist/ui/views.controller.js +32 -25
- package/dist/ui/views.d.ts +10 -57
- package/dist/ui/views.js +58 -46
- package/package.json +15 -3
- package/src/migrations/0063_tool_keys_claude_code.sql +220 -0
- package/src/migrations/0064_account_last_org.sql +7 -0
- package/src/migrations/0065_conversation_archive.sql +8 -0
- package/src/migrations/0066_extension_display_name.sql +4 -0
- package/src/migrations/0067_agent_profiles.sql +20 -0
- package/src/migrations/0068_agent_avatar_uploads.sql +7 -0
- package/src/migrations/0069_attachments_agent_idx.sql +3 -0
- package/src/migrations/0070_background_tasks.sql +37 -0
- package/src/migrations/0071_background_tasks_reserve.sql +6 -0
- package/src/migrations/0072_background_tasks_stopping.sql +5 -0
- package/src/migrations/0073_org_extension_point_defaults.sql +11 -0
- package/src/migrations/0074_subagent_tree.sql +50 -0
- package/src/migrations/0075_plugin_scope.sql +61 -0
- package/src/migrations/0076_skills_created_by_nullable.sql +6 -0
- package/src/migrations/0077_scope_requests.sql +52 -0
- package/src/migrations/0078_scope_grant_switches.sql +18 -0
- package/src/migrations/0079_scope_live_install_switches.sql +19 -0
- package/src/migrations/0080_rename_enterprise_admin.sql +18 -0
- package/src/migrations/0081_platform_components.sql +129 -0
- package/src/migrations/0082_platform_migration.sql +33 -0
- package/src/migrations/0083_plugin_scope_sync_failures.sql +15 -0
- package/src/migrations/0084_org_owned_items.sql +85 -0
- package/src/migrations/0085_agent_templates_phase4.sql +45 -0
- package/src/migrations/0086_org_layering.sql +30 -0
- package/src/migrations/0087_approval_summary.sql +6 -0
- package/src/migrations/0088_environments.sql +80 -0
- package/src/migrations/0089_model_kinds_usage.sql +38 -0
- package/src/migrations/0090_initial_passwords.sql +27 -0
- package/src/migrations/0091_account_time_zone.sql +4 -0
- package/src/migrations/0092_tools_default_on.sql +27 -0
- package/src/migrations/0093_connected_environments.sql +37 -0
- package/src/migrations/0094_environment_paths_idx.sql +7 -0
- package/src/migrations/0095_environment_files_resets.sql +5 -0
- package/src/migrations/0096_environment_demoted_default.sql +18 -0
- package/src/migrations/0097_extension_installs_enabled_at.sql +16 -0
- package/src/migrations/0098_single_provider_running_first.sql +41 -0
- package/src/migrations/0099_channel_connection_guide_ack.sql +6 -0
- package/src/migrations/0100_catalog_files.sql +13 -0
- package/src/migrations/0101_marketplace_icons.sql +32 -0
- package/dist/catalog/upgrade-targets.d.ts +0 -59
- package/dist/catalog/upgrade-targets.js +0 -90
- package/dist/conversations/sandbox-status.d.ts +0 -21
- package/dist/conversations/sandbox-status.js +0 -24
- package/dist/extensions/org-config.controller.d.ts +0 -24
- package/dist/extensions/org-config.controller.js +0 -59
- package/dist/http/gateway.module.js +0 -13
- package/dist/http/health.controller.d.ts +0 -26
- package/dist/http/health.controller.js +0 -79
- package/dist/http/tokens.d.ts +0 -131
- package/dist/http/tokens.js +0 -131
- package/dist/http/zod.pipe.d.ts +0 -8
- package/dist/http/zod.pipe.js +0 -14
- package/dist/identity/enterprise-admin.d.ts +0 -14
- package/dist/identity/enterprise-admin.js +0 -27
- package/dist/identity/rate-limit.d.ts +0 -55
- package/dist/identity/rate-limit.js +0 -121
- package/dist/sandbox/lifecycle.d.ts +0 -21
- package/dist/sandbox/lifecycle.js +0 -68
- package/dist/tools/builtins/sandbox/names.d.ts +0 -7
- package/dist/tools/builtins/sandbox/names.js +0 -20
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { KernelConfig } from "../config/schema.js";
|
|
2
|
+
/**
|
|
3
|
+
* Launching a background Bash task (spec 2026-11-05-background-bash-design §4.2): the task id, the
|
|
4
|
+
* one short exec that starts the command detached from the exec, and the model-visible result.
|
|
5
|
+
* Every path is relative to the instance's workspace root (the launch exec's `cwd`), so the
|
|
6
|
+
* script is the same whatever the instance's roots are.
|
|
7
|
+
*/
|
|
8
|
+
/** The launch exec's own time limit: it only writes a file and forks. */
|
|
9
|
+
export declare const LAUNCH_EXEC_TIMEOUT_MS = 30000;
|
|
10
|
+
/**
|
|
11
|
+
* The longest a background task may run, in seconds: `sandbox.background.maxSeconds`, at most
|
|
12
|
+
* `sandbox.limits.maxCommandSeconds`. It is also a task's default `timeout`.
|
|
13
|
+
*/
|
|
14
|
+
export declare const backgroundMaxSeconds: (cfg: Pick<KernelConfig, "sandbox">) => number;
|
|
15
|
+
/** The directory of the task files, relative to the workspace root. */
|
|
16
|
+
export declare const TASKS_DIR = ".capybara/tasks";
|
|
17
|
+
/** A task's output file, relative to the workspace root (`output_path` while reserved). */
|
|
18
|
+
export declare const taskOutputPath: (id: string) => string;
|
|
19
|
+
/**
|
|
20
|
+
* The absolute output file of a task from its `output_path`: absolute once the task started (the
|
|
21
|
+
* launch records `<workspace>/.capybara/tasks/<id>.out` of its instance); a reservation's relative
|
|
22
|
+
* path is read under the default workspace.
|
|
23
|
+
*/
|
|
24
|
+
export declare const taskOutputFile: (outputPath: string) => string;
|
|
25
|
+
/** The file the launch writes the session id to, relative to the workspace root. */
|
|
26
|
+
export declare const taskSidPath: (id: string) => string;
|
|
27
|
+
/** A new task id: `bt_` plus 6 lowercase base32 characters. */
|
|
28
|
+
export declare function newTaskId(): string;
|
|
29
|
+
/** A task id ({@link newTaskId}). */
|
|
30
|
+
export declare const TASK_ID_RE: RegExp;
|
|
31
|
+
/**
|
|
32
|
+
* The shell of the launch exec: writes `command` (base64 in the script, so nothing is quoted by
|
|
33
|
+
* hand) to `.capybara/tasks/<id>.sh` and starts it with bash (the shell a foreground `Bash` call
|
|
34
|
+
* runs its command in) in a session of its own under `timeout -s KILL <seconds>`, with its exit
|
|
35
|
+
* status written to `<id>.exit` and its output to `<id>.out`; writes the session id (`$!`, the pid
|
|
36
|
+
* `setsid` started) to `<id>.sid` and prints it. A sandbox without one of the needed programs fails with a readable error on
|
|
37
|
+
* stderr and exit code 127, before anything starts. `id` must be a task id and `seconds` a
|
|
38
|
+
* positive integer (both go into the script unquoted).
|
|
39
|
+
*/
|
|
40
|
+
export declare function launchScript(id: string, command: string, seconds: number): string;
|
|
41
|
+
/** The model-visible result of a launch (spec §2.1); `workspace`: the instance's workspace root. */
|
|
42
|
+
export declare function startedText(id: string, description: string, workspace?: string): string;
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { randomBytes } from "node:crypto";
|
|
2
|
+
import { DEFAULT_SANDBOX_ROOTS } from "@capybara-hq/plugin-sdk";
|
|
3
|
+
/**
|
|
4
|
+
* Launching a background Bash task (spec 2026-11-05-background-bash-design §4.2): the task id, the
|
|
5
|
+
* one short exec that starts the command detached from the exec, and the model-visible result.
|
|
6
|
+
* Every path is relative to the instance's workspace root (the launch exec's `cwd`), so the
|
|
7
|
+
* script is the same whatever the instance's roots are.
|
|
8
|
+
*/
|
|
9
|
+
/** The launch exec's own time limit: it only writes a file and forks. */
|
|
10
|
+
export const LAUNCH_EXEC_TIMEOUT_MS = 30_000;
|
|
11
|
+
/**
|
|
12
|
+
* The longest a background task may run, in seconds: `sandbox.background.maxSeconds`, at most
|
|
13
|
+
* `sandbox.limits.maxCommandSeconds`. It is also a task's default `timeout`.
|
|
14
|
+
*/
|
|
15
|
+
export const backgroundMaxSeconds = (cfg) => Math.min(cfg.sandbox.background.maxSeconds, cfg.sandbox.limits.maxCommandSeconds);
|
|
16
|
+
/** The directory of the task files, relative to the workspace root. */
|
|
17
|
+
export const TASKS_DIR = ".capybara/tasks";
|
|
18
|
+
/** A task's output file, relative to the workspace root (`output_path` while reserved). */
|
|
19
|
+
export const taskOutputPath = (id) => `${TASKS_DIR}/${id}.out`;
|
|
20
|
+
/**
|
|
21
|
+
* The absolute output file of a task from its `output_path`: absolute once the task started (the
|
|
22
|
+
* launch records `<workspace>/.capybara/tasks/<id>.out` of its instance); a reservation's relative
|
|
23
|
+
* path is read under the default workspace.
|
|
24
|
+
*/
|
|
25
|
+
export const taskOutputFile = (outputPath) => outputPath.startsWith("/") ? outputPath : `${DEFAULT_SANDBOX_ROOTS.workspace}/${outputPath}`;
|
|
26
|
+
/** The file the launch writes the session id to, relative to the workspace root. */
|
|
27
|
+
export const taskSidPath = (id) => `${TASKS_DIR}/${id}.sid`;
|
|
28
|
+
const BASE32 = "abcdefghijklmnopqrstuvwxyz234567";
|
|
29
|
+
/** A new task id: `bt_` plus 6 lowercase base32 characters. */
|
|
30
|
+
export function newTaskId() {
|
|
31
|
+
const bytes = randomBytes(6);
|
|
32
|
+
let out = "bt_";
|
|
33
|
+
for (const b of bytes)
|
|
34
|
+
out += BASE32[b & 31];
|
|
35
|
+
return out;
|
|
36
|
+
}
|
|
37
|
+
/** The programs the launch and the later polls and stops need inside the sandbox. */
|
|
38
|
+
const REQUIRED = ["bash", "setsid", "nohup", "timeout", "pgrep", "pkill", "base64"];
|
|
39
|
+
/** A task id ({@link newTaskId}). */
|
|
40
|
+
export const TASK_ID_RE = /^bt_[a-z2-7]{6}$/;
|
|
41
|
+
/**
|
|
42
|
+
* The shell of the launch exec: writes `command` (base64 in the script, so nothing is quoted by
|
|
43
|
+
* hand) to `.capybara/tasks/<id>.sh` and starts it with bash (the shell a foreground `Bash` call
|
|
44
|
+
* runs its command in) in a session of its own under `timeout -s KILL <seconds>`, with its exit
|
|
45
|
+
* status written to `<id>.exit` and its output to `<id>.out`; writes the session id (`$!`, the pid
|
|
46
|
+
* `setsid` started) to `<id>.sid` and prints it. A sandbox without one of the needed programs fails with a readable error on
|
|
47
|
+
* stderr and exit code 127, before anything starts. `id` must be a task id and `seconds` a
|
|
48
|
+
* positive integer (both go into the script unquoted).
|
|
49
|
+
*/
|
|
50
|
+
export function launchScript(id, command, seconds) {
|
|
51
|
+
if (!TASK_ID_RE.test(id))
|
|
52
|
+
throw new Error(`invalid background task id: ${JSON.stringify(id)}`);
|
|
53
|
+
if (!Number.isSafeInteger(seconds) || seconds < 1) {
|
|
54
|
+
throw new Error(`invalid background task seconds: ${seconds}`);
|
|
55
|
+
}
|
|
56
|
+
const b64 = Buffer.from(command, "utf8").toString("base64");
|
|
57
|
+
const t = `${TASKS_DIR}/${id}`;
|
|
58
|
+
return [
|
|
59
|
+
"set -e",
|
|
60
|
+
`for c in ${REQUIRED.join(" ")}; do command -v "$c" >/dev/null 2>&1 || { echo "Background tasks need ${REQUIRED.join(", ")} in the sandbox; $c is missing." >&2; exit 127; }; done`,
|
|
61
|
+
`mkdir -p ${TASKS_DIR}`,
|
|
62
|
+
`printf '%s' '${b64}' | base64 -d > ${t}.sh`,
|
|
63
|
+
`setsid nohup sh -c 'timeout -s KILL ${seconds} bash ${t}.sh; echo $? > ${t}.exit' > ${t}.out 2>&1 < /dev/null &`,
|
|
64
|
+
// the session id goes to a file first: a launch that ends before its output comes back
|
|
65
|
+
// (aborted, timed out) still leaves the id of what it started
|
|
66
|
+
`echo $! > ${t}.sid`,
|
|
67
|
+
`cat ${t}.sid`,
|
|
68
|
+
].join("\n");
|
|
69
|
+
}
|
|
70
|
+
/** The model-visible result of a launch (spec §2.1); `workspace`: the instance's workspace root. */
|
|
71
|
+
export function startedText(id, description, workspace = DEFAULT_SANDBOX_ROOTS.workspace) {
|
|
72
|
+
return [
|
|
73
|
+
`Started background task ${id} ("${description}").`,
|
|
74
|
+
`Output: ${workspace}/${taskOutputPath(id)}`,
|
|
75
|
+
"Read it with TaskOutput (or Read), stop it with TaskStop. You will be told when it finishes.",
|
|
76
|
+
].join("\n");
|
|
77
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import type { KernelConfig } from "../config/schema.js";
|
|
2
|
+
import { EventLog } from "../conversations/event-log.js";
|
|
3
|
+
import { KernelConfigService } from "../infra/config/kernel-config.service.js";
|
|
4
|
+
import { LockService } from "../infra/lock/lock.service.js";
|
|
5
|
+
import type { KernelLogger } from "../log.js";
|
|
6
|
+
import { SandboxService } from "../sandbox/sandbox.service.js";
|
|
7
|
+
import { BackgroundTaskFinisher } from "./finish.js";
|
|
8
|
+
import { BackgroundTaskStore } from "./store.js";
|
|
9
|
+
/** The poll of the running background tasks (`@LockedInterval`, every `pollSeconds`). */
|
|
10
|
+
export declare const BACKGROUND_POLL_JOB = "background-task-poll";
|
|
11
|
+
/** The daily prune of finished background tasks older than `tools.outputRetentionDays`. */
|
|
12
|
+
export declare const BACKGROUND_PRUNE_JOB = "background-task-prune";
|
|
13
|
+
/**
|
|
14
|
+
* A reservation (`sid` null) older than this has lost its launch. The slowest legitimate launch
|
|
15
|
+
* is the pipeline's own limit for a background `Bash` call ({@link LAUNCH_EXEC_TIMEOUT_MS} plus
|
|
16
|
+
* {@link sandboxBaseTimeoutMs}: the tool timeout, `sandbox.lockWaitSeconds` and the setup margin),
|
|
17
|
+
* so twice that (never under 2 minutes) leaves a wide margin: only a launching process that died
|
|
18
|
+
* leaves a reservation this old.
|
|
19
|
+
*/
|
|
20
|
+
export declare const launchAbandonedAfterMs: (cfg: KernelConfig) => number;
|
|
21
|
+
/**
|
|
22
|
+
* The worker's background task jobs (spec 2026-11-05-background-bash-design §4.3), each once per
|
|
23
|
+
* tick across replicas:
|
|
24
|
+
* - `background-task-poll` (every `sandbox.background.pollSeconds`): for every environment
|
|
25
|
+
* instance with running tasks (of any conversation using it), one exec through
|
|
26
|
+
* `SandboxService.ifRunning` (which never creates or resumes an instance) reports each task's
|
|
27
|
+
* exit file and liveness; ended tasks finish through {@link BackgroundTaskFinisher}. Each poll
|
|
28
|
+
* takes and releases a lease, so `last_used_at` stays fresh and an instance with running tasks
|
|
29
|
+
* is never idle-suspended;
|
|
30
|
+
* - `background-task-prune` (daily): deletes finished tasks older than `tools.outputRetentionDays`.
|
|
31
|
+
*/
|
|
32
|
+
export declare class BackgroundTaskPollJob {
|
|
33
|
+
private readonly store;
|
|
34
|
+
private readonly finisher;
|
|
35
|
+
private readonly eventLog;
|
|
36
|
+
private readonly sandbox;
|
|
37
|
+
readonly config: KernelConfigService;
|
|
38
|
+
readonly lockService: LockService;
|
|
39
|
+
readonly log: KernelLogger;
|
|
40
|
+
constructor(store: Pick<BackgroundTaskStore, "runningStarted" | "pruneFinished" | "failAbandonedLaunches">, finisher: BackgroundTaskFinisher, eventLog: Pick<EventLog, "publishChanged">, sandbox: Pick<SandboxService, "cloudAvailable" | "availableFor" | "ifRunning">, config: KernelConfigService, lockService: LockService, log: KernelLogger);
|
|
41
|
+
poll(signal?: AbortSignal): Promise<void>;
|
|
42
|
+
/**
|
|
43
|
+
* One poll of every running task (the body of {@link poll}); returns how many tasks finished.
|
|
44
|
+
* A sandbox whose poll fails (busy, a provider error) is logged and tried again next tick.
|
|
45
|
+
* First, reservations abandoned by a launch that died ({@link launchAbandonedAfterMs}) are
|
|
46
|
+
* failed, so they stop holding a slot of `sandbox.background.maxTasks` (not counted in the
|
|
47
|
+
* result: they never started), with a `changed: "background"` frame to their conversations.
|
|
48
|
+
*/
|
|
49
|
+
pollOnce(signal?: AbortSignal): Promise<number>;
|
|
50
|
+
/** Polls the tasks of one environment instance; returns how many finished. */
|
|
51
|
+
private pollSandbox;
|
|
52
|
+
/** The poll exec of one instance: each task's report by id. */
|
|
53
|
+
private pollExec;
|
|
54
|
+
/** Deletes the finished tasks older than `tools.outputRetentionDays` (their rows only). */
|
|
55
|
+
prune(): Promise<void>;
|
|
56
|
+
}
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
8
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
9
|
+
};
|
|
10
|
+
import { rootsOf } from "@capybara-hq/plugin-sdk";
|
|
11
|
+
import { Inject, Injectable } from "@nestjs/common";
|
|
12
|
+
import { EventLog } from "../conversations/event-log.js";
|
|
13
|
+
import { KernelConfigService } from "../infra/config/kernel-config.service.js";
|
|
14
|
+
import { LockService } from "../infra/lock/lock.service.js";
|
|
15
|
+
import { LockedCron } from "../infra/schedule/locked-cron.decorator.js";
|
|
16
|
+
import { LockedInterval } from "../infra/schedule/locked-interval.js";
|
|
17
|
+
import { KERNEL_LOGGER } from "../infra/tokens.js";
|
|
18
|
+
import { SandboxService, } from "../sandbox/sandbox.service.js";
|
|
19
|
+
import { sandboxBaseTimeoutMs } from "../tools/builtins/sandbox/common.js";
|
|
20
|
+
import { BackgroundTaskFinisher } from "./finish.js";
|
|
21
|
+
import { LAUNCH_EXEC_TIMEOUT_MS } from "./launch.js";
|
|
22
|
+
import { actingAs, taskActor } from "./session.js";
|
|
23
|
+
import { parsePollOutput, polledAs, pollScript } from "./status.js";
|
|
24
|
+
import { notRunningAs, RECREATED } from "./stop.js";
|
|
25
|
+
import { BackgroundTaskStore } from "./store.js";
|
|
26
|
+
/** The poll of the running background tasks (`@LockedInterval`, every `pollSeconds`). */
|
|
27
|
+
export const BACKGROUND_POLL_JOB = "background-task-poll";
|
|
28
|
+
/** The daily prune of finished background tasks older than `tools.outputRetentionDays`. */
|
|
29
|
+
export const BACKGROUND_PRUNE_JOB = "background-task-prune";
|
|
30
|
+
/** The least age at which a reservation counts as abandoned, whatever the config. */
|
|
31
|
+
const LAUNCH_ABANDONED_FLOOR_MS = 120_000;
|
|
32
|
+
/**
|
|
33
|
+
* A reservation (`sid` null) older than this has lost its launch. The slowest legitimate launch
|
|
34
|
+
* is the pipeline's own limit for a background `Bash` call ({@link LAUNCH_EXEC_TIMEOUT_MS} plus
|
|
35
|
+
* {@link sandboxBaseTimeoutMs}: the tool timeout, `sandbox.lockWaitSeconds` and the setup margin),
|
|
36
|
+
* so twice that (never under 2 minutes) leaves a wide margin: only a launching process that died
|
|
37
|
+
* leaves a reservation this old.
|
|
38
|
+
*/
|
|
39
|
+
export const launchAbandonedAfterMs = (cfg) => Math.max(LAUNCH_ABANDONED_FLOOR_MS, 2 * (LAUNCH_EXEC_TIMEOUT_MS + sandboxBaseTimeoutMs(cfg)));
|
|
40
|
+
/** The time limit of one sandbox's poll exec. */
|
|
41
|
+
const POLL_EXEC_TIMEOUT_MS = 30_000;
|
|
42
|
+
/** The most output one poll exec keeps (a line per task, with a tail when it ended). */
|
|
43
|
+
const POLL_MAX_OUTPUT_BYTES = 4 * 1024 * 1024;
|
|
44
|
+
/**
|
|
45
|
+
* The worker's background task jobs (spec 2026-11-05-background-bash-design §4.3), each once per
|
|
46
|
+
* tick across replicas:
|
|
47
|
+
* - `background-task-poll` (every `sandbox.background.pollSeconds`): for every environment
|
|
48
|
+
* instance with running tasks (of any conversation using it), one exec through
|
|
49
|
+
* `SandboxService.ifRunning` (which never creates or resumes an instance) reports each task's
|
|
50
|
+
* exit file and liveness; ended tasks finish through {@link BackgroundTaskFinisher}. Each poll
|
|
51
|
+
* takes and releases a lease, so `last_used_at` stays fresh and an instance with running tasks
|
|
52
|
+
* is never idle-suspended;
|
|
53
|
+
* - `background-task-prune` (daily): deletes finished tasks older than `tools.outputRetentionDays`.
|
|
54
|
+
*/
|
|
55
|
+
let BackgroundTaskPollJob = class BackgroundTaskPollJob {
|
|
56
|
+
store;
|
|
57
|
+
finisher;
|
|
58
|
+
eventLog;
|
|
59
|
+
sandbox;
|
|
60
|
+
config;
|
|
61
|
+
lockService;
|
|
62
|
+
log;
|
|
63
|
+
constructor(store, finisher, eventLog, sandbox, config, lockService, log) {
|
|
64
|
+
this.store = store;
|
|
65
|
+
this.finisher = finisher;
|
|
66
|
+
this.eventLog = eventLog;
|
|
67
|
+
this.sandbox = sandbox;
|
|
68
|
+
this.config = config;
|
|
69
|
+
this.lockService = lockService;
|
|
70
|
+
this.log = log;
|
|
71
|
+
}
|
|
72
|
+
async poll(signal) {
|
|
73
|
+
await this.pollOnce(signal);
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* One poll of every running task (the body of {@link poll}); returns how many tasks finished.
|
|
77
|
+
* A sandbox whose poll fails (busy, a provider error) is logged and tried again next tick.
|
|
78
|
+
* First, reservations abandoned by a launch that died ({@link launchAbandonedAfterMs}) are
|
|
79
|
+
* failed, so they stop holding a slot of `sandbox.background.maxTasks` (not counted in the
|
|
80
|
+
* result: they never started), with a `changed: "background"` frame to their conversations.
|
|
81
|
+
*/
|
|
82
|
+
async pollOnce(signal = new AbortController().signal) {
|
|
83
|
+
const abandoned = await this.store.failAbandonedLaunches(new Date(Date.now() - launchAbandonedAfterMs(this.config.get())));
|
|
84
|
+
if (abandoned.length > 0) {
|
|
85
|
+
this.log.warn("abandoned background launches failed", { count: abandoned.length });
|
|
86
|
+
// a client that listed the reservation as running refreshes (the owner and, for a
|
|
87
|
+
// sub-agent's task, the conversation that owns the sandbox); a failed publish only logs
|
|
88
|
+
const conversations = new Set(abandoned.flatMap((t) => [t.conversationId, t.sandboxConversationId]));
|
|
89
|
+
for (const c of conversations)
|
|
90
|
+
await this.eventLog.publishChanged(c, "background");
|
|
91
|
+
}
|
|
92
|
+
const groups = new Map();
|
|
93
|
+
for (const t of await this.store.runningStarted()) {
|
|
94
|
+
if (t.sid === null || t.sandboxCreatedAt === null)
|
|
95
|
+
continue;
|
|
96
|
+
// one exec per instance: the tasks of every conversation sharing the environment
|
|
97
|
+
const key = `${t.environmentId} ${t.sandboxCreatedAt.getTime()}`;
|
|
98
|
+
groups.set(key, [...(groups.get(key) ?? []), t]);
|
|
99
|
+
}
|
|
100
|
+
let finished = 0;
|
|
101
|
+
for (const tasks of groups.values()) {
|
|
102
|
+
if (signal.aborted)
|
|
103
|
+
break;
|
|
104
|
+
try {
|
|
105
|
+
// the environment's provider is not there (no cloud provider, `@device` not served):
|
|
106
|
+
// its tasks stay as they are until it is
|
|
107
|
+
const env = tasks[0]?.environmentId ?? null;
|
|
108
|
+
if (env === null ? !this.sandbox.cloudAvailable : !(await this.sandbox.availableFor(env))) {
|
|
109
|
+
continue;
|
|
110
|
+
}
|
|
111
|
+
finished += await this.pollSandbox(tasks, signal);
|
|
112
|
+
}
|
|
113
|
+
catch (err) {
|
|
114
|
+
if (signal.aborted)
|
|
115
|
+
break;
|
|
116
|
+
this.log.warn("cannot poll background tasks; retrying next tick", {
|
|
117
|
+
environmentId: tasks[0]?.environmentId,
|
|
118
|
+
err,
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
if (finished > 0)
|
|
123
|
+
this.log.info("background tasks finished", { count: finished });
|
|
124
|
+
return finished;
|
|
125
|
+
}
|
|
126
|
+
/** Polls the tasks of one environment instance; returns how many finished. */
|
|
127
|
+
async pollSandbox(tasks, signal) {
|
|
128
|
+
const [first] = tasks;
|
|
129
|
+
// a task from before environments has no instance any more
|
|
130
|
+
const r = first.environmentId === null
|
|
131
|
+
? { kind: "not_running", status: "gone" }
|
|
132
|
+
: await this.sandbox.ifRunning(first.environmentId, { createdAt: first.sandboxCreatedAt }, (p, h, sig) => this.pollExec(actingAs(p, taskActor(first)), h, tasks, sig), signal);
|
|
133
|
+
const now = new Date();
|
|
134
|
+
let n = 0;
|
|
135
|
+
for (const t of tasks) {
|
|
136
|
+
let to;
|
|
137
|
+
let lastLines = "";
|
|
138
|
+
if (r.kind === "ran") {
|
|
139
|
+
const report = r.value.get(t.id);
|
|
140
|
+
// a task the exec did not report is checked again next tick
|
|
141
|
+
to = report ? polledAs(t, report, now) : null;
|
|
142
|
+
lastLines = report?.lastLines ?? "";
|
|
143
|
+
}
|
|
144
|
+
else if (r.kind === "not_running") {
|
|
145
|
+
// a suspended sandbox may keep the processes (E2B's pause): killed after its next resume
|
|
146
|
+
to = notRunningAs(r.status, r.status === "suspended");
|
|
147
|
+
}
|
|
148
|
+
else {
|
|
149
|
+
to = RECREATED;
|
|
150
|
+
}
|
|
151
|
+
// a stop that claimed the task after the read above finishes it itself
|
|
152
|
+
if (to && (await this.finisher.finish(t, to, lastLines, false, { unclaimed: true })))
|
|
153
|
+
n++;
|
|
154
|
+
}
|
|
155
|
+
return n;
|
|
156
|
+
}
|
|
157
|
+
/** The poll exec of one instance: each task's report by id. */
|
|
158
|
+
async pollExec(p, h, tasks, signal) {
|
|
159
|
+
const res = await p.exec(h, {
|
|
160
|
+
command: pollScript(tasks.map((t) => ({ id: t.id, sid: t.sid }))),
|
|
161
|
+
cwd: rootsOf(h).workspace,
|
|
162
|
+
timeoutMs: POLL_EXEC_TIMEOUT_MS,
|
|
163
|
+
maxOutputBytes: POLL_MAX_OUTPUT_BYTES,
|
|
164
|
+
signal,
|
|
165
|
+
});
|
|
166
|
+
if (res.exitCode !== 0 || res.truncated) {
|
|
167
|
+
throw new Error(`the poll exec failed (exit ${res.exitCode}${res.truncated ? ", truncated" : ""}): ${res.stderr.slice(0, 500)}`);
|
|
168
|
+
}
|
|
169
|
+
return parsePollOutput(res.stdout);
|
|
170
|
+
}
|
|
171
|
+
/** Deletes the finished tasks older than `tools.outputRetentionDays` (their rows only). */
|
|
172
|
+
async prune() {
|
|
173
|
+
const days = this.config.get().tools.outputRetentionDays;
|
|
174
|
+
const n = await this.store.pruneFinished(new Date(Date.now() - days * 86_400_000));
|
|
175
|
+
if (n > 0)
|
|
176
|
+
this.log.info("finished background tasks pruned", { count: n });
|
|
177
|
+
}
|
|
178
|
+
};
|
|
179
|
+
__decorate([
|
|
180
|
+
LockedInterval(BACKGROUND_POLL_JOB, (cfg) => cfg.sandbox.background.pollSeconds * 1000)
|
|
181
|
+
], BackgroundTaskPollJob.prototype, "poll", null);
|
|
182
|
+
__decorate([
|
|
183
|
+
LockedCron("30 3 * * *", { name: BACKGROUND_PRUNE_JOB })
|
|
184
|
+
], BackgroundTaskPollJob.prototype, "prune", null);
|
|
185
|
+
BackgroundTaskPollJob = __decorate([
|
|
186
|
+
Injectable(),
|
|
187
|
+
__param(0, Inject(BackgroundTaskStore)),
|
|
188
|
+
__param(1, Inject(BackgroundTaskFinisher)),
|
|
189
|
+
__param(2, Inject(EventLog)),
|
|
190
|
+
__param(3, Inject(SandboxService)),
|
|
191
|
+
__param(4, Inject(KernelConfigService)),
|
|
192
|
+
__param(5, Inject(LockService)),
|
|
193
|
+
__param(6, Inject(KERNEL_LOGGER))
|
|
194
|
+
], BackgroundTaskPollJob);
|
|
195
|
+
export { BackgroundTaskPollJob };
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { EventPayload } from "../conversations/events.js";
|
|
2
|
+
/** `42s`, `2m05s`, `1h02m05s`. */
|
|
3
|
+
export declare function formatElapsed(ms: number): string;
|
|
4
|
+
/** Why a task was lost, as the model reads it (an unknown reason as is). */
|
|
5
|
+
export declare const lostReasonText: (reason: string) => string;
|
|
6
|
+
type Finished = EventPayload<"background_task_finished">;
|
|
7
|
+
/**
|
|
8
|
+
* The model-visible text of a `background_task_finished` event, rendered as a system message (spec
|
|
9
|
+
* 2026-11-05-background-bash-design §2.4):
|
|
10
|
+
*
|
|
11
|
+
* ```
|
|
12
|
+
* Background task bt_k3f9a2 ("Run the test suite") completed with exit code 1 after 4m12s.
|
|
13
|
+
* Last lines:
|
|
14
|
+
* …
|
|
15
|
+
* Full output: /workspace/.capybara/tasks/bt_k3f9a2.out
|
|
16
|
+
* ```
|
|
17
|
+
*
|
|
18
|
+
* Without an exit code the first line has no "with exit code"; without output the last lines are
|
|
19
|
+
* `Last lines: (none)`. A finish a tool call already reported (`reported`) is one short line.
|
|
20
|
+
* Read only from the payload, so a replay renders it identically.
|
|
21
|
+
*/
|
|
22
|
+
export declare function renderBackgroundFinished(p: Finished): string;
|
|
23
|
+
export {};
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/** `42s`, `2m05s`, `1h02m05s`. */
|
|
2
|
+
export function formatElapsed(ms) {
|
|
3
|
+
const s = Math.max(0, Math.floor(ms / 1000));
|
|
4
|
+
const pad = (n) => String(n).padStart(2, "0");
|
|
5
|
+
if (s < 60)
|
|
6
|
+
return `${s}s`;
|
|
7
|
+
if (s < 3600)
|
|
8
|
+
return `${Math.floor(s / 60)}m${pad(s % 60)}s`;
|
|
9
|
+
return `${Math.floor(s / 3600)}h${pad(Math.floor((s % 3600) / 60))}m${pad(s % 60)}s`;
|
|
10
|
+
}
|
|
11
|
+
const LOST_REASONS = {
|
|
12
|
+
sandbox_suspended: "the sandbox was suspended",
|
|
13
|
+
sandbox_gone: "the sandbox is gone",
|
|
14
|
+
sandbox_recreated: "the sandbox was recreated",
|
|
15
|
+
process_gone: "its processes ended without an exit code",
|
|
16
|
+
launch_abandoned: "its launch was interrupted",
|
|
17
|
+
};
|
|
18
|
+
/** Why a task was lost, as the model reads it (an unknown reason as is). */
|
|
19
|
+
export const lostReasonText = (reason) => LOST_REASONS[reason] ?? reason;
|
|
20
|
+
const statusWord = (status) => status === "timed_out" ? "timed out" : status;
|
|
21
|
+
/**
|
|
22
|
+
* The model-visible text of a `background_task_finished` event, rendered as a system message (spec
|
|
23
|
+
* 2026-11-05-background-bash-design §2.4):
|
|
24
|
+
*
|
|
25
|
+
* ```
|
|
26
|
+
* Background task bt_k3f9a2 ("Run the test suite") completed with exit code 1 after 4m12s.
|
|
27
|
+
* Last lines:
|
|
28
|
+
* …
|
|
29
|
+
* Full output: /workspace/.capybara/tasks/bt_k3f9a2.out
|
|
30
|
+
* ```
|
|
31
|
+
*
|
|
32
|
+
* Without an exit code the first line has no "with exit code"; without output the last lines are
|
|
33
|
+
* `Last lines: (none)`. A finish a tool call already reported (`reported`) is one short line.
|
|
34
|
+
* Read only from the payload, so a replay renders it identically.
|
|
35
|
+
*/
|
|
36
|
+
export function renderBackgroundFinished(p) {
|
|
37
|
+
const head = `Background task ${p.taskId} (${JSON.stringify(p.description)}) ${statusWord(p.status)}`;
|
|
38
|
+
if (p.reported)
|
|
39
|
+
return `${head}; already reported.`;
|
|
40
|
+
const lost = p.lostReason === undefined ? "" : ` (${lostReasonText(p.lostReason)})`;
|
|
41
|
+
const exit = p.exitCode === null ? "" : ` with exit code ${p.exitCode}`;
|
|
42
|
+
const lines = p.lastLines.replace(/\n+$/, "");
|
|
43
|
+
return [
|
|
44
|
+
`${head}${lost}${exit} after ${formatElapsed(p.elapsedMs)}.`,
|
|
45
|
+
lines === "" ? "Last lines: (none)" : `Last lines:\n${lines}`,
|
|
46
|
+
`Full output: ${p.outputPath}`,
|
|
47
|
+
].join("\n");
|
|
48
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { type SandboxActor, type SandboxHandle } from "@capybara-hq/plugin-sdk";
|
|
2
|
+
import type { HeldProvider, TaggedProvider } from "../sandbox/sandbox.service.js";
|
|
3
|
+
/**
|
|
4
|
+
* A background task's session inside the sandbox (spec 2026-11-05-background-bash-design §4.2):
|
|
5
|
+
* every process of a task is in the session `setsid` started, so liveness is `pgrep -s <sid>` and
|
|
6
|
+
* stopping is `pkill -s <sid>` (never `kill -0` or `/proc`, which disagree between sandbox-fake and
|
|
7
|
+
* Linux).
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* `p` with every `exec` carrying `actor` (`SandboxService.ifRunning` tags execs but leaves the
|
|
11
|
+
* actor to the caller): the provider then reads like a `withSandbox` holder's.
|
|
12
|
+
*/
|
|
13
|
+
export declare function actingAs(p: TaggedProvider, actor: SandboxActor): HeldProvider;
|
|
14
|
+
/** Who a background task's own execs (poll, stop, reads) act for: its trigger and its owner. */
|
|
15
|
+
export declare const taskActor: (task: {
|
|
16
|
+
triggerAccountId: string;
|
|
17
|
+
conversationId: string;
|
|
18
|
+
}) => SandboxActor;
|
|
19
|
+
/** A session id (the pid `setsid` started). */
|
|
20
|
+
export declare const SID_RE: RegExp;
|
|
21
|
+
/** The time limit of one kill of a session ({@link killSession}). */
|
|
22
|
+
export declare const KILL_SESSION_TIMEOUT_MS = 10000;
|
|
23
|
+
/** Throws unless `id` is a task id and `sid` a session id (both go into scripts unquoted). */
|
|
24
|
+
export declare function assertTaskRef(id: string, sid: string): void;
|
|
25
|
+
/**
|
|
26
|
+
* A shell fragment that kills every process of the session `sid` with SIGKILL, repeated until the
|
|
27
|
+
* session is empty (pkill exits 1: no process left): a process may fork between pkill's listing
|
|
28
|
+
* and its signals, and the child would live on. Sets `ks` to 0 when the session was confirmed
|
|
29
|
+
* empty, else to pkill's failing status (3 when it was still not empty after 10 tries). Uses only
|
|
30
|
+
* the variables `ks`, `kc` and `ki`. `sid` must be a session id.
|
|
31
|
+
*/
|
|
32
|
+
export declare function killSessionScript(sid: string): string;
|
|
33
|
+
/**
|
|
34
|
+
* Kills every process of the session `sid` ({@link killSessionScript}) in an exec of its own. Any
|
|
35
|
+
* pkill status other than 0 and 1 is a failure. Runs with a fresh signal of its own (a command
|
|
36
|
+
* must be killed even when the caller was just aborted). True when the session was confirmed
|
|
37
|
+
* empty; false when it could not be (an error is never thrown).
|
|
38
|
+
*/
|
|
39
|
+
export declare function killSession(p: Pick<HeldProvider, "exec">, h: SandboxHandle, sid: string): Promise<boolean>;
|
|
40
|
+
/** The longest `lastLines` of a finished task (spec §2.4). */
|
|
41
|
+
export declare const LAST_LINES_MAX_CHARS = 4000;
|
|
42
|
+
/**
|
|
43
|
+
* A shell pipeline printing the last 20 lines of task `id`'s output (at most {@link TAIL_BYTES}),
|
|
44
|
+
* base64 on one line (empty when there is no output file). Relative to the workspace root.
|
|
45
|
+
*/
|
|
46
|
+
export declare function tailCommand(id: string): string;
|
|
47
|
+
/** Decodes a {@link tailCommand} result into `lastLines`: its end, at most 4 000 characters. */
|
|
48
|
+
export declare function decodeTail(b64: string): string;
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { rootsOf } from "@capybara-hq/plugin-sdk";
|
|
2
|
+
import { TASK_ID_RE, TASKS_DIR } from "./launch.js";
|
|
3
|
+
/**
|
|
4
|
+
* A background task's session inside the sandbox (spec 2026-11-05-background-bash-design §4.2):
|
|
5
|
+
* every process of a task is in the session `setsid` started, so liveness is `pgrep -s <sid>` and
|
|
6
|
+
* stopping is `pkill -s <sid>` (never `kill -0` or `/proc`, which disagree between sandbox-fake and
|
|
7
|
+
* Linux).
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* `p` with every `exec` carrying `actor` (`SandboxService.ifRunning` tags execs but leaves the
|
|
11
|
+
* actor to the caller): the provider then reads like a `withSandbox` holder's.
|
|
12
|
+
*/
|
|
13
|
+
export function actingAs(p, actor) {
|
|
14
|
+
const wrapped = Object.create(p);
|
|
15
|
+
Object.defineProperty(wrapped, "exec", {
|
|
16
|
+
value: (h, args) => p.exec(h, { ...args, actor }),
|
|
17
|
+
});
|
|
18
|
+
return wrapped;
|
|
19
|
+
}
|
|
20
|
+
/** Who a background task's own execs (poll, stop, reads) act for: its trigger and its owner. */
|
|
21
|
+
export const taskActor = (task) => ({ accountId: task.triggerAccountId, conversationId: task.conversationId });
|
|
22
|
+
/** A session id (the pid `setsid` started). */
|
|
23
|
+
export const SID_RE = /^[1-9][0-9]*$/;
|
|
24
|
+
/** The time limit of one kill of a session ({@link killSession}). */
|
|
25
|
+
export const KILL_SESSION_TIMEOUT_MS = 10_000;
|
|
26
|
+
/** Throws unless `id` is a task id and `sid` a session id (both go into scripts unquoted). */
|
|
27
|
+
export function assertTaskRef(id, sid) {
|
|
28
|
+
if (!TASK_ID_RE.test(id))
|
|
29
|
+
throw new Error(`invalid background task id: ${JSON.stringify(id)}`);
|
|
30
|
+
if (!SID_RE.test(sid))
|
|
31
|
+
throw new Error(`invalid background task session: ${JSON.stringify(sid)}`);
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* A shell fragment that kills every process of the session `sid` with SIGKILL, repeated until the
|
|
35
|
+
* session is empty (pkill exits 1: no process left): a process may fork between pkill's listing
|
|
36
|
+
* and its signals, and the child would live on. Sets `ks` to 0 when the session was confirmed
|
|
37
|
+
* empty, else to pkill's failing status (3 when it was still not empty after 10 tries). Uses only
|
|
38
|
+
* the variables `ks`, `kc` and `ki`. `sid` must be a session id.
|
|
39
|
+
*/
|
|
40
|
+
export function killSessionScript(sid) {
|
|
41
|
+
if (!SID_RE.test(sid))
|
|
42
|
+
throw new Error(`invalid background task session: ${JSON.stringify(sid)}`);
|
|
43
|
+
return `ks=3; for ki in 1 2 3 4 5 6 7 8 9 10; do pkill -KILL -s ${sid}; kc=$?; if [ "$kc" -eq 1 ]; then ks=0; break; fi; if [ "$kc" -ne 0 ]; then ks=$kc; break; fi; sleep 0.2; done`;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Kills every process of the session `sid` ({@link killSessionScript}) in an exec of its own. Any
|
|
47
|
+
* pkill status other than 0 and 1 is a failure. Runs with a fresh signal of its own (a command
|
|
48
|
+
* must be killed even when the caller was just aborted). True when the session was confirmed
|
|
49
|
+
* empty; false when it could not be (an error is never thrown).
|
|
50
|
+
*/
|
|
51
|
+
export async function killSession(p, h, sid) {
|
|
52
|
+
if (!SID_RE.test(sid))
|
|
53
|
+
return false;
|
|
54
|
+
const r = await p
|
|
55
|
+
.exec(h, {
|
|
56
|
+
command: `${killSessionScript(sid)}; exit "$ks"`,
|
|
57
|
+
cwd: rootsOf(h).workspace,
|
|
58
|
+
timeoutMs: KILL_SESSION_TIMEOUT_MS,
|
|
59
|
+
maxOutputBytes: 4096,
|
|
60
|
+
signal: AbortSignal.timeout(KILL_SESSION_TIMEOUT_MS),
|
|
61
|
+
})
|
|
62
|
+
.catch(() => undefined);
|
|
63
|
+
return r?.exitCode === 0;
|
|
64
|
+
}
|
|
65
|
+
/** The most bytes of a task's output end a tail reads (the event keeps at most 4 000 characters). */
|
|
66
|
+
const TAIL_BYTES = 12_000;
|
|
67
|
+
/** The longest `lastLines` of a finished task (spec §2.4). */
|
|
68
|
+
export const LAST_LINES_MAX_CHARS = 4000;
|
|
69
|
+
/**
|
|
70
|
+
* A shell pipeline printing the last 20 lines of task `id`'s output (at most {@link TAIL_BYTES}),
|
|
71
|
+
* base64 on one line (empty when there is no output file). Relative to the workspace root.
|
|
72
|
+
*/
|
|
73
|
+
export function tailCommand(id) {
|
|
74
|
+
return `{ tail -n 20 ${TASKS_DIR}/${id}.out 2>/dev/null | tail -c ${TAIL_BYTES} | base64 | tr -d '\\n'; }`;
|
|
75
|
+
}
|
|
76
|
+
/** Decodes a {@link tailCommand} result into `lastLines`: its end, at most 4 000 characters. */
|
|
77
|
+
export function decodeTail(b64) {
|
|
78
|
+
const text = Buffer.from(b64.trim(), "base64").toString("utf8");
|
|
79
|
+
return text.length > LAST_LINES_MAX_CHARS ? text.slice(-LAST_LINES_MAX_CHARS) : text;
|
|
80
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { BackgroundFinish } from "./finish.js";
|
|
2
|
+
import type { BackgroundTaskRow } from "./store.js";
|
|
3
|
+
/** What the poll exec reports for one task. */
|
|
4
|
+
export interface TaskReport {
|
|
5
|
+
/** The exit file's code; null while there is none. */
|
|
6
|
+
exitCode: number | null;
|
|
7
|
+
/**
|
|
8
|
+
* Whether the session still has a process: `pgrep -s <sid>`, or, for a task whose command
|
|
9
|
+
* exited, whether its leftover processes could not be confirmed killed.
|
|
10
|
+
*/
|
|
11
|
+
alive: boolean;
|
|
12
|
+
/** The last lines (decoded), read when the task exited or no process was left. */
|
|
13
|
+
lastLines: string;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* The poll exec of one sandbox: for every task one line `<id> <exit code or -> <1|0> <tail or ->`.
|
|
17
|
+
* Liveness is asked before the exit file: a task ending in between is seen by its exit file, never
|
|
18
|
+
* as a task without process and exit file. A task whose command exited while its session still has
|
|
19
|
+
* processes (it left `server &` running) has the session killed in the same exec (so under the
|
|
20
|
+
* caller's lease), and is reported without a process once the session was confirmed empty: the
|
|
21
|
+
* task ends when its command exits, and nothing of it runs on untracked. The tail (base64) is read
|
|
22
|
+
* only for a task that exited or has no process left. Relative to the workspace root.
|
|
23
|
+
*/
|
|
24
|
+
export declare function pollScript(tasks: {
|
|
25
|
+
id: string;
|
|
26
|
+
sid: string;
|
|
27
|
+
}[]): string;
|
|
28
|
+
/** Parses {@link pollScript}'s output; a task missing from it is absent from the map. */
|
|
29
|
+
export declare function parsePollOutput(stdout: string): Map<string, TaskReport>;
|
|
30
|
+
/**
|
|
31
|
+
* How a polled task ends, or null while it runs (spec §4.3). A task whose command exited but whose
|
|
32
|
+
* leftover processes could not be confirmed killed ({@link pollScript}) stays running: the next
|
|
33
|
+
* poll kills them again before it finishes.
|
|
34
|
+
*/
|
|
35
|
+
export declare function polledAs(task: BackgroundTaskRow, r: TaskReport, now: Date): BackgroundFinish | null;
|