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

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 (670) hide show
  1. package/dist/admin/admin.controller.d.ts +17 -17
  2. package/dist/admin/admin.controller.js +43 -26
  3. package/dist/admin/admin.module.d.ts +3 -0
  4. package/dist/admin/admin.module.js +22 -0
  5. package/dist/admin/extensions.controller.d.ts +14 -14
  6. package/dist/admin/extensions.controller.js +30 -17
  7. package/dist/admin/setup-lock.d.ts +16 -0
  8. package/dist/admin/setup-lock.js +47 -0
  9. package/dist/admin/setup.controller.d.ts +8 -8
  10. package/dist/admin/setup.controller.js +27 -25
  11. package/dist/admin/setup.service.d.ts +19 -27
  12. package/dist/admin/setup.service.js +61 -61
  13. package/dist/agents/agent-lookup.d.ts +53 -0
  14. package/dist/agents/agent-lookup.js +187 -0
  15. package/dist/agents/agents.controller.d.ts +1 -1
  16. package/dist/agents/agents.controller.js +14 -8
  17. package/dist/agents/agents.module.d.ts +7 -0
  18. package/dist/agents/agents.module.js +41 -0
  19. package/dist/agents/agents.service.d.ts +39 -58
  20. package/dist/agents/agents.service.js +280 -335
  21. package/dist/agents/definition.d.ts +39 -8
  22. package/dist/agents/definition.js +201 -17
  23. package/dist/agents/models.controller.d.ts +1 -1
  24. package/dist/agents/models.controller.js +2 -2
  25. package/dist/agents/templates.controller.d.ts +1 -1
  26. package/dist/agents/templates.controller.js +2 -2
  27. package/dist/agents/templates.d.ts +6 -8
  28. package/dist/agents/templates.js +39 -8
  29. package/dist/app.d.ts +93 -0
  30. package/dist/app.js +150 -0
  31. package/dist/catalog/admin-catalog.controller.d.ts +3 -3
  32. package/dist/catalog/admin-catalog.controller.js +27 -13
  33. package/dist/catalog/catalog-content.d.ts +185 -0
  34. package/dist/catalog/catalog-content.js +326 -0
  35. package/dist/catalog/catalog-items.d.ts +186 -0
  36. package/dist/catalog/catalog-items.js +410 -0
  37. package/dist/catalog/catalog.module.d.ts +14 -0
  38. package/dist/catalog/catalog.module.js +71 -0
  39. package/dist/catalog/catalog.service.d.ts +34 -188
  40. package/dist/catalog/catalog.service.js +155 -489
  41. package/dist/catalog/claude/agents.js +13 -10
  42. package/dist/catalog/cli.d.ts +3 -2
  43. package/dist/catalog/cli.js +13 -31
  44. package/dist/catalog/job-ids.d.ts +15 -0
  45. package/dist/catalog/job-ids.js +15 -0
  46. package/dist/catalog/jobs.d.ts +27 -0
  47. package/dist/catalog/jobs.js +70 -0
  48. package/dist/catalog/locks.d.ts +24 -0
  49. package/dist/catalog/locks.js +63 -0
  50. package/dist/catalog/marketplaces.controller.d.ts +4 -4
  51. package/dist/catalog/marketplaces.controller.js +22 -11
  52. package/dist/catalog/marketplaces.service.d.ts +31 -14
  53. package/dist/catalog/marketplaces.service.js +330 -256
  54. package/dist/catalog/org-catalog.controller.d.ts +4 -3
  55. package/dist/catalog/org-catalog.controller.js +29 -14
  56. package/dist/catalog/org-catalog.service.d.ts +32 -198
  57. package/dist/catalog/org-catalog.service.js +159 -400
  58. package/dist/catalog/plugin-import.d.ts +73 -34
  59. package/dist/catalog/plugin-import.js +356 -217
  60. package/dist/catalog/plugin-install.d.ts +83 -41
  61. package/dist/catalog/plugin-install.js +421 -269
  62. package/dist/catalog/plugin-upgrade.d.ts +59 -4
  63. package/dist/catalog/plugin-upgrade.js +407 -282
  64. package/dist/catalog/requests.service.d.ts +27 -15
  65. package/dist/catalog/requests.service.js +201 -145
  66. package/dist/catalog/upgrade-targets.d.ts +4 -7
  67. package/dist/channels/actions.d.ts +6 -4
  68. package/dist/channels/actions.js +1 -1
  69. package/dist/channels/cards.d.ts +10 -4
  70. package/dist/channels/cards.js +16 -8
  71. package/dist/channels/channels.module.d.ts +40 -0
  72. package/dist/channels/channels.module.js +128 -0
  73. package/dist/channels/connections.controller.d.ts +1 -1
  74. package/dist/channels/connections.controller.js +11 -6
  75. package/dist/channels/connections.service.d.ts +43 -21
  76. package/dist/channels/connections.service.js +236 -131
  77. package/dist/channels/inbound.d.ts +34 -38
  78. package/dist/channels/inbound.js +107 -41
  79. package/dist/channels/job-ids.d.ts +10 -0
  80. package/dist/channels/job-ids.js +10 -0
  81. package/dist/channels/jobs.d.ts +85 -0
  82. package/dist/channels/jobs.js +157 -0
  83. package/dist/channels/outbound.d.ts +60 -82
  84. package/dist/channels/outbound.js +165 -194
  85. package/dist/channels/supervisor.d.ts +88 -46
  86. package/dist/channels/supervisor.js +230 -132
  87. package/dist/channels/threads.d.ts +29 -8
  88. package/dist/channels/threads.js +71 -13
  89. package/dist/channels/webhook.d.ts +20 -14
  90. package/dist/channels/webhook.js +51 -20
  91. package/dist/config/load.d.ts +3 -2
  92. package/dist/config/load.js +3 -2
  93. package/dist/config/nacos-source.js +11 -2
  94. package/dist/config/schema.d.ts +1 -0
  95. package/dist/config/schema.js +12 -6
  96. package/dist/conversations/access.d.ts +29 -0
  97. package/dist/conversations/access.js +86 -0
  98. package/dist/conversations/artifacts.d.ts +11 -11
  99. package/dist/conversations/artifacts.js +36 -10
  100. package/dist/conversations/attachments.controller.d.ts +1 -1
  101. package/dist/conversations/attachments.controller.js +8 -6
  102. package/dist/conversations/attachments.module.d.ts +7 -0
  103. package/dist/conversations/attachments.module.js +25 -0
  104. package/dist/conversations/attachments.service.d.ts +30 -22
  105. package/dist/conversations/attachments.service.js +119 -46
  106. package/dist/conversations/conversations.controller.d.ts +8 -7
  107. package/dist/conversations/conversations.controller.js +59 -29
  108. package/dist/conversations/conversations.module.d.ts +8 -0
  109. package/dist/conversations/conversations.module.js +69 -0
  110. package/dist/conversations/conversations.service.d.ts +40 -38
  111. package/dist/conversations/conversations.service.js +130 -140
  112. package/dist/conversations/event-log.d.ts +39 -18
  113. package/dist/conversations/event-log.js +93 -27
  114. package/dist/conversations/events.d.ts +23 -3
  115. package/dist/conversations/events.js +26 -14
  116. package/dist/conversations/files.d.ts +10 -10
  117. package/dist/conversations/files.js +37 -11
  118. package/dist/conversations/idem-keys.d.ts +5 -0
  119. package/dist/conversations/idem-keys.js +5 -0
  120. package/dist/conversations/job-ids.d.ts +6 -0
  121. package/dist/conversations/job-ids.js +6 -0
  122. package/dist/conversations/outputs-read.d.ts +11 -11
  123. package/dist/conversations/outputs-read.js +31 -7
  124. package/dist/conversations/queue.d.ts +48 -56
  125. package/dist/conversations/queue.js +13 -289
  126. package/dist/conversations/queue.service.d.ts +60 -0
  127. package/dist/conversations/queue.service.js +343 -0
  128. package/dist/conversations/sandbox-status.d.ts +13 -10
  129. package/dist/conversations/sandbox-status.js +36 -8
  130. package/dist/conversations/titles.d.ts +71 -24
  131. package/dist/conversations/titles.js +159 -63
  132. package/dist/ctx/bus.js +9 -3
  133. package/dist/ctx/create-ctx.d.ts +6 -0
  134. package/dist/ctx/create-ctx.js +7 -9
  135. package/dist/ctx/lock.d.ts +7 -3
  136. package/dist/ctx/lock.js +9 -20
  137. package/dist/ctx/secrets.d.ts +10 -2
  138. package/dist/ctx/secrets.js +7 -3
  139. package/dist/db/kernel-schema.d.ts +4 -4
  140. package/dist/db/pool.d.ts +5 -0
  141. package/dist/db/pool.js +1 -0
  142. package/dist/errors.d.ts +1 -0
  143. package/dist/errors.js +1 -0
  144. package/dist/evals/budget.d.ts +42 -21
  145. package/dist/evals/budget.js +114 -62
  146. package/dist/evals/evals.module.d.ts +31 -0
  147. package/dist/evals/evals.module.js +114 -0
  148. package/dist/evals/jobs.d.ts +20 -0
  149. package/dist/evals/jobs.js +45 -0
  150. package/dist/evals/recorded-tools.d.ts +27 -1
  151. package/dist/evals/recorded-tools.js +85 -10
  152. package/dist/evals/run-replay.d.ts +61 -8
  153. package/dist/evals/run-replay.js +159 -85
  154. package/dist/evals/runs.controller.d.ts +1 -1
  155. package/dist/evals/runs.controller.js +17 -8
  156. package/dist/evals/runs.service.d.ts +23 -45
  157. package/dist/evals/runs.service.js +245 -234
  158. package/dist/evals/sets.controller.d.ts +1 -1
  159. package/dist/evals/sets.controller.js +17 -8
  160. package/dist/evals/sets.service.d.ts +22 -6
  161. package/dist/evals/sets.service.js +248 -194
  162. package/dist/evals/snapshot.d.ts +2 -2
  163. package/dist/evals/step-replay.d.ts +2 -2
  164. package/dist/evals/step-replay.js +1 -1
  165. package/dist/evals/trajectory.controller.d.ts +1 -1
  166. package/dist/evals/trajectory.controller.js +11 -7
  167. package/dist/evals/trajectory.d.ts +2 -2
  168. package/dist/evals/trajectory.service.d.ts +5 -4
  169. package/dist/evals/trajectory.service.js +30 -7
  170. package/dist/evals/worker.d.ts +44 -27
  171. package/dist/evals/worker.js +220 -121
  172. package/dist/extensions/admin-ops.d.ts +61 -33
  173. package/dist/extensions/admin-ops.js +248 -154
  174. package/dist/extensions/admin-view.d.ts +38 -27
  175. package/dist/extensions/admin-view.js +126 -55
  176. package/dist/extensions/approvals.d.ts +12 -8
  177. package/dist/extensions/approvals.js +73 -46
  178. package/dist/extensions/blobs.d.ts +27 -10
  179. package/dist/extensions/blobs.js +111 -45
  180. package/dist/extensions/bootstrap.d.ts +58 -31
  181. package/dist/extensions/bootstrap.js +175 -121
  182. package/dist/extensions/cli.d.ts +20 -10
  183. package/dist/extensions/cli.js +41 -96
  184. package/dist/extensions/config-issues.d.ts +7 -0
  185. package/dist/extensions/config-issues.js +31 -0
  186. package/dist/extensions/deployment-config-store.d.ts +49 -0
  187. package/dist/extensions/deployment-config-store.js +133 -0
  188. package/dist/extensions/deployment-config.d.ts +58 -67
  189. package/dist/extensions/deployment-config.js +202 -230
  190. package/dist/extensions/enabled.d.ts +5 -5
  191. package/dist/extensions/extensions.module.d.ts +8 -0
  192. package/dist/extensions/extensions.module.js +77 -0
  193. package/dist/extensions/hooks.d.ts +3 -2
  194. package/dist/extensions/hooks.js +1 -1
  195. package/dist/extensions/host.d.ts +72 -68
  196. package/dist/extensions/host.js +191 -152
  197. package/dist/extensions/installs.d.ts +49 -16
  198. package/dist/extensions/installs.js +128 -32
  199. package/dist/extensions/job-ids.d.ts +6 -0
  200. package/dist/extensions/job-ids.js +6 -0
  201. package/dist/extensions/lifecycle-topics.d.ts +18 -0
  202. package/dist/extensions/lifecycle-topics.js +18 -0
  203. package/dist/extensions/lifecycle.d.ts +35 -47
  204. package/dist/extensions/lifecycle.js +103 -39
  205. package/dist/extensions/locks.d.ts +33 -0
  206. package/dist/extensions/locks.js +86 -0
  207. package/dist/extensions/migrate-lock.d.ts +3 -4
  208. package/dist/extensions/org-config.controller.d.ts +1 -1
  209. package/dist/extensions/org-config.controller.js +8 -5
  210. package/dist/extensions/org-config.d.ts +48 -46
  211. package/dist/extensions/org-config.js +284 -226
  212. package/dist/extensions/registry.d.ts +50 -2
  213. package/dist/extensions/registry.js +89 -4
  214. package/dist/extensions/sources.d.ts +12 -8
  215. package/dist/extensions/sources.js +34 -13
  216. package/dist/files/files.module.d.ts +3 -0
  217. package/dist/files/files.module.js +22 -0
  218. package/dist/files/previewers.controller.d.ts +7 -2
  219. package/dist/files/previewers.controller.js +17 -9
  220. package/dist/files/previewers.d.ts +13 -18
  221. package/dist/files/previewers.js +83 -36
  222. package/dist/http/adapter.d.ts +3 -0
  223. package/dist/http/adapter.js +25 -0
  224. package/dist/http/api.module.d.ts +3 -110
  225. package/dist/http/api.module.js +47 -355
  226. package/dist/http/app.d.ts +11 -15
  227. package/dist/http/app.js +17 -62
  228. package/dist/http/error-filter.module.d.ts +5 -0
  229. package/dist/http/error-filter.module.js +18 -0
  230. package/dist/http/error.filter.js +2 -2
  231. package/dist/identity/accounts.d.ts +82 -29
  232. package/dist/identity/accounts.js +294 -175
  233. package/dist/identity/api-tokens.d.ts +11 -7
  234. package/dist/identity/api-tokens.js +71 -44
  235. package/dist/identity/audit.d.ts +7 -4
  236. package/dist/identity/audit.js +5 -1
  237. package/dist/identity/auth.controller.d.ts +11 -10
  238. package/dist/identity/auth.controller.js +31 -25
  239. package/dist/identity/auth.guard.d.ts +3 -3
  240. package/dist/identity/auth.guard.js +6 -4
  241. package/dist/identity/binding.d.ts +9 -11
  242. package/dist/identity/binding.js +41 -13
  243. package/dist/identity/enterprise-admin.d.ts +18 -12
  244. package/dist/identity/enterprise-admin.js +67 -13
  245. package/dist/identity/external-identity-lock.d.ts +17 -0
  246. package/dist/identity/external-identity-lock.js +39 -0
  247. package/dist/identity/external.d.ts +19 -15
  248. package/dist/identity/external.js +163 -125
  249. package/dist/identity/identity.module.d.ts +6 -0
  250. package/dist/identity/identity.module.js +56 -0
  251. package/dist/identity/me.controller.d.ts +16 -15
  252. package/dist/identity/me.controller.js +37 -31
  253. package/dist/identity/sessions.d.ts +12 -10
  254. package/dist/identity/sessions.js +74 -42
  255. package/dist/identity/settings.d.ts +20 -14
  256. package/dist/identity/settings.js +86 -58
  257. package/dist/identity/sso.controller.d.ts +7 -7
  258. package/dist/identity/sso.controller.js +13 -9
  259. package/dist/identity/sso.d.ts +9 -12
  260. package/dist/identity/sso.js +54 -24
  261. package/dist/inbox/inbox.module.d.ts +3 -0
  262. package/dist/inbox/inbox.module.js +22 -0
  263. package/dist/inbox/inbox.service.d.ts +7 -9
  264. package/dist/inbox/inbox.service.js +32 -11
  265. package/dist/index.d.ts +16 -11
  266. package/dist/index.js +9 -6
  267. package/dist/infra/cache/cache.module.d.ts +3 -0
  268. package/dist/infra/cache/cache.module.js +16 -0
  269. package/dist/infra/cache/cache.service.d.ts +21 -0
  270. package/dist/infra/cache/cache.service.js +80 -0
  271. package/dist/infra/cache/cacheable.decorator.d.ts +32 -0
  272. package/dist/infra/cache/cacheable.decorator.js +83 -0
  273. package/dist/infra/cli/kernel-cli.module.d.ts +66 -0
  274. package/dist/infra/cli/kernel-cli.module.js +165 -0
  275. package/dist/infra/close-within.d.ts +15 -0
  276. package/dist/infra/close-within.js +36 -0
  277. package/dist/infra/config/config.module.d.ts +13 -0
  278. package/dist/infra/config/config.module.js +39 -0
  279. package/dist/infra/config/kernel-config.service.d.ts +25 -0
  280. package/dist/infra/config/kernel-config.service.js +126 -0
  281. package/dist/infra/database/after-commit.d.ts +6 -0
  282. package/dist/infra/database/after-commit.js +9 -0
  283. package/dist/infra/database/database.module.d.ts +25 -0
  284. package/dist/infra/database/database.module.js +90 -0
  285. package/dist/infra/database/kernel-db.d.ts +22 -0
  286. package/dist/infra/database/kernel-db.js +65 -0
  287. package/dist/infra/database/transaction-host.d.ts +50 -0
  288. package/dist/infra/database/transaction-host.js +125 -0
  289. package/dist/infra/database/transactional.decorator.d.ts +15 -0
  290. package/dist/infra/database/transactional.decorator.js +27 -0
  291. package/dist/infra/database/xact-lock.d.ts +17 -0
  292. package/dist/infra/database/xact-lock.js +43 -0
  293. package/dist/infra/events/kernel-events.d.ts +96 -0
  294. package/dist/infra/events/kernel-events.js +65 -0
  295. package/dist/infra/health/health.controller.d.ts +26 -0
  296. package/dist/infra/health/health.controller.js +104 -0
  297. package/dist/infra/health/health.module.d.ts +9 -0
  298. package/dist/infra/health/health.module.js +24 -0
  299. package/dist/infra/health/health.options.d.ts +10 -0
  300. package/dist/infra/health/health.options.js +15 -0
  301. package/dist/infra/health/shutdown-state.d.ts +6 -0
  302. package/dist/infra/health/shutdown-state.js +2 -0
  303. package/dist/infra/lifecycle/graceful-shutdown.module.d.ts +6 -0
  304. package/dist/infra/lifecycle/graceful-shutdown.module.js +23 -0
  305. package/dist/infra/lifecycle/graceful-shutdown.service.d.ts +70 -0
  306. package/dist/infra/lifecycle/graceful-shutdown.service.js +135 -0
  307. package/dist/infra/lifecycle/process-guards.d.ts +52 -0
  308. package/dist/infra/lifecycle/process-guards.js +86 -0
  309. package/dist/infra/lifecycle/shutdown-signals.d.ts +30 -0
  310. package/dist/infra/lifecycle/shutdown-signals.js +48 -0
  311. package/dist/infra/lock/key-template.d.ts +13 -0
  312. package/dist/infra/lock/key-template.js +46 -0
  313. package/dist/infra/lock/lock.module.d.ts +3 -0
  314. package/dist/infra/lock/lock.module.js +16 -0
  315. package/dist/infra/lock/lock.service.d.ts +120 -0
  316. package/dist/infra/lock/lock.service.js +343 -0
  317. package/dist/infra/lock/shared-lease.d.ts +44 -0
  318. package/dist/infra/lock/shared-lease.js +121 -0
  319. package/dist/infra/lock/with-lock.decorator.d.ts +28 -0
  320. package/dist/infra/lock/with-lock.decorator.js +49 -0
  321. package/dist/infra/logging/logging.module.d.ts +16 -0
  322. package/dist/infra/logging/logging.module.js +34 -0
  323. package/dist/infra/queue/configured-processor.d.ts +18 -0
  324. package/dist/infra/queue/configured-processor.js +23 -0
  325. package/dist/infra/queue/job-failure.d.ts +18 -0
  326. package/dist/infra/queue/job-failure.js +26 -0
  327. package/dist/infra/queue/queue-shutdown.d.ts +27 -0
  328. package/dist/infra/queue/queue-shutdown.js +81 -0
  329. package/dist/infra/queue/queue.module.d.ts +16 -0
  330. package/dist/infra/queue/queue.module.js +61 -0
  331. package/dist/infra/queue/redis-connection.d.ts +7 -0
  332. package/dist/infra/queue/redis-connection.js +18 -0
  333. package/dist/infra/queue/retired-schedulers.d.ts +7 -0
  334. package/dist/infra/queue/retired-schedulers.js +9 -0
  335. package/dist/infra/queue/run-job.d.ts +16 -0
  336. package/dist/infra/queue/run-job.js +19 -0
  337. package/dist/infra/redis/redis.module.d.ts +24 -0
  338. package/dist/infra/redis/redis.module.js +87 -0
  339. package/dist/infra/schedule/cron-tick.d.ts +12 -0
  340. package/dist/infra/schedule/cron-tick.js +25 -0
  341. package/dist/infra/schedule/locked-cron.decorator.d.ts +27 -0
  342. package/dist/infra/schedule/locked-cron.decorator.js +53 -0
  343. package/dist/infra/schedule/locked-interval.d.ts +69 -0
  344. package/dist/infra/schedule/locked-interval.js +190 -0
  345. package/dist/infra/schedule/locked-tick.d.ts +90 -0
  346. package/dist/infra/schedule/locked-tick.js +137 -0
  347. package/dist/infra/schedule/schedule.module.d.ts +8 -0
  348. package/dist/infra/schedule/schedule.module.js +27 -0
  349. package/dist/infra/schedule/scheduled-runs.d.ts +69 -0
  350. package/dist/infra/schedule/scheduled-runs.js +163 -0
  351. package/dist/infra/swagger/swagger.d.ts +16 -0
  352. package/dist/infra/swagger/swagger.js +31 -0
  353. package/dist/infra/throttler/credential-throttler.d.ts +35 -0
  354. package/dist/infra/throttler/credential-throttler.js +77 -0
  355. package/dist/infra/throttler/named-throttlers.d.ts +31 -0
  356. package/dist/infra/throttler/named-throttlers.js +119 -0
  357. package/dist/infra/throttler/redis-throttler-storage.d.ts +38 -0
  358. package/dist/infra/throttler/redis-throttler-storage.js +130 -0
  359. package/dist/infra/throttler/throttler.guard.d.ts +23 -0
  360. package/dist/infra/throttler/throttler.guard.js +68 -0
  361. package/dist/infra/throttler/throttler.module.d.ts +15 -0
  362. package/dist/infra/throttler/throttler.module.js +53 -0
  363. package/dist/infra/tokens.d.ts +15 -0
  364. package/dist/infra/tokens.js +15 -0
  365. package/dist/infra/validation/create-zod-dto.d.ts +23 -0
  366. package/dist/infra/validation/create-zod-dto.js +35 -0
  367. package/dist/infra/validation/parse-with-zod.d.ts +7 -0
  368. package/dist/infra/validation/parse-with-zod.js +12 -0
  369. package/dist/infra/validation/validation.module.d.ts +3 -0
  370. package/dist/infra/validation/validation.module.js +16 -0
  371. package/dist/infra/validation/zod-params.d.ts +7 -0
  372. package/dist/infra/validation/zod-params.js +42 -0
  373. package/dist/infra/validation/zod-validation.pipe.d.ts +11 -0
  374. package/dist/infra/validation/zod-validation.pipe.js +31 -0
  375. package/dist/kernel.d.ts +9 -244
  376. package/dist/kernel.js +8 -1305
  377. package/dist/kernel.module.d.ts +17 -0
  378. package/dist/kernel.module.js +136 -0
  379. package/dist/lifecycle/kernel-lifecycle.d.ts +140 -0
  380. package/dist/lifecycle/kernel-lifecycle.js +456 -0
  381. package/dist/lifecycle/tokens.d.ts +3 -0
  382. package/dist/lifecycle/tokens.js +3 -0
  383. package/dist/log-context.d.ts +2 -0
  384. package/dist/log-context.js +4 -0
  385. package/dist/models/models.module.d.ts +3 -0
  386. package/dist/models/models.module.js +24 -0
  387. package/dist/models/prices.d.ts +8 -2
  388. package/dist/models/prices.js +65 -37
  389. package/dist/models/purposes.controller.d.ts +1 -1
  390. package/dist/models/purposes.controller.js +5 -6
  391. package/dist/models/purposes.d.ts +35 -13
  392. package/dist/models/purposes.js +101 -51
  393. package/dist/orgs/directory-sync.controller.d.ts +1 -1
  394. package/dist/orgs/directory-sync.controller.js +2 -2
  395. package/dist/orgs/directory-sync.d.ts +61 -31
  396. package/dist/orgs/directory-sync.js +212 -125
  397. package/dist/orgs/invitations.controller.d.ts +8 -8
  398. package/dist/orgs/invitations.controller.js +27 -26
  399. package/dist/orgs/invitations.service.d.ts +12 -9
  400. package/dist/orgs/invitations.service.js +130 -92
  401. package/dist/orgs/job-ids.d.ts +8 -0
  402. package/dist/orgs/job-ids.js +8 -0
  403. package/dist/orgs/members.service.d.ts +19 -12
  404. package/dist/orgs/members.service.js +161 -117
  405. package/dist/orgs/offboarding.d.ts +54 -57
  406. package/dist/orgs/offboarding.js +161 -71
  407. package/dist/orgs/org-lock.d.ts +28 -19
  408. package/dist/orgs/org-lock.js +81 -35
  409. package/dist/orgs/org.guard.d.ts +1 -1
  410. package/dist/orgs/org.guard.js +2 -2
  411. package/dist/orgs/orgs.controller.d.ts +13 -13
  412. package/dist/orgs/orgs.controller.js +29 -17
  413. package/dist/orgs/orgs.module.d.ts +6 -0
  414. package/dist/orgs/orgs.module.js +68 -0
  415. package/dist/orgs/orgs.service.d.ts +30 -19
  416. package/dist/orgs/orgs.service.js +139 -86
  417. package/dist/orgs/settings.controller.d.ts +1 -1
  418. package/dist/orgs/settings.controller.js +8 -6
  419. package/dist/orgs/settings.service.d.ts +16 -10
  420. package/dist/orgs/settings.service.js +77 -48
  421. package/dist/overrides.d.ts +56 -0
  422. package/dist/overrides.js +30 -0
  423. package/dist/roles/gateway-role.d.ts +43 -0
  424. package/dist/roles/gateway-role.js +98 -0
  425. package/dist/roles/gateway.module.d.ts +8 -0
  426. package/dist/roles/gateway.module.js +28 -0
  427. package/dist/roles/worker-role.d.ts +63 -0
  428. package/dist/roles/worker-role.js +144 -0
  429. package/dist/roles/worker.module.d.ts +14 -0
  430. package/dist/roles/worker.module.js +90 -0
  431. package/dist/runtime/abort.js +19 -2
  432. package/dist/runtime/checkpointer.d.ts +8 -3
  433. package/dist/runtime/checkpointer.js +87 -55
  434. package/dist/runtime/context/build.d.ts +6 -6
  435. package/dist/runtime/context/build.js +18 -8
  436. package/dist/runtime/context/claude-tools.d.ts +2 -1
  437. package/dist/runtime/context/claude-tools.js +9 -10
  438. package/dist/runtime/context/legacy-text.d.ts +22 -0
  439. package/dist/runtime/context/legacy-text.js +37 -0
  440. package/dist/runtime/context/skills.d.ts +29 -11
  441. package/dist/runtime/context/skills.js +37 -30
  442. package/dist/runtime/conversation-lock.d.ts +20 -11
  443. package/dist/runtime/conversation-lock.js +62 -72
  444. package/dist/runtime/hook-calls.d.ts +3 -3
  445. package/dist/runtime/hook-calls.js +1 -6
  446. package/dist/runtime/job-ids.d.ts +10 -0
  447. package/dist/runtime/job-ids.js +10 -0
  448. package/dist/runtime/langgraph-loop.js +1 -1
  449. package/dist/runtime/loop.d.ts +8 -1
  450. package/dist/runtime/loop.js +14 -0
  451. package/dist/runtime/maintenance-queue.d.ts +10 -0
  452. package/dist/runtime/maintenance-queue.js +10 -0
  453. package/dist/runtime/maintenance.d.ts +45 -74
  454. package/dist/runtime/maintenance.js +139 -137
  455. package/dist/runtime/model-call.d.ts +7 -4
  456. package/dist/runtime/model-call.js +25 -58
  457. package/dist/runtime/providers.d.ts +17 -6
  458. package/dist/runtime/providers.js +66 -25
  459. package/dist/runtime/quota.d.ts +17 -3
  460. package/dist/runtime/quota.js +27 -2
  461. package/dist/runtime/retired-schedulers.d.ts +7 -0
  462. package/dist/runtime/retired-schedulers.js +31 -0
  463. package/dist/runtime/run-control.d.ts +33 -0
  464. package/dist/runtime/run-control.js +77 -0
  465. package/dist/runtime/run-finish.d.ts +27 -18
  466. package/dist/runtime/run-finish.js +98 -51
  467. package/dist/runtime/run-jobs.d.ts +48 -0
  468. package/dist/runtime/run-jobs.js +95 -0
  469. package/dist/runtime/run-processors.d.ts +60 -0
  470. package/dist/runtime/run-processors.js +185 -0
  471. package/dist/runtime/run-queue.d.ts +32 -57
  472. package/dist/runtime/run-queue.js +291 -295
  473. package/dist/runtime/run-steps.d.ts +39 -0
  474. package/dist/runtime/run-steps.js +96 -0
  475. package/dist/runtime/run-worker.d.ts +122 -76
  476. package/dist/runtime/run-worker.js +343 -229
  477. package/dist/runtime/runtime.module.d.ts +10 -0
  478. package/dist/runtime/runtime.module.js +112 -0
  479. package/dist/runtime/step-log.d.ts +40 -0
  480. package/dist/runtime/step-log.js +94 -0
  481. package/dist/runtime/stream.controller.d.ts +5 -8
  482. package/dist/runtime/stream.controller.js +14 -12
  483. package/dist/runtime/stream.d.ts +24 -6
  484. package/dist/runtime/stream.js +78 -7
  485. package/dist/runtime/subagents/child.d.ts +3 -44
  486. package/dist/runtime/subagents/child.js +0 -79
  487. package/dist/runtime/subagents/definition.d.ts +5 -10
  488. package/dist/runtime/subagents/definition.js +13 -14
  489. package/dist/runtime/subagents/dispatch.d.ts +89 -8
  490. package/dist/runtime/subagents/dispatch.js +137 -142
  491. package/dist/runtime/subagents/limits.d.ts +9 -4
  492. package/dist/runtime/subagents/limits.js +4 -2
  493. package/dist/runtime/subagents/org-agents.d.ts +4 -4
  494. package/dist/runtime/subagents/org-agents.js +3 -2
  495. package/dist/runtime/subagents/progress.d.ts +2 -2
  496. package/dist/runtime/subagents/roster.d.ts +4 -4
  497. package/dist/runtime/subagents/roster.js +2 -2
  498. package/dist/runtime/subagents/skill-fork.d.ts +8 -9
  499. package/dist/runtime/subagents/skill-fork.js +17 -6
  500. package/dist/runtime/subagents/subagents.service.d.ts +40 -0
  501. package/dist/runtime/subagents/subagents.service.js +101 -0
  502. package/dist/runtime/usage-report.d.ts +94 -52
  503. package/dist/runtime/usage-report.js +200 -100
  504. package/dist/runtime/waits.d.ts +127 -59
  505. package/dist/runtime/waits.js +433 -210
  506. package/dist/sandbox/job-ids.d.ts +10 -0
  507. package/dist/sandbox/job-ids.js +10 -0
  508. package/dist/sandbox/jobs.d.ts +41 -0
  509. package/dist/sandbox/jobs.js +113 -0
  510. package/dist/sandbox/leases.d.ts +39 -31
  511. package/dist/sandbox/leases.js +117 -257
  512. package/dist/sandbox/providers.d.ts +19 -0
  513. package/dist/sandbox/providers.js +38 -0
  514. package/dist/sandbox/sandbox.module.d.ts +8 -0
  515. package/dist/sandbox/sandbox.module.js +30 -0
  516. package/dist/sandbox/sandbox.service.d.ts +24 -29
  517. package/dist/sandbox/sandbox.service.js +106 -75
  518. package/dist/skills/catalog.d.ts +37 -24
  519. package/dist/skills/catalog.js +100 -57
  520. package/dist/skills/changes.controller.d.ts +4 -4
  521. package/dist/skills/changes.controller.js +15 -9
  522. package/dist/skills/changes.service.d.ts +30 -20
  523. package/dist/skills/changes.service.js +425 -367
  524. package/dist/skills/invocable.controller.d.ts +1 -1
  525. package/dist/skills/invocable.controller.js +8 -5
  526. package/dist/skills/invocation-keys.d.ts +1 -1
  527. package/dist/skills/invocation-keys.js +1 -1
  528. package/dist/skills/invoke.d.ts +17 -16
  529. package/dist/skills/invoke.js +53 -21
  530. package/dist/skills/skills.controller.d.ts +1 -1
  531. package/dist/skills/skills.controller.js +11 -6
  532. package/dist/skills/skills.module.d.ts +6 -0
  533. package/dist/skills/skills.module.js +30 -0
  534. package/dist/skills/skills.service.d.ts +47 -30
  535. package/dist/skills/skills.service.js +221 -158
  536. package/dist/storage/job-ids.d.ts +6 -0
  537. package/dist/storage/job-ids.js +6 -0
  538. package/dist/storage/purge.d.ts +22 -7
  539. package/dist/storage/purge.js +55 -3
  540. package/dist/storage/storage.module.d.ts +6 -0
  541. package/dist/storage/storage.module.js +23 -0
  542. package/dist/storage/storage.service.d.ts +18 -4
  543. package/dist/storage/storage.service.js +44 -3
  544. package/dist/tools/approvals.controller.d.ts +1 -1
  545. package/dist/tools/approvals.controller.js +12 -8
  546. package/dist/tools/approvals.service.d.ts +33 -25
  547. package/dist/tools/approvals.service.js +343 -259
  548. package/dist/tools/breaker.d.ts +2 -2
  549. package/dist/tools/breaker.js +21 -3
  550. package/dist/tools/builtin-names.d.ts +73 -0
  551. package/dist/tools/builtin-names.js +116 -0
  552. package/dist/tools/builtins/agent.d.ts +7 -7
  553. package/dist/tools/builtins/agent.js +7 -11
  554. package/dist/tools/builtins/ask-user.d.ts +3 -3
  555. package/dist/tools/builtins/ask-user.js +3 -3
  556. package/dist/tools/builtins/builtin-tools.d.ts +21 -0
  557. package/dist/tools/builtins/builtin-tools.js +80 -0
  558. package/dist/tools/builtins/read-tool-output.d.ts +3 -3
  559. package/dist/tools/builtins/read-tool-output.js +3 -3
  560. package/dist/tools/builtins/sandbox/bash.d.ts +5 -5
  561. package/dist/tools/builtins/sandbox/bash.js +33 -30
  562. package/dist/tools/builtins/sandbox/common.d.ts +5 -4
  563. package/dist/tools/builtins/sandbox/common.js +2 -2
  564. package/dist/tools/builtins/sandbox/deliver.d.ts +1 -1
  565. package/dist/tools/builtins/sandbox/deliver.js +13 -13
  566. package/dist/tools/builtins/sandbox/edit.d.ts +1 -1
  567. package/dist/tools/builtins/sandbox/edit.js +42 -31
  568. package/dist/tools/builtins/sandbox/file-state.d.ts +34 -0
  569. package/dist/tools/builtins/sandbox/file-state.js +34 -0
  570. package/dist/tools/builtins/sandbox/glob-match.d.ts +1 -1
  571. package/dist/tools/builtins/sandbox/glob-match.js +1 -1
  572. package/dist/tools/builtins/sandbox/glob.d.ts +1 -1
  573. package/dist/tools/builtins/sandbox/glob.js +6 -6
  574. package/dist/tools/builtins/sandbox/grep.d.ts +7 -4
  575. package/dist/tools/builtins/sandbox/grep.js +149 -32
  576. package/dist/tools/builtins/sandbox/index.d.ts +1 -1
  577. package/dist/tools/builtins/sandbox/index.js +1 -1
  578. package/dist/tools/builtins/sandbox/read.d.ts +2 -2
  579. package/dist/tools/builtins/sandbox/read.js +22 -15
  580. package/dist/tools/builtins/sandbox/write.d.ts +1 -1
  581. package/dist/tools/builtins/sandbox/write.js +38 -34
  582. package/dist/tools/builtins/skill-load.d.ts +6 -6
  583. package/dist/tools/builtins/skill-load.js +33 -17
  584. package/dist/tools/builtins/skill-write.d.ts +4 -4
  585. package/dist/tools/builtins/skill-write.js +10 -10
  586. package/dist/tools/builtins/tool-search.d.ts +13 -9
  587. package/dist/tools/builtins/tool-search.js +25 -14
  588. package/dist/tools/canonical-json.d.ts +6 -0
  589. package/dist/tools/canonical-json.js +16 -0
  590. package/dist/tools/connector-content.controller.d.ts +1 -1
  591. package/dist/tools/connector-content.controller.js +11 -6
  592. package/dist/tools/connector-content.d.ts +12 -15
  593. package/dist/tools/connector-content.js +53 -18
  594. package/dist/tools/connectors.controller.d.ts +1 -1
  595. package/dist/tools/connectors.controller.js +21 -10
  596. package/dist/tools/connectors.service.d.ts +31 -13
  597. package/dist/tools/connectors.service.js +438 -348
  598. package/dist/tools/credentials.d.ts +17 -20
  599. package/dist/tools/credentials.js +55 -34
  600. package/dist/tools/display-names.d.ts +9 -0
  601. package/dist/tools/display-names.js +24 -0
  602. package/dist/tools/drift.d.ts +29 -41
  603. package/dist/tools/drift.js +116 -84
  604. package/dist/tools/elicitation.js +1 -1
  605. package/dist/tools/info.d.ts +32 -13
  606. package/dist/tools/info.js +88 -39
  607. package/dist/tools/job-ids.d.ts +13 -0
  608. package/dist/tools/job-ids.js +15 -0
  609. package/dist/tools/jobs.d.ts +24 -0
  610. package/dist/tools/jobs.js +69 -0
  611. package/dist/tools/legacy-data.d.ts +34 -0
  612. package/dist/tools/legacy-data.js +76 -0
  613. package/dist/tools/legacy-keys.d.ts +51 -0
  614. package/dist/tools/legacy-keys.js +115 -0
  615. package/dist/tools/naming.d.ts +1 -5
  616. package/dist/tools/naming.js +1 -7
  617. package/dist/tools/oauth/flow-paths.d.ts +16 -0
  618. package/dist/tools/oauth/flow-paths.js +38 -0
  619. package/dist/tools/oauth/flow.d.ts +30 -30
  620. package/dist/tools/oauth/flow.js +109 -81
  621. package/dist/tools/oauth/oauth.controller.d.ts +3 -3
  622. package/dist/tools/oauth/oauth.controller.js +12 -9
  623. package/dist/tools/oauth/tokens.d.ts +11 -3
  624. package/dist/tools/oauth/tokens.js +15 -14
  625. package/dist/tools/outputs.d.ts +13 -4
  626. package/dist/tools/outputs.js +48 -4
  627. package/dist/tools/pipeline.d.ts +72 -50
  628. package/dist/tools/pipeline.js +239 -100
  629. package/dist/tools/policy.d.ts +3 -16
  630. package/dist/tools/policy.js +13 -19
  631. package/dist/tools/questions.controller.d.ts +2 -2
  632. package/dist/tools/questions.controller.js +9 -6
  633. package/dist/tools/questions.service.d.ts +26 -25
  634. package/dist/tools/questions.service.js +201 -142
  635. package/dist/tools/registry.d.ts +43 -38
  636. package/dist/tools/registry.js +100 -72
  637. package/dist/tools/resources.d.ts +1 -1
  638. package/dist/tools/resources.js +1 -1
  639. package/dist/tools/specs.d.ts +5 -4
  640. package/dist/tools/specs.js +3 -1
  641. package/dist/tools/tools.module.d.ts +10 -0
  642. package/dist/tools/tools.module.js +91 -0
  643. package/dist/ui/call-extension.d.ts +16 -0
  644. package/dist/ui/call-extension.js +38 -0
  645. package/dist/ui/embed-token.d.ts +9 -5
  646. package/dist/ui/embed-token.js +34 -6
  647. package/dist/ui/ui-stream.d.ts +22 -17
  648. package/dist/ui/ui-stream.js +72 -12
  649. package/dist/ui/ui.module.d.ts +7 -0
  650. package/dist/ui/ui.module.js +28 -0
  651. package/dist/ui/views.controller.d.ts +14 -12
  652. package/dist/ui/views.controller.js +32 -25
  653. package/dist/ui/views.d.ts +9 -57
  654. package/dist/ui/views.js +43 -45
  655. package/package.json +10 -3
  656. package/src/migrations/0063_tool_keys_claude_code.sql +220 -0
  657. package/dist/http/health.controller.d.ts +0 -26
  658. package/dist/http/health.controller.js +0 -79
  659. package/dist/http/tokens.d.ts +0 -131
  660. package/dist/http/tokens.js +0 -131
  661. package/dist/http/zod.pipe.d.ts +0 -8
  662. package/dist/http/zod.pipe.js +0 -14
  663. package/dist/identity/rate-limit.d.ts +0 -55
  664. package/dist/identity/rate-limit.js +0 -121
  665. package/dist/sandbox/lifecycle.d.ts +0 -21
  666. package/dist/sandbox/lifecycle.js +0 -68
  667. package/dist/tools/builtins/sandbox/names.d.ts +0 -7
  668. package/dist/tools/builtins/sandbox/names.js +0 -20
  669. /package/dist/http/{gateway.module.d.ts → gateway-routes.d.ts} +0 -0
  670. /package/dist/http/{gateway.module.js → gateway-routes.js} +0 -0
@@ -1,7 +1,6 @@
1
- import { type Transaction } from "kysely";
2
- import type { AppendEvent, EventLog } from "../conversations/event-log.js";
3
- import type { KernelDatabase, KernelDb } from "../db/kernel-schema.js";
4
- type KernelTrx = Transaction<KernelDatabase>;
1
+ import { type AppendEvent, EventLog } from "../conversations/event-log.js";
2
+ import { KernelDb } from "../infra/database/kernel-db.js";
3
+ import { TransactionHost } from "../infra/database/transaction-host.js";
5
4
  /** 运行的终态。 */
6
5
  export type TerminalStatus = "completed" | "failed" | "aborted";
7
6
  export declare const TERMINAL_STATUSES: ReadonlySet<string>;
@@ -20,26 +19,36 @@ export interface FinishRunArgs {
20
19
  floorToTrigger?: boolean;
21
20
  /**
22
21
  * Runs in the transaction once the run is known not to be terminal, before the terminal event:
23
- * a parent's open `agent` calls get their results here (sub-agents spec §12, review m1).
22
+ * a parent's open `Agent` calls get their results here (sub-agents spec §12, review m1).
24
23
  */
25
- beforeTerminal?: (t: KernelTrx) => Promise<void>;
24
+ beforeTerminal?: () => Promise<void>;
26
25
  }
27
26
  /**
28
- * 在事务 `t` 内写运行的终态:会话行锁 → 运行仍未结束才写终态事件、推进 `consumed_seq`、更新 `runs.status`。
29
- * 返回终态事件的 seq;运行已是终态(例如已被其他副本标记失败)→ 返回 null,什么都不写。
30
- *
31
- * `consumed_seq = GREATEST(consumed_seq, consumed, runs.trigger_seq)`:不回退,且失败 / 中止 / 完成都至少
32
- * 消费到触发该运行的消息——否则结束时的 ensureRun 会对同一条消息无限重试(失败)或卡住会话。
33
- * 超时(`floorToTrigger: false`)只取 `GREATEST(consumed_seq, consumed)`:没吸收的消息留给下一轮(R34)。
34
- * 加锁顺序与 `RunQueue.ensureRun` 一致(先会话行、后 runs 行),不会互相死锁。
35
- * 调用方在提交后对非 null 的返回值调用 `eventLog.notify`。
27
+ * Writes runs' terminal states (one instance; the run worker, the run queue's orphan repairs, the
28
+ * waits and the eval replays finish runs through it).
36
29
  */
37
- export declare function finishRunIn(t: KernelTrx, eventLog: EventLog, a: FinishRunArgs): Promise<number | null>;
30
+ export declare class RunFinish {
31
+ private readonly kdb;
32
+ private readonly eventLog;
33
+ readonly txHost: TransactionHost;
34
+ constructor(kdb: KernelDb, eventLog: EventLog, txHost: TransactionHost);
35
+ /**
36
+ * 在调用方的事务内写运行的终态:会话行锁 → 运行仍未结束才写终态事件、推进 `consumed_seq`、更新 `runs.status`。
37
+ * 返回终态事件的 seq;运行已是终态(例如已被其他副本标记失败)→ 返回 null,什么都不写。
38
+ *
39
+ * `consumed_seq = GREATEST(consumed_seq, consumed, runs.trigger_seq)`:不回退,且失败 / 中止 / 完成都至少
40
+ * 消费到触发该运行的消息——否则结束时的 ensureRun 会对同一条消息无限重试(失败)或卡住会话。
41
+ * 超时(`floorToTrigger: false`)只取 `GREATEST(consumed_seq, consumed)`:没吸收的消息留给下一轮(R34)。
42
+ * 加锁顺序与 `RunQueue.ensureRun` 一致(先会话行、后 runs 行),不会互相死锁。
43
+ * 调用方在提交后对非 null 的返回值调用 {@link notifyFinished}。
44
+ */
45
+ finishIn(a: FinishRunArgs): Promise<number | null>;
46
+ /** 自开事务写终态并在提交后发布会话通知;返回值同 {@link finishIn}。 */
47
+ finish(a: FinishRunArgs): Promise<number | null>;
48
+ private finishOwn;
49
+ }
38
50
  /**
39
51
  * After a terminal event committed: notify the log, and for a failed or stopped run also send
40
52
  * `changed: queue` (the queue may have paused).
41
53
  */
42
54
  export declare function notifyFinished(eventLog: Pick<EventLog, "notify" | "publishChanged">, conversationId: string, toSeq: number, status: TerminalStatus): Promise<void>;
43
- /** 自开事务写终态并在提交后发布会话通知;返回值同 {@link finishRunIn}。 */
44
- export declare function finishRun(db: KernelDb, eventLog: EventLog, a: FinishRunArgs): Promise<number | null>;
45
- export {};
@@ -1,56 +1,110 @@
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";
1
11
  import { sql } from "kysely";
12
+ import { EventLog } from "../conversations/event-log.js";
2
13
  import { pauseQueueIn } from "../conversations/queue.js";
14
+ import { KernelDb } from "../infra/database/kernel-db.js";
15
+ import { TransactionHost } from "../infra/database/transaction-host.js";
16
+ import { Transactional } from "../infra/database/transactional.decorator.js";
3
17
  export const TERMINAL_STATUSES = new Set([
4
18
  "completed",
5
19
  "failed",
6
20
  "aborted",
7
21
  ]);
8
22
  /**
9
- * 在事务 `t` 内写运行的终态:会话行锁 → 运行仍未结束才写终态事件、推进 `consumed_seq`、更新 `runs.status`。
10
- * 返回终态事件的 seq;运行已是终态(例如已被其他副本标记失败)→ 返回 null,什么都不写。
11
- *
12
- * `consumed_seq = GREATEST(consumed_seq, consumed, runs.trigger_seq)`:不回退,且失败 / 中止 / 完成都至少
13
- * 消费到触发该运行的消息——否则结束时的 ensureRun 会对同一条消息无限重试(失败)或卡住会话。
14
- * 超时(`floorToTrigger: false`)只取 `GREATEST(consumed_seq, consumed)`:没吸收的消息留给下一轮(R34)。
15
- * 加锁顺序与 `RunQueue.ensureRun` 一致(先会话行、后 runs 行),不会互相死锁。
16
- * 调用方在提交后对非 null 的返回值调用 `eventLog.notify`。
23
+ * Writes runs' terminal states (one instance; the run worker, the run queue's orphan repairs, the
24
+ * waits and the eval replays finish runs through it).
17
25
  */
18
- export async function finishRunIn(t, eventLog, a) {
19
- await t
20
- .selectFrom("conversations")
21
- .select("id")
22
- .where("id", "=", a.conversationId)
23
- .forUpdate()
24
- .executeTakeFirst();
25
- const run = await t
26
- .selectFrom("runs")
27
- .select("status")
28
- .where("id", "=", a.runId)
29
- .forUpdate()
30
- .executeTakeFirst();
31
- if (!run || TERMINAL_STATUSES.has(run.status))
32
- return null;
33
- await a.beforeTerminal?.(t);
34
- const [ev] = await eventLog.append(a.conversationId, [{ ...a.event, runId: a.runId, idemKey: `${a.event.type}:${a.runId}` }], t);
35
- await t
36
- .updateTable("conversations")
37
- .set({
38
- consumed_seq: a.floorToTrigger === false
39
- ? sql `GREATEST(consumed_seq, ${a.consumed ?? 0}::bigint)`
40
- : sql `GREATEST(consumed_seq, ${a.consumed ?? 0}::bigint, (SELECT r.trigger_seq FROM capybara.runs r WHERE r.id = ${a.runId}))`,
41
- })
42
- .where("id", "=", a.conversationId)
43
- .execute();
44
- await t
45
- .updateTable("runs")
46
- .set({ status: a.status, finished_at: sql `now()` })
47
- .where("id", "=", a.runId)
48
- .execute();
49
- // a failed or stopped run pauses the queued messages until the person resumes (spec §5.7)
50
- if (a.status !== "completed")
51
- await pauseQueueIn(t, a.conversationId);
52
- return ev.seq;
53
- }
26
+ let RunFinish = class RunFinish {
27
+ kdb;
28
+ eventLog;
29
+ txHost;
30
+ constructor(kdb, eventLog, txHost) {
31
+ this.kdb = kdb;
32
+ this.eventLog = eventLog;
33
+ this.txHost = txHost;
34
+ }
35
+ /**
36
+ * 在调用方的事务内写运行的终态:会话行锁 → 运行仍未结束才写终态事件、推进 `consumed_seq`、更新 `runs.status`。
37
+ * 返回终态事件的 seq;运行已是终态(例如已被其他副本标记失败)→ 返回 null,什么都不写。
38
+ *
39
+ * `consumed_seq = GREATEST(consumed_seq, consumed, runs.trigger_seq)`:不回退,且失败 / 中止 / 完成都至少
40
+ * 消费到触发该运行的消息——否则结束时的 ensureRun 会对同一条消息无限重试(失败)或卡住会话。
41
+ * 超时(`floorToTrigger: false`)只取 `GREATEST(consumed_seq, consumed)`:没吸收的消息留给下一轮(R34)。
42
+ * 加锁顺序与 `RunQueue.ensureRun` 一致(先会话行、后 runs 行),不会互相死锁。
43
+ * 调用方在提交后对非 null 的返回值调用 {@link notifyFinished}。
44
+ */
45
+ async finishIn(a) {
46
+ const t = this.kdb.db;
47
+ await t
48
+ .selectFrom("conversations")
49
+ .select("id")
50
+ .where("id", "=", a.conversationId)
51
+ .forUpdate()
52
+ .executeTakeFirst();
53
+ const run = await t
54
+ .selectFrom("runs")
55
+ .select("status")
56
+ .where("id", "=", a.runId)
57
+ .forUpdate()
58
+ .executeTakeFirst();
59
+ if (!run || TERMINAL_STATUSES.has(run.status))
60
+ return null;
61
+ await a.beforeTerminal?.();
62
+ const [ev] = await this.eventLog.appendIn(a.conversationId, [
63
+ { ...a.event, runId: a.runId, idemKey: `${a.event.type}:${a.runId}` },
64
+ ]);
65
+ await t
66
+ .updateTable("conversations")
67
+ .set({
68
+ consumed_seq: a.floorToTrigger === false
69
+ ? sql `GREATEST(consumed_seq, ${a.consumed ?? 0}::bigint)`
70
+ : sql `GREATEST(consumed_seq, ${a.consumed ?? 0}::bigint, (SELECT r.trigger_seq FROM capybara.runs r WHERE r.id = ${a.runId}))`,
71
+ })
72
+ .where("id", "=", a.conversationId)
73
+ .execute();
74
+ await t
75
+ .updateTable("runs")
76
+ .set({ status: a.status, finished_at: sql `now()` })
77
+ .where("id", "=", a.runId)
78
+ .execute();
79
+ // a failed or stopped run pauses the queued messages until the person resumes (spec §5.7)
80
+ if (a.status !== "completed")
81
+ await pauseQueueIn(t, a.conversationId);
82
+ return ev.seq;
83
+ }
84
+ /** 自开事务写终态并在提交后发布会话通知;返回值同 {@link finishIn}。 */
85
+ async finish(a) {
86
+ const toSeq = await this.finishOwn(a);
87
+ if (toSeq !== null)
88
+ await notifyFinished(this.eventLog, a.conversationId, toSeq, a.status);
89
+ return toSeq;
90
+ }
91
+ finishOwn(a) {
92
+ return this.finishIn(a);
93
+ }
94
+ };
95
+ __decorate([
96
+ Transactional({ propagation: "mandatory" })
97
+ ], RunFinish.prototype, "finishIn", null);
98
+ __decorate([
99
+ Transactional({ propagation: "requires_new" })
100
+ ], RunFinish.prototype, "finishOwn", null);
101
+ RunFinish = __decorate([
102
+ Injectable(),
103
+ __param(0, Inject(KernelDb)),
104
+ __param(1, Inject(EventLog)),
105
+ __param(2, Inject(TransactionHost))
106
+ ], RunFinish);
107
+ export { RunFinish };
54
108
  /**
55
109
  * After a terminal event committed: notify the log, and for a failed or stopped run also send
56
110
  * `changed: queue` (the queue may have paused).
@@ -60,10 +114,3 @@ export async function notifyFinished(eventLog, conversationId, toSeq, status) {
60
114
  if (status !== "completed")
61
115
  await eventLog.publishChanged(conversationId, "queue");
62
116
  }
63
- /** 自开事务写终态并在提交后发布会话通知;返回值同 {@link finishRunIn}。 */
64
- export async function finishRun(db, eventLog, a) {
65
- const toSeq = await db.transaction().execute((t) => finishRunIn(t, eventLog, a));
66
- if (toSeq !== null)
67
- await notifyFinished(eventLog, a.conversationId, toSeq, a.status);
68
- return toSeq;
69
- }
@@ -0,0 +1,48 @@
1
+ import type { Job, Queue } from "bullmq";
2
+ import type { ConversationKind } from "../db/kernel-schema.js";
3
+ import { KernelDb } from "../infra/database/kernel-db.js";
4
+ import type { KernelLogger } from "../log.js";
5
+ /** 内核运行队列的 BullMQ 队列名(不含 `:`;与插件队列 `cap.<插件>.<名>` 不会重名)。 */
6
+ export declare const RUN_QUEUE_NAME = "cap-kernel-runs";
7
+ /**
8
+ * Queue of sub-agent (child) runs (sub-agents spec §7.4): a replica still on a version without
9
+ * sub-agents never takes a child job, and child load shows apart from conversations.
10
+ */
11
+ export declare const SUBAGENT_RUN_QUEUE_NAME = "cap-kernel-subagent-runs";
12
+ /** The run queue of a conversation kind: sub-agent conversations have their own. */
13
+ export declare const runQueueNameFor: (kind: ConversationKind) => string;
14
+ /** 未结束的运行状态(waiting:等人处理审批 / 输入请求,没有任务、不占会话锁与配额)。 */
15
+ export declare const ACTIVE_RUN_STATUSES: readonly ["queued", "running", "waiting"];
16
+ /** 运行任务的数据。 */
17
+ export interface RunJobData {
18
+ runId: string;
19
+ conversationId: string;
20
+ }
21
+ /** 同一触发点(会话 + 最新用户消息 seq)只投递一次。 */
22
+ export declare const runJobId: (conversationId: string, maxUserSeq: number) => string;
23
+ /**
24
+ * The producer side of the two run queues (`cap-kernel-runs`, `cap-kernel-subagent-runs`): adds
25
+ * run jobs under the caller's job id and looks them up. The run queue (`ensureRun`, orphan
26
+ * repairs), the waits (resumes) and the sub-agent dispatch enqueue through it; the run worker
27
+ * consumes both queues.
28
+ */
29
+ export declare class RunJobs {
30
+ private readonly kdb;
31
+ private readonly queues;
32
+ constructor(kdb: KernelDb, runs: Queue<RunJobData>, subagentRuns: Queue<RunJobData>, log: KernelLogger);
33
+ /** The BullMQ queue `name` (default: conversation runs). */
34
+ queue(name?: string): Queue<RunJobData>;
35
+ /** A run job by id on the queue `name`, or undefined. */
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
+ /**
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.
43
+ */
44
+ enqueue(data: RunJobData, jobId: string, kind?: ConversationKind): Promise<void>;
45
+ }
46
+ /** The run queues' producer (the sub-agent dispatch, the run queue and the waits use it). */
47
+ export declare class RunJobsModule {
48
+ }
@@ -0,0 +1,95 @@
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 { getQueueToken } from "@nestjs/bullmq";
11
+ import { Inject, Injectable, Module } from "@nestjs/common";
12
+ import { KernelDb } from "../infra/database/kernel-db.js";
13
+ import { QueueModule } from "../infra/queue/queue.module.js";
14
+ import { KERNEL_LOGGER } from "../infra/tokens.js";
15
+ /** 内核运行队列的 BullMQ 队列名(不含 `:`;与插件队列 `cap.<插件>.<名>` 不会重名)。 */
16
+ export const RUN_QUEUE_NAME = "cap-kernel-runs";
17
+ /**
18
+ * Queue of sub-agent (child) runs (sub-agents spec §7.4): a replica still on a version without
19
+ * sub-agents never takes a child job, and child load shows apart from conversations.
20
+ */
21
+ export const SUBAGENT_RUN_QUEUE_NAME = "cap-kernel-subagent-runs";
22
+ /** The run queue of a conversation kind: sub-agent conversations have their own. */
23
+ export const runQueueNameFor = (kind) => kind === "subagent" ? SUBAGENT_RUN_QUEUE_NAME : RUN_QUEUE_NAME;
24
+ /** 未结束的运行状态(waiting:等人处理审批 / 输入请求,没有任务、不占会话锁与配额)。 */
25
+ export const ACTIVE_RUN_STATUSES = ["queued", "running", "waiting"];
26
+ /** 同一触发点(会话 + 最新用户消息 seq)只投递一次。 */
27
+ export const runJobId = (conversationId, maxUserSeq) => `run-${conversationId}-${maxUserSeq}`;
28
+ /** The options of every run job: one attempt (the run's own paths handle failures), not kept. */
29
+ const RUN_JOB_OPTIONS = { attempts: 1, removeOnComplete: true, removeOnFail: true };
30
+ /**
31
+ * The producer side of the two run queues (`cap-kernel-runs`, `cap-kernel-subagent-runs`): adds
32
+ * run jobs under the caller's job id and looks them up. The run queue (`ensureRun`, orphan
33
+ * repairs), the waits (resumes) and the sub-agent dispatch enqueue through it; the run worker
34
+ * consumes both queues.
35
+ */
36
+ let RunJobs = class RunJobs {
37
+ kdb;
38
+ queues;
39
+ constructor(kdb, runs, subagentRuns, log) {
40
+ this.kdb = kdb;
41
+ this.queues = { [RUN_QUEUE_NAME]: runs, [SUBAGENT_RUN_QUEUE_NAME]: subagentRuns };
42
+ for (const [name, q] of Object.entries(this.queues)) {
43
+ q.on("error", (err) => log.error("run queue error", { err, queue: name }));
44
+ }
45
+ }
46
+ /** The BullMQ queue `name` (default: conversation runs). */
47
+ queue(name = RUN_QUEUE_NAME) {
48
+ const q = this.queues[name];
49
+ if (!q)
50
+ throw new Error(`unknown run queue ${name}`);
51
+ return q;
52
+ }
53
+ /** A run job by id on the queue `name`, or undefined. */
54
+ getJob(jobId, name = RUN_QUEUE_NAME) {
55
+ return this.queue(name).getJob(jobId);
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
+ /**
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.
65
+ */
66
+ async enqueue(data, jobId, kind) {
67
+ const k = kind ??
68
+ (await this.kdb.db
69
+ .selectFrom("conversations")
70
+ .select("kind")
71
+ .where("id", "=", data.conversationId)
72
+ .executeTakeFirst())?.kind ??
73
+ "chat";
74
+ await this.queue(runQueueNameFor(k)).add("run", data, { jobId, ...RUN_JOB_OPTIONS });
75
+ }
76
+ };
77
+ RunJobs = __decorate([
78
+ Injectable(),
79
+ __param(0, Inject(KernelDb)),
80
+ __param(1, Inject(getQueueToken(RUN_QUEUE_NAME))),
81
+ __param(2, Inject(getQueueToken(SUBAGENT_RUN_QUEUE_NAME))),
82
+ __param(3, Inject(KERNEL_LOGGER))
83
+ ], RunJobs);
84
+ export { RunJobs };
85
+ /** The run queues' producer (the sub-agent dispatch, the run queue and the waits use it). */
86
+ let RunJobsModule = class RunJobsModule {
87
+ };
88
+ RunJobsModule = __decorate([
89
+ Module({
90
+ imports: [QueueModule.registerQueue(RUN_QUEUE_NAME, SUBAGENT_RUN_QUEUE_NAME)],
91
+ providers: [RunJobs],
92
+ exports: [RunJobs],
93
+ })
94
+ ], RunJobsModule);
95
+ export { RunJobsModule };
@@ -0,0 +1,60 @@
1
+ import { WorkerHost } from "@nestjs/bullmq";
2
+ import { type DynamicModule } from "@nestjs/common";
3
+ import type { Job, Worker } from "bullmq";
4
+ import type { KernelConfig } from "../config/schema.js";
5
+ import { TitleQueue } from "../conversations/titles.js";
6
+ import { type RunJobData } from "./run-jobs.js";
7
+ import { RunWorker } from "./run-worker.js";
8
+ import { UsageReporter, type UsageReportJob } from "./usage-report.js";
9
+ type RunResult = Awaited<ReturnType<RunWorker["process"]>>;
10
+ /** The consumer of `cap-kernel-runs` (conversation runs): {@link RunWorker}. */
11
+ export declare class RunsProcessor extends WorkerHost<Worker<RunJobData, RunResult>> {
12
+ private readonly runs;
13
+ constructor(runs: RunWorker);
14
+ process(job: Job<RunJobData>, token?: string): Promise<RunResult>;
15
+ completed(job: Job<RunJobData>, result: RunResult): void;
16
+ failed(job: Job<RunJobData> | undefined, err: Error): void;
17
+ error(err: Error): void;
18
+ }
19
+ /** The consumer of `cap-kernel-subagent-runs` (sub-agent runs, spec §7.4): {@link RunWorker}. */
20
+ export declare class SubagentRunsProcessor extends WorkerHost<Worker<RunJobData, RunResult>> {
21
+ private readonly runs;
22
+ constructor(runs: RunWorker);
23
+ process(job: Job<RunJobData>, token?: string): Promise<RunResult>;
24
+ completed(job: Job<RunJobData>, result: RunResult): void;
25
+ failed(job: Job<RunJobData> | undefined, err: Error): void;
26
+ error(err: Error): void;
27
+ }
28
+ /** The consumer of `cap-kernel-usage-report`: {@link UsageReporter}. */
29
+ export declare class UsageReportProcessor extends WorkerHost<Worker<UsageReportJob>> {
30
+ private readonly reporter;
31
+ constructor(reporter: UsageReporter);
32
+ process(job: Job<UsageReportJob>, token?: string): Promise<void>;
33
+ failed(job: Job<UsageReportJob> | undefined, err: Error): void;
34
+ error(err: Error): void;
35
+ }
36
+ /** The consumer of `cap-kernel-titles`: {@link TitleQueue}. */
37
+ export declare class TitleProcessor extends WorkerHost<Worker<{
38
+ conversationId: string;
39
+ attempt: number;
40
+ }>> {
41
+ private readonly titles;
42
+ constructor(titles: TitleQueue);
43
+ process(job: Job<{
44
+ conversationId: string;
45
+ attempt: number;
46
+ }>): Promise<void>;
47
+ error(err: Error): void;
48
+ }
49
+ /**
50
+ * The runtime's queue consumers: the run worker on both run queues, `usage.report` deliveries and
51
+ * conversation titles. Imported only by the worker role (`WorkerModule`), so other roles get no
52
+ * processor and no BullMQ worker. Their worker options come from the startup config (concurrency
53
+ * per queue, the run queues' job lock and stalled detection, which the usage and title workers
54
+ * follow). The workers never start by themselves: the worker role (`WorkerRole`) starts them after
55
+ * the extensions loaded, and pauses them on stop.
56
+ */
57
+ export declare class RuntimeWorkersModule {
58
+ static forRoot(config: KernelConfig): DynamicModule;
59
+ }
60
+ export {};
@@ -0,0 +1,185 @@
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
+ var RuntimeWorkersModule_1;
11
+ import { hostname } from "node:os";
12
+ import { OnWorkerEvent, WorkerHost } from "@nestjs/bullmq";
13
+ import { Inject, Injectable, Module } from "@nestjs/common";
14
+ import { TITLE_QUEUE, TitleQueue, TitlesModule } from "../conversations/titles.js";
15
+ import { configuredProcessor } from "../infra/queue/configured-processor.js";
16
+ import { runJob } from "../infra/queue/run-job.js";
17
+ import { RUN_QUEUE_NAME, SUBAGENT_RUN_QUEUE_NAME } from "./run-jobs.js";
18
+ import { MAX_STALLED_COUNT, RunWorker } from "./run-worker.js";
19
+ import { RuntimeModule } from "./runtime.module.js";
20
+ import { USAGE_REPORT_QUEUE, UsageReporter, UsageReportModule, } from "./usage-report.js";
21
+ /** The consumer of `cap-kernel-runs` (conversation runs): {@link RunWorker}. */
22
+ let RunsProcessor = class RunsProcessor extends WorkerHost {
23
+ runs;
24
+ constructor(runs) {
25
+ super();
26
+ this.runs = runs;
27
+ }
28
+ process(job, token) {
29
+ return runJob(RUN_QUEUE_NAME, job, () => this.runs.process(job, token));
30
+ }
31
+ completed(job, result) {
32
+ this.runs.onCompleted(job, result);
33
+ }
34
+ failed(job, err) {
35
+ this.runs.onFailed(job, err);
36
+ }
37
+ error(err) {
38
+ this.runs.onError(err, RUN_QUEUE_NAME);
39
+ }
40
+ };
41
+ __decorate([
42
+ OnWorkerEvent("completed")
43
+ ], RunsProcessor.prototype, "completed", null);
44
+ __decorate([
45
+ OnWorkerEvent("failed")
46
+ ], RunsProcessor.prototype, "failed", null);
47
+ __decorate([
48
+ OnWorkerEvent("error")
49
+ ], RunsProcessor.prototype, "error", null);
50
+ RunsProcessor = __decorate([
51
+ Injectable(),
52
+ __param(0, Inject(RunWorker))
53
+ ], RunsProcessor);
54
+ export { RunsProcessor };
55
+ /** The consumer of `cap-kernel-subagent-runs` (sub-agent runs, spec §7.4): {@link RunWorker}. */
56
+ let SubagentRunsProcessor = class SubagentRunsProcessor extends WorkerHost {
57
+ runs;
58
+ constructor(runs) {
59
+ super();
60
+ this.runs = runs;
61
+ }
62
+ process(job, token) {
63
+ return runJob(SUBAGENT_RUN_QUEUE_NAME, job, () => this.runs.process(job, token));
64
+ }
65
+ completed(job, result) {
66
+ this.runs.onCompleted(job, result);
67
+ }
68
+ failed(job, err) {
69
+ this.runs.onFailed(job, err);
70
+ }
71
+ error(err) {
72
+ this.runs.onError(err, SUBAGENT_RUN_QUEUE_NAME);
73
+ }
74
+ };
75
+ __decorate([
76
+ OnWorkerEvent("completed")
77
+ ], SubagentRunsProcessor.prototype, "completed", null);
78
+ __decorate([
79
+ OnWorkerEvent("failed")
80
+ ], SubagentRunsProcessor.prototype, "failed", null);
81
+ __decorate([
82
+ OnWorkerEvent("error")
83
+ ], SubagentRunsProcessor.prototype, "error", null);
84
+ SubagentRunsProcessor = __decorate([
85
+ Injectable(),
86
+ __param(0, Inject(RunWorker))
87
+ ], SubagentRunsProcessor);
88
+ export { SubagentRunsProcessor };
89
+ /** The consumer of `cap-kernel-usage-report`: {@link UsageReporter}. */
90
+ let UsageReportProcessor = class UsageReportProcessor extends WorkerHost {
91
+ reporter;
92
+ constructor(reporter) {
93
+ super();
94
+ this.reporter = reporter;
95
+ }
96
+ process(job, token) {
97
+ return runJob(USAGE_REPORT_QUEUE, job, () => this.reporter.process(job, token));
98
+ }
99
+ failed(job, err) {
100
+ this.reporter.onFailed(job, err);
101
+ }
102
+ error(err) {
103
+ this.reporter.onError(err);
104
+ }
105
+ };
106
+ __decorate([
107
+ OnWorkerEvent("failed")
108
+ ], UsageReportProcessor.prototype, "failed", null);
109
+ __decorate([
110
+ OnWorkerEvent("error")
111
+ ], UsageReportProcessor.prototype, "error", null);
112
+ UsageReportProcessor = __decorate([
113
+ Injectable(),
114
+ __param(0, Inject(UsageReporter))
115
+ ], UsageReportProcessor);
116
+ export { UsageReportProcessor };
117
+ /** The consumer of `cap-kernel-titles`: {@link TitleQueue}. */
118
+ let TitleProcessor = class TitleProcessor extends WorkerHost {
119
+ titles;
120
+ constructor(titles) {
121
+ super();
122
+ this.titles = titles;
123
+ }
124
+ process(job) {
125
+ return runJob(TITLE_QUEUE, job, () => this.titles.process(job));
126
+ }
127
+ error(err) {
128
+ this.titles.onError(err);
129
+ }
130
+ };
131
+ __decorate([
132
+ OnWorkerEvent("error")
133
+ ], TitleProcessor.prototype, "error", null);
134
+ TitleProcessor = __decorate([
135
+ Injectable(),
136
+ __param(0, Inject(TitleQueue))
137
+ ], TitleProcessor);
138
+ export { TitleProcessor };
139
+ /**
140
+ * The runtime's queue consumers: the run worker on both run queues, `usage.report` deliveries and
141
+ * conversation titles. Imported only by the worker role (`WorkerModule`), so other roles get no
142
+ * processor and no BullMQ worker. Their worker options come from the startup config (concurrency
143
+ * per queue, the run queues' job lock and stalled detection, which the usage and title workers
144
+ * follow). The workers never start by themselves: the worker role (`WorkerRole`) starts them after
145
+ * the extensions loaded, and pauses them on stop.
146
+ */
147
+ let RuntimeWorkersModule = RuntimeWorkersModule_1 = class RuntimeWorkersModule {
148
+ static forRoot(config) {
149
+ const { workerConcurrency, jobLockMs, stalledIntervalMs } = config.runtime;
150
+ const runs = {
151
+ // the worker name is recorded on the job (BullMQ processedBy): which replica ran it
152
+ name: `${hostname()}-${process.pid}`,
153
+ concurrency: workerConcurrency,
154
+ lockDuration: jobLockMs,
155
+ stalledInterval: stalledIntervalMs,
156
+ maxStalledCount: MAX_STALLED_COUNT,
157
+ };
158
+ return {
159
+ module: RuntimeWorkersModule_1,
160
+ imports: [RuntimeModule, TitlesModule, UsageReportModule],
161
+ providers: [
162
+ configuredProcessor(RunsProcessor, RUN_QUEUE_NAME, runs),
163
+ configuredProcessor(SubagentRunsProcessor, SUBAGENT_RUN_QUEUE_NAME, runs),
164
+ configuredProcessor(UsageReportProcessor, USAGE_REPORT_QUEUE, {
165
+ concurrency: config.hooks.usageReportConcurrency,
166
+ lockDuration: jobLockMs,
167
+ stalledInterval: stalledIntervalMs,
168
+ maxStalledCount: 3,
169
+ }),
170
+ configuredProcessor(TitleProcessor, TITLE_QUEUE, {
171
+ concurrency: 4,
172
+ lockDuration: jobLockMs,
173
+ stalledInterval: stalledIntervalMs,
174
+ maxStalledCount: 1,
175
+ }),
176
+ ],
177
+ exports: [RunsProcessor, SubagentRunsProcessor, UsageReportProcessor, TitleProcessor],
178
+ };
179
+ }
180
+ };
181
+ RuntimeWorkersModule = RuntimeWorkersModule_1 = __decorate([
182
+ Module({})
183
+ // biome-ignore lint/complexity/noStaticOnlyClass: a Nest dynamic module
184
+ ], RuntimeWorkersModule);
185
+ export { RuntimeWorkersModule };