@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
@@ -1,97 +1,87 @@
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 { LockService } from "../infra/lock/lock.service.js";
1
12
  /** 会话运行锁的默认 TTL(毫秒):持有方每 `ttlMs / 3` 续租一次。 */
2
13
  export const CONVERSATION_LOCK_TTL_MS = 30_000;
3
14
  /** 会话运行锁的键前缀。 */
4
15
  const RUN_LOCK_PREFIX = "capk:conv-run:";
5
- const RENEW = `
6
- if redis.call('GET', KEYS[1]) == ARGV[1] then
7
- return redis.call('PEXPIRE', KEYS[1], ARGV[2])
8
- end
9
- return 0
10
- `;
11
- const RELEASE = `
12
- if redis.call('GET', KEYS[1]) == ARGV[1] then
13
- return redis.call('DEL', KEYS[1])
14
- end
15
- return 0
16
- `;
17
16
  /**
18
- * 会话级运行锁(spec 4.3「同一会话同一时刻只跑一轮」):Redis 键 `capk:conv-run:<id>`,值为 runId,
19
- * 带 TTL;持有期间由本进程的定时器每 `ttlMs / 3` 续租(本进程持有的锁的续租,允许的进程内定时器)。
20
- * 持有方崩溃时停止续租,锁在 TTL 后过期,其他副本可以取得。
17
+ * A per-conversation lease on {@link LockService.hold}: key `<prefix><conversationId>`, value the
18
+ * holder's run id (other replicas read it with {@link holder}), renewed every TTL/3 by the lock
19
+ * service while held; a crashed holder's key expires within the TTL and another replica can take
20
+ * it. Built by {@link ConversationLock} (the run lock) and its {@link ConversationLock.scoped}
21
+ * views (the same lock for another purpose, e.g. the channel delivery `capk:channel-deliver:`).
22
+ * A loss is logged once, by the lock service (`lock lost`, with the key).
21
23
  */
22
- export class ConversationLock {
23
- redis;
24
- log;
24
+ export class ConversationLeases {
25
+ locks;
25
26
  keyPrefix;
26
- /** `keyPrefix`:同样语义、按会话互斥的其他用途用别的前缀(如渠道出站投递 `capk:channel-deliver:`)。 */
27
- constructor(redis, log, keyPrefix = RUN_LOCK_PREFIX) {
28
- this.redis = redis;
29
- this.log = log;
27
+ constructor(locks, keyPrefix) {
28
+ this.locks = locks;
30
29
  this.keyPrefix = keyPrefix;
31
30
  }
32
31
  lockKey(conversationId) {
33
32
  return `${this.keyPrefix}${conversationId}`;
34
33
  }
35
34
  async acquire(conversationId, runId, ttlMs = CONVERSATION_LOCK_TTL_MS) {
36
- const key = this.lockKey(conversationId);
37
- const ok = await this.redis.set(key, runId, "PX", ttlMs, "NX");
38
- if (ok !== "OK")
35
+ const held = await this.locks.hold(this.lockKey(conversationId), runId, ttlMs);
36
+ if (!held)
39
37
  return null;
40
- const redis = this.redis;
41
- const log = this.log;
42
- let lost = false;
43
- let timer;
44
- const lostCallbacks = [];
45
- const stop = () => {
46
- clearInterval(timer);
47
- timer = undefined;
48
- };
49
- const lease = {
50
- conversationId,
51
- runId,
52
- get lost() {
53
- return lost;
54
- },
55
- async renew() {
56
- if (lost)
57
- return false;
58
- const r = Number(await redis.eval(RENEW, 1, key, runId, ttlMs));
59
- if (r !== 1) {
60
- lost = true;
61
- stop();
62
- log?.warn("conversation run lock lost", { conversationId, runId });
63
- for (const cb of lostCallbacks.splice(0))
64
- cb();
65
- }
66
- return r === 1;
67
- },
68
- async release() {
69
- stop();
70
- await redis.eval(RELEASE, 1, key, runId);
71
- },
72
- abandon: stop,
73
- onLost(cb) {
74
- if (lost)
75
- cb();
76
- else
77
- lostCallbacks.push(cb);
78
- },
79
- };
80
- timer = setInterval(() => {
81
- lease.renew().catch((err) => log?.warn("conversation run lock renew failed", { err }));
82
- }, Math.max(1, Math.floor(ttlMs / 3)));
83
- timer.unref();
84
- return lease;
38
+ return toLease(held, conversationId, runId);
85
39
  }
86
40
  /**
87
41
  * 释放某个运行持有的锁(只在仍由该 runId 持有时删除),不需要 Lease:用于 BullMQ 已判定任务失败
88
42
  * (例如持有者崩溃、stalled 次数超限)后清理死去持有者留下的锁,不必等 TTL 过期。
89
43
  */
90
44
  async releaseFor(conversationId, runId) {
91
- await this.redis.eval(RELEASE, 1, this.lockKey(conversationId), runId);
45
+ await this.locks.releaseIf(this.lockKey(conversationId), runId);
92
46
  }
93
47
  /** 当前持有者的 runId;无人持有 → null。 */
94
48
  holder(conversationId) {
95
- return this.redis.get(this.lockKey(conversationId));
49
+ return this.locks.holderOf(this.lockKey(conversationId));
96
50
  }
97
51
  }
52
+ function toLease(held, conversationId, runId) {
53
+ return {
54
+ conversationId,
55
+ runId,
56
+ get lost() {
57
+ return held.lost.aborted;
58
+ },
59
+ renew: () => held.renew(),
60
+ release: () => held.release(),
61
+ abandon: () => held.abandon(),
62
+ onLost(cb) {
63
+ if (held.lost.aborted)
64
+ cb();
65
+ else
66
+ held.lost.addEventListener("abort", () => cb(), { once: true });
67
+ },
68
+ };
69
+ }
70
+ /**
71
+ * 会话级运行锁(spec 4.3「同一会话同一时刻只跑一轮」):Redis 键 `capk:conv-run:<id>`,值为 runId,
72
+ * 带 TTL,由 {@link LockService} 每 TTL/3 续租。持有方崩溃时停止续租,锁在 TTL 后过期,其他副本可以取得。
73
+ */
74
+ let ConversationLock = class ConversationLock extends ConversationLeases {
75
+ constructor(locks) {
76
+ super(locks, RUN_LOCK_PREFIX);
77
+ }
78
+ /** The same per-conversation lease under another key prefix (another purpose). */
79
+ scoped(keyPrefix) {
80
+ return new ConversationLeases(this.locks, keyPrefix);
81
+ }
82
+ };
83
+ ConversationLock = __decorate([
84
+ Injectable(),
85
+ __param(0, Inject(LockService))
86
+ ], ConversationLock);
87
+ export { ConversationLock };
@@ -1,9 +1,9 @@
1
1
  import type { AvailableHook, HookModelRequest, HookParentScope, HookPayloads, HookScope, Logger, ModelRequest } from "@capybara-hq/plugin-sdk";
2
2
  import type { AppendEvent, EventLog } from "../conversations/event-log.js";
3
3
  import type { EventPayload } from "../conversations/events.js";
4
- import type { KernelDb } from "../db/kernel-schema.js";
5
4
  import type { HookOutcome, HookRegistry } from "../extensions/hooks.js";
6
- import { audit } from "../identity/audit.js";
5
+ import type { audit } from "../identity/audit.js";
6
+ import type { StepLog } from "./step-log.js";
7
7
  /** What the runtime needs from the host's hook registry (absent in eval replays). */
8
8
  export type HookRunner = Pick<HookRegistry, "run" | "has">;
9
9
  /**
@@ -75,8 +75,8 @@ export type AuditEntry = Parameters<typeof audit>[1];
75
75
  * denial rethrows it before running the hooks again, so no second audit entry is written.
76
76
  */
77
77
  export declare function recordHookDenial(d: {
78
- db: KernelDb;
79
78
  eventLog: EventLog;
79
+ stepLog: Pick<StepLog, "appendAudited">;
80
80
  }, at: DenialSite, mount: Extract<AvailableHook, "model.request" | "tool.preExecute">, denial: HookDenial, where: {
81
81
  step: number;
82
82
  attempt?: number;
@@ -1,4 +1,3 @@
1
- import { audit } from "../identity/audit.js";
2
1
  /**
3
2
  * The scope for hook payloads, or null when hooks must not fire: no registry (eval replays omit it),
4
3
  * a conversation that is neither `chat` nor `subagent`, or missing identity fields. A sub-agent's
@@ -125,11 +124,7 @@ export async function recordHookDenial(d, at, mount, denial, where) {
125
124
  if (await d.eventLog.findByIdem(at.conversationId, at.idemKey))
126
125
  return;
127
126
  const event = hookDeniedEvent(at, mount, denial, where);
128
- const written = await d.db.transaction().execute(async (t) => {
129
- const out = await d.eventLog.append(at.conversationId, [event], t);
130
- await audit(t, hookDeniedAudit(at, event.payload, denial));
131
- return out;
132
- });
127
+ const written = await d.stepLog.appendAudited(at.conversationId, [event], hookDeniedAudit(at, event.payload, denial));
133
128
  if (written.length > 0) {
134
129
  await d.eventLog.notify(at.conversationId, Math.max(...written.map((e) => e.seq)));
135
130
  }
@@ -0,0 +1,10 @@
1
+ /**
2
+ * The maintenance job scheduler ids the runtime's fixed-period jobs had before they became
3
+ * `@LockedCron` jobs: an upgraded deployment still has them in Redis, so the
4
+ * worker removes them at start (`RETIRED_SCHEDULER_IDS`). A leaf module: the maintenance worker
5
+ * imports it without the runtime's providers.
6
+ */
7
+ /** The wait sweep's old scheduler (every 10 minutes). */
8
+ export declare const WAIT_SWEEP_SCHEDULER_ID = "wait-sweep-every-10m";
9
+ /** The usage sweeper's old scheduler (every minute). */
10
+ export declare const USAGE_SWEEP_SCHEDULER_ID = "usage-report-sweep-every";
@@ -0,0 +1,10 @@
1
+ /**
2
+ * The maintenance job scheduler ids the runtime's fixed-period jobs had before they became
3
+ * `@LockedCron` jobs: an upgraded deployment still has them in Redis, so the
4
+ * worker removes them at start (`RETIRED_SCHEDULER_IDS`). A leaf module: the maintenance worker
5
+ * imports it without the runtime's providers.
6
+ */
7
+ /** The wait sweep's old scheduler (every 10 minutes). */
8
+ export const WAIT_SWEEP_SCHEDULER_ID = "wait-sweep-every-10m";
9
+ /** The usage sweeper's old scheduler (every minute). */
10
+ export const USAGE_SWEEP_SCHEDULER_ID = "usage-report-sweep-every";
@@ -112,7 +112,7 @@ export class LangGraphLoop {
112
112
  build(ctx) {
113
113
  const timedOut = () => Date.now() >= ctx.limits.deadline;
114
114
  // 本次运行的附件字节缓存:各步共用,运行结束即丢弃(只是优化,见 MediaCache)
115
- const mediaCache = new MediaCache(this.stepDeps.config().attachments.requestMediaBytes);
115
+ const mediaCache = new MediaCache(this.stepDeps.config.get().attachments.requestMediaBytes);
116
116
  const input = (step, absorbedUpToSeq) => ({
117
117
  orgId: ctx.orgId,
118
118
  conversationId: ctx.conversationId,
@@ -1,4 +1,5 @@
1
1
  import type { AgentDefinition } from "../agents/definition.js";
2
+ import type { KernelConfig } from "../config/schema.js";
2
3
  import type { ConversationEvent } from "../conversations/events.js";
3
4
  import type { StreamSink } from "./model-call.js";
4
5
  /** 一次运行交给 loop 的上下文(spec 4.4)。 */
@@ -91,3 +92,9 @@ export type LoopOutcome =
91
92
  export interface AgentLoop {
92
93
  run(ctx: LoopContext): Promise<LoopOutcome>;
93
94
  }
95
+ /**
96
+ * The wait of a step whose sub-agents still run (spec §7.2): id `sa-<runId>-<step>`, expiring after
97
+ * the approval timeout plus one run's duration plus 10 minutes (a child may itself wait for an
98
+ * approval); the timeout is a safety net.
99
+ */
100
+ export declare function subagentsWait(runId: string, step: number, config: Pick<KernelConfig, "tools" | "runtime">, now?: number): WaitingFor;
@@ -5,3 +5,17 @@
5
5
  export const subagentWaitingIdemKey = (childRunId, waitId) => `subagent_waiting:${childRunId}:${waitId}`;
6
6
  /** The id of a run's `subagents` wait in `step` (part of BullMQ job ids, so no `:`). */
7
7
  export const subagentsWaitId = (runId, step) => `sa-${runId}-${step}`;
8
+ /**
9
+ * The wait of a step whose sub-agents still run (spec §7.2): id `sa-<runId>-<step>`, expiring after
10
+ * the approval timeout plus one run's duration plus 10 minutes (a child may itself wait for an
11
+ * approval); the timeout is a safety net.
12
+ */
13
+ export function subagentsWait(runId, step, config, now = Date.now()) {
14
+ const ms = config.tools.approvalTimeoutHours * 3_600_000 + config.runtime.maxRunSeconds * 1000 + 600_000;
15
+ return {
16
+ kind: "subagents",
17
+ id: subagentsWaitId(runId, step),
18
+ expiresAt: new Date(now + ms).toISOString(),
19
+ step,
20
+ };
21
+ }
@@ -0,0 +1,10 @@
1
+ /**
2
+ * The kernel maintenance queue (no `:`): wait timeouts (`wait-timeout`, see waits.ts), one-off
3
+ * maintenance (sandbox destruction, connector drift, directory sync); no periodic jobs any more
4
+ * (they are `@LockedCron` / `@LockedInterval` jobs). The queue has one Worker (started on the `worker` role only) that
5
+ * dispatches by job name to the registered handlers. Separate from the run queues: their handler,
6
+ * stalled and failure handling assume "one job = one run"; maintenance jobs are short, with no
7
+ * conversation lock or quota. A leaf module, so providers that add jobs (orgs/directory-sync.ts)
8
+ * import the name without importing the worker (which imports their scheduler ids back).
9
+ */
10
+ export declare const MAINTENANCE_QUEUE_NAME = "cap-kernel-maintenance";
@@ -0,0 +1,10 @@
1
+ /**
2
+ * The kernel maintenance queue (no `:`): wait timeouts (`wait-timeout`, see waits.ts), one-off
3
+ * maintenance (sandbox destruction, connector drift, directory sync); no periodic jobs any more
4
+ * (they are `@LockedCron` / `@LockedInterval` jobs). The queue has one Worker (started on the `worker` role only) that
5
+ * dispatches by job name to the registered handlers. Separate from the run queues: their handler,
6
+ * stalled and failure handling assume "one job = one run"; maintenance jobs are short, with no
7
+ * conversation lock or quota. A leaf module, so providers that add jobs (orgs/directory-sync.ts)
8
+ * import the name without importing the worker (which imports their scheduler ids back).
9
+ */
10
+ export const MAINTENANCE_QUEUE_NAME = "cap-kernel-maintenance";
@@ -1,80 +1,51 @@
1
- import type { Logger } from "@capybara-hq/plugin-sdk";
2
- import { type Job, type JobsOptions } from "bullmq";
3
- import type { KernelDb } from "../db/kernel-schema.js";
1
+ import { WorkerHost } from "@nestjs/bullmq";
2
+ import type { Job, Queue, Worker } from "bullmq";
3
+ import { ScheduledRuns } from "../infra/schedule/scheduled-runs.js";
4
+ import type { KernelLogger } from "../log.js";
5
+ import { DirectorySync } from "../orgs/directory-sync.js";
6
+ import { SandboxService } from "../sandbox/sandbox.service.js";
7
+ import { ToolDrift } from "../tools/drift.js";
8
+ import { Waits } from "./waits.js";
9
+ export { MAINTENANCE_QUEUE_NAME } from "./maintenance-queue.js";
10
+ /** The maintenance worker's concurrency (as the hand-made worker had). */
11
+ export declare const MAINTENANCE_CONCURRENCY = 5;
4
12
  /**
5
- * 内核维护队列(不含 `:`):等待超时任务(`wait-timeout`,见 waits.ts)与周期性维护(输出存档清理、
6
- * 工具漂移检测(见 tools/drift.ts)、等待兜底扫描(`wait-sweep`,见 waits.ts)、沙箱的空闲休眠与不活跃销毁
7
- * (见 sandbox/lifecycle.ts)等)。整个队列只有一个 Worker(只在 `worker` 角色上启动),
8
- * 按任务名分派给登记的处理函数。
9
- * 与运行队列分开:运行 worker 的处理函数、stalled / 失败处理都按「一个任务 = 一次运行」设计;
10
- * 维护任务短、无会话锁与配额。
13
+ * The one consumer of `cap-kernel-maintenance` (decision R11 of the Nest kernel spec): dispatches
14
+ * each one-off job by name to its domain (`wait-timeout` → {@link Waits}, `sandbox-destroy-for` →
15
+ * {@link SandboxService}, `drift-connector` → {@link ToolDrift}, `directory-sync` →
16
+ * {@link DirectorySync}). The name of a periodic job (a `@LockedCron` / `@LockedInterval` job,
17
+ * such as `sandbox-suspend-idle`) runs that job's body once ({@link ScheduledRuns.runNow}), as the
18
+ * maintenance handlers did when those jobs were schedulers on this queue: an operator's or a
19
+ * test's one-off run, not a second schedule (decision R23 of the Nest kernel spec). Any other
20
+ * name is warned and completes. The producers are the domains' own (same names, ids and options).
11
21
  */
12
- export declare const MAINTENANCE_QUEUE_NAME = "cap-kernel-maintenance";
13
- /** 输出存档清理:任务名、job scheduler id(不含 `:`)、周期与每批删除行数。 */
14
- export declare const OUTPUT_CLEANUP_JOB = "output-cleanup";
15
- export declare const OUTPUT_CLEANUP_SCHEDULER_ID = "output-cleanup-hourly";
16
- export declare const OUTPUT_CLEANUP_EVERY_MS = 3600000;
17
- export declare const OUTPUT_CLEANUP_BATCH = 1000;
18
- /**
19
- * Periodic marketplace refresh (C26): job name and job scheduler id (no `:`), every
20
- * `marketplaces.refreshIntervalMinutes`. One scheduler for all replicas; the handler refreshes each
21
- * enabled marketplace in turn (see catalog/marketplaces.service.ts). The values keep their old
22
- * names: the scheduler id is stored in Redis, and renaming it would leave the old scheduler behind.
23
- */
24
- export declare const MARKETPLACES_REFRESH_JOB = "catalogs-refresh";
25
- export declare const MARKETPLACES_REFRESH_SCHEDULER_ID = "catalogs-refresh-every";
26
- /**
27
- * Cleanup of plugin (app bundle) import staging (T25, F-AE): job name and job scheduler id (no
28
- * `:`), hourly; deletes expired (24-hour) staging rows and their object storage prefixes (see
29
- * catalog/plugin-import.ts `PluginImport.cleanupExpired`). The values keep their old names: the
30
- * scheduler id is stored in Redis, so renaming it would leave the old scheduler behind.
31
- */
32
- export declare const PLUGIN_STAGING_CLEANUP_JOB = "app-staging-cleanup";
33
- export declare const PLUGIN_STAGING_CLEANUP_SCHEDULER_ID = "app-staging-cleanup-hourly";
34
- export declare const PLUGIN_STAGING_CLEANUP_EVERY_MS = 3600000;
35
- /** 维护任务的处理函数(`token` 供 `moveToDelayed` 等使用)。 */
36
- export type MaintenanceHandler = (job: Job, token: string | undefined) => Promise<void>;
37
- /** 由其他模块登记的周期任务(如漂移检测):scheduler id 与任务名不含 `:`,周期在登记时读取。 */
38
- export interface MaintenanceSchedule {
39
- id: string;
40
- name: string;
41
- everyMs: () => number;
42
- }
43
- /**
44
- * 删除已过期(`expires_at < now()`)的输出存档,每批 `batch` 行,直到删完;返回删除的总行数。
45
- * 每批一条独立语句(不开长事务);多个 worker 同时清理时 `SKIP LOCKED` 互不等待。
46
- */
47
- export declare function deleteExpiredOutputs(db: KernelDb, batch?: number): Promise<number>;
48
- export interface MaintenanceDeps {
49
- db: KernelDb;
50
- redisUrl: string;
51
- log: Pick<Logger, "error" | "warn" | "info">;
22
+ export declare class MaintenanceProcessor extends WorkerHost<Worker> {
23
+ private readonly waits;
24
+ private readonly sandbox;
25
+ private readonly drift;
26
+ private readonly directory;
27
+ private readonly scheduled;
28
+ private readonly log;
29
+ private readonly queue;
30
+ constructor(waits: Pick<Waits, "processTimeout">, sandbox: Pick<SandboxService, "destroyFor">, drift: Pick<ToolDrift, "check">, directory: Pick<DirectorySync, "runSyncJob">, scheduled: Pick<ScheduledRuns, "runNow">, log: Pick<KernelLogger, "error" | "warn">, queue: Pick<Queue, "removeJobScheduler">);
31
+ /**
32
+ * Removes the retired job schedulers (`RETIRED_SCHEDULER_IDS`, runtime/retired-schedulers.ts): every fixed-period
33
+ * maintenance job is a `@LockedCron` / `@LockedInterval` now. Idempotent; called once when a
34
+ * worker role starts.
35
+ */
36
+ removeRetiredSchedulers(): Promise<void>;
37
+ process(job: Job, token?: string): Promise<void>;
38
+ /** Starts consuming (worker role, after the extensions loaded; built with `autorun: false`). */
39
+ start(): void;
40
+ private dispatch;
41
+ failed(job: Job | undefined, err: Error): void;
42
+ error(err: Error): void;
52
43
  }
53
44
  /**
54
- * 维护队列的生产方与(worker 角色上的)唯一 Worker。状态都在 Redis / PG,没有进程内定时器:
55
- * 周期任务用 BullMQ job scheduler(`upsertJobScheduler` 幂等,多副本重复调用只有一个 scheduler)。
45
+ * The maintenance queue's consumer: {@link MaintenanceProcessor}. Imported only by the worker role
46
+ * (`WorkerModule`), so other roles get no processor and no BullMQ worker. It never starts by
47
+ * itself: the worker role (`WorkerRole`) removes the retired job schedulers and starts it after the
48
+ * extensions loaded.
56
49
  */
57
- export declare class Maintenance {
58
- private readonly d;
59
- private queue;
60
- private queueConn;
61
- private worker;
62
- private workerConn;
63
- private closed;
64
- private readonly handlers;
65
- private readonly schedules;
66
- constructor(d: MaintenanceDeps);
67
- /** 登记某个任务名的处理函数(构造期调用;Worker 启动前后都可)。 */
68
- handle(name: string, fn: MaintenanceHandler): void;
69
- /** 登记一个周期任务(构造期调用;`ensureSchedules` 时一并 upsert)。 */
70
- schedule(s: MaintenanceSchedule): void;
71
- /** 投递一个维护任务。 */
72
- add(name: string, data: unknown, opts: JobsOptions): Promise<void>;
73
- /** 登记周期任务的 job scheduler(幂等;worker 角色启动时调用)。 */
74
- ensureSchedules(): Promise<void>;
75
- /** 启动维护队列的 Worker(只在含 `worker` 角色的进程)。 */
76
- startWorker(): void;
77
- close(): Promise<void>;
78
- private getQueue;
79
- private process;
50
+ export declare class MaintenanceModule {
80
51
  }