@capybara-hq/kernel 0.1.0-rc.4 → 0.1.0-rc.6

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.
Files changed (534) hide show
  1. package/bootstrap.json +61 -5
  2. package/dist/admin/admin.controller.d.ts +51 -14
  3. package/dist/admin/admin.controller.js +60 -19
  4. package/dist/admin/extensions.controller.d.ts +16 -2
  5. package/dist/admin/extensions.controller.js +26 -6
  6. package/dist/admin/setup-lock.d.ts +1 -1
  7. package/dist/admin/setup-lock.js +1 -1
  8. package/dist/admin/setup.controller.d.ts +1 -1
  9. package/dist/admin/setup.controller.js +1 -1
  10. package/dist/admin/setup.service.d.ts +4 -4
  11. package/dist/admin/setup.service.js +8 -8
  12. package/dist/agents/agent-lookup.d.ts +16 -0
  13. package/dist/agents/agent-lookup.js +11 -0
  14. package/dist/agents/agents.controller.d.ts +76 -1
  15. package/dist/agents/agents.controller.js +90 -11
  16. package/dist/agents/agents.module.d.ts +4 -1
  17. package/dist/agents/agents.module.js +32 -6
  18. package/dist/agents/agents.service.d.ts +54 -23
  19. package/dist/agents/agents.service.js +180 -76
  20. package/dist/agents/definition.d.ts +49 -0
  21. package/dist/agents/definition.js +45 -0
  22. package/dist/agents/from-template.d.ts +106 -0
  23. package/dist/agents/from-template.js +649 -0
  24. package/dist/agents/from-template.service.d.ts +60 -0
  25. package/dist/agents/from-template.service.js +161 -0
  26. package/dist/agents/models.controller.d.ts +34 -5
  27. package/dist/agents/models.controller.js +50 -6
  28. package/dist/agents/org-templates.d.ts +176 -0
  29. package/dist/agents/org-templates.js +827 -0
  30. package/dist/agents/pending-connector-requests.d.ts +77 -0
  31. package/dist/agents/pending-connector-requests.js +215 -0
  32. package/dist/agents/pending-connectors.controller.d.ts +39 -0
  33. package/dist/agents/pending-connectors.controller.js +91 -0
  34. package/dist/agents/pending-connectors.service.d.ts +62 -0
  35. package/dist/agents/pending-connectors.service.js +282 -0
  36. package/dist/agents/readiness.controller.d.ts +5 -5
  37. package/dist/agents/readiness.controller.js +6 -6
  38. package/dist/agents/templates.controller.d.ts +86 -5
  39. package/dist/agents/templates.controller.js +171 -7
  40. package/dist/agents/templates.d.ts +127 -23
  41. package/dist/agents/templates.js +475 -52
  42. package/dist/background/background.module.js +8 -1
  43. package/dist/background/finish.d.ts +3 -2
  44. package/dist/background/launch-lock.d.ts +4 -3
  45. package/dist/background/launch-lock.js +4 -3
  46. package/dist/background/poll.job.d.ts +9 -6
  47. package/dist/background/poll.job.js +30 -22
  48. package/dist/background/session.d.ts +13 -2
  49. package/dist/background/session.js +13 -0
  50. package/dist/background/stop.d.ts +12 -6
  51. package/dist/background/stop.js +57 -39
  52. package/dist/background/store.d.ts +18 -6
  53. package/dist/background/store.js +12 -6
  54. package/dist/background/tasks.service.d.ts +15 -5
  55. package/dist/background/tasks.service.js +42 -17
  56. package/dist/background/wake-rules.d.ts +27 -18
  57. package/dist/background/wake-rules.js +52 -22
  58. package/dist/background/wake.d.ts +13 -11
  59. package/dist/background/wake.js +20 -14
  60. package/dist/catalog/admin-catalog.controller.d.ts +129 -30
  61. package/dist/catalog/admin-catalog.controller.js +213 -42
  62. package/dist/catalog/catalog-content.d.ts +58 -32
  63. package/dist/catalog/catalog-content.js +34 -8
  64. package/dist/catalog/catalog-import.module.d.ts +7 -0
  65. package/dist/catalog/catalog-import.module.js +60 -0
  66. package/dist/catalog/catalog-items.d.ts +111 -7
  67. package/dist/catalog/catalog-items.js +279 -13
  68. package/dist/catalog/catalog-scope.service.d.ts +260 -0
  69. package/dist/catalog/catalog-scope.service.js +1116 -0
  70. package/dist/catalog/catalog.module.d.ts +7 -9
  71. package/dist/catalog/catalog.module.js +41 -31
  72. package/dist/catalog/catalog.service.d.ts +101 -29
  73. package/dist/catalog/catalog.service.js +104 -106
  74. package/dist/catalog/cli.d.ts +11 -1
  75. package/dist/catalog/cli.js +26 -1
  76. package/dist/catalog/component-promotion.d.ts +96 -0
  77. package/dist/catalog/component-promotion.js +395 -0
  78. package/dist/catalog/component-scope.controller.d.ts +152 -0
  79. package/dist/catalog/component-scope.controller.js +287 -0
  80. package/dist/catalog/component-scope.service.d.ts +303 -0
  81. package/dist/catalog/component-scope.service.js +936 -0
  82. package/dist/catalog/component-state.d.ts +174 -0
  83. package/dist/catalog/component-state.js +437 -0
  84. package/dist/catalog/job-ids.d.ts +30 -0
  85. package/dist/catalog/job-ids.js +25 -0
  86. package/dist/catalog/marketplace-fetch.d.ts +1 -1
  87. package/dist/catalog/marketplaces.controller.d.ts +22 -5
  88. package/dist/catalog/marketplaces.controller.js +56 -7
  89. package/dist/catalog/marketplaces.service.d.ts +54 -14
  90. package/dist/catalog/marketplaces.service.js +71 -22
  91. package/dist/catalog/org-catalog.controller.d.ts +125 -34
  92. package/dist/catalog/org-catalog.controller.js +181 -65
  93. package/dist/catalog/org-catalog.service.d.ts +65 -33
  94. package/dist/catalog/org-catalog.service.js +324 -157
  95. package/dist/catalog/org-extension-switch.d.ts +41 -0
  96. package/dist/catalog/org-extension-switch.js +115 -0
  97. package/dist/catalog/org-extension.controller.d.ts +119 -0
  98. package/dist/catalog/org-extension.controller.js +266 -0
  99. package/dist/catalog/org-plugin-uploads.controller.d.ts +98 -0
  100. package/dist/catalog/org-plugin-uploads.controller.js +213 -0
  101. package/dist/catalog/org-plugin-uploads.d.ts +63 -0
  102. package/dist/catalog/org-plugin-uploads.js +116 -0
  103. package/dist/catalog/owned-items.d.ts +184 -0
  104. package/dist/catalog/owned-items.js +789 -0
  105. package/dist/catalog/owned-plugin-cleanup.d.ts +56 -0
  106. package/dist/catalog/owned-plugin-cleanup.js +194 -0
  107. package/dist/catalog/ownership.d.ts +172 -0
  108. package/dist/catalog/ownership.js +326 -0
  109. package/dist/catalog/platform-components.d.ts +221 -0
  110. package/dist/catalog/platform-components.js +761 -0
  111. package/dist/catalog/platform-migration.d.ts +115 -0
  112. package/dist/catalog/platform-migration.js +582 -0
  113. package/dist/catalog/plugin-import.d.ts +178 -34
  114. package/dist/catalog/plugin-import.js +622 -82
  115. package/dist/catalog/plugin-install.d.ts +185 -41
  116. package/dist/catalog/plugin-install.js +758 -126
  117. package/dist/catalog/plugin-upgrade.d.ts +260 -225
  118. package/dist/catalog/plugin-upgrade.js +1147 -1136
  119. package/dist/catalog/request-rules.d.ts +65 -0
  120. package/dist/catalog/request-rules.js +217 -0
  121. package/dist/catalog/requests.service.d.ts +193 -118
  122. package/dist/catalog/requests.service.js +526 -343
  123. package/dist/catalog/reserved-names.d.ts +8 -0
  124. package/dist/catalog/reserved-names.js +42 -0
  125. package/dist/catalog/scope-orgs.d.ts +21 -0
  126. package/dist/catalog/scope-orgs.js +67 -0
  127. package/dist/catalog/scope-state.d.ts +35 -0
  128. package/dist/catalog/scope-state.js +87 -0
  129. package/dist/catalog/scope-sync-workers.d.ts +7 -0
  130. package/dist/catalog/scope-sync-workers.js +29 -0
  131. package/dist/catalog/scope-sync.d.ts +176 -0
  132. package/dist/catalog/scope-sync.js +576 -0
  133. package/dist/catalog/scope.d.ts +42 -0
  134. package/dist/catalog/scope.js +42 -0
  135. package/dist/catalog/unshare.d.ts +22 -0
  136. package/dist/catalog/unshare.js +118 -0
  137. package/dist/channels/actions.js +1 -0
  138. package/dist/channels/cards.js +20 -2
  139. package/dist/channels/channels.module.js +2 -0
  140. package/dist/channels/inbound.d.ts +9 -1
  141. package/dist/channels/inbound.js +67 -5
  142. package/dist/channels/phrases.d.ts +35 -0
  143. package/dist/channels/phrases.js +29 -0
  144. package/dist/config/docs.js +3 -1
  145. package/dist/config/schema.d.ts +10 -2
  146. package/dist/config/schema.js +70 -22
  147. package/dist/conversations/access.d.ts +6 -4
  148. package/dist/conversations/access.js +27 -5
  149. package/dist/conversations/agent-tree.d.ts +46 -0
  150. package/dist/conversations/agent-tree.js +92 -0
  151. package/dist/conversations/conversations.controller.d.ts +43 -18
  152. package/dist/conversations/conversations.controller.js +79 -38
  153. package/dist/conversations/conversations.module.d.ts +1 -1
  154. package/dist/conversations/conversations.module.js +7 -7
  155. package/dist/conversations/conversations.service.d.ts +73 -15
  156. package/dist/conversations/conversations.service.js +115 -35
  157. package/dist/conversations/environment-status.d.ts +24 -0
  158. package/dist/conversations/environment-status.js +71 -0
  159. package/dist/conversations/event-log.d.ts +20 -5
  160. package/dist/conversations/event-log.js +60 -0
  161. package/dist/conversations/events.d.ts +84 -2
  162. package/dist/conversations/events.js +91 -17
  163. package/dist/conversations/queue.service.d.ts +1 -1
  164. package/dist/conversations/queue.service.js +5 -0
  165. package/dist/conversations/titles.d.ts +5 -3
  166. package/dist/conversations/titles.js +21 -8
  167. package/dist/conversations/tree.d.ts +17 -0
  168. package/dist/conversations/tree.js +42 -0
  169. package/dist/ctx/create-ctx.d.ts +20 -1
  170. package/dist/ctx/create-ctx.js +38 -7
  171. package/dist/db/kernel-schema.d.ts +386 -18
  172. package/dist/environments/access.d.ts +41 -0
  173. package/dist/environments/access.js +77 -0
  174. package/dist/environments/conversation-environments.d.ts +61 -0
  175. package/dist/environments/conversation-environments.js +170 -0
  176. package/dist/environments/dto.d.ts +25 -0
  177. package/dist/environments/dto.js +12 -0
  178. package/dist/environments/environments.controller.d.ts +33 -0
  179. package/dist/environments/environments.controller.js +110 -0
  180. package/dist/environments/environments.module.d.ts +8 -0
  181. package/dist/environments/environments.module.js +27 -0
  182. package/dist/environments/environments.service.d.ts +153 -0
  183. package/dist/environments/environments.service.js +541 -0
  184. package/dist/environments/legacy-cleanup.job.d.ts +34 -0
  185. package/dist/environments/legacy-cleanup.job.js +141 -0
  186. package/dist/errors.d.ts +85 -2
  187. package/dist/errors.js +85 -2
  188. package/dist/evals/reconstruct.d.ts +18 -9
  189. package/dist/evals/reconstruct.js +26 -7
  190. package/dist/evals/run-replay.d.ts +4 -2
  191. package/dist/evals/run-replay.js +20 -6
  192. package/dist/evals/runs.service.d.ts +2 -1
  193. package/dist/evals/runs.service.js +13 -12
  194. package/dist/evals/step-replay.d.ts +4 -6
  195. package/dist/evals/step-replay.js +4 -3
  196. package/dist/evals/trajectory.service.d.ts +8 -3
  197. package/dist/evals/trajectory.service.js +26 -14
  198. package/dist/evals/worker.d.ts +5 -5
  199. package/dist/evals/worker.js +9 -3
  200. package/dist/extensions/admin-ops.d.ts +36 -10
  201. package/dist/extensions/admin-ops.js +65 -42
  202. package/dist/extensions/admin-view.d.ts +37 -10
  203. package/dist/extensions/admin-view.js +103 -20
  204. package/dist/extensions/bootstrap.d.ts +17 -4
  205. package/dist/extensions/bootstrap.js +70 -9
  206. package/dist/extensions/cli.d.ts +12 -0
  207. package/dist/extensions/cli.js +11 -2
  208. package/dist/extensions/config-hash.d.ts +10 -0
  209. package/dist/extensions/config-hash.js +38 -0
  210. package/dist/extensions/deployment-config.d.ts +28 -5
  211. package/dist/extensions/deployment-config.js +48 -7
  212. package/dist/extensions/effective-config.d.ts +127 -0
  213. package/dist/extensions/effective-config.js +368 -0
  214. package/dist/extensions/extensions.module.js +11 -11
  215. package/dist/extensions/hooks.d.ts +37 -4
  216. package/dist/extensions/hooks.js +82 -16
  217. package/dist/extensions/host.d.ts +24 -10
  218. package/dist/extensions/host.js +49 -54
  219. package/dist/extensions/installs.d.ts +20 -8
  220. package/dist/extensions/installs.js +37 -15
  221. package/dist/extensions/org-config.d.ts +75 -6
  222. package/dist/extensions/org-config.js +184 -32
  223. package/dist/extensions/org-levels.d.ts +37 -0
  224. package/dist/extensions/org-levels.js +71 -0
  225. package/dist/extensions/org-overrides.d.ts +151 -0
  226. package/dist/extensions/org-overrides.js +524 -0
  227. package/dist/extensions/permission-view.d.ts +16 -4
  228. package/dist/extensions/permission-view.js +4 -4
  229. package/dist/extensions/plugin-items.d.ts +21 -0
  230. package/dist/extensions/plugin-items.js +42 -0
  231. package/dist/extensions/point-defaults.d.ts +12 -5
  232. package/dist/extensions/point-defaults.js +37 -9
  233. package/dist/extensions/resolve.d.ts +5 -1
  234. package/dist/extensions/resolve.js +15 -2
  235. package/dist/extensions/state.module.d.ts +9 -0
  236. package/dist/extensions/state.module.js +38 -0
  237. package/dist/files/previewers.d.ts +8 -1
  238. package/dist/files/previewers.js +35 -6
  239. package/dist/http/api.module.js +25 -3
  240. package/dist/http/app.d.ts +11 -2
  241. package/dist/http/app.js +31 -5
  242. package/dist/http/plugin-dispatch.d.ts +4 -1
  243. package/dist/http/plugin-dispatch.js +14 -2
  244. package/dist/identity/accounts.d.ts +29 -29
  245. package/dist/identity/accounts.js +47 -47
  246. package/dist/identity/audit.d.ts +2 -1
  247. package/dist/identity/auth.guard.d.ts +13 -5
  248. package/dist/identity/auth.guard.js +26 -9
  249. package/dist/identity/identity.module.d.ts +1 -1
  250. package/dist/identity/identity.module.js +4 -4
  251. package/dist/identity/me.controller.js +1 -1
  252. package/dist/identity/principal.d.ts +3 -3
  253. package/dist/identity/principal.js +3 -3
  254. package/dist/identity/settings.d.ts +22 -11
  255. package/dist/identity/settings.js +53 -18
  256. package/dist/identity/{enterprise-admin.d.ts → super-admin.d.ts} +5 -5
  257. package/dist/identity/{enterprise-admin.js → super-admin.js} +24 -24
  258. package/dist/inbox/inbox.module.d.ts +4 -1
  259. package/dist/inbox/inbox.module.js +7 -3
  260. package/dist/inbox/inbox.service.d.ts +62 -3
  261. package/dist/inbox/inbox.service.js +74 -4
  262. package/dist/inbox/org-notices.d.ts +63 -0
  263. package/dist/inbox/org-notices.js +91 -0
  264. package/dist/inbox/platform-inbox.controller.d.ts +23 -0
  265. package/dist/inbox/platform-inbox.controller.js +58 -0
  266. package/dist/inbox/platform-inbox.service.d.ts +151 -0
  267. package/dist/inbox/platform-inbox.service.js +263 -0
  268. package/dist/inbox/platform-notices.d.ts +19 -0
  269. package/dist/inbox/platform-notices.js +9 -0
  270. package/dist/index.d.ts +1 -1
  271. package/dist/index.js +1 -1
  272. package/dist/infra/cli/kernel-cli.module.js +9 -1
  273. package/dist/infra/config/kernel-config.service.js +24 -1
  274. package/dist/infra/database/xact-lock.d.ts +1 -1
  275. package/dist/infra/database/xact-lock.js +1 -1
  276. package/dist/infra/events/kernel-events.d.ts +19 -2
  277. package/dist/infra/queue/add-job-once.d.ts +14 -0
  278. package/dist/infra/queue/add-job-once.js +16 -0
  279. package/dist/kernel.module.js +6 -0
  280. package/dist/lifecycle/kernel-lifecycle.d.ts +1 -1
  281. package/dist/lifecycle/kernel-lifecycle.js +4 -4
  282. package/dist/models/embeddings.d.ts +82 -0
  283. package/dist/models/embeddings.js +326 -0
  284. package/dist/models/enablement.controller.d.ts +40 -0
  285. package/dist/models/enablement.controller.js +74 -0
  286. package/dist/models/enablement.d.ts +99 -0
  287. package/dist/models/enablement.js +263 -0
  288. package/dist/models/models.module.d.ts +5 -1
  289. package/dist/models/models.module.js +16 -4
  290. package/dist/models/prices.d.ts +5 -5
  291. package/dist/models/prices.js +4 -4
  292. package/dist/models/purposes.controller.d.ts +6 -4
  293. package/dist/models/purposes.controller.js +13 -7
  294. package/dist/models/purposes.d.ts +37 -12
  295. package/dist/models/purposes.js +63 -17
  296. package/dist/orgs/directory-sync.d.ts +14 -5
  297. package/dist/orgs/directory-sync.js +41 -17
  298. package/dist/orgs/offboarding.d.ts +9 -7
  299. package/dist/orgs/offboarding.js +28 -17
  300. package/dist/orgs/org-lock.d.ts +5 -0
  301. package/dist/orgs/org-lock.js +13 -0
  302. package/dist/orgs/org.guard.d.ts +10 -0
  303. package/dist/orgs/org.guard.js +43 -32
  304. package/dist/orgs/orgs.module.js +3 -0
  305. package/dist/orgs/orgs.service.d.ts +20 -7
  306. package/dist/orgs/orgs.service.js +32 -12
  307. package/dist/orgs/roles.d.ts +1 -1
  308. package/dist/orgs/roles.js +5 -1
  309. package/dist/orgs/settings.controller.d.ts +1 -1
  310. package/dist/orgs/settings.service.d.ts +15 -3
  311. package/dist/orgs/settings.service.js +6 -2
  312. package/dist/overrides.d.ts +3 -0
  313. package/dist/overrides.js +2 -0
  314. package/dist/platform/actor.d.ts +48 -0
  315. package/dist/platform/actor.js +100 -0
  316. package/dist/platform/agent-docs.d.ts +18 -0
  317. package/dist/platform/agent-docs.js +59 -0
  318. package/dist/platform/availability.d.ts +14 -0
  319. package/dist/platform/availability.js +43 -0
  320. package/dist/platform/errors.d.ts +11 -0
  321. package/dist/platform/errors.js +26 -0
  322. package/dist/platform/exclusions.d.ts +12 -0
  323. package/dist/platform/exclusions.js +1405 -0
  324. package/dist/platform/method.d.ts +6 -0
  325. package/dist/platform/method.js +15 -0
  326. package/dist/platform/operation.d.ts +92 -0
  327. package/dist/platform/operation.js +35 -0
  328. package/dist/platform/ops/agent-templates.ops.d.ts +14 -0
  329. package/dist/platform/ops/agent-templates.ops.js +92 -0
  330. package/dist/platform/ops/agents.ops.d.ts +19 -0
  331. package/dist/platform/ops/agents.ops.js +294 -0
  332. package/dist/platform/ops/connectors.ops.d.ts +15 -0
  333. package/dist/platform/ops/connectors.ops.js +126 -0
  334. package/dist/platform/ops/errors.d.ts +11 -0
  335. package/dist/platform/ops/errors.js +22 -0
  336. package/dist/platform/ops/extensions.ops.d.ts +19 -0
  337. package/dist/platform/ops/extensions.ops.js +116 -0
  338. package/dist/platform/ops/marketplaces.ops.d.ts +16 -0
  339. package/dist/platform/ops/marketplaces.ops.js +157 -0
  340. package/dist/platform/ops/paging.d.ts +14 -0
  341. package/dist/platform/ops/paging.js +20 -0
  342. package/dist/platform/ops/platform.ops.d.ts +23 -0
  343. package/dist/platform/ops/platform.ops.js +158 -0
  344. package/dist/platform/ops/plugins.ops.d.ts +33 -0
  345. package/dist/platform/ops/plugins.ops.js +377 -0
  346. package/dist/platform/ops/requests.ops.d.ts +14 -0
  347. package/dist/platform/ops/requests.ops.js +153 -0
  348. package/dist/platform/ops/role.d.ts +4 -0
  349. package/dist/platform/ops/role.js +10 -0
  350. package/dist/platform/ops/skills.ops.d.ts +13 -0
  351. package/dist/platform/ops/skills.ops.js +98 -0
  352. package/dist/platform/ops/summary.d.ts +10 -0
  353. package/dist/platform/ops/summary.js +18 -0
  354. package/dist/platform/platform-ops.module.d.ts +7 -0
  355. package/dist/platform/platform-ops.module.js +55 -0
  356. package/dist/platform/platform.module.d.ts +8 -0
  357. package/dist/platform/platform.module.js +25 -0
  358. package/dist/platform/redact-orgs.d.ts +7 -0
  359. package/dist/platform/redact-orgs.js +52 -0
  360. package/dist/platform/registry.d.ts +30 -0
  361. package/dist/platform/registry.js +111 -0
  362. package/dist/roles/worker-role.d.ts +6 -4
  363. package/dist/roles/worker-role.js +14 -7
  364. package/dist/roles/worker.module.d.ts +1 -1
  365. package/dist/roles/worker.module.js +9 -1
  366. package/dist/runtime/context/build.d.ts +6 -4
  367. package/dist/runtime/context/build.js +26 -7
  368. package/dist/runtime/context/claude-tools.d.ts +2 -1
  369. package/dist/runtime/context/claude-tools.js +5 -4
  370. package/dist/runtime/context/compaction.js +9 -0
  371. package/dist/runtime/context/reminders.d.ts +2 -0
  372. package/dist/runtime/context/reminders.js +2 -0
  373. package/dist/runtime/context/skills.js +9 -2
  374. package/dist/runtime/context/tool-changes.d.ts +27 -0
  375. package/dist/runtime/context/tool-changes.js +60 -0
  376. package/dist/runtime/hook-calls.d.ts +8 -1
  377. package/dist/runtime/hook-calls.js +40 -7
  378. package/dist/runtime/langgraph-loop.d.ts +3 -1
  379. package/dist/runtime/langgraph-loop.js +35 -17
  380. package/dist/runtime/loop.d.ts +32 -4
  381. package/dist/runtime/maintenance.d.ts +7 -4
  382. package/dist/runtime/maintenance.js +23 -8
  383. package/dist/runtime/model-call.d.ts +38 -11
  384. package/dist/runtime/model-call.js +97 -24
  385. package/dist/runtime/providers.d.ts +146 -32
  386. package/dist/runtime/providers.js +321 -67
  387. package/dist/runtime/run-control.d.ts +11 -1
  388. package/dist/runtime/run-control.js +12 -0
  389. package/dist/runtime/run-drafts.d.ts +85 -0
  390. package/dist/runtime/run-drafts.js +230 -0
  391. package/dist/runtime/run-jobs.d.ts +3 -5
  392. package/dist/runtime/run-jobs.js +3 -7
  393. package/dist/runtime/run-queue.d.ts +37 -3
  394. package/dist/runtime/run-queue.js +188 -11
  395. package/dist/runtime/run-worker.d.ts +12 -6
  396. package/dist/runtime/run-worker.js +58 -35
  397. package/dist/runtime/runtime.module.js +3 -0
  398. package/dist/runtime/step-log.d.ts +9 -4
  399. package/dist/runtime/step-log.js +8 -5
  400. package/dist/runtime/stream.controller.d.ts +23 -1
  401. package/dist/runtime/stream.controller.js +60 -3
  402. package/dist/runtime/stream.d.ts +4 -1
  403. package/dist/runtime/stream.js +27 -3
  404. package/dist/runtime/subagents/child.d.ts +55 -7
  405. package/dist/runtime/subagents/child.js +105 -7
  406. package/dist/runtime/subagents/definition.d.ts +12 -3
  407. package/dist/runtime/subagents/definition.js +46 -32
  408. package/dist/runtime/subagents/deliveries.d.ts +71 -0
  409. package/dist/runtime/subagents/deliveries.js +228 -0
  410. package/dist/runtime/subagents/dispatch.d.ts +115 -26
  411. package/dist/runtime/subagents/dispatch.js +212 -141
  412. package/dist/runtime/subagents/limits.d.ts +24 -5
  413. package/dist/runtime/subagents/limits.js +40 -6
  414. package/dist/runtime/subagents/messages.d.ts +95 -0
  415. package/dist/runtime/subagents/messages.js +328 -0
  416. package/dist/runtime/subagents/preamble.d.ts +4 -4
  417. package/dist/runtime/subagents/preamble.js +9 -7
  418. package/dist/runtime/subagents/progress.d.ts +8 -6
  419. package/dist/runtime/subagents/progress.js +11 -6
  420. package/dist/runtime/subagents/render.d.ts +30 -0
  421. package/dist/runtime/subagents/render.js +53 -0
  422. package/dist/runtime/subagents/roster.d.ts +24 -7
  423. package/dist/runtime/subagents/roster.js +47 -11
  424. package/dist/runtime/subagents/skill-fork.d.ts +3 -2
  425. package/dist/runtime/subagents/skill-fork.js +8 -4
  426. package/dist/runtime/subagents/status.d.ts +14 -0
  427. package/dist/runtime/subagents/status.js +23 -0
  428. package/dist/runtime/subagents/subagents.service.d.ts +7 -4
  429. package/dist/runtime/subagents/subagents.service.js +11 -6
  430. package/dist/runtime/usage-report-jobs.d.ts +88 -0
  431. package/dist/runtime/usage-report-jobs.js +158 -0
  432. package/dist/runtime/usage-report.d.ts +33 -38
  433. package/dist/runtime/usage-report.js +169 -96
  434. package/dist/runtime/waits.d.ts +140 -37
  435. package/dist/runtime/waits.js +394 -106
  436. package/dist/sandbox/jobs.d.ts +40 -13
  437. package/dist/sandbox/jobs.js +57 -20
  438. package/dist/sandbox/leases.d.ts +37 -54
  439. package/dist/sandbox/leases.js +71 -115
  440. package/dist/sandbox/providers.d.ts +2 -2
  441. package/dist/sandbox/providers.js +1 -1
  442. package/dist/sandbox/sandbox.module.d.ts +3 -2
  443. package/dist/sandbox/sandbox.module.js +4 -3
  444. package/dist/sandbox/sandbox.service.d.ts +229 -134
  445. package/dist/sandbox/sandbox.service.js +630 -409
  446. package/dist/skills/catalog.d.ts +3 -2
  447. package/dist/skills/catalog.js +21 -43
  448. package/dist/skills/changes.controller.d.ts +7 -0
  449. package/dist/skills/changes.controller.js +19 -1
  450. package/dist/skills/invoke.js +8 -3
  451. package/dist/skills/package.d.ts +20 -1
  452. package/dist/skills/package.js +28 -1
  453. package/dist/skills/skills.controller.d.ts +39 -4
  454. package/dist/skills/skills.controller.js +88 -10
  455. package/dist/skills/skills.module.js +10 -1
  456. package/dist/skills/skills.service.d.ts +106 -26
  457. package/dist/skills/skills.service.js +421 -75
  458. package/dist/skills/usable.d.ts +81 -0
  459. package/dist/skills/usable.js +379 -0
  460. package/dist/tools/approvals.service.d.ts +20 -2
  461. package/dist/tools/approvals.service.js +23 -4
  462. package/dist/tools/builtin-names.d.ts +21 -5
  463. package/dist/tools/builtin-names.js +30 -5
  464. package/dist/tools/builtins/agent.d.ts +23 -21
  465. package/dist/tools/builtins/agent.js +62 -55
  466. package/dist/tools/builtins/builtin-tools.d.ts +6 -2
  467. package/dist/tools/builtins/builtin-tools.js +37 -12
  468. package/dist/tools/builtins/handback.d.ts +28 -0
  469. package/dist/tools/builtins/handback.js +53 -0
  470. package/dist/tools/builtins/platform.d.ts +34 -0
  471. package/dist/tools/builtins/platform.js +362 -0
  472. package/dist/tools/builtins/sandbox/bash.js +13 -3
  473. package/dist/tools/builtins/sandbox/common.d.ts +43 -24
  474. package/dist/tools/builtins/sandbox/common.js +80 -45
  475. package/dist/tools/builtins/sandbox/edit.js +2 -2
  476. package/dist/tools/builtins/sandbox/glob.js +2 -2
  477. package/dist/tools/builtins/sandbox/grep.js +2 -4
  478. package/dist/tools/builtins/sandbox/index.d.ts +1 -1
  479. package/dist/tools/builtins/sandbox/index.js +1 -1
  480. package/dist/tools/builtins/sandbox/read.js +1 -1
  481. package/dist/tools/builtins/sandbox/task-output.d.ts +14 -3
  482. package/dist/tools/builtins/sandbox/task-output.js +30 -5
  483. package/dist/tools/builtins/sandbox/task-stop.js +2 -1
  484. package/dist/tools/builtins/sandbox/write.js +2 -2
  485. package/dist/tools/builtins/send-message.d.ts +56 -0
  486. package/dist/tools/builtins/send-message.js +100 -0
  487. package/dist/tools/builtins/skill-load.d.ts +22 -14
  488. package/dist/tools/builtins/skill-load.js +86 -57
  489. package/dist/tools/builtins/skill-write.js +1 -1
  490. package/dist/tools/builtins/web/extract.js +5 -1
  491. package/dist/tools/builtins/web/fetch.js +1 -0
  492. package/dist/tools/builtins/web/search.js +1 -0
  493. package/dist/tools/connectors.controller.d.ts +10 -0
  494. package/dist/tools/connectors.controller.js +12 -0
  495. package/dist/tools/connectors.service.d.ts +46 -5
  496. package/dist/tools/connectors.service.js +94 -15
  497. package/dist/tools/extension-tools.controller.d.ts +14 -0
  498. package/dist/tools/extension-tools.controller.js +37 -0
  499. package/dist/tools/info.d.ts +42 -1
  500. package/dist/tools/info.js +64 -1
  501. package/dist/tools/org-tool-switches.d.ts +74 -0
  502. package/dist/tools/org-tool-switches.js +184 -0
  503. package/dist/tools/pipeline.d.ts +46 -40
  504. package/dist/tools/pipeline.js +193 -364
  505. package/dist/tools/policy.d.ts +1 -1
  506. package/dist/tools/policy.js +36 -16
  507. package/dist/tools/registry.d.ts +98 -5
  508. package/dist/tools/registry.js +87 -9
  509. package/dist/tools/tools.module.js +12 -2
  510. package/dist/ui/views.d.ts +2 -1
  511. package/dist/ui/views.js +17 -3
  512. package/package.json +3 -3
  513. package/src/migrations/0074_subagent_tree.sql +50 -0
  514. package/src/migrations/0075_plugin_scope.sql +61 -0
  515. package/src/migrations/0076_skills_created_by_nullable.sql +6 -0
  516. package/src/migrations/0077_scope_requests.sql +52 -0
  517. package/src/migrations/0078_scope_grant_switches.sql +18 -0
  518. package/src/migrations/0079_scope_live_install_switches.sql +19 -0
  519. package/src/migrations/0080_rename_enterprise_admin.sql +18 -0
  520. package/src/migrations/0081_platform_components.sql +129 -0
  521. package/src/migrations/0082_platform_migration.sql +33 -0
  522. package/src/migrations/0083_plugin_scope_sync_failures.sql +15 -0
  523. package/src/migrations/0084_org_owned_items.sql +85 -0
  524. package/src/migrations/0085_agent_templates_phase4.sql +45 -0
  525. package/src/migrations/0086_org_layering.sql +30 -0
  526. package/src/migrations/0087_approval_summary.sql +6 -0
  527. package/src/migrations/0088_environments.sql +80 -0
  528. package/src/migrations/0089_model_kinds_usage.sql +38 -0
  529. package/dist/catalog/upgrade-targets.d.ts +0 -56
  530. package/dist/catalog/upgrade-targets.js +0 -90
  531. package/dist/conversations/sandbox-status.d.ts +0 -24
  532. package/dist/conversations/sandbox-status.js +0 -52
  533. package/dist/extensions/org-config.controller.d.ts +0 -32
  534. package/dist/extensions/org-config.controller.js +0 -70
@@ -19,10 +19,13 @@ export const BUILTIN = {
19
19
  ReadToolOutput: "ReadToolOutput",
20
20
  ToolSearch: "ToolSearch",
21
21
  Agent: "Agent",
22
+ SendMessage: "SendMessage",
23
+ SubagentHandback: "SubagentHandback",
22
24
  TaskOutput: "TaskOutput",
23
25
  TaskStop: "TaskStop",
24
26
  WebSearch: "WebSearch",
25
27
  WebFetch: "WebFetch",
28
+ Platform: "Platform",
26
29
  };
27
30
  /**
28
31
  * The builtin tools that run in the conversation's sandbox. `TaskOutput` and `TaskStop` read and
@@ -61,7 +64,9 @@ export const SANDBOX_ASK_TOOL_NAMES = new Set([
61
64
  * Every builtin name. Saving an agent checks builtin refs against this list, not against what is
62
65
  * registered now, so the order the implementations land in never affects a saved definition.
63
66
  * `SkillWrite` is available only when a definition names it; `ToolSearch` and `Skill` are added
64
- * by the registry; `Agent` dispatches sub-agents and its description is built per agent.
67
+ * by the registry; `Agent` dispatches sub-agents and its description is built per agent;
68
+ * `SendMessage` and `SubagentHandback` are added by the registry ({@link SUBAGENT_MESSAGE_TOOLS}).
69
+ * `Platform` calls the platform's own operations as the run's person (Platform tool spec).
65
70
  */
66
71
  export const BUILTIN_TOOL_NAMES = [
67
72
  BUILTIN.AskUserQuestion,
@@ -71,7 +76,10 @@ export const BUILTIN_TOOL_NAMES = [
71
76
  BUILTIN.SkillWrite,
72
77
  ...SANDBOX_TOOL_NAMES,
73
78
  BUILTIN.Agent,
79
+ BUILTIN.SendMessage,
80
+ BUILTIN.SubagentHandback,
74
81
  ...WEB_TOOL_NAMES,
82
+ BUILTIN.Platform,
75
83
  ];
76
84
  /** The builtin that loads a skill (added by the registry when the log has a skills catalog). */
77
85
  export const SKILL_LOAD = BUILTIN.Skill;
@@ -79,6 +87,19 @@ export const SKILL_LOAD = BUILTIN.Skill;
79
87
  export const TOOL_SEARCH = BUILTIN.ToolSearch;
80
88
  /** The builtin that dispatches sub-agents. */
81
89
  export const AGENT_TOOL = BUILTIN.Agent;
90
+ /** The builtin that sends a message to one of the caller's sub-agents or to its parent. */
91
+ export const SEND_MESSAGE = BUILTIN.SendMessage;
92
+ /** The builtin that hands a sub-agent's report back to its parent (sub-agents only). */
93
+ export const SUBAGENT_HANDBACK = BUILTIN.SubagentHandback;
94
+ /**
95
+ * The tools between the agents of one tree (agent map spec §4.2, §4.3), added by the registry
96
+ * whatever a definition names: `SendMessage` to an agent that has `Agent` or a parent, and
97
+ * `SubagentHandback` to a sub-agent. A definition's ref to either is ignored.
98
+ */
99
+ export const SUBAGENT_MESSAGE_TOOLS = new Set([
100
+ SEND_MESSAGE,
101
+ SUBAGENT_HANDBACK,
102
+ ]);
82
103
  /**
83
104
  * Tool keys on the spec 3.6 R3 fixed list ("allowed is not confirmed"): their policy is at least
84
105
  * `ask` and remembered grants never let them through. `SkillWrite` changes shared skills.
@@ -93,12 +114,11 @@ export const R3_SHARED_AGENT_ONLY_TOOL_KEYS = new Set([
93
114
  BUILTIN.SkillWrite,
94
115
  ]);
95
116
  /**
96
- * Tools a sub-agent never gets (sub-agents spec §5.3, §5.5): `Agent` (depth 1), `AskUserQuestion`
97
- * (the person does not see the child), `Deliver` (delivering files is the parent's job) and
98
- * `SkillWrite`.
117
+ * Tools a sub-agent never gets (sub-agents spec §5.3, §5.5): `AskUserQuestion` (the person does
118
+ * not see the child), `Deliver` (delivering files is the parent's job) and `SkillWrite`. `Agent`
119
+ * is removed only from a child at `subagents.maxDepth` (agent map spec §4.1, `effectiveDefinition`).
99
120
  */
100
121
  export const CHILD_REMOVED_TOOLS = [
101
- BUILTIN.Agent,
102
122
  BUILTIN.AskUserQuestion,
103
123
  BUILTIN.Deliver,
104
124
  BUILTIN.SkillWrite,
@@ -106,10 +126,12 @@ export const CHILD_REMOVED_TOOLS = [
106
126
  /**
107
127
  * The tools of a new agent created without `tools` (`ToolSearch` is added by the registry, never
108
128
  * by a definition). Only for create requests; updates and stored versions get no defaults.
129
+ * `Platform` is on by default (Platform tool spec §3: reads are harmless, every write confirmed).
109
130
  */
110
131
  export const DEFAULT_AGENT_TOOLS = [
111
132
  { kind: "builtin", name: BUILTIN.AskUserQuestion },
112
133
  { kind: "builtin", name: BUILTIN.ReadToolOutput },
134
+ { kind: "builtin", name: BUILTIN.Platform },
113
135
  ];
114
136
  /** Kinds of the builtin tools (display only); a builtin missing here is a plain `tool`. */
115
137
  export const BUILTIN_TOOL_KINDS = {
@@ -127,8 +149,11 @@ export const BUILTIN_TOOL_KINDS = {
127
149
  [BUILTIN.SkillWrite]: "meta",
128
150
  [BUILTIN.ReadToolOutput]: "meta",
129
151
  [BUILTIN.AskUserQuestion]: "meta",
152
+ [BUILTIN.SendMessage]: "meta",
153
+ [BUILTIN.SubagentHandback]: "meta",
130
154
  [BUILTIN.WebSearch]: "search",
131
155
  [BUILTIN.WebFetch]: "read",
156
+ [BUILTIN.Platform]: "tool",
132
157
  };
133
158
  /**
134
159
  * Input fields left out when matching a replayed call with a recorded one (full-run replay), per
@@ -1,16 +1,16 @@
1
1
  import type { ToolSpec } from "@capybara-hq/plugin-sdk";
2
2
  import { z } from "zod";
3
- import type { EventPayload } from "../../conversations/events.js";
4
3
  import { type RosterEntry } from "../../runtime/subagents/roster.js";
4
+ import { type SubagentAbortedBy, type SubagentStatus } from "../../runtime/subagents/status.js";
5
5
  import type { BuiltinTool } from "../registry.js";
6
6
  export { AGENT_TOOL } from "../builtin-names.js";
7
7
  /**
8
- * The `Agent` builtin tool (sub-agents spec §4): dispatches a sub-agent. Its description is built
9
- * per parent agent version from the roster ({@link agentToolSpec}); the tool pipeline handles the
10
- * call itself (dispatch, suspend, resume), so {@link agentTool}'s `run` is only a guard.
8
+ * The `Agent` builtin tool (sub-agents spec §4, agent map spec §4.1): dispatches a sub-agent in
9
+ * the background. Its description is built per parent agent version from the roster
10
+ * ({@link agentToolSpec}); the tool pipeline handles the call itself (the dispatch writes the
11
+ * call's result, {@link agentStartedText}), so {@link agentTool}'s `run` is only a guard. The
12
+ * sub-agent's reports and its finish reach the parent as `subagent_delivery` events.
11
13
  */
12
- /** How a sub-agent's run ended (`subagent_finished.status`). */
13
- export type SubagentStatus = EventPayload<"subagent_finished">["status"];
14
14
  /** The input of an `Agent` call (§4.2). */
15
15
  export declare const AgentToolInput: z.ZodObject<{
16
16
  description: z.ZodString;
@@ -22,7 +22,6 @@ export declare const AgentToolInput: z.ZodObject<{
22
22
  inherit: "inherit";
23
23
  standard: "standard";
24
24
  }>>;
25
- resume: z.ZodOptional<z.ZodString>;
26
25
  }, z.core.$strict>;
27
26
  export type AgentToolInputT = z.infer<typeof AgentToolInput>;
28
27
  /**
@@ -37,21 +36,29 @@ export declare const AGENT_REFUSALS: {
37
36
  readonly tooManyConcurrent: (n: number) => string;
38
37
  readonly tooManyDispatches: (n: number) => string;
39
38
  readonly budget: (n: number) => string;
40
- readonly noSuchAgent: (id: string) => string;
41
- readonly stillRunning: (id: string) => string;
42
- readonly resumeWithType: "resume cannot be combined with subagent_type or model.";
39
+ readonly depthLimit: (maxDepth: number) => string;
43
40
  readonly notAvailableHere: "Sub-agents are not available in this conversation.";
44
41
  readonly agentNotAvailable: (name: string) => string;
45
42
  };
46
43
  /**
47
- * The parent run was stopped while this sub-agent worked (§4.4, §12): the result of a stopped
48
- * parent's open `Agent` call, and the text of a child stopped with its parent.
44
+ * The run was stopped while this sub-agent worked (§4.4, §12): the report of a stopped run's fork
45
+ * invocation whose sub-agent was still active (it is stopped with the run).
49
46
  */
50
47
  export declare const AGENT_STOPPED_WITH_RUN_TEXT = "The run was stopped while this sub-agent was working; it was stopped too.";
51
48
  /**
52
- * The tool result of a finished sub-agent (§4.4): the text for how its run ended, a blank line, and
53
- * the status line with its `agentId`. `ownModel`: an org agent dispatched with a `model` that was
54
- * ignored. `abortedBy: "parent"`: stopped together with the parent run (seen only in logs).
49
+ * The immediate result of an `Agent` call (agent map spec §4.1): the sub-agent runs in the
50
+ * background, its reports and its finish arrive later as notifications (`subagent_delivery`).
51
+ * `ownModel`: an org agent dispatched with a `model`, which runs on its own model instead.
52
+ */
53
+ export declare const agentStartedText: (agentId: string, opts?: {
54
+ ownModel?: boolean;
55
+ }) => string;
56
+ /**
57
+ * The result text of a finished sub-agent (§4.4): the text for how its run ended, a blank line, and
58
+ * the status line with its `agentId`. Used for a fork invocation's report (phase D); a background
59
+ * `Agent` call's sub-agent reports through `subagent_delivery` instead. `ownModel`: an org agent
60
+ * dispatched with a `model` that was ignored. `abortedBy: "parent"`: stopped together with the
61
+ * parent run.
55
62
  */
56
63
  export declare function agentResultText(r: {
57
64
  reply: string;
@@ -63,12 +70,7 @@ export declare function agentResultText(r: {
63
70
  durationMs: number;
64
71
  tokens: number;
65
72
  ownModel?: boolean;
66
- abortedBy?: "user" | "parent";
67
- /**
68
- * Phase D: the report of a person's fork invocation, whose parent need not have the `Agent`
69
- * tool: the status line leaves out the resume hint (batch 3 review m2).
70
- */
71
- noResumeHint?: boolean;
73
+ abortedBy?: SubagentAbortedBy;
72
74
  }): {
73
75
  content: string;
74
76
  isError: boolean;
@@ -1,7 +1,15 @@
1
1
  import { z } from "zod";
2
2
  import { ROSTER_DESCRIPTION_MAX } from "../../runtime/subagents/roster.js";
3
+ import { subagentStatusText, } from "../../runtime/subagents/status.js";
3
4
  import { AGENT_TOOL } from "../builtin-names.js";
4
5
  export { AGENT_TOOL } from "../builtin-names.js";
6
+ /**
7
+ * The `Agent` builtin tool (sub-agents spec §4, agent map spec §4.1): dispatches a sub-agent in
8
+ * the background. Its description is built per parent agent version from the roster
9
+ * ({@link agentToolSpec}); the tool pipeline handles the call itself (the dispatch writes the
10
+ * call's result, {@link agentStartedText}), so {@link agentTool}'s `run` is only a guard. The
11
+ * sub-agent's reports and its finish reach the parent as `subagent_delivery` events.
12
+ */
5
13
  /** The input of an `Agent` call (§4.2). */
6
14
  export const AgentToolInput = z
7
15
  .object({
@@ -9,7 +17,6 @@ export const AgentToolInput = z
9
17
  prompt: z.string().min(1).max(100_000),
10
18
  subagent_type: z.string().min(1).max(130).optional(),
11
19
  model: z.enum(["inherit", "fast", "standard", "capable"]).optional(),
12
- resume: z.string().max(64).optional(),
13
20
  })
14
21
  .strict();
15
22
  /** Display only (UI refresh B): the task name, then the type; never sent to the model. */
@@ -28,7 +35,7 @@ const INPUT_SCHEMA = {
28
35
  minLength: 1,
29
36
  maxLength: 100000,
30
37
  description: "The complete task for the sub-agent. It sees nothing else of this conversation: include " +
31
- "every fact, file path and constraint it needs, and say what its final reply must contain.",
38
+ "every fact, file path and constraint it needs, and say what its report must contain.",
32
39
  },
33
40
  subagent_type: {
34
41
  type: "string",
@@ -44,25 +51,22 @@ const INPUT_SCHEMA = {
44
51
  "integration and judgment, capable for design and final reviews. Defaults to the agent " +
45
52
  "type's own setting, else your model.",
46
53
  },
47
- resume: {
48
- type: "string",
49
- maxLength: 64,
50
- description: "The agentId from an earlier result of this tool: sends prompt to that sub-agent as a " +
51
- "follow-up, with its earlier context intact. Leave subagent_type and model unset.",
52
- },
53
54
  },
54
55
  required: ["description", "prompt"],
55
56
  additionalProperties: false,
56
57
  };
57
- /** The text before the roster (§4.3), with the concurrency limit. */
58
- const head = (maxConcurrent) => "Dispatch a sub-agent: a fresh agent with its own context that works on one task and returns its " +
59
- "final reply as this tool's result. The sub-agent sees only your prompt, not this conversation, so " +
60
- "include everything it needs and say what its final reply must contain. It shares your sandbox " +
61
- "files. You wait until it finishes. To run several at once, call this tool several times in the " +
62
- `same response (at most ${maxConcurrent} at a time); their commands run in the sandbox at the ` +
63
- "same time, so give parallel sub-agents separate files or directories. Sub-agents cannot " +
64
- "dispatch sub-agents or ask the user questions. To send a finished sub-agent a follow-up while " +
65
- "keeping its context, pass the agentId from its result as resume.\n" +
58
+ /** The text before the roster (§4.3, agent map spec §4.1), with the concurrency limit. */
59
+ const head = (maxConcurrent) => "Dispatch a sub-agent: a fresh agent with its own context that works on one task in the " +
60
+ "background. This tool returns at once with the sub-agent's agentId; keep working or end your " +
61
+ "turn, and do not wait for it. When the sub-agent hands back a report or finishes, its result " +
62
+ "arrives in this conversation as a notification. The sub-agent sees only your prompt, not this " +
63
+ "conversation, so include everything it needs and say what its report must contain. It shares " +
64
+ "your sandbox files. To run several at once, call this tool several times (at most " +
65
+ `${maxConcurrent} of your sub-agents run at a time); their commands run in the sandbox at the ` +
66
+ "same time, so give parallel sub-agents separate files or directories. To give a sub-agent more " +
67
+ "instructions while it works, or a follow-up after it finished, use SendMessage with its " +
68
+ "agentId. Sub-agents can dispatch sub-agents of their own up to the nesting limit; they cannot " +
69
+ "ask the user questions.\n" +
66
70
  "\n" +
67
71
  "Agent types (subagent_type):\n";
68
72
  /**
@@ -96,20 +100,23 @@ export function agentToolSpec(roster, maxConcurrent) {
96
100
  }
97
101
  /**
98
102
  * The static definition: the rendering for a roster of only general-purpose at the default
99
- * `subagents.maxConcurrentPerRun` (what an agent without `subagents` gets under the defaults).
103
+ * `subagents.maxConcurrentPerConversation` (what an agent without `subagents` gets under the defaults).
100
104
  * Written out as a literal for the tool design check; a test pins it equal to
101
105
  * `agentToolSpec([general-purpose], 4)`.
102
106
  */
103
107
  const SPEC = {
104
108
  name: "Agent",
105
- description: "Dispatch a sub-agent: a fresh agent with its own context that works on one task and returns its " +
106
- "final reply as this tool's result. The sub-agent sees only your prompt, not this conversation, so " +
107
- "include everything it needs and say what its final reply must contain. It shares your sandbox " +
108
- "files. You wait until it finishes. To run several at once, call this tool several times in the " +
109
- "same response (at most 4 at a time); their commands run in the sandbox at the same time, so give " +
110
- "parallel sub-agents separate files or directories. Sub-agents cannot dispatch sub-agents or ask " +
111
- "the user questions. To send a finished sub-agent a follow-up while keeping its context, pass the " +
112
- "agentId from its result as resume.\n" +
109
+ description: "Dispatch a sub-agent: a fresh agent with its own context that works on one task in the " +
110
+ "background. This tool returns at once with the sub-agent's agentId; keep working or end your " +
111
+ "turn, and do not wait for it. When the sub-agent hands back a report or finishes, its result " +
112
+ "arrives in this conversation as a notification. The sub-agent sees only your prompt, not this " +
113
+ "conversation, so include everything it needs and say what its report must contain. It shares " +
114
+ "your sandbox files. To run several at once, call this tool several times (at most 4 of your " +
115
+ "sub-agents run at a time); their commands run in the sandbox at the same time, so give " +
116
+ "parallel sub-agents separate files or directories. To give a sub-agent more instructions " +
117
+ "while it works, or a follow-up after it finished, use SendMessage with its agentId. " +
118
+ "Sub-agents can dispatch sub-agents of their own up to the nesting limit; they cannot ask the " +
119
+ "user questions.\n" +
113
120
  "\n" +
114
121
  "Agent types (subagent_type):\n" +
115
122
  "- general-purpose: a copy of you with your tools and skills, for multi-step work.",
@@ -119,18 +126,16 @@ const SPEC = {
119
126
  /** Refusals (§4.5): `isError` results written without starting anything (model-visible). */
120
127
  export const AGENT_REFUSALS = {
121
128
  unknownType: (x, roster) => `Unknown subagent_type "${x}". Available: ${roster.join(", ")}.`,
122
- tooManyConcurrent: (n) => `At most ${n} sub-agents can run at once in this run; dispatch the remaining tasks after these finish.`,
123
- tooManyDispatches: (n) => `This run has dispatched ${n} sub-agents, the limit; do the remaining work yourself.`,
124
- budget: (n) => `Sub-agents of this run have used their token budget (${count(n)} tokens); do the remaining work yourself.`,
125
- noSuchAgent: (id) => `No sub-agent with agentId "${id}" in this conversation.`,
126
- stillRunning: (id) => `Sub-agent "${id}" is still running; wait for its result before sending a follow-up.`,
127
- resumeWithType: "resume cannot be combined with subagent_type or model.",
129
+ tooManyConcurrent: (n) => `At most ${n} of your sub-agents can run at once in this conversation; dispatch the remaining tasks after one of them finishes.`,
130
+ tooManyDispatches: (n) => `${n} sub-agents have been dispatched since the user's latest message, counted across all levels of sub-agents; that is the limit, so do the remaining work yourself.`,
131
+ budget: (n) => `Sub-agents have used their token budget since the user's latest message (${count(n)} tokens, counted across all levels of sub-agents); do the remaining work yourself.`,
132
+ depthLimit: (maxDepth) => `Sub-agents can be nested at most ${maxDepth} levels deep, and you are at the deepest level; do this task yourself.`,
128
133
  notAvailableHere: "Sub-agents are not available in this conversation.",
129
134
  agentNotAvailable: (name) => `The agent "${name}" is not available to the person who started this conversation; do this task yourself or use another agent type.`,
130
135
  };
131
136
  /**
132
- * The parent run was stopped while this sub-agent worked (§4.4, §12): the result of a stopped
133
- * parent's open `Agent` call, and the text of a child stopped with its parent.
137
+ * The run was stopped while this sub-agent worked (§4.4, §12): the report of a stopped run's fork
138
+ * invocation whose sub-agent was still active (it is stopped with the run).
134
139
  */
135
140
  export const AGENT_STOPPED_WITH_RUN_TEXT = "The run was stopped while this sub-agent was working; it was stopped too.";
136
141
  /** `12345` → `12,345` (no locale data involved, so the text is the same on every replica). */
@@ -145,46 +150,50 @@ function duration(ms) {
145
150
  return `${Math.floor(s / 3600)}h ${String(Math.floor((s % 3600) / 60)).padStart(2, "0")}m`;
146
151
  }
147
152
  /**
148
- * The tool result of a finished sub-agent (§4.4): the text for how its run ended, a blank line, and
149
- * the status line with its `agentId`. `ownModel`: an org agent dispatched with a `model` that was
150
- * ignored. `abortedBy: "parent"`: stopped together with the parent run (seen only in logs).
153
+ * The immediate result of an `Agent` call (agent map spec §4.1): the sub-agent runs in the
154
+ * background, its reports and its finish arrive later as notifications (`subagent_delivery`).
155
+ * `ownModel`: an org agent dispatched with a `model`, which runs on its own model instead.
156
+ */
157
+ export const agentStartedText = (agentId, opts = {}) => `agentId: ${agentId} (running in the background)\n` +
158
+ "The sub-agent is working on the task. Its result arrives in this conversation as a " +
159
+ "notification when it hands back a report or finishes; keep working or end your turn. To send " +
160
+ "it more instructions, use SendMessage with this agentId." +
161
+ (opts.ownModel === true ? " It runs on its own model; the model you passed was ignored." : "");
162
+ /**
163
+ * The result text of a finished sub-agent (§4.4): the text for how its run ended, a blank line, and
164
+ * the status line with its `agentId`. Used for a fork invocation's report (phase D); a background
165
+ * `Agent` call's sub-agent reports through `subagent_delivery` instead. `ownModel`: an org agent
166
+ * dispatched with a `model` that was ignored. `abortedBy: "parent"`: stopped together with the
167
+ * parent run.
151
168
  */
152
169
  export function agentResultText(r) {
153
170
  const reply = r.reply.trim();
154
- let status;
171
+ const status = subagentStatusText(r.status, r);
155
172
  let text;
156
173
  let isError = true;
157
174
  switch (r.status) {
158
175
  case "completed":
159
- [status, text, isError] = ["completed", reply, false];
176
+ [text, isError] = [reply, false];
160
177
  break;
161
178
  case "max_steps":
162
- [status, text, isError] = [
163
- "stopped at the step limit; the reply may be partial",
164
- reply,
165
- false,
166
- ];
179
+ [text, isError] = [reply, false];
167
180
  break;
168
181
  case "max_duration":
169
- status = "stopped at the time limit; the reply may be partial";
170
182
  text = reply === "" ? "The sub-agent produced no reply before the time limit." : reply;
171
183
  isError = false;
172
184
  break;
173
185
  case "budget":
174
- [status, text] = ["stopped: token budget used up", reply];
186
+ text = reply;
175
187
  break;
176
188
  case "aborted":
177
- [status, text] =
178
- r.abortedBy === "parent"
179
- ? ["stopped with this run", AGENT_STOPPED_WITH_RUN_TEXT]
180
- : ["stopped by the user", "The user stopped this sub-agent."];
189
+ text =
190
+ r.abortedBy === "parent" ? AGENT_STOPPED_WITH_RUN_TEXT : "The user stopped this sub-agent.";
181
191
  break;
182
192
  case "timed_out":
183
193
  // the parent's sub-agents wait timed out (§7.2) and stopped it; the parent goes on
184
- [status, text] = ["timed out", "stopped: the sub-agent wait timed out"];
194
+ text = "stopped: the sub-agent wait timed out";
185
195
  break;
186
196
  case "failed":
187
- status = r.errorCode === undefined ? "failed" : `failed (${r.errorCode})`;
188
197
  text =
189
198
  r.errorMessage === undefined
190
199
  ? "The sub-agent failed."
@@ -197,9 +206,7 @@ export function agentResultText(r) {
197
206
  ...(r.ownModel === true ? ["model: the agent's own"] : []),
198
207
  `${r.toolCalls} tool ${r.toolCalls === 1 ? "call" : "calls"}`,
199
208
  duration(r.durationMs),
200
- r.noResumeHint === true
201
- ? `${count(r.tokens)} tokens.`
202
- : `${count(r.tokens)} tokens. Pass the agentId as resume to send this sub-agent a follow-up.`,
209
+ `${count(r.tokens)} tokens.`,
203
210
  ];
204
211
  const line = `[${parts.join(" · ")}]`;
205
212
  return { content: text === "" ? line : `${text}\n\n${line}`, isError };
@@ -4,10 +4,14 @@ import { BackgroundTaskStopper } from "../../background/stop.js";
4
4
  import { BackgroundTaskStore } from "../../background/store.js";
5
5
  import { AttachmentsService } from "../../conversations/attachments.service.js";
6
6
  import { EventLog } from "../../conversations/event-log.js";
7
+ import { ConversationEnvironments } from "../../environments/conversation-environments.js";
7
8
  import { ExtensionPointDefaults } from "../../extensions/point-defaults.js";
8
9
  import { KernelConfigService } from "../../infra/config/kernel-config.service.js";
9
10
  import { KernelDb } from "../../infra/database/kernel-db.js";
10
11
  import { ModelPurposesService } from "../../models/purposes.js";
12
+ import { PlatformActor } from "../../platform/actor.js";
13
+ import { AgentDocs } from "../../platform/agent-docs.js";
14
+ import { PlatformOperations } from "../../platform/registry.js";
11
15
  import type { HookRunner } from "../../runtime/hook-calls.js";
12
16
  import { StepLog } from "../../runtime/step-log.js";
13
17
  import { UsageReporter } from "../../runtime/usage-report.js";
@@ -25,11 +29,11 @@ import { WebPages } from "./web/index.js";
25
29
  */
26
30
  export declare class BuiltinTools {
27
31
  private readonly tools;
28
- constructor(db: KernelDb, config: KernelConfigService, outputs: ToolOutputs, storage: StorageService, skillChanges: SkillChangesService, attachments: AttachmentsService, eventLog: EventLog, sandbox: SandboxService, points: ExtensionPointDefaults, webPages: WebPages,
32
+ constructor(db: KernelDb, config: KernelConfigService, outputs: ToolOutputs, storage: StorageService, skillChanges: SkillChangesService, attachments: AttachmentsService, eventLog: EventLog, sandbox: SandboxService, environments: ConversationEnvironments, points: ExtensionPointDefaults, webPages: WebPages,
29
33
  /** The WebFetch extraction call: the `web_fetch` purpose, its hooks, usage and denials. */
30
34
  purposes: ModelPurposesService, host: {
31
35
  readonly hooks?: HookRunner;
32
- } | undefined, usageReport: UsageReporter, stepLog: StepLog, log: Logger, background: BackgroundTaskStore, finisher: BackgroundTaskFinisher, stopper: BackgroundTaskStopper);
36
+ } | undefined, usageReport: UsageReporter, stepLog: StepLog, log: Logger, background: BackgroundTaskStore, finisher: BackgroundTaskFinisher, stopper: BackgroundTaskStopper, platformOps: PlatformOperations, platformActor: PlatformActor, agentDocs: AgentDocs);
33
37
  /** The builtin tools, in a fixed order. */
34
38
  list(): readonly BuiltinTool[];
35
39
  }
@@ -13,12 +13,17 @@ import { BackgroundTaskStopper } from "../../background/stop.js";
13
13
  import { BackgroundTaskStore } from "../../background/store.js";
14
14
  import { AttachmentsService } from "../../conversations/attachments.service.js";
15
15
  import { EventLog } from "../../conversations/event-log.js";
16
+ import { ConversationEnvironments } from "../../environments/conversation-environments.js";
16
17
  import { ExtensionHost } from "../../extensions/host.js";
17
18
  import { ExtensionPointDefaults } from "../../extensions/point-defaults.js";
18
19
  import { KernelConfigService } from "../../infra/config/kernel-config.service.js";
19
20
  import { KernelDb } from "../../infra/database/kernel-db.js";
20
21
  import { KERNEL_LOGGER } from "../../infra/tokens.js";
21
22
  import { ModelPurposesService } from "../../models/purposes.js";
23
+ import { readOrgSettings } from "../../orgs/settings.service.js";
24
+ import { PlatformActor } from "../../platform/actor.js";
25
+ import { AgentDocs } from "../../platform/agent-docs.js";
26
+ import { PlatformOperations } from "../../platform/registry.js";
22
27
  import { StepLog } from "../../runtime/step-log.js";
23
28
  import { UsageReporter } from "../../runtime/usage-report.js";
24
29
  import { SandboxService } from "../../sandbox/sandbox.service.js";
@@ -27,8 +32,11 @@ import { StorageService } from "../../storage/storage.service.js";
27
32
  import { ToolOutputs } from "../outputs.js";
28
33
  import { agentTool } from "./agent.js";
29
34
  import { askUserTool } from "./ask-user.js";
35
+ import { handbackTool } from "./handback.js";
36
+ import { platformTool } from "./platform.js";
30
37
  import { readToolOutputTool } from "./read-tool-output.js";
31
38
  import { sandboxTools } from "./sandbox/index.js";
39
+ import { sendMessageTool } from "./send-message.js";
32
40
  import { skillLoadTool } from "./skill-load.js";
33
41
  import { skillWriteTool } from "./skill-write.js";
34
42
  import { toolSearchTool } from "./tool-search.js";
@@ -41,11 +49,12 @@ import { extractAnswer, WebPages, webTools } from "./web/index.js";
41
49
  */
42
50
  let BuiltinTools = class BuiltinTools {
43
51
  tools;
44
- constructor(db, config, outputs, storage, skillChanges, attachments, eventLog, sandbox, points, webPages,
52
+ constructor(db, config, outputs, storage, skillChanges, attachments, eventLog, sandbox, environments, points, webPages,
45
53
  /** The WebFetch extraction call: the `web_fetch` purpose, its hooks, usage and denials. */
46
- purposes, host, usageReport, stepLog, log, background, finisher, stopper) {
54
+ purposes, host, usageReport, stepLog, log, background, finisher, stopper, platformOps, platformActor, agentDocs) {
47
55
  const sandboxDeps = {
48
56
  sandbox,
57
+ environments,
49
58
  background,
50
59
  tasks: { finisher, stopper },
51
60
  attachments,
@@ -59,12 +68,17 @@ let BuiltinTools = class BuiltinTools {
59
68
  toolSearchTool(),
60
69
  // dispatches sub-agents; the tool pipeline handles its calls (sub-agents spec §4, §7.1)
61
70
  agentTool,
71
+ // messages between the agents of one tree; the registry offers them and the tool pipeline
72
+ // handles their calls (agent map spec §4.2, §4.3)
73
+ sendMessageTool,
74
+ handbackTool,
62
75
  ...sandboxTools(sandboxDeps),
63
76
  // 技能加载:对话日志里有技能目录快照时由注册表自动加入(Ruling M17)
64
77
  skillLoadTool({
65
78
  storage,
66
79
  config,
67
80
  sandbox,
81
+ environments,
68
82
  attachments,
69
83
  eventLog,
70
84
  get db() {
@@ -81,6 +95,13 @@ let BuiltinTools = class BuiltinTools {
81
95
  cache: webPages,
82
96
  extract: (ctx, page, prompt) => extractAnswer({ purposes, eventLog, stepLog, config, log, hooks: host?.hooks, usageReport }, ctx, page, prompt),
83
97
  }),
98
+ // the platform's own operations and docs, as the run's person (Platform tool spec)
99
+ platformTool({
100
+ ops: platformOps,
101
+ actor: platformActor,
102
+ docs: agentDocs,
103
+ setting: async (orgId) => (await readOrgSettings(db.db, orgId)).platformTool,
104
+ }),
84
105
  ];
85
106
  }
86
107
  /** The builtin tools, in a fixed order. */
@@ -98,15 +119,19 @@ BuiltinTools = __decorate([
98
119
  __param(5, Inject(AttachmentsService)),
99
120
  __param(6, Inject(EventLog)),
100
121
  __param(7, Inject(SandboxService)),
101
- __param(8, Inject(ExtensionPointDefaults)),
102
- __param(9, Inject(WebPages)),
103
- __param(10, Inject(ModelPurposesService)),
104
- __param(11, Inject(ExtensionHost)),
105
- __param(12, Inject(UsageReporter)),
106
- __param(13, Inject(StepLog)),
107
- __param(14, Inject(KERNEL_LOGGER)),
108
- __param(15, Inject(BackgroundTaskStore)),
109
- __param(16, Inject(BackgroundTaskFinisher)),
110
- __param(17, Inject(BackgroundTaskStopper))
122
+ __param(8, Inject(ConversationEnvironments)),
123
+ __param(9, Inject(ExtensionPointDefaults)),
124
+ __param(10, Inject(WebPages)),
125
+ __param(11, Inject(ModelPurposesService)),
126
+ __param(12, Inject(ExtensionHost)),
127
+ __param(13, Inject(UsageReporter)),
128
+ __param(14, Inject(StepLog)),
129
+ __param(15, Inject(KERNEL_LOGGER)),
130
+ __param(16, Inject(BackgroundTaskStore)),
131
+ __param(17, Inject(BackgroundTaskFinisher)),
132
+ __param(18, Inject(BackgroundTaskStopper)),
133
+ __param(19, Inject(PlatformOperations)),
134
+ __param(20, Inject(PlatformActor)),
135
+ __param(21, Inject(AgentDocs))
111
136
  ], BuiltinTools);
112
137
  export { BuiltinTools };
@@ -0,0 +1,28 @@
1
+ import { z } from "zod";
2
+ import type { BuiltinTool } from "../registry.js";
3
+ export { SUBAGENT_HANDBACK } from "../builtin-names.js";
4
+ /**
5
+ * The `SubagentHandback` builtin tool (agent map spec §4.3, children only): delivers a report to
6
+ * the agent that dispatched the sub-agent, as a `report` `subagent_delivery` in the parent's log.
7
+ * The sub-agent keeps its turn and may go on working; several handbacks are allowed. A run that
8
+ * handed back and then completes delivers nothing more (it only logs `subagent_finished`); one that
9
+ * ends otherwise (failed, stopped, a limit) is delivered as a one-line status. The tool pipeline handles the call itself
10
+ * (`SubagentMessages`), so {@link handbackTool}'s `run` is only a guard.
11
+ */
12
+ /** The input of a `SubagentHandback` call. */
13
+ export declare const HandbackInput: z.ZodObject<{
14
+ message: z.ZodString;
15
+ }, z.core.$strict>;
16
+ export type HandbackInputT = z.infer<typeof HandbackInput>;
17
+ /** The result of a handback (agent map spec §4.3). */
18
+ export declare const HANDBACK_RESULT_TEXT = "Report delivered to your caller.";
19
+ /** A call outside a sub-agent (the tool is never offered there). */
20
+ export declare const HANDBACK_NOT_A_CHILD_TEXT = "Only sub-agents can hand back a report; reply in this conversation instead.";
21
+ /** A fork invocation's child (phase D): its parent reads its final reply as the report. */
22
+ export declare const HANDBACK_FORK_TEXT = "You run a skill for the agent that dispatched you, which reads your final reply as the report; end your turn with the report instead.";
23
+ /**
24
+ * The builtin. `defaultPolicy: "allow"`: it only moves text inside one tree the person already
25
+ * started. The tool pipeline handles `SubagentHandback` calls itself; `run` answers only when a
26
+ * call reaches it anyway.
27
+ */
28
+ export declare const handbackTool: BuiltinTool;
@@ -0,0 +1,53 @@
1
+ import { z } from "zod";
2
+ export { SUBAGENT_HANDBACK } from "../builtin-names.js";
3
+ /**
4
+ * The `SubagentHandback` builtin tool (agent map spec §4.3, children only): delivers a report to
5
+ * the agent that dispatched the sub-agent, as a `report` `subagent_delivery` in the parent's log.
6
+ * The sub-agent keeps its turn and may go on working; several handbacks are allowed. A run that
7
+ * handed back and then completes delivers nothing more (it only logs `subagent_finished`); one that
8
+ * ends otherwise (failed, stopped, a limit) is delivered as a one-line status. The tool pipeline handles the call itself
9
+ * (`SubagentMessages`), so {@link handbackTool}'s `run` is only a guard.
10
+ */
11
+ /** The input of a `SubagentHandback` call. */
12
+ export const HandbackInput = z.object({ message: z.string().min(1).max(200_000) }).strict();
13
+ const SPEC = {
14
+ name: "SubagentHandback",
15
+ description: "Hand your report back to the agent that dispatched you. It receives the message as your " +
16
+ "report, so include everything it needs: what you did, what you found, and anything left " +
17
+ "open. You keep your turn after this call: go on working if something remains, then end your " +
18
+ "turn. You can hand back more than once, for example a partial report and then the final " +
19
+ "one. Once you handed back, your final reply is not delivered again. For a short note while " +
20
+ 'you work, use SendMessage with to "parent" instead.',
21
+ inputSchema: {
22
+ type: "object",
23
+ properties: {
24
+ message: {
25
+ type: "string",
26
+ minLength: 1,
27
+ maxLength: 200000,
28
+ description: "Your report for the agent that dispatched you.",
29
+ },
30
+ },
31
+ required: ["message"],
32
+ additionalProperties: false,
33
+ },
34
+ };
35
+ /** The result of a handback (agent map spec §4.3). */
36
+ export const HANDBACK_RESULT_TEXT = "Report delivered to your caller.";
37
+ /** A call outside a sub-agent (the tool is never offered there). */
38
+ export const HANDBACK_NOT_A_CHILD_TEXT = "Only sub-agents can hand back a report; reply in this conversation instead.";
39
+ /** A fork invocation's child (phase D): its parent reads its final reply as the report. */
40
+ export const HANDBACK_FORK_TEXT = "You run a skill for the agent that dispatched you, which reads your final reply as the report; end your turn with the report instead.";
41
+ /**
42
+ * The builtin. `defaultPolicy: "allow"`: it only moves text inside one tree the person already
43
+ * started. The tool pipeline handles `SubagentHandback` calls itself; `run` answers only when a
44
+ * call reaches it anyway.
45
+ */
46
+ export const handbackTool = {
47
+ spec: SPEC,
48
+ defaultPolicy: "allow",
49
+ run: async () => ({
50
+ content: [{ type: "text", text: HANDBACK_NOT_A_CHILD_TEXT }],
51
+ isError: true,
52
+ }),
53
+ };