@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,9 +1,28 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ 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";
2
12
  import { sql } from "kysely";
3
13
  import { ApiError } from "../errors.js";
4
- import { lockEnterpriseAdminsAndAuthorize } from "../identity/enterprise-admin.js";
14
+ import { EnterpriseAdminLock } from "../identity/enterprise-admin.js";
15
+ import { KernelConfigService } from "../infra/config/kernel-config.service.js";
16
+ import { KernelDb } from "../infra/database/kernel-db.js";
17
+ import { TransactionHost } from "../infra/database/transaction-host.js";
18
+ import { Transactional } from "../infra/database/transactional.decorator.js";
19
+ import { KERNEL_BUS, KERNEL_LOGGER } from "../infra/tokens.js";
5
20
  import { ExtensionApprovals, snapshotCovers, writeSnapshot, } from "./approvals.js";
6
- import { PLUGINS_CHANGED_TOPIC, STALE_RECONCILE_PERIODS } from "./lifecycle.js";
21
+ import { ExtensionBlobs } from "./blobs.js";
22
+ import { ExtensionHost } from "./host.js";
23
+ import { ExtensionInstalls } from "./installs.js";
24
+ import { ExtensionLifecycle, PLUGINS_CHANGED_TOPIC, STALE_RECONCILE_PERIODS } from "./lifecycle.js";
25
+ import { PluginApproveLock } from "./locks.js";
7
26
  import { ExtensionPackageError, permissionSetOfPackage, readExtensionPackage } from "./package.js";
8
27
  import { buildPermissionSet, diffPermissions } from "./permission-set.js";
9
28
  import { deriveExtensionStatus, migrationWarnings, permissionGroups, permissionKeyItems, reviewHash, } from "./permission-view.js";
@@ -31,11 +50,42 @@ function assertReadable(s) {
31
50
  * 部署级插件后台(企业管理员):列表 / 详情与网页批准权限(D8)。无状态,多副本共用;
32
51
  * 状态由 PG(安装记录、快照、各副本状态行)与本副本宿主(配置声明插件的清单)推出。
33
52
  */
34
- export class ExtensionAdmin {
35
- d;
53
+ let ExtensionAdmin = class ExtensionAdmin {
54
+ kdb;
55
+ txHost;
56
+ adminLock;
57
+ approveLock;
58
+ blobs;
59
+ installs;
60
+ approvals;
61
+ host;
62
+ lifecycle;
63
+ config;
64
+ bus;
65
+ log;
36
66
  packageSets = new Map();
37
- constructor(d) {
38
- this.d = d;
67
+ constructor(kdb, txHost,
68
+ /** The enterprise admin lock (identity/enterprise-admin.ts): joins the transaction. */
69
+ adminLock, approveLock, blobs, installs, approvals,
70
+ /** The config-declared extensions (this replica's host; the CLI fills it from its inspection). */
71
+ host,
72
+ /** This replica's reconcile after an approval (a no-op where the lifecycle never started: the CLI). */
73
+ lifecycle, config, bus, log) {
74
+ this.kdb = kdb;
75
+ this.txHost = txHost;
76
+ this.adminLock = adminLock;
77
+ this.approveLock = approveLock;
78
+ this.blobs = blobs;
79
+ this.installs = installs;
80
+ this.approvals = approvals;
81
+ this.host = host;
82
+ this.lifecycle = lifecycle;
83
+ this.config = config;
84
+ this.bus = bus;
85
+ this.log = log;
86
+ }
87
+ get db() {
88
+ return this.kdb.db;
39
89
  }
40
90
  /** 全部插件(配置声明 → 安装记录,各自按名字)。 */
41
91
  async list() {
@@ -84,62 +134,64 @@ export class ExtensionAdmin {
84
134
  throw stale();
85
135
  if (body.reviewHash !== reviewHash(s.set, s.warnings))
86
136
  throw stale();
87
- await this.d.db.transaction().execute(async (trx) => {
88
- await lockEnterpriseAdminsAndAuthorize(trx, actor);
89
- await sql `SELECT pg_advisory_xact_lock(hashtext(${`capybara.plugin-approve:${name}`}))`.execute(trx);
90
- if (s.install !== null) {
91
- // 审阅之后安装记录可能已换包(T14 升级):锁行复核
92
- const row = await trx
93
- .selectFrom("extension_installs")
94
- .select("sha256")
95
- .where("name", "=", name)
96
- .forUpdate()
97
- .executeTakeFirst();
98
- if (row?.sha256 !== s.install.sha256)
99
- throw stale();
100
- }
101
- const snapRow = await trx
102
- .selectFrom("extension_permission_snapshots")
103
- .select(["version", "permissions"])
104
- .where("plugin", "=", name)
105
- .forUpdate()
106
- .executeTakeFirst();
107
- const snap = snapRow && {
108
- version: snapRow.version,
109
- permissions: snapRow.permissions,
110
- };
111
- if (snapshotCovers(snap, s.set)) {
112
- throw new ApiError("extension.not_pending", `Extension ${name} ${s.version} has no new permissions awaiting approval`);
113
- }
114
- const { added, removed } = diffPermissions(snap?.permissions, s.set);
115
- await writeSnapshot(trx, name, s.version, s.set, {
116
- source: "web",
117
- approvedBy: actor,
118
- ...(opts.actorTokenId !== undefined && { actorTokenId: opts.actorTokenId }),
119
- audit: { added, removed, sha256: s.install?.sha256 ?? null },
120
- });
121
- });
137
+ await this.writeApproval(actor, name, s, opts.actorTokenId, stale);
122
138
  try {
123
- await this.d.bus.publish(PLUGINS_CHANGED_TOPIC, { plugin: name });
139
+ await this.bus.publish(PLUGINS_CHANGED_TOPIC, { plugin: name });
124
140
  }
125
141
  catch (err) {
126
142
  // 快照已写入;其他副本由周期 reconcile(T14)兜底
127
- this.d.log.warn("cannot publish plugins.changed after approval", { plugin: name, err });
143
+ this.log.warn("cannot publish plugins.changed after approval", { plugin: name, err });
128
144
  }
129
145
  try {
130
- await this.d.reconcile?.(`approved:${name}`);
146
+ await this.lifecycle.reconcile(`approved:${name}`);
131
147
  }
132
148
  catch (err) {
133
- this.d.log.error("loading approved plugins on this replica failed", { plugin: name, err });
149
+ this.log.error("loading approved plugins on this replica failed", { plugin: name, err });
134
150
  }
135
151
  return this.get(name);
136
152
  }
153
+ async writeApproval(actor, name, s, actorTokenId, stale) {
154
+ const db = this.db;
155
+ await this.adminLock.lockAndAuthorize(actor);
156
+ await this.approveLock.lock(name);
157
+ if (s.install !== null) {
158
+ // 审阅之后安装记录可能已换包(T14 升级):锁行复核
159
+ const row = await db
160
+ .selectFrom("extension_installs")
161
+ .select("sha256")
162
+ .where("name", "=", name)
163
+ .forUpdate()
164
+ .executeTakeFirst();
165
+ if (row?.sha256 !== s.install.sha256)
166
+ throw stale();
167
+ }
168
+ const snapRow = await db
169
+ .selectFrom("extension_permission_snapshots")
170
+ .select(["version", "permissions"])
171
+ .where("plugin", "=", name)
172
+ .forUpdate()
173
+ .executeTakeFirst();
174
+ const snap = snapRow && {
175
+ version: snapRow.version,
176
+ permissions: snapRow.permissions,
177
+ };
178
+ if (snapshotCovers(snap, s.set)) {
179
+ throw new ApiError("extension.not_pending", `Extension ${name} ${s.version} has no new permissions awaiting approval`);
180
+ }
181
+ const { added, removed } = diffPermissions(snap?.permissions, s.set);
182
+ await writeSnapshot(db, name, s.version, s.set, {
183
+ source: "web",
184
+ approvedBy: actor,
185
+ ...(actorTokenId !== undefined && { actorTokenId }),
186
+ audit: { added, removed, sha256: s.install?.sha256 ?? null },
187
+ });
188
+ }
137
189
  /** 配置声明 → 安装记录(与配置声明重名的安装记录不生效,不单列)。`only` 给出时只取这一个。 */
138
190
  async subjects(only) {
139
- const declared = this.d.host
191
+ const declared = this.host
140
192
  .declaredPlugins()
141
193
  .filter((p) => only === undefined || p.name === only);
142
- const taken = new Set(this.d.host.declaredPlugins().map((p) => p.name));
194
+ const taken = new Set(this.host.declaredPlugins().map((p) => p.name));
143
195
  const out = [...declared]
144
196
  .sort((a, b) => a.name.localeCompare(b.name))
145
197
  .map((p) => ({
@@ -154,7 +206,7 @@ export class ExtensionAdmin {
154
206
  }));
155
207
  if (only !== undefined && out.length > 0)
156
208
  return out;
157
- const rows = (await this.d.installs.list()).filter((r) => !taken.has(r.name) && (only === undefined || r.name === only));
209
+ const rows = (await this.installs.list()).filter((r) => !taken.has(r.name) && (only === undefined || r.name === only));
158
210
  for (const r of rows) {
159
211
  let info;
160
212
  try {
@@ -168,7 +220,7 @@ export class ExtensionAdmin {
168
220
  ? err.message
169
221
  : `package ${r.name} ${r.version} (${r.sha256}) cannot be read: ${err instanceof Error ? err.message : String(err)}`;
170
222
  // A pre-0.1.0 package is an expected state (repack needed), logged without a stack trace.
171
- this.d.log.warn("plugin package unreadable for the admin view", {
223
+ this.log.warn("plugin package unreadable for the admin view", {
172
224
  plugin: r.name,
173
225
  sha256: r.sha256,
174
226
  ...(legacy ? { reason: detail } : { err }),
@@ -207,8 +259,8 @@ export class ExtensionAdmin {
207
259
  async packageInfo(sha256) {
208
260
  let cached = this.packageSets.get(sha256);
209
261
  if (!cached) {
210
- const pkg = await readExtensionPackage(await this.d.blobs.get(sha256), {
211
- maxBytes: this.d.config().packages.maxBytes,
262
+ const pkg = await readExtensionPackage(await this.blobs.get(sha256), {
263
+ maxBytes: this.config.get().packages.maxBytes,
212
264
  hostSdkVersion: SDK_VERSION,
213
265
  });
214
266
  cached = {
@@ -225,9 +277,9 @@ export class ExtensionAdmin {
225
277
  if (subjects.length === 0)
226
278
  return [];
227
279
  const names = subjects.map((s) => s.name);
228
- const snapshots = await new ExtensionApprovals(this.d.db).all();
229
- const staleSeconds = STALE_RECONCILE_PERIODS * this.d.config().extensionHost.reconcileIntervalSeconds;
230
- const rows = await this.d.db
280
+ const snapshots = await this.approvals.all();
281
+ const staleSeconds = STALE_RECONCILE_PERIODS * this.config.get().extensionHost.reconcileIntervalSeconds;
282
+ const rows = await this.db
231
283
  .selectFrom("extension_replica_status")
232
284
  .selectAll()
233
285
  .where("plugin", "in", names)
@@ -307,7 +359,26 @@ export class ExtensionAdmin {
307
359
  };
308
360
  });
309
361
  }
310
- }
362
+ };
363
+ __decorate([
364
+ Transactional()
365
+ ], ExtensionAdmin.prototype, "writeApproval", null);
366
+ ExtensionAdmin = __decorate([
367
+ Injectable(),
368
+ __param(0, Inject(KernelDb)),
369
+ __param(1, Inject(TransactionHost)),
370
+ __param(2, Inject(EnterpriseAdminLock)),
371
+ __param(3, Inject(PluginApproveLock)),
372
+ __param(4, Inject(ExtensionBlobs)),
373
+ __param(5, Inject(ExtensionInstalls)),
374
+ __param(6, Inject(ExtensionApprovals)),
375
+ __param(7, Inject(ExtensionHost)),
376
+ __param(8, Inject(ExtensionLifecycle)),
377
+ __param(9, Inject(KernelConfigService)),
378
+ __param(10, Inject(KERNEL_BUS)),
379
+ __param(11, Inject(KERNEL_LOGGER))
380
+ ], ExtensionAdmin);
381
+ export { ExtensionAdmin };
311
382
  const replicaView = (r) => ({
312
383
  replicaId: r.replica_id,
313
384
  version: r.version,
@@ -1,6 +1,7 @@
1
1
  import { type ExtensionManifest } from "@capybara-hq/plugin-sdk";
2
- import { type Transaction } from "kysely";
3
- import type { KernelDatabase, KernelDb } from "../db/kernel-schema.js";
2
+ import type { KernelSchemaDb } from "../db/kernel-schema.js";
3
+ import { KernelDb } from "../infra/database/kernel-db.js";
4
+ import { TransactionHost } from "../infra/database/transaction-host.js";
4
5
  import { type PermissionSet } from "./permission-set.js";
5
6
  /** An approved permission snapshot (one row of `capybara.extension_permission_snapshots`). */
6
7
  export interface PermissionSnapshot {
@@ -70,11 +71,11 @@ export declare function withPreApproved(snapshots: Map<string, PermissionSnapsho
70
71
  /** 快照是否已覆盖该权限集合(没有需要批准的新增;F-N:「待批准」只看这一条,与期望状态无关)。 */
71
72
  export declare function snapshotCovers(snap: Pick<PermissionSnapshot, "permissions"> | undefined, set: PermissionSet): boolean;
72
73
  /**
73
- * Writes (adds or overwrites) a snapshot in the caller's transaction; with `audit`, the
74
- * `extension.permissions_approved` audit is written in the same transaction (actor is `approvedBy`,
74
+ * Writes (adds or overwrites) a snapshot on `db` (the caller's transaction); with `audit`, the
75
+ * `extension.permissions_approved` audit is written on the same handle (actor is `approvedBy`,
75
76
  * empty for the CLI).
76
77
  */
77
- export declare function writeSnapshot(trx: Transaction<KernelDatabase>, plugin: string, version: string, permissions: PermissionSet, opts: {
78
+ export declare function writeSnapshot(db: KernelSchemaDb, plugin: string, version: string, permissions: PermissionSet, opts: {
78
79
  source: PermissionSnapshot["source"];
79
80
  approvedBy?: string | null;
80
81
  actorTokenId?: string;
@@ -89,11 +90,14 @@ export declare function writeSnapshot(trx: Transaction<KernelDatabase>, plugin:
89
90
  };
90
91
  };
91
92
  }): Promise<void>;
92
- /** 读写权限快照(直连 PG;内核启动与 CLI 共用)。 */
93
+ /** Every approved snapshot, by extension name (a query on `db`; the CLI's migrate runs it on its own pool). */
94
+ export declare function readSnapshots(db: KernelSchemaDb): Promise<Map<string, PermissionSnapshot>>;
95
+ /** The permission snapshots (PG; the kernel and the CLI share them). */
93
96
  export declare class ExtensionApprovals {
94
97
  private readonly db;
95
- constructor(db: KernelDb);
96
- /** 全部快照,按插件名索引。 */
98
+ readonly txHost: TransactionHost;
99
+ constructor(db: KernelDb, txHost: TransactionHost);
100
+ /** Every snapshot, by extension name. */
97
101
  all(): Promise<Map<string, PermissionSnapshot>>;
98
102
  /**
99
103
  * Approves (adds or overwrites) a snapshot: writes the current permission set and version,
@@ -1,7 +1,20 @@
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 { OBJECT_STORE_EXTENSION_POINT } from "@capybara-hq/plugin-sdk";
11
+ import { Inject, Injectable } from "@nestjs/common";
2
12
  import { sql } from "kysely";
3
13
  import semver from "semver";
4
14
  import { audit } from "../identity/audit.js";
15
+ import { KernelDb } from "../infra/database/kernel-db.js";
16
+ import { TransactionHost } from "../infra/database/transaction-host.js";
17
+ import { Transactional } from "../infra/database/transactional.decorator.js";
5
18
  import { blockingKeys, diffPermissions, permissionKeys, } from "./permission-set.js";
6
19
  /**
7
20
  * 按依赖拓扑序(`ordered`)比对快照,决定每个插件加载还是待批准:
@@ -107,11 +120,11 @@ export function snapshotCovers(snap, set) {
107
120
  return (snap !== undefined && blockingKeys(diffPermissions(snap.permissions, set).added).length === 0);
108
121
  }
109
122
  /**
110
- * Writes (adds or overwrites) a snapshot in the caller's transaction; with `audit`, the
111
- * `extension.permissions_approved` audit is written in the same transaction (actor is `approvedBy`,
123
+ * Writes (adds or overwrites) a snapshot on `db` (the caller's transaction); with `audit`, the
124
+ * `extension.permissions_approved` audit is written on the same handle (actor is `approvedBy`,
112
125
  * empty for the CLI).
113
126
  */
114
- export async function writeSnapshot(trx, plugin, version, permissions, opts) {
127
+ export async function writeSnapshot(db, plugin, version, permissions, opts) {
115
128
  const values = {
116
129
  plugin,
117
130
  version,
@@ -120,7 +133,7 @@ export async function writeSnapshot(trx, plugin, version, permissions, opts) {
120
133
  approved_at: sql `now()`,
121
134
  source: opts.source,
122
135
  };
123
- await trx
136
+ await db
124
137
  .insertInto("extension_permission_snapshots")
125
138
  .values(values)
126
139
  .onConflict((oc) => oc.column("plugin").doUpdateSet({
@@ -132,7 +145,7 @@ export async function writeSnapshot(trx, plugin, version, permissions, opts) {
132
145
  }))
133
146
  .execute();
134
147
  if (opts.audit) {
135
- await audit(trx, {
148
+ await audit(db, {
136
149
  ...(opts.approvedBy && { actorAccountId: opts.approvedBy }),
137
150
  ...(opts.actorTokenId !== undefined && { actorTokenId: opts.actorTokenId }),
138
151
  action: "extension.permissions_approved",
@@ -143,26 +156,32 @@ export async function writeSnapshot(trx, plugin, version, permissions, opts) {
143
156
  }
144
157
  /** `version` 是否比 `than` 旧(任一方不是合法 semver 时视为不旧)。 */
145
158
  const isOlder = (version, than) => semver.valid(version) !== null && semver.valid(than) !== null && semver.lt(version, than);
146
- /** 读写权限快照(直连 PG;内核启动与 CLI 共用)。 */
147
- export class ExtensionApprovals {
159
+ /** Every approved snapshot, by extension name (a query on `db`; the CLI's migrate runs it on its own pool). */
160
+ export async function readSnapshots(db) {
161
+ const rows = await db.selectFrom("extension_permission_snapshots").selectAll().execute();
162
+ return new Map(rows.map((r) => [
163
+ r.plugin,
164
+ {
165
+ plugin: r.plugin,
166
+ version: r.version,
167
+ permissions: r.permissions,
168
+ approvedBy: r.approved_by,
169
+ approvedAt: r.approved_at,
170
+ source: r.source,
171
+ },
172
+ ]));
173
+ }
174
+ /** The permission snapshots (PG; the kernel and the CLI share them). */
175
+ let ExtensionApprovals = class ExtensionApprovals {
148
176
  db;
149
- constructor(db) {
177
+ txHost;
178
+ constructor(db, txHost) {
150
179
  this.db = db;
180
+ this.txHost = txHost;
151
181
  }
152
- /** 全部快照,按插件名索引。 */
153
- async all() {
154
- const rows = await this.db.selectFrom("extension_permission_snapshots").selectAll().execute();
155
- return new Map(rows.map((r) => [
156
- r.plugin,
157
- {
158
- plugin: r.plugin,
159
- version: r.version,
160
- permissions: r.permissions,
161
- approvedBy: r.approved_by,
162
- approvedAt: r.approved_at,
163
- source: r.source,
164
- },
165
- ]));
182
+ /** Every snapshot, by extension name. */
183
+ all() {
184
+ return readSnapshots(this.db.db);
166
185
  }
167
186
  /**
168
187
  * Approves (adds or overwrites) a snapshot: writes the current permission set and version,
@@ -170,9 +189,7 @@ export class ExtensionApprovals {
170
189
  * same transaction (actor is `approvedBy`, empty for the CLI).
171
190
  */
172
191
  async approve(plugin, version, permissions, opts) {
173
- await this.db
174
- .transaction()
175
- .execute((trx) => writeSnapshot(trx, plugin, version, permissions, opts));
192
+ await writeSnapshot(this.db.db, plugin, version, permissions, opts);
176
193
  }
177
194
  /**
178
195
  * 权限变少、不变或只多出 `ui.view:*`(不卡加载)时更新快照的权限集合与版本;批准人、批准时间与来源保持不变,
@@ -181,25 +198,35 @@ export class ExtensionApprovals {
181
198
  * 或当前集合相对快照有需要批准的新增时不更新。返回是否更新。
182
199
  */
183
200
  async refresh(plugin, version, permissions) {
184
- return this.db.transaction().execute(async (trx) => {
185
- const row = await trx
186
- .selectFrom("extension_permission_snapshots")
187
- .select(["version", "permissions"])
188
- .where("plugin", "=", plugin)
189
- .forUpdate()
190
- .executeTakeFirst();
191
- if (!row || isOlder(version, row.version))
192
- return false;
193
- const { added } = diffPermissions(row.permissions, permissions);
194
- if (blockingKeys(added).length > 0) {
195
- return false;
196
- }
197
- await trx
198
- .updateTable("extension_permission_snapshots")
199
- .set({ version, permissions: JSON.stringify(permissions) })
200
- .where("plugin", "=", plugin)
201
- .execute();
202
- return true;
203
- });
201
+ const row = await this.db
202
+ .selectFrom("extension_permission_snapshots")
203
+ .select(["version", "permissions"])
204
+ .where("plugin", "=", plugin)
205
+ .forUpdate()
206
+ .executeTakeFirst();
207
+ if (!row || isOlder(version, row.version))
208
+ return false;
209
+ const { added } = diffPermissions(row.permissions, permissions);
210
+ if (blockingKeys(added).length > 0) {
211
+ return false;
212
+ }
213
+ await this.db
214
+ .updateTable("extension_permission_snapshots")
215
+ .set({ version, permissions: JSON.stringify(permissions) })
216
+ .where("plugin", "=", plugin)
217
+ .execute();
218
+ return true;
204
219
  }
205
- }
220
+ };
221
+ __decorate([
222
+ Transactional()
223
+ ], ExtensionApprovals.prototype, "approve", null);
224
+ __decorate([
225
+ Transactional()
226
+ ], ExtensionApprovals.prototype, "refresh", null);
227
+ ExtensionApprovals = __decorate([
228
+ Injectable(),
229
+ __param(0, Inject(KernelDb)),
230
+ __param(1, Inject(TransactionHost))
231
+ ], ExtensionApprovals);
232
+ export { ExtensionApprovals };
@@ -1,5 +1,7 @@
1
- import type { KernelDb } from "../db/kernel-schema.js";
2
- import type { StorageService } from "../storage/storage.service.js";
1
+ import { KernelConfigService } from "../infra/config/kernel-config.service.js";
2
+ import { KernelDb } from "../infra/database/kernel-db.js";
3
+ import { TransactionHost } from "../infra/database/transaction-host.js";
4
+ import { StorageService } from "../storage/storage.service.js";
3
5
  import type { ExtensionPackage } from "./package.js";
4
6
  /**
5
7
  * Content-addressed extension package store (C13): one copy per sha256 of the whole tgz.
@@ -24,20 +26,35 @@ export interface ExtensionBlobSource {
24
26
  store?: "object" | "pg";
25
27
  }
26
28
  export declare class ExtensionBlobs {
27
- private readonly d;
28
- constructor(d: {
29
- db: KernelDb;
30
- /** 没有时一律存 PG(如 CLI)。 */
31
- storage?: StorageService;
32
- /** `packages.maxBytes`(每次调用时读)。 */
33
- maxBytes: () => number;
34
- });
29
+ private readonly db;
30
+ readonly txHost: TransactionHost;
31
+ /** Without an object-store extension (the CLI) packages go to PG. */
32
+ private readonly storage;
33
+ private readonly config;
34
+ /**
35
+ * CLI only: packages the CLI process imported itself and reads back before the store, since such
36
+ * a package may be recorded in an object store the CLI cannot read. Each entry's sha256 was
37
+ * checked by {@link remember}; content-addressed and immutable, so it is never stale. Bounded
38
+ * ({@link REMEMBERED_MAX}, oldest dropped); a kernel replica never fills it.
39
+ */
40
+ private readonly local;
41
+ constructor(db: KernelDb, txHost: TransactionHost,
42
+ /** Without an object-store extension (the CLI) packages go to PG. */
43
+ storage: StorageService, config: KernelConfigService);
44
+ /** `packages.maxBytes` (read at every call). */
45
+ private maxBytes;
46
+ /**
47
+ * CLI only: keeps `bytes` for {@link get} in this process (see {@link local}). Bytes whose sha256
48
+ * is not `sha256` throw {@link ExtensionBlobIntegrityError} and are not kept.
49
+ */
50
+ remember(sha256: string, bytes: Uint8Array): void;
35
51
  /**
36
52
  * Stores a validated package (the result of {@link readExtensionPackage}) and its bytes, and writes
37
53
  * the `extension_packages` row. Does nothing when a package with the same sha256 exists
38
54
  * (content-addressed, idempotent; replicas writing the same package concurrently is harmless).
39
55
  */
40
56
  put(p: ExtensionPackage, bytes: Uint8Array, src: ExtensionBlobSource): Promise<void>;
57
+ private record;
41
58
  /** 已有记录的包:按记录的存放位置检查字节在不在,不在就写回(调用方已校验 sha256)。 */
42
59
  private repair;
43
60
  /** Reads the package from its recorded location and checks its sha256; a mismatch throws {@link ExtensionBlobIntegrityError}. */