@capybara-hq/kernel 0.1.0-rc.2 → 0.1.0-rc.21

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 (1039) hide show
  1. package/bootstrap.json +94 -5
  2. package/dist/admin/admin-agents.controller.d.ts +28 -0
  3. package/dist/admin/admin-agents.controller.js +79 -0
  4. package/dist/admin/admin-connectors.controller.d.ts +29 -0
  5. package/dist/admin/admin-connectors.controller.js +79 -0
  6. package/dist/admin/admin-items.schemas.d.ts +42 -0
  7. package/dist/admin/admin-items.schemas.js +48 -0
  8. package/dist/admin/admin.controller.d.ts +52 -80
  9. package/dist/admin/admin.controller.js +112 -81
  10. package/dist/admin/admin.module.d.ts +4 -1
  11. package/dist/admin/admin.module.js +50 -4
  12. package/dist/admin/admin.schemas.d.ts +69 -0
  13. package/dist/admin/admin.schemas.js +53 -0
  14. package/dist/admin/audit.controller.d.ts +14 -0
  15. package/dist/admin/audit.controller.js +42 -0
  16. package/dist/admin/audit.schemas.d.ts +8 -0
  17. package/dist/admin/audit.schemas.js +17 -0
  18. package/dist/admin/extensions.controller.d.ts +34 -3
  19. package/dist/admin/extensions.controller.js +66 -8
  20. package/dist/admin/extensions.schemas.d.ts +7 -0
  21. package/dist/admin/extensions.schemas.js +10 -0
  22. package/dist/admin/health.service.d.ts +104 -0
  23. package/dist/admin/health.service.js +246 -0
  24. package/dist/admin/limit-defaults.d.ts +20 -0
  25. package/dist/admin/limit-defaults.js +10 -0
  26. package/dist/admin/overview.controller.d.ts +31 -0
  27. package/dist/admin/overview.controller.js +78 -0
  28. package/dist/admin/overview.schemas.d.ts +8 -0
  29. package/dist/admin/overview.schemas.js +13 -0
  30. package/dist/admin/overview.service.d.ts +112 -0
  31. package/dist/admin/overview.service.js +223 -0
  32. package/dist/admin/platform-audit.service.d.ts +41 -0
  33. package/dist/admin/platform-audit.service.js +70 -0
  34. package/dist/admin/setup-lock.d.ts +1 -1
  35. package/dist/admin/setup-lock.js +1 -1
  36. package/dist/admin/setup.controller.d.ts +1 -1
  37. package/dist/admin/setup.controller.js +1 -1
  38. package/dist/admin/setup.service.d.ts +4 -4
  39. package/dist/admin/setup.service.js +8 -8
  40. package/dist/admin/usage.service.d.ts +149 -0
  41. package/dist/admin/usage.service.js +321 -0
  42. package/dist/agents/admin-agents.d.ts +92 -0
  43. package/dist/agents/admin-agents.js +170 -0
  44. package/dist/agents/agent-lookup.d.ts +24 -0
  45. package/dist/agents/agent-lookup.js +46 -2
  46. package/dist/agents/agent-profile.service.d.ts +31 -0
  47. package/dist/agents/agent-profile.service.js +122 -0
  48. package/dist/agents/agents.controller.d.ts +53 -168
  49. package/dist/agents/agents.controller.js +163 -34
  50. package/dist/agents/agents.module.d.ts +6 -2
  51. package/dist/agents/agents.module.js +41 -7
  52. package/dist/agents/agents.schemas.d.ts +392 -0
  53. package/dist/agents/agents.schemas.js +126 -0
  54. package/dist/agents/agents.service.d.ts +121 -36
  55. package/dist/agents/agents.service.js +411 -121
  56. package/dist/agents/definition.d.ts +142 -21
  57. package/dist/agents/definition.js +389 -43
  58. package/dist/agents/from-template.d.ts +106 -0
  59. package/dist/agents/from-template.js +680 -0
  60. package/dist/agents/from-template.service.d.ts +72 -0
  61. package/dist/agents/from-template.service.js +178 -0
  62. package/dist/agents/instruction-files.d.ts +60 -0
  63. package/dist/agents/instruction-files.js +111 -0
  64. package/dist/agents/models.controller.d.ts +44 -6
  65. package/dist/agents/models.controller.js +84 -8
  66. package/dist/agents/org-templates.d.ts +186 -0
  67. package/dist/agents/org-templates.js +876 -0
  68. package/dist/agents/pending-connector-requests.d.ts +79 -0
  69. package/dist/agents/pending-connector-requests.js +215 -0
  70. package/dist/agents/pending-connectors.controller.d.ts +39 -0
  71. package/dist/agents/pending-connectors.controller.js +91 -0
  72. package/dist/agents/pending-connectors.service.d.ts +62 -0
  73. package/dist/agents/pending-connectors.service.js +282 -0
  74. package/dist/agents/profile.d.ts +114 -0
  75. package/dist/agents/profile.js +55 -0
  76. package/dist/agents/readiness.controller.d.ts +26 -0
  77. package/dist/agents/readiness.controller.js +56 -0
  78. package/dist/agents/templates.controller.d.ts +77 -5
  79. package/dist/agents/templates.controller.js +153 -7
  80. package/dist/agents/templates.d.ts +127 -23
  81. package/dist/agents/templates.js +482 -44
  82. package/dist/agents/templates.schemas.d.ts +20 -0
  83. package/dist/agents/templates.schemas.js +45 -0
  84. package/dist/background/background.controller.d.ts +38 -0
  85. package/dist/background/background.controller.js +88 -0
  86. package/dist/background/background.module.d.ts +10 -0
  87. package/dist/background/background.module.js +39 -0
  88. package/dist/background/background.schemas.d.ts +10 -0
  89. package/dist/background/background.schemas.js +16 -0
  90. package/dist/background/finish.d.ts +44 -0
  91. package/dist/background/finish.js +95 -0
  92. package/dist/background/launch-lock.d.ts +15 -0
  93. package/dist/background/launch-lock.js +40 -0
  94. package/dist/background/launch.d.ts +42 -0
  95. package/dist/background/launch.js +77 -0
  96. package/dist/background/poll.job.d.ts +56 -0
  97. package/dist/background/poll.job.js +195 -0
  98. package/dist/background/render.d.ts +23 -0
  99. package/dist/background/render.js +48 -0
  100. package/dist/background/session.d.ts +48 -0
  101. package/dist/background/session.js +80 -0
  102. package/dist/background/status.d.ts +35 -0
  103. package/dist/background/status.js +57 -0
  104. package/dist/background/stop.d.ts +68 -0
  105. package/dist/background/stop.js +244 -0
  106. package/dist/background/store.d.ts +167 -0
  107. package/dist/background/store.js +361 -0
  108. package/dist/background/store.module.d.ts +6 -0
  109. package/dist/background/store.module.js +22 -0
  110. package/dist/background/tasks.service.d.ts +109 -0
  111. package/dist/background/tasks.service.js +271 -0
  112. package/dist/background/wake-rules.d.ts +66 -0
  113. package/dist/background/wake-rules.js +113 -0
  114. package/dist/background/wake.d.ts +30 -0
  115. package/dist/background/wake.js +63 -0
  116. package/dist/catalog/admin-catalog.controller.d.ts +136 -52
  117. package/dist/catalog/admin-catalog.controller.js +275 -65
  118. package/dist/catalog/admin-catalog.schemas.d.ts +82 -0
  119. package/dist/catalog/admin-catalog.schemas.js +99 -0
  120. package/dist/catalog/appearance.schemas.d.ts +10 -0
  121. package/dist/catalog/appearance.schemas.js +20 -0
  122. package/dist/catalog/appearance.service.d.ts +105 -0
  123. package/dist/catalog/appearance.service.js +306 -0
  124. package/dist/catalog/catalog-content.d.ts +122 -35
  125. package/dist/catalog/catalog-content.js +122 -14
  126. package/dist/catalog/catalog-files.d.ts +42 -0
  127. package/dist/catalog/catalog-files.js +89 -0
  128. package/dist/catalog/catalog-import.module.d.ts +7 -0
  129. package/dist/catalog/catalog-import.module.js +63 -0
  130. package/dist/catalog/catalog-items.d.ts +122 -7
  131. package/dist/catalog/catalog-items.js +301 -13
  132. package/dist/catalog/catalog-scope.service.d.ts +293 -0
  133. package/dist/catalog/catalog-scope.service.js +1236 -0
  134. package/dist/catalog/catalog.module.d.ts +7 -9
  135. package/dist/catalog/catalog.module.js +47 -31
  136. package/dist/catalog/catalog.service.d.ts +122 -31
  137. package/dist/catalog/catalog.service.js +177 -105
  138. package/dist/catalog/claude/agents.js +15 -10
  139. package/dist/catalog/claude/translate.js +3 -0
  140. package/dist/catalog/cli.d.ts +11 -1
  141. package/dist/catalog/cli.js +29 -1
  142. package/dist/catalog/component-promotion.d.ts +96 -0
  143. package/dist/catalog/component-promotion.js +395 -0
  144. package/dist/catalog/component-scope.controller.d.ts +102 -0
  145. package/dist/catalog/component-scope.controller.js +257 -0
  146. package/dist/catalog/component-scope.schemas.d.ts +118 -0
  147. package/dist/catalog/component-scope.schemas.js +97 -0
  148. package/dist/catalog/component-scope.service.d.ts +394 -0
  149. package/dist/catalog/component-scope.service.js +1133 -0
  150. package/dist/catalog/component-state.d.ts +207 -0
  151. package/dist/catalog/component-state.js +484 -0
  152. package/dist/catalog/git-source.d.ts +9 -1
  153. package/dist/catalog/git-source.js +29 -2
  154. package/dist/catalog/job-ids.d.ts +30 -0
  155. package/dist/catalog/job-ids.js +25 -0
  156. package/dist/catalog/marketplace-fetch.d.ts +1 -1
  157. package/dist/catalog/marketplace-icons.d.ts +64 -0
  158. package/dist/catalog/marketplace-icons.js +131 -0
  159. package/dist/catalog/marketplaces.controller.d.ts +50 -41
  160. package/dist/catalog/marketplaces.controller.js +130 -46
  161. package/dist/catalog/marketplaces.schemas.d.ts +48 -0
  162. package/dist/catalog/marketplaces.schemas.js +53 -0
  163. package/dist/catalog/marketplaces.service.d.ts +110 -17
  164. package/dist/catalog/marketplaces.service.js +337 -29
  165. package/dist/catalog/org-catalog.controller.d.ts +114 -62
  166. package/dist/catalog/org-catalog.controller.js +191 -98
  167. package/dist/catalog/org-catalog.schemas.d.ts +104 -0
  168. package/dist/catalog/org-catalog.schemas.js +107 -0
  169. package/dist/catalog/org-catalog.service.d.ts +72 -33
  170. package/dist/catalog/org-catalog.service.js +367 -158
  171. package/dist/catalog/org-extension-switch.d.ts +41 -0
  172. package/dist/catalog/org-extension-switch.js +115 -0
  173. package/dist/catalog/org-extension.controller.d.ts +133 -0
  174. package/dist/catalog/org-extension.controller.js +313 -0
  175. package/dist/catalog/org-extension.schemas.d.ts +15 -0
  176. package/dist/catalog/org-extension.schemas.js +22 -0
  177. package/dist/catalog/org-plugin-uploads.controller.d.ts +77 -0
  178. package/dist/catalog/org-plugin-uploads.controller.js +200 -0
  179. package/dist/catalog/org-plugin-uploads.d.ts +71 -0
  180. package/dist/catalog/org-plugin-uploads.js +122 -0
  181. package/dist/catalog/org-plugin-uploads.schemas.d.ts +20 -0
  182. package/dist/catalog/org-plugin-uploads.schemas.js +32 -0
  183. package/dist/catalog/owned-items.d.ts +188 -0
  184. package/dist/catalog/owned-items.js +808 -0
  185. package/dist/catalog/owned-plugin-cleanup.d.ts +56 -0
  186. package/dist/catalog/owned-plugin-cleanup.js +194 -0
  187. package/dist/catalog/ownership.d.ts +172 -0
  188. package/dist/catalog/ownership.js +326 -0
  189. package/dist/catalog/platform-components.d.ts +243 -0
  190. package/dist/catalog/platform-components.js +872 -0
  191. package/dist/catalog/platform-migration.d.ts +115 -0
  192. package/dist/catalog/platform-migration.js +583 -0
  193. package/dist/catalog/plugin-import.d.ts +254 -47
  194. package/dist/catalog/plugin-import.js +810 -112
  195. package/dist/catalog/plugin-install.d.ts +205 -42
  196. package/dist/catalog/plugin-install.js +828 -126
  197. package/dist/catalog/plugin-package.d.ts +43 -4
  198. package/dist/catalog/plugin-package.js +194 -7
  199. package/dist/catalog/plugin-upgrade.d.ts +308 -225
  200. package/dist/catalog/plugin-upgrade.js +1325 -1131
  201. package/dist/catalog/request-rules.d.ts +65 -0
  202. package/dist/catalog/request-rules.js +217 -0
  203. package/dist/catalog/requests.service.d.ts +194 -118
  204. package/dist/catalog/requests.service.js +530 -343
  205. package/dist/catalog/reserved-names.d.ts +8 -0
  206. package/dist/catalog/reserved-names.js +42 -0
  207. package/dist/catalog/scope-orgs.d.ts +21 -0
  208. package/dist/catalog/scope-orgs.js +67 -0
  209. package/dist/catalog/scope-state.d.ts +35 -0
  210. package/dist/catalog/scope-state.js +87 -0
  211. package/dist/catalog/scope-sync-workers.d.ts +7 -0
  212. package/dist/catalog/scope-sync-workers.js +29 -0
  213. package/dist/catalog/scope-sync.d.ts +176 -0
  214. package/dist/catalog/scope-sync.js +576 -0
  215. package/dist/catalog/scope.d.ts +42 -0
  216. package/dist/catalog/scope.js +42 -0
  217. package/dist/catalog/unshare.d.ts +22 -0
  218. package/dist/catalog/unshare.js +119 -0
  219. package/dist/channels/actions.js +10 -3
  220. package/dist/channels/cards.d.ts +36 -10
  221. package/dist/channels/cards.js +100 -25
  222. package/dist/channels/channels.module.js +13 -2
  223. package/dist/channels/channels.schemas.d.ts +41 -0
  224. package/dist/channels/channels.schemas.js +40 -0
  225. package/dist/channels/connections.controller.d.ts +46 -37
  226. package/dist/channels/connections.controller.js +76 -34
  227. package/dist/channels/connections.service.d.ts +102 -10
  228. package/dist/channels/connections.service.js +271 -24
  229. package/dist/channels/inbound.d.ts +11 -1
  230. package/dist/channels/inbound.js +87 -7
  231. package/dist/channels/outbound.d.ts +14 -1
  232. package/dist/channels/outbound.js +64 -15
  233. package/dist/channels/phrases.d.ts +33 -2
  234. package/dist/channels/phrases.js +29 -1
  235. package/dist/channels/supervisor.d.ts +2 -0
  236. package/dist/channels/supervisor.js +4 -0
  237. package/dist/channels/threads.d.ts +5 -0
  238. package/dist/channels/threads.js +8 -0
  239. package/dist/channels/webhook.d.ts +21 -1
  240. package/dist/channels/webhook.js +39 -4
  241. package/dist/client/client-access.service.d.ts +102 -0
  242. package/dist/client/client-access.service.js +303 -0
  243. package/dist/client/client-builds.service.d.ts +109 -0
  244. package/dist/client/client-builds.service.js +229 -0
  245. package/dist/client/client-delivery.controller.d.ts +25 -0
  246. package/dist/client/client-delivery.controller.js +66 -0
  247. package/dist/client/client-files.d.ts +48 -0
  248. package/dist/client/client-files.js +136 -0
  249. package/dist/client/client-reports.cron.d.ts +13 -0
  250. package/dist/client/client-reports.cron.js +42 -0
  251. package/dist/client/client-reports.service.d.ts +30 -0
  252. package/dist/client/client-reports.service.js +102 -0
  253. package/dist/client/client-sign-in.service.d.ts +21 -0
  254. package/dist/client/client-sign-in.service.js +49 -0
  255. package/dist/client/client.controller.d.ts +49 -0
  256. package/dist/client/client.controller.js +129 -0
  257. package/dist/client/client.module.d.ts +8 -0
  258. package/dist/client/client.module.js +28 -0
  259. package/dist/client/client.schemas.d.ts +61 -0
  260. package/dist/client/client.schemas.js +27 -0
  261. package/dist/config/docs.js +5 -1
  262. package/dist/config/schema.d.ts +35 -2
  263. package/dist/config/schema.js +216 -21
  264. package/dist/conversations/access.d.ts +6 -4
  265. package/dist/conversations/access.js +29 -5
  266. package/dist/conversations/agent-tree.d.ts +46 -0
  267. package/dist/conversations/agent-tree.js +92 -0
  268. package/dist/conversations/artifacts.d.ts +1 -1
  269. package/dist/conversations/artifacts.js +1 -1
  270. package/dist/conversations/attachments.service.d.ts +30 -0
  271. package/dist/conversations/attachments.service.js +130 -5
  272. package/dist/conversations/conversations.controller.d.ts +79 -44
  273. package/dist/conversations/conversations.controller.js +133 -82
  274. package/dist/conversations/conversations.module.d.ts +1 -1
  275. package/dist/conversations/conversations.module.js +10 -7
  276. package/dist/conversations/conversations.schemas.d.ts +52 -0
  277. package/dist/conversations/conversations.schemas.js +79 -0
  278. package/dist/conversations/conversations.service.d.ts +161 -13
  279. package/dist/conversations/conversations.service.js +329 -57
  280. package/dist/conversations/device-status.d.ts +24 -0
  281. package/dist/conversations/device-status.js +71 -0
  282. package/dist/conversations/event-log.d.ts +45 -9
  283. package/dist/conversations/event-log.js +113 -6
  284. package/dist/conversations/events.d.ts +255 -9
  285. package/dist/conversations/events.js +250 -34
  286. package/dist/conversations/message-context.d.ts +79 -0
  287. package/dist/conversations/message-context.js +145 -0
  288. package/dist/conversations/queue.d.ts +5 -2
  289. package/dist/conversations/queue.js +24 -4
  290. package/dist/conversations/queue.service.d.ts +2 -2
  291. package/dist/conversations/queue.service.js +21 -3
  292. package/dist/conversations/titles.d.ts +12 -3
  293. package/dist/conversations/titles.js +40 -16
  294. package/dist/conversations/tree.d.ts +17 -0
  295. package/dist/conversations/tree.js +42 -0
  296. package/dist/ctx/create-ctx.d.ts +48 -5
  297. package/dist/ctx/create-ctx.js +174 -34
  298. package/dist/db/kernel-schema.d.ts +668 -27
  299. package/dist/db/pool.d.ts +5 -0
  300. package/dist/db/pool.js +3 -0
  301. package/dist/devices/access.d.ts +66 -0
  302. package/dist/devices/access.js +113 -0
  303. package/dist/devices/conversation-devices.d.ts +75 -0
  304. package/dist/devices/conversation-devices.js +230 -0
  305. package/dist/devices/devices.controller.d.ts +36 -0
  306. package/dist/devices/devices.controller.js +124 -0
  307. package/dist/devices/devices.module.d.ts +8 -0
  308. package/dist/devices/devices.module.js +34 -0
  309. package/dist/devices/devices.schemas.d.ts +3 -0
  310. package/dist/devices/devices.schemas.js +14 -0
  311. package/dist/devices/devices.service.d.ts +251 -0
  312. package/dist/devices/devices.service.js +791 -0
  313. package/dist/devices/dto.d.ts +25 -0
  314. package/dist/devices/dto.js +12 -0
  315. package/dist/devices/label.d.ts +11 -0
  316. package/dist/devices/label.js +25 -0
  317. package/dist/devices/legacy-cleanup.job.d.ts +34 -0
  318. package/dist/devices/legacy-cleanup.job.js +141 -0
  319. package/dist/errors.d.ts +215 -3
  320. package/dist/errors.js +215 -3
  321. package/dist/evals/evals.module.js +11 -2
  322. package/dist/evals/evals.schemas.d.ts +110 -0
  323. package/dist/evals/evals.schemas.js +107 -0
  324. package/dist/evals/reconstruct.d.ts +18 -9
  325. package/dist/evals/reconstruct.js +36 -10
  326. package/dist/evals/recorded-tools.d.ts +37 -1
  327. package/dist/evals/recorded-tools.js +120 -10
  328. package/dist/evals/run-replay.d.ts +20 -3
  329. package/dist/evals/run-replay.js +78 -14
  330. package/dist/evals/runs.controller.d.ts +2 -57
  331. package/dist/evals/runs.controller.js +1 -42
  332. package/dist/evals/runs.service.d.ts +8 -7
  333. package/dist/evals/runs.service.js +45 -30
  334. package/dist/evals/sets.controller.d.ts +2 -28
  335. package/dist/evals/sets.controller.js +1 -31
  336. package/dist/evals/sets.service.d.ts +7 -7
  337. package/dist/evals/sets.service.js +23 -17
  338. package/dist/evals/snapshot.d.ts +3 -2
  339. package/dist/evals/snapshot.js +17 -4
  340. package/dist/evals/step-replay.d.ts +4 -6
  341. package/dist/evals/step-replay.js +16 -9
  342. package/dist/evals/trajectory.d.ts +5 -3
  343. package/dist/evals/trajectory.js +4 -1
  344. package/dist/evals/trajectory.service.d.ts +8 -3
  345. package/dist/evals/trajectory.service.js +26 -14
  346. package/dist/evals/worker.d.ts +5 -5
  347. package/dist/evals/worker.js +9 -3
  348. package/dist/extensions/admin-ops.d.ts +81 -14
  349. package/dist/extensions/admin-ops.js +181 -47
  350. package/dist/extensions/admin-view.d.ts +57 -10
  351. package/dist/extensions/admin-view.js +249 -27
  352. package/dist/extensions/approvals.d.ts +12 -2
  353. package/dist/extensions/blobs.d.ts +14 -1
  354. package/dist/extensions/blobs.js +49 -5
  355. package/dist/extensions/bootstrap.d.ts +85 -10
  356. package/dist/extensions/bootstrap.js +215 -36
  357. package/dist/extensions/cli.d.ts +12 -0
  358. package/dist/extensions/cli.js +11 -2
  359. package/dist/extensions/config-hash.d.ts +10 -0
  360. package/dist/extensions/config-hash.js +38 -0
  361. package/dist/extensions/config-issues.d.ts +13 -1
  362. package/dist/extensions/config-issues.js +22 -5
  363. package/dist/extensions/config-json-schema.d.ts +43 -7
  364. package/dist/extensions/config-json-schema.js +124 -58
  365. package/dist/extensions/deployment-config-store.d.ts +6 -0
  366. package/dist/extensions/deployment-config.d.ts +94 -9
  367. package/dist/extensions/deployment-config.js +255 -34
  368. package/dist/extensions/display-name.d.ts +22 -0
  369. package/dist/extensions/display-name.js +77 -0
  370. package/dist/extensions/effective-config.d.ts +133 -0
  371. package/dist/extensions/effective-config.js +379 -0
  372. package/dist/extensions/extensions.module.js +31 -12
  373. package/dist/extensions/guide-places.d.ts +68 -0
  374. package/dist/extensions/guide-places.js +152 -0
  375. package/dist/extensions/hooks.d.ts +37 -4
  376. package/dist/extensions/hooks.js +82 -16
  377. package/dist/extensions/host.d.ts +105 -12
  378. package/dist/extensions/host.js +372 -87
  379. package/dist/extensions/installs.d.ts +30 -9
  380. package/dist/extensions/installs.js +57 -16
  381. package/dist/extensions/instance.d.ts +17 -2
  382. package/dist/extensions/instance.js +21 -0
  383. package/dist/extensions/ledger.d.ts +1 -1
  384. package/dist/extensions/locks.d.ts +12 -0
  385. package/dist/extensions/locks.js +26 -0
  386. package/dist/extensions/org-config.d.ts +97 -7
  387. package/dist/extensions/org-config.js +215 -45
  388. package/dist/extensions/org-levels.d.ts +37 -0
  389. package/dist/extensions/org-levels.js +71 -0
  390. package/dist/extensions/org-overrides.d.ts +151 -0
  391. package/dist/extensions/org-overrides.js +524 -0
  392. package/dist/extensions/package.d.ts +18 -4
  393. package/dist/extensions/package.js +56 -3
  394. package/dist/extensions/permission-set.d.ts +35 -5
  395. package/dist/extensions/permission-set.js +36 -5
  396. package/dist/extensions/permission-view.d.ts +106 -13
  397. package/dist/extensions/permission-view.js +33 -15
  398. package/dist/extensions/plugin-guides.d.ts +282 -0
  399. package/dist/extensions/plugin-guides.js +554 -0
  400. package/dist/extensions/plugin-icons.d.ts +54 -0
  401. package/dist/extensions/plugin-icons.js +125 -0
  402. package/dist/extensions/plugin-items.d.ts +21 -0
  403. package/dist/extensions/plugin-items.js +42 -0
  404. package/dist/extensions/point-defaults.controller.d.ts +28 -0
  405. package/dist/extensions/point-defaults.controller.js +69 -0
  406. package/dist/extensions/point-defaults.d.ts +73 -0
  407. package/dist/extensions/point-defaults.js +236 -0
  408. package/dist/extensions/point-defaults.schemas.d.ts +9 -0
  409. package/dist/extensions/point-defaults.schemas.js +14 -0
  410. package/dist/extensions/registry.d.ts +1 -1
  411. package/dist/extensions/registry.js +2 -0
  412. package/dist/extensions/resolve.d.ts +51 -1
  413. package/dist/extensions/resolve.js +85 -3
  414. package/dist/extensions/single-provider.d.ts +92 -0
  415. package/dist/extensions/single-provider.js +180 -0
  416. package/dist/extensions/sources.d.ts +13 -2
  417. package/dist/extensions/sources.js +2 -0
  418. package/dist/extensions/state.module.d.ts +9 -0
  419. package/dist/extensions/state.module.js +46 -0
  420. package/dist/extensions/unavailable.d.ts +50 -0
  421. package/dist/extensions/unavailable.js +115 -0
  422. package/dist/files/previewers.controller.js +2 -3
  423. package/dist/files/previewers.d.ts +10 -3
  424. package/dist/files/previewers.js +40 -11
  425. package/dist/files/previewers.schemas.d.ts +10 -0
  426. package/dist/files/previewers.schemas.js +9 -0
  427. package/dist/http/api.module.js +76 -4
  428. package/dist/http/app.d.ts +11 -2
  429. package/dist/http/app.js +31 -5
  430. package/dist/http/gateway-routes.d.ts +7 -3
  431. package/dist/http/gateway-routes.js +6 -3
  432. package/dist/http/nest-logger.d.ts +6 -5
  433. package/dist/http/nest-logger.js +24 -10
  434. package/dist/http/plugin-dispatch.d.ts +4 -1
  435. package/dist/http/plugin-dispatch.js +14 -2
  436. package/dist/identity/accounts.d.ts +77 -31
  437. package/dist/identity/accounts.js +133 -52
  438. package/dist/identity/audit.d.ts +2 -1
  439. package/dist/identity/auth.controller.js +9 -5
  440. package/dist/identity/auth.guard.d.ts +13 -5
  441. package/dist/identity/auth.guard.js +35 -9
  442. package/dist/identity/cookies.d.ts +26 -5
  443. package/dist/identity/cookies.js +58 -6
  444. package/dist/identity/identity.module.d.ts +1 -1
  445. package/dist/identity/identity.module.js +7 -4
  446. package/dist/identity/initial-passwords.controller.d.ts +22 -0
  447. package/dist/identity/initial-passwords.controller.js +49 -0
  448. package/dist/identity/initial-passwords.d.ts +61 -0
  449. package/dist/identity/initial-passwords.job.d.ts +16 -0
  450. package/dist/identity/initial-passwords.job.js +46 -0
  451. package/dist/identity/initial-passwords.js +159 -0
  452. package/dist/identity/me.controller.d.ts +17 -1
  453. package/dist/identity/me.controller.js +45 -4
  454. package/dist/identity/me.schemas.d.ts +24 -0
  455. package/dist/identity/me.schemas.js +25 -0
  456. package/dist/identity/principal.d.ts +11 -3
  457. package/dist/identity/principal.js +11 -3
  458. package/dist/identity/sessions.d.ts +12 -0
  459. package/dist/identity/sessions.js +45 -0
  460. package/dist/identity/settings.d.ts +99 -12
  461. package/dist/identity/settings.js +234 -25
  462. package/dist/identity/{enterprise-admin.d.ts → super-admin.d.ts} +5 -5
  463. package/dist/identity/{enterprise-admin.js → super-admin.js} +24 -24
  464. package/dist/identity/write-actor.d.ts +11 -0
  465. package/dist/identity/write-actor.js +7 -0
  466. package/dist/inbox/inbox.module.d.ts +4 -1
  467. package/dist/inbox/inbox.module.js +7 -3
  468. package/dist/inbox/inbox.schemas.d.ts +8 -0
  469. package/dist/inbox/inbox.schemas.js +11 -0
  470. package/dist/inbox/inbox.service.d.ts +64 -4
  471. package/dist/inbox/inbox.service.js +74 -4
  472. package/dist/inbox/org-notices.d.ts +63 -0
  473. package/dist/inbox/org-notices.js +91 -0
  474. package/dist/inbox/platform-inbox.controller.d.ts +23 -0
  475. package/dist/inbox/platform-inbox.controller.js +58 -0
  476. package/dist/inbox/platform-inbox.service.d.ts +157 -0
  477. package/dist/inbox/platform-inbox.service.js +281 -0
  478. package/dist/inbox/platform-notices.d.ts +19 -0
  479. package/dist/inbox/platform-notices.js +9 -0
  480. package/dist/index.d.ts +6 -2
  481. package/dist/index.js +7 -1
  482. package/dist/infra/cli/kernel-cli.module.js +9 -1
  483. package/dist/infra/config/kernel-config.service.js +32 -1
  484. package/dist/infra/database/database.module.js +1 -0
  485. package/dist/infra/database/xact-lock.d.ts +1 -1
  486. package/dist/infra/database/xact-lock.js +1 -1
  487. package/dist/infra/events/kernel-events.d.ts +31 -3
  488. package/dist/infra/lifecycle/process-guards.js +4 -0
  489. package/dist/infra/lock/lock.service.d.ts +8 -0
  490. package/dist/infra/lock/lock.service.js +27 -0
  491. package/dist/infra/logging/logging.module.d.ts +4 -2
  492. package/dist/infra/logging/logging.module.js +24 -6
  493. package/dist/infra/presence/presence.module.d.ts +6 -0
  494. package/dist/infra/presence/presence.module.js +22 -0
  495. package/dist/infra/presence/replica-presence.d.ts +87 -0
  496. package/dist/infra/presence/replica-presence.js +189 -0
  497. package/dist/infra/queue/add-job-once.d.ts +14 -0
  498. package/dist/infra/queue/add-job-once.js +16 -0
  499. package/dist/infra/queue/redis-connection.d.ts +6 -0
  500. package/dist/infra/queue/redis-connection.js +7 -0
  501. package/dist/infra/redis/redis.module.js +6 -2
  502. package/dist/infra/throttler/named-throttlers.d.ts +12 -0
  503. package/dist/infra/throttler/named-throttlers.js +67 -0
  504. package/dist/infra/throttler/throttler.guard.js +1 -1
  505. package/dist/infra/tokens.d.ts +6 -1
  506. package/dist/infra/tokens.js +6 -1
  507. package/dist/kernel.module.js +15 -0
  508. package/dist/lifecycle/kernel-lifecycle.d.ts +9 -3
  509. package/dist/lifecycle/kernel-lifecycle.js +51 -11
  510. package/dist/local-devices/device-auth.controller.d.ts +42 -0
  511. package/dist/local-devices/device-auth.controller.js +116 -0
  512. package/dist/local-devices/device-auth.d.ts +119 -0
  513. package/dist/local-devices/device-auth.js +401 -0
  514. package/dist/local-devices/device-auth.module.d.ts +7 -0
  515. package/dist/local-devices/device-auth.module.js +25 -0
  516. package/dist/local-devices/device-routes.d.ts +36 -0
  517. package/dist/local-devices/device-routes.js +90 -0
  518. package/dist/local-devices/dto.d.ts +66 -0
  519. package/dist/local-devices/dto.js +44 -0
  520. package/dist/local-devices/keys.d.ts +25 -0
  521. package/dist/local-devices/keys.js +25 -0
  522. package/dist/local-devices/local-device-gateway.d.ts +134 -0
  523. package/dist/local-devices/local-device-gateway.js +542 -0
  524. package/dist/local-devices/local-device-provider.d.ts +89 -0
  525. package/dist/local-devices/local-device-provider.js +151 -0
  526. package/dist/local-devices/local-devices.module.d.ts +16 -0
  527. package/dist/local-devices/local-devices.module.js +44 -0
  528. package/dist/local-devices/machines.d.ts +118 -0
  529. package/dist/local-devices/machines.js +366 -0
  530. package/dist/local-devices/relay.d.ts +100 -0
  531. package/dist/local-devices/relay.js +373 -0
  532. package/dist/local-devices/targets.d.ts +28 -0
  533. package/dist/local-devices/targets.js +73 -0
  534. package/dist/log.d.ts +13 -1
  535. package/dist/log.js +93 -17
  536. package/dist/models/embeddings.d.ts +82 -0
  537. package/dist/models/embeddings.js +326 -0
  538. package/dist/models/enablement.controller.d.ts +40 -0
  539. package/dist/models/enablement.controller.js +74 -0
  540. package/dist/models/enablement.d.ts +101 -0
  541. package/dist/models/enablement.js +264 -0
  542. package/dist/models/models.module.d.ts +5 -1
  543. package/dist/models/models.module.js +16 -4
  544. package/dist/models/org-models.schemas.d.ts +8 -0
  545. package/dist/models/org-models.schemas.js +22 -0
  546. package/dist/models/prices.d.ts +8 -6
  547. package/dist/models/prices.js +11 -9
  548. package/dist/models/purposes.controller.d.ts +6 -4
  549. package/dist/models/purposes.controller.js +13 -7
  550. package/dist/models/purposes.d.ts +72 -14
  551. package/dist/models/purposes.js +115 -34
  552. package/dist/orgs/directory-sync.d.ts +14 -5
  553. package/dist/orgs/directory-sync.js +41 -17
  554. package/dist/orgs/offboarding.d.ts +12 -8
  555. package/dist/orgs/offboarding.js +54 -33
  556. package/dist/orgs/org-lock.d.ts +5 -0
  557. package/dist/orgs/org-lock.js +13 -0
  558. package/dist/orgs/org.guard.d.ts +10 -0
  559. package/dist/orgs/org.guard.js +43 -32
  560. package/dist/orgs/orgs.controller.d.ts +2 -5
  561. package/dist/orgs/orgs.controller.js +3 -6
  562. package/dist/orgs/orgs.module.js +3 -0
  563. package/dist/orgs/orgs.schemas.d.ts +8 -0
  564. package/dist/orgs/orgs.schemas.js +16 -0
  565. package/dist/orgs/orgs.service.d.ts +23 -8
  566. package/dist/orgs/orgs.service.js +38 -16
  567. package/dist/orgs/roles.d.ts +1 -1
  568. package/dist/orgs/roles.js +5 -1
  569. package/dist/orgs/settings.controller.d.ts +1 -1
  570. package/dist/orgs/settings.service.d.ts +66 -6
  571. package/dist/orgs/settings.service.js +89 -10
  572. package/dist/overrides.d.ts +16 -1
  573. package/dist/overrides.js +10 -0
  574. package/dist/platform/actor.d.ts +48 -0
  575. package/dist/platform/actor.js +100 -0
  576. package/dist/platform/agent-docs.d.ts +18 -0
  577. package/dist/platform/agent-docs.js +59 -0
  578. package/dist/platform/availability.d.ts +14 -0
  579. package/dist/platform/availability.js +43 -0
  580. package/dist/platform/errors.d.ts +28 -0
  581. package/dist/platform/errors.js +65 -0
  582. package/dist/platform/exclusions.d.ts +11 -0
  583. package/dist/platform/exclusions.js +774 -0
  584. package/dist/platform/method.d.ts +6 -0
  585. package/dist/platform/method.js +15 -0
  586. package/dist/platform/operation.d.ts +169 -0
  587. package/dist/platform/operation.js +102 -0
  588. package/dist/platform/ops/accounts.ops.d.ts +32 -0
  589. package/dist/platform/ops/accounts.ops.js +291 -0
  590. package/dist/platform/ops/admin-items.ops.d.ts +37 -0
  591. package/dist/platform/ops/admin-items.ops.js +278 -0
  592. package/dist/platform/ops/admin.ops.d.ts +38 -0
  593. package/dist/platform/ops/admin.ops.js +497 -0
  594. package/dist/platform/ops/agent-skills.ops.d.ts +50 -0
  595. package/dist/platform/ops/agent-skills.ops.js +509 -0
  596. package/dist/platform/ops/agent-templates.ops.d.ts +17 -0
  597. package/dist/platform/ops/agent-templates.ops.js +272 -0
  598. package/dist/platform/ops/agents.ops.d.ts +37 -0
  599. package/dist/platform/ops/agents.ops.js +730 -0
  600. package/dist/platform/ops/approvals.ops.d.ts +30 -0
  601. package/dist/platform/ops/approvals.ops.js +116 -0
  602. package/dist/platform/ops/background.ops.d.ts +14 -0
  603. package/dist/platform/ops/background.ops.js +134 -0
  604. package/dist/platform/ops/catalog-admin.ops.d.ts +92 -0
  605. package/dist/platform/ops/catalog-admin.ops.js +682 -0
  606. package/dist/platform/ops/channels.ops.d.ts +16 -0
  607. package/dist/platform/ops/channels.ops.js +195 -0
  608. package/dist/platform/ops/components.ops.d.ts +46 -0
  609. package/dist/platform/ops/components.ops.js +854 -0
  610. package/dist/platform/ops/connectors.ops.d.ts +17 -0
  611. package/dist/platform/ops/connectors.ops.js +190 -0
  612. package/dist/platform/ops/conversations.ops.d.ts +30 -0
  613. package/dist/platform/ops/conversations.ops.js +470 -0
  614. package/dist/platform/ops/devices.ops.d.ts +26 -0
  615. package/dist/platform/ops/devices.ops.js +311 -0
  616. package/dist/platform/ops/errors.d.ts +16 -0
  617. package/dist/platform/ops/errors.js +30 -0
  618. package/dist/platform/ops/evals.ops.d.ts +28 -0
  619. package/dist/platform/ops/evals.ops.js +783 -0
  620. package/dist/platform/ops/extensions-admin.ops.d.ts +25 -0
  621. package/dist/platform/ops/extensions-admin.ops.js +372 -0
  622. package/dist/platform/ops/extensions.ops.d.ts +25 -0
  623. package/dist/platform/ops/extensions.ops.js +347 -0
  624. package/dist/platform/ops/inbox.ops.d.ts +25 -0
  625. package/dist/platform/ops/inbox.ops.js +381 -0
  626. package/dist/platform/ops/marketplaces.ops.d.ts +22 -0
  627. package/dist/platform/ops/marketplaces.ops.js +466 -0
  628. package/dist/platform/ops/models.ops.d.ts +25 -0
  629. package/dist/platform/ops/models.ops.js +232 -0
  630. package/dist/platform/ops/org-plugins.ops.d.ts +35 -0
  631. package/dist/platform/ops/org-plugins.ops.js +388 -0
  632. package/dist/platform/ops/org-settings.ops.d.ts +18 -0
  633. package/dist/platform/ops/org-settings.ops.js +127 -0
  634. package/dist/platform/ops/orgs.ops.d.ts +28 -0
  635. package/dist/platform/ops/orgs.ops.js +298 -0
  636. package/dist/platform/ops/other-orgs.d.ts +20 -0
  637. package/dist/platform/ops/other-orgs.js +72 -0
  638. package/dist/platform/ops/paging.d.ts +14 -0
  639. package/dist/platform/ops/paging.js +20 -0
  640. package/dist/platform/ops/platform.ops.d.ts +30 -0
  641. package/dist/platform/ops/platform.ops.js +231 -0
  642. package/dist/platform/ops/plugins.ops.d.ts +35 -0
  643. package/dist/platform/ops/plugins.ops.js +476 -0
  644. package/dist/platform/ops/previewers.ops.d.ts +14 -0
  645. package/dist/platform/ops/previewers.ops.js +109 -0
  646. package/dist/platform/ops/requests.ops.d.ts +14 -0
  647. package/dist/platform/ops/requests.ops.js +191 -0
  648. package/dist/platform/ops/role.d.ts +4 -0
  649. package/dist/platform/ops/role.js +10 -0
  650. package/dist/platform/ops/setup.ops.d.ts +24 -0
  651. package/dist/platform/ops/setup.ops.js +212 -0
  652. package/dist/platform/ops/skills.ops.d.ts +17 -0
  653. package/dist/platform/ops/skills.ops.js +160 -0
  654. package/dist/platform/ops/summary.d.ts +10 -0
  655. package/dist/platform/ops/summary.js +18 -0
  656. package/dist/platform/ops/themes.ops.d.ts +14 -0
  657. package/dist/platform/ops/themes.ops.js +47 -0
  658. package/dist/platform/ops/ui.ops.d.ts +8 -0
  659. package/dist/platform/ops/ui.ops.js +41 -0
  660. package/dist/platform/ops/unavailable.d.ts +23 -0
  661. package/dist/platform/ops/unavailable.js +118 -0
  662. package/dist/platform/parity.d.ts +33 -0
  663. package/dist/platform/parity.js +272 -0
  664. package/dist/platform/platform-ops.module.d.ts +43 -0
  665. package/dist/platform/platform-ops.module.js +142 -0
  666. package/dist/platform/platform.module.d.ts +8 -0
  667. package/dist/platform/platform.module.js +25 -0
  668. package/dist/platform/registry.d.ts +30 -0
  669. package/dist/platform/registry.js +111 -0
  670. package/dist/platform/route-schemas.d.ts +18 -0
  671. package/dist/platform/route-schemas.js +85 -0
  672. package/dist/roles/gateway-role.d.ts +18 -3
  673. package/dist/roles/gateway-role.js +33 -5
  674. package/dist/roles/gateway.module.d.ts +2 -1
  675. package/dist/roles/gateway.module.js +6 -3
  676. package/dist/roles/worker-role.d.ts +6 -4
  677. package/dist/roles/worker-role.js +14 -7
  678. package/dist/roles/worker.module.d.ts +1 -1
  679. package/dist/roles/worker.module.js +21 -1
  680. package/dist/runtime/context/build.d.ts +21 -13
  681. package/dist/runtime/context/build.js +106 -29
  682. package/dist/runtime/context/claude-tools.d.ts +4 -1
  683. package/dist/runtime/context/claude-tools.js +13 -12
  684. package/dist/runtime/context/compaction.js +24 -1
  685. package/dist/runtime/context/device-paths.d.ts +40 -0
  686. package/dist/runtime/context/device-paths.js +48 -0
  687. package/dist/runtime/context/legacy-text.d.ts +22 -0
  688. package/dist/runtime/context/legacy-text.js +37 -0
  689. package/dist/runtime/context/reminders.d.ts +2 -0
  690. package/dist/runtime/context/reminders.js +2 -0
  691. package/dist/runtime/context/run-context.d.ts +65 -0
  692. package/dist/runtime/context/run-context.js +215 -0
  693. package/dist/runtime/context/skills.d.ts +29 -11
  694. package/dist/runtime/context/skills.js +46 -32
  695. package/dist/runtime/context/tool-changes.d.ts +27 -0
  696. package/dist/runtime/context/tool-changes.js +60 -0
  697. package/dist/runtime/hook-calls.d.ts +8 -1
  698. package/dist/runtime/hook-calls.js +40 -7
  699. package/dist/runtime/langgraph-loop.d.ts +3 -1
  700. package/dist/runtime/langgraph-loop.js +36 -17
  701. package/dist/runtime/loop.d.ts +35 -6
  702. package/dist/runtime/maintenance.d.ts +9 -4
  703. package/dist/runtime/maintenance.js +35 -8
  704. package/dist/runtime/model-call.d.ts +54 -11
  705. package/dist/runtime/model-call.js +105 -28
  706. package/dist/runtime/providers.d.ts +149 -29
  707. package/dist/runtime/providers.js +332 -63
  708. package/dist/runtime/run-context.service.d.ts +65 -0
  709. package/dist/runtime/run-context.service.js +236 -0
  710. package/dist/runtime/run-control.d.ts +11 -1
  711. package/dist/runtime/run-control.js +12 -0
  712. package/dist/runtime/run-drafts.d.ts +85 -0
  713. package/dist/runtime/run-drafts.js +230 -0
  714. package/dist/runtime/run-finish.d.ts +1 -1
  715. package/dist/runtime/run-jobs.d.ts +3 -5
  716. package/dist/runtime/run-jobs.js +7 -9
  717. package/dist/runtime/run-queue.d.ts +62 -5
  718. package/dist/runtime/run-queue.js +313 -40
  719. package/dist/runtime/run-worker.d.ts +19 -8
  720. package/dist/runtime/run-worker.js +105 -44
  721. package/dist/runtime/runtime.module.js +13 -3
  722. package/dist/runtime/step-log.d.ts +15 -4
  723. package/dist/runtime/step-log.js +24 -7
  724. package/dist/runtime/stream.controller.d.ts +23 -1
  725. package/dist/runtime/stream.controller.js +60 -3
  726. package/dist/runtime/stream.d.ts +4 -1
  727. package/dist/runtime/stream.js +27 -3
  728. package/dist/runtime/subagents/child.d.ts +55 -7
  729. package/dist/runtime/subagents/child.js +105 -7
  730. package/dist/runtime/subagents/definition.d.ts +31 -26
  731. package/dist/runtime/subagents/definition.js +89 -142
  732. package/dist/runtime/subagents/deliveries.d.ts +71 -0
  733. package/dist/runtime/subagents/deliveries.js +228 -0
  734. package/dist/runtime/subagents/dispatch.d.ts +116 -27
  735. package/dist/runtime/subagents/dispatch.js +213 -142
  736. package/dist/runtime/subagents/limits.d.ts +24 -5
  737. package/dist/runtime/subagents/limits.js +40 -6
  738. package/dist/runtime/subagents/messages.d.ts +95 -0
  739. package/dist/runtime/subagents/messages.js +328 -0
  740. package/dist/runtime/subagents/org-agents.js +2 -1
  741. package/dist/runtime/subagents/preamble.d.ts +4 -4
  742. package/dist/runtime/subagents/preamble.js +9 -7
  743. package/dist/runtime/subagents/progress.d.ts +8 -6
  744. package/dist/runtime/subagents/progress.js +11 -6
  745. package/dist/runtime/subagents/render.d.ts +30 -0
  746. package/dist/runtime/subagents/render.js +53 -0
  747. package/dist/runtime/subagents/roster.d.ts +25 -8
  748. package/dist/runtime/subagents/roster.js +48 -12
  749. package/dist/runtime/subagents/skill-fork.d.ts +4 -3
  750. package/dist/runtime/subagents/skill-fork.js +9 -5
  751. package/dist/runtime/subagents/status.d.ts +14 -0
  752. package/dist/runtime/subagents/status.js +23 -0
  753. package/dist/runtime/subagents/subagents.service.d.ts +9 -6
  754. package/dist/runtime/subagents/subagents.service.js +13 -8
  755. package/dist/runtime/usage-report-jobs.d.ts +88 -0
  756. package/dist/runtime/usage-report-jobs.js +158 -0
  757. package/dist/runtime/usage-report.d.ts +35 -39
  758. package/dist/runtime/usage-report.js +171 -97
  759. package/dist/runtime/waits.d.ts +148 -39
  760. package/dist/runtime/waits.js +426 -112
  761. package/dist/sandbox/jobs.d.ts +40 -13
  762. package/dist/sandbox/jobs.js +57 -20
  763. package/dist/sandbox/leases.d.ts +37 -54
  764. package/dist/sandbox/leases.js +71 -115
  765. package/dist/sandbox/providers.d.ts +34 -7
  766. package/dist/sandbox/providers.js +54 -9
  767. package/dist/sandbox/sandbox-file-reader.d.ts +35 -0
  768. package/dist/sandbox/sandbox-file-reader.js +98 -0
  769. package/dist/sandbox/sandbox.module.d.ts +3 -2
  770. package/dist/sandbox/sandbox.module.js +10 -4
  771. package/dist/sandbox/sandbox.service.d.ts +345 -132
  772. package/dist/sandbox/sandbox.service.js +883 -399
  773. package/dist/sandbox/unreachable.d.ts +30 -0
  774. package/dist/sandbox/unreachable.js +108 -0
  775. package/dist/setup/kernel-checks.d.ts +91 -0
  776. package/dist/setup/kernel-checks.js +295 -0
  777. package/dist/setup/oauth-token-probe.d.ts +47 -0
  778. package/dist/setup/oauth-token-probe.js +108 -0
  779. package/dist/setup/redact-check.d.ts +18 -0
  780. package/dist/setup/redact-check.js +46 -0
  781. package/dist/setup/setup-check-registry.d.ts +86 -0
  782. package/dist/setup/setup-check-registry.js +75 -0
  783. package/dist/setup/setup-checks.controller.d.ts +28 -0
  784. package/dist/setup/setup-checks.controller.js +78 -0
  785. package/dist/setup/setup-checks.schemas.d.ts +38 -0
  786. package/dist/setup/setup-checks.schemas.js +43 -0
  787. package/dist/setup/setup-checks.service.d.ts +144 -0
  788. package/dist/setup/setup-checks.service.js +683 -0
  789. package/dist/setup/setup-guides.controller.d.ts +18 -0
  790. package/dist/setup/setup-guides.controller.js +48 -0
  791. package/dist/setup/setup-guides.schemas.d.ts +10 -0
  792. package/dist/setup/setup-guides.schemas.js +6 -0
  793. package/dist/setup/setup-guides.service.d.ts +126 -0
  794. package/dist/setup/setup-guides.service.js +315 -0
  795. package/dist/setup/setup.module.d.ts +8 -0
  796. package/dist/setup/setup.module.js +31 -0
  797. package/dist/skills/agent-skills.controller.d.ts +48 -0
  798. package/dist/skills/agent-skills.controller.js +131 -0
  799. package/dist/skills/agent-skills.service.d.ts +262 -0
  800. package/dist/skills/agent-skills.service.js +996 -0
  801. package/dist/skills/catalog.d.ts +14 -11
  802. package/dist/skills/catalog.js +32 -50
  803. package/dist/skills/changes.controller.d.ts +12 -22
  804. package/dist/skills/changes.controller.js +27 -56
  805. package/dist/skills/changes.service.d.ts +69 -115
  806. package/dist/skills/changes.service.js +249 -598
  807. package/dist/skills/conversation-catalog.d.ts +53 -0
  808. package/dist/skills/conversation-catalog.js +149 -0
  809. package/dist/skills/invocable.controller.d.ts +1 -1
  810. package/dist/skills/invocable.controller.js +2 -2
  811. package/dist/skills/invocation-keys.d.ts +1 -1
  812. package/dist/skills/invocation-keys.js +1 -1
  813. package/dist/skills/invoke.d.ts +3 -3
  814. package/dist/skills/invoke.js +21 -8
  815. package/dist/skills/package.d.ts +15 -1
  816. package/dist/skills/package.js +14 -1
  817. package/dist/skills/skills.controller.d.ts +32 -6
  818. package/dist/skills/skills.controller.js +64 -11
  819. package/dist/skills/skills.module.js +25 -3
  820. package/dist/skills/skills.schemas.d.ts +44 -0
  821. package/dist/skills/skills.schemas.js +68 -0
  822. package/dist/skills/skills.service.d.ts +123 -26
  823. package/dist/skills/skills.service.js +493 -76
  824. package/dist/skills/usable.d.ts +82 -0
  825. package/dist/skills/usable.js +388 -0
  826. package/dist/themes/render-css.d.ts +13 -0
  827. package/dist/themes/render-css.js +135 -0
  828. package/dist/themes/theme-delivery.service.d.ts +36 -0
  829. package/dist/themes/theme-delivery.service.js +116 -0
  830. package/dist/themes/theme-state.d.ts +116 -0
  831. package/dist/themes/theme-state.js +221 -0
  832. package/dist/themes/theme-usage.d.ts +61 -0
  833. package/dist/themes/theme-usage.js +98 -0
  834. package/dist/themes/themes-public.controller.d.ts +33 -0
  835. package/dist/themes/themes-public.controller.js +98 -0
  836. package/dist/themes/themes.controller.d.ts +13 -0
  837. package/dist/themes/themes.controller.js +38 -0
  838. package/dist/themes/themes.module.d.ts +3 -0
  839. package/dist/themes/themes.module.js +21 -0
  840. package/dist/themes/themes.schemas.d.ts +3 -0
  841. package/dist/themes/themes.schemas.js +2 -0
  842. package/dist/themes/themes.service.d.ts +50 -0
  843. package/dist/themes/themes.service.js +99 -0
  844. package/dist/time-zone.d.ts +5 -0
  845. package/dist/time-zone.js +19 -0
  846. package/dist/tools/admin-connectors.d.ts +69 -0
  847. package/dist/tools/admin-connectors.js +135 -0
  848. package/dist/tools/approvals.controller.js +2 -3
  849. package/dist/tools/approvals.schemas.d.ts +21 -0
  850. package/dist/tools/approvals.schemas.js +15 -0
  851. package/dist/tools/approvals.service.d.ts +26 -2
  852. package/dist/tools/approvals.service.js +44 -5
  853. package/dist/tools/builtin-names.d.ts +104 -0
  854. package/dist/tools/builtin-names.js +164 -0
  855. package/dist/tools/builtins/agent.d.ts +27 -25
  856. package/dist/tools/builtins/agent.js +66 -63
  857. package/dist/tools/builtins/ask-user.d.ts +1 -1
  858. package/dist/tools/builtins/ask-user.js +5 -4
  859. package/dist/tools/builtins/builtin-tools.d.ts +23 -4
  860. package/dist/tools/builtins/builtin-tools.js +78 -12
  861. package/dist/tools/builtins/current-time.d.ts +26 -0
  862. package/dist/tools/builtins/current-time.js +99 -0
  863. package/dist/tools/builtins/handback.d.ts +28 -0
  864. package/dist/tools/builtins/handback.js +53 -0
  865. package/dist/tools/builtins/platform.d.ts +51 -0
  866. package/dist/tools/builtins/platform.js +451 -0
  867. package/dist/tools/builtins/read-tool-output.d.ts +1 -1
  868. package/dist/tools/builtins/read-tool-output.js +2 -2
  869. package/dist/tools/builtins/sandbox/bash.d.ts +5 -5
  870. package/dist/tools/builtins/sandbox/bash.js +291 -39
  871. package/dist/tools/builtins/sandbox/common.d.ts +135 -36
  872. package/dist/tools/builtins/sandbox/common.js +222 -62
  873. package/dist/tools/builtins/sandbox/deliver.d.ts +1 -1
  874. package/dist/tools/builtins/sandbox/deliver.js +19 -16
  875. package/dist/tools/builtins/sandbox/edit.d.ts +1 -1
  876. package/dist/tools/builtins/sandbox/edit.js +64 -50
  877. package/dist/tools/builtins/sandbox/file-state.d.ts +34 -0
  878. package/dist/tools/builtins/sandbox/file-state.js +34 -0
  879. package/dist/tools/builtins/sandbox/glob-match.d.ts +1 -1
  880. package/dist/tools/builtins/sandbox/glob-match.js +1 -1
  881. package/dist/tools/builtins/sandbox/glob.d.ts +1 -1
  882. package/dist/tools/builtins/sandbox/glob.js +17 -12
  883. package/dist/tools/builtins/sandbox/grep.d.ts +7 -4
  884. package/dist/tools/builtins/sandbox/grep.js +153 -34
  885. package/dist/tools/builtins/sandbox/index.d.ts +9 -5
  886. package/dist/tools/builtins/sandbox/index.js +13 -5
  887. package/dist/tools/builtins/sandbox/read.d.ts +2 -2
  888. package/dist/tools/builtins/sandbox/read.js +29 -19
  889. package/dist/tools/builtins/sandbox/task-output.d.ts +79 -0
  890. package/dist/tools/builtins/sandbox/task-output.js +334 -0
  891. package/dist/tools/builtins/sandbox/task-stop.d.ts +10 -0
  892. package/dist/tools/builtins/sandbox/task-stop.js +113 -0
  893. package/dist/tools/builtins/sandbox/write.d.ts +1 -1
  894. package/dist/tools/builtins/sandbox/write.js +51 -44
  895. package/dist/tools/builtins/send-message.d.ts +56 -0
  896. package/dist/tools/builtins/send-message.js +100 -0
  897. package/dist/tools/builtins/skill-load.d.ts +29 -18
  898. package/dist/tools/builtins/skill-load.js +125 -73
  899. package/dist/tools/builtins/tool-search.d.ts +13 -9
  900. package/dist/tools/builtins/tool-search.js +25 -14
  901. package/dist/tools/builtins/web/errors.d.ts +8 -0
  902. package/dist/tools/builtins/web/errors.js +53 -0
  903. package/dist/tools/builtins/web/extract.d.ts +62 -0
  904. package/dist/tools/builtins/web/extract.js +271 -0
  905. package/dist/tools/builtins/web/fetch.d.ts +55 -0
  906. package/dist/tools/builtins/web/fetch.js +175 -0
  907. package/dist/tools/builtins/web/index.d.ts +13 -0
  908. package/dist/tools/builtins/web/index.js +12 -0
  909. package/dist/tools/builtins/web/page-cache.d.ts +25 -0
  910. package/dist/tools/builtins/web/page-cache.js +77 -0
  911. package/dist/tools/builtins/web/search.d.ts +25 -0
  912. package/dist/tools/builtins/web/search.js +210 -0
  913. package/dist/tools/builtins/web/url.d.ts +17 -0
  914. package/dist/tools/builtins/web/url.js +43 -0
  915. package/dist/tools/connector-account-policies.d.ts +51 -0
  916. package/dist/tools/connector-account-policies.js +165 -0
  917. package/dist/tools/connectors.controller.d.ts +74 -9
  918. package/dist/tools/connectors.controller.js +133 -16
  919. package/dist/tools/connectors.schemas.d.ts +27 -0
  920. package/dist/tools/connectors.schemas.js +34 -0
  921. package/dist/tools/connectors.service.d.ts +101 -8
  922. package/dist/tools/connectors.service.js +266 -28
  923. package/dist/tools/credentials.d.ts +23 -0
  924. package/dist/tools/credentials.js +90 -1
  925. package/dist/tools/display-names.d.ts +9 -0
  926. package/dist/tools/display-names.js +24 -0
  927. package/dist/tools/drift.js +5 -5
  928. package/dist/tools/elicitation.js +1 -1
  929. package/dist/tools/extension-tools.controller.d.ts +14 -0
  930. package/dist/tools/extension-tools.controller.js +37 -0
  931. package/dist/tools/info.d.ts +61 -4
  932. package/dist/tools/info.js +119 -33
  933. package/dist/tools/legacy-data.d.ts +34 -0
  934. package/dist/tools/legacy-data.js +76 -0
  935. package/dist/tools/legacy-keys.d.ts +51 -0
  936. package/dist/tools/legacy-keys.js +114 -0
  937. package/dist/tools/naming.d.ts +1 -5
  938. package/dist/tools/naming.js +1 -7
  939. package/dist/tools/oauth/flow-paths.d.ts +1 -1
  940. package/dist/tools/oauth/flow-paths.js +1 -1
  941. package/dist/tools/oauth/flow.js +1 -1
  942. package/dist/tools/oauth/tokens.d.ts +54 -7
  943. package/dist/tools/oauth/tokens.js +87 -17
  944. package/dist/tools/org-tool-switches.d.ts +89 -0
  945. package/dist/tools/org-tool-switches.js +201 -0
  946. package/dist/tools/outputs.js +1 -1
  947. package/dist/tools/pipeline.d.ts +67 -47
  948. package/dist/tools/pipeline.js +319 -380
  949. package/dist/tools/policy.d.ts +30 -23
  950. package/dist/tools/policy.js +142 -64
  951. package/dist/tools/questions.controller.d.ts +1 -1
  952. package/dist/tools/questions.controller.js +1 -1
  953. package/dist/tools/questions.service.d.ts +23 -2
  954. package/dist/tools/questions.service.js +104 -2
  955. package/dist/tools/registry.d.ts +189 -68
  956. package/dist/tools/registry.js +318 -236
  957. package/dist/tools/resources.d.ts +1 -1
  958. package/dist/tools/resources.js +1 -1
  959. package/dist/tools/tools.module.js +31 -3
  960. package/dist/tools/validate.js +1 -1
  961. package/dist/ui/admin-ui.controller.d.ts +56 -0
  962. package/dist/ui/admin-ui.controller.js +192 -0
  963. package/dist/ui/arrangement.d.ts +65 -0
  964. package/dist/ui/arrangement.js +171 -0
  965. package/dist/ui/embed-token.d.ts +2 -2
  966. package/dist/ui/embed-token.js +30 -5
  967. package/dist/ui/registry.d.ts +42 -17
  968. package/dist/ui/registry.js +46 -14
  969. package/dist/ui/slots.controller.d.ts +11 -0
  970. package/dist/ui/slots.controller.js +25 -0
  971. package/dist/ui/ui-stream.d.ts +20 -3
  972. package/dist/ui/ui-stream.js +25 -7
  973. package/dist/ui/ui.schemas.d.ts +70 -0
  974. package/dist/ui/ui.schemas.js +65 -0
  975. package/dist/ui/views.controller.d.ts +35 -49
  976. package/dist/ui/views.controller.js +48 -70
  977. package/dist/ui/views.d.ts +112 -18
  978. package/dist/ui/views.js +254 -47
  979. package/package.json +6 -3
  980. package/src/migrations/0063_tool_keys_claude_code.sql +220 -0
  981. package/src/migrations/0064_account_last_org.sql +7 -0
  982. package/src/migrations/0065_conversation_archive.sql +8 -0
  983. package/src/migrations/0066_extension_display_name.sql +4 -0
  984. package/src/migrations/0067_agent_profiles.sql +20 -0
  985. package/src/migrations/0068_agent_avatar_uploads.sql +7 -0
  986. package/src/migrations/0069_attachments_agent_idx.sql +3 -0
  987. package/src/migrations/0070_background_tasks.sql +37 -0
  988. package/src/migrations/0071_background_tasks_reserve.sql +6 -0
  989. package/src/migrations/0072_background_tasks_stopping.sql +5 -0
  990. package/src/migrations/0073_org_extension_point_defaults.sql +11 -0
  991. package/src/migrations/0074_subagent_tree.sql +50 -0
  992. package/src/migrations/0075_plugin_scope.sql +61 -0
  993. package/src/migrations/0076_skills_created_by_nullable.sql +6 -0
  994. package/src/migrations/0077_scope_requests.sql +52 -0
  995. package/src/migrations/0078_scope_grant_switches.sql +18 -0
  996. package/src/migrations/0079_scope_live_install_switches.sql +19 -0
  997. package/src/migrations/0080_rename_enterprise_admin.sql +18 -0
  998. package/src/migrations/0081_platform_components.sql +129 -0
  999. package/src/migrations/0082_platform_migration.sql +33 -0
  1000. package/src/migrations/0083_plugin_scope_sync_failures.sql +15 -0
  1001. package/src/migrations/0084_org_owned_items.sql +85 -0
  1002. package/src/migrations/0085_agent_templates_phase4.sql +45 -0
  1003. package/src/migrations/0086_org_layering.sql +30 -0
  1004. package/src/migrations/0087_approval_summary.sql +6 -0
  1005. package/src/migrations/0088_environments.sql +80 -0
  1006. package/src/migrations/0089_model_kinds_usage.sql +38 -0
  1007. package/src/migrations/0090_initial_passwords.sql +27 -0
  1008. package/src/migrations/0091_account_time_zone.sql +4 -0
  1009. package/src/migrations/0092_tools_default_on.sql +27 -0
  1010. package/src/migrations/0093_connected_environments.sql +37 -0
  1011. package/src/migrations/0094_environment_paths_idx.sql +7 -0
  1012. package/src/migrations/0095_environment_files_resets.sql +5 -0
  1013. package/src/migrations/0096_environment_demoted_default.sql +18 -0
  1014. package/src/migrations/0097_extension_installs_enabled_at.sql +16 -0
  1015. package/src/migrations/0098_single_provider_running_first.sql +41 -0
  1016. package/src/migrations/0099_channel_connection_guide_ack.sql +6 -0
  1017. package/src/migrations/0100_catalog_files.sql +13 -0
  1018. package/src/migrations/0101_marketplace_icons.sql +32 -0
  1019. package/src/migrations/0102_themes.sql +64 -0
  1020. package/src/migrations/0103_ui_theme_setting.sql +7 -0
  1021. package/src/migrations/0104_connector_tool_account_policies.sql +16 -0
  1022. package/src/migrations/0105_devices_rename.sql +136 -0
  1023. package/src/migrations/0106_setup_guides_v2.sql +10 -0
  1024. package/src/migrations/0107_extension_client_builds.sql +50 -0
  1025. package/src/migrations/0108_question_skipped.sql +6 -0
  1026. package/src/migrations/0109_audit_platform_idx.sql +5 -0
  1027. package/src/migrations/0110_usage_time_idx.sql +8 -0
  1028. package/src/migrations/0111_agent_skill_sharing.sql +22 -0
  1029. package/src/migrations/0112_skill_share_requests.sql +4 -0
  1030. package/dist/catalog/upgrade-targets.d.ts +0 -56
  1031. package/dist/catalog/upgrade-targets.js +0 -90
  1032. package/dist/conversations/sandbox-status.d.ts +0 -24
  1033. package/dist/conversations/sandbox-status.js +0 -52
  1034. package/dist/extensions/org-config.controller.d.ts +0 -24
  1035. package/dist/extensions/org-config.controller.js +0 -62
  1036. package/dist/tools/builtins/sandbox/names.d.ts +0 -7
  1037. package/dist/tools/builtins/sandbox/names.js +0 -20
  1038. package/dist/tools/builtins/skill-write.d.ts +0 -59
  1039. package/dist/tools/builtins/skill-write.js +0 -244
@@ -9,7 +9,9 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
9
9
  };
10
10
  import { Inject, Injectable } from "@nestjs/common";
11
11
  import { ApiError } from "../errors.js";
12
+ import { templateGuideOf } from "../extensions/plugin-guides.js";
12
13
  import { ExtensionRegistry } from "../extensions/registry.js";
14
+ import { ExtensionAvailability } from "../extensions/unavailable.js";
13
15
  import { KernelDb } from "../infra/database/kernel-db.js";
14
16
  import { TransactionHost } from "../infra/database/transaction-host.js";
15
17
  import { Transactional } from "../infra/database/transactional.decorator.js";
@@ -18,53 +20,59 @@ import { OrgLock } from "../orgs/org-lock.js";
18
20
  import { can, roleAtLeast } from "../orgs/roles.js";
19
21
  import { packagePath } from "../packages/tgz.js";
20
22
  import { StorageService } from "../storage/storage.service.js";
21
- import { catalogHasIcon, findConnectorIn, lockOrgForActions, orgTemplateView, readCatalogIcon, readCatalogTemplates, templatePluginProblem, } from "./catalog-content.js";
22
- import { itemView } from "./catalog-items.js";
23
- import { PluginInstaller } from "./plugin-install.js";
24
- import { PluginUpgrader } from "./plugin-upgrade.js";
25
- import { CatalogRequestsService } from "./requests.service.js";
26
- import { upgradeInfo } from "./upgrade-targets.js";
23
+ import { catalogHasIcon, findConnectorIn, orgTemplateView, readCatalogIcon, readCatalogTemplates, templatePluginProblem, } from "./catalog-content.js";
24
+ import { itemView, ownerOnlyFacts, versionUsable } from "./catalog-items.js";
25
+ import { connectorTemplatesOn, templateIdOfPath } from "./component-state.js";
26
+ import { itemPendingError, ownerOf, ownersOf } from "./ownership.js";
27
+ import { PluginInstaller, uninstallPreviewHash, upsertOrgSwitch, } from "./plugin-install.js";
28
+ import { requestable, switchable, visibleTo, wantedOn } from "./scope.js";
27
29
  const UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
28
30
  const itemNotFound = () => new ApiError("catalog.item_not_found", "Catalog item not found");
29
- const itemDisabled = () => new ApiError("catalog.item_disabled", "This catalog item is disabled by the enterprise admin and cannot be newly installed");
31
+ const notOffered = () => new ApiError("catalog.approval_required", "This plugin is not offered to this organization; an org admin can request access");
32
+ const pluginDisabled = () => new ApiError("plugin.disabled", "This plugin is disabled by the super admin and cannot be switched on");
30
33
  /**
31
- * Organizations browse and install from the enterprise catalog (C22): members browse (without
32
- * disabled items) and request, org admins install. Every item is a plugin, installed with its
33
- * dependencies by {@link PluginInstaller}; installing requires the union of the component actions
34
- * of the plugins it brings in ({@link requiredActions}), re-checked inside the org row lock; item
35
- * disabled -> `catalog.item_disabled`; a dependency unresolved / disabled / in a cycle ->
36
- * `catalog.dependency_*`; an extension or a template's connector not on the deployment ->
37
- * `catalog.not_deployed`; needs_approval without a grant -> a stage deployment request (HTTP 202;
38
- * dependencies are not approved separately, spec §10). No in-process state.
34
+ * Organizations see the platform catalog with the plugin scope rules applied (plugin and component
35
+ * management spec §5): a plugin is `all` (on in every org unless an org admin switched it off,
36
+ * layering spec §4), `optional` (an org admin switches it on), or `named` (offered to the listed
37
+ * orgs). Members get the list read-only; org admins switch a plugin on (an install by
38
+ * {@link PluginInstaller}, with its dependencies; the union of the component actions of the plugins
39
+ * it brings in is re-checked inside the org row lock) or off (an uninstall, after a preview they
40
+ * confirm with its hash). Disabled item -> `plugin.disabled`; a
41
+ * dependency unresolved / disabled / in a cycle -> `catalog.dependency_*`; an extension or a
42
+ * template's connector not on the deployment -> `catalog.not_deployed`. No in-process state.
39
43
  */
40
44
  let OrgCatalogService = class OrgCatalogService {
41
45
  kdb;
42
46
  orgLock;
43
47
  storage;
44
48
  registry;
45
- requests;
46
49
  pluginInstaller;
47
- pluginUpgrader;
48
50
  log;
49
51
  txHost;
52
+ availability;
50
53
  constructor(kdb,
51
54
  /** The org row lock (orgs/org-lock.ts): joins the caller's transaction. */
52
- orgLock, storage, registry, requests, pluginInstaller, pluginUpgrader, log, txHost) {
55
+ orgLock, storage, registry, pluginInstaller, log, txHost,
56
+ /** Why a plugin's extension cannot run (the `unavailable` state's reason). */
57
+ availability) {
53
58
  this.kdb = kdb;
54
59
  this.orgLock = orgLock;
55
60
  this.storage = storage;
56
61
  this.registry = registry;
57
- this.requests = requests;
58
62
  this.pluginInstaller = pluginInstaller;
59
- this.pluginUpgrader = pluginUpgrader;
60
63
  this.log = log;
61
64
  this.txHost = txHost;
65
+ this.availability = availability;
62
66
  }
63
67
  /** The kernel-schema handle of the current context (the transaction, else the pool). */
64
68
  get db() {
65
69
  return this.kdb.db;
66
70
  }
67
- /** The org's view of the items; members (not admins) don't see disabled items. */
71
+ /**
72
+ * The org's view of the items: a `named` item without the org on its list is `not_offered` when
73
+ * shown to other orgs and absent otherwise; disabled ones are shown to admins as `unavailable`
74
+ * and absent for members. Each item carries the org's pending request for it.
75
+ */
68
76
  async list(orgId, accountId, itemId) {
69
77
  const m = await this.db
70
78
  .selectFrom("memberships")
@@ -82,67 +90,163 @@ let OrgCatalogService = class OrgCatalogService {
82
90
  if (itemId !== undefined)
83
91
  q = q.where("id", "=", itemId);
84
92
  if (!isAdmin)
85
- q = q.where("policy", "<>", "disabled");
86
- const items = await q.execute();
93
+ q = q.where("disabled", "=", false);
94
+ const all = await q.execute();
95
+ const [listed, switches] = await Promise.all([
96
+ this.db
97
+ .selectFrom("catalog_item_scope_orgs")
98
+ .select("item_id")
99
+ .where("org_id", "=", orgId)
100
+ .execute(),
101
+ this.db
102
+ .selectFrom("catalog_item_org_switches")
103
+ .select(["item_id", "enabled"])
104
+ .where("org_id", "=", orgId)
105
+ .execute(),
106
+ ]);
107
+ const inList = new Set(listed.map((r) => r.item_id));
108
+ // Hidden `named` items (not listed, not shown to other orgs) are absent; shown ones are
109
+ // `not_offered`
110
+ // An org upload waiting for the super admin is its owner's only (ruling P3-9)
111
+ const items = all.filter((i) => (!i.awaiting_confirmation || i.owner_org_id === orgId) &&
112
+ (visibleTo({ scope: i.builtin ? "all" : i.scope }, inList.has(i.id)) ||
113
+ requestable(i, inList.has(i.id))));
87
114
  if (items.length === 0)
88
115
  return [];
116
+ const sw = new Map(switches.map((r) => [r.item_id, r.enabled]));
89
117
  const ids = items.map((i) => i.id);
90
- const [versions, grants, requests, pluginInstalls] = await Promise.all([
118
+ const [versions, pluginInstalls, configs, requests] = await Promise.all([
91
119
  this.db
92
120
  .selectFrom("catalog_item_versions")
93
- .select(["item_id", "version", "source", "manifest", "object_prefix", "files"])
121
+ .select([
122
+ "item_id",
123
+ "version",
124
+ "source",
125
+ "source_format",
126
+ "manifest",
127
+ "object_prefix",
128
+ "files",
129
+ "applied_at",
130
+ "rejected_at",
131
+ ])
94
132
  .where("item_id", "in", ids)
95
133
  .execute(),
96
- this.db
97
- .selectFrom("catalog_org_grants")
98
- .select("item_id")
99
- .where("org_id", "=", orgId)
100
- .execute(),
101
- this.requests.latestByItem(orgId),
102
134
  this.db
103
135
  .selectFrom("plugin_installs")
104
136
  .select(["id", "item_id", "version"])
105
137
  .where("org_id", "=", orgId)
106
138
  .where("status", "in", ["installing", "installed", "upgrading"])
107
139
  .execute(),
140
+ this.db
141
+ .selectFrom("extension_org_configs")
142
+ .select("plugin")
143
+ .where("org_id", "=", orgId)
144
+ .where("config", "is not", null)
145
+ .execute(),
146
+ this.db
147
+ .selectFrom("catalog_requests")
148
+ .select(["id", "item_id", "kind", "created_at"])
149
+ .where("org_id", "=", orgId)
150
+ .where("item_id", "in", ids)
151
+ .where("kind", "in", ["access", "enable"])
152
+ .where("status", "=", "pending")
153
+ .orderBy("created_at")
154
+ .execute(),
108
155
  ]);
109
- const upgrades = await upgradeInfo(this.db, this.registry, pluginInstalls.flatMap((a) => {
110
- const item = items.find((i) => i.id === a.item_id);
111
- return item ? [{ itemId: a.item_id, name: item.name, version: a.version }] : [];
112
- }));
113
- const granted = new Set(grants.map((g) => g.item_id));
156
+ const pending = new Map(requests.map((r) => [
157
+ r.item_id,
158
+ { id: r.id, kind: r.kind, createdAt: r.created_at.toISOString() },
159
+ ]));
114
160
  const undeployed = await this.undeployed(items.flatMap((i) => {
115
161
  const v = versions.find((x) => x.item_id === i.id && x.version === i.latest_version);
116
162
  return v ? [v] : [];
117
163
  }));
164
+ const configured = new Set(configs.map((c) => c.plugin));
165
+ const owners = await ownersOf(this.db, items.flatMap((i) => (i.owner_org_id === null ? [] : [i.owner_org_id])));
166
+ const loaded = new Map(this.registry.manifests().map((x) => [x.name, x]));
167
+ // the extensions of the latest versions that are not loaded: why (the `unavailable` reason)
168
+ const extensionOf = (i) => {
169
+ const v = versions.find((x) => x.item_id === i.id && x.version === i.latest_version);
170
+ const m = v?.manifest;
171
+ return m?.extension ? m.name : undefined;
172
+ };
173
+ const unloaded = await this.availability.unavailable(items.flatMap((i) => {
174
+ const n = extensionOf(i);
175
+ return n === undefined ? [] : [n];
176
+ }));
118
177
  const out = [];
119
178
  for (const i of items) {
120
- const vs = versions.filter((v) => v.item_id === i.id);
121
- const { installs: _installs, marketplaceId: _source, latestMarketplaceVersion: _latest, newerInMarketplace: _newer, ...view } = itemView(i, vs);
179
+ // Another org sees only an org-owned plugin's applied version, never one its owner
180
+ // uploaded that is pending or was rejected (ruling P3-34), nor such a version of a plugin
181
+ // transferred to the platform since (ruling P3-52)
182
+ const vs = versions.filter((v) => v.item_id === i.id &&
183
+ (i.owner_org_id === orgId ||
184
+ (versionUsable(v) && (i.owner_org_id === null || v.version === i.latest_version))));
185
+ 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)));
122
186
  const latest = vs.find((v) => v.version === i.latest_version);
123
- let installable;
124
- if (i.policy === "disabled")
125
- installable = "disabled";
126
- else if (latest && undeployed.has(i.id)) {
127
- installable = "not_deployed";
187
+ const a = pluginInstalls.find((x) => x.item_id === i.id);
188
+ const scope = i.builtin ? "all" : i.scope;
189
+ const wanted = wantedOn(i, inList.has(i.id), sw.get(i.id) ?? null);
190
+ let state;
191
+ let reason;
192
+ const extName = extensionOf(i);
193
+ const why = extName === undefined ? undefined : unloaded.get(extName);
194
+ if (i.awaiting_confirmation)
195
+ state = "awaiting_confirmation";
196
+ else if (i.disabled) {
197
+ state = "unavailable";
198
+ reason = "plugin_disabled";
128
199
  }
129
- else if (i.policy === "needs_approval") {
130
- installable = granted.has(i.id) ? "granted" : "needs_approval";
200
+ else if (requestable(i, inList.has(i.id)))
201
+ state = "not_offered";
202
+ // not installed here and its extension cannot run: switching it on would fail (spec §14.2
203
+ // problem 1); an installed one keeps its state (an org admin can still switch it off)
204
+ else if (!a && why !== undefined) {
205
+ state = "unavailable";
206
+ reason = why.reason;
207
+ }
208
+ else if (a) {
209
+ // An on connector template without a connector here (ruling P2-10)
210
+ const missing = await this.pluginInstaller.missingConnectors(orgId, i.id);
211
+ state = (missing?.templates.length ?? 0) > 0 ? "needs_config" : "on";
212
+ }
213
+ else if (i.builtin)
214
+ state = "on";
215
+ else if (!wanted)
216
+ state = "off";
217
+ else {
218
+ const m = latest?.manifest;
219
+ const ext = m?.extension ? loaded.get(m.name) : undefined;
220
+ // only the connector templates on in the org need input (ruling P2-6)
221
+ const templateIds = (m?.connectorTemplates ?? []).map((t) => templateIdOfPath(t.path));
222
+ const needsInputs = (await connectorTemplatesOn(this.db, orgId, i.id, templateIds)).size > 0 ||
223
+ (m?.extension !== undefined &&
224
+ ext?.config?.org !== undefined &&
225
+ !ext.config.org.safeParse({}).success &&
226
+ !configured.has(m.name));
227
+ // Wanted but not installed and needing nothing: the sync has not installed it (yet, or its
228
+ // install failed); `off`, so an org admin can switch it on (the worker start retries it)
229
+ state = needsInputs ? "needs_config" : "off";
131
230
  }
132
- else
133
- installable = "yes";
134
- const a = pluginInstalls.find((x) => x.item_id === i.id);
135
231
  out.push({
136
232
  ...view,
137
- installable,
233
+ // A pending upload is the owner's business only (other orgs never learn of it)
234
+ ...(i.owner_org_id === orgId && { awaitingConfirmation, pendingVersion }),
235
+ scope,
236
+ builtin: i.builtin,
237
+ state,
238
+ ...(reason !== undefined && { reason }),
239
+ switchable: state !== "not_offered" && state !== "awaiting_confirmation" && switchable(i),
240
+ notDeployed: latest !== undefined && undeployed.has(i.id),
138
241
  installed: a
139
242
  ? {
140
243
  pluginInstallId: a.id,
141
244
  version: a.version,
142
- upgradeAvailable: upgrades.get(`${a.item_id}@${a.version}`)?.upgradeAvailable ?? null,
245
+ // no per-org upgrade: the platform update moves every org (ruling F2)
246
+ upgradeAvailable: null,
143
247
  }
144
248
  : null,
145
- request: requests.get(i.id) ?? null,
249
+ request: pending.get(i.id) ?? null,
146
250
  });
147
251
  }
148
252
  return out;
@@ -168,22 +272,65 @@ let OrgCatalogService = class OrgCatalogService {
168
272
  if (!v)
169
273
  throw itemNotFound();
170
274
  const m = v.manifest;
275
+ const templates = await readCatalogTemplates(this.storage, v);
276
+ // where each template's page finds its setup guide (spec 2026-11-09-setup-guides-v2 §9.3)
277
+ const guideOf = (templateId) => {
278
+ const g = templateGuideOf(m, templateId);
279
+ return g ? { itemId, guideId: g.id } : null;
280
+ };
281
+ // Providers the install would switch on first (a refusal is the install's to report)
282
+ const implied = await this.pluginInstaller
283
+ .impliedProviders(orgId, m, templates, m.dependencies ?? [])
284
+ .catch((e) => {
285
+ if (e instanceof ApiError)
286
+ return [];
287
+ throw e;
288
+ });
171
289
  return {
172
290
  item,
173
291
  hasIcon: m.icon !== undefined,
174
292
  extension: m.extension ? m.name : null,
175
- templates: (await readCatalogTemplates(this.storage, v)).map((t) => orgTemplateView(t.id, t.file)),
176
- dependencies: (m.dependencies ?? []).map((d) => ({ name: d.name, range: d.version })),
293
+ templates: templates.map((t) => orgTemplateView(t.id, t.file, guideOf(t.id))),
294
+ dependencies: [
295
+ ...(m.dependencies ?? []).map((d) => ({ name: d.name, range: d.version })),
296
+ ...implied.map((d) => ({ name: d.name, range: d.range, implied: true })),
297
+ ],
177
298
  skills: (m.skills ?? []).map((s) => packagePath(s.path)),
178
299
  agents: (m.agents ?? []).map((a) => packagePath(a.path)),
300
+ missingTemplates: item.installed !== null && item.state === "needs_config"
301
+ ? ((await this.pluginInstaller.missingConnectors(orgId, itemId))?.templates ?? []).map((t) => orgTemplateView(t.id, t.file, guideOf(t.id)))
302
+ : [],
179
303
  };
180
304
  }
181
305
  /**
182
- * The item's icon; members don't see disabled items (-> `catalog.item_not_found`, decided before
183
- * reading storage).
306
+ * The item's icon; members don't see disabled items, nobody outside its list sees a hidden
307
+ * `named` item (-> `catalog.item_not_found`, decided before reading storage). Without `orgId`
308
+ * (the super admin) every item.
184
309
  */
185
- icon(itemId, isAdmin) {
186
- return readCatalogIcon(this.db, this.storage, itemId, isAdmin);
310
+ async icon(itemId, isAdmin, orgId) {
311
+ if (orgId === undefined)
312
+ return readCatalogIcon(this.db, itemId, isAdmin);
313
+ if (!UUID_RE.test(itemId))
314
+ throw itemNotFound();
315
+ // A hidden `named` item stays absent here too
316
+ const item = await this.db
317
+ .selectFrom("catalog_items")
318
+ .select(["scope", "builtin", "shown_to_others", "owner_org_id", "shareable"])
319
+ .where("id", "=", itemId)
320
+ .where("deleted_at", "is", null)
321
+ .executeTakeFirst();
322
+ // Not requestable from outside its list (hidden, or held back by the share gate): only listed orgs
323
+ if (item && !item.builtin && item.scope === "named" && !requestable(item, false)) {
324
+ const listed = await this.db
325
+ .selectFrom("catalog_item_scope_orgs")
326
+ .select("item_id")
327
+ .where("item_id", "=", itemId)
328
+ .where("org_id", "=", orgId)
329
+ .executeTakeFirst();
330
+ if (listed === undefined)
331
+ throw itemNotFound();
332
+ }
333
+ return readCatalogIcon(this.db, itemId, isAdmin);
187
334
  }
188
335
  /** For the admin item detail: whether the latest version has an icon. */
189
336
  hasIcon(itemId) {
@@ -226,22 +373,18 @@ let OrgCatalogService = class OrgCatalogService {
226
373
  }));
227
374
  return out;
228
375
  }
229
- /** Installs a plugin in the org (see the class comment). */
230
- async install(orgId, actor, itemId, body, actorTokenId) {
376
+ /**
377
+ * Installs a plugin in the org (the old install route, an alias of switching it on): the role
378
+ * first, then item errors (a member cannot probe a disabled item through error codes), then the
379
+ * installer. Records the org's switch as on.
380
+ */
381
+ async install(orgId, actor, itemId, body, actorTokenId, auditDetail) {
231
382
  if (!UUID_RE.test(itemId))
232
383
  throw itemNotFound();
233
- // The role first (forbidden when it can install nothing), then item errors: a member cannot
234
- // probe the existence or versions of a disabled item through error codes
235
384
  await this.assertCanInstall(orgId, actor);
236
- const item = await this.db
237
- .selectFrom("catalog_items")
238
- .selectAll()
239
- .where("id", "=", itemId)
240
- .where("deleted_at", "is", null)
241
- .executeTakeFirst();
242
- if (!item)
243
- throw itemNotFound();
244
- const version = body.version ?? item.latest_version;
385
+ const item = await this.visibleItem(orgId, itemId);
386
+ // The platform's version (one per deployment, ruling P2-17)
387
+ const version = item.platform_synced_version ?? item.latest_version;
245
388
  const v = await this.db
246
389
  .selectFrom("catalog_item_versions")
247
390
  .select("version")
@@ -250,107 +393,177 @@ let OrgCatalogService = class OrgCatalogService {
250
393
  .executeTakeFirst();
251
394
  if (!v)
252
395
  throw new ApiError("catalog.item_not_found", `Version ${version} of this item not found`);
253
- const opts = actorTokenId !== undefined ? { actorTokenId } : {};
254
- if (item.policy === "disabled")
255
- throw itemDisabled();
256
- // Dependencies resolved, extensions deployed, template connectors available: before a request
257
- // is created. The actions are the union over the plugins the install brings in
258
- const { actions } = await this.pluginInstaller.preflight(orgId, actor, itemId, version);
259
- // 1. Role and policy under the lock; needs_approval without a grant -> a request (202). Approval
260
- // follows this plugin's policy only, not its dependencies' (spec §10)
261
- const pending = await this.requestIfNeeded(orgId, actor, item, version, actions, opts);
262
- if (pending !== undefined) {
263
- return { status: 202, request: await this.requests.view(pending) };
264
- }
265
- // 2. Install (each step re-checks the item policy in its own transaction)
266
- const { version: _version, ...input } = body;
267
- const view = await this.pluginInstaller.install(orgId, actor, itemId, version, input, opts);
396
+ const opts = {
397
+ switchOn: true,
398
+ ...(actorTokenId !== undefined && { actorTokenId }),
399
+ ...(auditDetail !== undefined && { auditDetail }),
400
+ };
401
+ if (item.disabled)
402
+ throw pluginDisabled();
403
+ // Dependencies resolved, extensions deployed, template connectors available
404
+ await this.pluginInstaller.preflight(orgId, actor, itemId, version);
405
+ const view = await this.pluginInstaller.install(orgId, actor, itemId, version, body, opts);
268
406
  return {
269
407
  status: 201,
270
408
  installed: { itemId, version, pluginInstallId: view.id },
271
409
  install: view,
272
410
  };
273
411
  }
274
- /**
275
- * Role and policy under the org row lock; needs_approval without a grant -> a stage deployment
276
- * request (its id). Approval follows this plugin's policy only, not its dependencies' (spec §10).
277
- */
278
- async requestIfNeeded(orgId, actor, item, version, actions, opts) {
279
- const itemId = item.id;
280
- const t = this.db;
281
- await lockOrgForActions(this.orgLock, orgId, actor, actions);
282
- const locked = await t
412
+ /** The item when the org may see it (scope), else `catalog.item_not_found`. */
413
+ async visibleItem(orgId, itemId) {
414
+ const item = await this.db
283
415
  .selectFrom("catalog_items")
284
- .select(["policy", "deleted_at"])
416
+ .selectAll()
285
417
  .where("id", "=", itemId)
286
- .forShare()
418
+ .where("deleted_at", "is", null)
287
419
  .executeTakeFirst();
288
- if (!locked || locked.deleted_at !== null)
420
+ if (!item)
421
+ throw itemNotFound();
422
+ // An org upload waiting for the super admin: absent for other orgs, not switchable by its
423
+ // owner (ruling P3-9)
424
+ if (item.awaiting_confirmation) {
425
+ if (item.owner_org_id !== orgId)
426
+ throw itemNotFound();
427
+ throw itemPendingError(item.name);
428
+ }
429
+ const listed = await this.db
430
+ .selectFrom("catalog_item_scope_orgs")
431
+ .select("item_id")
432
+ .where("item_id", "=", itemId)
433
+ .where("org_id", "=", orgId)
434
+ .executeTakeFirst();
435
+ if (!visibleTo({ scope: item.builtin ? "all" : item.scope }, listed !== undefined)) {
436
+ // Shown to other orgs: the org sees it and may request access, but cannot switch it on
437
+ if (requestable(item, false))
438
+ throw notOffered();
289
439
  throw itemNotFound();
290
- if (locked.policy === "disabled")
291
- throw itemDisabled();
292
- if (locked.policy === "needs_approval") {
293
- const grant = await t
294
- .selectFrom("catalog_org_grants")
295
- .select("item_id")
296
- .where("item_id", "=", itemId)
297
- .where("org_id", "=", orgId)
298
- .executeTakeFirst();
299
- if (!grant) {
300
- return this.requests.requestDeployment(orgId, actor, item, version, opts);
301
- }
302
440
  }
303
- return undefined;
441
+ return item;
304
442
  }
305
- /** The upgrade preview of an org install (spec §10, see `PluginUpgrader`). */
306
- async upgradePreview(orgId, actor, installId, version) {
307
- await this.assertCanInstall(orgId, actor);
308
- return this.pluginUpgrader.preview(orgId, actor, installId, version);
443
+ /** The org's live plugin install of the item, if any. */
444
+ liveInstall(orgId, itemId) {
445
+ return this.db
446
+ .selectFrom("plugin_installs")
447
+ .select("id")
448
+ .where("org_id", "=", orgId)
449
+ .where("item_id", "=", itemId)
450
+ .where("status", "in", ["installing", "installed", "upgrading"])
451
+ .executeTakeFirst();
309
452
  }
310
453
  /**
311
- * Upgrades an org install in place (spec §10, Decision 11): the preview's `diffHash` is checked
312
- * first (`plugin.upgrade_stale`); the item disabled -> `catalog.item_disabled`; needs_approval
313
- * without a grant -> a stage deployment request for the target version (202; after approval the
314
- * org admin runs the upgrade again); otherwise the upgrade runs (200, the install view).
454
+ * The org admin's switch of a plugin (`PUT catalog/:itemId/switch`). On: installs it (or just
455
+ * records the switch when it is installed already). Off: refused for builtin items
456
+ * (`plugin.scope_locked`; an `all` one may go off, layering spec §4); without `confirm` returns
457
+ * the uninstall preview and its hash, with the hash of the current preview uninstalls (a changed
458
+ * preview -> `plugin.switch_stale`). The switch row is written after the install / uninstall.
315
459
  */
316
- async upgrade(orgId, actor, installId, body, actorTokenId) {
460
+ async setSwitch(orgId, actor, itemId, body, actorTokenId, auditDetail) {
461
+ if (!UUID_RE.test(itemId))
462
+ throw itemNotFound();
317
463
  await this.assertCanInstall(orgId, actor);
318
- const opts = actorTokenId !== undefined ? { actorTokenId } : {};
319
- const { itemId, actions, diff } = await this.pluginUpgrader.check(orgId, actor, installId, body);
320
- const pending = await this.upgradeRequestIfNeeded(orgId, actor, itemId, body, actions, opts);
321
- if (pending !== undefined) {
322
- return { status: 202, request: await this.requests.view(pending) };
323
- }
324
- return {
325
- status: 200,
326
- install: await this.pluginUpgrader.upgrade(orgId, actor, installId, body, opts, diff),
464
+ const item = await this.visibleItem(orgId, itemId);
465
+ const opts = {
466
+ ...(actorTokenId !== undefined && { actorTokenId }),
467
+ ...(auditDetail !== undefined && { auditDetail }),
327
468
  };
469
+ if (body.enabled) {
470
+ if (item.disabled)
471
+ throw pluginDisabled();
472
+ if ((await this.liveInstall(orgId, itemId)) !== undefined) {
473
+ await this.recordSwitch(orgId, actor, itemId, true);
474
+ }
475
+ else {
476
+ await this.install(orgId, actor, itemId, body.inputs ?? {}, actorTokenId, auditDetail);
477
+ }
478
+ return { kind: "done", item: await this.itemOf(orgId, actor, itemId) };
479
+ }
480
+ if (!switchable(item)) {
481
+ throw new ApiError("plugin.scope_locked", "This plugin is built in: it is on for every organization and cannot be switched off here");
482
+ }
483
+ const live = await this.liveInstall(orgId, itemId);
484
+ if (live === undefined) {
485
+ await this.recordSwitch(orgId, actor, itemId, false);
486
+ return { kind: "done", item: await this.itemOf(orgId, actor, itemId) };
487
+ }
488
+ // The platform default theme is locked on (themes spec §7): refused at the preview already;
489
+ // the uninstall's transaction checks again before it writes
490
+ await this.pluginInstaller.assertKeepsPlatformDefault(orgId, live.id);
491
+ const preview = await this.pluginInstaller.previewUninstall(orgId, live.id);
492
+ const confirm = uninstallPreviewHash(preview);
493
+ if (body.confirm === undefined)
494
+ return { kind: "preview", preview, confirm };
495
+ // The hash is re-checked and the switch row written inside the uninstall's transaction
496
+ await this.pluginInstaller.uninstall(orgId, actor, live.id, opts, { expectHash: body.confirm });
497
+ return { kind: "done", item: await this.itemOf(orgId, actor, itemId) };
498
+ }
499
+ /**
500
+ * `DELETE plugin-installs/:installId` of a catalog plugin follows the switch-off semantics: builtin
501
+ * items are refused (`plugin.scope_locked`) unless the install is not live (failed, or
502
+ * `installing`: the installer cleans up a stale one and refuses a fresh one). Removing a live
503
+ * install writes the switch row false in the uninstall's transaction (an `all` item then stays
504
+ * off in the org); removing a failed or stale one writes none.
505
+ */
506
+ async uninstall(orgId, actor, installId, actorTokenId,
507
+ /** Merged into the audit detail (a write made through the Platform tool). */
508
+ auditDetail) {
509
+ if (!UUID_RE.test(installId))
510
+ throw new ApiError("plugin.install_not_found", "Plugin install not found");
511
+ const row = await this.db
512
+ .selectFrom("plugin_installs as a")
513
+ .innerJoin("catalog_items as i", "i.id", "a.item_id")
514
+ .select(["i.scope", "i.builtin", "a.status"])
515
+ .where("a.id", "=", installId)
516
+ .where("a.org_id", "=", orgId)
517
+ .executeTakeFirst();
518
+ // A failed or stuck install is cleaned up whatever the scope (it is not on anyway)
519
+ const live = row?.status === "installed" || row?.status === "upgrading";
520
+ if (row !== undefined && live && !switchable(row)) {
521
+ throw new ApiError("plugin.scope_locked", "This plugin is built in: it is on for every organization and cannot be uninstalled here");
522
+ }
523
+ return this.pluginInstaller.uninstall(orgId, actor, installId, {
524
+ ...(actorTokenId !== undefined && { actorTokenId }),
525
+ ...(auditDetail !== undefined && { auditDetail }),
526
+ },
527
+ // only a live install was on: removing a failed or stale one writes no switch row, so an
528
+ // item its scope wants stays wanted and the sync installs it again
529
+ row !== undefined && live ? {} : undefined);
530
+ }
531
+ async itemOf(orgId, accountId, itemId) {
532
+ const [item] = await this.list(orgId, accountId, itemId);
533
+ if (!item)
534
+ throw itemNotFound();
535
+ return item;
328
536
  }
329
- /** Like {@link requestIfNeeded}, for an upgrade's target version. */
330
- async upgradeRequestIfNeeded(orgId, actor, itemId, body, actions, opts) {
331
- const t = this.db;
332
- await lockOrgForActions(this.orgLock, orgId, actor, actions);
333
- const locked = await t
537
+ /**
538
+ * Writes the org's switch row of the item under the org row lock. The item row is locked FOR
539
+ * SHARE first (exclusive with a scope change, an unshare, ruling P3-25, and an owner's delete or
540
+ * transfer); switching on re-checks that the org may still see it; the install path re-checks the same in `assertItemInstallable`.
541
+ */
542
+ async recordSwitch(orgId, actor, itemId, enabled) {
543
+ await this.orgLock.lock(orgId);
544
+ // Both directions lock the item row FOR SHARE: an owner's delete or transfer (FOR UPDATE)
545
+ // decides on who uses it, so a switch-off racing it must not change that answer meanwhile
546
+ const item = await this.db
334
547
  .selectFrom("catalog_items")
335
- .select(["id", "name", "policy", "deleted_at"])
548
+ .select(["scope", "builtin"])
336
549
  .where("id", "=", itemId)
550
+ .where("deleted_at", "is", null)
337
551
  .forShare()
338
552
  .executeTakeFirst();
339
- if (!locked || locked.deleted_at !== null)
340
- throw itemNotFound();
341
- if (locked.policy === "disabled")
342
- throw itemDisabled();
343
- if (locked.policy !== "needs_approval")
344
- return undefined;
345
- const grant = await t
346
- .selectFrom("catalog_org_grants")
347
- .select("item_id")
348
- .where("item_id", "=", itemId)
349
- .where("org_id", "=", orgId)
350
- .executeTakeFirst();
351
- if (grant)
352
- return undefined;
353
- return this.requests.requestDeployment(orgId, actor, locked, body.version, opts);
553
+ if (enabled) {
554
+ if (!item)
555
+ throw itemNotFound();
556
+ const listed = await this.db
557
+ .selectFrom("catalog_item_scope_orgs")
558
+ .select("item_id")
559
+ .where("item_id", "=", itemId)
560
+ .where("org_id", "=", orgId)
561
+ .executeTakeFirst();
562
+ if (!visibleTo({ scope: item.builtin ? "all" : item.scope }, listed !== undefined)) {
563
+ throw itemNotFound();
564
+ }
565
+ }
566
+ await upsertOrgSwitch(this.db, orgId, itemId, enabled, actor);
354
567
  }
355
568
  /** The actor can install something in the org (forbidden otherwise), checked before item errors. */
356
569
  async assertCanInstall(orgId, actor) {
@@ -362,10 +575,7 @@ let OrgCatalogService = class OrgCatalogService {
362
575
  };
363
576
  __decorate([
364
577
  Transactional()
365
- ], OrgCatalogService.prototype, "requestIfNeeded", null);
366
- __decorate([
367
- Transactional()
368
- ], OrgCatalogService.prototype, "upgradeRequestIfNeeded", null);
578
+ ], OrgCatalogService.prototype, "recordSwitch", null);
369
579
  __decorate([
370
580
  Transactional()
371
581
  ], OrgCatalogService.prototype, "assertCanInstall", null);
@@ -375,10 +585,9 @@ OrgCatalogService = __decorate([
375
585
  __param(1, Inject(OrgLock)),
376
586
  __param(2, Inject(StorageService)),
377
587
  __param(3, Inject(ExtensionRegistry)),
378
- __param(4, Inject(CatalogRequestsService)),
379
- __param(5, Inject(PluginInstaller)),
380
- __param(6, Inject(PluginUpgrader)),
381
- __param(7, Inject(KERNEL_LOGGER)),
382
- __param(8, Inject(TransactionHost))
588
+ __param(4, Inject(PluginInstaller)),
589
+ __param(5, Inject(KERNEL_LOGGER)),
590
+ __param(6, Inject(TransactionHost)),
591
+ __param(7, Inject(ExtensionAvailability))
383
592
  ], OrgCatalogService);
384
593
  export { OrgCatalogService };