@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
@@ -0,0 +1,17 @@
1
+ import { KernelDb } from "./kernel-db.js";
2
+ import { TransactionHost } from "./transaction-host.js";
3
+ /**
4
+ * Transaction-scoped advisory locks (decision R9 of the Nest kernel spec): `pg_advisory_xact_lock`
5
+ * is transaction semantics, like `FOR UPDATE`. It is held by the caller's transaction and released
6
+ * at its COMMIT or ROLLBACK, so it serializes writers whose invariant is checked inside that same
7
+ * transaction ("never zero active enterprise admins", "set up once", "one account per external
8
+ * identity"). The one place that takes such a lock; `propagation: "mandatory"` makes a call outside
9
+ * a transaction (where the lock would be released at once) throw.
10
+ */
11
+ export declare class XactLock {
12
+ private readonly db;
13
+ readonly txHost: TransactionHost;
14
+ constructor(db: KernelDb, txHost: TransactionHost);
15
+ /** Takes the lock named `key` until the caller's transaction ends (waits while another holds it). */
16
+ lock(key: string): Promise<void>;
17
+ }
@@ -0,0 +1,43 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
8
+ return function (target, key) { decorator(target, key, paramIndex); }
9
+ };
10
+ import { Inject, Injectable } from "@nestjs/common";
11
+ import { sql } from "kysely";
12
+ import { KernelDb } from "./kernel-db.js";
13
+ import { TransactionHost } from "./transaction-host.js";
14
+ import { Transactional } from "./transactional.decorator.js";
15
+ /**
16
+ * Transaction-scoped advisory locks (decision R9 of the Nest kernel spec): `pg_advisory_xact_lock`
17
+ * is transaction semantics, like `FOR UPDATE`. It is held by the caller's transaction and released
18
+ * at its COMMIT or ROLLBACK, so it serializes writers whose invariant is checked inside that same
19
+ * transaction ("never zero active enterprise admins", "set up once", "one account per external
20
+ * identity"). The one place that takes such a lock; `propagation: "mandatory"` makes a call outside
21
+ * a transaction (where the lock would be released at once) throw.
22
+ */
23
+ let XactLock = class XactLock {
24
+ db;
25
+ txHost;
26
+ constructor(db, txHost) {
27
+ this.db = db;
28
+ this.txHost = txHost;
29
+ }
30
+ /** Takes the lock named `key` until the caller's transaction ends (waits while another holds it). */
31
+ async lock(key) {
32
+ await sql `SELECT pg_advisory_xact_lock(hashtext(${key}))`.execute(this.db.db);
33
+ }
34
+ };
35
+ __decorate([
36
+ Transactional({ propagation: "mandatory" })
37
+ ], XactLock.prototype, "lock", null);
38
+ XactLock = __decorate([
39
+ Injectable(),
40
+ __param(0, Inject(KernelDb)),
41
+ __param(1, Inject(TransactionHost))
42
+ ], XactLock);
43
+ export { XactLock };
@@ -0,0 +1,96 @@
1
+ import type { KernelLogger } from "../../log.js";
2
+ /**
3
+ * The kernel's in-process domain events (nest kernel spec §3b): a domain announces what happened,
4
+ * and another domain reacts without the first depending on it. Same-process only, so only for
5
+ * notifications that may be lost and are re-derived elsewhere; anything that must reach every
6
+ * replica goes over the kernel bus (`KERNEL_BUS`).
7
+ */
8
+ export interface KernelEventMap {
9
+ /**
10
+ * An organization was soft-deleted (after the commit). Channel connections drop their long
11
+ * connections (the connection reads also filter deleted orgs, so a lost event only delays it).
12
+ */
13
+ "org.deleted": {
14
+ orgId: string;
15
+ };
16
+ /**
17
+ * An organization disabled an extension (after the commit). Its channel connections in the org
18
+ * drop their long connections at once (the supervisor's periodic re-check is the fallback).
19
+ */
20
+ "extension.org-disabled": {
21
+ orgId: string;
22
+ plugin: string;
23
+ };
24
+ /**
25
+ * A person decided a tool call approval (after the commit, exactly once: only the decision that
26
+ * changed it from pending). The run's waits resume it and its IM delivery is enqueued; a lost
27
+ * event is re-derived by the wait sweep (runs waiting on a decided approval are resumed).
28
+ */
29
+ "approval.decided": {
30
+ id: string;
31
+ orgId: string;
32
+ conversationId: string;
33
+ runId: string;
34
+ status: "approved" | "denied";
35
+ };
36
+ /**
37
+ * A person answered a tool call's input request (after the commit, exactly once). Same
38
+ * consumers and the same re-derivation as `approval.decided`.
39
+ */
40
+ "question.answered": {
41
+ id: string;
42
+ orgId: string;
43
+ conversationId: string;
44
+ runId: string;
45
+ };
46
+ /**
47
+ * EventAppended: a conversation's event log advanced to `toSeq` (after the commit, from
48
+ * `EventLog.notify`, right after the bus publish). The channel outbound delivery enqueues a job
49
+ * for a conversation with an IM target; a lost event is re-derived by the next append's (and the
50
+ * finished delivery job re-checks the log for content it has not delivered).
51
+ */
52
+ "conversation.event-appended": {
53
+ conversationId: string;
54
+ toSeq: number;
55
+ };
56
+ /**
57
+ * A run started executing on this replica (its first start, a resume, or a takeover after a
58
+ * stall), after it took the conversation lock and an org quota slot. The channel outbound
59
+ * enqueues the conversation's IM delivery; a lost event is re-derived by the run's next append.
60
+ */
61
+ "run.started": {
62
+ conversationId: string;
63
+ runId: string;
64
+ };
65
+ /**
66
+ * A stop of a run waiting on a person was handled (`RunControl.abortWaiting`, whether or not it
67
+ * still waited): its approval and question cards change, so the channel outbound enqueues the
68
+ * conversation's IM delivery (re-derived by the next append when lost).
69
+ */
70
+ "run.wait-stopped": {
71
+ conversationId: string;
72
+ runId: string;
73
+ };
74
+ /**
75
+ * `ensureRun` marked an orphaned run failed (after the commit): the waits stop its active
76
+ * sub-agents at once. A lost event is repaired by the wait sweep (children of finished runs).
77
+ */
78
+ "run.orphaned": {
79
+ runId: string;
80
+ };
81
+ }
82
+ type Handler<K extends keyof KernelEventMap> = (payload: KernelEventMap[K]) => Promise<void> | void;
83
+ /** Typed in-process event emitter; handlers run in order, a failing one is logged and skipped. */
84
+ export declare class KernelEvents {
85
+ private readonly log;
86
+ private readonly handlers;
87
+ constructor(log: Pick<KernelLogger, "warn">);
88
+ /** Subscribes; returns the unsubscribe function. */
89
+ on<K extends keyof KernelEventMap>(event: K, handler: Handler<K>): () => void;
90
+ /** Runs every handler of `event` and waits for them. */
91
+ emit<K extends keyof KernelEventMap>(event: K, payload: KernelEventMap[K]): Promise<void>;
92
+ }
93
+ /** Global: the one {@link KernelEvents}. */
94
+ export declare class KernelEventsModule {
95
+ }
96
+ export {};
@@ -0,0 +1,65 @@
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 { Global, Inject, Injectable, Module } from "@nestjs/common";
11
+ import { KERNEL_LOGGER } from "../tokens.js";
12
+ /** The payload's id for the failure log (`approvalId` / `questionId`, as the old hooks logged). */
13
+ function idFields(event, payload) {
14
+ const id = payload.id;
15
+ if (typeof id !== "string")
16
+ return {};
17
+ if (event === "approval.decided")
18
+ return { approvalId: id };
19
+ if (event === "question.answered")
20
+ return { questionId: id };
21
+ return { id };
22
+ }
23
+ /** Typed in-process event emitter; handlers run in order, a failing one is logged and skipped. */
24
+ let KernelEvents = class KernelEvents {
25
+ log;
26
+ handlers = new Map();
27
+ constructor(log) {
28
+ this.log = log;
29
+ }
30
+ /** Subscribes; returns the unsubscribe function. */
31
+ on(event, handler) {
32
+ const list = this.handlers.get(event) ?? [];
33
+ list.push(handler);
34
+ this.handlers.set(event, list);
35
+ return () => {
36
+ const at = list.indexOf(handler);
37
+ if (at >= 0)
38
+ list.splice(at, 1);
39
+ };
40
+ }
41
+ /** Runs every handler of `event` and waits for them. */
42
+ async emit(event, payload) {
43
+ for (const h of [...(this.handlers.get(event) ?? [])]) {
44
+ try {
45
+ await h(payload);
46
+ }
47
+ catch (err) {
48
+ this.log.warn("kernel event handler failed", { event, ...idFields(event, payload), err });
49
+ }
50
+ }
51
+ }
52
+ };
53
+ KernelEvents = __decorate([
54
+ Injectable(),
55
+ __param(0, Inject(KERNEL_LOGGER))
56
+ ], KernelEvents);
57
+ export { KernelEvents };
58
+ /** Global: the one {@link KernelEvents}. */
59
+ let KernelEventsModule = class KernelEventsModule {
60
+ };
61
+ KernelEventsModule = __decorate([
62
+ Global(),
63
+ Module({ providers: [KernelEvents], exports: [KernelEvents] })
64
+ ], KernelEventsModule);
65
+ export { KernelEventsModule };
@@ -0,0 +1,26 @@
1
+ import type { Logger } from "@capybara-hq/plugin-sdk";
2
+ import { HealthCheckService, HealthIndicatorService } from "@nestjs/terminus";
3
+ import type { FastifyReply } from "fastify";
4
+ import { type ReadinessCheck } from "./health.options.js";
5
+ import { type ShutdownState } from "./shutdown-state.js";
6
+ /** A dependency that hangs (Redis reconnecting, commands in the offline queue) must still give 503 fast. */
7
+ export declare const CHECK_TIMEOUT_MS = 2000;
8
+ /**
9
+ * `GET /healthz` (process alive, always 200) and `GET /readyz` (dependencies ready).
10
+ * The readyz body only names each check as `"ok"` / `"error"`; the failure reason goes to the log
11
+ * (redacted) and never into the response: driver errors can carry connection strings. Once a stop
12
+ * has begun readyz answers 503 at once and runs no check. `@Public()`: the global auth guard
13
+ * applies here too when the kernel API is mounted.
14
+ */
15
+ export declare class HealthController {
16
+ private readonly health;
17
+ private readonly indicators;
18
+ private readonly checks;
19
+ private readonly shutdown;
20
+ private readonly log;
21
+ constructor(health: HealthCheckService, indicators: HealthIndicatorService, checks: Record<string, ReadinessCheck>, shutdown: ShutdownState, log: Logger);
22
+ healthz(): {
23
+ ok: true;
24
+ };
25
+ readyz(reply: FastifyReply): Promise<Record<string, unknown>>;
26
+ }
@@ -0,0 +1,104 @@
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 { Controller, Get, Inject, Res } from "@nestjs/common";
11
+ import { HealthCheckService, HealthIndicatorService, } from "@nestjs/terminus";
12
+ import { Public } from "../../identity/principal.js";
13
+ import { KERNEL_LOGGER } from "../tokens.js";
14
+ import { HEALTH_CHECKS } from "./health.options.js";
15
+ import { SHUTDOWN_STATE } from "./shutdown-state.js";
16
+ /** A dependency that hangs (Redis reconnecting, commands in the offline queue) must still give 503 fast. */
17
+ export const CHECK_TIMEOUT_MS = 2_000;
18
+ /**
19
+ * `GET /healthz` (process alive, always 200) and `GET /readyz` (dependencies ready).
20
+ * The readyz body only names each check as `"ok"` / `"error"`; the failure reason goes to the log
21
+ * (redacted) and never into the response: driver errors can carry connection strings. Once a stop
22
+ * has begun readyz answers 503 at once and runs no check. `@Public()`: the global auth guard
23
+ * applies here too when the kernel API is mounted.
24
+ */
25
+ let HealthController = class HealthController {
26
+ health;
27
+ indicators;
28
+ checks;
29
+ shutdown;
30
+ log;
31
+ constructor(health, indicators, checks, shutdown, log) {
32
+ this.health = health;
33
+ this.indicators = indicators;
34
+ this.checks = checks;
35
+ this.shutdown = shutdown;
36
+ this.log = log;
37
+ }
38
+ healthz() {
39
+ return { ok: true };
40
+ }
41
+ async readyz(reply) {
42
+ const stopping = () => {
43
+ reply.code(503);
44
+ return { ok: false, stopping: true };
45
+ };
46
+ if (this.shutdown.isShuttingDown())
47
+ return stopping();
48
+ const names = Object.keys(this.checks);
49
+ const logged = new Set();
50
+ const fns = names.map((name) => () => this.indicators
51
+ .check(name)
52
+ .attempt(async () => {
53
+ try {
54
+ await this.checks[name]();
55
+ }
56
+ catch (err) {
57
+ logged.add(name);
58
+ this.log.warn("readiness check failed", { check: name, err });
59
+ throw err;
60
+ }
61
+ })
62
+ .withTimeout(CHECK_TIMEOUT_MS));
63
+ // `check` throws a 503 exception carrying the same `details` when any indicator is down
64
+ const details = await this.health.check(fns).then((r) => r.details, (e) => {
65
+ const d = e.getResponse?.().details;
66
+ if (d === undefined)
67
+ throw e;
68
+ return d;
69
+ });
70
+ if (this.shutdown.isShuttingDown())
71
+ return stopping();
72
+ const body = {};
73
+ let ok = true;
74
+ for (const name of names) {
75
+ const up = details[name]?.status === "up";
76
+ if (!up) {
77
+ ok = false;
78
+ // A timeout never reaches the wrapper's catch in time
79
+ if (!logged.has(name))
80
+ this.log.warn("readiness check failed", { check: name, err: details[name] });
81
+ }
82
+ body[name] = up ? "ok" : "error";
83
+ }
84
+ reply.code(ok ? 200 : 503);
85
+ return { ok, ...body };
86
+ }
87
+ };
88
+ __decorate([
89
+ Get("healthz")
90
+ ], HealthController.prototype, "healthz", null);
91
+ __decorate([
92
+ Get("readyz"),
93
+ __param(0, Res({ passthrough: true }))
94
+ ], HealthController.prototype, "readyz", null);
95
+ HealthController = __decorate([
96
+ Controller(),
97
+ Public(),
98
+ __param(0, Inject(HealthCheckService)),
99
+ __param(1, Inject(HealthIndicatorService)),
100
+ __param(2, Inject(HEALTH_CHECKS)),
101
+ __param(3, Inject(SHUTDOWN_STATE)),
102
+ __param(4, Inject(KERNEL_LOGGER))
103
+ ], HealthController);
104
+ export { HealthController };
@@ -0,0 +1,9 @@
1
+ /**
2
+ * The terminus machinery behind `/healthz` and `/readyz`. The controller
3
+ * ({@link HealthController}) is registered by the root module, which also provides
4
+ * `HEALTH_CHECKS`; `SHUTDOWN_STATE` is the global `GracefulShutdown`. Terminus' own error logging
5
+ * is off: the
6
+ * controller logs a failed check once, with the redacted error, and never puts it in the body.
7
+ */
8
+ export declare class HealthModule {
9
+ }
@@ -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 { TerminusModule } from "@nestjs/terminus";
9
+ /**
10
+ * The terminus machinery behind `/healthz` and `/readyz`. The controller
11
+ * ({@link HealthController}) is registered by the root module, which also provides
12
+ * `HEALTH_CHECKS`; `SHUTDOWN_STATE` is the global `GracefulShutdown`. Terminus' own error logging
13
+ * is off: the
14
+ * controller logs a failed check once, with the redacted error, and never puts it in the body.
15
+ */
16
+ let HealthModule = class HealthModule {
17
+ };
18
+ HealthModule = __decorate([
19
+ Module({
20
+ imports: [TerminusModule.forRoot({ logger: false })],
21
+ exports: [TerminusModule],
22
+ })
23
+ ], HealthModule);
24
+ export { HealthModule };
@@ -0,0 +1,10 @@
1
+ import type { Redis } from "ioredis";
2
+ import { type Kysely } from "kysely";
3
+ /** One readiness check: resolves when the dependency is ready, rejects when it is not. */
4
+ export type ReadinessCheck = () => Promise<void>;
5
+ /** Injection token of the named readiness checks (`Record<string, ReadinessCheck>`). */
6
+ export declare const HEALTH_CHECKS: unique symbol;
7
+ /** `select 1` on the pool. */
8
+ export declare const databaseCheck: (pool: Kysely<any>) => ReadinessCheck;
9
+ /** PING on a connection that must already be `ready` (a reconnecting client is not ready). */
10
+ export declare const redisCheck: (redis: Redis) => ReadinessCheck;
@@ -0,0 +1,15 @@
1
+ import { sql } from "kysely";
2
+ /** Injection token of the named readiness checks (`Record<string, ReadinessCheck>`). */
3
+ export const HEALTH_CHECKS = Symbol("HEALTH_CHECKS");
4
+ /** `select 1` on the pool. */
5
+ export const databaseCheck =
6
+ // biome-ignore lint/suspicious/noExplicitAny: the pool carries no schema types
7
+ (pool) => async () => {
8
+ await sql `select 1`.execute(pool);
9
+ };
10
+ /** PING on a connection that must already be `ready` (a reconnecting client is not ready). */
11
+ export const redisCheck = (redis) => async () => {
12
+ if (redis.status !== "ready")
13
+ throw new Error(`redis status ${redis.status}`);
14
+ await redis.ping();
15
+ };
@@ -0,0 +1,6 @@
1
+ /** Whether the process is shutting down; readiness answers 503 from then on. */
2
+ export interface ShutdownState {
3
+ isShuttingDown(): boolean;
4
+ }
5
+ /** Injection token of the {@link ShutdownState}: `GracefulShutdown` (`GracefulShutdownModule`). */
6
+ export declare const SHUTDOWN_STATE: unique symbol;
@@ -0,0 +1,2 @@
1
+ /** Injection token of the {@link ShutdownState}: `GracefulShutdown` (`GracefulShutdownModule`). */
2
+ export const SHUTDOWN_STATE = Symbol("SHUTDOWN_STATE");
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Global: {@link GracefulShutdown}, also as the health endpoints' `SHUTDOWN_STATE`. The infra
3
+ * modules that close resources at shutdown (Redis, the pool) import it for the shared stop budget.
4
+ */
5
+ export declare class GracefulShutdownModule {
6
+ }
@@ -0,0 +1,23 @@
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 { Global, Module } from "@nestjs/common";
8
+ import { SHUTDOWN_STATE } from "../health/shutdown-state.js";
9
+ import { GracefulShutdown } from "./graceful-shutdown.service.js";
10
+ /**
11
+ * Global: {@link GracefulShutdown}, also as the health endpoints' `SHUTDOWN_STATE`. The infra
12
+ * modules that close resources at shutdown (Redis, the pool) import it for the shared stop budget.
13
+ */
14
+ let GracefulShutdownModule = class GracefulShutdownModule {
15
+ };
16
+ GracefulShutdownModule = __decorate([
17
+ Global(),
18
+ Module({
19
+ providers: [GracefulShutdown, { provide: SHUTDOWN_STATE, useExisting: GracefulShutdown }],
20
+ exports: [GracefulShutdown, SHUTDOWN_STATE],
21
+ })
22
+ ], GracefulShutdownModule);
23
+ export { GracefulShutdownModule };
@@ -0,0 +1,70 @@
1
+ import { type BeforeApplicationShutdown, type OnApplicationShutdown } from "@nestjs/common";
2
+ import type { KernelLogger } from "../../log.js";
3
+ import type { ShutdownState } from "../health/shutdown-state.js";
4
+ /**
5
+ * The total stop budget: from the moment the shutdown begins, the stop phases and the infra closes
6
+ * (bus, Redis, pool) share these 30 s; whatever is still open after it is abandoned.
7
+ */
8
+ export declare const STOP_TIMEOUT_MS = 30000;
9
+ /**
10
+ * The process's shutdown state, the one source of "are we stopping" (nest kernel spec §4).
11
+ *
12
+ * {@link begin} (idempotent, synchronous) flips readiness to 503 ({@link isShuttingDown}, read by
13
+ * `/readyz`), aborts {@link signal} (the start sequence stops at its next checkpoint, an extension
14
+ * migration of the start is aborted, the SSE stream registries close and refuse new streams) and
15
+ * starts the {@link STOP_TIMEOUT_MS} deadline that every later stop step takes its share of
16
+ * ({@link remainingMs}).
17
+ *
18
+ * {@link trackInFlight} registers work the stop must let finish before it closes what that work
19
+ * uses; {@link drain} waits for the set to empty, re-reading it each round (work registered by
20
+ * tracked work while draining is waited for too), up to a budget, and reports a timeout instead of
21
+ * hanging. The kernel's stop phases (`KernelLifecycle`) call `begin()` first and drain at their
22
+ * start-work step; components with their own close (the run workers, the extension host, Fastify)
23
+ * keep draining themselves within their phase budgets.
24
+ *
25
+ * `beforeApplicationShutdown` runs `begin()` and a final drain bounded by the remaining budget, so
26
+ * a Nest application without `KernelLifecycle` (or whose stop phases already drained) behaves the
27
+ * same: the readiness flip happens while the port is still open, before `dispose()` closes it.
28
+ *
29
+ * {@link closeLast} registers the close of an infra connection (the bus and Redis, the pool);
30
+ * `onApplicationShutdown` runs them all at once. This is a global module's hook, so it runs after
31
+ * every other module's stop hooks: nothing uses those connections once they start closing, and a
32
+ * close that hangs (Redis down) does not hold back the others, which share what is left of the
33
+ * same budget.
34
+ */
35
+ export declare class GracefulShutdown implements BeforeApplicationShutdown, OnApplicationShutdown, ShutdownState {
36
+ private readonly log;
37
+ private shuttingDown;
38
+ private deadline;
39
+ private readonly abort;
40
+ private readonly inFlight;
41
+ private readonly lastCloses;
42
+ constructor(log: KernelLogger);
43
+ /** True from the moment the shutdown began; readiness answers 503 from then on. */
44
+ isShuttingDown(): boolean;
45
+ /** Aborted when the shutdown begins. */
46
+ get signal(): AbortSignal;
47
+ /** Begins the shutdown (idempotent): readiness 503, {@link signal} aborted, the deadline set. */
48
+ begin(): void;
49
+ /** What is left of the total stop budget (the whole budget before the shutdown began). */
50
+ remainingMs(): number;
51
+ /** Registers work the stop waits for (see {@link drain}); returns `p`. */
52
+ trackInFlight<T>(p: Promise<T>): Promise<T>;
53
+ /** The number of tracked promises not settled yet. */
54
+ get inFlightCount(): number;
55
+ /**
56
+ * Waits until no tracked work is left, at most `budgetMs` (capped by {@link remainingMs} once the
57
+ * shutdown began). Resolves true when everything settled, false on timeout: what is left is
58
+ * logged and abandoned (no later drain waits for it again). Rejections of tracked work are not
59
+ * this wait's business: they only count as settled.
60
+ */
61
+ drain(budgetMs: number): Promise<boolean>;
62
+ beforeApplicationShutdown(): Promise<void>;
63
+ /**
64
+ * Registers the close of an infra connection, run at the very end of the shutdown together with
65
+ * the others (see the class comment). `close` bounds itself by {@link remainingMs} and never
66
+ * throws.
67
+ */
68
+ closeLast(close: () => Promise<void>): void;
69
+ onApplicationShutdown(): Promise<void>;
70
+ }