@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
@@ -1,28 +1,55 @@
1
- import { EnterpriseAdminLock } from "../identity/enterprise-admin.js";
1
+ import { ApiError } from "../errors.js";
2
+ import { SuperAdminLock } from "../identity/super-admin.js";
2
3
  import { KernelConfigService } from "../infra/config/kernel-config.service.js";
3
4
  import { KernelDb } from "../infra/database/kernel-db.js";
4
5
  import { TransactionHost } from "../infra/database/transaction-host.js";
5
6
  import type { KernelLogger } from "../log.js";
7
+ import { OrgLock } from "../orgs/org-lock.js";
6
8
  import { ExtensionAdmin, type PublishBus } from "./admin-view.js";
7
9
  import { ExtensionBlobs } from "./blobs.js";
8
10
  import { ExtensionLifecycle } from "./lifecycle.js";
9
11
  import { PluginInstallLock } from "./locks.js";
10
12
  import type { AdminExtensionView } from "./permission-view.js";
11
13
  import { ExtensionRegistry } from "./registry.js";
14
+ import { SingleProviderGuard, type SingleProviderNote } from "./single-provider.js";
12
15
  /**
13
16
  * Deployment-level extension install / enable / disable / uninstall (C16 / D15): writes only the PG
14
17
  * desired state (`extension_installs`) and the audit, then publishes `kernel.plugins.changed` after
15
18
  * the commit (a failure only warns; the periodic reconcile catches up); replicas converge through
16
19
  * reconcile, no restart. It does not wait for replicas: the returned view may say `converging`.
17
20
  * Stateless, shared by every replica; the CLI uses it too (`actor` is null).
18
- * Every write runs in a transaction: first `lockEnterpriseAdminsAndAuthorize` (skipped by the CLI),
21
+ * Every write runs in a transaction: first `lockSuperAdminsAndAuthorize` (skipped by the CLI),
19
22
  * then an advisory lock by extension name and a lock on the install record row.
20
23
  */
24
+ /**
25
+ * An operation an org admin runs as the owner of an org plugin (an owner update removing or putting
26
+ * back its extension, ruling P3-12'): the actor is re-checked as an admin of `orgId`
27
+ * (`catalog.upload`, under the org row lock) instead of as a super admin, and the audit records
28
+ * the actor with `ownerOrgId`.
29
+ */
30
+ export interface ExtensionOpsOwner {
31
+ orgId: string;
32
+ /**
33
+ * Putting the extension back after a failed owner update: the actor was authorized when the
34
+ * update started, so no role is checked again (a demotion meanwhile must not leave the
35
+ * deployment without the extension it had); the audit keeps the actor, marked `rollback`.
36
+ */
37
+ rollback?: true;
38
+ }
39
+ /**
40
+ * The admin view after an install; `leftDisabled`: this version change left the enabled extension
41
+ * disabled because its new version provides a single-provider point another extension holds.
42
+ */
43
+ export type InstallView = AdminExtensionView & {
44
+ leftDisabled?: SingleProviderNote;
45
+ };
21
46
  export declare class ExtensionAdminOps {
22
47
  private readonly kdb;
23
48
  readonly txHost: TransactionHost;
24
- /** The enterprise admin lock (identity/enterprise-admin.ts): joins the transaction. */
49
+ /** The super admin lock (identity/super-admin.ts): joins the transaction. */
25
50
  private readonly adminLock;
51
+ /** The owner org's lock: an owner's operation re-checks its admin under it. */
52
+ private readonly orgLock;
26
53
  private readonly installLock;
27
54
  /**
28
55
  * The admin view after the operation, degraded when the package cannot be read
@@ -44,9 +71,13 @@ export declare class ExtensionAdminOps {
44
71
  */
45
72
  private readonly lifecycle;
46
73
  private readonly log;
74
+ /** One enabled provider per single-provider extension point (checked in the enable). */
75
+ private readonly singleProvider;
47
76
  constructor(kdb: KernelDb, txHost: TransactionHost,
48
- /** The enterprise admin lock (identity/enterprise-admin.ts): joins the transaction. */
49
- adminLock: EnterpriseAdminLock, installLock: PluginInstallLock,
77
+ /** The super admin lock (identity/super-admin.ts): joins the transaction. */
78
+ adminLock: SuperAdminLock,
79
+ /** The owner org's lock: an owner's operation re-checks its admin under it. */
80
+ orgLock: OrgLock, installLock: PluginInstallLock,
50
81
  /**
51
82
  * The admin view after the operation, degraded when the package cannot be read
52
83
  * (`get(name, { allowUnreadable: true })`). If it throws, the operation has already committed:
@@ -64,13 +95,15 @@ export declare class ExtensionAdminOps {
64
95
  * When the publish fails this replica reconciles itself (not awaited; other replicas catch up
65
96
  * periodically). A no-op where the lifecycle never started (the CLI).
66
97
  */
67
- lifecycle: ExtensionLifecycle, log: KernelLogger);
98
+ lifecycle: ExtensionLifecycle, log: KernelLogger,
99
+ /** One enabled provider per single-provider extension point (checked in the enable). */
100
+ singleProvider: SingleProviderGuard);
68
101
  private get db();
69
102
  /**
70
103
  * New install or version change (upgrade / downgrade): the install record points at package
71
104
  * `sha256`; the desired state is unchanged (a new install is disabled). Audit `extension.installed`.
72
105
  * - Config-declared -> `extension.config_declared`; a required bootstrap plugin may be
73
- * installed at another version (an enterprise admin upgrades it; `required` is kept);
106
+ * installed at another version (a super admin upgrades it; `required` is kept);
74
107
  * - package not in the package store -> `extension.package_not_found`; the extension name in the
75
108
  * package is not `name` -> `extension.name_mismatch`;
76
109
  * - an install record of the same name exists but comes from another npm package ->
@@ -86,27 +119,56 @@ export declare class ExtensionAdminOps {
86
119
  * go back to a version whose migrations are a subset of those already run).
87
120
  * Already pointing at the same package: nothing changes (no audit; for a changed source item only,
88
121
  * see below).
89
- * `opts.catalogItemId`: the source item when installing through the enterprise catalog, stored
122
+ * `opts.catalogItemId`: the source item when installing through the platform catalog, stored
90
123
  * in `extension_installs.catalog_item_id` (F-AA) and registered in `extension_catalog_sources`;
91
124
  * installing outside the catalog (upload / npm / CLI) **keeps** the existing source items (T26
92
125
  * fix: clearing them would let org enablement bypass catalog policy, C22). The detail of the
93
126
  * `extension.installed` audit carries `catalogItemId`; when it already points at the same package
94
127
  * and only the source item changed, only that column changes, audit
95
- * `extension.install_source_changed`.
128
+ * `extension.install_source_changed`. With `opts.liveItem` (an org upload's confirmation) a
129
+ * source item gone or removed when its row lock is granted -> 409 `catalog.item_removed`, before
130
+ * anything is written.
131
+ * A version change of an enabled extension whose new version provides a single-provider
132
+ * extension point the old one did not, while another extension holds it: the new version is
133
+ * installed **disabled** (`enabled_at` cleared, audit `extension.disabled` with `singleProvider`)
134
+ * rather than the upgrade refused, so the package moves and the provider running keeps the point;
135
+ * the result's `leftDisabled` says why (the shape of `enableUnlessOccupied`'s refusal). Checked
136
+ * under the point's lock after the install lock (the enable's order).
96
137
  */
97
138
  install(name: string, sha256: string, actor: string | null, actorTokenId?: string, opts?: {
98
139
  catalogItemId?: string;
99
- }): Promise<AdminExtensionView>;
140
+ liveItem?: true;
141
+ owner?: ExtensionOpsOwner;
142
+ }): Promise<InstallView>;
100
143
  private writeInstall;
101
- /** Enable on the deployment (audit `extension.enabled`); no change when already enabled. Org enablement is unchanged. */
102
- enable(name: string, actor: string | null, actorTokenId?: string): Promise<AdminExtensionView>;
144
+ /**
145
+ * Enable on the deployment (audit `extension.enabled`); no change when already enabled. Org
146
+ * enablement is unchanged. Another enabled extension providing one of its single-provider
147
+ * extension points -> 409 `extension.single_provider_enabled` (the super admin disables that one
148
+ * first; checked under the point's lock, see {@link SingleProviderGuard}).
149
+ */
150
+ enable(name: string, actor: string | null, actorTokenId?: string, owner?: ExtensionOpsOwner,
151
+ /** Merged into the audit detail (a write made through the Platform tool). */
152
+ auditDetail?: Record<string, unknown>): Promise<AdminExtensionView>;
153
+ /**
154
+ * The enable of an install or import path: like {@link enable}, but an occupied single-provider
155
+ * extension point leaves the extension disabled instead of failing, and returns the refusal
156
+ * (`enabled: false`) for the caller to report. Every other error is thrown.
157
+ */
158
+ enableUnlessOccupied(name: string, actor: string | null, actorTokenId?: string, owner?: ExtensionOpsOwner): Promise<{
159
+ enabled: true;
160
+ } | {
161
+ enabled: false;
162
+ refusal: ApiError;
163
+ note: SingleProviderNote;
164
+ }>;
103
165
  /**
104
166
  * Disables on the deployment (audit `extension.disabled`); no change when already disabled. Every
105
167
  * replica unloads it (draining in-flight calls), and the extensions that `requires` it unload with
106
168
  * it; the org enablement switch is unchanged and the org page shows it as unavailable. A required
107
169
  * bootstrap plugin -> `extension.required`.
108
170
  */
109
- disable(name: string, actor: string | null, actorTokenId?: string): Promise<AdminExtensionView>;
171
+ disable(name: string, actor: string | null, actorTokenId?: string, owner?: ExtensionOpsOwner, auditDetail?: Record<string, unknown>): Promise<AdminExtensionView>;
110
172
  /**
111
173
  * Uninstall: a required bootstrap plugin -> `extension.required`; must be disabled first
112
174
  * (otherwise `extension.not_disabled`); deletes the install record
@@ -115,7 +177,7 @@ export declare class ExtensionAdminOps {
115
177
  * permission snapshot and the package in the package store are untouched (a reinstall picks them
116
178
  * up).
117
179
  */
118
- uninstall(name: string, actor: string | null, actorTokenId?: string): Promise<void>;
180
+ uninstall(name: string, actor: string | null, actorTokenId?: string, owner?: ExtensionOpsOwner, auditDetail?: Record<string, unknown>): Promise<void>;
119
181
  private writeUninstall;
120
182
  private setState;
121
183
  private writeState;
@@ -123,6 +185,11 @@ export declare class ExtensionAdminOps {
123
185
  * 提交后的视图:拼视图失败(读包、查状态行出错)时操作已经生效,不能再报失败——记 error,返回降级视图。
124
186
  */
125
187
  private viewAfterCommit;
188
+ /**
189
+ * Re-checks the actor in the operation's transaction: a super admin, or for an owner's operation
190
+ * an admin of the owner org; no account (the CLI, the kernel itself) is not checked.
191
+ */
192
+ private authorize;
126
193
  /** 配置声明的插件不经安装记录管理。 */
127
194
  private assertInstallable;
128
195
  /** 按插件名串行(`PluginInstallLock`,覆盖「还没有行」的新装),再锁住已有的安装记录行。 */
@@ -14,13 +14,14 @@ import semver from "semver";
14
14
  import { pluginSchemaName } from "../ctx/create-ctx.js";
15
15
  import { ApiError } from "../errors.js";
16
16
  import { audit } from "../identity/audit.js";
17
- import { EnterpriseAdminLock } from "../identity/enterprise-admin.js";
17
+ import { SuperAdminLock } from "../identity/super-admin.js";
18
18
  import { KernelConfigService } from "../infra/config/kernel-config.service.js";
19
19
  import { afterCommit } from "../infra/database/after-commit.js";
20
20
  import { KernelDb } from "../infra/database/kernel-db.js";
21
21
  import { TransactionHost } from "../infra/database/transaction-host.js";
22
22
  import { Transactional } from "../infra/database/transactional.decorator.js";
23
23
  import { KERNEL_BUS, KERNEL_LOGGER } from "../infra/tokens.js";
24
+ import { OrgLock } from "../orgs/org-lock.js";
24
25
  import { ExtensionAdmin } from "./admin-view.js";
25
26
  import { ExtensionBlobs } from "./blobs.js";
26
27
  import { ExtensionLifecycle, PLUGINS_CHANGED_TOPIC } from "./lifecycle.js";
@@ -28,19 +29,12 @@ import { PluginInstallLock } from "./locks.js";
28
29
  import { unrunMigrations } from "./migrate-lock.js";
29
30
  import { ExtensionPackageError, extensionPackageApiError, readExtensionPackage, } from "./package.js";
30
31
  import { ExtensionRegistry } from "./registry.js";
31
- /**
32
- * Deployment-level extension install / enable / disable / uninstall (C16 / D15): writes only the PG
33
- * desired state (`extension_installs`) and the audit, then publishes `kernel.plugins.changed` after
34
- * the commit (a failure only warns; the periodic reconcile catches up); replicas converge through
35
- * reconcile, no restart. It does not wait for replicas: the returned view may say `converging`.
36
- * Stateless, shared by every replica; the CLI uses it too (`actor` is null).
37
- * Every write runs in a transaction: first `lockEnterpriseAdminsAndAuthorize` (skipped by the CLI),
38
- * then an advisory lock by extension name and a lock on the install record row.
39
- */
32
+ import { isSingleProviderCode, SingleProviderGuard, singleProviderNote, } from "./single-provider.js";
40
33
  let ExtensionAdminOps = class ExtensionAdminOps {
41
34
  kdb;
42
35
  txHost;
43
36
  adminLock;
37
+ orgLock;
44
38
  installLock;
45
39
  admin;
46
40
  registry;
@@ -49,9 +43,12 @@ let ExtensionAdminOps = class ExtensionAdminOps {
49
43
  bus;
50
44
  lifecycle;
51
45
  log;
46
+ singleProvider;
52
47
  constructor(kdb, txHost,
53
- /** The enterprise admin lock (identity/enterprise-admin.ts): joins the transaction. */
54
- adminLock, installLock,
48
+ /** The super admin lock (identity/super-admin.ts): joins the transaction. */
49
+ adminLock,
50
+ /** The owner org's lock: an owner's operation re-checks its admin under it. */
51
+ orgLock, installLock,
55
52
  /**
56
53
  * The admin view after the operation, degraded when the package cannot be read
57
54
  * (`get(name, { allowUnreadable: true })`). If it throws, the operation has already committed:
@@ -69,10 +66,13 @@ let ExtensionAdminOps = class ExtensionAdminOps {
69
66
  * When the publish fails this replica reconciles itself (not awaited; other replicas catch up
70
67
  * periodically). A no-op where the lifecycle never started (the CLI).
71
68
  */
72
- lifecycle, log) {
69
+ lifecycle, log,
70
+ /** One enabled provider per single-provider extension point (checked in the enable). */
71
+ singleProvider) {
73
72
  this.kdb = kdb;
74
73
  this.txHost = txHost;
75
74
  this.adminLock = adminLock;
75
+ this.orgLock = orgLock;
76
76
  this.installLock = installLock;
77
77
  this.admin = admin;
78
78
  this.registry = registry;
@@ -81,6 +81,7 @@ let ExtensionAdminOps = class ExtensionAdminOps {
81
81
  this.bus = bus;
82
82
  this.lifecycle = lifecycle;
83
83
  this.log = log;
84
+ this.singleProvider = singleProvider;
84
85
  }
85
86
  get db() {
86
87
  return this.kdb.db;
@@ -89,7 +90,7 @@ let ExtensionAdminOps = class ExtensionAdminOps {
89
90
  * New install or version change (upgrade / downgrade): the install record points at package
90
91
  * `sha256`; the desired state is unchanged (a new install is disabled). Audit `extension.installed`.
91
92
  * - Config-declared -> `extension.config_declared`; a required bootstrap plugin may be
92
- * installed at another version (an enterprise admin upgrades it; `required` is kept);
93
+ * installed at another version (a super admin upgrades it; `required` is kept);
93
94
  * - package not in the package store -> `extension.package_not_found`; the extension name in the
94
95
  * package is not `name` -> `extension.name_mismatch`;
95
96
  * - an install record of the same name exists but comes from another npm package ->
@@ -105,19 +106,27 @@ let ExtensionAdminOps = class ExtensionAdminOps {
105
106
  * go back to a version whose migrations are a subset of those already run).
106
107
  * Already pointing at the same package: nothing changes (no audit; for a changed source item only,
107
108
  * see below).
108
- * `opts.catalogItemId`: the source item when installing through the enterprise catalog, stored
109
+ * `opts.catalogItemId`: the source item when installing through the platform catalog, stored
109
110
  * in `extension_installs.catalog_item_id` (F-AA) and registered in `extension_catalog_sources`;
110
111
  * installing outside the catalog (upload / npm / CLI) **keeps** the existing source items (T26
111
112
  * fix: clearing them would let org enablement bypass catalog policy, C22). The detail of the
112
113
  * `extension.installed` audit carries `catalogItemId`; when it already points at the same package
113
114
  * and only the source item changed, only that column changes, audit
114
- * `extension.install_source_changed`.
115
+ * `extension.install_source_changed`. With `opts.liveItem` (an org upload's confirmation) a
116
+ * source item gone or removed when its row lock is granted -> 409 `catalog.item_removed`, before
117
+ * anything is written.
118
+ * A version change of an enabled extension whose new version provides a single-provider
119
+ * extension point the old one did not, while another extension holds it: the new version is
120
+ * installed **disabled** (`enabled_at` cleared, audit `extension.disabled` with `singleProvider`)
121
+ * rather than the upgrade refused, so the package moves and the provider running keeps the point;
122
+ * the result's `leftDisabled` says why (the shape of `enableUnlessOccupied`'s refusal). Checked
123
+ * under the point's lock after the install lock (the enable's order).
115
124
  */
116
125
  async install(name, sha256, actor, actorTokenId, opts = {}) {
117
126
  this.assertInstallable(name);
118
127
  const pkg = await this.db
119
128
  .selectFrom("extension_packages")
120
- .select(["sha256", "name", "package_name", "version", "source"])
129
+ .select(["sha256", "name", "package_name", "version", "source", "section"])
121
130
  .where("sha256", "=", sha256)
122
131
  .executeTakeFirst();
123
132
  if (!pkg) {
@@ -136,12 +145,39 @@ let ExtensionAdminOps = class ExtensionAdminOps {
136
145
  throw e instanceof ExtensionPackageError ? extensionPackageApiError(e) : e;
137
146
  });
138
147
  const changed = await this.writeInstall(name, sha256, pkg, target, actor, actorTokenId, opts);
139
- return this.viewAfterCommit(name, { version: pkg.version, sha256, state: changed.state });
148
+ const view = await this.viewAfterCommit(name, {
149
+ version: pkg.version,
150
+ sha256,
151
+ state: changed.state,
152
+ });
153
+ if (changed.leftDisabled === undefined)
154
+ return view;
155
+ this.log.info("extension upgraded but left disabled: its single-provider extension point is taken", {
156
+ plugin: name,
157
+ details: changed.leftDisabled.singleProvider,
158
+ });
159
+ return { ...view, leftDisabled: changed.leftDisabled };
140
160
  }
141
161
  async writeInstall(name, sha256, pkg, target, actor, actorTokenId, opts) {
142
162
  const db = this.db;
143
- if (actor !== null)
144
- await this.adminLock.lockAndAuthorize(actor);
163
+ await this.authorize(actor, opts.owner);
164
+ // The source item's row before the install lock (the global lock order: the item, then the
165
+ // install lock; ruling P3-50): the catalog source and install rows written below check it by
166
+ // foreign key (FOR KEY SHARE), and an org deletion or an item removal holds it FOR UPDATE
167
+ // while it waits for the install lock (CatalogService.removeIn). Taken after the install lock
168
+ // instead, the two deadlock (40P01).
169
+ if (opts.catalogItemId !== undefined) {
170
+ const item = await db
171
+ .selectFrom("catalog_items")
172
+ .select("deleted_at")
173
+ .where("id", "=", opts.catalogItemId)
174
+ .forKeyShare()
175
+ .executeTakeFirst();
176
+ // The lock waits out a removal holding the row; the row read then is the removed one
177
+ if (opts.liveItem && (item === undefined || item.deleted_at !== null)) {
178
+ throw new ApiError("catalog.item_removed", `${name} was removed while its confirmation was running; nothing of it stays installed`);
179
+ }
180
+ }
145
181
  const row = await this.lockRow(name);
146
182
  // 不经目录重装时保留原来的来源条目(不清空,C22)
147
183
  const catalogItemId = opts.catalogItemId ?? row?.catalog_item_id ?? null;
@@ -198,6 +234,26 @@ let ExtensionAdminOps = class ExtensionAdminOps {
198
234
  throw new ApiError("extension.downgrade_unsupported", `Extension ${name} ${pkg.version} has migrations that were never run here (${unrun.join(", ")}); extension migrations only expand, so downgrade only to a version whose migrations have all been applied`, unrun.map((file) => ({ file })));
199
235
  }
200
236
  }
237
+ // An enabled extension whose new version newly provides a single-provider point another one
238
+ // holds: installed disabled (the provider running keeps the point), and the result says why
239
+ let leftDisabled;
240
+ if (row?.desired_state === "enabled") {
241
+ const before = new Set(providesOf(row.section));
242
+ const added = providesOf(pkg.section).filter((p) => !before.has(p));
243
+ const block = await this.singleProvider.lockedOccupant(name, added);
244
+ if (block) {
245
+ leftDisabled = await this.singleProvider.note(block, name);
246
+ await db
247
+ .updateTable("extension_installs")
248
+ .set({ desired_state: "disabled", enabled_at: null })
249
+ .where("name", "=", name)
250
+ .execute();
251
+ await this.audit(actor, actorTokenId, "extension.disabled", name, row.version, row.sha256, {
252
+ singleProvider: block,
253
+ ...ownerDetail(opts.owner),
254
+ });
255
+ }
256
+ }
201
257
  await db
202
258
  .insertInto("extension_installs")
203
259
  .values({
@@ -221,13 +277,44 @@ let ExtensionAdminOps = class ExtensionAdminOps {
221
277
  .execute();
222
278
  await this.audit(actor, actorTokenId, "extension.installed", name, pkg.version, sha256, {
223
279
  catalogItemId,
280
+ ...ownerDetail(opts.owner),
224
281
  });
225
282
  afterCommit(() => this.notify(name));
283
+ if (leftDisabled !== undefined)
284
+ return { changed: true, state: "disabled", leftDisabled };
226
285
  return { changed: true, state: row?.desired_state ?? "disabled" };
227
286
  }
228
- /** Enable on the deployment (audit `extension.enabled`); no change when already enabled. Org enablement is unchanged. */
229
- enable(name, actor, actorTokenId) {
230
- return this.setState(name, "enabled", actor, actorTokenId);
287
+ /**
288
+ * Enable on the deployment (audit `extension.enabled`); no change when already enabled. Org
289
+ * enablement is unchanged. Another enabled extension providing one of its single-provider
290
+ * extension points -> 409 `extension.single_provider_enabled` (the super admin disables that one
291
+ * first; checked under the point's lock, see {@link SingleProviderGuard}).
292
+ */
293
+ enable(name, actor, actorTokenId, owner,
294
+ /** Merged into the audit detail (a write made through the Platform tool). */
295
+ auditDetail) {
296
+ return this.setState(name, "enabled", actor, actorTokenId, owner, auditDetail);
297
+ }
298
+ /**
299
+ * The enable of an install or import path: like {@link enable}, but an occupied single-provider
300
+ * extension point leaves the extension disabled instead of failing, and returns the refusal
301
+ * (`enabled: false`) for the caller to report. Every other error is thrown.
302
+ */
303
+ async enableUnlessOccupied(name, actor, actorTokenId, owner) {
304
+ try {
305
+ await this.enable(name, actor, actorTokenId, owner);
306
+ return { enabled: true };
307
+ }
308
+ catch (e) {
309
+ if (e instanceof ApiError && isSingleProviderCode(e.code)) {
310
+ this.log.info("extension installed disabled: its single-provider extension point is taken", {
311
+ plugin: name,
312
+ details: e.details,
313
+ });
314
+ return { enabled: false, refusal: e, note: singleProviderNote(e) };
315
+ }
316
+ throw e;
317
+ }
231
318
  }
232
319
  /**
233
320
  * Disables on the deployment (audit `extension.disabled`); no change when already disabled. Every
@@ -235,8 +322,8 @@ let ExtensionAdminOps = class ExtensionAdminOps {
235
322
  * it; the org enablement switch is unchanged and the org page shows it as unavailable. A required
236
323
  * bootstrap plugin -> `extension.required`.
237
324
  */
238
- disable(name, actor, actorTokenId) {
239
- return this.setState(name, "disabled", actor, actorTokenId);
325
+ disable(name, actor, actorTokenId, owner, auditDetail) {
326
+ return this.setState(name, "disabled", actor, actorTokenId, owner, auditDetail);
240
327
  }
241
328
  /**
242
329
  * Uninstall: a required bootstrap plugin -> `extension.required`; must be disabled first
@@ -246,14 +333,13 @@ let ExtensionAdminOps = class ExtensionAdminOps {
246
333
  * permission snapshot and the package in the package store are untouched (a reinstall picks them
247
334
  * up).
248
335
  */
249
- async uninstall(name, actor, actorTokenId) {
336
+ async uninstall(name, actor, actorTokenId, owner, auditDetail) {
250
337
  this.assertInstallable(name);
251
- await this.writeUninstall(name, actor, actorTokenId);
338
+ await this.writeUninstall(name, actor, actorTokenId, owner, auditDetail);
252
339
  }
253
- async writeUninstall(name, actor, actorTokenId) {
340
+ async writeUninstall(name, actor, actorTokenId, owner, auditDetail) {
254
341
  const db = this.db;
255
- if (actor !== null)
256
- await this.adminLock.lockAndAuthorize(actor);
342
+ await this.authorize(actor, owner);
257
343
  const row = await this.lockRow(name);
258
344
  if (!row)
259
345
  throw notFound(name);
@@ -265,22 +351,24 @@ let ExtensionAdminOps = class ExtensionAdminOps {
265
351
  await db.deleteFrom("extension_installs").where("name", "=", name).execute();
266
352
  // 来源条目随安装记录一起删:之后不经目录重新安装时不再受旧条目的策略约束(T26 裁决)
267
353
  await db.deleteFrom("extension_catalog_sources").where("plugin", "=", name).execute();
268
- await this.audit(actor, actorTokenId, "extension.uninstalled", name, row.version, row.sha256);
354
+ await this.audit(actor, actorTokenId, "extension.uninstalled", name, row.version, row.sha256, {
355
+ ...ownerDetail(owner),
356
+ ...auditDetail,
357
+ });
269
358
  afterCommit(() => this.notify(name));
270
359
  }
271
- async setState(name, state, actor, actorTokenId) {
360
+ async setState(name, state, actor, actorTokenId, owner, auditDetail) {
272
361
  this.assertInstallable(name);
273
- const result = await this.writeState(name, state, actor, actorTokenId);
362
+ const result = await this.writeState(name, state, actor, actorTokenId, owner, auditDetail);
274
363
  return this.viewAfterCommit(name, {
275
364
  version: result.row.version,
276
365
  sha256: result.row.sha256,
277
366
  state,
278
367
  });
279
368
  }
280
- async writeState(name, state, actor, actorTokenId) {
369
+ async writeState(name, state, actor, actorTokenId, owner, auditDetail) {
281
370
  const db = this.db;
282
- if (actor !== null)
283
- await this.adminLock.lockAndAuthorize(actor);
371
+ await this.authorize(actor, owner);
284
372
  const row = await this.lockRow(name);
285
373
  if (!row)
286
374
  throw notFound(name);
@@ -288,16 +376,22 @@ let ExtensionAdminOps = class ExtensionAdminOps {
288
376
  throw required(name);
289
377
  if (row.desired_state === state)
290
378
  return { row, changed: false };
379
+ if (state === "enabled") {
380
+ await this.singleProvider.assertFree(name, providesOf(row.section));
381
+ }
291
382
  await db
292
383
  .updateTable("extension_installs")
293
384
  .set({
294
385
  desired_state: state,
386
+ // When it became enabled: the earliest enabled of two providers of a single-provider point
387
+ // is the one replicas load (only state left from before a second enable was refused)
388
+ enabled_at: state === "enabled" ? sql `now()` : null,
295
389
  updated_by: actor,
296
390
  updated_at: sql `now()`,
297
391
  })
298
392
  .where("name", "=", name)
299
393
  .execute();
300
- await this.audit(actor, actorTokenId, state === "enabled" ? "extension.enabled" : "extension.disabled", name, row.version, row.sha256);
394
+ await this.audit(actor, actorTokenId, state === "enabled" ? "extension.enabled" : "extension.disabled", name, row.version, row.sha256, { ...ownerDetail(owner), ...auditDetail });
301
395
  afterCommit(() => this.notify(name));
302
396
  return { row, changed: true };
303
397
  }
@@ -316,6 +410,22 @@ let ExtensionAdminOps = class ExtensionAdminOps {
316
410
  return fallbackView(name, known, err);
317
411
  }
318
412
  }
413
+ /**
414
+ * Re-checks the actor in the operation's transaction: a super admin, or for an owner's operation
415
+ * an admin of the owner org; no account (the CLI, the kernel itself) is not checked.
416
+ */
417
+ async authorize(actor, owner) {
418
+ if (owner?.rollback === true)
419
+ return;
420
+ if (owner !== undefined) {
421
+ if (actor === null)
422
+ throw new Error("an owner's extension operation has an actor");
423
+ await this.orgLock.lockAndAuthorize(owner.orgId, actor, "catalog.upload");
424
+ }
425
+ else if (actor !== null) {
426
+ await this.adminLock.lockAndAuthorize(actor);
427
+ }
428
+ }
319
429
  /** 配置声明的插件不经安装记录管理。 */
320
430
  assertInstallable(name) {
321
431
  const declared = this.registry.declared().get(name);
@@ -336,6 +446,7 @@ let ExtensionAdminOps = class ExtensionAdminOps {
336
446
  "extension_installs.catalog_item_id",
337
447
  "extension_installs.required",
338
448
  "extension_packages.package_name",
449
+ "extension_packages.section",
339
450
  ])
340
451
  .where("extension_installs.name", "=", name)
341
452
  .forUpdate("extension_installs")
@@ -372,6 +483,9 @@ __decorate([
372
483
  __decorate([
373
484
  Transactional()
374
485
  ], ExtensionAdminOps.prototype, "writeState", null);
486
+ __decorate([
487
+ Transactional({ propagation: "mandatory" })
488
+ ], ExtensionAdminOps.prototype, "authorize", null);
375
489
  __decorate([
376
490
  Transactional({ propagation: "mandatory" })
377
491
  ], ExtensionAdminOps.prototype, "lockRow", null);
@@ -379,15 +493,17 @@ ExtensionAdminOps = __decorate([
379
493
  Injectable(),
380
494
  __param(0, Inject(KernelDb)),
381
495
  __param(1, Inject(TransactionHost)),
382
- __param(2, Inject(EnterpriseAdminLock)),
383
- __param(3, Inject(PluginInstallLock)),
384
- __param(4, Inject(ExtensionAdmin)),
385
- __param(5, Inject(ExtensionRegistry)),
386
- __param(6, Inject(ExtensionBlobs)),
387
- __param(7, Inject(KernelConfigService)),
388
- __param(8, Inject(KERNEL_BUS)),
389
- __param(9, Inject(ExtensionLifecycle)),
390
- __param(10, Inject(KERNEL_LOGGER))
496
+ __param(2, Inject(SuperAdminLock)),
497
+ __param(3, Inject(OrgLock)),
498
+ __param(4, Inject(PluginInstallLock)),
499
+ __param(5, Inject(ExtensionAdmin)),
500
+ __param(6, Inject(ExtensionRegistry)),
501
+ __param(7, Inject(ExtensionBlobs)),
502
+ __param(8, Inject(KernelConfigService)),
503
+ __param(9, Inject(KERNEL_BUS)),
504
+ __param(10, Inject(ExtensionLifecycle)),
505
+ __param(11, Inject(KERNEL_LOGGER)),
506
+ __param(12, Inject(SingleProviderGuard))
391
507
  ], ExtensionAdminOps);
392
508
  export { ExtensionAdminOps };
393
509
  /**
@@ -396,6 +512,8 @@ export { ExtensionAdminOps };
396
512
  function fallbackView(name, known, err) {
397
513
  return {
398
514
  name,
515
+ // the degraded item reads nothing more (the read that failed may be the database)
516
+ displayName: null,
399
517
  version: known.version,
400
518
  source: "install",
401
519
  sha256: known.sha256,
@@ -416,7 +534,13 @@ function fallbackView(name, known, err) {
416
534
  configValid: true,
417
535
  removable: true,
418
536
  required: false,
537
+ scope: null,
538
+ enabledOrgs: 0,
539
+ builtin: false,
419
540
  installSource: null,
541
+ uiDropped: [],
542
+ client: null,
543
+ clientReports: [],
420
544
  error: `the change was saved, but its current status cannot be read: ${err instanceof Error ? err.message : String(err)}`,
421
545
  };
422
546
  }
@@ -441,7 +565,17 @@ async function hasRetainedData(db, name) {
441
565
  .executeTakeFirst();
442
566
  return hit !== undefined;
443
567
  }
444
- const required = (name) => new ApiError("extension.required", `Extension ${name} is required by this deployment (a bootstrap plugin): it is enabled in every organization and cannot be disabled or uninstalled; an enterprise admin can upgrade it`);
568
+ const required = (name) => new ApiError("extension.required", `Extension ${name} is required by this deployment (a bootstrap plugin): it is enabled in every organization and cannot be disabled or uninstalled; a super admin can upgrade it`);
445
569
  const notFound = (name) => new ApiError("extension.not_found", `Extension ${name} is not installed in this deployment`);
446
570
  /** `to` 比 `from` 旧(任一方不是合法 semver 时不算降级)。 */
447
571
  const isDowngrade = (to, from) => semver.valid(to) !== null && semver.valid(from) !== null && semver.lt(to, from);
572
+ /** The extension points a stored package's reviewed manifest provides. */
573
+ function providesOf(section) {
574
+ return section?.manifest?.provides ?? [];
575
+ }
576
+ /** The audit detail of an owner's operation. */
577
+ function ownerDetail(owner) {
578
+ if (owner === undefined)
579
+ return {};
580
+ return { ownerOrgId: owner.orgId, ...(owner.rollback === true && { rollback: true }) };
581
+ }