diff --git a/src/cli.ts b/src/cli.ts index 4972122..7999684 100644 --- a/src/cli.ts +++ b/src/cli.ts @@ -163,18 +163,18 @@ async function main(): Promise { } const baseUrl = - values["base-url"] ?? process.env.CLAUDELY_BASE_URL ?? config.baseUrl ?? provider.defaultBaseUrl(); - const token = values.token ?? process.env.CLAUDELY_TOKEN ?? config.token ?? provider.defaultToken; + values["base-url"] ?? process.env.CLAUDELY_BASE_URL ?? (config.baseUrl || undefined) ?? provider.defaultBaseUrl(); + const token = values.token ?? process.env.CLAUDELY_TOKEN ?? (config.token || undefined) ?? provider.defaultToken; if (!baseUrl) { console.error( - "claudely: provider 'custom' requires --base-url (or $CLAUDELY_BASE_URL)", + `claudely: provider '${providerName}' requires --base-url (or $CLAUDELY_BASE_URL, or run \`claudely setup\`)`, ); return 2; } if (!token) { console.error( - "claudely: provider 'custom' requires --token (or $CLAUDELY_TOKEN)", + `claudely: provider '${providerName}' requires --token (or $CLAUDELY_TOKEN, or run \`claudely setup\`)`, ); return 2; } diff --git a/src/setup.ts b/src/setup.ts index b4fa060..8c78ef5 100644 --- a/src/setup.ts +++ b/src/setup.ts @@ -29,14 +29,31 @@ export async function runSetup(): Promise { const provider = PROVIDERS[providerName]; - const baseUrl = await input({ - message: "Base URL", - default: existing.baseUrl ?? provider.defaultBaseUrl(), - }); + const providerDefault = provider.defaultBaseUrl(); + let baseUrl: string; + if (existing.baseUrl && existing.baseUrl !== providerDefault) { + const CUSTOM = "__custom__"; + const picked = await select({ + message: "Base URL", + choices: [ + { name: `${existing.baseUrl} (current)`, value: existing.baseUrl }, + { name: `${providerDefault} (${providerName} default)`, value: providerDefault }, + { name: "Custom URL", value: CUSTOM }, + ], + }); + baseUrl = picked === CUSTOM + ? await input({ message: "Base URL", default: existing.baseUrl }) + : picked; + } else { + baseUrl = await input({ message: "Base URL", default: providerDefault }); + } + const tokenDefault = provider.defaultToken; const token = await input({ - message: "Auth token", - default: existing.token ?? provider.defaultToken, + message: existing.token + ? "Auth token (Enter to keep current, blank to clear)" + : tokenDefault ? "Auth token" : "Auth token (required)", + default: existing.token || tokenDefault, }); let models: ModelEntry[] = []; @@ -73,13 +90,14 @@ export async function runSetup(): Promise { if (manual) model = manual; } - const config: ClaudelyConfig = { provider: providerName, baseUrl, token }; + const config: ClaudelyConfig = { provider: providerName, baseUrl }; + if (token) config.token = token; if (model) config.model = model; console.log("\nConfig to save:"); console.log(` provider: ${config.provider}`); console.log(` baseUrl: ${config.baseUrl}`); - console.log(` token: ${config.token}`); + console.log(` token: ${config.token ?? "(provider default)"}`); if (config.model) console.log(` model: ${config.model}`); console.log();