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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (670) hide show
  1. package/dist/admin/admin.controller.d.ts +17 -17
  2. package/dist/admin/admin.controller.js +43 -26
  3. package/dist/admin/admin.module.d.ts +3 -0
  4. package/dist/admin/admin.module.js +22 -0
  5. package/dist/admin/extensions.controller.d.ts +14 -14
  6. package/dist/admin/extensions.controller.js +30 -17
  7. package/dist/admin/setup-lock.d.ts +16 -0
  8. package/dist/admin/setup-lock.js +47 -0
  9. package/dist/admin/setup.controller.d.ts +8 -8
  10. package/dist/admin/setup.controller.js +27 -25
  11. package/dist/admin/setup.service.d.ts +19 -27
  12. package/dist/admin/setup.service.js +61 -61
  13. package/dist/agents/agent-lookup.d.ts +53 -0
  14. package/dist/agents/agent-lookup.js +187 -0
  15. package/dist/agents/agents.controller.d.ts +1 -1
  16. package/dist/agents/agents.controller.js +14 -8
  17. package/dist/agents/agents.module.d.ts +7 -0
  18. package/dist/agents/agents.module.js +41 -0
  19. package/dist/agents/agents.service.d.ts +39 -58
  20. package/dist/agents/agents.service.js +280 -335
  21. package/dist/agents/definition.d.ts +39 -8
  22. package/dist/agents/definition.js +201 -17
  23. package/dist/agents/models.controller.d.ts +1 -1
  24. package/dist/agents/models.controller.js +2 -2
  25. package/dist/agents/templates.controller.d.ts +1 -1
  26. package/dist/agents/templates.controller.js +2 -2
  27. package/dist/agents/templates.d.ts +6 -8
  28. package/dist/agents/templates.js +39 -8
  29. package/dist/app.d.ts +93 -0
  30. package/dist/app.js +150 -0
  31. package/dist/catalog/admin-catalog.controller.d.ts +3 -3
  32. package/dist/catalog/admin-catalog.controller.js +27 -13
  33. package/dist/catalog/catalog-content.d.ts +185 -0
  34. package/dist/catalog/catalog-content.js +326 -0
  35. package/dist/catalog/catalog-items.d.ts +186 -0
  36. package/dist/catalog/catalog-items.js +410 -0
  37. package/dist/catalog/catalog.module.d.ts +14 -0
  38. package/dist/catalog/catalog.module.js +71 -0
  39. package/dist/catalog/catalog.service.d.ts +34 -188
  40. package/dist/catalog/catalog.service.js +155 -489
  41. package/dist/catalog/claude/agents.js +13 -10
  42. package/dist/catalog/cli.d.ts +3 -2
  43. package/dist/catalog/cli.js +13 -31
  44. package/dist/catalog/job-ids.d.ts +15 -0
  45. package/dist/catalog/job-ids.js +15 -0
  46. package/dist/catalog/jobs.d.ts +27 -0
  47. package/dist/catalog/jobs.js +70 -0
  48. package/dist/catalog/locks.d.ts +24 -0
  49. package/dist/catalog/locks.js +63 -0
  50. package/dist/catalog/marketplaces.controller.d.ts +4 -4
  51. package/dist/catalog/marketplaces.controller.js +22 -11
  52. package/dist/catalog/marketplaces.service.d.ts +31 -14
  53. package/dist/catalog/marketplaces.service.js +330 -256
  54. package/dist/catalog/org-catalog.controller.d.ts +4 -3
  55. package/dist/catalog/org-catalog.controller.js +29 -14
  56. package/dist/catalog/org-catalog.service.d.ts +32 -198
  57. package/dist/catalog/org-catalog.service.js +159 -400
  58. package/dist/catalog/plugin-import.d.ts +73 -34
  59. package/dist/catalog/plugin-import.js +356 -217
  60. package/dist/catalog/plugin-install.d.ts +83 -41
  61. package/dist/catalog/plugin-install.js +421 -269
  62. package/dist/catalog/plugin-upgrade.d.ts +59 -4
  63. package/dist/catalog/plugin-upgrade.js +407 -282
  64. package/dist/catalog/requests.service.d.ts +27 -15
  65. package/dist/catalog/requests.service.js +201 -145
  66. package/dist/catalog/upgrade-targets.d.ts +4 -7
  67. package/dist/channels/actions.d.ts +6 -4
  68. package/dist/channels/actions.js +1 -1
  69. package/dist/channels/cards.d.ts +10 -4
  70. package/dist/channels/cards.js +16 -8
  71. package/dist/channels/channels.module.d.ts +40 -0
  72. package/dist/channels/channels.module.js +128 -0
  73. package/dist/channels/connections.controller.d.ts +1 -1
  74. package/dist/channels/connections.controller.js +11 -6
  75. package/dist/channels/connections.service.d.ts +43 -21
  76. package/dist/channels/connections.service.js +236 -131
  77. package/dist/channels/inbound.d.ts +34 -38
  78. package/dist/channels/inbound.js +107 -41
  79. package/dist/channels/job-ids.d.ts +10 -0
  80. package/dist/channels/job-ids.js +10 -0
  81. package/dist/channels/jobs.d.ts +85 -0
  82. package/dist/channels/jobs.js +157 -0
  83. package/dist/channels/outbound.d.ts +60 -82
  84. package/dist/channels/outbound.js +165 -194
  85. package/dist/channels/supervisor.d.ts +88 -46
  86. package/dist/channels/supervisor.js +230 -132
  87. package/dist/channels/threads.d.ts +29 -8
  88. package/dist/channels/threads.js +71 -13
  89. package/dist/channels/webhook.d.ts +20 -14
  90. package/dist/channels/webhook.js +51 -20
  91. package/dist/config/load.d.ts +3 -2
  92. package/dist/config/load.js +3 -2
  93. package/dist/config/nacos-source.js +11 -2
  94. package/dist/config/schema.d.ts +1 -0
  95. package/dist/config/schema.js +12 -6
  96. package/dist/conversations/access.d.ts +29 -0
  97. package/dist/conversations/access.js +86 -0
  98. package/dist/conversations/artifacts.d.ts +11 -11
  99. package/dist/conversations/artifacts.js +36 -10
  100. package/dist/conversations/attachments.controller.d.ts +1 -1
  101. package/dist/conversations/attachments.controller.js +8 -6
  102. package/dist/conversations/attachments.module.d.ts +7 -0
  103. package/dist/conversations/attachments.module.js +25 -0
  104. package/dist/conversations/attachments.service.d.ts +30 -22
  105. package/dist/conversations/attachments.service.js +119 -46
  106. package/dist/conversations/conversations.controller.d.ts +8 -7
  107. package/dist/conversations/conversations.controller.js +59 -29
  108. package/dist/conversations/conversations.module.d.ts +8 -0
  109. package/dist/conversations/conversations.module.js +69 -0
  110. package/dist/conversations/conversations.service.d.ts +40 -38
  111. package/dist/conversations/conversations.service.js +130 -140
  112. package/dist/conversations/event-log.d.ts +39 -18
  113. package/dist/conversations/event-log.js +93 -27
  114. package/dist/conversations/events.d.ts +23 -3
  115. package/dist/conversations/events.js +26 -14
  116. package/dist/conversations/files.d.ts +10 -10
  117. package/dist/conversations/files.js +37 -11
  118. package/dist/conversations/idem-keys.d.ts +5 -0
  119. package/dist/conversations/idem-keys.js +5 -0
  120. package/dist/conversations/job-ids.d.ts +6 -0
  121. package/dist/conversations/job-ids.js +6 -0
  122. package/dist/conversations/outputs-read.d.ts +11 -11
  123. package/dist/conversations/outputs-read.js +31 -7
  124. package/dist/conversations/queue.d.ts +48 -56
  125. package/dist/conversations/queue.js +13 -289
  126. package/dist/conversations/queue.service.d.ts +60 -0
  127. package/dist/conversations/queue.service.js +343 -0
  128. package/dist/conversations/sandbox-status.d.ts +13 -10
  129. package/dist/conversations/sandbox-status.js +36 -8
  130. package/dist/conversations/titles.d.ts +71 -24
  131. package/dist/conversations/titles.js +159 -63
  132. package/dist/ctx/bus.js +9 -3
  133. package/dist/ctx/create-ctx.d.ts +6 -0
  134. package/dist/ctx/create-ctx.js +7 -9
  135. package/dist/ctx/lock.d.ts +7 -3
  136. package/dist/ctx/lock.js +9 -20
  137. package/dist/ctx/secrets.d.ts +10 -2
  138. package/dist/ctx/secrets.js +7 -3
  139. package/dist/db/kernel-schema.d.ts +4 -4
  140. package/dist/db/pool.d.ts +5 -0
  141. package/dist/db/pool.js +1 -0
  142. package/dist/errors.d.ts +1 -0
  143. package/dist/errors.js +1 -0
  144. package/dist/evals/budget.d.ts +42 -21
  145. package/dist/evals/budget.js +114 -62
  146. package/dist/evals/evals.module.d.ts +31 -0
  147. package/dist/evals/evals.module.js +114 -0
  148. package/dist/evals/jobs.d.ts +20 -0
  149. package/dist/evals/jobs.js +45 -0
  150. package/dist/evals/recorded-tools.d.ts +27 -1
  151. package/dist/evals/recorded-tools.js +85 -10
  152. package/dist/evals/run-replay.d.ts +61 -8
  153. package/dist/evals/run-replay.js +159 -85
  154. package/dist/evals/runs.controller.d.ts +1 -1
  155. package/dist/evals/runs.controller.js +17 -8
  156. package/dist/evals/runs.service.d.ts +23 -45
  157. package/dist/evals/runs.service.js +245 -234
  158. package/dist/evals/sets.controller.d.ts +1 -1
  159. package/dist/evals/sets.controller.js +17 -8
  160. package/dist/evals/sets.service.d.ts +22 -6
  161. package/dist/evals/sets.service.js +248 -194
  162. package/dist/evals/snapshot.d.ts +2 -2
  163. package/dist/evals/step-replay.d.ts +2 -2
  164. package/dist/evals/step-replay.js +1 -1
  165. package/dist/evals/trajectory.controller.d.ts +1 -1
  166. package/dist/evals/trajectory.controller.js +11 -7
  167. package/dist/evals/trajectory.d.ts +2 -2
  168. package/dist/evals/trajectory.service.d.ts +5 -4
  169. package/dist/evals/trajectory.service.js +30 -7
  170. package/dist/evals/worker.d.ts +44 -27
  171. package/dist/evals/worker.js +220 -121
  172. package/dist/extensions/admin-ops.d.ts +61 -33
  173. package/dist/extensions/admin-ops.js +248 -154
  174. package/dist/extensions/admin-view.d.ts +38 -27
  175. package/dist/extensions/admin-view.js +126 -55
  176. package/dist/extensions/approvals.d.ts +12 -8
  177. package/dist/extensions/approvals.js +73 -46
  178. package/dist/extensions/blobs.d.ts +27 -10
  179. package/dist/extensions/blobs.js +111 -45
  180. package/dist/extensions/bootstrap.d.ts +58 -31
  181. package/dist/extensions/bootstrap.js +175 -121
  182. package/dist/extensions/cli.d.ts +20 -10
  183. package/dist/extensions/cli.js +41 -96
  184. package/dist/extensions/config-issues.d.ts +7 -0
  185. package/dist/extensions/config-issues.js +31 -0
  186. package/dist/extensions/deployment-config-store.d.ts +49 -0
  187. package/dist/extensions/deployment-config-store.js +133 -0
  188. package/dist/extensions/deployment-config.d.ts +58 -67
  189. package/dist/extensions/deployment-config.js +202 -230
  190. package/dist/extensions/enabled.d.ts +5 -5
  191. package/dist/extensions/extensions.module.d.ts +8 -0
  192. package/dist/extensions/extensions.module.js +77 -0
  193. package/dist/extensions/hooks.d.ts +3 -2
  194. package/dist/extensions/hooks.js +1 -1
  195. package/dist/extensions/host.d.ts +72 -68
  196. package/dist/extensions/host.js +191 -152
  197. package/dist/extensions/installs.d.ts +49 -16
  198. package/dist/extensions/installs.js +128 -32
  199. package/dist/extensions/job-ids.d.ts +6 -0
  200. package/dist/extensions/job-ids.js +6 -0
  201. package/dist/extensions/lifecycle-topics.d.ts +18 -0
  202. package/dist/extensions/lifecycle-topics.js +18 -0
  203. package/dist/extensions/lifecycle.d.ts +35 -47
  204. package/dist/extensions/lifecycle.js +103 -39
  205. package/dist/extensions/locks.d.ts +33 -0
  206. package/dist/extensions/locks.js +86 -0
  207. package/dist/extensions/migrate-lock.d.ts +3 -4
  208. package/dist/extensions/org-config.controller.d.ts +1 -1
  209. package/dist/extensions/org-config.controller.js +8 -5
  210. package/dist/extensions/org-config.d.ts +48 -46
  211. package/dist/extensions/org-config.js +284 -226
  212. package/dist/extensions/registry.d.ts +50 -2
  213. package/dist/extensions/registry.js +89 -4
  214. package/dist/extensions/sources.d.ts +12 -8
  215. package/dist/extensions/sources.js +34 -13
  216. package/dist/files/files.module.d.ts +3 -0
  217. package/dist/files/files.module.js +22 -0
  218. package/dist/files/previewers.controller.d.ts +7 -2
  219. package/dist/files/previewers.controller.js +17 -9
  220. package/dist/files/previewers.d.ts +13 -18
  221. package/dist/files/previewers.js +83 -36
  222. package/dist/http/adapter.d.ts +3 -0
  223. package/dist/http/adapter.js +25 -0
  224. package/dist/http/api.module.d.ts +3 -110
  225. package/dist/http/api.module.js +47 -355
  226. package/dist/http/app.d.ts +11 -15
  227. package/dist/http/app.js +17 -62
  228. package/dist/http/error-filter.module.d.ts +5 -0
  229. package/dist/http/error-filter.module.js +18 -0
  230. package/dist/http/error.filter.js +2 -2
  231. package/dist/identity/accounts.d.ts +82 -29
  232. package/dist/identity/accounts.js +294 -175
  233. package/dist/identity/api-tokens.d.ts +11 -7
  234. package/dist/identity/api-tokens.js +71 -44
  235. package/dist/identity/audit.d.ts +7 -4
  236. package/dist/identity/audit.js +5 -1
  237. package/dist/identity/auth.controller.d.ts +11 -10
  238. package/dist/identity/auth.controller.js +31 -25
  239. package/dist/identity/auth.guard.d.ts +3 -3
  240. package/dist/identity/auth.guard.js +6 -4
  241. package/dist/identity/binding.d.ts +9 -11
  242. package/dist/identity/binding.js +41 -13
  243. package/dist/identity/enterprise-admin.d.ts +18 -12
  244. package/dist/identity/enterprise-admin.js +67 -13
  245. package/dist/identity/external-identity-lock.d.ts +17 -0
  246. package/dist/identity/external-identity-lock.js +39 -0
  247. package/dist/identity/external.d.ts +19 -15
  248. package/dist/identity/external.js +163 -125
  249. package/dist/identity/identity.module.d.ts +6 -0
  250. package/dist/identity/identity.module.js +56 -0
  251. package/dist/identity/me.controller.d.ts +16 -15
  252. package/dist/identity/me.controller.js +37 -31
  253. package/dist/identity/sessions.d.ts +12 -10
  254. package/dist/identity/sessions.js +74 -42
  255. package/dist/identity/settings.d.ts +20 -14
  256. package/dist/identity/settings.js +86 -58
  257. package/dist/identity/sso.controller.d.ts +7 -7
  258. package/dist/identity/sso.controller.js +13 -9
  259. package/dist/identity/sso.d.ts +9 -12
  260. package/dist/identity/sso.js +54 -24
  261. package/dist/inbox/inbox.module.d.ts +3 -0
  262. package/dist/inbox/inbox.module.js +22 -0
  263. package/dist/inbox/inbox.service.d.ts +7 -9
  264. package/dist/inbox/inbox.service.js +32 -11
  265. package/dist/index.d.ts +16 -11
  266. package/dist/index.js +9 -6
  267. package/dist/infra/cache/cache.module.d.ts +3 -0
  268. package/dist/infra/cache/cache.module.js +16 -0
  269. package/dist/infra/cache/cache.service.d.ts +21 -0
  270. package/dist/infra/cache/cache.service.js +80 -0
  271. package/dist/infra/cache/cacheable.decorator.d.ts +32 -0
  272. package/dist/infra/cache/cacheable.decorator.js +83 -0
  273. package/dist/infra/cli/kernel-cli.module.d.ts +66 -0
  274. package/dist/infra/cli/kernel-cli.module.js +165 -0
  275. package/dist/infra/close-within.d.ts +15 -0
  276. package/dist/infra/close-within.js +36 -0
  277. package/dist/infra/config/config.module.d.ts +13 -0
  278. package/dist/infra/config/config.module.js +39 -0
  279. package/dist/infra/config/kernel-config.service.d.ts +25 -0
  280. package/dist/infra/config/kernel-config.service.js +126 -0
  281. package/dist/infra/database/after-commit.d.ts +6 -0
  282. package/dist/infra/database/after-commit.js +9 -0
  283. package/dist/infra/database/database.module.d.ts +25 -0
  284. package/dist/infra/database/database.module.js +90 -0
  285. package/dist/infra/database/kernel-db.d.ts +22 -0
  286. package/dist/infra/database/kernel-db.js +65 -0
  287. package/dist/infra/database/transaction-host.d.ts +50 -0
  288. package/dist/infra/database/transaction-host.js +125 -0
  289. package/dist/infra/database/transactional.decorator.d.ts +15 -0
  290. package/dist/infra/database/transactional.decorator.js +27 -0
  291. package/dist/infra/database/xact-lock.d.ts +17 -0
  292. package/dist/infra/database/xact-lock.js +43 -0
  293. package/dist/infra/events/kernel-events.d.ts +96 -0
  294. package/dist/infra/events/kernel-events.js +65 -0
  295. package/dist/infra/health/health.controller.d.ts +26 -0
  296. package/dist/infra/health/health.controller.js +104 -0
  297. package/dist/infra/health/health.module.d.ts +9 -0
  298. package/dist/infra/health/health.module.js +24 -0
  299. package/dist/infra/health/health.options.d.ts +10 -0
  300. package/dist/infra/health/health.options.js +15 -0
  301. package/dist/infra/health/shutdown-state.d.ts +6 -0
  302. package/dist/infra/health/shutdown-state.js +2 -0
  303. package/dist/infra/lifecycle/graceful-shutdown.module.d.ts +6 -0
  304. package/dist/infra/lifecycle/graceful-shutdown.module.js +23 -0
  305. package/dist/infra/lifecycle/graceful-shutdown.service.d.ts +70 -0
  306. package/dist/infra/lifecycle/graceful-shutdown.service.js +135 -0
  307. package/dist/infra/lifecycle/process-guards.d.ts +52 -0
  308. package/dist/infra/lifecycle/process-guards.js +86 -0
  309. package/dist/infra/lifecycle/shutdown-signals.d.ts +30 -0
  310. package/dist/infra/lifecycle/shutdown-signals.js +48 -0
  311. package/dist/infra/lock/key-template.d.ts +13 -0
  312. package/dist/infra/lock/key-template.js +46 -0
  313. package/dist/infra/lock/lock.module.d.ts +3 -0
  314. package/dist/infra/lock/lock.module.js +16 -0
  315. package/dist/infra/lock/lock.service.d.ts +120 -0
  316. package/dist/infra/lock/lock.service.js +343 -0
  317. package/dist/infra/lock/shared-lease.d.ts +44 -0
  318. package/dist/infra/lock/shared-lease.js +121 -0
  319. package/dist/infra/lock/with-lock.decorator.d.ts +28 -0
  320. package/dist/infra/lock/with-lock.decorator.js +49 -0
  321. package/dist/infra/logging/logging.module.d.ts +16 -0
  322. package/dist/infra/logging/logging.module.js +34 -0
  323. package/dist/infra/queue/configured-processor.d.ts +18 -0
  324. package/dist/infra/queue/configured-processor.js +23 -0
  325. package/dist/infra/queue/job-failure.d.ts +18 -0
  326. package/dist/infra/queue/job-failure.js +26 -0
  327. package/dist/infra/queue/queue-shutdown.d.ts +27 -0
  328. package/dist/infra/queue/queue-shutdown.js +81 -0
  329. package/dist/infra/queue/queue.module.d.ts +16 -0
  330. package/dist/infra/queue/queue.module.js +61 -0
  331. package/dist/infra/queue/redis-connection.d.ts +7 -0
  332. package/dist/infra/queue/redis-connection.js +18 -0
  333. package/dist/infra/queue/retired-schedulers.d.ts +7 -0
  334. package/dist/infra/queue/retired-schedulers.js +9 -0
  335. package/dist/infra/queue/run-job.d.ts +16 -0
  336. package/dist/infra/queue/run-job.js +19 -0
  337. package/dist/infra/redis/redis.module.d.ts +24 -0
  338. package/dist/infra/redis/redis.module.js +87 -0
  339. package/dist/infra/schedule/cron-tick.d.ts +12 -0
  340. package/dist/infra/schedule/cron-tick.js +25 -0
  341. package/dist/infra/schedule/locked-cron.decorator.d.ts +27 -0
  342. package/dist/infra/schedule/locked-cron.decorator.js +53 -0
  343. package/dist/infra/schedule/locked-interval.d.ts +69 -0
  344. package/dist/infra/schedule/locked-interval.js +190 -0
  345. package/dist/infra/schedule/locked-tick.d.ts +90 -0
  346. package/dist/infra/schedule/locked-tick.js +137 -0
  347. package/dist/infra/schedule/schedule.module.d.ts +8 -0
  348. package/dist/infra/schedule/schedule.module.js +27 -0
  349. package/dist/infra/schedule/scheduled-runs.d.ts +69 -0
  350. package/dist/infra/schedule/scheduled-runs.js +163 -0
  351. package/dist/infra/swagger/swagger.d.ts +16 -0
  352. package/dist/infra/swagger/swagger.js +31 -0
  353. package/dist/infra/throttler/credential-throttler.d.ts +35 -0
  354. package/dist/infra/throttler/credential-throttler.js +77 -0
  355. package/dist/infra/throttler/named-throttlers.d.ts +31 -0
  356. package/dist/infra/throttler/named-throttlers.js +119 -0
  357. package/dist/infra/throttler/redis-throttler-storage.d.ts +38 -0
  358. package/dist/infra/throttler/redis-throttler-storage.js +130 -0
  359. package/dist/infra/throttler/throttler.guard.d.ts +23 -0
  360. package/dist/infra/throttler/throttler.guard.js +68 -0
  361. package/dist/infra/throttler/throttler.module.d.ts +15 -0
  362. package/dist/infra/throttler/throttler.module.js +53 -0
  363. package/dist/infra/tokens.d.ts +15 -0
  364. package/dist/infra/tokens.js +15 -0
  365. package/dist/infra/validation/create-zod-dto.d.ts +23 -0
  366. package/dist/infra/validation/create-zod-dto.js +35 -0
  367. package/dist/infra/validation/parse-with-zod.d.ts +7 -0
  368. package/dist/infra/validation/parse-with-zod.js +12 -0
  369. package/dist/infra/validation/validation.module.d.ts +3 -0
  370. package/dist/infra/validation/validation.module.js +16 -0
  371. package/dist/infra/validation/zod-params.d.ts +7 -0
  372. package/dist/infra/validation/zod-params.js +42 -0
  373. package/dist/infra/validation/zod-validation.pipe.d.ts +11 -0
  374. package/dist/infra/validation/zod-validation.pipe.js +31 -0
  375. package/dist/kernel.d.ts +9 -244
  376. package/dist/kernel.js +8 -1305
  377. package/dist/kernel.module.d.ts +17 -0
  378. package/dist/kernel.module.js +136 -0
  379. package/dist/lifecycle/kernel-lifecycle.d.ts +140 -0
  380. package/dist/lifecycle/kernel-lifecycle.js +456 -0
  381. package/dist/lifecycle/tokens.d.ts +3 -0
  382. package/dist/lifecycle/tokens.js +3 -0
  383. package/dist/log-context.d.ts +2 -0
  384. package/dist/log-context.js +4 -0
  385. package/dist/models/models.module.d.ts +3 -0
  386. package/dist/models/models.module.js +24 -0
  387. package/dist/models/prices.d.ts +8 -2
  388. package/dist/models/prices.js +65 -37
  389. package/dist/models/purposes.controller.d.ts +1 -1
  390. package/dist/models/purposes.controller.js +5 -6
  391. package/dist/models/purposes.d.ts +35 -13
  392. package/dist/models/purposes.js +101 -51
  393. package/dist/orgs/directory-sync.controller.d.ts +1 -1
  394. package/dist/orgs/directory-sync.controller.js +2 -2
  395. package/dist/orgs/directory-sync.d.ts +61 -31
  396. package/dist/orgs/directory-sync.js +212 -125
  397. package/dist/orgs/invitations.controller.d.ts +8 -8
  398. package/dist/orgs/invitations.controller.js +27 -26
  399. package/dist/orgs/invitations.service.d.ts +12 -9
  400. package/dist/orgs/invitations.service.js +130 -92
  401. package/dist/orgs/job-ids.d.ts +8 -0
  402. package/dist/orgs/job-ids.js +8 -0
  403. package/dist/orgs/members.service.d.ts +19 -12
  404. package/dist/orgs/members.service.js +161 -117
  405. package/dist/orgs/offboarding.d.ts +54 -57
  406. package/dist/orgs/offboarding.js +161 -71
  407. package/dist/orgs/org-lock.d.ts +28 -19
  408. package/dist/orgs/org-lock.js +81 -35
  409. package/dist/orgs/org.guard.d.ts +1 -1
  410. package/dist/orgs/org.guard.js +2 -2
  411. package/dist/orgs/orgs.controller.d.ts +13 -13
  412. package/dist/orgs/orgs.controller.js +29 -17
  413. package/dist/orgs/orgs.module.d.ts +6 -0
  414. package/dist/orgs/orgs.module.js +68 -0
  415. package/dist/orgs/orgs.service.d.ts +30 -19
  416. package/dist/orgs/orgs.service.js +139 -86
  417. package/dist/orgs/settings.controller.d.ts +1 -1
  418. package/dist/orgs/settings.controller.js +8 -6
  419. package/dist/orgs/settings.service.d.ts +16 -10
  420. package/dist/orgs/settings.service.js +77 -48
  421. package/dist/overrides.d.ts +56 -0
  422. package/dist/overrides.js +30 -0
  423. package/dist/roles/gateway-role.d.ts +43 -0
  424. package/dist/roles/gateway-role.js +98 -0
  425. package/dist/roles/gateway.module.d.ts +8 -0
  426. package/dist/roles/gateway.module.js +28 -0
  427. package/dist/roles/worker-role.d.ts +63 -0
  428. package/dist/roles/worker-role.js +144 -0
  429. package/dist/roles/worker.module.d.ts +14 -0
  430. package/dist/roles/worker.module.js +90 -0
  431. package/dist/runtime/abort.js +19 -2
  432. package/dist/runtime/checkpointer.d.ts +8 -3
  433. package/dist/runtime/checkpointer.js +87 -55
  434. package/dist/runtime/context/build.d.ts +6 -6
  435. package/dist/runtime/context/build.js +18 -8
  436. package/dist/runtime/context/claude-tools.d.ts +2 -1
  437. package/dist/runtime/context/claude-tools.js +9 -10
  438. package/dist/runtime/context/legacy-text.d.ts +22 -0
  439. package/dist/runtime/context/legacy-text.js +37 -0
  440. package/dist/runtime/context/skills.d.ts +29 -11
  441. package/dist/runtime/context/skills.js +37 -30
  442. package/dist/runtime/conversation-lock.d.ts +20 -11
  443. package/dist/runtime/conversation-lock.js +62 -72
  444. package/dist/runtime/hook-calls.d.ts +3 -3
  445. package/dist/runtime/hook-calls.js +1 -6
  446. package/dist/runtime/job-ids.d.ts +10 -0
  447. package/dist/runtime/job-ids.js +10 -0
  448. package/dist/runtime/langgraph-loop.js +1 -1
  449. package/dist/runtime/loop.d.ts +8 -1
  450. package/dist/runtime/loop.js +14 -0
  451. package/dist/runtime/maintenance-queue.d.ts +10 -0
  452. package/dist/runtime/maintenance-queue.js +10 -0
  453. package/dist/runtime/maintenance.d.ts +45 -74
  454. package/dist/runtime/maintenance.js +139 -137
  455. package/dist/runtime/model-call.d.ts +7 -4
  456. package/dist/runtime/model-call.js +25 -58
  457. package/dist/runtime/providers.d.ts +17 -6
  458. package/dist/runtime/providers.js +66 -25
  459. package/dist/runtime/quota.d.ts +17 -3
  460. package/dist/runtime/quota.js +27 -2
  461. package/dist/runtime/retired-schedulers.d.ts +7 -0
  462. package/dist/runtime/retired-schedulers.js +31 -0
  463. package/dist/runtime/run-control.d.ts +33 -0
  464. package/dist/runtime/run-control.js +77 -0
  465. package/dist/runtime/run-finish.d.ts +27 -18
  466. package/dist/runtime/run-finish.js +98 -51
  467. package/dist/runtime/run-jobs.d.ts +48 -0
  468. package/dist/runtime/run-jobs.js +95 -0
  469. package/dist/runtime/run-processors.d.ts +60 -0
  470. package/dist/runtime/run-processors.js +185 -0
  471. package/dist/runtime/run-queue.d.ts +32 -57
  472. package/dist/runtime/run-queue.js +291 -295
  473. package/dist/runtime/run-steps.d.ts +39 -0
  474. package/dist/runtime/run-steps.js +96 -0
  475. package/dist/runtime/run-worker.d.ts +122 -76
  476. package/dist/runtime/run-worker.js +343 -229
  477. package/dist/runtime/runtime.module.d.ts +10 -0
  478. package/dist/runtime/runtime.module.js +112 -0
  479. package/dist/runtime/step-log.d.ts +40 -0
  480. package/dist/runtime/step-log.js +94 -0
  481. package/dist/runtime/stream.controller.d.ts +5 -8
  482. package/dist/runtime/stream.controller.js +14 -12
  483. package/dist/runtime/stream.d.ts +24 -6
  484. package/dist/runtime/stream.js +78 -7
  485. package/dist/runtime/subagents/child.d.ts +3 -44
  486. package/dist/runtime/subagents/child.js +0 -79
  487. package/dist/runtime/subagents/definition.d.ts +5 -10
  488. package/dist/runtime/subagents/definition.js +13 -14
  489. package/dist/runtime/subagents/dispatch.d.ts +89 -8
  490. package/dist/runtime/subagents/dispatch.js +137 -142
  491. package/dist/runtime/subagents/limits.d.ts +9 -4
  492. package/dist/runtime/subagents/limits.js +4 -2
  493. package/dist/runtime/subagents/org-agents.d.ts +4 -4
  494. package/dist/runtime/subagents/org-agents.js +3 -2
  495. package/dist/runtime/subagents/progress.d.ts +2 -2
  496. package/dist/runtime/subagents/roster.d.ts +4 -4
  497. package/dist/runtime/subagents/roster.js +2 -2
  498. package/dist/runtime/subagents/skill-fork.d.ts +8 -9
  499. package/dist/runtime/subagents/skill-fork.js +17 -6
  500. package/dist/runtime/subagents/subagents.service.d.ts +40 -0
  501. package/dist/runtime/subagents/subagents.service.js +101 -0
  502. package/dist/runtime/usage-report.d.ts +94 -52
  503. package/dist/runtime/usage-report.js +200 -100
  504. package/dist/runtime/waits.d.ts +127 -59
  505. package/dist/runtime/waits.js +433 -210
  506. package/dist/sandbox/job-ids.d.ts +10 -0
  507. package/dist/sandbox/job-ids.js +10 -0
  508. package/dist/sandbox/jobs.d.ts +41 -0
  509. package/dist/sandbox/jobs.js +113 -0
  510. package/dist/sandbox/leases.d.ts +39 -31
  511. package/dist/sandbox/leases.js +117 -257
  512. package/dist/sandbox/providers.d.ts +19 -0
  513. package/dist/sandbox/providers.js +38 -0
  514. package/dist/sandbox/sandbox.module.d.ts +8 -0
  515. package/dist/sandbox/sandbox.module.js +30 -0
  516. package/dist/sandbox/sandbox.service.d.ts +24 -29
  517. package/dist/sandbox/sandbox.service.js +106 -75
  518. package/dist/skills/catalog.d.ts +37 -24
  519. package/dist/skills/catalog.js +100 -57
  520. package/dist/skills/changes.controller.d.ts +4 -4
  521. package/dist/skills/changes.controller.js +15 -9
  522. package/dist/skills/changes.service.d.ts +30 -20
  523. package/dist/skills/changes.service.js +425 -367
  524. package/dist/skills/invocable.controller.d.ts +1 -1
  525. package/dist/skills/invocable.controller.js +8 -5
  526. package/dist/skills/invocation-keys.d.ts +1 -1
  527. package/dist/skills/invocation-keys.js +1 -1
  528. package/dist/skills/invoke.d.ts +17 -16
  529. package/dist/skills/invoke.js +53 -21
  530. package/dist/skills/skills.controller.d.ts +1 -1
  531. package/dist/skills/skills.controller.js +11 -6
  532. package/dist/skills/skills.module.d.ts +6 -0
  533. package/dist/skills/skills.module.js +30 -0
  534. package/dist/skills/skills.service.d.ts +47 -30
  535. package/dist/skills/skills.service.js +221 -158
  536. package/dist/storage/job-ids.d.ts +6 -0
  537. package/dist/storage/job-ids.js +6 -0
  538. package/dist/storage/purge.d.ts +22 -7
  539. package/dist/storage/purge.js +55 -3
  540. package/dist/storage/storage.module.d.ts +6 -0
  541. package/dist/storage/storage.module.js +23 -0
  542. package/dist/storage/storage.service.d.ts +18 -4
  543. package/dist/storage/storage.service.js +44 -3
  544. package/dist/tools/approvals.controller.d.ts +1 -1
  545. package/dist/tools/approvals.controller.js +12 -8
  546. package/dist/tools/approvals.service.d.ts +33 -25
  547. package/dist/tools/approvals.service.js +343 -259
  548. package/dist/tools/breaker.d.ts +2 -2
  549. package/dist/tools/breaker.js +21 -3
  550. package/dist/tools/builtin-names.d.ts +73 -0
  551. package/dist/tools/builtin-names.js +116 -0
  552. package/dist/tools/builtins/agent.d.ts +7 -7
  553. package/dist/tools/builtins/agent.js +7 -11
  554. package/dist/tools/builtins/ask-user.d.ts +3 -3
  555. package/dist/tools/builtins/ask-user.js +3 -3
  556. package/dist/tools/builtins/builtin-tools.d.ts +21 -0
  557. package/dist/tools/builtins/builtin-tools.js +80 -0
  558. package/dist/tools/builtins/read-tool-output.d.ts +3 -3
  559. package/dist/tools/builtins/read-tool-output.js +3 -3
  560. package/dist/tools/builtins/sandbox/bash.d.ts +5 -5
  561. package/dist/tools/builtins/sandbox/bash.js +33 -30
  562. package/dist/tools/builtins/sandbox/common.d.ts +5 -4
  563. package/dist/tools/builtins/sandbox/common.js +2 -2
  564. package/dist/tools/builtins/sandbox/deliver.d.ts +1 -1
  565. package/dist/tools/builtins/sandbox/deliver.js +13 -13
  566. package/dist/tools/builtins/sandbox/edit.d.ts +1 -1
  567. package/dist/tools/builtins/sandbox/edit.js +42 -31
  568. package/dist/tools/builtins/sandbox/file-state.d.ts +34 -0
  569. package/dist/tools/builtins/sandbox/file-state.js +34 -0
  570. package/dist/tools/builtins/sandbox/glob-match.d.ts +1 -1
  571. package/dist/tools/builtins/sandbox/glob-match.js +1 -1
  572. package/dist/tools/builtins/sandbox/glob.d.ts +1 -1
  573. package/dist/tools/builtins/sandbox/glob.js +6 -6
  574. package/dist/tools/builtins/sandbox/grep.d.ts +7 -4
  575. package/dist/tools/builtins/sandbox/grep.js +149 -32
  576. package/dist/tools/builtins/sandbox/index.d.ts +1 -1
  577. package/dist/tools/builtins/sandbox/index.js +1 -1
  578. package/dist/tools/builtins/sandbox/read.d.ts +2 -2
  579. package/dist/tools/builtins/sandbox/read.js +22 -15
  580. package/dist/tools/builtins/sandbox/write.d.ts +1 -1
  581. package/dist/tools/builtins/sandbox/write.js +38 -34
  582. package/dist/tools/builtins/skill-load.d.ts +6 -6
  583. package/dist/tools/builtins/skill-load.js +33 -17
  584. package/dist/tools/builtins/skill-write.d.ts +4 -4
  585. package/dist/tools/builtins/skill-write.js +10 -10
  586. package/dist/tools/builtins/tool-search.d.ts +13 -9
  587. package/dist/tools/builtins/tool-search.js +25 -14
  588. package/dist/tools/canonical-json.d.ts +6 -0
  589. package/dist/tools/canonical-json.js +16 -0
  590. package/dist/tools/connector-content.controller.d.ts +1 -1
  591. package/dist/tools/connector-content.controller.js +11 -6
  592. package/dist/tools/connector-content.d.ts +12 -15
  593. package/dist/tools/connector-content.js +53 -18
  594. package/dist/tools/connectors.controller.d.ts +1 -1
  595. package/dist/tools/connectors.controller.js +21 -10
  596. package/dist/tools/connectors.service.d.ts +31 -13
  597. package/dist/tools/connectors.service.js +438 -348
  598. package/dist/tools/credentials.d.ts +17 -20
  599. package/dist/tools/credentials.js +55 -34
  600. package/dist/tools/display-names.d.ts +9 -0
  601. package/dist/tools/display-names.js +24 -0
  602. package/dist/tools/drift.d.ts +29 -41
  603. package/dist/tools/drift.js +116 -84
  604. package/dist/tools/elicitation.js +1 -1
  605. package/dist/tools/info.d.ts +32 -13
  606. package/dist/tools/info.js +88 -39
  607. package/dist/tools/job-ids.d.ts +13 -0
  608. package/dist/tools/job-ids.js +15 -0
  609. package/dist/tools/jobs.d.ts +24 -0
  610. package/dist/tools/jobs.js +69 -0
  611. package/dist/tools/legacy-data.d.ts +34 -0
  612. package/dist/tools/legacy-data.js +76 -0
  613. package/dist/tools/legacy-keys.d.ts +51 -0
  614. package/dist/tools/legacy-keys.js +115 -0
  615. package/dist/tools/naming.d.ts +1 -5
  616. package/dist/tools/naming.js +1 -7
  617. package/dist/tools/oauth/flow-paths.d.ts +16 -0
  618. package/dist/tools/oauth/flow-paths.js +38 -0
  619. package/dist/tools/oauth/flow.d.ts +30 -30
  620. package/dist/tools/oauth/flow.js +109 -81
  621. package/dist/tools/oauth/oauth.controller.d.ts +3 -3
  622. package/dist/tools/oauth/oauth.controller.js +12 -9
  623. package/dist/tools/oauth/tokens.d.ts +11 -3
  624. package/dist/tools/oauth/tokens.js +15 -14
  625. package/dist/tools/outputs.d.ts +13 -4
  626. package/dist/tools/outputs.js +48 -4
  627. package/dist/tools/pipeline.d.ts +72 -50
  628. package/dist/tools/pipeline.js +239 -100
  629. package/dist/tools/policy.d.ts +3 -16
  630. package/dist/tools/policy.js +13 -19
  631. package/dist/tools/questions.controller.d.ts +2 -2
  632. package/dist/tools/questions.controller.js +9 -6
  633. package/dist/tools/questions.service.d.ts +26 -25
  634. package/dist/tools/questions.service.js +201 -142
  635. package/dist/tools/registry.d.ts +43 -38
  636. package/dist/tools/registry.js +100 -72
  637. package/dist/tools/resources.d.ts +1 -1
  638. package/dist/tools/resources.js +1 -1
  639. package/dist/tools/specs.d.ts +5 -4
  640. package/dist/tools/specs.js +3 -1
  641. package/dist/tools/tools.module.d.ts +10 -0
  642. package/dist/tools/tools.module.js +91 -0
  643. package/dist/ui/call-extension.d.ts +16 -0
  644. package/dist/ui/call-extension.js +38 -0
  645. package/dist/ui/embed-token.d.ts +9 -5
  646. package/dist/ui/embed-token.js +34 -6
  647. package/dist/ui/ui-stream.d.ts +22 -17
  648. package/dist/ui/ui-stream.js +72 -12
  649. package/dist/ui/ui.module.d.ts +7 -0
  650. package/dist/ui/ui.module.js +28 -0
  651. package/dist/ui/views.controller.d.ts +14 -12
  652. package/dist/ui/views.controller.js +32 -25
  653. package/dist/ui/views.d.ts +9 -57
  654. package/dist/ui/views.js +43 -45
  655. package/package.json +10 -3
  656. package/src/migrations/0063_tool_keys_claude_code.sql +220 -0
  657. package/dist/http/health.controller.d.ts +0 -26
  658. package/dist/http/health.controller.js +0 -79
  659. package/dist/http/tokens.d.ts +0 -131
  660. package/dist/http/tokens.js +0 -131
  661. package/dist/http/zod.pipe.d.ts +0 -8
  662. package/dist/http/zod.pipe.js +0 -14
  663. package/dist/identity/rate-limit.d.ts +0 -55
  664. package/dist/identity/rate-limit.js +0 -121
  665. package/dist/sandbox/lifecycle.d.ts +0 -21
  666. package/dist/sandbox/lifecycle.js +0 -68
  667. package/dist/tools/builtins/sandbox/names.d.ts +0 -7
  668. package/dist/tools/builtins/sandbox/names.js +0 -20
  669. /package/dist/http/{gateway.module.d.ts → gateway-routes.d.ts} +0 -0
  670. /package/dist/http/{gateway.module.js → gateway-routes.js} +0 -0
@@ -1,11 +1,16 @@
1
1
  import { type PluginExtensionSection } from "@capybara-hq/plugin-sdk";
2
- import type { KernelConfig } from "../config/schema.js";
3
- import type { KernelDb } from "../db/kernel-schema.js";
2
+ import type { core } from "zod";
3
+ import type { Keyring } from "../ctx/secrets.js";
4
+ import { EnterpriseAdminLock } from "../identity/enterprise-admin.js";
5
+ import { KernelConfigService } from "../infra/config/kernel-config.service.js";
6
+ import { KernelDb } from "../infra/database/kernel-db.js";
7
+ import { TransactionHost } from "../infra/database/transaction-host.js";
4
8
  import { type ProvenanceResult } from "../packages/provenance.js";
5
- import type { ExtensionBlobs } from "./blobs.js";
9
+ import { ExtensionApprovals } from "./approvals.js";
10
+ import { ExtensionBlobs } from "./blobs.js";
6
11
  import { migrationWarnings, type PackageWarning, type PermissionGroup, type PermissionItem } from "./permission-view.js";
12
+ import { ExtensionRegistry } from "./registry.js";
7
13
  export { migrationWarnings, type PackageWarning };
8
- import type { ExtensionSource } from "./sources.js";
9
14
  /** 上传 / 拉取一个包后的审阅结果(权限按静态清单与迁移 SQL 计算,不执行插件代码)。 */
10
15
  export interface PackageReview {
11
16
  sha256: string;
@@ -69,19 +74,36 @@ export interface IngestSource {
69
74
  source: "npm" | "file" | "catalog" | "bootstrap";
70
75
  ref: string;
71
76
  }
72
- export interface ExtensionInstallsDeps {
73
- db: KernelDb;
74
- blobs: ExtensionBlobs;
75
- config: () => KernelConfig;
76
- /** 配置声明的插件名 → 来源(安装包不能与它们重名,C15)。 */
77
- declared: () => ReadonlyMap<string, ExtensionSource>;
78
- /** npm 下载的总时限(毫秒),默认 120s。 */
79
- npmTimeoutMs?: number;
80
- }
81
- /** 插件安装记录与包的导入(上传文件、npm)。本身无状态,多副本共用。 */
77
+ /**
78
+ * Extension install records and package imports (uploaded file, npm), and the deployment's desired
79
+ * state the replicas converge to: the install records desired enabled and each extension's
80
+ * effective deployment config (the startup config completed by the fields stored in PG). Stateless,
81
+ * shared by every replica; the extension host reads the desired state from here (one way).
82
+ */
82
83
  export declare class ExtensionInstalls {
83
- private readonly d;
84
- constructor(d: ExtensionInstallsDeps);
84
+ private readonly db;
85
+ readonly txHost: TransactionHost;
86
+ /** The enterprise admin lock (identity/enterprise-admin.ts): joins the transaction. */
87
+ private readonly adminLock;
88
+ private readonly blobs;
89
+ private readonly approvals;
90
+ /** The config-declared extension names (an install cannot take them, C15). */
91
+ private readonly registry;
92
+ private readonly config;
93
+ private readonly keyring;
94
+ constructor(db: KernelDb, txHost: TransactionHost,
95
+ /** The enterprise admin lock (identity/enterprise-admin.ts): joins the transaction. */
96
+ adminLock: EnterpriseAdminLock, blobs: ExtensionBlobs, approvals: ExtensionApprovals,
97
+ /** The config-declared extension names (an install cannot take them, C15). */
98
+ registry: ExtensionRegistry, config: KernelConfigService, keyring: Keyring);
99
+ /**
100
+ * An extension's effective deployment config, not validated yet (C10): the startup config
101
+ * (`fileValue`, file / Nacos merged with env) completed by the fields stored in PG; merged by
102
+ * the fields of `schema` when it is given.
103
+ */
104
+ effectiveDeploymentConfig(plugin: string, fileValue: unknown, schema?: core.$ZodType): Promise<unknown>;
105
+ /** Every install record's extension name (any desired state). */
106
+ installedNames(): Promise<string[]>;
85
107
  /**
86
108
  * Validates and stores one package and returns the review; audits `extension.package_uploaded`.
87
109
  * Only stores: no install, no desired state change (T14).
@@ -97,6 +119,17 @@ export declare class ExtensionInstalls {
97
119
  store?: "object" | "pg";
98
120
  expectPackageName?: string;
99
121
  }): Promise<PackageReview>;
122
+ /**
123
+ * The enterprise admin re-check under its lock, in a transaction of its own (`requires_new`, as
124
+ * before the conversion): the package write that follows never runs inside a caller's
125
+ * transaction holding the lock.
126
+ */
127
+ private authorize;
128
+ /**
129
+ * The `extension.package_uploaded` audit, re-checking the actor under the lock, committed on its
130
+ * own (`requires_new`): the stored package it records is not rolled back by a caller either.
131
+ */
132
+ private auditUpload;
100
133
  /** 上传的 tgz(来源 `file`)。 */
101
134
  ingestFile(actor: string | null, bytes: Uint8Array, opts?: {
102
135
  actorTokenId?: string;
@@ -1,19 +1,80 @@
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 { SDK_VERSION } from "@capybara-hq/plugin-sdk";
11
+ import { Inject, Injectable } from "@nestjs/common";
12
+ import { configFields } from "../config/fields.js";
2
13
  import { ApiError } from "../errors.js";
3
14
  import { audit } from "../identity/audit.js";
4
- import { lockEnterpriseAdminsAndAuthorize } from "../identity/enterprise-admin.js";
15
+ import { EnterpriseAdminLock } from "../identity/enterprise-admin.js";
16
+ import { KernelConfigService } from "../infra/config/kernel-config.service.js";
17
+ import { KernelDb } from "../infra/database/kernel-db.js";
18
+ import { TransactionHost } from "../infra/database/transaction-host.js";
19
+ import { Transactional } from "../infra/database/transactional.decorator.js";
20
+ import { KEYRING } from "../infra/tokens.js";
5
21
  import { fetchNpmPackage, IntegrityMismatchError, NpmFetchError, PackageTooLargeError, } from "../packages/npm.js";
6
22
  import { fetchProvenance, PROVENANCE_TIMEOUT_MS, } from "../packages/provenance.js";
7
23
  import { ExtensionApprovals } from "./approvals.js";
24
+ import { ExtensionBlobs } from "./blobs.js";
25
+ import { mergeDeploymentConfig, readStoredDeploymentConfig, schemaFields, secretPathsOf, } from "./deployment-config-store.js";
8
26
  import { ExtensionPackageError, extensionPackageApiError, permissionSetOfPackage, readExtensionPackage, } from "./package.js";
9
27
  import { diffPermissions } from "./permission-set.js";
10
28
  import { migrationWarnings, permissionGroups, permissionKeyItems, reviewHash, } from "./permission-view.js";
29
+ import { ExtensionRegistry } from "./registry.js";
11
30
  export { migrationWarnings };
12
- /** 插件安装记录与包的导入(上传文件、npm)。本身无状态,多副本共用。 */
13
- export class ExtensionInstalls {
14
- d;
15
- constructor(d) {
16
- this.d = d;
31
+ /** The npm download time limit (ms). */
32
+ const NPM_TIMEOUT_MS = 120_000;
33
+ /**
34
+ * Extension install records and package imports (uploaded file, npm), and the deployment's desired
35
+ * state the replicas converge to: the install records desired enabled and each extension's
36
+ * effective deployment config (the startup config completed by the fields stored in PG). Stateless,
37
+ * shared by every replica; the extension host reads the desired state from here (one way).
38
+ */
39
+ let ExtensionInstalls = class ExtensionInstalls {
40
+ db;
41
+ txHost;
42
+ adminLock;
43
+ blobs;
44
+ approvals;
45
+ registry;
46
+ config;
47
+ keyring;
48
+ constructor(db, txHost,
49
+ /** The enterprise admin lock (identity/enterprise-admin.ts): joins the transaction. */
50
+ adminLock, blobs, approvals,
51
+ /** The config-declared extension names (an install cannot take them, C15). */
52
+ registry, config, keyring) {
53
+ this.db = db;
54
+ this.txHost = txHost;
55
+ this.adminLock = adminLock;
56
+ this.blobs = blobs;
57
+ this.approvals = approvals;
58
+ this.registry = registry;
59
+ this.config = config;
60
+ this.keyring = keyring;
61
+ }
62
+ /**
63
+ * An extension's effective deployment config, not validated yet (C10): the startup config
64
+ * (`fileValue`, file / Nacos merged with env) completed by the fields stored in PG; merged by
65
+ * the fields of `schema` when it is given.
66
+ */
67
+ async effectiveDeploymentConfig(plugin, fileValue, schema) {
68
+ const stored = await readStoredDeploymentConfig(this.db.db, this.keyring, plugin, {
69
+ secretPaths: secretPathsOf(schemaFields(schema)),
70
+ });
71
+ const fields = schema ? configFields(schema).map((f) => f.path) : undefined;
72
+ return mergeDeploymentConfig(stored, fileValue, fields);
73
+ }
74
+ /** Every install record's extension name (any desired state). */
75
+ async installedNames() {
76
+ const rows = await this.db.selectFrom("extension_installs").select("name").execute();
77
+ return rows.map((r) => r.name);
17
78
  }
18
79
  /**
19
80
  * Validates and stores one package and returns the review; audits `extension.package_uploaded`.
@@ -26,7 +87,7 @@ export class ExtensionInstalls {
26
87
  * `actor` null means the CLI (no enterprise admin re-check, audit without an actor).
27
88
  */
28
89
  async ingest(actor, bytes, src, opts = {}) {
29
- const maxBytes = this.d.config().packages.maxBytes;
90
+ const maxBytes = this.config.get().packages.maxBytes;
30
91
  if (bytes.byteLength > maxBytes) {
31
92
  throw new ApiError("extension.package_too_large", `The extension package is larger than ${maxBytes} bytes`);
32
93
  }
@@ -47,11 +108,11 @@ export class ExtensionInstalls {
47
108
  issue,
48
109
  ]);
49
110
  }
50
- const declared = this.d.declared().get(m.name);
111
+ const declared = this.registry.declared().get(m.name);
51
112
  if (declared === "config") {
52
113
  throw new ApiError("extension.config_declared", `Extension ${m.name} is declared in the startup config (extensions); remove it there before installing it as a package`);
53
114
  }
54
- const installed = await this.d.db
115
+ const installed = await this.db
55
116
  .selectFrom("extension_installs")
56
117
  .innerJoin("extension_packages", "extension_packages.sha256", "extension_installs.sha256")
57
118
  .select("extension_packages.package_name")
@@ -61,28 +122,22 @@ export class ExtensionInstalls {
61
122
  throw new ApiError("extension.name_conflict", `Extension ${m.name} is already installed from package ${installed.package_name}; package ${packageName} uses the same extension name`);
62
123
  }
63
124
  // 写包之前在锁内复核发起人仍是企业管理员(守卫读到的身份可能已过期);审计在写完后同样复核
64
- if (actor !== null) {
65
- await this.d.db.transaction().execute((trx) => lockEnterpriseAdminsAndAuthorize(trx, actor));
66
- }
67
- await this.d.blobs.put(pkg, bytes, {
125
+ if (actor !== null)
126
+ await this.authorize(actor);
127
+ await this.blobs.put(pkg, bytes, {
68
128
  source: src.source,
69
129
  ref: src.ref,
70
130
  actor,
71
131
  ...(opts.store !== undefined && { store: opts.store }),
72
132
  });
73
- await this.d.db.transaction().execute(async (trx) => {
74
- if (actor !== null)
75
- await lockEnterpriseAdminsAndAuthorize(trx, actor);
76
- await audit(trx, {
77
- ...(actor !== null && { actorAccountId: actor }),
78
- ...(opts.actorTokenId !== undefined && { actorTokenId: opts.actorTokenId }),
79
- action: "extension.package_uploaded",
80
- target: m.name,
81
- detail: { name: m.name, version: m.version, sha256: pkg.sha256, source: src.source },
82
- });
133
+ await this.auditUpload(actor, opts.actorTokenId, {
134
+ name: m.name,
135
+ version: m.version,
136
+ sha256: pkg.sha256,
137
+ source: src.source,
83
138
  });
84
139
  const set = permissionSetOfPackage(pkg);
85
- const snapshot = (await new ExtensionApprovals(this.d.db).all()).get(m.name);
140
+ const snapshot = (await this.approvals.all()).get(m.name);
86
141
  const { added, removed } = diffPermissions(snapshot?.permissions, set);
87
142
  const warnings = migrationWarnings(pkg.migrationSql, m.name);
88
143
  return {
@@ -97,6 +152,29 @@ export class ExtensionInstalls {
97
152
  warnings,
98
153
  };
99
154
  }
155
+ /**
156
+ * The enterprise admin re-check under its lock, in a transaction of its own (`requires_new`, as
157
+ * before the conversion): the package write that follows never runs inside a caller's
158
+ * transaction holding the lock.
159
+ */
160
+ async authorize(actor) {
161
+ await this.adminLock.lockAndAuthorize(actor);
162
+ }
163
+ /**
164
+ * The `extension.package_uploaded` audit, re-checking the actor under the lock, committed on its
165
+ * own (`requires_new`): the stored package it records is not rolled back by a caller either.
166
+ */
167
+ async auditUpload(actor, actorTokenId, detail) {
168
+ if (actor !== null)
169
+ await this.adminLock.lockAndAuthorize(actor);
170
+ await audit(this.db.db, {
171
+ ...(actor !== null && { actorAccountId: actor }),
172
+ ...(actorTokenId !== undefined && { actorTokenId }),
173
+ action: "extension.package_uploaded",
174
+ target: detail.name,
175
+ detail,
176
+ });
177
+ }
100
178
  /** 上传的 tgz(来源 `file`)。 */
101
179
  ingestFile(actor, bytes, opts = {}) {
102
180
  return this.ingest(actor, bytes, { source: "file", ref: "upload" }, opts);
@@ -108,13 +186,13 @@ export class ExtensionInstalls {
108
186
  * too.
109
187
  */
110
188
  async fetchNpm(input, signal) {
111
- const c = this.d.config();
189
+ const c = this.config.get();
112
190
  const cfg = {
113
191
  registry: c.packages.npmRegistry,
114
192
  maxBytes: c.packages.maxBytes,
115
193
  ...(c.packages.npmToken !== undefined && { token: c.packages.npmToken }),
116
194
  };
117
- const timeout = AbortSignal.timeout(this.d.npmTimeoutMs ?? 120_000);
195
+ const timeout = AbortSignal.timeout(NPM_TIMEOUT_MS);
118
196
  try {
119
197
  return await fetchNpmPackage(cfg, input.package, input.version, signal ? AbortSignal.any([signal, timeout]) : timeout);
120
198
  }
@@ -149,7 +227,7 @@ export class ExtensionInstalls {
149
227
  * failure is `{ checked: false, reason }`. `integrity` ties the statement to the tarball.
150
228
  */
151
229
  fetchProvenance(input, signal) {
152
- const c = this.d.config();
230
+ const c = this.config.get();
153
231
  const cfg = {
154
232
  registry: c.packages.npmRegistry,
155
233
  maxBytes: c.packages.maxBytes,
@@ -159,14 +237,14 @@ export class ExtensionInstalls {
159
237
  return fetchProvenance(cfg, input.package, input.version, signal ? AbortSignal.any([signal, timeout]) : timeout, input.integrity !== undefined ? { integrity: input.integrity } : {});
160
238
  }
161
239
  async fetchVerified(input, signal, codes) {
162
- const c = this.d.config();
240
+ const c = this.config.get();
163
241
  const cfg = {
164
242
  registry: c.packages.npmRegistry,
165
243
  maxBytes: c.packages.maxBytes,
166
244
  allowInsecureLoopback: c.marketplaces.allowInsecureLoopback,
167
245
  ...(c.packages.npmToken !== undefined && { token: c.packages.npmToken }),
168
246
  };
169
- const timeout = AbortSignal.timeout(this.d.npmTimeoutMs ?? 120_000);
247
+ const timeout = AbortSignal.timeout(NPM_TIMEOUT_MS);
170
248
  try {
171
249
  return await fetchNpmPackage(cfg, input.package, input.version, signal ? AbortSignal.any([signal, timeout]) : timeout, {
172
250
  expectedIntegrity: input.integrity,
@@ -201,7 +279,7 @@ export class ExtensionInstalls {
201
279
  }
202
280
  /** 全部安装记录(按名字)。 */
203
281
  async list() {
204
- const rows = await this.d.db
282
+ const rows = await this.db
205
283
  .selectFrom("extension_installs")
206
284
  .innerJoin("extension_packages", "extension_packages.sha256", "extension_installs.sha256")
207
285
  .selectAll("extension_installs")
@@ -225,7 +303,7 @@ export class ExtensionInstalls {
225
303
  }
226
304
  /** Install records desired enabled, with their reviewed extension sections (by name). */
227
305
  async desired() {
228
- const rows = await this.d.db
306
+ const rows = await this.db
229
307
  .selectFrom("extension_installs")
230
308
  .innerJoin("extension_packages", "extension_packages.sha256", "extension_installs.sha256")
231
309
  .select([
@@ -250,4 +328,22 @@ export class ExtensionInstalls {
250
328
  section: r.section,
251
329
  }));
252
330
  }
253
- }
331
+ };
332
+ __decorate([
333
+ Transactional({ propagation: "requires_new" })
334
+ ], ExtensionInstalls.prototype, "authorize", null);
335
+ __decorate([
336
+ Transactional({ propagation: "requires_new" })
337
+ ], ExtensionInstalls.prototype, "auditUpload", null);
338
+ ExtensionInstalls = __decorate([
339
+ Injectable(),
340
+ __param(0, Inject(KernelDb)),
341
+ __param(1, Inject(TransactionHost)),
342
+ __param(2, Inject(EnterpriseAdminLock)),
343
+ __param(3, Inject(ExtensionBlobs)),
344
+ __param(4, Inject(ExtensionApprovals)),
345
+ __param(5, Inject(ExtensionRegistry)),
346
+ __param(6, Inject(KernelConfigService)),
347
+ __param(7, Inject(KEYRING))
348
+ ], ExtensionInstalls);
349
+ export { ExtensionInstalls };
@@ -0,0 +1,6 @@
1
+ /**
2
+ * The maintenance job scheduler ids the plugins reconcile had before becoming `@LockedCron` /
3
+ * `@LockedInterval` jobs (retired at worker start, `RETIRED_SCHEDULER_IDS`). A leaf module.
4
+ */
5
+ /** The BullMQ repeatable scheduler the job had before it became `@LockedInterval` (retired). */
6
+ export declare const PLUGINS_RECONCILE_SCHEDULER_ID = "plugins-reconcile-every";
@@ -0,0 +1,6 @@
1
+ /**
2
+ * The maintenance job scheduler ids the plugins reconcile had before becoming `@LockedCron` /
3
+ * `@LockedInterval` jobs (retired at worker start, `RETIRED_SCHEDULER_IDS`). A leaf module.
4
+ */
5
+ /** The BullMQ repeatable scheduler the job had before it became `@LockedInterval` (retired). */
6
+ export const PLUGINS_RECONCILE_SCHEDULER_ID = "plugins-reconcile-every";
@@ -0,0 +1,18 @@
1
+ /** The kernel bus topics and the job of the extension lifecycle (a leaf module: no imports). */
2
+ /**
3
+ * 插件期望状态 / 快照变了(kernel bus 主题,频道 `cap:kernel:plugins.changed`,payload `{ plugin }`)。
4
+ * 后台、CLI 写完 PG 后发布;各副本据此 reconcile,并作废路由闸门的名字缓存。
5
+ */
6
+ export declare const PLUGINS_CHANGED_TOPIC = "plugins.changed";
7
+ /** 周期兜底(kernel bus 主题 `plugins.reconcile`,payload `{}`):维护任务 `plugins-reconcile` 发布。 */
8
+ export declare const PLUGINS_RECONCILE_TOPIC = "plugins.reconcile";
9
+ /** The `@LockedInterval` job that publishes `plugins.reconcile` every `extensionHost.reconcileIntervalSeconds`. */
10
+ export declare const PLUGINS_RECONCILE_JOB = "plugins-reconcile";
11
+ /** 副本行心跳超过这么多个 reconcile 周期的副本不计入(C16;读状态的一方据此筛选)。 */
12
+ export declare const STALE_RECONCILE_PERIODS = 3;
13
+ /**
14
+ * 部署配置保存之后(kernel bus 主题,频道 `cap:kernel:plugin-deployment-config`,payload `{ plugin }`):
15
+ * 各副本重读并校验——只改了 hot 字段就地替换,改了非 hot 字段重新加载实例,不合法保持当前值并告警;
16
+ * 插件此刻待配置时,下一次 reconcile 加载它。
17
+ */
18
+ export declare const PLUGIN_DEPLOYMENT_CONFIG_TOPIC = "plugin-deployment-config";
@@ -0,0 +1,18 @@
1
+ /** The kernel bus topics and the job of the extension lifecycle (a leaf module: no imports). */
2
+ /**
3
+ * 插件期望状态 / 快照变了(kernel bus 主题,频道 `cap:kernel:plugins.changed`,payload `{ plugin }`)。
4
+ * 后台、CLI 写完 PG 后发布;各副本据此 reconcile,并作废路由闸门的名字缓存。
5
+ */
6
+ export const PLUGINS_CHANGED_TOPIC = "plugins.changed";
7
+ /** 周期兜底(kernel bus 主题 `plugins.reconcile`,payload `{}`):维护任务 `plugins-reconcile` 发布。 */
8
+ export const PLUGINS_RECONCILE_TOPIC = "plugins.reconcile";
9
+ /** The `@LockedInterval` job that publishes `plugins.reconcile` every `extensionHost.reconcileIntervalSeconds`. */
10
+ export const PLUGINS_RECONCILE_JOB = "plugins-reconcile";
11
+ /** 副本行心跳超过这么多个 reconcile 周期的副本不计入(C16;读状态的一方据此筛选)。 */
12
+ export const STALE_RECONCILE_PERIODS = 3;
13
+ /**
14
+ * 部署配置保存之后(kernel bus 主题,频道 `cap:kernel:plugin-deployment-config`,payload `{ plugin }`):
15
+ * 各副本重读并校验——只改了 hot 字段就地替换,改了非 hot 字段重新加载实例,不合法保持当前值并告警;
16
+ * 插件此刻待配置时,下一次 reconcile 加载它。
17
+ */
18
+ export const PLUGIN_DEPLOYMENT_CONFIG_TOPIC = "plugin-deployment-config";
@@ -1,49 +1,13 @@
1
- import type { Logger } from "@capybara-hq/plugin-sdk";
2
- import type { ExtensionInstance } from "./instance.js";
1
+ import type { ExtensionContext } from "@capybara-hq/plugin-sdk";
2
+ import { KernelConfigService } from "../infra/config/kernel-config.service.js";
3
+ import { LockService } from "../infra/lock/lock.service.js";
4
+ import type { KernelLogger } from "../log.js";
5
+ import { ExtensionHost } from "./host.js";
6
+ import { ExtensionInstalls } from "./installs.js";
7
+ import { PLUGINS_CHANGED_TOPIC, PLUGINS_RECONCILE_JOB, PLUGINS_RECONCILE_TOPIC, STALE_RECONCILE_PERIODS } from "./lifecycle-topics.js";
3
8
  import { PLUGINS_MIGRATED_TOPIC } from "./migrate-lock.js";
4
- import type { ReplicaStatusStore } from "./sources.js";
5
- /**
6
- * 插件期望状态 / 快照变了(kernel bus 主题,频道 `cap:kernel:plugins.changed`,payload `{ plugin }`)。
7
- * 后台、CLI 写完 PG 后发布;各副本据此 reconcile,并作废路由闸门的名字缓存。
8
- */
9
- export declare const PLUGINS_CHANGED_TOPIC = "plugins.changed";
10
- /** 周期兜底(kernel bus 主题 `plugins.reconcile`,payload `{}`):维护任务 `plugins-reconcile` 发布。 */
11
- export declare const PLUGINS_RECONCILE_TOPIC = "plugins.reconcile";
12
- export { PLUGINS_MIGRATED_TOPIC };
13
- /** 维护任务:每 `extensionHost.reconcileIntervalSeconds` 秒发布一次 `plugins.reconcile`(任务名与 scheduler id 不含 `:`)。 */
14
- export declare const PLUGINS_RECONCILE_JOB = "plugins-reconcile";
15
- export declare const PLUGINS_RECONCILE_SCHEDULER_ID = "plugins-reconcile-every";
16
- /** 副本行心跳超过这么多个 reconcile 周期的副本不计入(C16;读状态的一方据此筛选)。 */
17
- export declare const STALE_RECONCILE_PERIODS = 3;
18
- /** The host operations {@link ExtensionLifecycle} needs. */
19
- export interface LifecycleHost {
20
- /** Converges this replica to the deployment's desired state (serialized; see `ExtensionHost.converge`). */
21
- converge(): Promise<void>;
22
- /** 用同一个包重新 setup(配置的非 hot 改动、依赖方联动)。 */
23
- reload(name: string): Promise<ExtensionInstance>;
24
- /**
25
- * 部署配置保存后本副本重读并校验(hot 就地替换、非 hot 重新加载、不合法保持当前值);
26
- * 插件此刻没在本副本生效时返回 `not_loaded`(待配置的由随后的 reconcile 加载)。
27
- */
28
- applyDeploymentConfig(name: string): Promise<string>;
29
- /** 在本副本生效、声明了部署级配置的插件(周期 reconcile 据此补上丢了消息的配置改动)。 */
30
- configurablePlugins(): string[];
31
- /** 作废路由闸门的安装记录名字缓存。 */
32
- invalidateKnownNames(): void;
33
- /** 内置与配置声明的插件名。 */
34
- declared(): ReadonlyMap<string, unknown>;
35
- }
36
- export interface ExtensionLifecycleDeps {
37
- host: LifecycleHost;
38
- bus: {
39
- subscribe(topic: string, handler: (payload: unknown) => void): Promise<() => Promise<void>>;
40
- };
41
- status: ReplicaStatusStore;
42
- /** 安装记录里的全部插件名(任何期望状态;清理本副本已不认识的状态行)。 */
43
- installedNames(): Promise<string[]>;
44
- reconcileIntervalSeconds(): number;
45
- log: Pick<Logger, "info" | "warn" | "error">;
46
- }
9
+ import { ReplicaStatusStore } from "./sources.js";
10
+ export { PLUGINS_CHANGED_TOPIC, PLUGINS_MIGRATED_TOPIC, PLUGINS_RECONCILE_JOB, PLUGINS_RECONCILE_TOPIC, STALE_RECONCILE_PERIODS, };
47
11
  /**
48
12
  * 每副本一个:把本副本的插件加载状态收敛到 PG 期望状态(C16)。
49
13
  * 触发来源:bus `kernel.plugins.changed`(后台 / CLI 改了期望状态或快照)、`kernel.plugins.reconcile`(维护任务周期兜底,
@@ -53,12 +17,22 @@ export interface ExtensionLifecycleDeps {
53
17
  * 进程内只有排队用的 Promise(不是跨副本状态)。
54
18
  */
55
19
  export declare class ExtensionLifecycle {
56
- private readonly d;
20
+ private readonly host;
21
+ private readonly bus;
22
+ private readonly status;
23
+ /** Every install record's name (any desired state): prunes status rows this replica no longer knows. */
24
+ private readonly installs;
25
+ private readonly config;
26
+ private readonly log;
57
27
  private running;
58
28
  private queued;
59
29
  private unsubs;
30
+ /** {@link start} was called (the kernel's start sequence; never in the CLI, which loads nothing). */
31
+ private started;
60
32
  private stopped;
61
- constructor(d: ExtensionLifecycleDeps);
33
+ constructor(host: ExtensionHost, bus: Pick<ExtensionContext["bus"], "publish" | "subscribe">, status: ReplicaStatusStore,
34
+ /** Every install record's name (any desired state): prunes status rows this replica no longer knows. */
35
+ installs: ExtensionInstalls, config: KernelConfigService, log: KernelLogger);
62
36
  /** 订阅三个主题(订阅失败只记 error:周期任务的消息同样收不到时,下次启动再来)。 */
63
37
  start(): Promise<void>;
64
38
  /**
@@ -78,3 +52,17 @@ export declare class ExtensionLifecycle {
78
52
  private trigger;
79
53
  private run;
80
54
  }
55
+ /**
56
+ * The periodic reconcile fallback (job `plugins-reconcile`, once per
57
+ * `extensionHost.reconcileIntervalSeconds` across replicas): publishes `kernel.plugins.reconcile`,
58
+ * so every replica converges even when it lost a message. A worker-role job (`WorkerModule`); every
59
+ * replica's {@link ExtensionLifecycle} subscribes to the topic.
60
+ */
61
+ export declare class PluginsReconcileJob {
62
+ private readonly bus;
63
+ readonly config: KernelConfigService;
64
+ readonly lockService: LockService;
65
+ readonly log: KernelLogger;
66
+ constructor(bus: Pick<ExtensionContext["bus"], "publish">, config: KernelConfigService, lockService: LockService, log: KernelLogger);
67
+ run(): Promise<void>;
68
+ }