@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,50 +1,47 @@
1
1
  import { SDK_VERSION } from "@capybara-hq/plugin-sdk";
2
- import { Redis } from "ioredis";
3
- import { createBus } from "../ctx/bus.js";
4
- import { createKeyring } from "../ctx/secrets.js";
5
- import { kernelDb } from "../db/kernel-schema.js";
6
- import { createDb } from "../db/pool.js";
2
+ import { openKernelCli } from "../infra/cli/kernel-cli.module.js";
3
+ import { KernelDb } from "../infra/database/kernel-db.js";
4
+ import { KERNEL_BUS, KEYRING } from "../infra/tokens.js";
7
5
  import { ExtensionAdminOps } from "./admin-ops.js";
8
6
  import { ExtensionAdmin } from "./admin-view.js";
9
7
  import { ExtensionApprovals } from "./approvals.js";
10
8
  import { ExtensionBlobs } from "./blobs.js";
11
- import { mergeDeploymentConfig, readStoredDeploymentConfig, schemaFields, secretPathsOf, } from "./deployment-config.js";
9
+ import { BootstrapService } from "./bootstrap.js";
10
+ import { toIssues } from "./config-issues.js";
11
+ import { mergeDeploymentConfig, readStoredDeploymentConfig, schemaFields, secretPathsOf, } from "./deployment-config-store.js";
12
+ import { ExtensionsModule } from "./extensions.module.js";
12
13
  import { ExtensionHost } from "./host.js";
13
14
  import { ExtensionInstalls } from "./installs.js";
14
- import { PLUGINS_CHANGED_TOPIC } from "./lifecycle.js";
15
- import { toIssues } from "./org-config.js";
15
+ import { PLUGINS_CHANGED_TOPIC } from "./lifecycle-topics.js";
16
16
  import { ExtensionPackageError, extensionPackageApiError, permissionSetOfPackage, readExtensionPackage, } from "./package.js";
17
- /** CLI 发布 bus 消息时连 Redis 的时限(连不上只告警)。 */
18
- const CLI_REDIS_CONNECT_TIMEOUT_MS = 3_000;
19
17
  /**
20
- * The CLI's extension management context (C18, F-Q): connects only to PG (and Redis for publishing),
21
- * starts no extension host and runs no extension's `setup` (a catalog import sets up the declared
22
- * object-store extension itself, see `openCatalogCli`). Packages the CLI imports are always
23
- * stored in PG (`blob_store = 'pg'`); replicas read by `blob_store`. Install / enable / disable /
24
- * uninstall share {@link ExtensionAdminOps} with the admin console (actor null, audits without an
25
- * actor); after writing PG it publishes `kernel.plugins.changed` and running replicas reconcile; a
26
- * failed publish only warns (the periodic reconcile catches up).
18
+ * The CLI's extension management context (C18, F-Q): a Nest application context with
19
+ * the extensions module over the database and a lazy Redis connection used only for publishing
20
+ * and the bootstrap lock. It loads no extension and runs no extension's `setup` (a catalog import
21
+ * sets up the declared object-store extension itself, see `openCatalogCli`). Packages the CLI
22
+ * imports are always stored in PG (`blob_store = 'pg'`); replicas read by `blob_store`. Install /
23
+ * enable / disable / uninstall share {@link ExtensionAdminOps} with the admin console (actor null,
24
+ * audits without an actor); after writing PG it publishes `kernel.plugins.changed` and running
25
+ * replicas reconcile; a failed publish only warns (the periodic reconcile catches up).
27
26
  */
28
27
  export async function openExtensionCli(config, log, opts = {}) {
29
28
  const inspected = await ExtensionHost.inspect(config.extensions, {
30
29
  ...(opts.resolveFrom !== undefined && { resolveFrom: opts.resolveFrom }),
31
30
  });
32
- const raw = createDb(config.db.url, 2, (err) => log.error("pg idle client error", { err }), {
33
- connectTimeoutMs: config.db.connectTimeoutMs,
31
+ const app = await openKernelCli(config, {
32
+ logger: log,
33
+ ...(opts.resolveFrom !== undefined && { resolveFrom: opts.resolveFrom }),
34
+ modules: [ExtensionsModule, ...(opts.modules ?? [])],
34
35
  });
35
- const db = kernelDb(raw);
36
- const local = new Map();
37
- const stored = new ExtensionBlobs({ db, maxBytes: () => config.packages.maxBytes });
38
- const blobs = {
39
- get: async (sha256) => local.get(sha256) ?? stored.get(sha256),
40
- };
41
- const declared = new Map(inspected.map((p) => [p.manifest.name, p.source]));
36
+ const close = () => app.close().catch(() => { });
37
+ const db = app.get(KernelDb);
38
+ const keyring = app.get(KEYRING);
39
+ const blobs = app.get(ExtensionBlobs);
42
40
  // 部署配置 = 启动配置补上后台保存在 PG 的字段(C10);不合法的插件内核不加载(待配置)
43
- const keyring = createKeyring(Buffer.from(config.masterKey, "base64"), config.masterKeyPrevious.map((k) => Buffer.from(k, "base64")));
44
41
  const deploymentConfigOf = async (name, schema) => {
45
42
  if (!schema)
46
43
  return { ok: true, value: {} };
47
- const stored = await readStoredDeploymentConfig(db, keyring, name, {
44
+ const stored = await readStoredDeploymentConfig(db.db, keyring, name, {
48
45
  secretPaths: secretPathsOf(schemaFields(schema)),
49
46
  });
50
47
  const r = schema.safeParse(mergeDeploymentConfig(stored, config.extensionConfig[name], schemaFields(schema).map((f) => f.path)));
@@ -65,77 +62,28 @@ export async function openExtensionCli(config, log, opts = {}) {
65
62
  }
66
63
  }
67
64
  catch (e) {
68
- await raw.destroy().catch(() => { });
65
+ await close();
69
66
  throw e;
70
67
  }
71
- const declaredInfo = inspected.map((p) => ({
72
- name: p.manifest.name,
73
- source: p.source,
74
- version: p.manifest.version,
75
- permissions: p.permissions,
76
- configurable: p.manifest.config?.deployment !== undefined,
77
- configValid: !configIssues.has(p.manifest.name),
78
- }));
79
- let redis;
80
- const publisher = {
81
- async publish(topic, payload) {
82
- if (!redis) {
83
- redis = new Redis(config.redis.url, {
84
- lazyConnect: true,
85
- enableOfflineQueue: false,
86
- maxRetriesPerRequest: 0,
87
- connectTimeout: CLI_REDIS_CONNECT_TIMEOUT_MS,
88
- retryStrategy: () => null,
89
- });
90
- redis.on("error", () => { });
91
- }
92
- if (redis.status !== "ready")
93
- await redis.connect();
94
- // 与内核 bus 同一个频道命名(cap:kernel:<topic>);CLI 只发布,不订阅
95
- const bus = createBus(redis, {
96
- subscribe: () => Promise.reject(new Error("the CLI does not subscribe")),
97
- }, "kernel", log);
98
- await bus.publish(topic, payload);
99
- },
100
- };
101
- const installs = new ExtensionInstalls({
102
- db,
103
- blobs: stored,
104
- config: () => config,
105
- declared: () => declared,
106
- });
107
- const admin = new ExtensionAdmin({
108
- db,
109
- blobs,
110
- installs,
111
- config: () => config,
112
- host: { declaredPlugins: () => declaredInfo },
113
- bus: publisher,
114
- log,
115
- });
116
- const ops = new ExtensionAdminOps({
117
- db,
118
- view: (name) => admin.get(name, { allowUnreadable: true }),
119
- declared: () => declared,
120
- blobs,
121
- config: () => config,
122
- bus: publisher,
123
- log,
124
- });
68
+ // The admin view, the operations and the bootstrap step see the declared extensions as a
69
+ // replica would (the CLI checked their deployment config above)
70
+ app
71
+ .get(ExtensionHost)
72
+ .noteInspected(inspected, new Map(inspected.map((p) => [p.manifest.name, !configIssues.has(p.manifest.name)])));
73
+ const bus = app.get(KERNEL_BUS);
125
74
  return {
126
75
  config,
127
- db,
76
+ app,
128
77
  inspected,
129
78
  configIssues,
130
79
  deploymentConfigs,
131
80
  deploymentConfigOf,
132
- installs,
133
- admin,
134
- ops,
135
- approvals: new ExtensionApprovals(db),
136
- remember: (sha256, bytes) => {
137
- local.set(sha256, bytes);
138
- },
81
+ installs: app.get(ExtensionInstalls),
82
+ admin: app.get(ExtensionAdmin),
83
+ ops: app.get(ExtensionAdminOps),
84
+ approvals: app.get(ExtensionApprovals),
85
+ bootstrap: app.get(BootstrapService),
86
+ remember: (sha256, bytes) => blobs.remember(sha256, bytes),
139
87
  readPackage: (sha256) => blobs.get(sha256),
140
88
  async packageSet(sha256) {
141
89
  // a stored package in the pre-0.1.0 format -> extension.legacy_format
@@ -149,7 +97,7 @@ export async function openExtensionCli(config, log, opts = {}) {
149
97
  },
150
98
  async publishChanged(plugin) {
151
99
  try {
152
- await publisher.publish(PLUGINS_CHANGED_TOPIC, { plugin });
100
+ await bus.publish(PLUGINS_CHANGED_TOPIC, { plugin });
153
101
  return true;
154
102
  }
155
103
  catch (err) {
@@ -157,9 +105,6 @@ export async function openExtensionCli(config, log, opts = {}) {
157
105
  return false;
158
106
  }
159
107
  },
160
- async close() {
161
- redis?.disconnect();
162
- await raw.destroy().catch(() => { });
163
- },
108
+ close,
164
109
  };
165
110
  }
@@ -0,0 +1,7 @@
1
+ import type { z } from "zod";
2
+ /** 校验失败的单条原因:只含路径与按 issue 类型生成的说明,不回显字段值。 */
3
+ export interface ConfigIssue {
4
+ path: string;
5
+ message: string;
6
+ }
7
+ export declare function toIssues(error: z.ZodError): ConfigIssue[];
@@ -0,0 +1,31 @@
1
+ /** 由 issue 类型与结构字段生成说明;不用 zod 的 message(自定义消息可能拼入输入值)。 */
2
+ function issueMessage(i) {
3
+ switch (i.code) {
4
+ case "invalid_type":
5
+ return `expected ${i.expected}`;
6
+ case "too_small":
7
+ return `too small (minimum ${String(i.minimum)})`;
8
+ case "too_big":
9
+ return `too big (maximum ${String(i.maximum)})`;
10
+ case "invalid_format":
11
+ return `invalid ${i.format}`;
12
+ case "not_multiple_of":
13
+ return `not a multiple of ${String(i.divisor)}`;
14
+ case "unrecognized_keys":
15
+ return "unrecognized keys";
16
+ case "invalid_union":
17
+ return "no union member matched";
18
+ case "invalid_key":
19
+ return "invalid key";
20
+ case "invalid_element":
21
+ return "invalid element";
22
+ default:
23
+ return "invalid value";
24
+ }
25
+ }
26
+ export function toIssues(error) {
27
+ return error.issues.map((i) => ({
28
+ path: i.path.map(String).join("."),
29
+ message: issueMessage(i),
30
+ }));
31
+ }
@@ -0,0 +1,49 @@
1
+ import type { core } from "zod";
2
+ import { type Keyring } from "../ctx/secrets.js";
3
+ import type { KernelSchemaDb } from "../db/kernel-schema.js";
4
+ type Obj = Record<string, unknown>;
5
+ /**
6
+ * The stored half of the deployment-level extension config (C10): where PG keeps it, how it is read
7
+ * back and merged under the startup config. Pure helpers shared by the extension installs (the
8
+ * desired state the host loads with), the admin service and the CLI.
9
+ */
10
+ /** 部署级插件配置的密钥存在 `capybara.secrets` 的这个 org_id 下(不是真实组织;namespace `kernel`)。 */
11
+ export declare const DEPLOYMENT_SECRETS_ORG = "_deployment";
12
+ /** 内核自己的 secrets 命名空间(`kernel` 是保留插件名)。 */
13
+ export declare const SECRETS_NAMESPACE = "kernel";
14
+ export declare const secretKey: (plugin: string, path: string) => string;
15
+ /** 一个插件的部署级配置描述:真实模块的 zod schema(有的话)与字段清单。 */
16
+ export interface DeploymentSchemaInfo {
17
+ version: string;
18
+ schema?: core.$ZodType | undefined;
19
+ fields: {
20
+ path: string;
21
+ secret: boolean;
22
+ hot: boolean;
23
+ }[];
24
+ }
25
+ /** 由 zod schema 得出字段清单(`configFields`:对象路径上的叶子,secret 向下继承)。 */
26
+ export declare function schemaFields(schema: core.$ZodType | undefined): DeploymentSchemaInfo["fields"];
27
+ export declare const isObj: (v: unknown) => v is Obj;
28
+ /** 按点路径设值,缺失的中间对象自动创建;中间节点不是对象时放弃。 */
29
+ export declare function setDeep(obj: Obj, path: string, value: unknown): void;
30
+ /** 按点路径删除键;删完变空的中间对象一并删掉。 */
31
+ export declare function deleteDeep(obj: Obj, path: string): void;
32
+ /**
33
+ * 合并一个插件的部署配置(C10 的优先级:环境变量 > 文件 / Nacos > PG > schema 默认值):以启动配置
34
+ * (`fileValue`,已含环境变量)为底,逐字段补上 PG 里保存、而启动配置没有覆盖的值。按字段合并:启动配置给了的字段
35
+ * 整个以它为准(不与 PG 的值深合并)。`fields` 为字段点路径(没有 schema 时用 PG 值的叶子路径)。默认值由校验补上。
36
+ */
37
+ export declare function mergeDeploymentConfig(stored: Obj, fileValue: unknown, fields?: string[]): unknown;
38
+ /**
39
+ * PG 里一个插件保存的部署配置(非密钥字段 + 解密的密钥字段,按点路径放回对象)。只并入 `secretPaths`(当前
40
+ * schema 里是密钥的字段)的密钥:旧版本留下、现在已不是密钥或已删掉的字段不解密、不并入(否则会被当成明文回显
41
+ * 或保存)。
42
+ */
43
+ export declare function readStoredDeploymentConfig(db: KernelSchemaDb, keyring: Keyring, plugin: string, opts: {
44
+ forUpdate?: boolean;
45
+ secretPaths: readonly string[];
46
+ }): Promise<Obj>;
47
+ /** 字段清单里的密钥字段路径。 */
48
+ export declare const secretPathsOf: (fields: DeploymentSchemaInfo["fields"]) => string[];
49
+ export {};
@@ -0,0 +1,133 @@
1
+ import { configFields, getPath } from "../config/fields.js";
2
+ import { createSecrets } from "../ctx/secrets.js";
3
+ /**
4
+ * The stored half of the deployment-level extension config (C10): where PG keeps it, how it is read
5
+ * back and merged under the startup config. Pure helpers shared by the extension installs (the
6
+ * desired state the host loads with), the admin service and the CLI.
7
+ */
8
+ /** 部署级插件配置的密钥存在 `capybara.secrets` 的这个 org_id 下(不是真实组织;namespace `kernel`)。 */
9
+ export const DEPLOYMENT_SECRETS_ORG = "_deployment";
10
+ /** 内核自己的 secrets 命名空间(`kernel` 是保留插件名)。 */
11
+ export const SECRETS_NAMESPACE = "kernel";
12
+ const SECRET_KEY_PREFIX = "plugin-deployment-config:";
13
+ export const secretKey = (plugin, path) => `${SECRET_KEY_PREFIX}${plugin}:${path}`;
14
+ /** 由 zod schema 得出字段清单(`configFields`:对象路径上的叶子,secret 向下继承)。 */
15
+ export function schemaFields(schema) {
16
+ if (!schema)
17
+ return [];
18
+ return configFields(schema).map((f) => ({
19
+ path: f.path,
20
+ secret: f.meta?.secret === true,
21
+ hot: f.meta?.hot === true,
22
+ }));
23
+ }
24
+ export const isObj = (v) => typeof v === "object" && v !== null && !Array.isArray(v);
25
+ /** 按点路径设值,缺失的中间对象自动创建;中间节点不是对象时放弃。 */
26
+ export function setDeep(obj, path, value) {
27
+ const segs = path.split(".");
28
+ let node = obj;
29
+ for (const seg of segs.slice(0, -1)) {
30
+ const next = node[seg];
31
+ if (next === undefined)
32
+ node[seg] = {};
33
+ else if (!isObj(next))
34
+ return;
35
+ node = node[seg];
36
+ }
37
+ node[segs[segs.length - 1]] = value;
38
+ }
39
+ /** 按点路径删除键;删完变空的中间对象一并删掉。 */
40
+ export function deleteDeep(obj, path) {
41
+ const segs = path.split(".");
42
+ const chain = [obj];
43
+ let node = obj;
44
+ for (const seg of segs.slice(0, -1)) {
45
+ if (!isObj(node))
46
+ return;
47
+ node = node[seg];
48
+ if (!isObj(node))
49
+ return;
50
+ chain.push(node);
51
+ }
52
+ delete chain[chain.length - 1][segs[segs.length - 1]];
53
+ for (let i = chain.length - 1; i > 0; i--) {
54
+ if (Object.keys(chain[i]).length > 0)
55
+ break;
56
+ delete chain[i - 1][segs[i - 1]];
57
+ }
58
+ }
59
+ /** 叶子点路径(对象递归;其余都是叶子)。 */
60
+ function leafPaths(value, prefix = "", out = []) {
61
+ if (isObj(value)) {
62
+ for (const [k, v] of Object.entries(value))
63
+ leafPaths(v, prefix ? `${prefix}.${k}` : k, out);
64
+ }
65
+ else if (prefix !== "")
66
+ out.push(prefix);
67
+ return out;
68
+ }
69
+ /** 启动配置(文件 / 环境变量合并后的值)是否覆盖了这个字段:给了它、它下面的值,或在祖先上给了非对象值。 */
70
+ function coveredBy(fileValue, path) {
71
+ let node = fileValue;
72
+ for (const seg of path.split(".")) {
73
+ if (node === undefined)
74
+ return false;
75
+ if (!isObj(node))
76
+ return true;
77
+ node = node[seg];
78
+ }
79
+ return node !== undefined;
80
+ }
81
+ /**
82
+ * 合并一个插件的部署配置(C10 的优先级:环境变量 > 文件 / Nacos > PG > schema 默认值):以启动配置
83
+ * (`fileValue`,已含环境变量)为底,逐字段补上 PG 里保存、而启动配置没有覆盖的值。按字段合并:启动配置给了的字段
84
+ * 整个以它为准(不与 PG 的值深合并)。`fields` 为字段点路径(没有 schema 时用 PG 值的叶子路径)。默认值由校验补上。
85
+ */
86
+ export function mergeDeploymentConfig(stored, fileValue, fields = leafPaths(stored)) {
87
+ if (fileValue !== undefined && !isObj(fileValue))
88
+ return fileValue;
89
+ const out = structuredClone(fileValue ?? {});
90
+ for (const path of fields) {
91
+ const v = getPath(stored, path);
92
+ if (v === undefined || coveredBy(fileValue, path))
93
+ continue;
94
+ setDeep(out, path, structuredClone(v));
95
+ }
96
+ return out;
97
+ }
98
+ /**
99
+ * PG 里一个插件保存的部署配置(非密钥字段 + 解密的密钥字段,按点路径放回对象)。只并入 `secretPaths`(当前
100
+ * schema 里是密钥的字段)的密钥:旧版本留下、现在已不是密钥或已删掉的字段不解密、不并入(否则会被当成明文回显
101
+ * 或保存)。
102
+ */
103
+ export async function readStoredDeploymentConfig(db, keyring, plugin, opts) {
104
+ let q = db
105
+ .selectFrom("extension_deployment_configs")
106
+ .select("config")
107
+ .where("plugin", "=", plugin);
108
+ if (opts.forUpdate)
109
+ q = q.forUpdate();
110
+ const row = await q.executeTakeFirst();
111
+ const out = structuredClone(row?.config ?? {});
112
+ const prefix = secretKey(plugin, "");
113
+ const wanted = new Set(opts.secretPaths);
114
+ if (wanted.size === 0)
115
+ return out;
116
+ const keys = await db
117
+ .selectFrom("secrets")
118
+ .select("key")
119
+ .where("namespace", "=", SECRETS_NAMESPACE)
120
+ .where("org_id", "=", DEPLOYMENT_SECRETS_ORG)
121
+ .execute();
122
+ const secrets = createSecrets(db, keyring, SECRETS_NAMESPACE);
123
+ for (const { key } of keys) {
124
+ if (!key.startsWith(prefix) || !wanted.has(key.slice(prefix.length)))
125
+ continue;
126
+ const v = await secrets.get(DEPLOYMENT_SECRETS_ORG, key);
127
+ if (v !== null)
128
+ setDeep(out, key.slice(prefix.length), JSON.parse(v));
129
+ }
130
+ return out;
131
+ }
132
+ /** 字段清单里的密钥字段路径。 */
133
+ export const secretPathsOf = (fields) => fields.filter((f) => f.secret).map((f) => f.path);
@@ -1,21 +1,25 @@
1
- import { type Transaction } from "kysely";
2
1
  import type { core } from "zod";
2
+ import type { KernelAppOptions } from "../app.js";
3
3
  import { type ConfigSourceKind } from "../config/sources.js";
4
4
  import { type Keyring } from "../ctx/secrets.js";
5
- import type { KernelDatabase, KernelDb } from "../db/kernel-schema.js";
5
+ import type { KernelSchemaDb } from "../db/kernel-schema.js";
6
+ import { EnterpriseAdminLock } from "../identity/enterprise-admin.js";
7
+ import { KernelConfigService } from "../infra/config/kernel-config.service.js";
8
+ import { KernelDb } from "../infra/database/kernel-db.js";
9
+ import { TransactionHost } from "../infra/database/transaction-host.js";
10
+ import type { KernelLogger } from "../log.js";
11
+ import type { PublishBus } from "./admin-view.js";
12
+ import { type ConfigIssue } from "./config-issues.js";
6
13
  import { type JsonSchema } from "./config-json-schema.js";
7
- import { type ConfigIssue } from "./org-config.js";
8
- type Trx = Transaction<KernelDatabase>;
9
- type Obj = Record<string, unknown>;
10
- /** 部署级插件配置的密钥存在 `capybara.secrets` 的这个 org_id 下(不是真实组织;namespace `kernel`)。 */
11
- export declare const DEPLOYMENT_SECRETS_ORG = "_deployment";
12
- /**
13
- * 部署配置保存之后(kernel bus 主题,频道 `cap:kernel:plugin-deployment-config`,payload `{ plugin }`):
14
- * 各副本重读并校验——只改了 hot 字段就地替换,改了非 hot 字段重新加载实例,不合法保持当前值并告警;
15
- * 插件此刻待配置时,下一次 reconcile 加载它。
16
- */
17
- export declare const PLUGIN_DEPLOYMENT_CONFIG_TOPIC = "plugin-deployment-config";
14
+ import { DEPLOYMENT_SECRETS_ORG, type DeploymentSchemaInfo, mergeDeploymentConfig, readStoredDeploymentConfig, schemaFields, secretPathsOf } from "./deployment-config-store.js";
15
+ import { ExtensionHost } from "./host.js";
16
+ import { ExtensionInstalls } from "./installs.js";
17
+ import { ExtensionLifecycle } from "./lifecycle.js";
18
+ import { PLUGIN_DEPLOYMENT_CONFIG_TOPIC } from "./lifecycle-topics.js";
19
+ import { PluginDeploymentConfigLock } from "./locks.js";
20
+ export { DEPLOYMENT_SECRETS_ORG, type DeploymentSchemaInfo, mergeDeploymentConfig, readStoredDeploymentConfig, schemaFields, secretPathsOf, };
18
21
  export type { ConfigIssue };
22
+ export { PLUGIN_DEPLOYMENT_CONFIG_TOPIC };
19
23
  /** 后台一个部署配置字段:来源、是否只读;非密钥字段给出生效值,密钥字段只给 `set`。 */
20
24
  export interface DeploymentConfigField {
21
25
  path: string;
@@ -50,57 +54,6 @@ export interface DeploymentConfigView {
50
54
  /** 校验失败的原因(只有路径与说明,不含值)。 */
51
55
  issues: ConfigIssue[];
52
56
  }
53
- /** 一个插件的部署级配置描述:真实模块的 zod schema(有的话)与字段清单。 */
54
- export interface DeploymentSchemaInfo {
55
- version: string;
56
- schema?: core.$ZodType | undefined;
57
- fields: {
58
- path: string;
59
- secret: boolean;
60
- hot: boolean;
61
- }[];
62
- }
63
- /** 由 zod schema 得出字段清单(`configFields`:对象路径上的叶子,secret 向下继承)。 */
64
- export declare function schemaFields(schema: core.$ZodType | undefined): DeploymentSchemaInfo["fields"];
65
- /**
66
- * 合并一个插件的部署配置(C10 的优先级:环境变量 > 文件 / Nacos > PG > schema 默认值):以启动配置
67
- * (`fileValue`,已含环境变量)为底,逐字段补上 PG 里保存、而启动配置没有覆盖的值。按字段合并:启动配置给了的字段
68
- * 整个以它为准(不与 PG 的值深合并)。`fields` 为字段点路径(没有 schema 时用 PG 值的叶子路径)。默认值由校验补上。
69
- */
70
- export declare function mergeDeploymentConfig(stored: Obj, fileValue: unknown, fields?: string[]): unknown;
71
- /**
72
- * PG 里一个插件保存的部署配置(非密钥字段 + 解密的密钥字段,按点路径放回对象)。只并入 `secretPaths`(当前
73
- * schema 里是密钥的字段)的密钥:旧版本留下、现在已不是密钥或已删掉的字段不解密、不并入(否则会被当成明文回显
74
- * 或保存)。
75
- */
76
- export declare function readStoredDeploymentConfig(db: KernelDb | Trx, keyring: Keyring, plugin: string, opts: {
77
- forUpdate?: boolean;
78
- secretPaths: readonly string[];
79
- }): Promise<Obj>;
80
- /** 字段清单里的密钥字段路径。 */
81
- export declare const secretPathsOf: (fields: DeploymentSchemaInfo["fields"]) => string[];
82
- export interface ExtensionDeploymentConfigDeps {
83
- db: KernelDb;
84
- keyring: Keyring;
85
- /** 启动配置里的 `extensionConfig`(文件 / Nacos 与环境变量合并后)。 */
86
- fileConfig: () => Record<string, unknown>;
87
- /** 启动配置各字段的来源(见 `extensionConfigSources`);这些字段只读。 */
88
- sources: Record<string, Record<string, ConfigSourceKind>>;
89
- /** The extension's deployment config description; undefined when the deployment does not know the extension (`extension.not_found`). */
90
- schemaOf: (plugin: string) => Promise<DeploymentSchemaInfo | undefined>;
91
- /** 保存提交后发布 {@link PLUGIN_DEPLOYMENT_CONFIG_TOPIC};失败只告警(各副本的周期 reconcile 会重读生效插件的部署配置兜底)。 */
92
- bus?: {
93
- publish(topic: string, payload: unknown): Promise<void>;
94
- };
95
- /** 本副本立即应用(不等 bus 消息回到自己;其他副本经 bus)。失败只记 error。 */
96
- applyLocal?: (plugin: string) => Promise<unknown>;
97
- /** 经手的密钥值(提交后),内核传 `log.addSecrets`。 */
98
- onSecrets?: (values: string[]) => void;
99
- log: {
100
- warn(msg: string, fields?: Record<string, unknown>): void;
101
- error(msg: string, fields?: Record<string, unknown>): void;
102
- };
103
- }
104
57
  /**
105
58
  * Deployment-level extension config (D8 / C10): non-secret fields are stored in
106
59
  * `extension_deployment_configs`, each secret field encrypted in `capybara.secrets` (namespace
@@ -110,12 +63,49 @@ export interface ExtensionDeploymentConfigDeps {
110
63
  * Secret values are never echoed: responses only say "set", audits only record which paths changed.
111
64
  */
112
65
  export declare class ExtensionDeploymentConfigService {
113
- private readonly d;
114
- constructor(d: ExtensionDeploymentConfigDeps);
66
+ private readonly kdb;
67
+ readonly txHost: TransactionHost;
68
+ /** The enterprise admin lock (identity/enterprise-admin.ts): joins the transaction. */
69
+ private readonly adminLock;
70
+ private readonly configLock;
71
+ private readonly keyring;
72
+ private readonly config;
73
+ /** This replica's extension schemas (loaded, config-declared or prepared install records). */
74
+ private readonly host;
75
+ /** The effective (stored plus startup) deployment config. */
76
+ private readonly installs;
77
+ /** Applies a saved config on this replica at once (other replicas through the bus). */
78
+ private readonly lifecycle;
79
+ /** Publishes {@link PLUGIN_DEPLOYMENT_CONFIG_TOPIC} after a save (a failure only warns). */
80
+ private readonly bus;
81
+ private readonly log;
82
+ /** Where each startup-config field comes from (see `extensionConfigSources`); those fields are read-only. */
83
+ private readonly sources;
84
+ constructor(kdb: KernelDb, txHost: TransactionHost,
85
+ /** The enterprise admin lock (identity/enterprise-admin.ts): joins the transaction. */
86
+ adminLock: EnterpriseAdminLock, configLock: PluginDeploymentConfigLock, keyring: Keyring, config: KernelConfigService,
87
+ /** This replica's extension schemas (loaded, config-declared or prepared install records). */
88
+ host: ExtensionHost,
89
+ /** The effective (stored plus startup) deployment config. */
90
+ installs: ExtensionInstalls,
91
+ /** Applies a saved config on this replica at once (other replicas through the bus). */
92
+ lifecycle: ExtensionLifecycle,
93
+ /** Publishes {@link PLUGIN_DEPLOYMENT_CONFIG_TOPIC} after a save (a failure only warns). */
94
+ bus: PublishBus, log: KernelLogger, options: Pick<KernelAppOptions, "env" | "extensionConfigSources">);
95
+ private get db();
96
+ /** The startup config's `extensionConfig` (file / Nacos merged with env). */
97
+ private fileConfig;
98
+ /**
99
+ * The extension's deployment config description; undefined when the deployment does not know
100
+ * the extension (`extension.not_found`). Public for tests only.
101
+ */
102
+ schemaOf(plugin: string): Promise<DeploymentSchemaInfo | undefined>;
115
103
  /** 插件的生效部署配置(未校验):启动配置为底,补上 PG 里保存的字段。`schema` 给出时按它的字段合并。 */
116
104
  effective(plugin: string, fileValue: unknown, schema?: core.$ZodType): Promise<unknown>;
117
105
  /** Admin view; an extension unknown to the deployment -> `extension.not_found`. */
118
106
  view(plugin: string): Promise<DeploymentConfigView>;
107
+ /** `REPEATABLE READ` read-only: every stored field from one snapshot. */
108
+ private readStored;
119
109
  /**
120
110
  * Saves some fields: `values` keyed by field dot path, `null` = clear (back to the default),
121
111
  * omitted = unchanged.
@@ -129,10 +119,11 @@ export declare class ExtensionDeploymentConfigService {
129
119
  * applies it on this replica right away.
130
120
  */
131
121
  put(plugin: string, values: Record<string, unknown>, actor: string, actorTokenId?: string): Promise<DeploymentConfigView>;
122
+ private write;
132
123
  private info;
133
124
  private render;
134
125
  }
135
126
  /**
136
127
  * 本副本拿不到模块时(未加载的安装记录)按包内审阅过的静态清单给出字段(没有 zod schema:不校验,加载时再校验)。
137
128
  */
138
- export declare function staticDeploymentSchema(db: KernelDb, plugin: string): Promise<DeploymentSchemaInfo | undefined>;
129
+ export declare function staticDeploymentSchema(db: KernelSchemaDb, plugin: string): Promise<DeploymentSchemaInfo | undefined>;