@capybara-hq/kernel 0.1.0-rc.3 → 0.1.0-rc.5

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 (604) hide show
  1. package/bootstrap.json +61 -5
  2. package/dist/admin/admin.controller.d.ts +47 -16
  3. package/dist/admin/admin.controller.js +44 -19
  4. package/dist/admin/extensions.controller.d.ts +24 -3
  5. package/dist/admin/extensions.controller.js +48 -8
  6. package/dist/admin/setup-lock.d.ts +1 -1
  7. package/dist/admin/setup-lock.js +1 -1
  8. package/dist/admin/setup.controller.d.ts +1 -1
  9. package/dist/admin/setup.controller.js +1 -1
  10. package/dist/admin/setup.service.d.ts +4 -4
  11. package/dist/admin/setup.service.js +8 -8
  12. package/dist/agents/agent-lookup.d.ts +19 -0
  13. package/dist/agents/agent-lookup.js +21 -0
  14. package/dist/agents/agent-profile.service.d.ts +29 -0
  15. package/dist/agents/agent-profile.service.js +117 -0
  16. package/dist/agents/agents.controller.d.ts +168 -3
  17. package/dist/agents/agents.controller.js +201 -12
  18. package/dist/agents/agents.module.d.ts +4 -1
  19. package/dist/agents/agents.module.js +36 -6
  20. package/dist/agents/agents.service.d.ts +64 -27
  21. package/dist/agents/agents.service.js +199 -74
  22. package/dist/agents/definition.d.ts +53 -0
  23. package/dist/agents/definition.js +55 -0
  24. package/dist/agents/from-template.d.ts +106 -0
  25. package/dist/agents/from-template.js +649 -0
  26. package/dist/agents/from-template.service.d.ts +60 -0
  27. package/dist/agents/from-template.service.js +161 -0
  28. package/dist/agents/instruction-files.d.ts +60 -0
  29. package/dist/agents/instruction-files.js +111 -0
  30. package/dist/agents/models.controller.d.ts +9 -3
  31. package/dist/agents/models.controller.js +19 -4
  32. package/dist/agents/org-templates.d.ts +176 -0
  33. package/dist/agents/org-templates.js +827 -0
  34. package/dist/agents/pending-connector-requests.d.ts +77 -0
  35. package/dist/agents/pending-connector-requests.js +215 -0
  36. package/dist/agents/pending-connectors.controller.d.ts +39 -0
  37. package/dist/agents/pending-connectors.controller.js +91 -0
  38. package/dist/agents/pending-connectors.service.d.ts +62 -0
  39. package/dist/agents/pending-connectors.service.js +282 -0
  40. package/dist/agents/profile.d.ts +96 -0
  41. package/dist/agents/profile.js +51 -0
  42. package/dist/agents/readiness.controller.d.ts +26 -0
  43. package/dist/agents/readiness.controller.js +56 -0
  44. package/dist/agents/templates.controller.d.ts +86 -5
  45. package/dist/agents/templates.controller.js +171 -7
  46. package/dist/agents/templates.d.ts +127 -23
  47. package/dist/agents/templates.js +476 -53
  48. package/dist/background/background.controller.d.ts +38 -0
  49. package/dist/background/background.controller.js +87 -0
  50. package/dist/background/background.module.d.ts +10 -0
  51. package/dist/background/background.module.js +39 -0
  52. package/dist/background/finish.d.ts +44 -0
  53. package/dist/background/finish.js +94 -0
  54. package/dist/background/launch-lock.d.ts +15 -0
  55. package/dist/background/launch-lock.js +40 -0
  56. package/dist/background/launch.d.ts +36 -0
  57. package/dist/background/launch.js +70 -0
  58. package/dist/background/poll.job.d.ts +56 -0
  59. package/dist/background/poll.job.js +190 -0
  60. package/dist/background/render.d.ts +23 -0
  61. package/dist/background/render.js +48 -0
  62. package/dist/background/session.d.ts +48 -0
  63. package/dist/background/session.js +79 -0
  64. package/dist/background/status.d.ts +35 -0
  65. package/dist/background/status.js +57 -0
  66. package/dist/background/stop.d.ts +68 -0
  67. package/dist/background/stop.js +243 -0
  68. package/dist/background/store.d.ts +162 -0
  69. package/dist/background/store.js +357 -0
  70. package/dist/background/store.module.d.ts +6 -0
  71. package/dist/background/store.module.js +22 -0
  72. package/dist/background/tasks.service.d.ts +77 -0
  73. package/dist/background/tasks.service.js +211 -0
  74. package/dist/background/wake-rules.d.ts +66 -0
  75. package/dist/background/wake-rules.js +113 -0
  76. package/dist/background/wake.d.ts +30 -0
  77. package/dist/background/wake.js +63 -0
  78. package/dist/catalog/admin-catalog.controller.d.ts +129 -30
  79. package/dist/catalog/admin-catalog.controller.js +213 -42
  80. package/dist/catalog/catalog-content.d.ts +58 -32
  81. package/dist/catalog/catalog-content.js +34 -8
  82. package/dist/catalog/catalog-import.module.d.ts +7 -0
  83. package/dist/catalog/catalog-import.module.js +60 -0
  84. package/dist/catalog/catalog-items.d.ts +111 -7
  85. package/dist/catalog/catalog-items.js +279 -13
  86. package/dist/catalog/catalog-scope.service.d.ts +260 -0
  87. package/dist/catalog/catalog-scope.service.js +1116 -0
  88. package/dist/catalog/catalog.module.d.ts +7 -9
  89. package/dist/catalog/catalog.module.js +41 -31
  90. package/dist/catalog/catalog.service.d.ts +101 -29
  91. package/dist/catalog/catalog.service.js +104 -106
  92. package/dist/catalog/claude/agents.js +2 -0
  93. package/dist/catalog/cli.d.ts +11 -1
  94. package/dist/catalog/cli.js +26 -1
  95. package/dist/catalog/component-promotion.d.ts +96 -0
  96. package/dist/catalog/component-promotion.js +395 -0
  97. package/dist/catalog/component-scope.controller.d.ts +152 -0
  98. package/dist/catalog/component-scope.controller.js +287 -0
  99. package/dist/catalog/component-scope.service.d.ts +303 -0
  100. package/dist/catalog/component-scope.service.js +936 -0
  101. package/dist/catalog/component-state.d.ts +174 -0
  102. package/dist/catalog/component-state.js +437 -0
  103. package/dist/catalog/job-ids.d.ts +30 -0
  104. package/dist/catalog/job-ids.js +25 -0
  105. package/dist/catalog/marketplace-fetch.d.ts +1 -1
  106. package/dist/catalog/marketplaces.controller.d.ts +22 -5
  107. package/dist/catalog/marketplaces.controller.js +56 -7
  108. package/dist/catalog/marketplaces.service.d.ts +54 -14
  109. package/dist/catalog/marketplaces.service.js +71 -22
  110. package/dist/catalog/org-catalog.controller.d.ts +125 -34
  111. package/dist/catalog/org-catalog.controller.js +181 -65
  112. package/dist/catalog/org-catalog.service.d.ts +65 -33
  113. package/dist/catalog/org-catalog.service.js +324 -157
  114. package/dist/catalog/org-extension-switch.d.ts +41 -0
  115. package/dist/catalog/org-extension-switch.js +115 -0
  116. package/dist/catalog/org-extension.controller.d.ts +119 -0
  117. package/dist/catalog/org-extension.controller.js +266 -0
  118. package/dist/catalog/org-plugin-uploads.controller.d.ts +98 -0
  119. package/dist/catalog/org-plugin-uploads.controller.js +213 -0
  120. package/dist/catalog/org-plugin-uploads.d.ts +63 -0
  121. package/dist/catalog/org-plugin-uploads.js +116 -0
  122. package/dist/catalog/owned-items.d.ts +184 -0
  123. package/dist/catalog/owned-items.js +789 -0
  124. package/dist/catalog/owned-plugin-cleanup.d.ts +56 -0
  125. package/dist/catalog/owned-plugin-cleanup.js +194 -0
  126. package/dist/catalog/ownership.d.ts +172 -0
  127. package/dist/catalog/ownership.js +326 -0
  128. package/dist/catalog/platform-components.d.ts +221 -0
  129. package/dist/catalog/platform-components.js +761 -0
  130. package/dist/catalog/platform-migration.d.ts +115 -0
  131. package/dist/catalog/platform-migration.js +582 -0
  132. package/dist/catalog/plugin-import.d.ts +178 -34
  133. package/dist/catalog/plugin-import.js +623 -83
  134. package/dist/catalog/plugin-install.d.ts +185 -41
  135. package/dist/catalog/plugin-install.js +758 -126
  136. package/dist/catalog/plugin-upgrade.d.ts +260 -225
  137. package/dist/catalog/plugin-upgrade.js +1148 -1137
  138. package/dist/catalog/request-rules.d.ts +65 -0
  139. package/dist/catalog/request-rules.js +217 -0
  140. package/dist/catalog/requests.service.d.ts +193 -118
  141. package/dist/catalog/requests.service.js +526 -343
  142. package/dist/catalog/reserved-names.d.ts +8 -0
  143. package/dist/catalog/reserved-names.js +42 -0
  144. package/dist/catalog/scope-orgs.d.ts +21 -0
  145. package/dist/catalog/scope-orgs.js +67 -0
  146. package/dist/catalog/scope-state.d.ts +35 -0
  147. package/dist/catalog/scope-state.js +87 -0
  148. package/dist/catalog/scope-sync-workers.d.ts +7 -0
  149. package/dist/catalog/scope-sync-workers.js +29 -0
  150. package/dist/catalog/scope-sync.d.ts +176 -0
  151. package/dist/catalog/scope-sync.js +576 -0
  152. package/dist/catalog/scope.d.ts +42 -0
  153. package/dist/catalog/scope.js +42 -0
  154. package/dist/catalog/unshare.d.ts +22 -0
  155. package/dist/catalog/unshare.js +118 -0
  156. package/dist/channels/actions.js +1 -0
  157. package/dist/channels/cards.js +21 -3
  158. package/dist/channels/channels.module.js +2 -0
  159. package/dist/channels/connections.service.d.ts +16 -1
  160. package/dist/channels/connections.service.js +38 -4
  161. package/dist/channels/inbound.d.ts +9 -1
  162. package/dist/channels/inbound.js +67 -5
  163. package/dist/channels/phrases.d.ts +35 -0
  164. package/dist/channels/phrases.js +29 -0
  165. package/dist/channels/threads.d.ts +5 -0
  166. package/dist/channels/threads.js +8 -0
  167. package/dist/config/docs.js +3 -1
  168. package/dist/config/schema.d.ts +24 -2
  169. package/dist/config/schema.js +145 -19
  170. package/dist/conversations/access.d.ts +6 -4
  171. package/dist/conversations/access.js +29 -5
  172. package/dist/conversations/agent-tree.d.ts +46 -0
  173. package/dist/conversations/agent-tree.js +92 -0
  174. package/dist/conversations/attachments.service.d.ts +30 -0
  175. package/dist/conversations/attachments.service.js +130 -5
  176. package/dist/conversations/conversations.controller.d.ts +79 -23
  177. package/dist/conversations/conversations.controller.js +141 -50
  178. package/dist/conversations/conversations.module.d.ts +1 -1
  179. package/dist/conversations/conversations.module.js +10 -7
  180. package/dist/conversations/conversations.service.d.ts +108 -9
  181. package/dist/conversations/conversations.service.js +237 -30
  182. package/dist/conversations/environment-status.d.ts +24 -0
  183. package/dist/conversations/environment-status.js +71 -0
  184. package/dist/conversations/event-log.d.ts +21 -6
  185. package/dist/conversations/event-log.js +70 -1
  186. package/dist/conversations/events.d.ts +140 -0
  187. package/dist/conversations/events.js +142 -13
  188. package/dist/conversations/queue.d.ts +3 -1
  189. package/dist/conversations/queue.js +13 -2
  190. package/dist/conversations/queue.service.d.ts +1 -1
  191. package/dist/conversations/queue.service.js +8 -1
  192. package/dist/conversations/titles.d.ts +12 -3
  193. package/dist/conversations/titles.js +36 -8
  194. package/dist/conversations/tree.d.ts +17 -0
  195. package/dist/conversations/tree.js +42 -0
  196. package/dist/ctx/create-ctx.d.ts +5 -0
  197. package/dist/ctx/create-ctx.js +15 -5
  198. package/dist/db/kernel-schema.d.ts +420 -20
  199. package/dist/db/pool.d.ts +5 -0
  200. package/dist/db/pool.js +3 -0
  201. package/dist/environments/access.d.ts +41 -0
  202. package/dist/environments/access.js +77 -0
  203. package/dist/environments/conversation-environments.d.ts +61 -0
  204. package/dist/environments/conversation-environments.js +170 -0
  205. package/dist/environments/dto.d.ts +25 -0
  206. package/dist/environments/dto.js +12 -0
  207. package/dist/environments/environments.controller.d.ts +33 -0
  208. package/dist/environments/environments.controller.js +110 -0
  209. package/dist/environments/environments.module.d.ts +8 -0
  210. package/dist/environments/environments.module.js +27 -0
  211. package/dist/environments/environments.service.d.ts +153 -0
  212. package/dist/environments/environments.service.js +541 -0
  213. package/dist/environments/legacy-cleanup.job.d.ts +34 -0
  214. package/dist/environments/legacy-cleanup.job.js +141 -0
  215. package/dist/errors.d.ts +90 -2
  216. package/dist/errors.js +90 -2
  217. package/dist/evals/reconstruct.d.ts +18 -9
  218. package/dist/evals/reconstruct.js +26 -7
  219. package/dist/evals/run-replay.d.ts +7 -2
  220. package/dist/evals/run-replay.js +42 -7
  221. package/dist/evals/step-replay.d.ts +2 -5
  222. package/dist/evals/step-replay.js +13 -7
  223. package/dist/evals/trajectory.js +1 -1
  224. package/dist/evals/trajectory.service.d.ts +8 -3
  225. package/dist/evals/trajectory.service.js +26 -14
  226. package/dist/evals/worker.d.ts +5 -5
  227. package/dist/evals/worker.js +9 -3
  228. package/dist/extensions/admin-ops.d.ts +36 -10
  229. package/dist/extensions/admin-ops.js +67 -42
  230. package/dist/extensions/admin-view.d.ts +39 -10
  231. package/dist/extensions/admin-view.js +111 -20
  232. package/dist/extensions/blobs.js +1 -0
  233. package/dist/extensions/bootstrap.d.ts +17 -4
  234. package/dist/extensions/bootstrap.js +70 -9
  235. package/dist/extensions/cli.d.ts +12 -0
  236. package/dist/extensions/cli.js +11 -2
  237. package/dist/extensions/config-issues.d.ts +13 -1
  238. package/dist/extensions/config-issues.js +22 -5
  239. package/dist/extensions/config-json-schema.d.ts +43 -7
  240. package/dist/extensions/config-json-schema.js +124 -58
  241. package/dist/extensions/deployment-config-store.d.ts +6 -0
  242. package/dist/extensions/deployment-config.d.ts +78 -8
  243. package/dist/extensions/deployment-config.js +172 -34
  244. package/dist/extensions/display-name.d.ts +22 -0
  245. package/dist/extensions/display-name.js +77 -0
  246. package/dist/extensions/effective-config.d.ts +127 -0
  247. package/dist/extensions/effective-config.js +368 -0
  248. package/dist/extensions/extensions.module.js +14 -2
  249. package/dist/extensions/hooks.d.ts +37 -4
  250. package/dist/extensions/hooks.js +82 -16
  251. package/dist/extensions/host.d.ts +45 -2
  252. package/dist/extensions/host.js +112 -16
  253. package/dist/extensions/installs.d.ts +20 -8
  254. package/dist/extensions/installs.js +37 -15
  255. package/dist/extensions/org-config.d.ts +81 -6
  256. package/dist/extensions/org-config.js +195 -44
  257. package/dist/extensions/org-levels.d.ts +37 -0
  258. package/dist/extensions/org-levels.js +71 -0
  259. package/dist/extensions/org-overrides.d.ts +151 -0
  260. package/dist/extensions/org-overrides.js +524 -0
  261. package/dist/extensions/package.d.ts +14 -1
  262. package/dist/extensions/package.js +51 -2
  263. package/dist/extensions/permission-view.d.ts +19 -4
  264. package/dist/extensions/permission-view.js +4 -4
  265. package/dist/extensions/plugin-items.d.ts +21 -0
  266. package/dist/extensions/plugin-items.js +42 -0
  267. package/dist/extensions/point-defaults.controller.d.ts +34 -0
  268. package/dist/extensions/point-defaults.controller.js +71 -0
  269. package/dist/extensions/point-defaults.d.ts +71 -0
  270. package/dist/extensions/point-defaults.js +234 -0
  271. package/dist/extensions/registry.d.ts +1 -1
  272. package/dist/extensions/registry.js +2 -0
  273. package/dist/extensions/resolve.d.ts +5 -1
  274. package/dist/extensions/resolve.js +15 -2
  275. package/dist/files/previewers.d.ts +8 -1
  276. package/dist/files/previewers.js +35 -6
  277. package/dist/http/api.module.js +31 -3
  278. package/dist/http/app.d.ts +11 -2
  279. package/dist/http/app.js +31 -5
  280. package/dist/http/nest-logger.d.ts +6 -5
  281. package/dist/http/nest-logger.js +24 -10
  282. package/dist/identity/accounts.d.ts +29 -29
  283. package/dist/identity/accounts.js +47 -47
  284. package/dist/identity/audit.d.ts +2 -1
  285. package/dist/identity/auth.controller.js +9 -5
  286. package/dist/identity/auth.guard.d.ts +13 -5
  287. package/dist/identity/auth.guard.js +26 -9
  288. package/dist/identity/cookies.d.ts +20 -5
  289. package/dist/identity/cookies.js +44 -6
  290. package/dist/identity/identity.module.d.ts +1 -1
  291. package/dist/identity/identity.module.js +4 -4
  292. package/dist/identity/me.controller.d.ts +5 -1
  293. package/dist/identity/me.controller.js +12 -3
  294. package/dist/identity/principal.d.ts +3 -3
  295. package/dist/identity/principal.js +3 -3
  296. package/dist/identity/sessions.d.ts +12 -0
  297. package/dist/identity/sessions.js +45 -0
  298. package/dist/identity/settings.d.ts +22 -11
  299. package/dist/identity/settings.js +53 -18
  300. package/dist/identity/{enterprise-admin.d.ts → super-admin.d.ts} +5 -5
  301. package/dist/identity/{enterprise-admin.js → super-admin.js} +24 -24
  302. package/dist/inbox/inbox.module.d.ts +4 -1
  303. package/dist/inbox/inbox.module.js +7 -3
  304. package/dist/inbox/inbox.service.d.ts +62 -3
  305. package/dist/inbox/inbox.service.js +74 -4
  306. package/dist/inbox/org-notices.d.ts +63 -0
  307. package/dist/inbox/org-notices.js +91 -0
  308. package/dist/inbox/platform-inbox.controller.d.ts +23 -0
  309. package/dist/inbox/platform-inbox.controller.js +58 -0
  310. package/dist/inbox/platform-inbox.service.d.ts +151 -0
  311. package/dist/inbox/platform-inbox.service.js +263 -0
  312. package/dist/inbox/platform-notices.d.ts +19 -0
  313. package/dist/inbox/platform-notices.js +9 -0
  314. package/dist/index.d.ts +2 -2
  315. package/dist/index.js +1 -1
  316. package/dist/infra/cli/kernel-cli.module.js +9 -1
  317. package/dist/infra/config/kernel-config.service.js +27 -1
  318. package/dist/infra/database/database.module.js +1 -0
  319. package/dist/infra/database/xact-lock.d.ts +1 -1
  320. package/dist/infra/database/xact-lock.js +1 -1
  321. package/dist/infra/events/kernel-events.d.ts +19 -2
  322. package/dist/infra/lifecycle/process-guards.js +4 -0
  323. package/dist/infra/logging/logging.module.d.ts +4 -2
  324. package/dist/infra/logging/logging.module.js +24 -6
  325. package/dist/infra/queue/add-job-once.d.ts +14 -0
  326. package/dist/infra/queue/add-job-once.js +16 -0
  327. package/dist/infra/queue/redis-connection.d.ts +6 -0
  328. package/dist/infra/queue/redis-connection.js +7 -0
  329. package/dist/infra/redis/redis.module.js +6 -2
  330. package/dist/infra/tokens.d.ts +6 -1
  331. package/dist/infra/tokens.js +6 -1
  332. package/dist/kernel.module.js +6 -0
  333. package/dist/lifecycle/kernel-lifecycle.d.ts +1 -1
  334. package/dist/lifecycle/kernel-lifecycle.js +4 -4
  335. package/dist/log.d.ts +13 -1
  336. package/dist/log.js +93 -17
  337. package/dist/models/prices.d.ts +5 -5
  338. package/dist/models/prices.js +4 -4
  339. package/dist/models/purposes.controller.d.ts +6 -4
  340. package/dist/models/purposes.controller.js +13 -7
  341. package/dist/models/purposes.d.ts +43 -9
  342. package/dist/models/purposes.js +48 -18
  343. package/dist/orgs/directory-sync.d.ts +14 -5
  344. package/dist/orgs/directory-sync.js +41 -17
  345. package/dist/orgs/offboarding.d.ts +12 -8
  346. package/dist/orgs/offboarding.js +54 -33
  347. package/dist/orgs/org-lock.d.ts +5 -0
  348. package/dist/orgs/org-lock.js +13 -0
  349. package/dist/orgs/org.guard.d.ts +10 -0
  350. package/dist/orgs/org.guard.js +43 -32
  351. package/dist/orgs/orgs.module.js +3 -0
  352. package/dist/orgs/orgs.service.d.ts +20 -7
  353. package/dist/orgs/orgs.service.js +32 -12
  354. package/dist/orgs/roles.d.ts +1 -1
  355. package/dist/orgs/roles.js +5 -1
  356. package/dist/orgs/settings.controller.d.ts +1 -1
  357. package/dist/orgs/settings.service.d.ts +20 -3
  358. package/dist/orgs/settings.service.js +19 -4
  359. package/dist/overrides.d.ts +3 -0
  360. package/dist/overrides.js +2 -0
  361. package/dist/platform/actor.d.ts +48 -0
  362. package/dist/platform/actor.js +100 -0
  363. package/dist/platform/agent-docs.d.ts +18 -0
  364. package/dist/platform/agent-docs.js +59 -0
  365. package/dist/platform/availability.d.ts +14 -0
  366. package/dist/platform/availability.js +43 -0
  367. package/dist/platform/errors.d.ts +11 -0
  368. package/dist/platform/errors.js +26 -0
  369. package/dist/platform/exclusions.d.ts +12 -0
  370. package/dist/platform/exclusions.js +1387 -0
  371. package/dist/platform/method.d.ts +6 -0
  372. package/dist/platform/method.js +15 -0
  373. package/dist/platform/operation.d.ts +92 -0
  374. package/dist/platform/operation.js +35 -0
  375. package/dist/platform/ops/agent-templates.ops.d.ts +14 -0
  376. package/dist/platform/ops/agent-templates.ops.js +92 -0
  377. package/dist/platform/ops/agents.ops.d.ts +19 -0
  378. package/dist/platform/ops/agents.ops.js +294 -0
  379. package/dist/platform/ops/connectors.ops.d.ts +15 -0
  380. package/dist/platform/ops/connectors.ops.js +126 -0
  381. package/dist/platform/ops/errors.d.ts +11 -0
  382. package/dist/platform/ops/errors.js +22 -0
  383. package/dist/platform/ops/extensions.ops.d.ts +19 -0
  384. package/dist/platform/ops/extensions.ops.js +116 -0
  385. package/dist/platform/ops/marketplaces.ops.d.ts +16 -0
  386. package/dist/platform/ops/marketplaces.ops.js +157 -0
  387. package/dist/platform/ops/paging.d.ts +14 -0
  388. package/dist/platform/ops/paging.js +20 -0
  389. package/dist/platform/ops/platform.ops.d.ts +23 -0
  390. package/dist/platform/ops/platform.ops.js +158 -0
  391. package/dist/platform/ops/plugins.ops.d.ts +33 -0
  392. package/dist/platform/ops/plugins.ops.js +377 -0
  393. package/dist/platform/ops/requests.ops.d.ts +14 -0
  394. package/dist/platform/ops/requests.ops.js +153 -0
  395. package/dist/platform/ops/role.d.ts +4 -0
  396. package/dist/platform/ops/role.js +10 -0
  397. package/dist/platform/ops/skills.ops.d.ts +13 -0
  398. package/dist/platform/ops/skills.ops.js +98 -0
  399. package/dist/platform/ops/summary.d.ts +10 -0
  400. package/dist/platform/ops/summary.js +18 -0
  401. package/dist/platform/platform-ops.module.d.ts +7 -0
  402. package/dist/platform/platform-ops.module.js +55 -0
  403. package/dist/platform/platform.module.d.ts +8 -0
  404. package/dist/platform/platform.module.js +25 -0
  405. package/dist/platform/redact-orgs.d.ts +7 -0
  406. package/dist/platform/redact-orgs.js +52 -0
  407. package/dist/platform/registry.d.ts +30 -0
  408. package/dist/platform/registry.js +111 -0
  409. package/dist/roles/worker-role.d.ts +6 -4
  410. package/dist/roles/worker-role.js +14 -7
  411. package/dist/roles/worker.module.d.ts +1 -1
  412. package/dist/roles/worker.module.js +15 -1
  413. package/dist/runtime/context/build.d.ts +11 -7
  414. package/dist/runtime/context/build.js +46 -19
  415. package/dist/runtime/context/claude-tools.d.ts +3 -1
  416. package/dist/runtime/context/claude-tools.js +8 -6
  417. package/dist/runtime/context/compaction.js +13 -0
  418. package/dist/runtime/context/reminders.d.ts +2 -0
  419. package/dist/runtime/context/reminders.js +2 -0
  420. package/dist/runtime/context/skills.js +9 -2
  421. package/dist/runtime/context/tool-changes.d.ts +27 -0
  422. package/dist/runtime/context/tool-changes.js +60 -0
  423. package/dist/runtime/hook-calls.js +2 -0
  424. package/dist/runtime/langgraph-loop.d.ts +3 -1
  425. package/dist/runtime/langgraph-loop.js +36 -17
  426. package/dist/runtime/loop.d.ts +34 -5
  427. package/dist/runtime/maintenance.d.ts +9 -4
  428. package/dist/runtime/maintenance.js +35 -8
  429. package/dist/runtime/model-call.d.ts +46 -8
  430. package/dist/runtime/model-call.js +72 -21
  431. package/dist/runtime/providers.d.ts +6 -0
  432. package/dist/runtime/providers.js +8 -0
  433. package/dist/runtime/run-control.d.ts +11 -1
  434. package/dist/runtime/run-control.js +12 -0
  435. package/dist/runtime/run-drafts.d.ts +85 -0
  436. package/dist/runtime/run-drafts.js +230 -0
  437. package/dist/runtime/run-jobs.d.ts +3 -5
  438. package/dist/runtime/run-jobs.js +3 -7
  439. package/dist/runtime/run-queue.d.ts +59 -2
  440. package/dist/runtime/run-queue.js +311 -38
  441. package/dist/runtime/run-worker.d.ts +11 -5
  442. package/dist/runtime/run-worker.js +69 -33
  443. package/dist/runtime/runtime.module.js +11 -3
  444. package/dist/runtime/step-log.d.ts +15 -4
  445. package/dist/runtime/step-log.js +24 -7
  446. package/dist/runtime/stream.controller.d.ts +23 -1
  447. package/dist/runtime/stream.controller.js +60 -3
  448. package/dist/runtime/stream.d.ts +4 -1
  449. package/dist/runtime/stream.js +27 -3
  450. package/dist/runtime/subagents/child.d.ts +55 -7
  451. package/dist/runtime/subagents/child.js +105 -7
  452. package/dist/runtime/subagents/definition.d.ts +12 -3
  453. package/dist/runtime/subagents/definition.js +44 -28
  454. package/dist/runtime/subagents/deliveries.d.ts +71 -0
  455. package/dist/runtime/subagents/deliveries.js +228 -0
  456. package/dist/runtime/subagents/dispatch.d.ts +115 -26
  457. package/dist/runtime/subagents/dispatch.js +212 -141
  458. package/dist/runtime/subagents/limits.d.ts +24 -5
  459. package/dist/runtime/subagents/limits.js +40 -6
  460. package/dist/runtime/subagents/messages.d.ts +95 -0
  461. package/dist/runtime/subagents/messages.js +328 -0
  462. package/dist/runtime/subagents/preamble.d.ts +4 -4
  463. package/dist/runtime/subagents/preamble.js +9 -7
  464. package/dist/runtime/subagents/progress.d.ts +8 -6
  465. package/dist/runtime/subagents/progress.js +11 -6
  466. package/dist/runtime/subagents/render.d.ts +30 -0
  467. package/dist/runtime/subagents/render.js +53 -0
  468. package/dist/runtime/subagents/roster.d.ts +24 -7
  469. package/dist/runtime/subagents/roster.js +47 -11
  470. package/dist/runtime/subagents/skill-fork.d.ts +3 -2
  471. package/dist/runtime/subagents/skill-fork.js +8 -4
  472. package/dist/runtime/subagents/status.d.ts +14 -0
  473. package/dist/runtime/subagents/status.js +23 -0
  474. package/dist/runtime/subagents/subagents.service.d.ts +7 -4
  475. package/dist/runtime/subagents/subagents.service.js +11 -6
  476. package/dist/runtime/usage-report.d.ts +2 -1
  477. package/dist/runtime/usage-report.js +19 -13
  478. package/dist/runtime/waits.d.ts +145 -36
  479. package/dist/runtime/waits.js +423 -109
  480. package/dist/sandbox/jobs.d.ts +40 -13
  481. package/dist/sandbox/jobs.js +57 -20
  482. package/dist/sandbox/leases.d.ts +37 -54
  483. package/dist/sandbox/leases.js +71 -115
  484. package/dist/sandbox/providers.d.ts +2 -2
  485. package/dist/sandbox/providers.js +1 -1
  486. package/dist/sandbox/sandbox.module.d.ts +3 -2
  487. package/dist/sandbox/sandbox.module.js +10 -4
  488. package/dist/sandbox/sandbox.service.d.ts +282 -129
  489. package/dist/sandbox/sandbox.service.js +736 -381
  490. package/dist/skills/catalog.d.ts +3 -2
  491. package/dist/skills/catalog.js +21 -43
  492. package/dist/skills/changes.controller.d.ts +7 -0
  493. package/dist/skills/changes.controller.js +19 -1
  494. package/dist/skills/invoke.js +8 -3
  495. package/dist/skills/package.d.ts +20 -1
  496. package/dist/skills/package.js +28 -1
  497. package/dist/skills/skills.controller.d.ts +39 -4
  498. package/dist/skills/skills.controller.js +88 -10
  499. package/dist/skills/skills.module.js +10 -1
  500. package/dist/skills/skills.service.d.ts +106 -26
  501. package/dist/skills/skills.service.js +421 -75
  502. package/dist/skills/usable.d.ts +81 -0
  503. package/dist/skills/usable.js +379 -0
  504. package/dist/tools/approvals.service.d.ts +20 -2
  505. package/dist/tools/approvals.service.js +25 -4
  506. package/dist/tools/builtin-names.d.ts +41 -7
  507. package/dist/tools/builtin-names.js +59 -7
  508. package/dist/tools/builtins/agent.d.ts +23 -21
  509. package/dist/tools/builtins/agent.js +62 -55
  510. package/dist/tools/builtins/builtin-tools.d.ts +19 -1
  511. package/dist/tools/builtins/builtin-tools.js +59 -2
  512. package/dist/tools/builtins/handback.d.ts +28 -0
  513. package/dist/tools/builtins/handback.js +53 -0
  514. package/dist/tools/builtins/platform.d.ts +34 -0
  515. package/dist/tools/builtins/platform.js +362 -0
  516. package/dist/tools/builtins/sandbox/bash.d.ts +1 -1
  517. package/dist/tools/builtins/sandbox/bash.js +241 -4
  518. package/dist/tools/builtins/sandbox/common.d.ts +69 -27
  519. package/dist/tools/builtins/sandbox/common.js +87 -48
  520. package/dist/tools/builtins/sandbox/deliver.js +1 -1
  521. package/dist/tools/builtins/sandbox/edit.js +2 -2
  522. package/dist/tools/builtins/sandbox/glob.js +2 -2
  523. package/dist/tools/builtins/sandbox/grep.js +2 -4
  524. package/dist/tools/builtins/sandbox/index.d.ts +3 -1
  525. package/dist/tools/builtins/sandbox/index.js +7 -1
  526. package/dist/tools/builtins/sandbox/read.js +1 -1
  527. package/dist/tools/builtins/sandbox/task-output.d.ts +74 -0
  528. package/dist/tools/builtins/sandbox/task-output.js +329 -0
  529. package/dist/tools/builtins/sandbox/task-stop.d.ts +10 -0
  530. package/dist/tools/builtins/sandbox/task-stop.js +113 -0
  531. package/dist/tools/builtins/sandbox/write.js +2 -2
  532. package/dist/tools/builtins/send-message.d.ts +56 -0
  533. package/dist/tools/builtins/send-message.js +100 -0
  534. package/dist/tools/builtins/skill-load.d.ts +22 -14
  535. package/dist/tools/builtins/skill-load.js +86 -57
  536. package/dist/tools/builtins/skill-write.js +1 -1
  537. package/dist/tools/builtins/web/errors.d.ts +8 -0
  538. package/dist/tools/builtins/web/errors.js +53 -0
  539. package/dist/tools/builtins/web/extract.d.ts +62 -0
  540. package/dist/tools/builtins/web/extract.js +271 -0
  541. package/dist/tools/builtins/web/fetch.d.ts +55 -0
  542. package/dist/tools/builtins/web/fetch.js +175 -0
  543. package/dist/tools/builtins/web/index.d.ts +13 -0
  544. package/dist/tools/builtins/web/index.js +12 -0
  545. package/dist/tools/builtins/web/page-cache.d.ts +25 -0
  546. package/dist/tools/builtins/web/page-cache.js +77 -0
  547. package/dist/tools/builtins/web/search.d.ts +25 -0
  548. package/dist/tools/builtins/web/search.js +210 -0
  549. package/dist/tools/builtins/web/url.d.ts +17 -0
  550. package/dist/tools/builtins/web/url.js +43 -0
  551. package/dist/tools/connectors.controller.d.ts +10 -0
  552. package/dist/tools/connectors.controller.js +12 -0
  553. package/dist/tools/connectors.service.d.ts +46 -5
  554. package/dist/tools/connectors.service.js +94 -15
  555. package/dist/tools/extension-tools.controller.d.ts +14 -0
  556. package/dist/tools/extension-tools.controller.js +37 -0
  557. package/dist/tools/info.d.ts +42 -1
  558. package/dist/tools/info.js +64 -1
  559. package/dist/tools/oauth/flow-paths.d.ts +1 -1
  560. package/dist/tools/oauth/flow-paths.js +1 -1
  561. package/dist/tools/org-tool-switches.d.ts +74 -0
  562. package/dist/tools/org-tool-switches.js +184 -0
  563. package/dist/tools/pipeline.d.ts +46 -40
  564. package/dist/tools/pipeline.js +202 -364
  565. package/dist/tools/policy.d.ts +1 -1
  566. package/dist/tools/policy.js +36 -16
  567. package/dist/tools/registry.d.ts +120 -8
  568. package/dist/tools/registry.js +112 -19
  569. package/dist/tools/tools.module.js +24 -2
  570. package/dist/tools/validate.js +1 -1
  571. package/dist/ui/views.d.ts +2 -1
  572. package/dist/ui/views.js +17 -3
  573. package/package.json +3 -3
  574. package/src/migrations/0064_account_last_org.sql +7 -0
  575. package/src/migrations/0065_conversation_archive.sql +8 -0
  576. package/src/migrations/0066_extension_display_name.sql +4 -0
  577. package/src/migrations/0067_agent_profiles.sql +20 -0
  578. package/src/migrations/0068_agent_avatar_uploads.sql +7 -0
  579. package/src/migrations/0069_attachments_agent_idx.sql +3 -0
  580. package/src/migrations/0070_background_tasks.sql +37 -0
  581. package/src/migrations/0071_background_tasks_reserve.sql +6 -0
  582. package/src/migrations/0072_background_tasks_stopping.sql +5 -0
  583. package/src/migrations/0073_org_extension_point_defaults.sql +11 -0
  584. package/src/migrations/0074_subagent_tree.sql +50 -0
  585. package/src/migrations/0075_plugin_scope.sql +61 -0
  586. package/src/migrations/0076_skills_created_by_nullable.sql +6 -0
  587. package/src/migrations/0077_scope_requests.sql +52 -0
  588. package/src/migrations/0078_scope_grant_switches.sql +18 -0
  589. package/src/migrations/0079_scope_live_install_switches.sql +19 -0
  590. package/src/migrations/0080_rename_enterprise_admin.sql +18 -0
  591. package/src/migrations/0081_platform_components.sql +129 -0
  592. package/src/migrations/0082_platform_migration.sql +33 -0
  593. package/src/migrations/0083_plugin_scope_sync_failures.sql +15 -0
  594. package/src/migrations/0084_org_owned_items.sql +85 -0
  595. package/src/migrations/0085_agent_templates_phase4.sql +45 -0
  596. package/src/migrations/0086_org_layering.sql +30 -0
  597. package/src/migrations/0087_approval_summary.sql +6 -0
  598. package/src/migrations/0088_environments.sql +80 -0
  599. package/dist/catalog/upgrade-targets.d.ts +0 -56
  600. package/dist/catalog/upgrade-targets.js +0 -90
  601. package/dist/conversations/sandbox-status.d.ts +0 -24
  602. package/dist/conversations/sandbox-status.js +0 -52
  603. package/dist/extensions/org-config.controller.d.ts +0 -24
  604. package/dist/extensions/org-config.controller.js +0 -62
@@ -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,11 @@ 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
- */
40
32
  let ExtensionAdminOps = class ExtensionAdminOps {
41
33
  kdb;
42
34
  txHost;
43
35
  adminLock;
36
+ orgLock;
44
37
  installLock;
45
38
  admin;
46
39
  registry;
@@ -50,8 +43,10 @@ let ExtensionAdminOps = class ExtensionAdminOps {
50
43
  lifecycle;
51
44
  log;
52
45
  constructor(kdb, txHost,
53
- /** The enterprise admin lock (identity/enterprise-admin.ts): joins the transaction. */
54
- adminLock, installLock,
46
+ /** The super admin lock (identity/super-admin.ts): joins the transaction. */
47
+ adminLock,
48
+ /** The owner org's lock: an owner's operation re-checks its admin under it. */
49
+ orgLock, installLock,
55
50
  /**
56
51
  * The admin view after the operation, degraded when the package cannot be read
57
52
  * (`get(name, { allowUnreadable: true })`). If it throws, the operation has already committed:
@@ -73,6 +68,7 @@ let ExtensionAdminOps = class ExtensionAdminOps {
73
68
  this.kdb = kdb;
74
69
  this.txHost = txHost;
75
70
  this.adminLock = adminLock;
71
+ this.orgLock = orgLock;
76
72
  this.installLock = installLock;
77
73
  this.admin = admin;
78
74
  this.registry = registry;
@@ -89,7 +85,7 @@ let ExtensionAdminOps = class ExtensionAdminOps {
89
85
  * New install or version change (upgrade / downgrade): the install record points at package
90
86
  * `sha256`; the desired state is unchanged (a new install is disabled). Audit `extension.installed`.
91
87
  * - Config-declared -> `extension.config_declared`; a required bootstrap plugin may be
92
- * installed at another version (an enterprise admin upgrades it; `required` is kept);
88
+ * installed at another version (a super admin upgrades it; `required` is kept);
93
89
  * - package not in the package store -> `extension.package_not_found`; the extension name in the
94
90
  * package is not `name` -> `extension.name_mismatch`;
95
91
  * - an install record of the same name exists but comes from another npm package ->
@@ -105,7 +101,7 @@ let ExtensionAdminOps = class ExtensionAdminOps {
105
101
  * go back to a version whose migrations are a subset of those already run).
106
102
  * Already pointing at the same package: nothing changes (no audit; for a changed source item only,
107
103
  * see below).
108
- * `opts.catalogItemId`: the source item when installing through the enterprise catalog, stored
104
+ * `opts.catalogItemId`: the source item when installing through the platform catalog, stored
109
105
  * in `extension_installs.catalog_item_id` (F-AA) and registered in `extension_catalog_sources`;
110
106
  * installing outside the catalog (upload / npm / CLI) **keeps** the existing source items (T26
111
107
  * fix: clearing them would let org enablement bypass catalog policy, C22). The detail of the
@@ -140,8 +136,7 @@ let ExtensionAdminOps = class ExtensionAdminOps {
140
136
  }
141
137
  async writeInstall(name, sha256, pkg, target, actor, actorTokenId, opts) {
142
138
  const db = this.db;
143
- if (actor !== null)
144
- await this.adminLock.lockAndAuthorize(actor);
139
+ await this.authorize(actor, opts.owner);
145
140
  const row = await this.lockRow(name);
146
141
  // 不经目录重装时保留原来的来源条目(不清空,C22)
147
142
  const catalogItemId = opts.catalogItemId ?? row?.catalog_item_id ?? null;
@@ -221,13 +216,14 @@ let ExtensionAdminOps = class ExtensionAdminOps {
221
216
  .execute();
222
217
  await this.audit(actor, actorTokenId, "extension.installed", name, pkg.version, sha256, {
223
218
  catalogItemId,
219
+ ...ownerDetail(opts.owner),
224
220
  });
225
221
  afterCommit(() => this.notify(name));
226
222
  return { changed: true, state: row?.desired_state ?? "disabled" };
227
223
  }
228
224
  /** 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);
225
+ enable(name, actor, actorTokenId, owner) {
226
+ return this.setState(name, "enabled", actor, actorTokenId, owner);
231
227
  }
232
228
  /**
233
229
  * Disables on the deployment (audit `extension.disabled`); no change when already disabled. Every
@@ -235,8 +231,8 @@ let ExtensionAdminOps = class ExtensionAdminOps {
235
231
  * it; the org enablement switch is unchanged and the org page shows it as unavailable. A required
236
232
  * bootstrap plugin -> `extension.required`.
237
233
  */
238
- disable(name, actor, actorTokenId) {
239
- return this.setState(name, "disabled", actor, actorTokenId);
234
+ disable(name, actor, actorTokenId, owner) {
235
+ return this.setState(name, "disabled", actor, actorTokenId, owner);
240
236
  }
241
237
  /**
242
238
  * Uninstall: a required bootstrap plugin -> `extension.required`; must be disabled first
@@ -246,14 +242,13 @@ let ExtensionAdminOps = class ExtensionAdminOps {
246
242
  * permission snapshot and the package in the package store are untouched (a reinstall picks them
247
243
  * up).
248
244
  */
249
- async uninstall(name, actor, actorTokenId) {
245
+ async uninstall(name, actor, actorTokenId, owner) {
250
246
  this.assertInstallable(name);
251
- await this.writeUninstall(name, actor, actorTokenId);
247
+ await this.writeUninstall(name, actor, actorTokenId, owner);
252
248
  }
253
- async writeUninstall(name, actor, actorTokenId) {
249
+ async writeUninstall(name, actor, actorTokenId, owner) {
254
250
  const db = this.db;
255
- if (actor !== null)
256
- await this.adminLock.lockAndAuthorize(actor);
251
+ await this.authorize(actor, owner);
257
252
  const row = await this.lockRow(name);
258
253
  if (!row)
259
254
  throw notFound(name);
@@ -265,22 +260,21 @@ let ExtensionAdminOps = class ExtensionAdminOps {
265
260
  await db.deleteFrom("extension_installs").where("name", "=", name).execute();
266
261
  // 来源条目随安装记录一起删:之后不经目录重新安装时不再受旧条目的策略约束(T26 裁决)
267
262
  await db.deleteFrom("extension_catalog_sources").where("plugin", "=", name).execute();
268
- await this.audit(actor, actorTokenId, "extension.uninstalled", name, row.version, row.sha256);
263
+ await this.audit(actor, actorTokenId, "extension.uninstalled", name, row.version, row.sha256, ownerDetail(owner));
269
264
  afterCommit(() => this.notify(name));
270
265
  }
271
- async setState(name, state, actor, actorTokenId) {
266
+ async setState(name, state, actor, actorTokenId, owner) {
272
267
  this.assertInstallable(name);
273
- const result = await this.writeState(name, state, actor, actorTokenId);
268
+ const result = await this.writeState(name, state, actor, actorTokenId, owner);
274
269
  return this.viewAfterCommit(name, {
275
270
  version: result.row.version,
276
271
  sha256: result.row.sha256,
277
272
  state,
278
273
  });
279
274
  }
280
- async writeState(name, state, actor, actorTokenId) {
275
+ async writeState(name, state, actor, actorTokenId, owner) {
281
276
  const db = this.db;
282
- if (actor !== null)
283
- await this.adminLock.lockAndAuthorize(actor);
277
+ await this.authorize(actor, owner);
284
278
  const row = await this.lockRow(name);
285
279
  if (!row)
286
280
  throw notFound(name);
@@ -297,7 +291,7 @@ let ExtensionAdminOps = class ExtensionAdminOps {
297
291
  })
298
292
  .where("name", "=", name)
299
293
  .execute();
300
- await this.audit(actor, actorTokenId, state === "enabled" ? "extension.enabled" : "extension.disabled", name, row.version, row.sha256);
294
+ await this.audit(actor, actorTokenId, state === "enabled" ? "extension.enabled" : "extension.disabled", name, row.version, row.sha256, ownerDetail(owner));
301
295
  afterCommit(() => this.notify(name));
302
296
  return { row, changed: true };
303
297
  }
@@ -316,6 +310,22 @@ let ExtensionAdminOps = class ExtensionAdminOps {
316
310
  return fallbackView(name, known, err);
317
311
  }
318
312
  }
313
+ /**
314
+ * Re-checks the actor in the operation's transaction: a super admin, or for an owner's operation
315
+ * an admin of the owner org; no account (the CLI, the kernel itself) is not checked.
316
+ */
317
+ async authorize(actor, owner) {
318
+ if (owner?.rollback === true)
319
+ return;
320
+ if (owner !== undefined) {
321
+ if (actor === null)
322
+ throw new Error("an owner's extension operation has an actor");
323
+ await this.orgLock.lockAndAuthorize(owner.orgId, actor, "catalog.upload");
324
+ }
325
+ else if (actor !== null) {
326
+ await this.adminLock.lockAndAuthorize(actor);
327
+ }
328
+ }
319
329
  /** 配置声明的插件不经安装记录管理。 */
320
330
  assertInstallable(name) {
321
331
  const declared = this.registry.declared().get(name);
@@ -372,6 +382,9 @@ __decorate([
372
382
  __decorate([
373
383
  Transactional()
374
384
  ], ExtensionAdminOps.prototype, "writeState", null);
385
+ __decorate([
386
+ Transactional({ propagation: "mandatory" })
387
+ ], ExtensionAdminOps.prototype, "authorize", null);
375
388
  __decorate([
376
389
  Transactional({ propagation: "mandatory" })
377
390
  ], ExtensionAdminOps.prototype, "lockRow", null);
@@ -379,15 +392,16 @@ ExtensionAdminOps = __decorate([
379
392
  Injectable(),
380
393
  __param(0, Inject(KernelDb)),
381
394
  __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))
395
+ __param(2, Inject(SuperAdminLock)),
396
+ __param(3, Inject(OrgLock)),
397
+ __param(4, Inject(PluginInstallLock)),
398
+ __param(5, Inject(ExtensionAdmin)),
399
+ __param(6, Inject(ExtensionRegistry)),
400
+ __param(7, Inject(ExtensionBlobs)),
401
+ __param(8, Inject(KernelConfigService)),
402
+ __param(9, Inject(KERNEL_BUS)),
403
+ __param(10, Inject(ExtensionLifecycle)),
404
+ __param(11, Inject(KERNEL_LOGGER))
391
405
  ], ExtensionAdminOps);
392
406
  export { ExtensionAdminOps };
393
407
  /**
@@ -396,6 +410,8 @@ export { ExtensionAdminOps };
396
410
  function fallbackView(name, known, err) {
397
411
  return {
398
412
  name,
413
+ // the degraded item reads nothing more (the read that failed may be the database)
414
+ displayName: null,
399
415
  version: known.version,
400
416
  source: "install",
401
417
  sha256: known.sha256,
@@ -416,6 +432,9 @@ function fallbackView(name, known, err) {
416
432
  configValid: true,
417
433
  removable: true,
418
434
  required: false,
435
+ scope: null,
436
+ enabledOrgs: 0,
437
+ builtin: false,
419
438
  installSource: null,
420
439
  error: `the change was saved, but its current status cannot be read: ${err instanceof Error ? err.message : String(err)}`,
421
440
  };
@@ -441,7 +460,13 @@ async function hasRetainedData(db, name) {
441
460
  .executeTakeFirst();
442
461
  return hit !== undefined;
443
462
  }
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`);
463
+ 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
464
  const notFound = (name) => new ApiError("extension.not_found", `Extension ${name} is not installed in this deployment`);
446
465
  /** `to` 比 `from` 旧(任一方不是合法 semver 时不算降级)。 */
447
466
  const isDowngrade = (to, from) => semver.valid(to) !== null && semver.valid(from) !== null && semver.lt(to, from);
467
+ /** The audit detail of an owner's operation. */
468
+ function ownerDetail(owner) {
469
+ if (owner === undefined)
470
+ return {};
471
+ return { ownerOrgId: owner.orgId, ...(owner.rollback === true && { rollback: true }) };
472
+ }
@@ -1,10 +1,13 @@
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";
@@ -22,13 +25,13 @@ export interface PublishBus {
22
25
  publish(topic: string, payload: unknown): Promise<void>;
23
26
  }
24
27
  /**
25
- * 部署级插件后台(企业管理员):列表 / 详情与网页批准权限(D8)。无状态,多副本共用;
28
+ * 部署级插件后台(超级管理员):列表 / 详情与网页批准权限(D8)。无状态,多副本共用;
26
29
  * 状态由 PG(安装记录、快照、各副本状态行)与本副本宿主(配置声明插件的清单)推出。
27
30
  */
28
31
  export declare class ExtensionAdmin {
29
32
  private readonly kdb;
30
33
  readonly txHost: TransactionHost;
31
- /** The enterprise admin lock (identity/enterprise-admin.ts): joins the transaction. */
34
+ /** The super admin lock (identity/super-admin.ts): joins the transaction. */
32
35
  private readonly adminLock;
33
36
  private readonly approveLock;
34
37
  private readonly blobs;
@@ -41,17 +44,30 @@ export declare class ExtensionAdmin {
41
44
  private readonly config;
42
45
  private readonly bus;
43
46
  private readonly log;
47
+ private readonly displayNames;
48
+ /** Which required overridable fields the platform left empty (spec A §5.4a). */
49
+ private readonly deploymentConfig;
50
+ /** How many orgs still need their own config for such an extension. */
51
+ private readonly effectiveConfigs;
44
52
  private readonly packageSets;
45
53
  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,
54
+ /** The super admin lock (identity/super-admin.ts): joins the transaction. */
55
+ adminLock: SuperAdminLock, approveLock: PluginApproveLock, blobs: ExtensionBlobs, installs: ExtensionInstalls, approvals: ExtensionApprovals,
48
56
  /** The config-declared extensions (this replica's host; the CLI fills it from its inspection). */
49
57
  host: ExtensionHost,
50
58
  /** 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);
59
+ lifecycle: ExtensionLifecycle, config: KernelConfigService, bus: PublishBus, log: KernelLogger, displayNames: ExtensionDisplayNames,
60
+ /** Which required overridable fields the platform left empty (spec A §5.4a). */
61
+ deploymentConfig: ExtensionDeploymentConfigService,
62
+ /** How many orgs still need their own config for such an extension. */
63
+ effectiveConfigs: EffectiveConfigs);
52
64
  private get db();
53
- /** 全部插件(配置声明 → 安装记录,各自按名字)。 */
54
- list(): Promise<AdminExtensionView[]>;
65
+ /**
66
+ * Every extension (config-declared, then install records, each by name). With `names`, only
67
+ * those: no other package is read, so a caller that needs a few items (the catalog's pending
68
+ * check) neither pays for nor logs about the packages of unrelated extensions.
69
+ */
70
+ list(names?: ReadonlySet<string>): Promise<AdminExtensionView[]>;
55
71
  /**
56
72
  * A single extension; unknown -> `extension.not_found`; package unreadable ->
57
73
  * `extension.package_unavailable`. With `allowUnreadable` an unreadable package returns the same
@@ -64,7 +80,12 @@ export declare class ExtensionAdmin {
64
80
  allowUnreadable?: boolean;
65
81
  }): Promise<AdminExtensionView>;
66
82
  /**
67
- * Web approval: re-checks the enterprise admin under the lock, compares the reviewed package
83
+ * The review digest of a stored package (the `reviewHash` its extension would show once
84
+ * installed); null when the package cannot be read.
85
+ */
86
+ packageReviewHash(sha256: string): Promise<string | null>;
87
+ /**
88
+ * Web approval: re-checks the super admin under the lock, compares the reviewed package
68
89
  * (`sha256`) and permission digest (`reviewHash`), writes the snapshot (source web) and the
69
90
  * `extension.permissions_approved` audit; after the commit publishes `kernel.plugins.changed` (a
70
91
  * failure only warns) and waits for one reconcile on this replica (other replicas converge through
@@ -74,10 +95,12 @@ export declare class ExtensionAdmin {
74
95
  * recomputed now -> `extension.approval_stale`; a config-declared extension's `sha256` must be
75
96
  * null (otherwise `validation_failed`);
76
97
  * - the snapshot already covers the current permission set (nothing to approve, F-N) ->
77
- * `extension.not_pending`.
98
+ * `extension.not_pending`, except with `confirmBootstrap` when the snapshot is the bootstrap
99
+ * step's (the catalog's confirm re-writes it with source web).
78
100
  */
79
101
  approve(actor: string, name: string, body: ApproveBody, opts?: {
80
102
  actorTokenId?: string;
103
+ confirmBootstrap?: boolean;
81
104
  }): Promise<AdminExtensionView>;
82
105
  private writeApproval;
83
106
  /** 配置声明 → 安装记录(与配置声明重名的安装记录不生效,不单列)。`only` 给出时只取这一个。 */
@@ -86,5 +109,11 @@ export declare class ExtensionAdmin {
86
109
  * 包的权限集合(静态清单 + 迁移 SQL,与上传时的审阅相同)、迁移审阅警告与是否有部署级配置字段;按 sha256 缓存。
87
110
  */
88
111
  private packageInfo;
112
+ /**
113
+ * For each configurable, readable extension whose platform config leaves required overridable
114
+ * fields empty (spec A §5.4a): the number of orgs still needing their own config. Extensions
115
+ * without overridable fields cost no read.
116
+ */
117
+ private orgsNeedingConfig;
89
118
  private views;
90
119
  }
@@ -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,6 +30,7 @@ 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 { pluginItemsOf } from "./plugin-items.js";
29
34
  export { PLUGINS_CHANGED_TOPIC };
30
35
  /** 内容寻址的包 → 权限集合(包不可变,缓存安全;只作缓存,不是跨副本状态)。 */
31
36
  const PACKAGE_SET_CACHE_MAX = 256;
@@ -47,7 +52,7 @@ function assertReadable(s) {
47
52
  }
48
53
  }
49
54
  /**
50
- * 部署级插件后台(企业管理员):列表 / 详情与网页批准权限(D8)。无状态,多副本共用;
55
+ * 部署级插件后台(超级管理员):列表 / 详情与网页批准权限(D8)。无状态,多副本共用;
51
56
  * 状态由 PG(安装记录、快照、各副本状态行)与本副本宿主(配置声明插件的清单)推出。
52
57
  */
53
58
  let ExtensionAdmin = class ExtensionAdmin {
@@ -63,14 +68,21 @@ let ExtensionAdmin = class ExtensionAdmin {
63
68
  config;
64
69
  bus;
65
70
  log;
71
+ displayNames;
72
+ deploymentConfig;
73
+ effectiveConfigs;
66
74
  packageSets = new Map();
67
75
  constructor(kdb, txHost,
68
- /** The enterprise admin lock (identity/enterprise-admin.ts): joins the transaction. */
76
+ /** The super admin lock (identity/super-admin.ts): joins the transaction. */
69
77
  adminLock, approveLock, blobs, installs, approvals,
70
78
  /** The config-declared extensions (this replica's host; the CLI fills it from its inspection). */
71
79
  host,
72
80
  /** This replica's reconcile after an approval (a no-op where the lifecycle never started: the CLI). */
73
- lifecycle, config, bus, log) {
81
+ lifecycle, config, bus, log, displayNames,
82
+ /** Which required overridable fields the platform left empty (spec A §5.4a). */
83
+ deploymentConfig,
84
+ /** How many orgs still need their own config for such an extension. */
85
+ effectiveConfigs) {
74
86
  this.kdb = kdb;
75
87
  this.txHost = txHost;
76
88
  this.adminLock = adminLock;
@@ -83,13 +95,20 @@ let ExtensionAdmin = class ExtensionAdmin {
83
95
  this.config = config;
84
96
  this.bus = bus;
85
97
  this.log = log;
98
+ this.displayNames = displayNames;
99
+ this.deploymentConfig = deploymentConfig;
100
+ this.effectiveConfigs = effectiveConfigs;
86
101
  }
87
102
  get db() {
88
103
  return this.kdb.db;
89
104
  }
90
- /** 全部插件(配置声明 → 安装记录,各自按名字)。 */
91
- async list() {
92
- const subjects = await this.subjects();
105
+ /**
106
+ * Every extension (config-declared, then install records, each by name). With `names`, only
107
+ * those: no other package is read, so a caller that needs a few items (the catalog's pending
108
+ * check) neither pays for nor logs about the packages of unrelated extensions.
109
+ */
110
+ async list(names) {
111
+ const subjects = await this.subjects(undefined, names);
93
112
  return this.views(subjects);
94
113
  }
95
114
  /**
@@ -109,7 +128,20 @@ let ExtensionAdmin = class ExtensionAdmin {
109
128
  return (await this.views([s]))[0];
110
129
  }
111
130
  /**
112
- * Web approval: re-checks the enterprise admin under the lock, compares the reviewed package
131
+ * The review digest of a stored package (the `reviewHash` its extension would show once
132
+ * installed); null when the package cannot be read.
133
+ */
134
+ async packageReviewHash(sha256) {
135
+ try {
136
+ const { set, warnings } = await this.packageInfo(sha256);
137
+ return reviewHash(set, warnings);
138
+ }
139
+ catch {
140
+ return null;
141
+ }
142
+ }
143
+ /**
144
+ * Web approval: re-checks the super admin under the lock, compares the reviewed package
113
145
  * (`sha256`) and permission digest (`reviewHash`), writes the snapshot (source web) and the
114
146
  * `extension.permissions_approved` audit; after the commit publishes `kernel.plugins.changed` (a
115
147
  * failure only warns) and waits for one reconcile on this replica (other replicas converge through
@@ -119,7 +151,8 @@ let ExtensionAdmin = class ExtensionAdmin {
119
151
  * recomputed now -> `extension.approval_stale`; a config-declared extension's `sha256` must be
120
152
  * null (otherwise `validation_failed`);
121
153
  * - the snapshot already covers the current permission set (nothing to approve, F-N) ->
122
- * `extension.not_pending`.
154
+ * `extension.not_pending`, except with `confirmBootstrap` when the snapshot is the bootstrap
155
+ * step's (the catalog's confirm re-writes it with source web).
123
156
  */
124
157
  async approve(actor, name, body, opts = {}) {
125
158
  const s = (await this.subjects(name))[0];
@@ -134,7 +167,7 @@ let ExtensionAdmin = class ExtensionAdmin {
134
167
  throw stale();
135
168
  if (body.reviewHash !== reviewHash(s.set, s.warnings))
136
169
  throw stale();
137
- await this.writeApproval(actor, name, s, opts.actorTokenId, stale);
170
+ await this.writeApproval(actor, name, s, opts.actorTokenId, stale, opts.confirmBootstrap === true);
138
171
  try {
139
172
  await this.bus.publish(PLUGINS_CHANGED_TOPIC, { plugin: name });
140
173
  }
@@ -150,7 +183,7 @@ let ExtensionAdmin = class ExtensionAdmin {
150
183
  }
151
184
  return this.get(name);
152
185
  }
153
- async writeApproval(actor, name, s, actorTokenId, stale) {
186
+ async writeApproval(actor, name, s, actorTokenId, stale, confirmBootstrap) {
154
187
  const db = this.db;
155
188
  await this.adminLock.lockAndAuthorize(actor);
156
189
  await this.approveLock.lock(name);
@@ -167,7 +200,7 @@ let ExtensionAdmin = class ExtensionAdmin {
167
200
  }
168
201
  const snapRow = await db
169
202
  .selectFrom("extension_permission_snapshots")
170
- .select(["version", "permissions"])
203
+ .select(["version", "permissions", "source"])
171
204
  .where("plugin", "=", name)
172
205
  .forUpdate()
173
206
  .executeTakeFirst();
@@ -175,7 +208,9 @@ let ExtensionAdmin = class ExtensionAdmin {
175
208
  version: snapRow.version,
176
209
  permissions: snapRow.permissions,
177
210
  };
178
- if (snapshotCovers(snap, s.set)) {
211
+ // `confirmBootstrap` (the catalog's confirm): a snapshot the bootstrap step wrote was never
212
+ // confirmed by a person, so a covered one is still taken over
213
+ if (snapshotCovers(snap, s.set) && !(confirmBootstrap && snapRow?.source === "bootstrap")) {
179
214
  throw new ApiError("extension.not_pending", `Extension ${name} ${s.version} has no new permissions awaiting approval`);
180
215
  }
181
216
  const { added, removed } = diffPermissions(snap?.permissions, s.set);
@@ -187,10 +222,9 @@ let ExtensionAdmin = class ExtensionAdmin {
187
222
  });
188
223
  }
189
224
  /** 配置声明 → 安装记录(与配置声明重名的安装记录不生效,不单列)。`only` 给出时只取这一个。 */
190
- async subjects(only) {
191
- const declared = this.host
192
- .declaredPlugins()
193
- .filter((p) => only === undefined || p.name === only);
225
+ async subjects(only, names) {
226
+ const wanted = (name) => (only === undefined || name === only) && (names === undefined || names.has(name));
227
+ const declared = this.host.declaredPlugins().filter((p) => wanted(p.name));
194
228
  const taken = new Set(this.host.declaredPlugins().map((p) => p.name));
195
229
  const out = [...declared]
196
230
  .sort((a, b) => a.name.localeCompare(b.name))
@@ -206,7 +240,7 @@ let ExtensionAdmin = class ExtensionAdmin {
206
240
  }));
207
241
  if (only !== undefined && out.length > 0)
208
242
  return out;
209
- const rows = (await this.installs.list()).filter((r) => !taken.has(r.name) && (only === undefined || r.name === only));
243
+ const rows = (await this.installs.list()).filter((r) => !taken.has(r.name) && wanted(r.name));
210
244
  for (const r of rows) {
211
245
  let info;
212
246
  try {
@@ -273,11 +307,38 @@ let ExtensionAdmin = class ExtensionAdmin {
273
307
  }
274
308
  return { ...cached, configurable: cached.set.config.deployment.length > 0 };
275
309
  }
310
+ /**
311
+ * For each configurable, readable extension whose platform config leaves required overridable
312
+ * fields empty (spec A §5.4a): the number of orgs still needing their own config. Extensions
313
+ * without overridable fields cost no read.
314
+ */
315
+ async orgsNeedingConfig(subjects) {
316
+ const out = new Map();
317
+ for (const s of subjects) {
318
+ if (!s.configurable || s.broken !== undefined)
319
+ continue;
320
+ try {
321
+ const missing = await this.deploymentConfig.orgMustConfigure(s.name);
322
+ if (missing.length > 0) {
323
+ out.set(s.name, await this.effectiveConfigs.countNeedingConfig(s.name));
324
+ }
325
+ }
326
+ catch (err) {
327
+ // the list never fails for one extension's config; the field is then left out
328
+ this.log.warn("cannot tell whether orgs must configure the extension", {
329
+ plugin: s.name,
330
+ err,
331
+ });
332
+ }
333
+ }
334
+ return out;
335
+ }
276
336
  async views(subjects) {
277
337
  if (subjects.length === 0)
278
338
  return [];
279
339
  const names = subjects.map((s) => s.name);
280
340
  const snapshots = await this.approvals.all();
341
+ const displayNames = await this.displayNames.many(names);
281
342
  const staleSeconds = STALE_RECONCILE_PERIODS * this.config.get().extensionHost.reconcileIntervalSeconds;
282
343
  const rows = await this.db
283
344
  .selectFrom("extension_replica_status")
@@ -286,7 +347,28 @@ let ExtensionAdmin = class ExtensionAdmin {
286
347
  .where("heartbeat_at", ">", sql `now() - make_interval(secs => ${staleSeconds})`)
287
348
  .orderBy("replica_id")
288
349
  .execute();
350
+ const items = await pluginItemsOf(this.db, names);
351
+ const needing = await this.orgsNeedingConfig(subjects);
352
+ const counts = new Map((await this.db
353
+ .selectFrom(enabledExtensionsByOrg(this.db).as("en"))
354
+ .innerJoin("orgs", "orgs.id", "en.org_id")
355
+ .select(["en.plugin", (eb) => eb.fn.countAll().as("n")])
356
+ .where("orgs.deleted_at", "is", null)
357
+ .where("en.plugin", "in", names)
358
+ .groupBy("en.plugin")
359
+ .execute()).map((r) => [r.plugin, Number(r.n)]));
289
360
  return subjects.map((s) => {
361
+ const of = items.get(s.name);
362
+ const builtin = of?.some((i) => i.builtin) === true || s.install?.required === true;
363
+ const scopeInfo = {
364
+ scope: of?.[0]
365
+ ? builtin || of.some((i) => i.scope === "all")
366
+ ? "all"
367
+ : of[0].scope
368
+ : null,
369
+ enabledOrgs: counts.get(s.name) ?? 0,
370
+ builtin,
371
+ };
290
372
  const replicas = rows.filter((r) => r.plugin === s.name);
291
373
  const snap = snapshots.get(s.name);
292
374
  const { added, removed } = diffPermissions(snap?.permissions, s.set);
@@ -294,9 +376,11 @@ let ExtensionAdmin = class ExtensionAdmin {
294
376
  const configValid = s.configValid ??
295
377
  !replicas.some((r) => r.state === "pending" && r.reason === "config" && r.sha256 === target);
296
378
  const install = s.install;
379
+ const displayName = displayNames.get(s.name) ?? null;
297
380
  if (s.broken !== undefined) {
298
381
  return {
299
382
  name: s.name,
383
+ displayName,
300
384
  version: s.version,
301
385
  source: s.source,
302
386
  sha256: target,
@@ -319,6 +403,7 @@ let ExtensionAdmin = class ExtensionAdmin {
319
403
  configValid,
320
404
  removable: install?.required !== true,
321
405
  required: install?.required === true,
406
+ ...scopeInfo,
322
407
  installSource: install?.source ?? null,
323
408
  error: s.broken,
324
409
  };
@@ -326,6 +411,7 @@ let ExtensionAdmin = class ExtensionAdmin {
326
411
  const permissions = permissionGroups(s.set);
327
412
  return {
328
413
  name: s.name,
414
+ displayName,
329
415
  version: s.version,
330
416
  source: s.source,
331
417
  sha256: target,
@@ -353,8 +439,10 @@ let ExtensionAdmin = class ExtensionAdmin {
353
439
  snapshot: snapshotView(snap),
354
440
  configurable: s.configurable,
355
441
  configValid,
442
+ ...(needing.has(s.name) && { orgsNeedingConfig: needing.get(s.name) }),
356
443
  removable: s.source === "install" && install?.required !== true,
357
444
  required: install?.required === true,
445
+ ...scopeInfo,
358
446
  installSource: install?.source ?? null,
359
447
  };
360
448
  });
@@ -367,7 +455,7 @@ ExtensionAdmin = __decorate([
367
455
  Injectable(),
368
456
  __param(0, Inject(KernelDb)),
369
457
  __param(1, Inject(TransactionHost)),
370
- __param(2, Inject(EnterpriseAdminLock)),
458
+ __param(2, Inject(SuperAdminLock)),
371
459
  __param(3, Inject(PluginApproveLock)),
372
460
  __param(4, Inject(ExtensionBlobs)),
373
461
  __param(5, Inject(ExtensionInstalls)),
@@ -376,7 +464,10 @@ ExtensionAdmin = __decorate([
376
464
  __param(8, Inject(ExtensionLifecycle)),
377
465
  __param(9, Inject(KernelConfigService)),
378
466
  __param(10, Inject(KERNEL_BUS)),
379
- __param(11, Inject(KERNEL_LOGGER))
467
+ __param(11, Inject(KERNEL_LOGGER)),
468
+ __param(12, Inject(ExtensionDisplayNames)),
469
+ __param(13, Inject(ExtensionDeploymentConfigService)),
470
+ __param(14, Inject(EffectiveConfigs))
380
471
  ], ExtensionAdmin);
381
472
  export { ExtensionAdmin };
382
473
  const replicaView = (r) => ({