diff options
| author | Frank <[email protected]> | 2025-09-09 15:47:24 -0400 |
|---|---|---|
| committer | Frank <[email protected]> | 2025-09-09 15:47:28 -0400 |
| commit | a3513244f121c7decc84f0a488dea798409e1710 (patch) | |
| tree | 1d813e96bca7ba103f1c1f10c76e65fe0a31ced9 /packages | |
| parent | 32b47fcc1e70dcfd645974be98db4d31cc728058 (diff) | |
| download | opencode-a3513244f121c7decc84f0a488dea798409e1710.tar.gz opencode-a3513244f121c7decc84f0a488dea798409e1710.zip | |
wip: zen
Diffstat (limited to 'packages')
| -rw-r--r-- | packages/function/sst-env.d.ts | 4 | ||||
| -rw-r--r-- | packages/opencode/src/provider/models.ts | 1 | ||||
| -rw-r--r-- | packages/opencode/src/provider/provider.ts | 7 |
3 files changed, 9 insertions, 3 deletions
diff --git a/packages/function/sst-env.d.ts b/packages/function/sst-env.d.ts index efb047ff5..fd96591b8 100644 --- a/packages/function/sst-env.d.ts +++ b/packages/function/sst-env.d.ts @@ -54,6 +54,10 @@ declare module "sst" { "type": "sst.sst.Secret" "value": string } + "OPENAI_API_KEY": { + "type": "sst.sst.Secret" + "value": string + } "STRIPE_SECRET_KEY": { "type": "sst.sst.Secret" "value": string diff --git a/packages/opencode/src/provider/models.ts b/packages/opencode/src/provider/models.ts index 8cd03088f..e41221c2a 100644 --- a/packages/opencode/src/provider/models.ts +++ b/packages/opencode/src/provider/models.ts @@ -30,6 +30,7 @@ export namespace ModelsDev { }), experimental: z.boolean().optional(), options: z.record(z.any()), + provider: z.object({ npm: z.string() }).optional(), }) .openapi({ ref: "Model", diff --git a/packages/opencode/src/provider/provider.ts b/packages/opencode/src/provider/provider.ts index 592d0c023..dbed1f74d 100644 --- a/packages/opencode/src/provider/provider.ts +++ b/packages/opencode/src/provider/provider.ts @@ -235,6 +235,7 @@ export namespace Provider { context: 0, output: 0, }, + provider: model.provider ?? existing?.provider, } parsed.models[modelID] = parsedModel } @@ -319,7 +320,7 @@ export namespace Provider { return state().then((state) => state.providers) } - async function getSDK(provider: ModelsDev.Provider) { + async function getSDK(provider: ModelsDev.Provider, model: ModelsDev.Model) { return (async () => { using _ = log.time("getSDK", { providerID: provider.id, @@ -327,7 +328,7 @@ export namespace Provider { const s = await state() const existing = s.sdk.get(provider.id) if (existing) return existing - const pkg = provider.npm ?? provider.id + const pkg = model.provider?.npm ?? provider.npm ?? provider.id const mod = await import(await BunProc.install(pkg, "latest")) const fn = mod[Object.keys(mod).find((key) => key.startsWith("create"))!] let options = { ...s.providers[provider.id]?.options } @@ -366,7 +367,7 @@ export namespace Provider { if (!provider) throw new ModelNotFoundError({ providerID, modelID }) const info = provider.info.models[modelID] if (!info) throw new ModelNotFoundError({ providerID, modelID }) - const sdk = await getSDK(provider.info) + const sdk = await getSDK(provider.info, info) try { const language = provider.getModel ? await provider.getModel(sdk, modelID) : sdk.languageModel(modelID) |
