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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (534) hide show
  1. package/bootstrap.json +61 -5
  2. package/dist/admin/admin.controller.d.ts +51 -14
  3. package/dist/admin/admin.controller.js +60 -19
  4. package/dist/admin/extensions.controller.d.ts +16 -2
  5. package/dist/admin/extensions.controller.js +26 -6
  6. package/dist/admin/setup-lock.d.ts +1 -1
  7. package/dist/admin/setup-lock.js +1 -1
  8. package/dist/admin/setup.controller.d.ts +1 -1
  9. package/dist/admin/setup.controller.js +1 -1
  10. package/dist/admin/setup.service.d.ts +4 -4
  11. package/dist/admin/setup.service.js +8 -8
  12. package/dist/agents/agent-lookup.d.ts +16 -0
  13. package/dist/agents/agent-lookup.js +11 -0
  14. package/dist/agents/agents.controller.d.ts +76 -1
  15. package/dist/agents/agents.controller.js +90 -11
  16. package/dist/agents/agents.module.d.ts +4 -1
  17. package/dist/agents/agents.module.js +32 -6
  18. package/dist/agents/agents.service.d.ts +54 -23
  19. package/dist/agents/agents.service.js +180 -76
  20. package/dist/agents/definition.d.ts +49 -0
  21. package/dist/agents/definition.js +45 -0
  22. package/dist/agents/from-template.d.ts +106 -0
  23. package/dist/agents/from-template.js +649 -0
  24. package/dist/agents/from-template.service.d.ts +60 -0
  25. package/dist/agents/from-template.service.js +161 -0
  26. package/dist/agents/models.controller.d.ts +34 -5
  27. package/dist/agents/models.controller.js +50 -6
  28. package/dist/agents/org-templates.d.ts +176 -0
  29. package/dist/agents/org-templates.js +827 -0
  30. package/dist/agents/pending-connector-requests.d.ts +77 -0
  31. package/dist/agents/pending-connector-requests.js +215 -0
  32. package/dist/agents/pending-connectors.controller.d.ts +39 -0
  33. package/dist/agents/pending-connectors.controller.js +91 -0
  34. package/dist/agents/pending-connectors.service.d.ts +62 -0
  35. package/dist/agents/pending-connectors.service.js +282 -0
  36. package/dist/agents/readiness.controller.d.ts +5 -5
  37. package/dist/agents/readiness.controller.js +6 -6
  38. package/dist/agents/templates.controller.d.ts +86 -5
  39. package/dist/agents/templates.controller.js +171 -7
  40. package/dist/agents/templates.d.ts +127 -23
  41. package/dist/agents/templates.js +475 -52
  42. package/dist/background/background.module.js +8 -1
  43. package/dist/background/finish.d.ts +3 -2
  44. package/dist/background/launch-lock.d.ts +4 -3
  45. package/dist/background/launch-lock.js +4 -3
  46. package/dist/background/poll.job.d.ts +9 -6
  47. package/dist/background/poll.job.js +30 -22
  48. package/dist/background/session.d.ts +13 -2
  49. package/dist/background/session.js +13 -0
  50. package/dist/background/stop.d.ts +12 -6
  51. package/dist/background/stop.js +57 -39
  52. package/dist/background/store.d.ts +18 -6
  53. package/dist/background/store.js +12 -6
  54. package/dist/background/tasks.service.d.ts +15 -5
  55. package/dist/background/tasks.service.js +42 -17
  56. package/dist/background/wake-rules.d.ts +27 -18
  57. package/dist/background/wake-rules.js +52 -22
  58. package/dist/background/wake.d.ts +13 -11
  59. package/dist/background/wake.js +20 -14
  60. package/dist/catalog/admin-catalog.controller.d.ts +129 -30
  61. package/dist/catalog/admin-catalog.controller.js +213 -42
  62. package/dist/catalog/catalog-content.d.ts +58 -32
  63. package/dist/catalog/catalog-content.js +34 -8
  64. package/dist/catalog/catalog-import.module.d.ts +7 -0
  65. package/dist/catalog/catalog-import.module.js +60 -0
  66. package/dist/catalog/catalog-items.d.ts +111 -7
  67. package/dist/catalog/catalog-items.js +279 -13
  68. package/dist/catalog/catalog-scope.service.d.ts +260 -0
  69. package/dist/catalog/catalog-scope.service.js +1116 -0
  70. package/dist/catalog/catalog.module.d.ts +7 -9
  71. package/dist/catalog/catalog.module.js +41 -31
  72. package/dist/catalog/catalog.service.d.ts +101 -29
  73. package/dist/catalog/catalog.service.js +104 -106
  74. package/dist/catalog/cli.d.ts +11 -1
  75. package/dist/catalog/cli.js +26 -1
  76. package/dist/catalog/component-promotion.d.ts +96 -0
  77. package/dist/catalog/component-promotion.js +395 -0
  78. package/dist/catalog/component-scope.controller.d.ts +152 -0
  79. package/dist/catalog/component-scope.controller.js +287 -0
  80. package/dist/catalog/component-scope.service.d.ts +303 -0
  81. package/dist/catalog/component-scope.service.js +936 -0
  82. package/dist/catalog/component-state.d.ts +174 -0
  83. package/dist/catalog/component-state.js +437 -0
  84. package/dist/catalog/job-ids.d.ts +30 -0
  85. package/dist/catalog/job-ids.js +25 -0
  86. package/dist/catalog/marketplace-fetch.d.ts +1 -1
  87. package/dist/catalog/marketplaces.controller.d.ts +22 -5
  88. package/dist/catalog/marketplaces.controller.js +56 -7
  89. package/dist/catalog/marketplaces.service.d.ts +54 -14
  90. package/dist/catalog/marketplaces.service.js +71 -22
  91. package/dist/catalog/org-catalog.controller.d.ts +125 -34
  92. package/dist/catalog/org-catalog.controller.js +181 -65
  93. package/dist/catalog/org-catalog.service.d.ts +65 -33
  94. package/dist/catalog/org-catalog.service.js +324 -157
  95. package/dist/catalog/org-extension-switch.d.ts +41 -0
  96. package/dist/catalog/org-extension-switch.js +115 -0
  97. package/dist/catalog/org-extension.controller.d.ts +119 -0
  98. package/dist/catalog/org-extension.controller.js +266 -0
  99. package/dist/catalog/org-plugin-uploads.controller.d.ts +98 -0
  100. package/dist/catalog/org-plugin-uploads.controller.js +213 -0
  101. package/dist/catalog/org-plugin-uploads.d.ts +63 -0
  102. package/dist/catalog/org-plugin-uploads.js +116 -0
  103. package/dist/catalog/owned-items.d.ts +184 -0
  104. package/dist/catalog/owned-items.js +789 -0
  105. package/dist/catalog/owned-plugin-cleanup.d.ts +56 -0
  106. package/dist/catalog/owned-plugin-cleanup.js +194 -0
  107. package/dist/catalog/ownership.d.ts +172 -0
  108. package/dist/catalog/ownership.js +326 -0
  109. package/dist/catalog/platform-components.d.ts +221 -0
  110. package/dist/catalog/platform-components.js +761 -0
  111. package/dist/catalog/platform-migration.d.ts +115 -0
  112. package/dist/catalog/platform-migration.js +582 -0
  113. package/dist/catalog/plugin-import.d.ts +178 -34
  114. package/dist/catalog/plugin-import.js +622 -82
  115. package/dist/catalog/plugin-install.d.ts +185 -41
  116. package/dist/catalog/plugin-install.js +758 -126
  117. package/dist/catalog/plugin-upgrade.d.ts +260 -225
  118. package/dist/catalog/plugin-upgrade.js +1147 -1136
  119. package/dist/catalog/request-rules.d.ts +65 -0
  120. package/dist/catalog/request-rules.js +217 -0
  121. package/dist/catalog/requests.service.d.ts +193 -118
  122. package/dist/catalog/requests.service.js +526 -343
  123. package/dist/catalog/reserved-names.d.ts +8 -0
  124. package/dist/catalog/reserved-names.js +42 -0
  125. package/dist/catalog/scope-orgs.d.ts +21 -0
  126. package/dist/catalog/scope-orgs.js +67 -0
  127. package/dist/catalog/scope-state.d.ts +35 -0
  128. package/dist/catalog/scope-state.js +87 -0
  129. package/dist/catalog/scope-sync-workers.d.ts +7 -0
  130. package/dist/catalog/scope-sync-workers.js +29 -0
  131. package/dist/catalog/scope-sync.d.ts +176 -0
  132. package/dist/catalog/scope-sync.js +576 -0
  133. package/dist/catalog/scope.d.ts +42 -0
  134. package/dist/catalog/scope.js +42 -0
  135. package/dist/catalog/unshare.d.ts +22 -0
  136. package/dist/catalog/unshare.js +118 -0
  137. package/dist/channels/actions.js +1 -0
  138. package/dist/channels/cards.js +20 -2
  139. package/dist/channels/channels.module.js +2 -0
  140. package/dist/channels/inbound.d.ts +9 -1
  141. package/dist/channels/inbound.js +67 -5
  142. package/dist/channels/phrases.d.ts +35 -0
  143. package/dist/channels/phrases.js +29 -0
  144. package/dist/config/docs.js +3 -1
  145. package/dist/config/schema.d.ts +10 -2
  146. package/dist/config/schema.js +70 -22
  147. package/dist/conversations/access.d.ts +6 -4
  148. package/dist/conversations/access.js +27 -5
  149. package/dist/conversations/agent-tree.d.ts +46 -0
  150. package/dist/conversations/agent-tree.js +92 -0
  151. package/dist/conversations/conversations.controller.d.ts +43 -18
  152. package/dist/conversations/conversations.controller.js +79 -38
  153. package/dist/conversations/conversations.module.d.ts +1 -1
  154. package/dist/conversations/conversations.module.js +7 -7
  155. package/dist/conversations/conversations.service.d.ts +73 -15
  156. package/dist/conversations/conversations.service.js +115 -35
  157. package/dist/conversations/environment-status.d.ts +24 -0
  158. package/dist/conversations/environment-status.js +71 -0
  159. package/dist/conversations/event-log.d.ts +20 -5
  160. package/dist/conversations/event-log.js +60 -0
  161. package/dist/conversations/events.d.ts +84 -2
  162. package/dist/conversations/events.js +91 -17
  163. package/dist/conversations/queue.service.d.ts +1 -1
  164. package/dist/conversations/queue.service.js +5 -0
  165. package/dist/conversations/titles.d.ts +5 -3
  166. package/dist/conversations/titles.js +21 -8
  167. package/dist/conversations/tree.d.ts +17 -0
  168. package/dist/conversations/tree.js +42 -0
  169. package/dist/ctx/create-ctx.d.ts +20 -1
  170. package/dist/ctx/create-ctx.js +38 -7
  171. package/dist/db/kernel-schema.d.ts +386 -18
  172. package/dist/environments/access.d.ts +41 -0
  173. package/dist/environments/access.js +77 -0
  174. package/dist/environments/conversation-environments.d.ts +61 -0
  175. package/dist/environments/conversation-environments.js +170 -0
  176. package/dist/environments/dto.d.ts +25 -0
  177. package/dist/environments/dto.js +12 -0
  178. package/dist/environments/environments.controller.d.ts +33 -0
  179. package/dist/environments/environments.controller.js +110 -0
  180. package/dist/environments/environments.module.d.ts +8 -0
  181. package/dist/environments/environments.module.js +27 -0
  182. package/dist/environments/environments.service.d.ts +153 -0
  183. package/dist/environments/environments.service.js +541 -0
  184. package/dist/environments/legacy-cleanup.job.d.ts +34 -0
  185. package/dist/environments/legacy-cleanup.job.js +141 -0
  186. package/dist/errors.d.ts +85 -2
  187. package/dist/errors.js +85 -2
  188. package/dist/evals/reconstruct.d.ts +18 -9
  189. package/dist/evals/reconstruct.js +26 -7
  190. package/dist/evals/run-replay.d.ts +4 -2
  191. package/dist/evals/run-replay.js +20 -6
  192. package/dist/evals/runs.service.d.ts +2 -1
  193. package/dist/evals/runs.service.js +13 -12
  194. package/dist/evals/step-replay.d.ts +4 -6
  195. package/dist/evals/step-replay.js +4 -3
  196. package/dist/evals/trajectory.service.d.ts +8 -3
  197. package/dist/evals/trajectory.service.js +26 -14
  198. package/dist/evals/worker.d.ts +5 -5
  199. package/dist/evals/worker.js +9 -3
  200. package/dist/extensions/admin-ops.d.ts +36 -10
  201. package/dist/extensions/admin-ops.js +65 -42
  202. package/dist/extensions/admin-view.d.ts +37 -10
  203. package/dist/extensions/admin-view.js +103 -20
  204. package/dist/extensions/bootstrap.d.ts +17 -4
  205. package/dist/extensions/bootstrap.js +70 -9
  206. package/dist/extensions/cli.d.ts +12 -0
  207. package/dist/extensions/cli.js +11 -2
  208. package/dist/extensions/config-hash.d.ts +10 -0
  209. package/dist/extensions/config-hash.js +38 -0
  210. package/dist/extensions/deployment-config.d.ts +28 -5
  211. package/dist/extensions/deployment-config.js +48 -7
  212. package/dist/extensions/effective-config.d.ts +127 -0
  213. package/dist/extensions/effective-config.js +368 -0
  214. package/dist/extensions/extensions.module.js +11 -11
  215. package/dist/extensions/hooks.d.ts +37 -4
  216. package/dist/extensions/hooks.js +82 -16
  217. package/dist/extensions/host.d.ts +24 -10
  218. package/dist/extensions/host.js +49 -54
  219. package/dist/extensions/installs.d.ts +20 -8
  220. package/dist/extensions/installs.js +37 -15
  221. package/dist/extensions/org-config.d.ts +75 -6
  222. package/dist/extensions/org-config.js +184 -32
  223. package/dist/extensions/org-levels.d.ts +37 -0
  224. package/dist/extensions/org-levels.js +71 -0
  225. package/dist/extensions/org-overrides.d.ts +151 -0
  226. package/dist/extensions/org-overrides.js +524 -0
  227. package/dist/extensions/permission-view.d.ts +16 -4
  228. package/dist/extensions/permission-view.js +4 -4
  229. package/dist/extensions/plugin-items.d.ts +21 -0
  230. package/dist/extensions/plugin-items.js +42 -0
  231. package/dist/extensions/point-defaults.d.ts +12 -5
  232. package/dist/extensions/point-defaults.js +37 -9
  233. package/dist/extensions/resolve.d.ts +5 -1
  234. package/dist/extensions/resolve.js +15 -2
  235. package/dist/extensions/state.module.d.ts +9 -0
  236. package/dist/extensions/state.module.js +38 -0
  237. package/dist/files/previewers.d.ts +8 -1
  238. package/dist/files/previewers.js +35 -6
  239. package/dist/http/api.module.js +25 -3
  240. package/dist/http/app.d.ts +11 -2
  241. package/dist/http/app.js +31 -5
  242. package/dist/http/plugin-dispatch.d.ts +4 -1
  243. package/dist/http/plugin-dispatch.js +14 -2
  244. package/dist/identity/accounts.d.ts +29 -29
  245. package/dist/identity/accounts.js +47 -47
  246. package/dist/identity/audit.d.ts +2 -1
  247. package/dist/identity/auth.guard.d.ts +13 -5
  248. package/dist/identity/auth.guard.js +26 -9
  249. package/dist/identity/identity.module.d.ts +1 -1
  250. package/dist/identity/identity.module.js +4 -4
  251. package/dist/identity/me.controller.js +1 -1
  252. package/dist/identity/principal.d.ts +3 -3
  253. package/dist/identity/principal.js +3 -3
  254. package/dist/identity/settings.d.ts +22 -11
  255. package/dist/identity/settings.js +53 -18
  256. package/dist/identity/{enterprise-admin.d.ts → super-admin.d.ts} +5 -5
  257. package/dist/identity/{enterprise-admin.js → super-admin.js} +24 -24
  258. package/dist/inbox/inbox.module.d.ts +4 -1
  259. package/dist/inbox/inbox.module.js +7 -3
  260. package/dist/inbox/inbox.service.d.ts +62 -3
  261. package/dist/inbox/inbox.service.js +74 -4
  262. package/dist/inbox/org-notices.d.ts +63 -0
  263. package/dist/inbox/org-notices.js +91 -0
  264. package/dist/inbox/platform-inbox.controller.d.ts +23 -0
  265. package/dist/inbox/platform-inbox.controller.js +58 -0
  266. package/dist/inbox/platform-inbox.service.d.ts +151 -0
  267. package/dist/inbox/platform-inbox.service.js +263 -0
  268. package/dist/inbox/platform-notices.d.ts +19 -0
  269. package/dist/inbox/platform-notices.js +9 -0
  270. package/dist/index.d.ts +1 -1
  271. package/dist/index.js +1 -1
  272. package/dist/infra/cli/kernel-cli.module.js +9 -1
  273. package/dist/infra/config/kernel-config.service.js +24 -1
  274. package/dist/infra/database/xact-lock.d.ts +1 -1
  275. package/dist/infra/database/xact-lock.js +1 -1
  276. package/dist/infra/events/kernel-events.d.ts +19 -2
  277. package/dist/infra/queue/add-job-once.d.ts +14 -0
  278. package/dist/infra/queue/add-job-once.js +16 -0
  279. package/dist/kernel.module.js +6 -0
  280. package/dist/lifecycle/kernel-lifecycle.d.ts +1 -1
  281. package/dist/lifecycle/kernel-lifecycle.js +4 -4
  282. package/dist/models/embeddings.d.ts +82 -0
  283. package/dist/models/embeddings.js +326 -0
  284. package/dist/models/enablement.controller.d.ts +40 -0
  285. package/dist/models/enablement.controller.js +74 -0
  286. package/dist/models/enablement.d.ts +99 -0
  287. package/dist/models/enablement.js +263 -0
  288. package/dist/models/models.module.d.ts +5 -1
  289. package/dist/models/models.module.js +16 -4
  290. package/dist/models/prices.d.ts +5 -5
  291. package/dist/models/prices.js +4 -4
  292. package/dist/models/purposes.controller.d.ts +6 -4
  293. package/dist/models/purposes.controller.js +13 -7
  294. package/dist/models/purposes.d.ts +37 -12
  295. package/dist/models/purposes.js +63 -17
  296. package/dist/orgs/directory-sync.d.ts +14 -5
  297. package/dist/orgs/directory-sync.js +41 -17
  298. package/dist/orgs/offboarding.d.ts +9 -7
  299. package/dist/orgs/offboarding.js +28 -17
  300. package/dist/orgs/org-lock.d.ts +5 -0
  301. package/dist/orgs/org-lock.js +13 -0
  302. package/dist/orgs/org.guard.d.ts +10 -0
  303. package/dist/orgs/org.guard.js +43 -32
  304. package/dist/orgs/orgs.module.js +3 -0
  305. package/dist/orgs/orgs.service.d.ts +20 -7
  306. package/dist/orgs/orgs.service.js +32 -12
  307. package/dist/orgs/roles.d.ts +1 -1
  308. package/dist/orgs/roles.js +5 -1
  309. package/dist/orgs/settings.controller.d.ts +1 -1
  310. package/dist/orgs/settings.service.d.ts +15 -3
  311. package/dist/orgs/settings.service.js +6 -2
  312. package/dist/overrides.d.ts +3 -0
  313. package/dist/overrides.js +2 -0
  314. package/dist/platform/actor.d.ts +48 -0
  315. package/dist/platform/actor.js +100 -0
  316. package/dist/platform/agent-docs.d.ts +18 -0
  317. package/dist/platform/agent-docs.js +59 -0
  318. package/dist/platform/availability.d.ts +14 -0
  319. package/dist/platform/availability.js +43 -0
  320. package/dist/platform/errors.d.ts +11 -0
  321. package/dist/platform/errors.js +26 -0
  322. package/dist/platform/exclusions.d.ts +12 -0
  323. package/dist/platform/exclusions.js +1405 -0
  324. package/dist/platform/method.d.ts +6 -0
  325. package/dist/platform/method.js +15 -0
  326. package/dist/platform/operation.d.ts +92 -0
  327. package/dist/platform/operation.js +35 -0
  328. package/dist/platform/ops/agent-templates.ops.d.ts +14 -0
  329. package/dist/platform/ops/agent-templates.ops.js +92 -0
  330. package/dist/platform/ops/agents.ops.d.ts +19 -0
  331. package/dist/platform/ops/agents.ops.js +294 -0
  332. package/dist/platform/ops/connectors.ops.d.ts +15 -0
  333. package/dist/platform/ops/connectors.ops.js +126 -0
  334. package/dist/platform/ops/errors.d.ts +11 -0
  335. package/dist/platform/ops/errors.js +22 -0
  336. package/dist/platform/ops/extensions.ops.d.ts +19 -0
  337. package/dist/platform/ops/extensions.ops.js +116 -0
  338. package/dist/platform/ops/marketplaces.ops.d.ts +16 -0
  339. package/dist/platform/ops/marketplaces.ops.js +157 -0
  340. package/dist/platform/ops/paging.d.ts +14 -0
  341. package/dist/platform/ops/paging.js +20 -0
  342. package/dist/platform/ops/platform.ops.d.ts +23 -0
  343. package/dist/platform/ops/platform.ops.js +158 -0
  344. package/dist/platform/ops/plugins.ops.d.ts +33 -0
  345. package/dist/platform/ops/plugins.ops.js +377 -0
  346. package/dist/platform/ops/requests.ops.d.ts +14 -0
  347. package/dist/platform/ops/requests.ops.js +153 -0
  348. package/dist/platform/ops/role.d.ts +4 -0
  349. package/dist/platform/ops/role.js +10 -0
  350. package/dist/platform/ops/skills.ops.d.ts +13 -0
  351. package/dist/platform/ops/skills.ops.js +98 -0
  352. package/dist/platform/ops/summary.d.ts +10 -0
  353. package/dist/platform/ops/summary.js +18 -0
  354. package/dist/platform/platform-ops.module.d.ts +7 -0
  355. package/dist/platform/platform-ops.module.js +55 -0
  356. package/dist/platform/platform.module.d.ts +8 -0
  357. package/dist/platform/platform.module.js +25 -0
  358. package/dist/platform/redact-orgs.d.ts +7 -0
  359. package/dist/platform/redact-orgs.js +52 -0
  360. package/dist/platform/registry.d.ts +30 -0
  361. package/dist/platform/registry.js +111 -0
  362. package/dist/roles/worker-role.d.ts +6 -4
  363. package/dist/roles/worker-role.js +14 -7
  364. package/dist/roles/worker.module.d.ts +1 -1
  365. package/dist/roles/worker.module.js +9 -1
  366. package/dist/runtime/context/build.d.ts +6 -4
  367. package/dist/runtime/context/build.js +26 -7
  368. package/dist/runtime/context/claude-tools.d.ts +2 -1
  369. package/dist/runtime/context/claude-tools.js +5 -4
  370. package/dist/runtime/context/compaction.js +9 -0
  371. package/dist/runtime/context/reminders.d.ts +2 -0
  372. package/dist/runtime/context/reminders.js +2 -0
  373. package/dist/runtime/context/skills.js +9 -2
  374. package/dist/runtime/context/tool-changes.d.ts +27 -0
  375. package/dist/runtime/context/tool-changes.js +60 -0
  376. package/dist/runtime/hook-calls.d.ts +8 -1
  377. package/dist/runtime/hook-calls.js +40 -7
  378. package/dist/runtime/langgraph-loop.d.ts +3 -1
  379. package/dist/runtime/langgraph-loop.js +35 -17
  380. package/dist/runtime/loop.d.ts +32 -4
  381. package/dist/runtime/maintenance.d.ts +7 -4
  382. package/dist/runtime/maintenance.js +23 -8
  383. package/dist/runtime/model-call.d.ts +38 -11
  384. package/dist/runtime/model-call.js +97 -24
  385. package/dist/runtime/providers.d.ts +146 -32
  386. package/dist/runtime/providers.js +321 -67
  387. package/dist/runtime/run-control.d.ts +11 -1
  388. package/dist/runtime/run-control.js +12 -0
  389. package/dist/runtime/run-drafts.d.ts +85 -0
  390. package/dist/runtime/run-drafts.js +230 -0
  391. package/dist/runtime/run-jobs.d.ts +3 -5
  392. package/dist/runtime/run-jobs.js +3 -7
  393. package/dist/runtime/run-queue.d.ts +37 -3
  394. package/dist/runtime/run-queue.js +188 -11
  395. package/dist/runtime/run-worker.d.ts +12 -6
  396. package/dist/runtime/run-worker.js +58 -35
  397. package/dist/runtime/runtime.module.js +3 -0
  398. package/dist/runtime/step-log.d.ts +9 -4
  399. package/dist/runtime/step-log.js +8 -5
  400. package/dist/runtime/stream.controller.d.ts +23 -1
  401. package/dist/runtime/stream.controller.js +60 -3
  402. package/dist/runtime/stream.d.ts +4 -1
  403. package/dist/runtime/stream.js +27 -3
  404. package/dist/runtime/subagents/child.d.ts +55 -7
  405. package/dist/runtime/subagents/child.js +105 -7
  406. package/dist/runtime/subagents/definition.d.ts +12 -3
  407. package/dist/runtime/subagents/definition.js +46 -32
  408. package/dist/runtime/subagents/deliveries.d.ts +71 -0
  409. package/dist/runtime/subagents/deliveries.js +228 -0
  410. package/dist/runtime/subagents/dispatch.d.ts +115 -26
  411. package/dist/runtime/subagents/dispatch.js +212 -141
  412. package/dist/runtime/subagents/limits.d.ts +24 -5
  413. package/dist/runtime/subagents/limits.js +40 -6
  414. package/dist/runtime/subagents/messages.d.ts +95 -0
  415. package/dist/runtime/subagents/messages.js +328 -0
  416. package/dist/runtime/subagents/preamble.d.ts +4 -4
  417. package/dist/runtime/subagents/preamble.js +9 -7
  418. package/dist/runtime/subagents/progress.d.ts +8 -6
  419. package/dist/runtime/subagents/progress.js +11 -6
  420. package/dist/runtime/subagents/render.d.ts +30 -0
  421. package/dist/runtime/subagents/render.js +53 -0
  422. package/dist/runtime/subagents/roster.d.ts +24 -7
  423. package/dist/runtime/subagents/roster.js +47 -11
  424. package/dist/runtime/subagents/skill-fork.d.ts +3 -2
  425. package/dist/runtime/subagents/skill-fork.js +8 -4
  426. package/dist/runtime/subagents/status.d.ts +14 -0
  427. package/dist/runtime/subagents/status.js +23 -0
  428. package/dist/runtime/subagents/subagents.service.d.ts +7 -4
  429. package/dist/runtime/subagents/subagents.service.js +11 -6
  430. package/dist/runtime/usage-report-jobs.d.ts +88 -0
  431. package/dist/runtime/usage-report-jobs.js +158 -0
  432. package/dist/runtime/usage-report.d.ts +33 -38
  433. package/dist/runtime/usage-report.js +169 -96
  434. package/dist/runtime/waits.d.ts +140 -37
  435. package/dist/runtime/waits.js +394 -106
  436. package/dist/sandbox/jobs.d.ts +40 -13
  437. package/dist/sandbox/jobs.js +57 -20
  438. package/dist/sandbox/leases.d.ts +37 -54
  439. package/dist/sandbox/leases.js +71 -115
  440. package/dist/sandbox/providers.d.ts +2 -2
  441. package/dist/sandbox/providers.js +1 -1
  442. package/dist/sandbox/sandbox.module.d.ts +3 -2
  443. package/dist/sandbox/sandbox.module.js +4 -3
  444. package/dist/sandbox/sandbox.service.d.ts +229 -134
  445. package/dist/sandbox/sandbox.service.js +630 -409
  446. package/dist/skills/catalog.d.ts +3 -2
  447. package/dist/skills/catalog.js +21 -43
  448. package/dist/skills/changes.controller.d.ts +7 -0
  449. package/dist/skills/changes.controller.js +19 -1
  450. package/dist/skills/invoke.js +8 -3
  451. package/dist/skills/package.d.ts +20 -1
  452. package/dist/skills/package.js +28 -1
  453. package/dist/skills/skills.controller.d.ts +39 -4
  454. package/dist/skills/skills.controller.js +88 -10
  455. package/dist/skills/skills.module.js +10 -1
  456. package/dist/skills/skills.service.d.ts +106 -26
  457. package/dist/skills/skills.service.js +421 -75
  458. package/dist/skills/usable.d.ts +81 -0
  459. package/dist/skills/usable.js +379 -0
  460. package/dist/tools/approvals.service.d.ts +20 -2
  461. package/dist/tools/approvals.service.js +23 -4
  462. package/dist/tools/builtin-names.d.ts +21 -5
  463. package/dist/tools/builtin-names.js +30 -5
  464. package/dist/tools/builtins/agent.d.ts +23 -21
  465. package/dist/tools/builtins/agent.js +62 -55
  466. package/dist/tools/builtins/builtin-tools.d.ts +6 -2
  467. package/dist/tools/builtins/builtin-tools.js +37 -12
  468. package/dist/tools/builtins/handback.d.ts +28 -0
  469. package/dist/tools/builtins/handback.js +53 -0
  470. package/dist/tools/builtins/platform.d.ts +34 -0
  471. package/dist/tools/builtins/platform.js +362 -0
  472. package/dist/tools/builtins/sandbox/bash.js +13 -3
  473. package/dist/tools/builtins/sandbox/common.d.ts +43 -24
  474. package/dist/tools/builtins/sandbox/common.js +80 -45
  475. package/dist/tools/builtins/sandbox/edit.js +2 -2
  476. package/dist/tools/builtins/sandbox/glob.js +2 -2
  477. package/dist/tools/builtins/sandbox/grep.js +2 -4
  478. package/dist/tools/builtins/sandbox/index.d.ts +1 -1
  479. package/dist/tools/builtins/sandbox/index.js +1 -1
  480. package/dist/tools/builtins/sandbox/read.js +1 -1
  481. package/dist/tools/builtins/sandbox/task-output.d.ts +14 -3
  482. package/dist/tools/builtins/sandbox/task-output.js +30 -5
  483. package/dist/tools/builtins/sandbox/task-stop.js +2 -1
  484. package/dist/tools/builtins/sandbox/write.js +2 -2
  485. package/dist/tools/builtins/send-message.d.ts +56 -0
  486. package/dist/tools/builtins/send-message.js +100 -0
  487. package/dist/tools/builtins/skill-load.d.ts +22 -14
  488. package/dist/tools/builtins/skill-load.js +86 -57
  489. package/dist/tools/builtins/skill-write.js +1 -1
  490. package/dist/tools/builtins/web/extract.js +5 -1
  491. package/dist/tools/builtins/web/fetch.js +1 -0
  492. package/dist/tools/builtins/web/search.js +1 -0
  493. package/dist/tools/connectors.controller.d.ts +10 -0
  494. package/dist/tools/connectors.controller.js +12 -0
  495. package/dist/tools/connectors.service.d.ts +46 -5
  496. package/dist/tools/connectors.service.js +94 -15
  497. package/dist/tools/extension-tools.controller.d.ts +14 -0
  498. package/dist/tools/extension-tools.controller.js +37 -0
  499. package/dist/tools/info.d.ts +42 -1
  500. package/dist/tools/info.js +64 -1
  501. package/dist/tools/org-tool-switches.d.ts +74 -0
  502. package/dist/tools/org-tool-switches.js +184 -0
  503. package/dist/tools/pipeline.d.ts +46 -40
  504. package/dist/tools/pipeline.js +193 -364
  505. package/dist/tools/policy.d.ts +1 -1
  506. package/dist/tools/policy.js +36 -16
  507. package/dist/tools/registry.d.ts +98 -5
  508. package/dist/tools/registry.js +87 -9
  509. package/dist/tools/tools.module.js +12 -2
  510. package/dist/ui/views.d.ts +2 -1
  511. package/dist/ui/views.js +17 -3
  512. package/package.json +3 -3
  513. package/src/migrations/0074_subagent_tree.sql +50 -0
  514. package/src/migrations/0075_plugin_scope.sql +61 -0
  515. package/src/migrations/0076_skills_created_by_nullable.sql +6 -0
  516. package/src/migrations/0077_scope_requests.sql +52 -0
  517. package/src/migrations/0078_scope_grant_switches.sql +18 -0
  518. package/src/migrations/0079_scope_live_install_switches.sql +19 -0
  519. package/src/migrations/0080_rename_enterprise_admin.sql +18 -0
  520. package/src/migrations/0081_platform_components.sql +129 -0
  521. package/src/migrations/0082_platform_migration.sql +33 -0
  522. package/src/migrations/0083_plugin_scope_sync_failures.sql +15 -0
  523. package/src/migrations/0084_org_owned_items.sql +85 -0
  524. package/src/migrations/0085_agent_templates_phase4.sql +45 -0
  525. package/src/migrations/0086_org_layering.sql +30 -0
  526. package/src/migrations/0087_approval_summary.sql +6 -0
  527. package/src/migrations/0088_environments.sql +80 -0
  528. package/src/migrations/0089_model_kinds_usage.sql +38 -0
  529. package/dist/catalog/upgrade-targets.d.ts +0 -56
  530. package/dist/catalog/upgrade-targets.js +0 -90
  531. package/dist/conversations/sandbox-status.d.ts +0 -24
  532. package/dist/conversations/sandbox-status.js +0 -52
  533. package/dist/extensions/org-config.controller.d.ts +0 -32
  534. package/dist/extensions/org-config.controller.js +0 -70
@@ -0,0 +1,85 @@
1
+ import type { ExtensionContext, Logger } from "@capybara-hq/plugin-sdk";
2
+ import type { Redis } from "ioredis";
3
+ import { EventLog } from "../conversations/event-log.js";
4
+ import { KernelDb } from "../infra/database/kernel-db.js";
5
+ import { type StreamSink } from "./model-call.js";
6
+ /** How long a draft lives without a write (a step that keeps streaming keeps refreshing it). */
7
+ export declare const DRAFT_TTL_SECONDS = 600;
8
+ /** At most one write per step per window, plus the one at the end of the model stream. */
9
+ export declare const DRAFT_FLUSH_MS = 200;
10
+ /** One step's draft: `{ text, thinking }` as JSON (spec 2026-11-07 §3.2). */
11
+ export declare const draftKey: (runId: string, step: number) => string;
12
+ /** What one step of a run has streamed so far. */
13
+ export interface RunDraft {
14
+ step: number;
15
+ text: string;
16
+ thinking: string;
17
+ }
18
+ /** A draft of a conversation's active run (the `event: draft` frame's data). */
19
+ export interface LiveDraft extends RunDraft {
20
+ runId: string;
21
+ }
22
+ /**
23
+ * Live drafts (spec 2026-11-07-run-input-and-live-drafts §3.2): what each step of a running run
24
+ * has streamed so far, kept in Redis so a viewer that (re)connects on any replica gets the text
25
+ * already shown, then the deltas from there on.
26
+ *
27
+ * The writer is the process executing the run: it holds the step's draft in memory (only for the
28
+ * runs it executes; {@link release} drops them when the execution ends) and writes it at most once
29
+ * per {@link DRAFT_FLUSH_MS}: on the first delta past the window, or, when deltas stop inside it,
30
+ * by one trailing one-shot timer per held step (process-local, unref'd, cancelled by a write,
31
+ * {@link clear} and {@link release}), plus once when the model stream ends ({@link flush}). Writes are issued before the delta is published, on the same
32
+ * connection as the bus publish, so a viewer that sees a delta past its snapshot and asks again
33
+ * gets a draft at least that far whenever that delta was written. Every write refreshes the
34
+ * {@link DRAFT_TTL_SECONDS} TTL; {@link clear} deletes the step's draft once its
35
+ * `assistant_message` is logged or the step is reset. Redis failures are logged, never thrown to
36
+ * the run: a draft is a convenience, the log stays the truth.
37
+ */
38
+ export declare class RunDrafts {
39
+ private readonly redis;
40
+ private readonly kdb;
41
+ private readonly eventLog;
42
+ private readonly log;
43
+ private readonly held;
44
+ constructor(redis: Redis, kdb: KernelDb, eventLog: Pick<EventLog, "findByIdem">, log: Pick<Logger, "warn">);
45
+ private get db();
46
+ /** Adds a delta to the step's draft; writes it when the last write is a window old. */
47
+ append(runId: string, step: number, channel: "text" | "thinking", text: string): void;
48
+ /** The end of the step's model stream: writes what the window still holds. */
49
+ flush(runId: string, step: number): void;
50
+ /** Deletes the step's draft (its `assistant_message` is logged, or the step starts over). */
51
+ clear(runId: string, step: number): void;
52
+ /**
53
+ * Drops what this process holds for the run (its execution here ended: finished, suspended,
54
+ * handed over). Redis keeps what was written: another worker may continue the run, and a step
55
+ * that never ended is not shown once the run is no longer running (TTL removes it).
56
+ */
57
+ release(runId: string): void;
58
+ /** The run's steps with a draft, by step. */
59
+ read(runId: string): Promise<RunDraft[]>;
60
+ /**
61
+ * The drafts a viewer of the conversation is shown: steps of its running run (or only `runId`)
62
+ * whose `assistant_message` is not logged. Redis is read before the log, so a step finalized
63
+ * meanwhile is either skipped here or its `assistant_message` reaches the viewer after the draft.
64
+ */
65
+ live(conversationId: string, runId?: string): Promise<LiveDraft[]>;
66
+ /** Whether the run belongs to the conversation (the draft route's 404). */
67
+ runOf(conversationId: string, runId: string): Promise<boolean>;
68
+ private drop;
69
+ private write;
70
+ }
71
+ /** What {@link streamSink} uses. */
72
+ export interface StreamSinkDeps {
73
+ bus: Pick<ExtensionContext["bus"], "publish">;
74
+ drafts: Pick<RunDrafts, "append" | "flush" | "clear">;
75
+ log: Pick<Logger, "warn">;
76
+ }
77
+ /**
78
+ * The run's stream sink (one per execution of a run): publishes deltas on the conversation's topic
79
+ * (`conv.<id>`, shared with `{ kind: "events" }`, so a subscriber on any replica gets them) with
80
+ * `offset`, the characters of that channel (text or thinking) this attempt of the step streamed
81
+ * before the delta, and keeps the step's live draft. `step_reset` clears the draft and both
82
+ * offsets; `stream_end` / `step_end` only flush / clear the draft and are not published. A failed
83
+ * publish is only logged: deltas are drafts, the `assistant_message` in the log is the truth.
84
+ */
85
+ export declare function streamSink(conversationId: string, deps: StreamSinkDeps): StreamSink;
@@ -0,0 +1,230 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
8
+ return function (target, key) { decorator(target, key, paramIndex); }
9
+ };
10
+ import { Inject, Injectable } from "@nestjs/common";
11
+ import { conversationTopic, EventLog, } from "../conversations/event-log.js";
12
+ import { KernelDb } from "../infra/database/kernel-db.js";
13
+ import { KERNEL_LOGGER, REDIS } from "../infra/tokens.js";
14
+ import { assistantIdemKey } from "./model-call.js";
15
+ /** How long a draft lives without a write (a step that keeps streaming keeps refreshing it). */
16
+ export const DRAFT_TTL_SECONDS = 600;
17
+ /** At most one write per step per window, plus the one at the end of the model stream. */
18
+ export const DRAFT_FLUSH_MS = 200;
19
+ /** One step's draft: `{ text, thinking }` as JSON (spec 2026-11-07 §3.2). */
20
+ export const draftKey = (runId, step) => `capk:run-draft:${runId}:${step}`;
21
+ /** The steps of a run that have a draft (a set, so a reader finds them without a key scan). */
22
+ const stepsKey = (runId) => `capk:run-draft-steps:${runId}`;
23
+ const parse = (step, v) => {
24
+ if (v === null)
25
+ return null;
26
+ try {
27
+ const d = JSON.parse(v);
28
+ return {
29
+ step,
30
+ text: typeof d.text === "string" ? d.text : "",
31
+ thinking: typeof d.thinking === "string" ? d.thinking : "",
32
+ };
33
+ }
34
+ catch {
35
+ return null;
36
+ }
37
+ };
38
+ /**
39
+ * Live drafts (spec 2026-11-07-run-input-and-live-drafts §3.2): what each step of a running run
40
+ * has streamed so far, kept in Redis so a viewer that (re)connects on any replica gets the text
41
+ * already shown, then the deltas from there on.
42
+ *
43
+ * The writer is the process executing the run: it holds the step's draft in memory (only for the
44
+ * runs it executes; {@link release} drops them when the execution ends) and writes it at most once
45
+ * per {@link DRAFT_FLUSH_MS}: on the first delta past the window, or, when deltas stop inside it,
46
+ * by one trailing one-shot timer per held step (process-local, unref'd, cancelled by a write,
47
+ * {@link clear} and {@link release}), plus once when the model stream ends ({@link flush}). Writes are issued before the delta is published, on the same
48
+ * connection as the bus publish, so a viewer that sees a delta past its snapshot and asks again
49
+ * gets a draft at least that far whenever that delta was written. Every write refreshes the
50
+ * {@link DRAFT_TTL_SECONDS} TTL; {@link clear} deletes the step's draft once its
51
+ * `assistant_message` is logged or the step is reset. Redis failures are logged, never thrown to
52
+ * the run: a draft is a convenience, the log stays the truth.
53
+ */
54
+ let RunDrafts = class RunDrafts {
55
+ redis;
56
+ kdb;
57
+ eventLog;
58
+ log;
59
+ held = new Map();
60
+ constructor(redis, kdb, eventLog, log) {
61
+ this.redis = redis;
62
+ this.kdb = kdb;
63
+ this.eventLog = eventLog;
64
+ this.log = log;
65
+ }
66
+ get db() {
67
+ return this.kdb.db;
68
+ }
69
+ /** Adds a delta to the step's draft; writes it when the last write is a window old. */
70
+ append(runId, step, channel, text) {
71
+ let h = this.held.get(runId);
72
+ if (h?.step !== step) {
73
+ if (h)
74
+ this.drop(runId, h);
75
+ h = {
76
+ step,
77
+ text: "",
78
+ thinking: "",
79
+ writtenAt: Number.NEGATIVE_INFINITY,
80
+ dirty: false,
81
+ timer: undefined,
82
+ };
83
+ this.held.set(runId, h);
84
+ }
85
+ h[channel] += text;
86
+ h.dirty = true;
87
+ const elapsed = Date.now() - h.writtenAt;
88
+ if (elapsed >= DRAFT_FLUSH_MS)
89
+ this.write(runId, h);
90
+ else if (h.timer === undefined) {
91
+ // held: written when the window ends even if no delta follows (a tool input, a pause)
92
+ h.timer = setTimeout(() => {
93
+ h.timer = undefined;
94
+ this.flush(runId, step);
95
+ }, DRAFT_FLUSH_MS - elapsed).unref();
96
+ }
97
+ }
98
+ /** The end of the step's model stream: writes what the window still holds. */
99
+ flush(runId, step) {
100
+ const h = this.held.get(runId);
101
+ if (h?.step === step && h.dirty)
102
+ this.write(runId, h);
103
+ }
104
+ /** Deletes the step's draft (its `assistant_message` is logged, or the step starts over). */
105
+ clear(runId, step) {
106
+ const h = this.held.get(runId);
107
+ if (h?.step === step)
108
+ this.drop(runId, h);
109
+ this.redis
110
+ .multi()
111
+ .del(draftKey(runId, step))
112
+ .srem(stepsKey(runId), String(step))
113
+ .exec()
114
+ .catch((err) => this.log.warn("run draft clear failed", { runId, step, err }));
115
+ }
116
+ /**
117
+ * Drops what this process holds for the run (its execution here ended: finished, suspended,
118
+ * handed over). Redis keeps what was written: another worker may continue the run, and a step
119
+ * that never ended is not shown once the run is no longer running (TTL removes it).
120
+ */
121
+ release(runId) {
122
+ const h = this.held.get(runId);
123
+ if (h)
124
+ this.drop(runId, h);
125
+ }
126
+ /** The run's steps with a draft, by step. */
127
+ async read(runId) {
128
+ const steps = (await this.redis.smembers(stepsKey(runId)))
129
+ .map(Number)
130
+ .filter((n) => Number.isSafeInteger(n))
131
+ .sort((a, b) => a - b);
132
+ if (steps.length === 0)
133
+ return [];
134
+ const values = await this.redis.mget(steps.map((s) => draftKey(runId, s)));
135
+ return steps.flatMap((s, i) => parse(s, values[i] ?? null) ?? []);
136
+ }
137
+ /**
138
+ * The drafts a viewer of the conversation is shown: steps of its running run (or only `runId`)
139
+ * whose `assistant_message` is not logged. Redis is read before the log, so a step finalized
140
+ * meanwhile is either skipped here or its `assistant_message` reaches the viewer after the draft.
141
+ */
142
+ async live(conversationId, runId) {
143
+ let q = this.db
144
+ .selectFrom("runs")
145
+ .select("id")
146
+ .where("conversation_id", "=", conversationId)
147
+ .where("status", "=", "running");
148
+ if (runId !== undefined)
149
+ q = q.where("id", "=", runId);
150
+ const out = [];
151
+ for (const run of await q.execute()) {
152
+ for (const d of await this.read(run.id)) {
153
+ const final = await this.eventLog.findByIdem(conversationId, assistantIdemKey(run.id, d.step));
154
+ if (final === undefined)
155
+ out.push({ runId: run.id, ...d });
156
+ }
157
+ }
158
+ return out;
159
+ }
160
+ /** Whether the run belongs to the conversation (the draft route's 404). */
161
+ async runOf(conversationId, runId) {
162
+ const row = await this.db
163
+ .selectFrom("runs")
164
+ .select("id")
165
+ .where("id", "=", runId)
166
+ .where("conversation_id", "=", conversationId)
167
+ .executeTakeFirst();
168
+ return row !== undefined;
169
+ }
170
+ drop(runId, h) {
171
+ clearTimeout(h.timer);
172
+ h.timer = undefined;
173
+ this.held.delete(runId);
174
+ }
175
+ write(runId, h) {
176
+ clearTimeout(h.timer);
177
+ h.timer = undefined;
178
+ h.writtenAt = Date.now();
179
+ h.dirty = false;
180
+ const { step } = h;
181
+ this.redis
182
+ .multi()
183
+ .set(draftKey(runId, step), JSON.stringify({ text: h.text, thinking: h.thinking }), "EX", DRAFT_TTL_SECONDS)
184
+ .sadd(stepsKey(runId), String(step))
185
+ .expire(stepsKey(runId), DRAFT_TTL_SECONDS)
186
+ .exec()
187
+ .catch((err) => this.log.warn("run draft write failed", { runId, step, err }));
188
+ }
189
+ };
190
+ RunDrafts = __decorate([
191
+ Injectable(),
192
+ __param(0, Inject(REDIS)),
193
+ __param(1, Inject(KernelDb)),
194
+ __param(2, Inject(EventLog)),
195
+ __param(3, Inject(KERNEL_LOGGER))
196
+ ], RunDrafts);
197
+ export { RunDrafts };
198
+ /**
199
+ * The run's stream sink (one per execution of a run): publishes deltas on the conversation's topic
200
+ * (`conv.<id>`, shared with `{ kind: "events" }`, so a subscriber on any replica gets them) with
201
+ * `offset`, the characters of that channel (text or thinking) this attempt of the step streamed
202
+ * before the delta, and keeps the step's live draft. `step_reset` clears the draft and both
203
+ * offsets; `stream_end` / `step_end` only flush / clear the draft and are not published. A failed
204
+ * publish is only logged: deltas are drafts, the `assistant_message` in the log is the truth.
205
+ */
206
+ export function streamSink(conversationId, deps) {
207
+ let at = { runId: "", step: -1, text: 0, thinking: 0 };
208
+ const publish = (msg) => deps.bus
209
+ .publish(conversationTopic(conversationId), msg)
210
+ .catch((err) => deps.log.warn("stream delta publish failed", { conversationId, err }));
211
+ return (d) => {
212
+ if (d.kind === "stream_end")
213
+ return deps.drafts.flush(d.runId, d.step);
214
+ if (d.kind === "step_end")
215
+ return deps.drafts.clear(d.runId, d.step);
216
+ if (at.runId !== d.runId || at.step !== d.step || d.kind === "step_reset") {
217
+ at = { runId: d.runId, step: d.step, text: 0, thinking: 0 };
218
+ }
219
+ if (d.kind === "step_reset") {
220
+ deps.drafts.clear(d.runId, d.step);
221
+ void publish({ kind: "delta", runId: d.runId, step: d.step, delta: "step_reset" });
222
+ return;
223
+ }
224
+ const text = d.text ?? "";
225
+ const offset = at[d.kind];
226
+ at[d.kind] += text.length;
227
+ deps.drafts.append(d.runId, d.step, d.kind, text);
228
+ void publish({ kind: "delta", runId: d.runId, step: d.step, delta: d.kind, text, offset });
229
+ };
230
+ }
@@ -34,12 +34,10 @@ export declare class RunJobs {
34
34
  queue(name?: string): Queue<RunJobData>;
35
35
  /** A run job by id on the queue `name`, or undefined. */
36
36
  getJob(jobId: string, name?: string): Promise<Job<RunJobData> | undefined>;
37
- /** Adds a conversation run job (`ensureRun`'s own enqueue). */
38
- add(data: RunJobData, jobId: string): Promise<void>;
39
37
  /**
40
- * Enqueues a run job under the caller's job id (resumes, dispatches, repairs). The queue follows
41
- * the conversation's kind (a sub-agent's runs go to {@link SUBAGENT_RUN_QUEUE_NAME}); pass
42
- * `kind` when the caller knows it, else it is read.
38
+ * Enqueues a run job under the caller's job id (`ensureRun`, resumes, dispatches, repairs). The
39
+ * queue follows the conversation's kind (a sub-agent's runs go to
40
+ * {@link SUBAGENT_RUN_QUEUE_NAME}); pass `kind` when the caller knows it, else it is read.
43
41
  */
44
42
  enqueue(data: RunJobData, jobId: string, kind?: ConversationKind): Promise<void>;
45
43
  }
@@ -54,14 +54,10 @@ let RunJobs = class RunJobs {
54
54
  getJob(jobId, name = RUN_QUEUE_NAME) {
55
55
  return this.queue(name).getJob(jobId);
56
56
  }
57
- /** Adds a conversation run job (`ensureRun`'s own enqueue). */
58
- async add(data, jobId) {
59
- await this.queue().add("run", data, { jobId, ...RUN_JOB_OPTIONS });
60
- }
61
57
  /**
62
- * Enqueues a run job under the caller's job id (resumes, dispatches, repairs). The queue follows
63
- * the conversation's kind (a sub-agent's runs go to {@link SUBAGENT_RUN_QUEUE_NAME}); pass
64
- * `kind` when the caller knows it, else it is read.
58
+ * Enqueues a run job under the caller's job id (`ensureRun`, resumes, dispatches, repairs). The
59
+ * queue follows the conversation's kind (a sub-agent's runs go to
60
+ * {@link SUBAGENT_RUN_QUEUE_NAME}); pass `kind` when the caller knows it, else it is read.
65
61
  */
66
62
  async enqueue(data, jobId, kind) {
67
63
  const k = kind ??
@@ -52,9 +52,11 @@ export declare class RunQueue {
52
52
  * 且没有 queued / running / waiting 的运行时:插入 `runs`(queued)并投递任务,返回 runId;否则返回 null。
53
53
  *
54
54
  * The boundary (`trigger_seq`) is that newest message; with none unconsumed, the queue's head
55
- * once it is sent; with no head either, a wake-eligible finished background task (background
56
- * Bash spec §3, {@link wakeDecisionIn}): the run is then attributed to the task's trigger
57
- * account, and a finish inside the wake window schedules the delayed `bg-wake` job instead.
55
+ * once it is sent; with no head either, a wake-eligible finished background task or sub-agent
56
+ * delivery (background Bash spec §3, agent map spec §5.3, {@link wakeDecisionIn}): the run is
57
+ * then attributed to the event's trigger account and joins the tree's budget window, and an
58
+ * event inside the wake window schedules the delayed `bg-wake` job instead. A sub-agent's
59
+ * conversation is only woken this way ({@link childWakeIn}).
58
60
  *
59
61
  * 孤儿清理(R29,按需进行,没有定时器):已有的 queued / running 运行若 BullMQ 任务已不存在、
60
62
  * 会话锁也无人持有(queued 的还要超过宽限期),说明没有任何 worker 会再执行它——写
@@ -71,6 +73,38 @@ export declare class RunQueue {
71
73
  }): Promise<string | null>;
72
74
  /** {@link ensureRun}'s transaction: what it decided goes back through `st`. */
73
75
  private ensureRunIn;
76
+ /**
77
+ * {@link ensureRunIn} for a sub-agent's conversation (agent map spec §5.3), under its row lock.
78
+ * Its runs from a task, or from a message to an idle sub-agent, are started by the dispatch
79
+ * (`Agent`, `SendMessage`), which also records the dispatch. Here it is started from a parent's
80
+ * message that reached its run after that run's last model call (agent map spec §10: a message
81
+ * racing the run's end starts a new run, never lost); and it is woken by its own background
82
+ * task's finish or a delivery from its own sub-agent, under the same rules as a chat
83
+ * conversation. Neither happens once its last run was stopped (`aborted`): a stopped sub-agent is
84
+ * started again only by its parent. Both read the queue and the trigger account's access on the root
85
+ * of its tree; a message needs no wake setting and has no wake window. The run counts against
86
+ * the root's budget window and runs on the sub-agent queue under `runJobId(child, boundary
87
+ * seq)`. An active run is left to the orphan repair after the commit (`repairRunId`), never
88
+ * started past.
89
+ */
90
+ private childWakeIn;
91
+ /**
92
+ * The newest unconsumed message of an idle sub-agent (a `SendMessage` its last run did not absorb)
93
+ * as a run boundary, or null: none; the root's queue is paused or the root deleted (the
94
+ * message waits for the unpause, {@link wakeHeldTree}); or its author can no longer send to the
95
+ * root (it waits for a later run). The caller already refused a stopped sub-agent (last run
96
+ * `aborted`): a message that reached it while running and then stopped is parked, and the next
97
+ * run its parent starts absorbs it. Called under the sub-agent's row lock.
98
+ */
99
+ private pendingMessageIn;
100
+ /**
101
+ * Re-derives the wakes a paused root held for its tree (agent map spec §5.3: a paused root queue
102
+ * holds the wakes of the whole tree): after the root's queue is unpaused, {@link ensureRun} on
103
+ * every sub-agent conversation below it that has an unconsumed wake event or message and no
104
+ * active run (the root itself is the caller's own `ensureRun`). Errors are logged; the next
105
+ * event, run end or page opening of that conversation re-derives its wake.
106
+ */
107
+ wakeHeldTree(rootId: string): Promise<void>;
74
108
  /**
75
109
  * Schedules the delayed `bg-wake` job at the end of the conversation's wake window (after the
76
110
  * commit): one job per conversation and window end, so finishes inside one window share it. It