@capybara-hq/kernel 0.1.0-rc.1 → 0.1.0-rc.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bootstrap.json +85 -5
- package/dist/admin/admin.controller.d.ts +52 -71
- package/dist/admin/admin.controller.js +117 -63
- package/dist/admin/admin.module.d.ts +3 -0
- package/dist/admin/admin.module.js +22 -0
- package/dist/admin/admin.schemas.d.ts +60 -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 +264 -0
- package/dist/catalog/catalog-content.js +430 -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 +677 -0
- package/dist/catalog/catalog-scope.service.d.ts +286 -0
- package/dist/catalog/catalog-scope.service.js +1196 -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 +144 -207
- package/dist/catalog/catalog.service.js +258 -528
- package/dist/catalog/claude/agents.js +15 -10
- package/dist/catalog/claude/translate.js +3 -0
- 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 +118 -0
- package/dist/catalog/component-scope.schemas.js +97 -0
- package/dist/catalog/component-scope.service.d.ts +366 -0
- package/dist/catalog/component-scope.service.js +1115 -0
- package/dist/catalog/component-state.d.ts +197 -0
- package/dist/catalog/component-state.js +473 -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 +434 -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 +808 -0
- package/dist/catalog/owned-plugin-cleanup.d.ts +56 -0
- package/dist/catalog/owned-plugin-cleanup.js +194 -0
- package/dist/catalog/ownership.d.ts +172 -0
- package/dist/catalog/ownership.js +326 -0
- package/dist/catalog/platform-components.d.ts +243 -0
- package/dist/catalog/platform-components.js +872 -0
- package/dist/catalog/platform-migration.d.ts +115 -0
- package/dist/catalog/platform-migration.js +583 -0
- package/dist/catalog/plugin-import.d.ts +293 -71
- package/dist/catalog/plugin-import.js +1039 -281
- package/dist/catalog/plugin-install.d.ts +271 -66
- package/dist/catalog/plugin-install.js +1198 -344
- package/dist/catalog/plugin-package.d.ts +41 -4
- package/dist/catalog/plugin-package.js +140 -7
- package/dist/catalog/plugin-upgrade.d.ts +312 -188
- package/dist/catalog/plugin-upgrade.js +1371 -1065
- 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 +119 -0
- package/dist/channels/actions.d.ts +6 -4
- package/dist/channels/actions.js +11 -4
- package/dist/channels/cards.d.ts +33 -11
- package/dist/channels/cards.js +96 -24
- package/dist/channels/channels.module.d.ts +40 -0
- package/dist/channels/channels.module.js +130 -0
- package/dist/channels/channels.schemas.d.ts +37 -0
- package/dist/channels/channels.schemas.js +38 -0
- package/dist/channels/connections.controller.d.ts +44 -37
- package/dist/channels/connections.controller.js +83 -38
- package/dist/channels/connections.service.d.ts +101 -30
- package/dist/channels/connections.service.js +380 -147
- package/dist/channels/inbound.d.ts +44 -38
- package/dist/channels/inbound.js +190 -44
- package/dist/channels/job-ids.d.ts +10 -0
- package/dist/channels/job-ids.js +10 -0
- package/dist/channels/jobs.d.ts +85 -0
- package/dist/channels/jobs.js +157 -0
- package/dist/channels/outbound.d.ts +71 -80
- package/dist/channels/outbound.js +219 -202
- package/dist/channels/phrases.d.ts +33 -2
- package/dist/channels/phrases.js +29 -1
- package/dist/channels/supervisor.d.ts +88 -46
- package/dist/channels/supervisor.js +230 -132
- package/dist/channels/threads.d.ts +34 -8
- package/dist/channels/threads.js +79 -13
- package/dist/channels/webhook.d.ts +20 -14
- package/dist/channels/webhook.js +51 -20
- package/dist/config/docs.js +5 -1
- package/dist/config/load.d.ts +3 -2
- package/dist/config/load.js +3 -2
- package/dist/config/nacos-source.js +11 -2
- package/dist/config/schema.d.ts +36 -2
- package/dist/config/schema.js +226 -25
- package/dist/conversations/access.d.ts +31 -0
- package/dist/conversations/access.js +110 -0
- package/dist/conversations/agent-tree.d.ts +46 -0
- package/dist/conversations/agent-tree.js +92 -0
- package/dist/conversations/artifacts.d.ts +11 -11
- package/dist/conversations/artifacts.js +36 -10
- package/dist/conversations/attachments.controller.d.ts +1 -1
- package/dist/conversations/attachments.controller.js +8 -6
- package/dist/conversations/attachments.module.d.ts +7 -0
- package/dist/conversations/attachments.module.js +25 -0
- package/dist/conversations/attachments.service.d.ts +60 -22
- package/dist/conversations/attachments.service.js +249 -51
- package/dist/conversations/conversations.controller.d.ts +86 -50
- package/dist/conversations/conversations.controller.js +184 -103
- package/dist/conversations/conversations.module.d.ts +8 -0
- package/dist/conversations/conversations.module.js +72 -0
- package/dist/conversations/conversations.schemas.d.ts +52 -0
- package/dist/conversations/conversations.schemas.js +79 -0
- package/dist/conversations/conversations.service.d.ts +166 -49
- package/dist/conversations/conversations.service.js +383 -179
- package/dist/conversations/environment-status.d.ts +24 -0
- package/dist/conversations/environment-status.js +71 -0
- package/dist/conversations/event-log.d.ts +64 -27
- package/dist/conversations/event-log.js +167 -31
- package/dist/conversations/events.d.ts +252 -9
- package/dist/conversations/events.js +243 -32
- package/dist/conversations/files.d.ts +10 -10
- package/dist/conversations/files.js +37 -11
- package/dist/conversations/idem-keys.d.ts +5 -0
- package/dist/conversations/idem-keys.js +5 -0
- package/dist/conversations/job-ids.d.ts +6 -0
- package/dist/conversations/job-ids.js +6 -0
- package/dist/conversations/message-context.d.ts +79 -0
- package/dist/conversations/message-context.js +145 -0
- package/dist/conversations/outputs-read.d.ts +11 -11
- package/dist/conversations/outputs-read.js +31 -7
- package/dist/conversations/queue.d.ts +53 -58
- package/dist/conversations/queue.js +37 -293
- package/dist/conversations/queue.service.d.ts +60 -0
- package/dist/conversations/queue.service.js +350 -0
- package/dist/conversations/titles.d.ts +83 -27
- package/dist/conversations/titles.js +195 -71
- package/dist/conversations/tree.d.ts +17 -0
- package/dist/conversations/tree.js +42 -0
- package/dist/ctx/bus.js +9 -3
- package/dist/ctx/create-ctx.d.ts +26 -1
- package/dist/ctx/create-ctx.js +45 -16
- package/dist/ctx/lock.d.ts +7 -3
- package/dist/ctx/lock.js +9 -20
- package/dist/ctx/secrets.d.ts +10 -2
- package/dist/ctx/secrets.js +7 -3
- package/dist/db/kernel-schema.d.ts +589 -27
- 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 +160 -2
- package/dist/errors.js +160 -2
- package/dist/evals/budget.d.ts +42 -21
- package/dist/evals/budget.js +114 -62
- package/dist/evals/evals.module.d.ts +31 -0
- package/dist/evals/evals.module.js +114 -0
- package/dist/evals/evals.schemas.d.ts +110 -0
- package/dist/evals/evals.schemas.js +107 -0
- package/dist/evals/jobs.d.ts +20 -0
- package/dist/evals/jobs.js +45 -0
- package/dist/evals/reconstruct.d.ts +18 -9
- package/dist/evals/reconstruct.js +36 -10
- package/dist/evals/recorded-tools.d.ts +37 -1
- package/dist/evals/recorded-tools.js +120 -10
- package/dist/evals/run-replay.d.ts +75 -10
- package/dist/evals/run-replay.js +218 -94
- package/dist/evals/runs.controller.d.ts +3 -58
- package/dist/evals/runs.controller.js +18 -50
- package/dist/evals/runs.service.d.ts +31 -52
- package/dist/evals/runs.service.js +281 -255
- package/dist/evals/sets.controller.d.ts +3 -29
- package/dist/evals/sets.controller.js +18 -39
- package/dist/evals/sets.service.d.ts +29 -13
- package/dist/evals/sets.service.js +262 -202
- package/dist/evals/snapshot.d.ts +5 -4
- package/dist/evals/snapshot.js +17 -4
- package/dist/evals/step-replay.d.ts +6 -8
- package/dist/evals/step-replay.js +17 -10
- package/dist/evals/trajectory.controller.d.ts +1 -1
- package/dist/evals/trajectory.controller.js +11 -7
- package/dist/evals/trajectory.d.ts +2 -2
- package/dist/evals/trajectory.js +1 -1
- package/dist/evals/trajectory.service.d.ts +13 -7
- package/dist/evals/trajectory.service.js +56 -21
- package/dist/evals/worker.d.ts +48 -31
- package/dist/evals/worker.js +229 -124
- package/dist/extensions/admin-ops.d.ts +133 -41
- package/dist/extensions/admin-ops.js +378 -172
- package/dist/extensions/admin-view.d.ts +82 -32
- package/dist/extensions/admin-view.js +284 -71
- package/dist/extensions/approvals.d.ts +24 -10
- package/dist/extensions/approvals.js +73 -46
- package/dist/extensions/blobs.d.ts +27 -10
- package/dist/extensions/blobs.js +112 -45
- package/dist/extensions/bootstrap.d.ts +99 -36
- package/dist/extensions/bootstrap.js +290 -134
- package/dist/extensions/cli.d.ts +32 -10
- package/dist/extensions/cli.js +52 -98
- package/dist/extensions/config-hash.d.ts +10 -0
- package/dist/extensions/config-hash.js +38 -0
- package/dist/extensions/config-issues.d.ts +19 -0
- package/dist/extensions/config-issues.js +48 -0
- package/dist/extensions/config-json-schema.d.ts +43 -7
- package/dist/extensions/config-json-schema.js +124 -58
- package/dist/extensions/deployment-config-store.d.ts +55 -0
- package/dist/extensions/deployment-config-store.js +133 -0
- package/dist/extensions/deployment-config.d.ts +146 -70
- package/dist/extensions/deployment-config.js +439 -246
- package/dist/extensions/display-name.d.ts +22 -0
- package/dist/extensions/display-name.js +77 -0
- package/dist/extensions/effective-config.d.ts +127 -0
- package/dist/extensions/effective-config.js +368 -0
- package/dist/extensions/enabled.d.ts +5 -5
- package/dist/extensions/extensions.module.d.ts +8 -0
- package/dist/extensions/extensions.module.js +96 -0
- package/dist/extensions/hooks.d.ts +40 -6
- package/dist/extensions/hooks.js +83 -17
- package/dist/extensions/host.d.ts +161 -80
- package/dist/extensions/host.js +505 -213
- package/dist/extensions/installs.d.ts +73 -19
- package/dist/extensions/installs.js +174 -37
- package/dist/extensions/job-ids.d.ts +6 -0
- package/dist/extensions/job-ids.js +6 -0
- package/dist/extensions/lifecycle-topics.d.ts +18 -0
- package/dist/extensions/lifecycle-topics.js +18 -0
- package/dist/extensions/lifecycle.d.ts +35 -47
- package/dist/extensions/lifecycle.js +103 -39
- package/dist/extensions/locks.d.ts +45 -0
- package/dist/extensions/locks.js +112 -0
- package/dist/extensions/migrate-lock.d.ts +3 -4
- package/dist/extensions/org-config.d.ts +141 -49
- package/dist/extensions/org-config.js +471 -243
- package/dist/extensions/org-levels.d.ts +37 -0
- package/dist/extensions/org-levels.js +71 -0
- package/dist/extensions/org-overrides.d.ts +151 -0
- package/dist/extensions/org-overrides.js +524 -0
- package/dist/extensions/package.d.ts +14 -1
- package/dist/extensions/package.js +51 -2
- package/dist/extensions/permission-view.d.ts +59 -6
- package/dist/extensions/permission-view.js +7 -5
- package/dist/extensions/plugin-guides.d.ts +129 -0
- package/dist/extensions/plugin-guides.js +283 -0
- package/dist/extensions/plugin-icons.d.ts +54 -0
- package/dist/extensions/plugin-icons.js +125 -0
- package/dist/extensions/plugin-items.d.ts +21 -0
- package/dist/extensions/plugin-items.js +42 -0
- package/dist/extensions/point-defaults.controller.d.ts +28 -0
- package/dist/extensions/point-defaults.controller.js +69 -0
- package/dist/extensions/point-defaults.d.ts +73 -0
- package/dist/extensions/point-defaults.js +236 -0
- package/dist/extensions/point-defaults.schemas.d.ts +9 -0
- package/dist/extensions/point-defaults.schemas.js +14 -0
- package/dist/extensions/registry.d.ts +50 -2
- package/dist/extensions/registry.js +91 -4
- package/dist/extensions/resolve.d.ts +51 -1
- package/dist/extensions/resolve.js +85 -3
- package/dist/extensions/single-provider.d.ts +92 -0
- package/dist/extensions/single-provider.js +180 -0
- package/dist/extensions/sources.d.ts +19 -10
- package/dist/extensions/sources.js +34 -13
- package/dist/extensions/state.module.d.ts +9 -0
- package/dist/extensions/state.module.js +38 -0
- package/dist/extensions/unavailable.d.ts +50 -0
- package/dist/extensions/unavailable.js +115 -0
- package/dist/files/files.module.d.ts +3 -0
- package/dist/files/files.module.js +22 -0
- package/dist/files/previewers.controller.d.ts +7 -2
- package/dist/files/previewers.controller.js +19 -12
- package/dist/files/previewers.d.ts +21 -19
- package/dist/files/previewers.js +114 -38
- package/dist/files/previewers.schemas.d.ts +10 -0
- package/dist/files/previewers.schemas.js +9 -0
- package/dist/http/adapter.d.ts +3 -0
- package/dist/http/adapter.js +25 -0
- package/dist/http/api.module.d.ts +3 -110
- package/dist/http/api.module.js +93 -358
- package/dist/http/app.d.ts +22 -17
- package/dist/http/app.js +46 -65
- package/dist/http/error-filter.module.d.ts +5 -0
- package/dist/http/error-filter.module.js +18 -0
- package/dist/http/error.filter.js +2 -2
- package/dist/http/{gateway.module.d.ts → gateway-routes.d.ts} +7 -3
- package/dist/http/gateway-routes.js +16 -0
- package/dist/http/nest-logger.d.ts +6 -5
- package/dist/http/nest-logger.js +24 -10
- package/dist/http/plugin-dispatch.d.ts +4 -1
- package/dist/http/plugin-dispatch.js +14 -2
- package/dist/identity/accounts.d.ts +137 -38
- package/dist/identity/accounts.js +386 -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 +80 -33
- package/dist/identity/me.schemas.d.ts +24 -0
- package/dist/identity/me.schemas.js +25 -0
- package/dist/identity/principal.d.ts +11 -3
- package/dist/identity/principal.js +11 -3
- package/dist/identity/sessions.d.ts +24 -10
- package/dist/identity/sessions.js +119 -42
- package/dist/identity/settings.d.ts +69 -23
- package/dist/identity/settings.js +201 -72
- package/dist/identity/sso.controller.d.ts +7 -7
- package/dist/identity/sso.controller.js +13 -9
- package/dist/identity/sso.d.ts +9 -12
- package/dist/identity/sso.js +54 -24
- package/dist/identity/super-admin.d.ts +20 -0
- package/dist/identity/super-admin.js +81 -0
- package/dist/inbox/inbox.module.d.ts +6 -0
- package/dist/inbox/inbox.module.js +26 -0
- package/dist/inbox/inbox.schemas.d.ts +8 -0
- package/dist/inbox/inbox.schemas.js +11 -0
- package/dist/inbox/inbox.service.d.ts +68 -11
- package/dist/inbox/inbox.service.js +104 -13
- package/dist/inbox/org-notices.d.ts +63 -0
- package/dist/inbox/org-notices.js +91 -0
- package/dist/inbox/platform-inbox.controller.d.ts +23 -0
- package/dist/inbox/platform-inbox.controller.js +58 -0
- package/dist/inbox/platform-inbox.service.d.ts +151 -0
- package/dist/inbox/platform-inbox.service.js +263 -0
- package/dist/inbox/platform-notices.d.ts +19 -0
- package/dist/inbox/platform-notices.js +9 -0
- package/dist/index.d.ts +22 -13
- package/dist/index.js +16 -7
- package/dist/infra/cache/cache.module.d.ts +3 -0
- package/dist/infra/cache/cache.module.js +16 -0
- package/dist/infra/cache/cache.service.d.ts +21 -0
- package/dist/infra/cache/cache.service.js +80 -0
- package/dist/infra/cache/cacheable.decorator.d.ts +32 -0
- package/dist/infra/cache/cacheable.decorator.js +83 -0
- package/dist/infra/cli/kernel-cli.module.d.ts +66 -0
- package/dist/infra/cli/kernel-cli.module.js +173 -0
- package/dist/infra/close-within.d.ts +15 -0
- package/dist/infra/close-within.js +36 -0
- package/dist/infra/config/config.module.d.ts +13 -0
- package/dist/infra/config/config.module.js +39 -0
- package/dist/infra/config/kernel-config.service.d.ts +25 -0
- package/dist/infra/config/kernel-config.service.js +157 -0
- package/dist/infra/database/after-commit.d.ts +6 -0
- package/dist/infra/database/after-commit.js +9 -0
- package/dist/infra/database/database.module.d.ts +25 -0
- package/dist/infra/database/database.module.js +91 -0
- package/dist/infra/database/kernel-db.d.ts +22 -0
- package/dist/infra/database/kernel-db.js +65 -0
- package/dist/infra/database/transaction-host.d.ts +50 -0
- package/dist/infra/database/transaction-host.js +125 -0
- package/dist/infra/database/transactional.decorator.d.ts +15 -0
- package/dist/infra/database/transactional.decorator.js +27 -0
- package/dist/infra/database/xact-lock.d.ts +17 -0
- package/dist/infra/database/xact-lock.js +43 -0
- package/dist/infra/events/kernel-events.d.ts +121 -0
- package/dist/infra/events/kernel-events.js +65 -0
- package/dist/infra/health/health.controller.d.ts +26 -0
- package/dist/infra/health/health.controller.js +104 -0
- package/dist/infra/health/health.module.d.ts +9 -0
- package/dist/infra/health/health.module.js +24 -0
- package/dist/infra/health/health.options.d.ts +10 -0
- package/dist/infra/health/health.options.js +15 -0
- package/dist/infra/health/shutdown-state.d.ts +6 -0
- package/dist/infra/health/shutdown-state.js +2 -0
- package/dist/infra/lifecycle/graceful-shutdown.module.d.ts +6 -0
- package/dist/infra/lifecycle/graceful-shutdown.module.js +23 -0
- package/dist/infra/lifecycle/graceful-shutdown.service.d.ts +70 -0
- package/dist/infra/lifecycle/graceful-shutdown.service.js +135 -0
- package/dist/infra/lifecycle/process-guards.d.ts +52 -0
- package/dist/infra/lifecycle/process-guards.js +90 -0
- package/dist/infra/lifecycle/shutdown-signals.d.ts +30 -0
- package/dist/infra/lifecycle/shutdown-signals.js +48 -0
- package/dist/infra/lock/key-template.d.ts +13 -0
- package/dist/infra/lock/key-template.js +46 -0
- package/dist/infra/lock/lock.module.d.ts +3 -0
- package/dist/infra/lock/lock.module.js +16 -0
- package/dist/infra/lock/lock.service.d.ts +120 -0
- package/dist/infra/lock/lock.service.js +343 -0
- package/dist/infra/lock/shared-lease.d.ts +44 -0
- package/dist/infra/lock/shared-lease.js +121 -0
- package/dist/infra/lock/with-lock.decorator.d.ts +28 -0
- package/dist/infra/lock/with-lock.decorator.js +49 -0
- package/dist/infra/logging/logging.module.d.ts +18 -0
- package/dist/infra/logging/logging.module.js +52 -0
- package/dist/infra/queue/add-job-once.d.ts +14 -0
- package/dist/infra/queue/add-job-once.js +16 -0
- package/dist/infra/queue/configured-processor.d.ts +18 -0
- package/dist/infra/queue/configured-processor.js +23 -0
- package/dist/infra/queue/job-failure.d.ts +18 -0
- package/dist/infra/queue/job-failure.js +26 -0
- package/dist/infra/queue/queue-shutdown.d.ts +27 -0
- package/dist/infra/queue/queue-shutdown.js +81 -0
- package/dist/infra/queue/queue.module.d.ts +16 -0
- package/dist/infra/queue/queue.module.js +61 -0
- package/dist/infra/queue/redis-connection.d.ts +13 -0
- package/dist/infra/queue/redis-connection.js +25 -0
- package/dist/infra/queue/retired-schedulers.d.ts +7 -0
- package/dist/infra/queue/retired-schedulers.js +9 -0
- package/dist/infra/queue/run-job.d.ts +16 -0
- package/dist/infra/queue/run-job.js +19 -0
- package/dist/infra/redis/redis.module.d.ts +24 -0
- package/dist/infra/redis/redis.module.js +91 -0
- package/dist/infra/schedule/cron-tick.d.ts +12 -0
- package/dist/infra/schedule/cron-tick.js +25 -0
- package/dist/infra/schedule/locked-cron.decorator.d.ts +27 -0
- package/dist/infra/schedule/locked-cron.decorator.js +53 -0
- package/dist/infra/schedule/locked-interval.d.ts +69 -0
- package/dist/infra/schedule/locked-interval.js +190 -0
- package/dist/infra/schedule/locked-tick.d.ts +90 -0
- package/dist/infra/schedule/locked-tick.js +137 -0
- package/dist/infra/schedule/schedule.module.d.ts +8 -0
- package/dist/infra/schedule/schedule.module.js +27 -0
- package/dist/infra/schedule/scheduled-runs.d.ts +69 -0
- package/dist/infra/schedule/scheduled-runs.js +163 -0
- package/dist/infra/swagger/swagger.d.ts +16 -0
- package/dist/infra/swagger/swagger.js +31 -0
- package/dist/infra/throttler/credential-throttler.d.ts +35 -0
- package/dist/infra/throttler/credential-throttler.js +77 -0
- package/dist/infra/throttler/named-throttlers.d.ts +36 -0
- package/dist/infra/throttler/named-throttlers.js +157 -0
- package/dist/infra/throttler/redis-throttler-storage.d.ts +38 -0
- package/dist/infra/throttler/redis-throttler-storage.js +130 -0
- package/dist/infra/throttler/throttler.guard.d.ts +23 -0
- package/dist/infra/throttler/throttler.guard.js +68 -0
- package/dist/infra/throttler/throttler.module.d.ts +15 -0
- package/dist/infra/throttler/throttler.module.js +53 -0
- package/dist/infra/tokens.d.ts +20 -0
- package/dist/infra/tokens.js +20 -0
- package/dist/infra/validation/create-zod-dto.d.ts +23 -0
- package/dist/infra/validation/create-zod-dto.js +35 -0
- package/dist/infra/validation/parse-with-zod.d.ts +7 -0
- package/dist/infra/validation/parse-with-zod.js +12 -0
- package/dist/infra/validation/validation.module.d.ts +3 -0
- package/dist/infra/validation/validation.module.js +16 -0
- package/dist/infra/validation/zod-params.d.ts +7 -0
- package/dist/infra/validation/zod-params.js +42 -0
- package/dist/infra/validation/zod-validation.pipe.d.ts +11 -0
- package/dist/infra/validation/zod-validation.pipe.js +31 -0
- package/dist/kernel.d.ts +9 -244
- package/dist/kernel.js +8 -1305
- package/dist/kernel.module.d.ts +17 -0
- package/dist/kernel.module.js +145 -0
- package/dist/lifecycle/kernel-lifecycle.d.ts +140 -0
- package/dist/lifecycle/kernel-lifecycle.js +465 -0
- package/dist/lifecycle/tokens.d.ts +3 -0
- package/dist/lifecycle/tokens.js +3 -0
- package/dist/log-context.d.ts +2 -0
- package/dist/log-context.js +4 -0
- package/dist/log.d.ts +13 -1
- package/dist/log.js +93 -17
- package/dist/models/embeddings.d.ts +82 -0
- package/dist/models/embeddings.js +326 -0
- package/dist/models/enablement.controller.d.ts +40 -0
- package/dist/models/enablement.controller.js +74 -0
- package/dist/models/enablement.d.ts +101 -0
- package/dist/models/enablement.js +264 -0
- package/dist/models/models.module.d.ts +7 -0
- package/dist/models/models.module.js +36 -0
- package/dist/models/org-models.schemas.d.ts +8 -0
- package/dist/models/org-models.schemas.js +22 -0
- package/dist/models/prices.d.ts +13 -5
- package/dist/models/prices.js +69 -39
- package/dist/models/purposes.controller.d.ts +6 -4
- package/dist/models/purposes.controller.js +16 -11
- package/dist/models/purposes.d.ts +103 -23
- package/dist/models/purposes.js +208 -77
- package/dist/orgs/directory-sync.controller.d.ts +1 -1
- package/dist/orgs/directory-sync.controller.js +2 -2
- package/dist/orgs/directory-sync.d.ts +74 -35
- package/dist/orgs/directory-sync.js +243 -132
- package/dist/orgs/invitations.controller.d.ts +8 -8
- package/dist/orgs/invitations.controller.js +27 -26
- package/dist/orgs/invitations.service.d.ts +12 -9
- package/dist/orgs/invitations.service.js +130 -92
- package/dist/orgs/job-ids.d.ts +8 -0
- package/dist/orgs/job-ids.js +8 -0
- package/dist/orgs/members.service.d.ts +19 -12
- package/dist/orgs/members.service.js +161 -117
- package/dist/orgs/offboarding.d.ts +61 -60
- package/dist/orgs/offboarding.js +206 -95
- package/dist/orgs/org-lock.d.ts +33 -19
- package/dist/orgs/org-lock.js +94 -35
- package/dist/orgs/org.guard.d.ts +11 -1
- package/dist/orgs/org.guard.js +45 -34
- package/dist/orgs/orgs.controller.d.ts +13 -16
- package/dist/orgs/orgs.controller.js +29 -20
- package/dist/orgs/orgs.module.d.ts +6 -0
- package/dist/orgs/orgs.module.js +71 -0
- package/dist/orgs/orgs.schemas.d.ts +8 -0
- package/dist/orgs/orgs.schemas.js +16 -0
- package/dist/orgs/orgs.service.d.ts +47 -21
- package/dist/orgs/orgs.service.js +166 -91
- package/dist/orgs/roles.d.ts +1 -1
- package/dist/orgs/roles.js +5 -1
- package/dist/orgs/settings.controller.d.ts +2 -2
- package/dist/orgs/settings.controller.js +8 -6
- package/dist/orgs/settings.service.d.ts +76 -14
- package/dist/orgs/settings.service.js +140 -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 +683 -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 +94 -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 +38 -0
- package/dist/platform/ops/admin.ops.js +407 -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 +854 -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 +18 -0
- package/dist/platform/ops/org-settings.ops.js +127 -0
- package/dist/platform/ops/orgs.ops.d.ts +28 -0
- package/dist/platform/ops/orgs.ops.js +296 -0
- package/dist/platform/ops/other-orgs.d.ts +20 -0
- package/dist/platform/ops/other-orgs.js +72 -0
- package/dist/platform/ops/paging.d.ts +14 -0
- package/dist/platform/ops/paging.js +20 -0
- package/dist/platform/ops/platform.ops.d.ts +30 -0
- package/dist/platform/ops/platform.ops.js +231 -0
- package/dist/platform/ops/plugins.ops.d.ts +35 -0
- package/dist/platform/ops/plugins.ops.js +476 -0
- package/dist/platform/ops/previewers.ops.d.ts +14 -0
- package/dist/platform/ops/previewers.ops.js +109 -0
- package/dist/platform/ops/requests.ops.d.ts +14 -0
- package/dist/platform/ops/requests.ops.js +191 -0
- package/dist/platform/ops/role.d.ts +4 -0
- package/dist/platform/ops/role.js +10 -0
- package/dist/platform/ops/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/themes.ops.d.ts +14 -0
- package/dist/platform/ops/themes.ops.js +47 -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 +40 -0
- package/dist/platform/platform-ops.module.js +127 -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 +66 -0
- package/dist/roles/gateway-role.d.ts +54 -0
- package/dist/roles/gateway-role.js +118 -0
- package/dist/roles/gateway.module.d.ts +9 -0
- package/dist/roles/gateway.module.js +31 -0
- package/dist/roles/worker-role.d.ts +65 -0
- package/dist/roles/worker-role.js +151 -0
- package/dist/roles/worker.module.d.ts +14 -0
- package/dist/roles/worker.module.js +106 -0
- package/dist/runtime/abort.js +19 -2
- package/dist/runtime/checkpointer.d.ts +8 -3
- package/dist/runtime/checkpointer.js +87 -55
- package/dist/runtime/context/build.d.ts +21 -13
- package/dist/runtime/context/build.js +106 -29
- package/dist/runtime/context/claude-tools.d.ts +4 -1
- package/dist/runtime/context/claude-tools.js +13 -12
- package/dist/runtime/context/compaction.js +24 -1
- package/dist/runtime/context/environment-paths.d.ts +40 -0
- package/dist/runtime/context/environment-paths.js +48 -0
- package/dist/runtime/context/legacy-text.d.ts +22 -0
- package/dist/runtime/context/legacy-text.js +37 -0
- package/dist/runtime/context/reminders.d.ts +2 -0
- package/dist/runtime/context/reminders.js +2 -0
- package/dist/runtime/context/run-context.d.ts +65 -0
- package/dist/runtime/context/run-context.js +215 -0
- package/dist/runtime/context/skills.d.ts +29 -11
- package/dist/runtime/context/skills.js +46 -32
- package/dist/runtime/context/tool-changes.d.ts +27 -0
- package/dist/runtime/context/tool-changes.js +60 -0
- package/dist/runtime/conversation-lock.d.ts +20 -11
- package/dist/runtime/conversation-lock.js +62 -72
- package/dist/runtime/hook-calls.d.ts +11 -4
- package/dist/runtime/hook-calls.js +41 -13
- package/dist/runtime/job-ids.d.ts +10 -0
- package/dist/runtime/job-ids.js +10 -0
- package/dist/runtime/langgraph-loop.d.ts +3 -1
- package/dist/runtime/langgraph-loop.js +37 -18
- package/dist/runtime/loop.d.ts +42 -6
- package/dist/runtime/loop.js +14 -0
- package/dist/runtime/maintenance-queue.d.ts +10 -0
- package/dist/runtime/maintenance-queue.js +10 -0
- package/dist/runtime/maintenance.d.ts +50 -74
- package/dist/runtime/maintenance.js +166 -137
- package/dist/runtime/model-call.d.ts +61 -15
- package/dist/runtime/model-call.js +128 -84
- package/dist/runtime/providers.d.ts +158 -27
- package/dist/runtime/providers.js +373 -63
- package/dist/runtime/quota.d.ts +17 -3
- package/dist/runtime/quota.js +27 -2
- package/dist/runtime/retired-schedulers.d.ts +7 -0
- package/dist/runtime/retired-schedulers.js +31 -0
- package/dist/runtime/run-context.service.d.ts +65 -0
- package/dist/runtime/run-context.service.js +236 -0
- package/dist/runtime/run-control.d.ts +43 -0
- package/dist/runtime/run-control.js +89 -0
- package/dist/runtime/run-drafts.d.ts +85 -0
- package/dist/runtime/run-drafts.js +230 -0
- package/dist/runtime/run-finish.d.ts +27 -18
- package/dist/runtime/run-finish.js +98 -51
- package/dist/runtime/run-jobs.d.ts +46 -0
- package/dist/runtime/run-jobs.js +91 -0
- package/dist/runtime/run-processors.d.ts +60 -0
- package/dist/runtime/run-processors.js +185 -0
- package/dist/runtime/run-queue.d.ts +90 -58
- package/dist/runtime/run-queue.js +566 -297
- package/dist/runtime/run-steps.d.ts +39 -0
- package/dist/runtime/run-steps.js +96 -0
- package/dist/runtime/run-worker.d.ts +134 -77
- package/dist/runtime/run-worker.js +412 -237
- package/dist/runtime/runtime.module.d.ts +10 -0
- package/dist/runtime/runtime.module.js +122 -0
- package/dist/runtime/step-log.d.ts +51 -0
- package/dist/runtime/step-log.js +111 -0
- package/dist/runtime/stream.controller.d.ts +28 -9
- package/dist/runtime/stream.controller.js +72 -13
- package/dist/runtime/stream.d.ts +27 -6
- package/dist/runtime/stream.js +102 -7
- package/dist/runtime/subagents/child.d.ts +58 -51
- package/dist/runtime/subagents/child.js +105 -86
- package/dist/runtime/subagents/definition.d.ts +32 -28
- package/dist/runtime/subagents/definition.js +89 -143
- package/dist/runtime/subagents/deliveries.d.ts +71 -0
- package/dist/runtime/subagents/deliveries.js +228 -0
- package/dist/runtime/subagents/dispatch.d.ts +197 -27
- package/dist/runtime/subagents/dispatch.js +336 -270
- package/dist/runtime/subagents/limits.d.ts +32 -8
- package/dist/runtime/subagents/limits.js +44 -8
- package/dist/runtime/subagents/messages.d.ts +95 -0
- package/dist/runtime/subagents/messages.js +328 -0
- package/dist/runtime/subagents/org-agents.d.ts +4 -4
- package/dist/runtime/subagents/org-agents.js +3 -2
- package/dist/runtime/subagents/preamble.d.ts +4 -4
- package/dist/runtime/subagents/preamble.js +9 -7
- package/dist/runtime/subagents/progress.d.ts +10 -8
- package/dist/runtime/subagents/progress.js +11 -6
- package/dist/runtime/subagents/render.d.ts +30 -0
- package/dist/runtime/subagents/render.js +53 -0
- package/dist/runtime/subagents/roster.d.ts +27 -10
- package/dist/runtime/subagents/roster.js +49 -13
- package/dist/runtime/subagents/skill-fork.d.ts +10 -10
- package/dist/runtime/subagents/skill-fork.js +23 -8
- package/dist/runtime/subagents/status.d.ts +14 -0
- package/dist/runtime/subagents/status.js +23 -0
- package/dist/runtime/subagents/subagents.service.d.ts +43 -0
- package/dist/runtime/subagents/subagents.service.js +106 -0
- package/dist/runtime/usage-report-jobs.d.ts +88 -0
- package/dist/runtime/usage-report-jobs.js +158 -0
- package/dist/runtime/usage-report.d.ts +121 -83
- package/dist/runtime/usage-report.js +355 -181
- package/dist/runtime/waits.d.ts +258 -81
- package/dist/runtime/waits.js +800 -263
- package/dist/sandbox/job-ids.d.ts +10 -0
- package/dist/sandbox/job-ids.js +10 -0
- package/dist/sandbox/jobs.d.ts +68 -0
- package/dist/sandbox/jobs.js +150 -0
- package/dist/sandbox/leases.d.ts +73 -82
- package/dist/sandbox/leases.js +162 -346
- package/dist/sandbox/providers.d.ts +46 -0
- package/dist/sandbox/providers.js +83 -0
- package/dist/sandbox/sandbox.module.d.ts +9 -0
- package/dist/sandbox/sandbox.module.js +36 -0
- package/dist/sandbox/sandbox.service.d.ts +359 -151
- package/dist/sandbox/sandbox.service.js +950 -435
- package/dist/sandbox/unreachable.d.ts +30 -0
- package/dist/sandbox/unreachable.js +108 -0
- package/dist/skills/catalog.d.ts +40 -26
- package/dist/skills/catalog.js +120 -99
- package/dist/skills/changes.controller.d.ts +11 -4
- package/dist/skills/changes.controller.js +34 -9
- package/dist/skills/changes.service.d.ts +31 -21
- package/dist/skills/changes.service.js +426 -368
- package/dist/skills/invocable.controller.d.ts +2 -2
- package/dist/skills/invocable.controller.js +10 -7
- package/dist/skills/invocation-keys.d.ts +1 -1
- package/dist/skills/invocation-keys.js +1 -1
- package/dist/skills/invoke.d.ts +19 -18
- package/dist/skills/invoke.js +68 -24
- package/dist/skills/package.d.ts +20 -1
- package/dist/skills/package.js +28 -1
- package/dist/skills/skills.controller.d.ts +33 -7
- package/dist/skills/skills.controller.js +79 -12
- package/dist/skills/skills.module.d.ts +6 -0
- package/dist/skills/skills.module.js +39 -0
- package/dist/skills/skills.schemas.d.ts +48 -0
- package/dist/skills/skills.schemas.js +61 -0
- package/dist/skills/skills.service.d.ts +151 -44
- package/dist/skills/skills.service.js +636 -204
- package/dist/skills/usable.d.ts +81 -0
- package/dist/skills/usable.js +379 -0
- package/dist/storage/job-ids.d.ts +6 -0
- package/dist/storage/job-ids.js +6 -0
- package/dist/storage/purge.d.ts +22 -7
- package/dist/storage/purge.js +55 -3
- package/dist/storage/storage.module.d.ts +6 -0
- package/dist/storage/storage.module.js +23 -0
- package/dist/storage/storage.service.d.ts +18 -4
- package/dist/storage/storage.service.js +44 -3
- package/dist/themes/render-css.d.ts +12 -0
- package/dist/themes/render-css.js +132 -0
- package/dist/themes/theme-delivery.service.d.ts +34 -0
- package/dist/themes/theme-delivery.service.js +111 -0
- package/dist/themes/theme-state.d.ts +95 -0
- package/dist/themes/theme-state.js +203 -0
- package/dist/themes/theme-usage.d.ts +61 -0
- package/dist/themes/theme-usage.js +98 -0
- package/dist/themes/themes-public.controller.d.ts +28 -0
- package/dist/themes/themes-public.controller.js +92 -0
- package/dist/themes/themes.controller.d.ts +13 -0
- package/dist/themes/themes.controller.js +38 -0
- package/dist/themes/themes.module.d.ts +3 -0
- package/dist/themes/themes.module.js +21 -0
- package/dist/themes/themes.schemas.d.ts +3 -0
- package/dist/themes/themes.schemas.js +2 -0
- package/dist/themes/themes.service.d.ts +50 -0
- package/dist/themes/themes.service.js +99 -0
- package/dist/time-zone.d.ts +5 -0
- package/dist/time-zone.js +19 -0
- package/dist/tools/approvals.controller.d.ts +1 -1
- package/dist/tools/approvals.controller.js +14 -11
- package/dist/tools/approvals.schemas.d.ts +21 -0
- package/dist/tools/approvals.schemas.js +15 -0
- package/dist/tools/approvals.service.d.ts +53 -27
- package/dist/tools/approvals.service.js +365 -260
- package/dist/tools/breaker.d.ts +2 -2
- package/dist/tools/breaker.js +21 -3
- package/dist/tools/builtin-names.d.ts +109 -0
- package/dist/tools/builtin-names.js +173 -0
- package/dist/tools/builtins/agent.d.ts +27 -25
- package/dist/tools/builtins/agent.js +66 -63
- package/dist/tools/builtins/ask-user.d.ts +3 -3
- package/dist/tools/builtins/ask-user.js +3 -3
- package/dist/tools/builtins/builtin-tools.d.ts +41 -0
- package/dist/tools/builtins/builtin-tools.js +151 -0
- package/dist/tools/builtins/current-time.d.ts +26 -0
- package/dist/tools/builtins/current-time.js +99 -0
- package/dist/tools/builtins/handback.d.ts +28 -0
- package/dist/tools/builtins/handback.js +53 -0
- package/dist/tools/builtins/platform.d.ts +51 -0
- package/dist/tools/builtins/platform.js +451 -0
- package/dist/tools/builtins/read-tool-output.d.ts +3 -3
- package/dist/tools/builtins/read-tool-output.js +3 -3
- package/dist/tools/builtins/sandbox/bash.d.ts +5 -5
- package/dist/tools/builtins/sandbox/bash.js +293 -41
- package/dist/tools/builtins/sandbox/common.d.ts +137 -37
- package/dist/tools/builtins/sandbox/common.js +222 -62
- package/dist/tools/builtins/sandbox/deliver.d.ts +1 -1
- package/dist/tools/builtins/sandbox/deliver.js +21 -18
- package/dist/tools/builtins/sandbox/edit.d.ts +1 -1
- package/dist/tools/builtins/sandbox/edit.js +65 -51
- package/dist/tools/builtins/sandbox/file-state.d.ts +34 -0
- package/dist/tools/builtins/sandbox/file-state.js +34 -0
- package/dist/tools/builtins/sandbox/glob-match.d.ts +1 -1
- package/dist/tools/builtins/sandbox/glob-match.js +1 -1
- package/dist/tools/builtins/sandbox/glob.d.ts +1 -1
- package/dist/tools/builtins/sandbox/glob.js +19 -14
- package/dist/tools/builtins/sandbox/grep.d.ts +7 -4
- package/dist/tools/builtins/sandbox/grep.js +155 -36
- package/dist/tools/builtins/sandbox/index.d.ts +9 -5
- package/dist/tools/builtins/sandbox/index.js +13 -5
- package/dist/tools/builtins/sandbox/read.d.ts +2 -2
- package/dist/tools/builtins/sandbox/read.js +30 -20
- package/dist/tools/builtins/sandbox/task-output.d.ts +79 -0
- package/dist/tools/builtins/sandbox/task-output.js +334 -0
- package/dist/tools/builtins/sandbox/task-stop.d.ts +10 -0
- package/dist/tools/builtins/sandbox/task-stop.js +113 -0
- package/dist/tools/builtins/sandbox/write.d.ts +1 -1
- package/dist/tools/builtins/sandbox/write.js +52 -45
- package/dist/tools/builtins/send-message.d.ts +56 -0
- package/dist/tools/builtins/send-message.js +100 -0
- package/dist/tools/builtins/skill-load.d.ts +32 -21
- package/dist/tools/builtins/skill-load.js +125 -74
- package/dist/tools/builtins/skill-write.d.ts +4 -4
- package/dist/tools/builtins/skill-write.js +12 -12
- package/dist/tools/builtins/tool-search.d.ts +13 -9
- package/dist/tools/builtins/tool-search.js +25 -14
- package/dist/tools/builtins/web/errors.d.ts +8 -0
- package/dist/tools/builtins/web/errors.js +53 -0
- package/dist/tools/builtins/web/extract.d.ts +62 -0
- package/dist/tools/builtins/web/extract.js +271 -0
- package/dist/tools/builtins/web/fetch.d.ts +55 -0
- package/dist/tools/builtins/web/fetch.js +175 -0
- package/dist/tools/builtins/web/index.d.ts +13 -0
- package/dist/tools/builtins/web/index.js +12 -0
- package/dist/tools/builtins/web/page-cache.d.ts +25 -0
- package/dist/tools/builtins/web/page-cache.js +77 -0
- package/dist/tools/builtins/web/search.d.ts +25 -0
- package/dist/tools/builtins/web/search.js +210 -0
- package/dist/tools/builtins/web/url.d.ts +17 -0
- package/dist/tools/builtins/web/url.js +43 -0
- package/dist/tools/canonical-json.d.ts +6 -0
- package/dist/tools/canonical-json.js +16 -0
- package/dist/tools/connector-content.controller.d.ts +1 -1
- package/dist/tools/connector-content.controller.js +11 -6
- package/dist/tools/connector-content.d.ts +12 -15
- package/dist/tools/connector-content.js +53 -18
- package/dist/tools/connectors.controller.d.ts +16 -3
- package/dist/tools/connectors.controller.js +34 -14
- package/dist/tools/connectors.schemas.d.ts +12 -0
- package/dist/tools/connectors.schemas.js +19 -0
- package/dist/tools/connectors.service.d.ts +80 -18
- package/dist/tools/connectors.service.js +529 -358
- package/dist/tools/credentials.d.ts +20 -20
- package/dist/tools/credentials.js +55 -34
- package/dist/tools/display-names.d.ts +9 -0
- package/dist/tools/display-names.js +24 -0
- package/dist/tools/drift.d.ts +29 -41
- package/dist/tools/drift.js +116 -84
- package/dist/tools/elicitation.js +1 -1
- package/dist/tools/extension-tools.controller.d.ts +14 -0
- package/dist/tools/extension-tools.controller.js +37 -0
- package/dist/tools/info.d.ts +73 -13
- package/dist/tools/info.js +151 -39
- package/dist/tools/job-ids.d.ts +13 -0
- package/dist/tools/job-ids.js +15 -0
- package/dist/tools/jobs.d.ts +24 -0
- package/dist/tools/jobs.js +69 -0
- package/dist/tools/legacy-data.d.ts +34 -0
- package/dist/tools/legacy-data.js +76 -0
- package/dist/tools/legacy-keys.d.ts +51 -0
- package/dist/tools/legacy-keys.js +115 -0
- package/dist/tools/naming.d.ts +1 -5
- package/dist/tools/naming.js +1 -7
- package/dist/tools/oauth/flow-paths.d.ts +16 -0
- package/dist/tools/oauth/flow-paths.js +38 -0
- package/dist/tools/oauth/flow.d.ts +30 -30
- package/dist/tools/oauth/flow.js +109 -81
- package/dist/tools/oauth/oauth.controller.d.ts +3 -3
- package/dist/tools/oauth/oauth.controller.js +12 -9
- package/dist/tools/oauth/tokens.d.ts +45 -10
- package/dist/tools/oauth/tokens.js +70 -24
- package/dist/tools/org-tool-switches.d.ts +88 -0
- package/dist/tools/org-tool-switches.js +201 -0
- package/dist/tools/outputs.d.ts +13 -4
- package/dist/tools/outputs.js +48 -4
- package/dist/tools/pipeline.d.ts +108 -80
- package/dist/tools/pipeline.js +396 -409
- package/dist/tools/policy.d.ts +4 -17
- package/dist/tools/policy.js +49 -35
- package/dist/tools/questions.controller.d.ts +2 -2
- package/dist/tools/questions.controller.js +9 -6
- package/dist/tools/questions.service.d.ts +26 -25
- package/dist/tools/questions.service.js +201 -142
- package/dist/tools/registry.d.ts +215 -84
- package/dist/tools/registry.js +382 -264
- package/dist/tools/resources.d.ts +1 -1
- package/dist/tools/resources.js +1 -1
- package/dist/tools/specs.d.ts +5 -4
- package/dist/tools/specs.js +3 -1
- package/dist/tools/tools.module.d.ts +10 -0
- package/dist/tools/tools.module.js +113 -0
- package/dist/tools/validate.js +1 -1
- package/dist/ui/call-extension.d.ts +16 -0
- package/dist/ui/call-extension.js +38 -0
- package/dist/ui/embed-token.d.ts +9 -5
- package/dist/ui/embed-token.js +34 -6
- package/dist/ui/ui-stream.d.ts +22 -17
- package/dist/ui/ui-stream.js +72 -12
- package/dist/ui/ui.module.d.ts +7 -0
- package/dist/ui/ui.module.js +28 -0
- package/dist/ui/views.controller.d.ts +14 -12
- package/dist/ui/views.controller.js +32 -25
- package/dist/ui/views.d.ts +10 -57
- package/dist/ui/views.js +58 -46
- package/package.json +13 -3
- package/src/migrations/0063_tool_keys_claude_code.sql +220 -0
- package/src/migrations/0064_account_last_org.sql +7 -0
- package/src/migrations/0065_conversation_archive.sql +8 -0
- package/src/migrations/0066_extension_display_name.sql +4 -0
- package/src/migrations/0067_agent_profiles.sql +20 -0
- package/src/migrations/0068_agent_avatar_uploads.sql +7 -0
- package/src/migrations/0069_attachments_agent_idx.sql +3 -0
- package/src/migrations/0070_background_tasks.sql +37 -0
- package/src/migrations/0071_background_tasks_reserve.sql +6 -0
- package/src/migrations/0072_background_tasks_stopping.sql +5 -0
- package/src/migrations/0073_org_extension_point_defaults.sql +11 -0
- package/src/migrations/0074_subagent_tree.sql +50 -0
- package/src/migrations/0075_plugin_scope.sql +61 -0
- package/src/migrations/0076_skills_created_by_nullable.sql +6 -0
- package/src/migrations/0077_scope_requests.sql +52 -0
- package/src/migrations/0078_scope_grant_switches.sql +18 -0
- package/src/migrations/0079_scope_live_install_switches.sql +19 -0
- package/src/migrations/0080_rename_enterprise_admin.sql +18 -0
- package/src/migrations/0081_platform_components.sql +129 -0
- package/src/migrations/0082_platform_migration.sql +33 -0
- package/src/migrations/0083_plugin_scope_sync_failures.sql +15 -0
- package/src/migrations/0084_org_owned_items.sql +85 -0
- package/src/migrations/0085_agent_templates_phase4.sql +45 -0
- package/src/migrations/0086_org_layering.sql +30 -0
- package/src/migrations/0087_approval_summary.sql +6 -0
- package/src/migrations/0088_environments.sql +80 -0
- package/src/migrations/0089_model_kinds_usage.sql +38 -0
- package/src/migrations/0090_initial_passwords.sql +27 -0
- package/src/migrations/0091_account_time_zone.sql +4 -0
- package/src/migrations/0092_tools_default_on.sql +27 -0
- package/src/migrations/0093_connected_environments.sql +37 -0
- package/src/migrations/0094_environment_paths_idx.sql +7 -0
- package/src/migrations/0095_environment_files_resets.sql +5 -0
- package/src/migrations/0096_environment_demoted_default.sql +18 -0
- package/src/migrations/0097_extension_installs_enabled_at.sql +16 -0
- package/src/migrations/0098_single_provider_running_first.sql +41 -0
- package/src/migrations/0099_channel_connection_guide_ack.sql +6 -0
- package/src/migrations/0100_catalog_files.sql +13 -0
- package/src/migrations/0101_marketplace_icons.sql +32 -0
- package/src/migrations/0102_themes.sql +64 -0
- package/src/migrations/0103_ui_theme_setting.sql +7 -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,334 @@
|
|
|
1
|
+
import { setTimeout as sleep } from "node:timers/promises";
|
|
2
|
+
import { isSandboxGoneError, rootsOf, ToolError, } from "@capybara-hq/plugin-sdk";
|
|
3
|
+
import { TASK_ID_RE, TASKS_DIR, taskOutputFile } from "../../../background/launch.js";
|
|
4
|
+
import { formatElapsed, lostReasonText } from "../../../background/render.js";
|
|
5
|
+
import { actingAs, SID_RE, taskActor } from "../../../background/session.js";
|
|
6
|
+
import { parsePollOutput, polledAs, pollScript, } from "../../../background/status.js";
|
|
7
|
+
import { notRunningAs, RECREATED } from "../../../background/stop.js";
|
|
8
|
+
import { clip, display, mapSandboxError, noSandboxError, runTimeLeftMs, sandboxBaseTimeoutMs, sandboxConversationOf, sandboxUsable, unavailableWhenNoSandbox, } from "./common.js";
|
|
9
|
+
/** How long `TaskOutput` waits with `block` when `timeout` is not given (ms). */
|
|
10
|
+
export const TASK_OUTPUT_DEFAULT_TIMEOUT_MS = 30_000;
|
|
11
|
+
/** The longest `TaskOutput` wait (ms). */
|
|
12
|
+
export const TASK_OUTPUT_MAX_TIMEOUT_MS = 600_000;
|
|
13
|
+
/** How often a blocking `TaskOutput` checks the task (each check a short exec of its own). */
|
|
14
|
+
export const TASK_CHECK_INTERVAL_MS = 2000;
|
|
15
|
+
/** The time limit of one check or read exec. */
|
|
16
|
+
const READ_EXEC_TIMEOUT_MS = 30_000;
|
|
17
|
+
const SPEC = {
|
|
18
|
+
name: "TaskOutput",
|
|
19
|
+
// Display only (the tool row; not in the fingerprint, never sent to the model).
|
|
20
|
+
keyArgs: ["task_id"],
|
|
21
|
+
description: "Read the status and output of a background task started with Bash and run_in_background. " +
|
|
22
|
+
"The result has the status (running, completed, failed, stopped, timed out or lost), the " +
|
|
23
|
+
"exit code and the elapsed time, then the output the task wrote since the last TaskOutput " +
|
|
24
|
+
"call for it. With block (the default) it waits until the task finishes or timeout " +
|
|
25
|
+
"milliseconds pass, checking every 2 seconds; prefer this over sleeping in Bash. Each call " +
|
|
26
|
+
"returns a bounded slice of new output; the task's whole output file (its path is in the Bash " +
|
|
27
|
+
"result) can also be read with Read. You are told when a task finishes, so there is no need " +
|
|
28
|
+
"to poll for that.",
|
|
29
|
+
inputSchema: {
|
|
30
|
+
type: "object",
|
|
31
|
+
properties: {
|
|
32
|
+
task_id: {
|
|
33
|
+
type: "string",
|
|
34
|
+
minLength: 1,
|
|
35
|
+
description: "The id of the background task (bt_...) that Bash returned.",
|
|
36
|
+
},
|
|
37
|
+
block: {
|
|
38
|
+
type: "boolean",
|
|
39
|
+
description: "Whether to wait for the task to finish. Default true.",
|
|
40
|
+
},
|
|
41
|
+
timeout: {
|
|
42
|
+
type: "number",
|
|
43
|
+
minimum: 0,
|
|
44
|
+
maximum: TASK_OUTPUT_MAX_TIMEOUT_MS,
|
|
45
|
+
description: `Milliseconds to wait at most when block is true. Default ${TASK_OUTPUT_DEFAULT_TIMEOUT_MS}, at most ${TASK_OUTPUT_MAX_TIMEOUT_MS}; never past the run's own time limit.`,
|
|
46
|
+
},
|
|
47
|
+
},
|
|
48
|
+
required: ["task_id"],
|
|
49
|
+
additionalProperties: false,
|
|
50
|
+
},
|
|
51
|
+
};
|
|
52
|
+
/**
|
|
53
|
+
* The task tools' dependencies; throws the tool's error when they are missing, or when the
|
|
54
|
+
* conversation's environment cannot run (no cloud provider, and not a registered `@device` one:
|
|
55
|
+
* ruling R8).
|
|
56
|
+
*/
|
|
57
|
+
export async function taskEnv(deps, ctx) {
|
|
58
|
+
if (!(await sandboxUsable(deps, ctx.orgId, sandboxConversationOf(ctx))))
|
|
59
|
+
throw noSandboxError();
|
|
60
|
+
const { background, tasks } = deps;
|
|
61
|
+
if (!background || !tasks || !deps.sandbox.ifRunning) {
|
|
62
|
+
throw new ToolError("Background tasks are not available here; use Bash without run_in_background instead.");
|
|
63
|
+
}
|
|
64
|
+
return {
|
|
65
|
+
store: background,
|
|
66
|
+
tasks,
|
|
67
|
+
ifRunning: deps.sandbox.ifRunning.bind(deps.sandbox),
|
|
68
|
+
environments: deps.environments,
|
|
69
|
+
log: deps.log,
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
const notFound = (id) => new ToolError(`No background task ${clip(id, 40)} in this conversation. Pass a task id that Bash with run_in_background returned in this conversation.`);
|
|
73
|
+
/**
|
|
74
|
+
* The task `id` when it belongs to the calling conversation; a task of another conversation (a
|
|
75
|
+
* sub-agent's, when called from its parent) is not found, the same as an unknown id.
|
|
76
|
+
*/
|
|
77
|
+
export async function ownedTask(env, ctx, id) {
|
|
78
|
+
if (!TASK_ID_RE.test(id))
|
|
79
|
+
throw notFound(id);
|
|
80
|
+
const task = await env.store.get(id);
|
|
81
|
+
if (!task || task.conversationId !== ctx.conversationId)
|
|
82
|
+
throw notFound(id);
|
|
83
|
+
return task;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* The per-call access re-check of every sandbox tool (`inSandbox`): the conversation's environment
|
|
87
|
+
* may still be used by its owner. The task tools read a task's own instance without `inSandbox`,
|
|
88
|
+
* so they check here first; errors become the tools' errors.
|
|
89
|
+
*/
|
|
90
|
+
export async function recheckEnvironment(env, ctx) {
|
|
91
|
+
try {
|
|
92
|
+
await env.environments.forTool(ctx.orgId, sandboxConversationOf(ctx));
|
|
93
|
+
}
|
|
94
|
+
catch (e) {
|
|
95
|
+
throw mapSandboxError(e, env.log);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* `ifRunning` on the task's own environment instance (its execs act for the task's trigger in its
|
|
100
|
+
* conversation); sandbox errors become the tools' errors. A task from before environments has no
|
|
101
|
+
* instance (`not_running`).
|
|
102
|
+
*/
|
|
103
|
+
export async function onTaskInstance(env, task, fn, signal) {
|
|
104
|
+
if (task.environmentId === null)
|
|
105
|
+
return { kind: "not_running", status: "gone" };
|
|
106
|
+
try {
|
|
107
|
+
return await env.ifRunning(task.environmentId, { createdAt: task.sandboxCreatedAt }, (p, h, sig) => fn(actingAs(p, taskActor(task)), h, sig), signal);
|
|
108
|
+
}
|
|
109
|
+
catch (e) {
|
|
110
|
+
throw mapSandboxError(e, env.log);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* The task's status line: `Status: running (2m05s)`, `Status: failed, exit code 3, after 4m12s`,
|
|
115
|
+
* `Status: stopped after 1m00s`, `Status: lost (the sandbox was suspended) after 3s`.
|
|
116
|
+
*/
|
|
117
|
+
export function statusLine(task, now = new Date()) {
|
|
118
|
+
const end = task.status === "running" ? now : (task.finishedAt ?? now);
|
|
119
|
+
const elapsed = formatElapsed(end.getTime() - task.startedAt.getTime());
|
|
120
|
+
if (task.status === "running")
|
|
121
|
+
return `Status: running (${elapsed})`;
|
|
122
|
+
let s = `Status: ${task.status === "timed_out" ? "timed out" : task.status}`;
|
|
123
|
+
if (task.lostReason !== null)
|
|
124
|
+
s += ` (${lostReasonText(task.lostReason)})`;
|
|
125
|
+
if (task.exitCode !== null)
|
|
126
|
+
return `${s}, exit code ${task.exitCode}, after ${elapsed}`;
|
|
127
|
+
return `${s} after ${elapsed}`;
|
|
128
|
+
}
|
|
129
|
+
/** The absolute path of the task's output file, as the model sees it. */
|
|
130
|
+
export const outputFile = (task) => taskOutputFile(task.outputPath);
|
|
131
|
+
/** Why the output cannot be read: the task's sandbox instance is not running. */
|
|
132
|
+
export function unavailableText(task, r) {
|
|
133
|
+
if (r.kind === "not_running" && r.status === "suspended") {
|
|
134
|
+
return `[Output unavailable: the sandbox is suspended. Read ${outputFile(task)} resumes it and reads what the task wrote.]`;
|
|
135
|
+
}
|
|
136
|
+
return "[Output unavailable: the sandbox that ran this task is gone, and its output with it.]";
|
|
137
|
+
}
|
|
138
|
+
// ---- reading a task ----
|
|
139
|
+
/**
|
|
140
|
+
* The exec that checks and reads task `t` (relative to the workspace root): for a running task first
|
|
141
|
+
* its status line (the poller's, {@link pollScript}: liveness, then the exit file), then
|
|
142
|
+
* `size <bytes>` and `out <base64>`, at most `cap` bytes of the output from byte `offset` on.
|
|
143
|
+
* The file is never read whole: `tail -c +<offset+1> | head -c <cap>`. Without `read` only the
|
|
144
|
+
* status line.
|
|
145
|
+
*/
|
|
146
|
+
export function taskReadScript(t, offset, cap, read = true) {
|
|
147
|
+
if (!TASK_ID_RE.test(t.id))
|
|
148
|
+
throw new Error(`invalid background task id: ${t.id}`);
|
|
149
|
+
const lines = [];
|
|
150
|
+
if (t.running && t.sid !== null)
|
|
151
|
+
lines.push(pollScript([{ id: t.id, sid: t.sid }]));
|
|
152
|
+
if (read) {
|
|
153
|
+
const f = `${TASKS_DIR}/${t.id}.out`;
|
|
154
|
+
const from = Math.max(0, Math.floor(offset)) + 1;
|
|
155
|
+
const n = Math.max(1, Math.floor(cap));
|
|
156
|
+
lines.push(`s=$({ wc -c < ${f}; } 2>/dev/null | tr -d ' '); echo "size \${s:-0}"`);
|
|
157
|
+
lines.push(`printf 'out '; { tail -c +${from} ${f} 2>/dev/null | head -c ${n} | base64 | tr -d '\\n'; }; echo`);
|
|
158
|
+
}
|
|
159
|
+
return lines.join("\n");
|
|
160
|
+
}
|
|
161
|
+
function parseRead(id, stdout) {
|
|
162
|
+
const size = /^size ([0-9]+)$/m.exec(stdout);
|
|
163
|
+
const out = /^out ?([A-Za-z0-9+/=]*)$/m.exec(stdout);
|
|
164
|
+
return {
|
|
165
|
+
report: parsePollOutput(stdout).get(id),
|
|
166
|
+
size: size ? Number(size[1]) : 0,
|
|
167
|
+
data: Buffer.from(out?.[1] ?? "", "base64"),
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* The bytes of `buf` up to its last whole UTF-8 character: a character cut by the read's cap is
|
|
172
|
+
* left for the next read.
|
|
173
|
+
*/
|
|
174
|
+
export function wholeUtf8Length(buf) {
|
|
175
|
+
let i = buf.length - 1;
|
|
176
|
+
let back = 0;
|
|
177
|
+
while (i >= 0 && back < 3 && (buf[i] & 0xc0) === 0x80) {
|
|
178
|
+
i--;
|
|
179
|
+
back++;
|
|
180
|
+
}
|
|
181
|
+
if (i < 0)
|
|
182
|
+
return buf.length;
|
|
183
|
+
const b = buf[i];
|
|
184
|
+
const need = b >= 0xf0 ? 4 : b >= 0xe0 ? 3 : b >= 0xc0 ? 2 : 1;
|
|
185
|
+
return i + need > buf.length ? i : buf.length;
|
|
186
|
+
}
|
|
187
|
+
/** Checks (and with `read`, reads) the task in its sandbox instance; never creates or resumes one. */
|
|
188
|
+
async function look(env, task, read, signal) {
|
|
189
|
+
if (task.sid !== null && !SID_RE.test(task.sid)) {
|
|
190
|
+
throw new Error(`invalid background task session: ${task.sid}`);
|
|
191
|
+
}
|
|
192
|
+
const script = taskReadScript({ id: task.id, sid: task.sid, running: task.status === "running" }, read?.offset ?? 0, read?.cap ?? 1, read !== null);
|
|
193
|
+
const maxBytes = Math.ceil((read?.cap ?? 0) / 3) * 4 + 64 * 1024;
|
|
194
|
+
return onTaskInstance(env, task, async (p, h, sig) => {
|
|
195
|
+
const r = await p.exec(h, {
|
|
196
|
+
command: script,
|
|
197
|
+
cwd: rootsOf(h).workspace,
|
|
198
|
+
timeoutMs: READ_EXEC_TIMEOUT_MS,
|
|
199
|
+
maxOutputBytes: maxBytes,
|
|
200
|
+
signal: sig,
|
|
201
|
+
});
|
|
202
|
+
if (r.exitCode !== 0 || r.truncated) {
|
|
203
|
+
throw new ToolError(`Background task ${task.id} could not be read (exit ${r.exitCode}${r.truncated ? ", output truncated" : ""}); retry TaskOutput, or Read ${outputFile(task)}.`);
|
|
204
|
+
}
|
|
205
|
+
return parseRead(task.id, r.stdout);
|
|
206
|
+
}, signal);
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* How `seen` shows the running `task` ended (an exit file, no process left, its sandbox instance
|
|
210
|
+
* not running), or null while it runs (or when the row is no longer running).
|
|
211
|
+
*/
|
|
212
|
+
function endOf(task, seen) {
|
|
213
|
+
if (task.status !== "running")
|
|
214
|
+
return null;
|
|
215
|
+
if (seen.kind === "not_running") {
|
|
216
|
+
return { to: notRunningAs(seen.status, seen.status === "suspended"), lastLines: "" };
|
|
217
|
+
}
|
|
218
|
+
if (seen.kind === "other_instance")
|
|
219
|
+
return { to: RECREATED, lastLines: "" };
|
|
220
|
+
const r = seen.value.report;
|
|
221
|
+
const to = r ? polledAs(task, r, new Date()) : null;
|
|
222
|
+
return to === null ? null : { to, lastLines: r?.lastLines ?? "" };
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Finishes the task as `end` says, marked reported: called only once nothing can fail before the
|
|
226
|
+
* result reaches the model, so a reported finish is one the model saw. A task a stop claimed is
|
|
227
|
+
* left to the stop. Returns the task's row afterwards.
|
|
228
|
+
*/
|
|
229
|
+
async function settle(env, task, end) {
|
|
230
|
+
if (end === null)
|
|
231
|
+
return task;
|
|
232
|
+
await env.tasks.finisher.finish(task, end.to, end.lastLines, true, { unclaimed: true });
|
|
233
|
+
return (await env.store.get(task.id)) ?? task;
|
|
234
|
+
}
|
|
235
|
+
/** {@link look}, with a `SandboxGoneError` from the exec as null (the instance is gone). */
|
|
236
|
+
async function lookOrGone(env, task, read, signal) {
|
|
237
|
+
try {
|
|
238
|
+
return await look(env, task, read, signal);
|
|
239
|
+
}
|
|
240
|
+
catch (e) {
|
|
241
|
+
if (isSandboxGoneError(e))
|
|
242
|
+
return null;
|
|
243
|
+
throw e;
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Built-in `TaskOutput` (spec 2026-11-05-background-bash-design §2.2): a task's status and the
|
|
248
|
+
* output since this conversation's last read of it. Every check is a short exec through
|
|
249
|
+
* `SandboxService.ifRunning` on the task's own sandbox instance: it never creates or resumes a
|
|
250
|
+
* sandbox, so a suspended or rebuilt one means the task is lost (its output unavailable). With
|
|
251
|
+
* `block`, checks every {@link TASK_CHECK_INTERVAL_MS}, each under a lease of its own, until the
|
|
252
|
+
* task ends or the wait (at most `timeout` and the run's time left) is over; the checks only
|
|
253
|
+
* detect the end, and the one read that makes the result finishes the task (reported). The output
|
|
254
|
+
* read is capped at `tools.outputSpillChars` bytes; the pipeline spills the result beyond that.
|
|
255
|
+
*/
|
|
256
|
+
export function taskOutputTool(deps) {
|
|
257
|
+
return {
|
|
258
|
+
spec: SPEC,
|
|
259
|
+
defaultPolicy: "allow",
|
|
260
|
+
unavailable: unavailableWhenNoSandbox(deps),
|
|
261
|
+
timeoutMs: (input) => {
|
|
262
|
+
const { block, timeout } = input;
|
|
263
|
+
const wait = block === false
|
|
264
|
+
? 0
|
|
265
|
+
: Math.min(timeout ?? TASK_OUTPUT_DEFAULT_TIMEOUT_MS, TASK_OUTPUT_MAX_TIMEOUT_MS);
|
|
266
|
+
return wait + sandboxBaseTimeoutMs(deps.config.get());
|
|
267
|
+
},
|
|
268
|
+
async run(input, ctx) {
|
|
269
|
+
const { task_id, block = true, timeout } = input;
|
|
270
|
+
const env = await taskEnv(deps, ctx);
|
|
271
|
+
let task = await ownedTask(env, ctx, task_id);
|
|
272
|
+
await recheckEnvironment(env, ctx);
|
|
273
|
+
if (block && task.status === "running") {
|
|
274
|
+
const wait = Math.max(0, Math.min(timeout ?? TASK_OUTPUT_DEFAULT_TIMEOUT_MS, TASK_OUTPUT_MAX_TIMEOUT_MS, runTimeLeftMs(ctx.runDeadline)));
|
|
275
|
+
const until = Date.now() + wait;
|
|
276
|
+
// no check right before the final read: the loop ends when the wait does
|
|
277
|
+
while (task.status === "running" && Date.now() < until) {
|
|
278
|
+
if (task.sandboxCreatedAt !== null) {
|
|
279
|
+
const seen = await lookOrGone(env, task, null, ctx.signal);
|
|
280
|
+
if (seen === null || endOf(task, seen) !== null)
|
|
281
|
+
break;
|
|
282
|
+
}
|
|
283
|
+
const left = until - Date.now();
|
|
284
|
+
if (left <= 0)
|
|
285
|
+
break;
|
|
286
|
+
await sleep(Math.min(TASK_CHECK_INTERVAL_MS, left), undefined, { signal: ctx.signal });
|
|
287
|
+
task = (await env.store.get(task.id)) ?? task;
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
if (task.sandboxCreatedAt === null) {
|
|
291
|
+
// a reservation still launching, or a launch that failed: nothing ran
|
|
292
|
+
return result(task, [
|
|
293
|
+
statusLine(task),
|
|
294
|
+
task.status === "running"
|
|
295
|
+
? "[The task is still starting; no output yet.]"
|
|
296
|
+
: "[No output: the command never started.]",
|
|
297
|
+
]);
|
|
298
|
+
}
|
|
299
|
+
const offset = task.readOffset;
|
|
300
|
+
const cap = deps.config.get().tools.outputSpillChars;
|
|
301
|
+
const seen = await lookOrGone(env, task, { offset, cap }, ctx.signal);
|
|
302
|
+
if (seen === null) {
|
|
303
|
+
return result(task, [statusLine(task), unavailableText(task, { kind: "other_instance" })]);
|
|
304
|
+
}
|
|
305
|
+
const end = endOf(task, seen);
|
|
306
|
+
if (seen.kind !== "ran") {
|
|
307
|
+
task = await settle(env, task, end);
|
|
308
|
+
return result(task, [statusLine(task), unavailableText(task, seen)]);
|
|
309
|
+
}
|
|
310
|
+
const { data, size } = seen.value;
|
|
311
|
+
// an ended task's output is complete: only a read cut by the cap can end inside a character
|
|
312
|
+
const ended = task.status !== "running" || end !== null;
|
|
313
|
+
const used = ended && data.length < cap ? data.length : wholeUtf8Length(data);
|
|
314
|
+
if (used > 0)
|
|
315
|
+
await env.store.advanceOffset(task.id, offset + used);
|
|
316
|
+
task = await settle(env, task, end);
|
|
317
|
+
const parts = [];
|
|
318
|
+
const more = size - (offset + used);
|
|
319
|
+
if (more > 0) {
|
|
320
|
+
parts.push(`[${more} more bytes of output after this; call TaskOutput again to read them, or Read ${outputFile(task)}.]`);
|
|
321
|
+
}
|
|
322
|
+
parts.push(used === 0 ? "[No new output.]" : data.subarray(0, used).toString("utf8"));
|
|
323
|
+
return result(task, [statusLine(task), ...parts]);
|
|
324
|
+
},
|
|
325
|
+
};
|
|
326
|
+
}
|
|
327
|
+
function result(task, lines) {
|
|
328
|
+
const d = clip(task.description, 120);
|
|
329
|
+
return {
|
|
330
|
+
content: [{ type: "text", text: lines.join("\n") }],
|
|
331
|
+
isError: false,
|
|
332
|
+
display: display(`读取后台任务输出:${d}`, `Read background task output: ${d}`),
|
|
333
|
+
};
|
|
334
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { BuiltinTool } from "../../registry.js";
|
|
2
|
+
import { type SandboxToolDeps } from "./common.js";
|
|
3
|
+
/**
|
|
4
|
+
* Built-in `TaskStop` (spec 2026-11-05-background-bash-design §2.3): stops one of this
|
|
5
|
+
* conversation's background tasks through `BackgroundTaskStopper` (SIGTERM to its session, SIGKILL
|
|
6
|
+
* after 5 s, never creating or resuming a sandbox). A task that had already finished is not an
|
|
7
|
+
* error; a reservation still launching, or a task another stop already claimed, is reported as
|
|
8
|
+
* stopping. A stop that failed leaves the task running and is an error the model can retry.
|
|
9
|
+
*/
|
|
10
|
+
export declare function taskStopTool(deps: SandboxToolDeps): BuiltinTool;
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { rootsOf, ToolError } from "@capybara-hq/plugin-sdk";
|
|
2
|
+
import { decodeTail, tailCommand } from "../../../background/session.js";
|
|
3
|
+
import { clip, display, mapSandboxError, sandboxBaseTimeoutMs, unavailableWhenNoSandbox, } from "./common.js";
|
|
4
|
+
import { onTaskInstance, ownedTask, recheckEnvironment, statusLine, taskEnv, } from "./task-output.js";
|
|
5
|
+
/** The time limit of reading a stopped task's last lines. */
|
|
6
|
+
const TAIL_EXEC_TIMEOUT_MS = 10_000;
|
|
7
|
+
const SPEC = {
|
|
8
|
+
name: "TaskStop",
|
|
9
|
+
// Display only (the tool row; not in the fingerprint, never sent to the model).
|
|
10
|
+
keyArgs: ["task_id"],
|
|
11
|
+
description: "Stop a background task started with Bash and run_in_background: every process of the task " +
|
|
12
|
+
"gets SIGTERM, then SIGKILL after 5 seconds. The result has the final status and the last " +
|
|
13
|
+
"lines of output. Stopping a task that has already finished is not an error; the result says " +
|
|
14
|
+
"so. A conversation can stop only its own tasks.",
|
|
15
|
+
inputSchema: {
|
|
16
|
+
type: "object",
|
|
17
|
+
properties: {
|
|
18
|
+
task_id: {
|
|
19
|
+
type: "string",
|
|
20
|
+
minLength: 1,
|
|
21
|
+
description: "The id of the background task (bt_...) that Bash returned.",
|
|
22
|
+
},
|
|
23
|
+
},
|
|
24
|
+
required: ["task_id"],
|
|
25
|
+
additionalProperties: false,
|
|
26
|
+
},
|
|
27
|
+
};
|
|
28
|
+
/** The task's last 20 lines, read from its own sandbox instance; null when that is not running. */
|
|
29
|
+
async function lastLinesOf(env, task, signal) {
|
|
30
|
+
if (task.sandboxCreatedAt === null)
|
|
31
|
+
return null;
|
|
32
|
+
try {
|
|
33
|
+
const r = await onTaskInstance(env, task, async (p, h, sig) => {
|
|
34
|
+
const res = await p.exec(h, {
|
|
35
|
+
command: tailCommand(task.id),
|
|
36
|
+
cwd: rootsOf(h).workspace,
|
|
37
|
+
timeoutMs: TAIL_EXEC_TIMEOUT_MS,
|
|
38
|
+
maxOutputBytes: 64 * 1024,
|
|
39
|
+
signal: sig,
|
|
40
|
+
});
|
|
41
|
+
return res.exitCode === 0 ? decodeTail(res.stdout) : null;
|
|
42
|
+
}, signal);
|
|
43
|
+
return r.kind === "ran" ? r.value : null;
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
// the task is stopped either way; only its last lines are missing
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
/** The result text: what happened, the status line and the last lines. */
|
|
51
|
+
async function ended(env, task, what, signal) {
|
|
52
|
+
const lines = await lastLinesOf(env, task, signal);
|
|
53
|
+
const tail = task.sandboxCreatedAt === null
|
|
54
|
+
? "[No output: the command never started.]"
|
|
55
|
+
: lines === null
|
|
56
|
+
? "[Last lines unavailable: the sandbox that ran this task is not running.]"
|
|
57
|
+
: lines === ""
|
|
58
|
+
? "[No output.]"
|
|
59
|
+
: `Last lines:\n${lines.replace(/\n$/, "")}`;
|
|
60
|
+
return text(task, `Background task ${task.id} ("${task.description}") ${what}.\n${statusLine(task)}\n${tail}`);
|
|
61
|
+
}
|
|
62
|
+
function text(task, body) {
|
|
63
|
+
const d = clip(task.description, 120);
|
|
64
|
+
return {
|
|
65
|
+
content: [{ type: "text", text: body }],
|
|
66
|
+
isError: false,
|
|
67
|
+
display: display(`停止后台任务:${d}`, `Stop background task: ${d}`),
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Built-in `TaskStop` (spec 2026-11-05-background-bash-design §2.3): stops one of this
|
|
72
|
+
* conversation's background tasks through `BackgroundTaskStopper` (SIGTERM to its session, SIGKILL
|
|
73
|
+
* after 5 s, never creating or resuming a sandbox). A task that had already finished is not an
|
|
74
|
+
* error; a reservation still launching, or a task another stop already claimed, is reported as
|
|
75
|
+
* stopping. A stop that failed leaves the task running and is an error the model can retry.
|
|
76
|
+
*/
|
|
77
|
+
export function taskStopTool(deps) {
|
|
78
|
+
return {
|
|
79
|
+
spec: SPEC,
|
|
80
|
+
defaultPolicy: "allow",
|
|
81
|
+
unavailable: unavailableWhenNoSandbox(deps),
|
|
82
|
+
timeoutMs: () => sandboxBaseTimeoutMs(deps.config.get()),
|
|
83
|
+
async run(input, ctx) {
|
|
84
|
+
const { task_id } = input;
|
|
85
|
+
const env = await taskEnv(deps, ctx);
|
|
86
|
+
const task = await ownedTask(env, ctx, task_id);
|
|
87
|
+
await recheckEnvironment(env, ctx);
|
|
88
|
+
if (task.status !== "running") {
|
|
89
|
+
return ended(env, task, "had already finished", ctx.signal);
|
|
90
|
+
}
|
|
91
|
+
let after;
|
|
92
|
+
try {
|
|
93
|
+
after = await env.tasks.stopper.stop(task, "tool", ctx.signal);
|
|
94
|
+
}
|
|
95
|
+
catch (e) {
|
|
96
|
+
const mapped = mapSandboxError(e, env.log);
|
|
97
|
+
if (mapped instanceof ToolError)
|
|
98
|
+
throw mapped;
|
|
99
|
+
const why = e instanceof Error ? e.message : String(e);
|
|
100
|
+
throw new ToolError(`Background task ${task.id} could not be stopped (${clip(why, 300)}); it keeps running. Retry TaskStop, or check the sandbox with Bash.`);
|
|
101
|
+
}
|
|
102
|
+
if (after.status === "running") {
|
|
103
|
+
return text(after, `Background task ${after.id} ("${after.description}") is stopping: it is still starting, or another stop is in progress. Call TaskOutput to see when it has ended.`);
|
|
104
|
+
}
|
|
105
|
+
const what = after.status === "stopped"
|
|
106
|
+
? "was stopped"
|
|
107
|
+
: after.status === "lost"
|
|
108
|
+
? "is lost"
|
|
109
|
+
: "had already finished";
|
|
110
|
+
return ended(env, after, what, ctx.signal);
|
|
111
|
+
},
|
|
112
|
+
};
|
|
113
|
+
}
|
|
@@ -1,26 +1,29 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ToolError } from "@capybara-hq/plugin-sdk";
|
|
2
2
|
import { lineDiff, TOOL_VIEW_DIFF_MAX_BYTES, viewPath } from "../../view.js";
|
|
3
|
-
import { checkWritable, clip, display, inSandbox, looksBinary, sandboxBaseTimeoutMs, unavailableWhenNoSandbox, withNotices, withPathLease, } from "./common.js";
|
|
3
|
+
import { checkPathShape, checkWritable, clip, display, inSandbox, looksBinary, sandboxBaseTimeoutMs, unavailableWhenNoSandbox, withNotices, withPathLease, } from "./common.js";
|
|
4
|
+
import { assertReadAndUnchanged, fileStateOf, normalizeSandboxPath, recordedFile, } from "./file-state.js";
|
|
5
|
+
import { READ_MAX_BYTES } from "./read.js";
|
|
4
6
|
const SPEC = {
|
|
5
|
-
name: "
|
|
7
|
+
name: "Write",
|
|
6
8
|
// Display only (the tool row; not in the fingerprint, never sent to the model).
|
|
7
|
-
keyArgs: ["
|
|
9
|
+
keyArgs: ["file_path"],
|
|
8
10
|
description: "Write a text file in this conversation's sandbox, creating parent directories as needed. " +
|
|
9
11
|
"Each call replaces the whole file (it is created if missing). Use it to create scripts, " +
|
|
10
|
-
"source files and data files. The path is absolute, under
|
|
11
|
-
"read-only).
|
|
12
|
-
"
|
|
12
|
+
"source files and data files. The path is absolute, under the workspace directory or the " +
|
|
13
|
+
"temporary files directory (the skills directory is read-only). Read an existing file first; overwriting a file you have not read, or one changed " +
|
|
14
|
+
"since you read it, fails. To change part of an existing file, use Edit instead; to give a file to " +
|
|
15
|
+
"the user, use Deliver.",
|
|
13
16
|
inputSchema: {
|
|
14
17
|
type: "object",
|
|
15
18
|
properties: {
|
|
16
|
-
|
|
19
|
+
file_path: {
|
|
17
20
|
type: "string",
|
|
18
21
|
minLength: 1,
|
|
19
|
-
description:
|
|
22
|
+
description: "Absolute path of the file, e.g. report.md in the workspace directory.",
|
|
20
23
|
},
|
|
21
24
|
content: { type: "string", description: "The complete new content of the file." },
|
|
22
25
|
},
|
|
23
|
-
required: ["
|
|
26
|
+
required: ["file_path", "content"],
|
|
24
27
|
additionalProperties: false,
|
|
25
28
|
},
|
|
26
29
|
};
|
|
@@ -30,58 +33,62 @@ const SPEC = {
|
|
|
30
33
|
* result carries no view.
|
|
31
34
|
*/
|
|
32
35
|
const PREVIOUS_MAX_BYTES = TOOL_VIEW_DIFF_MAX_BYTES;
|
|
36
|
+
const vanished = (path) => `${clip(path, 200)} disappeared while it was being written; retry the call.`;
|
|
33
37
|
const isDirectory = (path) => `${clip(path, 200)} is a directory; pass the path of a file inside it.`;
|
|
34
|
-
/** 内置工具 `
|
|
38
|
+
/** 内置工具 `Write`:整文件写入。 */
|
|
35
39
|
export function sandboxWriteTool(deps) {
|
|
36
40
|
return {
|
|
37
41
|
spec: SPEC,
|
|
38
42
|
defaultPolicy: "allow",
|
|
39
43
|
unavailable: unavailableWhenNoSandbox(deps),
|
|
40
|
-
timeoutMs: () => sandboxBaseTimeoutMs(deps.config()),
|
|
44
|
+
timeoutMs: () => sandboxBaseTimeoutMs(deps.config.get()),
|
|
41
45
|
async run(input, ctx) {
|
|
42
|
-
const path = checkWritable(input.path);
|
|
43
46
|
const data = new TextEncoder().encode(input.content);
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
47
|
+
checkPathShape(input.file_path, "file_path");
|
|
48
|
+
let path = "";
|
|
49
|
+
const { value, notices } = await inSandbox(deps, ctx, ({ environmentId, h, roots, p, signal }) => {
|
|
50
|
+
path = checkWritable(input.file_path, roots);
|
|
51
|
+
// stat, read the previous content, write: one holder at a time per file
|
|
52
|
+
return withPathLease(deps, { environmentId }, path, signal, async (signal) => {
|
|
53
|
+
const st = await p.stat(h, path, signal);
|
|
54
|
+
if (st?.isDir)
|
|
55
|
+
throw new ToolError(isDirectory(path));
|
|
56
|
+
// the previous content: for the read-before-write check, and the diff on the row (display
|
|
57
|
+
// only: a file too large or binary to diff just leaves the view without hunks)
|
|
58
|
+
let previous = "";
|
|
59
|
+
if (st !== null) {
|
|
60
|
+
const got = await p.readFile(h, path, { maxBytes: READ_MAX_BYTES, signal });
|
|
61
|
+
if (got === null)
|
|
62
|
+
throw new ToolError(vanished(path));
|
|
63
|
+
await assertReadAndUnchanged(deps, ctx.conversationId, path, fileStateOf(got.data, st.size));
|
|
58
64
|
previous =
|
|
59
|
-
|
|
65
|
+
st.size > PREVIOUS_MAX_BYTES ||
|
|
66
|
+
got.truncated ||
|
|
67
|
+
looksBinary(got.data) ||
|
|
68
|
+
got.data.includes(0)
|
|
60
69
|
? null
|
|
61
70
|
: new TextDecoder().decode(got.data);
|
|
62
71
|
}
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
await p.writeFile(h, path, data, signal);
|
|
70
|
-
return { existed: st !== null, previous };
|
|
71
|
-
}));
|
|
72
|
+
await p.writeFile(h, path, data, signal);
|
|
73
|
+
return { existed: st !== null, previous };
|
|
74
|
+
});
|
|
75
|
+
});
|
|
72
76
|
const { existed, previous } = value;
|
|
73
77
|
const text = `${existed ? "Overwrote" : "Created"} ${path} (${data.byteLength} bytes).`;
|
|
74
78
|
return {
|
|
75
79
|
content: [{ type: "text", text: withNotices(notices, text) }],
|
|
76
80
|
display: display(`写入 ${clip(path, 180)}`, `Wrote ${clip(path, 180)}`),
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
81
|
+
// the view always carries the file state: the next Write / Edit of the path needs it
|
|
82
|
+
view: {
|
|
83
|
+
kind: "edit",
|
|
84
|
+
path: viewPath(path),
|
|
85
|
+
created: !existed,
|
|
86
|
+
...(previous !== null
|
|
87
|
+
? lineDiff(previous, input.content)
|
|
88
|
+
: { added: 0, removed: 0, truncated: true, hunks: [] }),
|
|
89
|
+
// over the bytes the next Write / Edit reads back (Read's limit), as Read records it
|
|
90
|
+
file: recordedFile(normalizeSandboxPath(path), data.subarray(0, READ_MAX_BYTES), data.byteLength),
|
|
91
|
+
},
|
|
85
92
|
};
|
|
86
93
|
},
|
|
87
94
|
};
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import type { BuiltinTool } from "../registry.js";
|
|
3
|
+
export { SEND_MESSAGE } from "../builtin-names.js";
|
|
4
|
+
/**
|
|
5
|
+
* The `SendMessage` builtin tool (agent map spec §4.2, §5.1, §5.2): moves text between the agents
|
|
6
|
+
* of one tree. An agent sends to one of its own sub-agents by agentId (a running one reads it at its
|
|
7
|
+
* next step, an idle one starts again with its earlier context), and a sub-agent to `"parent"`.
|
|
8
|
+
* The result says the message was delivered, never the target's reply. The tool pipeline handles
|
|
9
|
+
* the call itself (`SubagentMessages`), so {@link sendMessageTool}'s `run` is only a guard.
|
|
10
|
+
*/
|
|
11
|
+
/** The input of a `SendMessage` call. */
|
|
12
|
+
export declare const SendMessageInput: z.ZodObject<{
|
|
13
|
+
to: z.ZodString;
|
|
14
|
+
message: z.ZodString;
|
|
15
|
+
}, z.core.$strict>;
|
|
16
|
+
export type SendMessageInputT = z.infer<typeof SendMessageInput>;
|
|
17
|
+
/** The target a sub-agent uses for the agent that dispatched it. */
|
|
18
|
+
export declare const PARENT_TARGET = "parent";
|
|
19
|
+
/** One valid target of a caller: a sub-agent of its own, by agentId and task label. */
|
|
20
|
+
export interface SendTarget {
|
|
21
|
+
id: string;
|
|
22
|
+
description: string;
|
|
23
|
+
}
|
|
24
|
+
/** Refusals: `isError` results written without delivering anything (model-visible). */
|
|
25
|
+
export declare const SEND_MESSAGE_REFUSALS: {
|
|
26
|
+
/**
|
|
27
|
+
* `to` is none of the caller's own sub-agents (nor `"parent"` in a sub-agent): lists the valid
|
|
28
|
+
* targets, at most the newest {@link SEND_TARGETS_LISTED} sub-agents.
|
|
29
|
+
*/
|
|
30
|
+
readonly unknownTarget: (to: string, targets: readonly SendTarget[], opts: {
|
|
31
|
+
hasParent: boolean;
|
|
32
|
+
more: number;
|
|
33
|
+
}) => string;
|
|
34
|
+
/** The sub-agent's type or org agent is no longer available to the caller (its gates). */
|
|
35
|
+
readonly notAvailable: (id: string, type: string) => string;
|
|
36
|
+
/** The limits of a send that would start an idle sub-agent again (agent map spec §6). */
|
|
37
|
+
readonly tooManyConcurrent: (n: number) => string;
|
|
38
|
+
readonly tooManyDispatches: (n: number) => string;
|
|
39
|
+
readonly budget: (n: number) => string;
|
|
40
|
+
readonly depthLimit: (maxDepth: number) => string;
|
|
41
|
+
readonly notAvailableHere: "Messages between agents are not available in this conversation.";
|
|
42
|
+
};
|
|
43
|
+
/** How many of the caller's sub-agents an unknown-target refusal lists (the newest). */
|
|
44
|
+
export declare const SEND_TARGETS_LISTED = 20;
|
|
45
|
+
/** The result of a message to a sub-agent whose run was active (agent map spec §5.1). */
|
|
46
|
+
export declare const sentToRunningText: (t: SendTarget) => string;
|
|
47
|
+
/** The result of a message that started an idle sub-agent again (agent map spec §5.1, §6). */
|
|
48
|
+
export declare const sentToIdleText: (t: SendTarget) => string;
|
|
49
|
+
/** The result of a sub-agent's note to its parent (agent map spec §5.2). */
|
|
50
|
+
export declare const SENT_TO_PARENT_TEXT = "Message delivered to the agent that dispatched you. Keep working; its reply, if any, arrives as a message in this conversation.";
|
|
51
|
+
/**
|
|
52
|
+
* The builtin. `defaultPolicy: "allow"` (agent map spec §4.2): it only moves text inside one tree
|
|
53
|
+
* the person already started. The tool pipeline handles `SendMessage` calls itself; `run` answers
|
|
54
|
+
* only when a call reaches it anyway.
|
|
55
|
+
*/
|
|
56
|
+
export declare const sendMessageTool: BuiltinTool;
|