@capybara-hq/kernel 0.1.0-rc.0 → 0.1.0-rc.10

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 (1152) hide show
  1. package/bootstrap.json +92 -8
  2. package/dist/admin/admin.controller.d.ts +52 -71
  3. package/dist/admin/admin.controller.js +117 -63
  4. package/dist/admin/admin.module.d.ts +3 -0
  5. package/dist/admin/admin.module.js +22 -0
  6. package/dist/admin/admin.schemas.d.ts +57 -0
  7. package/dist/admin/admin.schemas.js +50 -0
  8. package/dist/admin/extensions.controller.d.ts +47 -16
  9. package/dist/admin/extensions.controller.js +94 -23
  10. package/dist/admin/extensions.schemas.d.ts +7 -0
  11. package/dist/admin/extensions.schemas.js +10 -0
  12. package/dist/admin/limit-defaults.d.ts +20 -0
  13. package/dist/admin/limit-defaults.js +10 -0
  14. package/dist/admin/setup-lock.d.ts +16 -0
  15. package/dist/admin/setup-lock.js +47 -0
  16. package/dist/admin/setup.controller.d.ts +9 -9
  17. package/dist/admin/setup.controller.js +28 -26
  18. package/dist/admin/setup.service.d.ts +20 -28
  19. package/dist/admin/setup.service.js +65 -65
  20. package/dist/agents/agent-lookup.d.ts +72 -0
  21. package/dist/agents/agent-lookup.js +208 -0
  22. package/dist/agents/agent-profile.service.d.ts +31 -0
  23. package/dist/agents/agent-profile.service.js +122 -0
  24. package/dist/agents/agents.controller.d.ts +54 -169
  25. package/dist/agents/agents.controller.js +172 -37
  26. package/dist/agents/agents.module.d.ts +10 -0
  27. package/dist/agents/agents.module.js +71 -0
  28. package/dist/agents/agents.schemas.d.ts +389 -0
  29. package/dist/agents/agents.schemas.js +126 -0
  30. package/dist/agents/agents.service.d.ts +104 -76
  31. package/dist/agents/agents.service.js +509 -383
  32. package/dist/agents/definition.d.ts +133 -21
  33. package/dist/agents/definition.js +361 -41
  34. package/dist/agents/from-template.d.ts +106 -0
  35. package/dist/agents/from-template.js +680 -0
  36. package/dist/agents/from-template.service.d.ts +72 -0
  37. package/dist/agents/from-template.service.js +178 -0
  38. package/dist/agents/instruction-files.d.ts +60 -0
  39. package/dist/agents/instruction-files.js +111 -0
  40. package/dist/agents/models.controller.d.ts +44 -6
  41. package/dist/agents/models.controller.js +84 -8
  42. package/dist/agents/org-templates.d.ts +186 -0
  43. package/dist/agents/org-templates.js +868 -0
  44. package/dist/agents/pending-connector-requests.d.ts +79 -0
  45. package/dist/agents/pending-connector-requests.js +215 -0
  46. package/dist/agents/pending-connectors.controller.d.ts +39 -0
  47. package/dist/agents/pending-connectors.controller.js +91 -0
  48. package/dist/agents/pending-connectors.service.d.ts +62 -0
  49. package/dist/agents/pending-connectors.service.js +282 -0
  50. package/dist/agents/profile.d.ts +114 -0
  51. package/dist/agents/profile.js +55 -0
  52. package/dist/agents/readiness.controller.d.ts +26 -0
  53. package/dist/agents/readiness.controller.js +56 -0
  54. package/dist/agents/templates.controller.d.ts +78 -6
  55. package/dist/agents/templates.controller.js +154 -8
  56. package/dist/agents/templates.d.ts +132 -30
  57. package/dist/agents/templates.js +500 -46
  58. package/dist/agents/templates.schemas.d.ts +20 -0
  59. package/dist/agents/templates.schemas.js +45 -0
  60. package/dist/app.d.ts +93 -0
  61. package/dist/app.js +150 -0
  62. package/dist/background/background.controller.d.ts +38 -0
  63. package/dist/background/background.controller.js +88 -0
  64. package/dist/background/background.module.d.ts +10 -0
  65. package/dist/background/background.module.js +39 -0
  66. package/dist/background/background.schemas.d.ts +10 -0
  67. package/dist/background/background.schemas.js +16 -0
  68. package/dist/background/finish.d.ts +44 -0
  69. package/dist/background/finish.js +95 -0
  70. package/dist/background/launch-lock.d.ts +15 -0
  71. package/dist/background/launch-lock.js +40 -0
  72. package/dist/background/launch.d.ts +42 -0
  73. package/dist/background/launch.js +77 -0
  74. package/dist/background/poll.job.d.ts +56 -0
  75. package/dist/background/poll.job.js +195 -0
  76. package/dist/background/render.d.ts +23 -0
  77. package/dist/background/render.js +48 -0
  78. package/dist/background/session.d.ts +48 -0
  79. package/dist/background/session.js +80 -0
  80. package/dist/background/status.d.ts +35 -0
  81. package/dist/background/status.js +57 -0
  82. package/dist/background/stop.d.ts +68 -0
  83. package/dist/background/stop.js +244 -0
  84. package/dist/background/store.d.ts +167 -0
  85. package/dist/background/store.js +361 -0
  86. package/dist/background/store.module.d.ts +6 -0
  87. package/dist/background/store.module.js +22 -0
  88. package/dist/background/tasks.service.d.ts +77 -0
  89. package/dist/background/tasks.service.js +216 -0
  90. package/dist/background/wake-rules.d.ts +66 -0
  91. package/dist/background/wake-rules.js +113 -0
  92. package/dist/background/wake.d.ts +30 -0
  93. package/dist/background/wake.js +63 -0
  94. package/dist/catalog/admin-catalog.controller.d.ts +102 -52
  95. package/dist/catalog/admin-catalog.controller.js +222 -67
  96. package/dist/catalog/admin-catalog.schemas.d.ts +72 -0
  97. package/dist/catalog/admin-catalog.schemas.js +92 -0
  98. package/dist/catalog/catalog-content.d.ts +232 -0
  99. package/dist/catalog/catalog-content.js +367 -0
  100. package/dist/catalog/catalog-files.d.ts +41 -0
  101. package/dist/catalog/catalog-files.js +86 -0
  102. package/dist/catalog/catalog-import.module.d.ts +7 -0
  103. package/dist/catalog/catalog-import.module.js +60 -0
  104. package/dist/catalog/catalog-items.d.ts +290 -0
  105. package/dist/catalog/catalog-items.js +676 -0
  106. package/dist/catalog/catalog-scope.service.d.ts +260 -0
  107. package/dist/catalog/catalog-scope.service.js +1124 -0
  108. package/dist/catalog/catalog.module.d.ts +12 -0
  109. package/dist/catalog/catalog.module.js +81 -0
  110. package/dist/catalog/catalog.service.d.ts +141 -206
  111. package/dist/catalog/catalog.service.js +237 -528
  112. package/dist/catalog/claude/agents.js +15 -10
  113. package/dist/catalog/cli.d.ts +14 -3
  114. package/dist/catalog/cli.js +39 -32
  115. package/dist/catalog/component-promotion.d.ts +96 -0
  116. package/dist/catalog/component-promotion.js +395 -0
  117. package/dist/catalog/component-scope.controller.d.ts +90 -0
  118. package/dist/catalog/component-scope.controller.js +234 -0
  119. package/dist/catalog/component-scope.schemas.d.ts +114 -0
  120. package/dist/catalog/component-scope.schemas.js +97 -0
  121. package/dist/catalog/component-scope.service.d.ts +327 -0
  122. package/dist/catalog/component-scope.service.js +990 -0
  123. package/dist/catalog/component-state.d.ts +188 -0
  124. package/dist/catalog/component-state.js +455 -0
  125. package/dist/catalog/git-source.d.ts +9 -1
  126. package/dist/catalog/git-source.js +29 -2
  127. package/dist/catalog/job-ids.d.ts +45 -0
  128. package/dist/catalog/job-ids.js +40 -0
  129. package/dist/catalog/jobs.d.ts +27 -0
  130. package/dist/catalog/jobs.js +70 -0
  131. package/dist/catalog/locks.d.ts +24 -0
  132. package/dist/catalog/locks.js +63 -0
  133. package/dist/catalog/marketplace-fetch.d.ts +1 -1
  134. package/dist/catalog/marketplace-icons.d.ts +64 -0
  135. package/dist/catalog/marketplace-icons.js +131 -0
  136. package/dist/catalog/marketplaces.controller.d.ts +53 -44
  137. package/dist/catalog/marketplaces.controller.js +146 -51
  138. package/dist/catalog/marketplaces.schemas.d.ts +48 -0
  139. package/dist/catalog/marketplaces.schemas.js +53 -0
  140. package/dist/catalog/marketplaces.service.d.ts +136 -26
  141. package/dist/catalog/marketplaces.service.js +663 -281
  142. package/dist/catalog/org-catalog.controller.d.ts +115 -63
  143. package/dist/catalog/org-catalog.controller.js +207 -100
  144. package/dist/catalog/org-catalog.schemas.d.ts +88 -0
  145. package/dist/catalog/org-catalog.schemas.js +93 -0
  146. package/dist/catalog/org-catalog.service.d.ts +89 -216
  147. package/dist/catalog/org-catalog.service.js +431 -472
  148. package/dist/catalog/org-extension-switch.d.ts +41 -0
  149. package/dist/catalog/org-extension-switch.js +115 -0
  150. package/dist/catalog/org-extension.controller.d.ts +113 -0
  151. package/dist/catalog/org-extension.controller.js +271 -0
  152. package/dist/catalog/org-extension.schemas.d.ts +15 -0
  153. package/dist/catalog/org-extension.schemas.js +22 -0
  154. package/dist/catalog/org-plugin-uploads.controller.d.ts +77 -0
  155. package/dist/catalog/org-plugin-uploads.controller.js +200 -0
  156. package/dist/catalog/org-plugin-uploads.d.ts +71 -0
  157. package/dist/catalog/org-plugin-uploads.js +122 -0
  158. package/dist/catalog/org-plugin-uploads.schemas.d.ts +20 -0
  159. package/dist/catalog/org-plugin-uploads.schemas.js +32 -0
  160. package/dist/catalog/owned-items.d.ts +188 -0
  161. package/dist/catalog/owned-items.js +801 -0
  162. package/dist/catalog/owned-plugin-cleanup.d.ts +56 -0
  163. package/dist/catalog/owned-plugin-cleanup.js +194 -0
  164. package/dist/catalog/ownership.d.ts +172 -0
  165. package/dist/catalog/ownership.js +326 -0
  166. package/dist/catalog/platform-components.d.ts +223 -0
  167. package/dist/catalog/platform-components.js +763 -0
  168. package/dist/catalog/platform-migration.d.ts +115 -0
  169. package/dist/catalog/platform-migration.js +582 -0
  170. package/dist/catalog/plugin-import.d.ts +270 -68
  171. package/dist/catalog/plugin-import.js +1004 -277
  172. package/dist/catalog/plugin-install.d.ts +251 -65
  173. package/dist/catalog/plugin-install.js +1128 -344
  174. package/dist/catalog/plugin-package.js +14 -1
  175. package/dist/catalog/plugin-upgrade.d.ts +301 -188
  176. package/dist/catalog/plugin-upgrade.js +1256 -1068
  177. package/dist/catalog/request-rules.d.ts +65 -0
  178. package/dist/catalog/request-rules.js +217 -0
  179. package/dist/catalog/requests.service.d.ts +205 -117
  180. package/dist/catalog/requests.service.js +612 -369
  181. package/dist/catalog/reserved-names.d.ts +8 -0
  182. package/dist/catalog/reserved-names.js +42 -0
  183. package/dist/catalog/scope-orgs.d.ts +21 -0
  184. package/dist/catalog/scope-orgs.js +67 -0
  185. package/dist/catalog/scope-state.d.ts +35 -0
  186. package/dist/catalog/scope-state.js +87 -0
  187. package/dist/catalog/scope-sync-workers.d.ts +7 -0
  188. package/dist/catalog/scope-sync-workers.js +29 -0
  189. package/dist/catalog/scope-sync.d.ts +176 -0
  190. package/dist/catalog/scope-sync.js +576 -0
  191. package/dist/catalog/scope.d.ts +42 -0
  192. package/dist/catalog/scope.js +42 -0
  193. package/dist/catalog/unshare.d.ts +22 -0
  194. package/dist/catalog/unshare.js +118 -0
  195. package/dist/channels/actions.d.ts +6 -4
  196. package/dist/channels/actions.js +11 -4
  197. package/dist/channels/cards.d.ts +33 -11
  198. package/dist/channels/cards.js +96 -24
  199. package/dist/channels/channels.module.d.ts +40 -0
  200. package/dist/channels/channels.module.js +130 -0
  201. package/dist/channels/channels.schemas.d.ts +37 -0
  202. package/dist/channels/channels.schemas.js +38 -0
  203. package/dist/channels/connections.controller.d.ts +44 -37
  204. package/dist/channels/connections.controller.js +83 -38
  205. package/dist/channels/connections.service.d.ts +101 -30
  206. package/dist/channels/connections.service.js +380 -147
  207. package/dist/channels/inbound.d.ts +44 -38
  208. package/dist/channels/inbound.js +190 -44
  209. package/dist/channels/job-ids.d.ts +10 -0
  210. package/dist/channels/job-ids.js +10 -0
  211. package/dist/channels/jobs.d.ts +85 -0
  212. package/dist/channels/jobs.js +157 -0
  213. package/dist/channels/outbound.d.ts +71 -80
  214. package/dist/channels/outbound.js +219 -201
  215. package/dist/channels/phrases.d.ts +33 -2
  216. package/dist/channels/phrases.js +29 -1
  217. package/dist/channels/supervisor.d.ts +88 -46
  218. package/dist/channels/supervisor.js +230 -132
  219. package/dist/channels/threads.d.ts +34 -8
  220. package/dist/channels/threads.js +79 -13
  221. package/dist/channels/webhook.d.ts +20 -14
  222. package/dist/channels/webhook.js +51 -20
  223. package/dist/config/docs.js +5 -1
  224. package/dist/config/load.d.ts +3 -2
  225. package/dist/config/load.js +3 -2
  226. package/dist/config/nacos-source.js +11 -2
  227. package/dist/config/schema.d.ts +51 -3
  228. package/dist/config/schema.js +269 -27
  229. package/dist/conversations/access.d.ts +31 -0
  230. package/dist/conversations/access.js +110 -0
  231. package/dist/conversations/agent-tree.d.ts +46 -0
  232. package/dist/conversations/agent-tree.js +92 -0
  233. package/dist/conversations/artifacts.d.ts +11 -11
  234. package/dist/conversations/artifacts.js +36 -10
  235. package/dist/conversations/attachments.controller.d.ts +1 -1
  236. package/dist/conversations/attachments.controller.js +8 -6
  237. package/dist/conversations/attachments.module.d.ts +7 -0
  238. package/dist/conversations/attachments.module.js +25 -0
  239. package/dist/conversations/attachments.service.d.ts +60 -22
  240. package/dist/conversations/attachments.service.js +249 -51
  241. package/dist/conversations/conversations.controller.d.ts +86 -50
  242. package/dist/conversations/conversations.controller.js +184 -103
  243. package/dist/conversations/conversations.module.d.ts +8 -0
  244. package/dist/conversations/conversations.module.js +72 -0
  245. package/dist/conversations/conversations.schemas.d.ts +52 -0
  246. package/dist/conversations/conversations.schemas.js +79 -0
  247. package/dist/conversations/conversations.service.d.ts +166 -49
  248. package/dist/conversations/conversations.service.js +383 -179
  249. package/dist/conversations/environment-status.d.ts +24 -0
  250. package/dist/conversations/environment-status.js +71 -0
  251. package/dist/conversations/event-log.d.ts +64 -27
  252. package/dist/conversations/event-log.js +167 -31
  253. package/dist/conversations/events.d.ts +252 -9
  254. package/dist/conversations/events.js +243 -32
  255. package/dist/conversations/files.d.ts +10 -10
  256. package/dist/conversations/files.js +37 -11
  257. package/dist/conversations/idem-keys.d.ts +5 -0
  258. package/dist/conversations/idem-keys.js +5 -0
  259. package/dist/conversations/job-ids.d.ts +6 -0
  260. package/dist/conversations/job-ids.js +6 -0
  261. package/dist/conversations/message-context.d.ts +79 -0
  262. package/dist/conversations/message-context.js +145 -0
  263. package/dist/conversations/outputs-read.d.ts +11 -11
  264. package/dist/conversations/outputs-read.js +31 -7
  265. package/dist/conversations/queue.d.ts +53 -58
  266. package/dist/conversations/queue.js +37 -293
  267. package/dist/conversations/queue.service.d.ts +60 -0
  268. package/dist/conversations/queue.service.js +350 -0
  269. package/dist/conversations/titles.d.ts +83 -27
  270. package/dist/conversations/titles.js +195 -70
  271. package/dist/conversations/tree.d.ts +17 -0
  272. package/dist/conversations/tree.js +42 -0
  273. package/dist/ctx/bus.js +9 -3
  274. package/dist/ctx/create-ctx.d.ts +26 -1
  275. package/dist/ctx/create-ctx.js +45 -16
  276. package/dist/ctx/lock.d.ts +7 -3
  277. package/dist/ctx/lock.js +9 -20
  278. package/dist/ctx/queue.js +3 -2
  279. package/dist/ctx/secrets.d.ts +10 -2
  280. package/dist/ctx/secrets.js +7 -3
  281. package/dist/db/kernel-schema.d.ts +550 -25
  282. package/dist/db/pool.d.ts +10 -0
  283. package/dist/db/pool.js +4 -0
  284. package/dist/devices/device-auth.controller.d.ts +42 -0
  285. package/dist/devices/device-auth.controller.js +116 -0
  286. package/dist/devices/device-auth.d.ts +119 -0
  287. package/dist/devices/device-auth.js +403 -0
  288. package/dist/devices/device-auth.module.d.ts +7 -0
  289. package/dist/devices/device-auth.module.js +25 -0
  290. package/dist/devices/device-gateway.d.ts +128 -0
  291. package/dist/devices/device-gateway.js +530 -0
  292. package/dist/devices/device-provider.d.ts +89 -0
  293. package/dist/devices/device-provider.js +151 -0
  294. package/dist/devices/device-routes.d.ts +36 -0
  295. package/dist/devices/device-routes.js +90 -0
  296. package/dist/devices/devices.module.d.ts +16 -0
  297. package/dist/devices/devices.module.js +44 -0
  298. package/dist/devices/dto.d.ts +66 -0
  299. package/dist/devices/dto.js +44 -0
  300. package/dist/devices/keys.d.ts +25 -0
  301. package/dist/devices/keys.js +25 -0
  302. package/dist/devices/machines.d.ts +118 -0
  303. package/dist/devices/machines.js +366 -0
  304. package/dist/devices/relay.d.ts +100 -0
  305. package/dist/devices/relay.js +373 -0
  306. package/dist/devices/targets.d.ts +28 -0
  307. package/dist/devices/targets.js +73 -0
  308. package/dist/environments/access.d.ts +66 -0
  309. package/dist/environments/access.js +113 -0
  310. package/dist/environments/conversation-environments.d.ts +75 -0
  311. package/dist/environments/conversation-environments.js +231 -0
  312. package/dist/environments/dto.d.ts +25 -0
  313. package/dist/environments/dto.js +12 -0
  314. package/dist/environments/environments.controller.d.ts +36 -0
  315. package/dist/environments/environments.controller.js +124 -0
  316. package/dist/environments/environments.module.d.ts +8 -0
  317. package/dist/environments/environments.module.js +31 -0
  318. package/dist/environments/environments.schemas.d.ts +3 -0
  319. package/dist/environments/environments.schemas.js +14 -0
  320. package/dist/environments/environments.service.d.ts +251 -0
  321. package/dist/environments/environments.service.js +791 -0
  322. package/dist/environments/label.d.ts +11 -0
  323. package/dist/environments/label.js +25 -0
  324. package/dist/environments/legacy-cleanup.job.d.ts +34 -0
  325. package/dist/environments/legacy-cleanup.job.js +141 -0
  326. package/dist/errors.d.ts +136 -2
  327. package/dist/errors.js +136 -2
  328. package/dist/evals/budget.d.ts +42 -21
  329. package/dist/evals/budget.js +114 -62
  330. package/dist/evals/evals.module.d.ts +31 -0
  331. package/dist/evals/evals.module.js +114 -0
  332. package/dist/evals/evals.schemas.d.ts +110 -0
  333. package/dist/evals/evals.schemas.js +107 -0
  334. package/dist/evals/jobs.d.ts +20 -0
  335. package/dist/evals/jobs.js +45 -0
  336. package/dist/evals/reconstruct.d.ts +18 -9
  337. package/dist/evals/reconstruct.js +36 -10
  338. package/dist/evals/recorded-tools.d.ts +37 -1
  339. package/dist/evals/recorded-tools.js +120 -10
  340. package/dist/evals/run-replay.d.ts +75 -10
  341. package/dist/evals/run-replay.js +218 -94
  342. package/dist/evals/runs.controller.d.ts +3 -58
  343. package/dist/evals/runs.controller.js +18 -50
  344. package/dist/evals/runs.service.d.ts +31 -52
  345. package/dist/evals/runs.service.js +281 -255
  346. package/dist/evals/sets.controller.d.ts +3 -29
  347. package/dist/evals/sets.controller.js +18 -39
  348. package/dist/evals/sets.service.d.ts +29 -13
  349. package/dist/evals/sets.service.js +262 -202
  350. package/dist/evals/snapshot.d.ts +5 -4
  351. package/dist/evals/snapshot.js +17 -4
  352. package/dist/evals/step-replay.d.ts +6 -8
  353. package/dist/evals/step-replay.js +17 -10
  354. package/dist/evals/trajectory.controller.d.ts +1 -1
  355. package/dist/evals/trajectory.controller.js +11 -7
  356. package/dist/evals/trajectory.d.ts +2 -2
  357. package/dist/evals/trajectory.js +1 -1
  358. package/dist/evals/trajectory.service.d.ts +13 -7
  359. package/dist/evals/trajectory.service.js +56 -21
  360. package/dist/evals/worker.d.ts +48 -31
  361. package/dist/evals/worker.js +229 -123
  362. package/dist/extensions/admin-ops.d.ts +133 -41
  363. package/dist/extensions/admin-ops.js +378 -172
  364. package/dist/extensions/admin-view.d.ts +82 -32
  365. package/dist/extensions/admin-view.js +284 -71
  366. package/dist/extensions/approvals.d.ts +24 -10
  367. package/dist/extensions/approvals.js +73 -46
  368. package/dist/extensions/blobs.d.ts +27 -10
  369. package/dist/extensions/blobs.js +112 -45
  370. package/dist/extensions/bootstrap.d.ts +136 -46
  371. package/dist/extensions/bootstrap.js +417 -167
  372. package/dist/extensions/cli.d.ts +32 -10
  373. package/dist/extensions/cli.js +52 -98
  374. package/dist/extensions/config-hash.d.ts +10 -0
  375. package/dist/extensions/config-hash.js +38 -0
  376. package/dist/extensions/config-issues.d.ts +19 -0
  377. package/dist/extensions/config-issues.js +48 -0
  378. package/dist/extensions/config-json-schema.d.ts +43 -7
  379. package/dist/extensions/config-json-schema.js +124 -58
  380. package/dist/extensions/deployment-config-store.d.ts +55 -0
  381. package/dist/extensions/deployment-config-store.js +133 -0
  382. package/dist/extensions/deployment-config.d.ts +146 -70
  383. package/dist/extensions/deployment-config.js +439 -246
  384. package/dist/extensions/display-name.d.ts +22 -0
  385. package/dist/extensions/display-name.js +77 -0
  386. package/dist/extensions/effective-config.d.ts +127 -0
  387. package/dist/extensions/effective-config.js +368 -0
  388. package/dist/extensions/enabled.d.ts +5 -5
  389. package/dist/extensions/extensions.module.d.ts +8 -0
  390. package/dist/extensions/extensions.module.js +96 -0
  391. package/dist/extensions/hooks.d.ts +40 -6
  392. package/dist/extensions/hooks.js +83 -17
  393. package/dist/extensions/host.d.ts +161 -80
  394. package/dist/extensions/host.js +505 -213
  395. package/dist/extensions/installs.d.ts +73 -19
  396. package/dist/extensions/installs.js +174 -37
  397. package/dist/extensions/job-ids.d.ts +6 -0
  398. package/dist/extensions/job-ids.js +6 -0
  399. package/dist/extensions/lifecycle-topics.d.ts +18 -0
  400. package/dist/extensions/lifecycle-topics.js +18 -0
  401. package/dist/extensions/lifecycle.d.ts +35 -47
  402. package/dist/extensions/lifecycle.js +103 -39
  403. package/dist/extensions/locks.d.ts +45 -0
  404. package/dist/extensions/locks.js +112 -0
  405. package/dist/extensions/migrate-lock.d.ts +3 -4
  406. package/dist/extensions/org-config.d.ts +141 -49
  407. package/dist/extensions/org-config.js +471 -243
  408. package/dist/extensions/org-levels.d.ts +37 -0
  409. package/dist/extensions/org-levels.js +71 -0
  410. package/dist/extensions/org-overrides.d.ts +151 -0
  411. package/dist/extensions/org-overrides.js +524 -0
  412. package/dist/extensions/package.d.ts +14 -1
  413. package/dist/extensions/package.js +51 -2
  414. package/dist/extensions/permission-view.d.ts +59 -6
  415. package/dist/extensions/permission-view.js +7 -5
  416. package/dist/extensions/plugin-guides.d.ts +129 -0
  417. package/dist/extensions/plugin-guides.js +283 -0
  418. package/dist/extensions/plugin-icons.d.ts +54 -0
  419. package/dist/extensions/plugin-icons.js +125 -0
  420. package/dist/extensions/plugin-items.d.ts +21 -0
  421. package/dist/extensions/plugin-items.js +42 -0
  422. package/dist/extensions/point-defaults.controller.d.ts +28 -0
  423. package/dist/extensions/point-defaults.controller.js +69 -0
  424. package/dist/extensions/point-defaults.d.ts +73 -0
  425. package/dist/extensions/point-defaults.js +236 -0
  426. package/dist/extensions/point-defaults.schemas.d.ts +9 -0
  427. package/dist/extensions/point-defaults.schemas.js +14 -0
  428. package/dist/extensions/registry.d.ts +50 -2
  429. package/dist/extensions/registry.js +91 -4
  430. package/dist/extensions/resolve.d.ts +51 -1
  431. package/dist/extensions/resolve.js +85 -3
  432. package/dist/extensions/single-provider.d.ts +92 -0
  433. package/dist/extensions/single-provider.js +180 -0
  434. package/dist/extensions/sources.d.ts +19 -10
  435. package/dist/extensions/sources.js +34 -13
  436. package/dist/extensions/state.module.d.ts +9 -0
  437. package/dist/extensions/state.module.js +38 -0
  438. package/dist/extensions/unavailable.d.ts +50 -0
  439. package/dist/extensions/unavailable.js +115 -0
  440. package/dist/files/files.module.d.ts +3 -0
  441. package/dist/files/files.module.js +22 -0
  442. package/dist/files/previewers.controller.d.ts +7 -2
  443. package/dist/files/previewers.controller.js +19 -12
  444. package/dist/files/previewers.d.ts +21 -19
  445. package/dist/files/previewers.js +114 -38
  446. package/dist/files/previewers.schemas.d.ts +10 -0
  447. package/dist/files/previewers.schemas.js +9 -0
  448. package/dist/http/adapter.d.ts +3 -0
  449. package/dist/http/adapter.js +25 -0
  450. package/dist/http/api.module.d.ts +3 -110
  451. package/dist/http/api.module.js +86 -358
  452. package/dist/http/app.d.ts +22 -17
  453. package/dist/http/app.js +83 -52
  454. package/dist/http/error-filter.module.d.ts +5 -0
  455. package/dist/http/error-filter.module.js +18 -0
  456. package/dist/http/error.filter.js +2 -2
  457. package/dist/http/{gateway.module.d.ts → gateway-routes.d.ts} +7 -3
  458. package/dist/http/gateway-routes.js +16 -0
  459. package/dist/http/nest-logger.d.ts +6 -5
  460. package/dist/http/nest-logger.js +24 -10
  461. package/dist/http/plugin-dispatch.d.ts +4 -1
  462. package/dist/http/plugin-dispatch.js +14 -2
  463. package/dist/identity/accounts.d.ts +130 -38
  464. package/dist/identity/accounts.js +373 -186
  465. package/dist/identity/api-tokens.d.ts +11 -7
  466. package/dist/identity/api-tokens.js +71 -44
  467. package/dist/identity/audit.d.ts +9 -5
  468. package/dist/identity/audit.js +5 -1
  469. package/dist/identity/auth.controller.d.ts +11 -10
  470. package/dist/identity/auth.controller.js +40 -30
  471. package/dist/identity/auth.guard.d.ts +16 -8
  472. package/dist/identity/auth.guard.js +41 -13
  473. package/dist/identity/binding.d.ts +9 -11
  474. package/dist/identity/binding.js +41 -13
  475. package/dist/identity/cookies.d.ts +26 -5
  476. package/dist/identity/cookies.js +58 -6
  477. package/dist/identity/external-identity-lock.d.ts +17 -0
  478. package/dist/identity/external-identity-lock.js +39 -0
  479. package/dist/identity/external.d.ts +19 -15
  480. package/dist/identity/external.js +163 -125
  481. package/dist/identity/identity.module.d.ts +6 -0
  482. package/dist/identity/identity.module.js +59 -0
  483. package/dist/identity/initial-passwords.controller.d.ts +22 -0
  484. package/dist/identity/initial-passwords.controller.js +49 -0
  485. package/dist/identity/initial-passwords.d.ts +61 -0
  486. package/dist/identity/initial-passwords.job.d.ts +16 -0
  487. package/dist/identity/initial-passwords.job.js +46 -0
  488. package/dist/identity/initial-passwords.js +159 -0
  489. package/dist/identity/me.controller.d.ts +32 -15
  490. package/dist/identity/me.controller.js +78 -33
  491. package/dist/identity/me.schemas.d.ts +14 -0
  492. package/dist/identity/me.schemas.js +17 -0
  493. package/dist/identity/principal.d.ts +11 -3
  494. package/dist/identity/principal.js +11 -3
  495. package/dist/identity/sessions.d.ts +24 -10
  496. package/dist/identity/sessions.js +119 -42
  497. package/dist/identity/settings.d.ts +42 -23
  498. package/dist/identity/settings.js +137 -72
  499. package/dist/identity/sso.controller.d.ts +7 -7
  500. package/dist/identity/sso.controller.js +13 -9
  501. package/dist/identity/sso.d.ts +9 -12
  502. package/dist/identity/sso.js +54 -24
  503. package/dist/identity/super-admin.d.ts +20 -0
  504. package/dist/identity/super-admin.js +81 -0
  505. package/dist/inbox/inbox.module.d.ts +6 -0
  506. package/dist/inbox/inbox.module.js +26 -0
  507. package/dist/inbox/inbox.schemas.d.ts +8 -0
  508. package/dist/inbox/inbox.schemas.js +11 -0
  509. package/dist/inbox/inbox.service.d.ts +68 -11
  510. package/dist/inbox/inbox.service.js +104 -13
  511. package/dist/inbox/org-notices.d.ts +63 -0
  512. package/dist/inbox/org-notices.js +91 -0
  513. package/dist/inbox/platform-inbox.controller.d.ts +23 -0
  514. package/dist/inbox/platform-inbox.controller.js +58 -0
  515. package/dist/inbox/platform-inbox.service.d.ts +151 -0
  516. package/dist/inbox/platform-inbox.service.js +263 -0
  517. package/dist/inbox/platform-notices.d.ts +19 -0
  518. package/dist/inbox/platform-notices.js +9 -0
  519. package/dist/index.d.ts +25 -14
  520. package/dist/index.js +20 -9
  521. package/dist/infra/cache/cache.module.d.ts +3 -0
  522. package/dist/infra/cache/cache.module.js +16 -0
  523. package/dist/infra/cache/cache.service.d.ts +21 -0
  524. package/dist/infra/cache/cache.service.js +80 -0
  525. package/dist/infra/cache/cacheable.decorator.d.ts +32 -0
  526. package/dist/infra/cache/cacheable.decorator.js +83 -0
  527. package/dist/infra/cli/kernel-cli.module.d.ts +66 -0
  528. package/dist/infra/cli/kernel-cli.module.js +173 -0
  529. package/dist/infra/close-within.d.ts +15 -0
  530. package/dist/infra/close-within.js +36 -0
  531. package/dist/infra/config/config.module.d.ts +13 -0
  532. package/dist/infra/config/config.module.js +39 -0
  533. package/dist/infra/config/kernel-config.service.d.ts +25 -0
  534. package/dist/infra/config/kernel-config.service.js +157 -0
  535. package/dist/infra/database/after-commit.d.ts +6 -0
  536. package/dist/infra/database/after-commit.js +9 -0
  537. package/dist/infra/database/database.module.d.ts +25 -0
  538. package/dist/infra/database/database.module.js +91 -0
  539. package/dist/infra/database/kernel-db.d.ts +22 -0
  540. package/dist/infra/database/kernel-db.js +65 -0
  541. package/dist/infra/database/transaction-host.d.ts +50 -0
  542. package/dist/infra/database/transaction-host.js +125 -0
  543. package/dist/infra/database/transactional.decorator.d.ts +15 -0
  544. package/dist/infra/database/transactional.decorator.js +27 -0
  545. package/dist/infra/database/xact-lock.d.ts +17 -0
  546. package/dist/infra/database/xact-lock.js +43 -0
  547. package/dist/infra/events/kernel-events.d.ts +121 -0
  548. package/dist/infra/events/kernel-events.js +65 -0
  549. package/dist/infra/health/health.controller.d.ts +26 -0
  550. package/dist/infra/health/health.controller.js +104 -0
  551. package/dist/infra/health/health.module.d.ts +9 -0
  552. package/dist/infra/health/health.module.js +24 -0
  553. package/dist/infra/health/health.options.d.ts +10 -0
  554. package/dist/infra/health/health.options.js +15 -0
  555. package/dist/infra/health/shutdown-state.d.ts +6 -0
  556. package/dist/infra/health/shutdown-state.js +2 -0
  557. package/dist/infra/lifecycle/graceful-shutdown.module.d.ts +6 -0
  558. package/dist/infra/lifecycle/graceful-shutdown.module.js +23 -0
  559. package/dist/infra/lifecycle/graceful-shutdown.service.d.ts +70 -0
  560. package/dist/infra/lifecycle/graceful-shutdown.service.js +135 -0
  561. package/dist/infra/lifecycle/process-guards.d.ts +52 -0
  562. package/dist/infra/lifecycle/process-guards.js +90 -0
  563. package/dist/infra/lifecycle/shutdown-signals.d.ts +30 -0
  564. package/dist/infra/lifecycle/shutdown-signals.js +48 -0
  565. package/dist/infra/lock/key-template.d.ts +13 -0
  566. package/dist/infra/lock/key-template.js +46 -0
  567. package/dist/infra/lock/lock.module.d.ts +3 -0
  568. package/dist/infra/lock/lock.module.js +16 -0
  569. package/dist/infra/lock/lock.service.d.ts +120 -0
  570. package/dist/infra/lock/lock.service.js +343 -0
  571. package/dist/infra/lock/shared-lease.d.ts +44 -0
  572. package/dist/infra/lock/shared-lease.js +121 -0
  573. package/dist/infra/lock/with-lock.decorator.d.ts +28 -0
  574. package/dist/infra/lock/with-lock.decorator.js +49 -0
  575. package/dist/infra/logging/logging.module.d.ts +18 -0
  576. package/dist/infra/logging/logging.module.js +52 -0
  577. package/dist/infra/queue/add-job-once.d.ts +14 -0
  578. package/dist/infra/queue/add-job-once.js +16 -0
  579. package/dist/infra/queue/configured-processor.d.ts +18 -0
  580. package/dist/infra/queue/configured-processor.js +23 -0
  581. package/dist/infra/queue/job-failure.d.ts +18 -0
  582. package/dist/infra/queue/job-failure.js +26 -0
  583. package/dist/infra/queue/queue-shutdown.d.ts +27 -0
  584. package/dist/infra/queue/queue-shutdown.js +81 -0
  585. package/dist/infra/queue/queue.module.d.ts +16 -0
  586. package/dist/infra/queue/queue.module.js +61 -0
  587. package/dist/infra/queue/redis-connection.d.ts +13 -0
  588. package/dist/infra/queue/redis-connection.js +25 -0
  589. package/dist/infra/queue/retired-schedulers.d.ts +7 -0
  590. package/dist/infra/queue/retired-schedulers.js +9 -0
  591. package/dist/infra/queue/run-job.d.ts +16 -0
  592. package/dist/infra/queue/run-job.js +19 -0
  593. package/dist/infra/redis/redis.module.d.ts +24 -0
  594. package/dist/infra/redis/redis.module.js +91 -0
  595. package/dist/infra/schedule/cron-tick.d.ts +12 -0
  596. package/dist/infra/schedule/cron-tick.js +25 -0
  597. package/dist/infra/schedule/locked-cron.decorator.d.ts +27 -0
  598. package/dist/infra/schedule/locked-cron.decorator.js +53 -0
  599. package/dist/infra/schedule/locked-interval.d.ts +69 -0
  600. package/dist/infra/schedule/locked-interval.js +190 -0
  601. package/dist/infra/schedule/locked-tick.d.ts +90 -0
  602. package/dist/infra/schedule/locked-tick.js +137 -0
  603. package/dist/infra/schedule/schedule.module.d.ts +8 -0
  604. package/dist/infra/schedule/schedule.module.js +27 -0
  605. package/dist/infra/schedule/scheduled-runs.d.ts +69 -0
  606. package/dist/infra/schedule/scheduled-runs.js +163 -0
  607. package/dist/infra/swagger/swagger.d.ts +16 -0
  608. package/dist/infra/swagger/swagger.js +31 -0
  609. package/dist/infra/throttler/credential-throttler.d.ts +35 -0
  610. package/dist/infra/throttler/credential-throttler.js +77 -0
  611. package/dist/infra/throttler/named-throttlers.d.ts +36 -0
  612. package/dist/infra/throttler/named-throttlers.js +157 -0
  613. package/dist/infra/throttler/redis-throttler-storage.d.ts +38 -0
  614. package/dist/infra/throttler/redis-throttler-storage.js +130 -0
  615. package/dist/infra/throttler/throttler.guard.d.ts +23 -0
  616. package/dist/infra/throttler/throttler.guard.js +68 -0
  617. package/dist/infra/throttler/throttler.module.d.ts +15 -0
  618. package/dist/infra/throttler/throttler.module.js +53 -0
  619. package/dist/infra/tokens.d.ts +20 -0
  620. package/dist/infra/tokens.js +20 -0
  621. package/dist/infra/validation/create-zod-dto.d.ts +23 -0
  622. package/dist/infra/validation/create-zod-dto.js +35 -0
  623. package/dist/infra/validation/parse-with-zod.d.ts +7 -0
  624. package/dist/infra/validation/parse-with-zod.js +12 -0
  625. package/dist/infra/validation/validation.module.d.ts +3 -0
  626. package/dist/infra/validation/validation.module.js +16 -0
  627. package/dist/infra/validation/zod-params.d.ts +7 -0
  628. package/dist/infra/validation/zod-params.js +42 -0
  629. package/dist/infra/validation/zod-validation.pipe.d.ts +11 -0
  630. package/dist/infra/validation/zod-validation.pipe.js +31 -0
  631. package/dist/kernel.d.ts +9 -241
  632. package/dist/kernel.js +8 -1305
  633. package/dist/kernel.module.d.ts +17 -0
  634. package/dist/kernel.module.js +145 -0
  635. package/dist/lifecycle/kernel-lifecycle.d.ts +140 -0
  636. package/dist/lifecycle/kernel-lifecycle.js +465 -0
  637. package/dist/lifecycle/tokens.d.ts +3 -0
  638. package/dist/lifecycle/tokens.js +3 -0
  639. package/dist/log-config.d.ts +9 -0
  640. package/dist/log-config.js +27 -0
  641. package/dist/log-context.d.ts +34 -0
  642. package/dist/log-context.js +44 -0
  643. package/dist/log-loki.d.ts +34 -0
  644. package/dist/log-loki.js +145 -0
  645. package/dist/log.d.ts +53 -10
  646. package/dist/log.js +168 -18
  647. package/dist/models/embeddings.d.ts +82 -0
  648. package/dist/models/embeddings.js +326 -0
  649. package/dist/models/enablement.controller.d.ts +40 -0
  650. package/dist/models/enablement.controller.js +74 -0
  651. package/dist/models/enablement.d.ts +101 -0
  652. package/dist/models/enablement.js +264 -0
  653. package/dist/models/models.module.d.ts +7 -0
  654. package/dist/models/models.module.js +36 -0
  655. package/dist/models/org-models.schemas.d.ts +8 -0
  656. package/dist/models/org-models.schemas.js +22 -0
  657. package/dist/models/prices.d.ts +13 -5
  658. package/dist/models/prices.js +69 -39
  659. package/dist/models/purposes.controller.d.ts +6 -4
  660. package/dist/models/purposes.controller.js +16 -11
  661. package/dist/models/purposes.d.ts +103 -23
  662. package/dist/models/purposes.js +208 -77
  663. package/dist/net/public-address.js +3 -2
  664. package/dist/orgs/directory-sync.controller.d.ts +1 -1
  665. package/dist/orgs/directory-sync.controller.js +2 -2
  666. package/dist/orgs/directory-sync.d.ts +74 -35
  667. package/dist/orgs/directory-sync.js +243 -132
  668. package/dist/orgs/invitations.controller.d.ts +8 -8
  669. package/dist/orgs/invitations.controller.js +27 -26
  670. package/dist/orgs/invitations.service.d.ts +12 -9
  671. package/dist/orgs/invitations.service.js +130 -92
  672. package/dist/orgs/job-ids.d.ts +8 -0
  673. package/dist/orgs/job-ids.js +8 -0
  674. package/dist/orgs/members.service.d.ts +19 -12
  675. package/dist/orgs/members.service.js +161 -117
  676. package/dist/orgs/offboarding.d.ts +61 -60
  677. package/dist/orgs/offboarding.js +206 -95
  678. package/dist/orgs/org-lock.d.ts +33 -19
  679. package/dist/orgs/org-lock.js +94 -35
  680. package/dist/orgs/org.guard.d.ts +11 -1
  681. package/dist/orgs/org.guard.js +45 -34
  682. package/dist/orgs/orgs.controller.d.ts +13 -16
  683. package/dist/orgs/orgs.controller.js +29 -20
  684. package/dist/orgs/orgs.module.d.ts +6 -0
  685. package/dist/orgs/orgs.module.js +71 -0
  686. package/dist/orgs/orgs.schemas.d.ts +8 -0
  687. package/dist/orgs/orgs.schemas.js +16 -0
  688. package/dist/orgs/orgs.service.d.ts +47 -21
  689. package/dist/orgs/orgs.service.js +166 -91
  690. package/dist/orgs/roles.d.ts +1 -1
  691. package/dist/orgs/roles.js +5 -1
  692. package/dist/orgs/settings.controller.d.ts +2 -2
  693. package/dist/orgs/settings.controller.js +8 -6
  694. package/dist/orgs/settings.service.d.ts +45 -14
  695. package/dist/orgs/settings.service.js +110 -51
  696. package/dist/overrides.d.ts +63 -0
  697. package/dist/overrides.js +34 -0
  698. package/dist/platform/actor.d.ts +48 -0
  699. package/dist/platform/actor.js +100 -0
  700. package/dist/platform/agent-docs.d.ts +18 -0
  701. package/dist/platform/agent-docs.js +59 -0
  702. package/dist/platform/availability.d.ts +14 -0
  703. package/dist/platform/availability.js +43 -0
  704. package/dist/platform/errors.d.ts +28 -0
  705. package/dist/platform/errors.js +65 -0
  706. package/dist/platform/exclusions.d.ts +11 -0
  707. package/dist/platform/exclusions.js +667 -0
  708. package/dist/platform/method.d.ts +6 -0
  709. package/dist/platform/method.js +15 -0
  710. package/dist/platform/operation.d.ts +169 -0
  711. package/dist/platform/operation.js +90 -0
  712. package/dist/platform/ops/accounts.ops.d.ts +32 -0
  713. package/dist/platform/ops/accounts.ops.js +291 -0
  714. package/dist/platform/ops/admin.ops.d.ts +36 -0
  715. package/dist/platform/ops/admin.ops.js +389 -0
  716. package/dist/platform/ops/agent-skills.ops.d.ts +24 -0
  717. package/dist/platform/ops/agent-skills.ops.js +226 -0
  718. package/dist/platform/ops/agent-templates.ops.d.ts +17 -0
  719. package/dist/platform/ops/agent-templates.ops.js +272 -0
  720. package/dist/platform/ops/agents.ops.d.ts +37 -0
  721. package/dist/platform/ops/agents.ops.js +717 -0
  722. package/dist/platform/ops/approvals.ops.d.ts +30 -0
  723. package/dist/platform/ops/approvals.ops.js +116 -0
  724. package/dist/platform/ops/background.ops.d.ts +14 -0
  725. package/dist/platform/ops/background.ops.js +134 -0
  726. package/dist/platform/ops/catalog-admin.ops.d.ts +74 -0
  727. package/dist/platform/ops/catalog-admin.ops.js +599 -0
  728. package/dist/platform/ops/channels.ops.d.ts +16 -0
  729. package/dist/platform/ops/channels.ops.js +195 -0
  730. package/dist/platform/ops/components.ops.d.ts +46 -0
  731. package/dist/platform/ops/components.ops.js +853 -0
  732. package/dist/platform/ops/connectors.ops.d.ts +17 -0
  733. package/dist/platform/ops/connectors.ops.js +188 -0
  734. package/dist/platform/ops/conversations.ops.d.ts +30 -0
  735. package/dist/platform/ops/conversations.ops.js +470 -0
  736. package/dist/platform/ops/environments.ops.d.ts +26 -0
  737. package/dist/platform/ops/environments.ops.js +311 -0
  738. package/dist/platform/ops/errors.d.ts +16 -0
  739. package/dist/platform/ops/errors.js +30 -0
  740. package/dist/platform/ops/evals.ops.d.ts +28 -0
  741. package/dist/platform/ops/evals.ops.js +783 -0
  742. package/dist/platform/ops/extensions-admin.ops.d.ts +25 -0
  743. package/dist/platform/ops/extensions-admin.ops.js +372 -0
  744. package/dist/platform/ops/extensions.ops.d.ts +25 -0
  745. package/dist/platform/ops/extensions.ops.js +347 -0
  746. package/dist/platform/ops/inbox.ops.d.ts +25 -0
  747. package/dist/platform/ops/inbox.ops.js +378 -0
  748. package/dist/platform/ops/marketplaces.ops.d.ts +22 -0
  749. package/dist/platform/ops/marketplaces.ops.js +466 -0
  750. package/dist/platform/ops/models.ops.d.ts +25 -0
  751. package/dist/platform/ops/models.ops.js +232 -0
  752. package/dist/platform/ops/org-plugins.ops.d.ts +29 -0
  753. package/dist/platform/ops/org-plugins.ops.js +329 -0
  754. package/dist/platform/ops/org-settings.ops.d.ts +16 -0
  755. package/dist/platform/ops/org-settings.ops.js +102 -0
  756. package/dist/platform/ops/orgs.ops.d.ts +28 -0
  757. package/dist/platform/ops/orgs.ops.js +295 -0
  758. package/dist/platform/ops/other-orgs.d.ts +20 -0
  759. package/dist/platform/ops/other-orgs.js +72 -0
  760. package/dist/platform/ops/paging.d.ts +14 -0
  761. package/dist/platform/ops/paging.js +20 -0
  762. package/dist/platform/ops/platform.ops.d.ts +28 -0
  763. package/dist/platform/ops/platform.ops.js +204 -0
  764. package/dist/platform/ops/plugins.ops.d.ts +35 -0
  765. package/dist/platform/ops/plugins.ops.js +476 -0
  766. package/dist/platform/ops/previewers.ops.d.ts +14 -0
  767. package/dist/platform/ops/previewers.ops.js +109 -0
  768. package/dist/platform/ops/requests.ops.d.ts +14 -0
  769. package/dist/platform/ops/requests.ops.js +191 -0
  770. package/dist/platform/ops/role.d.ts +4 -0
  771. package/dist/platform/ops/role.js +10 -0
  772. package/dist/platform/ops/skills.ops.d.ts +17 -0
  773. package/dist/platform/ops/skills.ops.js +216 -0
  774. package/dist/platform/ops/summary.d.ts +10 -0
  775. package/dist/platform/ops/summary.js +18 -0
  776. package/dist/platform/ops/unavailable.d.ts +23 -0
  777. package/dist/platform/ops/unavailable.js +118 -0
  778. package/dist/platform/parity.d.ts +33 -0
  779. package/dist/platform/parity.js +272 -0
  780. package/dist/platform/platform-ops.module.d.ts +39 -0
  781. package/dist/platform/platform-ops.module.js +122 -0
  782. package/dist/platform/platform.module.d.ts +8 -0
  783. package/dist/platform/platform.module.js +25 -0
  784. package/dist/platform/registry.d.ts +30 -0
  785. package/dist/platform/registry.js +111 -0
  786. package/dist/platform/route-schemas.d.ts +18 -0
  787. package/dist/platform/route-schemas.js +63 -0
  788. package/dist/roles/gateway-role.d.ts +54 -0
  789. package/dist/roles/gateway-role.js +118 -0
  790. package/dist/roles/gateway.module.d.ts +9 -0
  791. package/dist/roles/gateway.module.js +31 -0
  792. package/dist/roles/worker-role.d.ts +65 -0
  793. package/dist/roles/worker-role.js +151 -0
  794. package/dist/roles/worker.module.d.ts +14 -0
  795. package/dist/roles/worker.module.js +106 -0
  796. package/dist/runtime/abort.js +19 -2
  797. package/dist/runtime/checkpointer.d.ts +8 -3
  798. package/dist/runtime/checkpointer.js +87 -55
  799. package/dist/runtime/context/build.d.ts +21 -13
  800. package/dist/runtime/context/build.js +106 -29
  801. package/dist/runtime/context/claude-tools.d.ts +4 -1
  802. package/dist/runtime/context/claude-tools.js +13 -12
  803. package/dist/runtime/context/compaction.js +24 -1
  804. package/dist/runtime/context/environment-paths.d.ts +40 -0
  805. package/dist/runtime/context/environment-paths.js +48 -0
  806. package/dist/runtime/context/legacy-text.d.ts +22 -0
  807. package/dist/runtime/context/legacy-text.js +37 -0
  808. package/dist/runtime/context/reminders.d.ts +2 -0
  809. package/dist/runtime/context/reminders.js +2 -0
  810. package/dist/runtime/context/run-context.d.ts +65 -0
  811. package/dist/runtime/context/run-context.js +215 -0
  812. package/dist/runtime/context/skills.d.ts +29 -11
  813. package/dist/runtime/context/skills.js +46 -32
  814. package/dist/runtime/context/tool-changes.d.ts +27 -0
  815. package/dist/runtime/context/tool-changes.js +60 -0
  816. package/dist/runtime/conversation-lock.d.ts +20 -11
  817. package/dist/runtime/conversation-lock.js +62 -72
  818. package/dist/runtime/hook-calls.d.ts +11 -4
  819. package/dist/runtime/hook-calls.js +41 -13
  820. package/dist/runtime/job-ids.d.ts +10 -0
  821. package/dist/runtime/job-ids.js +10 -0
  822. package/dist/runtime/langgraph-loop.d.ts +3 -1
  823. package/dist/runtime/langgraph-loop.js +37 -18
  824. package/dist/runtime/loop.d.ts +42 -6
  825. package/dist/runtime/loop.js +14 -0
  826. package/dist/runtime/maintenance-queue.d.ts +10 -0
  827. package/dist/runtime/maintenance-queue.js +10 -0
  828. package/dist/runtime/maintenance.d.ts +50 -74
  829. package/dist/runtime/maintenance.js +166 -136
  830. package/dist/runtime/model-call.d.ts +61 -15
  831. package/dist/runtime/model-call.js +128 -84
  832. package/dist/runtime/providers.d.ts +158 -27
  833. package/dist/runtime/providers.js +373 -63
  834. package/dist/runtime/quota.d.ts +17 -3
  835. package/dist/runtime/quota.js +27 -2
  836. package/dist/runtime/retired-schedulers.d.ts +7 -0
  837. package/dist/runtime/retired-schedulers.js +31 -0
  838. package/dist/runtime/run-context.service.d.ts +65 -0
  839. package/dist/runtime/run-context.service.js +236 -0
  840. package/dist/runtime/run-control.d.ts +43 -0
  841. package/dist/runtime/run-control.js +89 -0
  842. package/dist/runtime/run-drafts.d.ts +85 -0
  843. package/dist/runtime/run-drafts.js +230 -0
  844. package/dist/runtime/run-finish.d.ts +27 -18
  845. package/dist/runtime/run-finish.js +98 -51
  846. package/dist/runtime/run-jobs.d.ts +46 -0
  847. package/dist/runtime/run-jobs.js +91 -0
  848. package/dist/runtime/run-processors.d.ts +60 -0
  849. package/dist/runtime/run-processors.js +185 -0
  850. package/dist/runtime/run-queue.d.ts +90 -58
  851. package/dist/runtime/run-queue.js +566 -297
  852. package/dist/runtime/run-steps.d.ts +39 -0
  853. package/dist/runtime/run-steps.js +96 -0
  854. package/dist/runtime/run-worker.d.ts +134 -77
  855. package/dist/runtime/run-worker.js +412 -236
  856. package/dist/runtime/runtime.module.d.ts +10 -0
  857. package/dist/runtime/runtime.module.js +122 -0
  858. package/dist/runtime/step-log.d.ts +51 -0
  859. package/dist/runtime/step-log.js +111 -0
  860. package/dist/runtime/stream.controller.d.ts +28 -9
  861. package/dist/runtime/stream.controller.js +72 -13
  862. package/dist/runtime/stream.d.ts +27 -6
  863. package/dist/runtime/stream.js +102 -7
  864. package/dist/runtime/subagents/child.d.ts +58 -51
  865. package/dist/runtime/subagents/child.js +105 -86
  866. package/dist/runtime/subagents/definition.d.ts +32 -28
  867. package/dist/runtime/subagents/definition.js +89 -143
  868. package/dist/runtime/subagents/deliveries.d.ts +71 -0
  869. package/dist/runtime/subagents/deliveries.js +228 -0
  870. package/dist/runtime/subagents/dispatch.d.ts +197 -27
  871. package/dist/runtime/subagents/dispatch.js +336 -270
  872. package/dist/runtime/subagents/limits.d.ts +32 -8
  873. package/dist/runtime/subagents/limits.js +44 -8
  874. package/dist/runtime/subagents/messages.d.ts +95 -0
  875. package/dist/runtime/subagents/messages.js +328 -0
  876. package/dist/runtime/subagents/org-agents.d.ts +4 -4
  877. package/dist/runtime/subagents/org-agents.js +3 -2
  878. package/dist/runtime/subagents/preamble.d.ts +4 -4
  879. package/dist/runtime/subagents/preamble.js +9 -7
  880. package/dist/runtime/subagents/progress.d.ts +10 -8
  881. package/dist/runtime/subagents/progress.js +11 -6
  882. package/dist/runtime/subagents/render.d.ts +30 -0
  883. package/dist/runtime/subagents/render.js +53 -0
  884. package/dist/runtime/subagents/roster.d.ts +27 -10
  885. package/dist/runtime/subagents/roster.js +49 -13
  886. package/dist/runtime/subagents/skill-fork.d.ts +10 -10
  887. package/dist/runtime/subagents/skill-fork.js +23 -8
  888. package/dist/runtime/subagents/status.d.ts +14 -0
  889. package/dist/runtime/subagents/status.js +23 -0
  890. package/dist/runtime/subagents/subagents.service.d.ts +43 -0
  891. package/dist/runtime/subagents/subagents.service.js +106 -0
  892. package/dist/runtime/usage-report-jobs.d.ts +88 -0
  893. package/dist/runtime/usage-report-jobs.js +158 -0
  894. package/dist/runtime/usage-report.d.ts +121 -83
  895. package/dist/runtime/usage-report.js +355 -180
  896. package/dist/runtime/waits.d.ts +258 -81
  897. package/dist/runtime/waits.js +800 -263
  898. package/dist/sandbox/job-ids.d.ts +10 -0
  899. package/dist/sandbox/job-ids.js +10 -0
  900. package/dist/sandbox/jobs.d.ts +68 -0
  901. package/dist/sandbox/jobs.js +150 -0
  902. package/dist/sandbox/leases.d.ts +73 -82
  903. package/dist/sandbox/leases.js +162 -346
  904. package/dist/sandbox/providers.d.ts +46 -0
  905. package/dist/sandbox/providers.js +83 -0
  906. package/dist/sandbox/sandbox.module.d.ts +9 -0
  907. package/dist/sandbox/sandbox.module.js +36 -0
  908. package/dist/sandbox/sandbox.service.d.ts +359 -151
  909. package/dist/sandbox/sandbox.service.js +950 -435
  910. package/dist/sandbox/unreachable.d.ts +30 -0
  911. package/dist/sandbox/unreachable.js +108 -0
  912. package/dist/skills/catalog.d.ts +40 -26
  913. package/dist/skills/catalog.js +120 -99
  914. package/dist/skills/changes.controller.d.ts +11 -4
  915. package/dist/skills/changes.controller.js +34 -9
  916. package/dist/skills/changes.service.d.ts +31 -21
  917. package/dist/skills/changes.service.js +426 -368
  918. package/dist/skills/invocable.controller.d.ts +2 -2
  919. package/dist/skills/invocable.controller.js +10 -7
  920. package/dist/skills/invocation-keys.d.ts +1 -1
  921. package/dist/skills/invocation-keys.js +1 -1
  922. package/dist/skills/invoke.d.ts +19 -18
  923. package/dist/skills/invoke.js +68 -24
  924. package/dist/skills/package.d.ts +20 -1
  925. package/dist/skills/package.js +28 -1
  926. package/dist/skills/skills.controller.d.ts +33 -7
  927. package/dist/skills/skills.controller.js +79 -12
  928. package/dist/skills/skills.module.d.ts +6 -0
  929. package/dist/skills/skills.module.js +39 -0
  930. package/dist/skills/skills.schemas.d.ts +48 -0
  931. package/dist/skills/skills.schemas.js +61 -0
  932. package/dist/skills/skills.service.d.ts +151 -44
  933. package/dist/skills/skills.service.js +636 -204
  934. package/dist/skills/usable.d.ts +81 -0
  935. package/dist/skills/usable.js +379 -0
  936. package/dist/storage/job-ids.d.ts +6 -0
  937. package/dist/storage/job-ids.js +6 -0
  938. package/dist/storage/purge.d.ts +22 -7
  939. package/dist/storage/purge.js +55 -3
  940. package/dist/storage/storage.module.d.ts +6 -0
  941. package/dist/storage/storage.module.js +23 -0
  942. package/dist/storage/storage.service.d.ts +18 -4
  943. package/dist/storage/storage.service.js +44 -3
  944. package/dist/time-zone.d.ts +5 -0
  945. package/dist/time-zone.js +19 -0
  946. package/dist/tools/approvals.controller.d.ts +1 -1
  947. package/dist/tools/approvals.controller.js +14 -11
  948. package/dist/tools/approvals.schemas.d.ts +21 -0
  949. package/dist/tools/approvals.schemas.js +15 -0
  950. package/dist/tools/approvals.service.d.ts +53 -27
  951. package/dist/tools/approvals.service.js +365 -260
  952. package/dist/tools/breaker.d.ts +2 -2
  953. package/dist/tools/breaker.js +21 -3
  954. package/dist/tools/builtin-names.d.ts +109 -0
  955. package/dist/tools/builtin-names.js +173 -0
  956. package/dist/tools/builtins/agent.d.ts +27 -25
  957. package/dist/tools/builtins/agent.js +66 -63
  958. package/dist/tools/builtins/ask-user.d.ts +3 -3
  959. package/dist/tools/builtins/ask-user.js +3 -3
  960. package/dist/tools/builtins/builtin-tools.d.ts +41 -0
  961. package/dist/tools/builtins/builtin-tools.js +151 -0
  962. package/dist/tools/builtins/current-time.d.ts +26 -0
  963. package/dist/tools/builtins/current-time.js +99 -0
  964. package/dist/tools/builtins/handback.d.ts +28 -0
  965. package/dist/tools/builtins/handback.js +53 -0
  966. package/dist/tools/builtins/platform.d.ts +51 -0
  967. package/dist/tools/builtins/platform.js +451 -0
  968. package/dist/tools/builtins/read-tool-output.d.ts +3 -3
  969. package/dist/tools/builtins/read-tool-output.js +3 -3
  970. package/dist/tools/builtins/sandbox/bash.d.ts +5 -5
  971. package/dist/tools/builtins/sandbox/bash.js +293 -41
  972. package/dist/tools/builtins/sandbox/common.d.ts +142 -40
  973. package/dist/tools/builtins/sandbox/common.js +227 -65
  974. package/dist/tools/builtins/sandbox/deliver.d.ts +1 -1
  975. package/dist/tools/builtins/sandbox/deliver.js +21 -18
  976. package/dist/tools/builtins/sandbox/edit.d.ts +1 -1
  977. package/dist/tools/builtins/sandbox/edit.js +65 -51
  978. package/dist/tools/builtins/sandbox/file-state.d.ts +34 -0
  979. package/dist/tools/builtins/sandbox/file-state.js +34 -0
  980. package/dist/tools/builtins/sandbox/glob-match.d.ts +1 -1
  981. package/dist/tools/builtins/sandbox/glob-match.js +1 -1
  982. package/dist/tools/builtins/sandbox/glob.d.ts +1 -1
  983. package/dist/tools/builtins/sandbox/glob.js +19 -14
  984. package/dist/tools/builtins/sandbox/grep.d.ts +7 -4
  985. package/dist/tools/builtins/sandbox/grep.js +155 -36
  986. package/dist/tools/builtins/sandbox/index.d.ts +9 -5
  987. package/dist/tools/builtins/sandbox/index.js +13 -5
  988. package/dist/tools/builtins/sandbox/read.d.ts +2 -2
  989. package/dist/tools/builtins/sandbox/read.js +30 -20
  990. package/dist/tools/builtins/sandbox/task-output.d.ts +79 -0
  991. package/dist/tools/builtins/sandbox/task-output.js +334 -0
  992. package/dist/tools/builtins/sandbox/task-stop.d.ts +10 -0
  993. package/dist/tools/builtins/sandbox/task-stop.js +113 -0
  994. package/dist/tools/builtins/sandbox/write.d.ts +1 -1
  995. package/dist/tools/builtins/sandbox/write.js +52 -45
  996. package/dist/tools/builtins/send-message.d.ts +56 -0
  997. package/dist/tools/builtins/send-message.js +100 -0
  998. package/dist/tools/builtins/skill-load.d.ts +32 -21
  999. package/dist/tools/builtins/skill-load.js +125 -74
  1000. package/dist/tools/builtins/skill-write.d.ts +4 -4
  1001. package/dist/tools/builtins/skill-write.js +12 -12
  1002. package/dist/tools/builtins/tool-search.d.ts +13 -9
  1003. package/dist/tools/builtins/tool-search.js +25 -14
  1004. package/dist/tools/builtins/web/errors.d.ts +8 -0
  1005. package/dist/tools/builtins/web/errors.js +53 -0
  1006. package/dist/tools/builtins/web/extract.d.ts +62 -0
  1007. package/dist/tools/builtins/web/extract.js +271 -0
  1008. package/dist/tools/builtins/web/fetch.d.ts +55 -0
  1009. package/dist/tools/builtins/web/fetch.js +175 -0
  1010. package/dist/tools/builtins/web/index.d.ts +13 -0
  1011. package/dist/tools/builtins/web/index.js +12 -0
  1012. package/dist/tools/builtins/web/page-cache.d.ts +25 -0
  1013. package/dist/tools/builtins/web/page-cache.js +77 -0
  1014. package/dist/tools/builtins/web/search.d.ts +25 -0
  1015. package/dist/tools/builtins/web/search.js +210 -0
  1016. package/dist/tools/builtins/web/url.d.ts +17 -0
  1017. package/dist/tools/builtins/web/url.js +43 -0
  1018. package/dist/tools/canonical-json.d.ts +6 -0
  1019. package/dist/tools/canonical-json.js +16 -0
  1020. package/dist/tools/connector-content.controller.d.ts +1 -1
  1021. package/dist/tools/connector-content.controller.js +11 -6
  1022. package/dist/tools/connector-content.d.ts +12 -15
  1023. package/dist/tools/connector-content.js +53 -18
  1024. package/dist/tools/connectors.controller.d.ts +16 -3
  1025. package/dist/tools/connectors.controller.js +34 -14
  1026. package/dist/tools/connectors.schemas.d.ts +12 -0
  1027. package/dist/tools/connectors.schemas.js +19 -0
  1028. package/dist/tools/connectors.service.d.ts +80 -18
  1029. package/dist/tools/connectors.service.js +529 -358
  1030. package/dist/tools/credentials.d.ts +20 -20
  1031. package/dist/tools/credentials.js +55 -34
  1032. package/dist/tools/display-names.d.ts +9 -0
  1033. package/dist/tools/display-names.js +24 -0
  1034. package/dist/tools/drift.d.ts +29 -41
  1035. package/dist/tools/drift.js +116 -84
  1036. package/dist/tools/elicitation.js +1 -1
  1037. package/dist/tools/extension-tools.controller.d.ts +14 -0
  1038. package/dist/tools/extension-tools.controller.js +37 -0
  1039. package/dist/tools/info.d.ts +73 -13
  1040. package/dist/tools/info.js +151 -39
  1041. package/dist/tools/job-ids.d.ts +13 -0
  1042. package/dist/tools/job-ids.js +15 -0
  1043. package/dist/tools/jobs.d.ts +24 -0
  1044. package/dist/tools/jobs.js +69 -0
  1045. package/dist/tools/legacy-data.d.ts +34 -0
  1046. package/dist/tools/legacy-data.js +76 -0
  1047. package/dist/tools/legacy-keys.d.ts +51 -0
  1048. package/dist/tools/legacy-keys.js +115 -0
  1049. package/dist/tools/naming.d.ts +1 -5
  1050. package/dist/tools/naming.js +1 -7
  1051. package/dist/tools/oauth/flow-paths.d.ts +16 -0
  1052. package/dist/tools/oauth/flow-paths.js +38 -0
  1053. package/dist/tools/oauth/flow.d.ts +30 -30
  1054. package/dist/tools/oauth/flow.js +109 -81
  1055. package/dist/tools/oauth/oauth.controller.d.ts +3 -3
  1056. package/dist/tools/oauth/oauth.controller.js +12 -9
  1057. package/dist/tools/oauth/tokens.d.ts +45 -10
  1058. package/dist/tools/oauth/tokens.js +70 -24
  1059. package/dist/tools/org-tool-switches.d.ts +88 -0
  1060. package/dist/tools/org-tool-switches.js +201 -0
  1061. package/dist/tools/outputs.d.ts +13 -4
  1062. package/dist/tools/outputs.js +48 -4
  1063. package/dist/tools/pipeline.d.ts +108 -80
  1064. package/dist/tools/pipeline.js +396 -409
  1065. package/dist/tools/policy.d.ts +4 -17
  1066. package/dist/tools/policy.js +49 -35
  1067. package/dist/tools/questions.controller.d.ts +2 -2
  1068. package/dist/tools/questions.controller.js +9 -6
  1069. package/dist/tools/questions.service.d.ts +26 -25
  1070. package/dist/tools/questions.service.js +201 -142
  1071. package/dist/tools/registry.d.ts +215 -84
  1072. package/dist/tools/registry.js +382 -264
  1073. package/dist/tools/resources.d.ts +1 -1
  1074. package/dist/tools/resources.js +1 -1
  1075. package/dist/tools/specs.d.ts +5 -4
  1076. package/dist/tools/specs.js +3 -1
  1077. package/dist/tools/tools.module.d.ts +10 -0
  1078. package/dist/tools/tools.module.js +113 -0
  1079. package/dist/tools/validate.js +1 -1
  1080. package/dist/ui/call-extension.d.ts +16 -0
  1081. package/dist/ui/call-extension.js +38 -0
  1082. package/dist/ui/embed-token.d.ts +9 -5
  1083. package/dist/ui/embed-token.js +34 -6
  1084. package/dist/ui/ui-stream.d.ts +22 -17
  1085. package/dist/ui/ui-stream.js +72 -12
  1086. package/dist/ui/ui.module.d.ts +7 -0
  1087. package/dist/ui/ui.module.js +28 -0
  1088. package/dist/ui/views.controller.d.ts +14 -12
  1089. package/dist/ui/views.controller.js +32 -25
  1090. package/dist/ui/views.d.ts +10 -57
  1091. package/dist/ui/views.js +58 -46
  1092. package/package.json +15 -3
  1093. package/src/migrations/0063_tool_keys_claude_code.sql +220 -0
  1094. package/src/migrations/0064_account_last_org.sql +7 -0
  1095. package/src/migrations/0065_conversation_archive.sql +8 -0
  1096. package/src/migrations/0066_extension_display_name.sql +4 -0
  1097. package/src/migrations/0067_agent_profiles.sql +20 -0
  1098. package/src/migrations/0068_agent_avatar_uploads.sql +7 -0
  1099. package/src/migrations/0069_attachments_agent_idx.sql +3 -0
  1100. package/src/migrations/0070_background_tasks.sql +37 -0
  1101. package/src/migrations/0071_background_tasks_reserve.sql +6 -0
  1102. package/src/migrations/0072_background_tasks_stopping.sql +5 -0
  1103. package/src/migrations/0073_org_extension_point_defaults.sql +11 -0
  1104. package/src/migrations/0074_subagent_tree.sql +50 -0
  1105. package/src/migrations/0075_plugin_scope.sql +61 -0
  1106. package/src/migrations/0076_skills_created_by_nullable.sql +6 -0
  1107. package/src/migrations/0077_scope_requests.sql +52 -0
  1108. package/src/migrations/0078_scope_grant_switches.sql +18 -0
  1109. package/src/migrations/0079_scope_live_install_switches.sql +19 -0
  1110. package/src/migrations/0080_rename_enterprise_admin.sql +18 -0
  1111. package/src/migrations/0081_platform_components.sql +129 -0
  1112. package/src/migrations/0082_platform_migration.sql +33 -0
  1113. package/src/migrations/0083_plugin_scope_sync_failures.sql +15 -0
  1114. package/src/migrations/0084_org_owned_items.sql +85 -0
  1115. package/src/migrations/0085_agent_templates_phase4.sql +45 -0
  1116. package/src/migrations/0086_org_layering.sql +30 -0
  1117. package/src/migrations/0087_approval_summary.sql +6 -0
  1118. package/src/migrations/0088_environments.sql +80 -0
  1119. package/src/migrations/0089_model_kinds_usage.sql +38 -0
  1120. package/src/migrations/0090_initial_passwords.sql +27 -0
  1121. package/src/migrations/0091_account_time_zone.sql +4 -0
  1122. package/src/migrations/0092_tools_default_on.sql +27 -0
  1123. package/src/migrations/0093_connected_environments.sql +37 -0
  1124. package/src/migrations/0094_environment_paths_idx.sql +7 -0
  1125. package/src/migrations/0095_environment_files_resets.sql +5 -0
  1126. package/src/migrations/0096_environment_demoted_default.sql +18 -0
  1127. package/src/migrations/0097_extension_installs_enabled_at.sql +16 -0
  1128. package/src/migrations/0098_single_provider_running_first.sql +41 -0
  1129. package/src/migrations/0099_channel_connection_guide_ack.sql +6 -0
  1130. package/src/migrations/0100_catalog_files.sql +13 -0
  1131. package/src/migrations/0101_marketplace_icons.sql +32 -0
  1132. package/dist/catalog/upgrade-targets.d.ts +0 -59
  1133. package/dist/catalog/upgrade-targets.js +0 -90
  1134. package/dist/conversations/sandbox-status.d.ts +0 -21
  1135. package/dist/conversations/sandbox-status.js +0 -24
  1136. package/dist/extensions/org-config.controller.d.ts +0 -24
  1137. package/dist/extensions/org-config.controller.js +0 -59
  1138. package/dist/http/gateway.module.js +0 -13
  1139. package/dist/http/health.controller.d.ts +0 -26
  1140. package/dist/http/health.controller.js +0 -79
  1141. package/dist/http/tokens.d.ts +0 -131
  1142. package/dist/http/tokens.js +0 -131
  1143. package/dist/http/zod.pipe.d.ts +0 -8
  1144. package/dist/http/zod.pipe.js +0 -14
  1145. package/dist/identity/enterprise-admin.d.ts +0 -14
  1146. package/dist/identity/enterprise-admin.js +0 -27
  1147. package/dist/identity/rate-limit.d.ts +0 -55
  1148. package/dist/identity/rate-limit.js +0 -121
  1149. package/dist/sandbox/lifecycle.d.ts +0 -21
  1150. package/dist/sandbox/lifecycle.js +0 -68
  1151. package/dist/tools/builtins/sandbox/names.d.ts +0 -7
  1152. package/dist/tools/builtins/sandbox/names.js +0 -20
@@ -1,39 +1,64 @@
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";
2
- import { readFile } from "node:fs/promises";
11
+ import { readdir, readFile, stat } from "node:fs/promises";
3
12
  import { join } from "node:path";
4
13
  import { fileURLToPath } from "node:url";
5
- import { bootstrapFileName, parseBootstrapManifest, SDK_VERSION, } from "@capybara-hq/plugin-sdk";
14
+ import { parseBootstrapManifest, SDK_VERSION, } from "@capybara-hq/plugin-sdk";
15
+ import { Inject, Injectable, Optional } from "@nestjs/common";
6
16
  import { sql } from "kysely";
7
- import pg from "pg";
8
17
  import semver from "semver";
18
+ import { otherNameOwner } from "../catalog/ownership.js";
9
19
  import { catalogPackageError } from "../catalog/plugin-import.js";
10
20
  import { PluginPackageError, readPluginPackage } from "../catalog/plugin-package.js";
11
- import { pgConnectOptions } from "../db/pool.js";
12
21
  import { ApiError } from "../errors.js";
13
22
  import { audit } from "../identity/audit.js";
23
+ import { KernelConfigService } from "../infra/config/kernel-config.service.js";
24
+ import { KernelDb } from "../infra/database/kernel-db.js";
25
+ import { TransactionHost } from "../infra/database/transaction-host.js";
26
+ import { Transactional } from "../infra/database/transactional.decorator.js";
27
+ import { LockService } from "../infra/lock/lock.service.js";
28
+ import { KERNEL_LOGGER } from "../infra/tokens.js";
29
+ import { fetchNpmPackage, IntegrityMismatchError, NpmFetchError, PackageTooLargeError, } from "../packages/npm.js";
30
+ import { ExtensionAdminOps } from "./admin-ops.js";
14
31
  import { writeSnapshot } from "./approvals.js";
32
+ import { ExtensionInstalls } from "./installs.js";
33
+ import { PluginApproveLock } from "./locks.js";
15
34
  import { ExtensionPackageError, permissionSetOfPackage, readExtensionPackage } from "./package.js";
16
35
  import { diffPermissions } from "./permission-set.js";
36
+ import { ExtensionRegistry } from "./registry.js";
17
37
  /**
18
- * The bootstrap step (package ecosystem spec §7): installs the plugins pinned by the bootstrap
19
- * manifest (`packages/kernel/bootstrap.json`) from the tgz files baked into the image. It replaced
20
- * the builtin extensions.
38
+ * The bootstrap step (package ecosystem spec §7, startup bootstrap spec): installs the plugins
39
+ * pinned by the bootstrap manifest (`packages/kernel/bootstrap.json`). It replaced the builtin
40
+ * extensions.
21
41
  *
22
- * - Every file (`<dir>/<name>-<version>.tgz`) is checked against the entry's sha512 before anything
23
- * is read or written; a missing file is `bootstrap.missing_file`, a mismatch
24
- * `bootstrap.integrity_mismatch` (both name the plugin), and then nothing is written. It never
25
- * touches the network.
26
- * - The whole run holds the session advisory lock `capybara.bootstrap` on a connection of its own
27
- * (taken with `pg_try_advisory_lock` in a backoff loop that observes the signal, and closed
28
- * afterwards, so the lock never outlives the run): when several replicas start together only one
29
- * runs it; the others wait, then find it done. "Done" is a `bootstrap_runs` row for the
42
+ * - When the run is already done for the manifest nothing is read: no directory, no network, so a
43
+ * restart of an installed deployment never needs npm.
44
+ * - Otherwise, inside the lock and before anything is written, every entry's tgz is obtained
45
+ * ({@link resolveBootstrapPackages}): a `*.tgz` file of the optional offline directory whose
46
+ * sha512 equals the entry's `integrity` (the file name does not matter), else the npm download
47
+ * of a `source: "npm"` entry (`packages.npmRegistry` / `npmToken` / `maxBytes`, verified against
48
+ * the pin only). A workspace entry without a matching file is `bootstrap.missing_file`, a failed
49
+ * download `bootstrap.download_failed`, a download that differs from the pin
50
+ * `bootstrap.integrity_mismatch` (all name the plugin), and then nothing is written. Downloading
51
+ * inside the lock means a fleet starting together downloads once.
52
+ * - The whole run holds the Redis lock `lock:bootstrap` (`LockService`, decision R5 of the Nest
53
+ * kernel spec: TTL {@link BOOTSTRAP_LOCK_TTL_MS}, renewed every third of it, so a run longer than the TTL keeps
54
+ * it and a crashed holder's lock expires within it), taken by an unbounded wait that observes
55
+ * the signal: when several replicas (or `capybara bootstrap` and a starting kernel) run it
56
+ * together only one runs it; the others wait, then find it done. A lost lock (renewal failed
57
+ * until expiry) aborts the run at its next step. "Done" is a `bootstrap_runs` row for the
30
58
  * manifest's sha256 (written with the audit `bootstrap.completed` only when every entry
31
- * succeeded; otherwise the next start runs it again, which is idempotent). A lock connection
32
- * that drops mid-run is not detected (its errors are swallowed) and the run goes on without the
33
- * lock, so a second replica could run concurrently: accepted, since a concurrent import or
34
- * install degrades to `catalog.version_exists` and a deploy from the package store.
59
+ * succeeded; otherwise the next start runs it again, which is idempotent).
35
60
  * - Only entries new to the manifest are installed (Ruling 5): an optional entry that the last
36
- * completed run already handled and that is not installed now (an enterprise admin uninstalled
61
+ * completed run already handled and that is not installed now (a super admin uninstalled
37
62
  * it) stays uninstalled -> `kept`. A required entry is always installed.
38
63
  * - Per entry, by the installed state of its extension:
39
64
  * - not installed (and new, or required): imported into the catalog (source `bootstrap`, ref
@@ -42,8 +67,8 @@ import { diffPermissions } from "./permission-set.js";
42
67
  * and enabled -> `installed`;
43
68
  * - installed from `bootstrap` at a lower version: upgraded the same way (core's release vouched
44
69
  * for the version, so new permissions are pre-approved and audited), keeping the desired state
45
- * an enterprise admin chose (a disabled optional plugin stays disabled) -> `upgraded`;
46
- * - installed at a higher version, or from another source (an enterprise admin upgraded it), or
70
+ * a super admin chose (a disabled optional plugin stays disabled) -> `upgraded`;
71
+ * - installed at a higher version, or from another source (a super admin upgraded it), or
47
72
  * the name is config-declared (`declared`: config wins, no install record is created):
48
73
  * untouched, never downgraded -> `kept`;
49
74
  * - a declarative plugin (no extension): imported into the catalog only -> `imported` (`kept`
@@ -58,8 +83,11 @@ import { diffPermissions } from "./permission-set.js";
58
83
  * loses `required` -> `required_cleared`.
59
84
  * A failed entry does not stop the others; the run then throws {@link BootstrapFailedError} naming
60
85
  * them. The packages are kept in PG (`blob_store = 'pg'`), so installing an extension never needs
61
- * the object store (object-store-s3 is itself a bootstrap plugin); a declarative plugin's catalog
62
- * files do.
86
+ * the object store (object-store-s3 is itself a bootstrap plugin) and the directory and npm are
87
+ * never needed again. A plugin's icons and setup guide files are kept in PG too (`catalog_files`),
88
+ * so they never need it either; its skills, connector templates and agent templates do (an entry
89
+ * shipping them fails while no object store runs; an optional one is retried after the extensions
90
+ * loaded).
63
91
  */
64
92
  /** The bootstrap manifest that ships with the kernel package. */
65
93
  export const BOOTSTRAP_MANIFEST_FILE = fileURLToPath(new URL("../../bootstrap.json", import.meta.url));
@@ -95,16 +123,149 @@ export async function readBootstrapManifest(file = BOOTSTRAP_MANIFEST_FILE) {
95
123
  return parsed;
96
124
  }
97
125
  const integrityOf = (bytes) => `sha512-${createHash("sha512").update(bytes).digest("base64")}`;
98
- /** The advisory lock around a whole run. */
99
- const LOCK_KEY = "capybara.bootstrap";
100
- export class BootstrapService {
101
- d;
102
- constructor(d) {
103
- this.d = d;
126
+ /**
127
+ * Obtains every entry's tgz, checked against its pinned sha512: from the offline directory when a
128
+ * file there has that sha512, else (a `source: "npm"` entry) downloaded from the npm registry and
129
+ * verified against the pin (the packument's `dist.integrity` is not consulted). Throws an
130
+ * {@link ApiError} naming the plugin for the first entry it cannot obtain
131
+ * (`bootstrap.missing_file`, `bootstrap.download_failed`, `bootstrap.integrity_mismatch`).
132
+ */
133
+ export async function resolveBootstrapPackages(manifest, o) {
134
+ const out = new Map();
135
+ if (manifest.plugins.length === 0)
136
+ return out;
137
+ const { npmRegistry, npmToken, maxBytes } = o.config.packages;
138
+ const offline = o.dir !== undefined ? await scanOfflineDir(o.dir, maxBytes, o.log) : new Map();
139
+ const fetchPackage = o.fetch ?? fetchNpmPackage;
140
+ const signal = o.signal ?? new AbortController().signal;
141
+ const where = o.dir !== undefined ? o.dir : "the bootstrap directory (config bootstrap.dir)";
142
+ for (const e of manifest.plugins) {
143
+ signal.throwIfAborted();
144
+ const found = offline.get(e.integrity);
145
+ if (found !== undefined) {
146
+ out.set(e.name, found);
147
+ continue;
148
+ }
149
+ if (e.source === "workspace") {
150
+ throw new ApiError("bootstrap.missing_file", `Bootstrap plugin ${e.name} ${e.version}: no file in ${where} has its pinned sha512 (${e.integrity.slice(0, 19)}…), and a workspace entry cannot be downloaded; put its package tgz (pnpm pack-plugin ${e.path}) in that directory`);
151
+ }
152
+ const registry = registryOrigin(npmRegistry);
153
+ const offlineHint = `to install offline, put the package tgz (npm pack ${e.npm}@${e.version}, any file name) in ${where}`;
154
+ try {
155
+ const r = await fetchPackage({ registry: npmRegistry, ...(npmToken !== undefined && { token: npmToken }), maxBytes }, e.npm, e.version, signal, { expectedIntegrity: e.integrity });
156
+ out.set(e.name, r.bytes);
157
+ }
158
+ catch (err) {
159
+ if (signal.aborted)
160
+ throw err;
161
+ if (err instanceof IntegrityMismatchError) {
162
+ throw new ApiError("bootstrap.integrity_mismatch", `Bootstrap plugin ${e.name} ${e.version}: the package ${e.npm}@${e.version} downloaded from ${registry} does not match its pinned sha512 (expected ${e.integrity.slice(0, 19)}…, got ${err.actual.slice(0, 19)}…); refusing to install anything`);
163
+ }
164
+ const reason = err instanceof NpmFetchError || err instanceof PackageTooLargeError
165
+ ? err.message
166
+ : err instanceof Error
167
+ ? err.message
168
+ : String(err);
169
+ throw new ApiError("bootstrap.download_failed", `Bootstrap plugin ${e.name} ${e.version}: cannot download ${e.npm}@${e.version} from ${registry} (${reason}); ${offlineHint}, or set packages.npmRegistry to a reachable mirror`);
170
+ }
171
+ }
172
+ return out;
173
+ }
174
+ /** The registry's origin, for messages (never its credentials or path). */
175
+ function registryOrigin(registry) {
176
+ try {
177
+ return new URL(registry).origin;
178
+ }
179
+ catch {
180
+ return "the configured npm registry";
181
+ }
182
+ }
183
+ /**
184
+ * The `*.tgz` files directly in `dir` by their sha512 integrity. A missing directory is an empty
185
+ * one; a file larger than `maxBytes` is skipped with a warning.
186
+ */
187
+ async function scanOfflineDir(dir, maxBytes, log) {
188
+ const out = new Map();
189
+ let names;
190
+ try {
191
+ names = await readdir(dir);
192
+ }
193
+ catch (err) {
194
+ const code = err.code;
195
+ if (code === "ENOENT" || code === "ENOTDIR")
196
+ return out;
197
+ throw err;
198
+ }
199
+ for (const name of names.sort()) {
200
+ if (!name.endsWith(".tgz"))
201
+ continue;
202
+ const file = join(dir, name);
203
+ const st = await stat(file).catch(() => undefined);
204
+ if (!st?.isFile())
205
+ continue;
206
+ if (st.size > maxBytes) {
207
+ log?.warn("bootstrap: a file in the bootstrap directory exceeds packages.maxBytes; skipped", {
208
+ file,
209
+ size: st.size,
210
+ maxBytes,
211
+ });
212
+ continue;
213
+ }
214
+ const bytes = new Uint8Array(await readFile(file));
215
+ const integrity = integrityOf(bytes);
216
+ if (!out.has(integrity))
217
+ out.set(integrity, bytes);
218
+ }
219
+ return out;
220
+ }
221
+ /** The lock around a whole run (`lock:bootstrap`). */
222
+ export const BOOTSTRAP_LOCK_KEY = "bootstrap";
223
+ /** Its lifetime without renewal; a run keeps it by renewal, a crashed holder's expires. */
224
+ export const BOOTSTRAP_LOCK_TTL_MS = 120_000;
225
+ /** Optional provider: the lock's lifetime (ms) instead of {@link BOOTSTRAP_LOCK_TTL_MS} (tests shorten it). */
226
+ export const BOOTSTRAP_LOCK_TTL = Symbol("BOOTSTRAP_LOCK_TTL");
227
+ /** The pause between attempts while another holder runs the step. */
228
+ const LOCK_RETRY_MS = 500;
229
+ let BootstrapService = class BootstrapService {
230
+ kdb;
231
+ txHost;
232
+ locks;
233
+ approveLock;
234
+ installs;
235
+ ops;
236
+ registry;
237
+ configService;
238
+ log;
239
+ lockTtlMs;
240
+ constructor(kdb, txHost, locks, approveLock, installs, ops,
241
+ /**
242
+ * Config-declared extension names (an entry of the same name is kept, config wins, and no
243
+ * install record is created): the start sequence records them before the bootstrap step, the
244
+ * CLI from its inspection.
245
+ */
246
+ registry, configService, log,
247
+ /** The lock's lifetime without renewal. */
248
+ lockTtlMs = BOOTSTRAP_LOCK_TTL_MS) {
249
+ this.kdb = kdb;
250
+ this.txHost = txHost;
251
+ this.locks = locks;
252
+ this.approveLock = approveLock;
253
+ this.installs = installs;
254
+ this.ops = ops;
255
+ this.registry = registry;
256
+ this.configService = configService;
257
+ this.log = log;
258
+ this.lockTtlMs = lockTtlMs;
259
+ }
260
+ get db() {
261
+ return this.kdb.db;
262
+ }
263
+ config() {
264
+ return this.configService.get();
104
265
  }
105
266
  /** Whether the bootstrap step completed for the manifest with this sha256. */
106
267
  async isDone(manifestSha256) {
107
- const row = await this.d.db
268
+ const row = await this.db
108
269
  .selectFrom("bootstrap_runs")
109
270
  .select("manifest_sha256")
110
271
  .where("manifest_sha256", "=", manifestSha256)
@@ -120,27 +281,42 @@ export class BootstrapService {
120
281
  */
121
282
  async run(o) {
122
283
  const manifestSha256 = bootstrapManifestSha256(o.manifest);
123
- const files = await this.verifyFiles(o.manifest, o.dir);
124
- return this.locked(o.signal, async () => {
125
- const done = await this.d.db
284
+ const recorded = async () => {
285
+ const done = await this.db
126
286
  .selectFrom("bootstrap_runs")
127
287
  .select("results")
128
288
  .where("manifest_sha256", "=", manifestSha256)
129
289
  .executeTakeFirst();
130
- if (done) {
131
- return { manifestSha256, results: done.results };
132
- }
290
+ return done && { manifestSha256, results: done.results };
291
+ };
292
+ // Done: no lock, no directory, no network
293
+ const before = await recorded();
294
+ if (before)
295
+ return before;
296
+ return this.locked(o.signal, async (signal) => {
297
+ // Another replica may have finished it while this one waited for the lock
298
+ const done = await recorded();
299
+ if (done)
300
+ return done;
301
+ // Every package is obtained and checked before the first write
302
+ const files = await resolveBootstrapPackages(o.manifest, {
303
+ ...(o.dir !== undefined && { dir: o.dir }),
304
+ config: this.config(),
305
+ signal,
306
+ log: this.log,
307
+ });
133
308
  const handled = await this.lastRunNames();
134
309
  const results = [];
135
310
  const failures = [];
136
311
  for (const e of o.manifest.plugins) {
137
- o.signal?.throwIfAborted();
312
+ signal.throwIfAborted();
313
+ await this.warnIfHeld(e);
138
314
  try {
139
- const r = await this.entry(e, files.get(e.name), handled);
315
+ const r = await this.entry(e, files.get(e.name), handled, o.imports);
140
316
  results.push(carried(r, o.carry));
141
317
  }
142
318
  catch (err) {
143
- this.d.log.error("bootstrap: a plugin could not be installed", {
319
+ this.log.error("bootstrap: a plugin could not be installed", {
144
320
  plugin: e.name,
145
321
  version: e.version,
146
322
  required: e.required,
@@ -157,63 +333,70 @@ export class BootstrapService {
157
333
  results.push(...(await this.clearRemoved(o.manifest)));
158
334
  if (failures.length > 0)
159
335
  throw new BootstrapFailedError(failures, results);
160
- await this.d.db.transaction().execute(async (trx) => {
161
- await trx
162
- .insertInto("bootstrap_runs")
163
- .values({
164
- manifest_sha256: manifestSha256,
165
- completed_at: sql `now()`,
166
- results: JSON.stringify(results),
167
- })
168
- .execute();
169
- await audit(trx, {
170
- action: "bootstrap.completed",
171
- target: manifestSha256,
172
- detail: { manifestSha256, results },
173
- });
174
- });
175
- this.d.log.info("bootstrap completed", { manifestSha256, results });
336
+ signal.throwIfAborted();
337
+ await this.recordDone(manifestSha256, results);
338
+ this.log.info("bootstrap completed", { manifestSha256, results });
176
339
  return { manifestSha256, results };
177
340
  });
178
341
  }
179
342
  /**
180
- * Runs `fn` holding the session advisory lock on a connection of its own: `pg_try_advisory_lock`
181
- * retried with a backoff (100 ms doubling to 1 s) that stops when `signal` aborts. The connection
182
- * is closed afterwards in every case, which releases the lock even when the unlock failed.
343
+ * A pin whose plugin name an org holds (a live org-owned catalog item): the bootstrap takes no
344
+ * name over (ruling P3-28), so the entry fails; this warning tells the super admin why and
345
+ * which org holds it (final review M4).
346
+ */
347
+ async warnIfHeld(e) {
348
+ const holder = await otherNameOwner(this.db, e.name, null);
349
+ if (holder?.kind !== "org")
350
+ return;
351
+ this.log.warn("bootstrap: the plugin name is held by an organization; the entry cannot take it over until the organization renames or deletes its plugin", {
352
+ plugin: e.name,
353
+ version: e.version,
354
+ required: e.required,
355
+ ownerOrgId: holder.orgId,
356
+ ownerOrg: holder.name,
357
+ });
358
+ }
359
+ /** The `bootstrap_runs` row and the `bootstrap.completed` audit, in one transaction. */
360
+ async recordDone(manifestSha256, results) {
361
+ await this.db
362
+ .insertInto("bootstrap_runs")
363
+ .values({
364
+ manifest_sha256: manifestSha256,
365
+ completed_at: sql `now()`,
366
+ results: JSON.stringify(results),
367
+ })
368
+ .execute();
369
+ await audit(this.db, {
370
+ action: "bootstrap.completed",
371
+ target: manifestSha256,
372
+ detail: { manifestSha256, results },
373
+ });
374
+ }
375
+ /**
376
+ * Runs `fn` holding `lock:bootstrap`: waits without bound while another replica holds it
377
+ * (until `signal` aborts), renews it while `fn` runs and releases it afterwards. `fn` gets a
378
+ * signal that also aborts when the lock is lost.
183
379
  */
184
380
  async locked(signal, fn) {
185
- const client = new pg.Client({
186
- connectionString: this.d.dbUrl,
187
- ...pgConnectOptions({ connectTimeoutMs: this.d.connectTimeoutMs }),
381
+ const handle = await this.locks.acquire(BOOTSTRAP_LOCK_KEY, {
382
+ ttlMs: this.lockTtlMs,
383
+ waitMs: Number.POSITIVE_INFINITY,
384
+ retryMs: LOCK_RETRY_MS,
385
+ ...(signal !== undefined && { signal }),
188
386
  });
189
- client.on("error", () => { });
387
+ // An unbounded wait returns a handle or throws the abort reason
388
+ if (!handle)
389
+ throw new Error("bootstrap: the lock could not be taken");
190
390
  try {
191
- await client.connect();
192
- for (let wait = 100;; wait = Math.min(wait * 2, 1_000)) {
193
- signal?.throwIfAborted();
194
- const r = await client.query("SELECT pg_try_advisory_lock(hashtext($1)) AS ok", [LOCK_KEY]);
195
- if (r.rows[0]?.ok === true)
196
- break;
197
- await sleep(wait, signal);
198
- }
199
- try {
200
- return await fn();
201
- }
202
- finally {
203
- await client
204
- .query("SELECT pg_advisory_unlock(hashtext($1))", [LOCK_KEY])
205
- .catch((err) => this.d.log.warn("bootstrap: cannot release the advisory lock; closing its connection", {
206
- err,
207
- }));
208
- }
391
+ return await fn(signal ? AbortSignal.any([signal, handle.lost]) : handle.lost);
209
392
  }
210
393
  finally {
211
- await client.end().catch(() => { });
394
+ await handle.release();
212
395
  }
213
396
  }
214
397
  /** The entry names the last completed run handled (undefined before any run completed). */
215
398
  async lastRunNames() {
216
- const row = await this.d.db
399
+ const row = await this.db
217
400
  .selectFrom("bootstrap_runs")
218
401
  .select("results")
219
402
  .orderBy("completed_at", "desc")
@@ -225,31 +408,9 @@ export class BootstrapService {
225
408
  .filter((r) => r.action !== "required_cleared")
226
409
  .map((r) => r.name));
227
410
  }
228
- /** Reads every entry's file and checks its sha512 (before the lock: nothing is written yet). */
229
- async verifyFiles(manifest, dir) {
230
- const out = new Map();
231
- for (const e of manifest.plugins) {
232
- const file = join(dir, bootstrapFileName(e));
233
- let bytes;
234
- try {
235
- bytes = new Uint8Array(await readFile(file));
236
- }
237
- catch (err) {
238
- if (err.code !== "ENOENT")
239
- throw err;
240
- throw new ApiError("bootstrap.missing_file", `Bootstrap plugin ${e.name} ${e.version}: ${file} is missing; the image must carry every package bootstrap.json pins`);
241
- }
242
- const actual = integrityOf(bytes);
243
- if (actual !== e.integrity) {
244
- throw new ApiError("bootstrap.integrity_mismatch", `Bootstrap plugin ${e.name} ${e.version}: ${file} does not match its pinned sha512 (expected ${e.integrity.slice(0, 19)}…, got ${actual.slice(0, 19)}…); refusing to install anything`);
245
- }
246
- out.set(e.name, bytes);
247
- }
248
- return out;
249
- }
250
- async entry(e, bytes, handled) {
411
+ async entry(e, bytes, handled, imports) {
251
412
  const pkg = await readPluginPackage(bytes, {
252
- maxBytes: this.d.config().packages.maxBytes,
413
+ maxBytes: this.config().packages.maxBytes,
253
414
  hostSdkVersion: SDK_VERSION,
254
415
  }).catch((err) => {
255
416
  throw err instanceof PluginPackageError ? catalogPackageError(err) : err;
@@ -261,34 +422,37 @@ export class BootstrapService {
261
422
  // Not new to the manifest: an optional entry left out on purpose stays out (Ruling 5)
262
423
  const isNew = handled === undefined || !handled.has(e.name);
263
424
  if (!pkg.manifest.extension) {
425
+ await this.markBuiltin(e.name, e.required);
264
426
  if (!isNew)
265
427
  return { name: e.name, action: "kept", version: e.version };
266
- const imported = await this.importOnly(e, bytes, ref);
428
+ const imported = await this.importOnly(e, bytes, ref, imports);
429
+ await this.markBuiltin(e.name, e.required);
267
430
  return { name: e.name, action: imported ? "imported" : "kept", version: e.version };
268
431
  }
269
- if (this.d.declared?.().has(e.name)) {
270
- this.d.log.warn("bootstrap: the plugin is declared in the extensions config list; the config plugin is used", { plugin: e.name });
432
+ if (this.registry.declared().has(e.name)) {
433
+ this.log.warn("bootstrap: the plugin is declared in the extensions config list; the config plugin is used", { plugin: e.name });
271
434
  return { name: e.name, action: "kept", version: e.version };
272
435
  }
273
- const row = await this.d.db
436
+ const row = await this.db
274
437
  .selectFrom("extension_installs")
275
438
  .select(["version", "source", "required", "desired_state", "sha256"])
276
439
  .where("name", "=", e.name)
277
440
  .executeTakeFirst();
278
441
  if (!row && !isNew && !e.required) {
279
- this.d.log.info("bootstrap: an optional plugin that is not installed stays uninstalled", {
442
+ this.log.info("bootstrap: an optional plugin that is not installed stays uninstalled", {
280
443
  plugin: e.name,
281
444
  });
282
445
  return { name: e.name, action: "kept", version: e.version };
283
446
  }
284
447
  let result;
448
+ let leftDisabled;
285
449
  if (!row) {
286
- await this.deploy(e, bytes, ref, true);
450
+ leftDisabled = await this.deploy(e, bytes, ref, true, imports);
287
451
  result = { name: e.name, action: "installed", version: e.version };
288
452
  }
289
453
  else if (row.source === "bootstrap" && isLower(row.version, e.version)) {
290
454
  // The desired state the admin chose is kept; a required plugin is enabled below anyway
291
- await this.deploy(e, bytes, ref, row.desired_state === "enabled");
455
+ leftDisabled = await this.deploy(e, bytes, ref, row.desired_state === "enabled", imports);
292
456
  result = { name: e.name, action: "upgraded", version: e.version };
293
457
  }
294
458
  else {
@@ -297,12 +461,12 @@ export class BootstrapService {
297
461
  row.sha256 !== createHash("sha256").update(bytes).digest("hex")) {
298
462
  // The pin changed bytes without a version bump (an image built from main between
299
463
  // releases): the installed package stays, so say so instead of keeping it silently
300
- this.d.log.warn("bootstrap: the image's package differs from the installed one at the same version; the installed package is kept (bump the version to roll it out)", { plugin: e.name, version: e.version });
464
+ this.log.warn("bootstrap: the image's package differs from the installed one at the same version; the installed package is kept (bump the version to roll it out)", { plugin: e.name, version: e.version });
301
465
  }
302
466
  result = { name: e.name, action: "kept", version: row.version };
303
467
  }
304
468
  if (row?.required !== e.required) {
305
- await this.d.db
469
+ await this.db
306
470
  .updateTable("extension_installs")
307
471
  .set({ required: e.required })
308
472
  .where("name", "=", e.name)
@@ -310,22 +474,52 @@ export class BootstrapService {
310
474
  }
311
475
  // A required install must run on the deployment (an org cannot use it otherwise)
312
476
  if (e.required && row?.desired_state === "disabled") {
313
- await this.d.ops.enable(e.name, null);
477
+ leftDisabled = await this.enableOrWarn(e);
314
478
  }
315
- return result;
479
+ await this.markBuiltin(e.name, e.required);
480
+ return leftDisabled === undefined ? result : { ...result, leftDisabled };
481
+ }
482
+ /**
483
+ * The catalog item of a bootstrap entry follows `required`: a required entry is builtin, offered
484
+ * to every org (scope `all`) and not disabled (migration 0075 could leave a required plugin
485
+ * disabled); an entry that stops being required is no longer builtin and keeps scope `all` (the
486
+ * admin may change it from then on).
487
+ */
488
+ async markBuiltin(name, required) {
489
+ const touch = { updated_at: sql `now()` };
490
+ if (required) {
491
+ await this.db
492
+ .updateTable("catalog_items")
493
+ .set({
494
+ builtin: true,
495
+ scope: "all",
496
+ disabled: false,
497
+ scope_version: sql `scope_version + 1`,
498
+ ...touch,
499
+ })
500
+ .where("name", "=", name)
501
+ .where("deleted_at", "is", null)
502
+ .where((eb) => eb.or([eb("builtin", "=", false), eb("scope", "<>", "all"), eb("disabled", "=", true)]))
503
+ .execute();
504
+ return;
505
+ }
506
+ await this.db
507
+ .updateTable("catalog_items")
508
+ .set({ builtin: false, ...touch })
509
+ .where("name", "=", name)
510
+ .where("deleted_at", "is", null)
511
+ .where("builtin", "=", true)
512
+ .execute();
316
513
  }
317
514
  /** A declarative plugin: catalog only. Returns false when that version is already imported. */
318
- async importOnly(e, bytes, ref) {
515
+ async importOnly(e, bytes, ref, imports) {
319
516
  try {
320
- const { stagingId, review } = await this.d.imports.prepare(null, bytes, {
517
+ const { stagingId, review } = await imports.prepare(null, bytes, {
321
518
  kind: "bootstrap",
322
519
  ref,
323
520
  integrity: e.integrity,
324
521
  });
325
- await this.d.imports.confirm(null, stagingId, {
326
- reviewHash: review.reviewHash,
327
- deployExtension: false,
328
- });
522
+ await imports.confirm(null, stagingId, { reviewHash: review.reviewHash });
329
523
  return true;
330
524
  }
331
525
  catch (err) {
@@ -335,14 +529,14 @@ export class BootstrapService {
335
529
  }
336
530
  }
337
531
  /**
338
- * Imports, approves, installs and enables (one review, confirmed with `deployExtension`). When
532
+ * Imports, approves, installs and enables (one review; its confirm deploys the extension). When
339
533
  * the catalog already has this version (an earlier run stopped after importing, or the same
340
534
  * package came from a marketplace), the extension is deployed from the package store instead.
341
535
  */
342
- async deploy(e, bytes, ref, enable) {
536
+ async deploy(e, bytes, ref, enable, imports) {
343
537
  let staged;
344
538
  try {
345
- staged = await this.d.imports.prepare(null, bytes, {
539
+ staged = await imports.prepare(null, bytes, {
346
540
  kind: "bootstrap",
347
541
  ref,
348
542
  integrity: e.integrity,
@@ -350,70 +544,140 @@ export class BootstrapService {
350
544
  }
351
545
  catch (err) {
352
546
  if (err instanceof ApiError && err.code === "catalog.version_exists") {
353
- await this.deployFromStore(e, bytes, ref, enable);
354
- return;
547
+ return this.deployFromStore(e, bytes, ref, enable);
355
548
  }
356
549
  throw err;
357
550
  }
358
- const r = await this.d.imports.confirm(null, staged.stagingId, {
551
+ const r = await imports.confirm(null, staged.stagingId, {
359
552
  reviewHash: staged.review.reviewHash,
360
- deployExtension: true,
361
553
  enable,
362
554
  });
363
555
  if (r.deploy?.result === "failed") {
364
556
  throw new ApiError((r.deploy.code ?? "internal"), r.deploy.message ?? `installing extension ${e.name} failed`);
365
557
  }
558
+ if (r.deploy?.singleProvider !== undefined) {
559
+ return this.leftDisabled(e, {
560
+ code: r.deploy.code,
561
+ message: r.deploy.message,
562
+ singleProvider: r.deploy.singleProvider,
563
+ });
564
+ }
565
+ return undefined;
366
566
  }
367
567
  /** The extension of a catalog version already imported: ingest, approve, install (, enable). */
368
568
  async deployFromStore(e, bytes, ref, enable) {
369
- const review = await this.d.installs.ingest(null, bytes, { source: "bootstrap", ref }, { store: "pg" });
569
+ const review = await this.installs.ingest(null, bytes, { source: "bootstrap", ref }, { store: "pg" });
370
570
  let set;
371
571
  try {
372
572
  set = permissionSetOfPackage(await readExtensionPackage(bytes, {
373
- maxBytes: this.d.config().packages.maxBytes,
573
+ maxBytes: this.config().packages.maxBytes,
374
574
  hostSdkVersion: SDK_VERSION,
375
575
  }));
376
576
  }
377
577
  catch (err) {
378
578
  throw err instanceof ExtensionPackageError ? catalogPackageError(err) : err;
379
579
  }
380
- await this.d.db.transaction().execute(async (trx) => {
381
- await sql `SELECT pg_advisory_xact_lock(hashtext(${`capybara.plugin-approve:${e.name}`}))`.execute(trx);
382
- const snap = await trx
383
- .selectFrom("extension_permission_snapshots")
384
- .select("permissions")
385
- .where("plugin", "=", e.name)
386
- .forUpdate()
387
- .executeTakeFirst();
388
- const { added, removed } = diffPermissions(snap?.permissions, set);
389
- await writeSnapshot(trx, e.name, e.version, set, {
390
- source: "bootstrap",
391
- audit: { added, removed, sha256: review.sha256 },
392
- });
393
- });
394
- const item = await this.d.db
580
+ await this.approveStored(e, set, review.sha256);
581
+ const item = await this.db
395
582
  .selectFrom("catalog_items")
396
583
  .select("id")
397
584
  .where("name", "=", e.name)
398
585
  .where("deleted_at", "is", null)
399
586
  .executeTakeFirst();
400
- await this.d.ops.install(e.name, review.sha256, null, undefined, item ? { catalogItemId: item.id } : {});
401
- if (enable)
402
- await this.d.ops.enable(e.name, null);
587
+ const installed = await this.ops.install(e.name, review.sha256, null, undefined, item ? { catalogItemId: item.id } : {});
588
+ // An upgrade newly providing a held single-provider point is left disabled by the install
589
+ if (installed.leftDisabled !== undefined)
590
+ return this.leftDisabled(e, installed.leftDisabled);
591
+ return enable ? this.enableOrWarn(e) : undefined;
592
+ }
593
+ /**
594
+ * Enables a bootstrap extension unless another enabled extension provides one of its
595
+ * single-provider extension points (see {@link leftDisabled}).
596
+ */
597
+ async enableOrWarn(e) {
598
+ const r = await this.ops.enableUnlessOccupied(e.name, null);
599
+ return r.enabled ? undefined : this.leftDisabled(e, r.note);
600
+ }
601
+ /**
602
+ * A bootstrap extension left disabled because another enabled extension holds a single-provider
603
+ * extension point it provides. An optional preinstall (a sandbox while the super admin runs
604
+ * another one) stays disabled with a warning, and the entry's result says so. A required entry
605
+ * fails (thrown, so the run is not recorded done, `capybara bootstrap` exits 1 and
606
+ * `capybara start` refuses to serve): the deployment cannot run without it, and only the super
607
+ * admin can free the point, by disabling the other provider and running the bootstrap again.
608
+ */
609
+ leftDisabled(e, note) {
610
+ const block = note.singleProvider;
611
+ if (e.required) {
612
+ const other = block.enabled.name;
613
+ throw new ApiError(note.code, `Required plugin ${e.name} provides ${block.extensionPoint}, which ${other} already provides; disable ${other} and run the bootstrap again`, [block]);
614
+ }
615
+ this.log.warn(`bootstrap: the plugin is installed disabled; ${note.message}`, {
616
+ plugin: e.name,
617
+ required: e.required,
618
+ });
619
+ return note;
620
+ }
621
+ /** The permission snapshot of a stored package (source `bootstrap`), under the approve lock. */
622
+ async approveStored(e, set, sha256) {
623
+ await this.approveLock.lock(e.name);
624
+ const snap = await this.db
625
+ .selectFrom("extension_permission_snapshots")
626
+ .select("permissions")
627
+ .where("plugin", "=", e.name)
628
+ .forUpdate()
629
+ .executeTakeFirst();
630
+ const { added, removed } = diffPermissions(snap?.permissions, set);
631
+ await writeSnapshot(this.db, e.name, e.version, set, {
632
+ source: "bootstrap",
633
+ audit: { added, removed, sha256 },
634
+ });
403
635
  }
404
636
  /** Install records still `required` whose entry left the manifest lose `required`. */
405
637
  async clearRemoved(manifest) {
406
638
  const names = manifest.plugins.map((p) => p.name);
407
- let q = this.d.db
639
+ let q = this.db
408
640
  .updateTable("extension_installs")
409
641
  .set({ required: false })
410
642
  .where("required", "=", true);
411
643
  if (names.length > 0)
412
644
  q = q.where("name", "not in", names);
413
645
  const rows = await q.returning(["name", "version"]).execute();
646
+ for (const r of rows)
647
+ await this.markBuiltin(r.name, false);
648
+ // A declarative plugin has no install record: clear builtin by catalog name
649
+ let items = this.db
650
+ .updateTable("catalog_items")
651
+ .set({ builtin: false, updated_at: sql `now()` })
652
+ .where("builtin", "=", true)
653
+ .where("deleted_at", "is", null);
654
+ if (names.length > 0)
655
+ items = items.where("name", "not in", names);
656
+ await items.execute();
414
657
  return rows.map((r) => ({ name: r.name, action: "required_cleared", version: r.version }));
415
658
  }
416
- }
659
+ };
660
+ __decorate([
661
+ Transactional()
662
+ ], BootstrapService.prototype, "recordDone", null);
663
+ __decorate([
664
+ Transactional()
665
+ ], BootstrapService.prototype, "approveStored", null);
666
+ BootstrapService = __decorate([
667
+ Injectable(),
668
+ __param(0, Inject(KernelDb)),
669
+ __param(1, Inject(TransactionHost)),
670
+ __param(2, Inject(LockService)),
671
+ __param(3, Inject(PluginApproveLock)),
672
+ __param(4, Inject(ExtensionInstalls)),
673
+ __param(5, Inject(ExtensionAdminOps)),
674
+ __param(6, Inject(ExtensionRegistry)),
675
+ __param(7, Inject(KernelConfigService)),
676
+ __param(8, Inject(KERNEL_LOGGER)),
677
+ __param(9, Optional()),
678
+ __param(9, Inject(BOOTSTRAP_LOCK_TTL))
679
+ ], BootstrapService);
680
+ export { BootstrapService };
417
681
  /** A `kept` result whose entry an earlier pass of the same start installed / upgraded / imported. */
418
682
  function carried(r, carry) {
419
683
  if (r.action !== "kept")
@@ -423,19 +687,5 @@ function carried(r, carry) {
423
687
  ? before
424
688
  : r;
425
689
  }
426
- /** Resolves after `ms`; rejects with the abort reason when `signal` aborts first. */
427
- function sleep(ms, signal) {
428
- return new Promise((resolve, reject) => {
429
- const onAbort = () => {
430
- clearTimeout(timer);
431
- reject(signal?.reason);
432
- };
433
- const timer = setTimeout(() => {
434
- signal?.removeEventListener("abort", onAbort);
435
- resolve();
436
- }, ms);
437
- signal?.addEventListener("abort", onAbort, { once: true });
438
- });
439
- }
440
690
  /** `installed` is below `pinned` (a version that is not semver is never upgraded). */
441
691
  const isLower = (installed, pinned) => semver.valid(installed) !== null && semver.valid(pinned) !== null && semver.lt(installed, pinned);