@skaile/workspaces 3.27.1 → 4.0.0

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 (344) hide show
  1. package/CHANGELOG.md +474 -0
  2. package/dist/app-sdk/index.js +1 -1
  3. package/dist/{asset-feeds-QF7LGRUX.js → asset-feeds-OPG6SUXU.js} +11 -9
  4. package/dist/asset-feeds-OPG6SUXU.js.map +1 -0
  5. package/dist/asset-manager/catalog-deployer.js +5 -3
  6. package/dist/asset-manager/index.js +11 -9
  7. package/dist/asset-manager/installer.js +8 -6
  8. package/dist/asset-manager/renderers.js +2 -2
  9. package/dist/asset-manager/src/renderers.d.ts.map +1 -1
  10. package/dist/bridge/drivers/claude-sdk.js +102 -55
  11. package/dist/bridge/drivers/claude-sdk.js.map +1 -1
  12. package/dist/bridge/drivers/codex.js +178 -22
  13. package/dist/bridge/drivers/codex.js.map +1 -1
  14. package/dist/bridge/drivers/continue.js +199 -7
  15. package/dist/bridge/drivers/continue.js.map +1 -1
  16. package/dist/bridge/drivers/echo.js +10 -4
  17. package/dist/bridge/drivers/echo.js.map +1 -1
  18. package/dist/bridge/drivers/gemini.js +7 -4
  19. package/dist/bridge/drivers/goose.js +160 -7
  20. package/dist/bridge/drivers/goose.js.map +1 -1
  21. package/dist/bridge/drivers/omp.js +321 -96
  22. package/dist/bridge/drivers/omp.js.map +1 -1
  23. package/dist/bridge/drivers/opencode.js +148 -13
  24. package/dist/bridge/drivers/opencode.js.map +1 -1
  25. package/dist/bridge/drivers/qwen.js +41 -11
  26. package/dist/bridge/drivers/qwen.js.map +1 -1
  27. package/dist/bridge/index.js +12 -9
  28. package/dist/bridge/src/cloud.d.ts +62 -71
  29. package/dist/bridge/src/cloud.d.ts.map +1 -1
  30. package/dist/bridge/src/codex/config-toml.d.ts +128 -0
  31. package/dist/bridge/src/codex/config-toml.d.ts.map +1 -0
  32. package/dist/bridge/src/codex/credentials.d.ts +26 -0
  33. package/dist/bridge/src/codex/credentials.d.ts.map +1 -1
  34. package/dist/bridge/src/codex/managed-driver.d.ts.map +1 -1
  35. package/dist/bridge/src/drivers/_subprocess-cli.d.ts +9 -4
  36. package/dist/bridge/src/drivers/_subprocess-cli.d.ts.map +1 -1
  37. package/dist/bridge/src/drivers/claude-sdk.d.ts +19 -11
  38. package/dist/bridge/src/drivers/claude-sdk.d.ts.map +1 -1
  39. package/dist/bridge/src/drivers/codex.d.ts +26 -1
  40. package/dist/bridge/src/drivers/codex.d.ts.map +1 -1
  41. package/dist/bridge/src/drivers/continue.d.ts +31 -5
  42. package/dist/bridge/src/drivers/continue.d.ts.map +1 -1
  43. package/dist/bridge/src/drivers/echo.d.ts.map +1 -1
  44. package/dist/bridge/src/drivers/gemini.d.ts +34 -3
  45. package/dist/bridge/src/drivers/gemini.d.ts.map +1 -1
  46. package/dist/bridge/src/drivers/goose.d.ts +26 -2
  47. package/dist/bridge/src/drivers/goose.d.ts.map +1 -1
  48. package/dist/bridge/src/drivers/omp-models-yml.d.ts +216 -0
  49. package/dist/bridge/src/drivers/omp-models-yml.d.ts.map +1 -0
  50. package/dist/bridge/src/drivers/omp.d.ts +26 -23
  51. package/dist/bridge/src/drivers/omp.d.ts.map +1 -1
  52. package/dist/bridge/src/drivers/opencode.d.ts +28 -3
  53. package/dist/bridge/src/drivers/opencode.d.ts.map +1 -1
  54. package/dist/bridge/src/drivers/qwen.d.ts +10 -4
  55. package/dist/bridge/src/drivers/qwen.d.ts.map +1 -1
  56. package/dist/bridge/src/index.d.ts +3 -1
  57. package/dist/bridge/src/index.d.ts.map +1 -1
  58. package/dist/bridge/src/models.d.ts +118 -19
  59. package/dist/bridge/src/models.d.ts.map +1 -1
  60. package/dist/bridge/src/provider-catalog.d.ts +188 -0
  61. package/dist/bridge/src/provider-catalog.d.ts.map +1 -0
  62. package/dist/bridge/src/provider-materialize/continue-config-yaml.d.ts +117 -0
  63. package/dist/bridge/src/provider-materialize/continue-config-yaml.d.ts.map +1 -0
  64. package/dist/bridge/src/provider-materialize/credential-env.d.ts +103 -0
  65. package/dist/bridge/src/provider-materialize/credential-env.d.ts.map +1 -0
  66. package/dist/bridge/src/provider-materialize/env-drivers.d.ts +209 -0
  67. package/dist/bridge/src/provider-materialize/env-drivers.d.ts.map +1 -0
  68. package/dist/bridge/src/provider-materialize/goose-custom-providers.d.ts +127 -0
  69. package/dist/bridge/src/provider-materialize/goose-custom-providers.d.ts.map +1 -0
  70. package/dist/bridge/src/provider-materialize/opencode-config.d.ts +127 -0
  71. package/dist/bridge/src/provider-materialize/opencode-config.d.ts.map +1 -0
  72. package/dist/bridge/src/provider-materialize/session-config-home.d.ts +63 -0
  73. package/dist/bridge/src/provider-materialize/session-config-home.d.ts.map +1 -0
  74. package/dist/bridge/src/provider-registry-derive.d.ts +59 -0
  75. package/dist/bridge/src/provider-registry-derive.d.ts.map +1 -0
  76. package/dist/bridge/src/registry.d.ts +19 -7
  77. package/dist/bridge/src/registry.d.ts.map +1 -1
  78. package/dist/bridge/src/runtime.d.ts.map +1 -1
  79. package/dist/bridge/src/types.d.ts +79 -60
  80. package/dist/bridge/src/types.d.ts.map +1 -1
  81. package/dist/bridge/src/validation.d.ts +2 -3
  82. package/dist/bridge/src/validation.d.ts.map +1 -1
  83. package/dist/{chunk-GURXUF2J.js → chunk-3ZTQY276.js} +95 -80
  84. package/dist/chunk-3ZTQY276.js.map +1 -0
  85. package/dist/{chunk-T3YLZQS4.js → chunk-45LLHKQ2.js} +24 -3
  86. package/dist/chunk-45LLHKQ2.js.map +1 -0
  87. package/dist/{chunk-WJVBJAM5.js → chunk-5IIHO2HI.js} +7 -7
  88. package/dist/{chunk-WJVBJAM5.js.map → chunk-5IIHO2HI.js.map} +1 -1
  89. package/dist/{chunk-HSRHO7SK.js → chunk-C3QLJTMB.js} +106 -150
  90. package/dist/chunk-C3QLJTMB.js.map +1 -0
  91. package/dist/chunk-CUU3AMGE.js +500 -0
  92. package/dist/chunk-CUU3AMGE.js.map +1 -0
  93. package/dist/{chunk-K6VZQNTR.js → chunk-DKCFWSVW.js} +3 -3
  94. package/dist/{chunk-K6VZQNTR.js.map → chunk-DKCFWSVW.js.map} +1 -1
  95. package/dist/{chunk-WWGU3REE.js → chunk-DNGAA24M.js} +7 -7
  96. package/dist/{chunk-WWGU3REE.js.map → chunk-DNGAA24M.js.map} +1 -1
  97. package/dist/{chunk-TCHEW3T2.js → chunk-EBHY23RZ.js} +6 -6
  98. package/dist/{chunk-TCHEW3T2.js.map → chunk-EBHY23RZ.js.map} +1 -1
  99. package/dist/{chunk-MQASB52N.js → chunk-FEFTOV2Y.js} +3 -3
  100. package/dist/{chunk-MQASB52N.js.map → chunk-FEFTOV2Y.js.map} +1 -1
  101. package/dist/{chunk-XMULHVKX.js → chunk-FODAC4RE.js} +17 -15
  102. package/dist/chunk-FODAC4RE.js.map +1 -0
  103. package/dist/{chunk-6H6HLMWG.js → chunk-G2F3ZCPK.js} +3 -3
  104. package/dist/{chunk-6H6HLMWG.js.map → chunk-G2F3ZCPK.js.map} +1 -1
  105. package/dist/{chunk-QSPCI4W2.js → chunk-HO2FQ76C.js} +175 -178
  106. package/dist/chunk-HO2FQ76C.js.map +1 -0
  107. package/dist/chunk-ILG4BXYE.js +936 -0
  108. package/dist/chunk-ILG4BXYE.js.map +1 -0
  109. package/dist/{chunk-E7HKNQTH.js → chunk-JXCUUZA3.js} +3 -4
  110. package/dist/chunk-JXCUUZA3.js.map +1 -0
  111. package/dist/{chunk-MBARHWMZ.js → chunk-K27T47OO.js} +79 -53
  112. package/dist/chunk-K27T47OO.js.map +1 -0
  113. package/dist/chunk-K3YR33F6.js +187 -0
  114. package/dist/chunk-K3YR33F6.js.map +1 -0
  115. package/dist/{chunk-A3HTL7XV.js → chunk-KIQGTAJ5.js} +3 -3
  116. package/dist/{chunk-A3HTL7XV.js.map → chunk-KIQGTAJ5.js.map} +1 -1
  117. package/dist/chunk-KSIRR5PL.js +142 -0
  118. package/dist/chunk-KSIRR5PL.js.map +1 -0
  119. package/dist/{chunk-SIREWRZE.js → chunk-KW7YIRYL.js} +3 -3
  120. package/dist/{chunk-SIREWRZE.js.map → chunk-KW7YIRYL.js.map} +1 -1
  121. package/dist/{chunk-3U3ZKYR7.js → chunk-LN2BQVRB.js} +139 -29
  122. package/dist/chunk-LN2BQVRB.js.map +1 -0
  123. package/dist/{chunk-DZ4UZOFB.js → chunk-M5H4DWIA.js} +3 -3
  124. package/dist/{chunk-DZ4UZOFB.js.map → chunk-M5H4DWIA.js.map} +1 -1
  125. package/dist/{chunk-JMYOJ3PA.js → chunk-MIP4IC3O.js} +3 -3
  126. package/dist/{chunk-JMYOJ3PA.js.map → chunk-MIP4IC3O.js.map} +1 -1
  127. package/dist/{chunk-ZEXYTJ6Y.js → chunk-MJY2BO6N.js} +6 -6
  128. package/dist/{chunk-ZEXYTJ6Y.js.map → chunk-MJY2BO6N.js.map} +1 -1
  129. package/dist/{chunk-AN6NAFRT.js → chunk-N7B3LZ7V.js} +31 -6
  130. package/dist/chunk-N7B3LZ7V.js.map +1 -0
  131. package/dist/{chunk-MX6TGDZ7.js → chunk-NBPL76HH.js} +5 -5
  132. package/dist/{chunk-MX6TGDZ7.js.map → chunk-NBPL76HH.js.map} +1 -1
  133. package/dist/{chunk-2BK4N3FS.js → chunk-NR6BPOW5.js} +2 -7
  134. package/dist/chunk-NR6BPOW5.js.map +1 -0
  135. package/dist/{chunk-J3IXRPZB.js → chunk-PCJF3XBH.js} +10 -10
  136. package/dist/{chunk-J3IXRPZB.js.map → chunk-PCJF3XBH.js.map} +1 -1
  137. package/dist/{chunk-NW65H5EV.js → chunk-PTETBRRC.js} +3 -3
  138. package/dist/{chunk-NW65H5EV.js.map → chunk-PTETBRRC.js.map} +1 -1
  139. package/dist/{chunk-UL4LD7KD.js → chunk-QQL3ET3J.js} +3 -3
  140. package/dist/{chunk-UL4LD7KD.js.map → chunk-QQL3ET3J.js.map} +1 -1
  141. package/dist/{chunk-IB4XKQMQ.js → chunk-REILIKVM.js} +3 -3
  142. package/dist/{chunk-IB4XKQMQ.js.map → chunk-REILIKVM.js.map} +1 -1
  143. package/dist/{chunk-EB72L5ZL.js → chunk-RM4C5AU3.js} +15 -20
  144. package/dist/chunk-RM4C5AU3.js.map +1 -0
  145. package/dist/chunk-SG4D2UOK.js +843 -0
  146. package/dist/chunk-SG4D2UOK.js.map +1 -0
  147. package/dist/{chunk-VN7DELUT.js → chunk-T7RHDVSY.js} +4 -4
  148. package/dist/{chunk-VN7DELUT.js.map → chunk-T7RHDVSY.js.map} +1 -1
  149. package/dist/{chunk-773WLEXL.js → chunk-UKWEJPZZ.js} +3 -3
  150. package/dist/{chunk-773WLEXL.js.map → chunk-UKWEJPZZ.js.map} +1 -1
  151. package/dist/{chunk-3NCGSSCU.js → chunk-WLFRA5RM.js} +47 -45
  152. package/dist/chunk-WLFRA5RM.js.map +1 -0
  153. package/dist/{chunk-FFE7YLYO.js → chunk-XEVWRSLS.js} +7 -7
  154. package/dist/chunk-XEVWRSLS.js.map +1 -0
  155. package/dist/{chunk-FACPWN6P.js → chunk-Y6E62LFB.js} +9 -12
  156. package/dist/chunk-Y6E62LFB.js.map +1 -0
  157. package/dist/{chunk-72DG6GSB.js → chunk-YS4XBN7O.js} +4 -4
  158. package/dist/{chunk-72DG6GSB.js.map → chunk-YS4XBN7O.js.map} +1 -1
  159. package/dist/chunk-YSJKLJD4.js +32 -0
  160. package/dist/chunk-YSJKLJD4.js.map +1 -0
  161. package/dist/cli/index.js +765 -334
  162. package/dist/cli/index.js.map +1 -1
  163. package/dist/cli/src/commands/config.d.ts +17 -6
  164. package/dist/cli/src/commands/config.d.ts.map +1 -1
  165. package/dist/cli/src/commands/migrate-legacy-entry.d.ts +46 -0
  166. package/dist/cli/src/commands/migrate-legacy-entry.d.ts.map +1 -0
  167. package/dist/cli/src/commands/migrate-providers.d.ts +93 -0
  168. package/dist/cli/src/commands/migrate-providers.d.ts.map +1 -0
  169. package/dist/cli/src/commands/providers.d.ts +89 -0
  170. package/dist/cli/src/commands/providers.d.ts.map +1 -0
  171. package/dist/cli/src/commands/run.d.ts +1 -1
  172. package/dist/cli/src/commands/run.d.ts.map +1 -1
  173. package/dist/cli/src/setup.d.ts +46 -6
  174. package/dist/cli/src/setup.d.ts.map +1 -1
  175. package/dist/connectors/config.js +6 -4
  176. package/dist/connectors/index.js +15 -12
  177. package/dist/core/index.js +5 -3
  178. package/dist/core/provider-registry-credentials.d.ts +2 -0
  179. package/dist/core/provider-registry-credentials.js +5 -0
  180. package/dist/core/provider-registry-credentials.js.map +1 -0
  181. package/dist/core/provider-registry.d.ts +2 -0
  182. package/dist/core/provider-registry.js +4 -0
  183. package/dist/core/provider-registry.js.map +1 -0
  184. package/dist/core/runtime-assets.js +2 -2
  185. package/dist/core/src/index.d.ts +10 -4
  186. package/dist/core/src/index.d.ts.map +1 -1
  187. package/dist/core/src/provider-registry-credentials.d.ts +50 -0
  188. package/dist/core/src/provider-registry-credentials.d.ts.map +1 -0
  189. package/dist/core/src/provider-registry-files.d.ts +97 -0
  190. package/dist/core/src/provider-registry-files.d.ts.map +1 -0
  191. package/dist/core/src/provider-registry.d.ts +450 -0
  192. package/dist/core/src/provider-registry.d.ts.map +1 -0
  193. package/dist/core/src/settings.d.ts +18 -78
  194. package/dist/core/src/settings.d.ts.map +1 -1
  195. package/dist/core/src/workspace-config.d.ts +31 -47
  196. package/dist/core/src/workspace-config.d.ts.map +1 -1
  197. package/dist/core/src/workspace-yaml-editor.d.ts.map +1 -1
  198. package/dist/core/workspace-config.js +1 -1
  199. package/dist/deploy/index.js +5 -3
  200. package/dist/deploy/index.js.map +1 -1
  201. package/dist/discovery/index.js +2 -2
  202. package/dist/{ensure-sources-GEJGBQIP.js → ensure-sources-QZAQ4SY2.js} +14 -12
  203. package/dist/ensure-sources-QZAQ4SY2.js.map +1 -0
  204. package/dist/factory-assets/connectors/box.js +15 -12
  205. package/dist/factory-assets/connectors/deploy.js +15 -12
  206. package/dist/factory-assets/connectors/devserver.js +15 -12
  207. package/dist/factory-assets/connectors/flow/adapter.js +15 -12
  208. package/dist/factory-assets/connectors/flow/engine.js +6 -4
  209. package/dist/factory-assets/connectors/flow/index.d.ts +1 -1
  210. package/dist/factory-assets/connectors/flow/index.d.ts.map +1 -1
  211. package/dist/factory-assets/connectors/flow/run-flow.d.ts +0 -3
  212. package/dist/factory-assets/connectors/flow/run-flow.d.ts.map +1 -1
  213. package/dist/factory-assets/connectors/flow/run-flow.js +16 -13
  214. package/dist/factory-assets/connectors/flow/subprompt-runner.d.ts +31 -28
  215. package/dist/factory-assets/connectors/flow/subprompt-runner.d.ts.map +1 -1
  216. package/dist/factory-assets/connectors/flow.js +15 -12
  217. package/dist/factory-assets/connectors/git.js +15 -12
  218. package/dist/factory-assets/connectors/gmail.js +15 -12
  219. package/dist/factory-assets/connectors/googledrive.js +15 -12
  220. package/dist/factory-assets/connectors/local.js +15 -12
  221. package/dist/factory-assets/connectors/mattermost.js +15 -12
  222. package/dist/factory-assets/connectors/memory.js +15 -12
  223. package/dist/factory-assets/connectors/minio.js +15 -12
  224. package/dist/factory-assets/connectors/postgres.js +15 -12
  225. package/dist/factory-assets/connectors/s3.js +15 -12
  226. package/dist/factory-assets/connectors/sharepoint.js +15 -12
  227. package/dist/factory-assets/connectors/sqlite.js +15 -12
  228. package/dist/factory-assets/connectors/static-server.js +15 -12
  229. package/dist/factory-assets/connectors/tunnel.js +15 -12
  230. package/dist/factory-assets/connectors/webdav.js +15 -12
  231. package/dist/factory-assets/connectors/xstate-store.js +15 -12
  232. package/dist/factory-assets/connectors/xstate.js +15 -12
  233. package/dist/{flows-MI2VM5JZ.js → flows-4EIENFNT.js} +9 -7
  234. package/dist/{flows-MI2VM5JZ.js.map → flows-4EIENFNT.js.map} +1 -1
  235. package/dist/{helpers-DXZOHX25.js → helpers-DISRVGRJ.js} +14 -12
  236. package/dist/{helpers-DXZOHX25.js.map → helpers-DISRVGRJ.js.map} +1 -1
  237. package/dist/library/index.js +8 -6
  238. package/dist/library/install.js +5 -3
  239. package/dist/{library-publish-CUPDG5NI.js → library-publish-I2QYQSB4.js} +18 -16
  240. package/dist/library-publish-I2QYQSB4.js.map +1 -0
  241. package/dist/{open-library-32XAI2LH.js → open-library-6LM4W4DR.js} +16 -14
  242. package/dist/{open-library-32XAI2LH.js.map → open-library-6LM4W4DR.js.map} +1 -1
  243. package/dist/paths-P26QGQP5.js +18 -0
  244. package/dist/{paths-CZEH643M.js.map → paths-P26QGQP5.js.map} +1 -1
  245. package/dist/plugin-registry/src/targets.d.ts +16 -2
  246. package/dist/plugin-registry/src/targets.d.ts.map +1 -1
  247. package/dist/{plugin-store-QJNBPIQK.js → plugin-store-T2DJGKBW.js} +7 -5
  248. package/dist/plugin-store-T2DJGKBW.js.map +1 -0
  249. package/dist/{project-RRHUCVXW.js → project-HP3IR7RW.js} +15 -13
  250. package/dist/{project-RRHUCVXW.js.map → project-HP3IR7RW.js.map} +1 -1
  251. package/dist/resolver/index.js +5 -3
  252. package/dist/runner/index.js +25 -22
  253. package/dist/runner/src/agent.d.ts +0 -2
  254. package/dist/runner/src/agent.d.ts.map +1 -1
  255. package/dist/runner/src/codex-init.d.ts.map +1 -1
  256. package/dist/runner/src/codex-resource-tools.d.ts.map +1 -1
  257. package/dist/runner/src/managed-codex-bootstrap.d.ts.map +1 -1
  258. package/dist/runner/src/resources.d.ts +1 -2
  259. package/dist/runner/src/resources.d.ts.map +1 -1
  260. package/dist/runner/src/serve.d.ts.map +1 -1
  261. package/dist/runner/src/session-builder.d.ts +31 -35
  262. package/dist/runner/src/session-builder.d.ts.map +1 -1
  263. package/dist/runner/src/session.d.ts +0 -2
  264. package/dist/runner/src/session.d.ts.map +1 -1
  265. package/dist/sdk/asset-manager.js +11 -9
  266. package/dist/sdk/bridge.js +12 -9
  267. package/dist/sdk/core.js +5 -3
  268. package/dist/sdk/flow.js +6 -4
  269. package/dist/sdk/index.js +25 -22
  270. package/dist/sdk/index.js.map +1 -1
  271. package/dist/sdk/resolver.js +5 -3
  272. package/dist/sdk/runner.js +25 -22
  273. package/dist/sdk/session.js +2 -2
  274. package/dist/sdk/types.js +1 -1
  275. package/dist/session/index.js +2 -2
  276. package/dist/setup-HLRSU3MR.js +435 -0
  277. package/dist/setup-HLRSU3MR.js.map +1 -0
  278. package/dist/{skills-IE3IWWB7.js → skills-QPYHHZ54.js} +7 -5
  279. package/dist/{skills-IE3IWWB7.js.map → skills-QPYHHZ54.js.map} +1 -1
  280. package/dist/{source-RHQLCTWA.js → source-G2VCWPDU.js} +17 -15
  281. package/dist/{source-RHQLCTWA.js.map → source-G2VCWPDU.js.map} +1 -1
  282. package/dist/{source-manifest-publish-DXMCSKU7.js → source-manifest-publish-WYKCKJFC.js} +19 -17
  283. package/dist/source-manifest-publish-WYKCKJFC.js.map +1 -0
  284. package/dist/tui/index.js +25 -23
  285. package/dist/tui/index.js.map +1 -1
  286. package/dist/tui/src/repl.d.ts +0 -2
  287. package/dist/tui/src/repl.d.ts.map +1 -1
  288. package/dist/types/index.js +1 -1
  289. package/dist/types/manifests.js +1 -1
  290. package/dist/types/src/index.d.ts +1 -1
  291. package/dist/types/src/index.d.ts.map +1 -1
  292. package/dist/types/src/lifecycle.d.ts +35 -10
  293. package/dist/types/src/lifecycle.d.ts.map +1 -1
  294. package/dist/types/src/manifests/agent.d.ts +116 -22
  295. package/dist/types/src/manifests/agent.d.ts.map +1 -1
  296. package/dist/types/src/manifests/index.d.ts +2 -2
  297. package/dist/types/src/manifests/index.d.ts.map +1 -1
  298. package/dist/types/src/manifests/preset.d.ts +5 -5
  299. package/dist/types/src/runtime.d.ts +51 -5
  300. package/dist/types/src/runtime.d.ts.map +1 -1
  301. package/dist/types/src/version.d.ts +18 -2
  302. package/dist/types/src/version.d.ts.map +1 -1
  303. package/dist/validator-P5ESKTW5.js +5 -0
  304. package/dist/{validator-RN64BKFW.js.map → validator-P5ESKTW5.js.map} +1 -1
  305. package/dist/workspace-plugin/adapters/mcp.js +11 -9
  306. package/dist/workspace-plugin/adapters/omp.js +11 -11
  307. package/dist/workspace-plugin/adapters/omp.js.map +1 -1
  308. package/dist/workspace-plugin/index.js +1 -1
  309. package/dist/workspace-plugin/src/plugin.d.ts +1 -4
  310. package/dist/workspace-plugin/src/plugin.d.ts.map +1 -1
  311. package/dist/workspace-plugin/src/tools/validator.d.ts +4 -4
  312. package/dist/workspace-plugin/src/tools/validator.d.ts.map +1 -1
  313. package/package.json +13 -1
  314. package/dist/asset-feeds-QF7LGRUX.js.map +0 -1
  315. package/dist/bridge/src/provider-endpoints.d.ts +0 -55
  316. package/dist/bridge/src/provider-endpoints.d.ts.map +0 -1
  317. package/dist/chunk-2BK4N3FS.js.map +0 -1
  318. package/dist/chunk-3NCGSSCU.js.map +0 -1
  319. package/dist/chunk-3U3ZKYR7.js.map +0 -1
  320. package/dist/chunk-AN6NAFRT.js.map +0 -1
  321. package/dist/chunk-AQW4BWNR.js +0 -324
  322. package/dist/chunk-AQW4BWNR.js.map +0 -1
  323. package/dist/chunk-E7HKNQTH.js.map +0 -1
  324. package/dist/chunk-EB72L5ZL.js.map +0 -1
  325. package/dist/chunk-FACPWN6P.js.map +0 -1
  326. package/dist/chunk-FFE7YLYO.js.map +0 -1
  327. package/dist/chunk-FYIHH56K.js +0 -110
  328. package/dist/chunk-FYIHH56K.js.map +0 -1
  329. package/dist/chunk-GURXUF2J.js.map +0 -1
  330. package/dist/chunk-HSRHO7SK.js.map +0 -1
  331. package/dist/chunk-MBARHWMZ.js.map +0 -1
  332. package/dist/chunk-QSPCI4W2.js.map +0 -1
  333. package/dist/chunk-T3YLZQS4.js.map +0 -1
  334. package/dist/chunk-XMULHVKX.js.map +0 -1
  335. package/dist/ensure-sources-GEJGBQIP.js.map +0 -1
  336. package/dist/library-publish-CUPDG5NI.js.map +0 -1
  337. package/dist/paths-CZEH643M.js +0 -16
  338. package/dist/plugin-store-QJNBPIQK.js.map +0 -1
  339. package/dist/runner/src/cloud-bundle.d.ts +0 -36
  340. package/dist/runner/src/cloud-bundle.d.ts.map +0 -1
  341. package/dist/setup-CIRH5BYB.js +0 -517
  342. package/dist/setup-CIRH5BYB.js.map +0 -1
  343. package/dist/source-manifest-publish-DXMCSKU7.js.map +0 -1
  344. package/dist/validator-RN64BKFW.js +0 -5
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Credential resolution for registry entries (§1.4).
3
+ *
4
+ * Split from `provider-registry.ts` deliberately: resolving a `cmd:` reference
5
+ * spawns a process and `env:` reads `process.env`, so this module depends on
6
+ * Node. The schema module must stay dependency-free because browser bundles
7
+ * (`@skaile/workspace-bridge-react`) reach the registry *types* through
8
+ * `@skaile/workspaces/types`, and a `node:child_process` import in that graph
9
+ * breaks their typecheck.
10
+ *
11
+ * @see PROVIDER-CONFIG-PLAN.md §1.4
12
+ */
13
+ import type { AIProviderCredentialKind, AIProviderEntry } from "./provider-registry.js";
14
+ /** Options for {@link resolveCredential}. */
15
+ export interface ResolveCredentialOptions {
16
+ /** Environment `env:` refs read from; defaults to `process.env`. */
17
+ env?: Record<string, string | undefined>;
18
+ /**
19
+ * Control-plane secrets, keyed by config id (a `platform:<configId>` ref) —
20
+ * the `secrets` map that rides alongside `session_init`.
21
+ */
22
+ secrets?: Record<string, string>;
23
+ /** Run `cmd:` references. Default `true`; the platform sets it `false`. */
24
+ allowCommand?: boolean;
25
+ }
26
+ /** Outcome of {@link resolveCredential}. Never carries the secret in `error`. */
27
+ export interface ResolvedAIProviderCredential {
28
+ kind: AIProviderCredentialKind;
29
+ /** The secret, when one was produced. */
30
+ value?: string;
31
+ /** Where the value came from; `ambient` means the transport's own chain signs. */
32
+ source: "env" | "cmd" | "platform" | "keyring" | "ambient" | "none";
33
+ /** Why there is no value. Secret-free. */
34
+ error?: string;
35
+ }
36
+ /** Test seam — drops the memoized `cmd:` results. */
37
+ export declare function __resetCredentialCommandCache(): void;
38
+ /**
39
+ * Resolve an entry's credential to a value (§1.4).
40
+ *
41
+ * `env:` reads the environment, `cmd:` runs a shell (10 s, trimmed stdout,
42
+ * cached per process), `platform:` reads the injected secrets map. `keyring:`
43
+ * is a reserved grammar slot: it validates but does not resolve, and says so.
44
+ *
45
+ * `sigv4`, `google_adc` and `azure_entra` entries without a ref resolve to
46
+ * `source: "ambient"` with no value — the AWS/Google/Azure SDK chain signs the
47
+ * request, there is nothing for this function to hand over.
48
+ */
49
+ export declare function resolveCredential(entry: AIProviderEntry, options?: ResolveCredentialOptions): ResolvedAIProviderCredential;
50
+ //# sourceMappingURL=provider-registry-credentials.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-registry-credentials.d.ts","sourceRoot":"","sources":["../../../core/src/provider-registry-credentials.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,wBAAwB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAIxF,6CAA6C;AAC7C,MAAM,WAAW,wBAAwB;IACvC,oEAAoE;IACpE,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IACzC;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,2EAA2E;IAC3E,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,iFAAiF;AACjF,MAAM,WAAW,4BAA4B;IAC3C,IAAI,EAAE,wBAAwB,CAAC;IAC/B,yCAAyC;IACzC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kFAAkF;IAClF,MAAM,EAAE,KAAK,GAAG,KAAK,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC;IACpE,0CAA0C;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAKD,qDAAqD;AACrD,wBAAgB,6BAA6B,IAAI,IAAI,CAEpD;AAID;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,eAAe,EACtB,OAAO,GAAE,wBAA6B,GACrC,4BAA4B,CAqE9B"}
@@ -0,0 +1,97 @@
1
+ /**
2
+ * Reading and writing `providers.yml` — the two on-disk layers of the AI
3
+ * provider registry (§1.5).
4
+ *
5
+ * `~/.skaile/providers.yml` is the default home for endpoint definitions;
6
+ * `<workspace>/.skaile/providers.yml` overrides it per project and is
7
+ * gitignored by `skaile init`. Higher layers (CLI/runtime overrides and the
8
+ * control-plane session layer) never touch disk — callers pass them to
9
+ * {@link loadProviderRegistry} as extra layers.
10
+ *
11
+ * @see PROVIDER-CONFIG-PLAN.md §1.5, §2.1
12
+ */
13
+ import { type AIProviderDiagnostic, type AIProviderRegistryDocument, type AIProviderRegistryLayer, type AIProviderRegistryPatch, type MergedAIProviderRegistry } from "./provider-registry.js";
14
+ /** The registry filename in both layers. */
15
+ export declare const PROVIDERS_FILENAME = "providers.yml";
16
+ /** `~/.skaile/providers.yml` — honours `$SKAILE_HOME`. */
17
+ export declare function userProviderRegistryPath(): string;
18
+ /** `<projectDir>/.skaile/providers.yml`. */
19
+ export declare function workspaceProviderRegistryPath(projectDir: string): string;
20
+ /** One loaded registry file. */
21
+ export interface ProviderRegistryFile {
22
+ /** Layer the file feeds. */
23
+ layer: "user" | "workspace";
24
+ path: string;
25
+ exists: boolean;
26
+ /**
27
+ * The layer this file contributes. Entries may be partial: a file that names
28
+ * `base_url` alone overrides that one field (§1.5). Empty when the file is
29
+ * absent or every entry was malformed.
30
+ */
31
+ document: AIProviderRegistryDocument;
32
+ diagnostics: AIProviderDiagnostic[];
33
+ }
34
+ /**
35
+ * Read one registry file as **one layer** of the §1.5 stack. A missing file is
36
+ * not an error — it is an empty layer. A malformed one yields diagnostics,
37
+ * never an exception.
38
+ *
39
+ * Only the checks that stand on their own run here (types, URLs, the
40
+ * credential grammar, literal secrets); whether an entry is *complete* is
41
+ * decided on the merged registry by {@link loadProviderRegistry}, because the
42
+ * layer below may be the one that names its `kind`.
43
+ */
44
+ export declare function loadProviderRegistryFile(filePath: string, layer: "user" | "workspace"): ProviderRegistryFile;
45
+ /**
46
+ * Write a registry document, creating `.skaile/` when needed.
47
+ *
48
+ * The document is serialized verbatim: the file holds references, never
49
+ * secrets, so there is nothing to redact — and {@link validateRegistry} is the
50
+ * gate that keeps it that way. Callers validate before writing.
51
+ *
52
+ * @returns the path written.
53
+ */
54
+ export declare function saveProviderRegistryFile(filePath: string, document: AIProviderRegistryDocument): string;
55
+ /** Options for {@link loadProviderRegistry}. */
56
+ export interface LoadProviderRegistryOptions {
57
+ /** Workspace whose `.skaile/providers.yml` is layered on top of the user file. */
58
+ projectDir?: string;
59
+ /**
60
+ * Layers that do not come from these two files — the catalog layer from
61
+ * `bridge/src/provider-catalog.ts`, CLI/runtime overrides, and the
62
+ * control-plane session layer. Precedence follows each layer's id, not this
63
+ * array's order.
64
+ */
65
+ extraLayers?: AIProviderRegistryLayer[];
66
+ }
67
+ /** The merged registry plus the files it came from. */
68
+ export interface LoadedProviderRegistry {
69
+ /** Merged and gated: every entry here is complete. */
70
+ registry: MergedAIProviderRegistry;
71
+ /**
72
+ * The same merge **before** the gate: every configured entry, complete or
73
+ * not, as the layers left it. This is what a caller that has to see the
74
+ * configured entries in order to build another layer reads — the catalog
75
+ * layer expands the presets these entries name, and an entry whose `kind`
76
+ * comes from its preset is still incomplete here, so it is absent from
77
+ * `registry`.
78
+ */
79
+ patches: AIProviderRegistryPatch;
80
+ files: ProviderRegistryFile[];
81
+ /**
82
+ * Every file's diagnostics in layer order, then the merge's own — an entry
83
+ * no layer completed is reported here, naming the files that fed it.
84
+ */
85
+ diagnostics: AIProviderDiagnostic[];
86
+ }
87
+ /**
88
+ * Load `~/.skaile/providers.yml` and, when a project directory is given,
89
+ * `<projectDir>/.skaile/providers.yml`, then merge them with any extra layers
90
+ * per §1.5 and gate the result.
91
+ *
92
+ * Merge *then* validate: each file is read as a patch, so a workspace entry
93
+ * that sets one field of an entry the user file defines is applied over it
94
+ * rather than dropped for being incomplete on its own.
95
+ */
96
+ export declare function loadProviderRegistry(options?: LoadProviderRegistryOptions): LoadedProviderRegistry;
97
+ //# sourceMappingURL=provider-registry-files.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-registry-files.d.ts","sourceRoot":"","sources":["../../../core/src/provider-registry-files.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAMH,OAAO,EACL,KAAK,oBAAoB,EACzB,KAAK,0BAA0B,EAC/B,KAAK,uBAAuB,EAC5B,KAAK,uBAAuB,EAE5B,KAAK,wBAAwB,EAI9B,MAAM,wBAAwB,CAAC;AAEhC,4CAA4C;AAC5C,eAAO,MAAM,kBAAkB,kBAAkB,CAAC;AAIlD,0DAA0D;AAC1D,wBAAgB,wBAAwB,IAAI,MAAM,CAEjD;AAED,4CAA4C;AAC5C,wBAAgB,6BAA6B,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAExE;AAED,gCAAgC;AAChC,MAAM,WAAW,oBAAoB;IACnC,4BAA4B;IAC5B,KAAK,EAAE,MAAM,GAAG,WAAW,CAAC;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB;;;;OAIG;IACH,QAAQ,EAAE,0BAA0B,CAAC;IACrC,WAAW,EAAE,oBAAoB,EAAE,CAAC;CACrC;AAED;;;;;;;;;GASG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,GAAG,WAAW,GAC1B,oBAAoB,CA2BtB;AAED;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,0BAA0B,GACnC,MAAM,CAKR;AAED,gDAAgD;AAChD,MAAM,WAAW,2BAA2B;IAC1C,kFAAkF;IAClF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,uBAAuB,EAAE,CAAC;CACzC;AAED,uDAAuD;AACvD,MAAM,WAAW,sBAAsB;IACrC,sDAAsD;IACtD,QAAQ,EAAE,wBAAwB,CAAC;IACnC;;;;;;;OAOG;IACH,OAAO,EAAE,uBAAuB,CAAC;IACjC,KAAK,EAAE,oBAAoB,EAAE,CAAC;IAC9B;;;OAGG;IACH,WAAW,EAAE,oBAAoB,EAAE,CAAC;CACrC;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,GAAE,2BAAgC,GACxC,sBAAsB,CA4BxB"}
@@ -0,0 +1,450 @@
1
+ /**
2
+ * The AI provider registry — one keyed definition of every LLM / voice endpoint
3
+ * the runtime may talk to.
4
+ *
5
+ * This module is the **single canonical home** of the registry record: its
6
+ * types, its validation, the layered merge (§1.5), the `base_url` derivation
7
+ * (§1.3), the credential-reference grammar (§1.4) and the model-reference
8
+ * parser. Nothing here is duplicated in `bridge`, `runner` or `platform` — the
9
+ * structurally-identical-copy pattern that `CloudConfig` fell into is exactly
10
+ * what this module exists to avoid.
11
+ *
12
+ * Vocabulary: this is the **AI provider** registry. It is unrelated to the
13
+ * platform's connector `ProviderType` / `ProviderLink` (git, SharePoint,
14
+ * Drive…). Types are named `AIProvider*` throughout, never bare `Provider*`.
15
+ *
16
+ * The `surface` enum is omp's `api` vocabulary verbatim, so the omp adapter is
17
+ * a serializer rather than a translator.
18
+ *
19
+ * @see PROVIDER-CONFIG-PLAN.md §1
20
+ */
21
+ /**
22
+ * What an entry produces. `llm` and `embed` carry a wire `surface`; `stt` and
23
+ * `tts` use the reduced voice record (§1.7).
24
+ */
25
+ export declare const AI_PROVIDER_KINDS: readonly ["llm", "stt", "tts", "embed"];
26
+ /** Union of {@link AI_PROVIDER_KINDS}. */
27
+ export type AIProviderKind = (typeof AI_PROVIDER_KINDS)[number];
28
+ /** Kinds that use the voice subset of the record (§1.7). */
29
+ export declare const AI_PROVIDER_VOICE_KINDS: readonly ["stt", "tts"];
30
+ /** Union of {@link AI_PROVIDER_VOICE_KINDS}. */
31
+ export type AIProviderVoiceKind = (typeof AI_PROVIDER_VOICE_KINDS)[number];
32
+ /**
33
+ * Wire protocol — the discriminator a driver adapter switches on. These are
34
+ * omp's `api` values verbatim (Codex CLI calls the same concept `wire_api`).
35
+ */
36
+ export declare const AI_PROVIDER_SURFACES: readonly ["anthropic-messages", "openai-completions", "openai-responses", "openai-codex-responses", "azure-openai-responses", "bedrock-converse-stream", "google-generative-ai", "google-vertex"];
37
+ /** Union of {@link AI_PROVIDER_SURFACES}. */
38
+ export type AIProviderSurface = (typeof AI_PROVIDER_SURFACES)[number];
39
+ /** How the request reaches the surface — selects the `params` shape (§1.3). */
40
+ export declare const AI_PROVIDER_TRANSPORTS: readonly ["direct", "bedrock", "vertex", "foundry", "azure-openai"];
41
+ /** Union of {@link AI_PROVIDER_TRANSPORTS}. */
42
+ export type AIProviderTransport = (typeof AI_PROVIDER_TRANSPORTS)[number];
43
+ /**
44
+ * How the credential is presented (§1.4). `command` is a reserved grammar slot:
45
+ * the schema accepts it, no refresh loop ships yet.
46
+ */
47
+ export declare const AI_PROVIDER_CREDENTIAL_KINDS: readonly ["api_key_header", "bearer", "sigv4", "google_adc", "azure_entra", "oauth", "none", "command"];
48
+ /** Union of {@link AI_PROVIDER_CREDENTIAL_KINDS}. */
49
+ export type AIProviderCredentialKind = (typeof AI_PROVIDER_CREDENTIAL_KINDS)[number];
50
+ /** omp-compatible model-discovery probes. Unknown values are tolerated with a warning. */
51
+ export declare const AI_PROVIDER_DISCOVERY_TYPES: readonly ["openai-models-list", "anthropic-models-list", "google-models-list", "none"];
52
+ /** Union of {@link AI_PROVIDER_DISCOVERY_TYPES}. */
53
+ export type AIProviderDiscoveryType = (typeof AI_PROVIDER_DISCOVERY_TYPES)[number];
54
+ /**
55
+ * Configuration layers, **lowest precedence first** (§1.5). `runtime` is the
56
+ * CLI/runtime override layer (`--model`, `--api-key`); `session` is the
57
+ * control-plane layer the platform injects into `session_init`.
58
+ */
59
+ export declare const AI_PROVIDER_LAYERS: readonly ["catalog", "user", "workspace", "runtime", "session"];
60
+ /** Union of {@link AI_PROVIDER_LAYERS}. */
61
+ export type AIProviderLayerId = (typeof AI_PROVIDER_LAYERS)[number];
62
+ /** `transport: bedrock` routing parameters. */
63
+ export interface AIProviderBedrockParams {
64
+ /** AWS region, e.g. `us-east-1`. */
65
+ region: string;
66
+ }
67
+ /** `transport: vertex` routing parameters. */
68
+ export interface AIProviderVertexParams {
69
+ /** GCP project id. */
70
+ project: string;
71
+ /** Vertex location, e.g. `europe-west4`. */
72
+ location: string;
73
+ /** Model publisher; defaults to `google` (use `anthropic` for Claude on Vertex). */
74
+ publisher?: string;
75
+ }
76
+ /** `transport: foundry` routing parameters. */
77
+ export interface AIProviderFoundryParams {
78
+ /** Azure AI Foundry resource name (the `{resource}` in the endpoint host). */
79
+ resource: string;
80
+ }
81
+ /**
82
+ * `transport: azure-openai` routing parameters. `resource` is required even
83
+ * though the plan's §1.3 table lists only `deployment`/`api_version`: the
84
+ * derived `base_url` in that same row interpolates `{resource}`.
85
+ */
86
+ export interface AIProviderAzureOpenAIParams {
87
+ /** Azure OpenAI resource name (the `{resource}` in the endpoint host). */
88
+ resource: string;
89
+ /** Deployment name the request is routed to. */
90
+ deployment: string;
91
+ /** `api-version` query value; mirrored into `query_params` by the adapter. */
92
+ api_version: string;
93
+ }
94
+ /** Free-form voice parameters, typed per preset (Deepgram, ElevenLabs, …). */
95
+ export type AIProviderVoiceParams = Record<string, string | number | boolean>;
96
+ /**
97
+ * The `transport` → `params` discriminated union (§1.3, decision §9.9). An open
98
+ * `Record<string, string>` would lose per-transport field rendering in the
99
+ * admin UI, so the pairing is encoded in the type.
100
+ */
101
+ export type AIProviderTransportSlice = {
102
+ transport?: "direct";
103
+ params?: Record<string, never>;
104
+ } | {
105
+ transport: "bedrock";
106
+ params: AIProviderBedrockParams;
107
+ } | {
108
+ transport: "vertex";
109
+ params: AIProviderVertexParams;
110
+ } | {
111
+ transport: "foundry";
112
+ params: AIProviderFoundryParams;
113
+ } | {
114
+ transport: "azure-openai";
115
+ params: AIProviderAzureOpenAIParams;
116
+ };
117
+ /** Reference to a secret. Never the secret itself — see {@link parseCredentialRef}. */
118
+ export interface AIProviderCredential {
119
+ kind: AIProviderCredentialKind;
120
+ /**
121
+ * `env:NAME` · `cmd:<shell>` · `platform:<configId>` · `keyring:<service>/<account>`.
122
+ * A literal secret here is a validation error.
123
+ */
124
+ ref?: string;
125
+ }
126
+ /** Per-model capability facts; unknown ids otherwise truncate silently. */
127
+ export interface AIProviderCapabilities {
128
+ context_window?: number;
129
+ tools?: boolean;
130
+ images?: boolean;
131
+ thinking_max?: number;
132
+ }
133
+ /** omp-compatible discovery descriptor. */
134
+ export interface AIProviderDiscovery {
135
+ type: AIProviderDiscoveryType | (string & {});
136
+ /** Path appended to `base_url` when the surface default does not apply. */
137
+ path?: string;
138
+ }
139
+ /** Fields every entry carries, whatever its `kind`. */
140
+ export interface AIProviderEntryCommon {
141
+ /** Display name. Never load-bearing. */
142
+ label?: string;
143
+ /** Catalog preset this entry inherits from (`bridge/src/provider-catalog.ts`). */
144
+ preset?: string;
145
+ /** Literal endpoint; wins over the preset value and the transport derivation. */
146
+ base_url?: string;
147
+ /** Static, non-secret request headers. */
148
+ headers?: Record<string, string>;
149
+ credential?: AIProviderCredential;
150
+ /** Default `true`; read it through {@link isEntryEnabled}. */
151
+ enabled?: boolean;
152
+ /** Set by the control plane: lower layers cannot override this entry (§1.5). */
153
+ locked?: boolean;
154
+ }
155
+ /** An `llm`/`embed` entry — the full record. */
156
+ export type AIProviderLlmEntry = AIProviderEntryCommon & AIProviderTransportSlice & {
157
+ kind: "llm" | "embed";
158
+ /** Required unless a `preset` supplies it. */
159
+ surface?: AIProviderSurface;
160
+ /** Azure's `api-version` lives here. */
161
+ query_params?: Record<string, string>;
162
+ /** Logical id → provider-side id. */
163
+ model_map?: Record<string, string>;
164
+ /** Keyed by the *logical* id, i.e. the `model_map` key. */
165
+ capabilities?: Record<string, AIProviderCapabilities>;
166
+ discovery?: AIProviderDiscovery;
167
+ };
168
+ /**
169
+ * An `stt`/`tts` entry — the reduced record (§1.7). `surface`, `transport`,
170
+ * `model_map`, `capabilities` and `discovery` are `llm`-only and rejected here:
171
+ * a TTS voice is not a wire protocol.
172
+ */
173
+ export type AIProviderVoiceEntry = AIProviderEntryCommon & {
174
+ kind: AIProviderVoiceKind;
175
+ /** Preset-typed: Deepgram `{model, language}`, ElevenLabs `{voice_id, output_format}`. */
176
+ params?: AIProviderVoiceParams;
177
+ };
178
+ /** One registry entry. */
179
+ export type AIProviderEntry = AIProviderLlmEntry | AIProviderVoiceEntry;
180
+ /** Entry id → entry. Iteration order is registry order. */
181
+ export type AIProviderRegistry = Record<string, AIProviderEntry>;
182
+ /**
183
+ * Any entry's `params`: transport routing parameters (§1.3) or voice options
184
+ * (§1.7). Which of them applies is decided by `transport` and `kind`, and a
185
+ * layer may not carry either — so a patch holds the union and
186
+ * {@link validateMergedRegistry} narrows it.
187
+ */
188
+ export type AIProviderParams = AIProviderBedrockParams | AIProviderVertexParams | AIProviderFoundryParams | AIProviderAzureOpenAIParams | AIProviderVoiceParams;
189
+ /**
190
+ * An entry as a single layer may write it (§1.5): any subset of the record,
191
+ * `kind` included. A `<workspace>/.skaile/providers.yml` that names `base_url`
192
+ * alone is an override of one field, not a redefinition — so a layer holds
193
+ * patches, and completeness is gated on the merged entry
194
+ * ({@link validateMergedRegistry}) rather than per layer.
195
+ *
196
+ * Every {@link AIProviderEntry} is a patch; the reverse needs the gate. The
197
+ * `transport`/`params` pairing is deliberately un-discriminated here, because
198
+ * the two halves may come from different layers.
199
+ */
200
+ export type AIProviderEntryPatch = AIProviderEntryCommon & {
201
+ kind?: AIProviderKind;
202
+ surface?: AIProviderSurface;
203
+ transport?: AIProviderTransport;
204
+ params?: AIProviderParams;
205
+ query_params?: Record<string, string>;
206
+ model_map?: Record<string, string>;
207
+ capabilities?: Record<string, AIProviderCapabilities>;
208
+ discovery?: AIProviderDiscovery;
209
+ };
210
+ /** Entry id → partial entry: one layer's contribution to the registry. */
211
+ export type AIProviderRegistryPatch = Record<string, AIProviderEntryPatch>;
212
+ /** A parsed `providers.yml` document — one layer, so entries may be partial. */
213
+ export interface AIProviderRegistryDocument {
214
+ version: 1;
215
+ providers: AIProviderRegistryPatch;
216
+ }
217
+ /** One input to {@link mergeRegistries}. */
218
+ export interface AIProviderRegistryLayer {
219
+ layer: AIProviderLayerId;
220
+ providers: AIProviderRegistryPatch;
221
+ }
222
+ /** The merged view every consumer reads. */
223
+ export interface MergedAIProviderRegistry {
224
+ version: 1;
225
+ providers: AIProviderRegistry;
226
+ /**
227
+ * Registry order: highest-precedence layer first, document order within a
228
+ * layer. Bare model ids resolve down this list (§1.6).
229
+ */
230
+ order: string[];
231
+ /** Highest-precedence layer that contributed to each entry. */
232
+ origin: Record<string, AIProviderLayerId>;
233
+ /** Entries frozen by `locked: true`; lower layers were ignored for these. */
234
+ locked: string[];
235
+ }
236
+ /** Severity of an {@link AIProviderDiagnostic}. */
237
+ export type AIProviderDiagnosticSeverity = "error" | "warning";
238
+ /**
239
+ * A structured note about a registry document. {@link validateRegistry} never
240
+ * throws: every problem is reported here with the offending key in `path`, and
241
+ * each caller (CLI, runner, platform) decides how loud to be.
242
+ */
243
+ export interface AIProviderDiagnostic {
244
+ /** Stable machine code, e.g. `"literal_secret"` / `"unknown_surface"`. */
245
+ code: string;
246
+ severity: AIProviderDiagnosticSeverity;
247
+ /** Human-readable, actionable message. */
248
+ message: string;
249
+ /** Dotted path to the offending key, e.g. `providers.groq.headers.x-api-key`. */
250
+ path: string;
251
+ }
252
+ /** Result of {@link validateRegistry}: the surviving document plus every note. */
253
+ export interface RegistryValidation {
254
+ /** Entries that produced an error diagnostic are omitted. */
255
+ document: AIProviderRegistryDocument;
256
+ diagnostics: AIProviderDiagnostic[];
257
+ }
258
+ /**
259
+ * `transport` → `base_url` template (§1.3). Placeholders are `params` keys.
260
+ * `direct` has no template: it uses the preset literal or an explicit value.
261
+ */
262
+ export declare const AI_PROVIDER_BASE_URL_TEMPLATES: Record<Exclude<AIProviderTransport, "direct">, string>;
263
+ /** True when `id` is usable as a registry key (`[a-z0-9][a-z0-9_-]*`). */
264
+ export declare function isSafeProviderId(id: string): boolean;
265
+ /**
266
+ * True when `value` must not appear literally under `key`.
267
+ *
268
+ * A value is acceptable when it is an indirection — a `${...}` interpolation or
269
+ * one of the four `credential.ref` forms. Otherwise a value is a literal secret
270
+ * when the key names a credential-bearing header (`authorization`, `x-api-key`,
271
+ * the bare `key` query param Google uses…) or when the value itself has the
272
+ * shape of a token (`sk-…`, `AIza…`, a 40-char opaque blob…).
273
+ *
274
+ * Non-secret literals stay legal: `anthropic-version: 2023-06-01`,
275
+ * `api-version: 2026-01-01`, `HTTP-Referer: https://skaile.ai`.
276
+ */
277
+ export declare function looksLikeLiteralSecret(key: string, value: string): boolean;
278
+ /** Options for {@link validateRegistry}. */
279
+ export interface ValidateRegistryOptions {
280
+ /** Prefix for diagnostic paths — normally the file the document came from. */
281
+ source?: string;
282
+ /**
283
+ * The layer this document feeds. Given — and not `catalog` — the document is
284
+ * read as **one layer** of the §1.5 stack: an entry may be a partial
285
+ * override, so a `kind`, `surface` or transport `params` that another layer
286
+ * supplies is not an error here. {@link validateMergedRegistry} gates the
287
+ * merged entry instead.
288
+ *
289
+ * Omitted, the document has to stand on its own: every entry must be
290
+ * complete, which is what a writer (`skaile providers add`) checks the entry
291
+ * it just built against.
292
+ */
293
+ layer?: AIProviderLayerId;
294
+ }
295
+ /**
296
+ * Validate a parsed `providers.yml` document (§1.1–§1.7).
297
+ *
298
+ * Total: never throws. Entries that produce an error are omitted from
299
+ * `document`, mirroring the resolver's per-entry skip semantics — one bad entry
300
+ * must not take the whole registry down. Every diagnostic names the offending
301
+ * key in `path`.
302
+ *
303
+ * Enforced here whatever the mode: safe entry ids, the `kind`/`surface`/
304
+ * `transport`/`credential.kind` enums, the value types, and the
305
+ * no-literal-secrets rule for `credential.ref`, `headers`, `query_params`,
306
+ * `params` and `base_url` userinfo — a secret must be caught in the file it
307
+ * was written into, not in an anonymous merged document.
308
+ *
309
+ * Enforced only when {@link ValidateRegistryOptions.layer} says this document
310
+ * is complete on its own: that an entry has a `kind`, that an `llm` entry has a
311
+ * `surface`, the voice subset (§1.7), and the per-transport `params` union
312
+ * (§1.3). Those depend on `kind`, which a layer may leave to a lower one.
313
+ *
314
+ * Defaults are deliberately **not** materialized: writing `enabled: true` or
315
+ * `transport: direct` into a layer would let that layer's implicit default
316
+ * override a lower layer's explicit value during the merge. Read them through
317
+ * {@link isEntryEnabled} / {@link entryTransport}.
318
+ */
319
+ export declare function validateRegistry(raw: unknown, options?: ValidateRegistryOptions): RegistryValidation;
320
+ /** `enabled` defaults to `true`. */
321
+ export declare function isEntryEnabled(entry: AIProviderEntry): boolean;
322
+ /** `transport` defaults to `direct`; voice entries have none. */
323
+ export declare function entryTransport(entry: AIProviderEntry): AIProviderTransport | undefined;
324
+ /**
325
+ * Resolve an entry's endpoint (§1.3).
326
+ *
327
+ * An explicit `base_url` always wins. Otherwise the transport's template is
328
+ * interpolated from `params` (`publisher` defaults to `google` for Vertex).
329
+ * `transport: direct` has no derivation — an entry that reaches here without a
330
+ * `base_url` inherits one from its preset, which the catalog layer supplies
331
+ * during the merge.
332
+ */
333
+ export declare function resolveEntryBaseUrl(entry: AIProviderEntry): string | undefined;
334
+ /**
335
+ * Merge registry layers into one view (§1.5).
336
+ *
337
+ * Precedence is taken from each layer's `layer` id, not from array position:
338
+ * `catalog` < `user` < `workspace` < `runtime` < `session`. Two layers with the
339
+ * same id are applied in array order, earliest winning. The merge is per key
340
+ * and deep — a workspace entry that sets only `base_url` keeps the user
341
+ * entry's credential, headers and model map.
342
+ *
343
+ * `locked: true` freezes an entry: every **lower** layer's contribution to that
344
+ * id is dropped silently, which is what makes a control-plane-pinned endpoint
345
+ * un-overridable from a checkout. (`skaile providers set` refuses loudly
346
+ * instead — silence is only correct for the merge.)
347
+ *
348
+ * This is a fold over layer *patches* and checks nothing: an entry no layer
349
+ * completed comes out of here incomplete. {@link validateMergedRegistry} is
350
+ * the gate — {@link loadProviderRegistry} runs it, and any other caller that
351
+ * merges hand-written layers has to as well.
352
+ */
353
+ export declare function mergeRegistries(layers: AIProviderRegistryLayer[]): MergedAIProviderRegistry;
354
+ /** One labelled input to {@link validateMergedRegistry}. */
355
+ export interface AIProviderRegistrySource {
356
+ /** Where the layer came from — the file path, for the two on-disk layers. */
357
+ label: string;
358
+ providers: AIProviderRegistryPatch;
359
+ }
360
+ /** Options for {@link validateMergedRegistry}. */
361
+ export interface ValidateMergedRegistryOptions {
362
+ /**
363
+ * The layers that were merged, labelled. A merge-time diagnostic names the
364
+ * files that contributed the entry, because those are what the operator has
365
+ * to edit — collapsing the layers into one anonymous document would lose
366
+ * exactly the information the error is about.
367
+ */
368
+ sources?: AIProviderRegistrySource[];
369
+ }
370
+ /** Result of {@link validateMergedRegistry}. */
371
+ export interface MergedRegistryValidation {
372
+ /** The merged view, with every entry no layer completed removed. */
373
+ registry: MergedAIProviderRegistry;
374
+ diagnostics: AIProviderDiagnostic[];
375
+ }
376
+ /**
377
+ * Gate the **merged** registry (§1.5) — the completeness half of validation.
378
+ *
379
+ * {@link validateRegistry} in layer mode accepts a partial entry, because a
380
+ * workspace file that names `base_url` alone is an override, not a
381
+ * redefinition. This is where an entry has to be whole: only here has every
382
+ * layer folded in, so only here is `kind` known and with it which record
383
+ * applies (§1.7), whether a `surface` is missing, and which transport the
384
+ * `params` belong to (§1.3).
385
+ *
386
+ * Entries that fail are dropped, so a consumer never sees a half-defined
387
+ * endpoint. Every diagnostic names the entry id and — when `sources` are
388
+ * given — the layers that fed the entry, whatever the check that raised it.
389
+ */
390
+ export declare function validateMergedRegistry(merged: MergedAIProviderRegistry, options?: ValidateMergedRegistryOptions): MergedRegistryValidation;
391
+ /** Entries of a registry in registry order, as `[id, entry]` pairs. */
392
+ export declare function registryEntries(registry: AIProviderRegistry | MergedAIProviderRegistry): Array<[string, AIProviderEntry]>;
393
+ /** A parsed `credential.ref` (§1.4). */
394
+ export type AIProviderCredentialRef = {
395
+ form: "env";
396
+ name: string;
397
+ } | {
398
+ form: "cmd";
399
+ command: string;
400
+ } | {
401
+ form: "platform";
402
+ configId: string;
403
+ } | {
404
+ form: "keyring";
405
+ service: string;
406
+ account: string;
407
+ };
408
+ /**
409
+ * Parse a `credential.ref`. Returns `undefined` for anything that is not one of
410
+ * the four reference forms — which, in a registry file, means a literal secret.
411
+ */
412
+ export declare function parseCredentialRef(ref: string): AIProviderCredentialRef | undefined;
413
+ /** Render a parsed reference back to its `<form>:<body>` string. */
414
+ export declare function formatCredentialRef(ref: AIProviderCredentialRef): string;
415
+ /** A model selector resolved against a registry. */
416
+ export interface ResolvedModelRef {
417
+ /** Entry the model routes to. */
418
+ providerId: string;
419
+ /**
420
+ * Logical model id, after `@role` expansion and before `model_map`. Absent
421
+ * only when a dangling role left the provider without a named model — the
422
+ * driver then uses its own default.
423
+ */
424
+ modelId?: string;
425
+ /** Provider-side id: `model_map[modelId] ?? modelId`. */
426
+ providerModelId?: string;
427
+ /** The role name, when the selector was `@role`. */
428
+ role?: string;
429
+ /** Non-fatal notes: a dangling role, a role pointing at an unknown provider. */
430
+ warnings: string[];
431
+ }
432
+ /**
433
+ * Resolve a model selector against a registry (§1.6, §9.8).
434
+ *
435
+ * Three forms:
436
+ * - `"<providerId>/<modelId>"` — explicit. The leading segment is only treated
437
+ * as a provider when the registry actually has that entry, so vendor-scoped
438
+ * ids (`meta-llama/Llama-3.3-70B`, `openai/gpt-oss-120b`) still resolve as
439
+ * bare model ids.
440
+ * - `"<modelId>"` — bare; the first entry in registry order that maps the id
441
+ * wins, else the first entry in registry order.
442
+ * - `"@role"` — resolved through `roles` (which lives in `skaile.yaml`). A
443
+ * dangling role is **not** fatal: it falls back to registry order and reports
444
+ * a warning.
445
+ *
446
+ * Returns `undefined` when no entry can serve the reference at all (an empty or
447
+ * fully-disabled registry).
448
+ */
449
+ export declare function parseModelRef(ref: string, registry: AIProviderRegistry | MergedAIProviderRegistry, roles?: Record<string, string>): ResolvedModelRef | undefined;
450
+ //# sourceMappingURL=provider-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-registry.d.ts","sourceRoot":"","sources":["../../../core/src/provider-registry.ts"],"names":[],"mappings":"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"}