@capybara-hq/kernel 0.1.0-rc.0 → 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 (626) hide show
  1. package/bootstrap.json +10 -6
  2. package/dist/admin/admin.controller.d.ts +17 -17
  3. package/dist/admin/admin.controller.js +43 -26
  4. package/dist/admin/admin.module.d.ts +3 -0
  5. package/dist/admin/admin.module.js +22 -0
  6. package/dist/admin/extensions.controller.d.ts +14 -14
  7. package/dist/admin/extensions.controller.js +30 -17
  8. package/dist/admin/setup-lock.d.ts +16 -0
  9. package/dist/admin/setup-lock.js +47 -0
  10. package/dist/admin/setup.controller.d.ts +8 -8
  11. package/dist/admin/setup.controller.js +27 -25
  12. package/dist/admin/setup.service.d.ts +19 -27
  13. package/dist/admin/setup.service.js +61 -61
  14. package/dist/agents/agent-lookup.d.ts +53 -0
  15. package/dist/agents/agent-lookup.js +179 -0
  16. package/dist/agents/agents.controller.d.ts +1 -1
  17. package/dist/agents/agents.controller.js +14 -8
  18. package/dist/agents/agents.module.d.ts +7 -0
  19. package/dist/agents/agents.module.js +41 -0
  20. package/dist/agents/agents.service.d.ts +39 -58
  21. package/dist/agents/agents.service.js +261 -329
  22. package/dist/agents/definition.d.ts +8 -0
  23. package/dist/agents/definition.js +8 -0
  24. package/dist/agents/models.controller.d.ts +1 -1
  25. package/dist/agents/models.controller.js +2 -2
  26. package/dist/agents/templates.controller.d.ts +1 -1
  27. package/dist/agents/templates.controller.js +2 -2
  28. package/dist/agents/templates.d.ts +6 -8
  29. package/dist/agents/templates.js +20 -4
  30. package/dist/app.d.ts +93 -0
  31. package/dist/app.js +150 -0
  32. package/dist/catalog/admin-catalog.controller.d.ts +3 -3
  33. package/dist/catalog/admin-catalog.controller.js +27 -13
  34. package/dist/catalog/catalog-content.d.ts +185 -0
  35. package/dist/catalog/catalog-content.js +323 -0
  36. package/dist/catalog/catalog-items.d.ts +186 -0
  37. package/dist/catalog/catalog-items.js +410 -0
  38. package/dist/catalog/catalog.module.d.ts +14 -0
  39. package/dist/catalog/catalog.module.js +71 -0
  40. package/dist/catalog/catalog.service.d.ts +34 -188
  41. package/dist/catalog/catalog.service.js +155 -489
  42. package/dist/catalog/cli.d.ts +3 -2
  43. package/dist/catalog/cli.js +13 -31
  44. package/dist/catalog/job-ids.d.ts +15 -0
  45. package/dist/catalog/job-ids.js +15 -0
  46. package/dist/catalog/jobs.d.ts +27 -0
  47. package/dist/catalog/jobs.js +70 -0
  48. package/dist/catalog/locks.d.ts +24 -0
  49. package/dist/catalog/locks.js +63 -0
  50. package/dist/catalog/marketplaces.controller.d.ts +4 -4
  51. package/dist/catalog/marketplaces.controller.js +22 -11
  52. package/dist/catalog/marketplaces.service.d.ts +30 -13
  53. package/dist/catalog/marketplaces.service.js +330 -256
  54. package/dist/catalog/org-catalog.controller.d.ts +4 -3
  55. package/dist/catalog/org-catalog.controller.js +29 -14
  56. package/dist/catalog/org-catalog.service.d.ts +32 -198
  57. package/dist/catalog/org-catalog.service.js +159 -400
  58. package/dist/catalog/plugin-import.d.ts +73 -34
  59. package/dist/catalog/plugin-import.js +356 -217
  60. package/dist/catalog/plugin-install.d.ts +83 -41
  61. package/dist/catalog/plugin-install.js +421 -269
  62. package/dist/catalog/plugin-upgrade.d.ts +59 -4
  63. package/dist/catalog/plugin-upgrade.js +407 -282
  64. package/dist/catalog/requests.service.d.ts +27 -15
  65. package/dist/catalog/requests.service.js +201 -145
  66. package/dist/catalog/upgrade-targets.d.ts +4 -7
  67. package/dist/channels/actions.d.ts +6 -4
  68. package/dist/channels/actions.js +1 -1
  69. package/dist/channels/cards.d.ts +2 -2
  70. package/dist/channels/channels.module.d.ts +40 -0
  71. package/dist/channels/channels.module.js +128 -0
  72. package/dist/channels/connections.controller.d.ts +1 -1
  73. package/dist/channels/connections.controller.js +11 -6
  74. package/dist/channels/connections.service.d.ts +43 -21
  75. package/dist/channels/connections.service.js +236 -131
  76. package/dist/channels/inbound.d.ts +34 -38
  77. package/dist/channels/inbound.js +107 -41
  78. package/dist/channels/job-ids.d.ts +10 -0
  79. package/dist/channels/job-ids.js +10 -0
  80. package/dist/channels/jobs.d.ts +85 -0
  81. package/dist/channels/jobs.js +157 -0
  82. package/dist/channels/outbound.d.ts +60 -82
  83. package/dist/channels/outbound.js +165 -193
  84. package/dist/channels/supervisor.d.ts +88 -46
  85. package/dist/channels/supervisor.js +230 -132
  86. package/dist/channels/threads.d.ts +29 -8
  87. package/dist/channels/threads.js +71 -13
  88. package/dist/channels/webhook.d.ts +20 -14
  89. package/dist/channels/webhook.js +51 -20
  90. package/dist/config/load.d.ts +3 -2
  91. package/dist/config/load.js +3 -2
  92. package/dist/config/nacos-source.js +11 -2
  93. package/dist/config/schema.d.ts +16 -1
  94. package/dist/config/schema.js +54 -7
  95. package/dist/conversations/access.d.ts +29 -0
  96. package/dist/conversations/access.js +86 -0
  97. package/dist/conversations/artifacts.d.ts +10 -10
  98. package/dist/conversations/artifacts.js +35 -9
  99. package/dist/conversations/attachments.controller.d.ts +1 -1
  100. package/dist/conversations/attachments.controller.js +8 -6
  101. package/dist/conversations/attachments.module.d.ts +7 -0
  102. package/dist/conversations/attachments.module.js +25 -0
  103. package/dist/conversations/attachments.service.d.ts +30 -22
  104. package/dist/conversations/attachments.service.js +119 -46
  105. package/dist/conversations/conversations.controller.d.ts +8 -7
  106. package/dist/conversations/conversations.controller.js +59 -29
  107. package/dist/conversations/conversations.module.d.ts +8 -0
  108. package/dist/conversations/conversations.module.js +69 -0
  109. package/dist/conversations/conversations.service.d.ts +40 -38
  110. package/dist/conversations/conversations.service.js +130 -140
  111. package/dist/conversations/event-log.d.ts +28 -18
  112. package/dist/conversations/event-log.js +74 -27
  113. package/dist/conversations/files.d.ts +10 -10
  114. package/dist/conversations/files.js +37 -11
  115. package/dist/conversations/idem-keys.d.ts +5 -0
  116. package/dist/conversations/idem-keys.js +5 -0
  117. package/dist/conversations/job-ids.d.ts +6 -0
  118. package/dist/conversations/job-ids.js +6 -0
  119. package/dist/conversations/outputs-read.d.ts +11 -11
  120. package/dist/conversations/outputs-read.js +31 -7
  121. package/dist/conversations/queue.d.ts +48 -56
  122. package/dist/conversations/queue.js +13 -289
  123. package/dist/conversations/queue.service.d.ts +60 -0
  124. package/dist/conversations/queue.service.js +343 -0
  125. package/dist/conversations/sandbox-status.d.ts +13 -10
  126. package/dist/conversations/sandbox-status.js +36 -8
  127. package/dist/conversations/titles.d.ts +71 -24
  128. package/dist/conversations/titles.js +159 -62
  129. package/dist/ctx/bus.js +9 -3
  130. package/dist/ctx/create-ctx.d.ts +6 -0
  131. package/dist/ctx/create-ctx.js +7 -9
  132. package/dist/ctx/lock.d.ts +7 -3
  133. package/dist/ctx/lock.js +9 -20
  134. package/dist/ctx/queue.js +3 -2
  135. package/dist/ctx/secrets.d.ts +10 -2
  136. package/dist/ctx/secrets.js +7 -3
  137. package/dist/db/kernel-schema.d.ts +2 -2
  138. package/dist/db/pool.d.ts +5 -0
  139. package/dist/db/pool.js +1 -0
  140. package/dist/errors.d.ts +2 -0
  141. package/dist/errors.js +2 -0
  142. package/dist/evals/budget.d.ts +42 -21
  143. package/dist/evals/budget.js +114 -62
  144. package/dist/evals/evals.module.d.ts +31 -0
  145. package/dist/evals/evals.module.js +114 -0
  146. package/dist/evals/jobs.d.ts +20 -0
  147. package/dist/evals/jobs.js +45 -0
  148. package/dist/evals/run-replay.d.ts +56 -8
  149. package/dist/evals/run-replay.js +140 -80
  150. package/dist/evals/runs.controller.d.ts +1 -1
  151. package/dist/evals/runs.controller.js +17 -8
  152. package/dist/evals/runs.service.d.ts +23 -45
  153. package/dist/evals/runs.service.js +245 -234
  154. package/dist/evals/sets.controller.d.ts +1 -1
  155. package/dist/evals/sets.controller.js +17 -8
  156. package/dist/evals/sets.service.d.ts +22 -6
  157. package/dist/evals/sets.service.js +248 -194
  158. package/dist/evals/snapshot.d.ts +2 -2
  159. package/dist/evals/step-replay.d.ts +2 -2
  160. package/dist/evals/step-replay.js +1 -1
  161. package/dist/evals/trajectory.controller.d.ts +1 -1
  162. package/dist/evals/trajectory.controller.js +11 -7
  163. package/dist/evals/trajectory.service.d.ts +5 -4
  164. package/dist/evals/trajectory.service.js +30 -7
  165. package/dist/evals/worker.d.ts +44 -27
  166. package/dist/evals/worker.js +220 -120
  167. package/dist/extensions/admin-ops.d.ts +61 -33
  168. package/dist/extensions/admin-ops.js +248 -154
  169. package/dist/extensions/admin-view.d.ts +38 -27
  170. package/dist/extensions/admin-view.js +126 -55
  171. package/dist/extensions/approvals.d.ts +12 -8
  172. package/dist/extensions/approvals.js +73 -46
  173. package/dist/extensions/blobs.d.ts +27 -10
  174. package/dist/extensions/blobs.js +111 -45
  175. package/dist/extensions/bootstrap.d.ts +96 -42
  176. package/dist/extensions/bootstrap.js +303 -155
  177. package/dist/extensions/cli.d.ts +20 -10
  178. package/dist/extensions/cli.js +41 -96
  179. package/dist/extensions/config-issues.d.ts +7 -0
  180. package/dist/extensions/config-issues.js +31 -0
  181. package/dist/extensions/deployment-config-store.d.ts +49 -0
  182. package/dist/extensions/deployment-config-store.js +133 -0
  183. package/dist/extensions/deployment-config.d.ts +58 -67
  184. package/dist/extensions/deployment-config.js +202 -230
  185. package/dist/extensions/enabled.d.ts +5 -5
  186. package/dist/extensions/extensions.module.d.ts +8 -0
  187. package/dist/extensions/extensions.module.js +77 -0
  188. package/dist/extensions/hooks.d.ts +3 -2
  189. package/dist/extensions/hooks.js +1 -1
  190. package/dist/extensions/host.d.ts +72 -68
  191. package/dist/extensions/host.js +191 -152
  192. package/dist/extensions/installs.d.ts +49 -16
  193. package/dist/extensions/installs.js +128 -32
  194. package/dist/extensions/job-ids.d.ts +6 -0
  195. package/dist/extensions/job-ids.js +6 -0
  196. package/dist/extensions/lifecycle-topics.d.ts +18 -0
  197. package/dist/extensions/lifecycle-topics.js +18 -0
  198. package/dist/extensions/lifecycle.d.ts +35 -47
  199. package/dist/extensions/lifecycle.js +103 -39
  200. package/dist/extensions/locks.d.ts +33 -0
  201. package/dist/extensions/locks.js +86 -0
  202. package/dist/extensions/migrate-lock.d.ts +3 -4
  203. package/dist/extensions/org-config.controller.d.ts +1 -1
  204. package/dist/extensions/org-config.controller.js +8 -5
  205. package/dist/extensions/org-config.d.ts +48 -46
  206. package/dist/extensions/org-config.js +284 -226
  207. package/dist/extensions/registry.d.ts +50 -2
  208. package/dist/extensions/registry.js +89 -4
  209. package/dist/extensions/sources.d.ts +12 -8
  210. package/dist/extensions/sources.js +34 -13
  211. package/dist/files/files.module.d.ts +3 -0
  212. package/dist/files/files.module.js +22 -0
  213. package/dist/files/previewers.controller.d.ts +7 -2
  214. package/dist/files/previewers.controller.js +17 -9
  215. package/dist/files/previewers.d.ts +13 -18
  216. package/dist/files/previewers.js +83 -36
  217. package/dist/http/adapter.d.ts +3 -0
  218. package/dist/http/adapter.js +25 -0
  219. package/dist/http/api.module.d.ts +3 -110
  220. package/dist/http/api.module.js +47 -355
  221. package/dist/http/app.d.ts +11 -15
  222. package/dist/http/app.js +52 -47
  223. package/dist/http/error-filter.module.d.ts +5 -0
  224. package/dist/http/error-filter.module.js +18 -0
  225. package/dist/http/error.filter.js +2 -2
  226. package/dist/identity/accounts.d.ts +82 -29
  227. package/dist/identity/accounts.js +294 -175
  228. package/dist/identity/api-tokens.d.ts +11 -7
  229. package/dist/identity/api-tokens.js +71 -44
  230. package/dist/identity/audit.d.ts +7 -4
  231. package/dist/identity/audit.js +5 -1
  232. package/dist/identity/auth.controller.d.ts +11 -10
  233. package/dist/identity/auth.controller.js +31 -25
  234. package/dist/identity/auth.guard.d.ts +3 -3
  235. package/dist/identity/auth.guard.js +6 -4
  236. package/dist/identity/binding.d.ts +9 -11
  237. package/dist/identity/binding.js +41 -13
  238. package/dist/identity/enterprise-admin.d.ts +18 -12
  239. package/dist/identity/enterprise-admin.js +67 -13
  240. package/dist/identity/external-identity-lock.d.ts +17 -0
  241. package/dist/identity/external-identity-lock.js +39 -0
  242. package/dist/identity/external.d.ts +19 -15
  243. package/dist/identity/external.js +163 -125
  244. package/dist/identity/identity.module.d.ts +6 -0
  245. package/dist/identity/identity.module.js +56 -0
  246. package/dist/identity/me.controller.d.ts +16 -15
  247. package/dist/identity/me.controller.js +37 -31
  248. package/dist/identity/sessions.d.ts +12 -10
  249. package/dist/identity/sessions.js +74 -42
  250. package/dist/identity/settings.d.ts +20 -14
  251. package/dist/identity/settings.js +85 -57
  252. package/dist/identity/sso.controller.d.ts +7 -7
  253. package/dist/identity/sso.controller.js +13 -9
  254. package/dist/identity/sso.d.ts +9 -12
  255. package/dist/identity/sso.js +54 -24
  256. package/dist/inbox/inbox.module.d.ts +3 -0
  257. package/dist/inbox/inbox.module.js +22 -0
  258. package/dist/inbox/inbox.service.d.ts +7 -9
  259. package/dist/inbox/inbox.service.js +32 -11
  260. package/dist/index.d.ts +19 -12
  261. package/dist/index.js +13 -8
  262. package/dist/infra/cache/cache.module.d.ts +3 -0
  263. package/dist/infra/cache/cache.module.js +16 -0
  264. package/dist/infra/cache/cache.service.d.ts +21 -0
  265. package/dist/infra/cache/cache.service.js +80 -0
  266. package/dist/infra/cache/cacheable.decorator.d.ts +32 -0
  267. package/dist/infra/cache/cacheable.decorator.js +83 -0
  268. package/dist/infra/cli/kernel-cli.module.d.ts +66 -0
  269. package/dist/infra/cli/kernel-cli.module.js +165 -0
  270. package/dist/infra/close-within.d.ts +15 -0
  271. package/dist/infra/close-within.js +36 -0
  272. package/dist/infra/config/config.module.d.ts +13 -0
  273. package/dist/infra/config/config.module.js +39 -0
  274. package/dist/infra/config/kernel-config.service.d.ts +25 -0
  275. package/dist/infra/config/kernel-config.service.js +126 -0
  276. package/dist/infra/database/after-commit.d.ts +6 -0
  277. package/dist/infra/database/after-commit.js +9 -0
  278. package/dist/infra/database/database.module.d.ts +25 -0
  279. package/dist/infra/database/database.module.js +90 -0
  280. package/dist/infra/database/kernel-db.d.ts +22 -0
  281. package/dist/infra/database/kernel-db.js +65 -0
  282. package/dist/infra/database/transaction-host.d.ts +50 -0
  283. package/dist/infra/database/transaction-host.js +125 -0
  284. package/dist/infra/database/transactional.decorator.d.ts +15 -0
  285. package/dist/infra/database/transactional.decorator.js +27 -0
  286. package/dist/infra/database/xact-lock.d.ts +17 -0
  287. package/dist/infra/database/xact-lock.js +43 -0
  288. package/dist/infra/events/kernel-events.d.ts +96 -0
  289. package/dist/infra/events/kernel-events.js +65 -0
  290. package/dist/infra/health/health.controller.d.ts +26 -0
  291. package/dist/infra/health/health.controller.js +104 -0
  292. package/dist/infra/health/health.module.d.ts +9 -0
  293. package/dist/infra/health/health.module.js +24 -0
  294. package/dist/infra/health/health.options.d.ts +10 -0
  295. package/dist/infra/health/health.options.js +15 -0
  296. package/dist/infra/health/shutdown-state.d.ts +6 -0
  297. package/dist/infra/health/shutdown-state.js +2 -0
  298. package/dist/infra/lifecycle/graceful-shutdown.module.d.ts +6 -0
  299. package/dist/infra/lifecycle/graceful-shutdown.module.js +23 -0
  300. package/dist/infra/lifecycle/graceful-shutdown.service.d.ts +70 -0
  301. package/dist/infra/lifecycle/graceful-shutdown.service.js +135 -0
  302. package/dist/infra/lifecycle/process-guards.d.ts +52 -0
  303. package/dist/infra/lifecycle/process-guards.js +86 -0
  304. package/dist/infra/lifecycle/shutdown-signals.d.ts +30 -0
  305. package/dist/infra/lifecycle/shutdown-signals.js +48 -0
  306. package/dist/infra/lock/key-template.d.ts +13 -0
  307. package/dist/infra/lock/key-template.js +46 -0
  308. package/dist/infra/lock/lock.module.d.ts +3 -0
  309. package/dist/infra/lock/lock.module.js +16 -0
  310. package/dist/infra/lock/lock.service.d.ts +120 -0
  311. package/dist/infra/lock/lock.service.js +343 -0
  312. package/dist/infra/lock/shared-lease.d.ts +44 -0
  313. package/dist/infra/lock/shared-lease.js +121 -0
  314. package/dist/infra/lock/with-lock.decorator.d.ts +28 -0
  315. package/dist/infra/lock/with-lock.decorator.js +49 -0
  316. package/dist/infra/logging/logging.module.d.ts +16 -0
  317. package/dist/infra/logging/logging.module.js +34 -0
  318. package/dist/infra/queue/configured-processor.d.ts +18 -0
  319. package/dist/infra/queue/configured-processor.js +23 -0
  320. package/dist/infra/queue/job-failure.d.ts +18 -0
  321. package/dist/infra/queue/job-failure.js +26 -0
  322. package/dist/infra/queue/queue-shutdown.d.ts +27 -0
  323. package/dist/infra/queue/queue-shutdown.js +81 -0
  324. package/dist/infra/queue/queue.module.d.ts +16 -0
  325. package/dist/infra/queue/queue.module.js +61 -0
  326. package/dist/infra/queue/redis-connection.d.ts +7 -0
  327. package/dist/infra/queue/redis-connection.js +18 -0
  328. package/dist/infra/queue/retired-schedulers.d.ts +7 -0
  329. package/dist/infra/queue/retired-schedulers.js +9 -0
  330. package/dist/infra/queue/run-job.d.ts +16 -0
  331. package/dist/infra/queue/run-job.js +19 -0
  332. package/dist/infra/redis/redis.module.d.ts +24 -0
  333. package/dist/infra/redis/redis.module.js +87 -0
  334. package/dist/infra/schedule/cron-tick.d.ts +12 -0
  335. package/dist/infra/schedule/cron-tick.js +25 -0
  336. package/dist/infra/schedule/locked-cron.decorator.d.ts +27 -0
  337. package/dist/infra/schedule/locked-cron.decorator.js +53 -0
  338. package/dist/infra/schedule/locked-interval.d.ts +69 -0
  339. package/dist/infra/schedule/locked-interval.js +190 -0
  340. package/dist/infra/schedule/locked-tick.d.ts +90 -0
  341. package/dist/infra/schedule/locked-tick.js +137 -0
  342. package/dist/infra/schedule/schedule.module.d.ts +8 -0
  343. package/dist/infra/schedule/schedule.module.js +27 -0
  344. package/dist/infra/schedule/scheduled-runs.d.ts +69 -0
  345. package/dist/infra/schedule/scheduled-runs.js +163 -0
  346. package/dist/infra/swagger/swagger.d.ts +16 -0
  347. package/dist/infra/swagger/swagger.js +31 -0
  348. package/dist/infra/throttler/credential-throttler.d.ts +35 -0
  349. package/dist/infra/throttler/credential-throttler.js +77 -0
  350. package/dist/infra/throttler/named-throttlers.d.ts +31 -0
  351. package/dist/infra/throttler/named-throttlers.js +119 -0
  352. package/dist/infra/throttler/redis-throttler-storage.d.ts +38 -0
  353. package/dist/infra/throttler/redis-throttler-storage.js +130 -0
  354. package/dist/infra/throttler/throttler.guard.d.ts +23 -0
  355. package/dist/infra/throttler/throttler.guard.js +68 -0
  356. package/dist/infra/throttler/throttler.module.d.ts +15 -0
  357. package/dist/infra/throttler/throttler.module.js +53 -0
  358. package/dist/infra/tokens.d.ts +15 -0
  359. package/dist/infra/tokens.js +15 -0
  360. package/dist/infra/validation/create-zod-dto.d.ts +23 -0
  361. package/dist/infra/validation/create-zod-dto.js +35 -0
  362. package/dist/infra/validation/parse-with-zod.d.ts +7 -0
  363. package/dist/infra/validation/parse-with-zod.js +12 -0
  364. package/dist/infra/validation/validation.module.d.ts +3 -0
  365. package/dist/infra/validation/validation.module.js +16 -0
  366. package/dist/infra/validation/zod-params.d.ts +7 -0
  367. package/dist/infra/validation/zod-params.js +42 -0
  368. package/dist/infra/validation/zod-validation.pipe.d.ts +11 -0
  369. package/dist/infra/validation/zod-validation.pipe.js +31 -0
  370. package/dist/kernel.d.ts +9 -241
  371. package/dist/kernel.js +8 -1305
  372. package/dist/kernel.module.d.ts +17 -0
  373. package/dist/kernel.module.js +136 -0
  374. package/dist/lifecycle/kernel-lifecycle.d.ts +140 -0
  375. package/dist/lifecycle/kernel-lifecycle.js +451 -0
  376. package/dist/lifecycle/tokens.d.ts +3 -0
  377. package/dist/lifecycle/tokens.js +3 -0
  378. package/dist/log-config.d.ts +9 -0
  379. package/dist/log-config.js +27 -0
  380. package/dist/log-context.d.ts +34 -0
  381. package/dist/log-context.js +44 -0
  382. package/dist/log-loki.d.ts +34 -0
  383. package/dist/log-loki.js +145 -0
  384. package/dist/log.d.ts +41 -10
  385. package/dist/log.js +91 -17
  386. package/dist/models/models.module.d.ts +3 -0
  387. package/dist/models/models.module.js +24 -0
  388. package/dist/models/prices.d.ts +8 -2
  389. package/dist/models/prices.js +65 -37
  390. package/dist/models/purposes.controller.d.ts +1 -1
  391. package/dist/models/purposes.controller.js +5 -6
  392. package/dist/models/purposes.d.ts +35 -13
  393. package/dist/models/purposes.js +101 -51
  394. package/dist/net/public-address.js +3 -2
  395. package/dist/orgs/directory-sync.controller.d.ts +1 -1
  396. package/dist/orgs/directory-sync.controller.js +2 -2
  397. package/dist/orgs/directory-sync.d.ts +61 -31
  398. package/dist/orgs/directory-sync.js +212 -125
  399. package/dist/orgs/invitations.controller.d.ts +8 -8
  400. package/dist/orgs/invitations.controller.js +27 -26
  401. package/dist/orgs/invitations.service.d.ts +12 -9
  402. package/dist/orgs/invitations.service.js +130 -92
  403. package/dist/orgs/job-ids.d.ts +8 -0
  404. package/dist/orgs/job-ids.js +8 -0
  405. package/dist/orgs/members.service.d.ts +19 -12
  406. package/dist/orgs/members.service.js +161 -117
  407. package/dist/orgs/offboarding.d.ts +54 -57
  408. package/dist/orgs/offboarding.js +161 -71
  409. package/dist/orgs/org-lock.d.ts +28 -19
  410. package/dist/orgs/org-lock.js +81 -35
  411. package/dist/orgs/org.guard.d.ts +1 -1
  412. package/dist/orgs/org.guard.js +2 -2
  413. package/dist/orgs/orgs.controller.d.ts +13 -13
  414. package/dist/orgs/orgs.controller.js +29 -17
  415. package/dist/orgs/orgs.module.d.ts +6 -0
  416. package/dist/orgs/orgs.module.js +68 -0
  417. package/dist/orgs/orgs.service.d.ts +30 -19
  418. package/dist/orgs/orgs.service.js +139 -86
  419. package/dist/orgs/settings.controller.d.ts +1 -1
  420. package/dist/orgs/settings.controller.js +8 -6
  421. package/dist/orgs/settings.service.d.ts +14 -8
  422. package/dist/orgs/settings.service.js +75 -46
  423. package/dist/overrides.d.ts +56 -0
  424. package/dist/overrides.js +30 -0
  425. package/dist/roles/gateway-role.d.ts +43 -0
  426. package/dist/roles/gateway-role.js +98 -0
  427. package/dist/roles/gateway.module.d.ts +8 -0
  428. package/dist/roles/gateway.module.js +28 -0
  429. package/dist/roles/worker-role.d.ts +63 -0
  430. package/dist/roles/worker-role.js +144 -0
  431. package/dist/roles/worker.module.d.ts +14 -0
  432. package/dist/roles/worker.module.js +90 -0
  433. package/dist/runtime/abort.js +19 -2
  434. package/dist/runtime/checkpointer.d.ts +8 -3
  435. package/dist/runtime/checkpointer.js +87 -55
  436. package/dist/runtime/conversation-lock.d.ts +20 -11
  437. package/dist/runtime/conversation-lock.js +62 -72
  438. package/dist/runtime/hook-calls.d.ts +3 -3
  439. package/dist/runtime/hook-calls.js +1 -6
  440. package/dist/runtime/job-ids.d.ts +10 -0
  441. package/dist/runtime/job-ids.js +10 -0
  442. package/dist/runtime/langgraph-loop.js +1 -1
  443. package/dist/runtime/loop.d.ts +7 -0
  444. package/dist/runtime/loop.js +14 -0
  445. package/dist/runtime/maintenance-queue.d.ts +10 -0
  446. package/dist/runtime/maintenance-queue.js +10 -0
  447. package/dist/runtime/maintenance.d.ts +45 -74
  448. package/dist/runtime/maintenance.js +139 -136
  449. package/dist/runtime/model-call.d.ts +7 -4
  450. package/dist/runtime/model-call.js +24 -57
  451. package/dist/runtime/providers.d.ts +17 -6
  452. package/dist/runtime/providers.js +66 -25
  453. package/dist/runtime/quota.d.ts +17 -3
  454. package/dist/runtime/quota.js +27 -2
  455. package/dist/runtime/retired-schedulers.d.ts +7 -0
  456. package/dist/runtime/retired-schedulers.js +31 -0
  457. package/dist/runtime/run-control.d.ts +33 -0
  458. package/dist/runtime/run-control.js +77 -0
  459. package/dist/runtime/run-finish.d.ts +26 -17
  460. package/dist/runtime/run-finish.js +98 -51
  461. package/dist/runtime/run-jobs.d.ts +48 -0
  462. package/dist/runtime/run-jobs.js +95 -0
  463. package/dist/runtime/run-processors.d.ts +60 -0
  464. package/dist/runtime/run-processors.js +185 -0
  465. package/dist/runtime/run-queue.d.ts +32 -57
  466. package/dist/runtime/run-queue.js +291 -295
  467. package/dist/runtime/run-steps.d.ts +39 -0
  468. package/dist/runtime/run-steps.js +96 -0
  469. package/dist/runtime/run-worker.d.ts +121 -75
  470. package/dist/runtime/run-worker.js +340 -225
  471. package/dist/runtime/runtime.module.d.ts +10 -0
  472. package/dist/runtime/runtime.module.js +112 -0
  473. package/dist/runtime/step-log.d.ts +40 -0
  474. package/dist/runtime/step-log.js +94 -0
  475. package/dist/runtime/stream.controller.d.ts +5 -8
  476. package/dist/runtime/stream.controller.js +14 -12
  477. package/dist/runtime/stream.d.ts +24 -6
  478. package/dist/runtime/stream.js +78 -7
  479. package/dist/runtime/subagents/child.d.ts +3 -44
  480. package/dist/runtime/subagents/child.js +0 -79
  481. package/dist/runtime/subagents/definition.d.ts +4 -4
  482. package/dist/runtime/subagents/definition.js +2 -2
  483. package/dist/runtime/subagents/dispatch.d.ts +87 -6
  484. package/dist/runtime/subagents/dispatch.js +135 -140
  485. package/dist/runtime/subagents/limits.d.ts +9 -4
  486. package/dist/runtime/subagents/limits.js +4 -2
  487. package/dist/runtime/subagents/org-agents.d.ts +4 -4
  488. package/dist/runtime/subagents/org-agents.js +1 -1
  489. package/dist/runtime/subagents/progress.d.ts +2 -2
  490. package/dist/runtime/subagents/roster.d.ts +3 -3
  491. package/dist/runtime/subagents/roster.js +1 -1
  492. package/dist/runtime/subagents/skill-fork.d.ts +6 -7
  493. package/dist/runtime/subagents/skill-fork.js +16 -5
  494. package/dist/runtime/subagents/subagents.service.d.ts +40 -0
  495. package/dist/runtime/subagents/subagents.service.js +101 -0
  496. package/dist/runtime/usage-report.d.ts +94 -52
  497. package/dist/runtime/usage-report.js +200 -99
  498. package/dist/runtime/waits.d.ts +125 -57
  499. package/dist/runtime/waits.js +431 -208
  500. package/dist/sandbox/job-ids.d.ts +10 -0
  501. package/dist/sandbox/job-ids.js +10 -0
  502. package/dist/sandbox/jobs.d.ts +41 -0
  503. package/dist/sandbox/jobs.js +113 -0
  504. package/dist/sandbox/leases.d.ts +39 -31
  505. package/dist/sandbox/leases.js +117 -257
  506. package/dist/sandbox/providers.d.ts +19 -0
  507. package/dist/sandbox/providers.js +38 -0
  508. package/dist/sandbox/sandbox.module.d.ts +8 -0
  509. package/dist/sandbox/sandbox.module.js +30 -0
  510. package/dist/sandbox/sandbox.service.d.ts +24 -29
  511. package/dist/sandbox/sandbox.service.js +106 -75
  512. package/dist/skills/catalog.d.ts +33 -20
  513. package/dist/skills/catalog.js +96 -53
  514. package/dist/skills/changes.controller.d.ts +4 -4
  515. package/dist/skills/changes.controller.js +15 -9
  516. package/dist/skills/changes.service.d.ts +28 -18
  517. package/dist/skills/changes.service.js +421 -364
  518. package/dist/skills/invocable.controller.d.ts +1 -1
  519. package/dist/skills/invocable.controller.js +8 -5
  520. package/dist/skills/invoke.d.ts +16 -15
  521. package/dist/skills/invoke.js +48 -17
  522. package/dist/skills/skills.controller.d.ts +1 -1
  523. package/dist/skills/skills.controller.js +11 -6
  524. package/dist/skills/skills.module.d.ts +6 -0
  525. package/dist/skills/skills.module.js +30 -0
  526. package/dist/skills/skills.service.d.ts +47 -30
  527. package/dist/skills/skills.service.js +221 -158
  528. package/dist/storage/job-ids.d.ts +6 -0
  529. package/dist/storage/job-ids.js +6 -0
  530. package/dist/storage/purge.d.ts +22 -7
  531. package/dist/storage/purge.js +55 -3
  532. package/dist/storage/storage.module.d.ts +6 -0
  533. package/dist/storage/storage.module.js +23 -0
  534. package/dist/storage/storage.service.d.ts +18 -4
  535. package/dist/storage/storage.service.js +44 -3
  536. package/dist/tools/approvals.controller.d.ts +1 -1
  537. package/dist/tools/approvals.controller.js +12 -8
  538. package/dist/tools/approvals.service.d.ts +27 -25
  539. package/dist/tools/approvals.service.js +324 -258
  540. package/dist/tools/breaker.d.ts +2 -2
  541. package/dist/tools/breaker.js +21 -3
  542. package/dist/tools/builtins/ask-user.d.ts +2 -2
  543. package/dist/tools/builtins/ask-user.js +1 -1
  544. package/dist/tools/builtins/builtin-tools.d.ts +21 -0
  545. package/dist/tools/builtins/builtin-tools.js +80 -0
  546. package/dist/tools/builtins/read-tool-output.d.ts +2 -2
  547. package/dist/tools/builtins/read-tool-output.js +1 -1
  548. package/dist/tools/builtins/sandbox/bash.js +2 -2
  549. package/dist/tools/builtins/sandbox/common.d.ts +7 -4
  550. package/dist/tools/builtins/sandbox/common.js +5 -3
  551. package/dist/tools/builtins/sandbox/deliver.js +2 -2
  552. package/dist/tools/builtins/sandbox/edit.js +1 -1
  553. package/dist/tools/builtins/sandbox/glob.js +2 -2
  554. package/dist/tools/builtins/sandbox/grep.js +2 -2
  555. package/dist/tools/builtins/sandbox/read.js +1 -1
  556. package/dist/tools/builtins/sandbox/write.js +1 -1
  557. package/dist/tools/builtins/skill-load.d.ts +3 -3
  558. package/dist/tools/builtins/skill-load.js +1 -1
  559. package/dist/tools/canonical-json.d.ts +6 -0
  560. package/dist/tools/canonical-json.js +16 -0
  561. package/dist/tools/connector-content.controller.d.ts +1 -1
  562. package/dist/tools/connector-content.controller.js +11 -6
  563. package/dist/tools/connector-content.d.ts +12 -15
  564. package/dist/tools/connector-content.js +53 -18
  565. package/dist/tools/connectors.controller.d.ts +1 -1
  566. package/dist/tools/connectors.controller.js +21 -10
  567. package/dist/tools/connectors.service.d.ts +31 -13
  568. package/dist/tools/connectors.service.js +434 -344
  569. package/dist/tools/credentials.d.ts +17 -20
  570. package/dist/tools/credentials.js +55 -34
  571. package/dist/tools/drift.d.ts +29 -41
  572. package/dist/tools/drift.js +111 -79
  573. package/dist/tools/info.d.ts +12 -9
  574. package/dist/tools/info.js +33 -7
  575. package/dist/tools/job-ids.d.ts +13 -0
  576. package/dist/tools/job-ids.js +15 -0
  577. package/dist/tools/jobs.d.ts +24 -0
  578. package/dist/tools/jobs.js +69 -0
  579. package/dist/tools/oauth/flow-paths.d.ts +16 -0
  580. package/dist/tools/oauth/flow-paths.js +38 -0
  581. package/dist/tools/oauth/flow.d.ts +30 -30
  582. package/dist/tools/oauth/flow.js +109 -81
  583. package/dist/tools/oauth/oauth.controller.d.ts +3 -3
  584. package/dist/tools/oauth/oauth.controller.js +12 -9
  585. package/dist/tools/oauth/tokens.d.ts +11 -3
  586. package/dist/tools/oauth/tokens.js +15 -14
  587. package/dist/tools/outputs.d.ts +13 -4
  588. package/dist/tools/outputs.js +47 -3
  589. package/dist/tools/pipeline.d.ts +62 -46
  590. package/dist/tools/pipeline.js +145 -64
  591. package/dist/tools/policy.d.ts +2 -2
  592. package/dist/tools/questions.controller.d.ts +1 -1
  593. package/dist/tools/questions.controller.js +8 -5
  594. package/dist/tools/questions.service.d.ts +25 -24
  595. package/dist/tools/questions.service.js +201 -142
  596. package/dist/tools/registry.d.ts +30 -20
  597. package/dist/tools/registry.js +73 -37
  598. package/dist/tools/specs.d.ts +5 -4
  599. package/dist/tools/specs.js +3 -1
  600. package/dist/tools/tools.module.d.ts +10 -0
  601. package/dist/tools/tools.module.js +91 -0
  602. package/dist/ui/call-extension.d.ts +16 -0
  603. package/dist/ui/call-extension.js +38 -0
  604. package/dist/ui/embed-token.d.ts +9 -5
  605. package/dist/ui/embed-token.js +34 -6
  606. package/dist/ui/ui-stream.d.ts +22 -17
  607. package/dist/ui/ui-stream.js +72 -12
  608. package/dist/ui/ui.module.d.ts +7 -0
  609. package/dist/ui/ui.module.js +28 -0
  610. package/dist/ui/views.controller.d.ts +14 -12
  611. package/dist/ui/views.controller.js +32 -25
  612. package/dist/ui/views.d.ts +9 -57
  613. package/dist/ui/views.js +43 -45
  614. package/package.json +11 -2
  615. package/dist/http/health.controller.d.ts +0 -26
  616. package/dist/http/health.controller.js +0 -79
  617. package/dist/http/tokens.d.ts +0 -131
  618. package/dist/http/tokens.js +0 -131
  619. package/dist/http/zod.pipe.d.ts +0 -8
  620. package/dist/http/zod.pipe.js +0 -14
  621. package/dist/identity/rate-limit.d.ts +0 -55
  622. package/dist/identity/rate-limit.js +0 -121
  623. package/dist/sandbox/lifecycle.d.ts +0 -21
  624. package/dist/sandbox/lifecycle.js +0 -68
  625. /package/dist/http/{gateway.module.d.ts → gateway-routes.d.ts} +0 -0
  626. /package/dist/http/{gateway.module.js → gateway-routes.js} +0 -0
@@ -1,4 +1,19 @@
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 { createHash } from "node:crypto";
11
+ import { Inject, Injectable } from "@nestjs/common";
12
+ import { KernelConfigService } from "../infra/config/kernel-config.service.js";
13
+ import { KernelDb } from "../infra/database/kernel-db.js";
14
+ import { TransactionHost } from "../infra/database/transaction-host.js";
15
+ import { Transactional } from "../infra/database/transactional.decorator.js";
16
+ import { StorageService } from "../storage/storage.service.js";
2
17
  /**
3
18
  * Content-addressed extension package store (C13): one copy per sha256 of the whole tgz.
4
19
  * - With object storage: `deployment/plugins/blobs/<sha256>.tgz` (`blob_store = object`);
@@ -17,10 +32,46 @@ export class ExtensionBlobIntegrityError extends Error {
17
32
  /** 对象存储里的键(相对 `deployment/`)。 */
18
33
  export const blobKey = (sha256) => `plugins/blobs/${sha256}.tgz`;
19
34
  const SHA256_RE = /^[0-9a-f]{64}$/;
20
- export class ExtensionBlobs {
21
- d;
22
- constructor(d) {
23
- this.d = d;
35
+ /** How many packages {@link ExtensionBlobs.remember} keeps; the oldest is dropped beyond it. */
36
+ const REMEMBERED_MAX = 8;
37
+ let ExtensionBlobs = class ExtensionBlobs {
38
+ db;
39
+ txHost;
40
+ storage;
41
+ config;
42
+ /**
43
+ * CLI only: packages the CLI process imported itself and reads back before the store, since such
44
+ * a package may be recorded in an object store the CLI cannot read. Each entry's sha256 was
45
+ * checked by {@link remember}; content-addressed and immutable, so it is never stale. Bounded
46
+ * ({@link REMEMBERED_MAX}, oldest dropped); a kernel replica never fills it.
47
+ */
48
+ local = new Map();
49
+ constructor(db, txHost,
50
+ /** Without an object-store extension (the CLI) packages go to PG. */
51
+ storage, config) {
52
+ this.db = db;
53
+ this.txHost = txHost;
54
+ this.storage = storage;
55
+ this.config = config;
56
+ }
57
+ /** `packages.maxBytes` (read at every call). */
58
+ maxBytes() {
59
+ return this.config.get().packages.maxBytes;
60
+ }
61
+ /**
62
+ * CLI only: keeps `bytes` for {@link get} in this process (see {@link local}). Bytes whose sha256
63
+ * is not `sha256` throw {@link ExtensionBlobIntegrityError} and are not kept.
64
+ */
65
+ remember(sha256, bytes) {
66
+ if (createHash("sha256").update(bytes).digest("hex") !== sha256) {
67
+ throw new ExtensionBlobIntegrityError(sha256);
68
+ }
69
+ this.local.delete(sha256);
70
+ this.local.set(sha256, bytes);
71
+ while (this.local.size > REMEMBERED_MAX) {
72
+ const oldest = this.local.keys().next().value;
73
+ this.local.delete(oldest);
74
+ }
24
75
  }
25
76
  /**
26
77
  * Stores a validated package (the result of {@link readExtensionPackage}) and its bytes, and writes
@@ -28,13 +79,13 @@ export class ExtensionBlobs {
28
79
  * (content-addressed, idempotent; replicas writing the same package concurrently is harmless).
29
80
  */
30
81
  async put(p, bytes, src) {
31
- if (bytes.byteLength > this.d.maxBytes()) {
32
- throw new Error(`the package is larger than ${this.d.maxBytes()} bytes`);
82
+ if (bytes.byteLength > this.maxBytes()) {
83
+ throw new Error(`the package is larger than ${this.maxBytes()} bytes`);
33
84
  }
34
85
  if (createHash("sha256").update(bytes).digest("hex") !== p.sha256) {
35
86
  throw new ExtensionBlobIntegrityError(p.sha256);
36
87
  }
37
- const existing = await this.d.db
88
+ const existing = await this.db
38
89
  .selectFrom("extension_packages")
39
90
  .select("blob_store")
40
91
  .where("sha256", "=", p.sha256)
@@ -44,58 +95,59 @@ export class ExtensionBlobs {
44
95
  await this.repair(p.sha256, existing.blob_store, bytes);
45
96
  return;
46
97
  }
47
- const store = src.store ?? (this.d.storage?.available ? "object" : "pg");
98
+ const store = src.store ?? (this.storage.available ? "object" : "pg");
48
99
  if (store === "object") {
49
- if (!this.d.storage)
100
+ if (!this.storage.available)
50
101
  throw new Error("object storage is not available");
51
- await this.d.storage.deployment().put(blobKey(p.sha256), bytes, {
102
+ await this.storage.deployment().put(blobKey(p.sha256), bytes, {
52
103
  contentType: "application/gzip",
53
104
  size: bytes.byteLength,
54
105
  });
55
106
  }
56
- const m = p.section.manifest;
57
107
  // the row stores the plugin's extension section as reviewed (without the name / version copy)
58
108
  const { name: _name, version: _version, ...section } = p.section;
59
- await this.d.db.transaction().execute(async (trx) => {
60
- const inserted = await trx
61
- .insertInto("extension_packages")
62
- .values({
63
- sha256: p.sha256,
64
- name: m.name,
65
- package_name: String(p.packageJson.name),
66
- version: m.version,
67
- size: p.size,
68
- section: JSON.stringify(section),
69
- blob_store: store,
70
- source: src.source,
71
- source_ref: src.ref,
72
- uploaded_by: src.actor,
73
- })
109
+ await this.record(p, section, bytes, src, store);
110
+ }
111
+ async record(p, section, bytes, src, store) {
112
+ const m = p.section.manifest;
113
+ const inserted = await this.db
114
+ .insertInto("extension_packages")
115
+ .values({
116
+ sha256: p.sha256,
117
+ name: m.name,
118
+ package_name: String(p.packageJson.name),
119
+ version: m.version,
120
+ size: p.size,
121
+ section: JSON.stringify(section),
122
+ blob_store: store,
123
+ source: src.source,
124
+ source_ref: src.ref,
125
+ uploaded_by: src.actor,
126
+ })
127
+ .onConflict((oc) => oc.column("sha256").doNothing())
128
+ .returning("sha256")
129
+ .executeTakeFirst();
130
+ if (inserted && store === "pg") {
131
+ await this.db
132
+ .insertInto("extension_blobs")
133
+ .values({ sha256: p.sha256, bytes: Buffer.from(bytes) })
74
134
  .onConflict((oc) => oc.column("sha256").doNothing())
75
- .returning("sha256")
76
- .executeTakeFirst();
77
- if (inserted && store === "pg") {
78
- await trx
79
- .insertInto("extension_blobs")
80
- .values({ sha256: p.sha256, bytes: Buffer.from(bytes) })
81
- .onConflict((oc) => oc.column("sha256").doNothing())
82
- .execute();
83
- }
84
- });
135
+ .execute();
136
+ }
85
137
  }
86
138
  /** 已有记录的包:按记录的存放位置检查字节在不在,不在就写回(调用方已校验 sha256)。 */
87
139
  async repair(sha256, store, bytes) {
88
140
  if (store === "pg") {
89
- await this.d.db
141
+ await this.db
90
142
  .insertInto("extension_blobs")
91
143
  .values({ sha256, bytes: Buffer.from(bytes) })
92
144
  .onConflict((oc) => oc.column("sha256").doNothing())
93
145
  .execute();
94
146
  return;
95
147
  }
96
- if (!this.d.storage?.available)
148
+ if (!this.storage.available)
97
149
  return;
98
- const d = this.d.storage.deployment();
150
+ const d = this.storage.deployment();
99
151
  if ((await d.head(blobKey(sha256))) === null) {
100
152
  await d.put(blobKey(sha256), bytes, {
101
153
  contentType: "application/gzip",
@@ -107,7 +159,10 @@ export class ExtensionBlobs {
107
159
  async get(sha256) {
108
160
  if (!SHA256_RE.test(sha256))
109
161
  throw new Error(`invalid package sha256 "${sha256}"`);
110
- const row = await this.d.db
162
+ const local = this.local.get(sha256);
163
+ if (local)
164
+ return local;
165
+ const row = await this.db
111
166
  .selectFrom("extension_packages")
112
167
  .select("blob_store")
113
168
  .where("sha256", "=", sha256)
@@ -116,7 +171,7 @@ export class ExtensionBlobs {
116
171
  throw new Error(`plugin package ${sha256} is not in the package store`);
117
172
  let bytes;
118
173
  if (row.blob_store === "pg") {
119
- const b = await this.d.db
174
+ const b = await this.db
120
175
  .selectFrom("extension_blobs")
121
176
  .select("bytes")
122
177
  .where("sha256", "=", sha256)
@@ -126,21 +181,32 @@ export class ExtensionBlobs {
126
181
  bytes = b.bytes;
127
182
  }
128
183
  else {
129
- if (!this.d.storage)
184
+ if (!this.storage.available)
130
185
  throw new Error("object storage is not available");
131
- const got = await this.d.storage.deployment().get(blobKey(sha256));
186
+ const got = await this.storage.deployment().get(blobKey(sha256));
132
187
  if (!got) {
133
188
  // 常见原因:对象存储换了桶 / 地址,旧桶里的包没有带过来
134
189
  throw new Error(`plugin package ${sha256} is recorded in object storage, but deployment/${blobKey(sha256)} is missing there; if the object store's bucket or endpoint was changed, copy the deployment/ prefix from the old bucket, or upload the same package again to restore it`);
135
190
  }
136
- bytes = await readCapped(got.body, this.d.maxBytes());
191
+ bytes = await readCapped(got.body, this.maxBytes());
137
192
  }
138
193
  if (createHash("sha256").update(bytes).digest("hex") !== sha256) {
139
194
  throw new ExtensionBlobIntegrityError(sha256);
140
195
  }
141
196
  return bytes;
142
197
  }
143
- }
198
+ };
199
+ __decorate([
200
+ Transactional()
201
+ ], ExtensionBlobs.prototype, "record", null);
202
+ ExtensionBlobs = __decorate([
203
+ Injectable(),
204
+ __param(0, Inject(KernelDb)),
205
+ __param(1, Inject(TransactionHost)),
206
+ __param(2, Inject(StorageService)),
207
+ __param(3, Inject(KernelConfigService))
208
+ ], ExtensionBlobs);
209
+ export { ExtensionBlobs };
144
210
  async function readCapped(body, max) {
145
211
  const reader = body.getReader();
146
212
  const chunks = [];
@@ -1,28 +1,39 @@
1
1
  import { type BootstrapManifest, type Logger } from "@capybara-hq/plugin-sdk";
2
2
  import { type PluginImport } from "../catalog/plugin-import.js";
3
3
  import type { KernelConfig } from "../config/schema.js";
4
- import type { KernelDb } from "../db/kernel-schema.js";
5
- import type { ExtensionAdminOps } from "./admin-ops.js";
6
- import type { ExtensionInstalls } from "./installs.js";
7
- import type { ExtensionSource } from "./sources.js";
4
+ import { KernelConfigService } from "../infra/config/kernel-config.service.js";
5
+ import { KernelDb } from "../infra/database/kernel-db.js";
6
+ import { TransactionHost } from "../infra/database/transaction-host.js";
7
+ import { LockService } from "../infra/lock/lock.service.js";
8
+ import type { KernelLogger } from "../log.js";
9
+ import { fetchNpmPackage } from "../packages/npm.js";
10
+ import { ExtensionAdminOps } from "./admin-ops.js";
11
+ import { ExtensionInstalls } from "./installs.js";
12
+ import { PluginApproveLock } from "./locks.js";
13
+ import { ExtensionRegistry } from "./registry.js";
8
14
  /**
9
- * The bootstrap step (package ecosystem spec §7): installs the plugins pinned by the bootstrap
10
- * manifest (`packages/kernel/bootstrap.json`) from the tgz files baked into the image. It replaced
11
- * the builtin extensions.
15
+ * The bootstrap step (package ecosystem spec §7, startup bootstrap spec): installs the plugins
16
+ * pinned by the bootstrap manifest (`packages/kernel/bootstrap.json`). It replaced the builtin
17
+ * extensions.
12
18
  *
13
- * - Every file (`<dir>/<name>-<version>.tgz`) is checked against the entry's sha512 before anything
14
- * is read or written; a missing file is `bootstrap.missing_file`, a mismatch
15
- * `bootstrap.integrity_mismatch` (both name the plugin), and then nothing is written. It never
16
- * touches the network.
17
- * - The whole run holds the session advisory lock `capybara.bootstrap` on a connection of its own
18
- * (taken with `pg_try_advisory_lock` in a backoff loop that observes the signal, and closed
19
- * afterwards, so the lock never outlives the run): when several replicas start together only one
20
- * runs it; the others wait, then find it done. "Done" is a `bootstrap_runs` row for the
19
+ * - When the run is already done for the manifest nothing is read: no directory, no network, so a
20
+ * restart of an installed deployment never needs npm.
21
+ * - Otherwise, inside the lock and before anything is written, every entry's tgz is obtained
22
+ * ({@link resolveBootstrapPackages}): a `*.tgz` file of the optional offline directory whose
23
+ * sha512 equals the entry's `integrity` (the file name does not matter), else the npm download
24
+ * of a `source: "npm"` entry (`packages.npmRegistry` / `npmToken` / `maxBytes`, verified against
25
+ * the pin only). A workspace entry without a matching file is `bootstrap.missing_file`, a failed
26
+ * download `bootstrap.download_failed`, a download that differs from the pin
27
+ * `bootstrap.integrity_mismatch` (all name the plugin), and then nothing is written. Downloading
28
+ * inside the lock means a fleet starting together downloads once.
29
+ * - The whole run holds the Redis lock `lock:bootstrap` (`LockService`, decision R5 of the Nest
30
+ * kernel spec: TTL {@link BOOTSTRAP_LOCK_TTL_MS}, renewed every third of it, so a run longer than the TTL keeps
31
+ * it and a crashed holder's lock expires within it), taken by an unbounded wait that observes
32
+ * the signal: when several replicas (or `capybara bootstrap` and a starting kernel) run it
33
+ * together only one runs it; the others wait, then find it done. A lost lock (renewal failed
34
+ * until expiry) aborts the run at its next step. "Done" is a `bootstrap_runs` row for the
21
35
  * manifest's sha256 (written with the audit `bootstrap.completed` only when every entry
22
- * succeeded; otherwise the next start runs it again, which is idempotent). A lock connection
23
- * that drops mid-run is not detected (its errors are swallowed) and the run goes on without the
24
- * lock, so a second replica could run concurrently: accepted, since a concurrent import or
25
- * install degrades to `catalog.version_exists` and a deploy from the package store.
36
+ * succeeded; otherwise the next start runs it again, which is idempotent).
26
37
  * - Only entries new to the manifest are installed (Ruling 5): an optional entry that the last
27
38
  * completed run already handled and that is not installed now (an enterprise admin uninstalled
28
39
  * it) stays uninstalled -> `kept`. A required entry is always installed.
@@ -49,8 +60,8 @@ import type { ExtensionSource } from "./sources.js";
49
60
  * loses `required` -> `required_cleared`.
50
61
  * A failed entry does not stop the others; the run then throws {@link BootstrapFailedError} naming
51
62
  * them. The packages are kept in PG (`blob_store = 'pg'`), so installing an extension never needs
52
- * the object store (object-store-s3 is itself a bootstrap plugin); a declarative plugin's catalog
53
- * files do.
63
+ * the object store (object-store-s3 is itself a bootstrap plugin) and the directory and npm are
64
+ * never needed again; a declarative plugin's catalog files do need the object store.
54
65
  */
55
66
  /** The bootstrap manifest that ships with the kernel package. */
56
67
  export declare const BOOTSTRAP_MANIFEST_FILE: string;
@@ -89,25 +100,63 @@ export declare class BootstrapFailedError extends Error {
89
100
  export declare function bootstrapManifestSha256(manifest: BootstrapManifest): string;
90
101
  /** Reads and parses a bootstrap manifest file; an invalid one throws with its problems. */
91
102
  export declare function readBootstrapManifest(file?: string): Promise<BootstrapManifest>;
92
- export interface BootstrapServiceDeps {
93
- db: KernelDb;
94
- /** The lock connection is opened separately (and closed after every run). */
95
- dbUrl: string;
96
- connectTimeoutMs?: number;
97
- config: () => KernelConfig;
98
- imports: Pick<PluginImport, "prepare" | "confirm">;
99
- installs: Pick<ExtensionInstalls, "ingest">;
100
- ops: Pick<ExtensionAdminOps, "install" | "enable">;
103
+ /** What {@link resolveBootstrapPackages} needs from the kernel config. */
104
+ export interface BootstrapResolveOptions {
101
105
  /**
102
- * Config-declared extension names (an entry of the same name is kept, config wins, and no
103
- * install record is created). The kernel resolves them from `extensions` before loading.
106
+ * The offline directory: every `*.tgz` directly in it is matched to the entries by sha512.
107
+ * Omitted or missing: no offline packages.
104
108
  */
105
- declared?: () => ReadonlySet<string> | ReadonlyMap<string, ExtensionSource>;
106
- log: Pick<Logger, "info" | "warn" | "error">;
109
+ dir?: string;
110
+ config: Pick<KernelConfig, "packages">;
111
+ signal?: AbortSignal;
112
+ log?: Pick<Logger, "warn">;
113
+ /** The npm download (default {@link fetchNpmPackage}; tests replace it). */
114
+ fetch?: typeof fetchNpmPackage;
107
115
  }
116
+ /**
117
+ * Obtains every entry's tgz, checked against its pinned sha512: from the offline directory when a
118
+ * file there has that sha512, else (a `source: "npm"` entry) downloaded from the npm registry and
119
+ * verified against the pin (the packument's `dist.integrity` is not consulted). Throws an
120
+ * {@link ApiError} naming the plugin for the first entry it cannot obtain
121
+ * (`bootstrap.missing_file`, `bootstrap.download_failed`, `bootstrap.integrity_mismatch`).
122
+ */
123
+ export declare function resolveBootstrapPackages(manifest: BootstrapManifest, o: BootstrapResolveOptions): Promise<Map<string, Uint8Array>>;
124
+ /** The lock around a whole run (`lock:bootstrap`). */
125
+ export declare const BOOTSTRAP_LOCK_KEY = "bootstrap";
126
+ /** Its lifetime without renewal; a run keeps it by renewal, a crashed holder's expires. */
127
+ export declare const BOOTSTRAP_LOCK_TTL_MS = 120000;
128
+ /** Optional provider: the lock's lifetime (ms) instead of {@link BOOTSTRAP_LOCK_TTL_MS} (tests shorten it). */
129
+ export declare const BOOTSTRAP_LOCK_TTL: unique symbol;
130
+ /** What a run imports a declarative entry or an entry's catalog version with. */
131
+ export type BootstrapImports = Pick<PluginImport, "prepare" | "confirm">;
108
132
  export declare class BootstrapService {
109
- private readonly d;
110
- constructor(d: BootstrapServiceDeps);
133
+ private readonly kdb;
134
+ readonly txHost: TransactionHost;
135
+ private readonly locks;
136
+ private readonly approveLock;
137
+ private readonly installs;
138
+ private readonly ops;
139
+ /**
140
+ * Config-declared extension names (an entry of the same name is kept, config wins, and no
141
+ * install record is created): the start sequence records them before the bootstrap step, the
142
+ * CLI from its inspection.
143
+ */
144
+ private readonly registry;
145
+ private readonly configService;
146
+ private readonly log;
147
+ /** The lock's lifetime without renewal. */
148
+ private readonly lockTtlMs;
149
+ constructor(kdb: KernelDb, txHost: TransactionHost, locks: LockService, approveLock: PluginApproveLock, installs: ExtensionInstalls, ops: ExtensionAdminOps,
150
+ /**
151
+ * Config-declared extension names (an entry of the same name is kept, config wins, and no
152
+ * install record is created): the start sequence records them before the bootstrap step, the
153
+ * CLI from its inspection.
154
+ */
155
+ registry: ExtensionRegistry, configService: KernelConfigService, log: KernelLogger,
156
+ /** The lock's lifetime without renewal. */
157
+ lockTtlMs?: number);
158
+ private get db();
159
+ private config;
111
160
  /** Whether the bootstrap step completed for the manifest with this sha256. */
112
161
  isDone(manifestSha256: string): Promise<boolean>;
113
162
  /**
@@ -119,20 +168,23 @@ export declare class BootstrapService {
119
168
  */
120
169
  run(o: {
121
170
  manifest: BootstrapManifest;
122
- dir: string;
171
+ /** The offline directory (see {@link resolveBootstrapPackages}); omitted: npm only. */
172
+ dir?: string;
123
173
  signal?: AbortSignal;
124
174
  carry?: readonly BootstrapEntryResult[];
175
+ /** The plugin import a declarative entry (or an entry's catalog version) goes through. */
176
+ imports: BootstrapImports;
125
177
  }): Promise<BootstrapResult>;
178
+ /** The `bootstrap_runs` row and the `bootstrap.completed` audit, in one transaction. */
179
+ private recordDone;
126
180
  /**
127
- * Runs `fn` holding the session advisory lock on a connection of its own: `pg_try_advisory_lock`
128
- * retried with a backoff (100 ms doubling to 1 s) that stops when `signal` aborts. The connection
129
- * is closed afterwards in every case, which releases the lock even when the unlock failed.
181
+ * Runs `fn` holding `lock:bootstrap`: waits without bound while another replica holds it
182
+ * (until `signal` aborts), renews it while `fn` runs and releases it afterwards. `fn` gets a
183
+ * signal that also aborts when the lock is lost.
130
184
  */
131
185
  private locked;
132
186
  /** The entry names the last completed run handled (undefined before any run completed). */
133
187
  private lastRunNames;
134
- /** Reads every entry's file and checks its sha512 (before the lock: nothing is written yet). */
135
- private verifyFiles;
136
188
  private entry;
137
189
  /** A declarative plugin: catalog only. Returns false when that version is already imported. */
138
190
  private importOnly;
@@ -144,6 +196,8 @@ export declare class BootstrapService {
144
196
  private deploy;
145
197
  /** The extension of a catalog version already imported: ingest, approve, install (, enable). */
146
198
  private deployFromStore;
199
+ /** The permission snapshot of a stored package (source `bootstrap`), under the approve lock. */
200
+ private approveStored;
147
201
  /** Install records still `required` whose entry left the manifest lose `required`. */
148
202
  private clearRemoved;
149
203
  }