@skaile/workspaces 3.27.0 → 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 (346) hide show
  1. package/CHANGELOG.md +480 -0
  2. package/dist/app-sdk/index.js +1 -1
  3. package/dist/{asset-feeds-AJOUKX55.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-UAEGKCE5.js → chunk-5IIHO2HI.js} +7 -7
  88. package/dist/{chunk-UAEGKCE5.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-AEN2UFDN.js → chunk-DNGAA24M.js} +7 -7
  96. package/dist/{chunk-AEN2UFDN.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-YLL65VXQ.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-7P6ASOFL.js → chunk-KIQGTAJ5.js} +3 -3
  116. package/dist/{chunk-7P6ASOFL.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-O5JUZIVR.js → chunk-MJY2BO6N.js} +6 -6
  128. package/dist/{chunk-O5JUZIVR.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-DY5GHUTC.js → chunk-NR6BPOW5.js} +2 -7
  134. package/dist/chunk-NR6BPOW5.js.map +1 -0
  135. package/dist/{chunk-F2GEM5B3.js → chunk-PCJF3XBH.js} +10 -10
  136. package/dist/{chunk-F2GEM5B3.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-N27DSFA7.js → chunk-RM4C5AU3.js} +27 -21
  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-AU4TUVHW.js → chunk-T7RHDVSY.js} +4 -4
  148. package/dist/{chunk-AU4TUVHW.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-5UWAOYDN.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-DYGQNAJM.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-G6XZPN6L.js → helpers-DISRVGRJ.js} +14 -12
  236. package/dist/{helpers-G6XZPN6L.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-WHGKK7G5.js → library-publish-I2QYQSB4.js} +18 -16
  240. package/dist/library-publish-I2QYQSB4.js.map +1 -0
  241. package/dist/{open-library-4JSLGWL6.js → open-library-6LM4W4DR.js} +16 -14
  242. package/dist/{open-library-4JSLGWL6.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-LISE6I5O.js → project-HP3IR7RW.js} +15 -13
  250. package/dist/{project-LISE6I5O.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-FKVEUOBQ.js → source-G2VCWPDU.js} +17 -15
  281. package/dist/{source-FKVEUOBQ.js.map → source-G2VCWPDU.js.map} +1 -1
  282. package/dist/{source-manifest-publish-LTRXO2OQ.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/flow.d.ts +6 -1
  291. package/dist/types/src/flow.d.ts.map +1 -1
  292. package/dist/types/src/index.d.ts +1 -1
  293. package/dist/types/src/index.d.ts.map +1 -1
  294. package/dist/types/src/lifecycle.d.ts +35 -10
  295. package/dist/types/src/lifecycle.d.ts.map +1 -1
  296. package/dist/types/src/manifests/agent.d.ts +116 -22
  297. package/dist/types/src/manifests/agent.d.ts.map +1 -1
  298. package/dist/types/src/manifests/index.d.ts +2 -2
  299. package/dist/types/src/manifests/index.d.ts.map +1 -1
  300. package/dist/types/src/manifests/preset.d.ts +5 -5
  301. package/dist/types/src/runtime.d.ts +51 -5
  302. package/dist/types/src/runtime.d.ts.map +1 -1
  303. package/dist/types/src/version.d.ts +18 -2
  304. package/dist/types/src/version.d.ts.map +1 -1
  305. package/dist/validator-P5ESKTW5.js +5 -0
  306. package/dist/{validator-RN64BKFW.js.map → validator-P5ESKTW5.js.map} +1 -1
  307. package/dist/workspace-plugin/adapters/mcp.js +11 -9
  308. package/dist/workspace-plugin/adapters/omp.js +11 -11
  309. package/dist/workspace-plugin/adapters/omp.js.map +1 -1
  310. package/dist/workspace-plugin/index.js +1 -1
  311. package/dist/workspace-plugin/src/plugin.d.ts +1 -4
  312. package/dist/workspace-plugin/src/plugin.d.ts.map +1 -1
  313. package/dist/workspace-plugin/src/tools/validator.d.ts +4 -4
  314. package/dist/workspace-plugin/src/tools/validator.d.ts.map +1 -1
  315. package/package.json +13 -1
  316. package/dist/asset-feeds-AJOUKX55.js.map +0 -1
  317. package/dist/bridge/src/provider-endpoints.d.ts +0 -55
  318. package/dist/bridge/src/provider-endpoints.d.ts.map +0 -1
  319. package/dist/chunk-3NCGSSCU.js.map +0 -1
  320. package/dist/chunk-3U3ZKYR7.js.map +0 -1
  321. package/dist/chunk-5UWAOYDN.js.map +0 -1
  322. package/dist/chunk-AN6NAFRT.js.map +0 -1
  323. package/dist/chunk-AQW4BWNR.js +0 -324
  324. package/dist/chunk-AQW4BWNR.js.map +0 -1
  325. package/dist/chunk-DY5GHUTC.js.map +0 -1
  326. package/dist/chunk-E7HKNQTH.js.map +0 -1
  327. package/dist/chunk-FFE7YLYO.js.map +0 -1
  328. package/dist/chunk-FYIHH56K.js +0 -110
  329. package/dist/chunk-FYIHH56K.js.map +0 -1
  330. package/dist/chunk-GURXUF2J.js.map +0 -1
  331. package/dist/chunk-HSRHO7SK.js.map +0 -1
  332. package/dist/chunk-MBARHWMZ.js.map +0 -1
  333. package/dist/chunk-N27DSFA7.js.map +0 -1
  334. package/dist/chunk-T3YLZQS4.js.map +0 -1
  335. package/dist/chunk-XMULHVKX.js.map +0 -1
  336. package/dist/chunk-YLL65VXQ.js.map +0 -1
  337. package/dist/ensure-sources-DYGQNAJM.js.map +0 -1
  338. package/dist/library-publish-WHGKK7G5.js.map +0 -1
  339. package/dist/paths-CZEH643M.js +0 -16
  340. package/dist/plugin-store-QJNBPIQK.js.map +0 -1
  341. package/dist/runner/src/cloud-bundle.d.ts +0 -36
  342. package/dist/runner/src/cloud-bundle.d.ts.map +0 -1
  343. package/dist/setup-CIRH5BYB.js +0 -517
  344. package/dist/setup-CIRH5BYB.js.map +0 -1
  345. package/dist/source-manifest-publish-LTRXO2OQ.js.map +0 -1
  346. package/dist/validator-RN64BKFW.js +0 -5
@@ -0,0 +1,117 @@
1
+ /**
2
+ * Continue's `config.yaml` adapter — the file half of the Continue row (§2.3).
3
+ *
4
+ * `cn` has no model flag. Its assistant is a document, and the document binds
5
+ * models to **roles** (`chat`, `edit`, `apply`, `autocomplete`, `embed`,
6
+ * `rerank`, `summarize`); a headless `cn -p` turn runs as `chat`. So unlike
7
+ * OpenCode and Goose, Continue needs a file for *every* endpoint, stock or
8
+ * custom — it has no built-in provider table keyed by vendor names to fall
9
+ * back on:
10
+ *
11
+ * ```yaml
12
+ * name: Skaile session
13
+ * version: 0.0.1
14
+ * schema: v1
15
+ * models:
16
+ * - name: corp-gateway/corp-fast-1
17
+ * provider: openai
18
+ * model: corp-fast-1
19
+ * apiBase: https://llm.corp.example/v1
20
+ * apiKey: ${{ secrets.SKAILE_AIP_CORP_GATEWAY_KEY }}
21
+ * roles:
22
+ * - chat
23
+ * ```
24
+ *
25
+ * `provider` is Continue's *adapter class*, not an endpoint name — the
26
+ * endpoint is `apiBase`. The row's `name` carries the identity instead, and it
27
+ * is `backendProviderName`/`backendModelSelector` verbatim, so a model reads
28
+ * the same here as in every other adapter.
29
+ *
30
+ * **Credentials never enter the file.** `apiKey` holds Continue's own
31
+ * `${{ secrets.NAME }}` indirection; the CLI resolves a secret from the
32
+ * process environment before it asks Continue Hub, so `SKAILE_AIP_<ID>_KEY`
33
+ * in the child env is what authenticates the request.
34
+ *
35
+ * **Roles.** The session's `roles` table is the source: every entry whose key
36
+ * is one of Continue's roles becomes that role's binding (`default` is read as
37
+ * `chat`, matching how the rest of the programme spells the fallback), and the
38
+ * session's own model selection wins `chat` when it named one.
39
+ *
40
+ * @see https://docs.continue.dev/reference
41
+ * @docLink packages/bridge/drivers#one-shot-cli-drivers-gemini-qwen-opencode-goose-continue
42
+ */
43
+ import { type AIProviderLlmEntry } from "@skaile/workspaces/core/provider-registry";
44
+ import { type EnvDriverSession } from "./env-drivers.js";
45
+ /** Filename Continue reads its local assistant from, under the global dir. */
46
+ export declare const CONTINUE_CONFIG_FILENAME = "config.yaml";
47
+ /** One `models[]` row. */
48
+ export interface ContinueModelRow {
49
+ /** `<backendProviderName>/<providerModelId>` — the programme-wide model id. */
50
+ name: string;
51
+ /** Continue adapter class: `openai`, `anthropic`, `gemini`. */
52
+ provider: string;
53
+ /** Provider-side model id. */
54
+ model: string;
55
+ apiBase?: string;
56
+ /** Continue's `${{ secrets.NAME }}` indirection — never a secret. */
57
+ apiKey?: string;
58
+ roles: string[];
59
+ requestOptions?: {
60
+ headers: Record<string, string>;
61
+ };
62
+ }
63
+ /** The `config.yaml` document this adapter owns. */
64
+ export interface ContinueConfigDocument {
65
+ name: string;
66
+ version: string;
67
+ schema: string;
68
+ models: ContinueModelRow[];
69
+ }
70
+ /** Result of {@link buildContinueConfigDocument}. */
71
+ export interface ContinueConfigBuild {
72
+ document: ContinueConfigDocument;
73
+ /** Role bindings that resolved to nothing Continue can run. */
74
+ warnings: string[];
75
+ }
76
+ /**
77
+ * Render one entry + model as a `models[]` row, or explain why Continue cannot
78
+ * run it.
79
+ */
80
+ export declare function renderContinueModel(providerId: string, entry: AIProviderLlmEntry, model: string, roles: string[]): {
81
+ row: ContinueModelRow;
82
+ } | {
83
+ skipped: string;
84
+ };
85
+ /**
86
+ * Build the document for a session: one `models[]` row per distinct endpoint +
87
+ * model a role binds, with every role that binds it.
88
+ *
89
+ * Only bound models are rendered. Continue defaults an omitted `roles` to
90
+ * `[chat, edit, apply, summarize]`, so listing the registry's other models
91
+ * would silently make each of them a chat candidate — the document says
92
+ * exactly what the session decided and nothing else.
93
+ *
94
+ * An empty registry renders nothing — `cn` then runs on whatever its own
95
+ * `config.yaml` or Hub login provides.
96
+ */
97
+ export declare function buildContinueConfigDocument(session: EnvDriverSession): ContinueConfigBuild;
98
+ /** What {@link materializeContinueConfig} handed the driver. */
99
+ export interface ContinueMaterialization extends ContinueConfigBuild {
100
+ /** Child env fragment: `CONTINUE_GLOBAL_DIR`, or empty when nothing was written. */
101
+ env: Record<string, string>;
102
+ /** Absolute path of the rendered file, when one was written. */
103
+ path?: string;
104
+ }
105
+ /**
106
+ * Render the session's role bindings and point the child at them.
107
+ *
108
+ * A session that bound no model writes nothing and leaves
109
+ * `CONTINUE_GLOBAL_DIR` alone, so `cn` keeps resolving its Hub assistant (or
110
+ * the developer's own `~/.continue/config.yaml`) exactly as before. A file
111
+ * left by an earlier render of the same session is removed in that case.
112
+ */
113
+ export declare function materializeContinueConfig(session: EnvDriverSession, config: {
114
+ cwd: string;
115
+ sessionId?: string;
116
+ }): ContinueMaterialization;
117
+ //# sourceMappingURL=continue-config-yaml.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"continue-config-yaml.d.ts","sourceRoot":"","sources":["../../../../bridge/src/provider-materialize/continue-config-yaml.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAEH,OAAO,EACL,KAAK,kBAAkB,EAGxB,MAAM,2CAA2C,CAAC;AAGnD,OAAO,EAKL,KAAK,gBAAgB,EAEtB,MAAM,kBAAkB,CAAC;AAqC1B,8EAA8E;AAC9E,eAAO,MAAM,wBAAwB,gBAAgB,CAAC;AAEtD,0BAA0B;AAC1B,MAAM,WAAW,gBAAgB;IAC/B,+EAA+E;IAC/E,IAAI,EAAE,MAAM,CAAC;IACb,+DAA+D;IAC/D,QAAQ,EAAE,MAAM,CAAC;IACjB,8BAA8B;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,qEAAqE;IACrE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,cAAc,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,CAAC;CACtD;AAED,oDAAoD;AACpD,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,gBAAgB,EAAE,CAAC;CAC5B;AAED,qDAAqD;AACrD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,sBAAsB,CAAC;IACjC,+DAA+D;IAC/D,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AASD;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,kBAAkB,EACzB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EAAE,GACd;IAAE,GAAG,EAAE,gBAAgB,CAAA;CAAE,GAAG;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,CAwBjD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,gBAAgB,GAAG,mBAAmB,CA+D1F;AAED,gEAAgE;AAChE,MAAM,WAAW,uBAAwB,SAAQ,mBAAmB;IAClE,oFAAoF;IACpF,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,gEAAgE;IAChE,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,gBAAgB,EACzB,MAAM,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAC1C,uBAAuB,CAazB"}
@@ -0,0 +1,103 @@
1
+ /**
2
+ * Credential delivery for driver adapters — the one naming rule (§2.3).
3
+ *
4
+ * Every adapter that hands a registry entry's secret to a child process, and
5
+ * every renderer that has to *name* that secret in a config file it writes
6
+ * (omp's `models.yml` `apiKey:`, Codex's `env_key`, OpenCode's `{env:…}`),
7
+ * agrees on one env-var name per entry: `SKAILE_AIP_<UPPER_ID>_KEY`. The name
8
+ * goes in the file, the value goes in the child environment — a rendered
9
+ * config never contains a secret.
10
+ *
11
+ * The platform's secret-env allowlist is a prefix rule on exactly that name,
12
+ * and forge-common delivers the same names when it spawns `skaile serve`, so
13
+ * the transform below is a cross-repo contract: uppercase, every character
14
+ * outside `[A-Za-z0-9]` mapped to `_` (registry ids are `[a-z0-9][a-z0-9_-]*`,
15
+ * so in practice only `-`).
16
+ *
17
+ * Alongside the canonical name, {@link registryCredentialEnv} also sets the
18
+ * *conventional* carrier a CLI already reads (`ANTHROPIC_API_KEY`,
19
+ * `GEMINI_API_KEY`, `GROQ_API_KEY`, …) so a catalog-preset entry works in a
20
+ * backend that has no per-endpoint config file yet.
21
+ *
22
+ * @see PROVIDER-CONFIG-PLAN.md §1.4, §2.3
23
+ */
24
+ import { type AIProviderEntry, type AIProviderRegistry, type MergedAIProviderRegistry } from "@skaile/workspaces/core/provider-registry";
25
+ /** Options shared by every registry-shaped credential resolution. */
26
+ export interface RegistryCredentialOptions {
27
+ /** Restrict resolution to one entry — the provider half of a `modelRef`. */
28
+ providerId?: string;
29
+ /** Environment `env:` refs resolve against. Defaults to `process.env`. */
30
+ env?: Record<string, string | undefined>;
31
+ /** Control-plane secrets keyed by config id, for `platform:` refs. */
32
+ secrets?: Record<string, string>;
33
+ /** Run `cmd:` references. Default `true`. */
34
+ allowCommand?: boolean;
35
+ }
36
+ /** Prefix of the canonical per-entry credential variable. */
37
+ export declare const PROVIDER_CREDENTIAL_ENV_PREFIX = "SKAILE_AIP_";
38
+ /** Suffix of the canonical per-entry credential variable. */
39
+ export declare const PROVIDER_CREDENTIAL_ENV_SUFFIX = "_KEY";
40
+ /**
41
+ * The env-var name that carries a registry entry's credential:
42
+ * `anthropic` → `SKAILE_AIP_ANTHROPIC_KEY`, `my-gw.eu` → `SKAILE_AIP_MY_GW_EU_KEY`.
43
+ *
44
+ * Pure: no environment, no registry, no I/O. Renderers call it per entry while
45
+ * emitting a config file, adapters call it while assembling a child env, and
46
+ * the platform allowlist matches the prefix.
47
+ */
48
+ export declare function providerCredentialEnvName(providerId: string): string;
49
+ /**
50
+ * The env var a backend already looks for on its own, when the entry names one.
51
+ *
52
+ * The catalog preset's conventional carrier wins (`GEMINI_API_KEY` for
53
+ * `google`), because that is the name the vendor's own CLI reads; otherwise an
54
+ * `env:NAME` credential reference is taken at face value — the operator named
55
+ * that variable, so the child gets it under the same name. `cmd:`, `platform:`
56
+ * and `keyring:` refs have no conventional carrier and return `undefined`.
57
+ */
58
+ export declare function conventionalCredentialEnvName(entry: AIProviderEntry): string | undefined;
59
+ /**
60
+ * Resolve one entry's credential to its value, or `undefined` when there is
61
+ * none to hand over (`kind: none`, an ambient `sigv4`/`google_adc` chain, an
62
+ * unset variable, a reserved `keyring:` ref).
63
+ */
64
+ export declare function resolveEntryCredential(entry: AIProviderEntry, options?: RegistryCredentialOptions): string | undefined;
65
+ /**
66
+ * One entry's credential value, including the one the session boundary
67
+ * already resolved for it.
68
+ *
69
+ * A `platform:<configId>` reference is resolved by the runner — it holds the
70
+ * `session_init` secrets map, the driver does not — and materialized into the
71
+ * child environment under {@link providerCredentialEnvName}. So when the
72
+ * reference itself yields nothing, that carrier is consulted: it is the same
73
+ * secret, delivered one step earlier.
74
+ */
75
+ export declare function entryCredentialValue(providerId: string, entry: AIProviderEntry, options?: RegistryCredentialOptions): string | undefined;
76
+ /** Options for {@link entryCredentialEnv} / {@link registryCredentialEnv}. */
77
+ export interface RegistryCredentialEnvOptions extends RegistryCredentialOptions {
78
+ /**
79
+ * Also set the backend-conventional carrier
80
+ * ({@link conventionalCredentialEnvName}). Default `true`. Set `false` for a
81
+ * backend that reads every endpoint out of a rendered config file and must
82
+ * not inherit a vendor default from a neighbouring entry.
83
+ */
84
+ aliases?: boolean;
85
+ }
86
+ /**
87
+ * The credential variables one entry contributes: always
88
+ * `SKAILE_AIP_<ID>_KEY`, plus the conventional carrier unless `aliases` is
89
+ * `false`. Empty when the entry has no resolvable secret.
90
+ */
91
+ export declare function entryCredentialEnv(providerId: string, entry: AIProviderEntry, options?: RegistryCredentialEnvOptions): Record<string, string>;
92
+ /**
93
+ * Every enabled entry's credential, as a child-process environment fragment.
94
+ *
95
+ * One canonical `SKAILE_AIP_<ID>_KEY` per entry whose credential resolves; the
96
+ * conventional carriers are added underneath, first entry in registry order
97
+ * winning a collision (registry order is highest-precedence layer first, so
98
+ * the alias follows the same precedence the selector does). Entries whose
99
+ * credential cannot be resolved contribute nothing — exactly what the flat
100
+ * `apiKeys` cascade produced for them.
101
+ */
102
+ export declare function registryCredentialEnv(registry: AIProviderRegistry | MergedAIProviderRegistry, options?: RegistryCredentialEnvOptions): Record<string, string>;
103
+ //# sourceMappingURL=credential-env.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credential-env.d.ts","sourceRoot":"","sources":["../../../../bridge/src/provider-materialize/credential-env.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,kBAAkB,EAEvB,KAAK,wBAAwB,EAG9B,MAAM,2CAA2C,CAAC;AAInD,qEAAqE;AACrE,MAAM,WAAW,yBAAyB;IACxC,4EAA4E;IAC5E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0EAA0E;IAC1E,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IACzC,sEAAsE;IACtE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,6CAA6C;IAC7C,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,6DAA6D;AAC7D,eAAO,MAAM,8BAA8B,gBAAgB,CAAC;AAE5D,6DAA6D;AAC7D,eAAO,MAAM,8BAA8B,SAAS,CAAC;AAErD;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAGpE;AAED;;;;;;;;GAQG;AACH,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,GAAG,SAAS,CAKxF;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,eAAe,EACtB,OAAO,GAAE,yBAA8B,GACtC,MAAM,GAAG,SAAS,CAMpB;AAED;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,eAAe,EACtB,OAAO,GAAE,yBAA8B,GACtC,MAAM,GAAG,SAAS,CAIpB;AAED,8EAA8E;AAC9E,MAAM,WAAW,4BAA6B,SAAQ,yBAAyB;IAC7E;;;;;OAKG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,eAAe,EACtB,OAAO,GAAE,4BAAiC,GACzC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CASxB;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,kBAAkB,GAAG,wBAAwB,EACvD,OAAO,GAAE,4BAAiC,GACzC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAcxB"}
@@ -0,0 +1,209 @@
1
+ /**
2
+ * Registry adapter for the **env-shaped CLI drivers** — Gemini, Qwen, OpenCode,
3
+ * Goose and Continue (§2.3).
4
+ *
5
+ * These backends take their endpoint from the environment rather than from a
6
+ * config file, so the adapter's job is three things: resolve which registry
7
+ * entry the session's model selector names, refuse at start when that entry
8
+ * speaks a wire surface the backend cannot, and hand the driver the
9
+ * provider-side model id it must put on the command line.
10
+ *
11
+ * Two pluralities meet here (`BUILTIN_DRIVER_CATALOG.providerPlurality`):
12
+ *
13
+ * - `single` — Gemini and Qwen address exactly one endpoint. The bound entry
14
+ * supplies the credential *and* the base URL, and a surface mismatch is
15
+ * fatal: a Gemini CLI pointed at an `openai-completions` endpoint cannot
16
+ * work, and failing at start names the surface instead of leaving the user
17
+ * with an opaque error mid-turn.
18
+ * - `credentials-n` — OpenCode, Goose and Continue accept every enabled
19
+ * entry's credential at once and select one active model. The credential
20
+ * fan-out is `registryCredentialEnv`; the active model is this module's
21
+ * `<provider>/<model>` binding.
22
+ *
23
+ * Writing the per-endpoint config files those three need for *custom*
24
+ * endpoints (`opencode.json`, Goose `custom_providers/*.json`, Continue
25
+ * `config.yaml`) is the file half, and is deliberately not here.
26
+ *
27
+ * @see PROVIDER-CONFIG-PLAN.md §2.3
28
+ */
29
+ import { type AIProviderLlmEntry, type AIProviderSurface, type MergedAIProviderRegistry } from "@skaile/workspaces/core/provider-registry";
30
+ import type { ModelEntry } from "../models.js";
31
+ import type { AgentConfig } from "../types.js";
32
+ /**
33
+ * Everything a CLI driver needs to know about this session's AI providers,
34
+ * resolved once from its {@link AgentConfig}.
35
+ */
36
+ export interface EnvDriverSession {
37
+ /** The merged registry this session may address. Empty when none was configured. */
38
+ registry: MergedAIProviderRegistry;
39
+ /**
40
+ * Environment `credential.ref` lookups resolve against — the process
41
+ * environment widened with `config.env`, which is where the session
42
+ * boundary delivered every resolved `SKAILE_AIP_<ID>_KEY`.
43
+ */
44
+ lookupEnv: Record<string, string | undefined>;
45
+ /** Model selector: `<providerId>/<modelId>`, a bare id, or `@role`. */
46
+ modelRef?: string;
47
+ /** Roles table an `@role` selector resolves through. */
48
+ roles?: Record<string, string>;
49
+ }
50
+ /**
51
+ * Resolve the session's providers once, from its {@link AgentConfig}.
52
+ *
53
+ * `config.env` is folded into `lookupEnv` rather than kept apart: it is part
54
+ * of the session's environment, not an extra, and a credential or
55
+ * `*_BASE_URL` delivered there must be visible exactly as the child will see
56
+ * it.
57
+ */
58
+ export declare function resolveEnvDriverSession(config: AgentConfig, processEnv?: Record<string, string | undefined>): EnvDriverSession;
59
+ /** One resolved endpoint + model — everything a driver needs to spawn. */
60
+ export interface RegistryModelBinding {
61
+ /** Registry id of the selected entry. */
62
+ providerId: string;
63
+ /** The selected entry itself. */
64
+ entry: AIProviderLlmEntry;
65
+ /** Logical model id, after `@role` expansion and before `model_map`. */
66
+ modelId?: string;
67
+ /** Provider-side model id — what goes on the wire / command line. */
68
+ providerModelId?: string;
69
+ /** Wire protocol, from the entry or its preset. */
70
+ surface?: AIProviderSurface;
71
+ /** Resolved endpoint, from the entry, its transport params, or its preset. */
72
+ baseUrl?: string;
73
+ /**
74
+ * The provider name the *backend* knows this endpoint by — a catalog preset
75
+ * id for a stock endpoint, the registry id for anything custom. See
76
+ * {@link backendProviderName}.
77
+ */
78
+ backendProviderId: string;
79
+ /** Non-fatal notes from `parseModelRef` (dangling role, disabled provider). */
80
+ warnings: string[];
81
+ }
82
+ /** The entry's wire surface: its own, else its preset's. */
83
+ export declare function entrySurface(entry: AIProviderLlmEntry): AIProviderSurface | undefined;
84
+ /**
85
+ * The entry's endpoint: its literal or transport-derived URL, else its
86
+ * preset's literal. Transport templates that still carry `{param}`
87
+ * placeholders never come back — `resolveEntryBaseUrl` withholds those, and a
88
+ * preset's template is not a URL.
89
+ */
90
+ export declare function entryBaseUrl(entry: AIProviderLlmEntry): string | undefined;
91
+ /**
92
+ * True when a `credentials-n` backend already knows this endpoint under its
93
+ * own catalog name — the entry names a preset and did not move it somewhere
94
+ * else.
95
+ *
96
+ * The one rule both halves of §2.3 read: it decides the name the env half
97
+ * puts on the command line ({@link backendProviderName}) *and* whether the
98
+ * file half has to describe the endpoint at all. Reading it twice is what
99
+ * keeps `-m <name>/<model>` and the generated provider file talking about the
100
+ * same thing.
101
+ */
102
+ export declare function isStockCatalogEndpoint(entry: AIProviderLlmEntry): boolean;
103
+ /**
104
+ * The provider name to give a `credentials-n` backend (`-m <name>/<model>`,
105
+ * `GOOSE_PROVIDER`).
106
+ *
107
+ * A stock catalog endpoint is named by its preset, because that is the name
108
+ * OpenCode's models.dev list and Goose's built-in provider table already use —
109
+ * `prod-claude: {preset: anthropic}` is still Anthropic to them. An entry with
110
+ * an endpoint of its own is named by its registry id: no built-in table knows
111
+ * it, so the id is what its generated provider file is keyed by (the file half
112
+ * of §2.3).
113
+ */
114
+ export declare function backendProviderName(providerId: string, entry: AIProviderLlmEntry): string;
115
+ /**
116
+ * Enabled `llm`/`embed` entries, in registry order. Also the set the file
117
+ * adapters render (`opencode-config.ts`, `goose-custom-providers.ts`,
118
+ * `continue-config-yaml.ts`): the env half and the file half must agree on
119
+ * which entries exist before they can agree on what to call them.
120
+ */
121
+ export declare function selectableEntries(registry: MergedAIProviderRegistry): Array<[string, AIProviderLlmEntry]>;
122
+ /**
123
+ * The provider-side model ids an entry declares, as `[logicalId, providerId]`
124
+ * pairs in declaration order: every `model_map` entry, plus every
125
+ * `capabilities` key the map does not rename.
126
+ */
127
+ export declare function entryModelIds(entry: AIProviderLlmEntry): Array<[string, string]>;
128
+ /**
129
+ * Resolve the session's endpoint + model.
130
+ *
131
+ * With no selector the first entry in registry order wins and the backend
132
+ * keeps its own default model — exactly what an absent `model` meant before
133
+ * the registry existed. Returns `undefined` when no entry can serve a model
134
+ * (an empty, fully-disabled or voice-only registry).
135
+ */
136
+ export declare function resolveRegistryBinding(session: EnvDriverSession): RegistryModelBinding | undefined;
137
+ /**
138
+ * Every credential a `credentials-n` backend may use: one variable per
139
+ * enabled registry entry. OpenCode, Goose and Continue have always received
140
+ * *all* of them, not just the selected endpoint's, because they route across
141
+ * providers inside a single session.
142
+ */
143
+ export declare function credentialsForEveryProvider(session: EnvDriverSession): Record<string, string>;
144
+ /**
145
+ * Throw when the bound entry speaks a wire surface this driver cannot.
146
+ *
147
+ * The message names the offending surface and lists the ones the backend does
148
+ * speak (`BUILTIN_DRIVER_CATALOG[driverId].surfaces`). An entry that declares
149
+ * no surface and names no preset is not judged — there is nothing to compare.
150
+ */
151
+ export declare function assertDriverSpeaksSurface(driverId: string, productName: string, binding: RegistryModelBinding): void;
152
+ /**
153
+ * The models a `credentials-n` backend can be pointed at, straight from the
154
+ * registry: every enabled entry's mapped ids, namespaced the way the backend
155
+ * takes them (`-m <provider>/<model>`).
156
+ *
157
+ * These backends have no model-list endpoint of their own — OpenCode reads
158
+ * models.dev, Goose and Continue read their config — so the registry is the
159
+ * only list that describes *this* session's reachable models, and it needs no
160
+ * network call to produce.
161
+ */
162
+ export declare function registryModelEntries(session: EnvDriverSession): ModelEntry[];
163
+ /**
164
+ * Resolve the binding and enforce the surface — what a `single`-plurality
165
+ * driver does at start.
166
+ *
167
+ * The registry is authoritative: pointing the driver at an entry it cannot
168
+ * speak throws rather than silently running somewhere else. `undefined` when
169
+ * the session configured no endpoint at all, which leaves the driver on its
170
+ * own native auth.
171
+ */
172
+ export declare function bindSingleProviderEntry(driverId: string, productName: string, session: EnvDriverSession): RegistryModelBinding | undefined;
173
+ /**
174
+ * The `<provider>/<model>` selector a `credentials-n` backend takes on its
175
+ * command line (`opencode -m`). `undefined` when no model was selected — the
176
+ * backend then uses its own default rather than being handed a bare provider.
177
+ */
178
+ export declare function backendModelSelector(binding: RegistryModelBinding): string | undefined;
179
+ /**
180
+ * Continue's model selection is a **role binding**, not a flag: `cn` has no
181
+ * `--model` option (only `--config <slug>`), and its `config.yaml` binds each
182
+ * model to roles (`chat`, `edit`, `apply`, …). This is the binding for the
183
+ * role a headless `cn -p` turn runs as, and the shape its generated
184
+ * `config.yaml` is rendered from.
185
+ *
186
+ * `apiKeyEnv` is a variable *name*: the secret travels in the child
187
+ * environment, never in a rendered config.
188
+ */
189
+ export interface ContinueRoleBinding {
190
+ /** Continue role this model serves. A headless prompt is a `chat` turn. */
191
+ role: "chat";
192
+ /** Registry id of the entry. */
193
+ providerId: string;
194
+ /** Provider name Continue knows the endpoint by. */
195
+ provider: string;
196
+ /** Provider-side model id. */
197
+ model?: string;
198
+ /** Endpoint, when the entry states one. */
199
+ apiBase?: string;
200
+ /** Env var holding the credential — the name, never the value. */
201
+ apiKeyEnv: string;
202
+ }
203
+ /**
204
+ * Map the session's chosen endpoint onto the Continue role a headless turn
205
+ * runs as. `undefined` when the session configured no endpoint — `cn` then
206
+ * runs against whatever its own `config.yaml` / Hub login provides.
207
+ */
208
+ export declare function continueRoleBinding(session: EnvDriverSession): ContinueRoleBinding | undefined;
209
+ //# sourceMappingURL=env-drivers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env-drivers.d.ts","sourceRoot":"","sources":["../../../../bridge/src/provider-materialize/env-drivers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,127 @@
1
+ /**
2
+ * Goose's `custom_providers/*.json` adapter — the file half of the Goose row
3
+ * (§2.3).
4
+ *
5
+ * `GOOSE_PROVIDER` can only name a provider Goose already has: one of its
6
+ * built-in Rust providers, or one of the JSON *declarative* providers it loads
7
+ * from `<config dir>/custom_providers/`. An endpoint of the session's own is
8
+ * therefore a file — one per entry, named after the entry, in Goose's own
9
+ * vocabulary:
10
+ *
11
+ * ```json
12
+ * {
13
+ * "name": "corp-gateway",
14
+ * "engine": "openai",
15
+ * "display_name": "Corp Gateway",
16
+ * "api_key_env": "SKAILE_AIP_CORP_GATEWAY_KEY",
17
+ * "base_url": "https://llm.corp.example/v1",
18
+ * "models": [{ "name": "corp-fast-1" }],
19
+ * "requires_auth": true
20
+ * }
21
+ * ```
22
+ *
23
+ * `name` is {@link backendProviderName}, so the id in the file is the one the
24
+ * env half already puts in `GOOSE_PROVIDER`. `api_key_env` is a variable
25
+ * *name*: Goose resolves it from the child environment (its config layer reads
26
+ * the process environment first), so no secret is ever written.
27
+ *
28
+ * **Engines.** A declarative provider is one of three engines — `openai`,
29
+ * `anthropic`, `ollama` — each a request shape, not a vendor. Only the two
30
+ * surfaces that map onto one are rendered; `google-generative-ai` and
31
+ * `bedrock-converse-stream` are built-in Goose providers with no declarative
32
+ * spelling, so an entry on those surfaces is reported instead of guessed at.
33
+ *
34
+ * **Config home.** Goose resolves its config, data and state directories from
35
+ * one variable, `GOOSE_PATH_ROOT`, so a session that renders anything moves
36
+ * the whole tree and never touches the developer's own — neither reading it
37
+ * nor writing to it.
38
+ *
39
+ * @see https://block.github.io/goose/docs/guides/custom-providers
40
+ * @docLink packages/bridge/drivers#one-shot-cli-drivers-gemini-qwen-opencode-goose-continue
41
+ */
42
+ import type { AIProviderLlmEntry } from "@skaile/workspaces/core/provider-registry";
43
+ import { type EnvDriverSession } from "./env-drivers.js";
44
+ /** Directory, relative to `GOOSE_PATH_ROOT`, Goose reads its config from. */
45
+ export declare const GOOSE_CONFIG_DIRNAME = "config";
46
+ /** Directory, relative to the config dir, declarative providers are loaded from. */
47
+ export declare const GOOSE_CUSTOM_PROVIDERS_DIRNAME = "custom_providers";
48
+ /** One entry of a declarative provider's `models[]`. */
49
+ export interface GooseModelEntry {
50
+ name: string;
51
+ context_limit?: number;
52
+ }
53
+ /** One `custom_providers/<id>.json` document. */
54
+ export interface GooseCustomProvider {
55
+ /** Provider id — what `GOOSE_PROVIDER` names. Must equal the file stem. */
56
+ name: string;
57
+ engine: string;
58
+ display_name: string;
59
+ /** Name of the variable carrying the credential — never the credential. */
60
+ api_key_env?: string;
61
+ base_url: string;
62
+ models: GooseModelEntry[];
63
+ headers?: Record<string, string>;
64
+ supports_streaming?: boolean;
65
+ requires_auth: boolean;
66
+ /**
67
+ * `false` keeps Goose on the static `models[]` instead of probing
68
+ * `<base>/v1/models`; only meaningful with a non-empty list.
69
+ */
70
+ dynamic_models?: boolean;
71
+ }
72
+ /** An entry Goose cannot be taught, and why. */
73
+ export interface GooseSkippedEntry {
74
+ id: string;
75
+ reason: string;
76
+ }
77
+ /** Result of {@link buildGooseCustomProviders}. */
78
+ export interface GooseCustomProvidersBuild {
79
+ /** Provider id → its document, in registry order. */
80
+ providers: Record<string, GooseCustomProvider>;
81
+ skipped: GooseSkippedEntry[];
82
+ }
83
+ /**
84
+ * Render one entry as a declarative provider, or explain why Goose cannot load
85
+ * it.
86
+ */
87
+ export declare function renderGooseCustomProvider(providerId: string, entry: AIProviderLlmEntry): {
88
+ provider: GooseCustomProvider;
89
+ } | {
90
+ skipped: string;
91
+ };
92
+ /**
93
+ * Build one declarative provider per entry Goose cannot name on its own.
94
+ *
95
+ * The selected model is appended to its provider's `models[]` when the
96
+ * registry did not enumerate it, so `GOOSE_MODEL` always names something the
97
+ * file declares. A provider with a static list gets `dynamic_models: false` —
98
+ * without it Goose probes `<base>/v1/models` on every run, which a gateway
99
+ * that serves only completions answers with an error.
100
+ *
101
+ * An empty registry renders nothing — Goose's built-in provider table
102
+ * already covers every stock catalog endpoint.
103
+ */
104
+ export declare function buildGooseCustomProviders(session: EnvDriverSession): GooseCustomProvidersBuild;
105
+ /** What {@link materializeGooseCustomProviders} handed the driver. */
106
+ export interface GooseMaterialization extends GooseCustomProvidersBuild {
107
+ /** Child env fragment: `GOOSE_PATH_ROOT`, or empty when nothing was written. */
108
+ env: Record<string, string>;
109
+ /** Absolute paths of the rendered provider files. */
110
+ paths: string[];
111
+ }
112
+ /**
113
+ * Render the session's custom endpoints and point the child at them.
114
+ *
115
+ * A session whose every endpoint is a Goose built-in writes nothing and
116
+ * leaves `GOOSE_PATH_ROOT` unset, so the developer's own Goose tree keeps
117
+ * working exactly as before. Once anything *is* rendered the whole tree moves
118
+ * — config, data and state together, because Goose derives all three from
119
+ * that one variable — and the session stops inheriting the developer's Goose
120
+ * settings along with their config directory. That is the price of never
121
+ * reading or writing it.
122
+ */
123
+ export declare function materializeGooseCustomProviders(session: EnvDriverSession, config: {
124
+ cwd: string;
125
+ sessionId?: string;
126
+ }): GooseMaterialization;
127
+ //# sourceMappingURL=goose-custom-providers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"goose-custom-providers.d.ts","sourceRoot":"","sources":["../../../../bridge/src/provider-materialize/goose-custom-providers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAGH,OAAO,KAAK,EACV,kBAAkB,EAEnB,MAAM,2CAA2C,CAAC;AAEnD,OAAO,EAIL,KAAK,gBAAgB,EAItB,MAAM,kBAAkB,CAAC;AAwB1B,6EAA6E;AAC7E,eAAO,MAAM,oBAAoB,WAAW,CAAC;AAE7C,oFAAoF;AACpF,eAAO,MAAM,8BAA8B,qBAAqB,CAAC;AAEjE,wDAAwD;AACxD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,iDAAiD;AACjD,MAAM,WAAW,mBAAmB;IAClC,2EAA2E;IAC3E,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,2EAA2E;IAC3E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,aAAa,EAAE,OAAO,CAAC;IACvB;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,gDAAgD;AAChD,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,mDAAmD;AACnD,MAAM,WAAW,yBAAyB;IACxC,qDAAqD;IACrD,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IAC/C,OAAO,EAAE,iBAAiB,EAAE,CAAC;CAC9B;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,kBAAkB,GACxB;IAAE,QAAQ,EAAE,mBAAmB,CAAA;CAAE,GAAG;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,CA2CzD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,gBAAgB,GAAG,yBAAyB,CA6B9F;AAED,sEAAsE;AACtE,MAAM,WAAW,oBAAqB,SAAQ,yBAAyB;IACrE,gFAAgF;IAChF,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,qDAAqD;IACrD,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE,gBAAgB,EACzB,MAAM,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAC1C,oBAAoB,CAmBtB"}