diff --git a/packages/adapters/opencode-local/package.json b/packages/adapters/opencode-local/package.json index 1013eb50..7c6b48a3 100644 --- a/packages/adapters/opencode-local/package.json +++ b/packages/adapters/opencode-local/package.json @@ -45,7 +45,7 @@ "picocolors": "^1.1.1" }, "devDependencies": { - "@types/node": "^22.12.0", + "@types/node": "^24.6.0", "typescript": "^5.7.3" } } diff --git a/packages/adapters/opencode-local/src/server/models.ts b/packages/adapters/opencode-local/src/server/models.ts index 99f850a1..dd2eb2c6 100644 --- a/packages/adapters/opencode-local/src/server/models.ts +++ b/packages/adapters/opencode-local/src/server/models.ts @@ -8,6 +8,15 @@ import { const MODELS_CACHE_TTL_MS = 60_000; +function resolveOpenCodeCommand(input: unknown): string { + const envOverride = + typeof process.env.PAPERCLIP_OPENCODE_COMMAND === "string" && + process.env.PAPERCLIP_OPENCODE_COMMAND.trim().length > 0 + ? process.env.PAPERCLIP_OPENCODE_COMMAND.trim() + : "opencode"; + return asString(input, envOverride); +} + const discoveryCache = new Map(); const VOLATILE_ENV_KEY_PREFIXES = ["PAPERCLIP_", "npm_", "NPM_"] as const; const VOLATILE_ENV_KEY_EXACT = new Set(["PWD", "OLDPWD", "SHLVL", "_", "TERM_SESSION_ID"]); @@ -94,13 +103,7 @@ export async function discoverOpenCodeModels(input: { cwd?: unknown; env?: unknown; } = {}): Promise { - const command = asString( - input.command, - (typeof process.env.PAPERCLIP_OPENCODE_COMMAND === "string" && - process.env.PAPERCLIP_OPENCODE_COMMAND.trim().length > 0 - ? process.env.PAPERCLIP_OPENCODE_COMMAND.trim() - : "opencode"), - ); + const command = resolveOpenCodeCommand(input.command); const cwd = asString(input.cwd, process.cwd()); const env = normalizeEnv(input.env); const runtimeEnv = normalizeEnv(ensurePathInEnv({ ...process.env, ...env })); @@ -134,13 +137,7 @@ export async function discoverOpenCodeModelsCached(input: { cwd?: unknown; env?: unknown; } = {}): Promise { - const command = asString( - input.command, - (typeof process.env.PAPERCLIP_OPENCODE_COMMAND === "string" && - process.env.PAPERCLIP_OPENCODE_COMMAND.trim().length > 0 - ? process.env.PAPERCLIP_OPENCODE_COMMAND.trim() - : "opencode"), - ); + const command = resolveOpenCodeCommand(input.command); const cwd = asString(input.cwd, process.cwd()); const env = normalizeEnv(input.env); const key = discoveryCacheKey(command, cwd, env); diff --git a/ui/src/components/OnboardingWizard.tsx b/ui/src/components/OnboardingWizard.tsx index b4ab034e..77fb4db8 100644 --- a/ui/src/components/OnboardingWizard.tsx +++ b/ui/src/components/OnboardingWizard.tsx @@ -659,12 +659,6 @@ export function OnboardingWizard() { desc: "Local Codex agent", recommended: true }, - { - value: "opencode_local" as const, - label: "OpenCode", - icon: Code, - desc: "Local OpenCode agent" - }, { value: "opencode_local" as const, label: "OpenCode",