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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (616) hide show
  1. package/dist/admin/admin.controller.d.ts +17 -17
  2. package/dist/admin/admin.controller.js +43 -26
  3. package/dist/admin/admin.module.d.ts +3 -0
  4. package/dist/admin/admin.module.js +22 -0
  5. package/dist/admin/extensions.controller.d.ts +14 -14
  6. package/dist/admin/extensions.controller.js +30 -17
  7. package/dist/admin/setup-lock.d.ts +16 -0
  8. package/dist/admin/setup-lock.js +47 -0
  9. package/dist/admin/setup.controller.d.ts +8 -8
  10. package/dist/admin/setup.controller.js +27 -25
  11. package/dist/admin/setup.service.d.ts +19 -27
  12. package/dist/admin/setup.service.js +61 -61
  13. package/dist/agents/agent-lookup.d.ts +53 -0
  14. package/dist/agents/agent-lookup.js +179 -0
  15. package/dist/agents/agents.controller.d.ts +1 -1
  16. package/dist/agents/agents.controller.js +14 -8
  17. package/dist/agents/agents.module.d.ts +7 -0
  18. package/dist/agents/agents.module.js +41 -0
  19. package/dist/agents/agents.service.d.ts +39 -58
  20. package/dist/agents/agents.service.js +261 -329
  21. package/dist/agents/definition.d.ts +8 -0
  22. package/dist/agents/definition.js +8 -0
  23. package/dist/agents/models.controller.d.ts +1 -1
  24. package/dist/agents/models.controller.js +2 -2
  25. package/dist/agents/templates.controller.d.ts +1 -1
  26. package/dist/agents/templates.controller.js +2 -2
  27. package/dist/agents/templates.d.ts +6 -8
  28. package/dist/agents/templates.js +20 -4
  29. package/dist/app.d.ts +93 -0
  30. package/dist/app.js +150 -0
  31. package/dist/catalog/admin-catalog.controller.d.ts +3 -3
  32. package/dist/catalog/admin-catalog.controller.js +27 -13
  33. package/dist/catalog/catalog-content.d.ts +185 -0
  34. package/dist/catalog/catalog-content.js +323 -0
  35. package/dist/catalog/catalog-items.d.ts +186 -0
  36. package/dist/catalog/catalog-items.js +410 -0
  37. package/dist/catalog/catalog.module.d.ts +14 -0
  38. package/dist/catalog/catalog.module.js +71 -0
  39. package/dist/catalog/catalog.service.d.ts +34 -188
  40. package/dist/catalog/catalog.service.js +155 -489
  41. package/dist/catalog/cli.d.ts +3 -2
  42. package/dist/catalog/cli.js +13 -31
  43. package/dist/catalog/job-ids.d.ts +15 -0
  44. package/dist/catalog/job-ids.js +15 -0
  45. package/dist/catalog/jobs.d.ts +27 -0
  46. package/dist/catalog/jobs.js +70 -0
  47. package/dist/catalog/locks.d.ts +24 -0
  48. package/dist/catalog/locks.js +63 -0
  49. package/dist/catalog/marketplaces.controller.d.ts +4 -4
  50. package/dist/catalog/marketplaces.controller.js +22 -11
  51. package/dist/catalog/marketplaces.service.d.ts +30 -13
  52. package/dist/catalog/marketplaces.service.js +330 -256
  53. package/dist/catalog/org-catalog.controller.d.ts +4 -3
  54. package/dist/catalog/org-catalog.controller.js +29 -14
  55. package/dist/catalog/org-catalog.service.d.ts +32 -198
  56. package/dist/catalog/org-catalog.service.js +159 -400
  57. package/dist/catalog/plugin-import.d.ts +73 -34
  58. package/dist/catalog/plugin-import.js +356 -217
  59. package/dist/catalog/plugin-install.d.ts +83 -41
  60. package/dist/catalog/plugin-install.js +421 -269
  61. package/dist/catalog/plugin-upgrade.d.ts +59 -4
  62. package/dist/catalog/plugin-upgrade.js +407 -282
  63. package/dist/catalog/requests.service.d.ts +27 -15
  64. package/dist/catalog/requests.service.js +201 -145
  65. package/dist/catalog/upgrade-targets.d.ts +4 -7
  66. package/dist/channels/actions.d.ts +6 -4
  67. package/dist/channels/actions.js +1 -1
  68. package/dist/channels/cards.d.ts +2 -2
  69. package/dist/channels/channels.module.d.ts +40 -0
  70. package/dist/channels/channels.module.js +128 -0
  71. package/dist/channels/connections.controller.d.ts +1 -1
  72. package/dist/channels/connections.controller.js +11 -6
  73. package/dist/channels/connections.service.d.ts +43 -21
  74. package/dist/channels/connections.service.js +236 -131
  75. package/dist/channels/inbound.d.ts +34 -38
  76. package/dist/channels/inbound.js +107 -41
  77. package/dist/channels/job-ids.d.ts +10 -0
  78. package/dist/channels/job-ids.js +10 -0
  79. package/dist/channels/jobs.d.ts +85 -0
  80. package/dist/channels/jobs.js +157 -0
  81. package/dist/channels/outbound.d.ts +60 -82
  82. package/dist/channels/outbound.js +165 -194
  83. package/dist/channels/supervisor.d.ts +88 -46
  84. package/dist/channels/supervisor.js +230 -132
  85. package/dist/channels/threads.d.ts +29 -8
  86. package/dist/channels/threads.js +71 -13
  87. package/dist/channels/webhook.d.ts +20 -14
  88. package/dist/channels/webhook.js +51 -20
  89. package/dist/config/load.d.ts +3 -2
  90. package/dist/config/load.js +3 -2
  91. package/dist/config/nacos-source.js +11 -2
  92. package/dist/config/schema.d.ts +1 -0
  93. package/dist/config/schema.js +10 -4
  94. package/dist/conversations/access.d.ts +29 -0
  95. package/dist/conversations/access.js +86 -0
  96. package/dist/conversations/artifacts.d.ts +10 -10
  97. package/dist/conversations/artifacts.js +35 -9
  98. package/dist/conversations/attachments.controller.d.ts +1 -1
  99. package/dist/conversations/attachments.controller.js +8 -6
  100. package/dist/conversations/attachments.module.d.ts +7 -0
  101. package/dist/conversations/attachments.module.js +25 -0
  102. package/dist/conversations/attachments.service.d.ts +30 -22
  103. package/dist/conversations/attachments.service.js +119 -46
  104. package/dist/conversations/conversations.controller.d.ts +8 -7
  105. package/dist/conversations/conversations.controller.js +59 -29
  106. package/dist/conversations/conversations.module.d.ts +8 -0
  107. package/dist/conversations/conversations.module.js +69 -0
  108. package/dist/conversations/conversations.service.d.ts +40 -38
  109. package/dist/conversations/conversations.service.js +130 -140
  110. package/dist/conversations/event-log.d.ts +28 -18
  111. package/dist/conversations/event-log.js +74 -27
  112. package/dist/conversations/files.d.ts +10 -10
  113. package/dist/conversations/files.js +37 -11
  114. package/dist/conversations/idem-keys.d.ts +5 -0
  115. package/dist/conversations/idem-keys.js +5 -0
  116. package/dist/conversations/job-ids.d.ts +6 -0
  117. package/dist/conversations/job-ids.js +6 -0
  118. package/dist/conversations/outputs-read.d.ts +11 -11
  119. package/dist/conversations/outputs-read.js +31 -7
  120. package/dist/conversations/queue.d.ts +48 -56
  121. package/dist/conversations/queue.js +13 -289
  122. package/dist/conversations/queue.service.d.ts +60 -0
  123. package/dist/conversations/queue.service.js +343 -0
  124. package/dist/conversations/sandbox-status.d.ts +13 -10
  125. package/dist/conversations/sandbox-status.js +36 -8
  126. package/dist/conversations/titles.d.ts +71 -24
  127. package/dist/conversations/titles.js +159 -63
  128. package/dist/ctx/bus.js +9 -3
  129. package/dist/ctx/create-ctx.d.ts +6 -0
  130. package/dist/ctx/create-ctx.js +7 -9
  131. package/dist/ctx/lock.d.ts +7 -3
  132. package/dist/ctx/lock.js +9 -20
  133. package/dist/ctx/secrets.d.ts +10 -2
  134. package/dist/ctx/secrets.js +7 -3
  135. package/dist/db/kernel-schema.d.ts +2 -2
  136. package/dist/db/pool.d.ts +5 -0
  137. package/dist/db/pool.js +1 -0
  138. package/dist/errors.d.ts +1 -0
  139. package/dist/errors.js +1 -0
  140. package/dist/evals/budget.d.ts +42 -21
  141. package/dist/evals/budget.js +114 -62
  142. package/dist/evals/evals.module.d.ts +31 -0
  143. package/dist/evals/evals.module.js +114 -0
  144. package/dist/evals/jobs.d.ts +20 -0
  145. package/dist/evals/jobs.js +45 -0
  146. package/dist/evals/run-replay.d.ts +56 -8
  147. package/dist/evals/run-replay.js +140 -80
  148. package/dist/evals/runs.controller.d.ts +1 -1
  149. package/dist/evals/runs.controller.js +17 -8
  150. package/dist/evals/runs.service.d.ts +23 -45
  151. package/dist/evals/runs.service.js +245 -234
  152. package/dist/evals/sets.controller.d.ts +1 -1
  153. package/dist/evals/sets.controller.js +17 -8
  154. package/dist/evals/sets.service.d.ts +22 -6
  155. package/dist/evals/sets.service.js +248 -194
  156. package/dist/evals/snapshot.d.ts +2 -2
  157. package/dist/evals/step-replay.d.ts +2 -2
  158. package/dist/evals/step-replay.js +1 -1
  159. package/dist/evals/trajectory.controller.d.ts +1 -1
  160. package/dist/evals/trajectory.controller.js +11 -7
  161. package/dist/evals/trajectory.service.d.ts +5 -4
  162. package/dist/evals/trajectory.service.js +30 -7
  163. package/dist/evals/worker.d.ts +44 -27
  164. package/dist/evals/worker.js +220 -121
  165. package/dist/extensions/admin-ops.d.ts +61 -33
  166. package/dist/extensions/admin-ops.js +248 -154
  167. package/dist/extensions/admin-view.d.ts +38 -27
  168. package/dist/extensions/admin-view.js +126 -55
  169. package/dist/extensions/approvals.d.ts +12 -8
  170. package/dist/extensions/approvals.js +73 -46
  171. package/dist/extensions/blobs.d.ts +27 -10
  172. package/dist/extensions/blobs.js +111 -45
  173. package/dist/extensions/bootstrap.d.ts +58 -31
  174. package/dist/extensions/bootstrap.js +175 -121
  175. package/dist/extensions/cli.d.ts +20 -10
  176. package/dist/extensions/cli.js +41 -96
  177. package/dist/extensions/config-issues.d.ts +7 -0
  178. package/dist/extensions/config-issues.js +31 -0
  179. package/dist/extensions/deployment-config-store.d.ts +49 -0
  180. package/dist/extensions/deployment-config-store.js +133 -0
  181. package/dist/extensions/deployment-config.d.ts +58 -67
  182. package/dist/extensions/deployment-config.js +202 -230
  183. package/dist/extensions/enabled.d.ts +5 -5
  184. package/dist/extensions/extensions.module.d.ts +8 -0
  185. package/dist/extensions/extensions.module.js +77 -0
  186. package/dist/extensions/hooks.d.ts +3 -2
  187. package/dist/extensions/hooks.js +1 -1
  188. package/dist/extensions/host.d.ts +72 -68
  189. package/dist/extensions/host.js +191 -152
  190. package/dist/extensions/installs.d.ts +49 -16
  191. package/dist/extensions/installs.js +128 -32
  192. package/dist/extensions/job-ids.d.ts +6 -0
  193. package/dist/extensions/job-ids.js +6 -0
  194. package/dist/extensions/lifecycle-topics.d.ts +18 -0
  195. package/dist/extensions/lifecycle-topics.js +18 -0
  196. package/dist/extensions/lifecycle.d.ts +35 -47
  197. package/dist/extensions/lifecycle.js +103 -39
  198. package/dist/extensions/locks.d.ts +33 -0
  199. package/dist/extensions/locks.js +86 -0
  200. package/dist/extensions/migrate-lock.d.ts +3 -4
  201. package/dist/extensions/org-config.controller.d.ts +1 -1
  202. package/dist/extensions/org-config.controller.js +8 -5
  203. package/dist/extensions/org-config.d.ts +48 -46
  204. package/dist/extensions/org-config.js +284 -226
  205. package/dist/extensions/registry.d.ts +50 -2
  206. package/dist/extensions/registry.js +89 -4
  207. package/dist/extensions/sources.d.ts +12 -8
  208. package/dist/extensions/sources.js +34 -13
  209. package/dist/files/files.module.d.ts +3 -0
  210. package/dist/files/files.module.js +22 -0
  211. package/dist/files/previewers.controller.d.ts +7 -2
  212. package/dist/files/previewers.controller.js +17 -9
  213. package/dist/files/previewers.d.ts +13 -18
  214. package/dist/files/previewers.js +83 -36
  215. package/dist/http/adapter.d.ts +3 -0
  216. package/dist/http/adapter.js +25 -0
  217. package/dist/http/api.module.d.ts +3 -110
  218. package/dist/http/api.module.js +47 -355
  219. package/dist/http/app.d.ts +11 -15
  220. package/dist/http/app.js +17 -62
  221. package/dist/http/error-filter.module.d.ts +5 -0
  222. package/dist/http/error-filter.module.js +18 -0
  223. package/dist/http/error.filter.js +2 -2
  224. package/dist/identity/accounts.d.ts +82 -29
  225. package/dist/identity/accounts.js +294 -175
  226. package/dist/identity/api-tokens.d.ts +11 -7
  227. package/dist/identity/api-tokens.js +71 -44
  228. package/dist/identity/audit.d.ts +7 -4
  229. package/dist/identity/audit.js +5 -1
  230. package/dist/identity/auth.controller.d.ts +11 -10
  231. package/dist/identity/auth.controller.js +31 -25
  232. package/dist/identity/auth.guard.d.ts +3 -3
  233. package/dist/identity/auth.guard.js +6 -4
  234. package/dist/identity/binding.d.ts +9 -11
  235. package/dist/identity/binding.js +41 -13
  236. package/dist/identity/enterprise-admin.d.ts +18 -12
  237. package/dist/identity/enterprise-admin.js +67 -13
  238. package/dist/identity/external-identity-lock.d.ts +17 -0
  239. package/dist/identity/external-identity-lock.js +39 -0
  240. package/dist/identity/external.d.ts +19 -15
  241. package/dist/identity/external.js +163 -125
  242. package/dist/identity/identity.module.d.ts +6 -0
  243. package/dist/identity/identity.module.js +56 -0
  244. package/dist/identity/me.controller.d.ts +16 -15
  245. package/dist/identity/me.controller.js +37 -31
  246. package/dist/identity/sessions.d.ts +12 -10
  247. package/dist/identity/sessions.js +74 -42
  248. package/dist/identity/settings.d.ts +20 -14
  249. package/dist/identity/settings.js +85 -57
  250. package/dist/identity/sso.controller.d.ts +7 -7
  251. package/dist/identity/sso.controller.js +13 -9
  252. package/dist/identity/sso.d.ts +9 -12
  253. package/dist/identity/sso.js +54 -24
  254. package/dist/inbox/inbox.module.d.ts +3 -0
  255. package/dist/inbox/inbox.module.js +22 -0
  256. package/dist/inbox/inbox.service.d.ts +7 -9
  257. package/dist/inbox/inbox.service.js +32 -11
  258. package/dist/index.d.ts +16 -11
  259. package/dist/index.js +9 -6
  260. package/dist/infra/cache/cache.module.d.ts +3 -0
  261. package/dist/infra/cache/cache.module.js +16 -0
  262. package/dist/infra/cache/cache.service.d.ts +21 -0
  263. package/dist/infra/cache/cache.service.js +80 -0
  264. package/dist/infra/cache/cacheable.decorator.d.ts +32 -0
  265. package/dist/infra/cache/cacheable.decorator.js +83 -0
  266. package/dist/infra/cli/kernel-cli.module.d.ts +66 -0
  267. package/dist/infra/cli/kernel-cli.module.js +165 -0
  268. package/dist/infra/close-within.d.ts +15 -0
  269. package/dist/infra/close-within.js +36 -0
  270. package/dist/infra/config/config.module.d.ts +13 -0
  271. package/dist/infra/config/config.module.js +39 -0
  272. package/dist/infra/config/kernel-config.service.d.ts +25 -0
  273. package/dist/infra/config/kernel-config.service.js +126 -0
  274. package/dist/infra/database/after-commit.d.ts +6 -0
  275. package/dist/infra/database/after-commit.js +9 -0
  276. package/dist/infra/database/database.module.d.ts +25 -0
  277. package/dist/infra/database/database.module.js +90 -0
  278. package/dist/infra/database/kernel-db.d.ts +22 -0
  279. package/dist/infra/database/kernel-db.js +65 -0
  280. package/dist/infra/database/transaction-host.d.ts +50 -0
  281. package/dist/infra/database/transaction-host.js +125 -0
  282. package/dist/infra/database/transactional.decorator.d.ts +15 -0
  283. package/dist/infra/database/transactional.decorator.js +27 -0
  284. package/dist/infra/database/xact-lock.d.ts +17 -0
  285. package/dist/infra/database/xact-lock.js +43 -0
  286. package/dist/infra/events/kernel-events.d.ts +96 -0
  287. package/dist/infra/events/kernel-events.js +65 -0
  288. package/dist/infra/health/health.controller.d.ts +26 -0
  289. package/dist/infra/health/health.controller.js +104 -0
  290. package/dist/infra/health/health.module.d.ts +9 -0
  291. package/dist/infra/health/health.module.js +24 -0
  292. package/dist/infra/health/health.options.d.ts +10 -0
  293. package/dist/infra/health/health.options.js +15 -0
  294. package/dist/infra/health/shutdown-state.d.ts +6 -0
  295. package/dist/infra/health/shutdown-state.js +2 -0
  296. package/dist/infra/lifecycle/graceful-shutdown.module.d.ts +6 -0
  297. package/dist/infra/lifecycle/graceful-shutdown.module.js +23 -0
  298. package/dist/infra/lifecycle/graceful-shutdown.service.d.ts +70 -0
  299. package/dist/infra/lifecycle/graceful-shutdown.service.js +135 -0
  300. package/dist/infra/lifecycle/process-guards.d.ts +52 -0
  301. package/dist/infra/lifecycle/process-guards.js +86 -0
  302. package/dist/infra/lifecycle/shutdown-signals.d.ts +30 -0
  303. package/dist/infra/lifecycle/shutdown-signals.js +48 -0
  304. package/dist/infra/lock/key-template.d.ts +13 -0
  305. package/dist/infra/lock/key-template.js +46 -0
  306. package/dist/infra/lock/lock.module.d.ts +3 -0
  307. package/dist/infra/lock/lock.module.js +16 -0
  308. package/dist/infra/lock/lock.service.d.ts +120 -0
  309. package/dist/infra/lock/lock.service.js +343 -0
  310. package/dist/infra/lock/shared-lease.d.ts +44 -0
  311. package/dist/infra/lock/shared-lease.js +121 -0
  312. package/dist/infra/lock/with-lock.decorator.d.ts +28 -0
  313. package/dist/infra/lock/with-lock.decorator.js +49 -0
  314. package/dist/infra/logging/logging.module.d.ts +16 -0
  315. package/dist/infra/logging/logging.module.js +34 -0
  316. package/dist/infra/queue/configured-processor.d.ts +18 -0
  317. package/dist/infra/queue/configured-processor.js +23 -0
  318. package/dist/infra/queue/job-failure.d.ts +18 -0
  319. package/dist/infra/queue/job-failure.js +26 -0
  320. package/dist/infra/queue/queue-shutdown.d.ts +27 -0
  321. package/dist/infra/queue/queue-shutdown.js +81 -0
  322. package/dist/infra/queue/queue.module.d.ts +16 -0
  323. package/dist/infra/queue/queue.module.js +61 -0
  324. package/dist/infra/queue/redis-connection.d.ts +7 -0
  325. package/dist/infra/queue/redis-connection.js +18 -0
  326. package/dist/infra/queue/retired-schedulers.d.ts +7 -0
  327. package/dist/infra/queue/retired-schedulers.js +9 -0
  328. package/dist/infra/queue/run-job.d.ts +16 -0
  329. package/dist/infra/queue/run-job.js +19 -0
  330. package/dist/infra/redis/redis.module.d.ts +24 -0
  331. package/dist/infra/redis/redis.module.js +87 -0
  332. package/dist/infra/schedule/cron-tick.d.ts +12 -0
  333. package/dist/infra/schedule/cron-tick.js +25 -0
  334. package/dist/infra/schedule/locked-cron.decorator.d.ts +27 -0
  335. package/dist/infra/schedule/locked-cron.decorator.js +53 -0
  336. package/dist/infra/schedule/locked-interval.d.ts +69 -0
  337. package/dist/infra/schedule/locked-interval.js +190 -0
  338. package/dist/infra/schedule/locked-tick.d.ts +90 -0
  339. package/dist/infra/schedule/locked-tick.js +137 -0
  340. package/dist/infra/schedule/schedule.module.d.ts +8 -0
  341. package/dist/infra/schedule/schedule.module.js +27 -0
  342. package/dist/infra/schedule/scheduled-runs.d.ts +69 -0
  343. package/dist/infra/schedule/scheduled-runs.js +163 -0
  344. package/dist/infra/swagger/swagger.d.ts +16 -0
  345. package/dist/infra/swagger/swagger.js +31 -0
  346. package/dist/infra/throttler/credential-throttler.d.ts +35 -0
  347. package/dist/infra/throttler/credential-throttler.js +77 -0
  348. package/dist/infra/throttler/named-throttlers.d.ts +31 -0
  349. package/dist/infra/throttler/named-throttlers.js +119 -0
  350. package/dist/infra/throttler/redis-throttler-storage.d.ts +38 -0
  351. package/dist/infra/throttler/redis-throttler-storage.js +130 -0
  352. package/dist/infra/throttler/throttler.guard.d.ts +23 -0
  353. package/dist/infra/throttler/throttler.guard.js +68 -0
  354. package/dist/infra/throttler/throttler.module.d.ts +15 -0
  355. package/dist/infra/throttler/throttler.module.js +53 -0
  356. package/dist/infra/tokens.d.ts +15 -0
  357. package/dist/infra/tokens.js +15 -0
  358. package/dist/infra/validation/create-zod-dto.d.ts +23 -0
  359. package/dist/infra/validation/create-zod-dto.js +35 -0
  360. package/dist/infra/validation/parse-with-zod.d.ts +7 -0
  361. package/dist/infra/validation/parse-with-zod.js +12 -0
  362. package/dist/infra/validation/validation.module.d.ts +3 -0
  363. package/dist/infra/validation/validation.module.js +16 -0
  364. package/dist/infra/validation/zod-params.d.ts +7 -0
  365. package/dist/infra/validation/zod-params.js +42 -0
  366. package/dist/infra/validation/zod-validation.pipe.d.ts +11 -0
  367. package/dist/infra/validation/zod-validation.pipe.js +31 -0
  368. package/dist/kernel.d.ts +9 -244
  369. package/dist/kernel.js +8 -1305
  370. package/dist/kernel.module.d.ts +17 -0
  371. package/dist/kernel.module.js +136 -0
  372. package/dist/lifecycle/kernel-lifecycle.d.ts +140 -0
  373. package/dist/lifecycle/kernel-lifecycle.js +451 -0
  374. package/dist/lifecycle/tokens.d.ts +3 -0
  375. package/dist/lifecycle/tokens.js +3 -0
  376. package/dist/log-context.d.ts +2 -0
  377. package/dist/log-context.js +4 -0
  378. package/dist/models/models.module.d.ts +3 -0
  379. package/dist/models/models.module.js +24 -0
  380. package/dist/models/prices.d.ts +8 -2
  381. package/dist/models/prices.js +65 -37
  382. package/dist/models/purposes.controller.d.ts +1 -1
  383. package/dist/models/purposes.controller.js +5 -6
  384. package/dist/models/purposes.d.ts +35 -13
  385. package/dist/models/purposes.js +101 -51
  386. package/dist/orgs/directory-sync.controller.d.ts +1 -1
  387. package/dist/orgs/directory-sync.controller.js +2 -2
  388. package/dist/orgs/directory-sync.d.ts +61 -31
  389. package/dist/orgs/directory-sync.js +212 -125
  390. package/dist/orgs/invitations.controller.d.ts +8 -8
  391. package/dist/orgs/invitations.controller.js +27 -26
  392. package/dist/orgs/invitations.service.d.ts +12 -9
  393. package/dist/orgs/invitations.service.js +130 -92
  394. package/dist/orgs/job-ids.d.ts +8 -0
  395. package/dist/orgs/job-ids.js +8 -0
  396. package/dist/orgs/members.service.d.ts +19 -12
  397. package/dist/orgs/members.service.js +161 -117
  398. package/dist/orgs/offboarding.d.ts +54 -57
  399. package/dist/orgs/offboarding.js +161 -71
  400. package/dist/orgs/org-lock.d.ts +28 -19
  401. package/dist/orgs/org-lock.js +81 -35
  402. package/dist/orgs/org.guard.d.ts +1 -1
  403. package/dist/orgs/org.guard.js +2 -2
  404. package/dist/orgs/orgs.controller.d.ts +13 -13
  405. package/dist/orgs/orgs.controller.js +29 -17
  406. package/dist/orgs/orgs.module.d.ts +6 -0
  407. package/dist/orgs/orgs.module.js +68 -0
  408. package/dist/orgs/orgs.service.d.ts +30 -19
  409. package/dist/orgs/orgs.service.js +139 -86
  410. package/dist/orgs/settings.controller.d.ts +1 -1
  411. package/dist/orgs/settings.controller.js +8 -6
  412. package/dist/orgs/settings.service.d.ts +14 -8
  413. package/dist/orgs/settings.service.js +75 -46
  414. package/dist/overrides.d.ts +56 -0
  415. package/dist/overrides.js +30 -0
  416. package/dist/roles/gateway-role.d.ts +43 -0
  417. package/dist/roles/gateway-role.js +98 -0
  418. package/dist/roles/gateway.module.d.ts +8 -0
  419. package/dist/roles/gateway.module.js +28 -0
  420. package/dist/roles/worker-role.d.ts +63 -0
  421. package/dist/roles/worker-role.js +144 -0
  422. package/dist/roles/worker.module.d.ts +14 -0
  423. package/dist/roles/worker.module.js +90 -0
  424. package/dist/runtime/abort.js +19 -2
  425. package/dist/runtime/checkpointer.d.ts +8 -3
  426. package/dist/runtime/checkpointer.js +87 -55
  427. package/dist/runtime/conversation-lock.d.ts +20 -11
  428. package/dist/runtime/conversation-lock.js +62 -72
  429. package/dist/runtime/hook-calls.d.ts +3 -3
  430. package/dist/runtime/hook-calls.js +1 -6
  431. package/dist/runtime/job-ids.d.ts +10 -0
  432. package/dist/runtime/job-ids.js +10 -0
  433. package/dist/runtime/langgraph-loop.js +1 -1
  434. package/dist/runtime/loop.d.ts +7 -0
  435. package/dist/runtime/loop.js +14 -0
  436. package/dist/runtime/maintenance-queue.d.ts +10 -0
  437. package/dist/runtime/maintenance-queue.js +10 -0
  438. package/dist/runtime/maintenance.d.ts +45 -74
  439. package/dist/runtime/maintenance.js +139 -137
  440. package/dist/runtime/model-call.d.ts +7 -4
  441. package/dist/runtime/model-call.js +24 -57
  442. package/dist/runtime/providers.d.ts +17 -6
  443. package/dist/runtime/providers.js +66 -25
  444. package/dist/runtime/quota.d.ts +17 -3
  445. package/dist/runtime/quota.js +27 -2
  446. package/dist/runtime/retired-schedulers.d.ts +7 -0
  447. package/dist/runtime/retired-schedulers.js +31 -0
  448. package/dist/runtime/run-control.d.ts +33 -0
  449. package/dist/runtime/run-control.js +77 -0
  450. package/dist/runtime/run-finish.d.ts +26 -17
  451. package/dist/runtime/run-finish.js +98 -51
  452. package/dist/runtime/run-jobs.d.ts +48 -0
  453. package/dist/runtime/run-jobs.js +95 -0
  454. package/dist/runtime/run-processors.d.ts +60 -0
  455. package/dist/runtime/run-processors.js +185 -0
  456. package/dist/runtime/run-queue.d.ts +32 -57
  457. package/dist/runtime/run-queue.js +291 -295
  458. package/dist/runtime/run-steps.d.ts +39 -0
  459. package/dist/runtime/run-steps.js +96 -0
  460. package/dist/runtime/run-worker.d.ts +121 -75
  461. package/dist/runtime/run-worker.js +340 -226
  462. package/dist/runtime/runtime.module.d.ts +10 -0
  463. package/dist/runtime/runtime.module.js +112 -0
  464. package/dist/runtime/step-log.d.ts +40 -0
  465. package/dist/runtime/step-log.js +94 -0
  466. package/dist/runtime/stream.controller.d.ts +5 -8
  467. package/dist/runtime/stream.controller.js +14 -12
  468. package/dist/runtime/stream.d.ts +24 -6
  469. package/dist/runtime/stream.js +78 -7
  470. package/dist/runtime/subagents/child.d.ts +3 -44
  471. package/dist/runtime/subagents/child.js +0 -79
  472. package/dist/runtime/subagents/definition.d.ts +4 -4
  473. package/dist/runtime/subagents/definition.js +2 -2
  474. package/dist/runtime/subagents/dispatch.d.ts +87 -6
  475. package/dist/runtime/subagents/dispatch.js +135 -140
  476. package/dist/runtime/subagents/limits.d.ts +9 -4
  477. package/dist/runtime/subagents/limits.js +4 -2
  478. package/dist/runtime/subagents/org-agents.d.ts +4 -4
  479. package/dist/runtime/subagents/org-agents.js +1 -1
  480. package/dist/runtime/subagents/progress.d.ts +2 -2
  481. package/dist/runtime/subagents/roster.d.ts +3 -3
  482. package/dist/runtime/subagents/roster.js +1 -1
  483. package/dist/runtime/subagents/skill-fork.d.ts +6 -7
  484. package/dist/runtime/subagents/skill-fork.js +16 -5
  485. package/dist/runtime/subagents/subagents.service.d.ts +40 -0
  486. package/dist/runtime/subagents/subagents.service.js +101 -0
  487. package/dist/runtime/usage-report.d.ts +94 -52
  488. package/dist/runtime/usage-report.js +200 -100
  489. package/dist/runtime/waits.d.ts +125 -57
  490. package/dist/runtime/waits.js +431 -208
  491. package/dist/sandbox/job-ids.d.ts +10 -0
  492. package/dist/sandbox/job-ids.js +10 -0
  493. package/dist/sandbox/jobs.d.ts +41 -0
  494. package/dist/sandbox/jobs.js +113 -0
  495. package/dist/sandbox/leases.d.ts +39 -31
  496. package/dist/sandbox/leases.js +117 -257
  497. package/dist/sandbox/providers.d.ts +19 -0
  498. package/dist/sandbox/providers.js +38 -0
  499. package/dist/sandbox/sandbox.module.d.ts +8 -0
  500. package/dist/sandbox/sandbox.module.js +30 -0
  501. package/dist/sandbox/sandbox.service.d.ts +24 -29
  502. package/dist/sandbox/sandbox.service.js +106 -75
  503. package/dist/skills/catalog.d.ts +33 -20
  504. package/dist/skills/catalog.js +96 -53
  505. package/dist/skills/changes.controller.d.ts +4 -4
  506. package/dist/skills/changes.controller.js +15 -9
  507. package/dist/skills/changes.service.d.ts +28 -18
  508. package/dist/skills/changes.service.js +421 -364
  509. package/dist/skills/invocable.controller.d.ts +1 -1
  510. package/dist/skills/invocable.controller.js +8 -5
  511. package/dist/skills/invoke.d.ts +16 -15
  512. package/dist/skills/invoke.js +48 -17
  513. package/dist/skills/skills.controller.d.ts +1 -1
  514. package/dist/skills/skills.controller.js +11 -6
  515. package/dist/skills/skills.module.d.ts +6 -0
  516. package/dist/skills/skills.module.js +30 -0
  517. package/dist/skills/skills.service.d.ts +47 -30
  518. package/dist/skills/skills.service.js +221 -158
  519. package/dist/storage/job-ids.d.ts +6 -0
  520. package/dist/storage/job-ids.js +6 -0
  521. package/dist/storage/purge.d.ts +22 -7
  522. package/dist/storage/purge.js +55 -3
  523. package/dist/storage/storage.module.d.ts +6 -0
  524. package/dist/storage/storage.module.js +23 -0
  525. package/dist/storage/storage.service.d.ts +18 -4
  526. package/dist/storage/storage.service.js +44 -3
  527. package/dist/tools/approvals.controller.d.ts +1 -1
  528. package/dist/tools/approvals.controller.js +12 -8
  529. package/dist/tools/approvals.service.d.ts +27 -25
  530. package/dist/tools/approvals.service.js +324 -258
  531. package/dist/tools/breaker.d.ts +2 -2
  532. package/dist/tools/breaker.js +21 -3
  533. package/dist/tools/builtins/ask-user.d.ts +2 -2
  534. package/dist/tools/builtins/ask-user.js +1 -1
  535. package/dist/tools/builtins/builtin-tools.d.ts +21 -0
  536. package/dist/tools/builtins/builtin-tools.js +80 -0
  537. package/dist/tools/builtins/read-tool-output.d.ts +2 -2
  538. package/dist/tools/builtins/read-tool-output.js +1 -1
  539. package/dist/tools/builtins/sandbox/bash.js +2 -2
  540. package/dist/tools/builtins/sandbox/common.d.ts +2 -1
  541. package/dist/tools/builtins/sandbox/deliver.js +2 -2
  542. package/dist/tools/builtins/sandbox/edit.js +1 -1
  543. package/dist/tools/builtins/sandbox/glob.js +2 -2
  544. package/dist/tools/builtins/sandbox/grep.js +2 -2
  545. package/dist/tools/builtins/sandbox/read.js +1 -1
  546. package/dist/tools/builtins/sandbox/write.js +1 -1
  547. package/dist/tools/builtins/skill-load.d.ts +3 -3
  548. package/dist/tools/builtins/skill-load.js +1 -1
  549. package/dist/tools/canonical-json.d.ts +6 -0
  550. package/dist/tools/canonical-json.js +16 -0
  551. package/dist/tools/connector-content.controller.d.ts +1 -1
  552. package/dist/tools/connector-content.controller.js +11 -6
  553. package/dist/tools/connector-content.d.ts +12 -15
  554. package/dist/tools/connector-content.js +53 -18
  555. package/dist/tools/connectors.controller.d.ts +1 -1
  556. package/dist/tools/connectors.controller.js +21 -10
  557. package/dist/tools/connectors.service.d.ts +31 -13
  558. package/dist/tools/connectors.service.js +434 -344
  559. package/dist/tools/credentials.d.ts +17 -20
  560. package/dist/tools/credentials.js +55 -34
  561. package/dist/tools/drift.d.ts +29 -41
  562. package/dist/tools/drift.js +111 -79
  563. package/dist/tools/info.d.ts +12 -9
  564. package/dist/tools/info.js +33 -7
  565. package/dist/tools/job-ids.d.ts +13 -0
  566. package/dist/tools/job-ids.js +15 -0
  567. package/dist/tools/jobs.d.ts +24 -0
  568. package/dist/tools/jobs.js +69 -0
  569. package/dist/tools/oauth/flow-paths.d.ts +16 -0
  570. package/dist/tools/oauth/flow-paths.js +38 -0
  571. package/dist/tools/oauth/flow.d.ts +30 -30
  572. package/dist/tools/oauth/flow.js +109 -81
  573. package/dist/tools/oauth/oauth.controller.d.ts +3 -3
  574. package/dist/tools/oauth/oauth.controller.js +12 -9
  575. package/dist/tools/oauth/tokens.d.ts +11 -3
  576. package/dist/tools/oauth/tokens.js +15 -14
  577. package/dist/tools/outputs.d.ts +13 -4
  578. package/dist/tools/outputs.js +47 -3
  579. package/dist/tools/pipeline.d.ts +62 -46
  580. package/dist/tools/pipeline.js +145 -64
  581. package/dist/tools/policy.d.ts +2 -2
  582. package/dist/tools/questions.controller.d.ts +1 -1
  583. package/dist/tools/questions.controller.js +8 -5
  584. package/dist/tools/questions.service.d.ts +25 -24
  585. package/dist/tools/questions.service.js +201 -142
  586. package/dist/tools/registry.d.ts +30 -20
  587. package/dist/tools/registry.js +73 -37
  588. package/dist/tools/specs.d.ts +5 -4
  589. package/dist/tools/specs.js +3 -1
  590. package/dist/tools/tools.module.d.ts +10 -0
  591. package/dist/tools/tools.module.js +91 -0
  592. package/dist/ui/call-extension.d.ts +16 -0
  593. package/dist/ui/call-extension.js +38 -0
  594. package/dist/ui/embed-token.d.ts +9 -5
  595. package/dist/ui/embed-token.js +34 -6
  596. package/dist/ui/ui-stream.d.ts +22 -17
  597. package/dist/ui/ui-stream.js +72 -12
  598. package/dist/ui/ui.module.d.ts +7 -0
  599. package/dist/ui/ui.module.js +28 -0
  600. package/dist/ui/views.controller.d.ts +14 -12
  601. package/dist/ui/views.controller.js +32 -25
  602. package/dist/ui/views.d.ts +9 -57
  603. package/dist/ui/views.js +43 -45
  604. package/package.json +9 -2
  605. package/dist/http/health.controller.d.ts +0 -26
  606. package/dist/http/health.controller.js +0 -79
  607. package/dist/http/tokens.d.ts +0 -131
  608. package/dist/http/tokens.js +0 -131
  609. package/dist/http/zod.pipe.d.ts +0 -8
  610. package/dist/http/zod.pipe.js +0 -14
  611. package/dist/identity/rate-limit.d.ts +0 -55
  612. package/dist/identity/rate-limit.js +0 -121
  613. package/dist/sandbox/lifecycle.d.ts +0 -21
  614. package/dist/sandbox/lifecycle.js +0 -68
  615. /package/dist/http/{gateway.module.d.ts → gateway-routes.d.ts} +0 -0
  616. /package/dist/http/{gateway.module.js → gateway-routes.js} +0 -0
@@ -1,10 +1,30 @@
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, Optional } from "@nestjs/common";
1
11
  import { ApiError } from "../errors.js";
12
+ import { KernelConfigService } from "../infra/config/kernel-config.service.js";
13
+ import { KernelDb } from "../infra/database/kernel-db.js";
14
+ import { GracefulShutdown } from "../infra/lifecycle/graceful-shutdown.service.js";
15
+ import { KERNEL_BUS, KERNEL_LOGGER } from "../infra/tokens.js";
2
16
  import { roleAtLeast } from "../orgs/roles.js";
17
+ import { endedStream, } from "../runtime/stream.js";
3
18
  import { isUiBusMessage, orgUiTopic, PAGE_MIN_ROLE, uiFrame } from "./registry.js";
4
- /** 组织成员角色(一条查询):组织未删除、账号 active、仍有成员关系。 */
5
- export function orgMembership(db) {
6
- return async (orgId, accountId) => {
7
- const row = await db
19
+ /** The org role the org UI stream re-checks. */
20
+ let UiStreamMembership = class UiStreamMembership {
21
+ db;
22
+ constructor(db) {
23
+ this.db = db;
24
+ }
25
+ /** 组织成员角色(一条查询):组织未删除、账号 active、仍有成员关系。 */
26
+ async role(orgId, accountId) {
27
+ const row = await this.db
8
28
  .selectFrom("memberships")
9
29
  .innerJoin("orgs", "orgs.id", "memberships.org_id")
10
30
  .innerJoin("accounts", "accounts.id", "memberships.account_id")
@@ -15,8 +35,13 @@ export function orgMembership(db) {
15
35
  .where("accounts.status", "=", "active")
16
36
  .executeTakeFirst();
17
37
  return row?.role;
18
- };
19
- }
38
+ }
39
+ };
40
+ UiStreamMembership = __decorate([
41
+ Injectable(),
42
+ __param(0, Inject(KernelDb))
43
+ ], UiStreamMembership);
44
+ export { UiStreamMembership };
20
45
  async function authorize(d, p) {
21
46
  const denied = await p.credential();
22
47
  if (denied !== null)
@@ -33,17 +58,36 @@ const MAX_BACKLOG_BYTES = 1024 * 1024;
33
58
  * 转发为 `event: ui`(`data: {"plugin","contribution"}`)。跨副本只经 Redis bus;进程内只持有连接本身的资源
34
59
  * (订阅、心跳与复核定时器),停机时一并关闭。
35
60
  */
36
- export class OrgUiStreams {
37
- d;
61
+ let OrgUiStreams = class OrgUiStreams {
38
62
  active = new Set();
39
- constructor(d) {
40
- this.d = d;
63
+ /** Set by {@link closeAll}: streams opened afterwards end as soon as they begin. */
64
+ closing = false;
65
+ d;
66
+ /**
67
+ * Closes the streams when the shutdown begins (readiness answers 503 from that moment) and
68
+ * latches: streams opened afterwards end at once, so the HTTP phase of the stop never waits on
69
+ * an event stream. Without `GracefulShutdown` (a standalone HTTP application, tests only) the
70
+ * streams end with their connections.
71
+ */
72
+ constructor(bus, membership, config, log, shutdown) {
73
+ this.d = {
74
+ bus,
75
+ memberRole: (orgId, accountId) => membership.role(orgId, accountId),
76
+ config,
77
+ log,
78
+ };
79
+ if (shutdown?.signal.aborted)
80
+ this.closeAll();
81
+ else
82
+ shutdown?.signal.addEventListener("abort", () => this.closeAll(), { once: true });
41
83
  }
42
84
  /** 复核凭据与成员关系并订阅;失败时尚未写响应,调用方按普通错误返回。 */
43
85
  async open(p, out) {
44
86
  const denied = await authorize(this.d, p);
45
87
  if (denied !== null)
46
88
  throw new ApiError(denied, "Access denied");
89
+ if (this.closing)
90
+ return endedStream(out);
47
91
  const conn = new OrgUiConnection(this.d, p, out, () => this.active.delete(conn));
48
92
  this.active.add(conn);
49
93
  try {
@@ -53,16 +97,32 @@ export class OrgUiStreams {
53
97
  conn.close();
54
98
  throw e;
55
99
  }
100
+ if (this.closing) {
101
+ conn.close();
102
+ return endedStream(out);
103
+ }
56
104
  return conn;
57
105
  }
106
+ /** Closes every stream of this process (at shutdown) and latches, like `ConversationStreams`. */
58
107
  closeAll() {
108
+ this.closing = true;
59
109
  for (const c of [...this.active])
60
110
  c.close();
61
111
  }
62
112
  get size() {
63
113
  return this.active.size;
64
114
  }
65
- }
115
+ };
116
+ OrgUiStreams = __decorate([
117
+ Injectable(),
118
+ __param(0, Inject(KERNEL_BUS)),
119
+ __param(1, Inject(UiStreamMembership)),
120
+ __param(2, Inject(KernelConfigService)),
121
+ __param(3, Inject(KERNEL_LOGGER)),
122
+ __param(4, Optional()),
123
+ __param(4, Inject(GracefulShutdown))
124
+ ], OrgUiStreams);
125
+ export { OrgUiStreams };
66
126
  class OrgUiConnection {
67
127
  d;
68
128
  p;
@@ -94,7 +154,7 @@ class OrgUiConnection {
94
154
  if (this.closed)
95
155
  return;
96
156
  this.begun = true;
97
- const { sseHeartbeatMs, sseRecheckMs } = this.d.config().runtime;
157
+ const { sseHeartbeatMs, sseRecheckMs } = this.d.config.get().runtime;
98
158
  this.timers.push(setInterval(() => this.write(": ping\n\n"), sseHeartbeatMs), setInterval(() => void this.recheck(), sseRecheckMs));
99
159
  }
100
160
  close(mode = "end") {
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Extension UI on the kernel side: the views and actions (`ctx.ui`), the embed tokens
3
+ * ({@link EmbedTokensModule}, re-exported; the extension host verifies them with the same
4
+ * provider) and the org UI refresh stream.
5
+ */
6
+ export declare class UiModule {
7
+ }
@@ -0,0 +1,28 @@
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 { ConversationsModule } from "../conversations/conversations.module.js";
9
+ import { ExtensionsModule } from "../extensions/extensions.module.js";
10
+ import { FilesModule } from "../files/files.module.js";
11
+ import { EmbedTokensModule } from "./embed-token.js";
12
+ import { OrgUiStreams, UiStreamMembership } from "./ui-stream.js";
13
+ import { UiViews } from "./views.js";
14
+ /**
15
+ * Extension UI on the kernel side: the views and actions (`ctx.ui`), the embed tokens
16
+ * ({@link EmbedTokensModule}, re-exported; the extension host verifies them with the same
17
+ * provider) and the org UI refresh stream.
18
+ */
19
+ let UiModule = class UiModule {
20
+ };
21
+ UiModule = __decorate([
22
+ Module({
23
+ imports: [ExtensionsModule, ConversationsModule, FilesModule, EmbedTokensModule],
24
+ providers: [UiViews, UiStreamMembership, OrgUiStreams],
25
+ exports: [UiViews, OrgUiStreams, EmbedTokensModule],
26
+ })
27
+ ], UiModule);
28
+ export { UiModule };
@@ -1,14 +1,18 @@
1
1
  import { type UiActionResult, type UiView } from "@capybara-hq/plugin-sdk";
2
- import { type OnModuleDestroy } from "@nestjs/common";
3
2
  import type { FastifyReply, FastifyRequest } from "fastify";
4
3
  import { z } from "zod";
5
- import type { ApiTokenService } from "../identity/api-tokens.js";
4
+ import { ApiTokenService } from "../identity/api-tokens.js";
6
5
  import { type Principal } from "../identity/principal.js";
7
- import type { SessionService } from "../identity/sessions.js";
6
+ import { SessionService } from "../identity/sessions.js";
8
7
  import { type OrgContext } from "../orgs/org.guard.js";
9
- import { type EmbedTokens } from "./embed-token.js";
10
- import type { OrgUiStreams } from "./ui-stream.js";
11
- import type { UiContributionItem, UiViews } from "./views.js";
8
+ import { EmbedTokens } from "./embed-token.js";
9
+ import { OrgUiStreams } from "./ui-stream.js";
10
+ import { type UiContributionItem, UiViews } from "./views.js";
11
+ /** The contribution named in a view / action / embed path (`:plugin/:id`). */
12
+ declare const ContributionParams: z.ZodObject<{
13
+ plugin: z.ZodString;
14
+ id: z.ZodString;
15
+ }, z.core.$strip>;
12
16
  declare const ViewQuery: z.ZodObject<{
13
17
  conversationId: z.ZodOptional<z.ZodString>;
14
18
  locale: z.ZodDefault<z.ZodEnum<{
@@ -53,7 +57,7 @@ declare const EmbedTokenBody: z.ZodDefault<z.ZodObject<{
53
57
  * 角色(A38):组织页面(`place: "page"`,含组织级刷新流)只给 member 以上,guest 一律 404 `ui.not_found`、
54
58
  * 列表里也不出现;对话位置的贡献给能访问该对话的任何成员。插件收到的 `role` 来自 OrgGuard 查出的成员关系。
55
59
  */
56
- export declare class UiController implements OnModuleDestroy {
60
+ export declare class UiController {
57
61
  private readonly views;
58
62
  private readonly streams;
59
63
  private readonly sessions;
@@ -63,11 +67,11 @@ export declare class UiController implements OnModuleDestroy {
63
67
  contributions(principal: Principal, org: OrgContext): Promise<{
64
68
  items: UiContributionItem[];
65
69
  }>;
66
- view(principal: Principal, org: OrgContext, plugin: string, id: string, q: z.infer<typeof ViewQuery>): Promise<{
70
+ view(principal: Principal, org: OrgContext, { plugin, id }: z.infer<typeof ContributionParams>, q: z.infer<typeof ViewQuery>): Promise<{
67
71
  view: UiView;
68
72
  }>;
69
- action(principal: Principal, org: OrgContext, plugin: string, id: string, body: z.infer<typeof ActionBody>): Promise<UiActionResult>;
70
- embedToken(principal: Principal, org: OrgContext, plugin: string, id: string, body: z.infer<typeof EmbedTokenBody>): Promise<{
73
+ action(principal: Principal, org: OrgContext, { plugin, id }: z.infer<typeof ContributionParams>, body: z.infer<typeof ActionBody>): Promise<UiActionResult>;
74
+ embedToken(principal: Principal, org: OrgContext, { plugin, id }: z.infer<typeof ContributionParams>, body: z.infer<typeof EmbedTokenBody>): Promise<{
71
75
  token: string;
72
76
  src: string;
73
77
  expiresAt: string;
@@ -75,7 +79,5 @@ export declare class UiController implements OnModuleDestroy {
75
79
  }>;
76
80
  /** 组织级刷新流:与会话流一样用 `reply.hijack()` 直接写原始响应;心跳与复核间隔同 `runtime.sse*`。 */
77
81
  stream(principal: Principal, org: OrgContext, req: FastifyRequest, reply: FastifyReply): Promise<void>;
78
- /** 停机:关闭本进程的全部组织刷新流。 */
79
- onModuleDestroy(): void;
80
82
  }
81
83
  export {};
@@ -8,17 +8,23 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
8
8
  return function (target, key) { decorator(target, key, paramIndex); }
9
9
  };
10
10
  import { UI_LIMITS } from "@capybara-hq/plugin-sdk";
11
- import { Body, Controller, Get, HttpCode, Inject, Param, Post, Query, Req, Res, } from "@nestjs/common";
11
+ import { Controller, Get, HttpCode, Inject, Post, Req, Res } from "@nestjs/common";
12
12
  import { z } from "zod";
13
- import { API_TOKENS, EMBED_TOKENS, ORG_UI_STREAMS, SESSIONS, UI_VIEWS } from "../http/tokens.js";
14
- import { ZodPipe } from "../http/zod.pipe.js";
13
+ import { ApiTokenService } from "../identity/api-tokens.js";
15
14
  import { credentialCheck } from "../identity/credential-check.js";
16
15
  import { CurrentPrincipal, requireUser } from "../identity/principal.js";
16
+ import { SessionService } from "../identity/sessions.js";
17
+ import { createZodDto } from "../infra/validation/create-zod-dto.js";
18
+ import { ZBody, ZParam, ZQuery } from "../infra/validation/zod-params.js";
17
19
  import { CurrentOrg, OrgAction } from "../orgs/org.guard.js";
18
- import { EMBED_TOKEN_TTL_SECONDS } from "./embed-token.js";
20
+ import { EMBED_TOKEN_TTL_SECONDS, EmbedTokens } from "./embed-token.js";
21
+ import { OrgUiStreams } from "./ui-stream.js";
22
+ import { UiViews } from "./views.js";
19
23
  const BEARER_RE = /^Bearer\s+(\S+)$/i;
20
24
  const Locale = z.enum(["zh", "en"]).default("en");
21
25
  const Id = z.string().min(1).max(100);
26
+ /** The contribution named in a view / action / embed path (`:plugin/:id`). */
27
+ const ContributionParams = z.object({ plugin: Id, id: Id });
22
28
  const ViewQuery = z
23
29
  .object({
24
30
  conversationId: z.string().min(1).max(100).optional(),
@@ -65,6 +71,14 @@ const EmbedTokenBody = z
65
71
  .default({});
66
72
  /** 嵌入页的同源代理前缀(网页 `/plugin-ui/<plugin>/<rest>` → 内核 `/plugins/<plugin>/ui/<rest>`)。 */
67
73
  const embedSrc = (plugin, path) => `/plugin-ui/${plugin}/${path.replace(/^\/ui\//, "")}`;
74
+ class UiContributionParamsDto extends createZodDto(ContributionParams, "UiContributionParams") {
75
+ }
76
+ class UiViewQueryDto extends createZodDto(ViewQuery, "UiViewQuery") {
77
+ }
78
+ class UiActionBodyDto extends createZodDto(ActionBody, "UiActionBody") {
79
+ }
80
+ class UiEmbedTokenBodyDto extends createZodDto(EmbedTokenBody, "UiEmbedTokenBody") {
81
+ }
68
82
  /**
69
83
  * 插件界面(第一档:渲染 schema;第二档:嵌入应用),会话鉴权、`ui.use`(只给人用,服务令牌 403):
70
84
  * - `GET /api/v1/orgs/:orgId/ui/contributions` → `{ items: { plugin, id, title, place, legacyPlace?, kind, path?, icon }[] }`
@@ -102,7 +116,7 @@ let UiController = class UiController {
102
116
  requireUser(principal);
103
117
  return { items: await this.views.contributions(org.orgId, org.role) };
104
118
  }
105
- async view(principal, org, plugin, id, q) {
119
+ async view(principal, org, { plugin, id }, q) {
106
120
  const p = requireUser(principal);
107
121
  const view = await this.views.render({
108
122
  orgId: org.orgId,
@@ -119,7 +133,7 @@ let UiController = class UiController {
119
133
  });
120
134
  return { view };
121
135
  }
122
- async action(principal, org, plugin, id, body) {
136
+ async action(principal, org, { plugin, id }, body) {
123
137
  const p = requireUser(principal);
124
138
  return this.views.act({
125
139
  orgId: org.orgId,
@@ -135,7 +149,7 @@ let UiController = class UiController {
135
149
  ...(body.answer !== undefined && { answer: body.answer }),
136
150
  });
137
151
  }
138
- async embedToken(principal, org, plugin, id, body) {
152
+ async embedToken(principal, org, { plugin, id }, body) {
139
153
  const p = requireUser(principal);
140
154
  const target = await this.views.embed({
141
155
  orgId: org.orgId,
@@ -202,10 +216,6 @@ let UiController = class UiController {
202
216
  res.flushHeaders();
203
217
  handle.begin();
204
218
  }
205
- /** 停机:关闭本进程的全部组织刷新流。 */
206
- onModuleDestroy() {
207
- this.streams.closeAll();
208
- }
209
219
  };
210
220
  __decorate([
211
221
  Get("contributions"),
@@ -218,9 +228,8 @@ __decorate([
218
228
  OrgAction("ui.use"),
219
229
  __param(0, CurrentPrincipal()),
220
230
  __param(1, CurrentOrg()),
221
- __param(2, Param("plugin", new ZodPipe(Id))),
222
- __param(3, Param("id", new ZodPipe(Id))),
223
- __param(4, Query(new ZodPipe(ViewQuery)))
231
+ __param(2, ZParam(UiContributionParamsDto)),
232
+ __param(3, ZQuery(UiViewQueryDto))
224
233
  ], UiController.prototype, "view", null);
225
234
  __decorate([
226
235
  Post("actions/:plugin/:id"),
@@ -228,9 +237,8 @@ __decorate([
228
237
  OrgAction("ui.use"),
229
238
  __param(0, CurrentPrincipal()),
230
239
  __param(1, CurrentOrg()),
231
- __param(2, Param("plugin", new ZodPipe(Id))),
232
- __param(3, Param("id", new ZodPipe(Id))),
233
- __param(4, Body(new ZodPipe(ActionBody)))
240
+ __param(2, ZParam(UiContributionParamsDto)),
241
+ __param(3, ZBody(UiActionBodyDto))
234
242
  ], UiController.prototype, "action", null);
235
243
  __decorate([
236
244
  Post("embeds/:plugin/:id/token"),
@@ -238,9 +246,8 @@ __decorate([
238
246
  OrgAction("ui.use"),
239
247
  __param(0, CurrentPrincipal()),
240
248
  __param(1, CurrentOrg()),
241
- __param(2, Param("plugin", new ZodPipe(Id))),
242
- __param(3, Param("id", new ZodPipe(Id))),
243
- __param(4, Body(new ZodPipe(EmbedTokenBody)))
249
+ __param(2, ZParam(UiContributionParamsDto)),
250
+ __param(3, ZBody(UiEmbedTokenBodyDto))
244
251
  ], UiController.prototype, "embedToken", null);
245
252
  __decorate([
246
253
  Get("stream"),
@@ -252,10 +259,10 @@ __decorate([
252
259
  ], UiController.prototype, "stream", null);
253
260
  UiController = __decorate([
254
261
  Controller("api/v1/orgs/:orgId/ui"),
255
- __param(0, Inject(UI_VIEWS)),
256
- __param(1, Inject(ORG_UI_STREAMS)),
257
- __param(2, Inject(SESSIONS)),
258
- __param(3, Inject(API_TOKENS)),
259
- __param(4, Inject(EMBED_TOKENS))
262
+ __param(0, Inject(UiViews)),
263
+ __param(1, Inject(OrgUiStreams)),
264
+ __param(2, Inject(SessionService)),
265
+ __param(3, Inject(ApiTokenService)),
266
+ __param(4, Inject(EmbedTokens))
260
267
  ], UiController);
261
268
  export { UiController };
@@ -1,7 +1,11 @@
1
1
  import { type FormAnswer, type Logger, type UiActionResult, type UiContribution, type UiIcon, type UiView } from "@capybara-hq/plugin-sdk";
2
- import type { KernelDb } from "../db/kernel-schema.js";
3
- import type { ExtensionHost } from "../extensions/host.js";
2
+ import { ConversationsService } from "../conversations/conversations.service.js";
3
+ import type { KernelSchemaDb } from "../db/kernel-schema.js";
4
+ import { ExtensionHost } from "../extensions/host.js";
5
+ import { PreviewerRegistry } from "../files/previewers.js";
6
+ import { KernelDb } from "../infra/database/kernel-db.js";
4
7
  import type { OrgRole } from "../orgs/roles.js";
8
+ export { callExtension } from "./call-extension.js";
5
9
  /** 插件 render / action 的时限(spec §4.2:慢的插件只让那个标签失败)。 */
6
10
  export declare const UI_CALL_TIMEOUT_MS = 5000;
7
11
  /** 列出贡献接口的一项。 */
@@ -29,42 +33,6 @@ export interface UiEmbedTarget {
29
33
  /** Only a `file-preview` embed: the one file the token is for. */
30
34
  fileId?: string;
31
35
  }
32
- export interface UiViewsDeps {
33
- host: Pick<ExtensionHost, "uiContributions">;
34
- /** Names of the extensions enabled in the organization (`extension_org_configs.enabled` plus required bootstrap plugins, `enabled.ts`), queried every time, not cached. */
35
- enabledPlugins(orgId: string): Promise<Set<string>>;
36
- /** 调用者能否访问这个对话(与会话 SSE 流同一判定)。 */
37
- canAccessConversation(orgId: string, conversationId: string, accountId: string): Promise<boolean>;
38
- /**
39
- * Throws unless the caller may write to the conversation: a sub-agent's is read-only (409
40
- * `conversation.read_only`, sub-agents spec §6.1). Checked before an action (final review m3).
41
- */
42
- checkWritable?(orgId: string, conversationId: string, accountId: string): Promise<void>;
43
- /**
44
- * A `file-preview` embed token: whether that extension's previewer with `embed: contribution`
45
- * takes this file of the conversation (the viewer must read it; not found throws 404).
46
- */
47
- previewEmbedAllowed?(t: {
48
- orgId: string;
49
- accountId: string;
50
- conversationId: string;
51
- fileId: string;
52
- plugin: string;
53
- contribution: string;
54
- }): Promise<boolean>;
55
- /**
56
- * The `card` a `tool_result` of this conversation recorded for `callId` (`ToolResult.card`), or
57
- * null. An inline card request is served only when it matches (the card is attested by the log).
58
- */
59
- recordedCard?(conversationId: string, callId: string): Promise<{
60
- plugin: string;
61
- view: string;
62
- key?: string;
63
- } | null>;
64
- log: Pick<Logger, "warn">;
65
- /** 默认 {@link UI_CALL_TIMEOUT_MS}(测试可调小)。 */
66
- timeoutMs?: number;
67
- }
68
36
  /** 取视图 / 执行动作的调用者与目标(身份来自内核鉴权)。 */
69
37
  export interface UiTarget {
70
38
  orgId: string;
@@ -87,7 +55,7 @@ export interface UiTarget {
87
55
  * The card a `tool_result` of the conversation recorded for `callId`, or null (the inline-card
88
56
  * attestation of {@link UiViewsDeps.recordedCard}). Scans one conversation's tool results.
89
57
  */
90
- export declare function recordedCard(db: KernelDb, conversationId: string, callId: string): Promise<{
58
+ export declare function recordedCard(db: KernelSchemaDb, conversationId: string, callId: string): Promise<{
91
59
  plugin: string;
92
60
  view: string;
93
61
  key?: string;
@@ -106,12 +74,11 @@ export declare function dropForeignOpens(view: UiView, panels: ReadonlySet<strin
106
74
  * - 调用带 5 秒时限与中止信号:render 抛错 502 `ui.render_failed`、action 抛错 502 `ui.action_failed`、
107
75
  * 超时 504 `ui.timeout`、返回非法视图 502
108
76
  * `ui.invalid_view`,都记告警日志、不写对话日志(这些不是模型可见的内容)。
109
- * 不依赖 Nest;不保存跨请求状态。
77
+ * 不保存跨请求状态。
110
78
  */
111
79
  export declare class UiViews {
112
80
  private readonly d;
113
- private readonly timeoutMs;
114
- constructor(d: UiViewsDeps);
81
+ constructor(host: ExtensionHost, conversations: ConversationsService, previewers: PreviewerRegistry, db: KernelDb, log: Pick<Logger, "warn">);
115
82
  /** 该组织、该角色可见的界面贡献:插件已启用且已加载;kind view 的要求插件注册了 render;组织页面要 member 以上。 */
116
83
  contributions(orgId: string, role: OrgRole): Promise<UiContributionItem[]>;
117
84
  /**
@@ -138,18 +105,3 @@ export declare class UiViews {
138
105
  /** 非法结果:记告警(列出前几条问题)并 502 `ui.invalid_view`。 */
139
106
  private check;
140
107
  }
141
- /**
142
- * Calls an extension with a time limit and an abort signal (plugin views, actions and file
143
- * previewers): over the limit the signal aborts and the call is 504 `ui.timeout`; a throw is
144
- * `failCode` (502) without echoing the extension's message. An `ApiError` thrown by `fn` passes.
145
- */
146
- export declare function callExtension<T>(o: {
147
- log: Pick<Logger, "warn">;
148
- plugin: string;
149
- what: string;
150
- fields: Record<string, unknown>;
151
- timeoutMs: number;
152
- failCode: "ui.render_failed" | "ui.action_failed";
153
- failMessage: string;
154
- fn: (signal: AbortSignal) => Promise<T>;
155
- }): Promise<T>;
package/dist/ui/views.js CHANGED
@@ -1,7 +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
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
8
+ return function (target, key) { decorator(target, key, paramIndex); }
9
+ };
1
10
  import { normalizePlace, validateUiView, } from "@capybara-hq/plugin-sdk";
11
+ import { Inject, Injectable } from "@nestjs/common";
2
12
  import { sql } from "kysely";
13
+ import { ConversationsService } from "../conversations/conversations.service.js";
3
14
  import { ApiError } from "../errors.js";
15
+ import { ExtensionHost } from "../extensions/host.js";
16
+ import { PreviewerRegistry } from "../files/previewers.js";
17
+ import { KernelDb } from "../infra/database/kernel-db.js";
18
+ import { KERNEL_LOGGER } from "../infra/tokens.js";
19
+ import { callExtension } from "./call-extension.js";
4
20
  import { canUsePlace, isConversationPlace, UUID_RE } from "./registry.js";
21
+ export { callExtension } from "./call-extension.js";
5
22
  /** 插件 render / action 的时限(spec §4.2:慢的插件只让那个标签失败)。 */
6
23
  export const UI_CALL_TIMEOUT_MS = 5_000;
7
24
  /**
@@ -79,14 +96,23 @@ function actionResultProblems(r) {
79
96
  * - 调用带 5 秒时限与中止信号:render 抛错 502 `ui.render_failed`、action 抛错 502 `ui.action_failed`、
80
97
  * 超时 504 `ui.timeout`、返回非法视图 502
81
98
  * `ui.invalid_view`,都记告警日志、不写对话日志(这些不是模型可见的内容)。
82
- * 不依赖 Nest;不保存跨请求状态。
99
+ * 不保存跨请求状态。
83
100
  */
84
- export class UiViews {
101
+ let UiViews = class UiViews {
85
102
  d;
86
- timeoutMs;
87
- constructor(d) {
88
- this.d = d;
89
- this.timeoutMs = d.timeoutMs ?? UI_CALL_TIMEOUT_MS;
103
+ constructor(host, conversations, previewers, db, log) {
104
+ this.d = {
105
+ host,
106
+ // org config rows plus the required bootstrap plugins
107
+ enabledPlugins: (orgId) => host.enabledPlugins(orgId),
108
+ canAccessConversation: (orgId, id, accountId) => conversations.isAccessible(orgId, id, accountId),
109
+ checkWritable: async (orgId, id, accountId) => {
110
+ await conversations.writable(orgId, id, accountId);
111
+ },
112
+ previewEmbedAllowed: (t) => previewers.embedAllowed(t),
113
+ recordedCard: (conversationId, callId) => recordedCard(db.db, conversationId, callId),
114
+ log,
115
+ };
90
116
  }
91
117
  /** 该组织、该角色可见的界面贡献:插件已启用且已加载;kind view 的要求插件注册了 render;组织页面要 member 以上。 */
92
118
  async contributions(orgId, role) {
@@ -248,7 +274,7 @@ export class UiViews {
248
274
  plugin: t.plugin,
249
275
  what,
250
276
  fields: { plugin: t.plugin, contribution: t.id, orgId: t.orgId },
251
- timeoutMs: this.timeoutMs,
277
+ timeoutMs: UI_CALL_TIMEOUT_MS,
252
278
  failCode: what === "render" ? "ui.render_failed" : "ui.action_failed",
253
279
  failMessage: `Plugin ${t.plugin} failed to ${what} ${t.id}`,
254
280
  fn,
@@ -266,41 +292,13 @@ export class UiViews {
266
292
  });
267
293
  throw new ApiError("ui.invalid_view", `Plugin ${t.plugin} returned an invalid view`);
268
294
  }
269
- }
270
- /**
271
- * Calls an extension with a time limit and an abort signal (plugin views, actions and file
272
- * previewers): over the limit the signal aborts and the call is 504 `ui.timeout`; a throw is
273
- * `failCode` (502) without echoing the extension's message. An `ApiError` thrown by `fn` passes.
274
- */
275
- export async function callExtension(o) {
276
- const ac = new AbortController();
277
- let timer;
278
- const timeout = new Promise((resolve) => {
279
- timer = setTimeout(() => {
280
- ac.abort(new Error(`plugin ui ${o.what} timed out`));
281
- resolve("timeout");
282
- }, o.timeoutMs);
283
- });
284
- try {
285
- const r = await Promise.race([
286
- Promise.resolve()
287
- .then(() => o.fn(ac.signal))
288
- .then((value) => ({ value })),
289
- timeout,
290
- ]);
291
- if (r === "timeout") {
292
- o.log.warn(`plugin ui ${o.what} timed out`, { ...o.fields, timeoutMs: o.timeoutMs });
293
- throw new ApiError("ui.timeout", `Plugin ${o.plugin} did not respond within ${o.timeoutMs / 1000}s`);
294
- }
295
- return r.value;
296
- }
297
- catch (e) {
298
- if (e instanceof ApiError)
299
- throw e;
300
- o.log.warn(`plugin ui ${o.what} failed`, { ...o.fields, err: e });
301
- throw new ApiError(o.failCode, o.failMessage);
302
- }
303
- finally {
304
- clearTimeout(timer);
305
- }
306
- }
295
+ };
296
+ UiViews = __decorate([
297
+ Injectable(),
298
+ __param(0, Inject(ExtensionHost)),
299
+ __param(1, Inject(ConversationsService)),
300
+ __param(2, Inject(PreviewerRegistry)),
301
+ __param(3, Inject(KernelDb)),
302
+ __param(4, Inject(KERNEL_LOGGER))
303
+ ], UiViews);
304
+ export { UiViews };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@capybara-hq/kernel",
3
- "version": "0.1.0-rc.1",
3
+ "version": "0.1.0-rc.2",
4
4
  "description": "Capybara kernel: config, database, plugin host and HTTP API of the Capybara agent platform",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -31,14 +31,21 @@
31
31
  ],
32
32
  "dependencies": {
33
33
  "@fastify/cookie": "^11.1.3",
34
+ "@fastify/static": "^9.3.0",
34
35
  "@langchain/core": "^1.2.18",
35
36
  "@langchain/langgraph": "^1.5.1",
36
37
  "@langchain/langgraph-checkpoint": "^1.2.0",
38
+ "@nestjs/bullmq": "12.0.0",
37
39
  "@nestjs/common": "^12.1.3",
38
40
  "@nestjs/core": "^12.1.3",
39
41
  "@nestjs/platform-fastify": "^12.1.3",
42
+ "@nestjs/schedule": "12.0.2",
43
+ "@nestjs/swagger": "12.0.5",
44
+ "@nestjs/terminus": "12.1.0",
45
+ "@nestjs/throttler": "6.7.1",
40
46
  "ajv": "^8.20.0",
41
47
  "bullmq": "^6.3.15",
48
+ "cron": "4.4.0",
42
49
  "es-module-lexer": "2.3.2",
43
50
  "fastify": "5.12.5",
44
51
  "find-my-way": "9.9.0",
@@ -64,7 +71,7 @@
64
71
  "@types/pg": "^8.23.1",
65
72
  "@types/semver": "^7.8.0",
66
73
  "@types/yauzl": "3.4.0",
67
- "@capybara-hq/testing": "0.1.0-rc.2"
74
+ "@capybara-hq/testing": "0.1.0-rc.3"
68
75
  },
69
76
  "scripts": {
70
77
  "build": "tsc -b"
@@ -1,26 +0,0 @@
1
- import type { Logger } from "@capybara-hq/plugin-sdk";
2
- import type { FastifyReply } from "fastify";
3
- /** 一项就绪检查:成功 resolve,失败 reject。 */
4
- export type ReadinessCheck = () => Promise<void>;
5
- /** 健康检查参数。 */
6
- export interface HealthOptions {
7
- checks: Record<string, ReadinessCheck>;
8
- isStopping: () => boolean;
9
- log: Logger;
10
- /** 单项检查超时,默认 2s。 */
11
- timeoutMs?: number;
12
- }
13
- /**
14
- * `GET /healthz`(进程存活,恒 200)与 `GET /readyz`(依赖就绪)。
15
- * readyz 的 body 只给出每项检查的 `"ok"` / `"error"`,失败原因只进日志(已打码),不进响应——
16
- * 驱动的错误信息可能带连接串。停机开始后 readyz 立即 503,不再执行检查。
17
- * 标为 `@Public()`:挂载内核 API 时全局 AuthGuard 也作用于这里。
18
- */
19
- export declare class HealthController {
20
- private readonly opts;
21
- constructor(opts: HealthOptions);
22
- healthz(): {
23
- ok: true;
24
- };
25
- readyz(reply: FastifyReply): Promise<Record<string, unknown>>;
26
- }