summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorDax Raad <[email protected]>2026-01-31 01:53:23 -0500
committerDax Raad <[email protected]>2026-01-31 01:53:23 -0500
commit6ecd011e51f8e38bdf1287e0d054e650437f95fc (patch)
tree4c7bb75b33c7379e1de95a9d9c5946dd69a84690
parent8e5db3083cd716e8999b273e50d36193eb2d2f8f (diff)
downloadopencode-6ecd011e51f8e38bdf1287e0d054e650437f95fc.tar.gz
opencode-6ecd011e51f8e38bdf1287e0d054e650437f95fc.zip
tui: allow specifying custom models file path via OPENCODE_MODELS_PATH
Users can now configure their own models configuration file by setting the OPENCODE_MODELS_PATH environment variable, providing more flexibility for testing and configuration.
-rw-r--r--.github/workflows/test.yml4
-rw-r--r--packages/opencode/src/flag/flag.ts1
-rw-r--r--packages/opencode/src/provider/models.ts4
-rw-r--r--packages/opencode/test/preload.ts1
4 files changed, 4 insertions, 6 deletions
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index a9c40781c..2a36c07e1 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -61,10 +61,6 @@ jobs:
printf '%s\n' "XDG_STATE_HOME=${{ runner.temp }}/opencode-e2e/state" >> "$GITHUB_ENV"
fi
- - name: Copy models fixture
- run: |
- cp "${{ github.workspace }}/packages/opencode/test/tool/fixtures/models-api.json" "${{ github.workspace }}/packages/opencode/src/provider/models-snapshot.ts"
-
- name: Seed opencode data
if: matrix.settings.name != 'windows'
working-directory: packages/opencode
diff --git a/packages/opencode/src/flag/flag.ts b/packages/opencode/src/flag/flag.ts
index df9a1d128..64ae801d1 100644
--- a/packages/opencode/src/flag/flag.ts
+++ b/packages/opencode/src/flag/flag.ts
@@ -47,6 +47,7 @@ export namespace Flag {
export const OPENCODE_EXPERIMENTAL_PLAN_MODE = OPENCODE_EXPERIMENTAL || truthy("OPENCODE_EXPERIMENTAL_PLAN_MODE")
export const OPENCODE_EXPERIMENTAL_MARKDOWN = truthy("OPENCODE_EXPERIMENTAL_MARKDOWN")
export const OPENCODE_MODELS_URL = process.env["OPENCODE_MODELS_URL"]
+ export const OPENCODE_MODELS_PATH = process.env["OPENCODE_MODELS_PATH"]
function number(key: string) {
const value = process.env[key]
diff --git a/packages/opencode/src/provider/models.ts b/packages/opencode/src/provider/models.ts
index 8b25abd26..07881cbfe 100644
--- a/packages/opencode/src/provider/models.ts
+++ b/packages/opencode/src/provider/models.ts
@@ -85,9 +85,9 @@ export namespace ModelsDev {
}
export const Data = lazy(async () => {
- const file = Bun.file(filepath)
+ const file = Bun.file(Flag.OPENCODE_MODELS_PATH ?? filepath)
const result = await file.json().catch(() => {})
- if (result && typeof result === "object" && Object.keys(result).length > 0) return result
+ if (result) return result
// @ts-ignore
const snapshot = await import("./models-snapshot")
.then((m) => m.snapshot as Record<string, unknown>)
diff --git a/packages/opencode/test/preload.ts b/packages/opencode/test/preload.ts
index c1b03ea82..f0d0272af 100644
--- a/packages/opencode/test/preload.ts
+++ b/packages/opencode/test/preload.ts
@@ -25,6 +25,7 @@ process.env["XDG_DATA_HOME"] = path.join(dir, "share")
process.env["XDG_CACHE_HOME"] = path.join(dir, "cache")
process.env["XDG_CONFIG_HOME"] = path.join(dir, "config")
process.env["XDG_STATE_HOME"] = path.join(dir, "state")
+process.env["OPENCODE_MODELS_PATH"] = path.join(import.meta.dir, "tool", "fixtures", "models-api.json")
// Write the cache version file to prevent global/index.ts from clearing the cache
const cacheDir = path.join(dir, "cache", "opencode")