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

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 +85 -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 +41 -5
  356. package/dist/extensions/bootstrap.js +121 -19
  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 +4 -2
  509. package/dist/lifecycle/kernel-lifecycle.js +35 -7
  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,15 +1,20 @@
1
- import { EnterpriseAdminLock } from "../identity/enterprise-admin.js";
1
+ import { SuperAdminLock } from "../identity/super-admin.js";
2
2
  import { KernelConfigService } from "../infra/config/kernel-config.service.js";
3
3
  import { KernelDb } from "../infra/database/kernel-db.js";
4
4
  import { TransactionHost } from "../infra/database/transaction-host.js";
5
5
  import type { KernelLogger } from "../log.js";
6
6
  import { ExtensionApprovals } from "./approvals.js";
7
7
  import { ExtensionBlobs } from "./blobs.js";
8
+ import { ExtensionDeploymentConfigService } from "./deployment-config.js";
9
+ import { ExtensionDisplayNames } from "./display-name.js";
10
+ import { EffectiveConfigs } from "./effective-config.js";
8
11
  import { ExtensionHost } from "./host.js";
9
12
  import { ExtensionInstalls } from "./installs.js";
10
13
  import { ExtensionLifecycle, PLUGINS_CHANGED_TOPIC } from "./lifecycle.js";
11
14
  import { PluginApproveLock } from "./locks.js";
12
15
  import { type AdminExtensionView } from "./permission-view.js";
16
+ import { PluginIcons } from "./plugin-icons.js";
17
+ import { SingleProviderGuard } from "./single-provider.js";
13
18
  export { PLUGINS_CHANGED_TOPIC };
14
19
  /** The web approval request body (`POST /api/v1/admin/extensions/:name/approve`). */
15
20
  export interface ApproveBody {
@@ -22,13 +27,13 @@ export interface PublishBus {
22
27
  publish(topic: string, payload: unknown): Promise<void>;
23
28
  }
24
29
  /**
25
- * 部署级插件后台(企业管理员):列表 / 详情与网页批准权限(D8)。无状态,多副本共用;
30
+ * 部署级插件后台(超级管理员):列表 / 详情与网页批准权限(D8)。无状态,多副本共用;
26
31
  * 状态由 PG(安装记录、快照、各副本状态行)与本副本宿主(配置声明插件的清单)推出。
27
32
  */
28
33
  export declare class ExtensionAdmin {
29
34
  private readonly kdb;
30
35
  readonly txHost: TransactionHost;
31
- /** The enterprise admin lock (identity/enterprise-admin.ts): joins the transaction. */
36
+ /** The super admin lock (identity/super-admin.ts): joins the transaction. */
32
37
  private readonly adminLock;
33
38
  private readonly approveLock;
34
39
  private readonly blobs;
@@ -41,17 +46,38 @@ export declare class ExtensionAdmin {
41
46
  private readonly config;
42
47
  private readonly bus;
43
48
  private readonly log;
49
+ private readonly displayNames;
50
+ /** Which required overridable fields the platform left empty (spec A §5.4a). */
51
+ private readonly deploymentConfig;
52
+ /** How many orgs still need their own config for such an extension. */
53
+ private readonly effectiveConfigs;
54
+ /** Which enabled extension keeps a disabled one from being enabled (`enableBlocked`). */
55
+ private readonly singleProvider;
56
+ /** The plugins' icons (admin catalog routes). */
57
+ private readonly icons;
44
58
  private readonly packageSets;
45
59
  constructor(kdb: KernelDb, txHost: TransactionHost,
46
- /** The enterprise admin lock (identity/enterprise-admin.ts): joins the transaction. */
47
- adminLock: EnterpriseAdminLock, approveLock: PluginApproveLock, blobs: ExtensionBlobs, installs: ExtensionInstalls, approvals: ExtensionApprovals,
60
+ /** The super admin lock (identity/super-admin.ts): joins the transaction. */
61
+ adminLock: SuperAdminLock, approveLock: PluginApproveLock, blobs: ExtensionBlobs, installs: ExtensionInstalls, approvals: ExtensionApprovals,
48
62
  /** The config-declared extensions (this replica's host; the CLI fills it from its inspection). */
49
63
  host: ExtensionHost,
50
64
  /** This replica's reconcile after an approval (a no-op where the lifecycle never started: the CLI). */
51
- lifecycle: ExtensionLifecycle, config: KernelConfigService, bus: PublishBus, log: KernelLogger);
65
+ lifecycle: ExtensionLifecycle, config: KernelConfigService, bus: PublishBus, log: KernelLogger, displayNames: ExtensionDisplayNames,
66
+ /** Which required overridable fields the platform left empty (spec A §5.4a). */
67
+ deploymentConfig: ExtensionDeploymentConfigService,
68
+ /** How many orgs still need their own config for such an extension. */
69
+ effectiveConfigs: EffectiveConfigs,
70
+ /** Which enabled extension keeps a disabled one from being enabled (`enableBlocked`). */
71
+ singleProvider: SingleProviderGuard,
72
+ /** The plugins' icons (admin catalog routes). */
73
+ icons: PluginIcons);
52
74
  private get db();
53
- /** 全部插件(配置声明 → 安装记录,各自按名字)。 */
54
- list(): Promise<AdminExtensionView[]>;
75
+ /**
76
+ * Every extension (config-declared, then install records, each by name). With `names`, only
77
+ * those: no other package is read, so a caller that needs a few items (the catalog's pending
78
+ * check) neither pays for nor logs about the packages of unrelated extensions.
79
+ */
80
+ list(names?: ReadonlySet<string>): Promise<AdminExtensionView[]>;
55
81
  /**
56
82
  * A single extension; unknown -> `extension.not_found`; package unreadable ->
57
83
  * `extension.package_unavailable`. With `allowUnreadable` an unreadable package returns the same
@@ -64,7 +90,12 @@ export declare class ExtensionAdmin {
64
90
  allowUnreadable?: boolean;
65
91
  }): Promise<AdminExtensionView>;
66
92
  /**
67
- * Web approval: re-checks the enterprise admin under the lock, compares the reviewed package
93
+ * The review digest of a stored package (the `reviewHash` its extension would show once
94
+ * installed); null when the package cannot be read.
95
+ */
96
+ packageReviewHash(sha256: string): Promise<string | null>;
97
+ /**
98
+ * Web approval: re-checks the super admin under the lock, compares the reviewed package
68
99
  * (`sha256`) and permission digest (`reviewHash`), writes the snapshot (source web) and the
69
100
  * `extension.permissions_approved` audit; after the commit publishes `kernel.plugins.changed` (a
70
101
  * failure only warns) and waits for one reconcile on this replica (other replicas converge through
@@ -74,10 +105,12 @@ export declare class ExtensionAdmin {
74
105
  * recomputed now -> `extension.approval_stale`; a config-declared extension's `sha256` must be
75
106
  * null (otherwise `validation_failed`);
76
107
  * - the snapshot already covers the current permission set (nothing to approve, F-N) ->
77
- * `extension.not_pending`.
108
+ * `extension.not_pending`, except with `confirmBootstrap` when the snapshot is the bootstrap
109
+ * step's (the catalog's confirm re-writes it with source web).
78
110
  */
79
111
  approve(actor: string, name: string, body: ApproveBody, opts?: {
80
112
  actorTokenId?: string;
113
+ confirmBootstrap?: boolean;
81
114
  }): Promise<AdminExtensionView>;
82
115
  private writeApproval;
83
116
  /** 配置声明 → 安装记录(与配置声明重名的安装记录不生效,不单列)。`only` 给出时只取这一个。 */
@@ -86,5 +119,19 @@ export declare class ExtensionAdmin {
86
119
  * 包的权限集合(静态清单 + 迁移 SQL,与上传时的审阅相同)、迁移审阅警告与是否有部署级配置字段;按 sha256 缓存。
87
120
  */
88
121
  private packageInfo;
122
+ /**
123
+ * For each configurable, readable extension whose platform config leaves required overridable
124
+ * fields empty (spec A §5.4a): the number of orgs still needing their own config. Extensions
125
+ * without overridable fields cost no read.
126
+ */
127
+ private orgsNeedingConfig;
89
128
  private views;
129
+ /**
130
+ * The client build of each subject and its newest reports (at most {@link CLIENT_REPORTS_SHOWN}
131
+ * per extension, limited in SQL), in two queries over all subjects. The build is the one a live
132
+ * replica serves (`serving_sha256` of the fresh rows `live`, like the shell reads: the install's
133
+ * own package when it runs, else the newest still served, e.g. the old one beside an upgrade
134
+ * awaiting approval or failed); with none served, the install record package's build.
135
+ */
136
+ private clientsOf;
90
137
  }
@@ -11,7 +11,7 @@ import { SDK_VERSION } from "@capybara-hq/plugin-sdk";
11
11
  import { Inject, Injectable } from "@nestjs/common";
12
12
  import { sql } from "kysely";
13
13
  import { ApiError } from "../errors.js";
14
- import { EnterpriseAdminLock } from "../identity/enterprise-admin.js";
14
+ import { SuperAdminLock } from "../identity/super-admin.js";
15
15
  import { KernelConfigService } from "../infra/config/kernel-config.service.js";
16
16
  import { KernelDb } from "../infra/database/kernel-db.js";
17
17
  import { TransactionHost } from "../infra/database/transaction-host.js";
@@ -19,6 +19,10 @@ import { Transactional } from "../infra/database/transactional.decorator.js";
19
19
  import { KERNEL_BUS, KERNEL_LOGGER } from "../infra/tokens.js";
20
20
  import { ExtensionApprovals, snapshotCovers, writeSnapshot, } from "./approvals.js";
21
21
  import { ExtensionBlobs } from "./blobs.js";
22
+ import { ExtensionDeploymentConfigService } from "./deployment-config.js";
23
+ import { ExtensionDisplayNames } from "./display-name.js";
24
+ import { EffectiveConfigs } from "./effective-config.js";
25
+ import { enabledExtensionsByOrg } from "./enabled.js";
22
26
  import { ExtensionHost } from "./host.js";
23
27
  import { ExtensionInstalls } from "./installs.js";
24
28
  import { ExtensionLifecycle, PLUGINS_CHANGED_TOPIC, STALE_RECONCILE_PERIODS } from "./lifecycle.js";
@@ -26,9 +30,15 @@ import { PluginApproveLock } from "./locks.js";
26
30
  import { ExtensionPackageError, permissionSetOfPackage, readExtensionPackage } from "./package.js";
27
31
  import { buildPermissionSet, diffPermissions } from "./permission-set.js";
28
32
  import { deriveExtensionStatus, migrationWarnings, permissionGroups, permissionKeyItems, reviewHash, } from "./permission-view.js";
33
+ import { PluginIcons } from "./plugin-icons.js";
34
+ import { pluginItemsOf } from "./plugin-items.js";
35
+ import { parseProviderConflict } from "./resolve.js";
36
+ import { SingleProviderGuard } from "./single-provider.js";
29
37
  export { PLUGINS_CHANGED_TOPIC };
30
38
  /** 内容寻址的包 → 权限集合(包不可变,缓存安全;只作缓存,不是跨副本状态)。 */
31
39
  const PACKAGE_SET_CACHE_MAX = 256;
40
+ /** The most client reports an extension view lists (the newest). */
41
+ const CLIENT_REPORTS_SHOWN = 50;
32
42
  /** 空权限集合(包读不到的降级项)。 */
33
43
  const EMPTY_SET = buildPermissionSet({
34
44
  provides: [],
@@ -47,7 +57,7 @@ function assertReadable(s) {
47
57
  }
48
58
  }
49
59
  /**
50
- * 部署级插件后台(企业管理员):列表 / 详情与网页批准权限(D8)。无状态,多副本共用;
60
+ * 部署级插件后台(超级管理员):列表 / 详情与网页批准权限(D8)。无状态,多副本共用;
51
61
  * 状态由 PG(安装记录、快照、各副本状态行)与本副本宿主(配置声明插件的清单)推出。
52
62
  */
53
63
  let ExtensionAdmin = class ExtensionAdmin {
@@ -63,14 +73,27 @@ let ExtensionAdmin = class ExtensionAdmin {
63
73
  config;
64
74
  bus;
65
75
  log;
76
+ displayNames;
77
+ deploymentConfig;
78
+ effectiveConfigs;
79
+ singleProvider;
80
+ icons;
66
81
  packageSets = new Map();
67
82
  constructor(kdb, txHost,
68
- /** The enterprise admin lock (identity/enterprise-admin.ts): joins the transaction. */
83
+ /** The super admin lock (identity/super-admin.ts): joins the transaction. */
69
84
  adminLock, approveLock, blobs, installs, approvals,
70
85
  /** The config-declared extensions (this replica's host; the CLI fills it from its inspection). */
71
86
  host,
72
87
  /** This replica's reconcile after an approval (a no-op where the lifecycle never started: the CLI). */
73
- lifecycle, config, bus, log) {
88
+ lifecycle, config, bus, log, displayNames,
89
+ /** Which required overridable fields the platform left empty (spec A §5.4a). */
90
+ deploymentConfig,
91
+ /** How many orgs still need their own config for such an extension. */
92
+ effectiveConfigs,
93
+ /** Which enabled extension keeps a disabled one from being enabled (`enableBlocked`). */
94
+ singleProvider,
95
+ /** The plugins' icons (admin catalog routes). */
96
+ icons) {
74
97
  this.kdb = kdb;
75
98
  this.txHost = txHost;
76
99
  this.adminLock = adminLock;
@@ -83,13 +106,22 @@ let ExtensionAdmin = class ExtensionAdmin {
83
106
  this.config = config;
84
107
  this.bus = bus;
85
108
  this.log = log;
109
+ this.displayNames = displayNames;
110
+ this.deploymentConfig = deploymentConfig;
111
+ this.effectiveConfigs = effectiveConfigs;
112
+ this.singleProvider = singleProvider;
113
+ this.icons = icons;
86
114
  }
87
115
  get db() {
88
116
  return this.kdb.db;
89
117
  }
90
- /** 全部插件(配置声明 → 安装记录,各自按名字)。 */
91
- async list() {
92
- const subjects = await this.subjects();
118
+ /**
119
+ * Every extension (config-declared, then install records, each by name). With `names`, only
120
+ * those: no other package is read, so a caller that needs a few items (the catalog's pending
121
+ * check) neither pays for nor logs about the packages of unrelated extensions.
122
+ */
123
+ async list(names) {
124
+ const subjects = await this.subjects(undefined, names);
93
125
  return this.views(subjects);
94
126
  }
95
127
  /**
@@ -109,7 +141,20 @@ let ExtensionAdmin = class ExtensionAdmin {
109
141
  return (await this.views([s]))[0];
110
142
  }
111
143
  /**
112
- * Web approval: re-checks the enterprise admin under the lock, compares the reviewed package
144
+ * The review digest of a stored package (the `reviewHash` its extension would show once
145
+ * installed); null when the package cannot be read.
146
+ */
147
+ async packageReviewHash(sha256) {
148
+ try {
149
+ const { set, warnings } = await this.packageInfo(sha256);
150
+ return reviewHash(set, warnings);
151
+ }
152
+ catch {
153
+ return null;
154
+ }
155
+ }
156
+ /**
157
+ * Web approval: re-checks the super admin under the lock, compares the reviewed package
113
158
  * (`sha256`) and permission digest (`reviewHash`), writes the snapshot (source web) and the
114
159
  * `extension.permissions_approved` audit; after the commit publishes `kernel.plugins.changed` (a
115
160
  * failure only warns) and waits for one reconcile on this replica (other replicas converge through
@@ -119,7 +164,8 @@ let ExtensionAdmin = class ExtensionAdmin {
119
164
  * recomputed now -> `extension.approval_stale`; a config-declared extension's `sha256` must be
120
165
  * null (otherwise `validation_failed`);
121
166
  * - the snapshot already covers the current permission set (nothing to approve, F-N) ->
122
- * `extension.not_pending`.
167
+ * `extension.not_pending`, except with `confirmBootstrap` when the snapshot is the bootstrap
168
+ * step's (the catalog's confirm re-writes it with source web).
123
169
  */
124
170
  async approve(actor, name, body, opts = {}) {
125
171
  const s = (await this.subjects(name))[0];
@@ -134,7 +180,7 @@ let ExtensionAdmin = class ExtensionAdmin {
134
180
  throw stale();
135
181
  if (body.reviewHash !== reviewHash(s.set, s.warnings))
136
182
  throw stale();
137
- await this.writeApproval(actor, name, s, opts.actorTokenId, stale);
183
+ await this.writeApproval(actor, name, s, opts.actorTokenId, stale, opts.confirmBootstrap === true);
138
184
  try {
139
185
  await this.bus.publish(PLUGINS_CHANGED_TOPIC, { plugin: name });
140
186
  }
@@ -150,7 +196,7 @@ let ExtensionAdmin = class ExtensionAdmin {
150
196
  }
151
197
  return this.get(name);
152
198
  }
153
- async writeApproval(actor, name, s, actorTokenId, stale) {
199
+ async writeApproval(actor, name, s, actorTokenId, stale, confirmBootstrap) {
154
200
  const db = this.db;
155
201
  await this.adminLock.lockAndAuthorize(actor);
156
202
  await this.approveLock.lock(name);
@@ -167,7 +213,7 @@ let ExtensionAdmin = class ExtensionAdmin {
167
213
  }
168
214
  const snapRow = await db
169
215
  .selectFrom("extension_permission_snapshots")
170
- .select(["version", "permissions"])
216
+ .select(["version", "permissions", "source"])
171
217
  .where("plugin", "=", name)
172
218
  .forUpdate()
173
219
  .executeTakeFirst();
@@ -175,7 +221,9 @@ let ExtensionAdmin = class ExtensionAdmin {
175
221
  version: snapRow.version,
176
222
  permissions: snapRow.permissions,
177
223
  };
178
- if (snapshotCovers(snap, s.set)) {
224
+ // `confirmBootstrap` (the catalog's confirm): a snapshot the bootstrap step wrote was never
225
+ // confirmed by a person, so a covered one is still taken over
226
+ if (snapshotCovers(snap, s.set) && !(confirmBootstrap && snapRow?.source === "bootstrap")) {
179
227
  throw new ApiError("extension.not_pending", `Extension ${name} ${s.version} has no new permissions awaiting approval`);
180
228
  }
181
229
  const { added, removed } = diffPermissions(snap?.permissions, s.set);
@@ -187,10 +235,9 @@ let ExtensionAdmin = class ExtensionAdmin {
187
235
  });
188
236
  }
189
237
  /** 配置声明 → 安装记录(与配置声明重名的安装记录不生效,不单列)。`only` 给出时只取这一个。 */
190
- async subjects(only) {
191
- const declared = this.host
192
- .declaredPlugins()
193
- .filter((p) => only === undefined || p.name === only);
238
+ async subjects(only, names) {
239
+ const wanted = (name) => (only === undefined || name === only) && (names === undefined || names.has(name));
240
+ const declared = this.host.declaredPlugins().filter((p) => wanted(p.name));
194
241
  const taken = new Set(this.host.declaredPlugins().map((p) => p.name));
195
242
  const out = [...declared]
196
243
  .sort((a, b) => a.name.localeCompare(b.name))
@@ -206,7 +253,7 @@ let ExtensionAdmin = class ExtensionAdmin {
206
253
  }));
207
254
  if (only !== undefined && out.length > 0)
208
255
  return out;
209
- const rows = (await this.installs.list()).filter((r) => !taken.has(r.name) && (only === undefined || r.name === only));
256
+ const rows = (await this.installs.list()).filter((r) => !taken.has(r.name) && wanted(r.name));
210
257
  for (const r of rows) {
211
258
  let info;
212
259
  try {
@@ -273,11 +320,41 @@ let ExtensionAdmin = class ExtensionAdmin {
273
320
  }
274
321
  return { ...cached, configurable: cached.set.config.deployment.length > 0 };
275
322
  }
323
+ /**
324
+ * For each configurable, readable extension whose platform config leaves required overridable
325
+ * fields empty (spec A §5.4a): the number of orgs still needing their own config. Extensions
326
+ * without overridable fields cost no read.
327
+ */
328
+ async orgsNeedingConfig(subjects) {
329
+ const out = new Map();
330
+ for (const s of subjects) {
331
+ if (!s.configurable || s.broken !== undefined)
332
+ continue;
333
+ try {
334
+ const missing = await this.deploymentConfig.orgMustConfigure(s.name);
335
+ if (missing.length > 0) {
336
+ out.set(s.name, await this.effectiveConfigs.countNeedingConfig(s.name));
337
+ }
338
+ }
339
+ catch (err) {
340
+ // the list never fails for one extension's config; the field is then left out
341
+ this.log.warn("cannot tell whether orgs must configure the extension", {
342
+ plugin: s.name,
343
+ err,
344
+ });
345
+ }
346
+ }
347
+ return out;
348
+ }
276
349
  async views(subjects) {
277
350
  if (subjects.length === 0)
278
351
  return [];
279
352
  const names = subjects.map((s) => s.name);
280
353
  const snapshots = await this.approvals.all();
354
+ const [displayNames, icons] = await Promise.all([
355
+ this.displayNames.many(names),
356
+ this.icons.many(names, { kind: "admin" }),
357
+ ]);
281
358
  const staleSeconds = STALE_RECONCILE_PERIODS * this.config.get().extensionHost.reconcileIntervalSeconds;
282
359
  const rows = await this.db
283
360
  .selectFrom("extension_replica_status")
@@ -286,7 +363,52 @@ let ExtensionAdmin = class ExtensionAdmin {
286
363
  .where("heartbeat_at", ">", sql `now() - make_interval(secs => ${staleSeconds})`)
287
364
  .orderBy("replica_id")
288
365
  .execute();
366
+ const items = await pluginItemsOf(this.db, names);
367
+ // The other providers named by a `conflict` row, for their display names.
368
+ const conflicts = new Map(rows.flatMap((r) => {
369
+ const c = r.state === "pending" && r.reason === "conflict" && parseProviderConflict(r.detail);
370
+ return c ? [[r.plugin, c]] : [];
371
+ }));
372
+ const otherNames = [
373
+ ...new Set([...conflicts].flatMap(([n, c]) => c.providers.filter((p) => p !== n))),
374
+ ];
375
+ const otherDisplay = otherNames.length > 0 ? await this.displayNames.many(otherNames) : null;
376
+ const needing = await this.orgsNeedingConfig(subjects);
377
+ // A disabled install whose single-provider point another enabled extension provides: enabling
378
+ // it would be refused, so the view says which one to disable first.
379
+ const blocked = new Map();
380
+ for (const s of subjects) {
381
+ if (s.install?.desiredState !== "disabled" || s.broken !== undefined)
382
+ continue;
383
+ const block = await this.singleProvider.occupant(s.name, s.set.provides);
384
+ if (block)
385
+ blocked.set(s.name, block);
386
+ }
387
+ const counts = new Map((await this.db
388
+ .selectFrom(enabledExtensionsByOrg(this.db).as("en"))
389
+ .innerJoin("orgs", "orgs.id", "en.org_id")
390
+ .select(["en.plugin", (eb) => eb.fn.countAll().as("n")])
391
+ .where("orgs.deleted_at", "is", null)
392
+ .where("en.plugin", "in", names)
393
+ .groupBy("en.plugin")
394
+ .execute()).map((r) => [r.plugin, Number(r.n)]));
395
+ const { clients, reports } = await this.clientsOf(subjects, rows);
289
396
  return subjects.map((s) => {
397
+ const of = items.get(s.name);
398
+ const clientFields = {
399
+ client: clients.get(s.name) ?? null,
400
+ clientReports: reports.get(s.name) ?? [],
401
+ };
402
+ const builtin = of?.some((i) => i.builtin) === true || s.install?.required === true;
403
+ const scopeInfo = {
404
+ scope: of?.[0]
405
+ ? builtin || of.some((i) => i.scope === "all")
406
+ ? "all"
407
+ : of[0].scope
408
+ : null,
409
+ enabledOrgs: counts.get(s.name) ?? 0,
410
+ builtin,
411
+ };
290
412
  const replicas = rows.filter((r) => r.plugin === s.name);
291
413
  const snap = snapshots.get(s.name);
292
414
  const { added, removed } = diffPermissions(snap?.permissions, s.set);
@@ -294,9 +416,13 @@ let ExtensionAdmin = class ExtensionAdmin {
294
416
  const configValid = s.configValid ??
295
417
  !replicas.some((r) => r.state === "pending" && r.reason === "config" && r.sha256 === target);
296
418
  const install = s.install;
419
+ const displayName = displayNames.get(s.name) ?? null;
420
+ const icon = icons.get(s.name) ?? null;
297
421
  if (s.broken !== undefined) {
298
422
  return {
299
423
  name: s.name,
424
+ displayName,
425
+ icon,
300
426
  version: s.version,
301
427
  source: s.source,
302
428
  sha256: target,
@@ -319,24 +445,42 @@ let ExtensionAdmin = class ExtensionAdmin {
319
445
  configValid,
320
446
  removable: install?.required !== true,
321
447
  required: install?.required === true,
448
+ ...scopeInfo,
322
449
  installSource: install?.source ?? null,
450
+ uiDropped: this.host.uiDropped(s.name),
451
+ ...clientFields,
323
452
  error: s.broken,
324
453
  };
325
454
  }
326
455
  const permissions = permissionGroups(s.set);
456
+ const status = deriveExtensionStatus({
457
+ source: s.source,
458
+ desired: install && { sha256: install.sha256, state: install.desiredState },
459
+ pendingApproval: !snapshotCovers(snap, s.set),
460
+ configValid,
461
+ migratedSha: install?.migratedSha ?? null,
462
+ replicas: replicas.map((r) => ({ state: r.state, reason: r.reason, sha256: r.sha256 })),
463
+ });
464
+ const conflict = status === "conflict" ? conflicts.get(s.name) : undefined;
465
+ const enableBlocked = blocked.get(s.name);
327
466
  return {
328
467
  name: s.name,
468
+ displayName,
469
+ icon,
329
470
  version: s.version,
330
471
  source: s.source,
331
472
  sha256: target,
332
- status: deriveExtensionStatus({
333
- source: s.source,
334
- desired: install && { sha256: install.sha256, state: install.desiredState },
335
- pendingApproval: !snapshotCovers(snap, s.set),
336
- configValid,
337
- migratedSha: install?.migratedSha ?? null,
338
- replicas: replicas.map((r) => ({ state: r.state, reason: r.reason, sha256: r.sha256 })),
473
+ status,
474
+ ...(conflict && {
475
+ conflict: {
476
+ extensionPoint: conflict.extensionPoint,
477
+ providers: conflict.providers
478
+ .filter((p) => p !== s.name)
479
+ .map((p) => ({ name: p, displayName: otherDisplay?.get(p) ?? null })),
480
+ ...(conflict.unprovided && { unprovided: true }),
481
+ },
339
482
  }),
483
+ ...(enableBlocked && { enableBlocked }),
340
484
  desired: install && {
341
485
  version: install.version,
342
486
  sha256: install.sha256,
@@ -353,12 +497,85 @@ let ExtensionAdmin = class ExtensionAdmin {
353
497
  snapshot: snapshotView(snap),
354
498
  configurable: s.configurable,
355
499
  configValid,
500
+ ...(needing.has(s.name) && { orgsNeedingConfig: needing.get(s.name) }),
356
501
  removable: s.source === "install" && install?.required !== true,
357
502
  required: install?.required === true,
503
+ ...scopeInfo,
358
504
  installSource: install?.source ?? null,
505
+ uiDropped: this.host.uiDropped(s.name),
506
+ ...clientFields,
359
507
  };
360
508
  });
361
509
  }
510
+ /**
511
+ * The client build of each subject and its newest reports (at most {@link CLIENT_REPORTS_SHOWN}
512
+ * per extension, limited in SQL), in two queries over all subjects. The build is the one a live
513
+ * replica serves (`serving_sha256` of the fresh rows `live`, like the shell reads: the install's
514
+ * own package when it runs, else the newest still served, e.g. the old one beside an upgrade
515
+ * awaiting approval or failed); with none served, the install record package's build.
516
+ */
517
+ async clientsOf(subjects, live) {
518
+ const targets = subjects.flatMap((s) => {
519
+ if (s.install === undefined || s.install === null || s.broken !== undefined)
520
+ return [];
521
+ const serving = new Set(live.flatMap((r) => r.plugin === s.name && r.serving_sha256 !== null ? [r.serving_sha256] : []));
522
+ return [{ plugin: s.name, sha: s.install.sha256, serving }];
523
+ });
524
+ const clients = new Map();
525
+ const reports = new Map();
526
+ if (targets.length === 0)
527
+ return { clients, reports };
528
+ const shas = [...new Set(targets.flatMap((t) => [t.sha, ...t.serving]))];
529
+ const builds = await this.db
530
+ .selectFrom("extension_client_builds")
531
+ .select(["package_sha256", "plugin", "sizes", "api_version", "created_at"])
532
+ .where("package_sha256", "in", shas)
533
+ .orderBy("created_at", "desc")
534
+ .execute();
535
+ for (const t of targets) {
536
+ const mine = builds.filter((x) => x.plugin === t.plugin);
537
+ const b = (t.serving.has(t.sha) ? mine.find((x) => x.package_sha256 === t.sha) : undefined) ??
538
+ mine.find((x) => t.serving.has(x.package_sha256)) ??
539
+ (t.serving.size === 0 ? mine.find((x) => x.package_sha256 === t.sha) : undefined);
540
+ if (b === undefined)
541
+ continue;
542
+ clients.set(t.plugin, {
543
+ build: b.package_sha256,
544
+ files: Object.entries(b.sizes)
545
+ .map(([path, bytes]) => ({ path, bytes }))
546
+ .sort((x, y) => x.path.localeCompare(y.path)),
547
+ apiVersion: b.api_version,
548
+ });
549
+ }
550
+ const built = [...clients].map(([plugin, c]) => ({ plugin, build: c.build }));
551
+ if (built.length === 0)
552
+ return { clients, reports };
553
+ const ranked = this.db
554
+ .selectFrom("extension_client_reports")
555
+ .selectAll()
556
+ .select(sql `row_number() over (partition by plugin order by last_at desc)`.as("rank"))
557
+ .where((eb) => eb.or(built.map((c) => eb.and([eb("plugin", "=", c.plugin), eb("build", "=", c.build)]))));
558
+ const rows = await this.db
559
+ .selectFrom(ranked.as("r"))
560
+ .selectAll()
561
+ .where("r.rank", "<=", CLIENT_REPORTS_SHOWN)
562
+ .orderBy("r.last_at", "desc")
563
+ .execute();
564
+ for (const r of rows) {
565
+ const list = reports.get(r.plugin) ?? [];
566
+ list.push({
567
+ orgId: r.org_id,
568
+ contribution: r.contribution,
569
+ kind: r.kind,
570
+ count: r.count,
571
+ firstAt: r.first_at.toISOString(),
572
+ lastAt: r.last_at.toISOString(),
573
+ lastMessage: r.last_message,
574
+ });
575
+ reports.set(r.plugin, list);
576
+ }
577
+ return { clients, reports };
578
+ }
362
579
  };
363
580
  __decorate([
364
581
  Transactional()
@@ -367,7 +584,7 @@ ExtensionAdmin = __decorate([
367
584
  Injectable(),
368
585
  __param(0, Inject(KernelDb)),
369
586
  __param(1, Inject(TransactionHost)),
370
- __param(2, Inject(EnterpriseAdminLock)),
587
+ __param(2, Inject(SuperAdminLock)),
371
588
  __param(3, Inject(PluginApproveLock)),
372
589
  __param(4, Inject(ExtensionBlobs)),
373
590
  __param(5, Inject(ExtensionInstalls)),
@@ -376,7 +593,12 @@ ExtensionAdmin = __decorate([
376
593
  __param(8, Inject(ExtensionLifecycle)),
377
594
  __param(9, Inject(KernelConfigService)),
378
595
  __param(10, Inject(KERNEL_BUS)),
379
- __param(11, Inject(KERNEL_LOGGER))
596
+ __param(11, Inject(KERNEL_LOGGER)),
597
+ __param(12, Inject(ExtensionDisplayNames)),
598
+ __param(13, Inject(ExtensionDeploymentConfigService)),
599
+ __param(14, Inject(EffectiveConfigs)),
600
+ __param(15, Inject(SingleProviderGuard)),
601
+ __param(16, Inject(PluginIcons))
380
602
  ], ExtensionAdmin);
381
603
  export { ExtensionAdmin };
382
604
  const replicaView = (r) => ({
@@ -19,14 +19,15 @@ export interface PermissionSnapshot {
19
19
  * reason: new = no snapshot (first seen); added = more permissions than the snapshot;
20
20
  * dependency = needs no approval itself, but an extension point it `requires` is provided only by
21
21
  * extensions pending approval (or not loaded because of that); the same when it declares
22
- * `permissions.storage` and `object-store@1` has no provider that will load (providers may be empty).
22
+ * `permissions.storage` and `object-store@1` has no provider that will load (providers may be empty);
23
+ * conflict = see {@link PendingExtension.conflicts}.
23
24
  */
24
25
  export interface PendingExtension {
25
26
  plugin: string;
26
27
  version: string;
27
28
  added: string[];
28
29
  removed: string[];
29
- reason: "new" | "added" | "dependency";
30
+ reason: "new" | "added" | "dependency" | "conflict";
30
31
  /**
31
32
  * When reason is dependency: the extension points blocking it and their providers (only providers
32
33
  * that are not loading; empty when there is no provider at all).
@@ -35,6 +36,15 @@ export interface PendingExtension {
35
36
  extensionPoint: string;
36
37
  providers: string[];
37
38
  }[];
39
+ /**
40
+ * When reason is conflict (an installed extension, not an approval matter): the single-provider
41
+ * extension points it provides that other extensions already provide, and those providers. It
42
+ * loads once they are disabled or uninstalled.
43
+ */
44
+ conflicts?: {
45
+ extensionPoint: string;
46
+ providers: string[];
47
+ }[];
38
48
  }
39
49
  /** {@link planApprovals} 对单个插件的结论。 */
40
50
  export type ApprovalDecision = {
@@ -1,3 +1,4 @@
1
+ import { ClientBuilds } from "../client/client-builds.service.js";
1
2
  import { KernelConfigService } from "../infra/config/kernel-config.service.js";
2
3
  import { KernelDb } from "../infra/database/kernel-db.js";
3
4
  import { TransactionHost } from "../infra/database/transaction-host.js";
@@ -10,6 +11,13 @@ import type { ExtensionPackage } from "./package.js";
10
11
  * extension, F-Q): PG `extension_blobs` (`blob_store = pg`, also limited by `packages.maxBytes`).
11
12
  * Each package's location is recorded in `extension_packages.blob_store`; reads follow the record and
12
13
  * check the sha256.
14
+ *
15
+ * A package with an `extension.client` section also stores its client build (`ClientBuilds`,
16
+ * client extensions spec §9.1): the client files are read again from the bytes being stored,
17
+ * checked against the section and written to object storage before the package row's transaction,
18
+ * and the build row is inserted in that transaction, all under the build's lock. Without object
19
+ * storage (`ClientBuilds`' own, which the CLI points at its store) such a package is refused
20
+ * (`storage.unavailable`), so a stored build always has its files.
13
21
  */
14
22
  /** 取到的包与 sha256 不符(存储里的字节被篡改或损坏)。 */
15
23
  export declare class ExtensionBlobIntegrityError extends Error {
@@ -31,6 +39,7 @@ export declare class ExtensionBlobs {
31
39
  /** Without an object-store extension (the CLI) packages go to PG. */
32
40
  private readonly storage;
33
41
  private readonly config;
42
+ private readonly clientBuilds;
34
43
  /**
35
44
  * CLI only: packages the CLI process imported itself and reads back before the store, since such
36
45
  * a package may be recorded in an object store the CLI cannot read. Each entry's sha256 was
@@ -40,7 +49,7 @@ export declare class ExtensionBlobs {
40
49
  private readonly local;
41
50
  constructor(db: KernelDb, txHost: TransactionHost,
42
51
  /** Without an object-store extension (the CLI) packages go to PG. */
43
- storage: StorageService, config: KernelConfigService);
52
+ storage: StorageService, config: KernelConfigService, clientBuilds: ClientBuilds);
44
53
  /** `packages.maxBytes` (read at every call). */
45
54
  private maxBytes;
46
55
  /**
@@ -54,6 +63,10 @@ export declare class ExtensionBlobs {
54
63
  * (content-addressed, idempotent; replicas writing the same package concurrently is harmless).
55
64
  */
56
65
  put(p: ExtensionPackage, bytes: Uint8Array, src: ExtensionBlobSource): Promise<void>;
66
+ /** {@link put} after its checks; `client` for a package with client code (under its lock). */
67
+ private store;
68
+ /** The files under `dist/client/` of a package's bytes (sha256 already checked by the caller). */
69
+ private clientFiles;
57
70
  private record;
58
71
  /** 已有记录的包:按记录的存放位置检查字节在不在,不在就写回(调用方已校验 sha256)。 */
59
72
  private repair;