diff options
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) |
