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

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 (1170) hide show
  1. package/bootstrap.json +85 -5
  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 +60 -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 +264 -0
  99. package/dist/catalog/catalog-content.js +430 -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 +677 -0
  106. package/dist/catalog/catalog-scope.service.d.ts +286 -0
  107. package/dist/catalog/catalog-scope.service.js +1196 -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 +144 -207
  111. package/dist/catalog/catalog.service.js +258 -528
  112. package/dist/catalog/claude/agents.js +15 -10
  113. package/dist/catalog/claude/translate.js +3 -0
  114. package/dist/catalog/cli.d.ts +14 -3
  115. package/dist/catalog/cli.js +39 -32
  116. package/dist/catalog/component-promotion.d.ts +96 -0
  117. package/dist/catalog/component-promotion.js +395 -0
  118. package/dist/catalog/component-scope.controller.d.ts +90 -0
  119. package/dist/catalog/component-scope.controller.js +234 -0
  120. package/dist/catalog/component-scope.schemas.d.ts +118 -0
  121. package/dist/catalog/component-scope.schemas.js +97 -0
  122. package/dist/catalog/component-scope.service.d.ts +366 -0
  123. package/dist/catalog/component-scope.service.js +1115 -0
  124. package/dist/catalog/component-state.d.ts +197 -0
  125. package/dist/catalog/component-state.js +473 -0
  126. package/dist/catalog/git-source.d.ts +9 -1
  127. package/dist/catalog/git-source.js +29 -2
  128. package/dist/catalog/job-ids.d.ts +45 -0
  129. package/dist/catalog/job-ids.js +40 -0
  130. package/dist/catalog/jobs.d.ts +27 -0
  131. package/dist/catalog/jobs.js +70 -0
  132. package/dist/catalog/locks.d.ts +24 -0
  133. package/dist/catalog/locks.js +63 -0
  134. package/dist/catalog/marketplace-fetch.d.ts +1 -1
  135. package/dist/catalog/marketplace-icons.d.ts +64 -0
  136. package/dist/catalog/marketplace-icons.js +131 -0
  137. package/dist/catalog/marketplaces.controller.d.ts +53 -44
  138. package/dist/catalog/marketplaces.controller.js +146 -51
  139. package/dist/catalog/marketplaces.schemas.d.ts +48 -0
  140. package/dist/catalog/marketplaces.schemas.js +53 -0
  141. package/dist/catalog/marketplaces.service.d.ts +136 -26
  142. package/dist/catalog/marketplaces.service.js +663 -281
  143. package/dist/catalog/org-catalog.controller.d.ts +115 -63
  144. package/dist/catalog/org-catalog.controller.js +207 -100
  145. package/dist/catalog/org-catalog.schemas.d.ts +88 -0
  146. package/dist/catalog/org-catalog.schemas.js +93 -0
  147. package/dist/catalog/org-catalog.service.d.ts +89 -216
  148. package/dist/catalog/org-catalog.service.js +434 -472
  149. package/dist/catalog/org-extension-switch.d.ts +41 -0
  150. package/dist/catalog/org-extension-switch.js +115 -0
  151. package/dist/catalog/org-extension.controller.d.ts +113 -0
  152. package/dist/catalog/org-extension.controller.js +271 -0
  153. package/dist/catalog/org-extension.schemas.d.ts +15 -0
  154. package/dist/catalog/org-extension.schemas.js +22 -0
  155. package/dist/catalog/org-plugin-uploads.controller.d.ts +77 -0
  156. package/dist/catalog/org-plugin-uploads.controller.js +200 -0
  157. package/dist/catalog/org-plugin-uploads.d.ts +71 -0
  158. package/dist/catalog/org-plugin-uploads.js +122 -0
  159. package/dist/catalog/org-plugin-uploads.schemas.d.ts +20 -0
  160. package/dist/catalog/org-plugin-uploads.schemas.js +32 -0
  161. package/dist/catalog/owned-items.d.ts +188 -0
  162. package/dist/catalog/owned-items.js +808 -0
  163. package/dist/catalog/owned-plugin-cleanup.d.ts +56 -0
  164. package/dist/catalog/owned-plugin-cleanup.js +194 -0
  165. package/dist/catalog/ownership.d.ts +172 -0
  166. package/dist/catalog/ownership.js +326 -0
  167. package/dist/catalog/platform-components.d.ts +243 -0
  168. package/dist/catalog/platform-components.js +872 -0
  169. package/dist/catalog/platform-migration.d.ts +115 -0
  170. package/dist/catalog/platform-migration.js +583 -0
  171. package/dist/catalog/plugin-import.d.ts +293 -71
  172. package/dist/catalog/plugin-import.js +1039 -281
  173. package/dist/catalog/plugin-install.d.ts +271 -66
  174. package/dist/catalog/plugin-install.js +1198 -344
  175. package/dist/catalog/plugin-package.d.ts +41 -4
  176. package/dist/catalog/plugin-package.js +140 -7
  177. package/dist/catalog/plugin-upgrade.d.ts +312 -188
  178. package/dist/catalog/plugin-upgrade.js +1371 -1065
  179. package/dist/catalog/request-rules.d.ts +65 -0
  180. package/dist/catalog/request-rules.js +217 -0
  181. package/dist/catalog/requests.service.d.ts +205 -117
  182. package/dist/catalog/requests.service.js +612 -369
  183. package/dist/catalog/reserved-names.d.ts +8 -0
  184. package/dist/catalog/reserved-names.js +42 -0
  185. package/dist/catalog/scope-orgs.d.ts +21 -0
  186. package/dist/catalog/scope-orgs.js +67 -0
  187. package/dist/catalog/scope-state.d.ts +35 -0
  188. package/dist/catalog/scope-state.js +87 -0
  189. package/dist/catalog/scope-sync-workers.d.ts +7 -0
  190. package/dist/catalog/scope-sync-workers.js +29 -0
  191. package/dist/catalog/scope-sync.d.ts +176 -0
  192. package/dist/catalog/scope-sync.js +576 -0
  193. package/dist/catalog/scope.d.ts +42 -0
  194. package/dist/catalog/scope.js +42 -0
  195. package/dist/catalog/unshare.d.ts +22 -0
  196. package/dist/catalog/unshare.js +119 -0
  197. package/dist/channels/actions.d.ts +6 -4
  198. package/dist/channels/actions.js +11 -4
  199. package/dist/channels/cards.d.ts +33 -11
  200. package/dist/channels/cards.js +96 -24
  201. package/dist/channels/channels.module.d.ts +40 -0
  202. package/dist/channels/channels.module.js +130 -0
  203. package/dist/channels/channels.schemas.d.ts +37 -0
  204. package/dist/channels/channels.schemas.js +38 -0
  205. package/dist/channels/connections.controller.d.ts +44 -37
  206. package/dist/channels/connections.controller.js +83 -38
  207. package/dist/channels/connections.service.d.ts +101 -30
  208. package/dist/channels/connections.service.js +380 -147
  209. package/dist/channels/inbound.d.ts +44 -38
  210. package/dist/channels/inbound.js +190 -44
  211. package/dist/channels/job-ids.d.ts +10 -0
  212. package/dist/channels/job-ids.js +10 -0
  213. package/dist/channels/jobs.d.ts +85 -0
  214. package/dist/channels/jobs.js +157 -0
  215. package/dist/channels/outbound.d.ts +71 -80
  216. package/dist/channels/outbound.js +219 -202
  217. package/dist/channels/phrases.d.ts +33 -2
  218. package/dist/channels/phrases.js +29 -1
  219. package/dist/channels/supervisor.d.ts +88 -46
  220. package/dist/channels/supervisor.js +230 -132
  221. package/dist/channels/threads.d.ts +34 -8
  222. package/dist/channels/threads.js +79 -13
  223. package/dist/channels/webhook.d.ts +20 -14
  224. package/dist/channels/webhook.js +51 -20
  225. package/dist/config/docs.js +5 -1
  226. package/dist/config/load.d.ts +3 -2
  227. package/dist/config/load.js +3 -2
  228. package/dist/config/nacos-source.js +11 -2
  229. package/dist/config/schema.d.ts +36 -2
  230. package/dist/config/schema.js +226 -25
  231. package/dist/conversations/access.d.ts +31 -0
  232. package/dist/conversations/access.js +110 -0
  233. package/dist/conversations/agent-tree.d.ts +46 -0
  234. package/dist/conversations/agent-tree.js +92 -0
  235. package/dist/conversations/artifacts.d.ts +11 -11
  236. package/dist/conversations/artifacts.js +36 -10
  237. package/dist/conversations/attachments.controller.d.ts +1 -1
  238. package/dist/conversations/attachments.controller.js +8 -6
  239. package/dist/conversations/attachments.module.d.ts +7 -0
  240. package/dist/conversations/attachments.module.js +25 -0
  241. package/dist/conversations/attachments.service.d.ts +60 -22
  242. package/dist/conversations/attachments.service.js +249 -51
  243. package/dist/conversations/conversations.controller.d.ts +86 -50
  244. package/dist/conversations/conversations.controller.js +184 -103
  245. package/dist/conversations/conversations.module.d.ts +8 -0
  246. package/dist/conversations/conversations.module.js +72 -0
  247. package/dist/conversations/conversations.schemas.d.ts +52 -0
  248. package/dist/conversations/conversations.schemas.js +79 -0
  249. package/dist/conversations/conversations.service.d.ts +166 -49
  250. package/dist/conversations/conversations.service.js +383 -179
  251. package/dist/conversations/environment-status.d.ts +24 -0
  252. package/dist/conversations/environment-status.js +71 -0
  253. package/dist/conversations/event-log.d.ts +64 -27
  254. package/dist/conversations/event-log.js +167 -31
  255. package/dist/conversations/events.d.ts +252 -9
  256. package/dist/conversations/events.js +243 -32
  257. package/dist/conversations/files.d.ts +10 -10
  258. package/dist/conversations/files.js +37 -11
  259. package/dist/conversations/idem-keys.d.ts +5 -0
  260. package/dist/conversations/idem-keys.js +5 -0
  261. package/dist/conversations/job-ids.d.ts +6 -0
  262. package/dist/conversations/job-ids.js +6 -0
  263. package/dist/conversations/message-context.d.ts +79 -0
  264. package/dist/conversations/message-context.js +145 -0
  265. package/dist/conversations/outputs-read.d.ts +11 -11
  266. package/dist/conversations/outputs-read.js +31 -7
  267. package/dist/conversations/queue.d.ts +53 -58
  268. package/dist/conversations/queue.js +37 -293
  269. package/dist/conversations/queue.service.d.ts +60 -0
  270. package/dist/conversations/queue.service.js +350 -0
  271. package/dist/conversations/titles.d.ts +83 -27
  272. package/dist/conversations/titles.js +195 -71
  273. package/dist/conversations/tree.d.ts +17 -0
  274. package/dist/conversations/tree.js +42 -0
  275. package/dist/ctx/bus.js +9 -3
  276. package/dist/ctx/create-ctx.d.ts +26 -1
  277. package/dist/ctx/create-ctx.js +45 -16
  278. package/dist/ctx/lock.d.ts +7 -3
  279. package/dist/ctx/lock.js +9 -20
  280. package/dist/ctx/secrets.d.ts +10 -2
  281. package/dist/ctx/secrets.js +7 -3
  282. package/dist/db/kernel-schema.d.ts +589 -27
  283. package/dist/db/pool.d.ts +10 -0
  284. package/dist/db/pool.js +4 -0
  285. package/dist/devices/device-auth.controller.d.ts +42 -0
  286. package/dist/devices/device-auth.controller.js +116 -0
  287. package/dist/devices/device-auth.d.ts +119 -0
  288. package/dist/devices/device-auth.js +403 -0
  289. package/dist/devices/device-auth.module.d.ts +7 -0
  290. package/dist/devices/device-auth.module.js +25 -0
  291. package/dist/devices/device-gateway.d.ts +128 -0
  292. package/dist/devices/device-gateway.js +530 -0
  293. package/dist/devices/device-provider.d.ts +89 -0
  294. package/dist/devices/device-provider.js +151 -0
  295. package/dist/devices/device-routes.d.ts +36 -0
  296. package/dist/devices/device-routes.js +90 -0
  297. package/dist/devices/devices.module.d.ts +16 -0
  298. package/dist/devices/devices.module.js +44 -0
  299. package/dist/devices/dto.d.ts +66 -0
  300. package/dist/devices/dto.js +44 -0
  301. package/dist/devices/keys.d.ts +25 -0
  302. package/dist/devices/keys.js +25 -0
  303. package/dist/devices/machines.d.ts +118 -0
  304. package/dist/devices/machines.js +366 -0
  305. package/dist/devices/relay.d.ts +100 -0
  306. package/dist/devices/relay.js +373 -0
  307. package/dist/devices/targets.d.ts +28 -0
  308. package/dist/devices/targets.js +73 -0
  309. package/dist/environments/access.d.ts +66 -0
  310. package/dist/environments/access.js +113 -0
  311. package/dist/environments/conversation-environments.d.ts +75 -0
  312. package/dist/environments/conversation-environments.js +231 -0
  313. package/dist/environments/dto.d.ts +25 -0
  314. package/dist/environments/dto.js +12 -0
  315. package/dist/environments/environments.controller.d.ts +36 -0
  316. package/dist/environments/environments.controller.js +124 -0
  317. package/dist/environments/environments.module.d.ts +8 -0
  318. package/dist/environments/environments.module.js +31 -0
  319. package/dist/environments/environments.schemas.d.ts +3 -0
  320. package/dist/environments/environments.schemas.js +14 -0
  321. package/dist/environments/environments.service.d.ts +251 -0
  322. package/dist/environments/environments.service.js +791 -0
  323. package/dist/environments/label.d.ts +11 -0
  324. package/dist/environments/label.js +25 -0
  325. package/dist/environments/legacy-cleanup.job.d.ts +34 -0
  326. package/dist/environments/legacy-cleanup.job.js +141 -0
  327. package/dist/errors.d.ts +160 -2
  328. package/dist/errors.js +160 -2
  329. package/dist/evals/budget.d.ts +42 -21
  330. package/dist/evals/budget.js +114 -62
  331. package/dist/evals/evals.module.d.ts +31 -0
  332. package/dist/evals/evals.module.js +114 -0
  333. package/dist/evals/evals.schemas.d.ts +110 -0
  334. package/dist/evals/evals.schemas.js +107 -0
  335. package/dist/evals/jobs.d.ts +20 -0
  336. package/dist/evals/jobs.js +45 -0
  337. package/dist/evals/reconstruct.d.ts +18 -9
  338. package/dist/evals/reconstruct.js +36 -10
  339. package/dist/evals/recorded-tools.d.ts +37 -1
  340. package/dist/evals/recorded-tools.js +120 -10
  341. package/dist/evals/run-replay.d.ts +75 -10
  342. package/dist/evals/run-replay.js +218 -94
  343. package/dist/evals/runs.controller.d.ts +3 -58
  344. package/dist/evals/runs.controller.js +18 -50
  345. package/dist/evals/runs.service.d.ts +31 -52
  346. package/dist/evals/runs.service.js +281 -255
  347. package/dist/evals/sets.controller.d.ts +3 -29
  348. package/dist/evals/sets.controller.js +18 -39
  349. package/dist/evals/sets.service.d.ts +29 -13
  350. package/dist/evals/sets.service.js +262 -202
  351. package/dist/evals/snapshot.d.ts +5 -4
  352. package/dist/evals/snapshot.js +17 -4
  353. package/dist/evals/step-replay.d.ts +6 -8
  354. package/dist/evals/step-replay.js +17 -10
  355. package/dist/evals/trajectory.controller.d.ts +1 -1
  356. package/dist/evals/trajectory.controller.js +11 -7
  357. package/dist/evals/trajectory.d.ts +2 -2
  358. package/dist/evals/trajectory.js +1 -1
  359. package/dist/evals/trajectory.service.d.ts +13 -7
  360. package/dist/evals/trajectory.service.js +56 -21
  361. package/dist/evals/worker.d.ts +48 -31
  362. package/dist/evals/worker.js +229 -124
  363. package/dist/extensions/admin-ops.d.ts +133 -41
  364. package/dist/extensions/admin-ops.js +378 -172
  365. package/dist/extensions/admin-view.d.ts +82 -32
  366. package/dist/extensions/admin-view.js +284 -71
  367. package/dist/extensions/approvals.d.ts +24 -10
  368. package/dist/extensions/approvals.js +73 -46
  369. package/dist/extensions/blobs.d.ts +27 -10
  370. package/dist/extensions/blobs.js +112 -45
  371. package/dist/extensions/bootstrap.d.ts +99 -36
  372. package/dist/extensions/bootstrap.js +290 -134
  373. package/dist/extensions/cli.d.ts +32 -10
  374. package/dist/extensions/cli.js +52 -98
  375. package/dist/extensions/config-hash.d.ts +10 -0
  376. package/dist/extensions/config-hash.js +38 -0
  377. package/dist/extensions/config-issues.d.ts +19 -0
  378. package/dist/extensions/config-issues.js +48 -0
  379. package/dist/extensions/config-json-schema.d.ts +43 -7
  380. package/dist/extensions/config-json-schema.js +124 -58
  381. package/dist/extensions/deployment-config-store.d.ts +55 -0
  382. package/dist/extensions/deployment-config-store.js +133 -0
  383. package/dist/extensions/deployment-config.d.ts +146 -70
  384. package/dist/extensions/deployment-config.js +439 -246
  385. package/dist/extensions/display-name.d.ts +22 -0
  386. package/dist/extensions/display-name.js +77 -0
  387. package/dist/extensions/effective-config.d.ts +127 -0
  388. package/dist/extensions/effective-config.js +368 -0
  389. package/dist/extensions/enabled.d.ts +5 -5
  390. package/dist/extensions/extensions.module.d.ts +8 -0
  391. package/dist/extensions/extensions.module.js +96 -0
  392. package/dist/extensions/hooks.d.ts +40 -6
  393. package/dist/extensions/hooks.js +83 -17
  394. package/dist/extensions/host.d.ts +161 -80
  395. package/dist/extensions/host.js +505 -213
  396. package/dist/extensions/installs.d.ts +73 -19
  397. package/dist/extensions/installs.js +174 -37
  398. package/dist/extensions/job-ids.d.ts +6 -0
  399. package/dist/extensions/job-ids.js +6 -0
  400. package/dist/extensions/lifecycle-topics.d.ts +18 -0
  401. package/dist/extensions/lifecycle-topics.js +18 -0
  402. package/dist/extensions/lifecycle.d.ts +35 -47
  403. package/dist/extensions/lifecycle.js +103 -39
  404. package/dist/extensions/locks.d.ts +45 -0
  405. package/dist/extensions/locks.js +112 -0
  406. package/dist/extensions/migrate-lock.d.ts +3 -4
  407. package/dist/extensions/org-config.d.ts +141 -49
  408. package/dist/extensions/org-config.js +471 -243
  409. package/dist/extensions/org-levels.d.ts +37 -0
  410. package/dist/extensions/org-levels.js +71 -0
  411. package/dist/extensions/org-overrides.d.ts +151 -0
  412. package/dist/extensions/org-overrides.js +524 -0
  413. package/dist/extensions/package.d.ts +14 -1
  414. package/dist/extensions/package.js +51 -2
  415. package/dist/extensions/permission-view.d.ts +59 -6
  416. package/dist/extensions/permission-view.js +7 -5
  417. package/dist/extensions/plugin-guides.d.ts +129 -0
  418. package/dist/extensions/plugin-guides.js +283 -0
  419. package/dist/extensions/plugin-icons.d.ts +54 -0
  420. package/dist/extensions/plugin-icons.js +125 -0
  421. package/dist/extensions/plugin-items.d.ts +21 -0
  422. package/dist/extensions/plugin-items.js +42 -0
  423. package/dist/extensions/point-defaults.controller.d.ts +28 -0
  424. package/dist/extensions/point-defaults.controller.js +69 -0
  425. package/dist/extensions/point-defaults.d.ts +73 -0
  426. package/dist/extensions/point-defaults.js +236 -0
  427. package/dist/extensions/point-defaults.schemas.d.ts +9 -0
  428. package/dist/extensions/point-defaults.schemas.js +14 -0
  429. package/dist/extensions/registry.d.ts +50 -2
  430. package/dist/extensions/registry.js +91 -4
  431. package/dist/extensions/resolve.d.ts +51 -1
  432. package/dist/extensions/resolve.js +85 -3
  433. package/dist/extensions/single-provider.d.ts +92 -0
  434. package/dist/extensions/single-provider.js +180 -0
  435. package/dist/extensions/sources.d.ts +19 -10
  436. package/dist/extensions/sources.js +34 -13
  437. package/dist/extensions/state.module.d.ts +9 -0
  438. package/dist/extensions/state.module.js +38 -0
  439. package/dist/extensions/unavailable.d.ts +50 -0
  440. package/dist/extensions/unavailable.js +115 -0
  441. package/dist/files/files.module.d.ts +3 -0
  442. package/dist/files/files.module.js +22 -0
  443. package/dist/files/previewers.controller.d.ts +7 -2
  444. package/dist/files/previewers.controller.js +19 -12
  445. package/dist/files/previewers.d.ts +21 -19
  446. package/dist/files/previewers.js +114 -38
  447. package/dist/files/previewers.schemas.d.ts +10 -0
  448. package/dist/files/previewers.schemas.js +9 -0
  449. package/dist/http/adapter.d.ts +3 -0
  450. package/dist/http/adapter.js +25 -0
  451. package/dist/http/api.module.d.ts +3 -110
  452. package/dist/http/api.module.js +93 -358
  453. package/dist/http/app.d.ts +22 -17
  454. package/dist/http/app.js +46 -65
  455. package/dist/http/error-filter.module.d.ts +5 -0
  456. package/dist/http/error-filter.module.js +18 -0
  457. package/dist/http/error.filter.js +2 -2
  458. package/dist/http/{gateway.module.d.ts → gateway-routes.d.ts} +7 -3
  459. package/dist/http/gateway-routes.js +16 -0
  460. package/dist/http/nest-logger.d.ts +6 -5
  461. package/dist/http/nest-logger.js +24 -10
  462. package/dist/http/plugin-dispatch.d.ts +4 -1
  463. package/dist/http/plugin-dispatch.js +14 -2
  464. package/dist/identity/accounts.d.ts +137 -38
  465. package/dist/identity/accounts.js +386 -186
  466. package/dist/identity/api-tokens.d.ts +11 -7
  467. package/dist/identity/api-tokens.js +71 -44
  468. package/dist/identity/audit.d.ts +9 -5
  469. package/dist/identity/audit.js +5 -1
  470. package/dist/identity/auth.controller.d.ts +11 -10
  471. package/dist/identity/auth.controller.js +40 -30
  472. package/dist/identity/auth.guard.d.ts +16 -8
  473. package/dist/identity/auth.guard.js +41 -13
  474. package/dist/identity/binding.d.ts +9 -11
  475. package/dist/identity/binding.js +41 -13
  476. package/dist/identity/cookies.d.ts +26 -5
  477. package/dist/identity/cookies.js +58 -6
  478. package/dist/identity/external-identity-lock.d.ts +17 -0
  479. package/dist/identity/external-identity-lock.js +39 -0
  480. package/dist/identity/external.d.ts +19 -15
  481. package/dist/identity/external.js +163 -125
  482. package/dist/identity/identity.module.d.ts +6 -0
  483. package/dist/identity/identity.module.js +59 -0
  484. package/dist/identity/initial-passwords.controller.d.ts +22 -0
  485. package/dist/identity/initial-passwords.controller.js +49 -0
  486. package/dist/identity/initial-passwords.d.ts +61 -0
  487. package/dist/identity/initial-passwords.job.d.ts +16 -0
  488. package/dist/identity/initial-passwords.job.js +46 -0
  489. package/dist/identity/initial-passwords.js +159 -0
  490. package/dist/identity/me.controller.d.ts +32 -15
  491. package/dist/identity/me.controller.js +80 -33
  492. package/dist/identity/me.schemas.d.ts +24 -0
  493. package/dist/identity/me.schemas.js +25 -0
  494. package/dist/identity/principal.d.ts +11 -3
  495. package/dist/identity/principal.js +11 -3
  496. package/dist/identity/sessions.d.ts +24 -10
  497. package/dist/identity/sessions.js +119 -42
  498. package/dist/identity/settings.d.ts +69 -23
  499. package/dist/identity/settings.js +201 -72
  500. package/dist/identity/sso.controller.d.ts +7 -7
  501. package/dist/identity/sso.controller.js +13 -9
  502. package/dist/identity/sso.d.ts +9 -12
  503. package/dist/identity/sso.js +54 -24
  504. package/dist/identity/super-admin.d.ts +20 -0
  505. package/dist/identity/super-admin.js +81 -0
  506. package/dist/inbox/inbox.module.d.ts +6 -0
  507. package/dist/inbox/inbox.module.js +26 -0
  508. package/dist/inbox/inbox.schemas.d.ts +8 -0
  509. package/dist/inbox/inbox.schemas.js +11 -0
  510. package/dist/inbox/inbox.service.d.ts +68 -11
  511. package/dist/inbox/inbox.service.js +104 -13
  512. package/dist/inbox/org-notices.d.ts +63 -0
  513. package/dist/inbox/org-notices.js +91 -0
  514. package/dist/inbox/platform-inbox.controller.d.ts +23 -0
  515. package/dist/inbox/platform-inbox.controller.js +58 -0
  516. package/dist/inbox/platform-inbox.service.d.ts +151 -0
  517. package/dist/inbox/platform-inbox.service.js +263 -0
  518. package/dist/inbox/platform-notices.d.ts +19 -0
  519. package/dist/inbox/platform-notices.js +9 -0
  520. package/dist/index.d.ts +22 -13
  521. package/dist/index.js +16 -7
  522. package/dist/infra/cache/cache.module.d.ts +3 -0
  523. package/dist/infra/cache/cache.module.js +16 -0
  524. package/dist/infra/cache/cache.service.d.ts +21 -0
  525. package/dist/infra/cache/cache.service.js +80 -0
  526. package/dist/infra/cache/cacheable.decorator.d.ts +32 -0
  527. package/dist/infra/cache/cacheable.decorator.js +83 -0
  528. package/dist/infra/cli/kernel-cli.module.d.ts +66 -0
  529. package/dist/infra/cli/kernel-cli.module.js +173 -0
  530. package/dist/infra/close-within.d.ts +15 -0
  531. package/dist/infra/close-within.js +36 -0
  532. package/dist/infra/config/config.module.d.ts +13 -0
  533. package/dist/infra/config/config.module.js +39 -0
  534. package/dist/infra/config/kernel-config.service.d.ts +25 -0
  535. package/dist/infra/config/kernel-config.service.js +157 -0
  536. package/dist/infra/database/after-commit.d.ts +6 -0
  537. package/dist/infra/database/after-commit.js +9 -0
  538. package/dist/infra/database/database.module.d.ts +25 -0
  539. package/dist/infra/database/database.module.js +91 -0
  540. package/dist/infra/database/kernel-db.d.ts +22 -0
  541. package/dist/infra/database/kernel-db.js +65 -0
  542. package/dist/infra/database/transaction-host.d.ts +50 -0
  543. package/dist/infra/database/transaction-host.js +125 -0
  544. package/dist/infra/database/transactional.decorator.d.ts +15 -0
  545. package/dist/infra/database/transactional.decorator.js +27 -0
  546. package/dist/infra/database/xact-lock.d.ts +17 -0
  547. package/dist/infra/database/xact-lock.js +43 -0
  548. package/dist/infra/events/kernel-events.d.ts +121 -0
  549. package/dist/infra/events/kernel-events.js +65 -0
  550. package/dist/infra/health/health.controller.d.ts +26 -0
  551. package/dist/infra/health/health.controller.js +104 -0
  552. package/dist/infra/health/health.module.d.ts +9 -0
  553. package/dist/infra/health/health.module.js +24 -0
  554. package/dist/infra/health/health.options.d.ts +10 -0
  555. package/dist/infra/health/health.options.js +15 -0
  556. package/dist/infra/health/shutdown-state.d.ts +6 -0
  557. package/dist/infra/health/shutdown-state.js +2 -0
  558. package/dist/infra/lifecycle/graceful-shutdown.module.d.ts +6 -0
  559. package/dist/infra/lifecycle/graceful-shutdown.module.js +23 -0
  560. package/dist/infra/lifecycle/graceful-shutdown.service.d.ts +70 -0
  561. package/dist/infra/lifecycle/graceful-shutdown.service.js +135 -0
  562. package/dist/infra/lifecycle/process-guards.d.ts +52 -0
  563. package/dist/infra/lifecycle/process-guards.js +90 -0
  564. package/dist/infra/lifecycle/shutdown-signals.d.ts +30 -0
  565. package/dist/infra/lifecycle/shutdown-signals.js +48 -0
  566. package/dist/infra/lock/key-template.d.ts +13 -0
  567. package/dist/infra/lock/key-template.js +46 -0
  568. package/dist/infra/lock/lock.module.d.ts +3 -0
  569. package/dist/infra/lock/lock.module.js +16 -0
  570. package/dist/infra/lock/lock.service.d.ts +120 -0
  571. package/dist/infra/lock/lock.service.js +343 -0
  572. package/dist/infra/lock/shared-lease.d.ts +44 -0
  573. package/dist/infra/lock/shared-lease.js +121 -0
  574. package/dist/infra/lock/with-lock.decorator.d.ts +28 -0
  575. package/dist/infra/lock/with-lock.decorator.js +49 -0
  576. package/dist/infra/logging/logging.module.d.ts +18 -0
  577. package/dist/infra/logging/logging.module.js +52 -0
  578. package/dist/infra/queue/add-job-once.d.ts +14 -0
  579. package/dist/infra/queue/add-job-once.js +16 -0
  580. package/dist/infra/queue/configured-processor.d.ts +18 -0
  581. package/dist/infra/queue/configured-processor.js +23 -0
  582. package/dist/infra/queue/job-failure.d.ts +18 -0
  583. package/dist/infra/queue/job-failure.js +26 -0
  584. package/dist/infra/queue/queue-shutdown.d.ts +27 -0
  585. package/dist/infra/queue/queue-shutdown.js +81 -0
  586. package/dist/infra/queue/queue.module.d.ts +16 -0
  587. package/dist/infra/queue/queue.module.js +61 -0
  588. package/dist/infra/queue/redis-connection.d.ts +13 -0
  589. package/dist/infra/queue/redis-connection.js +25 -0
  590. package/dist/infra/queue/retired-schedulers.d.ts +7 -0
  591. package/dist/infra/queue/retired-schedulers.js +9 -0
  592. package/dist/infra/queue/run-job.d.ts +16 -0
  593. package/dist/infra/queue/run-job.js +19 -0
  594. package/dist/infra/redis/redis.module.d.ts +24 -0
  595. package/dist/infra/redis/redis.module.js +91 -0
  596. package/dist/infra/schedule/cron-tick.d.ts +12 -0
  597. package/dist/infra/schedule/cron-tick.js +25 -0
  598. package/dist/infra/schedule/locked-cron.decorator.d.ts +27 -0
  599. package/dist/infra/schedule/locked-cron.decorator.js +53 -0
  600. package/dist/infra/schedule/locked-interval.d.ts +69 -0
  601. package/dist/infra/schedule/locked-interval.js +190 -0
  602. package/dist/infra/schedule/locked-tick.d.ts +90 -0
  603. package/dist/infra/schedule/locked-tick.js +137 -0
  604. package/dist/infra/schedule/schedule.module.d.ts +8 -0
  605. package/dist/infra/schedule/schedule.module.js +27 -0
  606. package/dist/infra/schedule/scheduled-runs.d.ts +69 -0
  607. package/dist/infra/schedule/scheduled-runs.js +163 -0
  608. package/dist/infra/swagger/swagger.d.ts +16 -0
  609. package/dist/infra/swagger/swagger.js +31 -0
  610. package/dist/infra/throttler/credential-throttler.d.ts +35 -0
  611. package/dist/infra/throttler/credential-throttler.js +77 -0
  612. package/dist/infra/throttler/named-throttlers.d.ts +36 -0
  613. package/dist/infra/throttler/named-throttlers.js +157 -0
  614. package/dist/infra/throttler/redis-throttler-storage.d.ts +38 -0
  615. package/dist/infra/throttler/redis-throttler-storage.js +130 -0
  616. package/dist/infra/throttler/throttler.guard.d.ts +23 -0
  617. package/dist/infra/throttler/throttler.guard.js +68 -0
  618. package/dist/infra/throttler/throttler.module.d.ts +15 -0
  619. package/dist/infra/throttler/throttler.module.js +53 -0
  620. package/dist/infra/tokens.d.ts +20 -0
  621. package/dist/infra/tokens.js +20 -0
  622. package/dist/infra/validation/create-zod-dto.d.ts +23 -0
  623. package/dist/infra/validation/create-zod-dto.js +35 -0
  624. package/dist/infra/validation/parse-with-zod.d.ts +7 -0
  625. package/dist/infra/validation/parse-with-zod.js +12 -0
  626. package/dist/infra/validation/validation.module.d.ts +3 -0
  627. package/dist/infra/validation/validation.module.js +16 -0
  628. package/dist/infra/validation/zod-params.d.ts +7 -0
  629. package/dist/infra/validation/zod-params.js +42 -0
  630. package/dist/infra/validation/zod-validation.pipe.d.ts +11 -0
  631. package/dist/infra/validation/zod-validation.pipe.js +31 -0
  632. package/dist/kernel.d.ts +9 -244
  633. package/dist/kernel.js +8 -1305
  634. package/dist/kernel.module.d.ts +17 -0
  635. package/dist/kernel.module.js +145 -0
  636. package/dist/lifecycle/kernel-lifecycle.d.ts +140 -0
  637. package/dist/lifecycle/kernel-lifecycle.js +465 -0
  638. package/dist/lifecycle/tokens.d.ts +3 -0
  639. package/dist/lifecycle/tokens.js +3 -0
  640. package/dist/log-context.d.ts +2 -0
  641. package/dist/log-context.js +4 -0
  642. package/dist/log.d.ts +13 -1
  643. package/dist/log.js +93 -17
  644. package/dist/models/embeddings.d.ts +82 -0
  645. package/dist/models/embeddings.js +326 -0
  646. package/dist/models/enablement.controller.d.ts +40 -0
  647. package/dist/models/enablement.controller.js +74 -0
  648. package/dist/models/enablement.d.ts +101 -0
  649. package/dist/models/enablement.js +264 -0
  650. package/dist/models/models.module.d.ts +7 -0
  651. package/dist/models/models.module.js +36 -0
  652. package/dist/models/org-models.schemas.d.ts +8 -0
  653. package/dist/models/org-models.schemas.js +22 -0
  654. package/dist/models/prices.d.ts +13 -5
  655. package/dist/models/prices.js +69 -39
  656. package/dist/models/purposes.controller.d.ts +6 -4
  657. package/dist/models/purposes.controller.js +16 -11
  658. package/dist/models/purposes.d.ts +103 -23
  659. package/dist/models/purposes.js +208 -77
  660. package/dist/orgs/directory-sync.controller.d.ts +1 -1
  661. package/dist/orgs/directory-sync.controller.js +2 -2
  662. package/dist/orgs/directory-sync.d.ts +74 -35
  663. package/dist/orgs/directory-sync.js +243 -132
  664. package/dist/orgs/invitations.controller.d.ts +8 -8
  665. package/dist/orgs/invitations.controller.js +27 -26
  666. package/dist/orgs/invitations.service.d.ts +12 -9
  667. package/dist/orgs/invitations.service.js +130 -92
  668. package/dist/orgs/job-ids.d.ts +8 -0
  669. package/dist/orgs/job-ids.js +8 -0
  670. package/dist/orgs/members.service.d.ts +19 -12
  671. package/dist/orgs/members.service.js +161 -117
  672. package/dist/orgs/offboarding.d.ts +61 -60
  673. package/dist/orgs/offboarding.js +206 -95
  674. package/dist/orgs/org-lock.d.ts +33 -19
  675. package/dist/orgs/org-lock.js +94 -35
  676. package/dist/orgs/org.guard.d.ts +11 -1
  677. package/dist/orgs/org.guard.js +45 -34
  678. package/dist/orgs/orgs.controller.d.ts +13 -16
  679. package/dist/orgs/orgs.controller.js +29 -20
  680. package/dist/orgs/orgs.module.d.ts +6 -0
  681. package/dist/orgs/orgs.module.js +71 -0
  682. package/dist/orgs/orgs.schemas.d.ts +8 -0
  683. package/dist/orgs/orgs.schemas.js +16 -0
  684. package/dist/orgs/orgs.service.d.ts +47 -21
  685. package/dist/orgs/orgs.service.js +166 -91
  686. package/dist/orgs/roles.d.ts +1 -1
  687. package/dist/orgs/roles.js +5 -1
  688. package/dist/orgs/settings.controller.d.ts +2 -2
  689. package/dist/orgs/settings.controller.js +8 -6
  690. package/dist/orgs/settings.service.d.ts +76 -14
  691. package/dist/orgs/settings.service.js +140 -51
  692. package/dist/overrides.d.ts +63 -0
  693. package/dist/overrides.js +34 -0
  694. package/dist/platform/actor.d.ts +48 -0
  695. package/dist/platform/actor.js +100 -0
  696. package/dist/platform/agent-docs.d.ts +18 -0
  697. package/dist/platform/agent-docs.js +59 -0
  698. package/dist/platform/availability.d.ts +14 -0
  699. package/dist/platform/availability.js +43 -0
  700. package/dist/platform/errors.d.ts +28 -0
  701. package/dist/platform/errors.js +65 -0
  702. package/dist/platform/exclusions.d.ts +11 -0
  703. package/dist/platform/exclusions.js +683 -0
  704. package/dist/platform/method.d.ts +6 -0
  705. package/dist/platform/method.js +15 -0
  706. package/dist/platform/operation.d.ts +169 -0
  707. package/dist/platform/operation.js +94 -0
  708. package/dist/platform/ops/accounts.ops.d.ts +32 -0
  709. package/dist/platform/ops/accounts.ops.js +291 -0
  710. package/dist/platform/ops/admin.ops.d.ts +38 -0
  711. package/dist/platform/ops/admin.ops.js +407 -0
  712. package/dist/platform/ops/agent-skills.ops.d.ts +24 -0
  713. package/dist/platform/ops/agent-skills.ops.js +226 -0
  714. package/dist/platform/ops/agent-templates.ops.d.ts +17 -0
  715. package/dist/platform/ops/agent-templates.ops.js +272 -0
  716. package/dist/platform/ops/agents.ops.d.ts +37 -0
  717. package/dist/platform/ops/agents.ops.js +717 -0
  718. package/dist/platform/ops/approvals.ops.d.ts +30 -0
  719. package/dist/platform/ops/approvals.ops.js +116 -0
  720. package/dist/platform/ops/background.ops.d.ts +14 -0
  721. package/dist/platform/ops/background.ops.js +134 -0
  722. package/dist/platform/ops/catalog-admin.ops.d.ts +74 -0
  723. package/dist/platform/ops/catalog-admin.ops.js +599 -0
  724. package/dist/platform/ops/channels.ops.d.ts +16 -0
  725. package/dist/platform/ops/channels.ops.js +195 -0
  726. package/dist/platform/ops/components.ops.d.ts +46 -0
  727. package/dist/platform/ops/components.ops.js +854 -0
  728. package/dist/platform/ops/connectors.ops.d.ts +17 -0
  729. package/dist/platform/ops/connectors.ops.js +188 -0
  730. package/dist/platform/ops/conversations.ops.d.ts +30 -0
  731. package/dist/platform/ops/conversations.ops.js +470 -0
  732. package/dist/platform/ops/environments.ops.d.ts +26 -0
  733. package/dist/platform/ops/environments.ops.js +311 -0
  734. package/dist/platform/ops/errors.d.ts +16 -0
  735. package/dist/platform/ops/errors.js +30 -0
  736. package/dist/platform/ops/evals.ops.d.ts +28 -0
  737. package/dist/platform/ops/evals.ops.js +783 -0
  738. package/dist/platform/ops/extensions-admin.ops.d.ts +25 -0
  739. package/dist/platform/ops/extensions-admin.ops.js +372 -0
  740. package/dist/platform/ops/extensions.ops.d.ts +25 -0
  741. package/dist/platform/ops/extensions.ops.js +347 -0
  742. package/dist/platform/ops/inbox.ops.d.ts +25 -0
  743. package/dist/platform/ops/inbox.ops.js +378 -0
  744. package/dist/platform/ops/marketplaces.ops.d.ts +22 -0
  745. package/dist/platform/ops/marketplaces.ops.js +466 -0
  746. package/dist/platform/ops/models.ops.d.ts +25 -0
  747. package/dist/platform/ops/models.ops.js +232 -0
  748. package/dist/platform/ops/org-plugins.ops.d.ts +29 -0
  749. package/dist/platform/ops/org-plugins.ops.js +329 -0
  750. package/dist/platform/ops/org-settings.ops.d.ts +18 -0
  751. package/dist/platform/ops/org-settings.ops.js +127 -0
  752. package/dist/platform/ops/orgs.ops.d.ts +28 -0
  753. package/dist/platform/ops/orgs.ops.js +296 -0
  754. package/dist/platform/ops/other-orgs.d.ts +20 -0
  755. package/dist/platform/ops/other-orgs.js +72 -0
  756. package/dist/platform/ops/paging.d.ts +14 -0
  757. package/dist/platform/ops/paging.js +20 -0
  758. package/dist/platform/ops/platform.ops.d.ts +30 -0
  759. package/dist/platform/ops/platform.ops.js +231 -0
  760. package/dist/platform/ops/plugins.ops.d.ts +35 -0
  761. package/dist/platform/ops/plugins.ops.js +476 -0
  762. package/dist/platform/ops/previewers.ops.d.ts +14 -0
  763. package/dist/platform/ops/previewers.ops.js +109 -0
  764. package/dist/platform/ops/requests.ops.d.ts +14 -0
  765. package/dist/platform/ops/requests.ops.js +191 -0
  766. package/dist/platform/ops/role.d.ts +4 -0
  767. package/dist/platform/ops/role.js +10 -0
  768. package/dist/platform/ops/skills.ops.d.ts +17 -0
  769. package/dist/platform/ops/skills.ops.js +216 -0
  770. package/dist/platform/ops/summary.d.ts +10 -0
  771. package/dist/platform/ops/summary.js +18 -0
  772. package/dist/platform/ops/themes.ops.d.ts +14 -0
  773. package/dist/platform/ops/themes.ops.js +47 -0
  774. package/dist/platform/ops/unavailable.d.ts +23 -0
  775. package/dist/platform/ops/unavailable.js +118 -0
  776. package/dist/platform/parity.d.ts +33 -0
  777. package/dist/platform/parity.js +272 -0
  778. package/dist/platform/platform-ops.module.d.ts +40 -0
  779. package/dist/platform/platform-ops.module.js +127 -0
  780. package/dist/platform/platform.module.d.ts +8 -0
  781. package/dist/platform/platform.module.js +25 -0
  782. package/dist/platform/registry.d.ts +30 -0
  783. package/dist/platform/registry.js +111 -0
  784. package/dist/platform/route-schemas.d.ts +18 -0
  785. package/dist/platform/route-schemas.js +66 -0
  786. package/dist/roles/gateway-role.d.ts +54 -0
  787. package/dist/roles/gateway-role.js +118 -0
  788. package/dist/roles/gateway.module.d.ts +9 -0
  789. package/dist/roles/gateway.module.js +31 -0
  790. package/dist/roles/worker-role.d.ts +65 -0
  791. package/dist/roles/worker-role.js +151 -0
  792. package/dist/roles/worker.module.d.ts +14 -0
  793. package/dist/roles/worker.module.js +106 -0
  794. package/dist/runtime/abort.js +19 -2
  795. package/dist/runtime/checkpointer.d.ts +8 -3
  796. package/dist/runtime/checkpointer.js +87 -55
  797. package/dist/runtime/context/build.d.ts +21 -13
  798. package/dist/runtime/context/build.js +106 -29
  799. package/dist/runtime/context/claude-tools.d.ts +4 -1
  800. package/dist/runtime/context/claude-tools.js +13 -12
  801. package/dist/runtime/context/compaction.js +24 -1
  802. package/dist/runtime/context/environment-paths.d.ts +40 -0
  803. package/dist/runtime/context/environment-paths.js +48 -0
  804. package/dist/runtime/context/legacy-text.d.ts +22 -0
  805. package/dist/runtime/context/legacy-text.js +37 -0
  806. package/dist/runtime/context/reminders.d.ts +2 -0
  807. package/dist/runtime/context/reminders.js +2 -0
  808. package/dist/runtime/context/run-context.d.ts +65 -0
  809. package/dist/runtime/context/run-context.js +215 -0
  810. package/dist/runtime/context/skills.d.ts +29 -11
  811. package/dist/runtime/context/skills.js +46 -32
  812. package/dist/runtime/context/tool-changes.d.ts +27 -0
  813. package/dist/runtime/context/tool-changes.js +60 -0
  814. package/dist/runtime/conversation-lock.d.ts +20 -11
  815. package/dist/runtime/conversation-lock.js +62 -72
  816. package/dist/runtime/hook-calls.d.ts +11 -4
  817. package/dist/runtime/hook-calls.js +41 -13
  818. package/dist/runtime/job-ids.d.ts +10 -0
  819. package/dist/runtime/job-ids.js +10 -0
  820. package/dist/runtime/langgraph-loop.d.ts +3 -1
  821. package/dist/runtime/langgraph-loop.js +37 -18
  822. package/dist/runtime/loop.d.ts +42 -6
  823. package/dist/runtime/loop.js +14 -0
  824. package/dist/runtime/maintenance-queue.d.ts +10 -0
  825. package/dist/runtime/maintenance-queue.js +10 -0
  826. package/dist/runtime/maintenance.d.ts +50 -74
  827. package/dist/runtime/maintenance.js +166 -137
  828. package/dist/runtime/model-call.d.ts +61 -15
  829. package/dist/runtime/model-call.js +128 -84
  830. package/dist/runtime/providers.d.ts +158 -27
  831. package/dist/runtime/providers.js +373 -63
  832. package/dist/runtime/quota.d.ts +17 -3
  833. package/dist/runtime/quota.js +27 -2
  834. package/dist/runtime/retired-schedulers.d.ts +7 -0
  835. package/dist/runtime/retired-schedulers.js +31 -0
  836. package/dist/runtime/run-context.service.d.ts +65 -0
  837. package/dist/runtime/run-context.service.js +236 -0
  838. package/dist/runtime/run-control.d.ts +43 -0
  839. package/dist/runtime/run-control.js +89 -0
  840. package/dist/runtime/run-drafts.d.ts +85 -0
  841. package/dist/runtime/run-drafts.js +230 -0
  842. package/dist/runtime/run-finish.d.ts +27 -18
  843. package/dist/runtime/run-finish.js +98 -51
  844. package/dist/runtime/run-jobs.d.ts +46 -0
  845. package/dist/runtime/run-jobs.js +91 -0
  846. package/dist/runtime/run-processors.d.ts +60 -0
  847. package/dist/runtime/run-processors.js +185 -0
  848. package/dist/runtime/run-queue.d.ts +90 -58
  849. package/dist/runtime/run-queue.js +566 -297
  850. package/dist/runtime/run-steps.d.ts +39 -0
  851. package/dist/runtime/run-steps.js +96 -0
  852. package/dist/runtime/run-worker.d.ts +134 -77
  853. package/dist/runtime/run-worker.js +412 -237
  854. package/dist/runtime/runtime.module.d.ts +10 -0
  855. package/dist/runtime/runtime.module.js +122 -0
  856. package/dist/runtime/step-log.d.ts +51 -0
  857. package/dist/runtime/step-log.js +111 -0
  858. package/dist/runtime/stream.controller.d.ts +28 -9
  859. package/dist/runtime/stream.controller.js +72 -13
  860. package/dist/runtime/stream.d.ts +27 -6
  861. package/dist/runtime/stream.js +102 -7
  862. package/dist/runtime/subagents/child.d.ts +58 -51
  863. package/dist/runtime/subagents/child.js +105 -86
  864. package/dist/runtime/subagents/definition.d.ts +32 -28
  865. package/dist/runtime/subagents/definition.js +89 -143
  866. package/dist/runtime/subagents/deliveries.d.ts +71 -0
  867. package/dist/runtime/subagents/deliveries.js +228 -0
  868. package/dist/runtime/subagents/dispatch.d.ts +197 -27
  869. package/dist/runtime/subagents/dispatch.js +336 -270
  870. package/dist/runtime/subagents/limits.d.ts +32 -8
  871. package/dist/runtime/subagents/limits.js +44 -8
  872. package/dist/runtime/subagents/messages.d.ts +95 -0
  873. package/dist/runtime/subagents/messages.js +328 -0
  874. package/dist/runtime/subagents/org-agents.d.ts +4 -4
  875. package/dist/runtime/subagents/org-agents.js +3 -2
  876. package/dist/runtime/subagents/preamble.d.ts +4 -4
  877. package/dist/runtime/subagents/preamble.js +9 -7
  878. package/dist/runtime/subagents/progress.d.ts +10 -8
  879. package/dist/runtime/subagents/progress.js +11 -6
  880. package/dist/runtime/subagents/render.d.ts +30 -0
  881. package/dist/runtime/subagents/render.js +53 -0
  882. package/dist/runtime/subagents/roster.d.ts +27 -10
  883. package/dist/runtime/subagents/roster.js +49 -13
  884. package/dist/runtime/subagents/skill-fork.d.ts +10 -10
  885. package/dist/runtime/subagents/skill-fork.js +23 -8
  886. package/dist/runtime/subagents/status.d.ts +14 -0
  887. package/dist/runtime/subagents/status.js +23 -0
  888. package/dist/runtime/subagents/subagents.service.d.ts +43 -0
  889. package/dist/runtime/subagents/subagents.service.js +106 -0
  890. package/dist/runtime/usage-report-jobs.d.ts +88 -0
  891. package/dist/runtime/usage-report-jobs.js +158 -0
  892. package/dist/runtime/usage-report.d.ts +121 -83
  893. package/dist/runtime/usage-report.js +355 -181
  894. package/dist/runtime/waits.d.ts +258 -81
  895. package/dist/runtime/waits.js +800 -263
  896. package/dist/sandbox/job-ids.d.ts +10 -0
  897. package/dist/sandbox/job-ids.js +10 -0
  898. package/dist/sandbox/jobs.d.ts +68 -0
  899. package/dist/sandbox/jobs.js +150 -0
  900. package/dist/sandbox/leases.d.ts +73 -82
  901. package/dist/sandbox/leases.js +162 -346
  902. package/dist/sandbox/providers.d.ts +46 -0
  903. package/dist/sandbox/providers.js +83 -0
  904. package/dist/sandbox/sandbox.module.d.ts +9 -0
  905. package/dist/sandbox/sandbox.module.js +36 -0
  906. package/dist/sandbox/sandbox.service.d.ts +359 -151
  907. package/dist/sandbox/sandbox.service.js +950 -435
  908. package/dist/sandbox/unreachable.d.ts +30 -0
  909. package/dist/sandbox/unreachable.js +108 -0
  910. package/dist/skills/catalog.d.ts +40 -26
  911. package/dist/skills/catalog.js +120 -99
  912. package/dist/skills/changes.controller.d.ts +11 -4
  913. package/dist/skills/changes.controller.js +34 -9
  914. package/dist/skills/changes.service.d.ts +31 -21
  915. package/dist/skills/changes.service.js +426 -368
  916. package/dist/skills/invocable.controller.d.ts +2 -2
  917. package/dist/skills/invocable.controller.js +10 -7
  918. package/dist/skills/invocation-keys.d.ts +1 -1
  919. package/dist/skills/invocation-keys.js +1 -1
  920. package/dist/skills/invoke.d.ts +19 -18
  921. package/dist/skills/invoke.js +68 -24
  922. package/dist/skills/package.d.ts +20 -1
  923. package/dist/skills/package.js +28 -1
  924. package/dist/skills/skills.controller.d.ts +33 -7
  925. package/dist/skills/skills.controller.js +79 -12
  926. package/dist/skills/skills.module.d.ts +6 -0
  927. package/dist/skills/skills.module.js +39 -0
  928. package/dist/skills/skills.schemas.d.ts +48 -0
  929. package/dist/skills/skills.schemas.js +61 -0
  930. package/dist/skills/skills.service.d.ts +151 -44
  931. package/dist/skills/skills.service.js +636 -204
  932. package/dist/skills/usable.d.ts +81 -0
  933. package/dist/skills/usable.js +379 -0
  934. package/dist/storage/job-ids.d.ts +6 -0
  935. package/dist/storage/job-ids.js +6 -0
  936. package/dist/storage/purge.d.ts +22 -7
  937. package/dist/storage/purge.js +55 -3
  938. package/dist/storage/storage.module.d.ts +6 -0
  939. package/dist/storage/storage.module.js +23 -0
  940. package/dist/storage/storage.service.d.ts +18 -4
  941. package/dist/storage/storage.service.js +44 -3
  942. package/dist/themes/render-css.d.ts +12 -0
  943. package/dist/themes/render-css.js +132 -0
  944. package/dist/themes/theme-delivery.service.d.ts +34 -0
  945. package/dist/themes/theme-delivery.service.js +111 -0
  946. package/dist/themes/theme-state.d.ts +95 -0
  947. package/dist/themes/theme-state.js +203 -0
  948. package/dist/themes/theme-usage.d.ts +61 -0
  949. package/dist/themes/theme-usage.js +98 -0
  950. package/dist/themes/themes-public.controller.d.ts +28 -0
  951. package/dist/themes/themes-public.controller.js +92 -0
  952. package/dist/themes/themes.controller.d.ts +13 -0
  953. package/dist/themes/themes.controller.js +38 -0
  954. package/dist/themes/themes.module.d.ts +3 -0
  955. package/dist/themes/themes.module.js +21 -0
  956. package/dist/themes/themes.schemas.d.ts +3 -0
  957. package/dist/themes/themes.schemas.js +2 -0
  958. package/dist/themes/themes.service.d.ts +50 -0
  959. package/dist/themes/themes.service.js +99 -0
  960. package/dist/time-zone.d.ts +5 -0
  961. package/dist/time-zone.js +19 -0
  962. package/dist/tools/approvals.controller.d.ts +1 -1
  963. package/dist/tools/approvals.controller.js +14 -11
  964. package/dist/tools/approvals.schemas.d.ts +21 -0
  965. package/dist/tools/approvals.schemas.js +15 -0
  966. package/dist/tools/approvals.service.d.ts +53 -27
  967. package/dist/tools/approvals.service.js +365 -260
  968. package/dist/tools/breaker.d.ts +2 -2
  969. package/dist/tools/breaker.js +21 -3
  970. package/dist/tools/builtin-names.d.ts +109 -0
  971. package/dist/tools/builtin-names.js +173 -0
  972. package/dist/tools/builtins/agent.d.ts +27 -25
  973. package/dist/tools/builtins/agent.js +66 -63
  974. package/dist/tools/builtins/ask-user.d.ts +3 -3
  975. package/dist/tools/builtins/ask-user.js +3 -3
  976. package/dist/tools/builtins/builtin-tools.d.ts +41 -0
  977. package/dist/tools/builtins/builtin-tools.js +151 -0
  978. package/dist/tools/builtins/current-time.d.ts +26 -0
  979. package/dist/tools/builtins/current-time.js +99 -0
  980. package/dist/tools/builtins/handback.d.ts +28 -0
  981. package/dist/tools/builtins/handback.js +53 -0
  982. package/dist/tools/builtins/platform.d.ts +51 -0
  983. package/dist/tools/builtins/platform.js +451 -0
  984. package/dist/tools/builtins/read-tool-output.d.ts +3 -3
  985. package/dist/tools/builtins/read-tool-output.js +3 -3
  986. package/dist/tools/builtins/sandbox/bash.d.ts +5 -5
  987. package/dist/tools/builtins/sandbox/bash.js +293 -41
  988. package/dist/tools/builtins/sandbox/common.d.ts +137 -37
  989. package/dist/tools/builtins/sandbox/common.js +222 -62
  990. package/dist/tools/builtins/sandbox/deliver.d.ts +1 -1
  991. package/dist/tools/builtins/sandbox/deliver.js +21 -18
  992. package/dist/tools/builtins/sandbox/edit.d.ts +1 -1
  993. package/dist/tools/builtins/sandbox/edit.js +65 -51
  994. package/dist/tools/builtins/sandbox/file-state.d.ts +34 -0
  995. package/dist/tools/builtins/sandbox/file-state.js +34 -0
  996. package/dist/tools/builtins/sandbox/glob-match.d.ts +1 -1
  997. package/dist/tools/builtins/sandbox/glob-match.js +1 -1
  998. package/dist/tools/builtins/sandbox/glob.d.ts +1 -1
  999. package/dist/tools/builtins/sandbox/glob.js +19 -14
  1000. package/dist/tools/builtins/sandbox/grep.d.ts +7 -4
  1001. package/dist/tools/builtins/sandbox/grep.js +155 -36
  1002. package/dist/tools/builtins/sandbox/index.d.ts +9 -5
  1003. package/dist/tools/builtins/sandbox/index.js +13 -5
  1004. package/dist/tools/builtins/sandbox/read.d.ts +2 -2
  1005. package/dist/tools/builtins/sandbox/read.js +30 -20
  1006. package/dist/tools/builtins/sandbox/task-output.d.ts +79 -0
  1007. package/dist/tools/builtins/sandbox/task-output.js +334 -0
  1008. package/dist/tools/builtins/sandbox/task-stop.d.ts +10 -0
  1009. package/dist/tools/builtins/sandbox/task-stop.js +113 -0
  1010. package/dist/tools/builtins/sandbox/write.d.ts +1 -1
  1011. package/dist/tools/builtins/sandbox/write.js +52 -45
  1012. package/dist/tools/builtins/send-message.d.ts +56 -0
  1013. package/dist/tools/builtins/send-message.js +100 -0
  1014. package/dist/tools/builtins/skill-load.d.ts +32 -21
  1015. package/dist/tools/builtins/skill-load.js +125 -74
  1016. package/dist/tools/builtins/skill-write.d.ts +4 -4
  1017. package/dist/tools/builtins/skill-write.js +12 -12
  1018. package/dist/tools/builtins/tool-search.d.ts +13 -9
  1019. package/dist/tools/builtins/tool-search.js +25 -14
  1020. package/dist/tools/builtins/web/errors.d.ts +8 -0
  1021. package/dist/tools/builtins/web/errors.js +53 -0
  1022. package/dist/tools/builtins/web/extract.d.ts +62 -0
  1023. package/dist/tools/builtins/web/extract.js +271 -0
  1024. package/dist/tools/builtins/web/fetch.d.ts +55 -0
  1025. package/dist/tools/builtins/web/fetch.js +175 -0
  1026. package/dist/tools/builtins/web/index.d.ts +13 -0
  1027. package/dist/tools/builtins/web/index.js +12 -0
  1028. package/dist/tools/builtins/web/page-cache.d.ts +25 -0
  1029. package/dist/tools/builtins/web/page-cache.js +77 -0
  1030. package/dist/tools/builtins/web/search.d.ts +25 -0
  1031. package/dist/tools/builtins/web/search.js +210 -0
  1032. package/dist/tools/builtins/web/url.d.ts +17 -0
  1033. package/dist/tools/builtins/web/url.js +43 -0
  1034. package/dist/tools/canonical-json.d.ts +6 -0
  1035. package/dist/tools/canonical-json.js +16 -0
  1036. package/dist/tools/connector-content.controller.d.ts +1 -1
  1037. package/dist/tools/connector-content.controller.js +11 -6
  1038. package/dist/tools/connector-content.d.ts +12 -15
  1039. package/dist/tools/connector-content.js +53 -18
  1040. package/dist/tools/connectors.controller.d.ts +16 -3
  1041. package/dist/tools/connectors.controller.js +34 -14
  1042. package/dist/tools/connectors.schemas.d.ts +12 -0
  1043. package/dist/tools/connectors.schemas.js +19 -0
  1044. package/dist/tools/connectors.service.d.ts +80 -18
  1045. package/dist/tools/connectors.service.js +529 -358
  1046. package/dist/tools/credentials.d.ts +20 -20
  1047. package/dist/tools/credentials.js +55 -34
  1048. package/dist/tools/display-names.d.ts +9 -0
  1049. package/dist/tools/display-names.js +24 -0
  1050. package/dist/tools/drift.d.ts +29 -41
  1051. package/dist/tools/drift.js +116 -84
  1052. package/dist/tools/elicitation.js +1 -1
  1053. package/dist/tools/extension-tools.controller.d.ts +14 -0
  1054. package/dist/tools/extension-tools.controller.js +37 -0
  1055. package/dist/tools/info.d.ts +73 -13
  1056. package/dist/tools/info.js +151 -39
  1057. package/dist/tools/job-ids.d.ts +13 -0
  1058. package/dist/tools/job-ids.js +15 -0
  1059. package/dist/tools/jobs.d.ts +24 -0
  1060. package/dist/tools/jobs.js +69 -0
  1061. package/dist/tools/legacy-data.d.ts +34 -0
  1062. package/dist/tools/legacy-data.js +76 -0
  1063. package/dist/tools/legacy-keys.d.ts +51 -0
  1064. package/dist/tools/legacy-keys.js +115 -0
  1065. package/dist/tools/naming.d.ts +1 -5
  1066. package/dist/tools/naming.js +1 -7
  1067. package/dist/tools/oauth/flow-paths.d.ts +16 -0
  1068. package/dist/tools/oauth/flow-paths.js +38 -0
  1069. package/dist/tools/oauth/flow.d.ts +30 -30
  1070. package/dist/tools/oauth/flow.js +109 -81
  1071. package/dist/tools/oauth/oauth.controller.d.ts +3 -3
  1072. package/dist/tools/oauth/oauth.controller.js +12 -9
  1073. package/dist/tools/oauth/tokens.d.ts +45 -10
  1074. package/dist/tools/oauth/tokens.js +70 -24
  1075. package/dist/tools/org-tool-switches.d.ts +88 -0
  1076. package/dist/tools/org-tool-switches.js +201 -0
  1077. package/dist/tools/outputs.d.ts +13 -4
  1078. package/dist/tools/outputs.js +48 -4
  1079. package/dist/tools/pipeline.d.ts +108 -80
  1080. package/dist/tools/pipeline.js +396 -409
  1081. package/dist/tools/policy.d.ts +4 -17
  1082. package/dist/tools/policy.js +49 -35
  1083. package/dist/tools/questions.controller.d.ts +2 -2
  1084. package/dist/tools/questions.controller.js +9 -6
  1085. package/dist/tools/questions.service.d.ts +26 -25
  1086. package/dist/tools/questions.service.js +201 -142
  1087. package/dist/tools/registry.d.ts +215 -84
  1088. package/dist/tools/registry.js +382 -264
  1089. package/dist/tools/resources.d.ts +1 -1
  1090. package/dist/tools/resources.js +1 -1
  1091. package/dist/tools/specs.d.ts +5 -4
  1092. package/dist/tools/specs.js +3 -1
  1093. package/dist/tools/tools.module.d.ts +10 -0
  1094. package/dist/tools/tools.module.js +113 -0
  1095. package/dist/tools/validate.js +1 -1
  1096. package/dist/ui/call-extension.d.ts +16 -0
  1097. package/dist/ui/call-extension.js +38 -0
  1098. package/dist/ui/embed-token.d.ts +9 -5
  1099. package/dist/ui/embed-token.js +34 -6
  1100. package/dist/ui/ui-stream.d.ts +22 -17
  1101. package/dist/ui/ui-stream.js +72 -12
  1102. package/dist/ui/ui.module.d.ts +7 -0
  1103. package/dist/ui/ui.module.js +28 -0
  1104. package/dist/ui/views.controller.d.ts +14 -12
  1105. package/dist/ui/views.controller.js +32 -25
  1106. package/dist/ui/views.d.ts +10 -57
  1107. package/dist/ui/views.js +58 -46
  1108. package/package.json +13 -3
  1109. package/src/migrations/0063_tool_keys_claude_code.sql +220 -0
  1110. package/src/migrations/0064_account_last_org.sql +7 -0
  1111. package/src/migrations/0065_conversation_archive.sql +8 -0
  1112. package/src/migrations/0066_extension_display_name.sql +4 -0
  1113. package/src/migrations/0067_agent_profiles.sql +20 -0
  1114. package/src/migrations/0068_agent_avatar_uploads.sql +7 -0
  1115. package/src/migrations/0069_attachments_agent_idx.sql +3 -0
  1116. package/src/migrations/0070_background_tasks.sql +37 -0
  1117. package/src/migrations/0071_background_tasks_reserve.sql +6 -0
  1118. package/src/migrations/0072_background_tasks_stopping.sql +5 -0
  1119. package/src/migrations/0073_org_extension_point_defaults.sql +11 -0
  1120. package/src/migrations/0074_subagent_tree.sql +50 -0
  1121. package/src/migrations/0075_plugin_scope.sql +61 -0
  1122. package/src/migrations/0076_skills_created_by_nullable.sql +6 -0
  1123. package/src/migrations/0077_scope_requests.sql +52 -0
  1124. package/src/migrations/0078_scope_grant_switches.sql +18 -0
  1125. package/src/migrations/0079_scope_live_install_switches.sql +19 -0
  1126. package/src/migrations/0080_rename_enterprise_admin.sql +18 -0
  1127. package/src/migrations/0081_platform_components.sql +129 -0
  1128. package/src/migrations/0082_platform_migration.sql +33 -0
  1129. package/src/migrations/0083_plugin_scope_sync_failures.sql +15 -0
  1130. package/src/migrations/0084_org_owned_items.sql +85 -0
  1131. package/src/migrations/0085_agent_templates_phase4.sql +45 -0
  1132. package/src/migrations/0086_org_layering.sql +30 -0
  1133. package/src/migrations/0087_approval_summary.sql +6 -0
  1134. package/src/migrations/0088_environments.sql +80 -0
  1135. package/src/migrations/0089_model_kinds_usage.sql +38 -0
  1136. package/src/migrations/0090_initial_passwords.sql +27 -0
  1137. package/src/migrations/0091_account_time_zone.sql +4 -0
  1138. package/src/migrations/0092_tools_default_on.sql +27 -0
  1139. package/src/migrations/0093_connected_environments.sql +37 -0
  1140. package/src/migrations/0094_environment_paths_idx.sql +7 -0
  1141. package/src/migrations/0095_environment_files_resets.sql +5 -0
  1142. package/src/migrations/0096_environment_demoted_default.sql +18 -0
  1143. package/src/migrations/0097_extension_installs_enabled_at.sql +16 -0
  1144. package/src/migrations/0098_single_provider_running_first.sql +41 -0
  1145. package/src/migrations/0099_channel_connection_guide_ack.sql +6 -0
  1146. package/src/migrations/0100_catalog_files.sql +13 -0
  1147. package/src/migrations/0101_marketplace_icons.sql +32 -0
  1148. package/src/migrations/0102_themes.sql +64 -0
  1149. package/src/migrations/0103_ui_theme_setting.sql +7 -0
  1150. package/dist/catalog/upgrade-targets.d.ts +0 -59
  1151. package/dist/catalog/upgrade-targets.js +0 -90
  1152. package/dist/conversations/sandbox-status.d.ts +0 -21
  1153. package/dist/conversations/sandbox-status.js +0 -24
  1154. package/dist/extensions/org-config.controller.d.ts +0 -24
  1155. package/dist/extensions/org-config.controller.js +0 -59
  1156. package/dist/http/gateway.module.js +0 -13
  1157. package/dist/http/health.controller.d.ts +0 -26
  1158. package/dist/http/health.controller.js +0 -79
  1159. package/dist/http/tokens.d.ts +0 -131
  1160. package/dist/http/tokens.js +0 -131
  1161. package/dist/http/zod.pipe.d.ts +0 -8
  1162. package/dist/http/zod.pipe.js +0 -14
  1163. package/dist/identity/enterprise-admin.d.ts +0 -14
  1164. package/dist/identity/enterprise-admin.js +0 -27
  1165. package/dist/identity/rate-limit.d.ts +0 -55
  1166. package/dist/identity/rate-limit.js +0 -121
  1167. package/dist/sandbox/lifecycle.d.ts +0 -21
  1168. package/dist/sandbox/lifecycle.js +0 -68
  1169. package/dist/tools/builtins/sandbox/names.d.ts +0 -7
  1170. package/dist/tools/builtins/sandbox/names.js +0 -20
@@ -1,345 +1,86 @@
1
- import { createHash } from "node:crypto";
2
- import { parseAgentTemplate, parseConnectorTemplateFile, } from "@capybara-hq/plugin-sdk";
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
8
+ return function (target, key) { decorator(target, key, paramIndex); }
9
+ };
10
+ import { Inject, Injectable } from "@nestjs/common";
3
11
  import { ApiError } from "../errors.js";
4
- import { lockOrgAndAuthorize } from "../orgs/org-lock.js";
12
+ import { ExtensionRegistry } from "../extensions/registry.js";
13
+ import { ExtensionAvailability } from "../extensions/unavailable.js";
14
+ import { KernelDb } from "../infra/database/kernel-db.js";
15
+ import { TransactionHost } from "../infra/database/transaction-host.js";
16
+ import { Transactional } from "../infra/database/transactional.decorator.js";
17
+ import { KERNEL_LOGGER } from "../infra/tokens.js";
18
+ import { OrgLock } from "../orgs/org-lock.js";
5
19
  import { can, roleAtLeast } from "../orgs/roles.js";
6
20
  import { packagePath } from "../packages/tgz.js";
7
- import { checkSkillFiles, SkillArchiveError } from "../skills/package.js";
8
- import { itemView } from "./catalog.service.js";
9
- import { iconProblem } from "./plugin-package.js";
10
- import { upgradeInfo } from "./upgrade-targets.js";
11
- import { satisfiesRange } from "./versions.js";
12
- /**
13
- * A connector template as an org sees it (the install wizard and the upgrade preview's inputs):
14
- * presets and editable paths, no credentials.
15
- */
16
- export function orgTemplateView(id, file) {
17
- const t = file.template;
18
- return {
19
- id,
20
- displayName: file.displayName,
21
- description: file.description ?? "",
22
- plugin: t.plugin,
23
- connector: t.connector,
24
- endpoint: t.endpoint,
25
- editableEndpoint: t.editableEndpoint ?? [],
26
- auth: t.auth,
27
- ownership: t.ownership ??
28
- (typeof t.auth.ownership === "string" ? t.auth.ownership : null),
29
- };
30
- }
31
- const iconNotFound = () => new ApiError("catalog.icon_not_found", "This catalog item has no icon");
32
- /**
33
- * The item's latest version row; item missing, deleted or (when `includeDisabled` is false)
34
- * disabled -> `catalog.item_not_found`.
35
- */
36
- async function latestVersionRow(db, itemId, includeDisabled) {
37
- if (!UUID_RE.test(itemId))
38
- throw itemNotFound();
39
- const item = await db
40
- .selectFrom("catalog_items")
41
- .select(["latest_version", "policy"])
42
- .where("id", "=", itemId)
43
- .where("deleted_at", "is", null)
44
- .executeTakeFirst();
45
- // An item the caller cannot see is "not found" before any version / storage is read, so "no icon"
46
- // never reveals that it exists
47
- if (!item || (!includeDisabled && item.policy === "disabled"))
48
- throw itemNotFound();
49
- const v = await db
50
- .selectFrom("catalog_item_versions")
51
- .select(["manifest", "object_prefix", "files"])
52
- .where("item_id", "=", itemId)
53
- .where("version", "=", item.latest_version)
54
- .executeTakeFirst();
55
- if (!v)
56
- throw itemNotFound();
57
- return { item, v };
58
- }
59
- /** The icon's path in the version's files (undefined without an icon). */
60
- const iconPath = (v) => {
61
- const icon = v.manifest.icon;
62
- return icon === undefined ? undefined : packagePath(icon);
63
- };
64
- /** Whether the item's latest version has an icon; unreadable counts as none. */
65
- export async function catalogHasIcon(db, itemId) {
66
- try {
67
- const { v } = await latestVersionRow(db, itemId, true);
68
- const path = iconPath(v);
69
- return path !== undefined && v.files.some((f) => f.path === path);
70
- }
71
- catch {
72
- return false;
73
- }
74
- }
75
- /**
76
- * Reads the icon of the item's latest version (served only through kernel routes, with nosniff and
77
- * a CSP sandbox in the response headers; the web only shows it with `<img>`). Item missing, deleted
78
- * or (when `includeDisabled` is false) disabled -> `catalog.item_not_found` (decided before reading
79
- * storage); no icon -> `catalog.icon_not_found`; stored content that is not a valid svg / png
80
- * (checked at import, this guards against tampered storage) -> `internal`.
81
- */
82
- export async function readCatalogIcon(db, storage, itemId, includeDisabled) {
83
- const { item, v } = await latestVersionRow(db, itemId, includeDisabled);
84
- const path = iconPath(v);
85
- const f = path === undefined ? undefined : v.files.find((x) => x.path === path);
86
- if (path === undefined || !f)
87
- throw iconNotFound();
88
- const [file] = await readCatalogFiles(storage, v.object_prefix, [f]);
89
- if (!file)
90
- throw iconNotFound();
91
- const problem = iconProblem(path, file.data);
92
- if (problem !== undefined)
93
- throw new ApiError("internal", `Stored icon is invalid: ${problem}`);
94
- return {
95
- data: file.data,
96
- contentType: /\.svg$/i.test(path) ? "image/svg+xml" : "image/png",
97
- policy: item.policy,
98
- };
99
- }
21
+ import { StorageService } from "../storage/storage.service.js";
22
+ import { catalogHasIcon, findConnectorIn, orgTemplateView, readCatalogIcon, readCatalogTemplates, templatePluginProblem, } from "./catalog-content.js";
23
+ import { itemView, ownerOnlyFacts, versionUsable } from "./catalog-items.js";
24
+ import { connectorTemplatesOn, templateIdOfPath } from "./component-state.js";
25
+ import { itemPendingError, ownerOf, ownersOf } from "./ownership.js";
26
+ import { PluginInstaller, uninstallPreviewHash, upsertOrgSwitch, } from "./plugin-install.js";
27
+ import { requestable, switchable, visibleTo, wantedOn } from "./scope.js";
100
28
  const UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
101
29
  const itemNotFound = () => new ApiError("catalog.item_not_found", "Catalog item not found");
102
- const itemDisabled = () => new ApiError("catalog.item_disabled", "This catalog item is disabled by the enterprise admin and cannot be newly installed");
103
- const fail = (path, message) => new ApiError("validation_failed", "Request validation failed", [{ path, message }]);
104
- /**
105
- * The org actions installing / uninstalling a plugin needs: the union over its components (an
106
- * extension -> `org.extensions.manage`, skills -> `skills.manage`, connector templates ->
107
- * `connectors.manage`, agent templates -> `agents.manage`), re-checked inside the org row lock.
108
- */
109
- export function requiredActions(m) {
110
- const out = [];
111
- if (m.extension)
112
- out.push("org.extensions.manage");
113
- if ((m.connectorTemplates ?? []).length > 0)
114
- out.push("connectors.manage");
115
- if ((m.skills ?? []).length > 0)
116
- out.push("skills.manage");
117
- if ((m.agents ?? []).length > 0)
118
- out.push("agents.manage");
119
- return out.length > 0 ? out : ["org.extensions.manage"];
120
- }
121
- /** Locks the org row in the caller's transaction and re-checks the actor can do every action (else `forbidden`). */
122
- export async function lockOrgForActions(t, orgId, actor, actions) {
123
- const [first, ...rest] = actions;
124
- const { role } = await lockOrgAndAuthorize(t, orgId, actor, first);
125
- for (const a of rest) {
126
- if (!can(role, a))
127
- throw new ApiError("forbidden", "Insufficient organization role");
128
- }
129
- }
130
- const isObj = (v) => typeof v === "object" && v !== null && !Array.isArray(v);
131
- const UNSAFE_KEYS = new Set(["__proto__", "prototype", "constructor"]);
132
- /** 对象的全部叶子点路径(数组与非对象值算叶子)。 */
133
- function leafPaths(v, base = "") {
134
- const out = [];
135
- for (const [k, x] of Object.entries(v)) {
136
- const p = base ? `${base}.${k}` : k;
137
- if (isObj(x) && Object.keys(x).length > 0)
138
- out.push(...leafPaths(x, p));
139
- else
140
- out.push(p);
141
- }
142
- return out;
143
- }
144
- /** The value at a dot path of `v` (own keys only), undefined when absent. */
145
- export function getPath(v, path) {
146
- let node = v;
147
- for (const seg of path.split(".")) {
148
- if (!isObj(node) || !Object.hasOwn(node, seg))
149
- return undefined;
150
- node = node[seg];
151
- }
152
- return node;
153
- }
154
- /** Sets the value at a dot path of `obj`, creating the objects on the way. */
155
- export function setPath(obj, path, value) {
156
- const segs = path.split(".");
157
- let node = obj;
158
- for (const seg of segs.slice(0, -1)) {
159
- if (!isObj(node[seg]))
160
- node[seg] = {};
161
- node = node[seg];
162
- }
163
- node[segs[segs.length - 1]] = value;
164
- }
165
- /**
166
- * 模板的连接器插件此刻是否可用:插件加载且提供该 kind,并满足 `pluginVersion`(若写了);不可用返回原因
167
- * (模型不可见,给管理员看的英文)。
168
- */
169
- export function templatePluginProblem(d, template) {
170
- if (!d.findConnector(template.plugin, template.connector)) {
171
- return `Connector extension ${template.plugin} providing "${template.connector}" is not deployed; ask the enterprise admin to install and enable it`;
172
- }
173
- const range = template.pluginVersion;
174
- const version = d.pluginVersion(template.plugin);
175
- if (range !== undefined && version !== undefined && !satisfiesRange(version, range)) {
176
- return `Connector extension ${template.plugin} is deployed at version ${version}, but the template needs ${range}; ask the enterprise admin to upgrade it`;
177
- }
178
- return undefined;
179
- }
30
+ const notOffered = () => new ApiError("catalog.approval_required", "This plugin is not offered to this organization; an org admin can request access");
31
+ const pluginDisabled = () => new ApiError("plugin.disabled", "This plugin is disabled by the super admin and cannot be switched on");
180
32
  /**
181
- * Builds the connector install input from a connector template plus what the org filled in (C30):
182
- * the endpoint comes from the template, only paths listed in `editableEndpoint` (or fields under
183
- * them) may be changed by the org, changing another path -> `validation_failed`; the auth method
184
- * comes from the template, the org only gives credentials (static credentials via `credential`,
185
- * OAuth via `client`). Re-checks the template's plugin, kind and `pluginVersion` against the
186
- * connectors loaded on this replica right now (unmet -> `catalog.not_deployed`); the endpoint
187
- * (merged as a whole) schema check, credential pattern check and OAuth URL policy are re-checked by
188
- * `ConnectorsService.create`.
33
+ * Organizations see the platform catalog with the plugin scope rules applied (plugin and component
34
+ * management spec §5): a plugin is `all` (on in every org unless an org admin switched it off,
35
+ * layering spec §4), `optional` (an org admin switches it on), or `named` (offered to the listed
36
+ * orgs). Members get the list read-only; org admins switch a plugin on (an install by
37
+ * {@link PluginInstaller}, with its dependencies; the union of the component actions of the plugins
38
+ * it brings in is re-checked inside the org row lock) or off (an uninstall, after a preview they
39
+ * confirm with its hash). Disabled item -> `plugin.disabled`; a
40
+ * dependency unresolved / disabled / in a cycle -> `catalog.dependency_*`; an extension or a
41
+ * template's connector not on the deployment -> `catalog.not_deployed`. No in-process state.
189
42
  */
190
- export function templateConnectorInput(deps, template, ref, input, defaultName, at = "connector") {
191
- const problem = templatePluginProblem(deps, template);
192
- if (problem !== undefined)
193
- throw new ApiError("catalog.not_deployed", problem);
194
- const given = input ?? {};
195
- const editable = template.editableEndpoint ?? [];
196
- const endpoint = structuredClone(template.endpoint);
197
- if (given.endpoint !== undefined) {
198
- if (!isObj(given.endpoint))
199
- throw fail(`${at}.endpoint`, "Expected an object");
200
- for (const p of leafPaths(given.endpoint)) {
201
- const segs = p.split(".");
202
- if (segs.some((s) => UNSAFE_KEYS.has(s))) {
203
- throw fail(`${at}.endpoint.${p}`, "Invalid key");
204
- }
205
- const allowed = editable.some((e) => p === e || p.startsWith(`${e}.`));
206
- if (!allowed) {
207
- throw fail(`${at}.endpoint.${p}`, "This endpoint field is set by the template and cannot be changed");
208
- }
209
- }
210
- for (const e of editable) {
211
- const v = getPath(given.endpoint, e);
212
- if (v !== undefined)
213
- setPath(endpoint, e, v);
214
- }
215
- }
216
- const auth = template.auth;
217
- const oauth = auth.type === "oauth_code" || auth.type === "oauth_client";
218
- if (oauth && given.credential !== undefined) {
219
- throw fail(`${at}.credential`, "This connector uses OAuth; provide client instead");
43
+ let OrgCatalogService = class OrgCatalogService {
44
+ kdb;
45
+ orgLock;
46
+ storage;
47
+ registry;
48
+ pluginInstaller;
49
+ log;
50
+ txHost;
51
+ availability;
52
+ constructor(kdb,
53
+ /** The org row lock (orgs/org-lock.ts): joins the caller's transaction. */
54
+ orgLock, storage, registry, pluginInstaller, log, txHost,
55
+ /** Why a plugin's extension cannot run (the `unavailable` state's reason). */
56
+ availability) {
57
+ this.kdb = kdb;
58
+ this.orgLock = orgLock;
59
+ this.storage = storage;
60
+ this.registry = registry;
61
+ this.pluginInstaller = pluginInstaller;
62
+ this.log = log;
63
+ this.txHost = txHost;
64
+ this.availability = availability;
220
65
  }
221
- if (!oauth && given.client !== undefined) {
222
- throw fail(`${at}.client`, "This connector does not use OAuth; provide credential instead");
66
+ /** The kernel-schema handle of the current context (the transaction, else the pool). */
67
+ get db() {
68
+ return this.kdb.db;
223
69
  }
224
- const credential = oauth ? given.client : given.credential;
225
- return {
226
- name: given.name ?? defaultName,
227
- ...(given.slug !== undefined && { slug: given.slug }),
228
- connector: template.connector,
229
- endpoint,
230
- auth,
231
- ...(credential !== undefined && { credential }),
232
- template: {
233
- ...ref,
234
- ...(template.defaultToolPolicies !== undefined && {
235
- defaultToolPolicies: template.defaultToolPolicies,
236
- }),
237
- },
238
- };
239
- }
240
- /** 从部署存储读目录版本里的文件(按版本行的 sha256 校验);`under` 给出时只读该目录下的文件,路径去掉该前缀。 */
241
- export async function readCatalogFiles(storage, objectPrefix, files, under) {
242
- storage.assertAvailable();
243
- if (objectPrefix === null)
244
- return [];
245
- const store = storage.deployment();
246
- const dir = under === undefined ? "" : `${under}/`;
247
- const out = [];
248
- for (const f of files) {
249
- if (!f.path.startsWith(dir))
250
- continue;
251
- const got = await store.get(`${objectPrefix}${f.path}`);
252
- if (!got) {
253
- throw new ApiError("storage.unavailable", `Catalog file ${f.path} is missing from object storage`);
254
- }
255
- const data = new Uint8Array(await new Response(got.body).arrayBuffer());
256
- if (createHash("sha256").update(data).digest("hex") !== f.sha256) {
257
- throw new ApiError("internal", `Catalog file ${f.path} does not match its recorded hash`);
258
- }
259
- out.push({ path: f.path.slice(dir.length), size: data.byteLength, sha256: f.sha256, data });
260
- }
261
- return out;
262
- }
263
- /** 校验技能文件并取名字与描述(导入时已校验过;这里防存储被改)。 */
264
- export function skillOf(files) {
265
- try {
266
- // Stored files: a version imported before phase D keeps installing (its invocation keys are
267
- // read leniently; `skillInvocation` ignores values of the wrong type)
268
- return checkSkillFiles(files, { invocationKeys: false });
269
- }
270
- catch (e) {
271
- if (e instanceof SkillArchiveError) {
272
- throw new ApiError("internal", `Stored skill is invalid: ${e.problems.join("; ")}`);
273
- }
274
- throw e;
275
- }
276
- }
277
- /** The connector templates of a catalog version, read from storage (id = the file's base name). */
278
- export async function readCatalogTemplates(storage, v) {
279
- const refs = v.manifest.connectorTemplates ?? [];
280
- if (refs.length === 0)
281
- return [];
282
- const paths = refs.map((r) => packagePath(r.path));
283
- const files = await readCatalogFiles(storage, v.object_prefix, v.files.filter((f) => paths.includes(f.path)));
284
- return paths.map((path) => {
285
- const f = files.find((x) => x.path === path);
286
- let parsed;
287
- try {
288
- parsed = f && parseConnectorTemplateFile(JSON.parse(new TextDecoder().decode(f.data)));
289
- }
290
- catch {
291
- parsed = undefined;
292
- }
293
- if (!parsed || "errors" in parsed) {
294
- throw new ApiError("internal", `Stored connector template ${path} is missing or invalid`);
295
- }
296
- return { id: path.split("/").pop().replace(/\.json$/, ""), file: parsed };
297
- });
298
- }
299
- /**
300
- * The agent templates of a catalog version (`manifest.agents`, listed explicitly since import),
301
- * parsed from storage (checked at import; parsed again in case storage was changed).
302
- */
303
- export async function readCatalogAgentTemplates(storage, v) {
304
- const refs = v.manifest.agents ?? [];
305
- if (refs.length === 0)
306
- return [];
307
- const paths = refs.map((r) => packagePath(r.path));
308
- const files = await readCatalogFiles(storage, v.object_prefix, v.files.filter((f) => paths.includes(f.path)));
309
- return paths.map((path) => {
310
- const f = files.find((x) => x.path === path);
311
- const parsed = f && parseAgentTemplate(new TextDecoder().decode(f.data));
312
- if (!parsed || "errors" in parsed) {
313
- throw new ApiError("internal", `Stored agent template ${path} is missing or invalid`);
314
- }
315
- return { path, template: parsed.template };
316
- });
317
- }
318
- /**
319
- * Organizations browse and install from the enterprise catalog (C22): members browse (without
320
- * disabled items) and request, org admins install. Every item is a plugin, installed with its
321
- * dependencies by {@link PluginInstaller}; installing requires the union of the component actions
322
- * of the plugins it brings in ({@link requiredActions}), re-checked inside the org row lock; item
323
- * disabled -> `catalog.item_disabled`; a dependency unresolved / disabled / in a cycle ->
324
- * `catalog.dependency_*`; an extension or a template's connector not on the deployment ->
325
- * `catalog.not_deployed`; needs_approval without a grant -> a stage deployment request (HTTP 202;
326
- * dependencies are not approved separately, spec §10). No in-process state.
327
- */
328
- export class OrgCatalogService {
329
- d;
330
- constructor(d) {
331
- this.d = d;
332
- }
333
- /** The org's view of the items; members (not admins) don't see disabled items. */
70
+ /**
71
+ * The org's view of the items: a `named` item without the org on its list is `not_offered` when
72
+ * shown to other orgs and absent otherwise; disabled ones are shown to admins as `unavailable`
73
+ * and absent for members. Each item carries the org's pending request for it.
74
+ */
334
75
  async list(orgId, accountId, itemId) {
335
- const m = await this.d.db
76
+ const m = await this.db
336
77
  .selectFrom("memberships")
337
78
  .select("role")
338
79
  .where("org_id", "=", orgId)
339
80
  .where("account_id", "=", accountId)
340
81
  .executeTakeFirst();
341
82
  const isAdmin = m !== undefined && roleAtLeast(m.role, "admin");
342
- let q = this.d.db
83
+ let q = this.db
343
84
  .selectFrom("catalog_items")
344
85
  .selectAll()
345
86
  .where("deleted_at", "is", null)
@@ -348,67 +89,163 @@ export class OrgCatalogService {
348
89
  if (itemId !== undefined)
349
90
  q = q.where("id", "=", itemId);
350
91
  if (!isAdmin)
351
- q = q.where("policy", "<>", "disabled");
352
- const items = await q.execute();
92
+ q = q.where("disabled", "=", false);
93
+ const all = await q.execute();
94
+ const [listed, switches] = await Promise.all([
95
+ this.db
96
+ .selectFrom("catalog_item_scope_orgs")
97
+ .select("item_id")
98
+ .where("org_id", "=", orgId)
99
+ .execute(),
100
+ this.db
101
+ .selectFrom("catalog_item_org_switches")
102
+ .select(["item_id", "enabled"])
103
+ .where("org_id", "=", orgId)
104
+ .execute(),
105
+ ]);
106
+ const inList = new Set(listed.map((r) => r.item_id));
107
+ // Hidden `named` items (not listed, not shown to other orgs) are absent; shown ones are
108
+ // `not_offered`
109
+ // An org upload waiting for the super admin is its owner's only (ruling P3-9)
110
+ const items = all.filter((i) => (!i.awaiting_confirmation || i.owner_org_id === orgId) &&
111
+ (visibleTo({ scope: i.builtin ? "all" : i.scope }, inList.has(i.id)) ||
112
+ requestable(i, inList.has(i.id))));
353
113
  if (items.length === 0)
354
114
  return [];
115
+ const sw = new Map(switches.map((r) => [r.item_id, r.enabled]));
355
116
  const ids = items.map((i) => i.id);
356
- const [versions, grants, requests, pluginInstalls] = await Promise.all([
357
- this.d.db
117
+ const [versions, pluginInstalls, configs, requests] = await Promise.all([
118
+ this.db
358
119
  .selectFrom("catalog_item_versions")
359
- .select(["item_id", "version", "source", "manifest", "object_prefix", "files"])
120
+ .select([
121
+ "item_id",
122
+ "version",
123
+ "source",
124
+ "source_format",
125
+ "manifest",
126
+ "object_prefix",
127
+ "files",
128
+ "applied_at",
129
+ "rejected_at",
130
+ ])
360
131
  .where("item_id", "in", ids)
361
132
  .execute(),
362
- this.d.db
363
- .selectFrom("catalog_org_grants")
364
- .select("item_id")
365
- .where("org_id", "=", orgId)
366
- .execute(),
367
- this.d.requests.latestByItem(orgId),
368
- this.d.db
133
+ this.db
369
134
  .selectFrom("plugin_installs")
370
135
  .select(["id", "item_id", "version"])
371
136
  .where("org_id", "=", orgId)
372
137
  .where("status", "in", ["installing", "installed", "upgrading"])
373
138
  .execute(),
139
+ this.db
140
+ .selectFrom("extension_org_configs")
141
+ .select("plugin")
142
+ .where("org_id", "=", orgId)
143
+ .where("config", "is not", null)
144
+ .execute(),
145
+ this.db
146
+ .selectFrom("catalog_requests")
147
+ .select(["id", "item_id", "kind", "created_at"])
148
+ .where("org_id", "=", orgId)
149
+ .where("item_id", "in", ids)
150
+ .where("kind", "in", ["access", "enable"])
151
+ .where("status", "=", "pending")
152
+ .orderBy("created_at")
153
+ .execute(),
374
154
  ]);
375
- const upgrades = await upgradeInfo(this.d.db, this.d.host, pluginInstalls.flatMap((a) => {
376
- const item = items.find((i) => i.id === a.item_id);
377
- return item ? [{ itemId: a.item_id, name: item.name, version: a.version }] : [];
378
- }));
379
- const granted = new Set(grants.map((g) => g.item_id));
155
+ const pending = new Map(requests.map((r) => [
156
+ r.item_id,
157
+ { id: r.id, kind: r.kind, createdAt: r.created_at.toISOString() },
158
+ ]));
380
159
  const undeployed = await this.undeployed(items.flatMap((i) => {
381
160
  const v = versions.find((x) => x.item_id === i.id && x.version === i.latest_version);
382
161
  return v ? [v] : [];
383
162
  }));
163
+ const configured = new Set(configs.map((c) => c.plugin));
164
+ const owners = await ownersOf(this.db, items.flatMap((i) => (i.owner_org_id === null ? [] : [i.owner_org_id])));
165
+ const loaded = new Map(this.registry.manifests().map((x) => [x.name, x]));
166
+ // the extensions of the latest versions that are not loaded: why (the `unavailable` reason)
167
+ const extensionOf = (i) => {
168
+ const v = versions.find((x) => x.item_id === i.id && x.version === i.latest_version);
169
+ const m = v?.manifest;
170
+ return m?.extension ? m.name : undefined;
171
+ };
172
+ const unloaded = await this.availability.unavailable(items.flatMap((i) => {
173
+ const n = extensionOf(i);
174
+ return n === undefined ? [] : [n];
175
+ }));
384
176
  const out = [];
385
177
  for (const i of items) {
386
- const vs = versions.filter((v) => v.item_id === i.id);
387
- const { installs: _installs, marketplaceId: _source, latestMarketplaceVersion: _latest, newerInMarketplace: _newer, ...view } = itemView(i, vs);
178
+ // Another org sees only an org-owned plugin's applied version, never one its owner
179
+ // uploaded that is pending or was rejected (ruling P3-34), nor such a version of a plugin
180
+ // transferred to the platform since (ruling P3-52)
181
+ const vs = versions.filter((v) => v.item_id === i.id &&
182
+ (i.owner_org_id === orgId ||
183
+ (versionUsable(v) && (i.owner_org_id === null || v.version === i.latest_version))));
184
+ const { installs: _installs, marketplaceId: _source, latestMarketplaceVersion: _latest, newerInMarketplace: _newer, scopeOrgs: _scopeOrgs, enabledOrgs: _enabledOrgs, offCount: _offCount, pending: _pending, shownToOthers: _shown, awaitingConfirmation, pendingVersion, ...view } = itemView(i, vs, 0, undefined, ownerOnlyFacts(ownerOf(i.owner_org_id, owners)));
388
185
  const latest = vs.find((v) => v.version === i.latest_version);
389
- let installable;
390
- if (i.policy === "disabled")
391
- installable = "disabled";
392
- else if (latest && undeployed.has(i.id)) {
393
- installable = "not_deployed";
186
+ const a = pluginInstalls.find((x) => x.item_id === i.id);
187
+ const scope = i.builtin ? "all" : i.scope;
188
+ const wanted = wantedOn(i, inList.has(i.id), sw.get(i.id) ?? null);
189
+ let state;
190
+ let reason;
191
+ const extName = extensionOf(i);
192
+ const why = extName === undefined ? undefined : unloaded.get(extName);
193
+ if (i.awaiting_confirmation)
194
+ state = "awaiting_confirmation";
195
+ else if (i.disabled) {
196
+ state = "unavailable";
197
+ reason = "plugin_disabled";
394
198
  }
395
- else if (i.policy === "needs_approval") {
396
- installable = granted.has(i.id) ? "granted" : "needs_approval";
199
+ else if (requestable(i, inList.has(i.id)))
200
+ state = "not_offered";
201
+ // not installed here and its extension cannot run: switching it on would fail (spec §14.2
202
+ // problem 1); an installed one keeps its state (an org admin can still switch it off)
203
+ else if (!a && why !== undefined) {
204
+ state = "unavailable";
205
+ reason = why.reason;
206
+ }
207
+ else if (a) {
208
+ // An on connector template without a connector here (ruling P2-10)
209
+ const missing = await this.pluginInstaller.missingConnectors(orgId, i.id);
210
+ state = (missing?.templates.length ?? 0) > 0 ? "needs_config" : "on";
211
+ }
212
+ else if (i.builtin)
213
+ state = "on";
214
+ else if (!wanted)
215
+ state = "off";
216
+ else {
217
+ const m = latest?.manifest;
218
+ const ext = m?.extension ? loaded.get(m.name) : undefined;
219
+ // only the connector templates on in the org need input (ruling P2-6)
220
+ const templateIds = (m?.connectorTemplates ?? []).map((t) => templateIdOfPath(t.path));
221
+ const needsInputs = (await connectorTemplatesOn(this.db, orgId, i.id, templateIds)).size > 0 ||
222
+ (m?.extension !== undefined &&
223
+ ext?.config?.org !== undefined &&
224
+ !ext.config.org.safeParse({}).success &&
225
+ !configured.has(m.name));
226
+ // Wanted but not installed and needing nothing: the sync has not installed it (yet, or its
227
+ // install failed); `off`, so an org admin can switch it on (the worker start retries it)
228
+ state = needsInputs ? "needs_config" : "off";
397
229
  }
398
- else
399
- installable = "yes";
400
- const a = pluginInstalls.find((x) => x.item_id === i.id);
401
230
  out.push({
402
231
  ...view,
403
- installable,
232
+ // A pending upload is the owner's business only (other orgs never learn of it)
233
+ ...(i.owner_org_id === orgId && { awaitingConfirmation, pendingVersion }),
234
+ scope,
235
+ builtin: i.builtin,
236
+ state,
237
+ ...(reason !== undefined && { reason }),
238
+ switchable: state !== "not_offered" && state !== "awaiting_confirmation" && switchable(i),
239
+ notDeployed: latest !== undefined && undeployed.has(i.id),
404
240
  installed: a
405
241
  ? {
406
242
  pluginInstallId: a.id,
407
243
  version: a.version,
408
- upgradeAvailable: upgrades.get(`${a.item_id}@${a.version}`)?.upgradeAvailable ?? null,
244
+ // no per-org upgrade: the platform update moves every org (ruling F2)
245
+ upgradeAvailable: null,
409
246
  }
410
247
  : null,
411
- request: requests.get(i.id) ?? null,
248
+ request: pending.get(i.id) ?? null,
412
249
  });
413
250
  }
414
251
  return out;
@@ -425,7 +262,7 @@ export class OrgCatalogService {
425
262
  const [item] = await this.list(orgId, accountId, itemId);
426
263
  if (!item)
427
264
  throw itemNotFound();
428
- const v = await this.d.db
265
+ const v = await this.db
429
266
  .selectFrom("catalog_item_versions")
430
267
  .select(["manifest", "object_prefix", "files"])
431
268
  .where("item_id", "=", itemId)
@@ -434,26 +271,64 @@ export class OrgCatalogService {
434
271
  if (!v)
435
272
  throw itemNotFound();
436
273
  const m = v.manifest;
274
+ const templates = await readCatalogTemplates(this.storage, v);
275
+ // Providers the install would switch on first (a refusal is the install's to report)
276
+ const implied = await this.pluginInstaller
277
+ .impliedProviders(orgId, m, templates, m.dependencies ?? [])
278
+ .catch((e) => {
279
+ if (e instanceof ApiError)
280
+ return [];
281
+ throw e;
282
+ });
437
283
  return {
438
284
  item,
439
285
  hasIcon: m.icon !== undefined,
440
286
  extension: m.extension ? m.name : null,
441
- templates: (await readCatalogTemplates(this.d.storage, v)).map((t) => orgTemplateView(t.id, t.file)),
442
- dependencies: (m.dependencies ?? []).map((d) => ({ name: d.name, range: d.version })),
287
+ templates: templates.map((t) => orgTemplateView(t.id, t.file)),
288
+ dependencies: [
289
+ ...(m.dependencies ?? []).map((d) => ({ name: d.name, range: d.version })),
290
+ ...implied.map((d) => ({ name: d.name, range: d.range, implied: true })),
291
+ ],
443
292
  skills: (m.skills ?? []).map((s) => packagePath(s.path)),
444
293
  agents: (m.agents ?? []).map((a) => packagePath(a.path)),
294
+ missingTemplates: item.installed !== null && item.state === "needs_config"
295
+ ? ((await this.pluginInstaller.missingConnectors(orgId, itemId))?.templates ?? []).map((t) => orgTemplateView(t.id, t.file))
296
+ : [],
445
297
  };
446
298
  }
447
299
  /**
448
- * The item's icon; members don't see disabled items (-> `catalog.item_not_found`, decided before
449
- * reading storage).
300
+ * The item's icon; members don't see disabled items, nobody outside its list sees a hidden
301
+ * `named` item (-> `catalog.item_not_found`, decided before reading storage). Without `orgId`
302
+ * (the super admin) every item.
450
303
  */
451
- icon(itemId, isAdmin) {
452
- return readCatalogIcon(this.d.db, this.d.storage, itemId, isAdmin);
304
+ async icon(itemId, isAdmin, orgId) {
305
+ if (orgId === undefined)
306
+ return readCatalogIcon(this.db, itemId, isAdmin);
307
+ if (!UUID_RE.test(itemId))
308
+ throw itemNotFound();
309
+ // A hidden `named` item stays absent here too
310
+ const item = await this.db
311
+ .selectFrom("catalog_items")
312
+ .select(["scope", "builtin", "shown_to_others", "owner_org_id", "shareable"])
313
+ .where("id", "=", itemId)
314
+ .where("deleted_at", "is", null)
315
+ .executeTakeFirst();
316
+ // Not requestable from outside its list (hidden, or held back by the share gate): only listed orgs
317
+ if (item && !item.builtin && item.scope === "named" && !requestable(item, false)) {
318
+ const listed = await this.db
319
+ .selectFrom("catalog_item_scope_orgs")
320
+ .select("item_id")
321
+ .where("item_id", "=", itemId)
322
+ .where("org_id", "=", orgId)
323
+ .executeTakeFirst();
324
+ if (listed === undefined)
325
+ throw itemNotFound();
326
+ }
327
+ return readCatalogIcon(this.db, itemId, isAdmin);
453
328
  }
454
329
  /** For the admin item detail: whether the latest version has an icon. */
455
330
  hasIcon(itemId) {
456
- return catalogHasIcon(this.d.db, itemId);
331
+ return catalogHasIcon(this.db, itemId);
457
332
  }
458
333
  /**
459
334
  * The items (latest versions) this replica cannot install now: the plugin's extension is not
@@ -462,9 +337,9 @@ export class OrgCatalogService {
462
337
  * deployed here (the install reads it again).
463
338
  */
464
339
  async undeployed(versions) {
465
- const loaded = new Map(this.d.host.manifests().map((m) => [m.name, m.version]));
340
+ const loaded = new Map(this.registry.manifests().map((m) => [m.name, m.version]));
466
341
  const deps = {
467
- findConnector: this.d.findConnector,
342
+ findConnector: (plugin, kind) => findConnectorIn(this.registry, plugin, kind),
468
343
  pluginVersion: (n) => loaded.get(n),
469
344
  };
470
345
  const out = new Set();
@@ -477,14 +352,14 @@ export class OrgCatalogService {
477
352
  if ((m.connectorTemplates ?? []).length === 0)
478
353
  return;
479
354
  try {
480
- const templates = await readCatalogTemplates(this.d.storage, v);
355
+ const templates = await readCatalogTemplates(this.storage, v);
481
356
  if (templates.some((t) => templatePluginProblem(deps, t.file.template) !== undefined)) {
482
357
  out.add(v.item_id);
483
358
  }
484
359
  }
485
360
  catch (e) {
486
361
  // Unreadable here: counted as deployed, the install reports it
487
- this.d.log?.warn("catalog template read failed in the org list", {
362
+ this.log.warn("catalog template read failed in the org list", {
488
363
  itemId: v.item_id,
489
364
  error: e instanceof Error ? e.message : String(e),
490
365
  });
@@ -492,28 +367,19 @@ export class OrgCatalogService {
492
367
  }));
493
368
  return out;
494
369
  }
495
- /** Installs a plugin in the org (see the class comment). */
496
- async install(orgId, actor, itemId, body, actorTokenId) {
370
+ /**
371
+ * Installs a plugin in the org (the old install route, an alias of switching it on): the role
372
+ * first, then item errors (a member cannot probe a disabled item through error codes), then the
373
+ * installer. Records the org's switch as on.
374
+ */
375
+ async install(orgId, actor, itemId, body, actorTokenId, auditDetail) {
497
376
  if (!UUID_RE.test(itemId))
498
377
  throw itemNotFound();
499
- // The role first (forbidden when it can install nothing), then item errors: a member cannot
500
- // probe the existence or versions of a disabled item through error codes
501
- await this.d.db.transaction().execute(async (t) => {
502
- const { role } = await lockOrgAndAuthorize(t, orgId, actor, "catalog.read");
503
- const canAny = ["org.extensions.manage", "connectors.manage", "skills.manage"].some((a) => can(role, a));
504
- if (!canAny)
505
- throw new ApiError("forbidden", "Insufficient organization role");
506
- });
507
- const item = await this.d.db
508
- .selectFrom("catalog_items")
509
- .selectAll()
510
- .where("id", "=", itemId)
511
- .where("deleted_at", "is", null)
512
- .executeTakeFirst();
513
- if (!item)
514
- throw itemNotFound();
515
- const version = body.version ?? item.latest_version;
516
- const v = await this.d.db
378
+ await this.assertCanInstall(orgId, actor);
379
+ const item = await this.visibleItem(orgId, itemId);
380
+ // The platform's version (one per deployment, ruling P2-17)
381
+ const version = item.platform_synced_version ?? item.latest_version;
382
+ const v = await this.db
517
383
  .selectFrom("catalog_item_versions")
518
384
  .select("version")
519
385
  .where("item_id", "=", itemId)
@@ -521,105 +387,201 @@ export class OrgCatalogService {
521
387
  .executeTakeFirst();
522
388
  if (!v)
523
389
  throw new ApiError("catalog.item_not_found", `Version ${version} of this item not found`);
524
- const opts = actorTokenId !== undefined ? { actorTokenId } : {};
525
- if (item.policy === "disabled")
526
- throw itemDisabled();
527
- // Dependencies resolved, extensions deployed, template connectors available: before a request
528
- // is created. The actions are the union over the plugins the install brings in
529
- const { actions } = await this.d.pluginInstaller.preflight(orgId, actor, itemId, version);
530
- // 1. Role and policy under the lock; needs_approval without a grant -> a request (202). Approval
531
- // follows this plugin's policy only, not its dependencies' (spec §10)
532
- const pending = await this.d.db.transaction().execute(async (t) => {
533
- await lockOrgForActions(t, orgId, actor, actions);
534
- const locked = await t
535
- .selectFrom("catalog_items")
536
- .select(["policy", "deleted_at"])
537
- .where("id", "=", itemId)
538
- .forShare()
539
- .executeTakeFirst();
540
- if (!locked || locked.deleted_at !== null)
541
- throw itemNotFound();
542
- if (locked.policy === "disabled")
543
- throw itemDisabled();
544
- if (locked.policy === "needs_approval") {
545
- const grant = await t
546
- .selectFrom("catalog_org_grants")
547
- .select("item_id")
548
- .where("item_id", "=", itemId)
549
- .where("org_id", "=", orgId)
550
- .executeTakeFirst();
551
- if (!grant) {
552
- return this.d.requests.requestDeployment(t, orgId, actor, item, version, opts);
553
- }
554
- }
555
- return undefined;
556
- });
557
- if (pending !== undefined) {
558
- return { status: 202, request: await this.d.requests.view(this.d.db, pending) };
559
- }
560
- // 2. Install (each step re-checks the item policy in its own transaction)
561
- const { version: _version, ...input } = body;
562
- const view = await this.d.pluginInstaller.install(orgId, actor, itemId, version, input, opts);
390
+ const opts = {
391
+ switchOn: true,
392
+ ...(actorTokenId !== undefined && { actorTokenId }),
393
+ ...(auditDetail !== undefined && { auditDetail }),
394
+ };
395
+ if (item.disabled)
396
+ throw pluginDisabled();
397
+ // Dependencies resolved, extensions deployed, template connectors available
398
+ await this.pluginInstaller.preflight(orgId, actor, itemId, version);
399
+ const view = await this.pluginInstaller.install(orgId, actor, itemId, version, body, opts);
563
400
  return {
564
401
  status: 201,
565
402
  installed: { itemId, version, pluginInstallId: view.id },
566
403
  install: view,
567
404
  };
568
405
  }
569
- /** The upgrade preview of an org install (spec §10, see `PluginUpgrader`). */
570
- async upgradePreview(orgId, actor, installId, version) {
571
- await this.assertCanInstall(orgId, actor);
572
- return this.d.pluginUpgrader.preview(orgId, actor, installId, version);
406
+ /** The item when the org may see it (scope), else `catalog.item_not_found`. */
407
+ async visibleItem(orgId, itemId) {
408
+ const item = await this.db
409
+ .selectFrom("catalog_items")
410
+ .selectAll()
411
+ .where("id", "=", itemId)
412
+ .where("deleted_at", "is", null)
413
+ .executeTakeFirst();
414
+ if (!item)
415
+ throw itemNotFound();
416
+ // An org upload waiting for the super admin: absent for other orgs, not switchable by its
417
+ // owner (ruling P3-9)
418
+ if (item.awaiting_confirmation) {
419
+ if (item.owner_org_id !== orgId)
420
+ throw itemNotFound();
421
+ throw itemPendingError(item.name);
422
+ }
423
+ const listed = await this.db
424
+ .selectFrom("catalog_item_scope_orgs")
425
+ .select("item_id")
426
+ .where("item_id", "=", itemId)
427
+ .where("org_id", "=", orgId)
428
+ .executeTakeFirst();
429
+ if (!visibleTo({ scope: item.builtin ? "all" : item.scope }, listed !== undefined)) {
430
+ // Shown to other orgs: the org sees it and may request access, but cannot switch it on
431
+ if (requestable(item, false))
432
+ throw notOffered();
433
+ throw itemNotFound();
434
+ }
435
+ return item;
436
+ }
437
+ /** The org's live plugin install of the item, if any. */
438
+ liveInstall(orgId, itemId) {
439
+ return this.db
440
+ .selectFrom("plugin_installs")
441
+ .select("id")
442
+ .where("org_id", "=", orgId)
443
+ .where("item_id", "=", itemId)
444
+ .where("status", "in", ["installing", "installed", "upgrading"])
445
+ .executeTakeFirst();
573
446
  }
574
447
  /**
575
- * Upgrades an org install in place (spec §10, Decision 11): the preview's `diffHash` is checked
576
- * first (`plugin.upgrade_stale`); the item disabled -> `catalog.item_disabled`; needs_approval
577
- * without a grant -> a stage deployment request for the target version (202; after approval the
578
- * org admin runs the upgrade again); otherwise the upgrade runs (200, the install view).
448
+ * The org admin's switch of a plugin (`PUT catalog/:itemId/switch`). On: installs it (or just
449
+ * records the switch when it is installed already). Off: refused for builtin items
450
+ * (`plugin.scope_locked`; an `all` one may go off, layering spec §4); without `confirm` returns
451
+ * the uninstall preview and its hash, with the hash of the current preview uninstalls (a changed
452
+ * preview -> `plugin.switch_stale`). The switch row is written after the install / uninstall.
579
453
  */
580
- async upgrade(orgId, actor, installId, body, actorTokenId) {
454
+ async setSwitch(orgId, actor, itemId, body, actorTokenId, auditDetail) {
455
+ if (!UUID_RE.test(itemId))
456
+ throw itemNotFound();
581
457
  await this.assertCanInstall(orgId, actor);
582
- const opts = actorTokenId !== undefined ? { actorTokenId } : {};
583
- const { itemId, actions, diff } = await this.d.pluginUpgrader.check(orgId, actor, installId, body);
584
- const pending = await this.d.db.transaction().execute(async (t) => {
585
- await lockOrgForActions(t, orgId, actor, actions);
586
- const locked = await t
587
- .selectFrom("catalog_items")
588
- .select(["id", "name", "policy", "deleted_at"])
589
- .where("id", "=", itemId)
590
- .forShare()
591
- .executeTakeFirst();
592
- if (!locked || locked.deleted_at !== null)
458
+ const item = await this.visibleItem(orgId, itemId);
459
+ const opts = {
460
+ ...(actorTokenId !== undefined && { actorTokenId }),
461
+ ...(auditDetail !== undefined && { auditDetail }),
462
+ };
463
+ if (body.enabled) {
464
+ if (item.disabled)
465
+ throw pluginDisabled();
466
+ if ((await this.liveInstall(orgId, itemId)) !== undefined) {
467
+ await this.recordSwitch(orgId, actor, itemId, true);
468
+ }
469
+ else {
470
+ await this.install(orgId, actor, itemId, body.inputs ?? {}, actorTokenId, auditDetail);
471
+ }
472
+ return { kind: "done", item: await this.itemOf(orgId, actor, itemId) };
473
+ }
474
+ if (!switchable(item)) {
475
+ throw new ApiError("plugin.scope_locked", "This plugin is built in: it is on for every organization and cannot be switched off here");
476
+ }
477
+ const live = await this.liveInstall(orgId, itemId);
478
+ if (live === undefined) {
479
+ await this.recordSwitch(orgId, actor, itemId, false);
480
+ return { kind: "done", item: await this.itemOf(orgId, actor, itemId) };
481
+ }
482
+ // The platform default theme is locked on (themes spec §7): refused at the preview already;
483
+ // the uninstall's transaction checks again before it writes
484
+ await this.pluginInstaller.assertKeepsPlatformDefault(orgId, live.id);
485
+ const preview = await this.pluginInstaller.previewUninstall(orgId, live.id);
486
+ const confirm = uninstallPreviewHash(preview);
487
+ if (body.confirm === undefined)
488
+ return { kind: "preview", preview, confirm };
489
+ // The hash is re-checked and the switch row written inside the uninstall's transaction
490
+ await this.pluginInstaller.uninstall(orgId, actor, live.id, opts, { expectHash: body.confirm });
491
+ return { kind: "done", item: await this.itemOf(orgId, actor, itemId) };
492
+ }
493
+ /**
494
+ * `DELETE plugin-installs/:installId` of a catalog plugin follows the switch-off semantics: builtin
495
+ * items are refused (`plugin.scope_locked`) unless the install is not live (failed, or
496
+ * `installing`: the installer cleans up a stale one and refuses a fresh one). Removing a live
497
+ * install writes the switch row false in the uninstall's transaction (an `all` item then stays
498
+ * off in the org); removing a failed or stale one writes none.
499
+ */
500
+ async uninstall(orgId, actor, installId, actorTokenId,
501
+ /** Merged into the audit detail (a write made through the Platform tool). */
502
+ auditDetail) {
503
+ if (!UUID_RE.test(installId))
504
+ throw new ApiError("plugin.install_not_found", "Plugin install not found");
505
+ const row = await this.db
506
+ .selectFrom("plugin_installs as a")
507
+ .innerJoin("catalog_items as i", "i.id", "a.item_id")
508
+ .select(["i.scope", "i.builtin", "a.status"])
509
+ .where("a.id", "=", installId)
510
+ .where("a.org_id", "=", orgId)
511
+ .executeTakeFirst();
512
+ // A failed or stuck install is cleaned up whatever the scope (it is not on anyway)
513
+ const live = row?.status === "installed" || row?.status === "upgrading";
514
+ if (row !== undefined && live && !switchable(row)) {
515
+ throw new ApiError("plugin.scope_locked", "This plugin is built in: it is on for every organization and cannot be uninstalled here");
516
+ }
517
+ return this.pluginInstaller.uninstall(orgId, actor, installId, {
518
+ ...(actorTokenId !== undefined && { actorTokenId }),
519
+ ...(auditDetail !== undefined && { auditDetail }),
520
+ },
521
+ // only a live install was on: removing a failed or stale one writes no switch row, so an
522
+ // item its scope wants stays wanted and the sync installs it again
523
+ row !== undefined && live ? {} : undefined);
524
+ }
525
+ async itemOf(orgId, accountId, itemId) {
526
+ const [item] = await this.list(orgId, accountId, itemId);
527
+ if (!item)
528
+ throw itemNotFound();
529
+ return item;
530
+ }
531
+ /**
532
+ * Writes the org's switch row of the item under the org row lock. The item row is locked FOR
533
+ * SHARE first (exclusive with a scope change, an unshare, ruling P3-25, and an owner's delete or
534
+ * transfer); switching on re-checks that the org may still see it; the install path re-checks the same in `assertItemInstallable`.
535
+ */
536
+ async recordSwitch(orgId, actor, itemId, enabled) {
537
+ await this.orgLock.lock(orgId);
538
+ // Both directions lock the item row FOR SHARE: an owner's delete or transfer (FOR UPDATE)
539
+ // decides on who uses it, so a switch-off racing it must not change that answer meanwhile
540
+ const item = await this.db
541
+ .selectFrom("catalog_items")
542
+ .select(["scope", "builtin"])
543
+ .where("id", "=", itemId)
544
+ .where("deleted_at", "is", null)
545
+ .forShare()
546
+ .executeTakeFirst();
547
+ if (enabled) {
548
+ if (!item)
593
549
  throw itemNotFound();
594
- if (locked.policy === "disabled")
595
- throw itemDisabled();
596
- if (locked.policy !== "needs_approval")
597
- return undefined;
598
- const grant = await t
599
- .selectFrom("catalog_org_grants")
550
+ const listed = await this.db
551
+ .selectFrom("catalog_item_scope_orgs")
600
552
  .select("item_id")
601
553
  .where("item_id", "=", itemId)
602
554
  .where("org_id", "=", orgId)
603
555
  .executeTakeFirst();
604
- if (grant)
605
- return undefined;
606
- return this.d.requests.requestDeployment(t, orgId, actor, locked, body.version, opts);
607
- });
608
- if (pending !== undefined) {
609
- return { status: 202, request: await this.d.requests.view(this.d.db, pending) };
556
+ if (!visibleTo({ scope: item.builtin ? "all" : item.scope }, listed !== undefined)) {
557
+ throw itemNotFound();
558
+ }
610
559
  }
611
- return {
612
- status: 200,
613
- install: await this.d.pluginUpgrader.upgrade(orgId, actor, installId, body, opts, diff),
614
- };
560
+ await upsertOrgSwitch(this.db, orgId, itemId, enabled, actor);
615
561
  }
616
562
  /** The actor can install something in the org (forbidden otherwise), checked before item errors. */
617
563
  async assertCanInstall(orgId, actor) {
618
- await this.d.db.transaction().execute(async (t) => {
619
- const { role } = await lockOrgAndAuthorize(t, orgId, actor, "catalog.read");
620
- const canAny = ["org.extensions.manage", "connectors.manage", "skills.manage"].some((a) => can(role, a));
621
- if (!canAny)
622
- throw new ApiError("forbidden", "Insufficient organization role");
623
- });
564
+ const { role } = await this.orgLock.lockAndAuthorize(orgId, actor, "catalog.read");
565
+ const canAny = ["org.extensions.manage", "connectors.manage", "skills.manage"].some((a) => can(role, a));
566
+ if (!canAny)
567
+ throw new ApiError("forbidden", "Insufficient organization role");
624
568
  }
625
- }
569
+ };
570
+ __decorate([
571
+ Transactional()
572
+ ], OrgCatalogService.prototype, "recordSwitch", null);
573
+ __decorate([
574
+ Transactional()
575
+ ], OrgCatalogService.prototype, "assertCanInstall", null);
576
+ OrgCatalogService = __decorate([
577
+ Injectable(),
578
+ __param(0, Inject(KernelDb)),
579
+ __param(1, Inject(OrgLock)),
580
+ __param(2, Inject(StorageService)),
581
+ __param(3, Inject(ExtensionRegistry)),
582
+ __param(4, Inject(PluginInstaller)),
583
+ __param(5, Inject(KERNEL_LOGGER)),
584
+ __param(6, Inject(TransactionHost)),
585
+ __param(7, Inject(ExtensionAvailability))
586
+ ], OrgCatalogService);
587
+ export { OrgCatalogService };