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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1039) hide show
  1. package/bootstrap.json +94 -5
  2. package/dist/admin/admin-agents.controller.d.ts +28 -0
  3. package/dist/admin/admin-agents.controller.js +79 -0
  4. package/dist/admin/admin-connectors.controller.d.ts +29 -0
  5. package/dist/admin/admin-connectors.controller.js +79 -0
  6. package/dist/admin/admin-items.schemas.d.ts +42 -0
  7. package/dist/admin/admin-items.schemas.js +48 -0
  8. package/dist/admin/admin.controller.d.ts +52 -80
  9. package/dist/admin/admin.controller.js +112 -81
  10. package/dist/admin/admin.module.d.ts +4 -1
  11. package/dist/admin/admin.module.js +50 -4
  12. package/dist/admin/admin.schemas.d.ts +69 -0
  13. package/dist/admin/admin.schemas.js +53 -0
  14. package/dist/admin/audit.controller.d.ts +14 -0
  15. package/dist/admin/audit.controller.js +42 -0
  16. package/dist/admin/audit.schemas.d.ts +8 -0
  17. package/dist/admin/audit.schemas.js +17 -0
  18. package/dist/admin/extensions.controller.d.ts +34 -3
  19. package/dist/admin/extensions.controller.js +66 -8
  20. package/dist/admin/extensions.schemas.d.ts +7 -0
  21. package/dist/admin/extensions.schemas.js +10 -0
  22. package/dist/admin/health.service.d.ts +104 -0
  23. package/dist/admin/health.service.js +246 -0
  24. package/dist/admin/limit-defaults.d.ts +20 -0
  25. package/dist/admin/limit-defaults.js +10 -0
  26. package/dist/admin/overview.controller.d.ts +31 -0
  27. package/dist/admin/overview.controller.js +78 -0
  28. package/dist/admin/overview.schemas.d.ts +8 -0
  29. package/dist/admin/overview.schemas.js +13 -0
  30. package/dist/admin/overview.service.d.ts +112 -0
  31. package/dist/admin/overview.service.js +223 -0
  32. package/dist/admin/platform-audit.service.d.ts +41 -0
  33. package/dist/admin/platform-audit.service.js +70 -0
  34. package/dist/admin/setup-lock.d.ts +1 -1
  35. package/dist/admin/setup-lock.js +1 -1
  36. package/dist/admin/setup.controller.d.ts +1 -1
  37. package/dist/admin/setup.controller.js +1 -1
  38. package/dist/admin/setup.service.d.ts +4 -4
  39. package/dist/admin/setup.service.js +8 -8
  40. package/dist/admin/usage.service.d.ts +149 -0
  41. package/dist/admin/usage.service.js +321 -0
  42. package/dist/agents/admin-agents.d.ts +92 -0
  43. package/dist/agents/admin-agents.js +170 -0
  44. package/dist/agents/agent-lookup.d.ts +24 -0
  45. package/dist/agents/agent-lookup.js +46 -2
  46. package/dist/agents/agent-profile.service.d.ts +31 -0
  47. package/dist/agents/agent-profile.service.js +122 -0
  48. package/dist/agents/agents.controller.d.ts +53 -168
  49. package/dist/agents/agents.controller.js +163 -34
  50. package/dist/agents/agents.module.d.ts +6 -2
  51. package/dist/agents/agents.module.js +41 -7
  52. package/dist/agents/agents.schemas.d.ts +392 -0
  53. package/dist/agents/agents.schemas.js +126 -0
  54. package/dist/agents/agents.service.d.ts +121 -36
  55. package/dist/agents/agents.service.js +411 -121
  56. package/dist/agents/definition.d.ts +142 -21
  57. package/dist/agents/definition.js +389 -43
  58. package/dist/agents/from-template.d.ts +106 -0
  59. package/dist/agents/from-template.js +680 -0
  60. package/dist/agents/from-template.service.d.ts +72 -0
  61. package/dist/agents/from-template.service.js +178 -0
  62. package/dist/agents/instruction-files.d.ts +60 -0
  63. package/dist/agents/instruction-files.js +111 -0
  64. package/dist/agents/models.controller.d.ts +44 -6
  65. package/dist/agents/models.controller.js +84 -8
  66. package/dist/agents/org-templates.d.ts +186 -0
  67. package/dist/agents/org-templates.js +876 -0
  68. package/dist/agents/pending-connector-requests.d.ts +79 -0
  69. package/dist/agents/pending-connector-requests.js +215 -0
  70. package/dist/agents/pending-connectors.controller.d.ts +39 -0
  71. package/dist/agents/pending-connectors.controller.js +91 -0
  72. package/dist/agents/pending-connectors.service.d.ts +62 -0
  73. package/dist/agents/pending-connectors.service.js +282 -0
  74. package/dist/agents/profile.d.ts +114 -0
  75. package/dist/agents/profile.js +55 -0
  76. package/dist/agents/readiness.controller.d.ts +26 -0
  77. package/dist/agents/readiness.controller.js +56 -0
  78. package/dist/agents/templates.controller.d.ts +77 -5
  79. package/dist/agents/templates.controller.js +153 -7
  80. package/dist/agents/templates.d.ts +127 -23
  81. package/dist/agents/templates.js +482 -44
  82. package/dist/agents/templates.schemas.d.ts +20 -0
  83. package/dist/agents/templates.schemas.js +45 -0
  84. package/dist/background/background.controller.d.ts +38 -0
  85. package/dist/background/background.controller.js +88 -0
  86. package/dist/background/background.module.d.ts +10 -0
  87. package/dist/background/background.module.js +39 -0
  88. package/dist/background/background.schemas.d.ts +10 -0
  89. package/dist/background/background.schemas.js +16 -0
  90. package/dist/background/finish.d.ts +44 -0
  91. package/dist/background/finish.js +95 -0
  92. package/dist/background/launch-lock.d.ts +15 -0
  93. package/dist/background/launch-lock.js +40 -0
  94. package/dist/background/launch.d.ts +42 -0
  95. package/dist/background/launch.js +77 -0
  96. package/dist/background/poll.job.d.ts +56 -0
  97. package/dist/background/poll.job.js +195 -0
  98. package/dist/background/render.d.ts +23 -0
  99. package/dist/background/render.js +48 -0
  100. package/dist/background/session.d.ts +48 -0
  101. package/dist/background/session.js +80 -0
  102. package/dist/background/status.d.ts +35 -0
  103. package/dist/background/status.js +57 -0
  104. package/dist/background/stop.d.ts +68 -0
  105. package/dist/background/stop.js +244 -0
  106. package/dist/background/store.d.ts +167 -0
  107. package/dist/background/store.js +361 -0
  108. package/dist/background/store.module.d.ts +6 -0
  109. package/dist/background/store.module.js +22 -0
  110. package/dist/background/tasks.service.d.ts +109 -0
  111. package/dist/background/tasks.service.js +271 -0
  112. package/dist/background/wake-rules.d.ts +66 -0
  113. package/dist/background/wake-rules.js +113 -0
  114. package/dist/background/wake.d.ts +30 -0
  115. package/dist/background/wake.js +63 -0
  116. package/dist/catalog/admin-catalog.controller.d.ts +136 -52
  117. package/dist/catalog/admin-catalog.controller.js +275 -65
  118. package/dist/catalog/admin-catalog.schemas.d.ts +82 -0
  119. package/dist/catalog/admin-catalog.schemas.js +99 -0
  120. package/dist/catalog/appearance.schemas.d.ts +10 -0
  121. package/dist/catalog/appearance.schemas.js +20 -0
  122. package/dist/catalog/appearance.service.d.ts +105 -0
  123. package/dist/catalog/appearance.service.js +306 -0
  124. package/dist/catalog/catalog-content.d.ts +122 -35
  125. package/dist/catalog/catalog-content.js +122 -14
  126. package/dist/catalog/catalog-files.d.ts +42 -0
  127. package/dist/catalog/catalog-files.js +89 -0
  128. package/dist/catalog/catalog-import.module.d.ts +7 -0
  129. package/dist/catalog/catalog-import.module.js +63 -0
  130. package/dist/catalog/catalog-items.d.ts +122 -7
  131. package/dist/catalog/catalog-items.js +301 -13
  132. package/dist/catalog/catalog-scope.service.d.ts +293 -0
  133. package/dist/catalog/catalog-scope.service.js +1236 -0
  134. package/dist/catalog/catalog.module.d.ts +7 -9
  135. package/dist/catalog/catalog.module.js +47 -31
  136. package/dist/catalog/catalog.service.d.ts +122 -31
  137. package/dist/catalog/catalog.service.js +177 -105
  138. package/dist/catalog/claude/agents.js +15 -10
  139. package/dist/catalog/claude/translate.js +3 -0
  140. package/dist/catalog/cli.d.ts +11 -1
  141. package/dist/catalog/cli.js +29 -1
  142. package/dist/catalog/component-promotion.d.ts +96 -0
  143. package/dist/catalog/component-promotion.js +395 -0
  144. package/dist/catalog/component-scope.controller.d.ts +102 -0
  145. package/dist/catalog/component-scope.controller.js +257 -0
  146. package/dist/catalog/component-scope.schemas.d.ts +118 -0
  147. package/dist/catalog/component-scope.schemas.js +97 -0
  148. package/dist/catalog/component-scope.service.d.ts +394 -0
  149. package/dist/catalog/component-scope.service.js +1133 -0
  150. package/dist/catalog/component-state.d.ts +207 -0
  151. package/dist/catalog/component-state.js +484 -0
  152. package/dist/catalog/git-source.d.ts +9 -1
  153. package/dist/catalog/git-source.js +29 -2
  154. package/dist/catalog/job-ids.d.ts +30 -0
  155. package/dist/catalog/job-ids.js +25 -0
  156. package/dist/catalog/marketplace-fetch.d.ts +1 -1
  157. package/dist/catalog/marketplace-icons.d.ts +64 -0
  158. package/dist/catalog/marketplace-icons.js +131 -0
  159. package/dist/catalog/marketplaces.controller.d.ts +50 -41
  160. package/dist/catalog/marketplaces.controller.js +130 -46
  161. package/dist/catalog/marketplaces.schemas.d.ts +48 -0
  162. package/dist/catalog/marketplaces.schemas.js +53 -0
  163. package/dist/catalog/marketplaces.service.d.ts +110 -17
  164. package/dist/catalog/marketplaces.service.js +337 -29
  165. package/dist/catalog/org-catalog.controller.d.ts +114 -62
  166. package/dist/catalog/org-catalog.controller.js +191 -98
  167. package/dist/catalog/org-catalog.schemas.d.ts +104 -0
  168. package/dist/catalog/org-catalog.schemas.js +107 -0
  169. package/dist/catalog/org-catalog.service.d.ts +72 -33
  170. package/dist/catalog/org-catalog.service.js +367 -158
  171. package/dist/catalog/org-extension-switch.d.ts +41 -0
  172. package/dist/catalog/org-extension-switch.js +115 -0
  173. package/dist/catalog/org-extension.controller.d.ts +133 -0
  174. package/dist/catalog/org-extension.controller.js +313 -0
  175. package/dist/catalog/org-extension.schemas.d.ts +15 -0
  176. package/dist/catalog/org-extension.schemas.js +22 -0
  177. package/dist/catalog/org-plugin-uploads.controller.d.ts +77 -0
  178. package/dist/catalog/org-plugin-uploads.controller.js +200 -0
  179. package/dist/catalog/org-plugin-uploads.d.ts +71 -0
  180. package/dist/catalog/org-plugin-uploads.js +122 -0
  181. package/dist/catalog/org-plugin-uploads.schemas.d.ts +20 -0
  182. package/dist/catalog/org-plugin-uploads.schemas.js +32 -0
  183. package/dist/catalog/owned-items.d.ts +188 -0
  184. package/dist/catalog/owned-items.js +808 -0
  185. package/dist/catalog/owned-plugin-cleanup.d.ts +56 -0
  186. package/dist/catalog/owned-plugin-cleanup.js +194 -0
  187. package/dist/catalog/ownership.d.ts +172 -0
  188. package/dist/catalog/ownership.js +326 -0
  189. package/dist/catalog/platform-components.d.ts +243 -0
  190. package/dist/catalog/platform-components.js +872 -0
  191. package/dist/catalog/platform-migration.d.ts +115 -0
  192. package/dist/catalog/platform-migration.js +583 -0
  193. package/dist/catalog/plugin-import.d.ts +254 -47
  194. package/dist/catalog/plugin-import.js +810 -112
  195. package/dist/catalog/plugin-install.d.ts +205 -42
  196. package/dist/catalog/plugin-install.js +828 -126
  197. package/dist/catalog/plugin-package.d.ts +43 -4
  198. package/dist/catalog/plugin-package.js +194 -7
  199. package/dist/catalog/plugin-upgrade.d.ts +308 -225
  200. package/dist/catalog/plugin-upgrade.js +1325 -1131
  201. package/dist/catalog/request-rules.d.ts +65 -0
  202. package/dist/catalog/request-rules.js +217 -0
  203. package/dist/catalog/requests.service.d.ts +194 -118
  204. package/dist/catalog/requests.service.js +530 -343
  205. package/dist/catalog/reserved-names.d.ts +8 -0
  206. package/dist/catalog/reserved-names.js +42 -0
  207. package/dist/catalog/scope-orgs.d.ts +21 -0
  208. package/dist/catalog/scope-orgs.js +67 -0
  209. package/dist/catalog/scope-state.d.ts +35 -0
  210. package/dist/catalog/scope-state.js +87 -0
  211. package/dist/catalog/scope-sync-workers.d.ts +7 -0
  212. package/dist/catalog/scope-sync-workers.js +29 -0
  213. package/dist/catalog/scope-sync.d.ts +176 -0
  214. package/dist/catalog/scope-sync.js +576 -0
  215. package/dist/catalog/scope.d.ts +42 -0
  216. package/dist/catalog/scope.js +42 -0
  217. package/dist/catalog/unshare.d.ts +22 -0
  218. package/dist/catalog/unshare.js +119 -0
  219. package/dist/channels/actions.js +10 -3
  220. package/dist/channels/cards.d.ts +36 -10
  221. package/dist/channels/cards.js +100 -25
  222. package/dist/channels/channels.module.js +13 -2
  223. package/dist/channels/channels.schemas.d.ts +41 -0
  224. package/dist/channels/channels.schemas.js +40 -0
  225. package/dist/channels/connections.controller.d.ts +46 -37
  226. package/dist/channels/connections.controller.js +76 -34
  227. package/dist/channels/connections.service.d.ts +102 -10
  228. package/dist/channels/connections.service.js +271 -24
  229. package/dist/channels/inbound.d.ts +11 -1
  230. package/dist/channels/inbound.js +87 -7
  231. package/dist/channels/outbound.d.ts +14 -1
  232. package/dist/channels/outbound.js +64 -15
  233. package/dist/channels/phrases.d.ts +33 -2
  234. package/dist/channels/phrases.js +29 -1
  235. package/dist/channels/supervisor.d.ts +2 -0
  236. package/dist/channels/supervisor.js +4 -0
  237. package/dist/channels/threads.d.ts +5 -0
  238. package/dist/channels/threads.js +8 -0
  239. package/dist/channels/webhook.d.ts +21 -1
  240. package/dist/channels/webhook.js +39 -4
  241. package/dist/client/client-access.service.d.ts +102 -0
  242. package/dist/client/client-access.service.js +303 -0
  243. package/dist/client/client-builds.service.d.ts +109 -0
  244. package/dist/client/client-builds.service.js +229 -0
  245. package/dist/client/client-delivery.controller.d.ts +25 -0
  246. package/dist/client/client-delivery.controller.js +66 -0
  247. package/dist/client/client-files.d.ts +48 -0
  248. package/dist/client/client-files.js +136 -0
  249. package/dist/client/client-reports.cron.d.ts +13 -0
  250. package/dist/client/client-reports.cron.js +42 -0
  251. package/dist/client/client-reports.service.d.ts +30 -0
  252. package/dist/client/client-reports.service.js +102 -0
  253. package/dist/client/client-sign-in.service.d.ts +21 -0
  254. package/dist/client/client-sign-in.service.js +49 -0
  255. package/dist/client/client.controller.d.ts +49 -0
  256. package/dist/client/client.controller.js +129 -0
  257. package/dist/client/client.module.d.ts +8 -0
  258. package/dist/client/client.module.js +28 -0
  259. package/dist/client/client.schemas.d.ts +61 -0
  260. package/dist/client/client.schemas.js +27 -0
  261. package/dist/config/docs.js +5 -1
  262. package/dist/config/schema.d.ts +35 -2
  263. package/dist/config/schema.js +216 -21
  264. package/dist/conversations/access.d.ts +6 -4
  265. package/dist/conversations/access.js +29 -5
  266. package/dist/conversations/agent-tree.d.ts +46 -0
  267. package/dist/conversations/agent-tree.js +92 -0
  268. package/dist/conversations/artifacts.d.ts +1 -1
  269. package/dist/conversations/artifacts.js +1 -1
  270. package/dist/conversations/attachments.service.d.ts +30 -0
  271. package/dist/conversations/attachments.service.js +130 -5
  272. package/dist/conversations/conversations.controller.d.ts +79 -44
  273. package/dist/conversations/conversations.controller.js +133 -82
  274. package/dist/conversations/conversations.module.d.ts +1 -1
  275. package/dist/conversations/conversations.module.js +10 -7
  276. package/dist/conversations/conversations.schemas.d.ts +52 -0
  277. package/dist/conversations/conversations.schemas.js +79 -0
  278. package/dist/conversations/conversations.service.d.ts +161 -13
  279. package/dist/conversations/conversations.service.js +329 -57
  280. package/dist/conversations/device-status.d.ts +24 -0
  281. package/dist/conversations/device-status.js +71 -0
  282. package/dist/conversations/event-log.d.ts +45 -9
  283. package/dist/conversations/event-log.js +113 -6
  284. package/dist/conversations/events.d.ts +255 -9
  285. package/dist/conversations/events.js +250 -34
  286. package/dist/conversations/message-context.d.ts +79 -0
  287. package/dist/conversations/message-context.js +145 -0
  288. package/dist/conversations/queue.d.ts +5 -2
  289. package/dist/conversations/queue.js +24 -4
  290. package/dist/conversations/queue.service.d.ts +2 -2
  291. package/dist/conversations/queue.service.js +21 -3
  292. package/dist/conversations/titles.d.ts +12 -3
  293. package/dist/conversations/titles.js +40 -16
  294. package/dist/conversations/tree.d.ts +17 -0
  295. package/dist/conversations/tree.js +42 -0
  296. package/dist/ctx/create-ctx.d.ts +48 -5
  297. package/dist/ctx/create-ctx.js +174 -34
  298. package/dist/db/kernel-schema.d.ts +668 -27
  299. package/dist/db/pool.d.ts +5 -0
  300. package/dist/db/pool.js +3 -0
  301. package/dist/devices/access.d.ts +66 -0
  302. package/dist/devices/access.js +113 -0
  303. package/dist/devices/conversation-devices.d.ts +75 -0
  304. package/dist/devices/conversation-devices.js +230 -0
  305. package/dist/devices/devices.controller.d.ts +36 -0
  306. package/dist/devices/devices.controller.js +124 -0
  307. package/dist/devices/devices.module.d.ts +8 -0
  308. package/dist/devices/devices.module.js +34 -0
  309. package/dist/devices/devices.schemas.d.ts +3 -0
  310. package/dist/devices/devices.schemas.js +14 -0
  311. package/dist/devices/devices.service.d.ts +251 -0
  312. package/dist/devices/devices.service.js +791 -0
  313. package/dist/devices/dto.d.ts +25 -0
  314. package/dist/devices/dto.js +12 -0
  315. package/dist/devices/label.d.ts +11 -0
  316. package/dist/devices/label.js +25 -0
  317. package/dist/devices/legacy-cleanup.job.d.ts +34 -0
  318. package/dist/devices/legacy-cleanup.job.js +141 -0
  319. package/dist/errors.d.ts +215 -3
  320. package/dist/errors.js +215 -3
  321. package/dist/evals/evals.module.js +11 -2
  322. package/dist/evals/evals.schemas.d.ts +110 -0
  323. package/dist/evals/evals.schemas.js +107 -0
  324. package/dist/evals/reconstruct.d.ts +18 -9
  325. package/dist/evals/reconstruct.js +36 -10
  326. package/dist/evals/recorded-tools.d.ts +37 -1
  327. package/dist/evals/recorded-tools.js +120 -10
  328. package/dist/evals/run-replay.d.ts +20 -3
  329. package/dist/evals/run-replay.js +78 -14
  330. package/dist/evals/runs.controller.d.ts +2 -57
  331. package/dist/evals/runs.controller.js +1 -42
  332. package/dist/evals/runs.service.d.ts +8 -7
  333. package/dist/evals/runs.service.js +45 -30
  334. package/dist/evals/sets.controller.d.ts +2 -28
  335. package/dist/evals/sets.controller.js +1 -31
  336. package/dist/evals/sets.service.d.ts +7 -7
  337. package/dist/evals/sets.service.js +23 -17
  338. package/dist/evals/snapshot.d.ts +3 -2
  339. package/dist/evals/snapshot.js +17 -4
  340. package/dist/evals/step-replay.d.ts +4 -6
  341. package/dist/evals/step-replay.js +16 -9
  342. package/dist/evals/trajectory.d.ts +5 -3
  343. package/dist/evals/trajectory.js +4 -1
  344. package/dist/evals/trajectory.service.d.ts +8 -3
  345. package/dist/evals/trajectory.service.js +26 -14
  346. package/dist/evals/worker.d.ts +5 -5
  347. package/dist/evals/worker.js +9 -3
  348. package/dist/extensions/admin-ops.d.ts +81 -14
  349. package/dist/extensions/admin-ops.js +181 -47
  350. package/dist/extensions/admin-view.d.ts +57 -10
  351. package/dist/extensions/admin-view.js +249 -27
  352. package/dist/extensions/approvals.d.ts +12 -2
  353. package/dist/extensions/blobs.d.ts +14 -1
  354. package/dist/extensions/blobs.js +49 -5
  355. package/dist/extensions/bootstrap.d.ts +85 -10
  356. package/dist/extensions/bootstrap.js +215 -36
  357. package/dist/extensions/cli.d.ts +12 -0
  358. package/dist/extensions/cli.js +11 -2
  359. package/dist/extensions/config-hash.d.ts +10 -0
  360. package/dist/extensions/config-hash.js +38 -0
  361. package/dist/extensions/config-issues.d.ts +13 -1
  362. package/dist/extensions/config-issues.js +22 -5
  363. package/dist/extensions/config-json-schema.d.ts +43 -7
  364. package/dist/extensions/config-json-schema.js +124 -58
  365. package/dist/extensions/deployment-config-store.d.ts +6 -0
  366. package/dist/extensions/deployment-config.d.ts +94 -9
  367. package/dist/extensions/deployment-config.js +255 -34
  368. package/dist/extensions/display-name.d.ts +22 -0
  369. package/dist/extensions/display-name.js +77 -0
  370. package/dist/extensions/effective-config.d.ts +133 -0
  371. package/dist/extensions/effective-config.js +379 -0
  372. package/dist/extensions/extensions.module.js +31 -12
  373. package/dist/extensions/guide-places.d.ts +68 -0
  374. package/dist/extensions/guide-places.js +152 -0
  375. package/dist/extensions/hooks.d.ts +37 -4
  376. package/dist/extensions/hooks.js +82 -16
  377. package/dist/extensions/host.d.ts +105 -12
  378. package/dist/extensions/host.js +372 -87
  379. package/dist/extensions/installs.d.ts +30 -9
  380. package/dist/extensions/installs.js +57 -16
  381. package/dist/extensions/instance.d.ts +17 -2
  382. package/dist/extensions/instance.js +21 -0
  383. package/dist/extensions/ledger.d.ts +1 -1
  384. package/dist/extensions/locks.d.ts +12 -0
  385. package/dist/extensions/locks.js +26 -0
  386. package/dist/extensions/org-config.d.ts +97 -7
  387. package/dist/extensions/org-config.js +215 -45
  388. package/dist/extensions/org-levels.d.ts +37 -0
  389. package/dist/extensions/org-levels.js +71 -0
  390. package/dist/extensions/org-overrides.d.ts +151 -0
  391. package/dist/extensions/org-overrides.js +524 -0
  392. package/dist/extensions/package.d.ts +18 -4
  393. package/dist/extensions/package.js +56 -3
  394. package/dist/extensions/permission-set.d.ts +35 -5
  395. package/dist/extensions/permission-set.js +36 -5
  396. package/dist/extensions/permission-view.d.ts +106 -13
  397. package/dist/extensions/permission-view.js +33 -15
  398. package/dist/extensions/plugin-guides.d.ts +282 -0
  399. package/dist/extensions/plugin-guides.js +554 -0
  400. package/dist/extensions/plugin-icons.d.ts +54 -0
  401. package/dist/extensions/plugin-icons.js +125 -0
  402. package/dist/extensions/plugin-items.d.ts +21 -0
  403. package/dist/extensions/plugin-items.js +42 -0
  404. package/dist/extensions/point-defaults.controller.d.ts +28 -0
  405. package/dist/extensions/point-defaults.controller.js +69 -0
  406. package/dist/extensions/point-defaults.d.ts +73 -0
  407. package/dist/extensions/point-defaults.js +236 -0
  408. package/dist/extensions/point-defaults.schemas.d.ts +9 -0
  409. package/dist/extensions/point-defaults.schemas.js +14 -0
  410. package/dist/extensions/registry.d.ts +1 -1
  411. package/dist/extensions/registry.js +2 -0
  412. package/dist/extensions/resolve.d.ts +51 -1
  413. package/dist/extensions/resolve.js +85 -3
  414. package/dist/extensions/single-provider.d.ts +92 -0
  415. package/dist/extensions/single-provider.js +180 -0
  416. package/dist/extensions/sources.d.ts +13 -2
  417. package/dist/extensions/sources.js +2 -0
  418. package/dist/extensions/state.module.d.ts +9 -0
  419. package/dist/extensions/state.module.js +46 -0
  420. package/dist/extensions/unavailable.d.ts +50 -0
  421. package/dist/extensions/unavailable.js +115 -0
  422. package/dist/files/previewers.controller.js +2 -3
  423. package/dist/files/previewers.d.ts +10 -3
  424. package/dist/files/previewers.js +40 -11
  425. package/dist/files/previewers.schemas.d.ts +10 -0
  426. package/dist/files/previewers.schemas.js +9 -0
  427. package/dist/http/api.module.js +76 -4
  428. package/dist/http/app.d.ts +11 -2
  429. package/dist/http/app.js +31 -5
  430. package/dist/http/gateway-routes.d.ts +7 -3
  431. package/dist/http/gateway-routes.js +6 -3
  432. package/dist/http/nest-logger.d.ts +6 -5
  433. package/dist/http/nest-logger.js +24 -10
  434. package/dist/http/plugin-dispatch.d.ts +4 -1
  435. package/dist/http/plugin-dispatch.js +14 -2
  436. package/dist/identity/accounts.d.ts +77 -31
  437. package/dist/identity/accounts.js +133 -52
  438. package/dist/identity/audit.d.ts +2 -1
  439. package/dist/identity/auth.controller.js +9 -5
  440. package/dist/identity/auth.guard.d.ts +13 -5
  441. package/dist/identity/auth.guard.js +35 -9
  442. package/dist/identity/cookies.d.ts +26 -5
  443. package/dist/identity/cookies.js +58 -6
  444. package/dist/identity/identity.module.d.ts +1 -1
  445. package/dist/identity/identity.module.js +7 -4
  446. package/dist/identity/initial-passwords.controller.d.ts +22 -0
  447. package/dist/identity/initial-passwords.controller.js +49 -0
  448. package/dist/identity/initial-passwords.d.ts +61 -0
  449. package/dist/identity/initial-passwords.job.d.ts +16 -0
  450. package/dist/identity/initial-passwords.job.js +46 -0
  451. package/dist/identity/initial-passwords.js +159 -0
  452. package/dist/identity/me.controller.d.ts +17 -1
  453. package/dist/identity/me.controller.js +45 -4
  454. package/dist/identity/me.schemas.d.ts +24 -0
  455. package/dist/identity/me.schemas.js +25 -0
  456. package/dist/identity/principal.d.ts +11 -3
  457. package/dist/identity/principal.js +11 -3
  458. package/dist/identity/sessions.d.ts +12 -0
  459. package/dist/identity/sessions.js +45 -0
  460. package/dist/identity/settings.d.ts +99 -12
  461. package/dist/identity/settings.js +234 -25
  462. package/dist/identity/{enterprise-admin.d.ts → super-admin.d.ts} +5 -5
  463. package/dist/identity/{enterprise-admin.js → super-admin.js} +24 -24
  464. package/dist/identity/write-actor.d.ts +11 -0
  465. package/dist/identity/write-actor.js +7 -0
  466. package/dist/inbox/inbox.module.d.ts +4 -1
  467. package/dist/inbox/inbox.module.js +7 -3
  468. package/dist/inbox/inbox.schemas.d.ts +8 -0
  469. package/dist/inbox/inbox.schemas.js +11 -0
  470. package/dist/inbox/inbox.service.d.ts +64 -4
  471. package/dist/inbox/inbox.service.js +74 -4
  472. package/dist/inbox/org-notices.d.ts +63 -0
  473. package/dist/inbox/org-notices.js +91 -0
  474. package/dist/inbox/platform-inbox.controller.d.ts +23 -0
  475. package/dist/inbox/platform-inbox.controller.js +58 -0
  476. package/dist/inbox/platform-inbox.service.d.ts +157 -0
  477. package/dist/inbox/platform-inbox.service.js +281 -0
  478. package/dist/inbox/platform-notices.d.ts +19 -0
  479. package/dist/inbox/platform-notices.js +9 -0
  480. package/dist/index.d.ts +6 -2
  481. package/dist/index.js +7 -1
  482. package/dist/infra/cli/kernel-cli.module.js +9 -1
  483. package/dist/infra/config/kernel-config.service.js +32 -1
  484. package/dist/infra/database/database.module.js +1 -0
  485. package/dist/infra/database/xact-lock.d.ts +1 -1
  486. package/dist/infra/database/xact-lock.js +1 -1
  487. package/dist/infra/events/kernel-events.d.ts +31 -3
  488. package/dist/infra/lifecycle/process-guards.js +4 -0
  489. package/dist/infra/lock/lock.service.d.ts +8 -0
  490. package/dist/infra/lock/lock.service.js +27 -0
  491. package/dist/infra/logging/logging.module.d.ts +4 -2
  492. package/dist/infra/logging/logging.module.js +24 -6
  493. package/dist/infra/presence/presence.module.d.ts +6 -0
  494. package/dist/infra/presence/presence.module.js +22 -0
  495. package/dist/infra/presence/replica-presence.d.ts +87 -0
  496. package/dist/infra/presence/replica-presence.js +189 -0
  497. package/dist/infra/queue/add-job-once.d.ts +14 -0
  498. package/dist/infra/queue/add-job-once.js +16 -0
  499. package/dist/infra/queue/redis-connection.d.ts +6 -0
  500. package/dist/infra/queue/redis-connection.js +7 -0
  501. package/dist/infra/redis/redis.module.js +6 -2
  502. package/dist/infra/throttler/named-throttlers.d.ts +12 -0
  503. package/dist/infra/throttler/named-throttlers.js +67 -0
  504. package/dist/infra/throttler/throttler.guard.js +1 -1
  505. package/dist/infra/tokens.d.ts +6 -1
  506. package/dist/infra/tokens.js +6 -1
  507. package/dist/kernel.module.js +15 -0
  508. package/dist/lifecycle/kernel-lifecycle.d.ts +9 -3
  509. package/dist/lifecycle/kernel-lifecycle.js +51 -11
  510. package/dist/local-devices/device-auth.controller.d.ts +42 -0
  511. package/dist/local-devices/device-auth.controller.js +116 -0
  512. package/dist/local-devices/device-auth.d.ts +119 -0
  513. package/dist/local-devices/device-auth.js +401 -0
  514. package/dist/local-devices/device-auth.module.d.ts +7 -0
  515. package/dist/local-devices/device-auth.module.js +25 -0
  516. package/dist/local-devices/device-routes.d.ts +36 -0
  517. package/dist/local-devices/device-routes.js +90 -0
  518. package/dist/local-devices/dto.d.ts +66 -0
  519. package/dist/local-devices/dto.js +44 -0
  520. package/dist/local-devices/keys.d.ts +25 -0
  521. package/dist/local-devices/keys.js +25 -0
  522. package/dist/local-devices/local-device-gateway.d.ts +134 -0
  523. package/dist/local-devices/local-device-gateway.js +542 -0
  524. package/dist/local-devices/local-device-provider.d.ts +89 -0
  525. package/dist/local-devices/local-device-provider.js +151 -0
  526. package/dist/local-devices/local-devices.module.d.ts +16 -0
  527. package/dist/local-devices/local-devices.module.js +44 -0
  528. package/dist/local-devices/machines.d.ts +118 -0
  529. package/dist/local-devices/machines.js +366 -0
  530. package/dist/local-devices/relay.d.ts +100 -0
  531. package/dist/local-devices/relay.js +373 -0
  532. package/dist/local-devices/targets.d.ts +28 -0
  533. package/dist/local-devices/targets.js +73 -0
  534. package/dist/log.d.ts +13 -1
  535. package/dist/log.js +93 -17
  536. package/dist/models/embeddings.d.ts +82 -0
  537. package/dist/models/embeddings.js +326 -0
  538. package/dist/models/enablement.controller.d.ts +40 -0
  539. package/dist/models/enablement.controller.js +74 -0
  540. package/dist/models/enablement.d.ts +101 -0
  541. package/dist/models/enablement.js +264 -0
  542. package/dist/models/models.module.d.ts +5 -1
  543. package/dist/models/models.module.js +16 -4
  544. package/dist/models/org-models.schemas.d.ts +8 -0
  545. package/dist/models/org-models.schemas.js +22 -0
  546. package/dist/models/prices.d.ts +8 -6
  547. package/dist/models/prices.js +11 -9
  548. package/dist/models/purposes.controller.d.ts +6 -4
  549. package/dist/models/purposes.controller.js +13 -7
  550. package/dist/models/purposes.d.ts +72 -14
  551. package/dist/models/purposes.js +115 -34
  552. package/dist/orgs/directory-sync.d.ts +14 -5
  553. package/dist/orgs/directory-sync.js +41 -17
  554. package/dist/orgs/offboarding.d.ts +12 -8
  555. package/dist/orgs/offboarding.js +54 -33
  556. package/dist/orgs/org-lock.d.ts +5 -0
  557. package/dist/orgs/org-lock.js +13 -0
  558. package/dist/orgs/org.guard.d.ts +10 -0
  559. package/dist/orgs/org.guard.js +43 -32
  560. package/dist/orgs/orgs.controller.d.ts +2 -5
  561. package/dist/orgs/orgs.controller.js +3 -6
  562. package/dist/orgs/orgs.module.js +3 -0
  563. package/dist/orgs/orgs.schemas.d.ts +8 -0
  564. package/dist/orgs/orgs.schemas.js +16 -0
  565. package/dist/orgs/orgs.service.d.ts +23 -8
  566. package/dist/orgs/orgs.service.js +38 -16
  567. package/dist/orgs/roles.d.ts +1 -1
  568. package/dist/orgs/roles.js +5 -1
  569. package/dist/orgs/settings.controller.d.ts +1 -1
  570. package/dist/orgs/settings.service.d.ts +66 -6
  571. package/dist/orgs/settings.service.js +89 -10
  572. package/dist/overrides.d.ts +16 -1
  573. package/dist/overrides.js +10 -0
  574. package/dist/platform/actor.d.ts +48 -0
  575. package/dist/platform/actor.js +100 -0
  576. package/dist/platform/agent-docs.d.ts +18 -0
  577. package/dist/platform/agent-docs.js +59 -0
  578. package/dist/platform/availability.d.ts +14 -0
  579. package/dist/platform/availability.js +43 -0
  580. package/dist/platform/errors.d.ts +28 -0
  581. package/dist/platform/errors.js +65 -0
  582. package/dist/platform/exclusions.d.ts +11 -0
  583. package/dist/platform/exclusions.js +774 -0
  584. package/dist/platform/method.d.ts +6 -0
  585. package/dist/platform/method.js +15 -0
  586. package/dist/platform/operation.d.ts +169 -0
  587. package/dist/platform/operation.js +102 -0
  588. package/dist/platform/ops/accounts.ops.d.ts +32 -0
  589. package/dist/platform/ops/accounts.ops.js +291 -0
  590. package/dist/platform/ops/admin-items.ops.d.ts +37 -0
  591. package/dist/platform/ops/admin-items.ops.js +278 -0
  592. package/dist/platform/ops/admin.ops.d.ts +38 -0
  593. package/dist/platform/ops/admin.ops.js +497 -0
  594. package/dist/platform/ops/agent-skills.ops.d.ts +50 -0
  595. package/dist/platform/ops/agent-skills.ops.js +509 -0
  596. package/dist/platform/ops/agent-templates.ops.d.ts +17 -0
  597. package/dist/platform/ops/agent-templates.ops.js +272 -0
  598. package/dist/platform/ops/agents.ops.d.ts +37 -0
  599. package/dist/platform/ops/agents.ops.js +730 -0
  600. package/dist/platform/ops/approvals.ops.d.ts +30 -0
  601. package/dist/platform/ops/approvals.ops.js +116 -0
  602. package/dist/platform/ops/background.ops.d.ts +14 -0
  603. package/dist/platform/ops/background.ops.js +134 -0
  604. package/dist/platform/ops/catalog-admin.ops.d.ts +92 -0
  605. package/dist/platform/ops/catalog-admin.ops.js +682 -0
  606. package/dist/platform/ops/channels.ops.d.ts +16 -0
  607. package/dist/platform/ops/channels.ops.js +195 -0
  608. package/dist/platform/ops/components.ops.d.ts +46 -0
  609. package/dist/platform/ops/components.ops.js +854 -0
  610. package/dist/platform/ops/connectors.ops.d.ts +17 -0
  611. package/dist/platform/ops/connectors.ops.js +190 -0
  612. package/dist/platform/ops/conversations.ops.d.ts +30 -0
  613. package/dist/platform/ops/conversations.ops.js +470 -0
  614. package/dist/platform/ops/devices.ops.d.ts +26 -0
  615. package/dist/platform/ops/devices.ops.js +311 -0
  616. package/dist/platform/ops/errors.d.ts +16 -0
  617. package/dist/platform/ops/errors.js +30 -0
  618. package/dist/platform/ops/evals.ops.d.ts +28 -0
  619. package/dist/platform/ops/evals.ops.js +783 -0
  620. package/dist/platform/ops/extensions-admin.ops.d.ts +25 -0
  621. package/dist/platform/ops/extensions-admin.ops.js +372 -0
  622. package/dist/platform/ops/extensions.ops.d.ts +25 -0
  623. package/dist/platform/ops/extensions.ops.js +347 -0
  624. package/dist/platform/ops/inbox.ops.d.ts +25 -0
  625. package/dist/platform/ops/inbox.ops.js +381 -0
  626. package/dist/platform/ops/marketplaces.ops.d.ts +22 -0
  627. package/dist/platform/ops/marketplaces.ops.js +466 -0
  628. package/dist/platform/ops/models.ops.d.ts +25 -0
  629. package/dist/platform/ops/models.ops.js +232 -0
  630. package/dist/platform/ops/org-plugins.ops.d.ts +35 -0
  631. package/dist/platform/ops/org-plugins.ops.js +388 -0
  632. package/dist/platform/ops/org-settings.ops.d.ts +18 -0
  633. package/dist/platform/ops/org-settings.ops.js +127 -0
  634. package/dist/platform/ops/orgs.ops.d.ts +28 -0
  635. package/dist/platform/ops/orgs.ops.js +298 -0
  636. package/dist/platform/ops/other-orgs.d.ts +20 -0
  637. package/dist/platform/ops/other-orgs.js +72 -0
  638. package/dist/platform/ops/paging.d.ts +14 -0
  639. package/dist/platform/ops/paging.js +20 -0
  640. package/dist/platform/ops/platform.ops.d.ts +30 -0
  641. package/dist/platform/ops/platform.ops.js +231 -0
  642. package/dist/platform/ops/plugins.ops.d.ts +35 -0
  643. package/dist/platform/ops/plugins.ops.js +476 -0
  644. package/dist/platform/ops/previewers.ops.d.ts +14 -0
  645. package/dist/platform/ops/previewers.ops.js +109 -0
  646. package/dist/platform/ops/requests.ops.d.ts +14 -0
  647. package/dist/platform/ops/requests.ops.js +191 -0
  648. package/dist/platform/ops/role.d.ts +4 -0
  649. package/dist/platform/ops/role.js +10 -0
  650. package/dist/platform/ops/setup.ops.d.ts +24 -0
  651. package/dist/platform/ops/setup.ops.js +212 -0
  652. package/dist/platform/ops/skills.ops.d.ts +17 -0
  653. package/dist/platform/ops/skills.ops.js +160 -0
  654. package/dist/platform/ops/summary.d.ts +10 -0
  655. package/dist/platform/ops/summary.js +18 -0
  656. package/dist/platform/ops/themes.ops.d.ts +14 -0
  657. package/dist/platform/ops/themes.ops.js +47 -0
  658. package/dist/platform/ops/ui.ops.d.ts +8 -0
  659. package/dist/platform/ops/ui.ops.js +41 -0
  660. package/dist/platform/ops/unavailable.d.ts +23 -0
  661. package/dist/platform/ops/unavailable.js +118 -0
  662. package/dist/platform/parity.d.ts +33 -0
  663. package/dist/platform/parity.js +272 -0
  664. package/dist/platform/platform-ops.module.d.ts +43 -0
  665. package/dist/platform/platform-ops.module.js +142 -0
  666. package/dist/platform/platform.module.d.ts +8 -0
  667. package/dist/platform/platform.module.js +25 -0
  668. package/dist/platform/registry.d.ts +30 -0
  669. package/dist/platform/registry.js +111 -0
  670. package/dist/platform/route-schemas.d.ts +18 -0
  671. package/dist/platform/route-schemas.js +85 -0
  672. package/dist/roles/gateway-role.d.ts +18 -3
  673. package/dist/roles/gateway-role.js +33 -5
  674. package/dist/roles/gateway.module.d.ts +2 -1
  675. package/dist/roles/gateway.module.js +6 -3
  676. package/dist/roles/worker-role.d.ts +6 -4
  677. package/dist/roles/worker-role.js +14 -7
  678. package/dist/roles/worker.module.d.ts +1 -1
  679. package/dist/roles/worker.module.js +21 -1
  680. package/dist/runtime/context/build.d.ts +21 -13
  681. package/dist/runtime/context/build.js +106 -29
  682. package/dist/runtime/context/claude-tools.d.ts +4 -1
  683. package/dist/runtime/context/claude-tools.js +13 -12
  684. package/dist/runtime/context/compaction.js +24 -1
  685. package/dist/runtime/context/device-paths.d.ts +40 -0
  686. package/dist/runtime/context/device-paths.js +48 -0
  687. package/dist/runtime/context/legacy-text.d.ts +22 -0
  688. package/dist/runtime/context/legacy-text.js +37 -0
  689. package/dist/runtime/context/reminders.d.ts +2 -0
  690. package/dist/runtime/context/reminders.js +2 -0
  691. package/dist/runtime/context/run-context.d.ts +65 -0
  692. package/dist/runtime/context/run-context.js +215 -0
  693. package/dist/runtime/context/skills.d.ts +29 -11
  694. package/dist/runtime/context/skills.js +46 -32
  695. package/dist/runtime/context/tool-changes.d.ts +27 -0
  696. package/dist/runtime/context/tool-changes.js +60 -0
  697. package/dist/runtime/hook-calls.d.ts +8 -1
  698. package/dist/runtime/hook-calls.js +40 -7
  699. package/dist/runtime/langgraph-loop.d.ts +3 -1
  700. package/dist/runtime/langgraph-loop.js +36 -17
  701. package/dist/runtime/loop.d.ts +35 -6
  702. package/dist/runtime/maintenance.d.ts +9 -4
  703. package/dist/runtime/maintenance.js +35 -8
  704. package/dist/runtime/model-call.d.ts +54 -11
  705. package/dist/runtime/model-call.js +105 -28
  706. package/dist/runtime/providers.d.ts +149 -29
  707. package/dist/runtime/providers.js +332 -63
  708. package/dist/runtime/run-context.service.d.ts +65 -0
  709. package/dist/runtime/run-context.service.js +236 -0
  710. package/dist/runtime/run-control.d.ts +11 -1
  711. package/dist/runtime/run-control.js +12 -0
  712. package/dist/runtime/run-drafts.d.ts +85 -0
  713. package/dist/runtime/run-drafts.js +230 -0
  714. package/dist/runtime/run-finish.d.ts +1 -1
  715. package/dist/runtime/run-jobs.d.ts +3 -5
  716. package/dist/runtime/run-jobs.js +7 -9
  717. package/dist/runtime/run-queue.d.ts +62 -5
  718. package/dist/runtime/run-queue.js +313 -40
  719. package/dist/runtime/run-worker.d.ts +19 -8
  720. package/dist/runtime/run-worker.js +105 -44
  721. package/dist/runtime/runtime.module.js +13 -3
  722. package/dist/runtime/step-log.d.ts +15 -4
  723. package/dist/runtime/step-log.js +24 -7
  724. package/dist/runtime/stream.controller.d.ts +23 -1
  725. package/dist/runtime/stream.controller.js +60 -3
  726. package/dist/runtime/stream.d.ts +4 -1
  727. package/dist/runtime/stream.js +27 -3
  728. package/dist/runtime/subagents/child.d.ts +55 -7
  729. package/dist/runtime/subagents/child.js +105 -7
  730. package/dist/runtime/subagents/definition.d.ts +31 -26
  731. package/dist/runtime/subagents/definition.js +89 -142
  732. package/dist/runtime/subagents/deliveries.d.ts +71 -0
  733. package/dist/runtime/subagents/deliveries.js +228 -0
  734. package/dist/runtime/subagents/dispatch.d.ts +116 -27
  735. package/dist/runtime/subagents/dispatch.js +213 -142
  736. package/dist/runtime/subagents/limits.d.ts +24 -5
  737. package/dist/runtime/subagents/limits.js +40 -6
  738. package/dist/runtime/subagents/messages.d.ts +95 -0
  739. package/dist/runtime/subagents/messages.js +328 -0
  740. package/dist/runtime/subagents/org-agents.js +2 -1
  741. package/dist/runtime/subagents/preamble.d.ts +4 -4
  742. package/dist/runtime/subagents/preamble.js +9 -7
  743. package/dist/runtime/subagents/progress.d.ts +8 -6
  744. package/dist/runtime/subagents/progress.js +11 -6
  745. package/dist/runtime/subagents/render.d.ts +30 -0
  746. package/dist/runtime/subagents/render.js +53 -0
  747. package/dist/runtime/subagents/roster.d.ts +25 -8
  748. package/dist/runtime/subagents/roster.js +48 -12
  749. package/dist/runtime/subagents/skill-fork.d.ts +4 -3
  750. package/dist/runtime/subagents/skill-fork.js +9 -5
  751. package/dist/runtime/subagents/status.d.ts +14 -0
  752. package/dist/runtime/subagents/status.js +23 -0
  753. package/dist/runtime/subagents/subagents.service.d.ts +9 -6
  754. package/dist/runtime/subagents/subagents.service.js +13 -8
  755. package/dist/runtime/usage-report-jobs.d.ts +88 -0
  756. package/dist/runtime/usage-report-jobs.js +158 -0
  757. package/dist/runtime/usage-report.d.ts +35 -39
  758. package/dist/runtime/usage-report.js +171 -97
  759. package/dist/runtime/waits.d.ts +148 -39
  760. package/dist/runtime/waits.js +426 -112
  761. package/dist/sandbox/jobs.d.ts +40 -13
  762. package/dist/sandbox/jobs.js +57 -20
  763. package/dist/sandbox/leases.d.ts +37 -54
  764. package/dist/sandbox/leases.js +71 -115
  765. package/dist/sandbox/providers.d.ts +34 -7
  766. package/dist/sandbox/providers.js +54 -9
  767. package/dist/sandbox/sandbox-file-reader.d.ts +35 -0
  768. package/dist/sandbox/sandbox-file-reader.js +98 -0
  769. package/dist/sandbox/sandbox.module.d.ts +3 -2
  770. package/dist/sandbox/sandbox.module.js +10 -4
  771. package/dist/sandbox/sandbox.service.d.ts +345 -132
  772. package/dist/sandbox/sandbox.service.js +883 -399
  773. package/dist/sandbox/unreachable.d.ts +30 -0
  774. package/dist/sandbox/unreachable.js +108 -0
  775. package/dist/setup/kernel-checks.d.ts +91 -0
  776. package/dist/setup/kernel-checks.js +295 -0
  777. package/dist/setup/oauth-token-probe.d.ts +47 -0
  778. package/dist/setup/oauth-token-probe.js +108 -0
  779. package/dist/setup/redact-check.d.ts +18 -0
  780. package/dist/setup/redact-check.js +46 -0
  781. package/dist/setup/setup-check-registry.d.ts +86 -0
  782. package/dist/setup/setup-check-registry.js +75 -0
  783. package/dist/setup/setup-checks.controller.d.ts +28 -0
  784. package/dist/setup/setup-checks.controller.js +78 -0
  785. package/dist/setup/setup-checks.schemas.d.ts +38 -0
  786. package/dist/setup/setup-checks.schemas.js +43 -0
  787. package/dist/setup/setup-checks.service.d.ts +144 -0
  788. package/dist/setup/setup-checks.service.js +683 -0
  789. package/dist/setup/setup-guides.controller.d.ts +18 -0
  790. package/dist/setup/setup-guides.controller.js +48 -0
  791. package/dist/setup/setup-guides.schemas.d.ts +10 -0
  792. package/dist/setup/setup-guides.schemas.js +6 -0
  793. package/dist/setup/setup-guides.service.d.ts +126 -0
  794. package/dist/setup/setup-guides.service.js +315 -0
  795. package/dist/setup/setup.module.d.ts +8 -0
  796. package/dist/setup/setup.module.js +31 -0
  797. package/dist/skills/agent-skills.controller.d.ts +48 -0
  798. package/dist/skills/agent-skills.controller.js +131 -0
  799. package/dist/skills/agent-skills.service.d.ts +262 -0
  800. package/dist/skills/agent-skills.service.js +996 -0
  801. package/dist/skills/catalog.d.ts +14 -11
  802. package/dist/skills/catalog.js +32 -50
  803. package/dist/skills/changes.controller.d.ts +12 -22
  804. package/dist/skills/changes.controller.js +27 -56
  805. package/dist/skills/changes.service.d.ts +69 -115
  806. package/dist/skills/changes.service.js +249 -598
  807. package/dist/skills/conversation-catalog.d.ts +53 -0
  808. package/dist/skills/conversation-catalog.js +149 -0
  809. package/dist/skills/invocable.controller.d.ts +1 -1
  810. package/dist/skills/invocable.controller.js +2 -2
  811. package/dist/skills/invocation-keys.d.ts +1 -1
  812. package/dist/skills/invocation-keys.js +1 -1
  813. package/dist/skills/invoke.d.ts +3 -3
  814. package/dist/skills/invoke.js +21 -8
  815. package/dist/skills/package.d.ts +15 -1
  816. package/dist/skills/package.js +14 -1
  817. package/dist/skills/skills.controller.d.ts +32 -6
  818. package/dist/skills/skills.controller.js +64 -11
  819. package/dist/skills/skills.module.js +25 -3
  820. package/dist/skills/skills.schemas.d.ts +44 -0
  821. package/dist/skills/skills.schemas.js +68 -0
  822. package/dist/skills/skills.service.d.ts +123 -26
  823. package/dist/skills/skills.service.js +493 -76
  824. package/dist/skills/usable.d.ts +82 -0
  825. package/dist/skills/usable.js +388 -0
  826. package/dist/themes/render-css.d.ts +13 -0
  827. package/dist/themes/render-css.js +135 -0
  828. package/dist/themes/theme-delivery.service.d.ts +36 -0
  829. package/dist/themes/theme-delivery.service.js +116 -0
  830. package/dist/themes/theme-state.d.ts +116 -0
  831. package/dist/themes/theme-state.js +221 -0
  832. package/dist/themes/theme-usage.d.ts +61 -0
  833. package/dist/themes/theme-usage.js +98 -0
  834. package/dist/themes/themes-public.controller.d.ts +33 -0
  835. package/dist/themes/themes-public.controller.js +98 -0
  836. package/dist/themes/themes.controller.d.ts +13 -0
  837. package/dist/themes/themes.controller.js +38 -0
  838. package/dist/themes/themes.module.d.ts +3 -0
  839. package/dist/themes/themes.module.js +21 -0
  840. package/dist/themes/themes.schemas.d.ts +3 -0
  841. package/dist/themes/themes.schemas.js +2 -0
  842. package/dist/themes/themes.service.d.ts +50 -0
  843. package/dist/themes/themes.service.js +99 -0
  844. package/dist/time-zone.d.ts +5 -0
  845. package/dist/time-zone.js +19 -0
  846. package/dist/tools/admin-connectors.d.ts +69 -0
  847. package/dist/tools/admin-connectors.js +135 -0
  848. package/dist/tools/approvals.controller.js +2 -3
  849. package/dist/tools/approvals.schemas.d.ts +21 -0
  850. package/dist/tools/approvals.schemas.js +15 -0
  851. package/dist/tools/approvals.service.d.ts +26 -2
  852. package/dist/tools/approvals.service.js +44 -5
  853. package/dist/tools/builtin-names.d.ts +104 -0
  854. package/dist/tools/builtin-names.js +164 -0
  855. package/dist/tools/builtins/agent.d.ts +27 -25
  856. package/dist/tools/builtins/agent.js +66 -63
  857. package/dist/tools/builtins/ask-user.d.ts +1 -1
  858. package/dist/tools/builtins/ask-user.js +5 -4
  859. package/dist/tools/builtins/builtin-tools.d.ts +23 -4
  860. package/dist/tools/builtins/builtin-tools.js +78 -12
  861. package/dist/tools/builtins/current-time.d.ts +26 -0
  862. package/dist/tools/builtins/current-time.js +99 -0
  863. package/dist/tools/builtins/handback.d.ts +28 -0
  864. package/dist/tools/builtins/handback.js +53 -0
  865. package/dist/tools/builtins/platform.d.ts +51 -0
  866. package/dist/tools/builtins/platform.js +451 -0
  867. package/dist/tools/builtins/read-tool-output.d.ts +1 -1
  868. package/dist/tools/builtins/read-tool-output.js +2 -2
  869. package/dist/tools/builtins/sandbox/bash.d.ts +5 -5
  870. package/dist/tools/builtins/sandbox/bash.js +291 -39
  871. package/dist/tools/builtins/sandbox/common.d.ts +135 -36
  872. package/dist/tools/builtins/sandbox/common.js +222 -62
  873. package/dist/tools/builtins/sandbox/deliver.d.ts +1 -1
  874. package/dist/tools/builtins/sandbox/deliver.js +19 -16
  875. package/dist/tools/builtins/sandbox/edit.d.ts +1 -1
  876. package/dist/tools/builtins/sandbox/edit.js +64 -50
  877. package/dist/tools/builtins/sandbox/file-state.d.ts +34 -0
  878. package/dist/tools/builtins/sandbox/file-state.js +34 -0
  879. package/dist/tools/builtins/sandbox/glob-match.d.ts +1 -1
  880. package/dist/tools/builtins/sandbox/glob-match.js +1 -1
  881. package/dist/tools/builtins/sandbox/glob.d.ts +1 -1
  882. package/dist/tools/builtins/sandbox/glob.js +17 -12
  883. package/dist/tools/builtins/sandbox/grep.d.ts +7 -4
  884. package/dist/tools/builtins/sandbox/grep.js +153 -34
  885. package/dist/tools/builtins/sandbox/index.d.ts +9 -5
  886. package/dist/tools/builtins/sandbox/index.js +13 -5
  887. package/dist/tools/builtins/sandbox/read.d.ts +2 -2
  888. package/dist/tools/builtins/sandbox/read.js +29 -19
  889. package/dist/tools/builtins/sandbox/task-output.d.ts +79 -0
  890. package/dist/tools/builtins/sandbox/task-output.js +334 -0
  891. package/dist/tools/builtins/sandbox/task-stop.d.ts +10 -0
  892. package/dist/tools/builtins/sandbox/task-stop.js +113 -0
  893. package/dist/tools/builtins/sandbox/write.d.ts +1 -1
  894. package/dist/tools/builtins/sandbox/write.js +51 -44
  895. package/dist/tools/builtins/send-message.d.ts +56 -0
  896. package/dist/tools/builtins/send-message.js +100 -0
  897. package/dist/tools/builtins/skill-load.d.ts +29 -18
  898. package/dist/tools/builtins/skill-load.js +125 -73
  899. package/dist/tools/builtins/tool-search.d.ts +13 -9
  900. package/dist/tools/builtins/tool-search.js +25 -14
  901. package/dist/tools/builtins/web/errors.d.ts +8 -0
  902. package/dist/tools/builtins/web/errors.js +53 -0
  903. package/dist/tools/builtins/web/extract.d.ts +62 -0
  904. package/dist/tools/builtins/web/extract.js +271 -0
  905. package/dist/tools/builtins/web/fetch.d.ts +55 -0
  906. package/dist/tools/builtins/web/fetch.js +175 -0
  907. package/dist/tools/builtins/web/index.d.ts +13 -0
  908. package/dist/tools/builtins/web/index.js +12 -0
  909. package/dist/tools/builtins/web/page-cache.d.ts +25 -0
  910. package/dist/tools/builtins/web/page-cache.js +77 -0
  911. package/dist/tools/builtins/web/search.d.ts +25 -0
  912. package/dist/tools/builtins/web/search.js +210 -0
  913. package/dist/tools/builtins/web/url.d.ts +17 -0
  914. package/dist/tools/builtins/web/url.js +43 -0
  915. package/dist/tools/connector-account-policies.d.ts +51 -0
  916. package/dist/tools/connector-account-policies.js +165 -0
  917. package/dist/tools/connectors.controller.d.ts +74 -9
  918. package/dist/tools/connectors.controller.js +133 -16
  919. package/dist/tools/connectors.schemas.d.ts +27 -0
  920. package/dist/tools/connectors.schemas.js +34 -0
  921. package/dist/tools/connectors.service.d.ts +101 -8
  922. package/dist/tools/connectors.service.js +266 -28
  923. package/dist/tools/credentials.d.ts +23 -0
  924. package/dist/tools/credentials.js +90 -1
  925. package/dist/tools/display-names.d.ts +9 -0
  926. package/dist/tools/display-names.js +24 -0
  927. package/dist/tools/drift.js +5 -5
  928. package/dist/tools/elicitation.js +1 -1
  929. package/dist/tools/extension-tools.controller.d.ts +14 -0
  930. package/dist/tools/extension-tools.controller.js +37 -0
  931. package/dist/tools/info.d.ts +61 -4
  932. package/dist/tools/info.js +119 -33
  933. package/dist/tools/legacy-data.d.ts +34 -0
  934. package/dist/tools/legacy-data.js +76 -0
  935. package/dist/tools/legacy-keys.d.ts +51 -0
  936. package/dist/tools/legacy-keys.js +114 -0
  937. package/dist/tools/naming.d.ts +1 -5
  938. package/dist/tools/naming.js +1 -7
  939. package/dist/tools/oauth/flow-paths.d.ts +1 -1
  940. package/dist/tools/oauth/flow-paths.js +1 -1
  941. package/dist/tools/oauth/flow.js +1 -1
  942. package/dist/tools/oauth/tokens.d.ts +54 -7
  943. package/dist/tools/oauth/tokens.js +87 -17
  944. package/dist/tools/org-tool-switches.d.ts +89 -0
  945. package/dist/tools/org-tool-switches.js +201 -0
  946. package/dist/tools/outputs.js +1 -1
  947. package/dist/tools/pipeline.d.ts +67 -47
  948. package/dist/tools/pipeline.js +319 -380
  949. package/dist/tools/policy.d.ts +30 -23
  950. package/dist/tools/policy.js +142 -64
  951. package/dist/tools/questions.controller.d.ts +1 -1
  952. package/dist/tools/questions.controller.js +1 -1
  953. package/dist/tools/questions.service.d.ts +23 -2
  954. package/dist/tools/questions.service.js +104 -2
  955. package/dist/tools/registry.d.ts +189 -68
  956. package/dist/tools/registry.js +318 -236
  957. package/dist/tools/resources.d.ts +1 -1
  958. package/dist/tools/resources.js +1 -1
  959. package/dist/tools/tools.module.js +31 -3
  960. package/dist/tools/validate.js +1 -1
  961. package/dist/ui/admin-ui.controller.d.ts +56 -0
  962. package/dist/ui/admin-ui.controller.js +192 -0
  963. package/dist/ui/arrangement.d.ts +65 -0
  964. package/dist/ui/arrangement.js +171 -0
  965. package/dist/ui/embed-token.d.ts +2 -2
  966. package/dist/ui/embed-token.js +30 -5
  967. package/dist/ui/registry.d.ts +42 -17
  968. package/dist/ui/registry.js +46 -14
  969. package/dist/ui/slots.controller.d.ts +11 -0
  970. package/dist/ui/slots.controller.js +25 -0
  971. package/dist/ui/ui-stream.d.ts +20 -3
  972. package/dist/ui/ui-stream.js +25 -7
  973. package/dist/ui/ui.schemas.d.ts +70 -0
  974. package/dist/ui/ui.schemas.js +65 -0
  975. package/dist/ui/views.controller.d.ts +35 -49
  976. package/dist/ui/views.controller.js +48 -70
  977. package/dist/ui/views.d.ts +112 -18
  978. package/dist/ui/views.js +254 -47
  979. package/package.json +6 -3
  980. package/src/migrations/0063_tool_keys_claude_code.sql +220 -0
  981. package/src/migrations/0064_account_last_org.sql +7 -0
  982. package/src/migrations/0065_conversation_archive.sql +8 -0
  983. package/src/migrations/0066_extension_display_name.sql +4 -0
  984. package/src/migrations/0067_agent_profiles.sql +20 -0
  985. package/src/migrations/0068_agent_avatar_uploads.sql +7 -0
  986. package/src/migrations/0069_attachments_agent_idx.sql +3 -0
  987. package/src/migrations/0070_background_tasks.sql +37 -0
  988. package/src/migrations/0071_background_tasks_reserve.sql +6 -0
  989. package/src/migrations/0072_background_tasks_stopping.sql +5 -0
  990. package/src/migrations/0073_org_extension_point_defaults.sql +11 -0
  991. package/src/migrations/0074_subagent_tree.sql +50 -0
  992. package/src/migrations/0075_plugin_scope.sql +61 -0
  993. package/src/migrations/0076_skills_created_by_nullable.sql +6 -0
  994. package/src/migrations/0077_scope_requests.sql +52 -0
  995. package/src/migrations/0078_scope_grant_switches.sql +18 -0
  996. package/src/migrations/0079_scope_live_install_switches.sql +19 -0
  997. package/src/migrations/0080_rename_enterprise_admin.sql +18 -0
  998. package/src/migrations/0081_platform_components.sql +129 -0
  999. package/src/migrations/0082_platform_migration.sql +33 -0
  1000. package/src/migrations/0083_plugin_scope_sync_failures.sql +15 -0
  1001. package/src/migrations/0084_org_owned_items.sql +85 -0
  1002. package/src/migrations/0085_agent_templates_phase4.sql +45 -0
  1003. package/src/migrations/0086_org_layering.sql +30 -0
  1004. package/src/migrations/0087_approval_summary.sql +6 -0
  1005. package/src/migrations/0088_environments.sql +80 -0
  1006. package/src/migrations/0089_model_kinds_usage.sql +38 -0
  1007. package/src/migrations/0090_initial_passwords.sql +27 -0
  1008. package/src/migrations/0091_account_time_zone.sql +4 -0
  1009. package/src/migrations/0092_tools_default_on.sql +27 -0
  1010. package/src/migrations/0093_connected_environments.sql +37 -0
  1011. package/src/migrations/0094_environment_paths_idx.sql +7 -0
  1012. package/src/migrations/0095_environment_files_resets.sql +5 -0
  1013. package/src/migrations/0096_environment_demoted_default.sql +18 -0
  1014. package/src/migrations/0097_extension_installs_enabled_at.sql +16 -0
  1015. package/src/migrations/0098_single_provider_running_first.sql +41 -0
  1016. package/src/migrations/0099_channel_connection_guide_ack.sql +6 -0
  1017. package/src/migrations/0100_catalog_files.sql +13 -0
  1018. package/src/migrations/0101_marketplace_icons.sql +32 -0
  1019. package/src/migrations/0102_themes.sql +64 -0
  1020. package/src/migrations/0103_ui_theme_setting.sql +7 -0
  1021. package/src/migrations/0104_connector_tool_account_policies.sql +16 -0
  1022. package/src/migrations/0105_devices_rename.sql +136 -0
  1023. package/src/migrations/0106_setup_guides_v2.sql +10 -0
  1024. package/src/migrations/0107_extension_client_builds.sql +50 -0
  1025. package/src/migrations/0108_question_skipped.sql +6 -0
  1026. package/src/migrations/0109_audit_platform_idx.sql +5 -0
  1027. package/src/migrations/0110_usage_time_idx.sql +8 -0
  1028. package/src/migrations/0111_agent_skill_sharing.sql +22 -0
  1029. package/src/migrations/0112_skill_share_requests.sql +4 -0
  1030. package/dist/catalog/upgrade-targets.d.ts +0 -56
  1031. package/dist/catalog/upgrade-targets.js +0 -90
  1032. package/dist/conversations/sandbox-status.d.ts +0 -24
  1033. package/dist/conversations/sandbox-status.js +0 -52
  1034. package/dist/extensions/org-config.controller.d.ts +0 -24
  1035. package/dist/extensions/org-config.controller.js +0 -62
  1036. package/dist/tools/builtins/sandbox/names.d.ts +0 -7
  1037. package/dist/tools/builtins/sandbox/names.js +0 -20
  1038. package/dist/tools/builtins/skill-write.d.ts +0 -59
  1039. package/dist/tools/builtins/skill-write.js +0 -244
@@ -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";
@@ -56,9 +57,15 @@ import { ExtensionRegistry } from "./registry.js";
56
57
  * until expiry) aborts the run at its next step. "Done" is a `bootstrap_runs` row for the
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).
60
+ * - Two passes per start: the first runs before the extensions load (no object store yet), the
61
+ * second after them. A `builtin` entry (not required, but builtin in the catalog) is deferred by
62
+ * the first pass (`deferBuiltin`: skipped, not a failure; the run is then not recorded and the
63
+ * start runs the second pass), so it may ship skills and templates. A required entry is imported
64
+ * by the first pass and must succeed; a builtin one that fails is logged like an optional one.
59
65
  * - 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
- * it) stays uninstalled -> `kept`. A required entry is always installed.
66
+ * completed run already handled and that is not installed now (a super admin uninstalled
67
+ * it) stays uninstalled -> `kept`. A required or builtin entry is always installed (a
68
+ * declarative one imported again when its catalog item is gone).
62
69
  * - Per entry, by the installed state of its extension:
63
70
  * - not installed (and new, or required): imported into the catalog (source `bootstrap`, ref
64
71
  * `bootstrap:<name>@<version>`, like a marketplace import), installed, approved (snapshot
@@ -66,8 +73,8 @@ import { ExtensionRegistry } from "./registry.js";
66
73
  * and enabled -> `installed`;
67
74
  * - installed from `bootstrap` at a lower version: upgraded the same way (core's release vouched
68
75
  * 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
76
+ * a super admin chose (a disabled optional plugin stays disabled) -> `upgraded`;
77
+ * - installed at a higher version, or from another source (a super admin upgraded it), or
71
78
  * the name is config-declared (`declared`: config wins, no install record is created):
72
79
  * untouched, never downgraded -> `kept`;
73
80
  * - a declarative plugin (no extension): imported into the catalog only -> `imported` (`kept`
@@ -83,22 +90,38 @@ import { ExtensionRegistry } from "./registry.js";
83
90
  * A failed entry does not stop the others; the run then throws {@link BootstrapFailedError} naming
84
91
  * them. The packages are kept in PG (`blob_store = 'pg'`), so installing an extension never needs
85
92
  * 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.
93
+ * never needed again. A plugin's icons and setup guide files are kept in PG too (`catalog_files`),
94
+ * so they never need it either; its skills, connector templates and agent templates do (an entry
95
+ * shipping them fails while no object store runs; an optional one is retried after the extensions
96
+ * loaded, and a plugin that must be builtin and ships them is a `builtin` entry, which only the
97
+ * pass after the extensions load imports).
87
98
  */
88
99
  /** The bootstrap manifest that ships with the kernel package. */
89
100
  export const BOOTSTRAP_MANIFEST_FILE = fileURLToPath(new URL("../../bootstrap.json", import.meta.url));
90
- /** Some entries failed (the others were done); the run is not recorded as done. */
101
+ /**
102
+ * Some entries failed or were deferred (the others were done); the run is not recorded as done.
103
+ */
91
104
  export class BootstrapFailedError extends Error {
92
105
  failures;
93
106
  results;
107
+ deferred;
108
+ packages;
94
109
  /**
95
110
  * @param results what the entries that did not fail did (pass them as `carry` to a later run in
96
111
  * the same start, so its record keeps `installed` instead of `kept`).
112
+ * @param deferred the builtin entries a first pass skipped (`deferBuiltin`): not failures, the
113
+ * later pass of the same start imports them.
114
+ * @param packages the packages this run obtained, by entry name (pass them as `packages` to the
115
+ * later pass of the same start, so nothing is downloaded twice).
97
116
  */
98
- constructor(failures, results = []) {
99
- super(`bootstrap failed for ${failures.map((f) => `${f.name}${f.required ? " (required)" : ""}: ${f.message}`).join("; ")}`);
117
+ constructor(failures, results = [], deferred = [], packages = new Map()) {
118
+ super(failures.length > 0
119
+ ? `bootstrap failed for ${failures.map((f) => `${f.name}${f.required ? " (required)" : ""}: ${f.message}`).join("; ")}`
120
+ : `bootstrap deferred the builtin plugins ${deferred.join(", ")} to the pass after the extensions load`);
100
121
  this.failures = failures;
101
122
  this.results = results;
123
+ this.deferred = deferred;
124
+ this.packages = packages;
102
125
  this.name = "BootstrapFailedError";
103
126
  }
104
127
  /** A required entry failed: the kernel must not serve without it. */
@@ -124,7 +147,8 @@ const integrityOf = (bytes) => `sha512-${createHash("sha512").update(bytes).dige
124
147
  * file there has that sha512, else (a `source: "npm"` entry) downloaded from the npm registry and
125
148
  * verified against the pin (the packument's `dist.integrity` is not consulted). Throws an
126
149
  * {@link ApiError} naming the plugin for the first entry it cannot obtain
127
- * (`bootstrap.missing_file`, `bootstrap.download_failed`, `bootstrap.integrity_mismatch`).
150
+ * (`bootstrap.missing_file`, `bootstrap.download_failed`, `bootstrap.integrity_mismatch`), except
151
+ * for the `soft` entries (recorded in `failed`, left out of the result).
128
152
  */
129
153
  export async function resolveBootstrapPackages(manifest, o) {
130
154
  const out = new Map();
@@ -137,11 +161,20 @@ export async function resolveBootstrapPackages(manifest, o) {
137
161
  const where = o.dir !== undefined ? o.dir : "the bootstrap directory (config bootstrap.dir)";
138
162
  for (const e of manifest.plugins) {
139
163
  signal.throwIfAborted();
140
- const found = offline.get(e.integrity);
141
- if (found !== undefined) {
142
- out.set(e.name, found);
143
- continue;
164
+ try {
165
+ out.set(e.name, await obtain(e));
144
166
  }
167
+ catch (err) {
168
+ if (signal.aborted || !(err instanceof ApiError) || o.soft?.(e) !== true)
169
+ throw err;
170
+ o.failed?.set(e.name, err);
171
+ }
172
+ }
173
+ return out;
174
+ async function obtain(e) {
175
+ const found = offline.get(e.integrity);
176
+ if (found !== undefined)
177
+ return found;
145
178
  if (e.source === "workspace") {
146
179
  throw new ApiError("bootstrap.missing_file", `Bootstrap plugin ${e.name} ${e.version}: no file in ${where} has its pinned sha512 (${e.integrity.slice(0, 19)}…), and a workspace entry cannot be downloaded; put its package tgz (pnpm pack-plugin ${e.path}) in that directory`);
147
180
  }
@@ -149,7 +182,7 @@ export async function resolveBootstrapPackages(manifest, o) {
149
182
  const offlineHint = `to install offline, put the package tgz (npm pack ${e.npm}@${e.version}, any file name) in ${where}`;
150
183
  try {
151
184
  const r = await fetchPackage({ registry: npmRegistry, ...(npmToken !== undefined && { token: npmToken }), maxBytes }, e.npm, e.version, signal, { expectedIntegrity: e.integrity });
152
- out.set(e.name, r.bytes);
185
+ return r.bytes;
153
186
  }
154
187
  catch (err) {
155
188
  if (signal.aborted)
@@ -165,7 +198,6 @@ export async function resolveBootstrapPackages(manifest, o) {
165
198
  throw new ApiError("bootstrap.download_failed", `Bootstrap plugin ${e.name} ${e.version}: cannot download ${e.npm}@${e.version} from ${registry} (${reason}); ${offlineHint}, or set packages.npmRegistry to a reachable mirror`);
166
199
  }
167
200
  }
168
- return out;
169
201
  }
170
202
  /** The registry's origin, for messages (never its credentials or path). */
171
203
  function registryOrigin(registry) {
@@ -294,19 +326,47 @@ let BootstrapService = class BootstrapService {
294
326
  const done = await recorded();
295
327
  if (done)
296
328
  return done;
297
- // Every package is obtained and checked before the first write
298
- const files = await resolveBootstrapPackages(o.manifest, {
329
+ const deferBuiltin = o.deferBuiltin === true;
330
+ const isDeferred = (e) => deferBuiltin && e.builtin === true;
331
+ // Every package is obtained and checked before the first write (a deferred entry's by the
332
+ // later pass). The first pass refuses to write anything when one is missing or tampered;
333
+ // the later pass only fails that entry unless it is required.
334
+ const files = new Map();
335
+ const fetchFailed = new Map();
336
+ const toObtain = [];
337
+ for (const e of o.manifest.plugins) {
338
+ if (isDeferred(e))
339
+ continue;
340
+ const kept = o.packages?.get(e.name);
341
+ if (kept !== undefined && integrityOf(kept) === e.integrity)
342
+ files.set(e.name, kept);
343
+ else
344
+ toObtain.push(e);
345
+ }
346
+ const obtained = await resolveBootstrapPackages({ ...o.manifest, plugins: toObtain }, {
299
347
  ...(o.dir !== undefined && { dir: o.dir }),
300
348
  config: this.config(),
301
349
  signal,
302
350
  log: this.log,
351
+ ...(!deferBuiltin && { soft: (e) => !e.required, failed: fetchFailed }),
303
352
  });
353
+ for (const [name, bytes] of obtained)
354
+ files.set(name, bytes);
304
355
  const handled = await this.lastRunNames();
305
356
  const results = [];
306
357
  const failures = [];
358
+ const deferred = [];
307
359
  for (const e of o.manifest.plugins) {
308
360
  signal.throwIfAborted();
361
+ if (isDeferred(e)) {
362
+ deferred.push(e.name);
363
+ continue;
364
+ }
365
+ await this.warnIfHeld(e);
309
366
  try {
367
+ const fetchErr = fetchFailed.get(e.name);
368
+ if (fetchErr !== undefined)
369
+ throw fetchErr;
310
370
  const r = await this.entry(e, files.get(e.name), handled, o.imports);
311
371
  results.push(carried(r, o.carry));
312
372
  }
@@ -315,6 +375,7 @@ let BootstrapService = class BootstrapService {
315
375
  plugin: e.name,
316
376
  version: e.version,
317
377
  required: e.required,
378
+ ...(e.builtin === true && { builtin: true }),
318
379
  err,
319
380
  });
320
381
  failures.push({
@@ -326,14 +387,32 @@ let BootstrapService = class BootstrapService {
326
387
  }
327
388
  }
328
389
  results.push(...(await this.clearRemoved(o.manifest)));
329
- if (failures.length > 0)
330
- throw new BootstrapFailedError(failures, results);
390
+ if (failures.length > 0 || deferred.length > 0) {
391
+ throw new BootstrapFailedError(failures, results, deferred, files);
392
+ }
331
393
  signal.throwIfAborted();
332
394
  await this.recordDone(manifestSha256, results);
333
395
  this.log.info("bootstrap completed", { manifestSha256, results });
334
396
  return { manifestSha256, results };
335
397
  });
336
398
  }
399
+ /**
400
+ * A pin whose plugin name an org holds (a live org-owned catalog item): the bootstrap takes no
401
+ * name over (ruling P3-28), so the entry fails; this warning tells the super admin why and
402
+ * which org holds it (final review M4).
403
+ */
404
+ async warnIfHeld(e) {
405
+ const holder = await otherNameOwner(this.db, e.name, null);
406
+ if (holder?.kind !== "org")
407
+ return;
408
+ 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", {
409
+ plugin: e.name,
410
+ version: e.version,
411
+ required: e.required,
412
+ ownerOrgId: holder.orgId,
413
+ ownerOrg: holder.name,
414
+ });
415
+ }
337
416
  /** The `bootstrap_runs` row and the `bootstrap.completed` audit, in one transaction. */
338
417
  async recordDone(manifestSha256, results) {
339
418
  await this.db
@@ -399,10 +478,15 @@ let BootstrapService = class BootstrapService {
399
478
  const ref = `bootstrap:${e.name}@${e.version}`;
400
479
  // Not new to the manifest: an optional entry left out on purpose stays out (Ruling 5)
401
480
  const isNew = handled === undefined || !handled.has(e.name);
481
+ // Required and builtin entries are builtin in the catalog and put back when missing
482
+ const builtin = e.required || e.builtin === true;
402
483
  if (!pkg.manifest.extension) {
403
- if (!isNew)
484
+ await this.markBuiltin(e.name, builtin);
485
+ if (!isNew && !(builtin && !(await this.hasLiveItem(e.name)))) {
404
486
  return { name: e.name, action: "kept", version: e.version };
487
+ }
405
488
  const imported = await this.importOnly(e, bytes, ref, imports);
489
+ await this.markBuiltin(e.name, builtin);
406
490
  return { name: e.name, action: imported ? "imported" : "kept", version: e.version };
407
491
  }
408
492
  if (this.registry.declared().has(e.name)) {
@@ -414,20 +498,21 @@ let BootstrapService = class BootstrapService {
414
498
  .select(["version", "source", "required", "desired_state", "sha256"])
415
499
  .where("name", "=", e.name)
416
500
  .executeTakeFirst();
417
- if (!row && !isNew && !e.required) {
501
+ if (!row && !isNew && !builtin) {
418
502
  this.log.info("bootstrap: an optional plugin that is not installed stays uninstalled", {
419
503
  plugin: e.name,
420
504
  });
421
505
  return { name: e.name, action: "kept", version: e.version };
422
506
  }
423
507
  let result;
508
+ let leftDisabled;
424
509
  if (!row) {
425
- await this.deploy(e, bytes, ref, true, imports);
510
+ leftDisabled = await this.deploy(e, bytes, ref, true, imports);
426
511
  result = { name: e.name, action: "installed", version: e.version };
427
512
  }
428
513
  else if (row.source === "bootstrap" && isLower(row.version, e.version)) {
429
514
  // 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);
515
+ leftDisabled = await this.deploy(e, bytes, ref, row.desired_state === "enabled", imports);
431
516
  result = { name: e.name, action: "upgraded", version: e.version };
432
517
  }
433
518
  else {
@@ -449,9 +534,57 @@ let BootstrapService = class BootstrapService {
449
534
  }
450
535
  // A required install must run on the deployment (an org cannot use it otherwise)
451
536
  if (e.required && row?.desired_state === "disabled") {
452
- await this.ops.enable(e.name, null);
537
+ leftDisabled = await this.enableOrWarn(e);
453
538
  }
454
- return result;
539
+ await this.markBuiltin(e.name, builtin);
540
+ return leftDisabled === undefined ? result : { ...result, leftDisabled };
541
+ }
542
+ /** Whether a live (not deleted) platform catalog item has this name. */
543
+ async hasLiveItem(name) {
544
+ const row = await this.db
545
+ .selectFrom("catalog_items")
546
+ .select("id")
547
+ .where("name", "=", name)
548
+ .where("owner_org_id", "is", null)
549
+ .where("deleted_at", "is", null)
550
+ .executeTakeFirst();
551
+ return row !== undefined;
552
+ }
553
+ /**
554
+ * The catalog item of a bootstrap entry follows `required` / `builtin`: such an entry is builtin,
555
+ * offered to every org (scope `all`, which an org admin cannot switch off) and not disabled
556
+ * (migration 0075 could leave a required plugin disabled); an entry that stops being required or
557
+ * builtin is no longer builtin and keeps scope `all` (the admin may change it from then on).
558
+ * Only the platform item: an org-owned item of the same name (the entry then fails with
559
+ * `plugin.name_taken`) is never touched.
560
+ */
561
+ async markBuiltin(name, builtin) {
562
+ const touch = { updated_at: sql `now()` };
563
+ if (builtin) {
564
+ await this.db
565
+ .updateTable("catalog_items")
566
+ .set({
567
+ builtin: true,
568
+ scope: "all",
569
+ disabled: false,
570
+ scope_version: sql `scope_version + 1`,
571
+ ...touch,
572
+ })
573
+ .where("name", "=", name)
574
+ .where("owner_org_id", "is", null)
575
+ .where("deleted_at", "is", null)
576
+ .where((eb) => eb.or([eb("builtin", "=", false), eb("scope", "<>", "all"), eb("disabled", "=", true)]))
577
+ .execute();
578
+ return;
579
+ }
580
+ await this.db
581
+ .updateTable("catalog_items")
582
+ .set({ builtin: false, ...touch })
583
+ .where("name", "=", name)
584
+ .where("owner_org_id", "is", null)
585
+ .where("deleted_at", "is", null)
586
+ .where("builtin", "=", true)
587
+ .execute();
455
588
  }
456
589
  /** A declarative plugin: catalog only. Returns false when that version is already imported. */
457
590
  async importOnly(e, bytes, ref, imports) {
@@ -461,10 +594,7 @@ let BootstrapService = class BootstrapService {
461
594
  ref,
462
595
  integrity: e.integrity,
463
596
  });
464
- await imports.confirm(null, stagingId, {
465
- reviewHash: review.reviewHash,
466
- deployExtension: false,
467
- });
597
+ await imports.confirm(null, stagingId, { reviewHash: review.reviewHash });
468
598
  return true;
469
599
  }
470
600
  catch (err) {
@@ -474,7 +604,7 @@ let BootstrapService = class BootstrapService {
474
604
  }
475
605
  }
476
606
  /**
477
- * Imports, approves, installs and enables (one review, confirmed with `deployExtension`). When
607
+ * Imports, approves, installs and enables (one review; its confirm deploys the extension). When
478
608
  * the catalog already has this version (an earlier run stopped after importing, or the same
479
609
  * package came from a marketplace), the extension is deployed from the package store instead.
480
610
  */
@@ -489,19 +619,25 @@ let BootstrapService = class BootstrapService {
489
619
  }
490
620
  catch (err) {
491
621
  if (err instanceof ApiError && err.code === "catalog.version_exists") {
492
- await this.deployFromStore(e, bytes, ref, enable);
493
- return;
622
+ return this.deployFromStore(e, bytes, ref, enable);
494
623
  }
495
624
  throw err;
496
625
  }
497
626
  const r = await imports.confirm(null, staged.stagingId, {
498
627
  reviewHash: staged.review.reviewHash,
499
- deployExtension: true,
500
628
  enable,
501
629
  });
502
630
  if (r.deploy?.result === "failed") {
503
631
  throw new ApiError((r.deploy.code ?? "internal"), r.deploy.message ?? `installing extension ${e.name} failed`);
504
632
  }
633
+ if (r.deploy?.singleProvider !== undefined) {
634
+ return this.leftDisabled(e, {
635
+ code: r.deploy.code,
636
+ message: r.deploy.message,
637
+ singleProvider: r.deploy.singleProvider,
638
+ });
639
+ }
640
+ return undefined;
505
641
  }
506
642
  /** The extension of a catalog version already imported: ingest, approve, install (, enable). */
507
643
  async deployFromStore(e, bytes, ref, enable) {
@@ -521,11 +657,42 @@ let BootstrapService = class BootstrapService {
521
657
  .selectFrom("catalog_items")
522
658
  .select("id")
523
659
  .where("name", "=", e.name)
660
+ .where("owner_org_id", "is", null)
524
661
  .where("deleted_at", "is", null)
525
662
  .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);
663
+ const installed = await this.ops.install(e.name, review.sha256, null, undefined, item ? { catalogItemId: item.id } : {});
664
+ // An upgrade newly providing a held single-provider point is left disabled by the install
665
+ if (installed.leftDisabled !== undefined)
666
+ return this.leftDisabled(e, installed.leftDisabled);
667
+ return enable ? this.enableOrWarn(e) : undefined;
668
+ }
669
+ /**
670
+ * Enables a bootstrap extension unless another enabled extension provides one of its
671
+ * single-provider extension points (see {@link leftDisabled}).
672
+ */
673
+ async enableOrWarn(e) {
674
+ const r = await this.ops.enableUnlessOccupied(e.name, null);
675
+ return r.enabled ? undefined : this.leftDisabled(e, r.note);
676
+ }
677
+ /**
678
+ * A bootstrap extension left disabled because another enabled extension holds a single-provider
679
+ * extension point it provides. An optional preinstall (a sandbox while the super admin runs
680
+ * another one) stays disabled with a warning, and the entry's result says so. A required entry
681
+ * fails (thrown, so the run is not recorded done, `capybara bootstrap` exits 1 and
682
+ * `capybara start` refuses to serve): the deployment cannot run without it, and only the super
683
+ * admin can free the point, by disabling the other provider and running the bootstrap again.
684
+ */
685
+ leftDisabled(e, note) {
686
+ const block = note.singleProvider;
687
+ if (e.required) {
688
+ const other = block.enabled.name;
689
+ throw new ApiError(note.code, `Required plugin ${e.name} provides ${block.extensionPoint}, which ${other} already provides; disable ${other} and run the bootstrap again`, [block]);
690
+ }
691
+ this.log.warn(`bootstrap: the plugin is installed disabled; ${note.message}`, {
692
+ plugin: e.name,
693
+ required: e.required,
694
+ });
695
+ return note;
529
696
  }
530
697
  /** The permission snapshot of a stored package (source `bootstrap`), under the approve lock. */
531
698
  async approveStored(e, set, sha256) {
@@ -552,6 +719,18 @@ let BootstrapService = class BootstrapService {
552
719
  if (names.length > 0)
553
720
  q = q.where("name", "not in", names);
554
721
  const rows = await q.returning(["name", "version"]).execute();
722
+ for (const r of rows)
723
+ await this.markBuiltin(r.name, false);
724
+ // A declarative plugin has no install record: clear builtin by catalog name
725
+ let items = this.db
726
+ .updateTable("catalog_items")
727
+ .set({ builtin: false, updated_at: sql `now()` })
728
+ .where("builtin", "=", true)
729
+ .where("owner_org_id", "is", null)
730
+ .where("deleted_at", "is", null);
731
+ if (names.length > 0)
732
+ items = items.where("name", "not in", names);
733
+ await items.execute();
555
734
  return rows.map((r) => ({ name: r.name, action: "required_cleared", version: r.version }));
556
735
  }
557
736
  };
@@ -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
  }
@@ -1,9 +1,45 @@
1
- import { z } from "zod";
2
- export type JsonSchema = Record<string, unknown>;
3
1
  /**
4
- * 把插件配置 schema 转成 JSON Schema(供界面渲染表单):
5
- * - `secret()` 字段带 `"x-secret": true`(去掉 zod 附带的 `secret` 元数据键);
6
- * - 无法表达的类型为 `{ "x-unsupported": true }`,不抛错;
7
- * - 以输入侧形态输出(含 default),不带 `$schema`。
2
+ * Config schema → JSON Schema for forms. The conversion (and the secret scrub) lives in the SDK
3
+ * (`configJsonSchema`, extension config forms spec §4.1) so the packer, the checks and the kernel
4
+ * share one implementation; the kernel keeps no copy.
8
5
  */
9
- export declare function configToJsonSchema(schema: z.ZodType): JsonSchema;
6
+ import { type ConfigUiProblem, type JsonSchema } from "@capybara-hq/plugin-sdk";
7
+ import type { z } from "zod";
8
+ export { configJsonSchema as configToJsonSchema, type JsonSchema } from "@capybara-hq/plugin-sdk";
9
+ /** The config level a schema belongs to (which hints `validateConfigUi` allows). */
10
+ export type ConfigLevel = "deployment" | "org" | "connection";
11
+ /** A config schema as served to forms, with the problems of its hints (empty = kept). */
12
+ export interface ConfigFormSchema {
13
+ /** Shared by every caller: clone it before handing it out or changing it. */
14
+ readonly schema: JsonSchema;
15
+ readonly problems: ConfigUiProblem[];
16
+ }
17
+ /**
18
+ * Removes every `x-ui` from a JSON Schema in place (a property named `x-ui` is kept, and so are
19
+ * values: `default`, `const`, `enum` and `examples` are left as they are).
20
+ */
21
+ export declare function stripConfigUi(node: unknown): void;
22
+ /**
23
+ * Validates the hints of a JSON Schema at a level and strips every `x-ui` when there is any
24
+ * problem (in place): invalid hints never reach a form, and never fail a load (spec §4.1).
25
+ */
26
+ export declare function checkConfigUi(schema: JsonSchema, level: ConfigLevel): ConfigUiProblem[];
27
+ /** A config schema's form JSON Schema ({@link checkConfigUi} applied), cached per schema object. */
28
+ export declare function configFormSchema(schema: z.ZodTypeAny, level: ConfigLevel): ConfigFormSchema;
29
+ /**
30
+ * {@link configFormSchema} that never throws, for every caller that serves a form schema or reads
31
+ * its messages (deployment, org, connection, issues). A hint conversion that throws (a hand-made
32
+ * package, e.g. hints that won't serialize as JSON) drops the hints: the plain schema with every
33
+ * `x-ui` stripped, else `null` when even the plain conversion fails. `onFallback` runs once per
34
+ * schema object and level on this replica (the caller's one warning); later calls reuse the result.
35
+ */
36
+ export declare function safeConfigFormSchema(schema: z.ZodTypeAny, level: ConfigLevel, onFallback: (err: unknown, fallback: "plain" | "none") => void): ConfigFormSchema | null;
37
+ /**
38
+ * The secret record paths some `x-ui.secrets[].path` of a form schema names (spec §4.3), anywhere in
39
+ * the schema. Read from a checked schema: one whose hints were invalid was stripped and names none.
40
+ */
41
+ export declare function hintedSecretPaths(node: unknown, out?: Set<string>): Set<string>;
42
+ /** The root `x-ui.messages` of a form schema (the localized texts of custom issues), if any. */
43
+ export declare function configMessages(schema: JsonSchema | null | undefined): Record<string, unknown> | undefined;
44
+ /** A short text of hint problems for a status detail or a log (the first few). */
45
+ export declare function describeConfigUiProblems(level: ConfigLevel, problems: ConfigUiProblem[]): string;