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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (670) hide show
  1. package/dist/admin/admin.controller.d.ts +17 -17
  2. package/dist/admin/admin.controller.js +43 -26
  3. package/dist/admin/admin.module.d.ts +3 -0
  4. package/dist/admin/admin.module.js +22 -0
  5. package/dist/admin/extensions.controller.d.ts +14 -14
  6. package/dist/admin/extensions.controller.js +30 -17
  7. package/dist/admin/setup-lock.d.ts +16 -0
  8. package/dist/admin/setup-lock.js +47 -0
  9. package/dist/admin/setup.controller.d.ts +8 -8
  10. package/dist/admin/setup.controller.js +27 -25
  11. package/dist/admin/setup.service.d.ts +19 -27
  12. package/dist/admin/setup.service.js +61 -61
  13. package/dist/agents/agent-lookup.d.ts +53 -0
  14. package/dist/agents/agent-lookup.js +187 -0
  15. package/dist/agents/agents.controller.d.ts +1 -1
  16. package/dist/agents/agents.controller.js +14 -8
  17. package/dist/agents/agents.module.d.ts +7 -0
  18. package/dist/agents/agents.module.js +41 -0
  19. package/dist/agents/agents.service.d.ts +39 -58
  20. package/dist/agents/agents.service.js +280 -335
  21. package/dist/agents/definition.d.ts +39 -8
  22. package/dist/agents/definition.js +201 -17
  23. package/dist/agents/models.controller.d.ts +1 -1
  24. package/dist/agents/models.controller.js +2 -2
  25. package/dist/agents/templates.controller.d.ts +1 -1
  26. package/dist/agents/templates.controller.js +2 -2
  27. package/dist/agents/templates.d.ts +6 -8
  28. package/dist/agents/templates.js +39 -8
  29. package/dist/app.d.ts +93 -0
  30. package/dist/app.js +150 -0
  31. package/dist/catalog/admin-catalog.controller.d.ts +3 -3
  32. package/dist/catalog/admin-catalog.controller.js +27 -13
  33. package/dist/catalog/catalog-content.d.ts +185 -0
  34. package/dist/catalog/catalog-content.js +326 -0
  35. package/dist/catalog/catalog-items.d.ts +186 -0
  36. package/dist/catalog/catalog-items.js +410 -0
  37. package/dist/catalog/catalog.module.d.ts +14 -0
  38. package/dist/catalog/catalog.module.js +71 -0
  39. package/dist/catalog/catalog.service.d.ts +34 -188
  40. package/dist/catalog/catalog.service.js +155 -489
  41. package/dist/catalog/claude/agents.js +13 -10
  42. package/dist/catalog/cli.d.ts +3 -2
  43. package/dist/catalog/cli.js +13 -31
  44. package/dist/catalog/job-ids.d.ts +15 -0
  45. package/dist/catalog/job-ids.js +15 -0
  46. package/dist/catalog/jobs.d.ts +27 -0
  47. package/dist/catalog/jobs.js +70 -0
  48. package/dist/catalog/locks.d.ts +24 -0
  49. package/dist/catalog/locks.js +63 -0
  50. package/dist/catalog/marketplaces.controller.d.ts +4 -4
  51. package/dist/catalog/marketplaces.controller.js +22 -11
  52. package/dist/catalog/marketplaces.service.d.ts +31 -14
  53. package/dist/catalog/marketplaces.service.js +330 -256
  54. package/dist/catalog/org-catalog.controller.d.ts +4 -3
  55. package/dist/catalog/org-catalog.controller.js +29 -14
  56. package/dist/catalog/org-catalog.service.d.ts +32 -198
  57. package/dist/catalog/org-catalog.service.js +159 -400
  58. package/dist/catalog/plugin-import.d.ts +73 -34
  59. package/dist/catalog/plugin-import.js +356 -217
  60. package/dist/catalog/plugin-install.d.ts +83 -41
  61. package/dist/catalog/plugin-install.js +421 -269
  62. package/dist/catalog/plugin-upgrade.d.ts +59 -4
  63. package/dist/catalog/plugin-upgrade.js +407 -282
  64. package/dist/catalog/requests.service.d.ts +27 -15
  65. package/dist/catalog/requests.service.js +201 -145
  66. package/dist/catalog/upgrade-targets.d.ts +4 -7
  67. package/dist/channels/actions.d.ts +6 -4
  68. package/dist/channels/actions.js +1 -1
  69. package/dist/channels/cards.d.ts +10 -4
  70. package/dist/channels/cards.js +16 -8
  71. package/dist/channels/channels.module.d.ts +40 -0
  72. package/dist/channels/channels.module.js +128 -0
  73. package/dist/channels/connections.controller.d.ts +1 -1
  74. package/dist/channels/connections.controller.js +11 -6
  75. package/dist/channels/connections.service.d.ts +43 -21
  76. package/dist/channels/connections.service.js +236 -131
  77. package/dist/channels/inbound.d.ts +34 -38
  78. package/dist/channels/inbound.js +107 -41
  79. package/dist/channels/job-ids.d.ts +10 -0
  80. package/dist/channels/job-ids.js +10 -0
  81. package/dist/channels/jobs.d.ts +85 -0
  82. package/dist/channels/jobs.js +157 -0
  83. package/dist/channels/outbound.d.ts +60 -82
  84. package/dist/channels/outbound.js +165 -194
  85. package/dist/channels/supervisor.d.ts +88 -46
  86. package/dist/channels/supervisor.js +230 -132
  87. package/dist/channels/threads.d.ts +29 -8
  88. package/dist/channels/threads.js +71 -13
  89. package/dist/channels/webhook.d.ts +20 -14
  90. package/dist/channels/webhook.js +51 -20
  91. package/dist/config/load.d.ts +3 -2
  92. package/dist/config/load.js +3 -2
  93. package/dist/config/nacos-source.js +11 -2
  94. package/dist/config/schema.d.ts +1 -0
  95. package/dist/config/schema.js +12 -6
  96. package/dist/conversations/access.d.ts +29 -0
  97. package/dist/conversations/access.js +86 -0
  98. package/dist/conversations/artifacts.d.ts +11 -11
  99. package/dist/conversations/artifacts.js +36 -10
  100. package/dist/conversations/attachments.controller.d.ts +1 -1
  101. package/dist/conversations/attachments.controller.js +8 -6
  102. package/dist/conversations/attachments.module.d.ts +7 -0
  103. package/dist/conversations/attachments.module.js +25 -0
  104. package/dist/conversations/attachments.service.d.ts +30 -22
  105. package/dist/conversations/attachments.service.js +119 -46
  106. package/dist/conversations/conversations.controller.d.ts +8 -7
  107. package/dist/conversations/conversations.controller.js +59 -29
  108. package/dist/conversations/conversations.module.d.ts +8 -0
  109. package/dist/conversations/conversations.module.js +69 -0
  110. package/dist/conversations/conversations.service.d.ts +40 -38
  111. package/dist/conversations/conversations.service.js +130 -140
  112. package/dist/conversations/event-log.d.ts +39 -18
  113. package/dist/conversations/event-log.js +93 -27
  114. package/dist/conversations/events.d.ts +23 -3
  115. package/dist/conversations/events.js +26 -14
  116. package/dist/conversations/files.d.ts +10 -10
  117. package/dist/conversations/files.js +37 -11
  118. package/dist/conversations/idem-keys.d.ts +5 -0
  119. package/dist/conversations/idem-keys.js +5 -0
  120. package/dist/conversations/job-ids.d.ts +6 -0
  121. package/dist/conversations/job-ids.js +6 -0
  122. package/dist/conversations/outputs-read.d.ts +11 -11
  123. package/dist/conversations/outputs-read.js +31 -7
  124. package/dist/conversations/queue.d.ts +48 -56
  125. package/dist/conversations/queue.js +13 -289
  126. package/dist/conversations/queue.service.d.ts +60 -0
  127. package/dist/conversations/queue.service.js +343 -0
  128. package/dist/conversations/sandbox-status.d.ts +13 -10
  129. package/dist/conversations/sandbox-status.js +36 -8
  130. package/dist/conversations/titles.d.ts +71 -24
  131. package/dist/conversations/titles.js +159 -63
  132. package/dist/ctx/bus.js +9 -3
  133. package/dist/ctx/create-ctx.d.ts +6 -0
  134. package/dist/ctx/create-ctx.js +7 -9
  135. package/dist/ctx/lock.d.ts +7 -3
  136. package/dist/ctx/lock.js +9 -20
  137. package/dist/ctx/secrets.d.ts +10 -2
  138. package/dist/ctx/secrets.js +7 -3
  139. package/dist/db/kernel-schema.d.ts +4 -4
  140. package/dist/db/pool.d.ts +5 -0
  141. package/dist/db/pool.js +1 -0
  142. package/dist/errors.d.ts +1 -0
  143. package/dist/errors.js +1 -0
  144. package/dist/evals/budget.d.ts +42 -21
  145. package/dist/evals/budget.js +114 -62
  146. package/dist/evals/evals.module.d.ts +31 -0
  147. package/dist/evals/evals.module.js +114 -0
  148. package/dist/evals/jobs.d.ts +20 -0
  149. package/dist/evals/jobs.js +45 -0
  150. package/dist/evals/recorded-tools.d.ts +27 -1
  151. package/dist/evals/recorded-tools.js +85 -10
  152. package/dist/evals/run-replay.d.ts +61 -8
  153. package/dist/evals/run-replay.js +159 -85
  154. package/dist/evals/runs.controller.d.ts +1 -1
  155. package/dist/evals/runs.controller.js +17 -8
  156. package/dist/evals/runs.service.d.ts +23 -45
  157. package/dist/evals/runs.service.js +245 -234
  158. package/dist/evals/sets.controller.d.ts +1 -1
  159. package/dist/evals/sets.controller.js +17 -8
  160. package/dist/evals/sets.service.d.ts +22 -6
  161. package/dist/evals/sets.service.js +248 -194
  162. package/dist/evals/snapshot.d.ts +2 -2
  163. package/dist/evals/step-replay.d.ts +2 -2
  164. package/dist/evals/step-replay.js +1 -1
  165. package/dist/evals/trajectory.controller.d.ts +1 -1
  166. package/dist/evals/trajectory.controller.js +11 -7
  167. package/dist/evals/trajectory.d.ts +2 -2
  168. package/dist/evals/trajectory.service.d.ts +5 -4
  169. package/dist/evals/trajectory.service.js +30 -7
  170. package/dist/evals/worker.d.ts +44 -27
  171. package/dist/evals/worker.js +220 -121
  172. package/dist/extensions/admin-ops.d.ts +61 -33
  173. package/dist/extensions/admin-ops.js +248 -154
  174. package/dist/extensions/admin-view.d.ts +38 -27
  175. package/dist/extensions/admin-view.js +126 -55
  176. package/dist/extensions/approvals.d.ts +12 -8
  177. package/dist/extensions/approvals.js +73 -46
  178. package/dist/extensions/blobs.d.ts +27 -10
  179. package/dist/extensions/blobs.js +111 -45
  180. package/dist/extensions/bootstrap.d.ts +58 -31
  181. package/dist/extensions/bootstrap.js +175 -121
  182. package/dist/extensions/cli.d.ts +20 -10
  183. package/dist/extensions/cli.js +41 -96
  184. package/dist/extensions/config-issues.d.ts +7 -0
  185. package/dist/extensions/config-issues.js +31 -0
  186. package/dist/extensions/deployment-config-store.d.ts +49 -0
  187. package/dist/extensions/deployment-config-store.js +133 -0
  188. package/dist/extensions/deployment-config.d.ts +58 -67
  189. package/dist/extensions/deployment-config.js +202 -230
  190. package/dist/extensions/enabled.d.ts +5 -5
  191. package/dist/extensions/extensions.module.d.ts +8 -0
  192. package/dist/extensions/extensions.module.js +77 -0
  193. package/dist/extensions/hooks.d.ts +3 -2
  194. package/dist/extensions/hooks.js +1 -1
  195. package/dist/extensions/host.d.ts +72 -68
  196. package/dist/extensions/host.js +191 -152
  197. package/dist/extensions/installs.d.ts +49 -16
  198. package/dist/extensions/installs.js +128 -32
  199. package/dist/extensions/job-ids.d.ts +6 -0
  200. package/dist/extensions/job-ids.js +6 -0
  201. package/dist/extensions/lifecycle-topics.d.ts +18 -0
  202. package/dist/extensions/lifecycle-topics.js +18 -0
  203. package/dist/extensions/lifecycle.d.ts +35 -47
  204. package/dist/extensions/lifecycle.js +103 -39
  205. package/dist/extensions/locks.d.ts +33 -0
  206. package/dist/extensions/locks.js +86 -0
  207. package/dist/extensions/migrate-lock.d.ts +3 -4
  208. package/dist/extensions/org-config.controller.d.ts +1 -1
  209. package/dist/extensions/org-config.controller.js +8 -5
  210. package/dist/extensions/org-config.d.ts +48 -46
  211. package/dist/extensions/org-config.js +284 -226
  212. package/dist/extensions/registry.d.ts +50 -2
  213. package/dist/extensions/registry.js +89 -4
  214. package/dist/extensions/sources.d.ts +12 -8
  215. package/dist/extensions/sources.js +34 -13
  216. package/dist/files/files.module.d.ts +3 -0
  217. package/dist/files/files.module.js +22 -0
  218. package/dist/files/previewers.controller.d.ts +7 -2
  219. package/dist/files/previewers.controller.js +17 -9
  220. package/dist/files/previewers.d.ts +13 -18
  221. package/dist/files/previewers.js +83 -36
  222. package/dist/http/adapter.d.ts +3 -0
  223. package/dist/http/adapter.js +25 -0
  224. package/dist/http/api.module.d.ts +3 -110
  225. package/dist/http/api.module.js +47 -355
  226. package/dist/http/app.d.ts +11 -15
  227. package/dist/http/app.js +17 -62
  228. package/dist/http/error-filter.module.d.ts +5 -0
  229. package/dist/http/error-filter.module.js +18 -0
  230. package/dist/http/error.filter.js +2 -2
  231. package/dist/identity/accounts.d.ts +82 -29
  232. package/dist/identity/accounts.js +294 -175
  233. package/dist/identity/api-tokens.d.ts +11 -7
  234. package/dist/identity/api-tokens.js +71 -44
  235. package/dist/identity/audit.d.ts +7 -4
  236. package/dist/identity/audit.js +5 -1
  237. package/dist/identity/auth.controller.d.ts +11 -10
  238. package/dist/identity/auth.controller.js +31 -25
  239. package/dist/identity/auth.guard.d.ts +3 -3
  240. package/dist/identity/auth.guard.js +6 -4
  241. package/dist/identity/binding.d.ts +9 -11
  242. package/dist/identity/binding.js +41 -13
  243. package/dist/identity/enterprise-admin.d.ts +18 -12
  244. package/dist/identity/enterprise-admin.js +67 -13
  245. package/dist/identity/external-identity-lock.d.ts +17 -0
  246. package/dist/identity/external-identity-lock.js +39 -0
  247. package/dist/identity/external.d.ts +19 -15
  248. package/dist/identity/external.js +163 -125
  249. package/dist/identity/identity.module.d.ts +6 -0
  250. package/dist/identity/identity.module.js +56 -0
  251. package/dist/identity/me.controller.d.ts +16 -15
  252. package/dist/identity/me.controller.js +37 -31
  253. package/dist/identity/sessions.d.ts +12 -10
  254. package/dist/identity/sessions.js +74 -42
  255. package/dist/identity/settings.d.ts +20 -14
  256. package/dist/identity/settings.js +86 -58
  257. package/dist/identity/sso.controller.d.ts +7 -7
  258. package/dist/identity/sso.controller.js +13 -9
  259. package/dist/identity/sso.d.ts +9 -12
  260. package/dist/identity/sso.js +54 -24
  261. package/dist/inbox/inbox.module.d.ts +3 -0
  262. package/dist/inbox/inbox.module.js +22 -0
  263. package/dist/inbox/inbox.service.d.ts +7 -9
  264. package/dist/inbox/inbox.service.js +32 -11
  265. package/dist/index.d.ts +16 -11
  266. package/dist/index.js +9 -6
  267. package/dist/infra/cache/cache.module.d.ts +3 -0
  268. package/dist/infra/cache/cache.module.js +16 -0
  269. package/dist/infra/cache/cache.service.d.ts +21 -0
  270. package/dist/infra/cache/cache.service.js +80 -0
  271. package/dist/infra/cache/cacheable.decorator.d.ts +32 -0
  272. package/dist/infra/cache/cacheable.decorator.js +83 -0
  273. package/dist/infra/cli/kernel-cli.module.d.ts +66 -0
  274. package/dist/infra/cli/kernel-cli.module.js +165 -0
  275. package/dist/infra/close-within.d.ts +15 -0
  276. package/dist/infra/close-within.js +36 -0
  277. package/dist/infra/config/config.module.d.ts +13 -0
  278. package/dist/infra/config/config.module.js +39 -0
  279. package/dist/infra/config/kernel-config.service.d.ts +25 -0
  280. package/dist/infra/config/kernel-config.service.js +126 -0
  281. package/dist/infra/database/after-commit.d.ts +6 -0
  282. package/dist/infra/database/after-commit.js +9 -0
  283. package/dist/infra/database/database.module.d.ts +25 -0
  284. package/dist/infra/database/database.module.js +90 -0
  285. package/dist/infra/database/kernel-db.d.ts +22 -0
  286. package/dist/infra/database/kernel-db.js +65 -0
  287. package/dist/infra/database/transaction-host.d.ts +50 -0
  288. package/dist/infra/database/transaction-host.js +125 -0
  289. package/dist/infra/database/transactional.decorator.d.ts +15 -0
  290. package/dist/infra/database/transactional.decorator.js +27 -0
  291. package/dist/infra/database/xact-lock.d.ts +17 -0
  292. package/dist/infra/database/xact-lock.js +43 -0
  293. package/dist/infra/events/kernel-events.d.ts +96 -0
  294. package/dist/infra/events/kernel-events.js +65 -0
  295. package/dist/infra/health/health.controller.d.ts +26 -0
  296. package/dist/infra/health/health.controller.js +104 -0
  297. package/dist/infra/health/health.module.d.ts +9 -0
  298. package/dist/infra/health/health.module.js +24 -0
  299. package/dist/infra/health/health.options.d.ts +10 -0
  300. package/dist/infra/health/health.options.js +15 -0
  301. package/dist/infra/health/shutdown-state.d.ts +6 -0
  302. package/dist/infra/health/shutdown-state.js +2 -0
  303. package/dist/infra/lifecycle/graceful-shutdown.module.d.ts +6 -0
  304. package/dist/infra/lifecycle/graceful-shutdown.module.js +23 -0
  305. package/dist/infra/lifecycle/graceful-shutdown.service.d.ts +70 -0
  306. package/dist/infra/lifecycle/graceful-shutdown.service.js +135 -0
  307. package/dist/infra/lifecycle/process-guards.d.ts +52 -0
  308. package/dist/infra/lifecycle/process-guards.js +86 -0
  309. package/dist/infra/lifecycle/shutdown-signals.d.ts +30 -0
  310. package/dist/infra/lifecycle/shutdown-signals.js +48 -0
  311. package/dist/infra/lock/key-template.d.ts +13 -0
  312. package/dist/infra/lock/key-template.js +46 -0
  313. package/dist/infra/lock/lock.module.d.ts +3 -0
  314. package/dist/infra/lock/lock.module.js +16 -0
  315. package/dist/infra/lock/lock.service.d.ts +120 -0
  316. package/dist/infra/lock/lock.service.js +343 -0
  317. package/dist/infra/lock/shared-lease.d.ts +44 -0
  318. package/dist/infra/lock/shared-lease.js +121 -0
  319. package/dist/infra/lock/with-lock.decorator.d.ts +28 -0
  320. package/dist/infra/lock/with-lock.decorator.js +49 -0
  321. package/dist/infra/logging/logging.module.d.ts +16 -0
  322. package/dist/infra/logging/logging.module.js +34 -0
  323. package/dist/infra/queue/configured-processor.d.ts +18 -0
  324. package/dist/infra/queue/configured-processor.js +23 -0
  325. package/dist/infra/queue/job-failure.d.ts +18 -0
  326. package/dist/infra/queue/job-failure.js +26 -0
  327. package/dist/infra/queue/queue-shutdown.d.ts +27 -0
  328. package/dist/infra/queue/queue-shutdown.js +81 -0
  329. package/dist/infra/queue/queue.module.d.ts +16 -0
  330. package/dist/infra/queue/queue.module.js +61 -0
  331. package/dist/infra/queue/redis-connection.d.ts +7 -0
  332. package/dist/infra/queue/redis-connection.js +18 -0
  333. package/dist/infra/queue/retired-schedulers.d.ts +7 -0
  334. package/dist/infra/queue/retired-schedulers.js +9 -0
  335. package/dist/infra/queue/run-job.d.ts +16 -0
  336. package/dist/infra/queue/run-job.js +19 -0
  337. package/dist/infra/redis/redis.module.d.ts +24 -0
  338. package/dist/infra/redis/redis.module.js +87 -0
  339. package/dist/infra/schedule/cron-tick.d.ts +12 -0
  340. package/dist/infra/schedule/cron-tick.js +25 -0
  341. package/dist/infra/schedule/locked-cron.decorator.d.ts +27 -0
  342. package/dist/infra/schedule/locked-cron.decorator.js +53 -0
  343. package/dist/infra/schedule/locked-interval.d.ts +69 -0
  344. package/dist/infra/schedule/locked-interval.js +190 -0
  345. package/dist/infra/schedule/locked-tick.d.ts +90 -0
  346. package/dist/infra/schedule/locked-tick.js +137 -0
  347. package/dist/infra/schedule/schedule.module.d.ts +8 -0
  348. package/dist/infra/schedule/schedule.module.js +27 -0
  349. package/dist/infra/schedule/scheduled-runs.d.ts +69 -0
  350. package/dist/infra/schedule/scheduled-runs.js +163 -0
  351. package/dist/infra/swagger/swagger.d.ts +16 -0
  352. package/dist/infra/swagger/swagger.js +31 -0
  353. package/dist/infra/throttler/credential-throttler.d.ts +35 -0
  354. package/dist/infra/throttler/credential-throttler.js +77 -0
  355. package/dist/infra/throttler/named-throttlers.d.ts +31 -0
  356. package/dist/infra/throttler/named-throttlers.js +119 -0
  357. package/dist/infra/throttler/redis-throttler-storage.d.ts +38 -0
  358. package/dist/infra/throttler/redis-throttler-storage.js +130 -0
  359. package/dist/infra/throttler/throttler.guard.d.ts +23 -0
  360. package/dist/infra/throttler/throttler.guard.js +68 -0
  361. package/dist/infra/throttler/throttler.module.d.ts +15 -0
  362. package/dist/infra/throttler/throttler.module.js +53 -0
  363. package/dist/infra/tokens.d.ts +15 -0
  364. package/dist/infra/tokens.js +15 -0
  365. package/dist/infra/validation/create-zod-dto.d.ts +23 -0
  366. package/dist/infra/validation/create-zod-dto.js +35 -0
  367. package/dist/infra/validation/parse-with-zod.d.ts +7 -0
  368. package/dist/infra/validation/parse-with-zod.js +12 -0
  369. package/dist/infra/validation/validation.module.d.ts +3 -0
  370. package/dist/infra/validation/validation.module.js +16 -0
  371. package/dist/infra/validation/zod-params.d.ts +7 -0
  372. package/dist/infra/validation/zod-params.js +42 -0
  373. package/dist/infra/validation/zod-validation.pipe.d.ts +11 -0
  374. package/dist/infra/validation/zod-validation.pipe.js +31 -0
  375. package/dist/kernel.d.ts +9 -244
  376. package/dist/kernel.js +8 -1305
  377. package/dist/kernel.module.d.ts +17 -0
  378. package/dist/kernel.module.js +136 -0
  379. package/dist/lifecycle/kernel-lifecycle.d.ts +140 -0
  380. package/dist/lifecycle/kernel-lifecycle.js +456 -0
  381. package/dist/lifecycle/tokens.d.ts +3 -0
  382. package/dist/lifecycle/tokens.js +3 -0
  383. package/dist/log-context.d.ts +2 -0
  384. package/dist/log-context.js +4 -0
  385. package/dist/models/models.module.d.ts +3 -0
  386. package/dist/models/models.module.js +24 -0
  387. package/dist/models/prices.d.ts +8 -2
  388. package/dist/models/prices.js +65 -37
  389. package/dist/models/purposes.controller.d.ts +1 -1
  390. package/dist/models/purposes.controller.js +5 -6
  391. package/dist/models/purposes.d.ts +35 -13
  392. package/dist/models/purposes.js +101 -51
  393. package/dist/orgs/directory-sync.controller.d.ts +1 -1
  394. package/dist/orgs/directory-sync.controller.js +2 -2
  395. package/dist/orgs/directory-sync.d.ts +61 -31
  396. package/dist/orgs/directory-sync.js +212 -125
  397. package/dist/orgs/invitations.controller.d.ts +8 -8
  398. package/dist/orgs/invitations.controller.js +27 -26
  399. package/dist/orgs/invitations.service.d.ts +12 -9
  400. package/dist/orgs/invitations.service.js +130 -92
  401. package/dist/orgs/job-ids.d.ts +8 -0
  402. package/dist/orgs/job-ids.js +8 -0
  403. package/dist/orgs/members.service.d.ts +19 -12
  404. package/dist/orgs/members.service.js +161 -117
  405. package/dist/orgs/offboarding.d.ts +54 -57
  406. package/dist/orgs/offboarding.js +161 -71
  407. package/dist/orgs/org-lock.d.ts +28 -19
  408. package/dist/orgs/org-lock.js +81 -35
  409. package/dist/orgs/org.guard.d.ts +1 -1
  410. package/dist/orgs/org.guard.js +2 -2
  411. package/dist/orgs/orgs.controller.d.ts +13 -13
  412. package/dist/orgs/orgs.controller.js +29 -17
  413. package/dist/orgs/orgs.module.d.ts +6 -0
  414. package/dist/orgs/orgs.module.js +68 -0
  415. package/dist/orgs/orgs.service.d.ts +30 -19
  416. package/dist/orgs/orgs.service.js +139 -86
  417. package/dist/orgs/settings.controller.d.ts +1 -1
  418. package/dist/orgs/settings.controller.js +8 -6
  419. package/dist/orgs/settings.service.d.ts +16 -10
  420. package/dist/orgs/settings.service.js +77 -48
  421. package/dist/overrides.d.ts +56 -0
  422. package/dist/overrides.js +30 -0
  423. package/dist/roles/gateway-role.d.ts +43 -0
  424. package/dist/roles/gateway-role.js +98 -0
  425. package/dist/roles/gateway.module.d.ts +8 -0
  426. package/dist/roles/gateway.module.js +28 -0
  427. package/dist/roles/worker-role.d.ts +63 -0
  428. package/dist/roles/worker-role.js +144 -0
  429. package/dist/roles/worker.module.d.ts +14 -0
  430. package/dist/roles/worker.module.js +90 -0
  431. package/dist/runtime/abort.js +19 -2
  432. package/dist/runtime/checkpointer.d.ts +8 -3
  433. package/dist/runtime/checkpointer.js +87 -55
  434. package/dist/runtime/context/build.d.ts +6 -6
  435. package/dist/runtime/context/build.js +18 -8
  436. package/dist/runtime/context/claude-tools.d.ts +2 -1
  437. package/dist/runtime/context/claude-tools.js +9 -10
  438. package/dist/runtime/context/legacy-text.d.ts +22 -0
  439. package/dist/runtime/context/legacy-text.js +37 -0
  440. package/dist/runtime/context/skills.d.ts +29 -11
  441. package/dist/runtime/context/skills.js +37 -30
  442. package/dist/runtime/conversation-lock.d.ts +20 -11
  443. package/dist/runtime/conversation-lock.js +62 -72
  444. package/dist/runtime/hook-calls.d.ts +3 -3
  445. package/dist/runtime/hook-calls.js +1 -6
  446. package/dist/runtime/job-ids.d.ts +10 -0
  447. package/dist/runtime/job-ids.js +10 -0
  448. package/dist/runtime/langgraph-loop.js +1 -1
  449. package/dist/runtime/loop.d.ts +8 -1
  450. package/dist/runtime/loop.js +14 -0
  451. package/dist/runtime/maintenance-queue.d.ts +10 -0
  452. package/dist/runtime/maintenance-queue.js +10 -0
  453. package/dist/runtime/maintenance.d.ts +45 -74
  454. package/dist/runtime/maintenance.js +139 -137
  455. package/dist/runtime/model-call.d.ts +7 -4
  456. package/dist/runtime/model-call.js +25 -58
  457. package/dist/runtime/providers.d.ts +17 -6
  458. package/dist/runtime/providers.js +66 -25
  459. package/dist/runtime/quota.d.ts +17 -3
  460. package/dist/runtime/quota.js +27 -2
  461. package/dist/runtime/retired-schedulers.d.ts +7 -0
  462. package/dist/runtime/retired-schedulers.js +31 -0
  463. package/dist/runtime/run-control.d.ts +33 -0
  464. package/dist/runtime/run-control.js +77 -0
  465. package/dist/runtime/run-finish.d.ts +27 -18
  466. package/dist/runtime/run-finish.js +98 -51
  467. package/dist/runtime/run-jobs.d.ts +48 -0
  468. package/dist/runtime/run-jobs.js +95 -0
  469. package/dist/runtime/run-processors.d.ts +60 -0
  470. package/dist/runtime/run-processors.js +185 -0
  471. package/dist/runtime/run-queue.d.ts +32 -57
  472. package/dist/runtime/run-queue.js +291 -295
  473. package/dist/runtime/run-steps.d.ts +39 -0
  474. package/dist/runtime/run-steps.js +96 -0
  475. package/dist/runtime/run-worker.d.ts +122 -76
  476. package/dist/runtime/run-worker.js +343 -229
  477. package/dist/runtime/runtime.module.d.ts +10 -0
  478. package/dist/runtime/runtime.module.js +112 -0
  479. package/dist/runtime/step-log.d.ts +40 -0
  480. package/dist/runtime/step-log.js +94 -0
  481. package/dist/runtime/stream.controller.d.ts +5 -8
  482. package/dist/runtime/stream.controller.js +14 -12
  483. package/dist/runtime/stream.d.ts +24 -6
  484. package/dist/runtime/stream.js +78 -7
  485. package/dist/runtime/subagents/child.d.ts +3 -44
  486. package/dist/runtime/subagents/child.js +0 -79
  487. package/dist/runtime/subagents/definition.d.ts +5 -10
  488. package/dist/runtime/subagents/definition.js +13 -14
  489. package/dist/runtime/subagents/dispatch.d.ts +89 -8
  490. package/dist/runtime/subagents/dispatch.js +137 -142
  491. package/dist/runtime/subagents/limits.d.ts +9 -4
  492. package/dist/runtime/subagents/limits.js +4 -2
  493. package/dist/runtime/subagents/org-agents.d.ts +4 -4
  494. package/dist/runtime/subagents/org-agents.js +3 -2
  495. package/dist/runtime/subagents/progress.d.ts +2 -2
  496. package/dist/runtime/subagents/roster.d.ts +4 -4
  497. package/dist/runtime/subagents/roster.js +2 -2
  498. package/dist/runtime/subagents/skill-fork.d.ts +8 -9
  499. package/dist/runtime/subagents/skill-fork.js +17 -6
  500. package/dist/runtime/subagents/subagents.service.d.ts +40 -0
  501. package/dist/runtime/subagents/subagents.service.js +101 -0
  502. package/dist/runtime/usage-report.d.ts +94 -52
  503. package/dist/runtime/usage-report.js +200 -100
  504. package/dist/runtime/waits.d.ts +127 -59
  505. package/dist/runtime/waits.js +433 -210
  506. package/dist/sandbox/job-ids.d.ts +10 -0
  507. package/dist/sandbox/job-ids.js +10 -0
  508. package/dist/sandbox/jobs.d.ts +41 -0
  509. package/dist/sandbox/jobs.js +113 -0
  510. package/dist/sandbox/leases.d.ts +39 -31
  511. package/dist/sandbox/leases.js +117 -257
  512. package/dist/sandbox/providers.d.ts +19 -0
  513. package/dist/sandbox/providers.js +38 -0
  514. package/dist/sandbox/sandbox.module.d.ts +8 -0
  515. package/dist/sandbox/sandbox.module.js +30 -0
  516. package/dist/sandbox/sandbox.service.d.ts +24 -29
  517. package/dist/sandbox/sandbox.service.js +106 -75
  518. package/dist/skills/catalog.d.ts +37 -24
  519. package/dist/skills/catalog.js +100 -57
  520. package/dist/skills/changes.controller.d.ts +4 -4
  521. package/dist/skills/changes.controller.js +15 -9
  522. package/dist/skills/changes.service.d.ts +30 -20
  523. package/dist/skills/changes.service.js +425 -367
  524. package/dist/skills/invocable.controller.d.ts +1 -1
  525. package/dist/skills/invocable.controller.js +8 -5
  526. package/dist/skills/invocation-keys.d.ts +1 -1
  527. package/dist/skills/invocation-keys.js +1 -1
  528. package/dist/skills/invoke.d.ts +17 -16
  529. package/dist/skills/invoke.js +53 -21
  530. package/dist/skills/skills.controller.d.ts +1 -1
  531. package/dist/skills/skills.controller.js +11 -6
  532. package/dist/skills/skills.module.d.ts +6 -0
  533. package/dist/skills/skills.module.js +30 -0
  534. package/dist/skills/skills.service.d.ts +47 -30
  535. package/dist/skills/skills.service.js +221 -158
  536. package/dist/storage/job-ids.d.ts +6 -0
  537. package/dist/storage/job-ids.js +6 -0
  538. package/dist/storage/purge.d.ts +22 -7
  539. package/dist/storage/purge.js +55 -3
  540. package/dist/storage/storage.module.d.ts +6 -0
  541. package/dist/storage/storage.module.js +23 -0
  542. package/dist/storage/storage.service.d.ts +18 -4
  543. package/dist/storage/storage.service.js +44 -3
  544. package/dist/tools/approvals.controller.d.ts +1 -1
  545. package/dist/tools/approvals.controller.js +12 -8
  546. package/dist/tools/approvals.service.d.ts +33 -25
  547. package/dist/tools/approvals.service.js +343 -259
  548. package/dist/tools/breaker.d.ts +2 -2
  549. package/dist/tools/breaker.js +21 -3
  550. package/dist/tools/builtin-names.d.ts +73 -0
  551. package/dist/tools/builtin-names.js +116 -0
  552. package/dist/tools/builtins/agent.d.ts +7 -7
  553. package/dist/tools/builtins/agent.js +7 -11
  554. package/dist/tools/builtins/ask-user.d.ts +3 -3
  555. package/dist/tools/builtins/ask-user.js +3 -3
  556. package/dist/tools/builtins/builtin-tools.d.ts +21 -0
  557. package/dist/tools/builtins/builtin-tools.js +80 -0
  558. package/dist/tools/builtins/read-tool-output.d.ts +3 -3
  559. package/dist/tools/builtins/read-tool-output.js +3 -3
  560. package/dist/tools/builtins/sandbox/bash.d.ts +5 -5
  561. package/dist/tools/builtins/sandbox/bash.js +33 -30
  562. package/dist/tools/builtins/sandbox/common.d.ts +5 -4
  563. package/dist/tools/builtins/sandbox/common.js +2 -2
  564. package/dist/tools/builtins/sandbox/deliver.d.ts +1 -1
  565. package/dist/tools/builtins/sandbox/deliver.js +13 -13
  566. package/dist/tools/builtins/sandbox/edit.d.ts +1 -1
  567. package/dist/tools/builtins/sandbox/edit.js +42 -31
  568. package/dist/tools/builtins/sandbox/file-state.d.ts +34 -0
  569. package/dist/tools/builtins/sandbox/file-state.js +34 -0
  570. package/dist/tools/builtins/sandbox/glob-match.d.ts +1 -1
  571. package/dist/tools/builtins/sandbox/glob-match.js +1 -1
  572. package/dist/tools/builtins/sandbox/glob.d.ts +1 -1
  573. package/dist/tools/builtins/sandbox/glob.js +6 -6
  574. package/dist/tools/builtins/sandbox/grep.d.ts +7 -4
  575. package/dist/tools/builtins/sandbox/grep.js +149 -32
  576. package/dist/tools/builtins/sandbox/index.d.ts +1 -1
  577. package/dist/tools/builtins/sandbox/index.js +1 -1
  578. package/dist/tools/builtins/sandbox/read.d.ts +2 -2
  579. package/dist/tools/builtins/sandbox/read.js +22 -15
  580. package/dist/tools/builtins/sandbox/write.d.ts +1 -1
  581. package/dist/tools/builtins/sandbox/write.js +38 -34
  582. package/dist/tools/builtins/skill-load.d.ts +6 -6
  583. package/dist/tools/builtins/skill-load.js +33 -17
  584. package/dist/tools/builtins/skill-write.d.ts +4 -4
  585. package/dist/tools/builtins/skill-write.js +10 -10
  586. package/dist/tools/builtins/tool-search.d.ts +13 -9
  587. package/dist/tools/builtins/tool-search.js +25 -14
  588. package/dist/tools/canonical-json.d.ts +6 -0
  589. package/dist/tools/canonical-json.js +16 -0
  590. package/dist/tools/connector-content.controller.d.ts +1 -1
  591. package/dist/tools/connector-content.controller.js +11 -6
  592. package/dist/tools/connector-content.d.ts +12 -15
  593. package/dist/tools/connector-content.js +53 -18
  594. package/dist/tools/connectors.controller.d.ts +1 -1
  595. package/dist/tools/connectors.controller.js +21 -10
  596. package/dist/tools/connectors.service.d.ts +31 -13
  597. package/dist/tools/connectors.service.js +438 -348
  598. package/dist/tools/credentials.d.ts +17 -20
  599. package/dist/tools/credentials.js +55 -34
  600. package/dist/tools/display-names.d.ts +9 -0
  601. package/dist/tools/display-names.js +24 -0
  602. package/dist/tools/drift.d.ts +29 -41
  603. package/dist/tools/drift.js +116 -84
  604. package/dist/tools/elicitation.js +1 -1
  605. package/dist/tools/info.d.ts +32 -13
  606. package/dist/tools/info.js +88 -39
  607. package/dist/tools/job-ids.d.ts +13 -0
  608. package/dist/tools/job-ids.js +15 -0
  609. package/dist/tools/jobs.d.ts +24 -0
  610. package/dist/tools/jobs.js +69 -0
  611. package/dist/tools/legacy-data.d.ts +34 -0
  612. package/dist/tools/legacy-data.js +76 -0
  613. package/dist/tools/legacy-keys.d.ts +51 -0
  614. package/dist/tools/legacy-keys.js +115 -0
  615. package/dist/tools/naming.d.ts +1 -5
  616. package/dist/tools/naming.js +1 -7
  617. package/dist/tools/oauth/flow-paths.d.ts +16 -0
  618. package/dist/tools/oauth/flow-paths.js +38 -0
  619. package/dist/tools/oauth/flow.d.ts +30 -30
  620. package/dist/tools/oauth/flow.js +109 -81
  621. package/dist/tools/oauth/oauth.controller.d.ts +3 -3
  622. package/dist/tools/oauth/oauth.controller.js +12 -9
  623. package/dist/tools/oauth/tokens.d.ts +11 -3
  624. package/dist/tools/oauth/tokens.js +15 -14
  625. package/dist/tools/outputs.d.ts +13 -4
  626. package/dist/tools/outputs.js +48 -4
  627. package/dist/tools/pipeline.d.ts +72 -50
  628. package/dist/tools/pipeline.js +239 -100
  629. package/dist/tools/policy.d.ts +3 -16
  630. package/dist/tools/policy.js +13 -19
  631. package/dist/tools/questions.controller.d.ts +2 -2
  632. package/dist/tools/questions.controller.js +9 -6
  633. package/dist/tools/questions.service.d.ts +26 -25
  634. package/dist/tools/questions.service.js +201 -142
  635. package/dist/tools/registry.d.ts +43 -38
  636. package/dist/tools/registry.js +100 -72
  637. package/dist/tools/resources.d.ts +1 -1
  638. package/dist/tools/resources.js +1 -1
  639. package/dist/tools/specs.d.ts +5 -4
  640. package/dist/tools/specs.js +3 -1
  641. package/dist/tools/tools.module.d.ts +10 -0
  642. package/dist/tools/tools.module.js +91 -0
  643. package/dist/ui/call-extension.d.ts +16 -0
  644. package/dist/ui/call-extension.js +38 -0
  645. package/dist/ui/embed-token.d.ts +9 -5
  646. package/dist/ui/embed-token.js +34 -6
  647. package/dist/ui/ui-stream.d.ts +22 -17
  648. package/dist/ui/ui-stream.js +72 -12
  649. package/dist/ui/ui.module.d.ts +7 -0
  650. package/dist/ui/ui.module.js +28 -0
  651. package/dist/ui/views.controller.d.ts +14 -12
  652. package/dist/ui/views.controller.js +32 -25
  653. package/dist/ui/views.d.ts +9 -57
  654. package/dist/ui/views.js +43 -45
  655. package/package.json +10 -3
  656. package/src/migrations/0063_tool_keys_claude_code.sql +220 -0
  657. package/dist/http/health.controller.d.ts +0 -26
  658. package/dist/http/health.controller.js +0 -79
  659. package/dist/http/tokens.d.ts +0 -131
  660. package/dist/http/tokens.js +0 -131
  661. package/dist/http/zod.pipe.d.ts +0 -8
  662. package/dist/http/zod.pipe.js +0 -14
  663. package/dist/identity/rate-limit.d.ts +0 -55
  664. package/dist/identity/rate-limit.js +0 -121
  665. package/dist/sandbox/lifecycle.d.ts +0 -21
  666. package/dist/sandbox/lifecycle.js +0 -68
  667. package/dist/tools/builtins/sandbox/names.d.ts +0 -7
  668. package/dist/tools/builtins/sandbox/names.js +0 -20
  669. /package/dist/http/{gateway.module.d.ts → gateway-routes.d.ts} +0 -0
  670. /package/dist/http/{gateway.module.js → gateway-routes.js} +0 -0
@@ -0,0 +1,456 @@
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 { SANDBOX_EXTENSION_POINT, } from "@capybara-hq/plugin-sdk";
11
+ import { Inject, Injectable, Optional, } from "@nestjs/common";
12
+ import { sql } from "kysely";
13
+ import { MarketplacesService } from "../catalog/marketplaces.service.js";
14
+ import { PluginImport } from "../catalog/plugin-import.js";
15
+ import { ChannelJobs } from "../channels/jobs.js";
16
+ import { ChannelOutbound } from "../channels/outbound.js";
17
+ import { TitleQueue } from "../conversations/titles.js";
18
+ import { migrate } from "../db/migrator.js";
19
+ import { ExtensionBlobs } from "../extensions/blobs.js";
20
+ import { BootstrapFailedError, BootstrapService, bootstrapManifestSha256, readBootstrapManifest, } from "../extensions/bootstrap.js";
21
+ import { ExtensionHost } from "../extensions/host.js";
22
+ import { ExtensionInstalls } from "../extensions/installs.js";
23
+ import { ExtensionLifecycle } from "../extensions/lifecycle.js";
24
+ import { ensureMigrated } from "../extensions/migrate-lock.js";
25
+ import { ExtensionRegistry } from "../extensions/registry.js";
26
+ import { ReplicaStatusStore } from "../extensions/sources.js";
27
+ import { syncPackage } from "../extensions/sync.js";
28
+ import { AccountsService } from "../identity/accounts.js";
29
+ import { waitWithin } from "../infra/close-within.js";
30
+ import { KernelConfigService } from "../infra/config/kernel-config.service.js";
31
+ import { KernelDb } from "../infra/database/kernel-db.js";
32
+ import { GracefulShutdown } from "../infra/lifecycle/graceful-shutdown.service.js";
33
+ import { KERNEL_BUS, KERNEL_LOGGER, KERNEL_POOL, REDIS } from "../infra/tokens.js";
34
+ import { KERNEL_MIGRATIONS_DIR, KERNEL_SCHEMA } from "../kernel.js";
35
+ import { GatewayRole } from "../roles/gateway-role.js";
36
+ import { WorkerRole } from "../roles/worker-role.js";
37
+ import { UsageReporter } from "../runtime/usage-report.js";
38
+ import { sandboxConfigWarnings } from "../sandbox/sandbox.service.js";
39
+ import { warnLegacyToolKeys } from "../tools/legacy-data.js";
40
+ import { KERNEL_APP_OPTIONS } from "./tokens.js";
41
+ /**
42
+ * The stop phase budgets. Each phase waits `min(its budget, what is left of the total)`, where the
43
+ * total is `STOP_TIMEOUT_MS` (30 s, `GracefulShutdown`) counted from the moment the shutdown
44
+ * began, in this order: migrate 2 s (the start's in-flight kernel migration, aborted, until its
45
+ * session ended) → http 10 s → runs 10 s → plugins 5 s, 27 s in all. The bus subscriber, Redis and
46
+ * the pool are closed after the phases by the infra modules (`onApplicationShutdown`) within what
47
+ * is left of the same 30 s, so the whole stop never takes longer than 30 s.
48
+ * The http phase is one deadline: first the listen in progress finishes (closing while listening
49
+ * would leave the port open), then HTTP closes, both within these 10 s; whatever is still open at
50
+ * the deadline is disconnected.
51
+ * The runs phase: this process's runs get the stop signal, stop at their next step boundary and
52
+ * their jobs go back to the queue; runs over the budget are left to BullMQ's stalled-job handling
53
+ * on another worker (spec 8.5). So when an earlier phase hangs, the extension queues still get at
54
+ * least 5 s to drain.
55
+ */
56
+ export const STOP_BUDGET_MS = {
57
+ migrate: 2_000,
58
+ http: 10_000,
59
+ runs: 10_000,
60
+ plugins: 5_000,
61
+ };
62
+ /** 停机时留给渠道长连接交还租约的最少时间(与 runs 阶段并行开始,runs 用尽预算时仍保底)。 */
63
+ const CHANNELS_STOP_MIN_MS = 2_000;
64
+ /** runs 阶段里留给强制关闭 worker 的余量(预算的其余部分用于等运行到达步骤边界)。 */
65
+ const RUNS_FORCE_CLOSE_MS = 500;
66
+ const errMsg = (e) => (e instanceof Error ? e.message : String(e));
67
+ /**
68
+ * The kernel's start order and stop phases on Nest's hooks (nest kernel spec §4).
69
+ *
70
+ * Start (`onApplicationBootstrap`, run by `app.init()`): Redis ready → kernel migrations → official
71
+ * marketplace sync → bootstrap → extension host load → role parts (workers, schedules, gateway) →
72
+ * mount extension routes → extension lifecycle reconcile → (second bootstrap pass) → config watch.
73
+ * {@link listen} runs only after that resolved, so nothing is served before the extensions are
74
+ * loaded. A stop requested meanwhile makes the sequence throw at its next checkpoint.
75
+ *
76
+ * Stop (`beforeApplicationShutdown`, or {@link stop} directly): readiness answers 503, the start is
77
+ * aborted, then today's phases with {@link STOP_BUDGET_MS} (HTTP, runs, channels, queues, the
78
+ * extension host). Redis and the pool are closed after this by the infra modules
79
+ * (`onApplicationShutdown`, global modules run last).
80
+ */
81
+ let KernelLifecycle = class KernelLifecycle {
82
+ accounts;
83
+ configService;
84
+ log;
85
+ options;
86
+ pool;
87
+ redis;
88
+ kdb;
89
+ shutdown;
90
+ host;
91
+ registry;
92
+ installs;
93
+ blobs;
94
+ extensionLifecycle;
95
+ replicaStatus;
96
+ bootstrap;
97
+ marketplaces;
98
+ pluginImport;
99
+ bus;
100
+ usageReport;
101
+ titles;
102
+ channelJobs;
103
+ channelOutbound;
104
+ worker;
105
+ gateway;
106
+ /** The startup config (hot fields are read through the config service). */
107
+ config;
108
+ /** Set when the application was never set up completely: shutdown only releases connections. */
109
+ onlyRelease = false;
110
+ stopPromise;
111
+ /** {@link listen} was called: the start work in flight is the listen, not the start sequence. */
112
+ listenStarted = false;
113
+ listening;
114
+ httpApp;
115
+ unwatchConfig;
116
+ /** What the first bootstrap pass did, carried into the second one. */
117
+ bootstrapCarry;
118
+ constructor(accounts, configService, log, options,
119
+ // biome-ignore lint/suspicious/noExplicitAny: the pool carries no schema types
120
+ pool, redis, kdb, shutdown, host, registry, installs, blobs, extensionLifecycle, replicaStatus, bootstrap, marketplaces, pluginImport, bus,
121
+ // the producers closed on every role (their consumers are the worker role's)
122
+ usageReport, titles, channelJobs, channelOutbound,
123
+ // The role modules' parts: a role module is imported only when `roles` names it, so each is
124
+ // present exactly when its role is (checked at the start)
125
+ worker, gateway) {
126
+ this.accounts = accounts;
127
+ this.configService = configService;
128
+ this.log = log;
129
+ this.options = options;
130
+ this.pool = pool;
131
+ this.redis = redis;
132
+ this.kdb = kdb;
133
+ this.shutdown = shutdown;
134
+ this.host = host;
135
+ this.registry = registry;
136
+ this.installs = installs;
137
+ this.blobs = blobs;
138
+ this.extensionLifecycle = extensionLifecycle;
139
+ this.replicaStatus = replicaStatus;
140
+ this.bootstrap = bootstrap;
141
+ this.marketplaces = marketplaces;
142
+ this.pluginImport = pluginImport;
143
+ this.bus = bus;
144
+ this.usageReport = usageReport;
145
+ this.titles = titles;
146
+ this.channelJobs = channelJobs;
147
+ this.channelOutbound = channelOutbound;
148
+ this.worker = worker;
149
+ this.gateway = gateway;
150
+ this.config = configService.get();
151
+ }
152
+ /** The kernel HTTP application (set up by `buildKernelApp` before `init()`). */
153
+ get http() {
154
+ if (!this.httpApp)
155
+ throw new Error("kernel HTTP application is not set up");
156
+ return this.httpApp;
157
+ }
158
+ attachHttp(http) {
159
+ this.httpApp = http;
160
+ }
161
+ /** The gateway role's HTTP routes (the channel webhook), when the roles include `gateway`. */
162
+ gatewayRoutes() {
163
+ return this.gateway?.routes();
164
+ }
165
+ /** The port listened on; undefined before {@link listen} resolves and after the stop. */
166
+ get port() {
167
+ return this.listening;
168
+ }
169
+ /** The application was not set up completely: its shutdown only releases connections. */
170
+ releaseOnly() {
171
+ this.onlyRelease = true;
172
+ this.shutdown.begin();
173
+ }
174
+ checkpoint() {
175
+ if (this.shutdown.isShuttingDown())
176
+ throw new Error("kernel stopped during start");
177
+ }
178
+ async onApplicationBootstrap() {
179
+ if (this.shutdown.isShuttingDown())
180
+ throw new Error("kernel is stopped");
181
+ const { config, options: opts } = this;
182
+ const { worker, gateway } = this;
183
+ if (config.roles.includes("worker") !== (worker !== undefined)) {
184
+ throw new Error("the worker role's module does not match the roles");
185
+ }
186
+ if (config.roles.includes("gateway") !== (gateway !== undefined)) {
187
+ throw new Error("the gateway role's module does not match the roles");
188
+ }
189
+ const cfg = () => this.configService.get();
190
+ await this.redis.connect();
191
+ this.checkpoint();
192
+ await sql `select 1`.execute(this.pool);
193
+ this.checkpoint();
194
+ // In flight for the stop: aborted when the shutdown begins, which then waits for its session to end
195
+ await this.shutdown.trackInFlight(migrate(config.db.url, { schema: KERNEL_SCHEMA, dir: KERNEL_MIGRATIONS_DIR }, { connectTimeoutMs: config.db.connectTimeoutMs, signal: this.shutdown.signal }));
196
+ this.checkpoint();
197
+ // Rows still holding a release-candidate tool key that migration 0063 could not map: one
198
+ // read-only count, a WARN when there are any (tool naming spec §8.2); never blocks the start
199
+ await warnLegacyToolKeys(this.kdb.db, this.log).catch((e) => this.log.warn("tools.legacy_key_count_failed", { error: errMsg(e) }));
200
+ this.checkpoint();
201
+ // official 清单来源按配置同步(幂等;每个副本启动时都做)
202
+ await this.marketplaces.syncOfficialFromConfig();
203
+ // The bootstrap plugins (spec §7), once per manifest across replicas (the Redis lock
204
+ // `lock:bootstrap`); a bootstrap entry named like a config-declared extension is kept
205
+ if (opts.bootstrap !== undefined) {
206
+ this.registry.declare(await ExtensionHost.declaredNames(config.extensions, {
207
+ ...(opts.resolveFrom !== undefined && { resolveFrom: opts.resolveFrom }),
208
+ }));
209
+ }
210
+ const bootstrapAgain = opts.bootstrap !== undefined && (await this.runBootstrap(opts.bootstrap.dir));
211
+ this.checkpoint();
212
+ // 配置声明 → 安装记录(C15 / C13)。安装记录的包在本副本同步到 extensionHost.dir 后导入,
213
+ // 与运行中的 reconcile 走同一条路径;迁移由一个副本持锁执行(ensureMigrated,C16)
214
+ await this.host.load({
215
+ config: config.extensions,
216
+ installs: {
217
+ desired: () => this.installs.desired(),
218
+ sync: (d) => syncPackage(cfg().extensionHost.dir, d.name, d.sha256, this.blobs, {
219
+ maxBytes: cfg().packages.maxBytes,
220
+ }),
221
+ migrate: async (d, dir, signal) => d.migratedSha === d.sha256
222
+ ? "migrated"
223
+ : ensureMigrated({
224
+ db: this.kdb.db,
225
+ dbUrl: config.db.url,
226
+ connectTimeoutMs: config.db.connectTimeoutMs,
227
+ bus: this.bus,
228
+ log: this.log,
229
+ // 宿主关闭时中止(运行中 reconcile 的迁移);停机一开始就中止(启动加载中的迁移不等宿主关闭)
230
+ signal: AbortSignal.any([signal, this.shutdown.signal]),
231
+ timeoutMs: cfg().extensionHost.migrationTimeoutSeconds * 1000,
232
+ }, d.name, d.sha256, dir),
233
+ },
234
+ });
235
+ this.checkpoint();
236
+ const sandboxEntry = this.host
237
+ .list("sandbox")
238
+ .find((x) => x.capability === SANDBOX_EXTENSION_POINT);
239
+ if (sandboxEntry !== undefined) {
240
+ for (const w of sandboxConfigWarnings(cfg(), sandboxEntry.plugin, sandboxEntry.impl)) {
241
+ this.log[w.level](w.message);
242
+ }
243
+ }
244
+ // The role parts (nest kernel spec §4): the worker role's queue consumers and schedules (the
245
+ // start gate: their timers are armed at application bootstrap, but no tick runs before the
246
+ // worker role opens the start gate here; the runOnStart jobs run then), the gateway role's
247
+ // supervisor and webhook inbound
248
+ if (worker)
249
+ await worker.start(() => this.checkpoint());
250
+ if (gateway)
251
+ await gateway.start(() => this.checkpoint());
252
+ // Routes stay mounted and are resolved live: 503 extension.unavailable after an extension is revoked, back after it reloads (C17)
253
+ this.http.mountPlugins(this.host.routeTable());
254
+ // 订阅插件生命周期主题后补一次 reconcile(启动加载期间错过的消息,并写下第一轮心跳)
255
+ await this.extensionLifecycle.start();
256
+ this.checkpoint();
257
+ await this.extensionLifecycle.reconcile("startup");
258
+ this.checkpoint();
259
+ if (bootstrapAgain && opts.bootstrap !== undefined) {
260
+ await this.runBootstrap(opts.bootstrap.dir, true);
261
+ this.checkpoint();
262
+ }
263
+ if (opts.source?.watch) {
264
+ // 热更新:重新校验;只应用 hot 字段,其余变化 warn 并列出需重启的键;校验失败保持原配置
265
+ this.unwatchConfig = opts.source.watch((raw) => this.configService.apply(raw), (err) => this.log.error("config watch error", { error: err.message }));
266
+ }
267
+ }
268
+ /**
269
+ * Listens on `port` (0.0.0.0; every role listens: worker-only serves only `/healthz` and
270
+ * `/readyz`) after the start sequence; returns the actual port.
271
+ */
272
+ async listen(port) {
273
+ // A shutdown already past the http phase must never open the port afterwards
274
+ this.checkpoint();
275
+ this.listenStarted = true;
276
+ // In flight for the stop: closing HTTP while it listens would leave the port open
277
+ this.listening = await this.shutdown.trackInFlight(this.http.listen(port));
278
+ this.checkpoint();
279
+ this.log.info("kernel started", { roles: this.config.roles, port: this.listening });
280
+ await this.warnIfSetupPending();
281
+ return this.listening;
282
+ }
283
+ /**
284
+ * Runs the bootstrap step unless it is done for the manifest. A required entry that cannot be
285
+ * completed (or a missing / tampered package: then nothing was installed) stops the start, so the
286
+ * kernel never serves without a required plugin. A failed optional entry is logged and returns
287
+ * true: the start runs the step once more after the extensions loaded (a declarative entry's
288
+ * catalog files need the object store, which on a fresh deployment is itself a bootstrap plugin),
289
+ * and the next start tries again while it stays incomplete.
290
+ */
291
+ async runBootstrap(dir, final = false) {
292
+ const manifest = this.options.bootstrapManifest ?? (await readBootstrapManifest());
293
+ const bootstrap = this.bootstrap;
294
+ if (await bootstrap.isDone(bootstrapManifestSha256(manifest)))
295
+ return false;
296
+ try {
297
+ // The second pass records what the first one did (not `kept` for what it installed)
298
+ await bootstrap.run({
299
+ manifest,
300
+ imports: this.pluginImport,
301
+ ...(dir !== undefined && { dir }),
302
+ signal: this.shutdown.signal,
303
+ ...(this.bootstrapCarry !== undefined && { carry: this.bootstrapCarry }),
304
+ });
305
+ return false;
306
+ }
307
+ catch (e) {
308
+ if (e instanceof BootstrapFailedError && !e.requiredFailed) {
309
+ this.bootstrapCarry = e.results;
310
+ if (final) {
311
+ this.log.error("bootstrap: optional plugins could not be installed; retried on the next start", { failures: e.failures });
312
+ }
313
+ else {
314
+ this.log.warn("bootstrap: optional plugins could not be installed yet; retried once the extensions have loaded", { failures: e.failures });
315
+ }
316
+ return true;
317
+ }
318
+ throw e;
319
+ }
320
+ }
321
+ /** 部署尚无活跃企业管理员时提示去初始化;查询失败只记日志,不影响启动。 */
322
+ async warnIfSetupPending() {
323
+ try {
324
+ if ((await this.accounts.countEnterpriseAdmins()) === 0) {
325
+ this.log.warn("deployment is not set up; open the setup wizard or run `capybara admin create`");
326
+ }
327
+ }
328
+ catch (e) {
329
+ this.log.warn("cannot check whether the deployment is set up", { error: errMsg(e) });
330
+ }
331
+ }
332
+ async beforeApplicationShutdown() {
333
+ await this.stop();
334
+ }
335
+ /** Logs the end of the stop phases (Redis and the pool close right after, in the infra modules). */
336
+ onApplicationShutdown() {
337
+ if (!this.onlyRelease)
338
+ this.log.info("kernel stopped");
339
+ }
340
+ /**
341
+ * Runs the stop phases once (idempotent): the shutdown begins at once (`GracefulShutdown.begin`:
342
+ * readiness answers 503, the start is aborted, the SSE streams close). Closing the application
343
+ * calls this from `beforeApplicationShutdown`; `closeKernelApp` (the tests, the signal handlers
344
+ * of `startKernelApp`) calls it directly next to `app.close()`, so the shutdown
345
+ * begins before any module's `onModuleDestroy` runs (Nest runs those first).
346
+ */
347
+ stop() {
348
+ this.shutdown.begin();
349
+ this.stopPromise ??= this.onlyRelease ? Promise.resolve() : this.runStopPhases();
350
+ return this.stopPromise;
351
+ }
352
+ async runStopPhases() {
353
+ const log = this.log;
354
+ const shutdown = this.shutdown;
355
+ /** Waits for p within `min(budgetMs, what is left of the total)`; a timeout warns and returns false. */
356
+ const within = async (label, p, budgetMs = Number.POSITIVE_INFINITY) => {
357
+ try {
358
+ const done = await waitWithin(p, Math.min(budgetMs, shutdown.remainingMs()));
359
+ if (!done)
360
+ log.warn("shutdown step timed out", { step: label });
361
+ return done;
362
+ }
363
+ catch (e) {
364
+ log.error("shutdown step failed", { step: label, err: e });
365
+ return false;
366
+ }
367
+ };
368
+ // The start is not waited for (an extension setup can be arbitrarily slow): `begin()` aborted
369
+ // the start's kernel migration, whose session the migrate phase waits for (the in-flight work
370
+ // of the start sequence); the host close aborts extension migrations and closes the ctx of a
371
+ // setup in progress; the other start steps exit at their checkpoints. A listen in progress is
372
+ // waited for in the http phase (closing while listening would leave the port open).
373
+ // Extension requests in progress (SSE and other long requests end on req.signal) are aborted
374
+ // first, otherwise they would use up the http phase
375
+ this.httpApp?.abortPluginRequests();
376
+ // Scheduled jobs (worker role): no new tick, the runs in progress get the stop signal; awaited
377
+ // in the runs phase (before the extension host closes: a job may call an extension)
378
+ const { worker, gateway } = this;
379
+ const scheduledStopped = worker?.stopSchedules(STOP_BUDGET_MS.http + STOP_BUDGET_MS.runs);
380
+ if (!this.listenStarted)
381
+ await shutdown.drain(STOP_BUDGET_MS.migrate);
382
+ this.unwatchConfig?.();
383
+ this.unwatchConfig = undefined;
384
+ gateway?.unwatch();
385
+ await within("webhooks-unsubscribe", (gateway?.unsubscribe() ?? Promise.resolve()).catch(() => { }), 1_000);
386
+ // 不再接 reconcile(进行中的那次由宿主关闭收尾)
387
+ await within("plugin-lifecycle", this.extensionLifecycle.stop(), 1_000);
388
+ // http 阶段:等 listen 与关闭 HTTP 共用一个截止时间;listen 卡满预算时关闭只剩 0ms,直接强制断开
389
+ const httpDeadline = Date.now() + STOP_BUDGET_MS.http;
390
+ if (this.listenStarted)
391
+ await shutdown.drain(STOP_BUDGET_MS.http);
392
+ const http = this.httpApp;
393
+ if (http && !(await within("http", http.close(), Math.max(0, httpDeadline - Date.now())))) {
394
+ http.closeAllConnections();
395
+ }
396
+ this.listening = undefined;
397
+ // runs 阶段:停止领取运行、让本进程的运行在步骤边界停下并回到队列;再关闭运行队列的生产方连接。
398
+ // 渠道长连接与之并行停止(中止 connect、释放租约),必须在插件关闭之前。
399
+ const runsDeadline = Date.now() + STOP_BUDGET_MS.runs;
400
+ const channelsStopped = gateway?.stopSupervisor();
401
+ const runsBudget = Math.min(STOP_BUDGET_MS.runs, shutdown.remainingMs()) - RUNS_FORCE_CLOSE_MS;
402
+ const runsDrained = worker?.drainRuns(Math.max(0, runsBudget));
403
+ if (runsDrained)
404
+ await within("runs", runsDrained, STOP_BUDGET_MS.runs);
405
+ const evalsDrained = worker?.drainEvals(Math.max(0, runsDeadline - Date.now() - RUNS_FORCE_CLOSE_MS));
406
+ if (evalsDrained) {
407
+ await within("evals", evalsDrained, Math.max(0, runsDeadline - Date.now()));
408
+ }
409
+ if (channelsStopped) {
410
+ // 至少留 2s 交还租约:否则其他副本要等租约过期(默认 30s)才能接管
411
+ await within("channels", channelsStopped, Math.max(CHANNELS_STOP_MIN_MS, runsDeadline - Date.now()));
412
+ }
413
+ await within("scheduled-jobs", scheduledStopped ?? Promise.resolve(), Math.max(0, runsDeadline - Date.now()));
414
+ await within("maintenance", worker?.closeMaintenance() ?? Promise.resolve(), Math.max(0, runsDeadline - Date.now()));
415
+ // titles before usage.report: a finishing title call enqueues its usage report
416
+ await within("titles", this.titles.stop(), Math.max(0, runsDeadline - Date.now()));
417
+ // usage.report: in-flight deliveries are aborted and retried by any replica; before the plugins close
418
+ await within("usage-report", this.usageReport.stop(), Math.max(0, runsDeadline - Date.now()));
419
+ // 出站投递:进行中的任务交还队列(由其他副本从 last_seq 续投),必须在插件关闭之前
420
+ this.channelJobs.close();
421
+ await within("channel-outbound", this.channelOutbound.close(), Math.max(CHANNELS_STOP_MIN_MS, runsDeadline - Date.now()));
422
+ await within("plugins", this.host.close(), STOP_BUDGET_MS.plugins);
423
+ // 删掉本副本的加载状态行(尽力而为;崩溃副本心跳过期的行由 reconcile 清理)
424
+ await within("plugin-status", this.replicaStatus.removeAll(), 1_000);
425
+ }
426
+ };
427
+ KernelLifecycle = __decorate([
428
+ Injectable(),
429
+ __param(0, Inject(AccountsService)),
430
+ __param(1, Inject(KernelConfigService)),
431
+ __param(2, Inject(KERNEL_LOGGER)),
432
+ __param(3, Inject(KERNEL_APP_OPTIONS)),
433
+ __param(4, Inject(KERNEL_POOL)),
434
+ __param(5, Inject(REDIS)),
435
+ __param(6, Inject(KernelDb)),
436
+ __param(7, Inject(GracefulShutdown)),
437
+ __param(8, Inject(ExtensionHost)),
438
+ __param(9, Inject(ExtensionRegistry)),
439
+ __param(10, Inject(ExtensionInstalls)),
440
+ __param(11, Inject(ExtensionBlobs)),
441
+ __param(12, Inject(ExtensionLifecycle)),
442
+ __param(13, Inject(ReplicaStatusStore)),
443
+ __param(14, Inject(BootstrapService)),
444
+ __param(15, Inject(MarketplacesService)),
445
+ __param(16, Inject(PluginImport)),
446
+ __param(17, Inject(KERNEL_BUS)),
447
+ __param(18, Inject(UsageReporter)),
448
+ __param(19, Inject(TitleQueue)),
449
+ __param(20, Inject(ChannelJobs)),
450
+ __param(21, Inject(ChannelOutbound)),
451
+ __param(22, Optional()),
452
+ __param(22, Inject(WorkerRole)),
453
+ __param(23, Optional()),
454
+ __param(23, Inject(GatewayRole))
455
+ ], KernelLifecycle);
456
+ export { KernelLifecycle };
@@ -0,0 +1,3 @@
1
+ /** Injection tokens of the kernel application (`KernelModule`) itself. */
2
+ /** The `KernelAppOptions` the application was built with. */
3
+ export declare const KERNEL_APP_OPTIONS: unique symbol;
@@ -0,0 +1,3 @@
1
+ /** Injection tokens of the kernel application (`KernelModule`) itself. */
2
+ /** The `KernelAppOptions` the application was built with. */
3
+ export const KERNEL_APP_OPTIONS = Symbol("KERNEL_APP_OPTIONS");
@@ -15,6 +15,8 @@ export declare function logContext(): LogContext | undefined;
15
15
  export declare function setTraceContextSource(source: ContextSource | undefined): void;
16
16
  /** Runs `fn` with `fields` added to the current context (undefined values are skipped). */
17
17
  export declare function withLogContext<T>(fields: Record<string, string | undefined>, fn: () => T): T;
18
+ /** Runs `fn` with no log context (a handler that must not carry its registrant's fields). */
19
+ export declare function withoutLogContext<T>(fn: () => T): T;
18
20
  /** The part of a BullMQ job the context reads. */
19
21
  export interface ContextJob {
20
22
  id?: string | undefined;
@@ -24,6 +24,10 @@ export function withLogContext(fields, fn) {
24
24
  next[k] = v;
25
25
  return storage.run(next, fn);
26
26
  }
27
+ /** Runs `fn` with no log context (a handler that must not carry its registrant's fields). */
28
+ export function withoutLogContext(fn) {
29
+ return storage.exit(fn);
30
+ }
27
31
  let jobWrapper;
28
32
  /** Registers a wrapper run around every job processor (tracing); undefined removes it. */
29
33
  export function setJobWrapper(wrapper) {
@@ -0,0 +1,3 @@
1
+ /** Model prices and model purposes. */
2
+ export declare class ModelsModule {
3
+ }
@@ -0,0 +1,24 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { Module } from "@nestjs/common";
8
+ import { ExtensionRegistryModule } from "../extensions/registry.js";
9
+ import { IdentityModule } from "../identity/identity.module.js";
10
+ import { OrgLockModule } from "../orgs/org-lock.js";
11
+ import { ProvidersModule } from "../runtime/providers.js";
12
+ import { PricesService } from "./prices.js";
13
+ import { ModelPurposesService } from "./purposes.js";
14
+ /** Model prices and model purposes. */
15
+ let ModelsModule = class ModelsModule {
16
+ };
17
+ ModelsModule = __decorate([
18
+ Module({
19
+ imports: [ExtensionRegistryModule, IdentityModule, OrgLockModule, ProvidersModule],
20
+ providers: [PricesService, ModelPurposesService],
21
+ exports: [PricesService, ModelPurposesService],
22
+ })
23
+ ], ModelsModule);
24
+ export { ModelsModule };
@@ -1,6 +1,8 @@
1
1
  import type { ModelUsage } from "@capybara-hq/plugin-sdk";
2
2
  import { z } from "zod";
3
- import type { KernelDb } from "../db/kernel-schema.js";
3
+ import { EnterpriseAdminLock } from "../identity/enterprise-admin.js";
4
+ import { KernelDb } from "../infra/database/kernel-db.js";
5
+ import { TransactionHost } from "../infra/database/transaction-host.js";
4
6
  /**
5
7
  * 一个模型的价格(C2):每百万 token,币种为部署设置 `priceCurrency`。由企业管理员录入,插件不声明价格。
6
8
  * 缓存读 / 写价为 null 时按输入价计。
@@ -36,7 +38,9 @@ export type ModelPricePut = z.infer<typeof MODEL_PRICE_PUT>;
36
38
  /** 模型价格(PG `model_prices`):每次读都查库,不在进程内缓存(多副本下改价立刻生效)。 */
37
39
  export declare class PricesService {
38
40
  private readonly db;
39
- constructor(db: KernelDb);
41
+ readonly txHost: TransactionHost;
42
+ private readonly adminLock;
43
+ constructor(db: KernelDb, txHost: TransactionHost, adminLock: EnterpriseAdminLock);
40
44
  /** 全部价格,按 provider、model 排序。 */
41
45
  list(): Promise<ModelPrice[]>;
42
46
  /** 价格表(按 {@link priceKey} 查)。 */
@@ -50,4 +54,6 @@ export declare class PricesService {
50
54
  model: string;
51
55
  price: null;
52
56
  }, actorAccountId: string, actorTokenId?: string): Promise<void>;
57
+ /** The write of {@link put}, under the enterprise admin lock. */
58
+ private write;
53
59
  }