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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (670) hide show
  1. package/dist/admin/admin.controller.d.ts +17 -17
  2. package/dist/admin/admin.controller.js +43 -26
  3. package/dist/admin/admin.module.d.ts +3 -0
  4. package/dist/admin/admin.module.js +22 -0
  5. package/dist/admin/extensions.controller.d.ts +14 -14
  6. package/dist/admin/extensions.controller.js +30 -17
  7. package/dist/admin/setup-lock.d.ts +16 -0
  8. package/dist/admin/setup-lock.js +47 -0
  9. package/dist/admin/setup.controller.d.ts +8 -8
  10. package/dist/admin/setup.controller.js +27 -25
  11. package/dist/admin/setup.service.d.ts +19 -27
  12. package/dist/admin/setup.service.js +61 -61
  13. package/dist/agents/agent-lookup.d.ts +53 -0
  14. package/dist/agents/agent-lookup.js +187 -0
  15. package/dist/agents/agents.controller.d.ts +1 -1
  16. package/dist/agents/agents.controller.js +14 -8
  17. package/dist/agents/agents.module.d.ts +7 -0
  18. package/dist/agents/agents.module.js +41 -0
  19. package/dist/agents/agents.service.d.ts +39 -58
  20. package/dist/agents/agents.service.js +280 -335
  21. package/dist/agents/definition.d.ts +39 -8
  22. package/dist/agents/definition.js +201 -17
  23. package/dist/agents/models.controller.d.ts +1 -1
  24. package/dist/agents/models.controller.js +2 -2
  25. package/dist/agents/templates.controller.d.ts +1 -1
  26. package/dist/agents/templates.controller.js +2 -2
  27. package/dist/agents/templates.d.ts +6 -8
  28. package/dist/agents/templates.js +39 -8
  29. package/dist/app.d.ts +93 -0
  30. package/dist/app.js +150 -0
  31. package/dist/catalog/admin-catalog.controller.d.ts +3 -3
  32. package/dist/catalog/admin-catalog.controller.js +27 -13
  33. package/dist/catalog/catalog-content.d.ts +185 -0
  34. package/dist/catalog/catalog-content.js +326 -0
  35. package/dist/catalog/catalog-items.d.ts +186 -0
  36. package/dist/catalog/catalog-items.js +410 -0
  37. package/dist/catalog/catalog.module.d.ts +14 -0
  38. package/dist/catalog/catalog.module.js +71 -0
  39. package/dist/catalog/catalog.service.d.ts +34 -188
  40. package/dist/catalog/catalog.service.js +155 -489
  41. package/dist/catalog/claude/agents.js +13 -10
  42. package/dist/catalog/cli.d.ts +3 -2
  43. package/dist/catalog/cli.js +13 -31
  44. package/dist/catalog/job-ids.d.ts +15 -0
  45. package/dist/catalog/job-ids.js +15 -0
  46. package/dist/catalog/jobs.d.ts +27 -0
  47. package/dist/catalog/jobs.js +70 -0
  48. package/dist/catalog/locks.d.ts +24 -0
  49. package/dist/catalog/locks.js +63 -0
  50. package/dist/catalog/marketplaces.controller.d.ts +4 -4
  51. package/dist/catalog/marketplaces.controller.js +22 -11
  52. package/dist/catalog/marketplaces.service.d.ts +31 -14
  53. package/dist/catalog/marketplaces.service.js +330 -256
  54. package/dist/catalog/org-catalog.controller.d.ts +4 -3
  55. package/dist/catalog/org-catalog.controller.js +29 -14
  56. package/dist/catalog/org-catalog.service.d.ts +32 -198
  57. package/dist/catalog/org-catalog.service.js +159 -400
  58. package/dist/catalog/plugin-import.d.ts +73 -34
  59. package/dist/catalog/plugin-import.js +356 -217
  60. package/dist/catalog/plugin-install.d.ts +83 -41
  61. package/dist/catalog/plugin-install.js +421 -269
  62. package/dist/catalog/plugin-upgrade.d.ts +59 -4
  63. package/dist/catalog/plugin-upgrade.js +407 -282
  64. package/dist/catalog/requests.service.d.ts +27 -15
  65. package/dist/catalog/requests.service.js +201 -145
  66. package/dist/catalog/upgrade-targets.d.ts +4 -7
  67. package/dist/channels/actions.d.ts +6 -4
  68. package/dist/channels/actions.js +1 -1
  69. package/dist/channels/cards.d.ts +10 -4
  70. package/dist/channels/cards.js +16 -8
  71. package/dist/channels/channels.module.d.ts +40 -0
  72. package/dist/channels/channels.module.js +128 -0
  73. package/dist/channels/connections.controller.d.ts +1 -1
  74. package/dist/channels/connections.controller.js +11 -6
  75. package/dist/channels/connections.service.d.ts +43 -21
  76. package/dist/channels/connections.service.js +236 -131
  77. package/dist/channels/inbound.d.ts +34 -38
  78. package/dist/channels/inbound.js +107 -41
  79. package/dist/channels/job-ids.d.ts +10 -0
  80. package/dist/channels/job-ids.js +10 -0
  81. package/dist/channels/jobs.d.ts +85 -0
  82. package/dist/channels/jobs.js +157 -0
  83. package/dist/channels/outbound.d.ts +60 -82
  84. package/dist/channels/outbound.js +165 -194
  85. package/dist/channels/supervisor.d.ts +88 -46
  86. package/dist/channels/supervisor.js +230 -132
  87. package/dist/channels/threads.d.ts +29 -8
  88. package/dist/channels/threads.js +71 -13
  89. package/dist/channels/webhook.d.ts +20 -14
  90. package/dist/channels/webhook.js +51 -20
  91. package/dist/config/load.d.ts +3 -2
  92. package/dist/config/load.js +3 -2
  93. package/dist/config/nacos-source.js +11 -2
  94. package/dist/config/schema.d.ts +1 -0
  95. package/dist/config/schema.js +12 -6
  96. package/dist/conversations/access.d.ts +29 -0
  97. package/dist/conversations/access.js +86 -0
  98. package/dist/conversations/artifacts.d.ts +11 -11
  99. package/dist/conversations/artifacts.js +36 -10
  100. package/dist/conversations/attachments.controller.d.ts +1 -1
  101. package/dist/conversations/attachments.controller.js +8 -6
  102. package/dist/conversations/attachments.module.d.ts +7 -0
  103. package/dist/conversations/attachments.module.js +25 -0
  104. package/dist/conversations/attachments.service.d.ts +30 -22
  105. package/dist/conversations/attachments.service.js +119 -46
  106. package/dist/conversations/conversations.controller.d.ts +8 -7
  107. package/dist/conversations/conversations.controller.js +59 -29
  108. package/dist/conversations/conversations.module.d.ts +8 -0
  109. package/dist/conversations/conversations.module.js +69 -0
  110. package/dist/conversations/conversations.service.d.ts +40 -38
  111. package/dist/conversations/conversations.service.js +130 -140
  112. package/dist/conversations/event-log.d.ts +39 -18
  113. package/dist/conversations/event-log.js +93 -27
  114. package/dist/conversations/events.d.ts +23 -3
  115. package/dist/conversations/events.js +26 -14
  116. package/dist/conversations/files.d.ts +10 -10
  117. package/dist/conversations/files.js +37 -11
  118. package/dist/conversations/idem-keys.d.ts +5 -0
  119. package/dist/conversations/idem-keys.js +5 -0
  120. package/dist/conversations/job-ids.d.ts +6 -0
  121. package/dist/conversations/job-ids.js +6 -0
  122. package/dist/conversations/outputs-read.d.ts +11 -11
  123. package/dist/conversations/outputs-read.js +31 -7
  124. package/dist/conversations/queue.d.ts +48 -56
  125. package/dist/conversations/queue.js +13 -289
  126. package/dist/conversations/queue.service.d.ts +60 -0
  127. package/dist/conversations/queue.service.js +343 -0
  128. package/dist/conversations/sandbox-status.d.ts +13 -10
  129. package/dist/conversations/sandbox-status.js +36 -8
  130. package/dist/conversations/titles.d.ts +71 -24
  131. package/dist/conversations/titles.js +159 -63
  132. package/dist/ctx/bus.js +9 -3
  133. package/dist/ctx/create-ctx.d.ts +6 -0
  134. package/dist/ctx/create-ctx.js +7 -9
  135. package/dist/ctx/lock.d.ts +7 -3
  136. package/dist/ctx/lock.js +9 -20
  137. package/dist/ctx/secrets.d.ts +10 -2
  138. package/dist/ctx/secrets.js +7 -3
  139. package/dist/db/kernel-schema.d.ts +4 -4
  140. package/dist/db/pool.d.ts +5 -0
  141. package/dist/db/pool.js +1 -0
  142. package/dist/errors.d.ts +1 -0
  143. package/dist/errors.js +1 -0
  144. package/dist/evals/budget.d.ts +42 -21
  145. package/dist/evals/budget.js +114 -62
  146. package/dist/evals/evals.module.d.ts +31 -0
  147. package/dist/evals/evals.module.js +114 -0
  148. package/dist/evals/jobs.d.ts +20 -0
  149. package/dist/evals/jobs.js +45 -0
  150. package/dist/evals/recorded-tools.d.ts +27 -1
  151. package/dist/evals/recorded-tools.js +85 -10
  152. package/dist/evals/run-replay.d.ts +61 -8
  153. package/dist/evals/run-replay.js +159 -85
  154. package/dist/evals/runs.controller.d.ts +1 -1
  155. package/dist/evals/runs.controller.js +17 -8
  156. package/dist/evals/runs.service.d.ts +23 -45
  157. package/dist/evals/runs.service.js +245 -234
  158. package/dist/evals/sets.controller.d.ts +1 -1
  159. package/dist/evals/sets.controller.js +17 -8
  160. package/dist/evals/sets.service.d.ts +22 -6
  161. package/dist/evals/sets.service.js +248 -194
  162. package/dist/evals/snapshot.d.ts +2 -2
  163. package/dist/evals/step-replay.d.ts +2 -2
  164. package/dist/evals/step-replay.js +1 -1
  165. package/dist/evals/trajectory.controller.d.ts +1 -1
  166. package/dist/evals/trajectory.controller.js +11 -7
  167. package/dist/evals/trajectory.d.ts +2 -2
  168. package/dist/evals/trajectory.service.d.ts +5 -4
  169. package/dist/evals/trajectory.service.js +30 -7
  170. package/dist/evals/worker.d.ts +44 -27
  171. package/dist/evals/worker.js +220 -121
  172. package/dist/extensions/admin-ops.d.ts +61 -33
  173. package/dist/extensions/admin-ops.js +248 -154
  174. package/dist/extensions/admin-view.d.ts +38 -27
  175. package/dist/extensions/admin-view.js +126 -55
  176. package/dist/extensions/approvals.d.ts +12 -8
  177. package/dist/extensions/approvals.js +73 -46
  178. package/dist/extensions/blobs.d.ts +27 -10
  179. package/dist/extensions/blobs.js +111 -45
  180. package/dist/extensions/bootstrap.d.ts +58 -31
  181. package/dist/extensions/bootstrap.js +175 -121
  182. package/dist/extensions/cli.d.ts +20 -10
  183. package/dist/extensions/cli.js +41 -96
  184. package/dist/extensions/config-issues.d.ts +7 -0
  185. package/dist/extensions/config-issues.js +31 -0
  186. package/dist/extensions/deployment-config-store.d.ts +49 -0
  187. package/dist/extensions/deployment-config-store.js +133 -0
  188. package/dist/extensions/deployment-config.d.ts +58 -67
  189. package/dist/extensions/deployment-config.js +202 -230
  190. package/dist/extensions/enabled.d.ts +5 -5
  191. package/dist/extensions/extensions.module.d.ts +8 -0
  192. package/dist/extensions/extensions.module.js +77 -0
  193. package/dist/extensions/hooks.d.ts +3 -2
  194. package/dist/extensions/hooks.js +1 -1
  195. package/dist/extensions/host.d.ts +72 -68
  196. package/dist/extensions/host.js +191 -152
  197. package/dist/extensions/installs.d.ts +49 -16
  198. package/dist/extensions/installs.js +128 -32
  199. package/dist/extensions/job-ids.d.ts +6 -0
  200. package/dist/extensions/job-ids.js +6 -0
  201. package/dist/extensions/lifecycle-topics.d.ts +18 -0
  202. package/dist/extensions/lifecycle-topics.js +18 -0
  203. package/dist/extensions/lifecycle.d.ts +35 -47
  204. package/dist/extensions/lifecycle.js +103 -39
  205. package/dist/extensions/locks.d.ts +33 -0
  206. package/dist/extensions/locks.js +86 -0
  207. package/dist/extensions/migrate-lock.d.ts +3 -4
  208. package/dist/extensions/org-config.controller.d.ts +1 -1
  209. package/dist/extensions/org-config.controller.js +8 -5
  210. package/dist/extensions/org-config.d.ts +48 -46
  211. package/dist/extensions/org-config.js +284 -226
  212. package/dist/extensions/registry.d.ts +50 -2
  213. package/dist/extensions/registry.js +89 -4
  214. package/dist/extensions/sources.d.ts +12 -8
  215. package/dist/extensions/sources.js +34 -13
  216. package/dist/files/files.module.d.ts +3 -0
  217. package/dist/files/files.module.js +22 -0
  218. package/dist/files/previewers.controller.d.ts +7 -2
  219. package/dist/files/previewers.controller.js +17 -9
  220. package/dist/files/previewers.d.ts +13 -18
  221. package/dist/files/previewers.js +83 -36
  222. package/dist/http/adapter.d.ts +3 -0
  223. package/dist/http/adapter.js +25 -0
  224. package/dist/http/api.module.d.ts +3 -110
  225. package/dist/http/api.module.js +47 -355
  226. package/dist/http/app.d.ts +11 -15
  227. package/dist/http/app.js +17 -62
  228. package/dist/http/error-filter.module.d.ts +5 -0
  229. package/dist/http/error-filter.module.js +18 -0
  230. package/dist/http/error.filter.js +2 -2
  231. package/dist/identity/accounts.d.ts +82 -29
  232. package/dist/identity/accounts.js +294 -175
  233. package/dist/identity/api-tokens.d.ts +11 -7
  234. package/dist/identity/api-tokens.js +71 -44
  235. package/dist/identity/audit.d.ts +7 -4
  236. package/dist/identity/audit.js +5 -1
  237. package/dist/identity/auth.controller.d.ts +11 -10
  238. package/dist/identity/auth.controller.js +31 -25
  239. package/dist/identity/auth.guard.d.ts +3 -3
  240. package/dist/identity/auth.guard.js +6 -4
  241. package/dist/identity/binding.d.ts +9 -11
  242. package/dist/identity/binding.js +41 -13
  243. package/dist/identity/enterprise-admin.d.ts +18 -12
  244. package/dist/identity/enterprise-admin.js +67 -13
  245. package/dist/identity/external-identity-lock.d.ts +17 -0
  246. package/dist/identity/external-identity-lock.js +39 -0
  247. package/dist/identity/external.d.ts +19 -15
  248. package/dist/identity/external.js +163 -125
  249. package/dist/identity/identity.module.d.ts +6 -0
  250. package/dist/identity/identity.module.js +56 -0
  251. package/dist/identity/me.controller.d.ts +16 -15
  252. package/dist/identity/me.controller.js +37 -31
  253. package/dist/identity/sessions.d.ts +12 -10
  254. package/dist/identity/sessions.js +74 -42
  255. package/dist/identity/settings.d.ts +20 -14
  256. package/dist/identity/settings.js +86 -58
  257. package/dist/identity/sso.controller.d.ts +7 -7
  258. package/dist/identity/sso.controller.js +13 -9
  259. package/dist/identity/sso.d.ts +9 -12
  260. package/dist/identity/sso.js +54 -24
  261. package/dist/inbox/inbox.module.d.ts +3 -0
  262. package/dist/inbox/inbox.module.js +22 -0
  263. package/dist/inbox/inbox.service.d.ts +7 -9
  264. package/dist/inbox/inbox.service.js +32 -11
  265. package/dist/index.d.ts +16 -11
  266. package/dist/index.js +9 -6
  267. package/dist/infra/cache/cache.module.d.ts +3 -0
  268. package/dist/infra/cache/cache.module.js +16 -0
  269. package/dist/infra/cache/cache.service.d.ts +21 -0
  270. package/dist/infra/cache/cache.service.js +80 -0
  271. package/dist/infra/cache/cacheable.decorator.d.ts +32 -0
  272. package/dist/infra/cache/cacheable.decorator.js +83 -0
  273. package/dist/infra/cli/kernel-cli.module.d.ts +66 -0
  274. package/dist/infra/cli/kernel-cli.module.js +165 -0
  275. package/dist/infra/close-within.d.ts +15 -0
  276. package/dist/infra/close-within.js +36 -0
  277. package/dist/infra/config/config.module.d.ts +13 -0
  278. package/dist/infra/config/config.module.js +39 -0
  279. package/dist/infra/config/kernel-config.service.d.ts +25 -0
  280. package/dist/infra/config/kernel-config.service.js +126 -0
  281. package/dist/infra/database/after-commit.d.ts +6 -0
  282. package/dist/infra/database/after-commit.js +9 -0
  283. package/dist/infra/database/database.module.d.ts +25 -0
  284. package/dist/infra/database/database.module.js +90 -0
  285. package/dist/infra/database/kernel-db.d.ts +22 -0
  286. package/dist/infra/database/kernel-db.js +65 -0
  287. package/dist/infra/database/transaction-host.d.ts +50 -0
  288. package/dist/infra/database/transaction-host.js +125 -0
  289. package/dist/infra/database/transactional.decorator.d.ts +15 -0
  290. package/dist/infra/database/transactional.decorator.js +27 -0
  291. package/dist/infra/database/xact-lock.d.ts +17 -0
  292. package/dist/infra/database/xact-lock.js +43 -0
  293. package/dist/infra/events/kernel-events.d.ts +96 -0
  294. package/dist/infra/events/kernel-events.js +65 -0
  295. package/dist/infra/health/health.controller.d.ts +26 -0
  296. package/dist/infra/health/health.controller.js +104 -0
  297. package/dist/infra/health/health.module.d.ts +9 -0
  298. package/dist/infra/health/health.module.js +24 -0
  299. package/dist/infra/health/health.options.d.ts +10 -0
  300. package/dist/infra/health/health.options.js +15 -0
  301. package/dist/infra/health/shutdown-state.d.ts +6 -0
  302. package/dist/infra/health/shutdown-state.js +2 -0
  303. package/dist/infra/lifecycle/graceful-shutdown.module.d.ts +6 -0
  304. package/dist/infra/lifecycle/graceful-shutdown.module.js +23 -0
  305. package/dist/infra/lifecycle/graceful-shutdown.service.d.ts +70 -0
  306. package/dist/infra/lifecycle/graceful-shutdown.service.js +135 -0
  307. package/dist/infra/lifecycle/process-guards.d.ts +52 -0
  308. package/dist/infra/lifecycle/process-guards.js +86 -0
  309. package/dist/infra/lifecycle/shutdown-signals.d.ts +30 -0
  310. package/dist/infra/lifecycle/shutdown-signals.js +48 -0
  311. package/dist/infra/lock/key-template.d.ts +13 -0
  312. package/dist/infra/lock/key-template.js +46 -0
  313. package/dist/infra/lock/lock.module.d.ts +3 -0
  314. package/dist/infra/lock/lock.module.js +16 -0
  315. package/dist/infra/lock/lock.service.d.ts +120 -0
  316. package/dist/infra/lock/lock.service.js +343 -0
  317. package/dist/infra/lock/shared-lease.d.ts +44 -0
  318. package/dist/infra/lock/shared-lease.js +121 -0
  319. package/dist/infra/lock/with-lock.decorator.d.ts +28 -0
  320. package/dist/infra/lock/with-lock.decorator.js +49 -0
  321. package/dist/infra/logging/logging.module.d.ts +16 -0
  322. package/dist/infra/logging/logging.module.js +34 -0
  323. package/dist/infra/queue/configured-processor.d.ts +18 -0
  324. package/dist/infra/queue/configured-processor.js +23 -0
  325. package/dist/infra/queue/job-failure.d.ts +18 -0
  326. package/dist/infra/queue/job-failure.js +26 -0
  327. package/dist/infra/queue/queue-shutdown.d.ts +27 -0
  328. package/dist/infra/queue/queue-shutdown.js +81 -0
  329. package/dist/infra/queue/queue.module.d.ts +16 -0
  330. package/dist/infra/queue/queue.module.js +61 -0
  331. package/dist/infra/queue/redis-connection.d.ts +7 -0
  332. package/dist/infra/queue/redis-connection.js +18 -0
  333. package/dist/infra/queue/retired-schedulers.d.ts +7 -0
  334. package/dist/infra/queue/retired-schedulers.js +9 -0
  335. package/dist/infra/queue/run-job.d.ts +16 -0
  336. package/dist/infra/queue/run-job.js +19 -0
  337. package/dist/infra/redis/redis.module.d.ts +24 -0
  338. package/dist/infra/redis/redis.module.js +87 -0
  339. package/dist/infra/schedule/cron-tick.d.ts +12 -0
  340. package/dist/infra/schedule/cron-tick.js +25 -0
  341. package/dist/infra/schedule/locked-cron.decorator.d.ts +27 -0
  342. package/dist/infra/schedule/locked-cron.decorator.js +53 -0
  343. package/dist/infra/schedule/locked-interval.d.ts +69 -0
  344. package/dist/infra/schedule/locked-interval.js +190 -0
  345. package/dist/infra/schedule/locked-tick.d.ts +90 -0
  346. package/dist/infra/schedule/locked-tick.js +137 -0
  347. package/dist/infra/schedule/schedule.module.d.ts +8 -0
  348. package/dist/infra/schedule/schedule.module.js +27 -0
  349. package/dist/infra/schedule/scheduled-runs.d.ts +69 -0
  350. package/dist/infra/schedule/scheduled-runs.js +163 -0
  351. package/dist/infra/swagger/swagger.d.ts +16 -0
  352. package/dist/infra/swagger/swagger.js +31 -0
  353. package/dist/infra/throttler/credential-throttler.d.ts +35 -0
  354. package/dist/infra/throttler/credential-throttler.js +77 -0
  355. package/dist/infra/throttler/named-throttlers.d.ts +31 -0
  356. package/dist/infra/throttler/named-throttlers.js +119 -0
  357. package/dist/infra/throttler/redis-throttler-storage.d.ts +38 -0
  358. package/dist/infra/throttler/redis-throttler-storage.js +130 -0
  359. package/dist/infra/throttler/throttler.guard.d.ts +23 -0
  360. package/dist/infra/throttler/throttler.guard.js +68 -0
  361. package/dist/infra/throttler/throttler.module.d.ts +15 -0
  362. package/dist/infra/throttler/throttler.module.js +53 -0
  363. package/dist/infra/tokens.d.ts +15 -0
  364. package/dist/infra/tokens.js +15 -0
  365. package/dist/infra/validation/create-zod-dto.d.ts +23 -0
  366. package/dist/infra/validation/create-zod-dto.js +35 -0
  367. package/dist/infra/validation/parse-with-zod.d.ts +7 -0
  368. package/dist/infra/validation/parse-with-zod.js +12 -0
  369. package/dist/infra/validation/validation.module.d.ts +3 -0
  370. package/dist/infra/validation/validation.module.js +16 -0
  371. package/dist/infra/validation/zod-params.d.ts +7 -0
  372. package/dist/infra/validation/zod-params.js +42 -0
  373. package/dist/infra/validation/zod-validation.pipe.d.ts +11 -0
  374. package/dist/infra/validation/zod-validation.pipe.js +31 -0
  375. package/dist/kernel.d.ts +9 -244
  376. package/dist/kernel.js +8 -1305
  377. package/dist/kernel.module.d.ts +17 -0
  378. package/dist/kernel.module.js +136 -0
  379. package/dist/lifecycle/kernel-lifecycle.d.ts +140 -0
  380. package/dist/lifecycle/kernel-lifecycle.js +456 -0
  381. package/dist/lifecycle/tokens.d.ts +3 -0
  382. package/dist/lifecycle/tokens.js +3 -0
  383. package/dist/log-context.d.ts +2 -0
  384. package/dist/log-context.js +4 -0
  385. package/dist/models/models.module.d.ts +3 -0
  386. package/dist/models/models.module.js +24 -0
  387. package/dist/models/prices.d.ts +8 -2
  388. package/dist/models/prices.js +65 -37
  389. package/dist/models/purposes.controller.d.ts +1 -1
  390. package/dist/models/purposes.controller.js +5 -6
  391. package/dist/models/purposes.d.ts +35 -13
  392. package/dist/models/purposes.js +101 -51
  393. package/dist/orgs/directory-sync.controller.d.ts +1 -1
  394. package/dist/orgs/directory-sync.controller.js +2 -2
  395. package/dist/orgs/directory-sync.d.ts +61 -31
  396. package/dist/orgs/directory-sync.js +212 -125
  397. package/dist/orgs/invitations.controller.d.ts +8 -8
  398. package/dist/orgs/invitations.controller.js +27 -26
  399. package/dist/orgs/invitations.service.d.ts +12 -9
  400. package/dist/orgs/invitations.service.js +130 -92
  401. package/dist/orgs/job-ids.d.ts +8 -0
  402. package/dist/orgs/job-ids.js +8 -0
  403. package/dist/orgs/members.service.d.ts +19 -12
  404. package/dist/orgs/members.service.js +161 -117
  405. package/dist/orgs/offboarding.d.ts +54 -57
  406. package/dist/orgs/offboarding.js +161 -71
  407. package/dist/orgs/org-lock.d.ts +28 -19
  408. package/dist/orgs/org-lock.js +81 -35
  409. package/dist/orgs/org.guard.d.ts +1 -1
  410. package/dist/orgs/org.guard.js +2 -2
  411. package/dist/orgs/orgs.controller.d.ts +13 -13
  412. package/dist/orgs/orgs.controller.js +29 -17
  413. package/dist/orgs/orgs.module.d.ts +6 -0
  414. package/dist/orgs/orgs.module.js +68 -0
  415. package/dist/orgs/orgs.service.d.ts +30 -19
  416. package/dist/orgs/orgs.service.js +139 -86
  417. package/dist/orgs/settings.controller.d.ts +1 -1
  418. package/dist/orgs/settings.controller.js +8 -6
  419. package/dist/orgs/settings.service.d.ts +16 -10
  420. package/dist/orgs/settings.service.js +77 -48
  421. package/dist/overrides.d.ts +56 -0
  422. package/dist/overrides.js +30 -0
  423. package/dist/roles/gateway-role.d.ts +43 -0
  424. package/dist/roles/gateway-role.js +98 -0
  425. package/dist/roles/gateway.module.d.ts +8 -0
  426. package/dist/roles/gateway.module.js +28 -0
  427. package/dist/roles/worker-role.d.ts +63 -0
  428. package/dist/roles/worker-role.js +144 -0
  429. package/dist/roles/worker.module.d.ts +14 -0
  430. package/dist/roles/worker.module.js +90 -0
  431. package/dist/runtime/abort.js +19 -2
  432. package/dist/runtime/checkpointer.d.ts +8 -3
  433. package/dist/runtime/checkpointer.js +87 -55
  434. package/dist/runtime/context/build.d.ts +6 -6
  435. package/dist/runtime/context/build.js +18 -8
  436. package/dist/runtime/context/claude-tools.d.ts +2 -1
  437. package/dist/runtime/context/claude-tools.js +9 -10
  438. package/dist/runtime/context/legacy-text.d.ts +22 -0
  439. package/dist/runtime/context/legacy-text.js +37 -0
  440. package/dist/runtime/context/skills.d.ts +29 -11
  441. package/dist/runtime/context/skills.js +37 -30
  442. package/dist/runtime/conversation-lock.d.ts +20 -11
  443. package/dist/runtime/conversation-lock.js +62 -72
  444. package/dist/runtime/hook-calls.d.ts +3 -3
  445. package/dist/runtime/hook-calls.js +1 -6
  446. package/dist/runtime/job-ids.d.ts +10 -0
  447. package/dist/runtime/job-ids.js +10 -0
  448. package/dist/runtime/langgraph-loop.js +1 -1
  449. package/dist/runtime/loop.d.ts +8 -1
  450. package/dist/runtime/loop.js +14 -0
  451. package/dist/runtime/maintenance-queue.d.ts +10 -0
  452. package/dist/runtime/maintenance-queue.js +10 -0
  453. package/dist/runtime/maintenance.d.ts +45 -74
  454. package/dist/runtime/maintenance.js +139 -137
  455. package/dist/runtime/model-call.d.ts +7 -4
  456. package/dist/runtime/model-call.js +25 -58
  457. package/dist/runtime/providers.d.ts +17 -6
  458. package/dist/runtime/providers.js +66 -25
  459. package/dist/runtime/quota.d.ts +17 -3
  460. package/dist/runtime/quota.js +27 -2
  461. package/dist/runtime/retired-schedulers.d.ts +7 -0
  462. package/dist/runtime/retired-schedulers.js +31 -0
  463. package/dist/runtime/run-control.d.ts +33 -0
  464. package/dist/runtime/run-control.js +77 -0
  465. package/dist/runtime/run-finish.d.ts +27 -18
  466. package/dist/runtime/run-finish.js +98 -51
  467. package/dist/runtime/run-jobs.d.ts +48 -0
  468. package/dist/runtime/run-jobs.js +95 -0
  469. package/dist/runtime/run-processors.d.ts +60 -0
  470. package/dist/runtime/run-processors.js +185 -0
  471. package/dist/runtime/run-queue.d.ts +32 -57
  472. package/dist/runtime/run-queue.js +291 -295
  473. package/dist/runtime/run-steps.d.ts +39 -0
  474. package/dist/runtime/run-steps.js +96 -0
  475. package/dist/runtime/run-worker.d.ts +122 -76
  476. package/dist/runtime/run-worker.js +343 -229
  477. package/dist/runtime/runtime.module.d.ts +10 -0
  478. package/dist/runtime/runtime.module.js +112 -0
  479. package/dist/runtime/step-log.d.ts +40 -0
  480. package/dist/runtime/step-log.js +94 -0
  481. package/dist/runtime/stream.controller.d.ts +5 -8
  482. package/dist/runtime/stream.controller.js +14 -12
  483. package/dist/runtime/stream.d.ts +24 -6
  484. package/dist/runtime/stream.js +78 -7
  485. package/dist/runtime/subagents/child.d.ts +3 -44
  486. package/dist/runtime/subagents/child.js +0 -79
  487. package/dist/runtime/subagents/definition.d.ts +5 -10
  488. package/dist/runtime/subagents/definition.js +13 -14
  489. package/dist/runtime/subagents/dispatch.d.ts +89 -8
  490. package/dist/runtime/subagents/dispatch.js +137 -142
  491. package/dist/runtime/subagents/limits.d.ts +9 -4
  492. package/dist/runtime/subagents/limits.js +4 -2
  493. package/dist/runtime/subagents/org-agents.d.ts +4 -4
  494. package/dist/runtime/subagents/org-agents.js +3 -2
  495. package/dist/runtime/subagents/progress.d.ts +2 -2
  496. package/dist/runtime/subagents/roster.d.ts +4 -4
  497. package/dist/runtime/subagents/roster.js +2 -2
  498. package/dist/runtime/subagents/skill-fork.d.ts +8 -9
  499. package/dist/runtime/subagents/skill-fork.js +17 -6
  500. package/dist/runtime/subagents/subagents.service.d.ts +40 -0
  501. package/dist/runtime/subagents/subagents.service.js +101 -0
  502. package/dist/runtime/usage-report.d.ts +94 -52
  503. package/dist/runtime/usage-report.js +200 -100
  504. package/dist/runtime/waits.d.ts +127 -59
  505. package/dist/runtime/waits.js +433 -210
  506. package/dist/sandbox/job-ids.d.ts +10 -0
  507. package/dist/sandbox/job-ids.js +10 -0
  508. package/dist/sandbox/jobs.d.ts +41 -0
  509. package/dist/sandbox/jobs.js +113 -0
  510. package/dist/sandbox/leases.d.ts +39 -31
  511. package/dist/sandbox/leases.js +117 -257
  512. package/dist/sandbox/providers.d.ts +19 -0
  513. package/dist/sandbox/providers.js +38 -0
  514. package/dist/sandbox/sandbox.module.d.ts +8 -0
  515. package/dist/sandbox/sandbox.module.js +30 -0
  516. package/dist/sandbox/sandbox.service.d.ts +24 -29
  517. package/dist/sandbox/sandbox.service.js +106 -75
  518. package/dist/skills/catalog.d.ts +37 -24
  519. package/dist/skills/catalog.js +100 -57
  520. package/dist/skills/changes.controller.d.ts +4 -4
  521. package/dist/skills/changes.controller.js +15 -9
  522. package/dist/skills/changes.service.d.ts +30 -20
  523. package/dist/skills/changes.service.js +425 -367
  524. package/dist/skills/invocable.controller.d.ts +1 -1
  525. package/dist/skills/invocable.controller.js +8 -5
  526. package/dist/skills/invocation-keys.d.ts +1 -1
  527. package/dist/skills/invocation-keys.js +1 -1
  528. package/dist/skills/invoke.d.ts +17 -16
  529. package/dist/skills/invoke.js +53 -21
  530. package/dist/skills/skills.controller.d.ts +1 -1
  531. package/dist/skills/skills.controller.js +11 -6
  532. package/dist/skills/skills.module.d.ts +6 -0
  533. package/dist/skills/skills.module.js +30 -0
  534. package/dist/skills/skills.service.d.ts +47 -30
  535. package/dist/skills/skills.service.js +221 -158
  536. package/dist/storage/job-ids.d.ts +6 -0
  537. package/dist/storage/job-ids.js +6 -0
  538. package/dist/storage/purge.d.ts +22 -7
  539. package/dist/storage/purge.js +55 -3
  540. package/dist/storage/storage.module.d.ts +6 -0
  541. package/dist/storage/storage.module.js +23 -0
  542. package/dist/storage/storage.service.d.ts +18 -4
  543. package/dist/storage/storage.service.js +44 -3
  544. package/dist/tools/approvals.controller.d.ts +1 -1
  545. package/dist/tools/approvals.controller.js +12 -8
  546. package/dist/tools/approvals.service.d.ts +33 -25
  547. package/dist/tools/approvals.service.js +343 -259
  548. package/dist/tools/breaker.d.ts +2 -2
  549. package/dist/tools/breaker.js +21 -3
  550. package/dist/tools/builtin-names.d.ts +73 -0
  551. package/dist/tools/builtin-names.js +116 -0
  552. package/dist/tools/builtins/agent.d.ts +7 -7
  553. package/dist/tools/builtins/agent.js +7 -11
  554. package/dist/tools/builtins/ask-user.d.ts +3 -3
  555. package/dist/tools/builtins/ask-user.js +3 -3
  556. package/dist/tools/builtins/builtin-tools.d.ts +21 -0
  557. package/dist/tools/builtins/builtin-tools.js +80 -0
  558. package/dist/tools/builtins/read-tool-output.d.ts +3 -3
  559. package/dist/tools/builtins/read-tool-output.js +3 -3
  560. package/dist/tools/builtins/sandbox/bash.d.ts +5 -5
  561. package/dist/tools/builtins/sandbox/bash.js +33 -30
  562. package/dist/tools/builtins/sandbox/common.d.ts +5 -4
  563. package/dist/tools/builtins/sandbox/common.js +2 -2
  564. package/dist/tools/builtins/sandbox/deliver.d.ts +1 -1
  565. package/dist/tools/builtins/sandbox/deliver.js +13 -13
  566. package/dist/tools/builtins/sandbox/edit.d.ts +1 -1
  567. package/dist/tools/builtins/sandbox/edit.js +42 -31
  568. package/dist/tools/builtins/sandbox/file-state.d.ts +34 -0
  569. package/dist/tools/builtins/sandbox/file-state.js +34 -0
  570. package/dist/tools/builtins/sandbox/glob-match.d.ts +1 -1
  571. package/dist/tools/builtins/sandbox/glob-match.js +1 -1
  572. package/dist/tools/builtins/sandbox/glob.d.ts +1 -1
  573. package/dist/tools/builtins/sandbox/glob.js +6 -6
  574. package/dist/tools/builtins/sandbox/grep.d.ts +7 -4
  575. package/dist/tools/builtins/sandbox/grep.js +149 -32
  576. package/dist/tools/builtins/sandbox/index.d.ts +1 -1
  577. package/dist/tools/builtins/sandbox/index.js +1 -1
  578. package/dist/tools/builtins/sandbox/read.d.ts +2 -2
  579. package/dist/tools/builtins/sandbox/read.js +22 -15
  580. package/dist/tools/builtins/sandbox/write.d.ts +1 -1
  581. package/dist/tools/builtins/sandbox/write.js +38 -34
  582. package/dist/tools/builtins/skill-load.d.ts +6 -6
  583. package/dist/tools/builtins/skill-load.js +33 -17
  584. package/dist/tools/builtins/skill-write.d.ts +4 -4
  585. package/dist/tools/builtins/skill-write.js +10 -10
  586. package/dist/tools/builtins/tool-search.d.ts +13 -9
  587. package/dist/tools/builtins/tool-search.js +25 -14
  588. package/dist/tools/canonical-json.d.ts +6 -0
  589. package/dist/tools/canonical-json.js +16 -0
  590. package/dist/tools/connector-content.controller.d.ts +1 -1
  591. package/dist/tools/connector-content.controller.js +11 -6
  592. package/dist/tools/connector-content.d.ts +12 -15
  593. package/dist/tools/connector-content.js +53 -18
  594. package/dist/tools/connectors.controller.d.ts +1 -1
  595. package/dist/tools/connectors.controller.js +21 -10
  596. package/dist/tools/connectors.service.d.ts +31 -13
  597. package/dist/tools/connectors.service.js +438 -348
  598. package/dist/tools/credentials.d.ts +17 -20
  599. package/dist/tools/credentials.js +55 -34
  600. package/dist/tools/display-names.d.ts +9 -0
  601. package/dist/tools/display-names.js +24 -0
  602. package/dist/tools/drift.d.ts +29 -41
  603. package/dist/tools/drift.js +116 -84
  604. package/dist/tools/elicitation.js +1 -1
  605. package/dist/tools/info.d.ts +32 -13
  606. package/dist/tools/info.js +88 -39
  607. package/dist/tools/job-ids.d.ts +13 -0
  608. package/dist/tools/job-ids.js +15 -0
  609. package/dist/tools/jobs.d.ts +24 -0
  610. package/dist/tools/jobs.js +69 -0
  611. package/dist/tools/legacy-data.d.ts +34 -0
  612. package/dist/tools/legacy-data.js +76 -0
  613. package/dist/tools/legacy-keys.d.ts +51 -0
  614. package/dist/tools/legacy-keys.js +115 -0
  615. package/dist/tools/naming.d.ts +1 -5
  616. package/dist/tools/naming.js +1 -7
  617. package/dist/tools/oauth/flow-paths.d.ts +16 -0
  618. package/dist/tools/oauth/flow-paths.js +38 -0
  619. package/dist/tools/oauth/flow.d.ts +30 -30
  620. package/dist/tools/oauth/flow.js +109 -81
  621. package/dist/tools/oauth/oauth.controller.d.ts +3 -3
  622. package/dist/tools/oauth/oauth.controller.js +12 -9
  623. package/dist/tools/oauth/tokens.d.ts +11 -3
  624. package/dist/tools/oauth/tokens.js +15 -14
  625. package/dist/tools/outputs.d.ts +13 -4
  626. package/dist/tools/outputs.js +48 -4
  627. package/dist/tools/pipeline.d.ts +72 -50
  628. package/dist/tools/pipeline.js +239 -100
  629. package/dist/tools/policy.d.ts +3 -16
  630. package/dist/tools/policy.js +13 -19
  631. package/dist/tools/questions.controller.d.ts +2 -2
  632. package/dist/tools/questions.controller.js +9 -6
  633. package/dist/tools/questions.service.d.ts +26 -25
  634. package/dist/tools/questions.service.js +201 -142
  635. package/dist/tools/registry.d.ts +43 -38
  636. package/dist/tools/registry.js +100 -72
  637. package/dist/tools/resources.d.ts +1 -1
  638. package/dist/tools/resources.js +1 -1
  639. package/dist/tools/specs.d.ts +5 -4
  640. package/dist/tools/specs.js +3 -1
  641. package/dist/tools/tools.module.d.ts +10 -0
  642. package/dist/tools/tools.module.js +91 -0
  643. package/dist/ui/call-extension.d.ts +16 -0
  644. package/dist/ui/call-extension.js +38 -0
  645. package/dist/ui/embed-token.d.ts +9 -5
  646. package/dist/ui/embed-token.js +34 -6
  647. package/dist/ui/ui-stream.d.ts +22 -17
  648. package/dist/ui/ui-stream.js +72 -12
  649. package/dist/ui/ui.module.d.ts +7 -0
  650. package/dist/ui/ui.module.js +28 -0
  651. package/dist/ui/views.controller.d.ts +14 -12
  652. package/dist/ui/views.controller.js +32 -25
  653. package/dist/ui/views.d.ts +9 -57
  654. package/dist/ui/views.js +43 -45
  655. package/package.json +10 -3
  656. package/src/migrations/0063_tool_keys_claude_code.sql +220 -0
  657. package/dist/http/health.controller.d.ts +0 -26
  658. package/dist/http/health.controller.js +0 -79
  659. package/dist/http/tokens.d.ts +0 -131
  660. package/dist/http/tokens.js +0 -131
  661. package/dist/http/zod.pipe.d.ts +0 -8
  662. package/dist/http/zod.pipe.js +0 -14
  663. package/dist/identity/rate-limit.d.ts +0 -55
  664. package/dist/identity/rate-limit.js +0 -121
  665. package/dist/sandbox/lifecycle.d.ts +0 -21
  666. package/dist/sandbox/lifecycle.js +0 -68
  667. package/dist/tools/builtins/sandbox/names.d.ts +0 -7
  668. package/dist/tools/builtins/sandbox/names.js +0 -20
  669. /package/dist/http/{gateway.module.d.ts → gateway-routes.d.ts} +0 -0
  670. /package/dist/http/{gateway.module.js → gateway-routes.js} +0 -0
@@ -1,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)。 */
@@ -52,7 +53,7 @@ export interface SubagentParent {
52
53
  otherAgent?: boolean;
53
54
  }
54
55
  /**
55
- * 运行在等什么人处理:审批(`approvals` 行)或输入请求(`questions` 行,统一承载 `ask_user`、
56
+ * 运行在等什么人处理:审批(`approvals` 行)或输入请求(`questions` 行,统一承载 `AskUserQuestion`、
56
57
  * 插件工具的 `input_required` 与 MCP elicitation)。`expiresAt` 为 ISO 时间。
57
58
  * `subagents` (phase C, spec §7.2): sub-agents dispatched in a step are still running; the id is
58
59
  * `sa-<runId>-<step>` (no `:`, it is part of BullMQ job ids).
@@ -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
  }
@@ -1,148 +1,150 @@
1
- import { Queue, Worker } from "bullmq";
2
- import { sql } from "kysely";
3
- import { withJobContext } from "../log-context.js";
4
- import { bullConnection } from "./run-queue.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 { getQueueToken, OnWorkerEvent, WorkerHost } from "@nestjs/bullmq";
11
+ import { Inject, Injectable, Module } from "@nestjs/common";
12
+ import { configuredProcessor } from "../infra/queue/configured-processor.js";
13
+ import { QueueModule } from "../infra/queue/queue.module.js";
14
+ import { removeRetiredSchedulers } from "../infra/queue/retired-schedulers.js";
15
+ import { runJob } from "../infra/queue/run-job.js";
16
+ import { KernelScheduleModule } from "../infra/schedule/schedule.module.js";
17
+ import { ScheduledRuns } from "../infra/schedule/scheduled-runs.js";
18
+ import { KERNEL_LOGGER } from "../infra/tokens.js";
19
+ import { DIRECTORY_SYNC_JOB, DirectorySync } from "../orgs/directory-sync.js";
20
+ import { OrgsModule } from "../orgs/orgs.module.js";
21
+ import { runSandboxDestroyFor, SANDBOX_DESTROY_FOR_JOB } from "../sandbox/jobs.js";
22
+ import { SandboxModule } from "../sandbox/sandbox.module.js";
23
+ import { SandboxService } from "../sandbox/sandbox.service.js";
24
+ import { ToolDrift } from "../tools/drift.js";
25
+ import { DRIFT_CONNECTOR_JOB } from "../tools/job-ids.js";
26
+ import { ToolsModule } from "../tools/tools.module.js";
27
+ import { MAINTENANCE_QUEUE_NAME } from "./maintenance-queue.js";
28
+ import { RETIRED_SCHEDULER_IDS } from "./retired-schedulers.js";
29
+ import { RuntimeModule } from "./runtime.module.js";
30
+ import { WAIT_TIMEOUT_JOB, Waits } from "./waits.js";
31
+ export { MAINTENANCE_QUEUE_NAME } from "./maintenance-queue.js";
32
+ /** The maintenance worker's concurrency (as the hand-made worker had). */
33
+ export const MAINTENANCE_CONCURRENCY = 5;
5
34
  /**
6
- * 内核维护队列(不含 `:`):等待超时任务(`wait-timeout`,见 waits.ts)与周期性维护(输出存档清理、
7
- * 工具漂移检测(见 tools/drift.ts)、等待兜底扫描(`wait-sweep`,见 waits.ts)、沙箱的空闲休眠与不活跃销毁
8
- * (见 sandbox/lifecycle.ts)等)。整个队列只有一个 Worker(只在 `worker` 角色上启动),
9
- * 按任务名分派给登记的处理函数。
10
- * 与运行队列分开:运行 worker 的处理函数、stalled / 失败处理都按「一个任务 = 一次运行」设计;
11
- * 维护任务短、无会话锁与配额。
35
+ * The one consumer of `cap-kernel-maintenance` (decision R11 of the Nest kernel spec): dispatches
36
+ * each one-off job by name to its domain (`wait-timeout` → {@link Waits}, `sandbox-destroy-for` →
37
+ * {@link SandboxService}, `drift-connector` → {@link ToolDrift}, `directory-sync` →
38
+ * {@link DirectorySync}). The name of a periodic job (a `@LockedCron` / `@LockedInterval` job,
39
+ * such as `sandbox-suspend-idle`) runs that job's body once ({@link ScheduledRuns.runNow}), as the
40
+ * maintenance handlers did when those jobs were schedulers on this queue: an operator's or a
41
+ * test's one-off run, not a second schedule (decision R23 of the Nest kernel spec). Any other
42
+ * name is warned and completes. The producers are the domains' own (same names, ids and options).
12
43
  */
13
- export const MAINTENANCE_QUEUE_NAME = "cap-kernel-maintenance";
14
- /** 输出存档清理:任务名、job scheduler id(不含 `:`)、周期与每批删除行数。 */
15
- export const OUTPUT_CLEANUP_JOB = "output-cleanup";
16
- export const OUTPUT_CLEANUP_SCHEDULER_ID = "output-cleanup-hourly";
17
- export const OUTPUT_CLEANUP_EVERY_MS = 3_600_000;
18
- export const OUTPUT_CLEANUP_BATCH = 1000;
19
- /**
20
- * Periodic marketplace refresh (C26): job name and job scheduler id (no `:`), every
21
- * `marketplaces.refreshIntervalMinutes`. One scheduler for all replicas; the handler refreshes each
22
- * enabled marketplace in turn (see catalog/marketplaces.service.ts). The values keep their old
23
- * names: the scheduler id is stored in Redis, and renaming it would leave the old scheduler behind.
24
- */
25
- export const MARKETPLACES_REFRESH_JOB = "catalogs-refresh";
26
- export const MARKETPLACES_REFRESH_SCHEDULER_ID = "catalogs-refresh-every";
27
- /**
28
- * Cleanup of plugin (app bundle) import staging (T25, F-AE): job name and job scheduler id (no
29
- * `:`), hourly; deletes expired (24-hour) staging rows and their object storage prefixes (see
30
- * catalog/plugin-import.ts `PluginImport.cleanupExpired`). The values keep their old names: the
31
- * scheduler id is stored in Redis, so renaming it would leave the old scheduler behind.
32
- */
33
- export const PLUGIN_STAGING_CLEANUP_JOB = "app-staging-cleanup";
34
- export const PLUGIN_STAGING_CLEANUP_SCHEDULER_ID = "app-staging-cleanup-hourly";
35
- export const PLUGIN_STAGING_CLEANUP_EVERY_MS = 3_600_000;
36
- /**
37
- * 删除已过期(`expires_at < now()`)的输出存档,每批 `batch` 行,直到删完;返回删除的总行数。
38
- * 每批一条独立语句(不开长事务);多个 worker 同时清理时 `SKIP LOCKED` 互不等待。
39
- */
40
- export async function deleteExpiredOutputs(db, batch = OUTPUT_CLEANUP_BATCH) {
41
- let total = 0;
42
- for (;;) {
43
- const r = await db
44
- .deleteFrom("tool_outputs")
45
- .where("id", "in", db
46
- .selectFrom("tool_outputs")
47
- .select("id")
48
- .where("expires_at", "<", sql `now()`)
49
- .limit(batch)
50
- .forUpdate()
51
- .skipLocked())
52
- .executeTakeFirst();
53
- const n = Number(r.numDeletedRows);
54
- total += n;
55
- if (n < batch)
56
- return total;
57
- }
58
- }
59
- /**
60
- * 维护队列的生产方与(worker 角色上的)唯一 Worker。状态都在 Redis / PG,没有进程内定时器:
61
- * 周期任务用 BullMQ job scheduler(`upsertJobScheduler` 幂等,多副本重复调用只有一个 scheduler)。
62
- */
63
- export class Maintenance {
64
- d;
44
+ let MaintenanceProcessor = class MaintenanceProcessor extends WorkerHost {
45
+ waits;
46
+ sandbox;
47
+ drift;
48
+ directory;
49
+ scheduled;
50
+ log;
65
51
  queue;
66
- queueConn;
67
- worker;
68
- workerConn;
69
- closed = false;
70
- handlers = new Map();
71
- schedules = [];
72
- constructor(d) {
73
- this.d = d;
74
- this.handle(OUTPUT_CLEANUP_JOB, async () => {
75
- const n = await deleteExpiredOutputs(d.db);
76
- if (n > 0)
77
- d.log.info("expired tool outputs deleted", { count: n });
78
- });
79
- }
80
- /** 登记某个任务名的处理函数(构造期调用;Worker 启动前后都可)。 */
81
- handle(name, fn) {
82
- this.handlers.set(name, fn);
52
+ constructor(waits, sandbox, drift, directory, scheduled, log, queue) {
53
+ super();
54
+ this.waits = waits;
55
+ this.sandbox = sandbox;
56
+ this.drift = drift;
57
+ this.directory = directory;
58
+ this.scheduled = scheduled;
59
+ this.log = log;
60
+ this.queue = queue;
83
61
  }
84
- /** 登记一个周期任务(构造期调用;`ensureSchedules` 时一并 upsert)。 */
85
- schedule(s) {
86
- this.schedules.push(s);
62
+ /**
63
+ * Removes the retired job schedulers (`RETIRED_SCHEDULER_IDS`, runtime/retired-schedulers.ts): every fixed-period
64
+ * maintenance job is a `@LockedCron` / `@LockedInterval` now. Idempotent; called once when a
65
+ * worker role starts.
66
+ */
67
+ removeRetiredSchedulers() {
68
+ return removeRetiredSchedulers(this.queue, RETIRED_SCHEDULER_IDS);
87
69
  }
88
- /** 投递一个维护任务。 */
89
- async add(name, data, opts) {
90
- await this.getQueue().add(name, data, opts);
91
- }
92
- /** 登记周期任务的 job scheduler(幂等;worker 角色启动时调用)。 */
93
- async ensureSchedules() {
94
- await this.getQueue().upsertJobScheduler(OUTPUT_CLEANUP_SCHEDULER_ID, { every: OUTPUT_CLEANUP_EVERY_MS }, {
95
- name: OUTPUT_CLEANUP_JOB,
96
- data: {},
97
- opts: { removeOnComplete: true, removeOnFail: 100 },
98
- });
99
- for (const s of this.schedules) {
100
- await this.getQueue().upsertJobScheduler(s.id, { every: s.everyMs() }, { name: s.name, data: {}, opts: { removeOnComplete: true, removeOnFail: 100 } });
101
- }
70
+ process(job, token) {
71
+ return runJob(MAINTENANCE_QUEUE_NAME, job, () => this.dispatch(job, token));
102
72
  }
103
- /** 启动维护队列的 Worker(只在含 `worker` 角色的进程)。 */
104
- startWorker() {
105
- if (this.worker || this.closed)
106
- return;
107
- this.workerConn = bullConnection(this.d.redisUrl, this.d.log);
108
- this.worker = new Worker(MAINTENANCE_QUEUE_NAME, (job, token) => withJobContext(MAINTENANCE_QUEUE_NAME, job, () => this.process(job, token)), {
109
- connection: this.workerConn,
110
- concurrency: 5,
111
- });
112
- this.worker.on("error", (err) => this.d.log.error("maintenance worker error", { err }));
113
- this.worker.on("failed", (job, err) => this.d.log.error("maintenance job failed", { name: job?.name, jobId: job?.id, err }));
73
+ /** Starts consuming (worker role, after the extensions loaded; built with `autorun: false`). */
74
+ start() {
75
+ void this.worker.run().catch((err) => this.error(err));
114
76
  }
115
- async close() {
116
- this.closed = true;
117
- const w = this.worker;
118
- const q = this.queue;
119
- this.worker = undefined;
120
- this.queue = undefined;
121
- await w?.close().catch(() => { });
122
- await q?.close().catch(() => { });
123
- for (const c of [this.workerConn, this.queueConn]) {
124
- if (c)
125
- await c.quit().catch(() => c.disconnect());
77
+ async dispatch(job, token) {
78
+ switch (job.name) {
79
+ case WAIT_TIMEOUT_JOB:
80
+ await this.waits.processTimeout(job, token);
81
+ return;
82
+ case SANDBOX_DESTROY_FOR_JOB:
83
+ await runSandboxDestroyFor(this.sandbox, this.log, job);
84
+ return;
85
+ case DRIFT_CONNECTOR_JOB: {
86
+ const { orgId, connectorId, trigger } = job.data;
87
+ await this.drift.check(orgId, connectorId, trigger);
88
+ return;
89
+ }
90
+ case DIRECTORY_SYNC_JOB:
91
+ await this.directory.runSyncJob(job.data);
92
+ return;
93
+ default:
94
+ if (await this.scheduled.runNow(job.name))
95
+ return;
96
+ this.log.warn("unknown maintenance job", { name: job.name, jobId: job.id });
126
97
  }
127
- this.workerConn = undefined;
128
- this.queueConn = undefined;
129
98
  }
130
- getQueue() {
131
- if (this.closed)
132
- throw new Error("maintenance queue is closed");
133
- if (!this.queue) {
134
- this.queueConn = bullConnection(this.d.redisUrl, this.d.log);
135
- this.queue = new Queue(MAINTENANCE_QUEUE_NAME, { connection: this.queueConn });
136
- this.queue.on("error", (err) => this.d.log.error("maintenance queue error", { err }));
137
- }
138
- return this.queue;
99
+ failed(job, err) {
100
+ this.log.error("maintenance job failed", { name: job?.name, jobId: job?.id, err });
139
101
  }
140
- async process(job, token) {
141
- const fn = this.handlers.get(job.name);
142
- if (!fn) {
143
- this.d.log.warn("unknown maintenance job", { name: job.name, jobId: job.id });
144
- return;
145
- }
146
- await fn(job, token);
102
+ error(err) {
103
+ this.log.error("maintenance worker error", { err });
147
104
  }
148
- }
105
+ };
106
+ __decorate([
107
+ OnWorkerEvent("failed")
108
+ ], MaintenanceProcessor.prototype, "failed", null);
109
+ __decorate([
110
+ OnWorkerEvent("error")
111
+ ], MaintenanceProcessor.prototype, "error", null);
112
+ MaintenanceProcessor = __decorate([
113
+ Injectable(),
114
+ __param(0, Inject(Waits)),
115
+ __param(1, Inject(SandboxService)),
116
+ __param(2, Inject(ToolDrift)),
117
+ __param(3, Inject(DirectorySync)),
118
+ __param(4, Inject(ScheduledRuns)),
119
+ __param(5, Inject(KERNEL_LOGGER)),
120
+ __param(6, Inject(getQueueToken(MAINTENANCE_QUEUE_NAME)))
121
+ ], MaintenanceProcessor);
122
+ export { MaintenanceProcessor };
123
+ /**
124
+ * The maintenance queue's consumer: {@link MaintenanceProcessor}. Imported only by the worker role
125
+ * (`WorkerModule`), so other roles get no processor and no BullMQ worker. It never starts by
126
+ * itself: the worker role (`WorkerRole`) removes the retired job schedulers and starts it after the
127
+ * extensions loaded.
128
+ */
129
+ let MaintenanceModule = class MaintenanceModule {
130
+ };
131
+ MaintenanceModule = __decorate([
132
+ Module({
133
+ imports: [
134
+ // the periodic jobs' bodies (a periodic job's name enqueued here runs it once)
135
+ KernelScheduleModule,
136
+ RuntimeModule,
137
+ SandboxModule,
138
+ ToolsModule,
139
+ OrgsModule,
140
+ QueueModule.registerQueue(MAINTENANCE_QUEUE_NAME),
141
+ ],
142
+ providers: [
143
+ configuredProcessor(MaintenanceProcessor, MAINTENANCE_QUEUE_NAME, {
144
+ concurrency: MAINTENANCE_CONCURRENCY,
145
+ }),
146
+ ],
147
+ exports: [MaintenanceProcessor],
148
+ })
149
+ ], MaintenanceModule);
150
+ export { MaintenanceModule };
@@ -1,14 +1,15 @@
1
1
  import { type ContentBlock, type Logger, type ModelProvider, type ModelRequest, type ModelStreamEvent, type ModelUsage, type StopReason } from "@capybara-hq/plugin-sdk";
2
2
  import type { AgentDefinition } from "../agents/definition.js";
3
- import type { KernelConfig } from "../config/schema.js";
4
3
  import type { EventLog } from "../conversations/event-log.js";
5
- import type { KernelDb } from "../db/kernel-schema.js";
4
+ import type { KernelSchemaDb } from "../db/kernel-schema.js";
5
+ import type { KernelConfigService } from "../infra/config/kernel-config.service.js";
6
6
  import type { ToolRegistry, UnavailableTool } from "../tools/registry.js";
7
7
  import { type BuildModelRequestInput, type MediaBytes, type MediaInfo, type ModelCallMeta, type RequestTool } from "./context/build.js";
8
8
  import { type ConversationKindForHooks, type HookRunner } from "./hook-calls.js";
9
9
  import type { SubagentParent } from "./loop.js";
10
10
  import { MediaCache } from "./media-cache.js";
11
11
  import { type ProviderRegistry } from "./providers.js";
12
+ import type { StepLog } from "./step-log.js";
12
13
  import type { UsageReporter } from "./usage-report.js";
13
14
  /** 单轮收尾的尾部提醒(模型可见,英文;spec 6 轮次额度收尾)。 */
14
15
  export declare const WRAP_UP_REMINDER = "Step limit reached. Do not call tools. Summarize what you found and what remains for the user.";
@@ -28,12 +29,14 @@ export type StreamSink = (delta: {
28
29
  text?: string;
29
30
  }) => void;
30
31
  export interface ModelStepDeps {
31
- db: KernelDb;
32
+ db: KernelSchemaDb;
32
33
  eventLog: EventLog;
34
+ /** The step's transactional writes (a model call with its tool specs, a denial with its audit row, a sub-agent's counted usage). */
35
+ stepLog: Pick<StepLog, "appendCounted" | "appendAudited" | "appendWithSpecs">;
33
36
  registry: Pick<ProviderRegistry, "resolve">;
34
37
  /** 工具注册表:每步开始时解析 agent 引用的工具(状态可能在步骤之间变化)。 */
35
38
  tools: Pick<ToolRegistry, "forAgent">;
36
- config: () => KernelConfig;
39
+ config: Pick<KernelConfigService, "get">;
37
40
  log: Logger;
38
41
  /**
39
42
  * 会话附件(构建请求时解析日志里的媒体引用;见 AttachmentsService)。未提供时媒体引用一律按「不再可用」处理。