@capybara-hq/kernel 0.1.0-rc.3 → 0.1.0-rc.5

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 (604) hide show
  1. package/bootstrap.json +61 -5
  2. package/dist/admin/admin.controller.d.ts +47 -16
  3. package/dist/admin/admin.controller.js +44 -19
  4. package/dist/admin/extensions.controller.d.ts +24 -3
  5. package/dist/admin/extensions.controller.js +48 -8
  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 +19 -0
  13. package/dist/agents/agent-lookup.js +21 -0
  14. package/dist/agents/agent-profile.service.d.ts +29 -0
  15. package/dist/agents/agent-profile.service.js +117 -0
  16. package/dist/agents/agents.controller.d.ts +168 -3
  17. package/dist/agents/agents.controller.js +201 -12
  18. package/dist/agents/agents.module.d.ts +4 -1
  19. package/dist/agents/agents.module.js +36 -6
  20. package/dist/agents/agents.service.d.ts +64 -27
  21. package/dist/agents/agents.service.js +199 -74
  22. package/dist/agents/definition.d.ts +53 -0
  23. package/dist/agents/definition.js +55 -0
  24. package/dist/agents/from-template.d.ts +106 -0
  25. package/dist/agents/from-template.js +649 -0
  26. package/dist/agents/from-template.service.d.ts +60 -0
  27. package/dist/agents/from-template.service.js +161 -0
  28. package/dist/agents/instruction-files.d.ts +60 -0
  29. package/dist/agents/instruction-files.js +111 -0
  30. package/dist/agents/models.controller.d.ts +9 -3
  31. package/dist/agents/models.controller.js +19 -4
  32. package/dist/agents/org-templates.d.ts +176 -0
  33. package/dist/agents/org-templates.js +827 -0
  34. package/dist/agents/pending-connector-requests.d.ts +77 -0
  35. package/dist/agents/pending-connector-requests.js +215 -0
  36. package/dist/agents/pending-connectors.controller.d.ts +39 -0
  37. package/dist/agents/pending-connectors.controller.js +91 -0
  38. package/dist/agents/pending-connectors.service.d.ts +62 -0
  39. package/dist/agents/pending-connectors.service.js +282 -0
  40. package/dist/agents/profile.d.ts +96 -0
  41. package/dist/agents/profile.js +51 -0
  42. package/dist/agents/readiness.controller.d.ts +26 -0
  43. package/dist/agents/readiness.controller.js +56 -0
  44. package/dist/agents/templates.controller.d.ts +86 -5
  45. package/dist/agents/templates.controller.js +171 -7
  46. package/dist/agents/templates.d.ts +127 -23
  47. package/dist/agents/templates.js +476 -53
  48. package/dist/background/background.controller.d.ts +38 -0
  49. package/dist/background/background.controller.js +87 -0
  50. package/dist/background/background.module.d.ts +10 -0
  51. package/dist/background/background.module.js +39 -0
  52. package/dist/background/finish.d.ts +44 -0
  53. package/dist/background/finish.js +94 -0
  54. package/dist/background/launch-lock.d.ts +15 -0
  55. package/dist/background/launch-lock.js +40 -0
  56. package/dist/background/launch.d.ts +36 -0
  57. package/dist/background/launch.js +70 -0
  58. package/dist/background/poll.job.d.ts +56 -0
  59. package/dist/background/poll.job.js +190 -0
  60. package/dist/background/render.d.ts +23 -0
  61. package/dist/background/render.js +48 -0
  62. package/dist/background/session.d.ts +48 -0
  63. package/dist/background/session.js +79 -0
  64. package/dist/background/status.d.ts +35 -0
  65. package/dist/background/status.js +57 -0
  66. package/dist/background/stop.d.ts +68 -0
  67. package/dist/background/stop.js +243 -0
  68. package/dist/background/store.d.ts +162 -0
  69. package/dist/background/store.js +357 -0
  70. package/dist/background/store.module.d.ts +6 -0
  71. package/dist/background/store.module.js +22 -0
  72. package/dist/background/tasks.service.d.ts +77 -0
  73. package/dist/background/tasks.service.js +211 -0
  74. package/dist/background/wake-rules.d.ts +66 -0
  75. package/dist/background/wake-rules.js +113 -0
  76. package/dist/background/wake.d.ts +30 -0
  77. package/dist/background/wake.js +63 -0
  78. package/dist/catalog/admin-catalog.controller.d.ts +129 -30
  79. package/dist/catalog/admin-catalog.controller.js +213 -42
  80. package/dist/catalog/catalog-content.d.ts +58 -32
  81. package/dist/catalog/catalog-content.js +34 -8
  82. package/dist/catalog/catalog-import.module.d.ts +7 -0
  83. package/dist/catalog/catalog-import.module.js +60 -0
  84. package/dist/catalog/catalog-items.d.ts +111 -7
  85. package/dist/catalog/catalog-items.js +279 -13
  86. package/dist/catalog/catalog-scope.service.d.ts +260 -0
  87. package/dist/catalog/catalog-scope.service.js +1116 -0
  88. package/dist/catalog/catalog.module.d.ts +7 -9
  89. package/dist/catalog/catalog.module.js +41 -31
  90. package/dist/catalog/catalog.service.d.ts +101 -29
  91. package/dist/catalog/catalog.service.js +104 -106
  92. package/dist/catalog/claude/agents.js +2 -0
  93. package/dist/catalog/cli.d.ts +11 -1
  94. package/dist/catalog/cli.js +26 -1
  95. package/dist/catalog/component-promotion.d.ts +96 -0
  96. package/dist/catalog/component-promotion.js +395 -0
  97. package/dist/catalog/component-scope.controller.d.ts +152 -0
  98. package/dist/catalog/component-scope.controller.js +287 -0
  99. package/dist/catalog/component-scope.service.d.ts +303 -0
  100. package/dist/catalog/component-scope.service.js +936 -0
  101. package/dist/catalog/component-state.d.ts +174 -0
  102. package/dist/catalog/component-state.js +437 -0
  103. package/dist/catalog/job-ids.d.ts +30 -0
  104. package/dist/catalog/job-ids.js +25 -0
  105. package/dist/catalog/marketplace-fetch.d.ts +1 -1
  106. package/dist/catalog/marketplaces.controller.d.ts +22 -5
  107. package/dist/catalog/marketplaces.controller.js +56 -7
  108. package/dist/catalog/marketplaces.service.d.ts +54 -14
  109. package/dist/catalog/marketplaces.service.js +71 -22
  110. package/dist/catalog/org-catalog.controller.d.ts +125 -34
  111. package/dist/catalog/org-catalog.controller.js +181 -65
  112. package/dist/catalog/org-catalog.service.d.ts +65 -33
  113. package/dist/catalog/org-catalog.service.js +324 -157
  114. package/dist/catalog/org-extension-switch.d.ts +41 -0
  115. package/dist/catalog/org-extension-switch.js +115 -0
  116. package/dist/catalog/org-extension.controller.d.ts +119 -0
  117. package/dist/catalog/org-extension.controller.js +266 -0
  118. package/dist/catalog/org-plugin-uploads.controller.d.ts +98 -0
  119. package/dist/catalog/org-plugin-uploads.controller.js +213 -0
  120. package/dist/catalog/org-plugin-uploads.d.ts +63 -0
  121. package/dist/catalog/org-plugin-uploads.js +116 -0
  122. package/dist/catalog/owned-items.d.ts +184 -0
  123. package/dist/catalog/owned-items.js +789 -0
  124. package/dist/catalog/owned-plugin-cleanup.d.ts +56 -0
  125. package/dist/catalog/owned-plugin-cleanup.js +194 -0
  126. package/dist/catalog/ownership.d.ts +172 -0
  127. package/dist/catalog/ownership.js +326 -0
  128. package/dist/catalog/platform-components.d.ts +221 -0
  129. package/dist/catalog/platform-components.js +761 -0
  130. package/dist/catalog/platform-migration.d.ts +115 -0
  131. package/dist/catalog/platform-migration.js +582 -0
  132. package/dist/catalog/plugin-import.d.ts +178 -34
  133. package/dist/catalog/plugin-import.js +623 -83
  134. package/dist/catalog/plugin-install.d.ts +185 -41
  135. package/dist/catalog/plugin-install.js +758 -126
  136. package/dist/catalog/plugin-upgrade.d.ts +260 -225
  137. package/dist/catalog/plugin-upgrade.js +1148 -1137
  138. package/dist/catalog/request-rules.d.ts +65 -0
  139. package/dist/catalog/request-rules.js +217 -0
  140. package/dist/catalog/requests.service.d.ts +193 -118
  141. package/dist/catalog/requests.service.js +526 -343
  142. package/dist/catalog/reserved-names.d.ts +8 -0
  143. package/dist/catalog/reserved-names.js +42 -0
  144. package/dist/catalog/scope-orgs.d.ts +21 -0
  145. package/dist/catalog/scope-orgs.js +67 -0
  146. package/dist/catalog/scope-state.d.ts +35 -0
  147. package/dist/catalog/scope-state.js +87 -0
  148. package/dist/catalog/scope-sync-workers.d.ts +7 -0
  149. package/dist/catalog/scope-sync-workers.js +29 -0
  150. package/dist/catalog/scope-sync.d.ts +176 -0
  151. package/dist/catalog/scope-sync.js +576 -0
  152. package/dist/catalog/scope.d.ts +42 -0
  153. package/dist/catalog/scope.js +42 -0
  154. package/dist/catalog/unshare.d.ts +22 -0
  155. package/dist/catalog/unshare.js +118 -0
  156. package/dist/channels/actions.js +1 -0
  157. package/dist/channels/cards.js +21 -3
  158. package/dist/channels/channels.module.js +2 -0
  159. package/dist/channels/connections.service.d.ts +16 -1
  160. package/dist/channels/connections.service.js +38 -4
  161. package/dist/channels/inbound.d.ts +9 -1
  162. package/dist/channels/inbound.js +67 -5
  163. package/dist/channels/phrases.d.ts +35 -0
  164. package/dist/channels/phrases.js +29 -0
  165. package/dist/channels/threads.d.ts +5 -0
  166. package/dist/channels/threads.js +8 -0
  167. package/dist/config/docs.js +3 -1
  168. package/dist/config/schema.d.ts +24 -2
  169. package/dist/config/schema.js +145 -19
  170. package/dist/conversations/access.d.ts +6 -4
  171. package/dist/conversations/access.js +29 -5
  172. package/dist/conversations/agent-tree.d.ts +46 -0
  173. package/dist/conversations/agent-tree.js +92 -0
  174. package/dist/conversations/attachments.service.d.ts +30 -0
  175. package/dist/conversations/attachments.service.js +130 -5
  176. package/dist/conversations/conversations.controller.d.ts +79 -23
  177. package/dist/conversations/conversations.controller.js +141 -50
  178. package/dist/conversations/conversations.module.d.ts +1 -1
  179. package/dist/conversations/conversations.module.js +10 -7
  180. package/dist/conversations/conversations.service.d.ts +108 -9
  181. package/dist/conversations/conversations.service.js +237 -30
  182. package/dist/conversations/environment-status.d.ts +24 -0
  183. package/dist/conversations/environment-status.js +71 -0
  184. package/dist/conversations/event-log.d.ts +21 -6
  185. package/dist/conversations/event-log.js +70 -1
  186. package/dist/conversations/events.d.ts +140 -0
  187. package/dist/conversations/events.js +142 -13
  188. package/dist/conversations/queue.d.ts +3 -1
  189. package/dist/conversations/queue.js +13 -2
  190. package/dist/conversations/queue.service.d.ts +1 -1
  191. package/dist/conversations/queue.service.js +8 -1
  192. package/dist/conversations/titles.d.ts +12 -3
  193. package/dist/conversations/titles.js +36 -8
  194. package/dist/conversations/tree.d.ts +17 -0
  195. package/dist/conversations/tree.js +42 -0
  196. package/dist/ctx/create-ctx.d.ts +5 -0
  197. package/dist/ctx/create-ctx.js +15 -5
  198. package/dist/db/kernel-schema.d.ts +420 -20
  199. package/dist/db/pool.d.ts +5 -0
  200. package/dist/db/pool.js +3 -0
  201. package/dist/environments/access.d.ts +41 -0
  202. package/dist/environments/access.js +77 -0
  203. package/dist/environments/conversation-environments.d.ts +61 -0
  204. package/dist/environments/conversation-environments.js +170 -0
  205. package/dist/environments/dto.d.ts +25 -0
  206. package/dist/environments/dto.js +12 -0
  207. package/dist/environments/environments.controller.d.ts +33 -0
  208. package/dist/environments/environments.controller.js +110 -0
  209. package/dist/environments/environments.module.d.ts +8 -0
  210. package/dist/environments/environments.module.js +27 -0
  211. package/dist/environments/environments.service.d.ts +153 -0
  212. package/dist/environments/environments.service.js +541 -0
  213. package/dist/environments/legacy-cleanup.job.d.ts +34 -0
  214. package/dist/environments/legacy-cleanup.job.js +141 -0
  215. package/dist/errors.d.ts +90 -2
  216. package/dist/errors.js +90 -2
  217. package/dist/evals/reconstruct.d.ts +18 -9
  218. package/dist/evals/reconstruct.js +26 -7
  219. package/dist/evals/run-replay.d.ts +7 -2
  220. package/dist/evals/run-replay.js +42 -7
  221. package/dist/evals/step-replay.d.ts +2 -5
  222. package/dist/evals/step-replay.js +13 -7
  223. package/dist/evals/trajectory.js +1 -1
  224. package/dist/evals/trajectory.service.d.ts +8 -3
  225. package/dist/evals/trajectory.service.js +26 -14
  226. package/dist/evals/worker.d.ts +5 -5
  227. package/dist/evals/worker.js +9 -3
  228. package/dist/extensions/admin-ops.d.ts +36 -10
  229. package/dist/extensions/admin-ops.js +67 -42
  230. package/dist/extensions/admin-view.d.ts +39 -10
  231. package/dist/extensions/admin-view.js +111 -20
  232. package/dist/extensions/blobs.js +1 -0
  233. package/dist/extensions/bootstrap.d.ts +17 -4
  234. package/dist/extensions/bootstrap.js +70 -9
  235. package/dist/extensions/cli.d.ts +12 -0
  236. package/dist/extensions/cli.js +11 -2
  237. package/dist/extensions/config-issues.d.ts +13 -1
  238. package/dist/extensions/config-issues.js +22 -5
  239. package/dist/extensions/config-json-schema.d.ts +43 -7
  240. package/dist/extensions/config-json-schema.js +124 -58
  241. package/dist/extensions/deployment-config-store.d.ts +6 -0
  242. package/dist/extensions/deployment-config.d.ts +78 -8
  243. package/dist/extensions/deployment-config.js +172 -34
  244. package/dist/extensions/display-name.d.ts +22 -0
  245. package/dist/extensions/display-name.js +77 -0
  246. package/dist/extensions/effective-config.d.ts +127 -0
  247. package/dist/extensions/effective-config.js +368 -0
  248. package/dist/extensions/extensions.module.js +14 -2
  249. package/dist/extensions/hooks.d.ts +37 -4
  250. package/dist/extensions/hooks.js +82 -16
  251. package/dist/extensions/host.d.ts +45 -2
  252. package/dist/extensions/host.js +112 -16
  253. package/dist/extensions/installs.d.ts +20 -8
  254. package/dist/extensions/installs.js +37 -15
  255. package/dist/extensions/org-config.d.ts +81 -6
  256. package/dist/extensions/org-config.js +195 -44
  257. package/dist/extensions/org-levels.d.ts +37 -0
  258. package/dist/extensions/org-levels.js +71 -0
  259. package/dist/extensions/org-overrides.d.ts +151 -0
  260. package/dist/extensions/org-overrides.js +524 -0
  261. package/dist/extensions/package.d.ts +14 -1
  262. package/dist/extensions/package.js +51 -2
  263. package/dist/extensions/permission-view.d.ts +19 -4
  264. package/dist/extensions/permission-view.js +4 -4
  265. package/dist/extensions/plugin-items.d.ts +21 -0
  266. package/dist/extensions/plugin-items.js +42 -0
  267. package/dist/extensions/point-defaults.controller.d.ts +34 -0
  268. package/dist/extensions/point-defaults.controller.js +71 -0
  269. package/dist/extensions/point-defaults.d.ts +71 -0
  270. package/dist/extensions/point-defaults.js +234 -0
  271. package/dist/extensions/registry.d.ts +1 -1
  272. package/dist/extensions/registry.js +2 -0
  273. package/dist/extensions/resolve.d.ts +5 -1
  274. package/dist/extensions/resolve.js +15 -2
  275. package/dist/files/previewers.d.ts +8 -1
  276. package/dist/files/previewers.js +35 -6
  277. package/dist/http/api.module.js +31 -3
  278. package/dist/http/app.d.ts +11 -2
  279. package/dist/http/app.js +31 -5
  280. package/dist/http/nest-logger.d.ts +6 -5
  281. package/dist/http/nest-logger.js +24 -10
  282. package/dist/identity/accounts.d.ts +29 -29
  283. package/dist/identity/accounts.js +47 -47
  284. package/dist/identity/audit.d.ts +2 -1
  285. package/dist/identity/auth.controller.js +9 -5
  286. package/dist/identity/auth.guard.d.ts +13 -5
  287. package/dist/identity/auth.guard.js +26 -9
  288. package/dist/identity/cookies.d.ts +20 -5
  289. package/dist/identity/cookies.js +44 -6
  290. package/dist/identity/identity.module.d.ts +1 -1
  291. package/dist/identity/identity.module.js +4 -4
  292. package/dist/identity/me.controller.d.ts +5 -1
  293. package/dist/identity/me.controller.js +12 -3
  294. package/dist/identity/principal.d.ts +3 -3
  295. package/dist/identity/principal.js +3 -3
  296. package/dist/identity/sessions.d.ts +12 -0
  297. package/dist/identity/sessions.js +45 -0
  298. package/dist/identity/settings.d.ts +22 -11
  299. package/dist/identity/settings.js +53 -18
  300. package/dist/identity/{enterprise-admin.d.ts → super-admin.d.ts} +5 -5
  301. package/dist/identity/{enterprise-admin.js → super-admin.js} +24 -24
  302. package/dist/inbox/inbox.module.d.ts +4 -1
  303. package/dist/inbox/inbox.module.js +7 -3
  304. package/dist/inbox/inbox.service.d.ts +62 -3
  305. package/dist/inbox/inbox.service.js +74 -4
  306. package/dist/inbox/org-notices.d.ts +63 -0
  307. package/dist/inbox/org-notices.js +91 -0
  308. package/dist/inbox/platform-inbox.controller.d.ts +23 -0
  309. package/dist/inbox/platform-inbox.controller.js +58 -0
  310. package/dist/inbox/platform-inbox.service.d.ts +151 -0
  311. package/dist/inbox/platform-inbox.service.js +263 -0
  312. package/dist/inbox/platform-notices.d.ts +19 -0
  313. package/dist/inbox/platform-notices.js +9 -0
  314. package/dist/index.d.ts +2 -2
  315. package/dist/index.js +1 -1
  316. package/dist/infra/cli/kernel-cli.module.js +9 -1
  317. package/dist/infra/config/kernel-config.service.js +27 -1
  318. package/dist/infra/database/database.module.js +1 -0
  319. package/dist/infra/database/xact-lock.d.ts +1 -1
  320. package/dist/infra/database/xact-lock.js +1 -1
  321. package/dist/infra/events/kernel-events.d.ts +19 -2
  322. package/dist/infra/lifecycle/process-guards.js +4 -0
  323. package/dist/infra/logging/logging.module.d.ts +4 -2
  324. package/dist/infra/logging/logging.module.js +24 -6
  325. package/dist/infra/queue/add-job-once.d.ts +14 -0
  326. package/dist/infra/queue/add-job-once.js +16 -0
  327. package/dist/infra/queue/redis-connection.d.ts +6 -0
  328. package/dist/infra/queue/redis-connection.js +7 -0
  329. package/dist/infra/redis/redis.module.js +6 -2
  330. package/dist/infra/tokens.d.ts +6 -1
  331. package/dist/infra/tokens.js +6 -1
  332. package/dist/kernel.module.js +6 -0
  333. package/dist/lifecycle/kernel-lifecycle.d.ts +1 -1
  334. package/dist/lifecycle/kernel-lifecycle.js +4 -4
  335. package/dist/log.d.ts +13 -1
  336. package/dist/log.js +93 -17
  337. package/dist/models/prices.d.ts +5 -5
  338. package/dist/models/prices.js +4 -4
  339. package/dist/models/purposes.controller.d.ts +6 -4
  340. package/dist/models/purposes.controller.js +13 -7
  341. package/dist/models/purposes.d.ts +43 -9
  342. package/dist/models/purposes.js +48 -18
  343. package/dist/orgs/directory-sync.d.ts +14 -5
  344. package/dist/orgs/directory-sync.js +41 -17
  345. package/dist/orgs/offboarding.d.ts +12 -8
  346. package/dist/orgs/offboarding.js +54 -33
  347. package/dist/orgs/org-lock.d.ts +5 -0
  348. package/dist/orgs/org-lock.js +13 -0
  349. package/dist/orgs/org.guard.d.ts +10 -0
  350. package/dist/orgs/org.guard.js +43 -32
  351. package/dist/orgs/orgs.module.js +3 -0
  352. package/dist/orgs/orgs.service.d.ts +20 -7
  353. package/dist/orgs/orgs.service.js +32 -12
  354. package/dist/orgs/roles.d.ts +1 -1
  355. package/dist/orgs/roles.js +5 -1
  356. package/dist/orgs/settings.controller.d.ts +1 -1
  357. package/dist/orgs/settings.service.d.ts +20 -3
  358. package/dist/orgs/settings.service.js +19 -4
  359. package/dist/overrides.d.ts +3 -0
  360. package/dist/overrides.js +2 -0
  361. package/dist/platform/actor.d.ts +48 -0
  362. package/dist/platform/actor.js +100 -0
  363. package/dist/platform/agent-docs.d.ts +18 -0
  364. package/dist/platform/agent-docs.js +59 -0
  365. package/dist/platform/availability.d.ts +14 -0
  366. package/dist/platform/availability.js +43 -0
  367. package/dist/platform/errors.d.ts +11 -0
  368. package/dist/platform/errors.js +26 -0
  369. package/dist/platform/exclusions.d.ts +12 -0
  370. package/dist/platform/exclusions.js +1387 -0
  371. package/dist/platform/method.d.ts +6 -0
  372. package/dist/platform/method.js +15 -0
  373. package/dist/platform/operation.d.ts +92 -0
  374. package/dist/platform/operation.js +35 -0
  375. package/dist/platform/ops/agent-templates.ops.d.ts +14 -0
  376. package/dist/platform/ops/agent-templates.ops.js +92 -0
  377. package/dist/platform/ops/agents.ops.d.ts +19 -0
  378. package/dist/platform/ops/agents.ops.js +294 -0
  379. package/dist/platform/ops/connectors.ops.d.ts +15 -0
  380. package/dist/platform/ops/connectors.ops.js +126 -0
  381. package/dist/platform/ops/errors.d.ts +11 -0
  382. package/dist/platform/ops/errors.js +22 -0
  383. package/dist/platform/ops/extensions.ops.d.ts +19 -0
  384. package/dist/platform/ops/extensions.ops.js +116 -0
  385. package/dist/platform/ops/marketplaces.ops.d.ts +16 -0
  386. package/dist/platform/ops/marketplaces.ops.js +157 -0
  387. package/dist/platform/ops/paging.d.ts +14 -0
  388. package/dist/platform/ops/paging.js +20 -0
  389. package/dist/platform/ops/platform.ops.d.ts +23 -0
  390. package/dist/platform/ops/platform.ops.js +158 -0
  391. package/dist/platform/ops/plugins.ops.d.ts +33 -0
  392. package/dist/platform/ops/plugins.ops.js +377 -0
  393. package/dist/platform/ops/requests.ops.d.ts +14 -0
  394. package/dist/platform/ops/requests.ops.js +153 -0
  395. package/dist/platform/ops/role.d.ts +4 -0
  396. package/dist/platform/ops/role.js +10 -0
  397. package/dist/platform/ops/skills.ops.d.ts +13 -0
  398. package/dist/platform/ops/skills.ops.js +98 -0
  399. package/dist/platform/ops/summary.d.ts +10 -0
  400. package/dist/platform/ops/summary.js +18 -0
  401. package/dist/platform/platform-ops.module.d.ts +7 -0
  402. package/dist/platform/platform-ops.module.js +55 -0
  403. package/dist/platform/platform.module.d.ts +8 -0
  404. package/dist/platform/platform.module.js +25 -0
  405. package/dist/platform/redact-orgs.d.ts +7 -0
  406. package/dist/platform/redact-orgs.js +52 -0
  407. package/dist/platform/registry.d.ts +30 -0
  408. package/dist/platform/registry.js +111 -0
  409. package/dist/roles/worker-role.d.ts +6 -4
  410. package/dist/roles/worker-role.js +14 -7
  411. package/dist/roles/worker.module.d.ts +1 -1
  412. package/dist/roles/worker.module.js +15 -1
  413. package/dist/runtime/context/build.d.ts +11 -7
  414. package/dist/runtime/context/build.js +46 -19
  415. package/dist/runtime/context/claude-tools.d.ts +3 -1
  416. package/dist/runtime/context/claude-tools.js +8 -6
  417. package/dist/runtime/context/compaction.js +13 -0
  418. package/dist/runtime/context/reminders.d.ts +2 -0
  419. package/dist/runtime/context/reminders.js +2 -0
  420. package/dist/runtime/context/skills.js +9 -2
  421. package/dist/runtime/context/tool-changes.d.ts +27 -0
  422. package/dist/runtime/context/tool-changes.js +60 -0
  423. package/dist/runtime/hook-calls.js +2 -0
  424. package/dist/runtime/langgraph-loop.d.ts +3 -1
  425. package/dist/runtime/langgraph-loop.js +36 -17
  426. package/dist/runtime/loop.d.ts +34 -5
  427. package/dist/runtime/maintenance.d.ts +9 -4
  428. package/dist/runtime/maintenance.js +35 -8
  429. package/dist/runtime/model-call.d.ts +46 -8
  430. package/dist/runtime/model-call.js +72 -21
  431. package/dist/runtime/providers.d.ts +6 -0
  432. package/dist/runtime/providers.js +8 -0
  433. package/dist/runtime/run-control.d.ts +11 -1
  434. package/dist/runtime/run-control.js +12 -0
  435. package/dist/runtime/run-drafts.d.ts +85 -0
  436. package/dist/runtime/run-drafts.js +230 -0
  437. package/dist/runtime/run-jobs.d.ts +3 -5
  438. package/dist/runtime/run-jobs.js +3 -7
  439. package/dist/runtime/run-queue.d.ts +59 -2
  440. package/dist/runtime/run-queue.js +311 -38
  441. package/dist/runtime/run-worker.d.ts +11 -5
  442. package/dist/runtime/run-worker.js +69 -33
  443. package/dist/runtime/runtime.module.js +11 -3
  444. package/dist/runtime/step-log.d.ts +15 -4
  445. package/dist/runtime/step-log.js +24 -7
  446. package/dist/runtime/stream.controller.d.ts +23 -1
  447. package/dist/runtime/stream.controller.js +60 -3
  448. package/dist/runtime/stream.d.ts +4 -1
  449. package/dist/runtime/stream.js +27 -3
  450. package/dist/runtime/subagents/child.d.ts +55 -7
  451. package/dist/runtime/subagents/child.js +105 -7
  452. package/dist/runtime/subagents/definition.d.ts +12 -3
  453. package/dist/runtime/subagents/definition.js +44 -28
  454. package/dist/runtime/subagents/deliveries.d.ts +71 -0
  455. package/dist/runtime/subagents/deliveries.js +228 -0
  456. package/dist/runtime/subagents/dispatch.d.ts +115 -26
  457. package/dist/runtime/subagents/dispatch.js +212 -141
  458. package/dist/runtime/subagents/limits.d.ts +24 -5
  459. package/dist/runtime/subagents/limits.js +40 -6
  460. package/dist/runtime/subagents/messages.d.ts +95 -0
  461. package/dist/runtime/subagents/messages.js +328 -0
  462. package/dist/runtime/subagents/preamble.d.ts +4 -4
  463. package/dist/runtime/subagents/preamble.js +9 -7
  464. package/dist/runtime/subagents/progress.d.ts +8 -6
  465. package/dist/runtime/subagents/progress.js +11 -6
  466. package/dist/runtime/subagents/render.d.ts +30 -0
  467. package/dist/runtime/subagents/render.js +53 -0
  468. package/dist/runtime/subagents/roster.d.ts +24 -7
  469. package/dist/runtime/subagents/roster.js +47 -11
  470. package/dist/runtime/subagents/skill-fork.d.ts +3 -2
  471. package/dist/runtime/subagents/skill-fork.js +8 -4
  472. package/dist/runtime/subagents/status.d.ts +14 -0
  473. package/dist/runtime/subagents/status.js +23 -0
  474. package/dist/runtime/subagents/subagents.service.d.ts +7 -4
  475. package/dist/runtime/subagents/subagents.service.js +11 -6
  476. package/dist/runtime/usage-report.d.ts +2 -1
  477. package/dist/runtime/usage-report.js +19 -13
  478. package/dist/runtime/waits.d.ts +145 -36
  479. package/dist/runtime/waits.js +423 -109
  480. package/dist/sandbox/jobs.d.ts +40 -13
  481. package/dist/sandbox/jobs.js +57 -20
  482. package/dist/sandbox/leases.d.ts +37 -54
  483. package/dist/sandbox/leases.js +71 -115
  484. package/dist/sandbox/providers.d.ts +2 -2
  485. package/dist/sandbox/providers.js +1 -1
  486. package/dist/sandbox/sandbox.module.d.ts +3 -2
  487. package/dist/sandbox/sandbox.module.js +10 -4
  488. package/dist/sandbox/sandbox.service.d.ts +282 -129
  489. package/dist/sandbox/sandbox.service.js +736 -381
  490. package/dist/skills/catalog.d.ts +3 -2
  491. package/dist/skills/catalog.js +21 -43
  492. package/dist/skills/changes.controller.d.ts +7 -0
  493. package/dist/skills/changes.controller.js +19 -1
  494. package/dist/skills/invoke.js +8 -3
  495. package/dist/skills/package.d.ts +20 -1
  496. package/dist/skills/package.js +28 -1
  497. package/dist/skills/skills.controller.d.ts +39 -4
  498. package/dist/skills/skills.controller.js +88 -10
  499. package/dist/skills/skills.module.js +10 -1
  500. package/dist/skills/skills.service.d.ts +106 -26
  501. package/dist/skills/skills.service.js +421 -75
  502. package/dist/skills/usable.d.ts +81 -0
  503. package/dist/skills/usable.js +379 -0
  504. package/dist/tools/approvals.service.d.ts +20 -2
  505. package/dist/tools/approvals.service.js +25 -4
  506. package/dist/tools/builtin-names.d.ts +41 -7
  507. package/dist/tools/builtin-names.js +59 -7
  508. package/dist/tools/builtins/agent.d.ts +23 -21
  509. package/dist/tools/builtins/agent.js +62 -55
  510. package/dist/tools/builtins/builtin-tools.d.ts +19 -1
  511. package/dist/tools/builtins/builtin-tools.js +59 -2
  512. package/dist/tools/builtins/handback.d.ts +28 -0
  513. package/dist/tools/builtins/handback.js +53 -0
  514. package/dist/tools/builtins/platform.d.ts +34 -0
  515. package/dist/tools/builtins/platform.js +362 -0
  516. package/dist/tools/builtins/sandbox/bash.d.ts +1 -1
  517. package/dist/tools/builtins/sandbox/bash.js +241 -4
  518. package/dist/tools/builtins/sandbox/common.d.ts +69 -27
  519. package/dist/tools/builtins/sandbox/common.js +87 -48
  520. package/dist/tools/builtins/sandbox/deliver.js +1 -1
  521. package/dist/tools/builtins/sandbox/edit.js +2 -2
  522. package/dist/tools/builtins/sandbox/glob.js +2 -2
  523. package/dist/tools/builtins/sandbox/grep.js +2 -4
  524. package/dist/tools/builtins/sandbox/index.d.ts +3 -1
  525. package/dist/tools/builtins/sandbox/index.js +7 -1
  526. package/dist/tools/builtins/sandbox/read.js +1 -1
  527. package/dist/tools/builtins/sandbox/task-output.d.ts +74 -0
  528. package/dist/tools/builtins/sandbox/task-output.js +329 -0
  529. package/dist/tools/builtins/sandbox/task-stop.d.ts +10 -0
  530. package/dist/tools/builtins/sandbox/task-stop.js +113 -0
  531. package/dist/tools/builtins/sandbox/write.js +2 -2
  532. package/dist/tools/builtins/send-message.d.ts +56 -0
  533. package/dist/tools/builtins/send-message.js +100 -0
  534. package/dist/tools/builtins/skill-load.d.ts +22 -14
  535. package/dist/tools/builtins/skill-load.js +86 -57
  536. package/dist/tools/builtins/skill-write.js +1 -1
  537. package/dist/tools/builtins/web/errors.d.ts +8 -0
  538. package/dist/tools/builtins/web/errors.js +53 -0
  539. package/dist/tools/builtins/web/extract.d.ts +62 -0
  540. package/dist/tools/builtins/web/extract.js +271 -0
  541. package/dist/tools/builtins/web/fetch.d.ts +55 -0
  542. package/dist/tools/builtins/web/fetch.js +175 -0
  543. package/dist/tools/builtins/web/index.d.ts +13 -0
  544. package/dist/tools/builtins/web/index.js +12 -0
  545. package/dist/tools/builtins/web/page-cache.d.ts +25 -0
  546. package/dist/tools/builtins/web/page-cache.js +77 -0
  547. package/dist/tools/builtins/web/search.d.ts +25 -0
  548. package/dist/tools/builtins/web/search.js +210 -0
  549. package/dist/tools/builtins/web/url.d.ts +17 -0
  550. package/dist/tools/builtins/web/url.js +43 -0
  551. package/dist/tools/connectors.controller.d.ts +10 -0
  552. package/dist/tools/connectors.controller.js +12 -0
  553. package/dist/tools/connectors.service.d.ts +46 -5
  554. package/dist/tools/connectors.service.js +94 -15
  555. package/dist/tools/extension-tools.controller.d.ts +14 -0
  556. package/dist/tools/extension-tools.controller.js +37 -0
  557. package/dist/tools/info.d.ts +42 -1
  558. package/dist/tools/info.js +64 -1
  559. package/dist/tools/oauth/flow-paths.d.ts +1 -1
  560. package/dist/tools/oauth/flow-paths.js +1 -1
  561. package/dist/tools/org-tool-switches.d.ts +74 -0
  562. package/dist/tools/org-tool-switches.js +184 -0
  563. package/dist/tools/pipeline.d.ts +46 -40
  564. package/dist/tools/pipeline.js +202 -364
  565. package/dist/tools/policy.d.ts +1 -1
  566. package/dist/tools/policy.js +36 -16
  567. package/dist/tools/registry.d.ts +120 -8
  568. package/dist/tools/registry.js +112 -19
  569. package/dist/tools/tools.module.js +24 -2
  570. package/dist/tools/validate.js +1 -1
  571. package/dist/ui/views.d.ts +2 -1
  572. package/dist/ui/views.js +17 -3
  573. package/package.json +3 -3
  574. package/src/migrations/0064_account_last_org.sql +7 -0
  575. package/src/migrations/0065_conversation_archive.sql +8 -0
  576. package/src/migrations/0066_extension_display_name.sql +4 -0
  577. package/src/migrations/0067_agent_profiles.sql +20 -0
  578. package/src/migrations/0068_agent_avatar_uploads.sql +7 -0
  579. package/src/migrations/0069_attachments_agent_idx.sql +3 -0
  580. package/src/migrations/0070_background_tasks.sql +37 -0
  581. package/src/migrations/0071_background_tasks_reserve.sql +6 -0
  582. package/src/migrations/0072_background_tasks_stopping.sql +5 -0
  583. package/src/migrations/0073_org_extension_point_defaults.sql +11 -0
  584. package/src/migrations/0074_subagent_tree.sql +50 -0
  585. package/src/migrations/0075_plugin_scope.sql +61 -0
  586. package/src/migrations/0076_skills_created_by_nullable.sql +6 -0
  587. package/src/migrations/0077_scope_requests.sql +52 -0
  588. package/src/migrations/0078_scope_grant_switches.sql +18 -0
  589. package/src/migrations/0079_scope_live_install_switches.sql +19 -0
  590. package/src/migrations/0080_rename_enterprise_admin.sql +18 -0
  591. package/src/migrations/0081_platform_components.sql +129 -0
  592. package/src/migrations/0082_platform_migration.sql +33 -0
  593. package/src/migrations/0083_plugin_scope_sync_failures.sql +15 -0
  594. package/src/migrations/0084_org_owned_items.sql +85 -0
  595. package/src/migrations/0085_agent_templates_phase4.sql +45 -0
  596. package/src/migrations/0086_org_layering.sql +30 -0
  597. package/src/migrations/0087_approval_summary.sql +6 -0
  598. package/src/migrations/0088_environments.sql +80 -0
  599. package/dist/catalog/upgrade-targets.d.ts +0 -56
  600. package/dist/catalog/upgrade-targets.js +0 -90
  601. package/dist/conversations/sandbox-status.d.ts +0 -24
  602. package/dist/conversations/sandbox-status.js +0 -52
  603. package/dist/extensions/org-config.controller.d.ts +0 -24
  604. package/dist/extensions/org-config.controller.js +0 -62
@@ -1,14 +1,20 @@
1
1
  import { Annotation, END, START, StateGraph } from "@langchain/langgraph";
2
2
  import { MediaCache } from "./media-cache.js";
3
3
  import { runFinalWrapUp, runModelStep, } from "./model-call.js";
4
- import { subagentBudgetUsedUp } from "./subagents/limits.js";
4
+ import { budgetRunOf, subagentBudgetUsedUp } from "./subagents/limits.js";
5
5
  import { isForkInvocation } from "./subagents/skill-fork.js";
6
6
  /**
7
7
  * 图状态:只记录进度,消息每步从事件日志重建(runModelStep 自己读日志),checkpoint 很小。
8
8
  * - `step`:当前(最近一次进入的)步骤编号,prepare 节点 +1;
9
- * - `consumedUpToSeq`:已吸收的最大 user_message seq;
9
+ * - `consumedUpToSeq`:已吸收的最大可吸收事件 seq(user_message / background_task_finished /
10
+ * subagent_delivery; a finish TaskOutput or TaskStop already reported is absorbed like any
11
+ * other, rendered short);
10
12
  * - `lastStopReason`:最近一步模型调用的停止原因;
11
13
  * - `outcome`:图的结束方式(在决定结束的节点里写入,续跑已结束的图时直接读出,不依赖当前时间)。
14
+ * - `budgetWrapUp`: set when a sub-agent's tree used its token budget after the run made a step: the
15
+ * run goes to the `wrapUp` node for one tool-less call that hands back what it found, then ends
16
+ * with `budget` (sub-agents spec §8.3). Null otherwise (the step limit routes there by `step`; a channel cannot share the
17
+ * node's name).
12
18
  *
13
19
  * 所有 channel 都是默认的 LastValue(不用实验性的 DeltaChannel,也没有子图):
14
20
  * 每个 checkpoint 自带完整状态,`pruneToLatest` 之后仍能独立还原(R19)。
@@ -18,8 +24,15 @@ const LoopState = Annotation.Root({
18
24
  consumedUpToSeq: Annotation(),
19
25
  lastStopReason: Annotation(),
20
26
  outcome: Annotation(),
27
+ budgetWrapUp: Annotation(),
21
28
  });
22
- const INITIAL = { step: 0, consumedUpToSeq: 0, lastStopReason: null, outcome: null };
29
+ const INITIAL = {
30
+ step: 0,
31
+ consumedUpToSeq: 0,
32
+ lastStopReason: null,
33
+ outcome: null,
34
+ budgetWrapUp: null,
35
+ };
23
36
  /**
24
37
  * prepare 节点在停机信号下抛出:本次 invoke 以它结束,checkpoint 停在 prepare 之前
25
38
  * (LangGraph 把出错的任务记为该 checkpoint 上的 pending error,`invoke(null)` 续跑时重新执行它)。
@@ -55,7 +68,9 @@ class LoopSuspended extends Error {
55
68
  * worker 崩溃后由其他副本从最近的 checkpoint 续跑(spec 4.4、Review Focus 1)。
56
69
  *
57
70
  * 图:`prepare → model →(tool_use)tools → prepare …`;prepare 发现步数超过上限 → `wrapUp` → 结束;
58
- * prepare finding the deadline passed, or (a sub-agent's run) its parent's token budget used up → end;
71
+ * prepare finding the deadline passed → end; a sub-agent's run finding its tree's token budget used
72
+ * up → `wrapUp` (one tool-less call that hands back its findings) → end, or end at once when the
73
+ * run has made no step yet (nothing new to report);
59
74
  * 模型中止或正常结束 → 结束。`durability: "sync"`:每个节点的 checkpoint 在下一个节点开始前落库。
60
75
  *
61
76
  * 幂等:`runModelStep` / `runFinalWrapUp` 按 (runId, step) 幂等,续跑重新执行 model 节点时若回复已在日志里,
@@ -129,6 +144,7 @@ export class LangGraphLoop {
129
144
  accountId: ctx.triggerAccountId,
130
145
  ...(ctx.conversationKind !== undefined && { conversationKind: ctx.conversationKind }),
131
146
  ...(ctx.parent !== undefined && { parentRunId: ctx.parent.runId, parent: ctx.parent }),
147
+ ...(ctx.subagent === true && { subagent: true }),
132
148
  });
133
149
  const deps = this.stepDeps;
134
150
  const hooks = this.hooks;
@@ -139,16 +155,19 @@ export class LangGraphLoop {
139
155
  // 否则 consumed_seq 越过它们、也不会再起新一轮。
140
156
  if (timedOut())
141
157
  return { outcome: "max_duration" };
142
- // a sub-agent stops before its next request once its parent run's children used their token
143
- // budget (spec §8.3; fresh read, in-flight requests of siblings may overshoot by one each)
158
+ // a sub-agent stops before its next request once its tree used its token budget (spec §8.3,
159
+ // agent map §6: on the budget run; fresh read, in-flight requests of others may overshoot by
160
+ // one each). A run that made a step hands back what it found in one final tool-less call
161
+ // (one more over); a run stopped before its first step (a wake of a stopped tree) has
162
+ // nothing new to report and ends at once.
144
163
  if (ctx.parent !== undefined &&
145
- (await subagentBudgetUsedUp(deps.db, deps.config, ctx.orgId, ctx.parent.runId))) {
146
- return { outcome: "budget" };
164
+ (await subagentBudgetUsedUp(deps.db, deps.config, ctx.orgId, ctx.parent.budgetRunId ?? (await budgetRunOf(deps.db, ctx.parent.runId))))) {
165
+ return s.step > 0 ? { step: s.step + 1, budgetWrapUp: true } : { outcome: "budget" };
147
166
  }
148
167
  let consumed = s.consumedUpToSeq;
149
168
  // the run's first prepare (also when it runs again after a suspend on its fork's sub-agent)
150
169
  const firstStep = s.step === 0;
151
- const absorbed = await ctx.pendingUserMessages(consumed);
170
+ const absorbed = await ctx.pendingAbsorbable(consumed);
152
171
  for (const m of absorbed)
153
172
  consumed = Math.max(consumed, m.seq);
154
173
  // phase D: a run's own fork invocation is absorbed at step 1 (the run boundary,
@@ -172,8 +191,10 @@ export class LangGraphLoop {
172
191
  const model = async (s) => {
173
192
  const r = await runModelStep(deps, input(s.step, s.consumedUpToSeq));
174
193
  await hooks.afterModelStep?.(ctx.runId, s.step, r);
194
+ // budget used up by a compaction call before the step's request: hand back in the wrap-up,
195
+ // at this step (it logged no request)
175
196
  if (r.budget)
176
- return { outcome: "budget" };
197
+ return { budgetWrapUp: true };
177
198
  if (r.aborted) {
178
199
  return { lastStopReason: "aborted", outcome: timedOut() ? "max_duration" : "aborted" };
179
200
  }
@@ -217,11 +238,12 @@ export class LangGraphLoop {
217
238
  return {};
218
239
  };
219
240
  const wrapUp = async (s) => {
220
- const r = await runFinalWrapUp(deps, input(s.step, s.consumedUpToSeq));
241
+ const budget = s.budgetWrapUp === true;
242
+ const r = await runFinalWrapUp(deps, input(s.step, s.consumedUpToSeq), budget ? "budget" : "max_steps");
221
243
  await hooks.afterModelStep?.(ctx.runId, s.step, r);
222
244
  return {
223
245
  lastStopReason: r.aborted ? "aborted" : r.stopReason,
224
- outcome: r.budget ? "budget" : r.aborted && !timedOut() ? "aborted" : "max_steps",
246
+ outcome: r.aborted && !timedOut() ? "aborted" : budget || r.budget ? "budget" : "max_steps",
225
247
  };
226
248
  };
227
249
  return new StateGraph(LoopState)
@@ -234,12 +256,9 @@ export class LangGraphLoop {
234
256
  // (aborted / completed: a fork invocation's run ended in its first prepare, phase D)
235
257
  if (s.outcome !== null)
236
258
  return END;
237
- return s.step > ctx.limits.maxSteps ? "wrapUp" : "model";
259
+ return s.budgetWrapUp === true || s.step > ctx.limits.maxSteps ? "wrapUp" : "model";
238
260
  }, ["model", "wrapUp", END])
239
- .addConditionalEdges("model", (s) => (s.outcome === null ? "tools" : END), [
240
- "tools",
241
- END,
242
- ])
261
+ .addConditionalEdges("model", (s) => (s.budgetWrapUp === true ? "wrapUp" : s.outcome === null ? "tools" : END), ["tools", "wrapUp", END])
243
262
  .addEdge("tools", "prepare")
244
263
  .addEdge("wrapUp", END)
245
264
  .compile({ checkpointer: this.saver });
@@ -1,6 +1,6 @@
1
1
  import type { AgentDefinition } from "../agents/definition.js";
2
2
  import type { KernelConfig } from "../config/schema.js";
3
- import type { ConversationEvent } from "../conversations/events.js";
3
+ import type { AbsorbableEvent } from "../conversations/events.js";
4
4
  import type { StreamSink } from "./model-call.js";
5
5
  /** 一次运行交给 loop 的上下文(spec 4.4)。 */
6
6
  export interface LoopContext {
@@ -22,10 +22,11 @@ export interface LoopContext {
22
22
  shutdown: AbortSignal;
23
23
  sink: StreamSink;
24
24
  /**
25
- * 下一个步骤间隙要吸收的插话:返回 seq > afterSeq 的 user_message(且只含本轮开始时尚未被消费的,
25
+ * 下一个步骤间隙要吸收的事件:返回 seq > afterSeq 的可吸收事件(`user_message`、
26
+ * `background_task_finished` 与 `subagent_delivery`, `isAbsorbable`;且只含本轮开始时尚未被消费的,
26
27
  * 即 seq 也大于会话的 `consumed_seq`),按 seq 升序。loop 记录吸收到的最大 seq 作为 `consumedUpToSeq`。
27
28
  */
28
- pendingUserMessages(afterSeq: number): Promise<ConversationEvent[]>;
29
+ pendingAbsorbable(afterSeq: number): Promise<AbsorbableEvent[]>;
29
30
  limits: {
30
31
  maxSteps: number;
31
32
  deadline: number;
@@ -36,21 +37,49 @@ export interface LoopContext {
36
37
  */
37
38
  conversationKind?: "chat" | "eval" | "subagent";
38
39
  /**
39
- * Set for a sub-agent's run (phase C): the dispatch this run serves. Its tools use the parent
40
- * conversation's sandbox (spec §10.1), and it never dispatches sub-agents itself (depth 1).
40
+ * Set for a sub-agent's run (phase C): the dispatch this run serves. Its tools use the root
41
+ * conversation's sandbox (spec §10.1), and it dispatches sub-agents only while its depth is
42
+ * below `subagents.maxDepth` (agent map spec §4.1).
41
43
  */
42
44
  parent?: SubagentParent;
45
+ /**
46
+ * The run is a sub-agent's without a live `parent`: a child case's eval replay. Its requests
47
+ * offer the message tools a sub-agent has (`SendMessage`, `SubagentHandback`), as the recorded
48
+ * run's did; not for a fork invocation's child (`SubagentParent.forSkill`). Implied by `parent`.
49
+ */
50
+ subagent?: boolean;
43
51
  }
44
52
  /** Where a sub-agent's run was dispatched from (its `subagent_dispatches` row). */
45
53
  export interface SubagentParent {
46
54
  conversationId: string;
47
55
  runId: string;
48
56
  callId: string;
57
+ /**
58
+ * The parent conversation's depth below the root (0: the parent is the root); this run's own
59
+ * depth is one more (agent map spec §6, `conversations.subagent_depth`).
60
+ */
61
+ depth: number;
62
+ /** The root conversation of the tree: its sandbox is the one every sub-agent works in. */
63
+ rootConversationId: string;
49
64
  /**
50
65
  * The child runs another org agent than its parent conversation's (§5.5, `template.source`
51
66
  * `agent`): only then the parent agent's current policies are read on top of its own.
52
67
  */
53
68
  otherAgent?: boolean;
69
+ /**
70
+ * The tree's budget run of this child run (agent map spec §6): the run's own `budget_run_id`
71
+ * (a dispatched run's, or a wake run's current window of the root), else its dispatch row's, read
72
+ * once when the run starts. The loop's budget check and the token counter (`appendCounted`) use
73
+ * it; absent only when unknown, then read with `budgetRunOf(runId)` (the parent run's window,
74
+ * stale for a wake run, whose `runId` is the first dispatch's).
75
+ */
76
+ budgetRunId?: string;
77
+ /**
78
+ * The run is a person's fork invocation's child (phase D, its dispatch's `for_skill`): its parent
79
+ * run waits for its final reply as the skill's report, so it gets neither `SubagentHandback` nor
80
+ * `SendMessage` to its parent (agent map spec §5.4: the fork's behaviour does not change).
81
+ */
82
+ forSkill?: boolean;
54
83
  }
55
84
  /**
56
85
  * 运行在等什么人处理:审批(`approvals` 行)或输入请求(`questions` 行,统一承载 `AskUserQuestion`、
@@ -1,19 +1,22 @@
1
1
  import { WorkerHost } from "@nestjs/bullmq";
2
2
  import type { Job, Queue, Worker } from "bullmq";
3
+ import { OwnedPluginCleanup } from "../catalog/owned-plugin-cleanup.js";
3
4
  import { ScheduledRuns } from "../infra/schedule/scheduled-runs.js";
4
5
  import type { KernelLogger } from "../log.js";
5
6
  import { DirectorySync } from "../orgs/directory-sync.js";
6
7
  import { SandboxService } from "../sandbox/sandbox.service.js";
7
8
  import { ToolDrift } from "../tools/drift.js";
9
+ import { RunQueue } from "./run-queue.js";
8
10
  import { Waits } from "./waits.js";
9
11
  export { MAINTENANCE_QUEUE_NAME } from "./maintenance-queue.js";
10
12
  /** The maintenance worker's concurrency (as the hand-made worker had). */
11
13
  export declare const MAINTENANCE_CONCURRENCY = 5;
12
14
  /**
13
15
  * The one consumer of `cap-kernel-maintenance` (decision R11 of the Nest kernel spec): dispatches
14
- * each one-off job by name to its domain (`wait-timeout` → {@link Waits}, `sandbox-destroy-for` →
15
- * {@link SandboxService}, `drift-connector` → {@link ToolDrift}, `directory-sync` →
16
- * {@link DirectorySync}). The name of a periodic job (a `@LockedCron` / `@LockedInterval` job,
16
+ * each one-off job by name to its domain (`wait-timeout` → {@link Waits}, `sandbox-destroy-for` and
17
+ * `sandbox-reset-files` → {@link SandboxService}, `drift-connector` → {@link ToolDrift}, `directory-sync` →
18
+ * {@link DirectorySync}, `bg-wake` → {@link RunQueue.ensureRun}, `owned-plugin-cleanup` →
19
+ * {@link OwnedPluginCleanup}). The name of a periodic job (a `@LockedCron` / `@LockedInterval` job,
17
20
  * such as `sandbox-suspend-idle`) runs that job's body once ({@link ScheduledRuns.runNow}), as the
18
21
  * maintenance handlers did when those jobs were schedulers on this queue: an operator's or a
19
22
  * test's one-off run, not a second schedule (decision R23 of the Nest kernel spec). Any other
@@ -24,10 +27,12 @@ export declare class MaintenanceProcessor extends WorkerHost<Worker> {
24
27
  private readonly sandbox;
25
28
  private readonly drift;
26
29
  private readonly directory;
30
+ private readonly runs;
31
+ private readonly ownedCleanup;
27
32
  private readonly scheduled;
28
33
  private readonly log;
29
34
  private readonly queue;
30
- constructor(waits: Pick<Waits, "processTimeout">, sandbox: Pick<SandboxService, "destroyFor">, drift: Pick<ToolDrift, "check">, directory: Pick<DirectorySync, "runSyncJob">, scheduled: Pick<ScheduledRuns, "runNow">, log: Pick<KernelLogger, "error" | "warn">, queue: Pick<Queue, "removeJobScheduler">);
35
+ constructor(waits: Pick<Waits, "processTimeout">, sandbox: Pick<SandboxService, "destroyEnvironment" | "resetFileSystem">, drift: Pick<ToolDrift, "check">, directory: Pick<DirectorySync, "runSyncJob">, runs: Pick<RunQueue, "ensureRun">, ownedCleanup: Pick<OwnedPluginCleanup, "run">, scheduled: Pick<ScheduledRuns, "runNow">, log: Pick<KernelLogger, "error" | "warn">, queue: Pick<Queue, "removeJobScheduler">);
31
36
  /**
32
37
  * Removes the retired job schedulers (`RETIRED_SCHEDULER_IDS`, runtime/retired-schedulers.ts): every fixed-period
33
38
  * maintenance job is a `@LockedCron` / `@LockedInterval` now. Idempotent; called once when a
@@ -9,6 +9,9 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
9
9
  };
10
10
  import { getQueueToken, OnWorkerEvent, WorkerHost } from "@nestjs/bullmq";
11
11
  import { Inject, Injectable, Module } from "@nestjs/common";
12
+ import { BG_WAKE_JOB } from "../background/wake-rules.js";
13
+ import { OWNED_PLUGIN_CLEANUP_JOB } from "../catalog/job-ids.js";
14
+ import { OwnedPluginCleanup, OwnedPluginCleanupModule } from "../catalog/owned-plugin-cleanup.js";
12
15
  import { configuredProcessor } from "../infra/queue/configured-processor.js";
13
16
  import { QueueModule } from "../infra/queue/queue.module.js";
14
17
  import { removeRetiredSchedulers } from "../infra/queue/retired-schedulers.js";
@@ -18,7 +21,7 @@ import { ScheduledRuns } from "../infra/schedule/scheduled-runs.js";
18
21
  import { KERNEL_LOGGER } from "../infra/tokens.js";
19
22
  import { DIRECTORY_SYNC_JOB, DirectorySync } from "../orgs/directory-sync.js";
20
23
  import { OrgsModule } from "../orgs/orgs.module.js";
21
- import { runSandboxDestroyFor, SANDBOX_DESTROY_FOR_JOB } from "../sandbox/jobs.js";
24
+ import { runSandboxDestroyFor, runSandboxResetFiles, SANDBOX_DESTROY_FOR_JOB, SANDBOX_RESET_FILES_JOB, } from "../sandbox/jobs.js";
22
25
  import { SandboxModule } from "../sandbox/sandbox.module.js";
23
26
  import { SandboxService } from "../sandbox/sandbox.service.js";
24
27
  import { ToolDrift } from "../tools/drift.js";
@@ -26,6 +29,7 @@ import { DRIFT_CONNECTOR_JOB } from "../tools/job-ids.js";
26
29
  import { ToolsModule } from "../tools/tools.module.js";
27
30
  import { MAINTENANCE_QUEUE_NAME } from "./maintenance-queue.js";
28
31
  import { RETIRED_SCHEDULER_IDS } from "./retired-schedulers.js";
32
+ import { RunQueue } from "./run-queue.js";
29
33
  import { RuntimeModule } from "./runtime.module.js";
30
34
  import { WAIT_TIMEOUT_JOB, Waits } from "./waits.js";
31
35
  export { MAINTENANCE_QUEUE_NAME } from "./maintenance-queue.js";
@@ -33,9 +37,10 @@ export { MAINTENANCE_QUEUE_NAME } from "./maintenance-queue.js";
33
37
  export const MAINTENANCE_CONCURRENCY = 5;
34
38
  /**
35
39
  * The one consumer of `cap-kernel-maintenance` (decision R11 of the Nest kernel spec): dispatches
36
- * each one-off job by name to its domain (`wait-timeout` → {@link Waits}, `sandbox-destroy-for` →
37
- * {@link SandboxService}, `drift-connector` → {@link ToolDrift}, `directory-sync` →
38
- * {@link DirectorySync}). The name of a periodic job (a `@LockedCron` / `@LockedInterval` job,
40
+ * each one-off job by name to its domain (`wait-timeout` → {@link Waits}, `sandbox-destroy-for` and
41
+ * `sandbox-reset-files` → {@link SandboxService}, `drift-connector` → {@link ToolDrift}, `directory-sync` →
42
+ * {@link DirectorySync}, `bg-wake` → {@link RunQueue.ensureRun}, `owned-plugin-cleanup` →
43
+ * {@link OwnedPluginCleanup}). The name of a periodic job (a `@LockedCron` / `@LockedInterval` job,
39
44
  * such as `sandbox-suspend-idle`) runs that job's body once ({@link ScheduledRuns.runNow}), as the
40
45
  * maintenance handlers did when those jobs were schedulers on this queue: an operator's or a
41
46
  * test's one-off run, not a second schedule (decision R23 of the Nest kernel spec). Any other
@@ -46,15 +51,19 @@ let MaintenanceProcessor = class MaintenanceProcessor extends WorkerHost {
46
51
  sandbox;
47
52
  drift;
48
53
  directory;
54
+ runs;
55
+ ownedCleanup;
49
56
  scheduled;
50
57
  log;
51
58
  queue;
52
- constructor(waits, sandbox, drift, directory, scheduled, log, queue) {
59
+ constructor(waits, sandbox, drift, directory, runs, ownedCleanup, scheduled, log, queue) {
53
60
  super();
54
61
  this.waits = waits;
55
62
  this.sandbox = sandbox;
56
63
  this.drift = drift;
57
64
  this.directory = directory;
65
+ this.runs = runs;
66
+ this.ownedCleanup = ownedCleanup;
58
67
  this.scheduled = scheduled;
59
68
  this.log = log;
60
69
  this.queue = queue;
@@ -82,6 +91,9 @@ let MaintenanceProcessor = class MaintenanceProcessor extends WorkerHost {
82
91
  case SANDBOX_DESTROY_FOR_JOB:
83
92
  await runSandboxDestroyFor(this.sandbox, this.log, job);
84
93
  return;
94
+ case SANDBOX_RESET_FILES_JOB:
95
+ await runSandboxResetFiles(this.sandbox, job);
96
+ return;
85
97
  case DRIFT_CONNECTOR_JOB: {
86
98
  const { orgId, connectorId, trigger } = job.data;
87
99
  await this.drift.check(orgId, connectorId, trigger);
@@ -90,6 +102,17 @@ let MaintenanceProcessor = class MaintenanceProcessor extends WorkerHost {
90
102
  case DIRECTORY_SYNC_JOB:
91
103
  await this.directory.runSyncJob(job.data);
92
104
  return;
105
+ // the end of a conversation's wake window (background Bash spec §3)
106
+ case BG_WAKE_JOB: {
107
+ // fired before the window ended (clock skew): it reschedules under its next retry id
108
+ const { conversationId, retry } = job.data;
109
+ await this.runs.ensureRun(conversationId, { wakeRetry: (retry ?? 0) + 1 });
110
+ return;
111
+ }
112
+ // a removed org-owned plugin's extension (plugin scope phase 3, P3-20)
113
+ case OWNED_PLUGIN_CLEANUP_JOB:
114
+ await this.ownedCleanup.run(job.data.itemId);
115
+ return;
93
116
  default:
94
117
  if (await this.scheduled.runNow(job.name))
95
118
  return;
@@ -115,9 +138,11 @@ MaintenanceProcessor = __decorate([
115
138
  __param(1, Inject(SandboxService)),
116
139
  __param(2, Inject(ToolDrift)),
117
140
  __param(3, Inject(DirectorySync)),
118
- __param(4, Inject(ScheduledRuns)),
119
- __param(5, Inject(KERNEL_LOGGER)),
120
- __param(6, Inject(getQueueToken(MAINTENANCE_QUEUE_NAME)))
141
+ __param(4, Inject(RunQueue)),
142
+ __param(5, Inject(OwnedPluginCleanup)),
143
+ __param(6, Inject(ScheduledRuns)),
144
+ __param(7, Inject(KERNEL_LOGGER)),
145
+ __param(8, Inject(getQueueToken(MAINTENANCE_QUEUE_NAME)))
121
146
  ], MaintenanceProcessor);
122
147
  export { MaintenanceProcessor };
123
148
  /**
@@ -137,6 +162,8 @@ MaintenanceModule = __decorate([
137
162
  SandboxModule,
138
163
  ToolsModule,
139
164
  OrgsModule,
165
+ // the removed org plugins' cleanup and its daily sweep (worker-only through this module)
166
+ OwnedPluginCleanupModule,
140
167
  QueueModule.registerQueue(MAINTENANCE_QUEUE_NAME),
141
168
  ],
142
169
  providers: [
@@ -1,6 +1,7 @@
1
1
  import { type ContentBlock, type Logger, type ModelProvider, type ModelRequest, type ModelStreamEvent, type ModelUsage, type StopReason } from "@capybara-hq/plugin-sdk";
2
2
  import type { AgentDefinition } from "../agents/definition.js";
3
- import type { EventLog } from "../conversations/event-log.js";
3
+ import type { AppendEvent, EventLog } from "../conversations/event-log.js";
4
+ import { type ConversationEvent } from "../conversations/events.js";
4
5
  import type { KernelSchemaDb } from "../db/kernel-schema.js";
5
6
  import type { KernelConfigService } from "../infra/config/kernel-config.service.js";
6
7
  import type { ToolRegistry, UnavailableTool } from "../tools/registry.js";
@@ -13,17 +14,28 @@ import type { StepLog } from "./step-log.js";
13
14
  import type { UsageReporter } from "./usage-report.js";
14
15
  /** 单轮收尾的尾部提醒(模型可见,英文;spec 6 轮次额度收尾)。 */
15
16
  export declare const WRAP_UP_REMINDER = "Step limit reached. Do not call tools. Summarize what you found and what remains for the user.";
16
- /** 所用模型不支持工具(`capabilities.tools` 为 false)时的提醒(模型可见,英文)。 */
17
- export declare const TOOLS_UNSUPPORTED_REMINDER = "Tools are unavailable for this model. Answer without calling tools.";
17
+ /**
18
+ * The tail reminder of a sub-agent's final call once its tree used its token budget (model-visible,
19
+ * English; sub-agents spec §8.3): the child hands back what it found instead of ending with nothing.
20
+ */
21
+ export declare const BUDGET_WRAP_UP_REMINDER: string;
22
+ /** Why a run makes its final, tool-less call: its step limit, or its tree's token budget. */
23
+ export type WrapUpReason = "max_steps" | "budget";
24
+ export { TOOLS_UNSUPPORTED_REMINDER } from "./context/reminders.js";
18
25
  /** 不可用工具提醒的前缀(模型可见,英文)。 */
19
26
  export declare const TOOLS_UNAVAILABLE_PREFIX = "The following tools are unavailable in this run: ";
20
27
  /** 本 run 中此前有工具不可用、现在全部恢复时的提醒(模型可见,英文)。 */
21
28
  export declare const TOOLS_AVAILABLE_AGAIN = "All previously unavailable tools are available again.";
22
29
  /** 不可用工具提醒:`The following tools are unavailable in this run: <ref> (<reason>), ...`。 */
23
30
  export declare function toolsUnavailableReminder(unavailable: readonly UnavailableTool[]): string;
24
- /** 流式增量的出口(推给前端等订阅方);`step_reset` 表示丢弃本步已推出的增量、重新开始。 */
31
+ /**
32
+ * 流式增量的出口(推给前端等订阅方);`step_reset` 表示丢弃本步已推出的增量、重新开始。
33
+ * `stream_end` (the step's model stream completed) and `step_end` (the step's `assistant_message`
34
+ * is logged) carry no delta: the run worker's sink writes and then clears the step's live draft on
35
+ * them (spec 2026-11-07 §3.2) and publishes neither.
36
+ */
25
37
  export type StreamSink = (delta: {
26
- kind: "text" | "thinking" | "step_reset";
38
+ kind: "text" | "thinking" | "step_reset" | "stream_end" | "step_end";
27
39
  runId: string;
28
40
  step: number;
29
41
  text?: string;
@@ -94,9 +106,12 @@ export interface ModelStepInput {
94
106
  conversationKind?: ConversationKindForHooks;
95
107
  /** A sub-agent's run: where it was dispatched from (hook payloads carry it as `parent`). */
96
108
  parent?: SubagentParent;
109
+ /** A sub-agent's run without a live parent (a child case's eval replay, `LoopContext`). */
110
+ subagent?: boolean;
97
111
  /**
98
- * A sub-agent's run (phase C): the parent run whose `subagent_tokens_used` counts every usage
99
- * event this step writes (step, wrap-up and compaction calls; spec §8.3).
112
+ * A sub-agent's run (phase C): the parent run whose budget run's `subagent_tokens_used` counts
113
+ * every usage event this step writes (step, wrap-up and compaction calls; spec §8.3, agent map
114
+ * spec §6).
100
115
  */
101
116
  parentRunId?: string;
102
117
  /**
@@ -149,8 +164,31 @@ export declare function runModelStep(deps: ModelStepDeps, input: ModelStepInput)
149
164
  * 单轮收尾:到达步数上限时调用一次。写入收尾 `reminder`(位于请求末尾);照常带工具(历史里有工具调用时
150
165
  * 部分供应商要求请求声明工具,也保持缓存前缀稳定),但 `toolChoice: "none"`——模型只能回复文本。
151
166
  * 其余与 `runModelStep` 相同(幂等、降级、中止)。
167
+ *
168
+ * `reason: "budget"`: a sub-agent whose tree used its token budget makes this one call to hand back
169
+ * what it found (sub-agents spec §8.3); it is not stopped by the budget again (one call over).
152
170
  */
153
- export declare function runFinalWrapUp(deps: ModelStepDeps, input: ModelStepInput): Promise<ModelStepResult>;
171
+ export declare function runFinalWrapUp(deps: ModelStepDeps, input: ModelStepInput, reason?: WrapUpReason): Promise<ModelStepResult>;
172
+ /**
173
+ * Appends a model call's events (its reply or compaction outcome with its `usage`; also the usage
174
+ * of a `WebFetch` extraction call, `tools/builtins/web/extract.ts`). For a
175
+ * sub-agent's run (`input.parentRunId`) in one transaction that also adds the tokens of the usage
176
+ * events it newly wrote to the budget run's `subagent_tokens_used` (sub-agents spec §8.3): a usage
177
+ * event already in the log (an idempotent hit after a crash) adds nothing, so each call counts
178
+ * exactly once.
179
+ */
180
+ export declare function appendCounted(deps: {
181
+ eventLog: Pick<EventLog, "append" | "notify">;
182
+ stepLog: Pick<StepLog, "appendCounted">;
183
+ }, input: {
184
+ conversationId: string;
185
+ parentRunId?: string | undefined;
186
+ /** The run's budget window (agent map spec §6), when known; else the parent run's. */
187
+ budgetRunId?: string | undefined;
188
+ parent?: {
189
+ budgetRunId?: string | undefined;
190
+ } | undefined;
191
+ }, events: AppendEvent[]): Promise<ConversationEvent[]>;
154
192
  /** {@link assembleModelRequest} 的输入。 */
155
193
  export interface AssembleModelRequestInput extends Omit<BuildModelRequestInput, "tools"> {
156
194
  /** 本步解析出的工具;模型不支持工具(`capabilities.tools` 为 false)时不带。 */