@capybara-hq/kernel 0.1.0-rc.2 → 0.1.0-rc.20

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 (1039) hide show
  1. package/bootstrap.json +85 -5
  2. package/dist/admin/admin-agents.controller.d.ts +28 -0
  3. package/dist/admin/admin-agents.controller.js +79 -0
  4. package/dist/admin/admin-connectors.controller.d.ts +29 -0
  5. package/dist/admin/admin-connectors.controller.js +79 -0
  6. package/dist/admin/admin-items.schemas.d.ts +42 -0
  7. package/dist/admin/admin-items.schemas.js +48 -0
  8. package/dist/admin/admin.controller.d.ts +52 -80
  9. package/dist/admin/admin.controller.js +112 -81
  10. package/dist/admin/admin.module.d.ts +4 -1
  11. package/dist/admin/admin.module.js +50 -4
  12. package/dist/admin/admin.schemas.d.ts +69 -0
  13. package/dist/admin/admin.schemas.js +53 -0
  14. package/dist/admin/audit.controller.d.ts +14 -0
  15. package/dist/admin/audit.controller.js +42 -0
  16. package/dist/admin/audit.schemas.d.ts +8 -0
  17. package/dist/admin/audit.schemas.js +17 -0
  18. package/dist/admin/extensions.controller.d.ts +34 -3
  19. package/dist/admin/extensions.controller.js +66 -8
  20. package/dist/admin/extensions.schemas.d.ts +7 -0
  21. package/dist/admin/extensions.schemas.js +10 -0
  22. package/dist/admin/health.service.d.ts +104 -0
  23. package/dist/admin/health.service.js +246 -0
  24. package/dist/admin/limit-defaults.d.ts +20 -0
  25. package/dist/admin/limit-defaults.js +10 -0
  26. package/dist/admin/overview.controller.d.ts +31 -0
  27. package/dist/admin/overview.controller.js +78 -0
  28. package/dist/admin/overview.schemas.d.ts +8 -0
  29. package/dist/admin/overview.schemas.js +13 -0
  30. package/dist/admin/overview.service.d.ts +112 -0
  31. package/dist/admin/overview.service.js +223 -0
  32. package/dist/admin/platform-audit.service.d.ts +41 -0
  33. package/dist/admin/platform-audit.service.js +70 -0
  34. package/dist/admin/setup-lock.d.ts +1 -1
  35. package/dist/admin/setup-lock.js +1 -1
  36. package/dist/admin/setup.controller.d.ts +1 -1
  37. package/dist/admin/setup.controller.js +1 -1
  38. package/dist/admin/setup.service.d.ts +4 -4
  39. package/dist/admin/setup.service.js +8 -8
  40. package/dist/admin/usage.service.d.ts +149 -0
  41. package/dist/admin/usage.service.js +321 -0
  42. package/dist/agents/admin-agents.d.ts +92 -0
  43. package/dist/agents/admin-agents.js +170 -0
  44. package/dist/agents/agent-lookup.d.ts +24 -0
  45. package/dist/agents/agent-lookup.js +46 -2
  46. package/dist/agents/agent-profile.service.d.ts +31 -0
  47. package/dist/agents/agent-profile.service.js +122 -0
  48. package/dist/agents/agents.controller.d.ts +53 -168
  49. package/dist/agents/agents.controller.js +163 -34
  50. package/dist/agents/agents.module.d.ts +6 -2
  51. package/dist/agents/agents.module.js +41 -7
  52. package/dist/agents/agents.schemas.d.ts +392 -0
  53. package/dist/agents/agents.schemas.js +126 -0
  54. package/dist/agents/agents.service.d.ts +121 -36
  55. package/dist/agents/agents.service.js +411 -121
  56. package/dist/agents/definition.d.ts +142 -21
  57. package/dist/agents/definition.js +389 -43
  58. package/dist/agents/from-template.d.ts +106 -0
  59. package/dist/agents/from-template.js +680 -0
  60. package/dist/agents/from-template.service.d.ts +72 -0
  61. package/dist/agents/from-template.service.js +178 -0
  62. package/dist/agents/instruction-files.d.ts +60 -0
  63. package/dist/agents/instruction-files.js +111 -0
  64. package/dist/agents/models.controller.d.ts +44 -6
  65. package/dist/agents/models.controller.js +84 -8
  66. package/dist/agents/org-templates.d.ts +186 -0
  67. package/dist/agents/org-templates.js +876 -0
  68. package/dist/agents/pending-connector-requests.d.ts +79 -0
  69. package/dist/agents/pending-connector-requests.js +215 -0
  70. package/dist/agents/pending-connectors.controller.d.ts +39 -0
  71. package/dist/agents/pending-connectors.controller.js +91 -0
  72. package/dist/agents/pending-connectors.service.d.ts +62 -0
  73. package/dist/agents/pending-connectors.service.js +282 -0
  74. package/dist/agents/profile.d.ts +114 -0
  75. package/dist/agents/profile.js +55 -0
  76. package/dist/agents/readiness.controller.d.ts +26 -0
  77. package/dist/agents/readiness.controller.js +56 -0
  78. package/dist/agents/templates.controller.d.ts +77 -5
  79. package/dist/agents/templates.controller.js +153 -7
  80. package/dist/agents/templates.d.ts +127 -23
  81. package/dist/agents/templates.js +482 -44
  82. package/dist/agents/templates.schemas.d.ts +20 -0
  83. package/dist/agents/templates.schemas.js +45 -0
  84. package/dist/background/background.controller.d.ts +38 -0
  85. package/dist/background/background.controller.js +88 -0
  86. package/dist/background/background.module.d.ts +10 -0
  87. package/dist/background/background.module.js +39 -0
  88. package/dist/background/background.schemas.d.ts +10 -0
  89. package/dist/background/background.schemas.js +16 -0
  90. package/dist/background/finish.d.ts +44 -0
  91. package/dist/background/finish.js +95 -0
  92. package/dist/background/launch-lock.d.ts +15 -0
  93. package/dist/background/launch-lock.js +40 -0
  94. package/dist/background/launch.d.ts +42 -0
  95. package/dist/background/launch.js +77 -0
  96. package/dist/background/poll.job.d.ts +56 -0
  97. package/dist/background/poll.job.js +195 -0
  98. package/dist/background/render.d.ts +23 -0
  99. package/dist/background/render.js +48 -0
  100. package/dist/background/session.d.ts +48 -0
  101. package/dist/background/session.js +80 -0
  102. package/dist/background/status.d.ts +35 -0
  103. package/dist/background/status.js +57 -0
  104. package/dist/background/stop.d.ts +68 -0
  105. package/dist/background/stop.js +244 -0
  106. package/dist/background/store.d.ts +167 -0
  107. package/dist/background/store.js +361 -0
  108. package/dist/background/store.module.d.ts +6 -0
  109. package/dist/background/store.module.js +22 -0
  110. package/dist/background/tasks.service.d.ts +109 -0
  111. package/dist/background/tasks.service.js +271 -0
  112. package/dist/background/wake-rules.d.ts +66 -0
  113. package/dist/background/wake-rules.js +113 -0
  114. package/dist/background/wake.d.ts +30 -0
  115. package/dist/background/wake.js +63 -0
  116. package/dist/catalog/admin-catalog.controller.d.ts +136 -52
  117. package/dist/catalog/admin-catalog.controller.js +275 -65
  118. package/dist/catalog/admin-catalog.schemas.d.ts +82 -0
  119. package/dist/catalog/admin-catalog.schemas.js +99 -0
  120. package/dist/catalog/appearance.schemas.d.ts +10 -0
  121. package/dist/catalog/appearance.schemas.js +20 -0
  122. package/dist/catalog/appearance.service.d.ts +105 -0
  123. package/dist/catalog/appearance.service.js +306 -0
  124. package/dist/catalog/catalog-content.d.ts +122 -35
  125. package/dist/catalog/catalog-content.js +122 -14
  126. package/dist/catalog/catalog-files.d.ts +42 -0
  127. package/dist/catalog/catalog-files.js +89 -0
  128. package/dist/catalog/catalog-import.module.d.ts +7 -0
  129. package/dist/catalog/catalog-import.module.js +63 -0
  130. package/dist/catalog/catalog-items.d.ts +122 -7
  131. package/dist/catalog/catalog-items.js +301 -13
  132. package/dist/catalog/catalog-scope.service.d.ts +293 -0
  133. package/dist/catalog/catalog-scope.service.js +1236 -0
  134. package/dist/catalog/catalog.module.d.ts +7 -9
  135. package/dist/catalog/catalog.module.js +47 -31
  136. package/dist/catalog/catalog.service.d.ts +122 -31
  137. package/dist/catalog/catalog.service.js +177 -105
  138. package/dist/catalog/claude/agents.js +15 -10
  139. package/dist/catalog/claude/translate.js +3 -0
  140. package/dist/catalog/cli.d.ts +11 -1
  141. package/dist/catalog/cli.js +29 -1
  142. package/dist/catalog/component-promotion.d.ts +96 -0
  143. package/dist/catalog/component-promotion.js +395 -0
  144. package/dist/catalog/component-scope.controller.d.ts +102 -0
  145. package/dist/catalog/component-scope.controller.js +257 -0
  146. package/dist/catalog/component-scope.schemas.d.ts +118 -0
  147. package/dist/catalog/component-scope.schemas.js +97 -0
  148. package/dist/catalog/component-scope.service.d.ts +394 -0
  149. package/dist/catalog/component-scope.service.js +1133 -0
  150. package/dist/catalog/component-state.d.ts +207 -0
  151. package/dist/catalog/component-state.js +484 -0
  152. package/dist/catalog/git-source.d.ts +9 -1
  153. package/dist/catalog/git-source.js +29 -2
  154. package/dist/catalog/job-ids.d.ts +30 -0
  155. package/dist/catalog/job-ids.js +25 -0
  156. package/dist/catalog/marketplace-fetch.d.ts +1 -1
  157. package/dist/catalog/marketplace-icons.d.ts +64 -0
  158. package/dist/catalog/marketplace-icons.js +131 -0
  159. package/dist/catalog/marketplaces.controller.d.ts +50 -41
  160. package/dist/catalog/marketplaces.controller.js +130 -46
  161. package/dist/catalog/marketplaces.schemas.d.ts +48 -0
  162. package/dist/catalog/marketplaces.schemas.js +53 -0
  163. package/dist/catalog/marketplaces.service.d.ts +110 -17
  164. package/dist/catalog/marketplaces.service.js +337 -29
  165. package/dist/catalog/org-catalog.controller.d.ts +114 -62
  166. package/dist/catalog/org-catalog.controller.js +191 -98
  167. package/dist/catalog/org-catalog.schemas.d.ts +104 -0
  168. package/dist/catalog/org-catalog.schemas.js +107 -0
  169. package/dist/catalog/org-catalog.service.d.ts +72 -33
  170. package/dist/catalog/org-catalog.service.js +367 -158
  171. package/dist/catalog/org-extension-switch.d.ts +41 -0
  172. package/dist/catalog/org-extension-switch.js +115 -0
  173. package/dist/catalog/org-extension.controller.d.ts +133 -0
  174. package/dist/catalog/org-extension.controller.js +313 -0
  175. package/dist/catalog/org-extension.schemas.d.ts +15 -0
  176. package/dist/catalog/org-extension.schemas.js +22 -0
  177. package/dist/catalog/org-plugin-uploads.controller.d.ts +77 -0
  178. package/dist/catalog/org-plugin-uploads.controller.js +200 -0
  179. package/dist/catalog/org-plugin-uploads.d.ts +71 -0
  180. package/dist/catalog/org-plugin-uploads.js +122 -0
  181. package/dist/catalog/org-plugin-uploads.schemas.d.ts +20 -0
  182. package/dist/catalog/org-plugin-uploads.schemas.js +32 -0
  183. package/dist/catalog/owned-items.d.ts +188 -0
  184. package/dist/catalog/owned-items.js +808 -0
  185. package/dist/catalog/owned-plugin-cleanup.d.ts +56 -0
  186. package/dist/catalog/owned-plugin-cleanup.js +194 -0
  187. package/dist/catalog/ownership.d.ts +172 -0
  188. package/dist/catalog/ownership.js +326 -0
  189. package/dist/catalog/platform-components.d.ts +243 -0
  190. package/dist/catalog/platform-components.js +872 -0
  191. package/dist/catalog/platform-migration.d.ts +115 -0
  192. package/dist/catalog/platform-migration.js +583 -0
  193. package/dist/catalog/plugin-import.d.ts +254 -47
  194. package/dist/catalog/plugin-import.js +810 -112
  195. package/dist/catalog/plugin-install.d.ts +205 -42
  196. package/dist/catalog/plugin-install.js +828 -126
  197. package/dist/catalog/plugin-package.d.ts +43 -4
  198. package/dist/catalog/plugin-package.js +194 -7
  199. package/dist/catalog/plugin-upgrade.d.ts +308 -225
  200. package/dist/catalog/plugin-upgrade.js +1325 -1131
  201. package/dist/catalog/request-rules.d.ts +65 -0
  202. package/dist/catalog/request-rules.js +217 -0
  203. package/dist/catalog/requests.service.d.ts +194 -118
  204. package/dist/catalog/requests.service.js +530 -343
  205. package/dist/catalog/reserved-names.d.ts +8 -0
  206. package/dist/catalog/reserved-names.js +42 -0
  207. package/dist/catalog/scope-orgs.d.ts +21 -0
  208. package/dist/catalog/scope-orgs.js +67 -0
  209. package/dist/catalog/scope-state.d.ts +35 -0
  210. package/dist/catalog/scope-state.js +87 -0
  211. package/dist/catalog/scope-sync-workers.d.ts +7 -0
  212. package/dist/catalog/scope-sync-workers.js +29 -0
  213. package/dist/catalog/scope-sync.d.ts +176 -0
  214. package/dist/catalog/scope-sync.js +576 -0
  215. package/dist/catalog/scope.d.ts +42 -0
  216. package/dist/catalog/scope.js +42 -0
  217. package/dist/catalog/unshare.d.ts +22 -0
  218. package/dist/catalog/unshare.js +119 -0
  219. package/dist/channels/actions.js +10 -3
  220. package/dist/channels/cards.d.ts +36 -10
  221. package/dist/channels/cards.js +100 -25
  222. package/dist/channels/channels.module.js +13 -2
  223. package/dist/channels/channels.schemas.d.ts +41 -0
  224. package/dist/channels/channels.schemas.js +40 -0
  225. package/dist/channels/connections.controller.d.ts +46 -37
  226. package/dist/channels/connections.controller.js +76 -34
  227. package/dist/channels/connections.service.d.ts +102 -10
  228. package/dist/channels/connections.service.js +271 -24
  229. package/dist/channels/inbound.d.ts +11 -1
  230. package/dist/channels/inbound.js +87 -7
  231. package/dist/channels/outbound.d.ts +14 -1
  232. package/dist/channels/outbound.js +64 -15
  233. package/dist/channels/phrases.d.ts +33 -2
  234. package/dist/channels/phrases.js +29 -1
  235. package/dist/channels/supervisor.d.ts +2 -0
  236. package/dist/channels/supervisor.js +4 -0
  237. package/dist/channels/threads.d.ts +5 -0
  238. package/dist/channels/threads.js +8 -0
  239. package/dist/channels/webhook.d.ts +21 -1
  240. package/dist/channels/webhook.js +39 -4
  241. package/dist/client/client-access.service.d.ts +102 -0
  242. package/dist/client/client-access.service.js +303 -0
  243. package/dist/client/client-builds.service.d.ts +109 -0
  244. package/dist/client/client-builds.service.js +229 -0
  245. package/dist/client/client-delivery.controller.d.ts +25 -0
  246. package/dist/client/client-delivery.controller.js +66 -0
  247. package/dist/client/client-files.d.ts +48 -0
  248. package/dist/client/client-files.js +136 -0
  249. package/dist/client/client-reports.cron.d.ts +13 -0
  250. package/dist/client/client-reports.cron.js +42 -0
  251. package/dist/client/client-reports.service.d.ts +30 -0
  252. package/dist/client/client-reports.service.js +102 -0
  253. package/dist/client/client-sign-in.service.d.ts +21 -0
  254. package/dist/client/client-sign-in.service.js +49 -0
  255. package/dist/client/client.controller.d.ts +49 -0
  256. package/dist/client/client.controller.js +129 -0
  257. package/dist/client/client.module.d.ts +8 -0
  258. package/dist/client/client.module.js +28 -0
  259. package/dist/client/client.schemas.d.ts +61 -0
  260. package/dist/client/client.schemas.js +27 -0
  261. package/dist/config/docs.js +5 -1
  262. package/dist/config/schema.d.ts +35 -2
  263. package/dist/config/schema.js +216 -21
  264. package/dist/conversations/access.d.ts +6 -4
  265. package/dist/conversations/access.js +29 -5
  266. package/dist/conversations/agent-tree.d.ts +46 -0
  267. package/dist/conversations/agent-tree.js +92 -0
  268. package/dist/conversations/artifacts.d.ts +1 -1
  269. package/dist/conversations/artifacts.js +1 -1
  270. package/dist/conversations/attachments.service.d.ts +30 -0
  271. package/dist/conversations/attachments.service.js +130 -5
  272. package/dist/conversations/conversations.controller.d.ts +79 -44
  273. package/dist/conversations/conversations.controller.js +133 -82
  274. package/dist/conversations/conversations.module.d.ts +1 -1
  275. package/dist/conversations/conversations.module.js +10 -7
  276. package/dist/conversations/conversations.schemas.d.ts +52 -0
  277. package/dist/conversations/conversations.schemas.js +79 -0
  278. package/dist/conversations/conversations.service.d.ts +161 -13
  279. package/dist/conversations/conversations.service.js +329 -57
  280. package/dist/conversations/device-status.d.ts +24 -0
  281. package/dist/conversations/device-status.js +71 -0
  282. package/dist/conversations/event-log.d.ts +45 -9
  283. package/dist/conversations/event-log.js +113 -6
  284. package/dist/conversations/events.d.ts +255 -9
  285. package/dist/conversations/events.js +250 -34
  286. package/dist/conversations/message-context.d.ts +79 -0
  287. package/dist/conversations/message-context.js +145 -0
  288. package/dist/conversations/queue.d.ts +5 -2
  289. package/dist/conversations/queue.js +24 -4
  290. package/dist/conversations/queue.service.d.ts +2 -2
  291. package/dist/conversations/queue.service.js +21 -3
  292. package/dist/conversations/titles.d.ts +12 -3
  293. package/dist/conversations/titles.js +40 -16
  294. package/dist/conversations/tree.d.ts +17 -0
  295. package/dist/conversations/tree.js +42 -0
  296. package/dist/ctx/create-ctx.d.ts +48 -5
  297. package/dist/ctx/create-ctx.js +174 -34
  298. package/dist/db/kernel-schema.d.ts +668 -27
  299. package/dist/db/pool.d.ts +5 -0
  300. package/dist/db/pool.js +3 -0
  301. package/dist/devices/access.d.ts +66 -0
  302. package/dist/devices/access.js +113 -0
  303. package/dist/devices/conversation-devices.d.ts +75 -0
  304. package/dist/devices/conversation-devices.js +230 -0
  305. package/dist/devices/devices.controller.d.ts +36 -0
  306. package/dist/devices/devices.controller.js +124 -0
  307. package/dist/devices/devices.module.d.ts +8 -0
  308. package/dist/devices/devices.module.js +34 -0
  309. package/dist/devices/devices.schemas.d.ts +3 -0
  310. package/dist/devices/devices.schemas.js +14 -0
  311. package/dist/devices/devices.service.d.ts +251 -0
  312. package/dist/devices/devices.service.js +791 -0
  313. package/dist/devices/dto.d.ts +25 -0
  314. package/dist/devices/dto.js +12 -0
  315. package/dist/devices/label.d.ts +11 -0
  316. package/dist/devices/label.js +25 -0
  317. package/dist/devices/legacy-cleanup.job.d.ts +34 -0
  318. package/dist/devices/legacy-cleanup.job.js +141 -0
  319. package/dist/errors.d.ts +215 -3
  320. package/dist/errors.js +215 -3
  321. package/dist/evals/evals.module.js +11 -2
  322. package/dist/evals/evals.schemas.d.ts +110 -0
  323. package/dist/evals/evals.schemas.js +107 -0
  324. package/dist/evals/reconstruct.d.ts +18 -9
  325. package/dist/evals/reconstruct.js +36 -10
  326. package/dist/evals/recorded-tools.d.ts +37 -1
  327. package/dist/evals/recorded-tools.js +120 -10
  328. package/dist/evals/run-replay.d.ts +20 -3
  329. package/dist/evals/run-replay.js +78 -14
  330. package/dist/evals/runs.controller.d.ts +2 -57
  331. package/dist/evals/runs.controller.js +1 -42
  332. package/dist/evals/runs.service.d.ts +8 -7
  333. package/dist/evals/runs.service.js +45 -30
  334. package/dist/evals/sets.controller.d.ts +2 -28
  335. package/dist/evals/sets.controller.js +1 -31
  336. package/dist/evals/sets.service.d.ts +7 -7
  337. package/dist/evals/sets.service.js +23 -17
  338. package/dist/evals/snapshot.d.ts +3 -2
  339. package/dist/evals/snapshot.js +17 -4
  340. package/dist/evals/step-replay.d.ts +4 -6
  341. package/dist/evals/step-replay.js +16 -9
  342. package/dist/evals/trajectory.d.ts +5 -3
  343. package/dist/evals/trajectory.js +4 -1
  344. package/dist/evals/trajectory.service.d.ts +8 -3
  345. package/dist/evals/trajectory.service.js +26 -14
  346. package/dist/evals/worker.d.ts +5 -5
  347. package/dist/evals/worker.js +9 -3
  348. package/dist/extensions/admin-ops.d.ts +81 -14
  349. package/dist/extensions/admin-ops.js +181 -47
  350. package/dist/extensions/admin-view.d.ts +57 -10
  351. package/dist/extensions/admin-view.js +249 -27
  352. package/dist/extensions/approvals.d.ts +12 -2
  353. package/dist/extensions/blobs.d.ts +14 -1
  354. package/dist/extensions/blobs.js +49 -5
  355. package/dist/extensions/bootstrap.d.ts +41 -5
  356. package/dist/extensions/bootstrap.js +121 -19
  357. package/dist/extensions/cli.d.ts +12 -0
  358. package/dist/extensions/cli.js +11 -2
  359. package/dist/extensions/config-hash.d.ts +10 -0
  360. package/dist/extensions/config-hash.js +38 -0
  361. package/dist/extensions/config-issues.d.ts +13 -1
  362. package/dist/extensions/config-issues.js +22 -5
  363. package/dist/extensions/config-json-schema.d.ts +43 -7
  364. package/dist/extensions/config-json-schema.js +124 -58
  365. package/dist/extensions/deployment-config-store.d.ts +6 -0
  366. package/dist/extensions/deployment-config.d.ts +94 -9
  367. package/dist/extensions/deployment-config.js +255 -34
  368. package/dist/extensions/display-name.d.ts +22 -0
  369. package/dist/extensions/display-name.js +77 -0
  370. package/dist/extensions/effective-config.d.ts +133 -0
  371. package/dist/extensions/effective-config.js +379 -0
  372. package/dist/extensions/extensions.module.js +31 -12
  373. package/dist/extensions/guide-places.d.ts +68 -0
  374. package/dist/extensions/guide-places.js +152 -0
  375. package/dist/extensions/hooks.d.ts +37 -4
  376. package/dist/extensions/hooks.js +82 -16
  377. package/dist/extensions/host.d.ts +105 -12
  378. package/dist/extensions/host.js +372 -87
  379. package/dist/extensions/installs.d.ts +30 -9
  380. package/dist/extensions/installs.js +57 -16
  381. package/dist/extensions/instance.d.ts +17 -2
  382. package/dist/extensions/instance.js +21 -0
  383. package/dist/extensions/ledger.d.ts +1 -1
  384. package/dist/extensions/locks.d.ts +12 -0
  385. package/dist/extensions/locks.js +26 -0
  386. package/dist/extensions/org-config.d.ts +97 -7
  387. package/dist/extensions/org-config.js +215 -45
  388. package/dist/extensions/org-levels.d.ts +37 -0
  389. package/dist/extensions/org-levels.js +71 -0
  390. package/dist/extensions/org-overrides.d.ts +151 -0
  391. package/dist/extensions/org-overrides.js +524 -0
  392. package/dist/extensions/package.d.ts +18 -4
  393. package/dist/extensions/package.js +56 -3
  394. package/dist/extensions/permission-set.d.ts +35 -5
  395. package/dist/extensions/permission-set.js +36 -5
  396. package/dist/extensions/permission-view.d.ts +106 -13
  397. package/dist/extensions/permission-view.js +33 -15
  398. package/dist/extensions/plugin-guides.d.ts +282 -0
  399. package/dist/extensions/plugin-guides.js +554 -0
  400. package/dist/extensions/plugin-icons.d.ts +54 -0
  401. package/dist/extensions/plugin-icons.js +125 -0
  402. package/dist/extensions/plugin-items.d.ts +21 -0
  403. package/dist/extensions/plugin-items.js +42 -0
  404. package/dist/extensions/point-defaults.controller.d.ts +28 -0
  405. package/dist/extensions/point-defaults.controller.js +69 -0
  406. package/dist/extensions/point-defaults.d.ts +73 -0
  407. package/dist/extensions/point-defaults.js +236 -0
  408. package/dist/extensions/point-defaults.schemas.d.ts +9 -0
  409. package/dist/extensions/point-defaults.schemas.js +14 -0
  410. package/dist/extensions/registry.d.ts +1 -1
  411. package/dist/extensions/registry.js +2 -0
  412. package/dist/extensions/resolve.d.ts +51 -1
  413. package/dist/extensions/resolve.js +85 -3
  414. package/dist/extensions/single-provider.d.ts +92 -0
  415. package/dist/extensions/single-provider.js +180 -0
  416. package/dist/extensions/sources.d.ts +13 -2
  417. package/dist/extensions/sources.js +2 -0
  418. package/dist/extensions/state.module.d.ts +9 -0
  419. package/dist/extensions/state.module.js +46 -0
  420. package/dist/extensions/unavailable.d.ts +50 -0
  421. package/dist/extensions/unavailable.js +115 -0
  422. package/dist/files/previewers.controller.js +2 -3
  423. package/dist/files/previewers.d.ts +10 -3
  424. package/dist/files/previewers.js +40 -11
  425. package/dist/files/previewers.schemas.d.ts +10 -0
  426. package/dist/files/previewers.schemas.js +9 -0
  427. package/dist/http/api.module.js +76 -4
  428. package/dist/http/app.d.ts +11 -2
  429. package/dist/http/app.js +31 -5
  430. package/dist/http/gateway-routes.d.ts +7 -3
  431. package/dist/http/gateway-routes.js +6 -3
  432. package/dist/http/nest-logger.d.ts +6 -5
  433. package/dist/http/nest-logger.js +24 -10
  434. package/dist/http/plugin-dispatch.d.ts +4 -1
  435. package/dist/http/plugin-dispatch.js +14 -2
  436. package/dist/identity/accounts.d.ts +77 -31
  437. package/dist/identity/accounts.js +133 -52
  438. package/dist/identity/audit.d.ts +2 -1
  439. package/dist/identity/auth.controller.js +9 -5
  440. package/dist/identity/auth.guard.d.ts +13 -5
  441. package/dist/identity/auth.guard.js +35 -9
  442. package/dist/identity/cookies.d.ts +26 -5
  443. package/dist/identity/cookies.js +58 -6
  444. package/dist/identity/identity.module.d.ts +1 -1
  445. package/dist/identity/identity.module.js +7 -4
  446. package/dist/identity/initial-passwords.controller.d.ts +22 -0
  447. package/dist/identity/initial-passwords.controller.js +49 -0
  448. package/dist/identity/initial-passwords.d.ts +61 -0
  449. package/dist/identity/initial-passwords.job.d.ts +16 -0
  450. package/dist/identity/initial-passwords.job.js +46 -0
  451. package/dist/identity/initial-passwords.js +159 -0
  452. package/dist/identity/me.controller.d.ts +17 -1
  453. package/dist/identity/me.controller.js +45 -4
  454. package/dist/identity/me.schemas.d.ts +24 -0
  455. package/dist/identity/me.schemas.js +25 -0
  456. package/dist/identity/principal.d.ts +11 -3
  457. package/dist/identity/principal.js +11 -3
  458. package/dist/identity/sessions.d.ts +12 -0
  459. package/dist/identity/sessions.js +45 -0
  460. package/dist/identity/settings.d.ts +99 -12
  461. package/dist/identity/settings.js +234 -25
  462. package/dist/identity/{enterprise-admin.d.ts → super-admin.d.ts} +5 -5
  463. package/dist/identity/{enterprise-admin.js → super-admin.js} +24 -24
  464. package/dist/identity/write-actor.d.ts +11 -0
  465. package/dist/identity/write-actor.js +7 -0
  466. package/dist/inbox/inbox.module.d.ts +4 -1
  467. package/dist/inbox/inbox.module.js +7 -3
  468. package/dist/inbox/inbox.schemas.d.ts +8 -0
  469. package/dist/inbox/inbox.schemas.js +11 -0
  470. package/dist/inbox/inbox.service.d.ts +64 -4
  471. package/dist/inbox/inbox.service.js +74 -4
  472. package/dist/inbox/org-notices.d.ts +63 -0
  473. package/dist/inbox/org-notices.js +91 -0
  474. package/dist/inbox/platform-inbox.controller.d.ts +23 -0
  475. package/dist/inbox/platform-inbox.controller.js +58 -0
  476. package/dist/inbox/platform-inbox.service.d.ts +157 -0
  477. package/dist/inbox/platform-inbox.service.js +281 -0
  478. package/dist/inbox/platform-notices.d.ts +19 -0
  479. package/dist/inbox/platform-notices.js +9 -0
  480. package/dist/index.d.ts +6 -2
  481. package/dist/index.js +7 -1
  482. package/dist/infra/cli/kernel-cli.module.js +9 -1
  483. package/dist/infra/config/kernel-config.service.js +32 -1
  484. package/dist/infra/database/database.module.js +1 -0
  485. package/dist/infra/database/xact-lock.d.ts +1 -1
  486. package/dist/infra/database/xact-lock.js +1 -1
  487. package/dist/infra/events/kernel-events.d.ts +31 -3
  488. package/dist/infra/lifecycle/process-guards.js +4 -0
  489. package/dist/infra/lock/lock.service.d.ts +8 -0
  490. package/dist/infra/lock/lock.service.js +27 -0
  491. package/dist/infra/logging/logging.module.d.ts +4 -2
  492. package/dist/infra/logging/logging.module.js +24 -6
  493. package/dist/infra/presence/presence.module.d.ts +6 -0
  494. package/dist/infra/presence/presence.module.js +22 -0
  495. package/dist/infra/presence/replica-presence.d.ts +87 -0
  496. package/dist/infra/presence/replica-presence.js +189 -0
  497. package/dist/infra/queue/add-job-once.d.ts +14 -0
  498. package/dist/infra/queue/add-job-once.js +16 -0
  499. package/dist/infra/queue/redis-connection.d.ts +6 -0
  500. package/dist/infra/queue/redis-connection.js +7 -0
  501. package/dist/infra/redis/redis.module.js +6 -2
  502. package/dist/infra/throttler/named-throttlers.d.ts +12 -0
  503. package/dist/infra/throttler/named-throttlers.js +67 -0
  504. package/dist/infra/throttler/throttler.guard.js +1 -1
  505. package/dist/infra/tokens.d.ts +6 -1
  506. package/dist/infra/tokens.js +6 -1
  507. package/dist/kernel.module.js +15 -0
  508. package/dist/lifecycle/kernel-lifecycle.d.ts +4 -2
  509. package/dist/lifecycle/kernel-lifecycle.js +35 -7
  510. package/dist/local-devices/device-auth.controller.d.ts +42 -0
  511. package/dist/local-devices/device-auth.controller.js +116 -0
  512. package/dist/local-devices/device-auth.d.ts +119 -0
  513. package/dist/local-devices/device-auth.js +401 -0
  514. package/dist/local-devices/device-auth.module.d.ts +7 -0
  515. package/dist/local-devices/device-auth.module.js +25 -0
  516. package/dist/local-devices/device-routes.d.ts +36 -0
  517. package/dist/local-devices/device-routes.js +90 -0
  518. package/dist/local-devices/dto.d.ts +66 -0
  519. package/dist/local-devices/dto.js +44 -0
  520. package/dist/local-devices/keys.d.ts +25 -0
  521. package/dist/local-devices/keys.js +25 -0
  522. package/dist/local-devices/local-device-gateway.d.ts +134 -0
  523. package/dist/local-devices/local-device-gateway.js +542 -0
  524. package/dist/local-devices/local-device-provider.d.ts +89 -0
  525. package/dist/local-devices/local-device-provider.js +151 -0
  526. package/dist/local-devices/local-devices.module.d.ts +16 -0
  527. package/dist/local-devices/local-devices.module.js +44 -0
  528. package/dist/local-devices/machines.d.ts +118 -0
  529. package/dist/local-devices/machines.js +366 -0
  530. package/dist/local-devices/relay.d.ts +100 -0
  531. package/dist/local-devices/relay.js +373 -0
  532. package/dist/local-devices/targets.d.ts +28 -0
  533. package/dist/local-devices/targets.js +73 -0
  534. package/dist/log.d.ts +13 -1
  535. package/dist/log.js +93 -17
  536. package/dist/models/embeddings.d.ts +82 -0
  537. package/dist/models/embeddings.js +326 -0
  538. package/dist/models/enablement.controller.d.ts +40 -0
  539. package/dist/models/enablement.controller.js +74 -0
  540. package/dist/models/enablement.d.ts +101 -0
  541. package/dist/models/enablement.js +264 -0
  542. package/dist/models/models.module.d.ts +5 -1
  543. package/dist/models/models.module.js +16 -4
  544. package/dist/models/org-models.schemas.d.ts +8 -0
  545. package/dist/models/org-models.schemas.js +22 -0
  546. package/dist/models/prices.d.ts +8 -6
  547. package/dist/models/prices.js +11 -9
  548. package/dist/models/purposes.controller.d.ts +6 -4
  549. package/dist/models/purposes.controller.js +13 -7
  550. package/dist/models/purposes.d.ts +72 -14
  551. package/dist/models/purposes.js +115 -34
  552. package/dist/orgs/directory-sync.d.ts +14 -5
  553. package/dist/orgs/directory-sync.js +41 -17
  554. package/dist/orgs/offboarding.d.ts +12 -8
  555. package/dist/orgs/offboarding.js +54 -33
  556. package/dist/orgs/org-lock.d.ts +5 -0
  557. package/dist/orgs/org-lock.js +13 -0
  558. package/dist/orgs/org.guard.d.ts +10 -0
  559. package/dist/orgs/org.guard.js +43 -32
  560. package/dist/orgs/orgs.controller.d.ts +2 -5
  561. package/dist/orgs/orgs.controller.js +3 -6
  562. package/dist/orgs/orgs.module.js +3 -0
  563. package/dist/orgs/orgs.schemas.d.ts +8 -0
  564. package/dist/orgs/orgs.schemas.js +16 -0
  565. package/dist/orgs/orgs.service.d.ts +23 -8
  566. package/dist/orgs/orgs.service.js +38 -16
  567. package/dist/orgs/roles.d.ts +1 -1
  568. package/dist/orgs/roles.js +5 -1
  569. package/dist/orgs/settings.controller.d.ts +1 -1
  570. package/dist/orgs/settings.service.d.ts +66 -6
  571. package/dist/orgs/settings.service.js +89 -10
  572. package/dist/overrides.d.ts +16 -1
  573. package/dist/overrides.js +10 -0
  574. package/dist/platform/actor.d.ts +48 -0
  575. package/dist/platform/actor.js +100 -0
  576. package/dist/platform/agent-docs.d.ts +18 -0
  577. package/dist/platform/agent-docs.js +59 -0
  578. package/dist/platform/availability.d.ts +14 -0
  579. package/dist/platform/availability.js +43 -0
  580. package/dist/platform/errors.d.ts +28 -0
  581. package/dist/platform/errors.js +65 -0
  582. package/dist/platform/exclusions.d.ts +11 -0
  583. package/dist/platform/exclusions.js +774 -0
  584. package/dist/platform/method.d.ts +6 -0
  585. package/dist/platform/method.js +15 -0
  586. package/dist/platform/operation.d.ts +169 -0
  587. package/dist/platform/operation.js +102 -0
  588. package/dist/platform/ops/accounts.ops.d.ts +32 -0
  589. package/dist/platform/ops/accounts.ops.js +291 -0
  590. package/dist/platform/ops/admin-items.ops.d.ts +37 -0
  591. package/dist/platform/ops/admin-items.ops.js +278 -0
  592. package/dist/platform/ops/admin.ops.d.ts +38 -0
  593. package/dist/platform/ops/admin.ops.js +497 -0
  594. package/dist/platform/ops/agent-skills.ops.d.ts +50 -0
  595. package/dist/platform/ops/agent-skills.ops.js +509 -0
  596. package/dist/platform/ops/agent-templates.ops.d.ts +17 -0
  597. package/dist/platform/ops/agent-templates.ops.js +272 -0
  598. package/dist/platform/ops/agents.ops.d.ts +37 -0
  599. package/dist/platform/ops/agents.ops.js +730 -0
  600. package/dist/platform/ops/approvals.ops.d.ts +30 -0
  601. package/dist/platform/ops/approvals.ops.js +116 -0
  602. package/dist/platform/ops/background.ops.d.ts +14 -0
  603. package/dist/platform/ops/background.ops.js +134 -0
  604. package/dist/platform/ops/catalog-admin.ops.d.ts +92 -0
  605. package/dist/platform/ops/catalog-admin.ops.js +682 -0
  606. package/dist/platform/ops/channels.ops.d.ts +16 -0
  607. package/dist/platform/ops/channels.ops.js +195 -0
  608. package/dist/platform/ops/components.ops.d.ts +46 -0
  609. package/dist/platform/ops/components.ops.js +854 -0
  610. package/dist/platform/ops/connectors.ops.d.ts +17 -0
  611. package/dist/platform/ops/connectors.ops.js +190 -0
  612. package/dist/platform/ops/conversations.ops.d.ts +30 -0
  613. package/dist/platform/ops/conversations.ops.js +470 -0
  614. package/dist/platform/ops/devices.ops.d.ts +26 -0
  615. package/dist/platform/ops/devices.ops.js +311 -0
  616. package/dist/platform/ops/errors.d.ts +16 -0
  617. package/dist/platform/ops/errors.js +30 -0
  618. package/dist/platform/ops/evals.ops.d.ts +28 -0
  619. package/dist/platform/ops/evals.ops.js +783 -0
  620. package/dist/platform/ops/extensions-admin.ops.d.ts +25 -0
  621. package/dist/platform/ops/extensions-admin.ops.js +372 -0
  622. package/dist/platform/ops/extensions.ops.d.ts +25 -0
  623. package/dist/platform/ops/extensions.ops.js +347 -0
  624. package/dist/platform/ops/inbox.ops.d.ts +25 -0
  625. package/dist/platform/ops/inbox.ops.js +381 -0
  626. package/dist/platform/ops/marketplaces.ops.d.ts +22 -0
  627. package/dist/platform/ops/marketplaces.ops.js +466 -0
  628. package/dist/platform/ops/models.ops.d.ts +25 -0
  629. package/dist/platform/ops/models.ops.js +232 -0
  630. package/dist/platform/ops/org-plugins.ops.d.ts +35 -0
  631. package/dist/platform/ops/org-plugins.ops.js +388 -0
  632. package/dist/platform/ops/org-settings.ops.d.ts +18 -0
  633. package/dist/platform/ops/org-settings.ops.js +127 -0
  634. package/dist/platform/ops/orgs.ops.d.ts +28 -0
  635. package/dist/platform/ops/orgs.ops.js +298 -0
  636. package/dist/platform/ops/other-orgs.d.ts +20 -0
  637. package/dist/platform/ops/other-orgs.js +72 -0
  638. package/dist/platform/ops/paging.d.ts +14 -0
  639. package/dist/platform/ops/paging.js +20 -0
  640. package/dist/platform/ops/platform.ops.d.ts +30 -0
  641. package/dist/platform/ops/platform.ops.js +231 -0
  642. package/dist/platform/ops/plugins.ops.d.ts +35 -0
  643. package/dist/platform/ops/plugins.ops.js +476 -0
  644. package/dist/platform/ops/previewers.ops.d.ts +14 -0
  645. package/dist/platform/ops/previewers.ops.js +109 -0
  646. package/dist/platform/ops/requests.ops.d.ts +14 -0
  647. package/dist/platform/ops/requests.ops.js +191 -0
  648. package/dist/platform/ops/role.d.ts +4 -0
  649. package/dist/platform/ops/role.js +10 -0
  650. package/dist/platform/ops/setup.ops.d.ts +24 -0
  651. package/dist/platform/ops/setup.ops.js +212 -0
  652. package/dist/platform/ops/skills.ops.d.ts +17 -0
  653. package/dist/platform/ops/skills.ops.js +160 -0
  654. package/dist/platform/ops/summary.d.ts +10 -0
  655. package/dist/platform/ops/summary.js +18 -0
  656. package/dist/platform/ops/themes.ops.d.ts +14 -0
  657. package/dist/platform/ops/themes.ops.js +47 -0
  658. package/dist/platform/ops/ui.ops.d.ts +8 -0
  659. package/dist/platform/ops/ui.ops.js +41 -0
  660. package/dist/platform/ops/unavailable.d.ts +23 -0
  661. package/dist/platform/ops/unavailable.js +118 -0
  662. package/dist/platform/parity.d.ts +33 -0
  663. package/dist/platform/parity.js +272 -0
  664. package/dist/platform/platform-ops.module.d.ts +43 -0
  665. package/dist/platform/platform-ops.module.js +142 -0
  666. package/dist/platform/platform.module.d.ts +8 -0
  667. package/dist/platform/platform.module.js +25 -0
  668. package/dist/platform/registry.d.ts +30 -0
  669. package/dist/platform/registry.js +111 -0
  670. package/dist/platform/route-schemas.d.ts +18 -0
  671. package/dist/platform/route-schemas.js +85 -0
  672. package/dist/roles/gateway-role.d.ts +18 -3
  673. package/dist/roles/gateway-role.js +33 -5
  674. package/dist/roles/gateway.module.d.ts +2 -1
  675. package/dist/roles/gateway.module.js +6 -3
  676. package/dist/roles/worker-role.d.ts +6 -4
  677. package/dist/roles/worker-role.js +14 -7
  678. package/dist/roles/worker.module.d.ts +1 -1
  679. package/dist/roles/worker.module.js +21 -1
  680. package/dist/runtime/context/build.d.ts +21 -13
  681. package/dist/runtime/context/build.js +106 -29
  682. package/dist/runtime/context/claude-tools.d.ts +4 -1
  683. package/dist/runtime/context/claude-tools.js +13 -12
  684. package/dist/runtime/context/compaction.js +24 -1
  685. package/dist/runtime/context/device-paths.d.ts +40 -0
  686. package/dist/runtime/context/device-paths.js +48 -0
  687. package/dist/runtime/context/legacy-text.d.ts +22 -0
  688. package/dist/runtime/context/legacy-text.js +37 -0
  689. package/dist/runtime/context/reminders.d.ts +2 -0
  690. package/dist/runtime/context/reminders.js +2 -0
  691. package/dist/runtime/context/run-context.d.ts +65 -0
  692. package/dist/runtime/context/run-context.js +215 -0
  693. package/dist/runtime/context/skills.d.ts +29 -11
  694. package/dist/runtime/context/skills.js +46 -32
  695. package/dist/runtime/context/tool-changes.d.ts +27 -0
  696. package/dist/runtime/context/tool-changes.js +60 -0
  697. package/dist/runtime/hook-calls.d.ts +8 -1
  698. package/dist/runtime/hook-calls.js +40 -7
  699. package/dist/runtime/langgraph-loop.d.ts +3 -1
  700. package/dist/runtime/langgraph-loop.js +36 -17
  701. package/dist/runtime/loop.d.ts +35 -6
  702. package/dist/runtime/maintenance.d.ts +9 -4
  703. package/dist/runtime/maintenance.js +35 -8
  704. package/dist/runtime/model-call.d.ts +54 -11
  705. package/dist/runtime/model-call.js +105 -28
  706. package/dist/runtime/providers.d.ts +149 -29
  707. package/dist/runtime/providers.js +332 -63
  708. package/dist/runtime/run-context.service.d.ts +65 -0
  709. package/dist/runtime/run-context.service.js +236 -0
  710. package/dist/runtime/run-control.d.ts +11 -1
  711. package/dist/runtime/run-control.js +12 -0
  712. package/dist/runtime/run-drafts.d.ts +85 -0
  713. package/dist/runtime/run-drafts.js +230 -0
  714. package/dist/runtime/run-finish.d.ts +1 -1
  715. package/dist/runtime/run-jobs.d.ts +3 -5
  716. package/dist/runtime/run-jobs.js +7 -9
  717. package/dist/runtime/run-queue.d.ts +62 -5
  718. package/dist/runtime/run-queue.js +313 -40
  719. package/dist/runtime/run-worker.d.ts +19 -8
  720. package/dist/runtime/run-worker.js +105 -44
  721. package/dist/runtime/runtime.module.js +13 -3
  722. package/dist/runtime/step-log.d.ts +15 -4
  723. package/dist/runtime/step-log.js +24 -7
  724. package/dist/runtime/stream.controller.d.ts +23 -1
  725. package/dist/runtime/stream.controller.js +60 -3
  726. package/dist/runtime/stream.d.ts +4 -1
  727. package/dist/runtime/stream.js +27 -3
  728. package/dist/runtime/subagents/child.d.ts +55 -7
  729. package/dist/runtime/subagents/child.js +105 -7
  730. package/dist/runtime/subagents/definition.d.ts +31 -26
  731. package/dist/runtime/subagents/definition.js +89 -142
  732. package/dist/runtime/subagents/deliveries.d.ts +71 -0
  733. package/dist/runtime/subagents/deliveries.js +228 -0
  734. package/dist/runtime/subagents/dispatch.d.ts +116 -27
  735. package/dist/runtime/subagents/dispatch.js +213 -142
  736. package/dist/runtime/subagents/limits.d.ts +24 -5
  737. package/dist/runtime/subagents/limits.js +40 -6
  738. package/dist/runtime/subagents/messages.d.ts +95 -0
  739. package/dist/runtime/subagents/messages.js +328 -0
  740. package/dist/runtime/subagents/org-agents.js +2 -1
  741. package/dist/runtime/subagents/preamble.d.ts +4 -4
  742. package/dist/runtime/subagents/preamble.js +9 -7
  743. package/dist/runtime/subagents/progress.d.ts +8 -6
  744. package/dist/runtime/subagents/progress.js +11 -6
  745. package/dist/runtime/subagents/render.d.ts +30 -0
  746. package/dist/runtime/subagents/render.js +53 -0
  747. package/dist/runtime/subagents/roster.d.ts +25 -8
  748. package/dist/runtime/subagents/roster.js +48 -12
  749. package/dist/runtime/subagents/skill-fork.d.ts +4 -3
  750. package/dist/runtime/subagents/skill-fork.js +9 -5
  751. package/dist/runtime/subagents/status.d.ts +14 -0
  752. package/dist/runtime/subagents/status.js +23 -0
  753. package/dist/runtime/subagents/subagents.service.d.ts +9 -6
  754. package/dist/runtime/subagents/subagents.service.js +13 -8
  755. package/dist/runtime/usage-report-jobs.d.ts +88 -0
  756. package/dist/runtime/usage-report-jobs.js +158 -0
  757. package/dist/runtime/usage-report.d.ts +35 -39
  758. package/dist/runtime/usage-report.js +171 -97
  759. package/dist/runtime/waits.d.ts +148 -39
  760. package/dist/runtime/waits.js +426 -112
  761. package/dist/sandbox/jobs.d.ts +40 -13
  762. package/dist/sandbox/jobs.js +57 -20
  763. package/dist/sandbox/leases.d.ts +37 -54
  764. package/dist/sandbox/leases.js +71 -115
  765. package/dist/sandbox/providers.d.ts +34 -7
  766. package/dist/sandbox/providers.js +54 -9
  767. package/dist/sandbox/sandbox-file-reader.d.ts +35 -0
  768. package/dist/sandbox/sandbox-file-reader.js +98 -0
  769. package/dist/sandbox/sandbox.module.d.ts +3 -2
  770. package/dist/sandbox/sandbox.module.js +10 -4
  771. package/dist/sandbox/sandbox.service.d.ts +345 -132
  772. package/dist/sandbox/sandbox.service.js +883 -399
  773. package/dist/sandbox/unreachable.d.ts +30 -0
  774. package/dist/sandbox/unreachable.js +108 -0
  775. package/dist/setup/kernel-checks.d.ts +91 -0
  776. package/dist/setup/kernel-checks.js +295 -0
  777. package/dist/setup/oauth-token-probe.d.ts +47 -0
  778. package/dist/setup/oauth-token-probe.js +108 -0
  779. package/dist/setup/redact-check.d.ts +18 -0
  780. package/dist/setup/redact-check.js +46 -0
  781. package/dist/setup/setup-check-registry.d.ts +86 -0
  782. package/dist/setup/setup-check-registry.js +75 -0
  783. package/dist/setup/setup-checks.controller.d.ts +28 -0
  784. package/dist/setup/setup-checks.controller.js +78 -0
  785. package/dist/setup/setup-checks.schemas.d.ts +38 -0
  786. package/dist/setup/setup-checks.schemas.js +43 -0
  787. package/dist/setup/setup-checks.service.d.ts +144 -0
  788. package/dist/setup/setup-checks.service.js +683 -0
  789. package/dist/setup/setup-guides.controller.d.ts +18 -0
  790. package/dist/setup/setup-guides.controller.js +48 -0
  791. package/dist/setup/setup-guides.schemas.d.ts +10 -0
  792. package/dist/setup/setup-guides.schemas.js +6 -0
  793. package/dist/setup/setup-guides.service.d.ts +126 -0
  794. package/dist/setup/setup-guides.service.js +315 -0
  795. package/dist/setup/setup.module.d.ts +8 -0
  796. package/dist/setup/setup.module.js +31 -0
  797. package/dist/skills/agent-skills.controller.d.ts +48 -0
  798. package/dist/skills/agent-skills.controller.js +131 -0
  799. package/dist/skills/agent-skills.service.d.ts +262 -0
  800. package/dist/skills/agent-skills.service.js +996 -0
  801. package/dist/skills/catalog.d.ts +14 -11
  802. package/dist/skills/catalog.js +32 -50
  803. package/dist/skills/changes.controller.d.ts +12 -22
  804. package/dist/skills/changes.controller.js +27 -56
  805. package/dist/skills/changes.service.d.ts +69 -115
  806. package/dist/skills/changes.service.js +249 -598
  807. package/dist/skills/conversation-catalog.d.ts +53 -0
  808. package/dist/skills/conversation-catalog.js +149 -0
  809. package/dist/skills/invocable.controller.d.ts +1 -1
  810. package/dist/skills/invocable.controller.js +2 -2
  811. package/dist/skills/invocation-keys.d.ts +1 -1
  812. package/dist/skills/invocation-keys.js +1 -1
  813. package/dist/skills/invoke.d.ts +3 -3
  814. package/dist/skills/invoke.js +21 -8
  815. package/dist/skills/package.d.ts +15 -1
  816. package/dist/skills/package.js +14 -1
  817. package/dist/skills/skills.controller.d.ts +32 -6
  818. package/dist/skills/skills.controller.js +64 -11
  819. package/dist/skills/skills.module.js +25 -3
  820. package/dist/skills/skills.schemas.d.ts +44 -0
  821. package/dist/skills/skills.schemas.js +68 -0
  822. package/dist/skills/skills.service.d.ts +123 -26
  823. package/dist/skills/skills.service.js +493 -76
  824. package/dist/skills/usable.d.ts +82 -0
  825. package/dist/skills/usable.js +388 -0
  826. package/dist/themes/render-css.d.ts +13 -0
  827. package/dist/themes/render-css.js +135 -0
  828. package/dist/themes/theme-delivery.service.d.ts +36 -0
  829. package/dist/themes/theme-delivery.service.js +116 -0
  830. package/dist/themes/theme-state.d.ts +116 -0
  831. package/dist/themes/theme-state.js +221 -0
  832. package/dist/themes/theme-usage.d.ts +61 -0
  833. package/dist/themes/theme-usage.js +98 -0
  834. package/dist/themes/themes-public.controller.d.ts +33 -0
  835. package/dist/themes/themes-public.controller.js +98 -0
  836. package/dist/themes/themes.controller.d.ts +13 -0
  837. package/dist/themes/themes.controller.js +38 -0
  838. package/dist/themes/themes.module.d.ts +3 -0
  839. package/dist/themes/themes.module.js +21 -0
  840. package/dist/themes/themes.schemas.d.ts +3 -0
  841. package/dist/themes/themes.schemas.js +2 -0
  842. package/dist/themes/themes.service.d.ts +50 -0
  843. package/dist/themes/themes.service.js +99 -0
  844. package/dist/time-zone.d.ts +5 -0
  845. package/dist/time-zone.js +19 -0
  846. package/dist/tools/admin-connectors.d.ts +69 -0
  847. package/dist/tools/admin-connectors.js +135 -0
  848. package/dist/tools/approvals.controller.js +2 -3
  849. package/dist/tools/approvals.schemas.d.ts +21 -0
  850. package/dist/tools/approvals.schemas.js +15 -0
  851. package/dist/tools/approvals.service.d.ts +26 -2
  852. package/dist/tools/approvals.service.js +44 -5
  853. package/dist/tools/builtin-names.d.ts +104 -0
  854. package/dist/tools/builtin-names.js +164 -0
  855. package/dist/tools/builtins/agent.d.ts +27 -25
  856. package/dist/tools/builtins/agent.js +66 -63
  857. package/dist/tools/builtins/ask-user.d.ts +1 -1
  858. package/dist/tools/builtins/ask-user.js +5 -4
  859. package/dist/tools/builtins/builtin-tools.d.ts +23 -4
  860. package/dist/tools/builtins/builtin-tools.js +78 -12
  861. package/dist/tools/builtins/current-time.d.ts +26 -0
  862. package/dist/tools/builtins/current-time.js +99 -0
  863. package/dist/tools/builtins/handback.d.ts +28 -0
  864. package/dist/tools/builtins/handback.js +53 -0
  865. package/dist/tools/builtins/platform.d.ts +51 -0
  866. package/dist/tools/builtins/platform.js +451 -0
  867. package/dist/tools/builtins/read-tool-output.d.ts +1 -1
  868. package/dist/tools/builtins/read-tool-output.js +2 -2
  869. package/dist/tools/builtins/sandbox/bash.d.ts +5 -5
  870. package/dist/tools/builtins/sandbox/bash.js +291 -39
  871. package/dist/tools/builtins/sandbox/common.d.ts +135 -36
  872. package/dist/tools/builtins/sandbox/common.js +222 -62
  873. package/dist/tools/builtins/sandbox/deliver.d.ts +1 -1
  874. package/dist/tools/builtins/sandbox/deliver.js +19 -16
  875. package/dist/tools/builtins/sandbox/edit.d.ts +1 -1
  876. package/dist/tools/builtins/sandbox/edit.js +64 -50
  877. package/dist/tools/builtins/sandbox/file-state.d.ts +34 -0
  878. package/dist/tools/builtins/sandbox/file-state.js +34 -0
  879. package/dist/tools/builtins/sandbox/glob-match.d.ts +1 -1
  880. package/dist/tools/builtins/sandbox/glob-match.js +1 -1
  881. package/dist/tools/builtins/sandbox/glob.d.ts +1 -1
  882. package/dist/tools/builtins/sandbox/glob.js +17 -12
  883. package/dist/tools/builtins/sandbox/grep.d.ts +7 -4
  884. package/dist/tools/builtins/sandbox/grep.js +153 -34
  885. package/dist/tools/builtins/sandbox/index.d.ts +9 -5
  886. package/dist/tools/builtins/sandbox/index.js +13 -5
  887. package/dist/tools/builtins/sandbox/read.d.ts +2 -2
  888. package/dist/tools/builtins/sandbox/read.js +29 -19
  889. package/dist/tools/builtins/sandbox/task-output.d.ts +79 -0
  890. package/dist/tools/builtins/sandbox/task-output.js +334 -0
  891. package/dist/tools/builtins/sandbox/task-stop.d.ts +10 -0
  892. package/dist/tools/builtins/sandbox/task-stop.js +113 -0
  893. package/dist/tools/builtins/sandbox/write.d.ts +1 -1
  894. package/dist/tools/builtins/sandbox/write.js +51 -44
  895. package/dist/tools/builtins/send-message.d.ts +56 -0
  896. package/dist/tools/builtins/send-message.js +100 -0
  897. package/dist/tools/builtins/skill-load.d.ts +29 -18
  898. package/dist/tools/builtins/skill-load.js +125 -73
  899. package/dist/tools/builtins/tool-search.d.ts +13 -9
  900. package/dist/tools/builtins/tool-search.js +25 -14
  901. package/dist/tools/builtins/web/errors.d.ts +8 -0
  902. package/dist/tools/builtins/web/errors.js +53 -0
  903. package/dist/tools/builtins/web/extract.d.ts +62 -0
  904. package/dist/tools/builtins/web/extract.js +271 -0
  905. package/dist/tools/builtins/web/fetch.d.ts +55 -0
  906. package/dist/tools/builtins/web/fetch.js +175 -0
  907. package/dist/tools/builtins/web/index.d.ts +13 -0
  908. package/dist/tools/builtins/web/index.js +12 -0
  909. package/dist/tools/builtins/web/page-cache.d.ts +25 -0
  910. package/dist/tools/builtins/web/page-cache.js +77 -0
  911. package/dist/tools/builtins/web/search.d.ts +25 -0
  912. package/dist/tools/builtins/web/search.js +210 -0
  913. package/dist/tools/builtins/web/url.d.ts +17 -0
  914. package/dist/tools/builtins/web/url.js +43 -0
  915. package/dist/tools/connector-account-policies.d.ts +51 -0
  916. package/dist/tools/connector-account-policies.js +165 -0
  917. package/dist/tools/connectors.controller.d.ts +74 -9
  918. package/dist/tools/connectors.controller.js +133 -16
  919. package/dist/tools/connectors.schemas.d.ts +27 -0
  920. package/dist/tools/connectors.schemas.js +34 -0
  921. package/dist/tools/connectors.service.d.ts +101 -8
  922. package/dist/tools/connectors.service.js +266 -28
  923. package/dist/tools/credentials.d.ts +23 -0
  924. package/dist/tools/credentials.js +90 -1
  925. package/dist/tools/display-names.d.ts +9 -0
  926. package/dist/tools/display-names.js +24 -0
  927. package/dist/tools/drift.js +5 -5
  928. package/dist/tools/elicitation.js +1 -1
  929. package/dist/tools/extension-tools.controller.d.ts +14 -0
  930. package/dist/tools/extension-tools.controller.js +37 -0
  931. package/dist/tools/info.d.ts +61 -4
  932. package/dist/tools/info.js +119 -33
  933. package/dist/tools/legacy-data.d.ts +34 -0
  934. package/dist/tools/legacy-data.js +76 -0
  935. package/dist/tools/legacy-keys.d.ts +51 -0
  936. package/dist/tools/legacy-keys.js +114 -0
  937. package/dist/tools/naming.d.ts +1 -5
  938. package/dist/tools/naming.js +1 -7
  939. package/dist/tools/oauth/flow-paths.d.ts +1 -1
  940. package/dist/tools/oauth/flow-paths.js +1 -1
  941. package/dist/tools/oauth/flow.js +1 -1
  942. package/dist/tools/oauth/tokens.d.ts +54 -7
  943. package/dist/tools/oauth/tokens.js +87 -17
  944. package/dist/tools/org-tool-switches.d.ts +89 -0
  945. package/dist/tools/org-tool-switches.js +201 -0
  946. package/dist/tools/outputs.js +1 -1
  947. package/dist/tools/pipeline.d.ts +67 -47
  948. package/dist/tools/pipeline.js +319 -380
  949. package/dist/tools/policy.d.ts +30 -23
  950. package/dist/tools/policy.js +142 -64
  951. package/dist/tools/questions.controller.d.ts +1 -1
  952. package/dist/tools/questions.controller.js +1 -1
  953. package/dist/tools/questions.service.d.ts +23 -2
  954. package/dist/tools/questions.service.js +104 -2
  955. package/dist/tools/registry.d.ts +189 -68
  956. package/dist/tools/registry.js +318 -236
  957. package/dist/tools/resources.d.ts +1 -1
  958. package/dist/tools/resources.js +1 -1
  959. package/dist/tools/tools.module.js +31 -3
  960. package/dist/tools/validate.js +1 -1
  961. package/dist/ui/admin-ui.controller.d.ts +56 -0
  962. package/dist/ui/admin-ui.controller.js +192 -0
  963. package/dist/ui/arrangement.d.ts +65 -0
  964. package/dist/ui/arrangement.js +171 -0
  965. package/dist/ui/embed-token.d.ts +2 -2
  966. package/dist/ui/embed-token.js +30 -5
  967. package/dist/ui/registry.d.ts +42 -17
  968. package/dist/ui/registry.js +46 -14
  969. package/dist/ui/slots.controller.d.ts +11 -0
  970. package/dist/ui/slots.controller.js +25 -0
  971. package/dist/ui/ui-stream.d.ts +20 -3
  972. package/dist/ui/ui-stream.js +25 -7
  973. package/dist/ui/ui.schemas.d.ts +70 -0
  974. package/dist/ui/ui.schemas.js +65 -0
  975. package/dist/ui/views.controller.d.ts +35 -49
  976. package/dist/ui/views.controller.js +48 -70
  977. package/dist/ui/views.d.ts +112 -18
  978. package/dist/ui/views.js +254 -47
  979. package/package.json +6 -3
  980. package/src/migrations/0063_tool_keys_claude_code.sql +220 -0
  981. package/src/migrations/0064_account_last_org.sql +7 -0
  982. package/src/migrations/0065_conversation_archive.sql +8 -0
  983. package/src/migrations/0066_extension_display_name.sql +4 -0
  984. package/src/migrations/0067_agent_profiles.sql +20 -0
  985. package/src/migrations/0068_agent_avatar_uploads.sql +7 -0
  986. package/src/migrations/0069_attachments_agent_idx.sql +3 -0
  987. package/src/migrations/0070_background_tasks.sql +37 -0
  988. package/src/migrations/0071_background_tasks_reserve.sql +6 -0
  989. package/src/migrations/0072_background_tasks_stopping.sql +5 -0
  990. package/src/migrations/0073_org_extension_point_defaults.sql +11 -0
  991. package/src/migrations/0074_subagent_tree.sql +50 -0
  992. package/src/migrations/0075_plugin_scope.sql +61 -0
  993. package/src/migrations/0076_skills_created_by_nullable.sql +6 -0
  994. package/src/migrations/0077_scope_requests.sql +52 -0
  995. package/src/migrations/0078_scope_grant_switches.sql +18 -0
  996. package/src/migrations/0079_scope_live_install_switches.sql +19 -0
  997. package/src/migrations/0080_rename_enterprise_admin.sql +18 -0
  998. package/src/migrations/0081_platform_components.sql +129 -0
  999. package/src/migrations/0082_platform_migration.sql +33 -0
  1000. package/src/migrations/0083_plugin_scope_sync_failures.sql +15 -0
  1001. package/src/migrations/0084_org_owned_items.sql +85 -0
  1002. package/src/migrations/0085_agent_templates_phase4.sql +45 -0
  1003. package/src/migrations/0086_org_layering.sql +30 -0
  1004. package/src/migrations/0087_approval_summary.sql +6 -0
  1005. package/src/migrations/0088_environments.sql +80 -0
  1006. package/src/migrations/0089_model_kinds_usage.sql +38 -0
  1007. package/src/migrations/0090_initial_passwords.sql +27 -0
  1008. package/src/migrations/0091_account_time_zone.sql +4 -0
  1009. package/src/migrations/0092_tools_default_on.sql +27 -0
  1010. package/src/migrations/0093_connected_environments.sql +37 -0
  1011. package/src/migrations/0094_environment_paths_idx.sql +7 -0
  1012. package/src/migrations/0095_environment_files_resets.sql +5 -0
  1013. package/src/migrations/0096_environment_demoted_default.sql +18 -0
  1014. package/src/migrations/0097_extension_installs_enabled_at.sql +16 -0
  1015. package/src/migrations/0098_single_provider_running_first.sql +41 -0
  1016. package/src/migrations/0099_channel_connection_guide_ack.sql +6 -0
  1017. package/src/migrations/0100_catalog_files.sql +13 -0
  1018. package/src/migrations/0101_marketplace_icons.sql +32 -0
  1019. package/src/migrations/0102_themes.sql +64 -0
  1020. package/src/migrations/0103_ui_theme_setting.sql +7 -0
  1021. package/src/migrations/0104_connector_tool_account_policies.sql +16 -0
  1022. package/src/migrations/0105_devices_rename.sql +136 -0
  1023. package/src/migrations/0106_setup_guides_v2.sql +10 -0
  1024. package/src/migrations/0107_extension_client_builds.sql +50 -0
  1025. package/src/migrations/0108_question_skipped.sql +6 -0
  1026. package/src/migrations/0109_audit_platform_idx.sql +5 -0
  1027. package/src/migrations/0110_usage_time_idx.sql +8 -0
  1028. package/src/migrations/0111_agent_skill_sharing.sql +22 -0
  1029. package/src/migrations/0112_skill_share_requests.sql +4 -0
  1030. package/dist/catalog/upgrade-targets.d.ts +0 -56
  1031. package/dist/catalog/upgrade-targets.js +0 -90
  1032. package/dist/conversations/sandbox-status.d.ts +0 -24
  1033. package/dist/conversations/sandbox-status.js +0 -52
  1034. package/dist/extensions/org-config.controller.d.ts +0 -24
  1035. package/dist/extensions/org-config.controller.js +0 -62
  1036. package/dist/tools/builtins/sandbox/names.d.ts +0 -7
  1037. package/dist/tools/builtins/sandbox/names.js +0 -20
  1038. package/dist/tools/builtins/skill-write.d.ts +0 -59
  1039. package/dist/tools/builtins/skill-write.js +0 -244
@@ -1,11 +1,12 @@
1
1
  import { randomUUID } from "node:crypto";
2
2
  import { sql } from "kysely";
3
- import { normalizeStoredDefinition } from "../../agents/definition.js";
4
3
  import { audit } from "../../identity/audit.js";
5
4
  import { forkAgentUnknownText } from "../../skills/invoke.js";
6
- import { AGENT_REFUSALS } from "../../tools/builtins/agent.js";
5
+ import { SEND_MESSAGE } from "../../tools/builtin-names.js";
6
+ import { AGENT_REFUSALS, AGENT_TOOL, agentStartedText, } from "../../tools/builtins/agent.js";
7
7
  import { ACTIVE_RUN_STATUSES, runJobId } from "../run-jobs.js";
8
- import { effectiveDefinition, narrowFollowUp, SubagentTypeGoneError, } from "./definition.js";
8
+ import { childResult, finishedEvent } from "./child.js";
9
+ import { effectiveDefinition, SubagentTypeGoneError, } from "./definition.js";
9
10
  import { subagentLimits } from "./limits.js";
10
11
  import { auditRefusal, checkOrgAgent, currentAgentDefinition } from "./org-agents.js";
11
12
  import { SUBAGENT_PREAMBLE } from "./preamble.js";
@@ -17,38 +18,40 @@ const GENERAL_ENTRY = {
17
18
  source: "general",
18
19
  description: GENERAL_PURPOSE_DESCRIPTION,
19
20
  };
21
+ /**
22
+ * The depth of the run behind `ctx` below the root (agent map spec §6): 0 for a root
23
+ * conversation's run, its parent's depth plus one for a sub-agent's.
24
+ */
25
+ export const runDepth = (ctx) => ctx.parent === undefined ? 0 : ctx.parent.depth + 1;
20
26
  /** Idempotency key of the parent's `subagent_dispatched` event. */
21
27
  export const dispatchedIdemKey = (runId, callId) => `subagent_dispatched:${runId}:${callId}`;
22
28
  /**
23
- * Dispatches the sub-agent of one `agent` call (spec §7.1), after the pipeline's validation,
24
- * policy, approval and `tool.preExecute` stages. A new sub-agent: resolves its type and effective
25
- * definition, then in one transaction (holding the parent run's row lock, so the dispatches of one
26
- * run serialize) inserts the child conversation, appends `subagent_started` and the task message,
27
- * inserts the child run (`queued`) and the `subagent_dispatches` row, appends `subagent_dispatched`
28
- * to the parent and audits `subagent.dispatched`. A `resume` appends the follow-up message and
29
- * starts the child's next run the same way. After commit the child run is enqueued; a failed
30
- * enqueue only logs (the dispatch is durable, the wait sweep re-enqueues it).
29
+ * Dispatches the sub-agent of one `Agent` call (spec §7.1, agent map spec §4.1), after the
30
+ * pipeline's validation, policy, approval and `tool.preExecute` stages: resolves its type and
31
+ * effective definition, then in one transaction (holding the parent run's row lock, so the
32
+ * dispatches of one run serialize) inserts the child conversation, appends `subagent_started` and
33
+ * the task message, inserts the child run (`queued`) and the `subagent_dispatches` row, appends
34
+ * `subagent_dispatched` and the call's `tool_result` ({@link agentStartedText}: the sub-agent runs
35
+ * in the background) to the parent and audits `subagent.dispatched` and `tool.called`. After
36
+ * commit the child run is enqueued; a failed enqueue only logs (the dispatch is durable, the wait
37
+ * sweep re-enqueues it). A fork invocation (`forSkill`) writes no `tool_result`: its run waits on
38
+ * the child (`advanceSkillForks`).
31
39
  *
32
- * Refusals (§4.5) start nothing: a call from a sub-agent, an unknown type, an org agent that fails
33
- * one of its gates ({@link orgAgentGates}, at every dispatch and follow-up; audited
34
- * `subagent.refused`), `resume` with `subagent_type` / `model`, a `resume` id that is not a
35
- * sub-agent of this conversation (whatever it is otherwise: no detail about other conversations),
36
- * or one whose run is still active.
40
+ * Refusals (§4.5) start nothing: a call from a run at `subagents.maxDepth` (agent map spec §4.1:
41
+ * its definition has no `Agent`, so only a forged call or a lowered limit gets here), an unknown
42
+ * type, or an org agent that fails one of its gates ({@link orgAgentGates}, checked at every
43
+ * level; audited `subagent.refused`).
37
44
  */
38
45
  export async function dispatchSubagent(d, a) {
39
46
  const { ctx, input } = a;
40
- if (ctx.parent !== undefined)
41
- return refused(AGENT_REFUSALS.notAvailableHere);
42
- if (input.resume !== undefined) {
43
- if (input.subagent_type !== undefined || input.model !== undefined) {
44
- return refused(AGENT_REFUSALS.resumeWithType);
45
- }
46
- return resume(d, { ...a, id: input.resume });
47
- }
47
+ const { maxDepth } = await subagentLimits(d.db, d.config, ctx.orgId);
48
+ const childDepth = runDepth(ctx) + 1;
49
+ if (childDepth > maxDepth)
50
+ return refused(AGENT_REFUSALS.depthLimit(maxDepth));
48
51
  const requested = input.subagent_type ?? "general-purpose";
49
52
  const unknown = (types) => refused(AGENT_REFUSALS.unknownType(requested, types.map((e) => e.type)));
50
53
  const fork = a.forSkill;
51
- const listed = await resolveRoster(d.db, ctx.orgId, ctx.agent);
54
+ const listed = await resolveRoster(d.db, ctx.orgId, ctx.agent, d.log);
52
55
  const roster = fork !== undefined && !listed.some((e) => e.type === GENERAL_ENTRY.type)
53
56
  ? [GENERAL_ENTRY, ...listed]
54
57
  : listed;
@@ -75,6 +78,8 @@ export async function dispatchSubagent(d, a) {
75
78
  parent: ctx.agent,
76
79
  parentAgentId: ctx.agentId,
77
80
  entry,
81
+ childDepth,
82
+ maxDepth,
78
83
  ...(input.model !== undefined && { tier: input.model }),
79
84
  ...(orgAgent !== undefined && { orgAgent }),
80
85
  });
@@ -84,7 +89,7 @@ export async function dispatchSubagent(d, a) {
84
89
  // the template went away since the roster was read (spec §13: refuse, never fail the run);
85
90
  // the list offered instead is read again, without it
86
91
  if (e instanceof SubagentTypeGoneError) {
87
- return unknown(await resolveRoster(d.db, ctx.orgId, ctx.agent));
92
+ return unknown(await resolveRoster(d.db, ctx.orgId, ctx.agent, d.log));
88
93
  }
89
94
  throw e;
90
95
  }
@@ -116,6 +121,7 @@ export async function dispatchSubagent(d, a) {
116
121
  kind: "subagent",
117
122
  parent_conversation_id: ctx.conversationId,
118
123
  subagent_type: entry.type,
124
+ subagent_depth: childDepth,
119
125
  })
120
126
  .execute();
121
127
  const [, task] = await d.eventLog.appendIn(childId, [
@@ -155,91 +161,6 @@ export async function dispatchSubagent(d, a) {
155
161
  // a new sub-agent's writer never refuses
156
162
  return out ?? refused(AGENT_REFUSALS.notAvailableHere);
157
163
  }
158
- /**
159
- * A follow-up to an existing sub-agent of this conversation (§4.2 `resume`). It keeps the frozen
160
- * definition's instructions and model (replay), but is checked against what the parent may use
161
- * now (final review I1): a `general` / inline / plugin child's type must still be in the roster
162
- * of the dispatching run's version (a plugin template by its template id), else the call is
163
- * refused as an unknown type; an org agent child passes its gates. Its tools and org skills are
164
- * intersected with the current version ({@link narrowFollowUp}: the dispatching run's version,
165
- * or the org agent's current version as the gates read it under the lock), and the result is
166
- * recorded on the follow-up's task message for the run and for replay.
167
- */
168
- async function resume(d, a) {
169
- const { ctx } = a;
170
- const child = await d.db
171
- .selectFrom("conversations")
172
- .select(["id", "subagent_type"])
173
- .where("id", "=", a.id)
174
- .where("org_id", "=", ctx.orgId)
175
- .where("kind", "=", "subagent")
176
- .where("parent_conversation_id", "=", ctx.conversationId)
177
- .executeTakeFirst();
178
- if (!child)
179
- return refused(AGENT_REFUSALS.noSuchAgent(a.id));
180
- const started = await d.eventLog.findByIdem(child.id, "subagent_started");
181
- if (started?.type !== "subagent_started")
182
- return refused(AGENT_REFUSALS.noSuchAgent(a.id));
183
- const { template } = started.payload;
184
- const agentType = child.subagent_type ?? started.payload.agentType;
185
- // an org agent's gates hold for every follow-up too (§5.5); it keeps its frozen version
186
- if (template.source === "agent") {
187
- const gates = await orgAgentGates(d.db, a, template.id ?? "", agentType, true);
188
- if ("refused" in gates)
189
- return gates.refused;
190
- }
191
- else {
192
- const roster = await resolveRoster(d.db, ctx.orgId, ctx.agent);
193
- const entry = template.source === "plugin"
194
- ? roster.find((e) => e.source === "plugin" && e.templateId === template.id)
195
- : findType(roster, agentType);
196
- if (entry?.source !== template.source) {
197
- return refused(AGENT_REFUSALS.unknownType(agentType, roster.map((e) => e.type)));
198
- }
199
- }
200
- const frozen = normalizeStoredDefinition(started.payload.definition);
201
- const plan = {
202
- childConversationId: child.id,
203
- agentType,
204
- source: template.source,
205
- agentId: template.source === "agent" ? (template.id ?? "") : ctx.agentId,
206
- agentVersion: template.source === "agent" ? (template.version ?? ctx.agentVersion) : ctx.agentVersion,
207
- resumed: true,
208
- model: started.payload.definition.model,
209
- tierFallback: false,
210
- };
211
- return commit(d, a, plan, async (t, checked) => {
212
- const current = template.source === "agent" ? checked?.definition : ctx.agent;
213
- if (current === undefined)
214
- throw new Error("org agent follow-up without its checked version");
215
- const activeRun = () => t
216
- .selectFrom("runs")
217
- .select("id")
218
- .where("conversation_id", "=", child.id)
219
- .where("status", "in", ACTIVE_RUN_STATUSES)
220
- .executeTakeFirst();
221
- // An active child is refused before its row is locked: a running child's token append locks
222
- // its conversation row and then this parent run's row, which `commit` already holds, so
223
- // waiting for the child's row here would be a lock-order cycle (review I1). The parent row
224
- // lock serializes this parent's dispatches, so an earlier follow-up's run is visible here.
225
- if (await activeRun())
226
- return null;
227
- // the child's row lock serializes follow-ups to one sub-agent; no run holds it now, so it is
228
- // never held by an append waiting for the parent row
229
- await t
230
- .selectFrom("conversations")
231
- .select("id")
232
- .where("id", "=", child.id)
233
- .forUpdate()
234
- .executeTakeFirst();
235
- if (await activeRun())
236
- return null;
237
- const [task] = await d.eventLog.appendIn(child.id, [
238
- taskMessage(ctx, a.callId, a.input.prompt, narrowFollowUp(frozen, current)),
239
- ]);
240
- return task;
241
- }).then((r) => r ?? refused(AGENT_REFUSALS.stillRunning(a.id)));
242
- }
243
164
  /**
244
165
  * The gates of an org agent sub-agent (§5.5) for this call: the allowlist of the parent agent's
245
166
  * **current** version (R5), the agent's `dispatchable`, its visibility to the person who started
@@ -248,7 +169,7 @@ async function resume(d, a) {
248
169
  * sub-agent freezes the definition read here) and again inside it under the parent run's row lock
249
170
  * ({@link commit}), so a gate revoked in between refuses (batch 9 review M1).
250
171
  */
251
- async function orgAgentGates(db, a, agentId, agentType, resumed) {
172
+ export async function orgAgentGates(db, a, agentId, agentType, resumed) {
252
173
  const { ctx } = a;
253
174
  const parentDefinition = (await currentAgentDefinition(db, ctx.agentId)) ?? {};
254
175
  const check = await checkOrgAgent(db, {
@@ -272,13 +193,19 @@ async function orgAgentGates(db, a, agentId, agentType, resumed) {
272
193
  });
273
194
  return { refused: refused(AGENT_REFUSALS.agentNotAvailable(agentType)) };
274
195
  }
275
- const taskMessage = (ctx, callId, prompt, narrowed,
276
196
  /**
277
- * A fork invocation's record: the child's log then holds the invocation, so its `skill_load`
197
+ * A sub-agent's task message, or (`message`) a `SendMessage` from its parent (agent map spec
198
+ * §5.1: `dispatch.kind: "message"`, idempotent by the sending call, with the follow-up narrowing
199
+ * the run it triggers uses).
200
+ */
201
+ export const taskMessage = (ctx, callId, prompt, narrowed,
202
+ /**
203
+ * A fork invocation's record: the child's log then holds the invocation, so its `Skill`
278
204
  * is offered and resolves the invoked version (phase D).
279
205
  */
280
- skill) => ({
206
+ skill, message = false) => ({
281
207
  type: "user_message",
208
+ ...(message && { idemKey: sentMessageIdemKey(ctx.runId, callId) }),
282
209
  payload: {
283
210
  content: [{ type: "text", text: prompt }],
284
211
  ...(skill !== undefined && { skill }),
@@ -287,10 +214,39 @@ skill) => ({
287
214
  parentConversationId: ctx.conversationId,
288
215
  parentRunId: ctx.runId,
289
216
  callId,
217
+ ...(message && { kind: "message" }),
290
218
  ...(narrowed !== undefined && { narrowed }),
291
219
  },
292
220
  },
293
221
  });
222
+ /** Idempotency key of a `SendMessage`'s `user_message` in the sub-agent's log. */
223
+ export const sentMessageIdemKey = (runId, callId) => `send_message:${runId}:${callId}`;
224
+ const isActiveStatus = (status) => ACTIVE_RUN_STATUSES.includes(status);
225
+ /**
226
+ * The result text of a child run that ended before its parent's call got a result and was never
227
+ * delivered (agent map spec, rc upgrade: a foreground-era dispatch whose rc finisher wrote
228
+ * `subagent_finished` and resumed the parent): the child's report (`childResult`), with the
229
+ * parent's `subagent_finished` appended in this transaction when it is missing (idempotent by its
230
+ * key), so the undelivered sweep never delivers it a second time. Null when the parent already
231
+ * has a delivery for the run (it carries the result) or the run has no terminal event yet.
232
+ */
233
+ async function rcFinishedResult(d, row) {
234
+ const delivered = await d.db
235
+ .selectFrom("conversation_events")
236
+ .select("seq")
237
+ .where("conversation_id", "=", row.parentConversationId)
238
+ .where("type", "=", "subagent_delivery")
239
+ .where(sql `payload ->> 'childRunId'`, "=", row.childRunId)
240
+ .limit(1)
241
+ .executeTakeFirst();
242
+ if (delivered)
243
+ return null;
244
+ const r = await childResult(d.eventLog, row);
245
+ if (!r)
246
+ return null;
247
+ await d.eventLog.appendIn(row.parentConversationId, [finishedEvent(row, r.finished)]);
248
+ return r.content;
249
+ }
294
250
  /**
295
251
  * {@link commit}'s transaction (run by `SubagentsService.commitDispatch`, `d.db` its handle).
296
252
  * Null when `child` refused.
@@ -310,7 +266,7 @@ export async function commitDispatchIn(d, a, plan, child) {
310
266
  .executeTakeFirst();
311
267
  const parent = await t
312
268
  .selectFrom("runs")
313
- .select(["status", "subagent_tokens_used"])
269
+ .select(["status", "subagent_tokens_used", "budget_run_id"])
314
270
  .where("id", "=", ctx.runId)
315
271
  .forUpdate()
316
272
  .executeTakeFirst();
@@ -322,9 +278,41 @@ export async function commitDispatchIn(d, a, plan, child) {
322
278
  .where("sd.parent_call_id", "=", callId)
323
279
  .executeTakeFirst();
324
280
  if (existing) {
281
+ // An `Agent` call's result was written with its first dispatch (this returns it). A call
282
+ // dispatched before `Agent` ran in the background (a foreground wait in flight across the
283
+ // upgrade) gets the immediate result now, so the log never keeps it unpaired; such a call
284
+ // reaches here again through the pipeline's policy stages, so it may ask for approval again.
285
+ let result = null;
286
+ if (a.forSkill === undefined) {
287
+ // an rc child that already ended under the foreground wait, whose rc finisher wrote
288
+ // `subagent_finished` and resumed this run (no delivery; the sweep never delivers a run with
289
+ // `subagent_finished`): its report is this call's result, as the rc gave it, or it is lost.
290
+ // Only while the call has no result: a call that has one (a background dispatch's second
291
+ // holder) keeps it, and its child's finish stays to its delivery or the undelivered sweep.
292
+ const resultKey = resultEvent(ctx, callId, AGENT_TOOL, "").idemKey;
293
+ const finished = a.sent === undefined &&
294
+ existing.status !== null &&
295
+ !isActiveStatus(existing.status) &&
296
+ (await d.eventLog.findByIdem(ctx.conversationId, resultKey)) === undefined
297
+ ? await rcFinishedResult(d, {
298
+ parentRunId: ctx.runId,
299
+ parentCallId: callId,
300
+ parentConversationId: ctx.conversationId,
301
+ childConversationId: existing.child_conversation_id,
302
+ childRunId: existing.child_run_id,
303
+ })
304
+ : null;
305
+ const [ev] = await d.eventLog.appendIn(ctx.conversationId, [
306
+ resultEvent(ctx, callId, a.call?.toolKey ?? AGENT_TOOL, finished ?? a.sent?.content ?? agentStartedText(existing.child_conversation_id)),
307
+ ]);
308
+ if (ev?.type === "tool_result")
309
+ result = { content: ev.payload.content, seq: ev.seq };
310
+ }
325
311
  return {
326
312
  kind: "existing",
327
313
  childRunId: existing.child_run_id,
314
+ childConversationId: existing.child_conversation_id,
315
+ result,
328
316
  // still queued: the first holder may have died before its enqueue (review M4)
329
317
  requeue: existing.status === "queued" && existing.trigger_seq !== null
330
318
  ? {
@@ -336,7 +324,18 @@ export async function commitDispatchIn(d, a, plan, child) {
336
324
  }
337
325
  if (parent?.status !== "running")
338
326
  return { kind: "stopped" };
339
- const limit = await limitRefusal(t, d, ctx, parent.subagent_tokens_used);
327
+ // the tree's budget run (agent map spec §6), locked after the parent run so the dispatches of
328
+ // every run of one tree serialize on it; the parent run itself when it opened the window
329
+ const budgetRunId = parent.budget_run_id ?? ctx.runId;
330
+ const tokensUsed = budgetRunId === ctx.runId
331
+ ? parent.subagent_tokens_used
332
+ : ((await t
333
+ .selectFrom("runs")
334
+ .select("subagent_tokens_used")
335
+ .where("id", "=", budgetRunId)
336
+ .forUpdate()
337
+ .executeTakeFirst())?.subagent_tokens_used ?? 0);
338
+ const limit = await limitRefusal(t, d, ctx, budgetRunId, tokensUsed, a.sent?.refusals ?? AGENT_REFUSALS);
340
339
  if (limit !== null)
341
340
  return { kind: "limit", content: limit };
342
341
  let checked;
@@ -367,6 +366,7 @@ export async function commitDispatchIn(d, a, plan, child) {
367
366
  agent_version: plan.agentVersion,
368
367
  trigger_account_id: ctx.accountId,
369
368
  trigger_seq: task.seq,
369
+ budget_run_id: budgetRunId,
370
370
  })
371
371
  .execute();
372
372
  await t
@@ -379,9 +379,14 @@ export async function commitDispatchIn(d, a, plan, child) {
379
379
  child_conversation_id: plan.childConversationId,
380
380
  child_run_id: childRunId,
381
381
  resumed: plan.resumed,
382
+ budget_run_id: budgetRunId,
383
+ for_skill: a.forSkill !== undefined,
382
384
  })
383
385
  .execute();
384
- const [dispatched] = await d.eventLog.appendIn(ctx.conversationId, [
386
+ // an org agent runs on its own model (§5.4): a `model` on the call was ignored
387
+ const ownModel = plan.source === "agent" && input.model !== undefined;
388
+ const content = a.sent?.content ?? agentStartedText(plan.childConversationId, { ownModel });
389
+ const parentEvents = await d.eventLog.appendIn(ctx.conversationId, [
385
390
  {
386
391
  type: "subagent_dispatched",
387
392
  runId: ctx.runId,
@@ -399,6 +404,11 @@ export async function commitDispatchIn(d, a, plan, child) {
399
404
  ...(a.forSkill !== undefined && { invokedSeq: a.forSkill.seq }),
400
405
  },
401
406
  },
407
+ // an `Agent` call's result is immediate (agent map spec §4.1): the sub-agent works in the
408
+ // background and reports through `subagent_delivery`; a fork invocation has no tool call
409
+ ...(a.forSkill === undefined
410
+ ? [resultEvent(ctx, callId, a.call?.toolKey ?? AGENT_TOOL, content)]
411
+ : []),
402
412
  ]);
403
413
  await audit(t, {
404
414
  actorAccountId: ctx.accountId,
@@ -419,14 +429,44 @@ export async function commitDispatchIn(d, a, plan, child) {
419
429
  childRunId,
420
430
  },
421
431
  });
432
+ if (a.forSkill === undefined) {
433
+ await audit(t, {
434
+ actorAccountId: ctx.accountId,
435
+ orgId: ctx.orgId,
436
+ action: "tool.called",
437
+ target: ctx.conversationId,
438
+ detail: {
439
+ toolKey: a.sent !== undefined ? SEND_MESSAGE : AGENT_TOOL,
440
+ isError: false,
441
+ durationMs: a.call === undefined ? null : Math.max(0, Date.now() - a.call.startedAt),
442
+ agentId: ctx.agentId,
443
+ agentVersion: ctx.agentVersion,
444
+ conversationId: ctx.conversationId,
445
+ runId: ctx.runId,
446
+ callId,
447
+ ...a.call?.authorization,
448
+ },
449
+ });
450
+ }
422
451
  return {
423
452
  kind: "written",
424
453
  childRunId,
425
454
  childSeq: task.seq,
426
- parentSeq: dispatched.seq,
455
+ parentSeq: Math.max(...parentEvents.map((e) => e.seq)),
456
+ content,
427
457
  };
428
458
  }
429
- async function commit(d, a, plan,
459
+ /**
460
+ * The immediate `tool_result` of an `Agent` call ({@link agentStartedText}) or of a `SendMessage`
461
+ * that started an idle sub-agent, idempotent by the call.
462
+ */
463
+ const resultEvent = (ctx, callId, toolKey, content) => ({
464
+ type: "tool_result",
465
+ runId: ctx.runId,
466
+ idemKey: `tool_result:${ctx.runId}:${callId}`,
467
+ payload: { step: ctx.step, callId, toolKey, content, isError: false },
468
+ });
469
+ export async function commit(d, a, plan,
430
470
  /** Writes the child's events; `checked` is the org agent version the in-lock gates passed. */
431
471
  child) {
432
472
  const { ctx } = a;
@@ -447,11 +487,19 @@ child) {
447
487
  err,
448
488
  }));
449
489
  }
450
- return { kind: "dispatched", childRunId: out.childRunId };
490
+ if (out.result !== null)
491
+ await d.eventLog.notify(ctx.conversationId, out.result.seq);
492
+ return {
493
+ kind: "dispatched",
494
+ childRunId: out.childRunId,
495
+ childConversationId: out.childConversationId,
496
+ content: out.result?.content ?? a.sent?.content ?? agentStartedText(out.childConversationId),
497
+ };
451
498
  }
452
499
  // the result is never read: the run is over
453
- if (out.kind === "stopped")
454
- return refused(AGENT_REFUSALS.notAvailableHere);
500
+ if (out.kind === "stopped") {
501
+ return refused((a.sent?.refusals ?? AGENT_REFUSALS).notAvailableHere);
502
+ }
455
503
  if (out.kind === "limit")
456
504
  return refused(out.content);
457
505
  if (out.kind === "gate")
@@ -467,31 +515,54 @@ child) {
467
515
  // the dispatch is committed: the wait sweep re-enqueues the queued child run
468
516
  d.log.error("cannot enqueue sub-agent run; the sweep retries", { childRunId, jobId, err });
469
517
  }
470
- return { kind: "dispatched", childRunId };
518
+ return {
519
+ kind: "dispatched",
520
+ childRunId,
521
+ childConversationId: plan.childConversationId,
522
+ content: out.content,
523
+ };
471
524
  }
472
525
  /**
473
- * The §4.5 refusal of a dispatch the parent run's limits forbid, or null. Runs under the parent
474
- * run's row lock; `tokensUsed` is the counter read with that lock.
526
+ * The §4.5 refusal of a dispatch the limits forbid, or null (agent map spec §6). Runs under the
527
+ * parent conversation's, the parent run's and the budget run's row locks; `tokensUsed` is the
528
+ * budget run's counter read with its lock. A dispatch from a run at `maxDepth` is refused (the
529
+ * limit may have been lowered since the call's definition was frozen); tokens and dispatches
530
+ * (follow-ups included) count the whole tree on its budget run; concurrency counts the child
531
+ * conversations of the parent conversation that have an active run, whatever started that run.
475
532
  */
476
- async function limitRefusal(t, d, ctx, tokensUsed) {
533
+ async function limitRefusal(t, d, ctx, budgetRunId, tokensUsed, texts) {
477
534
  const limits = await subagentLimits(t, d.config, ctx.orgId);
478
- if (Number(tokensUsed) >= limits.maxTokensPerRun) {
479
- return AGENT_REFUSALS.budget(limits.maxTokensPerRun);
535
+ if (runDepth(ctx) >= limits.maxDepth)
536
+ return texts.depthLimit(limits.maxDepth);
537
+ // 0: no limit (the deployment config or the org's override)
538
+ if (limits.maxTokensPerRun > 0 && Number(tokensUsed) >= limits.maxTokensPerRun) {
539
+ return texts.budget(limits.maxTokensPerRun);
480
540
  }
481
- const counts = await t
482
- .selectFrom("subagent_dispatches as sd")
483
- .innerJoin("runs as cr", "cr.id", "sd.child_run_id")
484
- .select([
485
- sql `count(*)`.as("total"),
486
- sql `count(*) FILTER (WHERE cr.status IN (${sql.join(ACTIVE_RUN_STATUSES)}))`.as("active"),
487
- ])
488
- .where("sd.parent_run_id", "=", ctx.runId)
489
- .executeTakeFirstOrThrow();
490
- if (Number(counts.total) >= limits.maxDispatchesPerRun) {
491
- return AGENT_REFUSALS.tooManyDispatches(limits.maxDispatchesPerRun);
541
+ if (limits.maxDispatchesPerRun > 0) {
542
+ const total = await t
543
+ .selectFrom("subagent_dispatches")
544
+ .select(sql `count(*)`.as("n"))
545
+ .where("budget_run_id", "=", budgetRunId)
546
+ .executeTakeFirstOrThrow();
547
+ if (Number(total.n) >= limits.maxDispatchesPerRun) {
548
+ return texts.tooManyDispatches(limits.maxDispatchesPerRun);
549
+ }
492
550
  }
493
- if (Number(counts.active) >= limits.maxConcurrentPerRun) {
494
- return AGENT_REFUSALS.tooManyConcurrent(limits.maxConcurrentPerRun);
551
+ // every child conversation with an active run of any origin: a dispatch, a message it never
552
+ // absorbed (a continuation run) or a wake run all hold its slot
553
+ const active = await t
554
+ .selectFrom("conversations as c")
555
+ .select(sql `count(*)`.as("n"))
556
+ .where("c.parent_conversation_id", "=", ctx.conversationId)
557
+ .where("c.kind", "=", "subagent")
558
+ .where("c.deleted_at", "is", null)
559
+ .where(({ exists, selectFrom }) => exists(selectFrom("runs as cr")
560
+ .select(sql `1`.as("one"))
561
+ .whereRef("cr.conversation_id", "=", "c.id")
562
+ .where("cr.status", "in", ACTIVE_RUN_STATUSES)))
563
+ .executeTakeFirstOrThrow();
564
+ if (Number(active.n) >= limits.maxConcurrentPerConversation) {
565
+ return texts.tooManyConcurrent(limits.maxConcurrentPerConversation);
495
566
  }
496
567
  return null;
497
568
  }
@@ -4,9 +4,15 @@ import type { KernelSchemaDb } from "../../db/kernel-schema.js";
4
4
  export interface SubagentsConfig {
5
5
  get(): Pick<KernelConfig, "subagents">;
6
6
  }
7
- /** The sub-agent limits of one parent run (sub-agents spec §8.2). */
7
+ /**
8
+ * The sub-agent limits of an organization (sub-agents spec §8.2, agent map spec §6): the depth
9
+ * below the root, the active children of one conversation, and the dispatches and tokens of one
10
+ * tree, counted on its budget run ({@link budgetRunOf}). `maxDispatchesPerRun` and
11
+ * `maxTokensPerRun` of 0 mean no limit.
12
+ */
8
13
  export interface SubagentLimits {
9
- maxConcurrentPerRun: number;
14
+ maxDepth: number;
15
+ maxConcurrentPerConversation: number;
10
16
  maxDispatchesPerRun: number;
11
17
  maxTokensPerRun: number;
12
18
  }
@@ -21,8 +27,21 @@ export declare function subagentLimits(
21
27
  /** The pool, or the context's handle (a `@Transactional` caller's transaction). */
22
28
  db: KernelSchemaDb, config: SubagentsConfig, orgId: string): Promise<SubagentLimits>;
23
29
  /**
24
- * Whether the sub-agents of `parentRunId` have used their token budget (§8.3): its
25
- * `subagent_tokens_used`, read fresh, at or over `maxTokensPerRun`. A sub-agent's step checks it
30
+ * The budget run of `runId` (agent map spec §6): its `budget_run_id`, or the run itself when it has
31
+ * none (a person-triggered run opens its own window) or does not exist. The dispatch count and the
32
+ * token counter of a whole tree live on this run.
33
+ */
34
+ export declare function budgetRunOf(db: KernelSchemaDb, runId: string): Promise<string>;
35
+ /**
36
+ * The current budget window of the tree rooted at `rootConversationId` (agent map spec §6): its
37
+ * newest run that opened its own window (`budget_run_id` null: a person-triggered run), or null
38
+ * when it has none. A wake run of any conversation of the tree carries it as its `budget_run_id`,
39
+ * so a chain of wakes never opens a new window.
40
+ */
41
+ export declare function budgetWindowOf(db: KernelSchemaDb, rootConversationId: string): Promise<string | null>;
42
+ /**
43
+ * Whether the sub-agents of a tree have used their token budget (§8.3): the budget run's
44
+ * `subagent_tokens_used`, read fresh, at or over `maxTokensPerRun` (never when it is 0: no limit). A sub-agent's step checks it
26
45
  * before every model request and ends its run with `budget` when it is.
27
46
  */
28
- export declare function subagentBudgetUsedUp(db: KernelSchemaDb, config: SubagentsConfig, orgId: string, parentRunId: string): Promise<boolean>;
47
+ export declare function subagentBudgetUsedUp(db: KernelSchemaDb, config: SubagentsConfig, orgId: string, budgetRunId: string): Promise<boolean>;
@@ -13,24 +13,58 @@ db, config, orgId) {
13
13
  const base = config.get().subagents;
14
14
  const over = await readSubagentLimitOverride(db, orgId);
15
15
  return {
16
- maxConcurrentPerRun: over?.maxConcurrentPerRun ?? base.maxConcurrentPerRun,
16
+ maxDepth: over?.maxDepth ?? base.maxDepth,
17
+ maxConcurrentPerConversation: over?.maxConcurrentPerConversation ?? base.maxConcurrentPerConversation,
17
18
  maxDispatchesPerRun: over?.maxDispatchesPerRun ?? base.maxDispatchesPerRun,
18
19
  maxTokensPerRun: over?.maxTokensPerRun ?? base.maxTokensPerRun,
19
20
  };
20
21
  }
21
22
  /**
22
- * Whether the sub-agents of `parentRunId` have used their token budget (§8.3): its
23
- * `subagent_tokens_used`, read fresh, at or over `maxTokensPerRun`. A sub-agent's step checks it
23
+ * The budget run of `runId` (agent map spec §6): its `budget_run_id`, or the run itself when it has
24
+ * none (a person-triggered run opens its own window) or does not exist. The dispatch count and the
25
+ * token counter of a whole tree live on this run.
26
+ */
27
+ export async function budgetRunOf(db, runId) {
28
+ const row = await db
29
+ .selectFrom("runs")
30
+ .select("budget_run_id")
31
+ .where("id", "=", runId)
32
+ .executeTakeFirst();
33
+ return row?.budget_run_id ?? runId;
34
+ }
35
+ /**
36
+ * The current budget window of the tree rooted at `rootConversationId` (agent map spec §6): its
37
+ * newest run that opened its own window (`budget_run_id` null: a person-triggered run), or null
38
+ * when it has none. A wake run of any conversation of the tree carries it as its `budget_run_id`,
39
+ * so a chain of wakes never opens a new window.
40
+ */
41
+ export async function budgetWindowOf(db, rootConversationId) {
42
+ const row = await db
43
+ .selectFrom("runs")
44
+ .select("id")
45
+ .where("conversation_id", "=", rootConversationId)
46
+ .where("budget_run_id", "is", null)
47
+ .orderBy("created_at", "desc")
48
+ .limit(1)
49
+ .executeTakeFirst();
50
+ return row?.id ?? null;
51
+ }
52
+ /**
53
+ * Whether the sub-agents of a tree have used their token budget (§8.3): the budget run's
54
+ * `subagent_tokens_used`, read fresh, at or over `maxTokensPerRun` (never when it is 0: no limit). A sub-agent's step checks it
24
55
  * before every model request and ends its run with `budget` when it is.
25
56
  */
26
- export async function subagentBudgetUsedUp(db, config, orgId, parentRunId) {
57
+ export async function subagentBudgetUsedUp(db, config, orgId, budgetRunId) {
58
+ const { maxTokensPerRun } = await subagentLimits(db, config, orgId);
59
+ // 0: no limit
60
+ if (maxTokensPerRun === 0)
61
+ return false;
27
62
  const row = await db
28
63
  .selectFrom("runs")
29
64
  .select("subagent_tokens_used")
30
- .where("id", "=", parentRunId)
65
+ .where("id", "=", budgetRunId)
31
66
  .executeTakeFirst();
32
67
  if (!row)
33
68
  return false;
34
- const { maxTokensPerRun } = await subagentLimits(db, config, orgId);
35
69
  return Number(row.subagent_tokens_used) >= maxTokensPerRun;
36
70
  }