@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
@@ -9,10 +9,13 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
9
9
  };
10
10
  import { createHash } from "node:crypto";
11
11
  import { Inject, Injectable } from "@nestjs/common";
12
+ import { ClientBuilds } from "../client/client-builds.service.js";
13
+ import { CLIENT_DIR } from "../client/client-files.js";
12
14
  import { KernelConfigService } from "../infra/config/kernel-config.service.js";
13
15
  import { KernelDb } from "../infra/database/kernel-db.js";
14
16
  import { TransactionHost } from "../infra/database/transaction-host.js";
15
17
  import { Transactional } from "../infra/database/transactional.decorator.js";
18
+ import { unpackPackageTgz } from "../packages/tgz.js";
16
19
  import { StorageService } from "../storage/storage.service.js";
17
20
  /**
18
21
  * Content-addressed extension package store (C13): one copy per sha256 of the whole tgz.
@@ -21,6 +24,13 @@ import { StorageService } from "../storage/storage.service.js";
21
24
  * extension, F-Q): PG `extension_blobs` (`blob_store = pg`, also limited by `packages.maxBytes`).
22
25
  * Each package's location is recorded in `extension_packages.blob_store`; reads follow the record and
23
26
  * check the sha256.
27
+ *
28
+ * A package with an `extension.client` section also stores its client build (`ClientBuilds`,
29
+ * client extensions spec §9.1): the client files are read again from the bytes being stored,
30
+ * checked against the section and written to object storage before the package row's transaction,
31
+ * and the build row is inserted in that transaction, all under the build's lock. Without object
32
+ * storage (`ClientBuilds`' own, which the CLI points at its store) such a package is refused
33
+ * (`storage.unavailable`), so a stored build always has its files.
24
34
  */
25
35
  /** 取到的包与 sha256 不符(存储里的字节被篡改或损坏)。 */
26
36
  export class ExtensionBlobIntegrityError extends Error {
@@ -39,6 +49,7 @@ let ExtensionBlobs = class ExtensionBlobs {
39
49
  txHost;
40
50
  storage;
41
51
  config;
52
+ clientBuilds;
42
53
  /**
43
54
  * CLI only: packages the CLI process imported itself and reads back before the store, since such
44
55
  * a package may be recorded in an object store the CLI cannot read. Each entry's sha256 was
@@ -48,11 +59,12 @@ let ExtensionBlobs = class ExtensionBlobs {
48
59
  local = new Map();
49
60
  constructor(db, txHost,
50
61
  /** Without an object-store extension (the CLI) packages go to PG. */
51
- storage, config) {
62
+ storage, config, clientBuilds) {
52
63
  this.db = db;
53
64
  this.txHost = txHost;
54
65
  this.storage = storage;
55
66
  this.config = config;
67
+ this.clientBuilds = clientBuilds;
56
68
  }
57
69
  /** `packages.maxBytes` (read at every call). */
58
70
  maxBytes() {
@@ -85,16 +97,38 @@ let ExtensionBlobs = class ExtensionBlobs {
85
97
  if (createHash("sha256").update(bytes).digest("hex") !== p.sha256) {
86
98
  throw new ExtensionBlobIntegrityError(p.sha256);
87
99
  }
100
+ const client = p.section.client;
101
+ if (client === undefined) {
102
+ await this.store(p, bytes, src, undefined);
103
+ return;
104
+ }
105
+ // client code is delivered from object storage: refused before anything is written without it
106
+ this.clientBuilds.assertAvailable();
107
+ const files = await this.clientFiles(bytes);
108
+ // one store or delete of this package's client build at a time (ClientBuilds header)
109
+ await this.clientBuilds.locked(p.sha256, () => this.store(p, bytes, src, { section: client, files }));
110
+ }
111
+ /** {@link put} after its checks; `client` for a package with client code (under its lock). */
112
+ async store(p, bytes, src, client) {
113
+ const plugin = p.section.manifest.name;
88
114
  const existing = await this.db
89
115
  .selectFrom("extension_packages")
90
116
  .select("blob_store")
91
117
  .where("sha256", "=", p.sha256)
92
118
  .executeTakeFirst();
93
119
  if (existing) {
94
- // 记录已在:字节若丢了(对象被删、库被清)就按原存放位置补上
120
+ // The row is there: bytes that went missing (an object deleted, a database cleared) are
121
+ // restored where the row says, and so are the client build's files and row
95
122
  await this.repair(p.sha256, existing.blob_store, bytes);
123
+ if (client !== undefined) {
124
+ await this.clientBuilds.extract(p.sha256, plugin, client.files, client.section);
125
+ }
96
126
  return;
97
127
  }
128
+ // checked and written before the transaction (no object storage call inside one)
129
+ const build = client !== undefined
130
+ ? await this.clientBuilds.writeFiles(p.sha256, plugin, client.files, client.section)
131
+ : undefined;
98
132
  const store = src.store ?? (this.storage.available ? "object" : "pg");
99
133
  if (store === "object") {
100
134
  if (!this.storage.available)
@@ -106,9 +140,14 @@ let ExtensionBlobs = class ExtensionBlobs {
106
140
  }
107
141
  // the row stores the plugin's extension section as reviewed (without the name / version copy)
108
142
  const { name: _name, version: _version, ...section } = p.section;
109
- await this.record(p, section, bytes, src, store);
143
+ await this.record(p, section, bytes, src, store, build);
144
+ }
145
+ /** The files under `dist/client/` of a package's bytes (sha256 already checked by the caller). */
146
+ async clientFiles(bytes) {
147
+ const files = await unpackPackageTgz(bytes, { maxBytes: this.maxBytes() });
148
+ return new Map(files.filter((f) => f.path.startsWith(CLIENT_DIR)).map((f) => [f.path, f.data]));
110
149
  }
111
- async record(p, section, bytes, src, store) {
150
+ async record(p, section, bytes, src, store, build) {
112
151
  const m = p.section.manifest;
113
152
  const inserted = await this.db
114
153
  .insertInto("extension_packages")
@@ -123,6 +162,7 @@ let ExtensionBlobs = class ExtensionBlobs {
123
162
  source: src.source,
124
163
  source_ref: src.ref,
125
164
  uploaded_by: src.actor,
165
+ display_name: p.displayName === undefined ? null : JSON.stringify(p.displayName),
126
166
  })
127
167
  .onConflict((oc) => oc.column("sha256").doNothing())
128
168
  .returning("sha256")
@@ -134,6 +174,9 @@ let ExtensionBlobs = class ExtensionBlobs {
134
174
  .onConflict((oc) => oc.column("sha256").doNothing())
135
175
  .execute();
136
176
  }
177
+ // the build row commits with the package row it references (or after another replica's)
178
+ if (build !== undefined)
179
+ await this.clientBuilds.insert(build);
137
180
  }
138
181
  /** 已有记录的包:按记录的存放位置检查字节在不在,不在就写回(调用方已校验 sha256)。 */
139
182
  async repair(sha256, store, bytes) {
@@ -204,7 +247,8 @@ ExtensionBlobs = __decorate([
204
247
  __param(0, Inject(KernelDb)),
205
248
  __param(1, Inject(TransactionHost)),
206
249
  __param(2, Inject(StorageService)),
207
- __param(3, Inject(KernelConfigService))
250
+ __param(3, Inject(KernelConfigService)),
251
+ __param(4, Inject(ClientBuilds))
208
252
  ], ExtensionBlobs);
209
253
  export { ExtensionBlobs };
210
254
  async function readCapped(body, max) {
@@ -11,6 +11,7 @@ import { ExtensionAdminOps } from "./admin-ops.js";
11
11
  import { ExtensionInstalls } from "./installs.js";
12
12
  import { PluginApproveLock } from "./locks.js";
13
13
  import { ExtensionRegistry } from "./registry.js";
14
+ import type { SingleProviderNote } from "./single-provider.js";
14
15
  /**
15
16
  * The bootstrap step (package ecosystem spec §7, startup bootstrap spec): installs the plugins
16
17
  * pinned by the bootstrap manifest (`packages/kernel/bootstrap.json`). It replaced the builtin
@@ -35,7 +36,7 @@ import { ExtensionRegistry } from "./registry.js";
35
36
  * manifest's sha256 (written with the audit `bootstrap.completed` only when every entry
36
37
  * succeeded; otherwise the next start runs it again, which is idempotent).
37
38
  * - Only entries new to the manifest are installed (Ruling 5): an optional entry that the last
38
- * completed run already handled and that is not installed now (an enterprise admin uninstalled
39
+ * completed run already handled and that is not installed now (a super admin uninstalled
39
40
  * it) stays uninstalled -> `kept`. A required entry is always installed.
40
41
  * - Per entry, by the installed state of its extension:
41
42
  * - not installed (and new, or required): imported into the catalog (source `bootstrap`, ref
@@ -44,8 +45,8 @@ import { ExtensionRegistry } from "./registry.js";
44
45
  * and enabled -> `installed`;
45
46
  * - installed from `bootstrap` at a lower version: upgraded the same way (core's release vouched
46
47
  * for the version, so new permissions are pre-approved and audited), keeping the desired state
47
- * an enterprise admin chose (a disabled optional plugin stays disabled) -> `upgraded`;
48
- * - installed at a higher version, or from another source (an enterprise admin upgraded it), or
48
+ * a super admin chose (a disabled optional plugin stays disabled) -> `upgraded`;
49
+ * - installed at a higher version, or from another source (a super admin upgraded it), or
49
50
  * the name is config-declared (`declared`: config wins, no install record is created):
50
51
  * untouched, never downgraded -> `kept`;
51
52
  * - a declarative plugin (no extension): imported into the catalog only -> `imported` (`kept`
@@ -61,7 +62,10 @@ import { ExtensionRegistry } from "./registry.js";
61
62
  * A failed entry does not stop the others; the run then throws {@link BootstrapFailedError} naming
62
63
  * them. The packages are kept in PG (`blob_store = 'pg'`), so installing an extension never needs
63
64
  * the object store (object-store-s3 is itself a bootstrap plugin) and the directory and npm are
64
- * never needed again; a declarative plugin's catalog files do need the object store.
65
+ * never needed again. A plugin's icons and setup guide files are kept in PG too (`catalog_files`),
66
+ * so they never need it either; its skills, connector templates and agent templates do (an entry
67
+ * shipping them fails while no object store runs; an optional one is retried after the extensions
68
+ * loaded).
65
69
  */
66
70
  /** The bootstrap manifest that ships with the kernel package. */
67
71
  export declare const BOOTSTRAP_MANIFEST_FILE: string;
@@ -71,6 +75,11 @@ export interface BootstrapEntryResult {
71
75
  action: "installed" | "upgraded" | "kept" | "imported" | "required_cleared";
72
76
  /** The version installed / imported now, or the version kept. */
73
77
  version: string;
78
+ /**
79
+ * An optional entry installed (or upgraded) but left disabled: another enabled extension holds
80
+ * a single-provider extension point it provides. (A required entry fails instead.)
81
+ */
82
+ leftDisabled?: SingleProviderNote;
74
83
  }
75
84
  export interface BootstrapResult {
76
85
  /** sha256 (hex) of the manifest ({@link bootstrapManifestSha256}). */
@@ -175,6 +184,12 @@ export declare class BootstrapService {
175
184
  /** The plugin import a declarative entry (or an entry's catalog version) goes through. */
176
185
  imports: BootstrapImports;
177
186
  }): Promise<BootstrapResult>;
187
+ /**
188
+ * A pin whose plugin name an org holds (a live org-owned catalog item): the bootstrap takes no
189
+ * name over (ruling P3-28), so the entry fails; this warning tells the super admin why and
190
+ * which org holds it (final review M4).
191
+ */
192
+ private warnIfHeld;
178
193
  /** The `bootstrap_runs` row and the `bootstrap.completed` audit, in one transaction. */
179
194
  private recordDone;
180
195
  /**
@@ -186,16 +201,37 @@ export declare class BootstrapService {
186
201
  /** The entry names the last completed run handled (undefined before any run completed). */
187
202
  private lastRunNames;
188
203
  private entry;
204
+ /**
205
+ * The catalog item of a bootstrap entry follows `required`: a required entry is builtin, offered
206
+ * to every org (scope `all`) and not disabled (migration 0075 could leave a required plugin
207
+ * disabled); an entry that stops being required is no longer builtin and keeps scope `all` (the
208
+ * admin may change it from then on).
209
+ */
210
+ private markBuiltin;
189
211
  /** A declarative plugin: catalog only. Returns false when that version is already imported. */
190
212
  private importOnly;
191
213
  /**
192
- * Imports, approves, installs and enables (one review, confirmed with `deployExtension`). When
214
+ * Imports, approves, installs and enables (one review; its confirm deploys the extension). When
193
215
  * the catalog already has this version (an earlier run stopped after importing, or the same
194
216
  * package came from a marketplace), the extension is deployed from the package store instead.
195
217
  */
196
218
  private deploy;
197
219
  /** The extension of a catalog version already imported: ingest, approve, install (, enable). */
198
220
  private deployFromStore;
221
+ /**
222
+ * Enables a bootstrap extension unless another enabled extension provides one of its
223
+ * single-provider extension points (see {@link leftDisabled}).
224
+ */
225
+ private enableOrWarn;
226
+ /**
227
+ * A bootstrap extension left disabled because another enabled extension holds a single-provider
228
+ * extension point it provides. An optional preinstall (a sandbox while the super admin runs
229
+ * another one) stays disabled with a warning, and the entry's result says so. A required entry
230
+ * fails (thrown, so the run is not recorded done, `capybara bootstrap` exits 1 and
231
+ * `capybara start` refuses to serve): the deployment cannot run without it, and only the super
232
+ * admin can free the point, by disabling the other provider and running the bootstrap again.
233
+ */
234
+ private leftDisabled;
199
235
  /** The permission snapshot of a stored package (source `bootstrap`), under the approve lock. */
200
236
  private approveStored;
201
237
  /** Install records still `required` whose entry left the manifest lose `required`. */
@@ -15,6 +15,7 @@ import { parseBootstrapManifest, SDK_VERSION, } from "@capybara-hq/plugin-sdk";
15
15
  import { Inject, Injectable, Optional } from "@nestjs/common";
16
16
  import { sql } from "kysely";
17
17
  import semver from "semver";
18
+ import { otherNameOwner } from "../catalog/ownership.js";
18
19
  import { catalogPackageError } from "../catalog/plugin-import.js";
19
20
  import { PluginPackageError, readPluginPackage } from "../catalog/plugin-package.js";
20
21
  import { ApiError } from "../errors.js";
@@ -57,7 +58,7 @@ import { ExtensionRegistry } from "./registry.js";
57
58
  * manifest's sha256 (written with the audit `bootstrap.completed` only when every entry
58
59
  * succeeded; otherwise the next start runs it again, which is idempotent).
59
60
  * - Only entries new to the manifest are installed (Ruling 5): an optional entry that the last
60
- * completed run already handled and that is not installed now (an enterprise admin uninstalled
61
+ * completed run already handled and that is not installed now (a super admin uninstalled
61
62
  * it) stays uninstalled -> `kept`. A required entry is always installed.
62
63
  * - Per entry, by the installed state of its extension:
63
64
  * - not installed (and new, or required): imported into the catalog (source `bootstrap`, ref
@@ -66,8 +67,8 @@ import { ExtensionRegistry } from "./registry.js";
66
67
  * and enabled -> `installed`;
67
68
  * - installed from `bootstrap` at a lower version: upgraded the same way (core's release vouched
68
69
  * for the version, so new permissions are pre-approved and audited), keeping the desired state
69
- * an enterprise admin chose (a disabled optional plugin stays disabled) -> `upgraded`;
70
- * - installed at a higher version, or from another source (an enterprise admin upgraded it), or
70
+ * a super admin chose (a disabled optional plugin stays disabled) -> `upgraded`;
71
+ * - installed at a higher version, or from another source (a super admin upgraded it), or
71
72
  * the name is config-declared (`declared`: config wins, no install record is created):
72
73
  * untouched, never downgraded -> `kept`;
73
74
  * - a declarative plugin (no extension): imported into the catalog only -> `imported` (`kept`
@@ -83,7 +84,10 @@ import { ExtensionRegistry } from "./registry.js";
83
84
  * A failed entry does not stop the others; the run then throws {@link BootstrapFailedError} naming
84
85
  * them. The packages are kept in PG (`blob_store = 'pg'`), so installing an extension never needs
85
86
  * the object store (object-store-s3 is itself a bootstrap plugin) and the directory and npm are
86
- * never needed again; a declarative plugin's catalog files do need the object store.
87
+ * never needed again. A plugin's icons and setup guide files are kept in PG too (`catalog_files`),
88
+ * so they never need it either; its skills, connector templates and agent templates do (an entry
89
+ * shipping them fails while no object store runs; an optional one is retried after the extensions
90
+ * loaded).
87
91
  */
88
92
  /** The bootstrap manifest that ships with the kernel package. */
89
93
  export const BOOTSTRAP_MANIFEST_FILE = fileURLToPath(new URL("../../bootstrap.json", import.meta.url));
@@ -306,6 +310,7 @@ let BootstrapService = class BootstrapService {
306
310
  const failures = [];
307
311
  for (const e of o.manifest.plugins) {
308
312
  signal.throwIfAborted();
313
+ await this.warnIfHeld(e);
309
314
  try {
310
315
  const r = await this.entry(e, files.get(e.name), handled, o.imports);
311
316
  results.push(carried(r, o.carry));
@@ -334,6 +339,23 @@ let BootstrapService = class BootstrapService {
334
339
  return { manifestSha256, results };
335
340
  });
336
341
  }
342
+ /**
343
+ * A pin whose plugin name an org holds (a live org-owned catalog item): the bootstrap takes no
344
+ * name over (ruling P3-28), so the entry fails; this warning tells the super admin why and
345
+ * which org holds it (final review M4).
346
+ */
347
+ async warnIfHeld(e) {
348
+ const holder = await otherNameOwner(this.db, e.name, null);
349
+ if (holder?.kind !== "org")
350
+ return;
351
+ this.log.warn("bootstrap: the plugin name is held by an organization; the entry cannot take it over until the organization renames or deletes its plugin", {
352
+ plugin: e.name,
353
+ version: e.version,
354
+ required: e.required,
355
+ ownerOrgId: holder.orgId,
356
+ ownerOrg: holder.name,
357
+ });
358
+ }
337
359
  /** The `bootstrap_runs` row and the `bootstrap.completed` audit, in one transaction. */
338
360
  async recordDone(manifestSha256, results) {
339
361
  await this.db
@@ -400,9 +422,11 @@ let BootstrapService = class BootstrapService {
400
422
  // Not new to the manifest: an optional entry left out on purpose stays out (Ruling 5)
401
423
  const isNew = handled === undefined || !handled.has(e.name);
402
424
  if (!pkg.manifest.extension) {
425
+ await this.markBuiltin(e.name, e.required);
403
426
  if (!isNew)
404
427
  return { name: e.name, action: "kept", version: e.version };
405
428
  const imported = await this.importOnly(e, bytes, ref, imports);
429
+ await this.markBuiltin(e.name, e.required);
406
430
  return { name: e.name, action: imported ? "imported" : "kept", version: e.version };
407
431
  }
408
432
  if (this.registry.declared().has(e.name)) {
@@ -421,13 +445,14 @@ let BootstrapService = class BootstrapService {
421
445
  return { name: e.name, action: "kept", version: e.version };
422
446
  }
423
447
  let result;
448
+ let leftDisabled;
424
449
  if (!row) {
425
- await this.deploy(e, bytes, ref, true, imports);
450
+ leftDisabled = await this.deploy(e, bytes, ref, true, imports);
426
451
  result = { name: e.name, action: "installed", version: e.version };
427
452
  }
428
453
  else if (row.source === "bootstrap" && isLower(row.version, e.version)) {
429
454
  // The desired state the admin chose is kept; a required plugin is enabled below anyway
430
- await this.deploy(e, bytes, ref, row.desired_state === "enabled", imports);
455
+ leftDisabled = await this.deploy(e, bytes, ref, row.desired_state === "enabled", imports);
431
456
  result = { name: e.name, action: "upgraded", version: e.version };
432
457
  }
433
458
  else {
@@ -449,9 +474,42 @@ let BootstrapService = class BootstrapService {
449
474
  }
450
475
  // A required install must run on the deployment (an org cannot use it otherwise)
451
476
  if (e.required && row?.desired_state === "disabled") {
452
- await this.ops.enable(e.name, null);
477
+ leftDisabled = await this.enableOrWarn(e);
453
478
  }
454
- return result;
479
+ await this.markBuiltin(e.name, e.required);
480
+ return leftDisabled === undefined ? result : { ...result, leftDisabled };
481
+ }
482
+ /**
483
+ * The catalog item of a bootstrap entry follows `required`: a required entry is builtin, offered
484
+ * to every org (scope `all`) and not disabled (migration 0075 could leave a required plugin
485
+ * disabled); an entry that stops being required is no longer builtin and keeps scope `all` (the
486
+ * admin may change it from then on).
487
+ */
488
+ async markBuiltin(name, required) {
489
+ const touch = { updated_at: sql `now()` };
490
+ if (required) {
491
+ await this.db
492
+ .updateTable("catalog_items")
493
+ .set({
494
+ builtin: true,
495
+ scope: "all",
496
+ disabled: false,
497
+ scope_version: sql `scope_version + 1`,
498
+ ...touch,
499
+ })
500
+ .where("name", "=", name)
501
+ .where("deleted_at", "is", null)
502
+ .where((eb) => eb.or([eb("builtin", "=", false), eb("scope", "<>", "all"), eb("disabled", "=", true)]))
503
+ .execute();
504
+ return;
505
+ }
506
+ await this.db
507
+ .updateTable("catalog_items")
508
+ .set({ builtin: false, ...touch })
509
+ .where("name", "=", name)
510
+ .where("deleted_at", "is", null)
511
+ .where("builtin", "=", true)
512
+ .execute();
455
513
  }
456
514
  /** A declarative plugin: catalog only. Returns false when that version is already imported. */
457
515
  async importOnly(e, bytes, ref, imports) {
@@ -461,10 +519,7 @@ let BootstrapService = class BootstrapService {
461
519
  ref,
462
520
  integrity: e.integrity,
463
521
  });
464
- await imports.confirm(null, stagingId, {
465
- reviewHash: review.reviewHash,
466
- deployExtension: false,
467
- });
522
+ await imports.confirm(null, stagingId, { reviewHash: review.reviewHash });
468
523
  return true;
469
524
  }
470
525
  catch (err) {
@@ -474,7 +529,7 @@ let BootstrapService = class BootstrapService {
474
529
  }
475
530
  }
476
531
  /**
477
- * Imports, approves, installs and enables (one review, confirmed with `deployExtension`). When
532
+ * Imports, approves, installs and enables (one review; its confirm deploys the extension). When
478
533
  * the catalog already has this version (an earlier run stopped after importing, or the same
479
534
  * package came from a marketplace), the extension is deployed from the package store instead.
480
535
  */
@@ -489,19 +544,25 @@ let BootstrapService = class BootstrapService {
489
544
  }
490
545
  catch (err) {
491
546
  if (err instanceof ApiError && err.code === "catalog.version_exists") {
492
- await this.deployFromStore(e, bytes, ref, enable);
493
- return;
547
+ return this.deployFromStore(e, bytes, ref, enable);
494
548
  }
495
549
  throw err;
496
550
  }
497
551
  const r = await imports.confirm(null, staged.stagingId, {
498
552
  reviewHash: staged.review.reviewHash,
499
- deployExtension: true,
500
553
  enable,
501
554
  });
502
555
  if (r.deploy?.result === "failed") {
503
556
  throw new ApiError((r.deploy.code ?? "internal"), r.deploy.message ?? `installing extension ${e.name} failed`);
504
557
  }
558
+ if (r.deploy?.singleProvider !== undefined) {
559
+ return this.leftDisabled(e, {
560
+ code: r.deploy.code,
561
+ message: r.deploy.message,
562
+ singleProvider: r.deploy.singleProvider,
563
+ });
564
+ }
565
+ return undefined;
505
566
  }
506
567
  /** The extension of a catalog version already imported: ingest, approve, install (, enable). */
507
568
  async deployFromStore(e, bytes, ref, enable) {
@@ -523,9 +584,39 @@ let BootstrapService = class BootstrapService {
523
584
  .where("name", "=", e.name)
524
585
  .where("deleted_at", "is", null)
525
586
  .executeTakeFirst();
526
- await this.ops.install(e.name, review.sha256, null, undefined, item ? { catalogItemId: item.id } : {});
527
- if (enable)
528
- await this.ops.enable(e.name, null);
587
+ const installed = await this.ops.install(e.name, review.sha256, null, undefined, item ? { catalogItemId: item.id } : {});
588
+ // An upgrade newly providing a held single-provider point is left disabled by the install
589
+ if (installed.leftDisabled !== undefined)
590
+ return this.leftDisabled(e, installed.leftDisabled);
591
+ return enable ? this.enableOrWarn(e) : undefined;
592
+ }
593
+ /**
594
+ * Enables a bootstrap extension unless another enabled extension provides one of its
595
+ * single-provider extension points (see {@link leftDisabled}).
596
+ */
597
+ async enableOrWarn(e) {
598
+ const r = await this.ops.enableUnlessOccupied(e.name, null);
599
+ return r.enabled ? undefined : this.leftDisabled(e, r.note);
600
+ }
601
+ /**
602
+ * A bootstrap extension left disabled because another enabled extension holds a single-provider
603
+ * extension point it provides. An optional preinstall (a sandbox while the super admin runs
604
+ * another one) stays disabled with a warning, and the entry's result says so. A required entry
605
+ * fails (thrown, so the run is not recorded done, `capybara bootstrap` exits 1 and
606
+ * `capybara start` refuses to serve): the deployment cannot run without it, and only the super
607
+ * admin can free the point, by disabling the other provider and running the bootstrap again.
608
+ */
609
+ leftDisabled(e, note) {
610
+ const block = note.singleProvider;
611
+ if (e.required) {
612
+ const other = block.enabled.name;
613
+ throw new ApiError(note.code, `Required plugin ${e.name} provides ${block.extensionPoint}, which ${other} already provides; disable ${other} and run the bootstrap again`, [block]);
614
+ }
615
+ this.log.warn(`bootstrap: the plugin is installed disabled; ${note.message}`, {
616
+ plugin: e.name,
617
+ required: e.required,
618
+ });
619
+ return note;
529
620
  }
530
621
  /** The permission snapshot of a stored package (source `bootstrap`), under the approve lock. */
531
622
  async approveStored(e, set, sha256) {
@@ -552,6 +643,17 @@ let BootstrapService = class BootstrapService {
552
643
  if (names.length > 0)
553
644
  q = q.where("name", "not in", names);
554
645
  const rows = await q.returning(["name", "version"]).execute();
646
+ for (const r of rows)
647
+ await this.markBuiltin(r.name, false);
648
+ // A declarative plugin has no install record: clear builtin by catalog name
649
+ let items = this.db
650
+ .updateTable("catalog_items")
651
+ .set({ builtin: false, updated_at: sql `now()` })
652
+ .where("builtin", "=", true)
653
+ .where("deleted_at", "is", null);
654
+ if (names.length > 0)
655
+ items = items.where("name", "not in", names);
656
+ await items.execute();
555
657
  return rows.map((r) => ({ name: r.name, action: "required_cleared", version: r.version }));
556
658
  }
557
659
  };
@@ -54,6 +54,18 @@ export interface ExtensionCli {
54
54
  publishChanged(plugin: string): Promise<boolean>;
55
55
  close(): Promise<void>;
56
56
  }
57
+ /**
58
+ * The effective deployment config (the startup config `fileValue` completed by the `stored` PG
59
+ * fields) parsed as the host's load gate does: overridable fields may stay empty (spec A §5.4a),
60
+ * hidden and read-only ones must be complete.
61
+ */
62
+ export declare function parseDeploymentConfig(schema: z.ZodTypeAny, stored: Record<string, unknown>, fileValue: unknown): {
63
+ ok: true;
64
+ value: unknown;
65
+ } | {
66
+ ok: false;
67
+ issues: ConfigIssue[];
68
+ };
57
69
  /**
58
70
  * The CLI's extension management context (C18, F-Q): a Nest application context with
59
71
  * the extensions module over the database and a lazy Redis connection used only for publishing
@@ -13,7 +13,17 @@ import { ExtensionsModule } from "./extensions.module.js";
13
13
  import { ExtensionHost } from "./host.js";
14
14
  import { ExtensionInstalls } from "./installs.js";
15
15
  import { PLUGINS_CHANGED_TOPIC } from "./lifecycle-topics.js";
16
+ import { parseLoadGate } from "./org-levels.js";
16
17
  import { ExtensionPackageError, extensionPackageApiError, permissionSetOfPackage, readExtensionPackage, } from "./package.js";
18
+ /**
19
+ * The effective deployment config (the startup config `fileValue` completed by the `stored` PG
20
+ * fields) parsed as the host's load gate does: overridable fields may stay empty (spec A §5.4a),
21
+ * hidden and read-only ones must be complete.
22
+ */
23
+ export function parseDeploymentConfig(schema, stored, fileValue) {
24
+ const r = parseLoadGate(schema, mergeDeploymentConfig(stored, fileValue, schemaFields(schema).map((f) => f.path)));
25
+ return r.success ? { ok: true, value: r.data } : { ok: false, issues: toIssues(r.error) };
26
+ }
17
27
  /**
18
28
  * The CLI's extension management context (C18, F-Q): a Nest application context with
19
29
  * the extensions module over the database and a lazy Redis connection used only for publishing
@@ -44,8 +54,7 @@ export async function openExtensionCli(config, log, opts = {}) {
44
54
  const stored = await readStoredDeploymentConfig(db.db, keyring, name, {
45
55
  secretPaths: secretPathsOf(schemaFields(schema)),
46
56
  });
47
- const r = schema.safeParse(mergeDeploymentConfig(stored, config.extensionConfig[name], schemaFields(schema).map((f) => f.path)));
48
- return r.success ? { ok: true, value: r.data } : { ok: false, issues: toIssues(r.error) };
57
+ return parseDeploymentConfig(schema, stored, config.extensionConfig[name]);
49
58
  };
50
59
  const configIssues = new Map();
51
60
  const deploymentConfigs = new Map();
@@ -0,0 +1,10 @@
1
+ import type { core } from "zod";
2
+ /**
3
+ * 插件部署配置(校验后)中非密钥部分的摘要:先把 schema 里所有 secret 叶子(`configFields` 可达路径,
4
+ * 加载时 `assertSecretsReachable` 已保证密钥都在这些路径上)换成固定占位值,再取 sha256(键排序 JSON) 前 16 位十六进制。
5
+ * 给需要「配置变了就失效」的缓存键用(如模型列表)。密钥不参与摘要:不加盐的短摘要写进 Redis 键名后,
6
+ * 低熵密钥可被离线猜测、泄露的密钥可被确认;代价是轮换密钥不会让缓存失效(缓存内容本来就不该依赖密钥)。
7
+ * 没有部署配置 schema 时无从得知哪些是密钥,摘要不按配置区分。同一份配置在各副本上得到同一摘要。
8
+ * 函数自己按 schema 遮蔽,调用方不必(也不能忘记)先打码。
9
+ */
10
+ export declare function deploymentConfigHash(schema: core.$ZodType | undefined, config: unknown): string;
@@ -0,0 +1,38 @@
1
+ import { createHash } from "node:crypto";
2
+ import { configFields, getPath, setPath } from "../config/fields.js";
3
+ /** 键排序后的 JSON(对象键顺序不影响结果);undefined 字段与 JSON.stringify 一样省略。 */
4
+ const canonicalJson = (v) => {
5
+ if (Array.isArray(v))
6
+ return `[${v.map((x) => (x === undefined ? "null" : canonicalJson(x))).join(",")}]`;
7
+ if (v !== null && typeof v === "object") {
8
+ const entries = Object.entries(v)
9
+ .filter(([, x]) => x !== undefined)
10
+ .sort(([a], [b]) => (a < b ? -1 : a > b ? 1 : 0));
11
+ return `{${entries.map(([k, x]) => `${JSON.stringify(k)}:${canonicalJson(x)}`).join(",")}}`;
12
+ }
13
+ return JSON.stringify(v) ?? "null";
14
+ };
15
+ /** 遮蔽 secret 字段后参与摘要的固定占位值。 */
16
+ const SECRET_PLACEHOLDER = "<secret>";
17
+ /**
18
+ * 插件部署配置(校验后)中非密钥部分的摘要:先把 schema 里所有 secret 叶子(`configFields` 可达路径,
19
+ * 加载时 `assertSecretsReachable` 已保证密钥都在这些路径上)换成固定占位值,再取 sha256(键排序 JSON) 前 16 位十六进制。
20
+ * 给需要「配置变了就失效」的缓存键用(如模型列表)。密钥不参与摘要:不加盐的短摘要写进 Redis 键名后,
21
+ * 低熵密钥可被离线猜测、泄露的密钥可被确认;代价是轮换密钥不会让缓存失效(缓存内容本来就不该依赖密钥)。
22
+ * 没有部署配置 schema 时无从得知哪些是密钥,摘要不按配置区分。同一份配置在各副本上得到同一摘要。
23
+ * 函数自己按 schema 遮蔽,调用方不必(也不能忘记)先打码。
24
+ */
25
+ export function deploymentConfigHash(schema, config) {
26
+ let redacted = null;
27
+ if (schema) {
28
+ redacted = structuredClone(config);
29
+ if (redacted !== null && typeof redacted === "object") {
30
+ for (const f of configFields(schema)) {
31
+ if (f.meta?.secret && getPath(redacted, f.path) !== undefined) {
32
+ setPath(redacted, f.path, SECRET_PLACEHOLDER);
33
+ }
34
+ }
35
+ }
36
+ }
37
+ return createHash("sha256").update(canonicalJson(redacted)).digest("hex").slice(0, 16);
38
+ }
@@ -1,7 +1,19 @@
1
1
  import type { z } from "zod";
2
2
  /** 校验失败的单条原因:只含路径与按 issue 类型生成的说明,不回显字段值。 */
3
3
  export interface ConfigIssue {
4
+ /** The path joined with dots (`""` = the root); ambiguous when a key contains a dot. */
4
5
  path: string;
6
+ /** The zod path unjoined (record keys such as endpoint names may contain dots). */
7
+ segments: (string | number)[];
5
8
  message: string;
9
+ /**
10
+ * A custom issue whose `params.ui` names a key of the schema's root `x-ui.messages`: the form
11
+ * shows that localized message (spec §4.4). Never zod's own custom text.
12
+ */
13
+ messageKey?: string;
6
14
  }
7
- export declare function toIssues(error: z.ZodError): ConfigIssue[];
15
+ /**
16
+ * The issues of a failed config parse. `messages` is the root `x-ui.messages` of the schema's
17
+ * form JSON Schema (`configMessages`): custom issues naming one of its keys get `messageKey`.
18
+ */
19
+ export declare function toIssues(error: z.ZodError, messages?: Record<string, unknown>): ConfigIssue[];
@@ -23,9 +23,26 @@ function issueMessage(i) {
23
23
  return "invalid value";
24
24
  }
25
25
  }
26
- export function toIssues(error) {
27
- return error.issues.map((i) => ({
28
- path: i.path.map(String).join("."),
29
- message: issueMessage(i),
30
- }));
26
+ /** The `params.ui` of a custom issue when it names one of `messages` (own keys only). */
27
+ function messageKeyOf(i, messages) {
28
+ if (i.code !== "custom" || messages === undefined)
29
+ return undefined;
30
+ const key = i.params?.ui;
31
+ return typeof key === "string" && Object.hasOwn(messages, key) ? key : undefined;
32
+ }
33
+ /**
34
+ * The issues of a failed config parse. `messages` is the root `x-ui.messages` of the schema's
35
+ * form JSON Schema (`configMessages`): custom issues naming one of its keys get `messageKey`.
36
+ */
37
+ export function toIssues(error, messages) {
38
+ return error.issues.map((i) => {
39
+ const segments = i.path.map((s) => (typeof s === "number" ? s : String(s)));
40
+ const messageKey = messageKeyOf(i, messages);
41
+ return {
42
+ path: segments.join("."),
43
+ segments,
44
+ message: issueMessage(i),
45
+ ...(messageKey !== undefined && { messageKey }),
46
+ };
47
+ });
31
48
  }