Fix review feedback: duplicate wizard entry, command resolution, @types/node
- Remove duplicate opencode_local adapter entry in OnboardingWizard (old Code-icon version), keeping only the OpenCodeLogoIcon entry - Extract resolveOpenCodeCommand() helper to deduplicate the PAPERCLIP_OPENCODE_COMMAND env-var fallback logic in models.ts - Bump @types/node from ^22.12.0 to ^24.6.0 to match the monorepo Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -45,7 +45,7 @@
|
|||||||
"picocolors": "^1.1.1"
|
"picocolors": "^1.1.1"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/node": "^22.12.0",
|
"@types/node": "^24.6.0",
|
||||||
"typescript": "^5.7.3"
|
"typescript": "^5.7.3"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,6 +8,15 @@ import {
|
|||||||
|
|
||||||
const MODELS_CACHE_TTL_MS = 60_000;
|
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<string, { expiresAt: number; models: AdapterModel[] }>();
|
const discoveryCache = new Map<string, { expiresAt: number; models: AdapterModel[] }>();
|
||||||
const VOLATILE_ENV_KEY_PREFIXES = ["PAPERCLIP_", "npm_", "NPM_"] as const;
|
const VOLATILE_ENV_KEY_PREFIXES = ["PAPERCLIP_", "npm_", "NPM_"] as const;
|
||||||
const VOLATILE_ENV_KEY_EXACT = new Set(["PWD", "OLDPWD", "SHLVL", "_", "TERM_SESSION_ID"]);
|
const VOLATILE_ENV_KEY_EXACT = new Set(["PWD", "OLDPWD", "SHLVL", "_", "TERM_SESSION_ID"]);
|
||||||
@@ -94,13 +103,7 @@ export async function discoverOpenCodeModels(input: {
|
|||||||
cwd?: unknown;
|
cwd?: unknown;
|
||||||
env?: unknown;
|
env?: unknown;
|
||||||
} = {}): Promise<AdapterModel[]> {
|
} = {}): Promise<AdapterModel[]> {
|
||||||
const command = asString(
|
const command = resolveOpenCodeCommand(input.command);
|
||||||
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 cwd = asString(input.cwd, process.cwd());
|
const cwd = asString(input.cwd, process.cwd());
|
||||||
const env = normalizeEnv(input.env);
|
const env = normalizeEnv(input.env);
|
||||||
const runtimeEnv = normalizeEnv(ensurePathInEnv({ ...process.env, ...env }));
|
const runtimeEnv = normalizeEnv(ensurePathInEnv({ ...process.env, ...env }));
|
||||||
@@ -134,13 +137,7 @@ export async function discoverOpenCodeModelsCached(input: {
|
|||||||
cwd?: unknown;
|
cwd?: unknown;
|
||||||
env?: unknown;
|
env?: unknown;
|
||||||
} = {}): Promise<AdapterModel[]> {
|
} = {}): Promise<AdapterModel[]> {
|
||||||
const command = asString(
|
const command = resolveOpenCodeCommand(input.command);
|
||||||
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 cwd = asString(input.cwd, process.cwd());
|
const cwd = asString(input.cwd, process.cwd());
|
||||||
const env = normalizeEnv(input.env);
|
const env = normalizeEnv(input.env);
|
||||||
const key = discoveryCacheKey(command, cwd, env);
|
const key = discoveryCacheKey(command, cwd, env);
|
||||||
|
|||||||
@@ -659,12 +659,6 @@ export function OnboardingWizard() {
|
|||||||
desc: "Local Codex agent",
|
desc: "Local Codex agent",
|
||||||
recommended: true
|
recommended: true
|
||||||
},
|
},
|
||||||
{
|
|
||||||
value: "opencode_local" as const,
|
|
||||||
label: "OpenCode",
|
|
||||||
icon: Code,
|
|
||||||
desc: "Local OpenCode agent"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
value: "opencode_local" as const,
|
value: "opencode_local" as const,
|
||||||
label: "OpenCode",
|
label: "OpenCode",
|
||||||
|
|||||||
Reference in New Issue
Block a user