summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJérôme Benoit <[email protected]>2025-12-08 18:27:47 +0100
committerGitHub <[email protected]>2025-12-08 11:27:47 -0600
commit52bb43eebd1d11cd2b53f40d2645c02b82432bc1 (patch)
treeeb6bac175d427655ed00b4db0e4384a0d9cbfc34
parente020f5355ea6c9678e7bd8a5f334f54f5023e332 (diff)
downloadopencode-52bb43eebd1d11cd2b53f40d2645c02b82432bc1.tar.gz
opencode-52bb43eebd1d11cd2b53f40d2645c02b82432bc1.zip
fix: SAP AI Core Vercel AI SDK v2 support (#5180)
Signed-off-by: Jérôme Benoit <[email protected]> Signed-off-by: Jérôme Benoit <[email protected]>
-rw-r--r--packages/opencode/src/env/index.ts2
-rw-r--r--packages/opencode/src/provider/provider.ts20
-rw-r--r--packages/web/src/content/docs/providers.mdx10
3 files changed, 20 insertions, 12 deletions
diff --git a/packages/opencode/src/env/index.ts b/packages/opencode/src/env/index.ts
index 56a8c921f..8c40c08ed 100644
--- a/packages/opencode/src/env/index.ts
+++ b/packages/opencode/src/env/index.ts
@@ -2,7 +2,7 @@ import { Instance } from "../project/instance"
export namespace Env {
const state = Instance.state(() => {
- return { ...process.env } as Record<string, string | undefined>
+ return process.env as Record<string, string | undefined>
})
export function get(key: string) {
diff --git a/packages/opencode/src/provider/provider.ts b/packages/opencode/src/provider/provider.ts
index d6901cba8..880238a0d 100644
--- a/packages/opencode/src/provider/provider.ts
+++ b/packages/opencode/src/provider/provider.ts
@@ -287,13 +287,21 @@ export namespace Provider {
},
"sap-ai-core": async () => {
const auth = await Auth.get("sap-ai-core")
- const serviceKey = Env.get("SAP_AI_SERVICE_KEY") || (auth?.type === "api" ? auth.key : undefined)
- const deploymentId = Env.get("SAP_AI_DEPLOYMENT_ID") || "d65d81e7c077e583"
- const resourceGroup = Env.get("SAP_AI_RESOURCE_GROUP") || "default"
+ const envServiceKey = iife(() => {
+ const envAICoreServiceKey = Env.get("AICORE_SERVICE_KEY")
+ if (envAICoreServiceKey) return envAICoreServiceKey
+ if (auth?.type === "api") {
+ Env.set("AICORE_SERVICE_KEY", auth.key)
+ return auth.key
+ }
+ return undefined
+ })
+ const deploymentId = Env.get("AICORE_DEPLOYMENT_ID")
+ const resourceGroup = Env.get("AICORE_RESOURCE_GROUP")
return {
- autoload: !!serviceKey,
- options: serviceKey ? { serviceKey, deploymentId, resourceGroup } : {},
+ autoload: !!envServiceKey,
+ options: envServiceKey ? { deploymentId, resourceGroup } : {},
async getModel(sdk: any, modelID: string) {
return sdk(modelID)
},
@@ -795,7 +803,7 @@ export namespace Provider {
const mod = await import(installedPath)
const fn = mod[Object.keys(mod).find((key) => key.startsWith("create"))!]
- const loaded = await fn({
+ const loaded = fn({
name: model.providerID,
...options,
})
diff --git a/packages/web/src/content/docs/providers.mdx b/packages/web/src/content/docs/providers.mdx
index 9d51057a8..8405966f7 100644
--- a/packages/web/src/content/docs/providers.mdx
+++ b/packages/web/src/content/docs/providers.mdx
@@ -947,26 +947,26 @@ SAP AI Core provides access to 40+ models from OpenAI, Anthropic, Google, Amazon
└ enter
```
- Or set the `SAP_AI_SERVICE_KEY` environment variable:
+ Or set the `AICORE_SERVICE_KEY` environment variable:
```bash
- SAP_AI_SERVICE_KEY='{"clientid":"...","clientsecret":"...","url":"...","serviceurls":{"AI_API_URL":"..."}}' opencode
+ AICORE_SERVICE_KEY='{"clientid":"...","clientsecret":"...","url":"...","serviceurls":{"AI_API_URL":"..."}}' opencode
```
Or add it to your bash profile:
```bash title="~/.bash_profile"
- export SAP_AI_SERVICE_KEY='{"clientid":"...","clientsecret":"...","url":"...","serviceurls":{"AI_API_URL":"..."}}'
+ export AICORE_SERVICE_KEY='{"clientid":"...","clientsecret":"...","url":"...","serviceurls":{"AI_API_URL":"..."}}'
```
4. Optionally set deployment ID and resource group:
```bash
- SAP_AI_DEPLOYMENT_ID=your-deployment-id SAP_AI_RESOURCE_GROUP=your-resource-group opencode
+ AICORE_DEPLOYMENT_ID=your-deployment-id AICORE_RESOURCE_GROUP=your-resource-group opencode
```
:::note
- If not set, uses deployment ID `d65d81e7c077e583` (general-purpose) and resource group `default`. Configure these for your specific setup.
+ These settings are optional and should be configured according to your SAP AI Core setup.
:::
5. Run the `/models` command to select from 40+ available models.