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

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 (626) hide show
  1. package/bootstrap.json +10 -6
  2. package/dist/admin/admin.controller.d.ts +17 -17
  3. package/dist/admin/admin.controller.js +43 -26
  4. package/dist/admin/admin.module.d.ts +3 -0
  5. package/dist/admin/admin.module.js +22 -0
  6. package/dist/admin/extensions.controller.d.ts +14 -14
  7. package/dist/admin/extensions.controller.js +30 -17
  8. package/dist/admin/setup-lock.d.ts +16 -0
  9. package/dist/admin/setup-lock.js +47 -0
  10. package/dist/admin/setup.controller.d.ts +8 -8
  11. package/dist/admin/setup.controller.js +27 -25
  12. package/dist/admin/setup.service.d.ts +19 -27
  13. package/dist/admin/setup.service.js +61 -61
  14. package/dist/agents/agent-lookup.d.ts +53 -0
  15. package/dist/agents/agent-lookup.js +179 -0
  16. package/dist/agents/agents.controller.d.ts +1 -1
  17. package/dist/agents/agents.controller.js +14 -8
  18. package/dist/agents/agents.module.d.ts +7 -0
  19. package/dist/agents/agents.module.js +41 -0
  20. package/dist/agents/agents.service.d.ts +39 -58
  21. package/dist/agents/agents.service.js +261 -329
  22. package/dist/agents/definition.d.ts +8 -0
  23. package/dist/agents/definition.js +8 -0
  24. package/dist/agents/models.controller.d.ts +1 -1
  25. package/dist/agents/models.controller.js +2 -2
  26. package/dist/agents/templates.controller.d.ts +1 -1
  27. package/dist/agents/templates.controller.js +2 -2
  28. package/dist/agents/templates.d.ts +6 -8
  29. package/dist/agents/templates.js +20 -4
  30. package/dist/app.d.ts +93 -0
  31. package/dist/app.js +150 -0
  32. package/dist/catalog/admin-catalog.controller.d.ts +3 -3
  33. package/dist/catalog/admin-catalog.controller.js +27 -13
  34. package/dist/catalog/catalog-content.d.ts +185 -0
  35. package/dist/catalog/catalog-content.js +323 -0
  36. package/dist/catalog/catalog-items.d.ts +186 -0
  37. package/dist/catalog/catalog-items.js +410 -0
  38. package/dist/catalog/catalog.module.d.ts +14 -0
  39. package/dist/catalog/catalog.module.js +71 -0
  40. package/dist/catalog/catalog.service.d.ts +34 -188
  41. package/dist/catalog/catalog.service.js +155 -489
  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 +30 -13
  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 +2 -2
  70. package/dist/channels/channels.module.d.ts +40 -0
  71. package/dist/channels/channels.module.js +128 -0
  72. package/dist/channels/connections.controller.d.ts +1 -1
  73. package/dist/channels/connections.controller.js +11 -6
  74. package/dist/channels/connections.service.d.ts +43 -21
  75. package/dist/channels/connections.service.js +236 -131
  76. package/dist/channels/inbound.d.ts +34 -38
  77. package/dist/channels/inbound.js +107 -41
  78. package/dist/channels/job-ids.d.ts +10 -0
  79. package/dist/channels/job-ids.js +10 -0
  80. package/dist/channels/jobs.d.ts +85 -0
  81. package/dist/channels/jobs.js +157 -0
  82. package/dist/channels/outbound.d.ts +60 -82
  83. package/dist/channels/outbound.js +165 -193
  84. package/dist/channels/supervisor.d.ts +88 -46
  85. package/dist/channels/supervisor.js +230 -132
  86. package/dist/channels/threads.d.ts +29 -8
  87. package/dist/channels/threads.js +71 -13
  88. package/dist/channels/webhook.d.ts +20 -14
  89. package/dist/channels/webhook.js +51 -20
  90. package/dist/config/load.d.ts +3 -2
  91. package/dist/config/load.js +3 -2
  92. package/dist/config/nacos-source.js +11 -2
  93. package/dist/config/schema.d.ts +16 -1
  94. package/dist/config/schema.js +54 -7
  95. package/dist/conversations/access.d.ts +29 -0
  96. package/dist/conversations/access.js +86 -0
  97. package/dist/conversations/artifacts.d.ts +10 -10
  98. package/dist/conversations/artifacts.js +35 -9
  99. package/dist/conversations/attachments.controller.d.ts +1 -1
  100. package/dist/conversations/attachments.controller.js +8 -6
  101. package/dist/conversations/attachments.module.d.ts +7 -0
  102. package/dist/conversations/attachments.module.js +25 -0
  103. package/dist/conversations/attachments.service.d.ts +30 -22
  104. package/dist/conversations/attachments.service.js +119 -46
  105. package/dist/conversations/conversations.controller.d.ts +8 -7
  106. package/dist/conversations/conversations.controller.js +59 -29
  107. package/dist/conversations/conversations.module.d.ts +8 -0
  108. package/dist/conversations/conversations.module.js +69 -0
  109. package/dist/conversations/conversations.service.d.ts +40 -38
  110. package/dist/conversations/conversations.service.js +130 -140
  111. package/dist/conversations/event-log.d.ts +28 -18
  112. package/dist/conversations/event-log.js +74 -27
  113. package/dist/conversations/files.d.ts +10 -10
  114. package/dist/conversations/files.js +37 -11
  115. package/dist/conversations/idem-keys.d.ts +5 -0
  116. package/dist/conversations/idem-keys.js +5 -0
  117. package/dist/conversations/job-ids.d.ts +6 -0
  118. package/dist/conversations/job-ids.js +6 -0
  119. package/dist/conversations/outputs-read.d.ts +11 -11
  120. package/dist/conversations/outputs-read.js +31 -7
  121. package/dist/conversations/queue.d.ts +48 -56
  122. package/dist/conversations/queue.js +13 -289
  123. package/dist/conversations/queue.service.d.ts +60 -0
  124. package/dist/conversations/queue.service.js +343 -0
  125. package/dist/conversations/sandbox-status.d.ts +13 -10
  126. package/dist/conversations/sandbox-status.js +36 -8
  127. package/dist/conversations/titles.d.ts +71 -24
  128. package/dist/conversations/titles.js +159 -62
  129. package/dist/ctx/bus.js +9 -3
  130. package/dist/ctx/create-ctx.d.ts +6 -0
  131. package/dist/ctx/create-ctx.js +7 -9
  132. package/dist/ctx/lock.d.ts +7 -3
  133. package/dist/ctx/lock.js +9 -20
  134. package/dist/ctx/queue.js +3 -2
  135. package/dist/ctx/secrets.d.ts +10 -2
  136. package/dist/ctx/secrets.js +7 -3
  137. package/dist/db/kernel-schema.d.ts +2 -2
  138. package/dist/db/pool.d.ts +5 -0
  139. package/dist/db/pool.js +1 -0
  140. package/dist/errors.d.ts +2 -0
  141. package/dist/errors.js +2 -0
  142. package/dist/evals/budget.d.ts +42 -21
  143. package/dist/evals/budget.js +114 -62
  144. package/dist/evals/evals.module.d.ts +31 -0
  145. package/dist/evals/evals.module.js +114 -0
  146. package/dist/evals/jobs.d.ts +20 -0
  147. package/dist/evals/jobs.js +45 -0
  148. package/dist/evals/run-replay.d.ts +56 -8
  149. package/dist/evals/run-replay.js +140 -80
  150. package/dist/evals/runs.controller.d.ts +1 -1
  151. package/dist/evals/runs.controller.js +17 -8
  152. package/dist/evals/runs.service.d.ts +23 -45
  153. package/dist/evals/runs.service.js +245 -234
  154. package/dist/evals/sets.controller.d.ts +1 -1
  155. package/dist/evals/sets.controller.js +17 -8
  156. package/dist/evals/sets.service.d.ts +22 -6
  157. package/dist/evals/sets.service.js +248 -194
  158. package/dist/evals/snapshot.d.ts +2 -2
  159. package/dist/evals/step-replay.d.ts +2 -2
  160. package/dist/evals/step-replay.js +1 -1
  161. package/dist/evals/trajectory.controller.d.ts +1 -1
  162. package/dist/evals/trajectory.controller.js +11 -7
  163. package/dist/evals/trajectory.service.d.ts +5 -4
  164. package/dist/evals/trajectory.service.js +30 -7
  165. package/dist/evals/worker.d.ts +44 -27
  166. package/dist/evals/worker.js +220 -120
  167. package/dist/extensions/admin-ops.d.ts +61 -33
  168. package/dist/extensions/admin-ops.js +248 -154
  169. package/dist/extensions/admin-view.d.ts +38 -27
  170. package/dist/extensions/admin-view.js +126 -55
  171. package/dist/extensions/approvals.d.ts +12 -8
  172. package/dist/extensions/approvals.js +73 -46
  173. package/dist/extensions/blobs.d.ts +27 -10
  174. package/dist/extensions/blobs.js +111 -45
  175. package/dist/extensions/bootstrap.d.ts +96 -42
  176. package/dist/extensions/bootstrap.js +303 -155
  177. package/dist/extensions/cli.d.ts +20 -10
  178. package/dist/extensions/cli.js +41 -96
  179. package/dist/extensions/config-issues.d.ts +7 -0
  180. package/dist/extensions/config-issues.js +31 -0
  181. package/dist/extensions/deployment-config-store.d.ts +49 -0
  182. package/dist/extensions/deployment-config-store.js +133 -0
  183. package/dist/extensions/deployment-config.d.ts +58 -67
  184. package/dist/extensions/deployment-config.js +202 -230
  185. package/dist/extensions/enabled.d.ts +5 -5
  186. package/dist/extensions/extensions.module.d.ts +8 -0
  187. package/dist/extensions/extensions.module.js +77 -0
  188. package/dist/extensions/hooks.d.ts +3 -2
  189. package/dist/extensions/hooks.js +1 -1
  190. package/dist/extensions/host.d.ts +72 -68
  191. package/dist/extensions/host.js +191 -152
  192. package/dist/extensions/installs.d.ts +49 -16
  193. package/dist/extensions/installs.js +128 -32
  194. package/dist/extensions/job-ids.d.ts +6 -0
  195. package/dist/extensions/job-ids.js +6 -0
  196. package/dist/extensions/lifecycle-topics.d.ts +18 -0
  197. package/dist/extensions/lifecycle-topics.js +18 -0
  198. package/dist/extensions/lifecycle.d.ts +35 -47
  199. package/dist/extensions/lifecycle.js +103 -39
  200. package/dist/extensions/locks.d.ts +33 -0
  201. package/dist/extensions/locks.js +86 -0
  202. package/dist/extensions/migrate-lock.d.ts +3 -4
  203. package/dist/extensions/org-config.controller.d.ts +1 -1
  204. package/dist/extensions/org-config.controller.js +8 -5
  205. package/dist/extensions/org-config.d.ts +48 -46
  206. package/dist/extensions/org-config.js +284 -226
  207. package/dist/extensions/registry.d.ts +50 -2
  208. package/dist/extensions/registry.js +89 -4
  209. package/dist/extensions/sources.d.ts +12 -8
  210. package/dist/extensions/sources.js +34 -13
  211. package/dist/files/files.module.d.ts +3 -0
  212. package/dist/files/files.module.js +22 -0
  213. package/dist/files/previewers.controller.d.ts +7 -2
  214. package/dist/files/previewers.controller.js +17 -9
  215. package/dist/files/previewers.d.ts +13 -18
  216. package/dist/files/previewers.js +83 -36
  217. package/dist/http/adapter.d.ts +3 -0
  218. package/dist/http/adapter.js +25 -0
  219. package/dist/http/api.module.d.ts +3 -110
  220. package/dist/http/api.module.js +47 -355
  221. package/dist/http/app.d.ts +11 -15
  222. package/dist/http/app.js +52 -47
  223. package/dist/http/error-filter.module.d.ts +5 -0
  224. package/dist/http/error-filter.module.js +18 -0
  225. package/dist/http/error.filter.js +2 -2
  226. package/dist/identity/accounts.d.ts +82 -29
  227. package/dist/identity/accounts.js +294 -175
  228. package/dist/identity/api-tokens.d.ts +11 -7
  229. package/dist/identity/api-tokens.js +71 -44
  230. package/dist/identity/audit.d.ts +7 -4
  231. package/dist/identity/audit.js +5 -1
  232. package/dist/identity/auth.controller.d.ts +11 -10
  233. package/dist/identity/auth.controller.js +31 -25
  234. package/dist/identity/auth.guard.d.ts +3 -3
  235. package/dist/identity/auth.guard.js +6 -4
  236. package/dist/identity/binding.d.ts +9 -11
  237. package/dist/identity/binding.js +41 -13
  238. package/dist/identity/enterprise-admin.d.ts +18 -12
  239. package/dist/identity/enterprise-admin.js +67 -13
  240. package/dist/identity/external-identity-lock.d.ts +17 -0
  241. package/dist/identity/external-identity-lock.js +39 -0
  242. package/dist/identity/external.d.ts +19 -15
  243. package/dist/identity/external.js +163 -125
  244. package/dist/identity/identity.module.d.ts +6 -0
  245. package/dist/identity/identity.module.js +56 -0
  246. package/dist/identity/me.controller.d.ts +16 -15
  247. package/dist/identity/me.controller.js +37 -31
  248. package/dist/identity/sessions.d.ts +12 -10
  249. package/dist/identity/sessions.js +74 -42
  250. package/dist/identity/settings.d.ts +20 -14
  251. package/dist/identity/settings.js +85 -57
  252. package/dist/identity/sso.controller.d.ts +7 -7
  253. package/dist/identity/sso.controller.js +13 -9
  254. package/dist/identity/sso.d.ts +9 -12
  255. package/dist/identity/sso.js +54 -24
  256. package/dist/inbox/inbox.module.d.ts +3 -0
  257. package/dist/inbox/inbox.module.js +22 -0
  258. package/dist/inbox/inbox.service.d.ts +7 -9
  259. package/dist/inbox/inbox.service.js +32 -11
  260. package/dist/index.d.ts +19 -12
  261. package/dist/index.js +13 -8
  262. package/dist/infra/cache/cache.module.d.ts +3 -0
  263. package/dist/infra/cache/cache.module.js +16 -0
  264. package/dist/infra/cache/cache.service.d.ts +21 -0
  265. package/dist/infra/cache/cache.service.js +80 -0
  266. package/dist/infra/cache/cacheable.decorator.d.ts +32 -0
  267. package/dist/infra/cache/cacheable.decorator.js +83 -0
  268. package/dist/infra/cli/kernel-cli.module.d.ts +66 -0
  269. package/dist/infra/cli/kernel-cli.module.js +165 -0
  270. package/dist/infra/close-within.d.ts +15 -0
  271. package/dist/infra/close-within.js +36 -0
  272. package/dist/infra/config/config.module.d.ts +13 -0
  273. package/dist/infra/config/config.module.js +39 -0
  274. package/dist/infra/config/kernel-config.service.d.ts +25 -0
  275. package/dist/infra/config/kernel-config.service.js +126 -0
  276. package/dist/infra/database/after-commit.d.ts +6 -0
  277. package/dist/infra/database/after-commit.js +9 -0
  278. package/dist/infra/database/database.module.d.ts +25 -0
  279. package/dist/infra/database/database.module.js +90 -0
  280. package/dist/infra/database/kernel-db.d.ts +22 -0
  281. package/dist/infra/database/kernel-db.js +65 -0
  282. package/dist/infra/database/transaction-host.d.ts +50 -0
  283. package/dist/infra/database/transaction-host.js +125 -0
  284. package/dist/infra/database/transactional.decorator.d.ts +15 -0
  285. package/dist/infra/database/transactional.decorator.js +27 -0
  286. package/dist/infra/database/xact-lock.d.ts +17 -0
  287. package/dist/infra/database/xact-lock.js +43 -0
  288. package/dist/infra/events/kernel-events.d.ts +96 -0
  289. package/dist/infra/events/kernel-events.js +65 -0
  290. package/dist/infra/health/health.controller.d.ts +26 -0
  291. package/dist/infra/health/health.controller.js +104 -0
  292. package/dist/infra/health/health.module.d.ts +9 -0
  293. package/dist/infra/health/health.module.js +24 -0
  294. package/dist/infra/health/health.options.d.ts +10 -0
  295. package/dist/infra/health/health.options.js +15 -0
  296. package/dist/infra/health/shutdown-state.d.ts +6 -0
  297. package/dist/infra/health/shutdown-state.js +2 -0
  298. package/dist/infra/lifecycle/graceful-shutdown.module.d.ts +6 -0
  299. package/dist/infra/lifecycle/graceful-shutdown.module.js +23 -0
  300. package/dist/infra/lifecycle/graceful-shutdown.service.d.ts +70 -0
  301. package/dist/infra/lifecycle/graceful-shutdown.service.js +135 -0
  302. package/dist/infra/lifecycle/process-guards.d.ts +52 -0
  303. package/dist/infra/lifecycle/process-guards.js +86 -0
  304. package/dist/infra/lifecycle/shutdown-signals.d.ts +30 -0
  305. package/dist/infra/lifecycle/shutdown-signals.js +48 -0
  306. package/dist/infra/lock/key-template.d.ts +13 -0
  307. package/dist/infra/lock/key-template.js +46 -0
  308. package/dist/infra/lock/lock.module.d.ts +3 -0
  309. package/dist/infra/lock/lock.module.js +16 -0
  310. package/dist/infra/lock/lock.service.d.ts +120 -0
  311. package/dist/infra/lock/lock.service.js +343 -0
  312. package/dist/infra/lock/shared-lease.d.ts +44 -0
  313. package/dist/infra/lock/shared-lease.js +121 -0
  314. package/dist/infra/lock/with-lock.decorator.d.ts +28 -0
  315. package/dist/infra/lock/with-lock.decorator.js +49 -0
  316. package/dist/infra/logging/logging.module.d.ts +16 -0
  317. package/dist/infra/logging/logging.module.js +34 -0
  318. package/dist/infra/queue/configured-processor.d.ts +18 -0
  319. package/dist/infra/queue/configured-processor.js +23 -0
  320. package/dist/infra/queue/job-failure.d.ts +18 -0
  321. package/dist/infra/queue/job-failure.js +26 -0
  322. package/dist/infra/queue/queue-shutdown.d.ts +27 -0
  323. package/dist/infra/queue/queue-shutdown.js +81 -0
  324. package/dist/infra/queue/queue.module.d.ts +16 -0
  325. package/dist/infra/queue/queue.module.js +61 -0
  326. package/dist/infra/queue/redis-connection.d.ts +7 -0
  327. package/dist/infra/queue/redis-connection.js +18 -0
  328. package/dist/infra/queue/retired-schedulers.d.ts +7 -0
  329. package/dist/infra/queue/retired-schedulers.js +9 -0
  330. package/dist/infra/queue/run-job.d.ts +16 -0
  331. package/dist/infra/queue/run-job.js +19 -0
  332. package/dist/infra/redis/redis.module.d.ts +24 -0
  333. package/dist/infra/redis/redis.module.js +87 -0
  334. package/dist/infra/schedule/cron-tick.d.ts +12 -0
  335. package/dist/infra/schedule/cron-tick.js +25 -0
  336. package/dist/infra/schedule/locked-cron.decorator.d.ts +27 -0
  337. package/dist/infra/schedule/locked-cron.decorator.js +53 -0
  338. package/dist/infra/schedule/locked-interval.d.ts +69 -0
  339. package/dist/infra/schedule/locked-interval.js +190 -0
  340. package/dist/infra/schedule/locked-tick.d.ts +90 -0
  341. package/dist/infra/schedule/locked-tick.js +137 -0
  342. package/dist/infra/schedule/schedule.module.d.ts +8 -0
  343. package/dist/infra/schedule/schedule.module.js +27 -0
  344. package/dist/infra/schedule/scheduled-runs.d.ts +69 -0
  345. package/dist/infra/schedule/scheduled-runs.js +163 -0
  346. package/dist/infra/swagger/swagger.d.ts +16 -0
  347. package/dist/infra/swagger/swagger.js +31 -0
  348. package/dist/infra/throttler/credential-throttler.d.ts +35 -0
  349. package/dist/infra/throttler/credential-throttler.js +77 -0
  350. package/dist/infra/throttler/named-throttlers.d.ts +31 -0
  351. package/dist/infra/throttler/named-throttlers.js +119 -0
  352. package/dist/infra/throttler/redis-throttler-storage.d.ts +38 -0
  353. package/dist/infra/throttler/redis-throttler-storage.js +130 -0
  354. package/dist/infra/throttler/throttler.guard.d.ts +23 -0
  355. package/dist/infra/throttler/throttler.guard.js +68 -0
  356. package/dist/infra/throttler/throttler.module.d.ts +15 -0
  357. package/dist/infra/throttler/throttler.module.js +53 -0
  358. package/dist/infra/tokens.d.ts +15 -0
  359. package/dist/infra/tokens.js +15 -0
  360. package/dist/infra/validation/create-zod-dto.d.ts +23 -0
  361. package/dist/infra/validation/create-zod-dto.js +35 -0
  362. package/dist/infra/validation/parse-with-zod.d.ts +7 -0
  363. package/dist/infra/validation/parse-with-zod.js +12 -0
  364. package/dist/infra/validation/validation.module.d.ts +3 -0
  365. package/dist/infra/validation/validation.module.js +16 -0
  366. package/dist/infra/validation/zod-params.d.ts +7 -0
  367. package/dist/infra/validation/zod-params.js +42 -0
  368. package/dist/infra/validation/zod-validation.pipe.d.ts +11 -0
  369. package/dist/infra/validation/zod-validation.pipe.js +31 -0
  370. package/dist/kernel.d.ts +9 -241
  371. package/dist/kernel.js +8 -1305
  372. package/dist/kernel.module.d.ts +17 -0
  373. package/dist/kernel.module.js +136 -0
  374. package/dist/lifecycle/kernel-lifecycle.d.ts +140 -0
  375. package/dist/lifecycle/kernel-lifecycle.js +451 -0
  376. package/dist/lifecycle/tokens.d.ts +3 -0
  377. package/dist/lifecycle/tokens.js +3 -0
  378. package/dist/log-config.d.ts +9 -0
  379. package/dist/log-config.js +27 -0
  380. package/dist/log-context.d.ts +34 -0
  381. package/dist/log-context.js +44 -0
  382. package/dist/log-loki.d.ts +34 -0
  383. package/dist/log-loki.js +145 -0
  384. package/dist/log.d.ts +41 -10
  385. package/dist/log.js +91 -17
  386. package/dist/models/models.module.d.ts +3 -0
  387. package/dist/models/models.module.js +24 -0
  388. package/dist/models/prices.d.ts +8 -2
  389. package/dist/models/prices.js +65 -37
  390. package/dist/models/purposes.controller.d.ts +1 -1
  391. package/dist/models/purposes.controller.js +5 -6
  392. package/dist/models/purposes.d.ts +35 -13
  393. package/dist/models/purposes.js +101 -51
  394. package/dist/net/public-address.js +3 -2
  395. package/dist/orgs/directory-sync.controller.d.ts +1 -1
  396. package/dist/orgs/directory-sync.controller.js +2 -2
  397. package/dist/orgs/directory-sync.d.ts +61 -31
  398. package/dist/orgs/directory-sync.js +212 -125
  399. package/dist/orgs/invitations.controller.d.ts +8 -8
  400. package/dist/orgs/invitations.controller.js +27 -26
  401. package/dist/orgs/invitations.service.d.ts +12 -9
  402. package/dist/orgs/invitations.service.js +130 -92
  403. package/dist/orgs/job-ids.d.ts +8 -0
  404. package/dist/orgs/job-ids.js +8 -0
  405. package/dist/orgs/members.service.d.ts +19 -12
  406. package/dist/orgs/members.service.js +161 -117
  407. package/dist/orgs/offboarding.d.ts +54 -57
  408. package/dist/orgs/offboarding.js +161 -71
  409. package/dist/orgs/org-lock.d.ts +28 -19
  410. package/dist/orgs/org-lock.js +81 -35
  411. package/dist/orgs/org.guard.d.ts +1 -1
  412. package/dist/orgs/org.guard.js +2 -2
  413. package/dist/orgs/orgs.controller.d.ts +13 -13
  414. package/dist/orgs/orgs.controller.js +29 -17
  415. package/dist/orgs/orgs.module.d.ts +6 -0
  416. package/dist/orgs/orgs.module.js +68 -0
  417. package/dist/orgs/orgs.service.d.ts +30 -19
  418. package/dist/orgs/orgs.service.js +139 -86
  419. package/dist/orgs/settings.controller.d.ts +1 -1
  420. package/dist/orgs/settings.controller.js +8 -6
  421. package/dist/orgs/settings.service.d.ts +14 -8
  422. package/dist/orgs/settings.service.js +75 -46
  423. package/dist/overrides.d.ts +56 -0
  424. package/dist/overrides.js +30 -0
  425. package/dist/roles/gateway-role.d.ts +43 -0
  426. package/dist/roles/gateway-role.js +98 -0
  427. package/dist/roles/gateway.module.d.ts +8 -0
  428. package/dist/roles/gateway.module.js +28 -0
  429. package/dist/roles/worker-role.d.ts +63 -0
  430. package/dist/roles/worker-role.js +144 -0
  431. package/dist/roles/worker.module.d.ts +14 -0
  432. package/dist/roles/worker.module.js +90 -0
  433. package/dist/runtime/abort.js +19 -2
  434. package/dist/runtime/checkpointer.d.ts +8 -3
  435. package/dist/runtime/checkpointer.js +87 -55
  436. package/dist/runtime/conversation-lock.d.ts +20 -11
  437. package/dist/runtime/conversation-lock.js +62 -72
  438. package/dist/runtime/hook-calls.d.ts +3 -3
  439. package/dist/runtime/hook-calls.js +1 -6
  440. package/dist/runtime/job-ids.d.ts +10 -0
  441. package/dist/runtime/job-ids.js +10 -0
  442. package/dist/runtime/langgraph-loop.js +1 -1
  443. package/dist/runtime/loop.d.ts +7 -0
  444. package/dist/runtime/loop.js +14 -0
  445. package/dist/runtime/maintenance-queue.d.ts +10 -0
  446. package/dist/runtime/maintenance-queue.js +10 -0
  447. package/dist/runtime/maintenance.d.ts +45 -74
  448. package/dist/runtime/maintenance.js +139 -136
  449. package/dist/runtime/model-call.d.ts +7 -4
  450. package/dist/runtime/model-call.js +24 -57
  451. package/dist/runtime/providers.d.ts +17 -6
  452. package/dist/runtime/providers.js +66 -25
  453. package/dist/runtime/quota.d.ts +17 -3
  454. package/dist/runtime/quota.js +27 -2
  455. package/dist/runtime/retired-schedulers.d.ts +7 -0
  456. package/dist/runtime/retired-schedulers.js +31 -0
  457. package/dist/runtime/run-control.d.ts +33 -0
  458. package/dist/runtime/run-control.js +77 -0
  459. package/dist/runtime/run-finish.d.ts +26 -17
  460. package/dist/runtime/run-finish.js +98 -51
  461. package/dist/runtime/run-jobs.d.ts +48 -0
  462. package/dist/runtime/run-jobs.js +95 -0
  463. package/dist/runtime/run-processors.d.ts +60 -0
  464. package/dist/runtime/run-processors.js +185 -0
  465. package/dist/runtime/run-queue.d.ts +32 -57
  466. package/dist/runtime/run-queue.js +291 -295
  467. package/dist/runtime/run-steps.d.ts +39 -0
  468. package/dist/runtime/run-steps.js +96 -0
  469. package/dist/runtime/run-worker.d.ts +121 -75
  470. package/dist/runtime/run-worker.js +340 -225
  471. package/dist/runtime/runtime.module.d.ts +10 -0
  472. package/dist/runtime/runtime.module.js +112 -0
  473. package/dist/runtime/step-log.d.ts +40 -0
  474. package/dist/runtime/step-log.js +94 -0
  475. package/dist/runtime/stream.controller.d.ts +5 -8
  476. package/dist/runtime/stream.controller.js +14 -12
  477. package/dist/runtime/stream.d.ts +24 -6
  478. package/dist/runtime/stream.js +78 -7
  479. package/dist/runtime/subagents/child.d.ts +3 -44
  480. package/dist/runtime/subagents/child.js +0 -79
  481. package/dist/runtime/subagents/definition.d.ts +4 -4
  482. package/dist/runtime/subagents/definition.js +2 -2
  483. package/dist/runtime/subagents/dispatch.d.ts +87 -6
  484. package/dist/runtime/subagents/dispatch.js +135 -140
  485. package/dist/runtime/subagents/limits.d.ts +9 -4
  486. package/dist/runtime/subagents/limits.js +4 -2
  487. package/dist/runtime/subagents/org-agents.d.ts +4 -4
  488. package/dist/runtime/subagents/org-agents.js +1 -1
  489. package/dist/runtime/subagents/progress.d.ts +2 -2
  490. package/dist/runtime/subagents/roster.d.ts +3 -3
  491. package/dist/runtime/subagents/roster.js +1 -1
  492. package/dist/runtime/subagents/skill-fork.d.ts +6 -7
  493. package/dist/runtime/subagents/skill-fork.js +16 -5
  494. package/dist/runtime/subagents/subagents.service.d.ts +40 -0
  495. package/dist/runtime/subagents/subagents.service.js +101 -0
  496. package/dist/runtime/usage-report.d.ts +94 -52
  497. package/dist/runtime/usage-report.js +200 -99
  498. package/dist/runtime/waits.d.ts +125 -57
  499. package/dist/runtime/waits.js +431 -208
  500. package/dist/sandbox/job-ids.d.ts +10 -0
  501. package/dist/sandbox/job-ids.js +10 -0
  502. package/dist/sandbox/jobs.d.ts +41 -0
  503. package/dist/sandbox/jobs.js +113 -0
  504. package/dist/sandbox/leases.d.ts +39 -31
  505. package/dist/sandbox/leases.js +117 -257
  506. package/dist/sandbox/providers.d.ts +19 -0
  507. package/dist/sandbox/providers.js +38 -0
  508. package/dist/sandbox/sandbox.module.d.ts +8 -0
  509. package/dist/sandbox/sandbox.module.js +30 -0
  510. package/dist/sandbox/sandbox.service.d.ts +24 -29
  511. package/dist/sandbox/sandbox.service.js +106 -75
  512. package/dist/skills/catalog.d.ts +33 -20
  513. package/dist/skills/catalog.js +96 -53
  514. package/dist/skills/changes.controller.d.ts +4 -4
  515. package/dist/skills/changes.controller.js +15 -9
  516. package/dist/skills/changes.service.d.ts +28 -18
  517. package/dist/skills/changes.service.js +421 -364
  518. package/dist/skills/invocable.controller.d.ts +1 -1
  519. package/dist/skills/invocable.controller.js +8 -5
  520. package/dist/skills/invoke.d.ts +16 -15
  521. package/dist/skills/invoke.js +48 -17
  522. package/dist/skills/skills.controller.d.ts +1 -1
  523. package/dist/skills/skills.controller.js +11 -6
  524. package/dist/skills/skills.module.d.ts +6 -0
  525. package/dist/skills/skills.module.js +30 -0
  526. package/dist/skills/skills.service.d.ts +47 -30
  527. package/dist/skills/skills.service.js +221 -158
  528. package/dist/storage/job-ids.d.ts +6 -0
  529. package/dist/storage/job-ids.js +6 -0
  530. package/dist/storage/purge.d.ts +22 -7
  531. package/dist/storage/purge.js +55 -3
  532. package/dist/storage/storage.module.d.ts +6 -0
  533. package/dist/storage/storage.module.js +23 -0
  534. package/dist/storage/storage.service.d.ts +18 -4
  535. package/dist/storage/storage.service.js +44 -3
  536. package/dist/tools/approvals.controller.d.ts +1 -1
  537. package/dist/tools/approvals.controller.js +12 -8
  538. package/dist/tools/approvals.service.d.ts +27 -25
  539. package/dist/tools/approvals.service.js +324 -258
  540. package/dist/tools/breaker.d.ts +2 -2
  541. package/dist/tools/breaker.js +21 -3
  542. package/dist/tools/builtins/ask-user.d.ts +2 -2
  543. package/dist/tools/builtins/ask-user.js +1 -1
  544. package/dist/tools/builtins/builtin-tools.d.ts +21 -0
  545. package/dist/tools/builtins/builtin-tools.js +80 -0
  546. package/dist/tools/builtins/read-tool-output.d.ts +2 -2
  547. package/dist/tools/builtins/read-tool-output.js +1 -1
  548. package/dist/tools/builtins/sandbox/bash.js +2 -2
  549. package/dist/tools/builtins/sandbox/common.d.ts +7 -4
  550. package/dist/tools/builtins/sandbox/common.js +5 -3
  551. package/dist/tools/builtins/sandbox/deliver.js +2 -2
  552. package/dist/tools/builtins/sandbox/edit.js +1 -1
  553. package/dist/tools/builtins/sandbox/glob.js +2 -2
  554. package/dist/tools/builtins/sandbox/grep.js +2 -2
  555. package/dist/tools/builtins/sandbox/read.js +1 -1
  556. package/dist/tools/builtins/sandbox/write.js +1 -1
  557. package/dist/tools/builtins/skill-load.d.ts +3 -3
  558. package/dist/tools/builtins/skill-load.js +1 -1
  559. package/dist/tools/canonical-json.d.ts +6 -0
  560. package/dist/tools/canonical-json.js +16 -0
  561. package/dist/tools/connector-content.controller.d.ts +1 -1
  562. package/dist/tools/connector-content.controller.js +11 -6
  563. package/dist/tools/connector-content.d.ts +12 -15
  564. package/dist/tools/connector-content.js +53 -18
  565. package/dist/tools/connectors.controller.d.ts +1 -1
  566. package/dist/tools/connectors.controller.js +21 -10
  567. package/dist/tools/connectors.service.d.ts +31 -13
  568. package/dist/tools/connectors.service.js +434 -344
  569. package/dist/tools/credentials.d.ts +17 -20
  570. package/dist/tools/credentials.js +55 -34
  571. package/dist/tools/drift.d.ts +29 -41
  572. package/dist/tools/drift.js +111 -79
  573. package/dist/tools/info.d.ts +12 -9
  574. package/dist/tools/info.js +33 -7
  575. package/dist/tools/job-ids.d.ts +13 -0
  576. package/dist/tools/job-ids.js +15 -0
  577. package/dist/tools/jobs.d.ts +24 -0
  578. package/dist/tools/jobs.js +69 -0
  579. package/dist/tools/oauth/flow-paths.d.ts +16 -0
  580. package/dist/tools/oauth/flow-paths.js +38 -0
  581. package/dist/tools/oauth/flow.d.ts +30 -30
  582. package/dist/tools/oauth/flow.js +109 -81
  583. package/dist/tools/oauth/oauth.controller.d.ts +3 -3
  584. package/dist/tools/oauth/oauth.controller.js +12 -9
  585. package/dist/tools/oauth/tokens.d.ts +11 -3
  586. package/dist/tools/oauth/tokens.js +15 -14
  587. package/dist/tools/outputs.d.ts +13 -4
  588. package/dist/tools/outputs.js +47 -3
  589. package/dist/tools/pipeline.d.ts +62 -46
  590. package/dist/tools/pipeline.js +145 -64
  591. package/dist/tools/policy.d.ts +2 -2
  592. package/dist/tools/questions.controller.d.ts +1 -1
  593. package/dist/tools/questions.controller.js +8 -5
  594. package/dist/tools/questions.service.d.ts +25 -24
  595. package/dist/tools/questions.service.js +201 -142
  596. package/dist/tools/registry.d.ts +30 -20
  597. package/dist/tools/registry.js +73 -37
  598. package/dist/tools/specs.d.ts +5 -4
  599. package/dist/tools/specs.js +3 -1
  600. package/dist/tools/tools.module.d.ts +10 -0
  601. package/dist/tools/tools.module.js +91 -0
  602. package/dist/ui/call-extension.d.ts +16 -0
  603. package/dist/ui/call-extension.js +38 -0
  604. package/dist/ui/embed-token.d.ts +9 -5
  605. package/dist/ui/embed-token.js +34 -6
  606. package/dist/ui/ui-stream.d.ts +22 -17
  607. package/dist/ui/ui-stream.js +72 -12
  608. package/dist/ui/ui.module.d.ts +7 -0
  609. package/dist/ui/ui.module.js +28 -0
  610. package/dist/ui/views.controller.d.ts +14 -12
  611. package/dist/ui/views.controller.js +32 -25
  612. package/dist/ui/views.d.ts +9 -57
  613. package/dist/ui/views.js +43 -45
  614. package/package.json +11 -2
  615. package/dist/http/health.controller.d.ts +0 -26
  616. package/dist/http/health.controller.js +0 -79
  617. package/dist/http/tokens.d.ts +0 -131
  618. package/dist/http/tokens.js +0 -131
  619. package/dist/http/zod.pipe.d.ts +0 -8
  620. package/dist/http/zod.pipe.js +0 -14
  621. package/dist/identity/rate-limit.d.ts +0 -55
  622. package/dist/identity/rate-limit.js +0 -121
  623. package/dist/sandbox/lifecycle.d.ts +0 -21
  624. package/dist/sandbox/lifecycle.js +0 -68
  625. /package/dist/http/{gateway.module.d.ts → gateway-routes.d.ts} +0 -0
  626. /package/dist/http/{gateway.module.js → gateway-routes.js} +0 -0
@@ -0,0 +1,10 @@
1
+ /**
2
+ * The run runtime: the conversation run lock, this process's event streams, the run queue and its
3
+ * worker (consumed through `RuntimeWorkersModule`'s processors), the waits (their sweep is the
4
+ * worker role's `WaitSweepJob`), run
5
+ * stops, the checkpoints, the org quotas, the step writes and the agent loops. The model provider
6
+ * registry, the sub-agent dispatch, `usage.report` and the titles have modules of their own (the
7
+ * tools, models and conversations domains import them without the runtime).
8
+ */
9
+ export declare class RuntimeModule {
10
+ }
@@ -0,0 +1,112 @@
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
+ import { Module } from "@nestjs/common";
8
+ import { ConversationAccessModule } from "../conversations/access.js";
9
+ import { AttachmentsModule } from "../conversations/attachments.module.js";
10
+ import { EventLogModule } from "../conversations/event-log.js";
11
+ import { TitlesModule } from "../conversations/titles.js";
12
+ import { ExtensionsModule } from "../extensions/extensions.module.js";
13
+ import { IdentityModule } from "../identity/identity.module.js";
14
+ import { LockService } from "../infra/lock/lock.service.js";
15
+ import { QueueModule } from "../infra/queue/queue.module.js";
16
+ import { REDIS } from "../infra/tokens.js";
17
+ import { SkillsModule } from "../skills/skills.module.js";
18
+ import { ToolsModule } from "../tools/tools.module.js";
19
+ import { RunAbort } from "./abort.js";
20
+ import { KyselyCheckpointSaver } from "./checkpointer.js";
21
+ import { ConversationLock } from "./conversation-lock.js";
22
+ import { MAINTENANCE_QUEUE_NAME } from "./maintenance-queue.js";
23
+ import { ProvidersModule } from "./providers.js";
24
+ import { EVAL_QUOTA, EVAL_QUOTA_PREFIX, OrgQuota, RUN_QUOTA, RUN_QUOTA_PREFIX } from "./quota.js";
25
+ import { RunControl } from "./run-control.js";
26
+ import { RunFinish } from "./run-finish.js";
27
+ import { RunJobsModule } from "./run-jobs.js";
28
+ import { RunQueue } from "./run-queue.js";
29
+ import { AgentLoops, RunSteps } from "./run-steps.js";
30
+ import { RunWorker } from "./run-worker.js";
31
+ import { StepLog } from "./step-log.js";
32
+ import { ConversationStreams } from "./stream.js";
33
+ import { SubagentsModule } from "./subagents/subagents.service.js";
34
+ import { UsageReportModule } from "./usage-report.js";
35
+ import { DecisionResumer, Waits } from "./waits.js";
36
+ /**
37
+ * The run runtime: the conversation run lock, this process's event streams, the run queue and its
38
+ * worker (consumed through `RuntimeWorkersModule`'s processors), the waits (their sweep is the
39
+ * worker role's `WaitSweepJob`), run
40
+ * stops, the checkpoints, the org quotas, the step writes and the agent loops. The model provider
41
+ * registry, the sub-agent dispatch, `usage.report` and the titles have modules of their own (the
42
+ * tools, models and conversations domains import them without the runtime).
43
+ */
44
+ let RuntimeModule = class RuntimeModule {
45
+ };
46
+ RuntimeModule = __decorate([
47
+ Module({
48
+ imports: [
49
+ EventLogModule,
50
+ ConversationAccessModule,
51
+ AttachmentsModule,
52
+ ExtensionsModule,
53
+ IdentityModule,
54
+ SkillsModule,
55
+ ToolsModule,
56
+ ProvidersModule,
57
+ RunJobsModule,
58
+ SubagentsModule,
59
+ UsageReportModule,
60
+ TitlesModule,
61
+ // the producer side of `wait-timeout` jobs (`MaintenanceProcessor` consumes them)
62
+ QueueModule.registerQueue(MAINTENANCE_QUEUE_NAME),
63
+ ],
64
+ providers: [
65
+ ConversationLock,
66
+ ConversationStreams,
67
+ RunAbort,
68
+ KyselyCheckpointSaver,
69
+ RunFinish,
70
+ StepLog,
71
+ RunQueue,
72
+ Waits,
73
+ DecisionResumer,
74
+ RunControl,
75
+ AgentLoops,
76
+ RunSteps,
77
+ RunWorker,
78
+ // one quota per key prefix (the org run quota, the org eval quota)
79
+ {
80
+ provide: RUN_QUOTA,
81
+ inject: [REDIS, LockService],
82
+ useFactory: (redis, locks) => new OrgQuota(redis, RUN_QUOTA_PREFIX, locks),
83
+ },
84
+ {
85
+ provide: EVAL_QUOTA,
86
+ inject: [REDIS, LockService],
87
+ useFactory: (redis, locks) => new OrgQuota(redis, EVAL_QUOTA_PREFIX, locks),
88
+ },
89
+ ],
90
+ exports: [
91
+ ConversationLock,
92
+ ConversationStreams,
93
+ RunAbort,
94
+ KyselyCheckpointSaver,
95
+ RunFinish,
96
+ StepLog,
97
+ RunQueue,
98
+ Waits,
99
+ RunControl,
100
+ AgentLoops,
101
+ RunSteps,
102
+ RunWorker,
103
+ RUN_QUOTA,
104
+ EVAL_QUOTA,
105
+ ProvidersModule,
106
+ SubagentsModule,
107
+ UsageReportModule,
108
+ TitlesModule,
109
+ ],
110
+ })
111
+ ], RuntimeModule);
112
+ export { RuntimeModule };
@@ -0,0 +1,40 @@
1
+ import type { ToolSpec } from "@capybara-hq/plugin-sdk";
2
+ import { type AppendEvent, EventLog } from "../conversations/event-log.js";
3
+ import type { ConversationEvent } from "../conversations/events.js";
4
+ import { audit } from "../identity/audit.js";
5
+ import { KernelDb } from "../infra/database/kernel-db.js";
6
+ import { TransactionHost } from "../infra/database/transaction-host.js";
7
+ /** An audit row written with the events (`identity/audit.ts`). */
8
+ export type StepAuditEntry = Parameters<typeof audit>[1];
9
+ /**
10
+ * The writes of a run step that go to the event log together with another row, each in a
11
+ * transaction of its own (the caller notifies the log after the commit): a model call with the
12
+ * tool definitions it sent, a denial with its audit row, and a sub-agent's usage counted on its
13
+ * parent run. The step functions (`model-call.ts`, `hook-calls.ts`) reach it through their deps.
14
+ */
15
+ export declare class StepLog {
16
+ private readonly kdb;
17
+ private readonly eventLog;
18
+ readonly txHost: TransactionHost;
19
+ constructor(kdb: KernelDb, eventLog: EventLog, txHost: TransactionHost);
20
+ /**
21
+ * Appends events of a sub-agent's run and adds the tokens of the usage events it newly wrote to
22
+ * the parent run's `subagent_tokens_used` (sub-agents spec §8.3): a usage event already in the
23
+ * log (an idempotent hit after a crash) adds nothing, so each call counts exactly once. Returns
24
+ * what was written (hits included) and the highest new seq (null: nothing new).
25
+ */
26
+ appendCounted(conversationId: string, parentRunId: string, events: AppendEvent[]): Promise<{
27
+ written: ConversationEvent[];
28
+ toSeq: number | null;
29
+ }>;
30
+ /** Appends events with their audit row (a hook denial). */
31
+ appendAudited(conversationId: string, events: AppendEvent[], entry: StepAuditEntry): Promise<ConversationEvent[]>;
32
+ /**
33
+ * Appends a `model_call` with the tool definitions its request sent, stored by fingerprint in
34
+ * `tool_specs` in the same transaction (a request can be rebuilt from the log and the specs).
35
+ */
36
+ appendWithSpecs(conversationId: string, specs: readonly {
37
+ specHash: string;
38
+ spec: ToolSpec;
39
+ }[], events: AppendEvent[]): Promise<ConversationEvent[]>;
40
+ }
@@ -0,0 +1,94 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
8
+ return function (target, key) { decorator(target, key, paramIndex); }
9
+ };
10
+ import { Inject, Injectable } from "@nestjs/common";
11
+ import { sql } from "kysely";
12
+ import { EventLog } from "../conversations/event-log.js";
13
+ import { usageTokens } from "../evals/budget.js";
14
+ import { audit } from "../identity/audit.js";
15
+ import { KernelDb } from "../infra/database/kernel-db.js";
16
+ import { TransactionHost } from "../infra/database/transaction-host.js";
17
+ import { Transactional } from "../infra/database/transactional.decorator.js";
18
+ import { recordToolSpecs } from "../tools/specs.js";
19
+ /**
20
+ * The writes of a run step that go to the event log together with another row, each in a
21
+ * transaction of its own (the caller notifies the log after the commit): a model call with the
22
+ * tool definitions it sent, a denial with its audit row, and a sub-agent's usage counted on its
23
+ * parent run. The step functions (`model-call.ts`, `hook-calls.ts`) reach it through their deps.
24
+ */
25
+ let StepLog = class StepLog {
26
+ kdb;
27
+ eventLog;
28
+ txHost;
29
+ constructor(kdb, eventLog, txHost) {
30
+ this.kdb = kdb;
31
+ this.eventLog = eventLog;
32
+ this.txHost = txHost;
33
+ }
34
+ /**
35
+ * Appends events of a sub-agent's run and adds the tokens of the usage events it newly wrote to
36
+ * the parent run's `subagent_tokens_used` (sub-agents spec §8.3): a usage event already in the
37
+ * log (an idempotent hit after a crash) adds nothing, so each call counts exactly once. Returns
38
+ * what was written (hits included) and the highest new seq (null: nothing new).
39
+ */
40
+ async appendCounted(conversationId, parentRunId, events) {
41
+ const t = this.kdb.db;
42
+ // the conversation row lock the append takes anyway, taken first to read the seq before it
43
+ const before = await t
44
+ .selectFrom("conversations")
45
+ .select("last_seq")
46
+ .where("id", "=", conversationId)
47
+ .forUpdate()
48
+ .executeTakeFirstOrThrow();
49
+ const written = await this.eventLog.appendIn(conversationId, events);
50
+ const fresh = written.filter((e) => e.seq > Number(before.last_seq));
51
+ let tokens = 0;
52
+ for (const e of fresh)
53
+ if (e.type === "usage")
54
+ tokens += usageTokens(e.payload);
55
+ if (tokens > 0) {
56
+ await t
57
+ .updateTable("runs")
58
+ .set({ subagent_tokens_used: sql `subagent_tokens_used + ${tokens}` })
59
+ .where("id", "=", parentRunId)
60
+ .execute();
61
+ }
62
+ return { written, toSeq: fresh.length > 0 ? Math.max(...fresh.map((e) => e.seq)) : null };
63
+ }
64
+ /** Appends events with their audit row (a hook denial). */
65
+ async appendAudited(conversationId, events, entry) {
66
+ const out = await this.eventLog.appendIn(conversationId, events);
67
+ await audit(this.kdb.db, entry);
68
+ return out;
69
+ }
70
+ /**
71
+ * Appends a `model_call` with the tool definitions its request sent, stored by fingerprint in
72
+ * `tool_specs` in the same transaction (a request can be rebuilt from the log and the specs).
73
+ */
74
+ async appendWithSpecs(conversationId, specs, events) {
75
+ await recordToolSpecs(this.kdb.db, specs);
76
+ return this.eventLog.appendIn(conversationId, events);
77
+ }
78
+ };
79
+ __decorate([
80
+ Transactional({ propagation: "requires_new" })
81
+ ], StepLog.prototype, "appendCounted", null);
82
+ __decorate([
83
+ Transactional({ propagation: "requires_new" })
84
+ ], StepLog.prototype, "appendAudited", null);
85
+ __decorate([
86
+ Transactional({ propagation: "requires_new" })
87
+ ], StepLog.prototype, "appendWithSpecs", null);
88
+ StepLog = __decorate([
89
+ Injectable(),
90
+ __param(0, Inject(KernelDb)),
91
+ __param(1, Inject(EventLog)),
92
+ __param(2, Inject(TransactionHost))
93
+ ], StepLog);
94
+ export { StepLog };
@@ -1,12 +1,11 @@
1
- import { type OnModuleDestroy } from "@nestjs/common";
2
1
  import type { FastifyReply, FastifyRequest } from "fastify";
3
2
  import { z } from "zod";
4
- import type { ConversationsService } from "../conversations/conversations.service.js";
5
- import type { ApiTokenService } from "../identity/api-tokens.js";
3
+ import { ConversationsService } from "../conversations/conversations.service.js";
4
+ import { ApiTokenService } from "../identity/api-tokens.js";
6
5
  import { type Principal } from "../identity/principal.js";
7
- import type { SessionService } from "../identity/sessions.js";
6
+ import { SessionService } from "../identity/sessions.js";
8
7
  import { type OrgContext } from "../orgs/org.guard.js";
9
- import type { ConversationStreams } from "./stream.js";
8
+ import { ConversationStreams } from "./stream.js";
10
9
  declare const StreamQuery: z.ZodObject<{
11
10
  after: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
12
11
  }, z.core.$strip>;
@@ -21,14 +20,12 @@ declare const StreamQuery: z.ZodObject<{
21
20
  * - 用 `@Res()` + `reply.hijack()` 直接写原始响应,绕开 Nest / Fastify 的响应处理与缓冲。
22
21
  * 代理(Web 层)需透传 `x-accel-buffering: no`、`cache-control: no-cache`。
23
22
  */
24
- export declare class ConversationStreamController implements OnModuleDestroy {
23
+ export declare class ConversationStreamController {
25
24
  private readonly streams;
26
25
  private readonly sessions;
27
26
  private readonly tokens;
28
27
  private readonly conversations;
29
28
  constructor(streams: ConversationStreams, sessions: SessionService, tokens: ApiTokenService, conversations: ConversationsService);
30
29
  stream(principal: Principal, org: OrgContext, id: string, q: z.infer<typeof StreamQuery>, lastEventId: string | undefined, req: FastifyRequest, reply: FastifyReply): Promise<void>;
31
- /** 停机:关闭本进程的全部流,否则 HTTP 关闭要等到这些长连接超时。 */
32
- onModuleDestroy(): void;
33
30
  }
34
31
  export {};
@@ -7,14 +7,18 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
7
7
  var __param = (this && this.__param) || function (paramIndex, decorator) {
8
8
  return function (target, key) { decorator(target, key, paramIndex); }
9
9
  };
10
- import { Controller, Get, Headers, Inject, Param, Query, Req, Res, } from "@nestjs/common";
10
+ import { Controller, Get, Headers, Inject, Param, Req, Res } from "@nestjs/common";
11
11
  import { z } from "zod";
12
+ import { ConversationsService } from "../conversations/conversations.service.js";
12
13
  import { ApiError } from "../errors.js";
13
- import { API_TOKENS, CONVERSATION_STREAMS, CONVERSATIONS, SESSIONS } from "../http/tokens.js";
14
- import { ZodPipe } from "../http/zod.pipe.js";
14
+ import { ApiTokenService } from "../identity/api-tokens.js";
15
15
  import { credentialCheck } from "../identity/credential-check.js";
16
16
  import { CurrentPrincipal, requireUser } from "../identity/principal.js";
17
+ import { SessionService } from "../identity/sessions.js";
18
+ import { createZodDto } from "../infra/validation/create-zod-dto.js";
19
+ import { ZQuery } from "../infra/validation/zod-params.js";
17
20
  import { CurrentOrg, OrgAction } from "../orgs/org.guard.js";
21
+ import { ConversationStreams } from "./stream.js";
18
22
  const BEARER_RE = /^Bearer\s+(\S+)$/i;
19
23
  const StreamQuery = z.object({
20
24
  after: z.coerce.number().int().min(0).max(Number.MAX_SAFE_INTEGER).default(0),
@@ -28,6 +32,8 @@ function parseLastEventId(v) {
28
32
  }
29
33
  return n;
30
34
  }
35
+ class ConversationStreamQueryDto extends createZodDto(StreamQuery, "ConversationStreamQuery") {
36
+ }
31
37
  /**
32
38
  * 会话事件流(SSE):`GET /api/v1/orgs/:orgId/conversations/:id/stream?after=<seq>`,`agents.use`,只有会话所有者可用。
33
39
  * - 打开时不阻塞地调用一次 ensureRun(`ConversationsService.kickRun`),停在「运行中」的孤儿运行由此被清理;
@@ -96,10 +102,6 @@ let ConversationStreamController = class ConversationStreamController {
96
102
  res.flushHeaders();
97
103
  handle.begin();
98
104
  }
99
- /** 停机:关闭本进程的全部流,否则 HTTP 关闭要等到这些长连接超时。 */
100
- onModuleDestroy() {
101
- this.streams.closeAll();
102
- }
103
105
  };
104
106
  __decorate([
105
107
  Get(":id/stream"),
@@ -107,16 +109,16 @@ __decorate([
107
109
  __param(0, CurrentPrincipal()),
108
110
  __param(1, CurrentOrg()),
109
111
  __param(2, Param("id")),
110
- __param(3, Query(new ZodPipe(StreamQuery))),
112
+ __param(3, ZQuery(ConversationStreamQueryDto)),
111
113
  __param(4, Headers("last-event-id")),
112
114
  __param(5, Req()),
113
115
  __param(6, Res())
114
116
  ], ConversationStreamController.prototype, "stream", null);
115
117
  ConversationStreamController = __decorate([
116
118
  Controller("api/v1/orgs/:orgId/conversations"),
117
- __param(0, Inject(CONVERSATION_STREAMS)),
118
- __param(1, Inject(SESSIONS)),
119
- __param(2, Inject(API_TOKENS)),
120
- __param(3, Inject(CONVERSATIONS))
119
+ __param(0, Inject(ConversationStreams)),
120
+ __param(1, Inject(SessionService)),
121
+ __param(2, Inject(ApiTokenService)),
122
+ __param(3, Inject(ConversationsService))
121
123
  ], ConversationStreamController);
122
124
  export { ConversationStreamController };
@@ -1,7 +1,9 @@
1
1
  import type { Logger } from "@capybara-hq/plugin-sdk";
2
- import type { KernelConfig } from "../config/schema.js";
3
- import { type EventLog } from "../conversations/event-log.js";
2
+ import { ConversationAccess } from "../conversations/access.js";
3
+ import { EventLog } from "../conversations/event-log.js";
4
4
  import type { CredentialCheck } from "../identity/credential-check.js";
5
+ import { KernelConfigService } from "../infra/config/kernel-config.service.js";
6
+ import { GracefulShutdown } from "../infra/lifecycle/graceful-shutdown.service.js";
5
7
  /** 一次 SSE 连接的输出端(由 HTTP 层包装原始响应)。 */
6
8
  export interface SseOutput {
7
9
  write(chunk: string): void;
@@ -21,7 +23,7 @@ export interface ConversationStreamsDeps {
21
23
  bus: StreamBus;
22
24
  /** 轻量可见性判定:连接建立时与每 `sseRecheckMs` 复核一次。 */
23
25
  access(orgId: string, conversationId: string, viewerAccountId: string): Promise<boolean>;
24
- config: () => KernelConfig;
26
+ config: Pick<KernelConfigService, "get">;
25
27
  log: Pick<Logger, "warn">;
26
28
  }
27
29
  export interface StreamParams {
@@ -48,16 +50,32 @@ export interface StreamHandle {
48
50
  * (订阅、心跳与复核定时器)。
49
51
  */
50
52
  export declare class ConversationStreams {
51
- private readonly d;
52
53
  private readonly active;
53
- constructor(d: ConversationStreamsDeps);
54
+ /** Set by {@link closeAll}: streams opened afterwards end as soon as they begin. */
55
+ private closing;
56
+ private readonly d;
57
+ /**
58
+ * Closes the streams when the shutdown begins (readiness answers 503 from that moment) and
59
+ * latches: streams opened afterwards end at once, so the HTTP phase of the stop never waits on
60
+ * an event stream. Without `GracefulShutdown` (a standalone HTTP application, tests only) the
61
+ * streams end with their connections.
62
+ */
63
+ constructor(eventLog: Pick<EventLog, "readAfter">, bus: StreamBus, access: Pick<ConversationAccess, "isAccessible">, config: Pick<KernelConfigService, "get">, log: Pick<Logger, "warn">, shutdown?: Pick<GracefulShutdown, "signal">);
54
64
  /**
55
65
  * 复核凭据与可见性,并先订阅会话频道(之后再回放,避免遗漏两者之间提交的事件)。
56
66
  * 凭据失效 → 对应的 `auth.*`;不可见 → `conversation.not_found`;订阅失败照常抛出。此时尚未写任何响应,调用方可以按普通错误返回。
57
67
  */
58
68
  open(p: StreamParams, out: SseOutput): Promise<StreamHandle>;
59
- /** 关闭本进程的全部流(停机时调用)。 */
69
+ /**
70
+ * Closes every stream of this process (at shutdown) and latches: a stream opened afterwards ends
71
+ * right after its headers, so a reconnecting client cannot hold the HTTP close open.
72
+ */
60
73
  closeAll(): void;
61
74
  /** 当前打开的流数(测试用)。 */
62
75
  get size(): number;
63
76
  }
77
+ /**
78
+ * The handle of a stream opened after shutdown began: `begin` (the headers are written) ends the
79
+ * response at once; the client reconnects with `Last-Event-ID`, to a replica that is still ready.
80
+ */
81
+ export declare function endedStream(out: SseOutput): StreamHandle;
@@ -1,5 +1,19 @@
1
- import { CONVERSATION_CHANGES, conversationTopic, } from "../conversations/event-log.js";
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, Optional } from "@nestjs/common";
11
+ import { ConversationAccess } from "../conversations/access.js";
12
+ import { CONVERSATION_CHANGES, conversationTopic, EventLog, } from "../conversations/event-log.js";
2
13
  import { ApiError } from "../errors.js";
14
+ import { KernelConfigService } from "../infra/config/kernel-config.service.js";
15
+ import { GracefulShutdown } from "../infra/lifecycle/graceful-shutdown.service.js";
16
+ import { KERNEL_BUS, KERNEL_LOGGER } from "../infra/tokens.js";
3
17
  import { isUiBusMessage, uiFrame } from "../ui/registry.js";
4
18
  /** 补读事件的分页大小。 */
5
19
  const PAGE = 500;
@@ -46,11 +60,29 @@ const eventFrame = (e) => `id: ${e.seq}\nevent: event\ndata: ${JSON.stringify(e)
46
60
  * 跨副本的数据只经 PG(事件日志)与内核 bus(`conv.<id>`)流动,进程内只保存连接本身的资源
47
61
  * (订阅、心跳与复核定时器)。
48
62
  */
49
- export class ConversationStreams {
50
- d;
63
+ let ConversationStreams = class ConversationStreams {
51
64
  active = new Set();
52
- constructor(d) {
53
- this.d = d;
65
+ /** Set by {@link closeAll}: streams opened afterwards end as soon as they begin. */
66
+ closing = false;
67
+ d;
68
+ /**
69
+ * Closes the streams when the shutdown begins (readiness answers 503 from that moment) and
70
+ * latches: streams opened afterwards end at once, so the HTTP phase of the stop never waits on
71
+ * an event stream. Without `GracefulShutdown` (a standalone HTTP application, tests only) the
72
+ * streams end with their connections.
73
+ */
74
+ constructor(eventLog, bus, access, config, log, shutdown) {
75
+ this.d = {
76
+ eventLog,
77
+ bus,
78
+ access: (orgId, conversationId, viewer) => access.isAccessible(orgId, conversationId, viewer),
79
+ config,
80
+ log,
81
+ };
82
+ if (shutdown?.signal.aborted)
83
+ this.closeAll();
84
+ else
85
+ shutdown?.signal.addEventListener("abort", () => this.closeAll(), { once: true });
54
86
  }
55
87
  /**
56
88
  * 复核凭据与可见性,并先订阅会话频道(之后再回放,避免遗漏两者之间提交的事件)。
@@ -60,6 +92,8 @@ export class ConversationStreams {
60
92
  const denied = await authorize(this.d, p);
61
93
  if (denied !== null)
62
94
  throw new ApiError(denied, DENIAL_MESSAGES[denied] ?? "Access denied");
95
+ if (this.closing)
96
+ return endedStream(out);
63
97
  const conn = new Connection(this.d, p, out, () => this.active.delete(conn));
64
98
  this.active.add(conn);
65
99
  try {
@@ -69,10 +103,19 @@ export class ConversationStreams {
69
103
  conn.close();
70
104
  throw e;
71
105
  }
106
+ // closeAll ran while subscribing: the connection is closed, the response must still end
107
+ if (this.closing) {
108
+ conn.close();
109
+ return endedStream(out);
110
+ }
72
111
  return conn;
73
112
  }
74
- /** 关闭本进程的全部流(停机时调用)。 */
113
+ /**
114
+ * Closes every stream of this process (at shutdown) and latches: a stream opened afterwards ends
115
+ * right after its headers, so a reconnecting client cannot hold the HTTP close open.
116
+ */
75
117
  closeAll() {
118
+ this.closing = true;
76
119
  for (const c of [...this.active])
77
120
  c.close();
78
121
  }
@@ -80,6 +123,34 @@ export class ConversationStreams {
80
123
  get size() {
81
124
  return this.active.size;
82
125
  }
126
+ };
127
+ ConversationStreams = __decorate([
128
+ Injectable(),
129
+ __param(0, Inject(EventLog)),
130
+ __param(1, Inject(KERNEL_BUS)),
131
+ __param(2, Inject(ConversationAccess)),
132
+ __param(3, Inject(KernelConfigService)),
133
+ __param(4, Inject(KERNEL_LOGGER)),
134
+ __param(5, Optional()),
135
+ __param(5, Inject(GracefulShutdown))
136
+ ], ConversationStreams);
137
+ export { ConversationStreams };
138
+ /**
139
+ * The handle of a stream opened after shutdown began: `begin` (the headers are written) ends the
140
+ * response at once; the client reconnects with `Last-Event-ID`, to a replica that is still ready.
141
+ */
142
+ export function endedStream(out) {
143
+ return {
144
+ begin: () => {
145
+ try {
146
+ out.end();
147
+ }
148
+ catch {
149
+ // the connection is already gone
150
+ }
151
+ },
152
+ close: () => { },
153
+ };
83
154
  }
84
155
  class Connection {
85
156
  d;
@@ -117,7 +188,7 @@ class Connection {
117
188
  if (this.closed)
118
189
  return;
119
190
  this.begun = true;
120
- const { sseHeartbeatMs, sseRecheckMs } = this.d.config().runtime;
191
+ const { sseHeartbeatMs, sseRecheckMs } = this.d.config.get().runtime;
121
192
  this.timers.push(setInterval(() => this.write(": ping\n\n"), sseHeartbeatMs), setInterval(() => void this.recheck(), sseRecheckMs));
122
193
  this.openGate();
123
194
  }
@@ -1,10 +1,6 @@
1
- import type { Logger } from "@capybara-hq/plugin-sdk";
2
1
  import type { AppendEvent, EventLog } from "../../conversations/event-log.js";
3
2
  import type { EventPayload } from "../../conversations/events.js";
4
- import type { KernelDb } from "../../db/kernel-schema.js";
5
- import type { RunAbort, RunAbortDetail } from "../abort.js";
6
- import { type RunQueue } from "../run-queue.js";
7
- import type { Waits } from "../waits.js";
3
+ import type { KernelSchemaDb } from "../../db/kernel-schema.js";
8
4
  /** Idempotency key of the parent's `subagent_finished` event. */
9
5
  export declare const finishedIdemKey: (childRunId: string) => string;
10
6
  /** A dispatch row, by its child run. */
@@ -16,9 +12,9 @@ export interface DispatchRow {
16
12
  childRunId: string;
17
13
  }
18
14
  /** The dispatch that started `childRunId`, or null (not a sub-agent run). */
19
- export declare function dispatchOfChildRun(db: KernelDb, childRunId: string): Promise<DispatchRow | null>;
15
+ export declare function dispatchOfChildRun(db: KernelSchemaDb, childRunId: string): Promise<DispatchRow | null>;
20
16
  /** The dispatch of the parent call `(runId, callId)`, or null (not dispatched yet). */
21
- export declare function dispatchOfCall(db: KernelDb, runId: string, callId: string): Promise<DispatchRow | null>;
17
+ export declare function dispatchOfCall(db: KernelSchemaDb, runId: string, callId: string): Promise<DispatchRow | null>;
22
18
  /**
23
19
  * The tool result of a finished child run (spec §4.4) and its `subagent_finished` payload, from
24
20
  * the child's log only: the status from its terminal event, the reply from its last
@@ -41,40 +37,3 @@ opts?: {
41
37
  } | null>;
42
38
  /** The parent's `subagent_finished` event for a finished child (idempotent by its key). */
43
39
  export declare const finishedEvent: (row: DispatchRow, finished: EventPayload<"subagent_finished">) => AppendEvent;
44
- export interface ChildDeps {
45
- db: KernelDb;
46
- eventLog: EventLog;
47
- waits: Pick<Waits, "resume">;
48
- log: Pick<Logger, "warn">;
49
- }
50
- /**
51
- * After a child run's terminal state committed (spec §7.3): appends `subagent_finished` to the
52
- * parent log (idempotent; allowed while the parent waits, it is not model-visible) and tries
53
- * `Waits.resume(parentRunId, childRunId)`. Every finishing child tries; the conditional resume lets
54
- * exactly one succeed, the last to see all its siblings terminal. A run that is not a dispatched
55
- * child, or not terminal yet, is left alone. A crash in between is repaired by the wait sweep and
56
- * by the parent's tools node, which writes a missing `subagent_finished` itself.
57
- */
58
- export declare function onChildFinished(d: ChildDeps, childRunId: string): Promise<void>;
59
- export interface StopChildrenDeps extends ChildDeps {
60
- waits: Pick<Waits, "resume" | "abortWaiting">;
61
- runQueue: Pick<RunQueue, "abortIfOrphaned">;
62
- abort: Pick<RunAbort, "request">;
63
- }
64
- /**
65
- * Stops the active children of a parent run (sub-agents spec §12), or only those dispatched in
66
- * `opts.step`: a `waiting` child through its own `abortWaiting`, a `queued` / `running` one that
67
- * no worker holds directly (`abortIfOrphaned`), any other through `RunAbort.request` (the
68
- * cross-replica broadcast plus the marker key, so a child that starts later still sees it), after
69
- * which a child found `waiting` is stopped through `abortWaiting` too. A child stopped here is
70
- * reported to the parent at once (by `abortWaiting` itself, or {@link onChildFinished} after
71
- * `abortIfOrphaned`); one stopped by its worker is reported by that worker. Returns the number of
72
- * children asked to stop.
73
- *
74
- * `byAccountId` is the person whose action stops them, or null when the kernel stops them on the
75
- * parent's behalf; a child stopped with null reports the §4.4 "parent's stop" text.
76
- */
77
- export declare function stopChildren(d: StopChildrenDeps, parentRunId: string, byAccountId: string | null, opts?: {
78
- step?: number;
79
- detail?: RunAbortDetail;
80
- }): Promise<number>;