@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
@@ -32,8 +32,9 @@ export type CliObjectStore = {
32
32
  */
33
33
  export declare function loadCliObjectStore(cli: Pick<ExtensionCli, "inspected" | "deploymentConfigs" | "deploymentConfigOf" | "approvals" | "config" | "configIssues" | "installs" | "packageSet" | "readPackage">, log: Pick<KernelLogger, "warn">, syncDir: string): Promise<CliObjectStore>;
34
34
  /**
35
- * The CLI's plugin catalog context (`capybara plugins *`): {@link openExtensionCli} plus
36
- * {@link PluginImport} and {@link CatalogService}. Imports run with actor `null` (the operator of the
35
+ * The CLI's plugin catalog context (`capybara plugins *`): {@link openExtensionCli} with the
36
+ * catalog's {@link CatalogImportModule}, so {@link PluginImport} and {@link CatalogService} are the
37
+ * kernel's providers. Imports run with actor `null` (the operator of the
37
38
  * deployment, like `capybara extensions install`: no enterprise-admin re-check, audits without an
38
39
  * actor, permission snapshots written with source `cli`). Files of the plugin (skills, connector
39
40
  * templates, icons) go to the deployment's object store, set up in-process from the declared or
@@ -9,7 +9,8 @@ import { assertSecretsReachable } from "../extensions/host.js";
9
9
  import { importExtensionModule, matchesSection } from "../extensions/instance.js";
10
10
  import { packageRootOf, syncPackage } from "../extensions/sync.js";
11
11
  import { packagePath } from "../packages/tgz.js";
12
- import { StorageService } from "../storage/storage.service.js";
12
+ import { PrefixedStorage } from "../storage/storage.service.js";
13
+ import { CatalogImportModule } from "./catalog.module.js";
13
14
  import { CatalogService } from "./catalog.service.js";
14
15
  import { PluginImport } from "./plugin-import.js";
15
16
  /**
@@ -131,7 +132,7 @@ export async function loadCliObjectStore(cli, log, syncDir) {
131
132
  return { store: undefined, reason: reasons.join("; ") };
132
133
  }
133
134
  /** `storage.unavailable` with the CLI's constraint spelled out (the generic text points to a plugin install). */
134
- class CliStorage extends StorageService {
135
+ class CliStorage extends PrefixedStorage {
135
136
  reason;
136
137
  constructor(deps, reason) {
137
138
  super(deps);
@@ -144,8 +145,9 @@ class CliStorage extends StorageService {
144
145
  }
145
146
  }
146
147
  /**
147
- * The CLI's plugin catalog context (`capybara plugins *`): {@link openExtensionCli} plus
148
- * {@link PluginImport} and {@link CatalogService}. Imports run with actor `null` (the operator of the
148
+ * The CLI's plugin catalog context (`capybara plugins *`): {@link openExtensionCli} with the
149
+ * catalog's {@link CatalogImportModule}, so {@link PluginImport} and {@link CatalogService} are the
150
+ * kernel's providers. Imports run with actor `null` (the operator of the
149
151
  * deployment, like `capybara extensions install`: no enterprise-admin re-check, audits without an
150
152
  * actor, permission snapshots written with source `cli`). Files of the plugin (skills, connector
151
153
  * templates, icons) go to the deployment's object store, set up in-process from the declared or
@@ -154,7 +156,7 @@ class CliStorage extends StorageService {
154
156
  * plugin does not bring are checked statically only (the CLI loads no connector).
155
157
  */
156
158
  export async function openCatalogCli(config, log, opts = {}) {
157
- const cli = await openExtensionCli(config, log, opts);
159
+ const cli = await openExtensionCli(config, log, { ...opts, modules: [CatalogImportModule] });
158
160
  let syncDir;
159
161
  const removeSyncDir = async () => {
160
162
  if (syncDir !== undefined)
@@ -167,32 +169,12 @@ export async function openCatalogCli(config, log, opts = {}) {
167
169
  provider: () => store,
168
170
  plugins: async () => cli.inspected.map((p) => p.manifest.name),
169
171
  }, "reason" in rest ? rest.reason : undefined);
170
- const declared = new Map(cli.inspected.map((p) => [p.manifest.name, p.source]));
171
- const imports = new PluginImport({
172
- db: cli.db,
173
- config: () => config,
174
- storage,
175
- installs: cli.installs,
176
- ops: cli.ops,
177
- blobs: { get: (sha256) => cli.readPackage(sha256) },
178
- declared: () => declared,
179
- // The CLI loads no connectors: templates get static checks only (the org install re-checks)
180
- findConnector: () => undefined,
181
- connectorsLoaded: false,
182
- log,
183
- });
184
- const catalog = new CatalogService({
185
- db: cli.db,
186
- config: () => config,
187
- installs: cli.installs,
188
- ops: cli.ops,
189
- pluginImport: imports,
190
- // Unreachable from the CLI: only marketplace imports (CatalogService.importFromMarketplace)
191
- // download archives, and the CLI offers file, npm and direct git imports only.
192
- fetchArchive: () => Promise.reject(new ApiError("internal", "marketplace imports are not available in the CLI")),
193
- // Only marketplace imports send a marketplace token; a direct git import has none
194
- marketplaceToken: async () => undefined,
195
- });
172
+ // Plugin files go to that store; connector templates get static checks only (the CLI loads
173
+ // no connector; the org install re-checks them). Config-declared names come from the
174
+ // inspection (the registry), marketplace imports are not offered by the CLI.
175
+ const imports = cli.app.get(PluginImport);
176
+ imports.useCliStorage(storage);
177
+ const catalog = cli.app.get(CatalogService);
196
178
  return {
197
179
  ...cli,
198
180
  catalog,
@@ -0,0 +1,15 @@
1
+ /** The catalog's periodic jobs (a leaf module: no imports). */
2
+ /**
3
+ * Periodic marketplace refresh (C26), every `marketplaces.refreshIntervalMinutes` (a
4
+ * `@LockedInterval`, once per tick across replicas): refreshes each enabled marketplace in turn.
5
+ */
6
+ export declare const MARKETPLACES_REFRESH_JOB = "catalogs-refresh";
7
+ /** The BullMQ repeatable scheduler the refresh had before it became `@LockedInterval` (retired). */
8
+ export declare const MARKETPLACES_REFRESH_SCHEDULER_ID = "catalogs-refresh-every";
9
+ /**
10
+ * Hourly cleanup of plugin import staging (T25, F-AE; a `@LockedCron`): deletes expired (24-hour)
11
+ * staging rows and their object storage prefixes (`PluginImport.cleanupExpired`).
12
+ */
13
+ export declare const PLUGIN_STAGING_CLEANUP_JOB = "app-staging-cleanup";
14
+ /** The BullMQ repeatable scheduler the cleanup had before it became `@LockedCron` (retired). */
15
+ export declare const PLUGIN_STAGING_CLEANUP_SCHEDULER_ID = "app-staging-cleanup-hourly";
@@ -0,0 +1,15 @@
1
+ /** The catalog's periodic jobs (a leaf module: no imports). */
2
+ /**
3
+ * Periodic marketplace refresh (C26), every `marketplaces.refreshIntervalMinutes` (a
4
+ * `@LockedInterval`, once per tick across replicas): refreshes each enabled marketplace in turn.
5
+ */
6
+ export const MARKETPLACES_REFRESH_JOB = "catalogs-refresh";
7
+ /** The BullMQ repeatable scheduler the refresh had before it became `@LockedInterval` (retired). */
8
+ export const MARKETPLACES_REFRESH_SCHEDULER_ID = "catalogs-refresh-every";
9
+ /**
10
+ * Hourly cleanup of plugin import staging (T25, F-AE; a `@LockedCron`): deletes expired (24-hour)
11
+ * staging rows and their object storage prefixes (`PluginImport.cleanupExpired`).
12
+ */
13
+ export const PLUGIN_STAGING_CLEANUP_JOB = "app-staging-cleanup";
14
+ /** The BullMQ repeatable scheduler the cleanup had before it became `@LockedCron` (retired). */
15
+ export const PLUGIN_STAGING_CLEANUP_SCHEDULER_ID = "app-staging-cleanup-hourly";
@@ -0,0 +1,27 @@
1
+ import { KernelConfigService } from "../infra/config/kernel-config.service.js";
2
+ import { LockService } from "../infra/lock/lock.service.js";
3
+ import type { KernelLogger } from "../log.js";
4
+ import { MarketplacesService } from "./marketplaces.service.js";
5
+ import { PluginImport } from "./plugin-import.js";
6
+ /**
7
+ * The catalog's periodic jobs, each run once per tick across replicas: the marketplace refresh
8
+ * (`catalogs-refresh`, every `marketplaces.refreshIntervalMinutes` and once after the start:
9
+ * `@LockedInterval` with `runOnStart`) and the
10
+ * hourly cleanup of expired plugin import staging (`app-staging-cleanup`: `@LockedCron`).
11
+ */
12
+ export declare class CatalogJobs {
13
+ private readonly marketplaces;
14
+ private readonly imports;
15
+ readonly config: KernelConfigService;
16
+ readonly lockService: LockService;
17
+ readonly log: KernelLogger;
18
+ constructor(marketplaces: MarketplacesService, imports: PluginImport, config: KernelConfigService, lockService: LockService, log: KernelLogger);
19
+ /**
20
+ * Refreshes every enabled marketplace in turn (overall deadline
21
+ * {@link MARKETPLACES_REFRESH_DEADLINE_MS}; the job's signal aborts it: the stop, or the run
22
+ * lock lost).
23
+ */
24
+ refreshMarketplaces(stop?: AbortSignal): Promise<void>;
25
+ /** Deletes expired staging rows and their objects. */
26
+ cleanupStaging(): Promise<void>;
27
+ }
@@ -0,0 +1,70 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
8
+ return function (target, key) { decorator(target, key, paramIndex); }
9
+ };
10
+ import { Inject, Injectable } from "@nestjs/common";
11
+ import { KernelConfigService } from "../infra/config/kernel-config.service.js";
12
+ import { LockService } from "../infra/lock/lock.service.js";
13
+ import { LockedCron } from "../infra/schedule/locked-cron.decorator.js";
14
+ import { LockedInterval } from "../infra/schedule/locked-interval.js";
15
+ import { KERNEL_LOGGER } from "../infra/tokens.js";
16
+ import { MARKETPLACES_REFRESH_JOB, PLUGIN_STAGING_CLEANUP_JOB } from "./job-ids.js";
17
+ import { MARKETPLACES_REFRESH_DEADLINE_MS, MarketplacesService } from "./marketplaces.service.js";
18
+ import { PluginImport } from "./plugin-import.js";
19
+ /**
20
+ * The catalog's periodic jobs, each run once per tick across replicas: the marketplace refresh
21
+ * (`catalogs-refresh`, every `marketplaces.refreshIntervalMinutes` and once after the start:
22
+ * `@LockedInterval` with `runOnStart`) and the
23
+ * hourly cleanup of expired plugin import staging (`app-staging-cleanup`: `@LockedCron`).
24
+ */
25
+ let CatalogJobs = class CatalogJobs {
26
+ marketplaces;
27
+ imports;
28
+ config;
29
+ lockService;
30
+ log;
31
+ constructor(marketplaces, imports, config, lockService, log) {
32
+ this.marketplaces = marketplaces;
33
+ this.imports = imports;
34
+ this.config = config;
35
+ this.lockService = lockService;
36
+ this.log = log;
37
+ }
38
+ /**
39
+ * Refreshes every enabled marketplace in turn (overall deadline
40
+ * {@link MARKETPLACES_REFRESH_DEADLINE_MS}; the job's signal aborts it: the stop, or the run
41
+ * lock lost).
42
+ */
43
+ async refreshMarketplaces(stop) {
44
+ const deadline = AbortSignal.timeout(MARKETPLACES_REFRESH_DEADLINE_MS);
45
+ await this.marketplaces.refreshAll(stop ? AbortSignal.any([deadline, stop]) : deadline);
46
+ }
47
+ /** Deletes expired staging rows and their objects. */
48
+ async cleanupStaging() {
49
+ const n = await this.imports.cleanupExpired();
50
+ if (n > 0)
51
+ this.log.info("expired plugin imports cleaned up", { count: n });
52
+ }
53
+ };
54
+ __decorate([
55
+ LockedInterval(MARKETPLACES_REFRESH_JOB, (c) => c.marketplaces.refreshIntervalMinutes * 60_000,
56
+ // a fresh deployment's marketplaces are refreshed right after the start
57
+ { runOnStart: true })
58
+ ], CatalogJobs.prototype, "refreshMarketplaces", null);
59
+ __decorate([
60
+ LockedCron("0 * * * *", { name: PLUGIN_STAGING_CLEANUP_JOB })
61
+ ], CatalogJobs.prototype, "cleanupStaging", null);
62
+ CatalogJobs = __decorate([
63
+ Injectable(),
64
+ __param(0, Inject(MarketplacesService)),
65
+ __param(1, Inject(PluginImport)),
66
+ __param(2, Inject(KernelConfigService)),
67
+ __param(3, Inject(LockService)),
68
+ __param(4, Inject(KERNEL_LOGGER))
69
+ ], CatalogJobs);
70
+ export { CatalogJobs };
@@ -0,0 +1,24 @@
1
+ import { TransactionHost } from "../infra/database/transaction-host.js";
2
+ import { XactLock } from "../infra/database/xact-lock.js";
3
+ /**
4
+ * Serializes the writes of one marketplace's cached entries and refresh status (a refresh's
5
+ * result against concurrent refreshes and the admin's changes). Joins the caller's transaction
6
+ * (`mandatory`), which holds the lock until it ends.
7
+ */
8
+ export declare class CatalogSourceLock {
9
+ private readonly xactLock;
10
+ readonly txHost: TransactionHost;
11
+ constructor(xactLock: XactLock, txHost: TransactionHost);
12
+ lock(marketplaceId: string): Promise<void>;
13
+ }
14
+ /**
15
+ * Serializes the imports of one catalog item name (the conflict re-check and the item / version
16
+ * write of a confirm), including a first import that has no item row to lock yet. Joins the
17
+ * caller's transaction (`mandatory`).
18
+ */
19
+ export declare class CatalogItemLock {
20
+ private readonly xactLock;
21
+ readonly txHost: TransactionHost;
22
+ constructor(xactLock: XactLock, txHost: TransactionHost);
23
+ lock(name: string): Promise<void>;
24
+ }
@@ -0,0 +1,63 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
8
+ return function (target, key) { decorator(target, key, paramIndex); }
9
+ };
10
+ import { Inject, Injectable } from "@nestjs/common";
11
+ import { TransactionHost } from "../infra/database/transaction-host.js";
12
+ import { Transactional } from "../infra/database/transactional.decorator.js";
13
+ import { XactLock } from "../infra/database/xact-lock.js";
14
+ /**
15
+ * Serializes the writes of one marketplace's cached entries and refresh status (a refresh's
16
+ * result against concurrent refreshes and the admin's changes). Joins the caller's transaction
17
+ * (`mandatory`), which holds the lock until it ends.
18
+ */
19
+ let CatalogSourceLock = class CatalogSourceLock {
20
+ xactLock;
21
+ txHost;
22
+ constructor(xactLock, txHost) {
23
+ this.xactLock = xactLock;
24
+ this.txHost = txHost;
25
+ }
26
+ async lock(marketplaceId) {
27
+ await this.xactLock.lock(`capybara.catalog-source:${marketplaceId}`);
28
+ }
29
+ };
30
+ __decorate([
31
+ Transactional({ propagation: "mandatory" })
32
+ ], CatalogSourceLock.prototype, "lock", null);
33
+ CatalogSourceLock = __decorate([
34
+ Injectable(),
35
+ __param(0, Inject(XactLock)),
36
+ __param(1, Inject(TransactionHost))
37
+ ], CatalogSourceLock);
38
+ export { CatalogSourceLock };
39
+ /**
40
+ * Serializes the imports of one catalog item name (the conflict re-check and the item / version
41
+ * write of a confirm), including a first import that has no item row to lock yet. Joins the
42
+ * caller's transaction (`mandatory`).
43
+ */
44
+ let CatalogItemLock = class CatalogItemLock {
45
+ xactLock;
46
+ txHost;
47
+ constructor(xactLock, txHost) {
48
+ this.xactLock = xactLock;
49
+ this.txHost = txHost;
50
+ }
51
+ async lock(name) {
52
+ await this.xactLock.lock(`capybara.directory-item:${name}`);
53
+ }
54
+ };
55
+ __decorate([
56
+ Transactional({ propagation: "mandatory" })
57
+ ], CatalogItemLock.prototype, "lock", null);
58
+ CatalogItemLock = __decorate([
59
+ Injectable(),
60
+ __param(0, Inject(XactLock)),
61
+ __param(1, Inject(TransactionHost))
62
+ ], CatalogItemLock);
63
+ export { CatalogItemLock };
@@ -1,8 +1,8 @@
1
1
  import { z } from "zod";
2
- import { type KernelConfig } from "../config/schema.js";
3
2
  import { type Principal } from "../identity/principal.js";
4
- import type { CatalogService, MarketplaceImportResult } from "./catalog.service.js";
5
- import type { MarketplaceEntryView, MarketplacesService, MarketplaceView } from "./marketplaces.service.js";
3
+ import { KernelConfigService } from "../infra/config/kernel-config.service.js";
4
+ import { CatalogService, type MarketplaceImportResult } from "./catalog.service.js";
5
+ import { type MarketplaceEntryView, MarketplacesService, type MarketplaceView } from "./marketplaces.service.js";
6
6
  declare const AddBody: z.ZodObject<{
7
7
  name: z.ZodString;
8
8
  url: z.ZodString;
@@ -42,7 +42,7 @@ export declare class MarketplacesController {
42
42
  private readonly marketplaces;
43
43
  private readonly catalog;
44
44
  private readonly config;
45
- constructor(marketplaces: MarketplacesService, catalog: CatalogService, config: () => KernelConfig);
45
+ constructor(marketplaces: MarketplacesService, catalog: CatalogService, config: KernelConfigService);
46
46
  /** 全部来源;`offline` 为 true 表示 `marketplaces.official.enabled` 为 false(界面显示「离线模式」)。 */
47
47
  list(): Promise<{
48
48
  items: MarketplaceView[];
@@ -7,12 +7,15 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
7
7
  var __param = (this && this.__param) || function (paramIndex, decorator) {
8
8
  return function (target, key) { decorator(target, key, paramIndex); }
9
9
  };
10
- import { Body, Controller, Delete, Get, HttpCode, Inject, Param, Patch, Post, Query, } from "@nestjs/common";
10
+ import { Controller, Delete, Get, HttpCode, Inject, Param, Patch, Post } from "@nestjs/common";
11
11
  import { z } from "zod";
12
12
  import { MARKETPLACE_MAX_MIRRORS } from "../config/schema.js";
13
- import { CATALOG, KERNEL_CONFIG, MARKETPLACES } from "../http/tokens.js";
14
- import { ZodPipe } from "../http/zod.pipe.js";
15
13
  import { CurrentPrincipal, EnterpriseAdmin, patTokenId, requireUser, } from "../identity/principal.js";
14
+ import { KernelConfigService } from "../infra/config/kernel-config.service.js";
15
+ import { createZodDto } from "../infra/validation/create-zod-dto.js";
16
+ import { ZBody, ZQuery } from "../infra/validation/zod-params.js";
17
+ import { CatalogService } from "./catalog.service.js";
18
+ import { MarketplacesService, } from "./marketplaces.service.js";
16
19
  const Url = z.string().min(1).max(2000);
17
20
  const Form = z.enum(["http", "git"]);
18
21
  const Ref = z.string().min(1).max(256);
@@ -46,6 +49,14 @@ const actorOpts = (actor) => {
46
49
  const tokenId = patTokenId(actor);
47
50
  return tokenId !== undefined ? { actorTokenId: tokenId } : {};
48
51
  };
52
+ class MarketplaceAddBody extends createZodDto(AddBody, "MarketplaceAddBody") {
53
+ }
54
+ class MarketplaceEntriesQuery extends createZodDto(EntriesQuery, "MarketplaceEntriesQuery") {
55
+ }
56
+ class MarketplaceImportBody extends createZodDto(ImportBody, "MarketplaceImportBody") {
57
+ }
58
+ class MarketplacePatchBody extends createZodDto(PatchBody, "MarketplacePatchBody") {
59
+ }
49
60
  /**
50
61
  * Marketplaces (`/api/v1/admin/marketplaces/*`, enterprise admins): create, update, delete and
51
62
  * refresh the official and enterprise marketplaces, browse entries, import from a marketplace.
@@ -64,7 +75,7 @@ let MarketplacesController = class MarketplacesController {
64
75
  async list() {
65
76
  return {
66
77
  items: await this.marketplaces.list(),
67
- offline: !this.config().marketplaces.official.enabled,
78
+ offline: !this.config.get().marketplaces.official.enabled,
68
79
  };
69
80
  }
70
81
  /**
@@ -155,17 +166,17 @@ __decorate([
155
166
  Post(),
156
167
  HttpCode(201),
157
168
  __param(0, CurrentPrincipal()),
158
- __param(1, Body(new ZodPipe(AddBody)))
169
+ __param(1, ZBody(MarketplaceAddBody))
159
170
  ], MarketplacesController.prototype, "add", null);
160
171
  __decorate([
161
172
  Get("entries"),
162
- __param(0, Query(new ZodPipe(EntriesQuery)))
173
+ __param(0, ZQuery(MarketplaceEntriesQuery))
163
174
  ], MarketplacesController.prototype, "entries", null);
164
175
  __decorate([
165
176
  Patch(":id"),
166
177
  __param(0, CurrentPrincipal()),
167
178
  __param(1, Param("id")),
168
- __param(2, Body(new ZodPipe(PatchBody)))
179
+ __param(2, ZBody(MarketplacePatchBody))
169
180
  ], MarketplacesController.prototype, "update", null);
170
181
  __decorate([
171
182
  Delete(":id"),
@@ -185,13 +196,13 @@ __decorate([
185
196
  __param(0, CurrentPrincipal()),
186
197
  __param(1, Param("id")),
187
198
  __param(2, Param("name")),
188
- __param(3, Body(new ZodPipe(ImportBody)))
199
+ __param(3, ZBody(MarketplaceImportBody))
189
200
  ], MarketplacesController.prototype, "importEntry", null);
190
201
  MarketplacesController = __decorate([
191
202
  Controller("api/v1/admin/marketplaces"),
192
203
  EnterpriseAdmin(),
193
- __param(0, Inject(MARKETPLACES)),
194
- __param(1, Inject(CATALOG)),
195
- __param(2, Inject(KERNEL_CONFIG))
204
+ __param(0, Inject(MarketplacesService)),
205
+ __param(1, Inject(CatalogService)),
206
+ __param(2, Inject(KernelConfigService))
196
207
  ], MarketplacesController);
197
208
  export { MarketplacesController };
@@ -1,9 +1,15 @@
1
- import { type Logger, type MarketplaceEntry, type MarketplaceSource } from "@capybara-hq/plugin-sdk";
1
+ import { type MarketplaceEntry, type MarketplaceSource } from "@capybara-hq/plugin-sdk";
2
2
  import { type KernelConfig } from "../config/schema.js";
3
3
  import { type Keyring } from "../ctx/secrets.js";
4
- import type { KernelDb } from "../db/kernel-schema.js";
4
+ import type { KernelSchemaDb } from "../db/kernel-schema.js";
5
+ import { EnterpriseAdminLock } from "../identity/enterprise-admin.js";
6
+ import { KernelConfigService } from "../infra/config/kernel-config.service.js";
7
+ import { KernelDb } from "../infra/database/kernel-db.js";
8
+ import { TransactionHost } from "../infra/database/transaction-host.js";
9
+ import type { KernelLogger } from "../log.js";
5
10
  import { type ClaudeEntryOverlay } from "./claude/manifest.js";
6
11
  import { type MarketplaceSkipReason } from "./claude/marketplace.js";
12
+ import { CatalogSourceLock } from "./locks.js";
7
13
  /** 官方清单来源的 id。 */
8
14
  export declare const OFFICIAL_MARKETPLACE_ID = "official";
9
15
  /** 拉取一份清单的超时。 */
@@ -98,14 +104,6 @@ export interface MarketplaceEntryView {
98
104
  */
99
105
  contentChanged: boolean;
100
106
  }
101
- export interface MarketplacesServiceDeps {
102
- db: KernelDb;
103
- config: () => KernelConfig;
104
- keyring: Keyring;
105
- log: Pick<Logger, "info" | "warn" | "error">;
106
- /** 测试可调短。 */
107
- fetchTimeoutMs?: number;
108
- }
109
107
  export interface ActorOpts {
110
108
  actorTokenId?: string;
111
109
  }
@@ -204,7 +202,7 @@ export declare const sourceEffective: (row: {
204
202
  * marketplace disabled (official offline included), entry or version missing ->
205
203
  * `marketplace.entry_not_found`.
206
204
  */
207
- export declare function loadMarketplaceEntry(db: KernelDb, config: KernelConfig, sourceId: string, name: string, version?: string): Promise<{
205
+ export declare function loadMarketplaceEntry(db: KernelSchemaDb, config: KernelConfig, sourceId: string, name: string, version?: string): Promise<{
208
206
  entry: MarketplaceEntry;
209
207
  marketplace: MarketplaceOfEntry;
210
208
  /** The overlay of an entry of a Claude Code marketplace. */
@@ -221,8 +219,19 @@ export declare function loadMarketplaceEntry(db: KernelDb, config: KernelConfig,
221
219
  * by every replica.
222
220
  */
223
221
  export declare class MarketplacesService {
224
- private readonly d;
225
- constructor(d: MarketplacesServiceDeps);
222
+ private readonly kdb;
223
+ /** The enterprise admin lock (identity/enterprise-admin.ts): joins the caller's transaction. */
224
+ private readonly adminLock;
225
+ private readonly sourceLock;
226
+ private readonly config;
227
+ private readonly keyring;
228
+ private readonly log;
229
+ readonly txHost: TransactionHost;
230
+ constructor(kdb: KernelDb,
231
+ /** The enterprise admin lock (identity/enterprise-admin.ts): joins the caller's transaction. */
232
+ adminLock: EnterpriseAdminLock, sourceLock: CatalogSourceLock, config: KernelConfigService, keyring: Keyring, log: KernelLogger, txHost: TransactionHost);
233
+ /** The kernel-schema handle of the current context (the transaction, else the pool). */
234
+ private get db();
226
235
  /**
227
236
  * Creates / updates the official marketplace from config (name, URL, its form per
228
237
  * {@link marketplaceForm}, mirrors; the admin's enable switch is left alone). Called by every
@@ -248,6 +257,7 @@ export declare class MarketplacesService {
248
257
  mirrors?: string[];
249
258
  token?: string;
250
259
  }, opts?: ActorOpts): Promise<MarketplaceView>;
260
+ private writeAdd;
251
261
  /**
252
262
  * Updates an enterprise marketplace (audit `marketplace.updated`, listing the changed fields, the
253
263
  * token's value never recorded; not written when unchanged). `token: null` clears the token.
@@ -266,6 +276,7 @@ export declare class MarketplacesService {
266
276
  enabled?: boolean;
267
277
  token?: string | null;
268
278
  }, opts?: ActorOpts): Promise<MarketplaceView>;
279
+ private writeUpdate;
269
280
  /**
270
281
  * Deletes an enterprise marketplace (audit `marketplace.removed`): its cached entries and token
271
282
  * are deleted; imported catalog items are kept (their marketplace becomes null). Official can
@@ -324,12 +335,18 @@ export declare class MarketplacesService {
324
335
  items: MarketplaceEntryView[];
325
336
  truncated: boolean;
326
337
  }>;
338
+ /**
339
+ * Writes a refresh's result under the marketplace's lock (entries, heads, status, the status
340
+ * change audit); `stale` when the marketplace changed during the fetch (nothing is written).
341
+ */
342
+ private recordRefresh;
327
343
  /**
328
344
  * Replaces the entries of a marketplace; `trees` (a git marketplace) gives each path entry the
329
345
  * tree oid of its directory.
330
346
  */
331
347
  private replaceEntries;
332
348
  private views;
349
+ /** The deployment secrets on the current context's handle (the transaction, else the pool). */
333
350
  private secrets;
334
351
  private checkName;
335
352
  private checkUrls;