@capybara-hq/kernel 0.1.0-rc.1 → 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 (616) 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 +179 -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 +261 -329
  21. package/dist/agents/definition.d.ts +8 -0
  22. package/dist/agents/definition.js +8 -0
  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 +20 -4
  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 +323 -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/cli.d.ts +3 -2
  42. package/dist/catalog/cli.js +13 -31
  43. package/dist/catalog/job-ids.d.ts +15 -0
  44. package/dist/catalog/job-ids.js +15 -0
  45. package/dist/catalog/jobs.d.ts +27 -0
  46. package/dist/catalog/jobs.js +70 -0
  47. package/dist/catalog/locks.d.ts +24 -0
  48. package/dist/catalog/locks.js +63 -0
  49. package/dist/catalog/marketplaces.controller.d.ts +4 -4
  50. package/dist/catalog/marketplaces.controller.js +22 -11
  51. package/dist/catalog/marketplaces.service.d.ts +30 -13
  52. package/dist/catalog/marketplaces.service.js +330 -256
  53. package/dist/catalog/org-catalog.controller.d.ts +4 -3
  54. package/dist/catalog/org-catalog.controller.js +29 -14
  55. package/dist/catalog/org-catalog.service.d.ts +32 -198
  56. package/dist/catalog/org-catalog.service.js +159 -400
  57. package/dist/catalog/plugin-import.d.ts +73 -34
  58. package/dist/catalog/plugin-import.js +356 -217
  59. package/dist/catalog/plugin-install.d.ts +83 -41
  60. package/dist/catalog/plugin-install.js +421 -269
  61. package/dist/catalog/plugin-upgrade.d.ts +59 -4
  62. package/dist/catalog/plugin-upgrade.js +407 -282
  63. package/dist/catalog/requests.service.d.ts +27 -15
  64. package/dist/catalog/requests.service.js +201 -145
  65. package/dist/catalog/upgrade-targets.d.ts +4 -7
  66. package/dist/channels/actions.d.ts +6 -4
  67. package/dist/channels/actions.js +1 -1
  68. package/dist/channels/cards.d.ts +2 -2
  69. package/dist/channels/channels.module.d.ts +40 -0
  70. package/dist/channels/channels.module.js +128 -0
  71. package/dist/channels/connections.controller.d.ts +1 -1
  72. package/dist/channels/connections.controller.js +11 -6
  73. package/dist/channels/connections.service.d.ts +43 -21
  74. package/dist/channels/connections.service.js +236 -131
  75. package/dist/channels/inbound.d.ts +34 -38
  76. package/dist/channels/inbound.js +107 -41
  77. package/dist/channels/job-ids.d.ts +10 -0
  78. package/dist/channels/job-ids.js +10 -0
  79. package/dist/channels/jobs.d.ts +85 -0
  80. package/dist/channels/jobs.js +157 -0
  81. package/dist/channels/outbound.d.ts +60 -82
  82. package/dist/channels/outbound.js +165 -194
  83. package/dist/channels/supervisor.d.ts +88 -46
  84. package/dist/channels/supervisor.js +230 -132
  85. package/dist/channels/threads.d.ts +29 -8
  86. package/dist/channels/threads.js +71 -13
  87. package/dist/channels/webhook.d.ts +20 -14
  88. package/dist/channels/webhook.js +51 -20
  89. package/dist/config/load.d.ts +3 -2
  90. package/dist/config/load.js +3 -2
  91. package/dist/config/nacos-source.js +11 -2
  92. package/dist/config/schema.d.ts +1 -0
  93. package/dist/config/schema.js +10 -4
  94. package/dist/conversations/access.d.ts +29 -0
  95. package/dist/conversations/access.js +86 -0
  96. package/dist/conversations/artifacts.d.ts +10 -10
  97. package/dist/conversations/artifacts.js +35 -9
  98. package/dist/conversations/attachments.controller.d.ts +1 -1
  99. package/dist/conversations/attachments.controller.js +8 -6
  100. package/dist/conversations/attachments.module.d.ts +7 -0
  101. package/dist/conversations/attachments.module.js +25 -0
  102. package/dist/conversations/attachments.service.d.ts +30 -22
  103. package/dist/conversations/attachments.service.js +119 -46
  104. package/dist/conversations/conversations.controller.d.ts +8 -7
  105. package/dist/conversations/conversations.controller.js +59 -29
  106. package/dist/conversations/conversations.module.d.ts +8 -0
  107. package/dist/conversations/conversations.module.js +69 -0
  108. package/dist/conversations/conversations.service.d.ts +40 -38
  109. package/dist/conversations/conversations.service.js +130 -140
  110. package/dist/conversations/event-log.d.ts +28 -18
  111. package/dist/conversations/event-log.js +74 -27
  112. package/dist/conversations/files.d.ts +10 -10
  113. package/dist/conversations/files.js +37 -11
  114. package/dist/conversations/idem-keys.d.ts +5 -0
  115. package/dist/conversations/idem-keys.js +5 -0
  116. package/dist/conversations/job-ids.d.ts +6 -0
  117. package/dist/conversations/job-ids.js +6 -0
  118. package/dist/conversations/outputs-read.d.ts +11 -11
  119. package/dist/conversations/outputs-read.js +31 -7
  120. package/dist/conversations/queue.d.ts +48 -56
  121. package/dist/conversations/queue.js +13 -289
  122. package/dist/conversations/queue.service.d.ts +60 -0
  123. package/dist/conversations/queue.service.js +343 -0
  124. package/dist/conversations/sandbox-status.d.ts +13 -10
  125. package/dist/conversations/sandbox-status.js +36 -8
  126. package/dist/conversations/titles.d.ts +71 -24
  127. package/dist/conversations/titles.js +159 -63
  128. package/dist/ctx/bus.js +9 -3
  129. package/dist/ctx/create-ctx.d.ts +6 -0
  130. package/dist/ctx/create-ctx.js +7 -9
  131. package/dist/ctx/lock.d.ts +7 -3
  132. package/dist/ctx/lock.js +9 -20
  133. package/dist/ctx/secrets.d.ts +10 -2
  134. package/dist/ctx/secrets.js +7 -3
  135. package/dist/db/kernel-schema.d.ts +2 -2
  136. package/dist/db/pool.d.ts +5 -0
  137. package/dist/db/pool.js +1 -0
  138. package/dist/errors.d.ts +1 -0
  139. package/dist/errors.js +1 -0
  140. package/dist/evals/budget.d.ts +42 -21
  141. package/dist/evals/budget.js +114 -62
  142. package/dist/evals/evals.module.d.ts +31 -0
  143. package/dist/evals/evals.module.js +114 -0
  144. package/dist/evals/jobs.d.ts +20 -0
  145. package/dist/evals/jobs.js +45 -0
  146. package/dist/evals/run-replay.d.ts +56 -8
  147. package/dist/evals/run-replay.js +140 -80
  148. package/dist/evals/runs.controller.d.ts +1 -1
  149. package/dist/evals/runs.controller.js +17 -8
  150. package/dist/evals/runs.service.d.ts +23 -45
  151. package/dist/evals/runs.service.js +245 -234
  152. package/dist/evals/sets.controller.d.ts +1 -1
  153. package/dist/evals/sets.controller.js +17 -8
  154. package/dist/evals/sets.service.d.ts +22 -6
  155. package/dist/evals/sets.service.js +248 -194
  156. package/dist/evals/snapshot.d.ts +2 -2
  157. package/dist/evals/step-replay.d.ts +2 -2
  158. package/dist/evals/step-replay.js +1 -1
  159. package/dist/evals/trajectory.controller.d.ts +1 -1
  160. package/dist/evals/trajectory.controller.js +11 -7
  161. package/dist/evals/trajectory.service.d.ts +5 -4
  162. package/dist/evals/trajectory.service.js +30 -7
  163. package/dist/evals/worker.d.ts +44 -27
  164. package/dist/evals/worker.js +220 -121
  165. package/dist/extensions/admin-ops.d.ts +61 -33
  166. package/dist/extensions/admin-ops.js +248 -154
  167. package/dist/extensions/admin-view.d.ts +38 -27
  168. package/dist/extensions/admin-view.js +126 -55
  169. package/dist/extensions/approvals.d.ts +12 -8
  170. package/dist/extensions/approvals.js +73 -46
  171. package/dist/extensions/blobs.d.ts +27 -10
  172. package/dist/extensions/blobs.js +111 -45
  173. package/dist/extensions/bootstrap.d.ts +58 -31
  174. package/dist/extensions/bootstrap.js +175 -121
  175. package/dist/extensions/cli.d.ts +20 -10
  176. package/dist/extensions/cli.js +41 -96
  177. package/dist/extensions/config-issues.d.ts +7 -0
  178. package/dist/extensions/config-issues.js +31 -0
  179. package/dist/extensions/deployment-config-store.d.ts +49 -0
  180. package/dist/extensions/deployment-config-store.js +133 -0
  181. package/dist/extensions/deployment-config.d.ts +58 -67
  182. package/dist/extensions/deployment-config.js +202 -230
  183. package/dist/extensions/enabled.d.ts +5 -5
  184. package/dist/extensions/extensions.module.d.ts +8 -0
  185. package/dist/extensions/extensions.module.js +77 -0
  186. package/dist/extensions/hooks.d.ts +3 -2
  187. package/dist/extensions/hooks.js +1 -1
  188. package/dist/extensions/host.d.ts +72 -68
  189. package/dist/extensions/host.js +191 -152
  190. package/dist/extensions/installs.d.ts +49 -16
  191. package/dist/extensions/installs.js +128 -32
  192. package/dist/extensions/job-ids.d.ts +6 -0
  193. package/dist/extensions/job-ids.js +6 -0
  194. package/dist/extensions/lifecycle-topics.d.ts +18 -0
  195. package/dist/extensions/lifecycle-topics.js +18 -0
  196. package/dist/extensions/lifecycle.d.ts +35 -47
  197. package/dist/extensions/lifecycle.js +103 -39
  198. package/dist/extensions/locks.d.ts +33 -0
  199. package/dist/extensions/locks.js +86 -0
  200. package/dist/extensions/migrate-lock.d.ts +3 -4
  201. package/dist/extensions/org-config.controller.d.ts +1 -1
  202. package/dist/extensions/org-config.controller.js +8 -5
  203. package/dist/extensions/org-config.d.ts +48 -46
  204. package/dist/extensions/org-config.js +284 -226
  205. package/dist/extensions/registry.d.ts +50 -2
  206. package/dist/extensions/registry.js +89 -4
  207. package/dist/extensions/sources.d.ts +12 -8
  208. package/dist/extensions/sources.js +34 -13
  209. package/dist/files/files.module.d.ts +3 -0
  210. package/dist/files/files.module.js +22 -0
  211. package/dist/files/previewers.controller.d.ts +7 -2
  212. package/dist/files/previewers.controller.js +17 -9
  213. package/dist/files/previewers.d.ts +13 -18
  214. package/dist/files/previewers.js +83 -36
  215. package/dist/http/adapter.d.ts +3 -0
  216. package/dist/http/adapter.js +25 -0
  217. package/dist/http/api.module.d.ts +3 -110
  218. package/dist/http/api.module.js +47 -355
  219. package/dist/http/app.d.ts +11 -15
  220. package/dist/http/app.js +17 -62
  221. package/dist/http/error-filter.module.d.ts +5 -0
  222. package/dist/http/error-filter.module.js +18 -0
  223. package/dist/http/error.filter.js +2 -2
  224. package/dist/identity/accounts.d.ts +82 -29
  225. package/dist/identity/accounts.js +294 -175
  226. package/dist/identity/api-tokens.d.ts +11 -7
  227. package/dist/identity/api-tokens.js +71 -44
  228. package/dist/identity/audit.d.ts +7 -4
  229. package/dist/identity/audit.js +5 -1
  230. package/dist/identity/auth.controller.d.ts +11 -10
  231. package/dist/identity/auth.controller.js +31 -25
  232. package/dist/identity/auth.guard.d.ts +3 -3
  233. package/dist/identity/auth.guard.js +6 -4
  234. package/dist/identity/binding.d.ts +9 -11
  235. package/dist/identity/binding.js +41 -13
  236. package/dist/identity/enterprise-admin.d.ts +18 -12
  237. package/dist/identity/enterprise-admin.js +67 -13
  238. package/dist/identity/external-identity-lock.d.ts +17 -0
  239. package/dist/identity/external-identity-lock.js +39 -0
  240. package/dist/identity/external.d.ts +19 -15
  241. package/dist/identity/external.js +163 -125
  242. package/dist/identity/identity.module.d.ts +6 -0
  243. package/dist/identity/identity.module.js +56 -0
  244. package/dist/identity/me.controller.d.ts +16 -15
  245. package/dist/identity/me.controller.js +37 -31
  246. package/dist/identity/sessions.d.ts +12 -10
  247. package/dist/identity/sessions.js +74 -42
  248. package/dist/identity/settings.d.ts +20 -14
  249. package/dist/identity/settings.js +85 -57
  250. package/dist/identity/sso.controller.d.ts +7 -7
  251. package/dist/identity/sso.controller.js +13 -9
  252. package/dist/identity/sso.d.ts +9 -12
  253. package/dist/identity/sso.js +54 -24
  254. package/dist/inbox/inbox.module.d.ts +3 -0
  255. package/dist/inbox/inbox.module.js +22 -0
  256. package/dist/inbox/inbox.service.d.ts +7 -9
  257. package/dist/inbox/inbox.service.js +32 -11
  258. package/dist/index.d.ts +16 -11
  259. package/dist/index.js +9 -6
  260. package/dist/infra/cache/cache.module.d.ts +3 -0
  261. package/dist/infra/cache/cache.module.js +16 -0
  262. package/dist/infra/cache/cache.service.d.ts +21 -0
  263. package/dist/infra/cache/cache.service.js +80 -0
  264. package/dist/infra/cache/cacheable.decorator.d.ts +32 -0
  265. package/dist/infra/cache/cacheable.decorator.js +83 -0
  266. package/dist/infra/cli/kernel-cli.module.d.ts +66 -0
  267. package/dist/infra/cli/kernel-cli.module.js +165 -0
  268. package/dist/infra/close-within.d.ts +15 -0
  269. package/dist/infra/close-within.js +36 -0
  270. package/dist/infra/config/config.module.d.ts +13 -0
  271. package/dist/infra/config/config.module.js +39 -0
  272. package/dist/infra/config/kernel-config.service.d.ts +25 -0
  273. package/dist/infra/config/kernel-config.service.js +126 -0
  274. package/dist/infra/database/after-commit.d.ts +6 -0
  275. package/dist/infra/database/after-commit.js +9 -0
  276. package/dist/infra/database/database.module.d.ts +25 -0
  277. package/dist/infra/database/database.module.js +90 -0
  278. package/dist/infra/database/kernel-db.d.ts +22 -0
  279. package/dist/infra/database/kernel-db.js +65 -0
  280. package/dist/infra/database/transaction-host.d.ts +50 -0
  281. package/dist/infra/database/transaction-host.js +125 -0
  282. package/dist/infra/database/transactional.decorator.d.ts +15 -0
  283. package/dist/infra/database/transactional.decorator.js +27 -0
  284. package/dist/infra/database/xact-lock.d.ts +17 -0
  285. package/dist/infra/database/xact-lock.js +43 -0
  286. package/dist/infra/events/kernel-events.d.ts +96 -0
  287. package/dist/infra/events/kernel-events.js +65 -0
  288. package/dist/infra/health/health.controller.d.ts +26 -0
  289. package/dist/infra/health/health.controller.js +104 -0
  290. package/dist/infra/health/health.module.d.ts +9 -0
  291. package/dist/infra/health/health.module.js +24 -0
  292. package/dist/infra/health/health.options.d.ts +10 -0
  293. package/dist/infra/health/health.options.js +15 -0
  294. package/dist/infra/health/shutdown-state.d.ts +6 -0
  295. package/dist/infra/health/shutdown-state.js +2 -0
  296. package/dist/infra/lifecycle/graceful-shutdown.module.d.ts +6 -0
  297. package/dist/infra/lifecycle/graceful-shutdown.module.js +23 -0
  298. package/dist/infra/lifecycle/graceful-shutdown.service.d.ts +70 -0
  299. package/dist/infra/lifecycle/graceful-shutdown.service.js +135 -0
  300. package/dist/infra/lifecycle/process-guards.d.ts +52 -0
  301. package/dist/infra/lifecycle/process-guards.js +86 -0
  302. package/dist/infra/lifecycle/shutdown-signals.d.ts +30 -0
  303. package/dist/infra/lifecycle/shutdown-signals.js +48 -0
  304. package/dist/infra/lock/key-template.d.ts +13 -0
  305. package/dist/infra/lock/key-template.js +46 -0
  306. package/dist/infra/lock/lock.module.d.ts +3 -0
  307. package/dist/infra/lock/lock.module.js +16 -0
  308. package/dist/infra/lock/lock.service.d.ts +120 -0
  309. package/dist/infra/lock/lock.service.js +343 -0
  310. package/dist/infra/lock/shared-lease.d.ts +44 -0
  311. package/dist/infra/lock/shared-lease.js +121 -0
  312. package/dist/infra/lock/with-lock.decorator.d.ts +28 -0
  313. package/dist/infra/lock/with-lock.decorator.js +49 -0
  314. package/dist/infra/logging/logging.module.d.ts +16 -0
  315. package/dist/infra/logging/logging.module.js +34 -0
  316. package/dist/infra/queue/configured-processor.d.ts +18 -0
  317. package/dist/infra/queue/configured-processor.js +23 -0
  318. package/dist/infra/queue/job-failure.d.ts +18 -0
  319. package/dist/infra/queue/job-failure.js +26 -0
  320. package/dist/infra/queue/queue-shutdown.d.ts +27 -0
  321. package/dist/infra/queue/queue-shutdown.js +81 -0
  322. package/dist/infra/queue/queue.module.d.ts +16 -0
  323. package/dist/infra/queue/queue.module.js +61 -0
  324. package/dist/infra/queue/redis-connection.d.ts +7 -0
  325. package/dist/infra/queue/redis-connection.js +18 -0
  326. package/dist/infra/queue/retired-schedulers.d.ts +7 -0
  327. package/dist/infra/queue/retired-schedulers.js +9 -0
  328. package/dist/infra/queue/run-job.d.ts +16 -0
  329. package/dist/infra/queue/run-job.js +19 -0
  330. package/dist/infra/redis/redis.module.d.ts +24 -0
  331. package/dist/infra/redis/redis.module.js +87 -0
  332. package/dist/infra/schedule/cron-tick.d.ts +12 -0
  333. package/dist/infra/schedule/cron-tick.js +25 -0
  334. package/dist/infra/schedule/locked-cron.decorator.d.ts +27 -0
  335. package/dist/infra/schedule/locked-cron.decorator.js +53 -0
  336. package/dist/infra/schedule/locked-interval.d.ts +69 -0
  337. package/dist/infra/schedule/locked-interval.js +190 -0
  338. package/dist/infra/schedule/locked-tick.d.ts +90 -0
  339. package/dist/infra/schedule/locked-tick.js +137 -0
  340. package/dist/infra/schedule/schedule.module.d.ts +8 -0
  341. package/dist/infra/schedule/schedule.module.js +27 -0
  342. package/dist/infra/schedule/scheduled-runs.d.ts +69 -0
  343. package/dist/infra/schedule/scheduled-runs.js +163 -0
  344. package/dist/infra/swagger/swagger.d.ts +16 -0
  345. package/dist/infra/swagger/swagger.js +31 -0
  346. package/dist/infra/throttler/credential-throttler.d.ts +35 -0
  347. package/dist/infra/throttler/credential-throttler.js +77 -0
  348. package/dist/infra/throttler/named-throttlers.d.ts +31 -0
  349. package/dist/infra/throttler/named-throttlers.js +119 -0
  350. package/dist/infra/throttler/redis-throttler-storage.d.ts +38 -0
  351. package/dist/infra/throttler/redis-throttler-storage.js +130 -0
  352. package/dist/infra/throttler/throttler.guard.d.ts +23 -0
  353. package/dist/infra/throttler/throttler.guard.js +68 -0
  354. package/dist/infra/throttler/throttler.module.d.ts +15 -0
  355. package/dist/infra/throttler/throttler.module.js +53 -0
  356. package/dist/infra/tokens.d.ts +15 -0
  357. package/dist/infra/tokens.js +15 -0
  358. package/dist/infra/validation/create-zod-dto.d.ts +23 -0
  359. package/dist/infra/validation/create-zod-dto.js +35 -0
  360. package/dist/infra/validation/parse-with-zod.d.ts +7 -0
  361. package/dist/infra/validation/parse-with-zod.js +12 -0
  362. package/dist/infra/validation/validation.module.d.ts +3 -0
  363. package/dist/infra/validation/validation.module.js +16 -0
  364. package/dist/infra/validation/zod-params.d.ts +7 -0
  365. package/dist/infra/validation/zod-params.js +42 -0
  366. package/dist/infra/validation/zod-validation.pipe.d.ts +11 -0
  367. package/dist/infra/validation/zod-validation.pipe.js +31 -0
  368. package/dist/kernel.d.ts +9 -244
  369. package/dist/kernel.js +8 -1305
  370. package/dist/kernel.module.d.ts +17 -0
  371. package/dist/kernel.module.js +136 -0
  372. package/dist/lifecycle/kernel-lifecycle.d.ts +140 -0
  373. package/dist/lifecycle/kernel-lifecycle.js +451 -0
  374. package/dist/lifecycle/tokens.d.ts +3 -0
  375. package/dist/lifecycle/tokens.js +3 -0
  376. package/dist/log-context.d.ts +2 -0
  377. package/dist/log-context.js +4 -0
  378. package/dist/models/models.module.d.ts +3 -0
  379. package/dist/models/models.module.js +24 -0
  380. package/dist/models/prices.d.ts +8 -2
  381. package/dist/models/prices.js +65 -37
  382. package/dist/models/purposes.controller.d.ts +1 -1
  383. package/dist/models/purposes.controller.js +5 -6
  384. package/dist/models/purposes.d.ts +35 -13
  385. package/dist/models/purposes.js +101 -51
  386. package/dist/orgs/directory-sync.controller.d.ts +1 -1
  387. package/dist/orgs/directory-sync.controller.js +2 -2
  388. package/dist/orgs/directory-sync.d.ts +61 -31
  389. package/dist/orgs/directory-sync.js +212 -125
  390. package/dist/orgs/invitations.controller.d.ts +8 -8
  391. package/dist/orgs/invitations.controller.js +27 -26
  392. package/dist/orgs/invitations.service.d.ts +12 -9
  393. package/dist/orgs/invitations.service.js +130 -92
  394. package/dist/orgs/job-ids.d.ts +8 -0
  395. package/dist/orgs/job-ids.js +8 -0
  396. package/dist/orgs/members.service.d.ts +19 -12
  397. package/dist/orgs/members.service.js +161 -117
  398. package/dist/orgs/offboarding.d.ts +54 -57
  399. package/dist/orgs/offboarding.js +161 -71
  400. package/dist/orgs/org-lock.d.ts +28 -19
  401. package/dist/orgs/org-lock.js +81 -35
  402. package/dist/orgs/org.guard.d.ts +1 -1
  403. package/dist/orgs/org.guard.js +2 -2
  404. package/dist/orgs/orgs.controller.d.ts +13 -13
  405. package/dist/orgs/orgs.controller.js +29 -17
  406. package/dist/orgs/orgs.module.d.ts +6 -0
  407. package/dist/orgs/orgs.module.js +68 -0
  408. package/dist/orgs/orgs.service.d.ts +30 -19
  409. package/dist/orgs/orgs.service.js +139 -86
  410. package/dist/orgs/settings.controller.d.ts +1 -1
  411. package/dist/orgs/settings.controller.js +8 -6
  412. package/dist/orgs/settings.service.d.ts +14 -8
  413. package/dist/orgs/settings.service.js +75 -46
  414. package/dist/overrides.d.ts +56 -0
  415. package/dist/overrides.js +30 -0
  416. package/dist/roles/gateway-role.d.ts +43 -0
  417. package/dist/roles/gateway-role.js +98 -0
  418. package/dist/roles/gateway.module.d.ts +8 -0
  419. package/dist/roles/gateway.module.js +28 -0
  420. package/dist/roles/worker-role.d.ts +63 -0
  421. package/dist/roles/worker-role.js +144 -0
  422. package/dist/roles/worker.module.d.ts +14 -0
  423. package/dist/roles/worker.module.js +90 -0
  424. package/dist/runtime/abort.js +19 -2
  425. package/dist/runtime/checkpointer.d.ts +8 -3
  426. package/dist/runtime/checkpointer.js +87 -55
  427. package/dist/runtime/conversation-lock.d.ts +20 -11
  428. package/dist/runtime/conversation-lock.js +62 -72
  429. package/dist/runtime/hook-calls.d.ts +3 -3
  430. package/dist/runtime/hook-calls.js +1 -6
  431. package/dist/runtime/job-ids.d.ts +10 -0
  432. package/dist/runtime/job-ids.js +10 -0
  433. package/dist/runtime/langgraph-loop.js +1 -1
  434. package/dist/runtime/loop.d.ts +7 -0
  435. package/dist/runtime/loop.js +14 -0
  436. package/dist/runtime/maintenance-queue.d.ts +10 -0
  437. package/dist/runtime/maintenance-queue.js +10 -0
  438. package/dist/runtime/maintenance.d.ts +45 -74
  439. package/dist/runtime/maintenance.js +139 -137
  440. package/dist/runtime/model-call.d.ts +7 -4
  441. package/dist/runtime/model-call.js +24 -57
  442. package/dist/runtime/providers.d.ts +17 -6
  443. package/dist/runtime/providers.js +66 -25
  444. package/dist/runtime/quota.d.ts +17 -3
  445. package/dist/runtime/quota.js +27 -2
  446. package/dist/runtime/retired-schedulers.d.ts +7 -0
  447. package/dist/runtime/retired-schedulers.js +31 -0
  448. package/dist/runtime/run-control.d.ts +33 -0
  449. package/dist/runtime/run-control.js +77 -0
  450. package/dist/runtime/run-finish.d.ts +26 -17
  451. package/dist/runtime/run-finish.js +98 -51
  452. package/dist/runtime/run-jobs.d.ts +48 -0
  453. package/dist/runtime/run-jobs.js +95 -0
  454. package/dist/runtime/run-processors.d.ts +60 -0
  455. package/dist/runtime/run-processors.js +185 -0
  456. package/dist/runtime/run-queue.d.ts +32 -57
  457. package/dist/runtime/run-queue.js +291 -295
  458. package/dist/runtime/run-steps.d.ts +39 -0
  459. package/dist/runtime/run-steps.js +96 -0
  460. package/dist/runtime/run-worker.d.ts +121 -75
  461. package/dist/runtime/run-worker.js +340 -226
  462. package/dist/runtime/runtime.module.d.ts +10 -0
  463. package/dist/runtime/runtime.module.js +112 -0
  464. package/dist/runtime/step-log.d.ts +40 -0
  465. package/dist/runtime/step-log.js +94 -0
  466. package/dist/runtime/stream.controller.d.ts +5 -8
  467. package/dist/runtime/stream.controller.js +14 -12
  468. package/dist/runtime/stream.d.ts +24 -6
  469. package/dist/runtime/stream.js +78 -7
  470. package/dist/runtime/subagents/child.d.ts +3 -44
  471. package/dist/runtime/subagents/child.js +0 -79
  472. package/dist/runtime/subagents/definition.d.ts +4 -4
  473. package/dist/runtime/subagents/definition.js +2 -2
  474. package/dist/runtime/subagents/dispatch.d.ts +87 -6
  475. package/dist/runtime/subagents/dispatch.js +135 -140
  476. package/dist/runtime/subagents/limits.d.ts +9 -4
  477. package/dist/runtime/subagents/limits.js +4 -2
  478. package/dist/runtime/subagents/org-agents.d.ts +4 -4
  479. package/dist/runtime/subagents/org-agents.js +1 -1
  480. package/dist/runtime/subagents/progress.d.ts +2 -2
  481. package/dist/runtime/subagents/roster.d.ts +3 -3
  482. package/dist/runtime/subagents/roster.js +1 -1
  483. package/dist/runtime/subagents/skill-fork.d.ts +6 -7
  484. package/dist/runtime/subagents/skill-fork.js +16 -5
  485. package/dist/runtime/subagents/subagents.service.d.ts +40 -0
  486. package/dist/runtime/subagents/subagents.service.js +101 -0
  487. package/dist/runtime/usage-report.d.ts +94 -52
  488. package/dist/runtime/usage-report.js +200 -100
  489. package/dist/runtime/waits.d.ts +125 -57
  490. package/dist/runtime/waits.js +431 -208
  491. package/dist/sandbox/job-ids.d.ts +10 -0
  492. package/dist/sandbox/job-ids.js +10 -0
  493. package/dist/sandbox/jobs.d.ts +41 -0
  494. package/dist/sandbox/jobs.js +113 -0
  495. package/dist/sandbox/leases.d.ts +39 -31
  496. package/dist/sandbox/leases.js +117 -257
  497. package/dist/sandbox/providers.d.ts +19 -0
  498. package/dist/sandbox/providers.js +38 -0
  499. package/dist/sandbox/sandbox.module.d.ts +8 -0
  500. package/dist/sandbox/sandbox.module.js +30 -0
  501. package/dist/sandbox/sandbox.service.d.ts +24 -29
  502. package/dist/sandbox/sandbox.service.js +106 -75
  503. package/dist/skills/catalog.d.ts +33 -20
  504. package/dist/skills/catalog.js +96 -53
  505. package/dist/skills/changes.controller.d.ts +4 -4
  506. package/dist/skills/changes.controller.js +15 -9
  507. package/dist/skills/changes.service.d.ts +28 -18
  508. package/dist/skills/changes.service.js +421 -364
  509. package/dist/skills/invocable.controller.d.ts +1 -1
  510. package/dist/skills/invocable.controller.js +8 -5
  511. package/dist/skills/invoke.d.ts +16 -15
  512. package/dist/skills/invoke.js +48 -17
  513. package/dist/skills/skills.controller.d.ts +1 -1
  514. package/dist/skills/skills.controller.js +11 -6
  515. package/dist/skills/skills.module.d.ts +6 -0
  516. package/dist/skills/skills.module.js +30 -0
  517. package/dist/skills/skills.service.d.ts +47 -30
  518. package/dist/skills/skills.service.js +221 -158
  519. package/dist/storage/job-ids.d.ts +6 -0
  520. package/dist/storage/job-ids.js +6 -0
  521. package/dist/storage/purge.d.ts +22 -7
  522. package/dist/storage/purge.js +55 -3
  523. package/dist/storage/storage.module.d.ts +6 -0
  524. package/dist/storage/storage.module.js +23 -0
  525. package/dist/storage/storage.service.d.ts +18 -4
  526. package/dist/storage/storage.service.js +44 -3
  527. package/dist/tools/approvals.controller.d.ts +1 -1
  528. package/dist/tools/approvals.controller.js +12 -8
  529. package/dist/tools/approvals.service.d.ts +27 -25
  530. package/dist/tools/approvals.service.js +324 -258
  531. package/dist/tools/breaker.d.ts +2 -2
  532. package/dist/tools/breaker.js +21 -3
  533. package/dist/tools/builtins/ask-user.d.ts +2 -2
  534. package/dist/tools/builtins/ask-user.js +1 -1
  535. package/dist/tools/builtins/builtin-tools.d.ts +21 -0
  536. package/dist/tools/builtins/builtin-tools.js +80 -0
  537. package/dist/tools/builtins/read-tool-output.d.ts +2 -2
  538. package/dist/tools/builtins/read-tool-output.js +1 -1
  539. package/dist/tools/builtins/sandbox/bash.js +2 -2
  540. package/dist/tools/builtins/sandbox/common.d.ts +2 -1
  541. package/dist/tools/builtins/sandbox/deliver.js +2 -2
  542. package/dist/tools/builtins/sandbox/edit.js +1 -1
  543. package/dist/tools/builtins/sandbox/glob.js +2 -2
  544. package/dist/tools/builtins/sandbox/grep.js +2 -2
  545. package/dist/tools/builtins/sandbox/read.js +1 -1
  546. package/dist/tools/builtins/sandbox/write.js +1 -1
  547. package/dist/tools/builtins/skill-load.d.ts +3 -3
  548. package/dist/tools/builtins/skill-load.js +1 -1
  549. package/dist/tools/canonical-json.d.ts +6 -0
  550. package/dist/tools/canonical-json.js +16 -0
  551. package/dist/tools/connector-content.controller.d.ts +1 -1
  552. package/dist/tools/connector-content.controller.js +11 -6
  553. package/dist/tools/connector-content.d.ts +12 -15
  554. package/dist/tools/connector-content.js +53 -18
  555. package/dist/tools/connectors.controller.d.ts +1 -1
  556. package/dist/tools/connectors.controller.js +21 -10
  557. package/dist/tools/connectors.service.d.ts +31 -13
  558. package/dist/tools/connectors.service.js +434 -344
  559. package/dist/tools/credentials.d.ts +17 -20
  560. package/dist/tools/credentials.js +55 -34
  561. package/dist/tools/drift.d.ts +29 -41
  562. package/dist/tools/drift.js +111 -79
  563. package/dist/tools/info.d.ts +12 -9
  564. package/dist/tools/info.js +33 -7
  565. package/dist/tools/job-ids.d.ts +13 -0
  566. package/dist/tools/job-ids.js +15 -0
  567. package/dist/tools/jobs.d.ts +24 -0
  568. package/dist/tools/jobs.js +69 -0
  569. package/dist/tools/oauth/flow-paths.d.ts +16 -0
  570. package/dist/tools/oauth/flow-paths.js +38 -0
  571. package/dist/tools/oauth/flow.d.ts +30 -30
  572. package/dist/tools/oauth/flow.js +109 -81
  573. package/dist/tools/oauth/oauth.controller.d.ts +3 -3
  574. package/dist/tools/oauth/oauth.controller.js +12 -9
  575. package/dist/tools/oauth/tokens.d.ts +11 -3
  576. package/dist/tools/oauth/tokens.js +15 -14
  577. package/dist/tools/outputs.d.ts +13 -4
  578. package/dist/tools/outputs.js +47 -3
  579. package/dist/tools/pipeline.d.ts +62 -46
  580. package/dist/tools/pipeline.js +145 -64
  581. package/dist/tools/policy.d.ts +2 -2
  582. package/dist/tools/questions.controller.d.ts +1 -1
  583. package/dist/tools/questions.controller.js +8 -5
  584. package/dist/tools/questions.service.d.ts +25 -24
  585. package/dist/tools/questions.service.js +201 -142
  586. package/dist/tools/registry.d.ts +30 -20
  587. package/dist/tools/registry.js +73 -37
  588. package/dist/tools/specs.d.ts +5 -4
  589. package/dist/tools/specs.js +3 -1
  590. package/dist/tools/tools.module.d.ts +10 -0
  591. package/dist/tools/tools.module.js +91 -0
  592. package/dist/ui/call-extension.d.ts +16 -0
  593. package/dist/ui/call-extension.js +38 -0
  594. package/dist/ui/embed-token.d.ts +9 -5
  595. package/dist/ui/embed-token.js +34 -6
  596. package/dist/ui/ui-stream.d.ts +22 -17
  597. package/dist/ui/ui-stream.js +72 -12
  598. package/dist/ui/ui.module.d.ts +7 -0
  599. package/dist/ui/ui.module.js +28 -0
  600. package/dist/ui/views.controller.d.ts +14 -12
  601. package/dist/ui/views.controller.js +32 -25
  602. package/dist/ui/views.d.ts +9 -57
  603. package/dist/ui/views.js +43 -45
  604. package/package.json +9 -2
  605. package/dist/http/health.controller.d.ts +0 -26
  606. package/dist/http/health.controller.js +0 -79
  607. package/dist/http/tokens.d.ts +0 -131
  608. package/dist/http/tokens.js +0 -131
  609. package/dist/http/zod.pipe.d.ts +0 -8
  610. package/dist/http/zod.pipe.js +0 -14
  611. package/dist/identity/rate-limit.d.ts +0 -55
  612. package/dist/identity/rate-limit.js +0 -121
  613. package/dist/sandbox/lifecycle.d.ts +0 -21
  614. package/dist/sandbox/lifecycle.js +0 -68
  615. /package/dist/http/{gateway.module.d.ts → gateway-routes.d.ts} +0 -0
  616. /package/dist/http/{gateway.module.js → gateway-routes.js} +0 -0
@@ -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)。未提供时媒体引用一律按「不再可用」处理。
@@ -1,12 +1,8 @@
1
1
  import { isModelError, isRetryableKind, ModelError, sanitizeParams, } from "@capybara-hq/plugin-sdk";
2
- import { sql } from "kysely";
3
2
  import { MEDIA_EXCLUDED_MAX_IDS } from "../conversations/events.js";
4
3
  import { ApiError } from "../errors.js";
5
- import { usageTokens } from "../evals/budget.js";
6
4
  import { ExtensionUnloadedError } from "../extensions/inflight.js";
7
- import { audit } from "../identity/audit.js";
8
5
  import { hasInvocation, skillLoadOffered } from "../skills/catalog.js";
9
- import { recordToolSpecs } from "../tools/specs.js";
10
6
  import { buildModelRequest, latestSummary, mediaRefs, planMedia, } from "./context/build.js";
11
7
  import { acceptSummary, buildCompactionRequest, compactionBackoff, compactionPlan, shouldCompact, } from "./context/compaction.js";
12
8
  import { guardToolPairs } from "./context/pairing.js";
@@ -114,7 +110,7 @@ async function runStep(deps, input, wrapUp) {
114
110
  }
115
111
  return existing;
116
112
  }
117
- const runtime = deps.config().runtime;
113
+ const runtime = deps.config.get().runtime;
118
114
  /** 本次尝试已流出的文本;中止时写进 aborted 的 assistant_message。 */
119
115
  const streamed = { text: "" };
120
116
  try {
@@ -145,7 +141,7 @@ async function runStep(deps, input, wrapUp) {
145
141
  looked: new Set(),
146
142
  info: new Map(),
147
143
  bytes: new Map(),
148
- run: input.mediaCache ?? new MediaCache(deps.config().attachments.requestMediaBytes),
144
+ run: input.mediaCache ?? new MediaCache(deps.config.get().attachments.requestMediaBytes),
149
145
  },
150
146
  };
151
147
  const beforeCompaction = events.length;
@@ -240,29 +236,7 @@ async function appendCounted(deps, input, events) {
240
236
  const { conversationId, parentRunId } = input;
241
237
  if (parentRunId === undefined)
242
238
  return deps.eventLog.append(conversationId, events);
243
- const out = await deps.db.transaction().execute(async (t) => {
244
- // the conversation row lock the append takes anyway, taken first to read the seq before it
245
- const before = await t
246
- .selectFrom("conversations")
247
- .select("last_seq")
248
- .where("id", "=", conversationId)
249
- .forUpdate()
250
- .executeTakeFirstOrThrow();
251
- const written = await deps.eventLog.append(conversationId, events, t);
252
- const fresh = written.filter((e) => e.seq > Number(before.last_seq));
253
- let tokens = 0;
254
- for (const e of fresh)
255
- if (e.type === "usage")
256
- tokens += usageTokens(e.payload);
257
- if (tokens > 0) {
258
- await t
259
- .updateTable("runs")
260
- .set({ subagent_tokens_used: sql `subagent_tokens_used + ${tokens}` })
261
- .where("id", "=", parentRunId)
262
- .execute();
263
- }
264
- return { written, toSeq: fresh.length > 0 ? Math.max(...fresh.map((e) => e.seq)) : null };
265
- });
239
+ const out = await deps.stepLog.appendCounted(conversationId, parentRunId, events);
266
240
  if (out.toSeq !== null)
267
241
  await deps.eventLog.notify(conversationId, out.toSeq);
268
242
  return out.written;
@@ -401,7 +375,7 @@ function buildRequest(deps, events, input, info, params, runtime, tools, wrapUp)
401
375
  ...(wrapUp && { toolChoice: "none" }),
402
376
  mediaInfo: tools.media.info,
403
377
  media: tools.media.bytes,
404
- mediaBudgetBytes: deps.config().attachments.requestMediaBytes,
378
+ mediaBudgetBytes: deps.config.get().attachments.requestMediaBytes,
405
379
  defaultMaxOutputTokens: runtime.maxOutputTokens,
406
380
  });
407
381
  return {
@@ -434,7 +408,7 @@ async function loadMedia(deps, input, events, info, tools) {
434
408
  for (const id of look)
435
409
  cache.looked.add(id);
436
410
  }
437
- const budget = deps.config().attachments.requestMediaBytes;
411
+ const budget = deps.config.get().attachments.requestMediaBytes;
438
412
  const plan = planMedia(events, info, cache.info, budget);
439
413
  const runKey = (id) => MediaCache.key(id, cache.info.get(id), plan.caps.get(id));
440
414
  const need = [];
@@ -589,11 +563,7 @@ async function maybeCompact(deps, input, events, runtime, tools) {
589
563
  plugin: verdict.plugin,
590
564
  cause: verdict.cause,
591
565
  });
592
- const written = await deps.db.transaction().execute(async (t) => {
593
- const out = await deps.eventLog.append(conversationId, [failed], t);
594
- await audit(t, entry);
595
- return out;
596
- });
566
+ const written = await deps.stepLog.appendAudited(conversationId, [failed], entry);
597
567
  if (written.length > 0) {
598
568
  await deps.eventLog.notify(conversationId, Math.max(...written.map((e) => e.seq)));
599
569
  }
@@ -783,29 +753,26 @@ async function ladder(deps, input, events, runtime, tools, wrapUp, streamed) {
783
753
  // 请求里的工具定义(含目录里的)按指纹存进 tool_specs,与 model_call 同一事务
784
754
  // (请求可由日志 + tool_specs 还原)
785
755
  const sent = new Set([...meta.tools, ...(meta.catalog ?? [])].map((t) => t.specHash));
786
- const written = await deps.db.transaction().execute(async (t) => {
787
- await recordToolSpecs(t, tools.list.filter((x) => sent.has(x.specHash)));
788
- return deps.eventLog.append(conversationId, [
789
- {
790
- type: "model_call",
791
- runId,
792
- idemKey: idem.modelCall(runId, step, attempt),
793
- payload: {
794
- step,
795
- attempt,
796
- provider: rung.ref.provider,
797
- model: rung.ref.model,
798
- fallback: rung.fallback,
799
- request: {
800
- ...meta,
801
- maxOutputTokens: request.maxOutputTokens,
802
- ...(params.dropped.length > 0 && { droppedParams: params.dropped }),
803
- estimatedInputTokens: estimate,
804
- },
756
+ const written = await deps.stepLog.appendWithSpecs(conversationId, tools.list.filter((x) => sent.has(x.specHash)), [
757
+ {
758
+ type: "model_call",
759
+ runId,
760
+ idemKey: idem.modelCall(runId, step, attempt),
761
+ payload: {
762
+ step,
763
+ attempt,
764
+ provider: rung.ref.provider,
765
+ model: rung.ref.model,
766
+ fallback: rung.fallback,
767
+ request: {
768
+ ...meta,
769
+ maxOutputTokens: request.maxOutputTokens,
770
+ ...(params.dropped.length > 0 && { droppedParams: params.dropped }),
771
+ estimatedInputTokens: estimate,
805
772
  },
806
773
  },
807
- ], t);
808
- });
774
+ },
775
+ ]);
809
776
  await deps.eventLog.notify(conversationId, Math.max(...written.map((e) => e.seq)));
810
777
  sentAt = Date.now();
811
778
  const outcome = await consumeModelStream(provider, request, info.streamIdleTimeoutMs ?? runtime.streamIdleMs, signal, (ev) => {
@@ -2,8 +2,11 @@ import { type ExtensionPointRef, type Logger, type ModelInfo, type ModelProvider
2
2
  import type { Redis } from "ioredis";
3
3
  import type { ModelRef } from "../agents/definition.js";
4
4
  import { ApiError } from "../errors.js";
5
+ import { CacheService } from "../infra/cache/cache.service.js";
5
6
  /** 单个供应商 `listModels()` 的时限(毫秒):一个卡住的供应商不拖住整个列表与解析。 */
6
7
  export declare const LIST_MODELS_TIMEOUT_MS = 10000;
8
+ /** Optional provider: the `listModels()` time limit (ms) instead of {@link LIST_MODELS_TIMEOUT_MS} (tests). */
9
+ export declare const LIST_MODELS_TIMEOUT: unique symbol;
7
10
  /**
8
11
  * 列表视图(后台模型页、组织模型页)里列模型失败的供应商在这么多秒内直接标 error、不再请求(Redis,多副本共享)。
9
12
  * 只用于列表;`resolve`(运行时)照常每次请求,失败由降级梯子重试。
@@ -48,22 +51,27 @@ export declare function adaptModelProviderV1(impl: ModelProviderV1): ModelProvid
48
51
  * 同时支持 `model-provider@1`(经 {@link adaptModelProviderV1} 适配)与 `@2`;
49
52
  * 同一插件两者都提供时用 `@2`。`@2` 的 `listModels()` 结果先过 `assertValidDeclarations`,
50
53
  * 不合规的供应商不可用(不可重试)。
51
- * 每个供应商的模型列表(`@2` 形状)缓存在 Redis `capk:models:<provider>:v<主版本>:<插件版本>:<部署配置摘要>`(EX 600),不放进程内存,
52
- * 多副本共享同一份缓存。
54
+ * Each provider's model list (`@2`-shaped) is cached in Redis (`@Cacheable`, key
55
+ * `cache:capk:models:<provider>:v<major>:<plugin version>:<config digest>`, 600 s), never in
56
+ * process memory: every replica shares it.
53
57
  */
54
58
  export declare class ProviderRegistry {
55
59
  private readonly host;
60
+ readonly cacheService: CacheService;
56
61
  private readonly kv;
57
62
  private readonly log?;
58
- private readonly opts;
59
- constructor(host: ProviderHost, kv: Redis, log?: Pick<Logger, "warn"> | undefined, opts?: {
60
- listTimeoutMs?: number;
61
- });
63
+ /** The `listModels()` time limit. */
64
+ private readonly listTimeoutMs;
65
+ constructor(host: ProviderHost, cacheService: CacheService, kv: Redis, log?: Pick<Logger, "warn"> | undefined,
66
+ /** The `listModels()` time limit. */
67
+ listTimeoutMs?: number);
62
68
  /** `listModels()` 加时限(到时按失败处理,供应商的调用留在后台、结果丢弃)。 */
63
69
  private listModelsWithTimeout;
64
70
  /** 每个插件取一个实现(`@2` 优先),按插件首次出现的顺序;不支持的主版本记 warn 后忽略。 */
65
71
  private providers;
66
72
  private models;
73
+ /** The provider's validated model list, cached under `key` (see {@link modelsKey}). */
74
+ private validatedModels;
67
75
  /** 每个已安装供应商及其模型(按插件加载顺序);列模型失败或声明不合规的供应商跳过并记 warn。 */
68
76
  list(): Promise<{
69
77
  provider: string;
@@ -84,3 +92,6 @@ export declare class ProviderRegistry {
84
92
  info: ModelInfo;
85
93
  }>;
86
94
  }
95
+ /** The model provider registry (one instance; the models and agents domains read it). */
96
+ export declare class ProvidersModule {
97
+ }