diff --git a/src/auth/profile-detector.ts b/src/auth/profile-detector.ts index ad6d4c3f..a3fad69b 100644 --- a/src/auth/profile-detector.ts +++ b/src/auth/profile-detector.ts @@ -112,6 +112,8 @@ class ProfileDetector { type: 'cliproxy', name: profileName, provider: variant.provider as CLIProxyProfileName, + settingsPath: variant.settings, + port: variant.port, }; } diff --git a/ui/src/components/cliproxy/provider-editor/index.tsx b/ui/src/components/cliproxy/provider-editor/index.tsx index 17aa3e7d..7e79ffaf 100644 --- a/ui/src/components/cliproxy/provider-editor/index.tsx +++ b/ui/src/components/cliproxy/provider-editor/index.tsx @@ -94,8 +94,9 @@ export function ProviderEditor({ const accounts = authStatus.accounts || []; const handleApplyPreset = (updates: Record) => { + const effectivePort = port ?? CLIPROXY_PORT; updateEnvValues({ - ANTHROPIC_BASE_URL: `http://127.0.0.1:${CLIPROXY_PORT}/api/provider/${provider}`, + ANTHROPIC_BASE_URL: `http://127.0.0.1:${effectivePort}/api/provider/${provider}`, ANTHROPIC_AUTH_TOKEN: 'ccs-internal-managed', ...updates, }); @@ -103,8 +104,9 @@ export function ProviderEditor({ }; const handleCustomPresetApply = (values: ModelMappingValues, presetName?: string) => { + const effectivePort = port ?? CLIPROXY_PORT; updateEnvValues({ - ANTHROPIC_BASE_URL: `http://127.0.0.1:${CLIPROXY_PORT}/api/provider/${provider}`, + ANTHROPIC_BASE_URL: `http://127.0.0.1:${effectivePort}/api/provider/${provider}`, ANTHROPIC_AUTH_TOKEN: 'ccs-internal-managed', ANTHROPIC_MODEL: values.default, ANTHROPIC_DEFAULT_OPUS_MODEL: values.opus, diff --git a/ui/src/lib/preset-utils.ts b/ui/src/lib/preset-utils.ts index 7b74ed6b..80ce9673 100644 --- a/ui/src/lib/preset-utils.ts +++ b/ui/src/lib/preset-utils.ts @@ -13,10 +13,12 @@ export const CLIPROXY_PORT = 8317; * Uses the first model's presetMapping or falls back to using defaultModel for all tiers * * @param provider - The provider ID (e.g., 'gemini', 'codex', 'agy') + * @param port - Optional custom port (defaults to CLIPROXY_PORT) * @returns Object with success status and applied preset name */ export async function applyDefaultPreset( - provider: string + provider: string, + port?: number ): Promise<{ success: boolean; presetName?: string }> { const catalog = MODEL_CATALOGS[provider]; if (!catalog) return { success: false }; @@ -30,9 +32,10 @@ export async function applyDefaultPreset( haiku: catalog.defaultModel, }; + const effectivePort = port ?? CLIPROXY_PORT; const settings = { env: { - ANTHROPIC_BASE_URL: `http://127.0.0.1:${CLIPROXY_PORT}/api/provider/${provider}`, + ANTHROPIC_BASE_URL: `http://127.0.0.1:${effectivePort}/api/provider/${provider}`, ANTHROPIC_AUTH_TOKEN: 'ccs-internal-managed', ANTHROPIC_MODEL: mapping.default, ANTHROPIC_DEFAULT_OPUS_MODEL: mapping.opus,