From 26253891207d06c52530605f1f2246f366e70f7b Mon Sep 17 00:00:00 2001 From: kaitranntt Date: Tue, 30 Dec 2025 13:12:54 -0500 Subject: [PATCH] fix(cliproxy): propagate port in unified config and UI preset handlers Edge case fixes identified in codebase review: - Unified config variant detection: add settingsPath and port fields - Provider editor: use variant port in handleApplyPreset/handleCustomPresetApply - preset-utils: add optional port parameter to applyDefaultPreset() --- src/auth/profile-detector.ts | 2 ++ ui/src/components/cliproxy/provider-editor/index.tsx | 6 ++++-- ui/src/lib/preset-utils.ts | 7 +++++-- 3 files changed, 11 insertions(+), 4 deletions(-) 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,