@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
@@ -0,0 +1,60 @@
1
+ import { KernelDb } from "../infra/database/kernel-db.js";
2
+ import { TransactionHost } from "../infra/database/transaction-host.js";
3
+ import { ConversationsService, type RunControl } from "./conversations.service.js";
4
+ import { EventLog } from "./event-log.js";
5
+ import type { ConversationEvent } from "./events.js";
6
+ import { type QueueInput, type QueueItem, type QueuePauseReason } from "./queue.js";
7
+ /**
8
+ * The queue API (owner only, as the conversation): list, add, edit the text, delete, send now and
9
+ * resume. Every change publishes `changed: queue`.
10
+ */
11
+ export declare class ConversationQueue {
12
+ private readonly db;
13
+ private readonly eventLog;
14
+ private readonly conversations;
15
+ /** Starts the conversation's next run (`ensureRun`). */
16
+ private readonly runs;
17
+ readonly txHost: TransactionHost;
18
+ constructor(db: KernelDb, eventLog: Pick<EventLog, "appendIn" | "notify" | "publishChanged" | "findByIdem">, conversations: Pick<ConversationsService, "get" | "writable" | "resolveExtra" | "bindIn" | "checkPick" | "prepareQueuedSkill">,
19
+ /** Starts the conversation's next run (`ensureRun`). */
20
+ runs: Pick<RunControl, "ensureRun">, txHost: TransactionHost);
21
+ list(orgId: string, conversationId: string, accountId: string): Promise<{
22
+ items: QueueItem[];
23
+ paused: boolean;
24
+ pauseReason?: QueuePauseReason;
25
+ }>;
26
+ private listIn;
27
+ /**
28
+ * Queues a message. `@` resources are read now with the caller's credentials and stored with the
29
+ * item, and uploaded files are bound to the conversation now, so sending later needs nobody's
30
+ * credentials. The same `clientMessageId` again returns the queued item (`created: false`), or,
31
+ * when it was already sent, the sent `user_message` with `item: null`. Then `ensureRun`: on an
32
+ * idle conversation the item goes out at once.
33
+ */
34
+ add(orgId: string, conversationId: string, accountId: string, input: QueueInput): Promise<{
35
+ item: QueueItem | null;
36
+ event?: ConversationEvent;
37
+ created: boolean;
38
+ }>;
39
+ private addIn;
40
+ /**
41
+ * Changes a queued item's text (its resources and files stay as queued). A skill invocation's
42
+ * text is its arguments: the skill is rendered again with them now.
43
+ */
44
+ edit(orgId: string, conversationId: string, accountId: string, itemId: string, text: string): Promise<QueueItem>;
45
+ private editIn;
46
+ remove(orgId: string, conversationId: string, accountId: string, itemId: string): Promise<void>;
47
+ private removeIn;
48
+ /**
49
+ * Sends a queued item now: it leaves the queue and is posted as a user message in the same
50
+ * transaction (an interjection when a run is active; the items before it keep their place).
51
+ * Racing the dispatcher, exactly one of them takes the item; the loser sees it gone (404).
52
+ */
53
+ sendNow(orgId: string, conversationId: string, accountId: string, itemId: string): Promise<ConversationEvent>;
54
+ private sendNowIn;
55
+ /** "Continue sending": clears the pause and lets `ensureRun` send the head item. */
56
+ resume(orgId: string, conversationId: string, accountId: string): Promise<void>;
57
+ /** A queued item or a sent message for this client id (outside any transaction). */
58
+ private prior;
59
+ private lockConversation;
60
+ }
@@ -0,0 +1,343 @@
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 { randomUUID } from "node:crypto";
11
+ import { Inject, Injectable } from "@nestjs/common";
12
+ import { sql } from "kysely";
13
+ import { KernelDb } from "../infra/database/kernel-db.js";
14
+ import { TransactionHost } from "../infra/database/transaction-host.js";
15
+ import { Transactional } from "../infra/database/transactional.decorator.js";
16
+ import { RunControl as RunControlService } from "../runtime/run-control.js";
17
+ import { notInvocable } from "../skills/invoke.js";
18
+ import { ConversationsService, } from "./conversations.service.js";
19
+ import { EventLog, payloadJson } from "./event-log.js";
20
+ import { userMessageIdemKey } from "./idem-keys.js";
21
+ import { alreadySent, appendQueuedIn, COLUMNS, checkText, itemNotFound, noNul, QUEUE_MAX_ITEMS, queuedSkillBlocked, queueFull, storedSkill, toItem, unpauseIfEmpty, } from "./queue.js";
22
+ /**
23
+ * The queue API (owner only, as the conversation): list, add, edit the text, delete, send now and
24
+ * resume. Every change publishes `changed: queue`.
25
+ */
26
+ let ConversationQueue = class ConversationQueue {
27
+ db;
28
+ eventLog;
29
+ conversations;
30
+ runs;
31
+ txHost;
32
+ constructor(db, eventLog, conversations,
33
+ /** Starts the conversation's next run (`ensureRun`). */
34
+ runs, txHost) {
35
+ this.db = db;
36
+ this.eventLog = eventLog;
37
+ this.conversations = conversations;
38
+ this.runs = runs;
39
+ this.txHost = txHost;
40
+ }
41
+ async list(orgId, conversationId, accountId) {
42
+ await this.conversations.get(orgId, conversationId, accountId);
43
+ return this.listIn(conversationId);
44
+ }
45
+ async listIn(conversationId) {
46
+ const t = this.db.db;
47
+ const conv = await t
48
+ .selectFrom("conversations")
49
+ .select(["queue_paused", "queue_pause_reason"])
50
+ .where("id", "=", conversationId)
51
+ .executeTakeFirstOrThrow();
52
+ const rows = await t
53
+ .selectFrom("conversation_queue")
54
+ .select(COLUMNS)
55
+ .where("conversation_id", "=", conversationId)
56
+ .orderBy("position")
57
+ .execute();
58
+ const reason = conv.queue_paused ? conv.queue_pause_reason : null;
59
+ return {
60
+ items: rows.map(toItem),
61
+ paused: conv.queue_paused,
62
+ ...(reason !== null && { pauseReason: reason }),
63
+ };
64
+ }
65
+ /**
66
+ * Queues a message. `@` resources are read now with the caller's credentials and stored with the
67
+ * item, and uploaded files are bound to the conversation now, so sending later needs nobody's
68
+ * credentials. The same `clientMessageId` again returns the queued item (`created: false`), or,
69
+ * when it was already sent, the sent `user_message` with `item: null`. Then `ensureRun`: on an
70
+ * idle conversation the item goes out at once.
71
+ */
72
+ async add(orgId, conversationId, accountId, input) {
73
+ const conv = await this.conversations.writable(orgId, conversationId, accountId);
74
+ const files = input.files ?? [];
75
+ checkText(input.text, files.length, input.attachments?.length ?? 0, input.skill !== undefined);
76
+ const prior = await this.prior(conversationId, input.clientMessageId);
77
+ if (prior)
78
+ return prior;
79
+ // a cheap unlocked check first, so a full queue never reads `@` resources (slow, remote,
80
+ // credentialed); the locked check below stays authoritative
81
+ const { n: queued } = await this.db
82
+ .selectFrom("conversation_queue")
83
+ .select((eb) => eb.fn.countAll().as("n"))
84
+ .where("conversation_id", "=", conversationId)
85
+ .executeTakeFirstOrThrow();
86
+ if (Number(queued) >= QUEUE_MAX_ITEMS)
87
+ throw queueFull();
88
+ await this.conversations.checkPick(orgId, conv, accountId, input);
89
+ // a skill invocation is rendered now, like the `@` resources (spec §4.5)
90
+ const invoked = await this.conversations.prepareQueuedSkill(orgId, conv, accountId, input);
91
+ const extra = await this.conversations.resolveExtra(orgId, accountId, input);
92
+ const skill = invoked === undefined || input.skill === undefined
93
+ ? undefined
94
+ : storedSkill(input.skill.name, invoked);
95
+ const out = await this.addIn(orgId, conversationId, accountId, input, files, skill, extra);
96
+ if (out === null) {
97
+ return ((await this.prior(conversationId, input.clientMessageId)) ?? { item: null, created: false });
98
+ }
99
+ if (out.created) {
100
+ await this.eventLog.publishChanged(conversationId, "queue");
101
+ await this.runs.ensureRun(conversationId);
102
+ }
103
+ return { item: toItem(out.row), created: out.created };
104
+ }
105
+ // its own transaction: the caller notifies and publishes after the commit
106
+ async addIn(orgId, conversationId, accountId, input, files, skill, extra) {
107
+ const t = this.db.db;
108
+ await t
109
+ .selectFrom("conversations")
110
+ .select("id")
111
+ .where("id", "=", conversationId)
112
+ .forUpdate()
113
+ .executeTakeFirstOrThrow();
114
+ const existing = await t
115
+ .selectFrom("conversation_queue")
116
+ .select(COLUMNS)
117
+ .where("conversation_id", "=", conversationId)
118
+ .where("client_message_id", "=", input.clientMessageId)
119
+ .executeTakeFirst();
120
+ if (existing)
121
+ return { row: existing, created: false };
122
+ if (await alreadySent(t, conversationId, input.clientMessageId))
123
+ return null;
124
+ const { n, last } = await t
125
+ .selectFrom("conversation_queue")
126
+ .select((eb) => [
127
+ eb.fn.countAll().as("n"),
128
+ eb.fn.max("position").as("last"),
129
+ ])
130
+ .where("conversation_id", "=", conversationId)
131
+ .executeTakeFirstOrThrow();
132
+ if (Number(n) >= QUEUE_MAX_ITEMS)
133
+ throw queueFull();
134
+ const blocks = await this.conversations.bindIn(orgId, conversationId, accountId, files);
135
+ const fileMeta = blocks.flatMap((b) => (b.type === "image" || b.type === "document") && b.source.kind === "ref"
136
+ ? [{ attachmentId: b.source.attachmentId, name: b.name ?? "", mediaType: b.mediaType }]
137
+ : []);
138
+ const row = await t
139
+ .insertInto("conversation_queue")
140
+ .values({
141
+ id: randomUUID(),
142
+ conversation_id: conversationId,
143
+ account_id: accountId,
144
+ position: last === null ? 1 : Number(last) + 1,
145
+ text: noNul(input.text),
146
+ content: payloadJson([
147
+ ...(skill === undefined ? [] : [skill.first]),
148
+ ...extra.blocks,
149
+ ...blocks,
150
+ ]),
151
+ attachments: payloadJson(extra.attachments),
152
+ files: JSON.stringify(fileMeta),
153
+ client_message_id: input.clientMessageId,
154
+ model: input.model === undefined ? null : JSON.stringify(input.model),
155
+ effort: input.effort ?? null,
156
+ skill: skill?.skill ?? null,
157
+ })
158
+ .returning(COLUMNS)
159
+ .executeTakeFirstOrThrow();
160
+ return { row, created: true };
161
+ }
162
+ /**
163
+ * Changes a queued item's text (its resources and files stay as queued). A skill invocation's
164
+ * text is its arguments: the skill is rendered again with them now.
165
+ */
166
+ async edit(orgId, conversationId, accountId, itemId, text) {
167
+ const conv = await this.conversations.writable(orgId, conversationId, accountId);
168
+ const before = await this.db
169
+ .selectFrom("conversation_queue")
170
+ .select("skill")
171
+ .where("id", "=", itemId)
172
+ .where("conversation_id", "=", conversationId)
173
+ .executeTakeFirst();
174
+ if (!before)
175
+ throw itemNotFound();
176
+ const was = before.skill;
177
+ const invoked = was === null
178
+ ? undefined
179
+ : await this.conversations.prepareQueuedSkill(orgId, conv, accountId, {
180
+ skill: { name: was.invokedAs },
181
+ text,
182
+ });
183
+ const row = await this.editIn(conversationId, itemId, text, invoked);
184
+ await this.eventLog.publishChanged(conversationId, "queue");
185
+ return toItem(row);
186
+ }
187
+ // its own transaction: the caller notifies and publishes after the commit
188
+ async editIn(conversationId, itemId, text, invoked) {
189
+ const t = this.db.db;
190
+ const cur = await t
191
+ .selectFrom("conversation_queue")
192
+ .select(["attachments", "files", "content", "skill"])
193
+ .where("id", "=", itemId)
194
+ .where("conversation_id", "=", conversationId)
195
+ .forUpdate()
196
+ .executeTakeFirst();
197
+ if (!cur)
198
+ throw itemNotFound();
199
+ const skill = cur.skill;
200
+ checkText(text, cur.files.length, cur.attachments.length, skill !== null);
201
+ // an invocation's first block is its rendered text: replace it and the record
202
+ const stored = skill === null || invoked === undefined ? undefined : storedSkill(skill.invokedAs, invoked);
203
+ return t
204
+ .updateTable("conversation_queue")
205
+ .set({
206
+ text: noNul(text),
207
+ updated_at: sql `now()`,
208
+ ...(stored !== undefined && {
209
+ skill: stored.skill,
210
+ content: payloadJson([stored.first, ...cur.content.slice(1)]),
211
+ }),
212
+ })
213
+ .where("id", "=", itemId)
214
+ .returning(COLUMNS)
215
+ .executeTakeFirstOrThrow();
216
+ }
217
+ async remove(orgId, conversationId, accountId, itemId) {
218
+ await this.conversations.writable(orgId, conversationId, accountId);
219
+ await this.removeIn(conversationId, itemId);
220
+ await this.eventLog.publishChanged(conversationId, "queue");
221
+ }
222
+ // its own transaction: the caller notifies and publishes after the commit
223
+ async removeIn(conversationId, itemId) {
224
+ const t = this.db.db;
225
+ await this.lockConversation(conversationId);
226
+ const gone = await t
227
+ .deleteFrom("conversation_queue")
228
+ .where("id", "=", itemId)
229
+ .where("conversation_id", "=", conversationId)
230
+ .returning("id")
231
+ .executeTakeFirst();
232
+ if (!gone)
233
+ throw itemNotFound();
234
+ await unpauseIfEmpty(t, conversationId);
235
+ }
236
+ /**
237
+ * Sends a queued item now: it leaves the queue and is posted as a user message in the same
238
+ * transaction (an interjection when a run is active; the items before it keep their place).
239
+ * Racing the dispatcher, exactly one of them takes the item; the loser sees it gone (404).
240
+ */
241
+ async sendNow(orgId, conversationId, accountId, itemId) {
242
+ await this.conversations.writable(orgId, conversationId, accountId);
243
+ const { event, fresh, switched } = await this.sendNowIn(conversationId, itemId);
244
+ if (fresh)
245
+ await this.eventLog.notify(conversationId, event.seq);
246
+ if (switched)
247
+ await this.eventLog.publishChanged(conversationId, "selection");
248
+ await this.eventLog.publishChanged(conversationId, "queue");
249
+ await this.runs.ensureRun(conversationId);
250
+ return event;
251
+ }
252
+ // its own transaction: the caller notifies and publishes after the commit
253
+ async sendNowIn(conversationId, itemId) {
254
+ const t = this.db.db;
255
+ await this.lockConversation(conversationId);
256
+ const head = await t
257
+ .selectFrom("conversation_queue")
258
+ .select(["skill", "client_message_id"])
259
+ .where("id", "=", itemId)
260
+ .where("conversation_id", "=", conversationId)
261
+ .executeTakeFirst();
262
+ if (!head)
263
+ throw itemNotFound();
264
+ // the skill is checked again, as at dispatch; a refused item stays queued
265
+ if (!(await alreadySent(t, conversationId, head.client_message_id))) {
266
+ const blocked = await queuedSkillBlocked(t, conversationId, head);
267
+ if (blocked !== null) {
268
+ throw notInvocable(blocked, head.skill.invokedAs);
269
+ }
270
+ }
271
+ const row = await t
272
+ .deleteFrom("conversation_queue")
273
+ .where("id", "=", itemId)
274
+ .where("conversation_id", "=", conversationId)
275
+ .returning(COLUMNS)
276
+ .executeTakeFirst();
277
+ if (!row)
278
+ throw itemNotFound();
279
+ const sent = await alreadySent(t, conversationId, row.client_message_id);
280
+ const out = await appendQueuedIn(t, this.eventLog, conversationId, row);
281
+ await unpauseIfEmpty(t, conversationId);
282
+ return { ...out, fresh: !sent };
283
+ }
284
+ /** "Continue sending": clears the pause and lets `ensureRun` send the head item. */
285
+ async resume(orgId, conversationId, accountId) {
286
+ await this.conversations.writable(orgId, conversationId, accountId);
287
+ await this.db
288
+ .updateTable("conversations")
289
+ .set({ queue_paused: false, queue_pause_reason: null })
290
+ .where("id", "=", conversationId)
291
+ .execute();
292
+ await this.eventLog.publishChanged(conversationId, "queue");
293
+ await this.runs.ensureRun(conversationId);
294
+ }
295
+ /** A queued item or a sent message for this client id (outside any transaction). */
296
+ async prior(conversationId, clientMessageId) {
297
+ const row = await this.db
298
+ .selectFrom("conversation_queue")
299
+ .select(COLUMNS)
300
+ .where("conversation_id", "=", conversationId)
301
+ .where("client_message_id", "=", clientMessageId)
302
+ .executeTakeFirst();
303
+ if (row)
304
+ return { item: toItem(row), created: false };
305
+ const event = await this.eventLog.findByIdem(conversationId, userMessageIdemKey(clientMessageId));
306
+ return event ? { item: null, event, created: false } : null;
307
+ }
308
+ async lockConversation(conversationId) {
309
+ await this.db
310
+ .selectFrom("conversations")
311
+ .select("id")
312
+ .where("id", "=", conversationId)
313
+ .forUpdate()
314
+ .executeTakeFirstOrThrow();
315
+ }
316
+ };
317
+ __decorate([
318
+ Transactional({ isolationLevel: "repeatable read" })
319
+ ], ConversationQueue.prototype, "listIn", null);
320
+ __decorate([
321
+ Transactional({ propagation: "requires_new" })
322
+ ], ConversationQueue.prototype, "addIn", null);
323
+ __decorate([
324
+ Transactional({ propagation: "requires_new" })
325
+ ], ConversationQueue.prototype, "editIn", null);
326
+ __decorate([
327
+ Transactional({ propagation: "requires_new" })
328
+ ], ConversationQueue.prototype, "removeIn", null);
329
+ __decorate([
330
+ Transactional({ propagation: "requires_new" })
331
+ ], ConversationQueue.prototype, "sendNowIn", null);
332
+ __decorate([
333
+ Transactional({ propagation: "mandatory" })
334
+ ], ConversationQueue.prototype, "lockConversation", null);
335
+ ConversationQueue = __decorate([
336
+ Injectable(),
337
+ __param(0, Inject(KernelDb)),
338
+ __param(1, Inject(EventLog)),
339
+ __param(2, Inject(ConversationsService)),
340
+ __param(3, Inject(RunControlService)),
341
+ __param(4, Inject(TransactionHost))
342
+ ], ConversationQueue);
343
+ export { ConversationQueue };
@@ -1,21 +1,24 @@
1
- import type { SandboxService } from "../sandbox/sandbox.service.js";
1
+ import { SandboxService } from "../sandbox/sandbox.service.js";
2
+ import { ConversationAccess } from "./access.js";
3
+ import { ConversationsService } from "./conversations.service.js";
2
4
  export interface SandboxStatusView {
3
5
  status: "running" | "suspended";
4
6
  lastUsedAt: string;
5
7
  }
6
- export interface ConversationSandboxStatusDeps {
7
- sandbox: Pick<SandboxService, "status">;
8
- /** 会话可见性(与会话 SSE 流同一判定:`ConversationsService.isAccessible`)。 */
9
- isAccessible(orgId: string, conversationId: string, viewerAccountId: string): Promise<boolean>;
10
- /** The conversation whose sandbox it works in: a sub-agent's parent, else itself. */
11
- sandboxConversationOf(orgId: string, conversationId: string): Promise<string>;
12
- }
13
8
  /**
14
9
  * 对话沙箱的状态(网页上下文标签,M5 T11):会话不可见 → `conversation.not_found`;
15
10
  * 没有可用的沙箱(未创建、已销毁、正在创建)→ `sandbox.not_found`(界面显示「未创建」)。
16
11
  */
17
12
  export declare class ConversationSandboxStatus {
18
- private readonly d;
19
- constructor(d: ConversationSandboxStatusDeps);
13
+ /** 会话可见性(与会话 SSE 流同一判定)。 */
14
+ private readonly access;
15
+ /** The conversation whose sandbox it works in: a sub-agent's parent, else itself. */
16
+ private readonly conversations;
17
+ private readonly sandbox;
18
+ constructor(
19
+ /** 会话可见性(与会话 SSE 流同一判定)。 */
20
+ access: Pick<ConversationAccess, "isAccessible">,
21
+ /** The conversation whose sandbox it works in: a sub-agent's parent, else itself. */
22
+ conversations: Pick<ConversationsService, "sandboxConversationOf">, sandbox: Pick<SandboxService, "status">);
20
23
  get(orgId: string, conversationId: string, viewerAccountId: string): Promise<SandboxStatusView>;
21
24
  }
@@ -1,24 +1,52 @@
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 { ApiError } from "../errors.js";
12
+ import { SandboxService } from "../sandbox/sandbox.service.js";
2
13
  import { UUID_RE } from "../ui/registry.js";
14
+ import { ConversationAccess } from "./access.js";
15
+ import { ConversationsService } from "./conversations.service.js";
3
16
  /**
4
17
  * 对话沙箱的状态(网页上下文标签,M5 T11):会话不可见 → `conversation.not_found`;
5
18
  * 没有可用的沙箱(未创建、已销毁、正在创建)→ `sandbox.not_found`(界面显示「未创建」)。
6
19
  */
7
- export class ConversationSandboxStatus {
8
- d;
9
- constructor(d) {
10
- this.d = d;
20
+ let ConversationSandboxStatus = class ConversationSandboxStatus {
21
+ access;
22
+ conversations;
23
+ sandbox;
24
+ constructor(
25
+ /** 会话可见性(与会话 SSE 流同一判定)。 */
26
+ access,
27
+ /** The conversation whose sandbox it works in: a sub-agent's parent, else itself. */
28
+ conversations, sandbox) {
29
+ this.access = access;
30
+ this.conversations = conversations;
31
+ this.sandbox = sandbox;
11
32
  }
12
33
  async get(orgId, conversationId, viewerAccountId) {
13
34
  if (!UUID_RE.test(conversationId) ||
14
- !(await this.d.isAccessible(orgId, conversationId, viewerAccountId))) {
35
+ !(await this.access.isAccessible(orgId, conversationId, viewerAccountId))) {
15
36
  throw new ApiError("conversation.not_found", "Conversation not found");
16
37
  }
17
38
  // a sub-agent works in its parent conversation's sandbox (sub-agents spec §10.1)
18
- const sandboxConv = await this.d.sandboxConversationOf(orgId, conversationId);
19
- const s = await this.d.sandbox.status(orgId, sandboxConv);
39
+ const sandboxConv = await this.conversations.sandboxConversationOf(orgId, conversationId);
40
+ const s = await this.sandbox.status(orgId, sandboxConv);
20
41
  if (!s)
21
42
  throw new ApiError("sandbox.not_found", "This conversation has no sandbox");
22
43
  return { status: s.status, lastUsedAt: s.lastUsedAt.toISOString() };
23
44
  }
24
- }
45
+ };
46
+ ConversationSandboxStatus = __decorate([
47
+ Injectable(),
48
+ __param(0, Inject(ConversationAccess)),
49
+ __param(1, Inject(ConversationsService)),
50
+ __param(2, Inject(SandboxService))
51
+ ], ConversationSandboxStatus);
52
+ export { ConversationSandboxStatus };
@@ -1,10 +1,13 @@
1
- import { type Logger } from "@capybara-hq/plugin-sdk";
2
- import type { KernelConfig } from "../config/schema.js";
3
- import type { KernelDb } from "../db/kernel-schema.js";
4
- import { type ModelPurposesService } from "../models/purposes.js";
5
- import { type HookRunner } from "../runtime/hook-calls.js";
6
- import type { UsageReporter } from "../runtime/usage-report.js";
7
- import type { EventLog } from "./event-log.js";
1
+ import { type Logger, type ModelUsage } from "@capybara-hq/plugin-sdk";
2
+ import type { Job, Queue, Worker } from "bullmq";
3
+ import type { KernelSchemaDb } from "../db/kernel-schema.js";
4
+ import { KernelDb } from "../infra/database/kernel-db.js";
5
+ import { TransactionHost } from "../infra/database/transaction-host.js";
6
+ import { ModelPurposesService } from "../models/purposes.js";
7
+ import { type AuditEntry, type HookRunner } from "../runtime/hook-calls.js";
8
+ import { UsageReporter } from "../runtime/usage-report.js";
9
+ import { EventLog } from "./event-log.js";
10
+ import { type ConversationEvent } from "./events.js";
8
11
  /**
9
12
  * Model-generated conversation titles (UI refresh B, spec §5.1 "Titles").
10
13
  *
@@ -43,8 +46,8 @@ export declare function titleExcerpt(firstUser: string, firstReply: string): str
43
46
  */
44
47
  export declare function cleanTitle(reply: string): string | null;
45
48
  export interface TitleDeps {
46
- db: KernelDb;
47
- eventLog: Pick<EventLog, "append" | "readAfter" | "latestOfType" | "notify" | "publishChanged">;
49
+ db: KernelSchemaDb;
50
+ eventLog: Pick<EventLog, "append" | "appendIn" | "readAfter" | "latestOfType" | "notify" | "publishChanged">;
48
51
  purposes: Pick<ModelPurposesService, "chat">;
49
52
  log: Pick<Logger, "warn">;
50
53
  /**
@@ -55,9 +58,11 @@ export interface TitleDeps {
55
58
  usageReport?: Pick<UsageReporter, "enqueue">;
56
59
  /** Aborts the call (worker shutdown). */
57
60
  signal?: AbortSignal;
61
+ /** The job's transactional writes ({@link TitleGenerator}). */
62
+ writes: Pick<TitleGenerator, "writeResult" | "auditDenied">;
58
63
  }
59
64
  /** The attempt number to enqueue for this conversation, or null when no title job is due. */
60
- export declare function titleAttemptDue(db: KernelDb, conversationId: string): Promise<number | null>;
65
+ export declare function titleAttemptDue(db: KernelSchemaDb, conversationId: string): Promise<number | null>;
61
66
  /**
62
67
  * One title attempt. Claims the attempt (`title_attempts = attempt` → `attempt + 1`; a second
63
68
  * execution of the same attempt finds nothing to claim and returns), calls the model, writes the
@@ -65,29 +70,71 @@ export declare function titleAttemptDue(db: KernelDb, conversationId: string): P
65
70
  * no run, idempotent per attempt) in the same transaction. Errors are logged, not thrown.
66
71
  */
67
72
  export declare function runTitleJob(d: TitleDeps, conversationId: string, attempt: number): Promise<void>;
68
- export interface TitleQueueDeps extends Omit<TitleDeps, "signal"> {
69
- redisUrl: string;
70
- config: () => KernelConfig;
71
- log: Logger;
73
+ interface TitleJob {
74
+ conversationId: string;
75
+ attempt: number;
76
+ }
77
+ /**
78
+ * One title attempt's work ({@link runTitleJob}) over the injected services, with its writes in
79
+ * transactions of their own: the title with the call's usage event, and a policy denial's audit row.
80
+ */
81
+ export declare class TitleGenerator {
82
+ private readonly kdb;
83
+ private readonly eventLog;
84
+ private readonly purposes;
85
+ /** The title call fires the plugin hooks (`model.request`, `model.response`). */
86
+ private readonly host;
87
+ private readonly usageReport;
88
+ private readonly log;
89
+ readonly txHost: TransactionHost;
90
+ constructor(kdb: KernelDb, eventLog: TitleDeps["eventLog"], purposes: Pick<ModelPurposesService, "chat">,
91
+ /** The title call fires the plugin hooks (`model.request`, `model.response`). */
92
+ host: {
93
+ readonly hooks?: HookRunner;
94
+ } | undefined, usageReport: Pick<UsageReporter, "enqueue"> | undefined, log: Pick<Logger, "warn">, txHost: TransactionHost);
95
+ /** One attempt ({@link runTitleJob}); `signal` aborts the call (the worker stopping). */
96
+ run(conversationId: string, attempt: number, signal?: AbortSignal): Promise<void>;
97
+ /**
98
+ * Appends the call's `usage` event and writes the title while `title_source IS NULL` (a rename
99
+ * wins), in one transaction.
100
+ */
101
+ writeResult(conversationId: string, attempt: number, out: {
102
+ provider: string;
103
+ model: string;
104
+ usage: ModelUsage;
105
+ }, title: string | null): Promise<{
106
+ written: boolean;
107
+ usage: ConversationEvent | undefined;
108
+ }>;
109
+ /** The `hook.denied` audit row of a denied title call. */
110
+ auditDenied(entry: AuditEntry): Promise<void>;
72
111
  }
73
112
  /**
74
113
  * The title queue: `maybeEnqueue` on any role (called by the run worker after a completed run),
75
- * the worker on the `worker` role. One attempt per job, no BullMQ retries: the next completed run
76
- * enqueues the next attempt.
114
+ * consumed on the `worker` role by its `@Processor`. One attempt per job, no BullMQ retries: the
115
+ * next completed run enqueues the next attempt.
77
116
  */
78
117
  export declare class TitleQueue {
79
- private readonly d;
80
- private queue;
81
- private queueConn;
118
+ private readonly kdb;
119
+ private readonly queue;
120
+ private readonly generator;
121
+ private readonly log;
82
122
  private worker;
83
- private workerConn;
84
123
  private closed;
85
124
  private readonly stopping;
86
- constructor(d: TitleQueueDeps);
125
+ constructor(kdb: KernelDb, queue: Queue<TitleJob>, generator: Pick<TitleGenerator, "run">, log: Pick<Logger, "warn" | "error">);
87
126
  /** Enqueues the next title attempt when one is due. Never throws (logs instead). */
88
127
  maybeEnqueue(conversationId: string): Promise<void>;
89
- startWorker(): void;
90
- private process;
128
+ /** Starts consuming (worker role only): `worker` is the `@Processor` worker of {@link TITLE_QUEUE}. */
129
+ startWorker(worker: Worker<TitleJob>): void;
130
+ /** The worker's `error` event. */
131
+ onError(err: Error): void;
132
+ /** One title job (the `@Processor` calls it). */
133
+ process(j: Job<TitleJob>): Promise<void>;
134
+ /** Stops: no more enqueues, the call in flight is aborted, the worker closes. */
91
135
  stop(): Promise<void>;
92
- private getQueue;
93
136
  }
137
+ /** Conversation titles: the queue and the job (consumed on the worker role). */
138
+ export declare class TitlesModule {
139
+ }
140
+ export {};