@skaile/workspaces 3.27.1 → 4.1.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 (356) hide show
  1. package/CHANGELOG.md +482 -0
  2. package/dist/app-sdk/index.js +1 -1
  3. package/dist/{asset-feeds-QF7LGRUX.js → asset-feeds-VEPD5ZU7.js} +11 -9
  4. package/dist/asset-feeds-VEPD5ZU7.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/codex-app-server.js +15 -1
  11. package/dist/bridge/drivers/claude-sdk.js +102 -55
  12. package/dist/bridge/drivers/claude-sdk.js.map +1 -1
  13. package/dist/bridge/drivers/codex.js +179 -23
  14. package/dist/bridge/drivers/codex.js.map +1 -1
  15. package/dist/bridge/drivers/continue.js +199 -7
  16. package/dist/bridge/drivers/continue.js.map +1 -1
  17. package/dist/bridge/drivers/echo.js +10 -4
  18. package/dist/bridge/drivers/echo.js.map +1 -1
  19. package/dist/bridge/drivers/gemini.js +7 -4
  20. package/dist/bridge/drivers/goose.js +160 -7
  21. package/dist/bridge/drivers/goose.js.map +1 -1
  22. package/dist/bridge/drivers/omp.js +321 -96
  23. package/dist/bridge/drivers/omp.js.map +1 -1
  24. package/dist/bridge/drivers/opencode.js +148 -13
  25. package/dist/bridge/drivers/opencode.js.map +1 -1
  26. package/dist/bridge/drivers/qwen.js +41 -11
  27. package/dist/bridge/drivers/qwen.js.map +1 -1
  28. package/dist/bridge/index.js +12 -9
  29. package/dist/bridge/src/cloud.d.ts +62 -71
  30. package/dist/bridge/src/cloud.d.ts.map +1 -1
  31. package/dist/bridge/src/codex/config-toml.d.ts +128 -0
  32. package/dist/bridge/src/codex/config-toml.d.ts.map +1 -0
  33. package/dist/bridge/src/codex/credentials.d.ts +26 -0
  34. package/dist/bridge/src/codex/credentials.d.ts.map +1 -1
  35. package/dist/bridge/src/codex/managed-driver.d.ts.map +1 -1
  36. package/dist/bridge/src/codex-app-server.d.ts.map +1 -1
  37. package/dist/bridge/src/drivers/_subprocess-cli.d.ts +9 -4
  38. package/dist/bridge/src/drivers/_subprocess-cli.d.ts.map +1 -1
  39. package/dist/bridge/src/drivers/claude-sdk.d.ts +19 -11
  40. package/dist/bridge/src/drivers/claude-sdk.d.ts.map +1 -1
  41. package/dist/bridge/src/drivers/codex.d.ts +26 -1
  42. package/dist/bridge/src/drivers/codex.d.ts.map +1 -1
  43. package/dist/bridge/src/drivers/continue.d.ts +31 -5
  44. package/dist/bridge/src/drivers/continue.d.ts.map +1 -1
  45. package/dist/bridge/src/drivers/echo.d.ts.map +1 -1
  46. package/dist/bridge/src/drivers/gemini.d.ts +34 -3
  47. package/dist/bridge/src/drivers/gemini.d.ts.map +1 -1
  48. package/dist/bridge/src/drivers/goose.d.ts +26 -2
  49. package/dist/bridge/src/drivers/goose.d.ts.map +1 -1
  50. package/dist/bridge/src/drivers/omp-models-yml.d.ts +216 -0
  51. package/dist/bridge/src/drivers/omp-models-yml.d.ts.map +1 -0
  52. package/dist/bridge/src/drivers/omp.d.ts +26 -23
  53. package/dist/bridge/src/drivers/omp.d.ts.map +1 -1
  54. package/dist/bridge/src/drivers/opencode.d.ts +28 -3
  55. package/dist/bridge/src/drivers/opencode.d.ts.map +1 -1
  56. package/dist/bridge/src/drivers/qwen.d.ts +10 -4
  57. package/dist/bridge/src/drivers/qwen.d.ts.map +1 -1
  58. package/dist/bridge/src/index.d.ts +3 -1
  59. package/dist/bridge/src/index.d.ts.map +1 -1
  60. package/dist/bridge/src/models.d.ts +118 -19
  61. package/dist/bridge/src/models.d.ts.map +1 -1
  62. package/dist/bridge/src/provider-catalog.d.ts +188 -0
  63. package/dist/bridge/src/provider-catalog.d.ts.map +1 -0
  64. package/dist/bridge/src/provider-materialize/continue-config-yaml.d.ts +117 -0
  65. package/dist/bridge/src/provider-materialize/continue-config-yaml.d.ts.map +1 -0
  66. package/dist/bridge/src/provider-materialize/credential-env.d.ts +103 -0
  67. package/dist/bridge/src/provider-materialize/credential-env.d.ts.map +1 -0
  68. package/dist/bridge/src/provider-materialize/env-drivers.d.ts +209 -0
  69. package/dist/bridge/src/provider-materialize/env-drivers.d.ts.map +1 -0
  70. package/dist/bridge/src/provider-materialize/goose-custom-providers.d.ts +127 -0
  71. package/dist/bridge/src/provider-materialize/goose-custom-providers.d.ts.map +1 -0
  72. package/dist/bridge/src/provider-materialize/opencode-config.d.ts +127 -0
  73. package/dist/bridge/src/provider-materialize/opencode-config.d.ts.map +1 -0
  74. package/dist/bridge/src/provider-materialize/session-config-home.d.ts +63 -0
  75. package/dist/bridge/src/provider-materialize/session-config-home.d.ts.map +1 -0
  76. package/dist/bridge/src/provider-registry-derive.d.ts +59 -0
  77. package/dist/bridge/src/provider-registry-derive.d.ts.map +1 -0
  78. package/dist/bridge/src/registry.d.ts +19 -7
  79. package/dist/bridge/src/registry.d.ts.map +1 -1
  80. package/dist/bridge/src/runtime.d.ts.map +1 -1
  81. package/dist/bridge/src/types.d.ts +79 -60
  82. package/dist/bridge/src/types.d.ts.map +1 -1
  83. package/dist/bridge/src/validation.d.ts +2 -3
  84. package/dist/bridge/src/validation.d.ts.map +1 -1
  85. package/dist/{chunk-ZEXYTJ6Y.js → chunk-2GF42G2J.js} +6 -6
  86. package/dist/{chunk-ZEXYTJ6Y.js.map → chunk-2GF42G2J.js.map} +1 -1
  87. package/dist/{chunk-WWGU3REE.js → chunk-2K7NURDN.js} +7 -7
  88. package/dist/{chunk-WWGU3REE.js.map → chunk-2K7NURDN.js.map} +1 -1
  89. package/dist/{chunk-TCHEW3T2.js → chunk-2RO6N7DN.js} +6 -6
  90. package/dist/{chunk-TCHEW3T2.js.map → chunk-2RO6N7DN.js.map} +1 -1
  91. package/dist/{chunk-HSRHO7SK.js → chunk-3VSRJE3M.js} +155 -143
  92. package/dist/chunk-3VSRJE3M.js.map +1 -0
  93. package/dist/{chunk-T3YLZQS4.js → chunk-45LLHKQ2.js} +24 -3
  94. package/dist/chunk-45LLHKQ2.js.map +1 -0
  95. package/dist/chunk-5DQWB5TW.js +843 -0
  96. package/dist/chunk-5DQWB5TW.js.map +1 -0
  97. package/dist/{chunk-JMYOJ3PA.js → chunk-5HT5M5HX.js} +3 -3
  98. package/dist/{chunk-JMYOJ3PA.js.map → chunk-5HT5M5HX.js.map} +1 -1
  99. package/dist/{chunk-VN7DELUT.js → chunk-6AMTSRRO.js} +4 -4
  100. package/dist/{chunk-VN7DELUT.js.map → chunk-6AMTSRRO.js.map} +1 -1
  101. package/dist/{chunk-MX6TGDZ7.js → chunk-6DI4NTZN.js} +5 -5
  102. package/dist/{chunk-MX6TGDZ7.js.map → chunk-6DI4NTZN.js.map} +1 -1
  103. package/dist/{chunk-FFE7YLYO.js → chunk-AN7E2IL5.js} +7 -7
  104. package/dist/chunk-AN7E2IL5.js.map +1 -0
  105. package/dist/{chunk-A3HTL7XV.js → chunk-APDN5LW4.js} +3 -3
  106. package/dist/{chunk-A3HTL7XV.js.map → chunk-APDN5LW4.js.map} +1 -1
  107. package/dist/{chunk-FACPWN6P.js → chunk-ASU5IJZS.js} +9 -12
  108. package/dist/chunk-ASU5IJZS.js.map +1 -0
  109. package/dist/{chunk-J3IXRPZB.js → chunk-BTMDSMXF.js} +10 -10
  110. package/dist/{chunk-J3IXRPZB.js.map → chunk-BTMDSMXF.js.map} +1 -1
  111. package/dist/chunk-CTBUPYOQ.js +500 -0
  112. package/dist/chunk-CTBUPYOQ.js.map +1 -0
  113. package/dist/{chunk-K6VZQNTR.js → chunk-DKCFWSVW.js} +3 -3
  114. package/dist/{chunk-K6VZQNTR.js.map → chunk-DKCFWSVW.js.map} +1 -1
  115. package/dist/{chunk-MQASB52N.js → chunk-FEFTOV2Y.js} +3 -3
  116. package/dist/{chunk-MQASB52N.js.map → chunk-FEFTOV2Y.js.map} +1 -1
  117. package/dist/{chunk-XMULHVKX.js → chunk-FGTYTU6Q.js} +17 -15
  118. package/dist/chunk-FGTYTU6Q.js.map +1 -0
  119. package/dist/{chunk-WJVBJAM5.js → chunk-HHC2T7BM.js} +7 -7
  120. package/dist/{chunk-WJVBJAM5.js.map → chunk-HHC2T7BM.js.map} +1 -1
  121. package/dist/chunk-ILG4BXYE.js +936 -0
  122. package/dist/chunk-ILG4BXYE.js.map +1 -0
  123. package/dist/{chunk-E7HKNQTH.js → chunk-JXCUUZA3.js} +3 -4
  124. package/dist/chunk-JXCUUZA3.js.map +1 -0
  125. package/dist/{chunk-MBARHWMZ.js → chunk-K27T47OO.js} +79 -53
  126. package/dist/chunk-K27T47OO.js.map +1 -0
  127. package/dist/chunk-KSIRR5PL.js +142 -0
  128. package/dist/chunk-KSIRR5PL.js.map +1 -0
  129. package/dist/{chunk-SIREWRZE.js → chunk-KW7YIRYL.js} +3 -3
  130. package/dist/{chunk-SIREWRZE.js.map → chunk-KW7YIRYL.js.map} +1 -1
  131. package/dist/{chunk-3U3ZKYR7.js → chunk-LPF24MZA.js} +139 -29
  132. package/dist/chunk-LPF24MZA.js.map +1 -0
  133. package/dist/chunk-M2F5UXCX.js +187 -0
  134. package/dist/chunk-M2F5UXCX.js.map +1 -0
  135. package/dist/{chunk-DZ4UZOFB.js → chunk-M5H4DWIA.js} +3 -3
  136. package/dist/{chunk-DZ4UZOFB.js.map → chunk-M5H4DWIA.js.map} +1 -1
  137. package/dist/{chunk-PHBYB4XT.js → chunk-MLDJHV2U.js} +4 -8
  138. package/dist/chunk-MLDJHV2U.js.map +1 -0
  139. package/dist/{chunk-773WLEXL.js → chunk-MVBK4JUK.js} +3 -3
  140. package/dist/{chunk-773WLEXL.js.map → chunk-MVBK4JUK.js.map} +1 -1
  141. package/dist/{chunk-AN6NAFRT.js → chunk-N7B3LZ7V.js} +31 -6
  142. package/dist/chunk-N7B3LZ7V.js.map +1 -0
  143. package/dist/{chunk-EB72L5ZL.js → chunk-ORZBDXNS.js} +18 -30
  144. package/dist/chunk-ORZBDXNS.js.map +1 -0
  145. package/dist/{chunk-6H6HLMWG.js → chunk-OXTPH6HT.js} +3 -3
  146. package/dist/{chunk-6H6HLMWG.js.map → chunk-OXTPH6HT.js.map} +1 -1
  147. package/dist/{chunk-QSPCI4W2.js → chunk-PI244HAH.js} +175 -178
  148. package/dist/chunk-PI244HAH.js.map +1 -0
  149. package/dist/{chunk-NW65H5EV.js → chunk-PTETBRRC.js} +3 -3
  150. package/dist/{chunk-NW65H5EV.js.map → chunk-PTETBRRC.js.map} +1 -1
  151. package/dist/{chunk-UL4LD7KD.js → chunk-QQL3ET3J.js} +3 -3
  152. package/dist/{chunk-UL4LD7KD.js.map → chunk-QQL3ET3J.js.map} +1 -1
  153. package/dist/{chunk-GURXUF2J.js → chunk-R2GE2NXM.js} +95 -80
  154. package/dist/chunk-R2GE2NXM.js.map +1 -0
  155. package/dist/{chunk-IB4XKQMQ.js → chunk-REILIKVM.js} +3 -3
  156. package/dist/{chunk-IB4XKQMQ.js.map → chunk-REILIKVM.js.map} +1 -1
  157. package/dist/{chunk-3NCGSSCU.js → chunk-WLFRA5RM.js} +47 -45
  158. package/dist/chunk-WLFRA5RM.js.map +1 -0
  159. package/dist/{chunk-2BK4N3FS.js → chunk-WO65FA7W.js} +2 -7
  160. package/dist/chunk-WO65FA7W.js.map +1 -0
  161. package/dist/{chunk-72DG6GSB.js → chunk-YS4XBN7O.js} +4 -4
  162. package/dist/{chunk-72DG6GSB.js.map → chunk-YS4XBN7O.js.map} +1 -1
  163. package/dist/chunk-YSJKLJD4.js +32 -0
  164. package/dist/chunk-YSJKLJD4.js.map +1 -0
  165. package/dist/cli/index.js +765 -334
  166. package/dist/cli/index.js.map +1 -1
  167. package/dist/cli/src/commands/config.d.ts +17 -6
  168. package/dist/cli/src/commands/config.d.ts.map +1 -1
  169. package/dist/cli/src/commands/migrate-legacy-entry.d.ts +46 -0
  170. package/dist/cli/src/commands/migrate-legacy-entry.d.ts.map +1 -0
  171. package/dist/cli/src/commands/migrate-providers.d.ts +93 -0
  172. package/dist/cli/src/commands/migrate-providers.d.ts.map +1 -0
  173. package/dist/cli/src/commands/providers.d.ts +89 -0
  174. package/dist/cli/src/commands/providers.d.ts.map +1 -0
  175. package/dist/cli/src/commands/run.d.ts +1 -1
  176. package/dist/cli/src/commands/run.d.ts.map +1 -1
  177. package/dist/cli/src/setup.d.ts +46 -6
  178. package/dist/cli/src/setup.d.ts.map +1 -1
  179. package/dist/connectors/config.js +6 -4
  180. package/dist/connectors/index.js +15 -12
  181. package/dist/core/index.js +5 -3
  182. package/dist/core/provider-registry-credentials.d.ts +2 -0
  183. package/dist/core/provider-registry-credentials.js +5 -0
  184. package/dist/core/provider-registry-credentials.js.map +1 -0
  185. package/dist/core/provider-registry.d.ts +2 -0
  186. package/dist/core/provider-registry.js +4 -0
  187. package/dist/core/provider-registry.js.map +1 -0
  188. package/dist/core/runtime-assets.js +2 -2
  189. package/dist/core/src/index.d.ts +11 -4
  190. package/dist/core/src/index.d.ts.map +1 -1
  191. package/dist/core/src/process-alive.d.ts +28 -0
  192. package/dist/core/src/process-alive.d.ts.map +1 -0
  193. package/dist/core/src/provider-registry-credentials.d.ts +50 -0
  194. package/dist/core/src/provider-registry-credentials.d.ts.map +1 -0
  195. package/dist/core/src/provider-registry-files.d.ts +97 -0
  196. package/dist/core/src/provider-registry-files.d.ts.map +1 -0
  197. package/dist/core/src/provider-registry.d.ts +450 -0
  198. package/dist/core/src/provider-registry.d.ts.map +1 -0
  199. package/dist/core/src/settings.d.ts +18 -78
  200. package/dist/core/src/settings.d.ts.map +1 -1
  201. package/dist/core/src/workspace-config.d.ts +31 -47
  202. package/dist/core/src/workspace-config.d.ts.map +1 -1
  203. package/dist/core/src/workspace-yaml-editor.d.ts.map +1 -1
  204. package/dist/core/workspace-config.js +1 -1
  205. package/dist/deploy/index.js +9 -16
  206. package/dist/deploy/index.js.map +1 -1
  207. package/dist/deploy/src/targets/local.d.ts.map +1 -1
  208. package/dist/deploy/src/targets/nix.d.ts.map +1 -1
  209. package/dist/deploy/src/targets/process-handle.d.ts +0 -2
  210. package/dist/deploy/src/targets/process-handle.d.ts.map +1 -1
  211. package/dist/discovery/index.js +2 -2
  212. package/dist/{ensure-sources-GEJGBQIP.js → ensure-sources-B3VWHD5M.js} +14 -12
  213. package/dist/ensure-sources-B3VWHD5M.js.map +1 -0
  214. package/dist/factory-assets/connectors/box.js +15 -12
  215. package/dist/factory-assets/connectors/deploy.js +15 -12
  216. package/dist/factory-assets/connectors/devserver/adapter.d.ts.map +1 -1
  217. package/dist/factory-assets/connectors/devserver.js +15 -12
  218. package/dist/factory-assets/connectors/flow/adapter.js +15 -12
  219. package/dist/factory-assets/connectors/flow/engine.js +6 -4
  220. package/dist/factory-assets/connectors/flow/index.d.ts +1 -1
  221. package/dist/factory-assets/connectors/flow/index.d.ts.map +1 -1
  222. package/dist/factory-assets/connectors/flow/run-flow.d.ts +0 -3
  223. package/dist/factory-assets/connectors/flow/run-flow.d.ts.map +1 -1
  224. package/dist/factory-assets/connectors/flow/run-flow.js +16 -13
  225. package/dist/factory-assets/connectors/flow/subprompt-runner.d.ts +31 -28
  226. package/dist/factory-assets/connectors/flow/subprompt-runner.d.ts.map +1 -1
  227. package/dist/factory-assets/connectors/flow.js +15 -12
  228. package/dist/factory-assets/connectors/git.js +15 -12
  229. package/dist/factory-assets/connectors/gmail.js +15 -12
  230. package/dist/factory-assets/connectors/googledrive.js +15 -12
  231. package/dist/factory-assets/connectors/local.js +15 -12
  232. package/dist/factory-assets/connectors/mattermost.js +15 -12
  233. package/dist/factory-assets/connectors/memory.js +15 -12
  234. package/dist/factory-assets/connectors/minio.js +15 -12
  235. package/dist/factory-assets/connectors/postgres.js +15 -12
  236. package/dist/factory-assets/connectors/s3.js +15 -12
  237. package/dist/factory-assets/connectors/sharepoint.js +15 -12
  238. package/dist/factory-assets/connectors/sqlite.js +15 -12
  239. package/dist/factory-assets/connectors/static-server.js +15 -12
  240. package/dist/factory-assets/connectors/tunnel.js +15 -12
  241. package/dist/factory-assets/connectors/webdav.js +15 -12
  242. package/dist/factory-assets/connectors/xstate-store.js +15 -12
  243. package/dist/factory-assets/connectors/xstate.js +15 -12
  244. package/dist/{flows-MI2VM5JZ.js → flows-KIQH2VGA.js} +9 -7
  245. package/dist/{flows-MI2VM5JZ.js.map → flows-KIQH2VGA.js.map} +1 -1
  246. package/dist/{helpers-DXZOHX25.js → helpers-72W3NZ2L.js} +14 -12
  247. package/dist/{helpers-DXZOHX25.js.map → helpers-72W3NZ2L.js.map} +1 -1
  248. package/dist/library/index.js +8 -6
  249. package/dist/library/install.js +5 -3
  250. package/dist/{library-publish-CUPDG5NI.js → library-publish-YPHKEA6L.js} +18 -16
  251. package/dist/library-publish-YPHKEA6L.js.map +1 -0
  252. package/dist/{open-library-32XAI2LH.js → open-library-7OIUAGAH.js} +16 -14
  253. package/dist/{open-library-32XAI2LH.js.map → open-library-7OIUAGAH.js.map} +1 -1
  254. package/dist/paths-XLSP5K6C.js +18 -0
  255. package/dist/{paths-CZEH643M.js.map → paths-XLSP5K6C.js.map} +1 -1
  256. package/dist/plugin-registry/src/targets.d.ts +16 -2
  257. package/dist/plugin-registry/src/targets.d.ts.map +1 -1
  258. package/dist/{plugin-store-QJNBPIQK.js → plugin-store-V5BMOYGS.js} +7 -5
  259. package/dist/plugin-store-V5BMOYGS.js.map +1 -0
  260. package/dist/{project-RRHUCVXW.js → project-KNAZV4B3.js} +15 -13
  261. package/dist/{project-RRHUCVXW.js.map → project-KNAZV4B3.js.map} +1 -1
  262. package/dist/resolver/index.js +5 -3
  263. package/dist/runner/index.js +25 -22
  264. package/dist/runner/src/agent.d.ts +0 -2
  265. package/dist/runner/src/agent.d.ts.map +1 -1
  266. package/dist/runner/src/codex-init.d.ts.map +1 -1
  267. package/dist/runner/src/codex-resource-tools.d.ts.map +1 -1
  268. package/dist/runner/src/managed-codex-bootstrap.d.ts.map +1 -1
  269. package/dist/runner/src/resources.d.ts +1 -2
  270. package/dist/runner/src/resources.d.ts.map +1 -1
  271. package/dist/runner/src/serve.d.ts.map +1 -1
  272. package/dist/runner/src/session-builder.d.ts +31 -35
  273. package/dist/runner/src/session-builder.d.ts.map +1 -1
  274. package/dist/runner/src/session.d.ts +0 -2
  275. package/dist/runner/src/session.d.ts.map +1 -1
  276. package/dist/sdk/asset-manager.js +11 -9
  277. package/dist/sdk/bridge.js +12 -9
  278. package/dist/sdk/core.js +5 -3
  279. package/dist/sdk/flow.js +6 -4
  280. package/dist/sdk/index.js +25 -22
  281. package/dist/sdk/index.js.map +1 -1
  282. package/dist/sdk/resolver.js +5 -3
  283. package/dist/sdk/runner.js +25 -22
  284. package/dist/sdk/session.js +2 -2
  285. package/dist/sdk/types.js +1 -1
  286. package/dist/session/index.js +2 -2
  287. package/dist/setup-TG4KECRQ.js +435 -0
  288. package/dist/setup-TG4KECRQ.js.map +1 -0
  289. package/dist/{skills-IE3IWWB7.js → skills-KHBYF6AU.js} +7 -5
  290. package/dist/{skills-IE3IWWB7.js.map → skills-KHBYF6AU.js.map} +1 -1
  291. package/dist/{source-RHQLCTWA.js → source-7AFRUD3U.js} +17 -15
  292. package/dist/{source-RHQLCTWA.js.map → source-7AFRUD3U.js.map} +1 -1
  293. package/dist/{source-manifest-publish-DXMCSKU7.js → source-manifest-publish-JWOT7O3A.js} +19 -17
  294. package/dist/source-manifest-publish-JWOT7O3A.js.map +1 -0
  295. package/dist/tui/index.js +25 -23
  296. package/dist/tui/index.js.map +1 -1
  297. package/dist/tui/src/repl.d.ts +0 -2
  298. package/dist/tui/src/repl.d.ts.map +1 -1
  299. package/dist/types/index.js +1 -1
  300. package/dist/types/manifests.js +1 -1
  301. package/dist/types/src/index.d.ts +1 -1
  302. package/dist/types/src/index.d.ts.map +1 -1
  303. package/dist/types/src/lifecycle.d.ts +35 -10
  304. package/dist/types/src/lifecycle.d.ts.map +1 -1
  305. package/dist/types/src/manifests/agent.d.ts +116 -22
  306. package/dist/types/src/manifests/agent.d.ts.map +1 -1
  307. package/dist/types/src/manifests/index.d.ts +2 -2
  308. package/dist/types/src/manifests/index.d.ts.map +1 -1
  309. package/dist/types/src/manifests/preset.d.ts +5 -5
  310. package/dist/types/src/runtime.d.ts +51 -5
  311. package/dist/types/src/runtime.d.ts.map +1 -1
  312. package/dist/types/src/version.d.ts +18 -2
  313. package/dist/types/src/version.d.ts.map +1 -1
  314. package/dist/validator-P5ESKTW5.js +5 -0
  315. package/dist/{validator-RN64BKFW.js.map → validator-P5ESKTW5.js.map} +1 -1
  316. package/dist/workspace-plugin/adapters/mcp.js +11 -9
  317. package/dist/workspace-plugin/adapters/omp.js +11 -11
  318. package/dist/workspace-plugin/adapters/omp.js.map +1 -1
  319. package/dist/workspace-plugin/index.js +1 -1
  320. package/dist/workspace-plugin/src/plugin.d.ts +1 -4
  321. package/dist/workspace-plugin/src/plugin.d.ts.map +1 -1
  322. package/dist/workspace-plugin/src/tools/validator.d.ts +4 -4
  323. package/dist/workspace-plugin/src/tools/validator.d.ts.map +1 -1
  324. package/package.json +13 -1
  325. package/dist/asset-feeds-QF7LGRUX.js.map +0 -1
  326. package/dist/bridge/src/provider-endpoints.d.ts +0 -55
  327. package/dist/bridge/src/provider-endpoints.d.ts.map +0 -1
  328. package/dist/chunk-2BK4N3FS.js.map +0 -1
  329. package/dist/chunk-3NCGSSCU.js.map +0 -1
  330. package/dist/chunk-3U3ZKYR7.js.map +0 -1
  331. package/dist/chunk-AN6NAFRT.js.map +0 -1
  332. package/dist/chunk-AQW4BWNR.js +0 -324
  333. package/dist/chunk-AQW4BWNR.js.map +0 -1
  334. package/dist/chunk-E7HKNQTH.js.map +0 -1
  335. package/dist/chunk-EB72L5ZL.js.map +0 -1
  336. package/dist/chunk-FACPWN6P.js.map +0 -1
  337. package/dist/chunk-FFE7YLYO.js.map +0 -1
  338. package/dist/chunk-FYIHH56K.js +0 -110
  339. package/dist/chunk-FYIHH56K.js.map +0 -1
  340. package/dist/chunk-GURXUF2J.js.map +0 -1
  341. package/dist/chunk-HSRHO7SK.js.map +0 -1
  342. package/dist/chunk-MBARHWMZ.js.map +0 -1
  343. package/dist/chunk-PHBYB4XT.js.map +0 -1
  344. package/dist/chunk-QSPCI4W2.js.map +0 -1
  345. package/dist/chunk-T3YLZQS4.js.map +0 -1
  346. package/dist/chunk-XMULHVKX.js.map +0 -1
  347. package/dist/ensure-sources-GEJGBQIP.js.map +0 -1
  348. package/dist/library-publish-CUPDG5NI.js.map +0 -1
  349. package/dist/paths-CZEH643M.js +0 -16
  350. package/dist/plugin-store-QJNBPIQK.js.map +0 -1
  351. package/dist/runner/src/cloud-bundle.d.ts +0 -36
  352. package/dist/runner/src/cloud-bundle.d.ts.map +0 -1
  353. package/dist/setup-CIRH5BYB.js +0 -517
  354. package/dist/setup-CIRH5BYB.js.map +0 -1
  355. package/dist/source-manifest-publish-DXMCSKU7.js.map +0 -1
  356. package/dist/validator-RN64BKFW.js +0 -5
@@ -1,33 +1,20 @@
1
1
  import type { DriverTarget } from "@skaile/workspaces/plugin-registry";
2
2
  import type { ModelEntry } from "../models.js";
3
3
  import { type AgentConfig, AgentDriver, type DriverInfo } from "../types.js";
4
- /**
5
- * Credential and routing env vars forwarded to the omp child process.
6
- *
7
- * omp is model-agnostic — it selects a provider from whichever of these it
8
- * finds. Forwarding only `ANTHROPIC_API_KEY`, as this allowlist used to,
9
- * silently reduced every non-Anthropic workspace to a fallback: the child had
10
- * no credential for the provider it was configured for and no way to say so.
11
- * It also omitted `ANTHROPIC_BASE_URL`, so an Anthropic-compatible gateway was
12
- * bypassed and traffic went to Anthropic's own API instead.
13
- *
14
- * The list mirrors the "Environment Variables" section of `omp --help`, which
15
- * is the authoritative statement of what the child actually reads. Widening it
16
- * is deliberate: these names *are* the provider credentials, so a host that
17
- * sets one in the runner's environment is asking for the agent to use it. Vars
18
- * outside this list — anything a platform provisions under its own naming —
19
- * still do not reach the child.
20
- *
21
- * @docLink packages/bridge/concepts#omp-env-whitelist
22
- */
23
- export declare const OMP_PROVIDER_ENV_KEYS: readonly ["ANTHROPIC_API_KEY", "ANTHROPIC_AUTH_TOKEN", "ANTHROPIC_OAUTH_TOKEN", "ANTHROPIC_BASE_URL", "ANTHROPIC_CUSTOM_HEADERS", "ANTHROPIC_FOUNDRY_API_KEY", "FOUNDRY_BASE_URL", "CLAUDE_CODE_USE_FOUNDRY", "CLAUDE_CODE_CLIENT_CERT", "CLAUDE_CODE_CLIENT_KEY", "NODE_EXTRA_CA_CERTS", "OPENAI_API_KEY", "OPENAI_BASE_URL", "GEMINI_API_KEY", "COPILOT_GITHUB_TOKEN", "AZURE_OPENAI_API_KEY", "GROQ_API_KEY", "CEREBRAS_API_KEY", "XAI_API_KEY", "MISTRAL_API_KEY", "ZAI_API_KEY", "MINIMAX_API_KEY", "DEEPSEEK_API_KEY", "OPENROUTER_API_KEY", "KILO_API_KEY", "AI_GATEWAY_API_KEY", "OPENCODE_API_KEY", "CURSOR_ACCESS_TOKEN", "CLINE_API_KEY", "WAFER_SERVERLESS_API_KEY", "YOLO_AUTO_API_KEY", "ABLITERATION_API_KEY", "UMANS_AI_CODING_PLAN_API_KEY", "UMANS_WEBSEARCH_PROVIDER", "AWS_PROFILE", "AWS_ACCESS_KEY_ID", "AWS_SECRET_ACCESS_KEY", "AWS_SESSION_TOKEN", "AWS_REGION", "AWS_DEFAULT_REGION", "GOOGLE_CLOUD_PROJECT", "GOOGLE_CLOUD_LOCATION", "GOOGLE_APPLICATION_CREDENTIALS", "EXA_API_KEY", "BRAVE_API_KEY", "PERPLEXITY_API_KEY", "PERPLEXITY_COOKIES", "TAVILY_API_KEY", "TINYFISH_API_KEY", "FIRECRAWL_API_KEY", "ANTHROPIC_SEARCH_API_KEY", "ANTHROPIC_SEARCH_BASE_URL", "OMP_PROFILE"];
24
4
  /**
25
5
  * Build the explicit env allowlist forwarded to the omp child process.
26
6
  *
27
7
  * The runner's full environment is never inherited — only
28
- * {@link OMP_BASE_ENV_KEYS} (process essentials),
29
- * {@link OMP_PROVIDER_ENV_KEYS} (provider credentials and routing), and the
30
- * `PI_*` prefix (omp's own app config the host operator may have set).
8
+ * {@link OMP_BASE_ENV_KEYS} (process essentials) and the `PI_*` prefix (omp's
9
+ * own app config the host operator may have set).
10
+ *
11
+ * **Credentials are not on this list.** Every endpoint omp may address is a
12
+ * registry entry, serialized into the session's own `models.yml` with its
13
+ * credential named as `SKAILE_AIP_<ID>_KEY` and the value assigned after this
14
+ * allowlist is built (`./omp-models-yml.ts`). An ambient `ANTHROPIC_API_KEY`
15
+ * in the runner's shell is not a session's statement of intent and does not
16
+ * reach the child; `skaile providers add anthropic --preset anthropic
17
+ * --credential env:ANTHROPIC_API_KEY` is.
31
18
  *
32
19
  * Test seams (`OMP_BRIDGE_*`, `FAKE_OMP_*`) are passed through so the
33
20
  * subprocess harness in `tests/omp-driver.test.ts` can drive a fake-omp
@@ -174,6 +161,22 @@ export declare class OmpDriver extends AgentDriver {
174
161
  resetSession(): Promise<void>;
175
162
  private classifyProcessError;
176
163
  private classifyErrorMessage;
164
+ /**
165
+ * The models this session can select.
166
+ *
167
+ * Answered entirely from the registry: the ids are exactly the
168
+ * `<providerId>/<modelId>` selectors rendered into `models.yml`, so a
169
+ * picker offers every enabled endpoint instead of whichever one the
170
+ * ambient binary happens to be authenticated for. A registry whose
171
+ * entries name no models yields no entries here — that gap is closed by
172
+ * giving the entry a `discovery:` block (`PROVIDER-CONFIG-PLAN.md` §1.1),
173
+ * not by asking the omp binary what it happens to know. omp's own catalog
174
+ * (`omp models --json`) answers a different question — every model omp
175
+ * knows across every provider, regardless of what this session's registry
176
+ * enables or has credentials for — and shelling out to an ambient binary
177
+ * from this code path is itself a liability: it can block indefinitely
178
+ * reading a prompt from stdin when run inside another interactive session.
179
+ */
177
180
  listModels(): Promise<ModelEntry[]>;
178
181
  private cleanup;
179
182
  }
@@ -1 +1 @@
1
- {"version":3,"file":"omp.d.ts","sourceRoot":"","sources":["../../../../bridge/src/drivers/omp.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAKvE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,OAAO,EAAE,KAAK,WAAW,EAAE,WAAW,EAAmB,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AAO9F;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,qBAAqB,mpCAiExB,CAAC;AAEX;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAalF;AAED;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,qJAgBpB,CAAC;AAEX,wEAAwE;AACxE,eAAO,MAAM,iBAAiB,EAAE,SAAS,MAAM,EAE9C,CAAC;AAyDF;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,GAAG,MAAM,EAAE,CAgBtE;AAkCD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,qBAAa,SAAU,SAAQ,WAAW;IACxC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAK7B;IAEF,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAkC;IACtD,OAAO,CAAC,IAAI,CAA6B;IACzC,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,KAAK,CAAK;IAClB,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,YAAY,CAA8B;IAClD,OAAO,CAAC,YAAY,CAAgB;IACpC,OAAO,CAAC,QAAQ,CAAM;IACtB,+DAA+D;IAC/D,OAAO,CAAC,aAAa,CAAC,CAAS;IAC/B,+EAA+E;IAC/E,OAAO,CAAC,WAAW,CAA6B;IAChD,OAAO,CAAC,UAAU,CAAuC;IAEzD,IAAa,gBAAgB,IAAI,MAAM,GAAG,SAAS,CAElD;IAEQ,QAAQ,IAAI,MAAM,GAAG,SAAS;IAIvC;;;;;;;;OAQG;gBACS,MAAM,EAAE,WAAW;IAKlB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAOrB,MAAM;IA0LpB,OAAO,CAAC,kBAAkB;IAY1B,OAAO,CAAC,WAAW;IAyEnB;;;OAGG;IACH,OAAO,CAAC,WAAW;IAOnB;;;OAGG;IACH,OAAO,CAAC,UAAU;IAOlB;;;;OAIG;YACW,gBAAgB;IAqC9B,OAAO,CAAC,MAAM;IAId,OAAO,CAAC,IAAI;IAcZ;;;;;;;;;;;;OAYG;IACU,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAuBnD;;;;;;OAMG;IACU,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAMnC,0EAA0E;IAC1E,IAAW,SAAS,IAAI,OAAO,CAE9B;IAED;;;;;OAKG;IACH,IAAI,IAAI,IAAI;IAON,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAKnC,OAAO,CAAC,oBAAoB;IAyB5B,OAAO,CAAC,oBAAoB;IAoBb,UAAU,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IA8BlD,OAAO,CAAC,OAAO;CAQhB;AAED;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,YAAY,CAAC,WAAW,CASrD,CAAC"}
1
+ {"version":3,"file":"omp.d.ts","sourceRoot":"","sources":["../../../../bridge/src/drivers/omp.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAKvE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG/C,OAAO,EAAE,KAAK,WAAW,EAAE,WAAW,EAAmB,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AAQ9F;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAalF;AAED;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,qJAgBpB,CAAC;AAEX,wEAAwE;AACxE,eAAO,MAAM,iBAAiB,EAAE,SAAS,MAAM,EAE9C,CAAC;AAyDF;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,GAAG,MAAM,EAAE,CAgBtE;AAkCD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,qBAAa,SAAU,SAAQ,WAAW;IACxC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAK7B;IAEF,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAkC;IACtD,OAAO,CAAC,IAAI,CAA6B;IACzC,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,KAAK,CAAK;IAClB,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,YAAY,CAA8B;IAClD,OAAO,CAAC,YAAY,CAAgB;IACpC,OAAO,CAAC,QAAQ,CAAM;IACtB,+DAA+D;IAC/D,OAAO,CAAC,aAAa,CAAC,CAAS;IAC/B,+EAA+E;IAC/E,OAAO,CAAC,WAAW,CAA6B;IAChD,OAAO,CAAC,UAAU,CAAuC;IAEzD,IAAa,gBAAgB,IAAI,MAAM,GAAG,SAAS,CAElD;IAEQ,QAAQ,IAAI,MAAM,GAAG,SAAS;IAIvC;;;;;;;;OAQG;gBACS,MAAM,EAAE,WAAW;IAKlB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAOrB,MAAM;IAuNpB,OAAO,CAAC,kBAAkB;IAY1B,OAAO,CAAC,WAAW;IAyEnB;;;OAGG;IACH,OAAO,CAAC,WAAW;IAOnB;;;OAGG;IACH,OAAO,CAAC,UAAU;IAOlB;;;;OAIG;YACW,gBAAgB;IAqC9B,OAAO,CAAC,MAAM;IAId,OAAO,CAAC,IAAI;IAcZ;;;;;;;;;;;;OAYG;IACU,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAuBnD;;;;;;OAMG;IACU,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAMnC,0EAA0E;IAC1E,IAAW,SAAS,IAAI,OAAO,CAE9B;IAED;;;;;OAKG;IACH,IAAI,IAAI,IAAI;IAON,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAKnC,OAAO,CAAC,oBAAoB;IAyB5B,OAAO,CAAC,oBAAoB;IAoB5B;;;;;;;;;;;;;;;OAeG;IACY,UAAU,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAIlD,OAAO,CAAC,OAAO;CAQhB;AAED;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,YAAY,CAAC,WAAW,CAarD,CAAC"}
@@ -8,9 +8,13 @@ import { SubprocessCliDriver } from "./_subprocess-cli.js";
8
8
  * coding agent.
9
9
  *
10
10
  * Spawns `opencode run "<prompt>" --format json` per turn and maps OpenCode's
11
- * JSON event stream to the unified {@link AgentEvent} stream. Model-agnostic:
12
- * the model is passed as `provider/model` via `-m`, and provider API keys are
13
- * forwarded through the environment.
11
+ * JSON event stream to the unified {@link AgentEvent} stream. A
12
+ * `credentials-n` backend (§2.3): every enabled AI provider entry's
13
+ * credential reaches the child environment, and the active model is selected
14
+ * as `-m <provider>/<model>`. An endpoint models.dev does not know is
15
+ * additionally rendered into a session-private `opencode.json`
16
+ * (`provider-materialize/opencode-config.ts`) that `XDG_CONFIG_HOME` points
17
+ * the child at.
14
18
  *
15
19
  * @remarks
16
20
  * - The prompt is a **positional argument** — OpenCode's `-p` flag is a
@@ -29,10 +33,31 @@ export declare class OpenCodeDriver extends SubprocessCliDriver {
29
33
  protected readonly defaultBin = "opencode";
30
34
  protected readonly productName = "OpenCode";
31
35
  protected readonly envPrefix = "OPENCODE";
36
+ private providers?;
37
+ /** This session's AI providers, resolved once from the config. */
38
+ private providerSession;
39
+ reconfigure(patch: Partial<Pick<AgentConfig, "model" | "thinking" | "effort">>): void;
40
+ getModel(): string | undefined;
32
41
  protected buildArgs(message: string, resumeId: string | undefined): string[];
42
+ /**
43
+ * Base env plus one credential variable per enabled registry entry — the
44
+ * canonical `SKAILE_AIP_<ID>_KEY` and, for a stock catalog endpoint, the
45
+ * vendor carrier OpenCode reads on its own (`ANTHROPIC_API_KEY`, …). There
46
+ * is no per-driver key allowlist: what reaches the child is exactly what
47
+ * the registry can authenticate.
48
+ *
49
+ * This is also where the session's custom endpoints are rendered. It runs
50
+ * once per spawn, so a `reconfigure()` between turns re-renders rather than
51
+ * leaving the child pointed at the previous selection.
52
+ */
33
53
  protected buildEnv(): Record<string, string>;
34
54
  protected installHint(): string;
35
55
  protected handleJson(json: any): void;
56
+ /**
57
+ * OpenCode has no model-list endpoint of its own (it reads models.dev), so
58
+ * the session's registry is the list: every enabled entry's mapped ids,
59
+ * namespaced exactly as `-m` takes them.
60
+ */
36
61
  listModels(): Promise<ModelEntry[]>;
37
62
  }
38
63
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"opencode.d.ts","sourceRoot":"","sources":["../../../../bridge/src/drivers/opencode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAGvD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,EAKL,mBAAmB,EACpB,MAAM,sBAAsB,CAAC;AAE9B;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,cAAe,SAAQ,mBAAmB;IACrD,QAAQ,CAAC,UAAU,EAAE,UAAU,CAK7B;IAEF,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAA+B;IAC7D,SAAS,CAAC,QAAQ,CAAC,UAAU,cAAc;IAC3C,SAAS,CAAC,QAAQ,CAAC,WAAW,cAAc;IAC5C,SAAS,CAAC,QAAQ,CAAC,SAAS,cAAc;IAE1C,SAAS,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,EAAE;IAW5E,SAAS,CAAC,QAAQ,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAW5C,SAAS,CAAC,WAAW,IAAI,MAAM;IAI/B,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,GAAG,IAAI;IAmDtB,UAAU,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;CAGnD;AAED;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,YAAY,CAAC,WAAW,CAM1D,CAAC"}
1
+ {"version":3,"file":"opencode.d.ts","sourceRoot":"","sources":["../../../../bridge/src/drivers/opencode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAGvD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAY/C,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,EAA2C,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAEpG;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,qBAAa,cAAe,SAAQ,mBAAmB;IACrD,QAAQ,CAAC,UAAU,EAAE,UAAU,CAK7B;IAEF,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAA+B;IAC7D,SAAS,CAAC,QAAQ,CAAC,UAAU,cAAc;IAC3C,SAAS,CAAC,QAAQ,CAAC,WAAW,cAAc;IAC5C,SAAS,CAAC,QAAQ,CAAC,SAAS,cAAc;IAE1C,OAAO,CAAC,SAAS,CAAC,CAAmB;IAErC,kEAAkE;IAClE,OAAO,CAAC,eAAe;IAKd,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,GAAG,UAAU,GAAG,QAAQ,CAAC,CAAC,GAAG,IAAI;IAKrF,QAAQ,IAAI,MAAM,GAAG,SAAS;IAIvC,SAAS,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,EAAE;IAS5E;;;;;;;;;;OAUG;IACH,SAAS,CAAC,QAAQ,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAiB5C,SAAS,CAAC,WAAW,IAAI,MAAM;IAI/B,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,GAAG,IAAI;IAmDrC;;;;OAIG;IACY,UAAU,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;CAGnD;AAED;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,YAAY,CAAC,WAAW,CAY1D,CAAC"}
@@ -6,10 +6,11 @@ import { GeminiFamilyDriver } from "./gemini.js";
6
6
  /**
7
7
  * Agent driver for **Qwen Code** (`qwen`) — a fork of Gemini CLI.
8
8
  *
9
- * Reuses {@link GeminiFamilyDriver}'s stream-json event mapping. Unlike Gemini,
10
- * Qwen is **model-agnostic / OpenAI-compatible**: it reads `OPENAI_API_KEY`,
11
- * `OPENAI_BASE_URL`, and `OPENAI_MODEL`, so it works against any
12
- * OpenAI-completions endpoint (Alibaba DashScope by default).
9
+ * Reuses {@link GeminiFamilyDriver}'s stream-json event mapping. Unlike
10
+ * Gemini, Qwen is **OpenAI-compatible**: it reads `OPENAI_API_KEY`,
11
+ * `OPENAI_BASE_URL` and `OPENAI_MODEL`, so the AI provider entry the session's
12
+ * model selector names maps onto it one-to-one — any `openai-completions`
13
+ * endpoint (Alibaba DashScope by default).
13
14
  *
14
15
  * @remarks
15
16
  * - Spawns `qwen -p "<prompt>" -o stream-json --include-partial-messages`.
@@ -29,6 +30,11 @@ export declare class QwenDriver extends GeminiFamilyDriver {
29
30
  protected buildArgs(message: string, resumeId: string | undefined): string[];
30
31
  protected buildEnv(): Record<string, string>;
31
32
  protected installHint(): string;
33
+ /**
34
+ * Discovery runs against the bound entry — its credential and its endpoint,
35
+ * so a custom OpenAI-compatible host lists its own models rather than
36
+ * OpenAI's.
37
+ */
32
38
  listModels(): Promise<ModelEntry[]>;
33
39
  }
34
40
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"qwen.d.ts","sourceRoot":"","sources":["../../../../bridge/src/drivers/qwen.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAGvD,OAAO,EAAuB,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAEpE,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEjD;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,UAAW,SAAQ,kBAAkB;IAChD,QAAQ,CAAC,UAAU,EAAE,UAAU,CAK7B;IAEF,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAA2B;IACzD,SAAS,CAAC,QAAQ,CAAC,UAAU,UAAU;IACvC,SAAS,CAAC,QAAQ,CAAC,WAAW,eAAe;IAC7C,SAAS,CAAC,QAAQ,CAAC,SAAS,UAAU;IAEtC,SAAS,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,EAAE;IAO5E,SAAS,CAAC,QAAQ,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAa5C,SAAS,CAAC,WAAW,IAAI,MAAM;IAIhB,UAAU,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;CAMnD;AAED;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,YAAY,CAAC,WAAW,CAQtD,CAAC"}
1
+ {"version":3,"file":"qwen.d.ts","sourceRoot":"","sources":["../../../../bridge/src/drivers/qwen.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAGvD,OAAO,EAAuB,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAKpE,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEjD;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,UAAW,SAAQ,kBAAkB;IAChD,QAAQ,CAAC,UAAU,EAAE,UAAU,CAK7B;IAEF,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAA2B;IACzD,SAAS,CAAC,QAAQ,CAAC,UAAU,UAAU;IACvC,SAAS,CAAC,QAAQ,CAAC,WAAW,eAAe;IAC7C,SAAS,CAAC,QAAQ,CAAC,SAAS,UAAU;IAEtC,SAAS,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,EAAE;IAQ5E,SAAS,CAAC,QAAQ,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAuB5C,SAAS,CAAC,WAAW,IAAI,MAAM;IAI/B;;;;OAIG;IACY,UAAU,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;CAcnD;AAED;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,YAAY,CAAC,WAAW,CAYtD,CAAC"}
@@ -4,7 +4,9 @@ export { AccountUnavailableError, AuthError, type ClaudeSdkResultErrorInput, cla
4
4
  export * from "./logger.js";
5
5
  export * from "./models.js";
6
6
  export * from "./normalizer.js";
7
- export * from "./provider-endpoints.js";
7
+ export * from "./provider-catalog.js";
8
+ export * from "./provider-materialize/credential-env.js";
9
+ export * from "./provider-registry-derive.js";
8
10
  export * from "./registry.js";
9
11
  export { probeResumeTranscript, type ResumeProbeOutcome, resolveClaudeConfigDir, } from "./drivers/resume-probe.js";
10
12
  export * from "./runtime.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../bridge/src/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,cAAc,YAAY,CAAC;AAC3B,OAAO,EACL,uBAAuB,EACvB,SAAS,EACT,KAAK,yBAAyB,EAC9B,sBAAsB,EACtB,kCAAkC,GACnC,MAAM,uBAAuB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AACxC,cAAc,eAAe,CAAC;AAC9B,OAAO,EACL,qBAAqB,EACrB,KAAK,kBAAkB,EACvB,sBAAsB,GACvB,MAAM,2BAA2B,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAEhC,OAAO,EAAE,yBAAyB,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../bridge/src/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,cAAc,YAAY,CAAC;AAC3B,OAAO,EACL,uBAAuB,EACvB,SAAS,EACT,KAAK,yBAAyB,EAC9B,sBAAsB,EACtB,kCAAkC,GACnC,MAAM,uBAAuB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AAItC,cAAc,0CAA0C,CAAC;AACzD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,eAAe,CAAC;AAC9B,OAAO,EACL,qBAAqB,EACrB,KAAK,kBAAkB,EACvB,sBAAsB,GACvB,MAAM,2BAA2B,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAEhC,OAAO,EAAE,yBAAyB,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAC"}
@@ -5,6 +5,8 @@
5
5
  * `getStaticModels(provider)` as an offline fallback.
6
6
  * OMP model listing is handled by `OmpDriver.listModels()` in the bridge driver.
7
7
  */
8
+ import { type AIProviderCapabilities, type AIProviderLlmEntry, type AIProviderRegistry, type MergedAIProviderRegistry } from "@skaile/workspaces/core/provider-registry";
9
+ import { type ModelIdTarget } from "@skaile/workspaces/types/manifests";
8
10
  /**
9
11
  * A single LLM model entry returned by the model catalog.
10
12
  *
@@ -64,13 +66,14 @@ export interface FetchModelsOptions {
64
66
  * `{ ok: false, models: [], error }` on any HTTP or network failure — the
65
67
  * caller should fall back to {@link getStaticModels} in that case.
66
68
  *
67
- * When the provider is reachable through a gateway, the request targets the
68
- * configured base URL rather than the provider's public API — see
69
- * {@link resolveProviderModelsUrl}. Without one, behaviour is unchanged.
69
+ * The endpoint, the credential header and the response path all come from the
70
+ * catalog preset named by `provider` ({@link resolvePresetBaseUrl},
71
+ * {@link resolveProbeUrl}, {@link buildCredentialHeaders}), so discovery hits
72
+ * the same host dispatch does — including a gateway named by `baseUrl` or by
73
+ * the vendor's own `*_BASE_URL` variable.
70
74
  *
71
- * @param provider - Provider name matching a key in the shared `PROVIDER_ENDPOINTS` map
72
- * (e.g. `"anthropic"`, `"openai"`, `"google"`).
73
- * @param apiKey - API key forwarded in the request header or query parameter.
75
+ * @param provider - Catalog preset id (e.g. `"anthropic"`, `"openai"`, `"google"`).
76
+ * @param apiKey - API key presented in the preset's credential header.
74
77
  * @param options - Optional base-URL / environment overrides.
75
78
  * @returns Resolved model list with source attribution.
76
79
  * @docLink packages/bridge/api-reference#models
@@ -112,6 +115,85 @@ export declare const STATIC_MODELS: Record<string, ModelEntry[]>;
112
115
  * @docLink packages/bridge/api-reference#models
113
116
  */
114
117
  export declare function getStaticModels(provider: string): ModelEntry[];
118
+ /** A registry in either of the two shapes consumers hold. */
119
+ export type ProviderRegistryView = AIProviderRegistry | MergedAIProviderRegistry;
120
+ /**
121
+ * Where a model selector is resolved. `registry` absent means no registry is
122
+ * configured at all — every resolver here then returns `undefined` and the
123
+ * caller keeps its pre-registry behaviour.
124
+ */
125
+ export interface ModelRegistryContext {
126
+ /** The merged registry (`mergeRegistries`), or a single layer. */
127
+ registry?: ProviderRegistryView;
128
+ /** `skaile.yaml` `roles`: role name → model selector (`smol` → `groq/llama-3.1-8b`). */
129
+ roles?: Record<string, string>;
130
+ /**
131
+ * Entry the session already runs on. Scopes `model_map` lookups to it;
132
+ * absent lets the selector pick in registry order.
133
+ */
134
+ providerId?: string;
135
+ }
136
+ /**
137
+ * The wire facts that decide which model-id vocabulary an entry enforces
138
+ * (`modelIdSchemaForTarget`).
139
+ *
140
+ * `surface` and `base_url` fall back to the entry's preset: an entry written as
141
+ * `{kind: llm, preset: anthropic}` carries neither of its own until the catalog
142
+ * merge layer expands it, and validation must not depend on having been handed
143
+ * a merged registry.
144
+ */
145
+ export declare function modelIdTargetForEntry(entry: AIProviderLlmEntry): ModelIdTarget;
146
+ /** A manifest model preference resolved against the registry. */
147
+ export interface ResolvedManifestModel {
148
+ /** Entry the preference routes to. */
149
+ providerId: string;
150
+ /** Logical id, after `@role` expansion and before `model_map`. */
151
+ modelId?: string;
152
+ /** Provider-side id — what goes on the wire: `model_map[modelId] ?? modelId`. */
153
+ providerModelId?: string;
154
+ /** Role name, when the preference was `@role`. */
155
+ role?: string;
156
+ /** The wire target `providerModelId` was checked against. */
157
+ target: ModelIdTarget;
158
+ /** Non-fatal notes: a dangling role, a disabled provider, a stale preset. */
159
+ warnings: string[];
160
+ /**
161
+ * Set when `providerModelId` is not a legal id for `target` — in practice,
162
+ * a non-Anthropic id on the first-party Anthropic Messages API. Never
163
+ * thrown: the caller decides whether a manifest that names a model its
164
+ * endpoint cannot serve is a warning or a failure.
165
+ */
166
+ error?: string;
167
+ }
168
+ /**
169
+ * Resolve an agent manifest's `model.preferred` (or any single entry of
170
+ * `model.fallback`) against the provider registry, then check the id it
171
+ * produces against the selected entry's own vocabulary.
172
+ *
173
+ * The three selector forms — `@role`, `<providerId>/<modelId>`, bare id — are
174
+ * resolved by `parseModelRef` (`@skaile/workspaces/core/provider-registry`),
175
+ * which owns that grammar; this adds the per-surface id check on top.
176
+ *
177
+ * Returns `undefined` when there is nothing to resolve: no preference, or no
178
+ * registry that can serve one.
179
+ */
180
+ export declare function resolveManifestModel(preference: string | undefined, context?: ModelRegistryContext): ResolvedManifestModel | undefined;
181
+ /**
182
+ * Resolve a model's capability facts — context window, thinking ceiling, tool
183
+ * and image support — from the registry entry that serves it.
184
+ *
185
+ * `capabilities` is keyed by the *logical* id (the `model_map` key), so a
186
+ * selector is resolved first and the record is read under both the logical and
187
+ * the provider-side id. `fallback` is the caller's own per-model table (the
188
+ * compaction window defaults, the platform's thinking limits); the entry wins
189
+ * field by field, and a field the entry does not state falls through.
190
+ *
191
+ * Returns `undefined` when neither source knows anything about the model.
192
+ */
193
+ export declare function resolveModelCapabilities(selector: string | undefined, context?: ModelRegistryContext & {
194
+ /** Per-model-id capability table consulted for fields the entry omits. */
195
+ fallback?: Record<string, AIProviderCapabilities>;
196
+ }): AIProviderCapabilities | undefined;
115
197
  /** Per-tier concrete model ids for one provider. */
116
198
  export interface ModelTierOverrides {
117
199
  small?: string;
@@ -119,10 +201,18 @@ export interface ModelTierOverrides {
119
201
  deep?: string;
120
202
  }
121
203
  /**
122
- * Built-in tier→model mapping per provider. This is the point of the closed
123
- * `small | default | deep` vocabulary: an authored flow names an intent and the
124
- * runtime owns which concrete model serves it, so flows stay portable across
125
- * model-lineup changes.
204
+ * Tier→model mapping per provider, for deployments with **no provider
205
+ * registry**. This is the point of the closed `small | default | deep`
206
+ * vocabulary: an authored flow names an intent and the runtime owns which
207
+ * concrete model serves it, so flows stay portable across model-lineup changes.
208
+ *
209
+ * It is no longer the source of truth for what a tier means. Where a registry
210
+ * exists, a tier resolves through `roles` and the selected entry's `model_map`
211
+ * (see {@link resolveModelTier}) — which works for every provider, names the
212
+ * ids that deployment actually serves, and is editable without a release. This
213
+ * table survives only for the pre-registry path, where nothing else can answer
214
+ * the question; a vendor missing from it there is a `ModelTierResolutionError`,
215
+ * not a guess.
126
216
  *
127
217
  * These are **direct provider-API ids**. A gateway transport (Bedrock, Vertex,
128
218
  * Azure) addresses the same models by different ids — Bedrock prefixes
@@ -148,27 +238,36 @@ export declare class ModelTierResolutionError extends Error {
148
238
  readonly provider: string | undefined;
149
239
  constructor(tier: "small" | "deep", provider: string | undefined);
150
240
  }
241
+ /** Options {@link resolveModelTier} reads. */
242
+ export interface ResolveModelTierOptions extends ModelRegistryContext {
243
+ /** Legacy provider id, keying {@link PROVIDER_MODEL_TIERS}. */
244
+ provider?: string;
245
+ /** Legacy cloud transport; anything but `default` disables the built-in table. */
246
+ cloud?: string;
247
+ /** Per-tier ids configured for this deployment. Wins over everything. */
248
+ overrides?: ModelTierOverrides;
249
+ }
151
250
  /**
152
251
  * Resolve a Flow v2 `run.model` tier to a concrete model id.
153
252
  *
253
+ * Precedence, highest first: a configured `overrides` entry; the registry —
254
+ * `roles[tier]`, then the selected entry's `model_map[tier]`, which is how a
255
+ * tier is defined for *any* provider; and finally, **only when no registry is
256
+ * configured**, {@link PROVIDER_MODEL_TIERS} on the direct provider API.
257
+ *
154
258
  * `"default"` and an absent tier **inherit `sessionModel` first**. The session
155
259
  * model is the one id known to work for this deployment — it already carries
156
260
  * whatever provider, lineup and gateway translation the host configured — so
157
- * preferring a built-in over it would silently downgrade a configured model
261
+ * preferring any table over it would silently downgrade a configured model
158
262
  * and, on a gateway transport, substitute an id that provider cannot serve.
159
263
  *
160
- * `"small"` and `"deep"` never fall back to `sessionModel`: they resolve from
161
- * an override, then from {@link PROVIDER_MODEL_TIERS} on the direct provider
162
- * API, and otherwise throw {@link ModelTierResolutionError}. Inheriting there
264
+ * `"small"` and `"deep"` never fall back to `sessionModel`; when nothing above
265
+ * resolves them they throw {@link ModelTierResolutionError}. Inheriting there
163
266
  * would run an arbitrary model behind an author's explicit request for a cheap
164
267
  * or a strong one — a cost or quality surprise that shows up only in the bill
165
268
  * or the output. Failing names it at the node instead.
166
269
  *
167
270
  * Pure: no I/O, no environment reads.
168
271
  */
169
- export declare function resolveModelTier(tier: "small" | "default" | "deep" | undefined, sessionModel: string | undefined, options?: {
170
- provider?: string;
171
- cloud?: string;
172
- overrides?: ModelTierOverrides;
173
- }): string | undefined;
272
+ export declare function resolveModelTier(tier: "small" | "default" | "deep" | undefined, sessionModel: string | undefined, options?: ResolveModelTierOptions): string | undefined;
174
273
  //# sourceMappingURL=models.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../../bridge/src/models.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH;;;;;;;GAOG;AACH,MAAM,WAAW,UAAU;IACzB,yFAAyF;IACzF,EAAE,EAAE,MAAM,CAAC;IACX,iFAAiF;IACjF,IAAI,EAAE,MAAM,CAAC;CACd;AA6GD;;;;;;;;GAQG;AACH,MAAM,WAAW,iBAAiB;IAChC,iEAAiE;IACjE,EAAE,EAAE,OAAO,CAAC;IACZ,4CAA4C;IAC5C,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,6DAA6D;IAC7D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2EAA2E;IAC3E,MAAM,EAAE,KAAK,GAAG,QAAQ,CAAC;CAC1B;AAED;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;CAC1C;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,iBAAiB,CAAC,CAmD5B;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,SAAS,CAC7B,QAAQ,EAAE,MAAM,EAChB,MAAM,CAAC,EAAE,MAAM,EACf,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,iBAAiB,CAAC,CAkB5B;AAMD;;;;;;;;;GASG;AACH,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,CAgEtD,CAAC;AAEF;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,EAAE,CAE9D;AAMD,oDAAoD;AACpD,MAAM,WAAW,kBAAkB;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,kBAAkB,CAAC,CAmC7E,CAAC;AAEF,qEAAqE;AACrE,qBAAa,wBAAyB,SAAQ,KAAK;IAE/C,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS;gBAD5B,IAAI,EAAE,OAAO,GAAG,MAAM,EACtB,QAAQ,EAAE,MAAM,GAAG,SAAS;CAQxC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,EAC9C,YAAY,EAAE,MAAM,GAAG,SAAS,EAChC,OAAO,GAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,kBAAkB,CAAA;CAAO,GAClF,MAAM,GAAG,SAAS,CAWpB"}
1
+ {"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../../bridge/src/models.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,KAAK,sBAAsB,EAC3B,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EAEvB,KAAK,wBAAwB,EAI9B,MAAM,2CAA2C,CAAC;AACnD,OAAO,EAAE,KAAK,aAAa,EAA0B,MAAM,oCAAoC,CAAC;AAUhG;;;;;;;GAOG;AACH,MAAM,WAAW,UAAU;IACzB,yFAAyF;IACzF,EAAE,EAAE,MAAM,CAAC;IACX,iFAAiF;IACjF,IAAI,EAAE,MAAM,CAAC;CACd;AA8GD;;;;;;;;GAQG;AACH,MAAM,WAAW,iBAAiB;IAChC,iEAAiE;IACjE,EAAE,EAAE,OAAO,CAAC;IACZ,4CAA4C;IAC5C,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,6DAA6D;IAC7D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2EAA2E;IAC3E,MAAM,EAAE,KAAK,GAAG,QAAQ,CAAC;CAC1B;AAED;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;CAC1C;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,iBAAiB,CAAC,CA4D5B;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,SAAS,CAC7B,QAAQ,EAAE,MAAM,EAChB,MAAM,CAAC,EAAE,MAAM,EACf,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,iBAAiB,CAAC,CAkB5B;AAMD;;;;;;;;;GASG;AACH,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,CAgEtD,CAAC;AAEF;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,EAAE,CAE9D;AAMD,6DAA6D;AAC7D,MAAM,MAAM,oBAAoB,GAAG,kBAAkB,GAAG,wBAAwB,CAAC;AAEjF;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACnC,kEAAkE;IAClE,QAAQ,CAAC,EAAE,oBAAoB,CAAC;IAChC,wFAAwF;IACxF,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AASD;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,kBAAkB,GAAG,aAAa,CAS9E;AAED,iEAAiE;AACjE,MAAM,WAAW,qBAAqB;IACpC,sCAAsC;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,kEAAkE;IAClE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iFAAiF;IACjF,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kDAAkD;IAClD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6DAA6D;IAC7D,MAAM,EAAE,aAAa,CAAC;IACtB,6EAA6E;IAC7E,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,OAAO,GAAE,oBAAyB,GACjC,qBAAqB,GAAG,SAAS,CA0BnC;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,OAAO,GAAE,oBAAoB,GAAG;IAC9B,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;CAC9C,GACL,sBAAsB,GAAG,SAAS,CA8BpC;AAMD,oDAAoD;AACpD,MAAM,WAAW,kBAAkB;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,kBAAkB,CAAC,CAmC7E,CAAC;AAEF,qEAAqE;AACrE,qBAAa,wBAAyB,SAAQ,KAAK;IAE/C,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS;gBAD5B,IAAI,EAAE,OAAO,GAAG,MAAM,EACtB,QAAQ,EAAE,MAAM,GAAG,SAAS;CAQxC;AA0BD,8CAA8C;AAC9C,MAAM,WAAW,uBAAwB,SAAQ,oBAAoB;IACnE,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kFAAkF;IAClF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yEAAyE;IACzE,SAAS,CAAC,EAAE,kBAAkB,CAAC;CAChC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,EAC9C,YAAY,EAAE,MAAM,GAAG,SAAS,EAChC,OAAO,GAAE,uBAA4B,GACpC,MAAM,GAAG,SAAS,CAoBpB"}
@@ -0,0 +1,188 @@
1
+ /**
2
+ * The AI provider catalog — the preset layer of the provider registry (§1.5,
3
+ * layer 5).
4
+ *
5
+ * A preset is the three-or-four literals an endpoint needs beyond a credential:
6
+ * its wire `surface`, its `base_url` (or the transport that derives one), the
7
+ * header the credential rides in, and the path a read-only probe can GET. With
8
+ * them, `skaile providers add --preset groq` needs nothing but an env var name.
9
+ *
10
+ * This replaced `provider-endpoints.ts` `PROVIDER_ENDPOINTS`: every endpoint
11
+ * that table knew is present here, with the surface/transport/credential facts
12
+ * it could not express.
13
+ *
14
+ * The record types come from `@skaile/workspaces/core/provider-registry` — the
15
+ * schema has exactly one home.
16
+ *
17
+ * @see PROVIDER-CONFIG-PLAN.md §1.2, §1.3, §2.5
18
+ */
19
+ import { type AIProviderCredentialKind, type AIProviderDiscovery, type AIProviderEntry, type AIProviderKind, type AIProviderRegistryLayer, type AIProviderRegistryPatch, type AIProviderSurface, type AIProviderTransport } from "@skaile/workspaces/core/provider-registry";
20
+ /**
21
+ * Where the credential goes on the wire. `{credential}` is replaced with the
22
+ * resolved secret. Needed because `credential.kind` alone is ambiguous:
23
+ * `api_key_header` is `x-api-key` for Anthropic, `x-goog-api-key` for Gemini,
24
+ * `api-key` for Azure OpenAI and `Authorization: Token …` for Deepgram.
25
+ */
26
+ export interface AIProviderAuthHeader {
27
+ name: string;
28
+ template: string;
29
+ }
30
+ /** A catalog preset — the fields an entry inherits by naming it. */
31
+ export interface AIProviderPreset {
32
+ /** Preset id; also the default entry id `skaile providers add` writes. */
33
+ id: string;
34
+ kind: AIProviderKind;
35
+ label: string;
36
+ /** `llm`/`embed` only. */
37
+ surface?: AIProviderSurface;
38
+ /** `llm`/`embed` only; omitted means `direct`. */
39
+ transport?: AIProviderTransport;
40
+ /** Literal endpoint. Absent when the transport derives one from `params`. */
41
+ base_url?: string;
42
+ /**
43
+ * Env var the vendor's own SDK reads as a base-URL override, when one
44
+ * exists. Consulted by the callers that still address an endpoint by preset
45
+ * id — model discovery, key validation, and the `settings.json` `apiKeys`
46
+ * normalizer — so a shell already pointed at a gateway keeps pointing there.
47
+ */
48
+ base_url_env?: string;
49
+ /** Static non-secret headers, e.g. Anthropic's `anthropic-version`. */
50
+ headers?: Record<string, string>;
51
+ /** Credential shape plus the conventional env var holding the secret. */
52
+ credential: {
53
+ kind: AIProviderCredentialKind;
54
+ env?: string;
55
+ };
56
+ /** Header the credential rides in; defaults per surface when omitted. */
57
+ auth_header?: AIProviderAuthHeader;
58
+ /** Default routing/voice parameters. */
59
+ params?: Record<string, string>;
60
+ /** `params` keys the operator must supply — the preset cannot know them. */
61
+ required_params?: string[];
62
+ /**
63
+ * Read-only path a health probe GETs, relative to `base_url`: the models
64
+ * list for LLM surfaces, an equivalent authenticated read for voice.
65
+ * Absent when the endpoint has none (Bedrock's runtime host).
66
+ */
67
+ probe_path?: string;
68
+ discovery?: AIProviderDiscovery;
69
+ /** Anything the operator has to know that the fields do not say. */
70
+ notes?: string;
71
+ }
72
+ /**
73
+ * Every preset the runtime ships.
74
+ *
75
+ * Insertion order is display order in `skaile providers list`: first-party
76
+ * clouds, then OpenAI-compatible vendors, then the transports that need
77
+ * routing parameters, then local runtimes and gateways, then voice.
78
+ *
79
+ * Sources: `platform/_devlog/reports/2026-09-20-inference-provider-market-survey.md`
80
+ * (36 endpoints, base URLs and auth headers verified there).
81
+ */
82
+ export declare const AI_PROVIDER_PRESETS: Record<string, AIProviderPreset>;
83
+ /** Presets in catalog order. */
84
+ export declare function listProviderPresets(): AIProviderPreset[];
85
+ /** Look up a preset by id. */
86
+ export declare function getProviderPreset(id: string): AIProviderPreset | undefined;
87
+ /**
88
+ * The endpoint `skaile providers list` shows for a preset: the literal when
89
+ * there is one, otherwise the transport's `base_url` template (§1.3) with its
90
+ * `{param}` placeholders left in — they are exactly what the operator must
91
+ * supply.
92
+ */
93
+ export declare function presetBaseUrl(preset: AIProviderPreset): string | undefined;
94
+ /**
95
+ * The endpoint a request to this preset should actually go to: an explicit
96
+ * override first, then the vendor's own `*_BASE_URL` variable
97
+ * ({@link AIProviderPreset.base_url_env}), then the preset literal.
98
+ *
99
+ * Behind a gateway the credential in play is the *gateway's*, not the
100
+ * vendor's, so discovery and key validation have to follow dispatch — firing
101
+ * either at the vendor's public API 401s and yields an empty catalog, which a
102
+ * caller that reads "empty" as "unknown" then degrades into "accept anything".
103
+ *
104
+ * Pure: reads only the `env` record it is handed.
105
+ */
106
+ export declare function resolvePresetBaseUrl(preset: AIProviderPreset, options?: {
107
+ baseUrl?: string;
108
+ env?: Record<string, string | undefined>;
109
+ }): string | undefined;
110
+ /** Overrides {@link expandPreset} accepts from `skaile providers add`. */
111
+ export interface ExpandPresetOptions {
112
+ /** `env:NAME` / `cmd:…` / `platform:…` / `keyring:…`. Never a literal. */
113
+ credentialRef?: string;
114
+ baseUrl?: string;
115
+ surface?: AIProviderSurface;
116
+ label?: string;
117
+ /** Transport routing parameters, or voice parameters for `stt`/`tts`. */
118
+ params?: Record<string, string>;
119
+ }
120
+ /**
121
+ * Materialize a preset into a registry entry.
122
+ *
123
+ * The credential is always a reference: the preset's conventional `env:` var
124
+ * unless the caller names another ref. No code path here can write a secret.
125
+ * For `transport: azure-openai` the `api_version` parameter is mirrored into
126
+ * `query_params['api-version']`, which is where the wire expects it (§1.3).
127
+ */
128
+ export declare function expandPreset(preset: AIProviderPreset, options?: ExpandPresetOptions): AIProviderEntry;
129
+ /**
130
+ * Build the catalog merge layer for a set of configured entries (§1.5).
131
+ *
132
+ * Only the presets actually referenced by a `preset:` key are expanded, keyed
133
+ * by the *entry* id — so `groq: {kind: llm, preset: groq}` deep-merges onto a
134
+ * full Groq definition while an unreferenced preset stays out of the registry.
135
+ *
136
+ * Takes the **pre-gate** merge (`LoadedProviderRegistry.patches`), not the
137
+ * gated registry: an entry that leaves `kind` or its transport `params` to the
138
+ * preset is exactly the one the gate drops before this layer exists, and a
139
+ * dropped entry names no preset to expand.
140
+ */
141
+ export declare function catalogLayer(providers: AIProviderRegistryPatch): AIProviderRegistryLayer;
142
+ /**
143
+ * The read-only URL a health probe or model discovery can GET for an entry —
144
+ * the models list on LLM surfaces, the equivalent authenticated read on voice
145
+ * ones. `undefined` when the entry has no endpoint yet (missing transport
146
+ * parameters) or the surface serves no such path (Bedrock runtime).
147
+ *
148
+ * This is the catalog method that supersedes `resolveProviderModelsUrl`.
149
+ */
150
+ export declare function resolveProbeUrl(entry: AIProviderEntry): string | undefined;
151
+ /**
152
+ * The header(s) that present a credential on the wire for an entry.
153
+ *
154
+ * `credential.kind` alone does not determine the header — `api_key_header` is
155
+ * `x-api-key` at Anthropic, `x-goog-api-key` at Google and `api-key` at Azure —
156
+ * so the preset's `auth_header` wins, then a per-surface default.
157
+ * Returns `{}` when the credential is signed elsewhere (`sigv4`, `google_adc`)
158
+ * or absent.
159
+ */
160
+ export declare function buildCredentialHeaders(entry: AIProviderEntry, secret: string | undefined): Record<string, string>;
161
+ /** Outcome of {@link probeProviderEntry}. Never carries the credential. */
162
+ export interface AIProviderProbeResult {
163
+ /** The endpoint answered 2xx. */
164
+ ok: boolean;
165
+ /** `false` when no request was made — nothing was verified either way. */
166
+ probed: boolean;
167
+ url?: string;
168
+ status?: number;
169
+ /** Human-readable outcome. Secret-free. */
170
+ detail: string;
171
+ }
172
+ /** Options for {@link probeProviderEntry}. */
173
+ export interface ProbeProviderOptions {
174
+ /** Resolved credential value, if the entry has one. Never logged. */
175
+ secret?: string;
176
+ /** Request deadline; default 8000 ms, matching `validateApiKey`. */
177
+ timeoutMs?: number;
178
+ }
179
+ /**
180
+ * Send one minimal, read-only request to an entry's endpoint and report what
181
+ * came back.
182
+ *
183
+ * Returns `probed: false` — rather than a false negative — when the entry has
184
+ * no probe path (Bedrock's runtime host) or no resolvable endpoint yet: a
185
+ * SigV4- or ADC-signed request is the transport SDK's job, not this function's.
186
+ */
187
+ export declare function probeProviderEntry(entry: AIProviderEntry, options?: ProbeProviderOptions): Promise<AIProviderProbeResult>;
188
+ //# sourceMappingURL=provider-catalog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-catalog.d.ts","sourceRoot":"","sources":["../../../bridge/src/provider-catalog.ts"],"names":[],"mappings":"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"}