From fb9509d9be08187077baf44d2141aadc2518e551 Mon Sep 17 00:00:00 2001 From: "Kai (Tam Nhu) Tran" <61256810+kaitranntt@users.noreply.github.com> Date: Tue, 23 Jun 2026 12:57:33 -0400 Subject: [PATCH 01/52] fix: make CCS Bar launch descriptor use private shim Use a private safe ccs.js shim for native CCS Bar launch descriptors so symlinked Bun installs do not fall back to an app environment without node on PATH. --- eslint-rules/throw-error-baseline.json | 26 +++---- src/commands/bar/bar-paths.ts | 2 +- src/commands/bar/install-subcommand.ts | 11 +-- src/commands/bar/launch-descriptor.ts | 68 +++++++++++++++++++ src/commands/bar/launch-subcommand.ts | 17 +---- tests/unit/commands/bar-command.test.ts | 3 + .../bar-lifecycle-subcommands.test.ts | 59 ++++++++++++++++ 7 files changed, 150 insertions(+), 36 deletions(-) create mode 100644 src/commands/bar/launch-descriptor.ts diff --git a/eslint-rules/throw-error-baseline.json b/eslint-rules/throw-error-baseline.json index 9cbbe875..0536a9d7 100644 --- a/eslint-rules/throw-error-baseline.json +++ b/eslint-rules/throw-error-baseline.json @@ -99,19 +99,19 @@ "src/codex-auth/commands/import-default-command.ts:134", "src/codex-auth/commands/import-default-command.ts:146", "src/codex-auth/commands/import-default-command.ts:167", - "src/commands/bar/install-subcommand.ts:137", - "src/commands/bar/install-subcommand.ts:141", - "src/commands/bar/install-subcommand.ts:149", - "src/commands/bar/install-subcommand.ts:172", - "src/commands/bar/install-subcommand.ts:181", - "src/commands/bar/install-subcommand.ts:187", - "src/commands/bar/install-subcommand.ts:228", - "src/commands/bar/install-subcommand.ts:249", - "src/commands/bar/install-subcommand.ts:259", - "src/commands/bar/install-subcommand.ts:271", - "src/commands/bar/install-subcommand.ts:289", - "src/commands/bar/install-subcommand.ts:316", - "src/commands/bar/launch-subcommand.ts:212", + "src/commands/bar/install-subcommand.ts:138", + "src/commands/bar/install-subcommand.ts:142", + "src/commands/bar/install-subcommand.ts:150", + "src/commands/bar/install-subcommand.ts:173", + "src/commands/bar/install-subcommand.ts:182", + "src/commands/bar/install-subcommand.ts:188", + "src/commands/bar/install-subcommand.ts:229", + "src/commands/bar/install-subcommand.ts:250", + "src/commands/bar/install-subcommand.ts:260", + "src/commands/bar/install-subcommand.ts:272", + "src/commands/bar/install-subcommand.ts:290", + "src/commands/bar/install-subcommand.ts:317", + "src/commands/bar/launch-subcommand.ts:207", "src/commands/config-channels-command.ts:431", "src/commands/config-channels-command.ts:436", "src/commands/config-channels-command.ts:447", diff --git a/src/commands/bar/bar-paths.ts b/src/commands/bar/bar-paths.ts index c8edfe93..78780733 100644 --- a/src/commands/bar/bar-paths.ts +++ b/src/commands/bar/bar-paths.ts @@ -41,7 +41,7 @@ export interface LaunchJson { schema: typeof LAUNCH_JSON_SCHEMA; /** Absolute path to the node/bun binary (process.execPath). */ runtime: string; - /** Absolute CCS entry point + subcommand args: [process.argv[1], 'bar', 'serve']. */ + /** Absolute private CCS launcher shim + subcommand args: [ccs.js, 'bar', 'serve']. */ args: string[]; /** os.homedir() — cwd for the spawned server. */ home: string; diff --git a/src/commands/bar/install-subcommand.ts b/src/commands/bar/install-subcommand.ts index d0fd2903..fc435278 100644 --- a/src/commands/bar/install-subcommand.ts +++ b/src/commands/bar/install-subcommand.ts @@ -20,8 +20,9 @@ import * as os from 'os'; import * as path from 'path'; import { getCcsDir } from '../../config/config-loader-facade'; import { hasAnyFlag } from '../arg-extractor'; -import { getLaunchJsonPath, LAUNCH_JSON_SCHEMA } from './bar-paths'; +import { getLaunchJsonPath } from './bar-paths'; import type { LaunchJson } from './bar-paths'; +import { createBarLaunchDescriptor } from './launch-descriptor'; // --------------------------------------------------------------------------- // Constants @@ -671,13 +672,7 @@ export async function handleBarInstall( // Non-fatal — install has already succeeded at this point. try { const launchJsonPath = getLaunchJsonPath(ccsDir); - const launchDescriptor: LaunchJson = { - schema: LAUNCH_JSON_SCHEMA, - runtime: process.execPath, - args: [process.argv[1], 'bar', 'serve'], - home: os.homedir(), - ...(process.env.CCS_HOME ? { ccsHome: process.env.CCS_HOME } : {}), - }; + const launchDescriptor = createBarLaunchDescriptor(); writeLaunchDescriptor(launchJsonPath, launchDescriptor); } catch (err) { const msg = err instanceof Error ? err.message : String(err); diff --git a/src/commands/bar/launch-descriptor.ts b/src/commands/bar/launch-descriptor.ts new file mode 100644 index 00000000..61ededb0 --- /dev/null +++ b/src/commands/bar/launch-descriptor.ts @@ -0,0 +1,68 @@ +/** + * Safe launch descriptor builder for the native CCS Bar app. + * + * The Swift app intentionally distrusts `~/.ccs/bar/launch.json`; it only + * accepts a regular, non-group-writable/non-world-writable `ccs.js` entrypoint. + * Bun global installs expose `~/.bun/bin/ccs` as a symlink and the target file + * can be group/world writable, so the descriptor points at a private shim + * instead of the package-manager entrypoint. + */ + +import * as fs from 'fs'; +import * as os from 'os'; +import * as path from 'path'; +import { ConfigError } from '../../errors/error-types'; +import { LAUNCH_JSON_SCHEMA } from './bar-paths'; +import type { LaunchJson } from './bar-paths'; + +const SHIM_MODE = 0o700; + +export interface LaunchDescriptorOptions { + entrypointPath?: string; + runtime?: string; + home?: string; + ccsHome?: string; +} + +export function getLaunchShimPath(home: string = os.homedir()): string { + return path.join(home, 'Library', 'Application Support', 'CCS Bar', 'launcher', 'ccs.js'); +} + +function resolveEntrypoint(entrypointPath?: string): string { + const candidate = entrypointPath ?? process.argv[1]; + if (!candidate) { + throw new ConfigError('Unable to resolve the current CCS entrypoint for CCS Bar launch.json.'); + } + return fs.realpathSync(candidate); +} + +export function writeLaunchShim(home: string, entrypointPath?: string): string { + const resolvedEntrypoint = resolveEntrypoint(entrypointPath); + const shimPath = getLaunchShimPath(home); + const shimDir = path.dirname(shimPath); + const contents = [ + '#!/usr/bin/env node', + `require(${JSON.stringify(resolvedEntrypoint)});`, + '', + ].join('\n'); + + fs.mkdirSync(shimDir, { recursive: true, mode: SHIM_MODE }); + fs.writeFileSync(shimPath, contents, { mode: SHIM_MODE }); + fs.chmodSync(shimDir, SHIM_MODE); + fs.chmodSync(shimPath, SHIM_MODE); + + return shimPath; +} + +export function createBarLaunchDescriptor(options: LaunchDescriptorOptions = {}): LaunchJson { + const home = options.home ?? os.homedir(); + const entrypoint = writeLaunchShim(home, options.entrypointPath); + const ccsHome = options.ccsHome ?? process.env.CCS_HOME; + return { + schema: LAUNCH_JSON_SCHEMA, + runtime: options.runtime ?? process.execPath, + args: [entrypoint, 'bar', 'serve'], + home, + ...(ccsHome ? { ccsHome } : {}), + }; +} diff --git a/src/commands/bar/launch-subcommand.ts b/src/commands/bar/launch-subcommand.ts index 132c7563..4b22a182 100644 --- a/src/commands/bar/launch-subcommand.ts +++ b/src/commands/bar/launch-subcommand.ts @@ -22,14 +22,9 @@ import * as path from 'path'; import type { ChildProcess } from 'child_process'; import { getCcsDir } from '../../config/config-loader-facade'; import { BAR_AUTH_TOKEN_HEADER, getOrCreateBarAuthToken } from '../../utils/bar-auth-token'; -import { - getBarDir, - getBarJsonPath, - getLaunchJsonPath, - getServeLogPath, - LAUNCH_JSON_SCHEMA, -} from './bar-paths'; +import { getBarDir, getBarJsonPath, getLaunchJsonPath, getServeLogPath } from './bar-paths'; import type { LaunchJson } from './bar-paths'; +import { createBarLaunchDescriptor } from './launch-descriptor'; import { defaultFindRunningServer as _defaultFindRunningServer, resolveBarPort as _resolveBarPort, @@ -305,14 +300,8 @@ export async function handleBarLaunch( } // 2b. Write/refresh launch.json so the Swift app can self-start next time. - const launchDescriptor: LaunchJson = { - schema: LAUNCH_JSON_SCHEMA, - runtime: process.execPath, - args: [process.argv[1], 'bar', 'serve'], - home: os.homedir(), - ...(process.env.CCS_HOME ? { ccsHome: process.env.CCS_HOME } : {}), - }; try { + const launchDescriptor = createBarLaunchDescriptor(); writeLaunchDescriptor(launchJsonPath, launchDescriptor); } catch (err) { // Non-fatal — the Swift app falls back to resolving `ccs` via PATH. diff --git a/tests/unit/commands/bar-command.test.ts b/tests/unit/commands/bar-command.test.ts index de542930..f94de371 100644 --- a/tests/unit/commands/bar-command.test.ts +++ b/tests/unit/commands/bar-command.test.ts @@ -99,6 +99,7 @@ beforeEach(() => { afterEach(() => { restoreConsole(); mock.restore(); + process.exitCode = 0; if (originalCcsHome === undefined) { delete process.env.CCS_HOME; @@ -197,6 +198,8 @@ describe('bar command dispatcher (index.ts)', () => { const handleBarCommand = await loadHandleBarCommand(); // Should print help or error but not crash await expect(handleBarCommand(['unknown-subcommand'])).resolves.toBeUndefined(); + expect(process.exitCode).toBe(1); + process.exitCode = 0; }); it('dispatches `ccs bar --help` to help subcommand and does not launch', async () => { diff --git a/tests/unit/commands/bar-lifecycle-subcommands.test.ts b/tests/unit/commands/bar-lifecycle-subcommands.test.ts index 89ac7747..d7a4d285 100644 --- a/tests/unit/commands/bar-lifecycle-subcommands.test.ts +++ b/tests/unit/commands/bar-lifecycle-subcommands.test.ts @@ -98,6 +98,11 @@ async function loadInstallSubcommand() { }; } +async function loadLaunchDescriptor() { + moduleSeq++; + return import(`../../../src/commands/bar/launch-descriptor?test=${Date.now()}-${moduleSeq}`); +} + // --------------------------------------------------------------------------- // Setup / teardown // --------------------------------------------------------------------------- @@ -718,6 +723,8 @@ describe('launch: detached-spawn model', () => { }; expect(desc.schema).toBe(1); expect(desc.runtime).toBe(process.execPath); + expect(path.basename(desc.args[0])).toBe('ccs.js'); + expect(desc.args[0]).not.toContain(`${path.sep}.ccs${path.sep}`); expect(desc.args).toContain('bar'); expect(desc.args).toContain('serve'); expect(desc.home).toBe(os.homedir()); @@ -754,6 +761,56 @@ describe('launch: detached-spawn model', () => { }); }); +// --------------------------------------------------------------------------- +// launch-descriptor: safe shim for native app self-start +// --------------------------------------------------------------------------- + +describe('launch descriptor shim', () => { + it('creates a private ccs.js shim for symlinked Bun-style entrypoints', async () => { + const ccsDir = path.join(tempHome, '.ccs'); + const packageDist = path.join( + tempHome, + '.bun', + 'install', + 'global', + 'node_modules', + '@kaitranntt', + 'ccs', + 'dist' + ); + const binDir = path.join(tempHome, '.bun', 'bin'); + const realEntrypoint = path.join(packageDist, 'ccs.js'); + const symlinkedEntrypoint = path.join(binDir, 'ccs'); + + fs.mkdirSync(packageDist, { recursive: true }); + fs.mkdirSync(binDir, { recursive: true }); + fs.writeFileSync(realEntrypoint, 'console.log("ccs");\n', { mode: 0o777 }); + fs.symlinkSync(realEntrypoint, symlinkedEntrypoint); + + const { createBarLaunchDescriptor, getLaunchShimPath } = await loadLaunchDescriptor(); + const descriptor = createBarLaunchDescriptor({ + entrypointPath: symlinkedEntrypoint, + runtime: '/usr/local/bin/node', + home: tempHome, + ccsHome: ccsDir, + }); + + const shimPath = getLaunchShimPath(tempHome); + expect(descriptor.runtime).toBe('/usr/local/bin/node'); + expect(descriptor.args).toEqual([shimPath, 'bar', 'serve']); + expect(path.basename(descriptor.args[0])).toBe('ccs.js'); + expect(descriptor.args[0]).not.toContain(`${path.sep}.ccs${path.sep}`); + expect(fs.lstatSync(descriptor.args[0]).isSymbolicLink()).toBe(false); + + const mode = fs.statSync(descriptor.args[0]).mode & 0o777; + expect((mode & 0o022) === 0).toBe(true); + const resolvedEntrypoint = fs.realpathSync(realEntrypoint); + expect(fs.readFileSync(descriptor.args[0], 'utf8')).toContain( + `require(${JSON.stringify(resolvedEntrypoint)});` + ); + }); +}); + // --------------------------------------------------------------------------- // install-subcommand: writeLaunchDescriptor after successful install // --------------------------------------------------------------------------- @@ -800,6 +857,8 @@ describe('install: writeLaunchDescriptor called after successful install', () => }; expect(desc.schema).toBe(1); expect(desc.runtime).toBe(process.execPath); + expect(path.basename(desc.args[0])).toBe('ccs.js'); + expect(desc.args[0]).not.toContain(`${path.sep}.ccs${path.sep}`); expect(desc.args).toContain('bar'); expect(desc.args).toContain('serve'); expect(desc.home).toBe(os.homedir()); From dafee26abdd7557e708445b6964ecbedf7e964e9 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 23 Jun 2026 17:01:46 +0000 Subject: [PATCH 02/52] chore(release): 8.6.0-dev.1 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index dd375d22..d76fbd23 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@kaitranntt/ccs", - "version": "8.6.0", + "version": "8.6.0-dev.1", "description": "Claude Code Switch - Instant profile switching between Claude, GLM, Kimi, and more", "keywords": [ "cli", From 25d67f8ed738d17ee260392f377ed357d8b9d578 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 23 Jun 2026 21:42:31 +0000 Subject: [PATCH 03/52] chore(release): 8.6.1-dev.1 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 323d626e..a7031922 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@kaitranntt/ccs", - "version": "8.6.1", + "version": "8.6.1-dev.1", "description": "Claude Code Switch - Instant profile switching between Claude, GLM, Kimi, and more", "keywords": [ "cli", From ed86a089ba9102538f2aee07cd47515c7cb498ed Mon Sep 17 00:00:00 2001 From: Tam Nhu Tran Date: Tue, 23 Jun 2026 22:56:38 -0400 Subject: [PATCH 04/52] feat(bar): enumerate ccs/ccsx subscription profiles with per-profile quota Replace single-account native quota collection with per-profile enumeration: read ccs auth (Claude) and ccsx auth (Codex) profile registries plus the bare ~/.codex login, fetch each profile's quota under the existing TTL cache, per-profile circuit breaker and 2.5s summary deadline. Emit surface, profile and is_subscription wire fields; account_id becomes ":". Active profiles (valid token) are live-polled and shown undimmed regardless of default status; profiles without resolvable on-disk credentials are parked (cache-only, dimmed). Claude per-profile credentials are read from disk only -- no macOS Keychain access -- so a profile without a credentials file renders as needs-reauth instead of triggering a keychain prompt. --- src/web-server/routes/bar-routes.ts | 16 + .../usage/native-quota-collector.ts | 859 ++++++++++++++++-- tests/unit/web-server/bar-routes.test.ts | 148 +++ .../web-server/native-quota-collector.test.ts | 430 +++++++++ 4 files changed, 1391 insertions(+), 62 deletions(-) diff --git a/src/web-server/routes/bar-routes.ts b/src/web-server/routes/bar-routes.ts index c6d8af96..3acc5fb9 100644 --- a/src/web-server/routes/bar-routes.ts +++ b/src/web-server/routes/bar-routes.ts @@ -96,6 +96,22 @@ export interface BarSummaryRow { fetchedAt: string; /** True if account token is expired and needs re-authentication */ needsReauth: boolean; + /** + * Native subscription surface: "ccs" (Claude Code) or "ccsx" (Codex). + * Present ONLY on native subscription rows; omitted on CLIProxy pool rows. + */ + surface?: string; + /** + * Native profile name (e.g. "work", "ck", "personal"). + * Present ONLY on native subscription rows; omitted on CLIProxy pool rows. + */ + profile?: string; + /** + * Explicit native-subscription flag. true on all native rows; omitted on + * CLIProxy pool rows (decodes to false/nil). Replaces the brittle + * accountId == "claude-code" heuristic in Swift. + */ + is_subscription?: boolean; /** * Native-only per-window quota breakdown (Claude: 5h/week/opus/sonnet, * Codex: 5h/week). CLIProxy rows OMIT this field so existing decode/encode diff --git a/src/web-server/usage/native-quota-collector.ts b/src/web-server/usage/native-quota-collector.ts index bbddccf1..0d89b3c4 100644 --- a/src/web-server/usage/native-quota-collector.ts +++ b/src/web-server/usage/native-quota-collector.ts @@ -14,10 +14,24 @@ * - circuit breaker stops calling after repeated 429s for a cooldown * - serve-stale-on-failure; only omit a row when there is genuinely no data * - * Claude path: reads native credentials + polls api.anthropic.com/api/oauth/usage. + * Claude path: reads per-profile .credentials.json (file-only, NO keychain) + * and polls api.anthropic.com/api/oauth/usage. If the file is absent the + * profile is emitted as a parked row (paused:true) — never a keychain call. + * * Codex path: PRIMARY = live network (chatgpt.com/backend-api/wham/usage, via * fetchCodexQuota), FALLBACK = local session logs (getCodexLocalQuota), mirroring * the same safety pattern as the Claude path. + * + * Multi-profile: each Claude or Codex profile gets its own ProviderState so a + * 429 on one profile never trips the breaker of another. The active/default + * profile for each surface is live-polled (paused:false); all other profiles are + * cache-only (paused:true, force=false hardcoded) so the 2.5s /summary deadline + * is maintained — at most 2 live upstream calls per /summary regardless of + * profile count. + * + * NO macOS Keychain access anywhere in this module. The old global-default + * Claude reader (readClaudeCredentials) is kept for back-compat but is no longer + * used by the multi-profile path. */ import { @@ -34,6 +48,11 @@ import { getCodexLocalQuota, type CodexLocalQuota } from './codex-local-quota-co import type { ClaudeQuotaResult, CodexQuotaResult } from '../../cliproxy/quota/quota-types'; import type { BarSummaryRow, QuotaWindowDetail } from '../routes/bar-routes'; +import * as fs from 'node:fs'; +import * as path from 'node:path'; +import * as os from 'node:os'; +import { getCcsDir } from '../../utils/config-manager'; + // ============================================================================ // Safety constants (concrete, named, module-level) // ============================================================================ @@ -57,16 +76,31 @@ const CB_TRIP_THRESHOLD = 3; /** How long the breaker stays open (zero network) once tripped. */ const CB_COOLDOWN_MS = 900_000; // 15 minutes -const CLAUDE_PROVIDER = 'claude-code'; -const CODEX_PROVIDER = 'codex'; +// Surface identifiers +const SURFACE_CLAUDE = 'ccs'; +const SURFACE_CODEX = 'ccsx'; + +// Provider values on the wire (unchanged from before) +const CLAUDE_NATIVE_PROVIDER = 'claude-code'; +const CODEX_NATIVE_PROVIDER = 'codex'; + +// Keep old names as aliases to avoid breaking the existing global collector path +const CLAUDE_PROVIDER = CLAUDE_NATIVE_PROVIDER; +const CODEX_PROVIDER = CODEX_NATIVE_PROVIDER; // ============================================================================ // Injectable dependencies (tests inject mocks; never live endpoints in CI) // ============================================================================ export interface NativeQuotaDeps { - /** Read the native Claude Code credentials. */ + /** Read the native Claude Code credentials (global default path). */ readCredentials?: () => ClaudeNativeCredentials | null; + /** + * Read credentials for a specific Claude profile (file-only, no keychain). + * Injected so tests never touch real fs or Keychain. + * profile: the profile name (e.g. "work"); returns null when absent/unparseable. + */ + readClaudeCredentialsForProfile?: (profile: string) => ClaudeNativeCredentials | null; /** Fetch Claude quota with a directly-supplied native token. */ fetchClaudeQuota?: (accessToken: string, accountId?: string) => Promise; /** @@ -81,6 +115,20 @@ export interface NativeQuotaDeps { fetchCodexNetworkQuota?: (accountId: string) => Promise; /** Read Codex quota from local session logs (zero network, fallback). */ getCodexQuota?: () => Promise; + /** + * Read the native Codex auth for a profile (file-only, no keychain). + * 'personal' reads ~/.codex/auth.json; other names read codex-instances//auth.json. + * Returns null when absent/unparseable. + */ + readCodexNativeAuth?: (profile: string) => { accessToken: string; accountId: string } | null; + /** Enumerate Claude profile names. Injected so tests never touch real fs. */ + listClaudeProfiles?: () => string[]; + /** Enumerate Codex profile names (including 'personal' for bare ~/.codex). */ + listCodexProfiles?: () => string[]; + /** Resolve the default Claude profile name. */ + defaultClaudeProfile?: () => string | null; + /** Resolve the default Codex profile name. */ + defaultCodexProfile?: () => string | null; /** Clock seam for deterministic backoff/TTL/breaker tests. */ now?: () => number; /** Sleep seam (no real delay in tests). */ @@ -120,13 +168,23 @@ function freshProviderState(): ProviderState { }; } -const claudeState = freshProviderState(); -const codexState = freshProviderState(); +// Per-profile state maps (key = profile name) +const claudeProfileStates = new Map(); +const codexProfileStates = new Map(); + +function getState(map: Map, key: string): ProviderState { + let s = map.get(key); + if (!s) { + s = freshProviderState(); + map.set(key, s); + } + return s; +} /** Reset all module state. Tests call this to avoid cross-test pollution. */ export function resetNativeQuotaState(): void { - Object.assign(claudeState, freshProviderState()); - Object.assign(codexState, freshProviderState()); + claudeProfileStates.clear(); + codexProfileStates.clear(); } // ============================================================================ @@ -252,12 +310,21 @@ function buildClaudeQuotaWindows(quota: ClaudeQuotaResult): QuotaWindowDetail[] return windows; } -function buildClaudeRow(quota: ClaudeQuotaResult, tier: string | null, now: number): BarSummaryRow { +function buildClaudeRow( + quota: ClaudeQuotaResult, + tier: string | null, + now: number, + surface: string, + profile: string +): BarSummaryRow { const quotaWindows = buildClaudeQuotaWindows(quota); return { - account_id: CLAUDE_PROVIDER, - provider: CLAUDE_PROVIDER, - displayName: 'Claude Code', + account_id: `${surface}:${profile}`, + provider: CLAUDE_NATIVE_PROVIDER, + surface, + profile, + is_subscription: true, + displayName: profile, tier, paused: false, quota_percentage: deriveClaudeQuotaPercentage(quota), @@ -288,12 +355,20 @@ function buildCodexQuotaWindows(quota: CodexLocalQuota): QuotaWindowDetail[] { })); } -function buildCodexRow(quota: CodexLocalQuota, now: number): BarSummaryRow { +function buildCodexRow( + quota: CodexLocalQuota, + now: number, + surface: string, + profile: string +): BarSummaryRow { const quotaWindows = buildCodexQuotaWindows(quota); return { - account_id: CODEX_PROVIDER, - provider: CODEX_PROVIDER, - displayName: 'Codex', + account_id: `${surface}:${profile}`, + provider: CODEX_NATIVE_PROVIDER, + surface, + profile, + is_subscription: true, + displayName: profile, tier: quota.tier, paused: false, quota_percentage: quota.quotaPercentage, @@ -321,7 +396,12 @@ function buildCodexRow(quota: CodexLocalQuota, now: number): BarSummaryRow { * stable keys as the Claude path. quota_percentage = min remaining across present * core windows. next_reset = soonest core resetAt. No staleAsOf on a live result. */ -function buildCodexNetworkRow(quota: CodexQuotaResult, now: number): BarSummaryRow { +function buildCodexNetworkRow( + quota: CodexQuotaResult, + now: number, + surface: string, + profile: string +): BarSummaryRow { const windows: QuotaWindowDetail[] = []; const fiveHour = quota.coreUsage?.fiveHour; @@ -363,9 +443,12 @@ function buildCodexNetworkRow(quota: CodexQuotaResult, now: number): BarSummaryR const nextReset = resets.length > 0 ? resets[0].iso : null; return { - account_id: CODEX_PROVIDER, - provider: CODEX_PROVIDER, - displayName: 'Codex', + account_id: `${surface}:${profile}`, + provider: CODEX_NATIVE_PROVIDER, + surface, + profile, + is_subscription: true, + displayName: profile, tier: quota.planType ?? null, paused: false, quota_percentage: quotaPercentage, @@ -390,15 +473,177 @@ function serveCached(state: ProviderState): BarSummaryRow | null { } // ============================================================================ -// Claude path with full safety controls +// File-only Claude credentials reader for per-profile paths (NO keychain) // ============================================================================ -async function collectClaudeRow( +/** + * Read credentials for a specific Claude Code profile (file-only, no keychain). + * + * Looks for .credentials.json in the profile's instance directory. If the file + * is absent or unparseable, returns null — the caller emits a parked row. + * Never calls security/Keychain — zero new keychain access from this feature. + */ +function readClaudeCredentialsForProfileFromDisk(profile: string): ClaudeNativeCredentials | null { + try { + const instanceDir = path.join(getCcsDir(), 'instances', profile); + const credFile = path.join(instanceDir, '.credentials.json'); + if (!fs.existsSync(credFile)) return null; + const raw = fs.readFileSync(credFile, 'utf8'); + const parsed = JSON.parse(raw) as unknown; + if (parsed && typeof parsed === 'object' && !Array.isArray(parsed)) { + return parsed as ClaudeNativeCredentials; + } + return null; + } catch { + return null; + } +} + +// ============================================================================ +// Profile enumeration helpers (production implementations, DI-overridable) +// ============================================================================ + +/** + * Read Codex native auth from the profile's on-disk auth.json. + * 'personal' reads ~/.codex/auth.json; other names read codex-instances//auth.json. + * Returns null when absent or unparseable. + */ +function readCodexNativeAuthFromDisk( + profile: string +): { accessToken: string; accountId: string } | null { + try { + let authPath: string; + if (profile === 'personal') { + authPath = path.join(os.homedir(), '.codex', 'auth.json'); + } else { + // resolveCodexProfileDir would validate, but we do it inline to avoid the + // import coupling and to handle invalid names gracefully (return null). + const instancesDir = path.join(getCcsDir(), 'codex-instances'); + authPath = path.join(instancesDir, profile, 'auth.json'); + } + + if (!fs.existsSync(authPath)) return null; + const raw = fs.readFileSync(authPath, 'utf8'); + const parsed = JSON.parse(raw) as Record; + const tokens = parsed.tokens as Record | undefined; + if (!tokens) return null; + const accessToken = tokens.access_token; + const accountId = tokens.account_id; + if (typeof accessToken !== 'string' || !accessToken) return null; + return { + accessToken, + accountId: typeof accountId === 'string' ? accountId : '', + }; + } catch { + return null; + } +} + +/** + * List all Claude profiles from the profile registry (merged legacy + unified). + * Returns [] on any read error so the collector degrades gracefully. + */ +function listClaudeProfilesFromDisk(): string[] { + try { + // Import lazily inside function to avoid circular dep and DI override in tests + const { ProfileRegistry } = require('../../auth/profile-registry') as { + ProfileRegistry: new () => { + getAllProfilesMerged: () => Record; + }; + }; + const registry = new ProfileRegistry(); + return Object.keys(registry.getAllProfilesMerged()); + } catch { + return []; + } +} + +/** + * Resolve the default Claude profile. Returns null when none is set. + */ +function getDefaultClaudeProfileFromDisk(): string | null { + try { + const { ProfileRegistry } = require('../../auth/profile-registry') as { + ProfileRegistry: new () => { + getDefaultResolved: () => string | null; + }; + }; + const registry = new ProfileRegistry(); + return registry.getDefaultResolved(); + } catch { + return null; + } +} + +/** + * List all Codex profiles from the registry, plus 'personal' when the bare + * ~/.codex/auth.json exists. Returns [] on any read error. + */ +function listCodexProfilesFromDisk(): string[] { + try { + const { CodexProfileRegistry } = require('../../codex-auth/codex-profile-registry') as { + CodexProfileRegistry: new () => { + listProfiles: () => string[]; + }; + }; + const registry = new CodexProfileRegistry(); + const profiles = registry.listProfiles(); + // Add 'personal' for the bare ~/.codex/auth.json if it exists + if (fs.existsSync(path.join(os.homedir(), '.codex', 'auth.json'))) { + if (!profiles.includes('personal')) profiles.push('personal'); + } + return profiles; + } catch { + return []; + } +} + +/** + * Resolve the default Codex profile. Falls back to 'personal' when the bare + * ~/.codex/auth.json exists and no registry default is set. + */ +function getDefaultCodexProfileFromDisk(): string | null { + try { + const { CodexProfileRegistry } = require('../../codex-auth/codex-profile-registry') as { + CodexProfileRegistry: new () => { + getDefault: () => string | null; + }; + }; + const registry = new CodexProfileRegistry(); + const def = registry.getDefault(); + if (def) return def; + // Fall back to 'personal' if the bare auth.json exists + if (fs.existsSync(path.join(os.homedir(), '.codex', 'auth.json'))) return 'personal'; + return null; + } catch { + return null; + } +} + +// ============================================================================ +// Per-profile collectors with full safety controls +// ============================================================================ + +/** + * Tag a row with whether it is the surface's default profile (drives the + * "active" badge only). The row's own `paused` flag is authoritative for + * dimming: it is already set by the collector to reflect LIVENESS — parked + * (no on-disk creds / unsupported) rows arrive with paused:true; profiles with + * a usable token arrive with paused:false regardless of default status. We must + * NOT override `paused` from `isDefault`, or a valid non-default subscription + * (e.g. an isolated `ccsx` profile) would render dimmed despite live quota. + */ +function markDefault(row: BarSummaryRow, isDefault: boolean): BarSummaryRow { + return { ...row, is_default: isDefault }; +} + +async function collectClaudeRowForProfile( + profile: string, deps: NativeQuotaDeps, force = false ): Promise { const now = (deps.now ?? Date.now)(); - const state = claudeState; + const state = getState(claudeProfileStates, profile); // Serve from cache while within TTL — force bypasses TTL short-circuit. if (!force && state.cachedRow && now - state.cachedAt < NATIVE_QUOTA_TTL_MS) { @@ -416,15 +661,50 @@ async function collectClaudeRow( return state.pending; } - const readCredentials = deps.readCredentials ?? readClaudeCredentials; + // For per-profile reads: use the injected seam (file-only, no keychain). + const readCreds = + deps.readClaudeCredentialsForProfile ?? + ((p: string) => readClaudeCredentialsForProfileFromDisk(p)); const fetchQuota = deps.fetchClaudeQuota ?? fetchClaudeQuotaWithToken; const sleep = deps.sleep ?? defaultSleep; state.pending = (async (): Promise => { try { - const creds = readCredentials(); + const creds = readCreds(profile); + + // No credentials file found -> emit parked row (needs auth, file absent). + // This is the expected case when the profile exists in the registry but the + // user has not logged in via 'ccs auth' for this machine or the credentials + // are stored only in keychain (which we deliberately do not access here). + if (!creds) { + const parkedRow: BarSummaryRow = { + account_id: `${SURFACE_CLAUDE}:${profile}`, + provider: CLAUDE_NATIVE_PROVIDER, + surface: SURFACE_CLAUDE, + profile, + is_subscription: true, + displayName: profile, + tier: null, + paused: true, + quota_percentage: null, + quotaStatus: 'unsupported', + next_reset: null, + is_default: false, + last_activity_at: null, + today_cost: null, + health: 'ok', + cached: false, + fetchedAt: new Date(now).toISOString(), + needsReauth: true, + }; + // Cache the parked row so repeated calls don't re-stat the fs. + state.cachedRow = parkedRow; + state.cachedAt = now; + return parkedRow; + } + // No token / unsupported subscription -> never spend a call, omit the row. - if (!creds || !hasSupportedSubscription(creds)) { + if (!hasSupportedSubscription(creds)) { return serveCached(state); } const token = getAccessToken(creds); @@ -433,7 +713,7 @@ async function collectClaudeRow( } const tier = getSubscriptionTier(creds); - const quota = await fetchQuota(token, CLAUDE_PROVIDER); + const quota = await fetchQuota(token, `${SURFACE_CLAUDE}:${profile}`); if (quota.success) { // Success closes the breaker and clears backoff. @@ -441,7 +721,7 @@ async function collectClaudeRow( state.breakerOpenUntil = 0; state.cooldownUntil = 0; state.backoffAttempt = 0; - const row = buildClaudeRow(quota, tier, now); + const row = buildClaudeRow(quota, tier, now, SURFACE_CLAUDE, profile); state.cachedRow = row; state.cachedAt = now; return { ...row, cached: false }; @@ -451,9 +731,12 @@ async function collectClaudeRow( // a real, actionable state distinct from a transient failure. if (quota.needsReauth) { const row: BarSummaryRow = { - account_id: CLAUDE_PROVIDER, - provider: CLAUDE_PROVIDER, - displayName: 'Claude Code', + account_id: `${SURFACE_CLAUDE}:${profile}`, + provider: CLAUDE_NATIVE_PROVIDER, + surface: SURFACE_CLAUDE, + profile, + is_subscription: true, + displayName: profile, tier, paused: false, quota_percentage: null, @@ -508,16 +791,13 @@ async function collectClaudeRow( return state.pending; } -// ============================================================================ -// Codex path with live network as PRIMARY, local logs as FALLBACK -// ============================================================================ - -async function collectCodexRow( +async function collectCodexRowForProfile( + profile: string, deps: NativeQuotaDeps, force = false ): Promise { const now = (deps.now ?? Date.now)(); - const state = codexState; + const state = getState(codexProfileStates, profile); // Serve from cache while within TTL — force bypasses TTL short-circuit. if (!force && state.cachedRow && now - state.cachedAt < NATIVE_QUOTA_TTL_MS) { @@ -533,8 +813,12 @@ async function collectCodexRow( return state.pending; } - const getDefaultAccountId = - deps.getDefaultCodexAccountId ?? (() => getDefaultAccount('codex')?.id ?? null); + // Resolve the native auth for this profile to get a network accountId. + const readNativeAuth = + deps.readCodexNativeAuth ?? ((p: string) => readCodexNativeAuthFromDisk(p)); + + // For the network fallback: the legacy getDefaultCodexAccountId is the + // CLIProxy-registry path; for native profiles we use the on-disk auth directly. const fetchNetwork = deps.fetchCodexNetworkQuota ?? ((accountId: string) => fetchCodexQuota(accountId)); const getCodex = deps.getCodexQuota ?? getCodexLocalQuota; @@ -546,9 +830,11 @@ async function collectCodexRow( // PRIMARY: live network fetch (skipped when breaker/cooldown active) // ---------------------------------------------------------------- if (!breakerOrCooldownActive) { - const accountId = getDefaultAccountId(); - if (accountId) { - const quota = await fetchNetwork(accountId); + const nativeAuth = readNativeAuth(profile); + // Use the on-disk accountId for the network call; fall through to local + // when the auth file is absent (parked profile). + if (nativeAuth) { + const quota = await fetchNetwork(nativeAuth.accountId || profile); if (quota.success) { // A healthy response closes the breaker and clears backoff, @@ -557,13 +843,9 @@ async function collectCodexRow( state.breakerOpenUntil = 0; state.cooldownUntil = 0; state.backoffAttempt = 0; - // Only usable when at least one core window (5h/weekly) resolved. A - // success with empty coreUsage (only code-review/additional windows, - // or a changed payload) carries no glanceable signal — do NOT cache - // a contentless "ok" row or clobber a good cache; fall through to - // the local fallback so the bar shows real data instead. + // Only usable when at least one core window (5h/weekly) resolved. if (quota.coreUsage?.fiveHour || quota.coreUsage?.weekly) { - const row = buildCodexNetworkRow(quota, now); + const row = buildCodexNetworkRow(quota, now, SURFACE_CODEX, profile); state.cachedRow = row; state.cachedAt = now; return { ...row, cached: false }; @@ -572,9 +854,12 @@ async function collectCodexRow( } else if (quota.needsReauth) { // Token expired -> reauth row; do NOT cache as a good value. return { - account_id: CODEX_PROVIDER, - provider: CODEX_PROVIDER, - displayName: 'Codex', + account_id: `${SURFACE_CODEX}:${profile}`, + provider: CODEX_NATIVE_PROVIDER, + surface: SURFACE_CODEX, + profile, + is_subscription: true, + displayName: profile, tier: null, paused: false, quota_percentage: null, @@ -614,16 +899,16 @@ async function collectCodexRow( } // Fall through to LOCAL fallback below. } - // No configured accountId -> fall through to local fallback. + // No on-disk auth for this profile -> fall through to local fallback. } // ---------------------------------------------------------------- // LOCAL FALLBACK: session log read (zero network, always attempted - // when network is unavailable / no accountId / breaker active) + // when network is unavailable / no auth file / breaker active) // ---------------------------------------------------------------- const localQuota = await getCodex(); if (localQuota) { - const row = buildCodexRow(localQuota, now); + const row = buildCodexRow(localQuota, now, SURFACE_CODEX, profile); state.cachedRow = row; state.cachedAt = now; return { ...row, cached: false }; @@ -645,25 +930,398 @@ async function collectCodexRow( return state.pending; } +// ============================================================================ +// Legacy single-profile collectors (unchanged; used by old tests + back-compat) +// ============================================================================ + +/** + * @deprecated Use collectClaudeRowForProfile with the 'default' or appropriate + * profile name. Kept for backward compatibility with existing tests that stub + * readCredentials/getDefaultCodexAccountId directly. + */ +async function collectClaudeRow( + deps: NativeQuotaDeps, + force = false +): Promise { + const now = (deps.now ?? Date.now)(); + + // Use the legacy single-state approach via profile key '__legacy__' to avoid + // breaking state isolation with the per-profile maps. + const state = getState(claudeProfileStates, '__legacy__'); + + // Serve from cache while within TTL — force bypasses TTL short-circuit. + if (!force && state.cachedRow && now - state.cachedAt < NATIVE_QUOTA_TTL_MS) { + return serveCached(state); + } + + // Breaker open or cooldown active -> zero network, serve stale (may be null). + if (now < state.breakerOpenUntil || now < state.cooldownUntil) { + return serveCached(state); + } + + // Coalesce: concurrent callers past TTL share one in-flight fetch. + if (state.pending) { + return state.pending; + } + + const readCredentialsFn = deps.readCredentials ?? readClaudeCredentials; + const fetchQuota = deps.fetchClaudeQuota ?? fetchClaudeQuotaWithToken; + const sleep = deps.sleep ?? defaultSleep; + + state.pending = (async (): Promise => { + try { + const creds = readCredentialsFn(); + // No token / unsupported subscription -> never spend a call, omit the row. + if (!creds || !hasSupportedSubscription(creds)) { + return serveCached(state); + } + const token = getAccessToken(creds); + if (!token) { + return serveCached(state); + } + const tier = getSubscriptionTier(creds); + + const quota = await fetchQuota(token, CLAUDE_PROVIDER); + + if (quota.success) { + // Success closes the breaker and clears backoff. + state.consecutive429 = 0; + state.breakerOpenUntil = 0; + state.cooldownUntil = 0; + state.backoffAttempt = 0; + const row = buildClaudeRowLegacy(quota, tier, now); + state.cachedRow = row; + state.cachedAt = now; + return { ...row, cached: false }; + } + + // 401 -> token expired. + if (quota.needsReauth) { + const row: BarSummaryRow = { + account_id: CLAUDE_PROVIDER, + provider: CLAUDE_PROVIDER, + displayName: 'Claude Code', + tier, + paused: false, + quota_percentage: null, + quotaStatus: 'error', + next_reset: null, + is_default: false, + last_activity_at: null, + today_cost: null, + health: 'error', + cached: false, + fetchedAt: new Date(now).toISOString(), + needsReauth: true, + }; + return row; + } + + // 429 / 5xx / transient. + const is429 = quota.httpStatus === 429; + if (is429) { + state.consecutive429 += 1; + if (state.consecutive429 >= CB_TRIP_THRESHOLD) { + state.breakerOpenUntil = now + CB_COOLDOWN_MS; + } + const retryAfter = parseRetryAfterMs(quota.errorDetail, now); + const backoff = retryAfter ?? computeBackoffMs(state.backoffAttempt); + state.cooldownUntil = now + backoff; + state.backoffAttempt += 1; + void sleep; + } else if (quota.retryable) { + const backoff = computeBackoffMs(state.backoffAttempt); + state.cooldownUntil = now + backoff; + state.backoffAttempt += 1; + } + + return serveCached(state); + } catch { + const backoff = computeBackoffMs(state.backoffAttempt); + state.cooldownUntil = now + backoff; + state.backoffAttempt += 1; + return serveCached(state); + } finally { + state.pending = null; + } + })(); + + return state.pending; +} + +/** Legacy row builder — no surface/profile/is_subscription fields. */ +function buildClaudeRowLegacy( + quota: ClaudeQuotaResult, + tier: string | null, + now: number +): BarSummaryRow { + const quotaWindows = buildClaudeQuotaWindows(quota); + return { + account_id: CLAUDE_PROVIDER, + provider: CLAUDE_PROVIDER, + displayName: 'Claude Code', + tier, + paused: false, + quota_percentage: deriveClaudeQuotaPercentage(quota), + quotaStatus: 'ok', + next_reset: deriveClaudeNextReset(quota), + is_default: false, + last_activity_at: null, + today_cost: null, + health: 'ok', + cached: false, + fetchedAt: new Date(now).toISOString(), + needsReauth: false, + ...(quotaWindows.length > 0 ? { quotaWindows } : {}), + }; +} + +/** + * Legacy Codex collector — uses the old getDefaultCodexAccountId dep. + * Kept for backward compatibility with existing tests. + */ +async function collectCodexRow( + deps: NativeQuotaDeps, + force = false +): Promise { + const now = (deps.now ?? Date.now)(); + const state = getState(codexProfileStates, '__legacy__'); + + // Serve from cache while within TTL — force bypasses TTL short-circuit. + if (!force && state.cachedRow && now - state.cachedAt < NATIVE_QUOTA_TTL_MS) { + return serveCached(state); + } + + // Breaker open or cooldown active -> skip network, go to LOCAL fallback. + const breakerOrCooldownActive = now < state.breakerOpenUntil || now < state.cooldownUntil; + + // Coalesce: concurrent callers past TTL share one in-flight resolution. + if (state.pending) { + return state.pending; + } + + const getDefaultAccountId = + deps.getDefaultCodexAccountId ?? (() => getDefaultAccount('codex')?.id ?? null); + const fetchNetwork = + deps.fetchCodexNetworkQuota ?? ((accountId: string) => fetchCodexQuota(accountId)); + const getCodex = deps.getCodexQuota ?? getCodexLocalQuota; + const sleep = deps.sleep ?? defaultSleep; + + state.pending = (async (): Promise => { + try { + // ---------------------------------------------------------------- + // PRIMARY: live network fetch (skipped when breaker/cooldown active) + // ---------------------------------------------------------------- + if (!breakerOrCooldownActive) { + const accountId = getDefaultAccountId(); + if (accountId) { + const quota = await fetchNetwork(accountId); + + if (quota.success) { + state.consecutive429 = 0; + state.breakerOpenUntil = 0; + state.cooldownUntil = 0; + state.backoffAttempt = 0; + if (quota.coreUsage?.fiveHour || quota.coreUsage?.weekly) { + const row = buildCodexNetworkRowLegacy(quota, now); + state.cachedRow = row; + state.cachedAt = now; + return { ...row, cached: false }; + } + // else: fall through to LOCAL fallback below. + } else if (quota.needsReauth) { + return { + account_id: CODEX_PROVIDER, + provider: CODEX_PROVIDER, + displayName: 'Codex', + tier: null, + paused: false, + quota_percentage: null, + quotaStatus: 'error', + next_reset: null, + is_default: false, + last_activity_at: null, + today_cost: null, + health: 'error', + cached: false, + fetchedAt: new Date(now).toISOString(), + needsReauth: true, + }; + } else if (quota.httpStatus === 429) { + state.consecutive429 += 1; + if (state.consecutive429 >= CB_TRIP_THRESHOLD) { + state.breakerOpenUntil = now + CB_COOLDOWN_MS; + } + const retryAfter = parseRetryAfterMs(quota.errorDetail, now); + const backoff = retryAfter ?? computeBackoffMs(state.backoffAttempt); + state.cooldownUntil = now + backoff; + state.backoffAttempt += 1; + void sleep; + } else if (quota.retryable) { + const backoff = computeBackoffMs(state.backoffAttempt); + state.cooldownUntil = now + backoff; + state.backoffAttempt += 1; + } else { + const backoff = computeBackoffMs(state.backoffAttempt); + state.cooldownUntil = now + backoff; + state.backoffAttempt += 1; + } + // Fall through to LOCAL fallback below. + } + } + + // ---------------------------------------------------------------- + // LOCAL FALLBACK + // ---------------------------------------------------------------- + const localQuota = await getCodex(); + if (localQuota) { + const row = buildCodexRowLegacy(localQuota, now); + state.cachedRow = row; + state.cachedAt = now; + return { ...row, cached: false }; + } + + return serveCached(state); + } catch { + const backoff = computeBackoffMs(state.backoffAttempt); + state.cooldownUntil = now + backoff; + state.backoffAttempt += 1; + return serveCached(state); + } finally { + state.pending = null; + } + })(); + + return state.pending; +} + +/** Legacy Codex row builder (local quota). */ +function buildCodexRowLegacy(quota: CodexLocalQuota, now: number): BarSummaryRow { + const quotaWindows = buildCodexQuotaWindows(quota); + return { + account_id: CODEX_PROVIDER, + provider: CODEX_PROVIDER, + displayName: 'Codex', + tier: quota.tier, + paused: false, + quota_percentage: quota.quotaPercentage, + quotaStatus: 'ok', + next_reset: quota.nextReset, + is_default: false, + last_activity_at: null, + today_cost: null, + health: quota.stale ? 'warning' : 'ok', + cached: false, + fetchedAt: new Date(now).toISOString(), + needsReauth: false, + ...(quotaWindows.length > 0 ? { quotaWindows } : {}), + ...(quota.staleAsOf ? { staleAsOf: quota.staleAsOf } : {}), + }; +} + +/** Legacy Codex network row builder. */ +function buildCodexNetworkRowLegacy(quota: CodexQuotaResult, now: number): BarSummaryRow { + const windows: QuotaWindowDetail[] = []; + const fiveHour = quota.coreUsage?.fiveHour; + if (fiveHour) { + windows.push({ + key: 'five_hour', + label: '5h', + usedPercent: 100 - fiveHour.remainingPercent, + remainingPercent: fiveHour.remainingPercent, + resetAt: fiveHour.resetAt, + windowMinutes: FIVE_HOUR_MINUTES, + }); + } + const weekly = quota.coreUsage?.weekly; + if (weekly) { + windows.push({ + key: 'seven_day', + label: 'week', + usedPercent: 100 - weekly.remainingPercent, + remainingPercent: weekly.remainingPercent, + resetAt: weekly.resetAt, + windowMinutes: SEVEN_DAY_MINUTES, + }); + } + const coreWindows = [fiveHour, weekly].filter((w): w is NonNullable => !!w); + const quotaPercentage = + coreWindows.length > 0 ? Math.min(...coreWindows.map((w) => w.remainingPercent)) : null; + const resets = coreWindows + .map((w) => w.resetAt) + .filter((r): r is string => typeof r === 'string') + .map((r) => ({ iso: r, ms: new Date(r).getTime() })) + .filter((r) => Number.isFinite(r.ms)) + .sort((a, b) => a.ms - b.ms); + const nextReset = resets.length > 0 ? resets[0].iso : null; + return { + account_id: CODEX_PROVIDER, + provider: CODEX_PROVIDER, + displayName: 'Codex', + tier: quota.planType ?? null, + paused: false, + quota_percentage: quotaPercentage, + quotaStatus: 'ok', + next_reset: nextReset, + is_default: false, + last_activity_at: null, + today_cost: null, + health: 'ok', + cached: false, + fetchedAt: new Date(now).toISOString(), + needsReauth: false, + ...(windows.length > 0 ? { quotaWindows: windows } : {}), + }; +} + // ============================================================================ // Public entry point // ============================================================================ /** - * Build the native subscription rows (Claude Code + Codex) for /summary. + * Build the native subscription rows for /summary. * - * Each path is independently try/caught so one failing source never blocks the - * other or the response. Returns only rows that represent real data. + * When profile-enumeration deps are injected (listClaudeProfiles / listCodexProfiles + * etc.), all profiles are enumerated and the active/default profile is live-polled + * while non-default profiles are cache-only (parked). This keeps the 2.5s deadline: + * at most 2 live upstream calls per /summary regardless of profile count. * - * `opts.force` bypasses the TTL short-circuit on both paths so a debounce- - * passing refresh re-pulls native rows live. The circuit breaker is always - * respected regardless of force (account protection). + * When no enumeration deps are injected (legacy mode / old tests that stub only + * readCredentials + getDefaultCodexAccountId), the old single-profile collectors + * are used for backward compatibility. + * + * `opts.force` bypasses the TTL short-circuit on the ACTIVE profile. The circuit + * breaker is always respected regardless of force (account protection). */ export async function getNativeAccountRows( deps: NativeQuotaDeps = {}, opts?: { force?: boolean } ): Promise { const force = opts?.force ?? false; + + // Multi-profile enumeration is the DEFAULT (production) behavior. The legacy + // single-profile path is retained ONLY for backward-compat with old tests that + // inject readCredentials / getDefaultCodexAccountId and assert the original + // single-row output. Those harnesses never inject the enumeration seams; the + // new multi-profile tests pair both seams, and production injects neither — so + // everything except the legacy harness takes the multi-profile path below. + const hasProfileEnumeration = + deps.listClaudeProfiles !== undefined || + deps.listCodexProfiles !== undefined || + deps.defaultClaudeProfile !== undefined || + deps.defaultCodexProfile !== undefined; + + const isLegacyTestHarness = + !hasProfileEnumeration && + (deps.readCredentials !== undefined || deps.getDefaultCodexAccountId !== undefined); + + if (!isLegacyTestHarness) { + return getNativeAccountRowsMultiProfile(deps, force); + } + + // Legacy path: backward-compatible with old tests that only inject + // readCredentials / getDefaultCodexAccountId. Produces the old single-row + // output (account_id='claude-code'/'codex', no surface/profile). const [claude, codex] = await Promise.all([ collectClaudeRow(deps, force).catch(() => null), collectCodexRow(deps, force).catch(() => null), @@ -675,6 +1333,79 @@ export async function getNativeAccountRows( return rows; } +async function getNativeAccountRowsMultiProfile( + deps: NativeQuotaDeps, + force: boolean +): Promise { + const listClaude = deps.listClaudeProfiles ?? listClaudeProfilesFromDisk; + const listCodex = deps.listCodexProfiles ?? listCodexProfilesFromDisk; + const defaultClaude = deps.defaultClaudeProfile ?? getDefaultClaudeProfileFromDisk; + const defaultCodex = deps.defaultCodexProfile ?? getDefaultCodexProfileFromDisk; + + const claudeProfiles = (() => { + try { + return listClaude(); + } catch { + return []; + } + })(); + const codexProfiles = (() => { + try { + return listCodex(); + } catch { + return []; + } + })(); + const claudeDefault = (() => { + try { + return defaultClaude(); + } catch { + return null; + } + })(); + const codexDefault = (() => { + try { + return defaultCodex(); + } catch { + return null; + } + })(); + + const tasks: Promise[] = []; + + // Forced refresh applies to every profile: parked profiles (no creds) short- + // circuit to a parked row with zero network, so forcing them is free, while + // every profile that has a usable token gets live quota — not just the + // default. Per-profile TTL + breaker still protect each account. + for (const p of claudeProfiles) { + const isDefault = p === claudeDefault; + tasks.push( + collectClaudeRowForProfile(p, deps, force) + .then((r) => (r ? markDefault(r, isDefault) : null)) + .catch(() => null) + ); + } + + for (const p of codexProfiles) { + const isDefault = p === codexDefault; + tasks.push( + collectCodexRowForProfile(p, deps, force) + .then((r) => (r ? markDefault(r, isDefault) : null)) + .catch(() => null) + ); + } + + const results = await Promise.all(tasks); + const rows = results.filter((r): r is BarSummaryRow => r !== null); + + // Sort by (surface, profile) for stable ordering. + return rows.sort((a, b) => { + const sa = (a.surface ?? '') + ':' + (a.profile ?? ''); + const sb = (b.surface ?? '') + ':' + (b.profile ?? ''); + return sa.localeCompare(sb); + }); +} + /** * Last-known native rows from cache, WITHOUT any fetch (instant, no network). * @@ -685,7 +1416,11 @@ export async function getNativeAccountRows( */ export function getCachedNativeAccountRows(): BarSummaryRow[] { const rows: BarSummaryRow[] = []; - if (claudeState.cachedRow) rows.push({ ...claudeState.cachedRow, cached: true }); - if (codexState.cachedRow) rows.push({ ...codexState.cachedRow, cached: true }); + for (const state of claudeProfileStates.values()) { + if (state.cachedRow) rows.push({ ...state.cachedRow, cached: true }); + } + for (const state of codexProfileStates.values()) { + if (state.cachedRow) rows.push({ ...state.cachedRow, cached: true }); + } return rows; } diff --git a/tests/unit/web-server/bar-routes.test.ts b/tests/unit/web-server/bar-routes.test.ts index 83ce1956..4890820f 100644 --- a/tests/unit/web-server/bar-routes.test.ts +++ b/tests/unit/web-server/bar-routes.test.ts @@ -1220,3 +1220,151 @@ describe('/summary native subscription rows', () => { expect(body[0].provider).toBe('agy'); }); }); + +// ============================================================================ +// GH-1595: wire contract — native rows carry surface/profile/is_subscription; +// CLIProxy pool rows OMIT all three fields. +// ============================================================================ + +describe('/summary wire contract: surface/profile/is_subscription fields (GH-1595)', () => { + /** + * Extended wire row type that includes the new optional fields. + * BarSummaryRow in the test file omits them; extend locally here. + */ + interface WireRow extends BarSummaryRow { + surface?: string; + profile?: string; + is_subscription?: boolean; + } + + function makeNativeRow( + surface: 'ccs' | 'ccsx', + profile: string, + paused = false + ): BarSummaryRow { + return { + account_id: `${surface}:${profile}`, + provider: surface === 'ccs' ? 'claude-code' : 'codex', + displayName: profile, + tier: 'pro', + paused, + quota_percentage: 55, + quotaStatus: 'ok', + next_reset: null, + is_default: !paused, + last_activity_at: null, + today_cost: null, + health: 'ok', + cached: false, + fetchedAt: '2026-06-23T20:00:00.000Z', + needsReauth: false, + // The TS interface now has these optional fields — set them explicitly. + // eslint-disable-next-line @typescript-eslint/no-explicit-any + ...(({ surface, profile, is_subscription: true }) as any), + }; + } + + async function buildWireRouter(nativeRows: BarSummaryRow[]) { + const { createBarRouter, resetForceFreshDebounce: resetDebounce } = await import( + '../../../src/web-server/routes/bar-routes' + ); + + const app = express(); + app.use(express.json()); + + const cliproxyAccount = makeAccountInfo({ id: 'pool@example.com', provider: 'agy' }); + + const router = createBarRouter({ + // eslint-disable-next-line @typescript-eslint/no-explicit-any + getAllAccountsSummary: () => ({ agy: [cliproxyAccount] }) as any, + getCachedQuota: () => makeQuotaResult(), + setCachedQuota: () => {}, + invalidateQuotaCache: () => {}, + fetchAccountQuota: async () => makeQuotaResult(), + getTodayCostByAccount: () => ({}), + loadCliproxyDetails: async () => [], + loadDailyUsage: async () => [], + loadHourlyUsage: async () => [], + runHealthChecks: async () => makeHealthReport(), + getNativeAccountRows: async () => nativeRows, + }); + + app.use('/api/bar', router); + const srv = await new Promise((resolve, reject) => { + const instance = app.listen(0, '127.0.0.1'); + instance.once('error', reject); + instance.once('listening', () => resolve(instance)); + }); + const addr = srv.address(); + if (!addr || typeof addr === 'string') throw new Error('No server address'); + resetDebounce(); + return { srv, url: `http://127.0.0.1:${(addr as { port: number }).port}` }; + } + + it('native rows include surface, profile, is_subscription=true in the JSON response', async () => { + const { srv, url } = await buildWireRouter([ + makeNativeRow('ccs', 'work', false), + makeNativeRow('ccsx', 'personal', false), + ]); + const { body } = await getJson(url, '/api/bar/summary'); + await new Promise((resolve) => srv.close(() => resolve())); + + const claudeRow = body.find((r) => r.provider === 'claude-code'); + expect(claudeRow).toBeDefined(); + expect(claudeRow?.surface).toBe('ccs'); + expect(claudeRow?.profile).toBe('work'); + expect(claudeRow?.is_subscription).toBe(true); + expect(claudeRow?.account_id).toBe('ccs:work'); + + const codexRow = body.find((r) => r.provider === 'codex'); + expect(codexRow).toBeDefined(); + expect(codexRow?.surface).toBe('ccsx'); + expect(codexRow?.profile).toBe('personal'); + expect(codexRow?.is_subscription).toBe(true); + expect(codexRow?.account_id).toBe('ccsx:personal'); + }); + + it('CLIProxy pool rows OMIT surface, profile, is_subscription', async () => { + const { srv, url } = await buildWireRouter([ + makeNativeRow('ccs', 'work', false), + ]); + const { body } = await getJson(url, '/api/bar/summary'); + await new Promise((resolve) => srv.close(() => resolve())); + + // The CLIProxy row (provider 'agy') should NOT have the new fields. + const cliproxyRow = body.find((r) => r.provider === 'agy'); + expect(cliproxyRow).toBeDefined(); + expect(cliproxyRow?.surface).toBeUndefined(); + expect(cliproxyRow?.profile).toBeUndefined(); + expect(cliproxyRow?.is_subscription).toBeUndefined(); + }); + + it('parked native row (paused:true) is present with is_subscription=true and paused=true', async () => { + const { srv, url } = await buildWireRouter([ + makeNativeRow('ccsx', 'ck', true), // parked Codex profile + ]); + const { body } = await getJson(url, '/api/bar/summary'); + await new Promise((resolve) => srv.close(() => resolve())); + + const parked = body.find((r) => r.profile === 'ck'); + expect(parked).toBeDefined(); + expect(parked?.paused).toBe(true); + expect(parked?.is_subscription).toBe(true); + expect(parked?.surface).toBe('ccsx'); + }); + + it('account_id on native rows uses the : scheme', async () => { + const { srv, url } = await buildWireRouter([ + makeNativeRow('ccs', 'ck', false), + makeNativeRow('ccsx', 'ck', true), + ]); + const { body } = await getJson(url, '/api/bar/summary'); + await new Promise((resolve) => srv.close(() => resolve())); + + const claudeRow = body.find((r) => r.surface === 'ccs'); + expect(claudeRow?.account_id).toBe('ccs:ck'); + + const codexRow = body.find((r) => r.surface === 'ccsx'); + expect(codexRow?.account_id).toBe('ccsx:ck'); + }); +}); diff --git a/tests/unit/web-server/native-quota-collector.test.ts b/tests/unit/web-server/native-quota-collector.test.ts index 344c2c7e..22c63654 100644 --- a/tests/unit/web-server/native-quota-collector.test.ts +++ b/tests/unit/web-server/native-quota-collector.test.ts @@ -775,3 +775,433 @@ describe('getCachedNativeAccountRows (instant, no-fetch fallback)', () => { expect(getCachedNativeAccountRows()).toEqual([]); }); }); + +// ============================================================================ +// Multi-profile path tests (GH-1595) +// +// These tests inject listClaudeProfiles / listCodexProfiles / defaultClaudeProfile +// / defaultCodexProfile so the production profile-enumeration path is exercised +// without touching real ~/.ccs or any Keychain. The readClaudeCredentialsForProfile +// and readCodexNativeAuth seams prevent fs access. +// ============================================================================ + +/** + * Build a NativeQuotaDeps for the multi-profile path. + * + * - claudeProfiles: profile names for the Claude surface (ccs) + * - codexProfiles: profile names for the Codex surface (ccsx) + * - claudeDefault / codexDefault: the active profile per surface (paused:false) + * - credsForProfile: map from profile name to credentials (null = parked) + * - claudeFetch: network fetcher for Claude (all profiles share one implementation) + * - codexNativeAuth: map from profile name to {accessToken, accountId} + * - codexNetworkFetch: network fetcher for Codex (all profiles share one impl) + */ +function makeMultiProfileDeps(opts: { + clock: { now: number }; + claudeProfiles: string[]; + codexProfiles: string[]; + claudeDefault?: string | null; + codexDefault?: string | null; + credsForProfile?: (profile: string) => ClaudeNativeCredentials | null; + claudeFetch?: (token: string, accountId?: string) => Promise; + codexNativeAuth?: (profile: string) => { accessToken: string; accountId: string } | null; + codexNetworkFetch?: (accountId: string) => Promise; + codexLocalFallback?: () => Promise; +}): NativeQuotaDeps & { + claudeFetchCount: () => number; + codexNetworkCount: () => number; +} { + let claudeFetches = 0; + let codexNetworkFetches = 0; + + const { + clock, + claudeProfiles, + codexProfiles, + claudeDefault = null, + codexDefault = null, + credsForProfile = () => null, + claudeFetch = async () => successQuota(), + codexNativeAuth = () => null, + codexNetworkFetch = async () => codexSuccessQuota(), + codexLocalFallback = async () => null, + } = opts; + + return { + // Enumeration seams + listClaudeProfiles: () => claudeProfiles, + listCodexProfiles: () => codexProfiles, + defaultClaudeProfile: () => claudeDefault, + defaultCodexProfile: () => codexDefault, + // Credential seams (file-only, no keychain) + readClaudeCredentialsForProfile: credsForProfile, + readCodexNativeAuth: codexNativeAuth, + // Fetch seams + fetchClaudeQuota: async (token: string, accountId?: string) => { + claudeFetches += 1; + return claudeFetch(token, accountId); + }, + fetchCodexNetworkQuota: async (accountId: string) => { + codexNetworkFetches += 1; + return codexNetworkFetch(accountId); + }, + getCodexQuota: codexLocalFallback, + // Disable legacy single-profile paths + readCredentials: () => null, + getDefaultCodexAccountId: () => null, + // Clock + sleep seams + now: () => clock.now, + sleep: async () => {}, + // Counters + claudeFetchCount: () => claudeFetches, + codexNetworkCount: () => codexNetworkFetches, + }; +} + +describe('multi-profile: account_id and wire fields', () => { + it('Claude profile rows carry surface="ccs", account_id="ccs:

", is_subscription=true', async () => { + const clock = { now: 1_000_000 }; + const deps = makeMultiProfileDeps({ + clock, + claudeProfiles: ['work', 'ck'], + codexProfiles: [], + claudeDefault: 'work', + // 'work' has creds; 'ck' does not (parked) + credsForProfile: (p) => (p === 'work' ? maxCreds() : null), + claudeFetch: async () => successQuota(), + }); + + const rows = await getNativeAccountRows(deps); + expect(rows.length).toBe(2); + + const work = rows.find((r) => r.profile === 'work'); + expect(work).toBeDefined(); + expect(work?.account_id).toBe('ccs:work'); + expect(work?.surface).toBe('ccs'); + expect(work?.is_subscription).toBe(true); + expect(work?.provider).toBe('claude-code'); + + const ck = rows.find((r) => r.profile === 'ck'); + expect(ck).toBeDefined(); + expect(ck?.account_id).toBe('ccs:ck'); + expect(ck?.surface).toBe('ccs'); + expect(ck?.is_subscription).toBe(true); + }); + + it('Codex profile rows carry surface="ccsx", account_id="ccsx:

", is_subscription=true', async () => { + const clock = { now: 1_000_000 }; + const deps = makeMultiProfileDeps({ + clock, + claudeProfiles: [], + codexProfiles: ['personal', 'ck'], + codexDefault: 'personal', + codexNativeAuth: (p) => ({ accessToken: `tok-${p}`, accountId: `id-${p}` }), + codexNetworkFetch: async () => codexSuccessQuota(), + }); + + const rows = await getNativeAccountRows(deps); + expect(rows.length).toBe(2); + + const personal = rows.find((r) => r.profile === 'personal'); + expect(personal?.account_id).toBe('ccsx:personal'); + expect(personal?.surface).toBe('ccsx'); + expect(personal?.is_subscription).toBe(true); + expect(personal?.provider).toBe('codex'); + + const ck = rows.find((r) => r.profile === 'ck'); + expect(ck?.account_id).toBe('ccsx:ck'); + expect(ck?.surface).toBe('ccsx'); + expect(ck?.is_subscription).toBe(true); + }); + + it('paused reflects liveness (creds present), NOT default-ness; is_default marks the default independently', async () => { + const clock = { now: 1_000_000 }; + const deps = makeMultiProfileDeps({ + clock, + // Claude: work = default + creds (live); ck = non-default + NO creds (parked). + claudeProfiles: ['work', 'ck'], + // Codex: personal = default + creds (live); ck = NON-default + creds (live). + codexProfiles: ['personal', 'ck'], + claudeDefault: 'work', + codexDefault: 'personal', + credsForProfile: (p) => (p === 'work' ? maxCreds() : null), + claudeFetch: async () => successQuota(), + codexNativeAuth: (p) => ({ accessToken: `tok-${p}`, accountId: `id-${p}` }), + codexNetworkFetch: async () => codexSuccessQuota(), + }); + + const rows = await getNativeAccountRows(deps); + + // Claude work: default + creds -> live, not dimmed. + const claudeWork = rows.find((r) => r.surface === 'ccs' && r.profile === 'work'); + expect(claudeWork?.paused).toBe(false); + expect(claudeWork?.is_default).toBe(true); + + // Claude ck: non-default + NO creds -> parked/dimmed. + const claudeCk = rows.find((r) => r.surface === 'ccs' && r.profile === 'ck'); + expect(claudeCk?.paused).toBe(true); + expect(claudeCk?.is_default).toBe(false); + + // Codex personal: default + creds -> live. + const codexPersonal = rows.find((r) => r.surface === 'ccsx' && r.profile === 'personal'); + expect(codexPersonal?.paused).toBe(false); + expect(codexPersonal?.is_default).toBe(true); + + // Codex ck: NON-default but HAS creds -> LIVE, NOT dimmed. This is the key + // correctness guarantee: a valid isolated subscription is never dimmed just + // because it is not the surface default. + const codexCk = rows.find((r) => r.surface === 'ccsx' && r.profile === 'ck'); + expect(codexCk?.paused).toBe(false); + expect(codexCk?.is_default).toBe(false); + }); + + it('N Claude + M Codex profiles produce N+M rows', async () => { + const clock = { now: 1_000_000 }; + const claudeProfiles = ['work', 'ck', 'personal']; + const codexProfiles = ['personal', 'ck']; + const deps = makeMultiProfileDeps({ + clock, + claudeProfiles, + codexProfiles, + claudeDefault: 'work', + codexDefault: 'personal', + credsForProfile: () => maxCreds(), + codexNativeAuth: (p) => ({ accessToken: `tok-${p}`, accountId: `id-${p}` }), + }); + + const rows = await getNativeAccountRows(deps); + expect(rows.length).toBe(claudeProfiles.length + codexProfiles.length); + }); + + it('rows are sorted by (surface, profile)', async () => { + const clock = { now: 1_000_000 }; + const deps = makeMultiProfileDeps({ + clock, + claudeProfiles: ['work', 'ck'], + codexProfiles: ['ck', 'personal'], + claudeDefault: 'work', + codexDefault: 'personal', + credsForProfile: () => maxCreds(), + codexNativeAuth: (p) => ({ accessToken: `tok-${p}`, accountId: `id-${p}` }), + }); + + const rows = await getNativeAccountRows(deps); + const keys = rows.map((r) => `${r.surface}:${r.profile}`); + // ccs:ck < ccs:work < ccsx:ck < ccsx:personal + expect(keys).toEqual(['ccs:ck', 'ccs:work', 'ccsx:ck', 'ccsx:personal']); + }); +}); + +describe('multi-profile: Claude file-only reader', () => { + it('profile with .credentials.json present -> live fetch row (paused:false when default)', async () => { + const clock = { now: 1_000_000 }; + const deps = makeMultiProfileDeps({ + clock, + claudeProfiles: ['work'], + codexProfiles: [], + claudeDefault: 'work', + credsForProfile: (p) => (p === 'work' ? maxCreds() : null), + claudeFetch: async () => successQuota(), + }); + + const rows = await getNativeAccountRows(deps); + expect(rows.length).toBe(1); + const row = rows[0]; + expect(row?.profile).toBe('work'); + expect(row?.quotaStatus).toBe('ok'); + expect(row?.needsReauth).toBe(false); + expect(row?.paused).toBe(false); + expect(deps.claudeFetchCount()).toBe(1); + }); + + it('profile without .credentials.json -> parked row (needsReauth:true, no live fetch)', async () => { + const clock = { now: 1_000_000 }; + const deps = makeMultiProfileDeps({ + clock, + claudeProfiles: ['ck'], + codexProfiles: [], + claudeDefault: 'ck', + credsForProfile: () => null, // no file on disk + claudeFetch: async () => successQuota(), + }); + + const rows = await getNativeAccountRows(deps); + expect(rows.length).toBe(1); + const row = rows[0]; + expect(row?.profile).toBe('ck'); + expect(row?.needsReauth).toBe(true); + expect(row?.quota_percentage).toBeNull(); + // No live network call when creds are absent + expect(deps.claudeFetchCount()).toBe(0); + }); + + it('absent creds row has quotaStatus unsupported (honest "needs auth" state)', async () => { + const clock = { now: 1_000_000 }; + const deps = makeMultiProfileDeps({ + clock, + claudeProfiles: ['ck'], + codexProfiles: [], + claudeDefault: 'ck', + credsForProfile: () => null, + }); + + const rows = await getNativeAccountRows(deps); + const row = rows[0]; + expect(row?.quotaStatus).toBe('unsupported'); + expect(row?.is_subscription).toBe(true); + }); +}); + +describe('multi-profile: per-profile circuit breaker isolation', () => { + it("one profile's 429 does not open another profile's breaker", async () => { + const MAX_COOLDOWN_JUMP_MP = 61_000; + const clock = { now: 1_000_000 }; + let workFails = true; + + const deps = makeMultiProfileDeps({ + clock, + claudeProfiles: ['work', 'ck'], + codexProfiles: [], + claudeDefault: 'work', + credsForProfile: () => maxCreds(), + claudeFetch: async (_token, accountId) => { + // 'work' (ccs:work) always 429s; 'ck' always succeeds + if (accountId?.includes('work') && workFails) { + return { + success: false, + windows: [], + coreUsage: { fiveHour: null, weekly: null }, + lastUpdated: Date.now(), + accountId: accountId ?? 'ccs:work', + httpStatus: 429, + retryable: true, + error: 'rate limited', + } as ClaudeQuotaResult; + } + return successQuota(); + }, + }); + + // Trip the work breaker with 3 consecutive 429s. + for (let i = 0; i < 3; i++) { + resetNativeQuotaState(); + clock.now += i === 0 ? 0 : MAX_COOLDOWN_JUMP_MP; + // Re-inject the multi-profile deps after reset so the state maps are fresh. + await getNativeAccountRows({ + ...deps, + listClaudeProfiles: () => ['work'], + listCodexProfiles: () => [], + defaultClaudeProfile: () => 'work', + }); + } + + // After the three 429s on 'work', check that 'ck' still succeeds. + // We reset state to have a clean run where 'ck' has no prior breaker history. + resetNativeQuotaState(); + clock.now += MAX_COOLDOWN_JUMP_MP; + workFails = false; + + const rows = await getNativeAccountRows(deps); + const ckRow = rows.find((r) => r.profile === 'ck'); + const workRow = rows.find((r) => r.profile === 'work'); + + // 'ck' should succeed — its breaker was never tripped. + expect(ckRow?.quotaStatus).toBe('ok'); + // 'work' is also fine after reset (no breaker state). + expect(workRow?.quotaStatus).toBe('ok'); + }); + + it("per-profile breaker: one profile's 429s only block that profile", async () => { + const clock = { now: 1_000_000 }; + let workCall429Count = 0; + + // 'work' returns 429 each call; 'ck' returns success. + const deps = makeMultiProfileDeps({ + clock, + claudeProfiles: ['work', 'ck'], + codexProfiles: [], + claudeDefault: 'work', + credsForProfile: () => maxCreds(), + claudeFetch: async (_token, accountId) => { + if (accountId?.includes('work')) { + workCall429Count += 1; + return { + success: false, + windows: [], + coreUsage: { fiveHour: null, weekly: null }, + lastUpdated: clock.now, + accountId: accountId ?? '', + httpStatus: 429, + retryable: true, + error: 'rate limited', + } as ClaudeQuotaResult; + } + return successQuota(); + }, + }); + + // First call: 'work' gets a 429, 'ck' succeeds. + const rows1 = await getNativeAccountRows(deps); + const ck1 = rows1.find((r) => r.profile === 'ck'); + expect(ck1?.quotaStatus).toBe('ok'); + expect(workCall429Count).toBeGreaterThanOrEqual(1); + + // Skip past cooldown for 'work' only; 'ck' is within TTL. + clock.now += 62_000; + + // Second call past 'work' cooldown: work tries again (429 again); ck cached. + const rows2 = await getNativeAccountRows(deps); + const ck2 = rows2.find((r) => r.profile === 'ck'); + // 'ck' still has a good cached row. + expect(ck2?.quotaStatus).toBe('ok'); + }); +}); + +describe('multi-profile: displayName uses profile name', () => { + it('displayName is the profile name, not "Claude Code" or "Codex"', async () => { + const clock = { now: 1_000_000 }; + const deps = makeMultiProfileDeps({ + clock, + claudeProfiles: ['my-work'], + codexProfiles: ['my-codex'], + claudeDefault: 'my-work', + codexDefault: 'my-codex', + credsForProfile: () => maxCreds(), + codexNativeAuth: (p) => ({ accessToken: `tok-${p}`, accountId: `id-${p}` }), + }); + + const rows = await getNativeAccountRows(deps); + const c = rows.find((r) => r.surface === 'ccs'); + const x = rows.find((r) => r.surface === 'ccsx'); + expect(c?.displayName).toBe('my-work'); + expect(x?.displayName).toBe('my-codex'); + }); +}); + +describe('multi-profile: getCachedNativeAccountRows reflects per-profile maps', () => { + it('returns cached rows from all profiles after a collect', async () => { + const clock = { now: 1_000_000 }; + const deps = makeMultiProfileDeps({ + clock, + claudeProfiles: ['work', 'ck'], + codexProfiles: ['personal'], + claudeDefault: 'work', + codexDefault: 'personal', + credsForProfile: () => maxCreds(), + codexNativeAuth: (p) => ({ accessToken: `tok-${p}`, accountId: `id-${p}` }), + }); + + await getNativeAccountRows(deps); + + const cached = getCachedNativeAccountRows(); + expect(cached.every((r) => r.cached === true)).toBe(true); + // Should have rows for work, ck, and personal (parked 'ck' has no cached row + // yet because it had creds in this test so it did fetch) + const profiles = cached.map((r) => r.profile); + expect(profiles).toContain('work'); + expect(profiles).toContain('personal'); + + resetNativeQuotaState(); + expect(getCachedNativeAccountRows()).toEqual([]); + }); +}); From e8adcb89993c3c972691679aee402e7844f58766 Mon Sep 17 00:00:00 2001 From: Tam Nhu Tran Date: Tue, 23 Jun 2026 22:56:48 -0400 Subject: [PATCH 05/52] feat(bar): per-provider profile carousel with ccs/ccsx surface tags Group native subscription rows by provider and render each provider as its own horizontally paged carousel of profile cards (one profile per page, swipe between a provider's profiles, page dots indicate count). Add a surface tag chip (ccs/ccsx) and dim parked profiles. Switch the native-vs-pool split to the is_subscription flag so pool codex accounts are not misclassified. Raise the deployment target to macOS 14 for the native scroll paging APIs and bump the Bar version to 1.9.0. --- macos-bar/Package.swift | 2 +- macos-bar/Sources/CCSBarApp/BarMenuView.swift | 83 +++++++++- .../CCSBarApp/BarSubscriptionCard.swift | 17 +- macos-bar/Sources/CCSBarCheck/main.swift | 150 ++++++++++++++++++ .../Sources/CCSBarCore/BarFormatting.swift | 16 +- macos-bar/Sources/CCSBarCore/BarSummary.swift | 22 +++ macos-bar/VERSION | 2 +- 7 files changed, 284 insertions(+), 8 deletions(-) diff --git a/macos-bar/Package.swift b/macos-bar/Package.swift index 8e8a642f..1e06fdc1 100644 --- a/macos-bar/Package.swift +++ b/macos-bar/Package.swift @@ -10,7 +10,7 @@ import PackageDescription // the core is verified. let package = Package( name: "CCSBar", - platforms: [.macOS(.v13)], + platforms: [.macOS(.v14)], products: [ .executable(name: "CCSBar", targets: ["CCSBarApp"]), .executable(name: "ccs-bar-check", targets: ["CCSBarCheck"]), diff --git a/macos-bar/Sources/CCSBarApp/BarMenuView.swift b/macos-bar/Sources/CCSBarApp/BarMenuView.swift index 80017740..91a60b71 100644 --- a/macos-bar/Sources/CCSBarApp/BarMenuView.swift +++ b/macos-bar/Sources/CCSBarApp/BarMenuView.swift @@ -36,6 +36,11 @@ struct BarMenuView: View { /// monotonically (ContentHeightKey.reduce takes the max), so the frame never /// thrashes downward. @State private var contentHeight: CGFloat = 0 + /// Multi-profile carousel: which provider page is currently visible. Resets to + /// first provider on popover re-open (KISS — no UserDefaults persistence needed). + // Per-provider carousel position: provider -> selected profile row id. Each + // provider has its own profile carousel, so selection is tracked per provider. + @State private var selectedProfileByProvider: [String: String] = [:] // MARK: - Screen cap @@ -164,6 +169,9 @@ struct BarMenuView: View { viewModel.onOpen() // Disarm quit on every popover open so a stale armed state never persists. quitArmed = false + // Reset each provider's carousel to its first profile on every open — KISS, + // no persistence needed. + selectedProfileByProvider = [:] } } @@ -234,9 +242,67 @@ struct BarMenuView: View { BarRowView(row: row, viewModel: viewModel) } } else { + // Per-provider profile carousels: group subscription rows by provider, and + // render each provider as its OWN horizontally-paged carousel of PROFILE + // cards — one profile visible at a time, swipe left/right between that + // provider's profiles, page dots indicate count. Provider sections stack + // vertically. A provider with a single profile shows just its card (no + // carousel, no dots). + let groups = Dictionary( + grouping: orderedSubscriptions(parts.subscriptions), by: { $0.provider }) + let providers = groups.keys.sorted() // stable: "claude-code" < "codex" + let multiProvider = providers.count > 1 subscriptionsHeader(parts.subscriptions) - ForEach(orderedSubscriptions(parts.subscriptions)) { row in - BarSubscriptionCard(row: row, onRefresh: { viewModel.forceRefresh() }) + ForEach(providers, id: \.self) { prov in + let rows = groups[prov] ?? [] + VStack(alignment: .leading, spacing: 4) { + // Provider caption to delineate sections when more than one provider. + if multiProvider { + Text(BarFormatting.providerLabel(prov)) + .font(.system(size: 10, weight: .semibold)) + .foregroundStyle(.secondary) + } + if rows.count <= 1 { + // Single profile — render the card directly, no carousel. + if let row = rows.first { + BarSubscriptionCard( + row: row, isParked: row.paused, + onRefresh: { viewModel.forceRefresh() }) + } + } else { + ScrollView(.horizontal, showsIndicators: false) { + HStack(spacing: 0) { + ForEach(rows) { row in + BarSubscriptionCard( + row: row, isParked: row.paused, + onRefresh: { viewModel.forceRefresh() }) + // 340 leaves 10px side padding inside the 360-wide popover. + .frame(width: 340, alignment: .leading) + .padding(.horizontal, 2) + .id(row.id) + } + } + // scrollTargetLayout on the HStack (the paging container) snaps to + // each profile card on .paging behavior. + .scrollTargetLayout() + } + .scrollTargetBehavior(.paging) + .scrollPosition(id: Binding( + get: { selectedProfileByProvider[prov] ?? rows.first?.id }, + set: { selectedProfileByProvider[prov] = $0 ?? rows.first?.id })) + .frame(height: carouselHeight(rows)) + // Page dots — one per profile in this provider's carousel. + HStack(spacing: 6) { + ForEach(rows) { row in + let isCurrent = (selectedProfileByProvider[prov] ?? rows.first?.id) == row.id + Circle() + .fill(isCurrent ? theme.subscription : Color.secondary.opacity(0.3)) + .frame(width: 6, height: 6) + } + } + .frame(maxWidth: .infinity, alignment: .center) + } + } } } } @@ -295,6 +361,19 @@ struct BarMenuView: View { } } + /// Estimates the height of a single profile carousel so its frame does not + /// collapse. Only ONE card is visible at a time, so the height is the tallest + /// single card in the carousel: a title row plus one bar per quota window, or a + /// compact parked/empty card when there are no windows. + private func carouselHeight(_ rows: [BarSummaryRow]) -> CGFloat { + let maxWindows = rows.map { $0.quotaWindows?.count ?? 0 }.max() ?? 0 + if maxWindows == 0 { + return 80 // parked / reauth card: title row + status line only. + } + // ~34pt title row + ~28pt per window bar + vertical padding. + return 44 + CGFloat(maxWindows) * 30 + } + private var header: some View { HStack(spacing: 8) { Image(nsImage: MenuBarIcon.headerImage()) diff --git a/macos-bar/Sources/CCSBarApp/BarSubscriptionCard.swift b/macos-bar/Sources/CCSBarApp/BarSubscriptionCard.swift index cf96fdde..f1f77d55 100644 --- a/macos-bar/Sources/CCSBarApp/BarSubscriptionCard.swift +++ b/macos-bar/Sources/CCSBarApp/BarSubscriptionCard.swift @@ -13,6 +13,9 @@ import CCSBarCore struct BarSubscriptionCard: View { @Environment(\.barTheme) private var theme let row: BarSummaryRow + /// When true this profile is parked (not the active/default profile for the + /// surface). The card is dimmed to 50% opacity to signal it is not live. + var isParked: Bool = false /// Injected clock — defaults to live Date() in production, pinned in previews /// and tests so countdown math is deterministic. var now: Date = Date() @@ -44,20 +47,28 @@ struct BarSubscriptionCard: View { .background( theme.cardSurface, in: RoundedRectangle(cornerRadius: 9)) + // Dim parked (non-active) profiles so the active profile clearly dominates. + .opacity(isParked ? 0.5 : 1.0) } // MARK: Title row - /// Health dot + product name + reauth chip + tier chip. No pause toggle — - /// subscriptions are not routable pool accounts. + /// Health dot + profile name (or provider label for legacy rows) + surface chip + /// + reauth chip + tier chip. No pause toggle — subscriptions are not routable + /// pool accounts. private var titleRow: some View { HStack(spacing: 8) { Circle() .fill(healthColor) .frame(width: 8, height: 8) - Text(BarFormatting.providerLabel(row.provider)) + // Multi-profile: show profile name when available; fall back to provider label. + Text(row.profile ?? BarFormatting.providerLabel(row.provider)) .font(.system(.body, design: .default).weight(.semibold)) .lineLimit(1) + // Surface tag chip ("ccs · work", "ccsx · personal") for multi-profile rows. + if let tag = BarFormatting.surfaceProfileLabel(row) { + Chip(tag, tint: theme.subscription.opacity(isParked ? 0.5 : 1)) + } if row.needsReauth { Chip("reauth", tint: theme.bandRed) } diff --git a/macos-bar/Sources/CCSBarCheck/main.swift b/macos-bar/Sources/CCSBarCheck/main.swift index 0c9d5833..36ac3e67 100644 --- a/macos-bar/Sources/CCSBarCheck/main.swift +++ b/macos-bar/Sources/CCSBarCheck/main.swift @@ -1686,6 +1686,156 @@ do { check(!BarUpdateChecker.isNewer("1.7", than: "1.7.0"), "isNewer: fewer than 3 parts rejected") } +// MARK: Multi-profile fields decode (GH-1595) +// +// Three new optional wire keys: surface, profile, is_subscription. +// Native rows carry all three; CLIProxy pool rows omit them — legacy decoders +// must not fail and must yield nil for the absent fields. + +let multiProfileJSON = """ +[ + { + "account_id": "ccs:work", + "provider": "claude-code", + "surface": "ccs", + "profile": "work", + "is_subscription": true, + "displayName": "work", + "tier": "max", + "paused": false, + "quota_percentage": 62, + "quotaStatus": "ok", + "next_reset": "2026-06-24T01:00:00.000Z", + "is_default": true, + "last_activity_at": null, + "today_cost": null, + "health": "ok", + "cached": false, + "fetchedAt": "2026-06-23T20:40:00.000Z", + "needsReauth": false + }, + { + "account_id": "ccsx:ck", + "provider": "codex", + "surface": "ccsx", + "profile": "ck", + "is_subscription": true, + "displayName": "ck", + "tier": "pro", + "paused": true, + "quota_percentage": 80, + "quotaStatus": "ok", + "next_reset": null, + "is_default": false, + "last_activity_at": null, + "today_cost": null, + "health": "ok", + "cached": true, + "fetchedAt": "2026-06-23T16:19:00.000Z", + "needsReauth": false, + "stale_as_of": "2026-06-23T16:19:00.000Z" + }, + { + "account_id": "alice@example.com", + "provider": "agy", + "displayName": "Alice (Ultra)", + "tier": "ultra", + "paused": false, + "quota_percentage": 70, + "quotaStatus": "ok", + "next_reset": null, + "is_default": false, + "last_activity_at": null, + "today_cost": null, + "health": "ok", + "cached": true, + "fetchedAt": "2026-06-23T20:00:00.000Z", + "needsReauth": false + } +] +""" + +do { + let rows = try JSONDecoder().decode([BarSummaryRow].self, from: Data(multiProfileJSON.utf8)) + check(rows.count == 3, "mp: decodes 3 rows (2 native + 1 legacy CLIProxy)") + + // (MP1) Native Claude active row + let claudeRow = rows[0] + check(claudeRow.accountId == "ccs:work", "mp: native Claude account_id = 'ccs:work'") + check(claudeRow.surface == "ccs", "mp: native Claude surface = 'ccs'") + check(claudeRow.profile == "work", "mp: native Claude profile = 'work'") + check(claudeRow.isSubscription == true, "mp: native Claude is_subscription = true") + check(claudeRow.paused == false, "mp: active Claude profile is not paused") + + // (MP2) Parked Codex row + let codexRow = rows[1] + check(codexRow.accountId == "ccsx:ck", "mp: parked Codex account_id = 'ccsx:ck'") + check(codexRow.surface == "ccsx", "mp: parked Codex surface = 'ccsx'") + check(codexRow.profile == "ck", "mp: parked Codex profile = 'ck'") + check(codexRow.isSubscription == true, "mp: parked Codex is_subscription = true") + check(codexRow.paused == true, "mp: parked Codex row has paused = true") + + // (MP3) Legacy CLIProxy row — new fields decode to nil without failure + let legacyRow = rows[2] + check(legacyRow.surface == nil, "mp: CLIProxy row surface decodes to nil (backward compat)") + check(legacyRow.profile == nil, "mp: CLIProxy row profile decodes to nil (backward compat)") + check(legacyRow.isSubscription == nil, "mp: CLIProxy row is_subscription decodes to nil") + + // (MP4) isNativeSubscription uses is_subscription flag when present + check( + BarFormatting.isNativeSubscription(claudeRow), + "mp: isNativeSubscription true when is_subscription=true (new flag path)") + check( + BarFormatting.isNativeSubscription(codexRow), + "mp: isNativeSubscription true for parked Codex row (is_subscription=true)") + check( + !BarFormatting.isNativeSubscription(legacyRow), + "mp: isNativeSubscription false for CLIProxy pool row (no is_subscription)") + + // (MP5) Legacy rows without is_subscription use fallback heuristic + let legacyClaudeRow = BarSummaryRow(accountId: "claude-code", provider: "claude-code") + check( + BarFormatting.isNativeSubscription(legacyClaudeRow), + "mp: legacy claude-code row uses heuristic fallback -> is native") + let legacyCodexRow = BarSummaryRow(accountId: "codex", provider: "codex") + check( + BarFormatting.isNativeSubscription(legacyCodexRow), + "mp: legacy codex row uses heuristic fallback -> is native") + let poolCodexRow = BarSummaryRow(accountId: "pool-codex-oauth-1", provider: "codex") + check( + !BarFormatting.isNativeSubscription(poolCodexRow), + "mp: CLIProxy codex pool row with no is_subscription -> not native (heuristic)") + + // (MP6) partitionSubscriptions correctly splits with new flag + let parts = BarFormatting.partitionSubscriptions(rows) + check(parts.subscriptions.count == 2, "mp: partition yields 2 native subscriptions") + check(parts.pool.count == 1, "mp: partition yields 1 CLIProxy pool row") + check( + parts.subscriptions.map { $0.accountId } == ["ccs:work", "ccsx:ck"], + "mp: subscriptions keep backend order") + + // (MP7) surfaceProfileLabel helper + check( + BarFormatting.surfaceProfileLabel(claudeRow) == "ccs · work", + "mp: surfaceProfileLabel for ccs:work -> 'ccs · work'") + check( + BarFormatting.surfaceProfileLabel(codexRow) == "ccsx · ck", + "mp: surfaceProfileLabel for ccsx:ck -> 'ccsx · ck'") + check( + BarFormatting.surfaceProfileLabel(legacyRow) == nil, + "mp: surfaceProfileLabel for CLIProxy row (no profile) -> nil") + + // (MP8) surfaceProfileLabel falls back to provider when surface is absent + let noSurfaceRow = BarSummaryRow( + accountId: "ccsx:personal", provider: "codex", + surface: nil, profile: "personal", isSubscription: true) + check( + BarFormatting.surfaceProfileLabel(noSurfaceRow) == "codex · personal", + "mp: surfaceProfileLabel falls back to provider when surface is nil") +} catch { + check(false, "mp: multi-profile JSON decode failed: \(error)") +} + // cleanup try? FileManager.default.removeItem(atPath: tmp) diff --git a/macos-bar/Sources/CCSBarCore/BarFormatting.swift b/macos-bar/Sources/CCSBarCore/BarFormatting.swift index e996c9bf..4bea7a92 100644 --- a/macos-bar/Sources/CCSBarCore/BarFormatting.swift +++ b/macos-bar/Sources/CCSBarCore/BarFormatting.swift @@ -165,11 +165,25 @@ public enum BarFormatting { /// Code or Codex plan) rather than a CLIProxy-managed OAuth pool account. Drives /// the "Subscriptions" grouping + badge so a user reads "this is MY plan quota", /// not one of the rotating pool credentials. + /// + /// Prefers the explicit `is_subscription` flag from the server (multi-profile + /// feature). Falls back to the legacy heuristic (`accountId == provider`) so + /// old single-profile payloads still work without `is_subscription`. public static func isNativeSubscription(_ row: BarSummaryRow) -> Bool { - (row.provider == "claude-code" && row.accountId == "claude-code") + if let s = row.isSubscription { return s } + // Legacy fallback for old payloads that omit is_subscription. + return (row.provider == "claude-code" && row.accountId == "claude-code") || (row.provider == "codex" && row.accountId == "codex") } + /// Surface + profile chip label for multi-profile cards, e.g. "ccs · work" or + /// "ccsx · personal". Returns nil for CLIProxy pool rows that have no profile. + public static func surfaceProfileLabel(_ row: BarSummaryRow) -> String? { + guard let p = row.profile else { return nil } + let s = row.surface ?? row.provider + return "\(s) · \(p)" + } + /// Friendly product label for a provider key. Native subscription keys read as /// products ("Claude Code", "Codex"); any other provider passes through verbatim /// (so "agy"/"ghcp"/"kiro" keep their established short chip text). diff --git a/macos-bar/Sources/CCSBarCore/BarSummary.swift b/macos-bar/Sources/CCSBarCore/BarSummary.swift index 930f06ed..f76bd5f8 100644 --- a/macos-bar/Sources/CCSBarCore/BarSummary.swift +++ b/macos-bar/Sources/CCSBarCore/BarSummary.swift @@ -65,6 +65,16 @@ public struct BarSummaryRow: Codable, Sendable, Identifiable, Equatable { public let cached: Bool public let fetchedAt: String? public let needsReauth: Bool + /// Multi-profile: which CCS surface owns this profile ("ccs" = Claude via + /// `ccs auth`, "ccsx" = Codex via `ccsx auth`). nil on CLIProxy pool rows. + public let surface: String? + /// Multi-profile: the profile name (e.g. "work", "ck", "personal"). nil on + /// CLIProxy pool rows. + public let profile: String? + /// Explicit native-subscription flag. true on all native rows (Claude/Codex + /// own subscription), nil/false on CLIProxy pool rows. Replaces the brittle + /// `accountId == "claude-code"` heuristic. + public let isSubscription: Bool? /// Native-only per-window quota breakdown (Claude: 5h/week/opus/sonnet, /// Codex: 5h/week). nil for CLIProxy pool rows, which omit "quota_windows" /// entirely — so legacy payloads decode unchanged (backward compatible). @@ -93,6 +103,9 @@ public struct BarSummaryRow: Codable, Sendable, Identifiable, Equatable { case cached case fetchedAt case needsReauth + case surface + case profile + case isSubscription = "is_subscription" case quotaWindows = "quota_windows" case staleAsOf = "stale_as_of" } @@ -113,6 +126,9 @@ public struct BarSummaryRow: Codable, Sendable, Identifiable, Equatable { cached: Bool = false, fetchedAt: String? = nil, needsReauth: Bool = false, + surface: String? = nil, + profile: String? = nil, + isSubscription: Bool? = nil, quotaWindows: [QuotaWindowDetail]? = nil, staleAsOf: String? = nil ) { @@ -131,6 +147,9 @@ public struct BarSummaryRow: Codable, Sendable, Identifiable, Equatable { self.cached = cached self.fetchedAt = fetchedAt self.needsReauth = needsReauth + self.surface = surface + self.profile = profile + self.isSubscription = isSubscription self.quotaWindows = quotaWindows self.staleAsOf = staleAsOf } @@ -156,6 +175,9 @@ public struct BarSummaryRow: Codable, Sendable, Identifiable, Equatable { cached = try c.decode(Bool.self, forKey: .cached) fetchedAt = try c.decodeIfPresent(String.self, forKey: .fetchedAt) needsReauth = try c.decode(Bool.self, forKey: .needsReauth) + surface = try c.decodeIfPresent(String.self, forKey: .surface) + profile = try c.decodeIfPresent(String.self, forKey: .profile) + isSubscription = try c.decodeIfPresent(Bool.self, forKey: .isSubscription) quotaWindows = try c.decodeIfPresent([QuotaWindowDetail].self, forKey: .quotaWindows) staleAsOf = try c.decodeIfPresent(String.self, forKey: .staleAsOf) } diff --git a/macos-bar/VERSION b/macos-bar/VERSION index a8fdfda1..f8e233b2 100644 --- a/macos-bar/VERSION +++ b/macos-bar/VERSION @@ -1 +1 @@ -1.8.1 +1.9.0 From 50893319e5e2adf2dfb4511e33fd9700532b13e2 Mon Sep 17 00:00:00 2001 From: Tam Nhu Tran Date: Tue, 23 Jun 2026 22:56:58 -0400 Subject: [PATCH 06/52] chore(bar): add PR evidence screenshot for multi-profile carousel --- .../1595/bar-multi-profile-carousel.png | Bin 0 -> 123314 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 .github/pr-assets/1595/bar-multi-profile-carousel.png diff --git a/.github/pr-assets/1595/bar-multi-profile-carousel.png b/.github/pr-assets/1595/bar-multi-profile-carousel.png new file mode 100644 index 0000000000000000000000000000000000000000..9f430a6241f6d5d937fa9f0d0d10d4d6f37fdf94 GIT binary patch literal 123314 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 literal 0 HcmV?d00001 From b9f68379135afa653f835cd36fef8a6ad515bad9 Mon Sep 17 00:00:00 2001 From: Tam Nhu Tran Date: Tue, 23 Jun 2026 23:10:15 -0400 Subject: [PATCH 07/52] fix(bar): lead carousel with default account, label it as the base command Address UX review: the bare login (e.g. ~/.codex) is the default way of running a surface, not a profile. Rename it from 'personal' to 'default' and present it as the base command ('ccsx') with a 'default' badge, while named profiles show their name ('ck') plus the owning surface tag ('ccsx'). Order each provider carousel so the default account leads, then by tightest quota window. --- macos-bar/Sources/CCSBarApp/BarMenuView.swift | 9 ++++--- .../CCSBarApp/BarSubscriptionCard.swift | 10 ++++--- macos-bar/Sources/CCSBarCheck/main.swift | 26 +++++++++++++++++++ .../Sources/CCSBarCore/BarFormatting.swift | 26 ++++++++++++++++++- .../usage/native-quota-collector.ts | 26 ++++++++++++------- 5 files changed, 80 insertions(+), 17 deletions(-) diff --git a/macos-bar/Sources/CCSBarApp/BarMenuView.swift b/macos-bar/Sources/CCSBarApp/BarMenuView.swift index 91a60b71..4c14e1fd 100644 --- a/macos-bar/Sources/CCSBarApp/BarMenuView.swift +++ b/macos-bar/Sources/CCSBarApp/BarMenuView.swift @@ -340,11 +340,14 @@ struct BarMenuView: View { } } - /// Order subscription cards by tightest binding window ascending (closest to - /// empty on top). Rows with no binding window (error/reauth) sink to the bottom - /// so the actionable quota always leads. + /// Order subscription cards so the default/base account leads its provider + /// carousel (it is the account the user runs by default), then by tightest + /// binding window ascending (closest to empty next). Rows with no binding + /// window (error/reauth) sink to the bottom so actionable quota leads. private func orderedSubscriptions(_ subs: [BarSummaryRow]) -> [BarSummaryRow] { subs.sorted { a, b in + // Default account first within its provider group. + if a.isDefault != b.isDefault { return a.isDefault } let ra = BarQuotaGauge.selectBindingWindow(a.quotaWindows ?? [])?.remainingPercent let rb = BarQuotaGauge.selectBindingWindow(b.quotaWindows ?? [])?.remainingPercent switch (ra, rb) { diff --git a/macos-bar/Sources/CCSBarApp/BarSubscriptionCard.swift b/macos-bar/Sources/CCSBarApp/BarSubscriptionCard.swift index f1f77d55..9363fb2a 100644 --- a/macos-bar/Sources/CCSBarApp/BarSubscriptionCard.swift +++ b/macos-bar/Sources/CCSBarApp/BarSubscriptionCard.swift @@ -61,12 +61,14 @@ struct BarSubscriptionCard: View { Circle() .fill(healthColor) .frame(width: 8, height: 8) - // Multi-profile: show profile name when available; fall back to provider label. - Text(row.profile ?? BarFormatting.providerLabel(row.provider)) + // Default account shows the bare command ("ccsx"); a named profile shows its + // name ("ck"). Falls back to the provider label for legacy rows. + Text(BarFormatting.accountTitle(row)) .font(.system(.body, design: .default).weight(.semibold)) .lineLimit(1) - // Surface tag chip ("ccs · work", "ccsx · personal") for multi-profile rows. - if let tag = BarFormatting.surfaceProfileLabel(row) { + // Tag: "default" for the base account, else the owning surface ("ccsx") so a + // named profile reads as e.g. "ck · ccsx". + if let tag = BarFormatting.accountTag(row) { Chip(tag, tint: theme.subscription.opacity(isParked ? 0.5 : 1)) } if row.needsReauth { diff --git a/macos-bar/Sources/CCSBarCheck/main.swift b/macos-bar/Sources/CCSBarCheck/main.swift index 36ac3e67..72612c59 100644 --- a/macos-bar/Sources/CCSBarCheck/main.swift +++ b/macos-bar/Sources/CCSBarCheck/main.swift @@ -1832,6 +1832,32 @@ do { check( BarFormatting.surfaceProfileLabel(noSurfaceRow) == "codex · personal", "mp: surfaceProfileLabel falls back to provider when surface is nil") + + // (MP9) base/default account vs named profile presentation + let defaultCodexRow = BarSummaryRow( + accountId: "ccsx:default", provider: "codex", + surface: "ccsx", profile: "default", isSubscription: true) + check( + BarFormatting.isBaseAccount(defaultCodexRow), + "mp: 'default' profile is the base account") + check( + !BarFormatting.isBaseAccount(codexRow), + "mp: named profile 'ck' is not the base account") + check( + BarFormatting.accountTitle(defaultCodexRow) == "ccsx", + "mp: accountTitle for default account -> 'ccsx' (bare command)") + check( + BarFormatting.accountTitle(codexRow) == "ck", + "mp: accountTitle for named profile -> 'ck'") + check( + BarFormatting.accountTag(defaultCodexRow) == "default", + "mp: accountTag for default account -> 'default'") + check( + BarFormatting.accountTag(codexRow) == "ccsx", + "mp: accountTag for named profile -> 'ccsx' (surface)") + check( + BarFormatting.accountTag(legacyRow) == nil, + "mp: accountTag for CLIProxy pool row -> nil") } catch { check(false, "mp: multi-profile JSON decode failed: \(error)") } diff --git a/macos-bar/Sources/CCSBarCore/BarFormatting.swift b/macos-bar/Sources/CCSBarCore/BarFormatting.swift index 4bea7a92..f08530fc 100644 --- a/macos-bar/Sources/CCSBarCore/BarFormatting.swift +++ b/macos-bar/Sources/CCSBarCore/BarFormatting.swift @@ -177,13 +177,37 @@ public enum BarFormatting { } /// Surface + profile chip label for multi-profile cards, e.g. "ccs · work" or - /// "ccsx · personal". Returns nil for CLIProxy pool rows that have no profile. + /// "ccsx · ck". Returns nil for CLIProxy pool rows that have no profile. public static func surfaceProfileLabel(_ row: BarSummaryRow) -> String? { guard let p = row.profile else { return nil } let s = row.surface ?? row.provider return "\(s) · \(p)" } + /// True when this row is the surface's default/base account — the bare login + /// (e.g. `ccsx` => ~/.codex), as opposed to a named `ccsx ` profile. + /// The server names this account "default". + public static func isBaseAccount(_ row: BarSummaryRow) -> Bool { + row.profile == "default" + } + + /// Primary card title. For the default/base account it is the bare command the + /// user actually runs ("ccsx" / "ccs"); for a named profile it is the profile + /// name ("ck"). Falls back to the provider product label for legacy rows. + public static func accountTitle(_ row: BarSummaryRow) -> String { + if isBaseAccount(row) { return row.surface ?? providerLabel(row.provider) } + return row.profile ?? providerLabel(row.provider) + } + + /// Secondary chip beside the title. The default/base account is tagged + /// "default"; a named profile is tagged with the surface that owns it + /// ("ccs"/"ccsx") so "ck" reads as a ccsx profile. Nil for pool rows. + public static func accountTag(_ row: BarSummaryRow) -> String? { + guard row.profile != nil else { return nil } + if isBaseAccount(row) { return "default" } + return row.surface ?? row.provider + } + /// Friendly product label for a provider key. Native subscription keys read as /// products ("Claude Code", "Codex"); any other provider passes through verbatim /// (so "agy"/"ghcp"/"kiro" keep their established short chip text). diff --git a/src/web-server/usage/native-quota-collector.ts b/src/web-server/usage/native-quota-collector.ts index 0d89b3c4..5e32cb05 100644 --- a/src/web-server/usage/native-quota-collector.ts +++ b/src/web-server/usage/native-quota-collector.ts @@ -80,6 +80,11 @@ const CB_COOLDOWN_MS = 900_000; // 15 minutes const SURFACE_CLAUDE = 'ccs'; const SURFACE_CODEX = 'ccsx'; +// The "default way of running" a surface — the bare login (e.g. ~/.codex for +// ccsx), as opposed to a named `ccsx ` profile. Rendered in the Bar as +// the base command ("ccsx") with a "default" badge, not as a named profile. +const DEFAULT_PROFILE = 'default'; + // Provider values on the wire (unchanged from before) const CLAUDE_NATIVE_PROVIDER = 'claude-code'; const CODEX_NATIVE_PROVIDER = 'codex'; @@ -117,13 +122,13 @@ export interface NativeQuotaDeps { getCodexQuota?: () => Promise; /** * Read the native Codex auth for a profile (file-only, no keychain). - * 'personal' reads ~/.codex/auth.json; other names read codex-instances//auth.json. + * DEFAULT_PROFILE ('default') reads ~/.codex/auth.json; other names read codex-instances//auth.json. * Returns null when absent/unparseable. */ readCodexNativeAuth?: (profile: string) => { accessToken: string; accountId: string } | null; /** Enumerate Claude profile names. Injected so tests never touch real fs. */ listClaudeProfiles?: () => string[]; - /** Enumerate Codex profile names (including 'personal' for bare ~/.codex). */ + /** Enumerate Codex profile names (including DEFAULT_PROFILE for bare ~/.codex). */ listCodexProfiles?: () => string[]; /** Resolve the default Claude profile name. */ defaultClaudeProfile?: () => string | null; @@ -513,7 +518,7 @@ function readCodexNativeAuthFromDisk( ): { accessToken: string; accountId: string } | null { try { let authPath: string; - if (profile === 'personal') { + if (profile === DEFAULT_PROFILE) { authPath = path.join(os.homedir(), '.codex', 'auth.json'); } else { // resolveCodexProfileDir would validate, but we do it inline to avoid the @@ -576,7 +581,7 @@ function getDefaultClaudeProfileFromDisk(): string | null { } /** - * List all Codex profiles from the registry, plus 'personal' when the bare + * List all Codex profiles from the registry, plus DEFAULT_PROFILE when the bare * ~/.codex/auth.json exists. Returns [] on any read error. */ function listCodexProfilesFromDisk(): string[] { @@ -588,9 +593,11 @@ function listCodexProfilesFromDisk(): string[] { }; const registry = new CodexProfileRegistry(); const profiles = registry.listProfiles(); - // Add 'personal' for the bare ~/.codex/auth.json if it exists + // Add the bare ~/.codex/auth.json (the default `ccsx` invocation) as the + // DEFAULT_PROFILE account when it exists. It is the "default way of running", + // distinct from named `ccsx ` profiles. if (fs.existsSync(path.join(os.homedir(), '.codex', 'auth.json'))) { - if (!profiles.includes('personal')) profiles.push('personal'); + if (!profiles.includes(DEFAULT_PROFILE)) profiles.push(DEFAULT_PROFILE); } return profiles; } catch { @@ -599,7 +606,7 @@ function listCodexProfilesFromDisk(): string[] { } /** - * Resolve the default Codex profile. Falls back to 'personal' when the bare + * Resolve the default Codex profile. Falls back to DEFAULT_PROFILE when the bare * ~/.codex/auth.json exists and no registry default is set. */ function getDefaultCodexProfileFromDisk(): string | null { @@ -612,8 +619,9 @@ function getDefaultCodexProfileFromDisk(): string | null { const registry = new CodexProfileRegistry(); const def = registry.getDefault(); if (def) return def; - // Fall back to 'personal' if the bare auth.json exists - if (fs.existsSync(path.join(os.homedir(), '.codex', 'auth.json'))) return 'personal'; + // Fall back to the bare ~/.codex account (DEFAULT_PROFILE) when no registry + // default is set — it is the default `ccsx` invocation. + if (fs.existsSync(path.join(os.homedir(), '.codex', 'auth.json'))) return DEFAULT_PROFILE; return null; } catch { return null; From 4e6fe6ffbb99fb945d45b7b73d850be07afa6d1e Mon Sep 17 00:00:00 2001 From: Tam Nhu Tran Date: Tue, 23 Jun 2026 23:10:25 -0400 Subject: [PATCH 08/52] chore(bar): refresh PR screenshot for default-first carousel --- .../1595/bar-multi-profile-carousel.png | Bin 123314 -> 138778 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/.github/pr-assets/1595/bar-multi-profile-carousel.png b/.github/pr-assets/1595/bar-multi-profile-carousel.png index 9f430a6241f6d5d937fa9f0d0d10d4d6f37fdf94..e7644e437eaa533d6085d35a400384fec4577fae 100644 GIT binary patch literal 138778 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%0A_ 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⁡A^feRQ} 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 BK>Gjy literal 123314 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 From 54ef5406ce891343ef6bd7fe885ae5db59466763 Mon Sep 17 00:00:00 2001 From: Tam Nhu Tran Date: Tue, 23 Jun 2026 23:16:36 -0400 Subject: [PATCH 09/52] fix(bar): show the active default ccs login as the leading Claude account The multi-profile path enumerated only named ccs auth profiles, dropping the bare ~/.claude default login that the shipped Bar showed. Re-add it as the DEFAULT_PROFILE account read through the standard global credential lookup (file, falling back to the single global 'Claude Code-credentials' Keychain item Claude Code itself maintains) -- the one pre-existing global read, not a per-profile Keychain scan. It leads the Claude carousel as 'ccs' + 'default'. --- .../usage/native-quota-collector.ts | 28 ++++++++++++++++--- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/src/web-server/usage/native-quota-collector.ts b/src/web-server/usage/native-quota-collector.ts index 5e32cb05..167cc036 100644 --- a/src/web-server/usage/native-quota-collector.ts +++ b/src/web-server/usage/native-quota-collector.ts @@ -489,6 +489,15 @@ function serveCached(state: ProviderState): BarSummaryRow | null { * Never calls security/Keychain — zero new keychain access from this feature. */ function readClaudeCredentialsForProfileFromDisk(profile: string): ClaudeNativeCredentials | null { + // The bare `ccs` default login uses the standard global credential lookup: + // ~/.claude/.credentials.json, falling back to the single global + // "Claude Code-credentials" Keychain item that Claude Code itself maintains. + // This is the ONE pre-existing global read the shipped Bar already performs -- + // NOT a per-profile Keychain scan. Isolated `ccs auth` profiles below stay + // file-only and never touch the Keychain. + if (profile === DEFAULT_PROFILE) { + return readClaudeCredentials(); + } try { const instanceDir = path.join(getCcsDir(), 'instances', profile); const credFile = path.join(instanceDir, '.credentials.json'); @@ -557,14 +566,22 @@ function listClaudeProfilesFromDisk(): string[] { }; }; const registry = new ProfileRegistry(); - return Object.keys(registry.getAllProfilesMerged()); + const profiles = Object.keys(registry.getAllProfilesMerged()); + // Add the bare `ccs` default login (DEFAULT_PROFILE) when ~/.claude exists -- + // the default way of running `ccs`, distinct from named `ccs ` + // profiles. unshift so it leads before alphabetical sorting downstream. + if (fs.existsSync(path.join(os.homedir(), '.claude'))) { + if (!profiles.includes(DEFAULT_PROFILE)) profiles.unshift(DEFAULT_PROFILE); + } + return profiles; } catch { return []; } } /** - * Resolve the default Claude profile. Returns null when none is set. + * Resolve the default Claude profile. A registry-designated default wins; + * otherwise the bare ~/.claude login (DEFAULT_PROFILE) is the default `ccs`. */ function getDefaultClaudeProfileFromDisk(): string | null { try { @@ -574,10 +591,13 @@ function getDefaultClaudeProfileFromDisk(): string | null { }; }; const registry = new ProfileRegistry(); - return registry.getDefaultResolved(); + const reg = registry.getDefaultResolved(); + if (reg) return reg; } catch { - return null; + // fall through to the bare default below } + if (fs.existsSync(path.join(os.homedir(), '.claude'))) return DEFAULT_PROFILE; + return null; } /** From 74ea8ead6c2f3274aa7bb05ca28760187c6a58de Mon Sep 17 00:00:00 2001 From: Tam Nhu Tran Date: Tue, 23 Jun 2026 23:16:45 -0400 Subject: [PATCH 10/52] chore(bar): refresh PR screenshot with live ccs + ccsx defaults --- .../1595/bar-multi-profile-carousel.png | Bin 138778 -> 197333 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/.github/pr-assets/1595/bar-multi-profile-carousel.png b/.github/pr-assets/1595/bar-multi-profile-carousel.png index e7644e437eaa533d6085d35a400384fec4577fae..8db1466f2dcd826631c97a3baa295c8637b25c91 100644 GIT binary patch literal 197333 zcmbTdb9in|(k~p_*|BZgwr$(Cy<^+9wPV|Mc5FM@!I$Tmd1vO#_nv>weO-NZcUAwY zs@JO3sO~#lURDei3KI$d0034(Tv!nR02l@U0O$n*?3=O-ZQlz30BB?(BqVPoBqn5M zZRe;R$C zcb3#$QXV%fmOu!~_7xEL6#zADiyFqs$qrGFcye@5v{P{CK^I;`=o!23>wVp^&yLSw zYj67uT*lR{r9DoSSxiIn7zNUW4|8;zRZ}bZS;M#g!TYc+JE76@^%dP0amrAUn}ji} zgC|}#_?9z6a*Z6@*7U43-ga0I3W}O{JVzqo!s+){--rCOdjz6l!0Epc>n@RLJ|_+xss8iiHWU~ zxt%i|rl06H0n%Pv!wCQYmE^AkD4|Gv^X)d}7Ru_*>N3)tMs_x|2F7-VCbaH0_J7F% z;CAQyF4~wl8{oU!Slc>ry7LhJ-GcMG{1=&y5dZHc&Q?5x>N4{9LUxWO_^h<_wDg3$ zQ26-x+>XYkoQlGt|Ac?ncnHm%o$Wd4=-k}gXx*4-?HtYM7&tgM=;#^g7#V54ThKUp z*g6}y)7Ux@{X@wA$PqSiGIF%Aceb#z#s5pLfuWs?GY=u*UyA{{}O0xA?!n{^I-t_IJPjp^p16VVoL@CQf$NE`OQD%fQUc{kMw$ zgZgg+|AA2dUlIRF{cps-0V=i@&b*BORPtZs|3Lj^FQ>ePyNR`iu!YUH6Z~ZzBP$C# zH{Jir`fsR;lZm5{oy|AWnfKpr^iS}AGXER+w@&qc>ttqN__p@nI{$<9PbfFtUoZ1N zUhY3U=Wpt_>+nKx)BVd0d7%^wM&SVf_yHt@1(e+ZFS@|}u}55JJlT$a>QMWOtcpxy zz~}>!P-+&5$0Jctt~U^$kNsYD@?35#HuIC1dHVWVOR*-ID4~uplrIp^P&Sm+7o6rW zibu_KdV5xun^JaDD^1T?TN6Q>)lzA-t=QmUa_O*DIYgL4*Heg~M$o`-;5QB!1&RkH zgce5q`8UCT3aE`$9ONIB{~wos5-5HEfd}e85&vq$u8Hr6jxB@C@;|cv#rd1S0W-(+ zzpE?+B@FAEV^$FQZ)5%;;9DW^|AWFfy!3zeFTI8T<6$iw6=N*&KRcb!#LqksSF}sm z@P9snzqP6bejBwb`D;P}kLX_y=U*Knwg?zC5TCb4)c9Xars@NFjgF2^%FLAV@bK6h z9~%ol_9r4hJH#%)emBC_7H33D2JlNLhQ=qPDKlco6hGo9ENl>8ZgCe<{zXU~$Hj_z zeQbVl59kjSOC%j3m}5jY?1L%z%ki;+k9X?9! z{sQg>{$HpNH;JftojcI-b3oMcBX-1!RZ+)k?9~l2#ol9_Al^RfZnvixIzlN zWO)%}r|jaNitza2Y5b}$5{5LkFmikNXx_wK^Rzn*!pUk`q87lk`v>fgM4^^5*jMqu zt9f$FmWM-``=A}Gvjpi$DAKRkzAYoeFC$s^7fbWia#xy_)rnh>4vmUWt>tc%f10D2 zAM5}hL1}fNCUSY~`L*8lx^IOD_5JVN5)@cG;Y_Lx?Oeh8mSu*k!XK1dC2vE=`ZfZSWahl*Bw z5Q2F~t33esLD~gjR-Vma^7=x0Hv&@`K<1O4L%vO2%>RPZmvizY3ZCM~jH-E}Nz+}v z&eLDqR(&3pcY(iKV_`=_OO?0HLCj7_)#C?!4Z$u?kn?!;NSb;4{KP%GI?L}42pILa z>Bi8AMC5?c@UkKtBJBp9)a%!n%l)A;pJ6Ili%4!d60CDB8V7LP{dj}ih9R5pkU9ClA5|; zZ;z0YyjMkhizj<=ZcS)lU_jOwkz0xe;ajz*5n(fFAm{;nwKpH}J@vd!1$v;Qr>bY! z$72J=j50C`vT$K_@s?sT2%P>JHa&PNb!RD{7b0eRq{EcVQHI?s;22PW)uMQIP^g7D z{$P}lkegp$7yMOqemN#X1oh4Y5K6L&vZ|`&tBAT)MOQT5fKs;6f{LG zD=e3%2hIvjHMS7c$y~Wo+3bP^vuVyf1Dc`G$8+~1!=Ej-8@oTzScvTcPKu5XY|s>B zJ)z5bJS{nbaPY|LE#V(2Px2|Vl{jQ6pl&mO+vjnqC=tLhso2>=k_Uoo!%TsK6!cwd zKn&9lUoux!#Lym*_VLk*sBI)GW+V_fF!5n*C4K`X+HSJgi|l*Eg=*Yp z*rD46cI|$_KSa6E-2R?V$HZ3OYJG z+1xInoLn79lh~48PZvf`hqEeJ%NSyS>^sFkx~;abTW?&~`LFj!CHFs2Pzqb`I<)e01esIyyNNwwIWnFS}RT z92Ab|HCbLhAy12ME}4K#>LTNwV8U_`hF5Q?m&cgrNN`^AzSRKQ#=8_ zuHu4L%`_avDsbd-tHfN423&EM5mLY%2QhF|&oVamb4x8!sbyV_*=OgaiW(M>EYoSU zV4taUt#cZ#K<_0yULGj{1Bofr8V9Mw2)NE|tLu`7hbGLeZ4?NX!eTMlq2a#ZL?0;7 zC*7+_M|F{$4*oLhKbo8bZVlK&LL((*j8vN1jaGjWhb!32+LUr!^)68Z`@rz!6@Aw)&)VtH2T-+Ci<$Z}-U9ATvwnrAf0 z<7A&y)}Y+i$_e^Rh#eK7zNDYjnL2xpScE+7ogH|$^&iKvcX6@d2nw}5$re#gm9R#ASC z5~&Dc=(s~4?K4A6kYJghOcs-}!-+qnbw!azt@OC0lbWJQZCXKLp$^P2;+4~9KWO`= zD+hubwQu)i%t%xMQpVbo=ag*htV|@xx1vb08_>Dawx5FN>i?g$$jSTEm z)|z;!T&{y4OP^YOP=Jj|{W6dztu}pbiHy~b(AAx=UaR#Mt?V!>VziTqrVua-%T!6m znPmias6#hK{0ly+e78zqT-&Z>$}*leq+4P3pv}|O2EpxB2lJ4FAl1u{BV?IcRmnlm z6pLU%t;buHX0?g@a{M$-Cs$hoSn24J2>BT}NSSkx!lDp=gp_6aS$`y;!>#xS23E*m z<`m`#3w{gbod}~#Q{7i$X|Tdyj|=NPc^|fRc7>gr+zfSBclE1ll(mJ8iI^UUkIuMJ z*Xvy)>(-Sq(3#MbDdn!=~sWZS+Q-|e~4-}8;0100TM_zH#a-q?vZHr zxY8s$sxPdLLL43(Df;N(Ol8f9^L-5&F^|8GaP@`v?cEkjp*Cu~*fz?>572MBktAFj z2H@*S&{`WOj!(aNC~pw^CV6S`Td~p1W~L6>6T4Z*C5c`kPe})B&Ih}yS_GdoE%phj z2|zfc9;}}UTuYv}GQ~(^W4$}Z?2-(K6^AFQ#5q4#{gwb^k;5x2?XJA(H zOrtEjqVz3semDs_0wTz;fRb$+id5hMXM*zScJFxm~Y3-RT=>a`_YUB0Z47 zQdw3}l8|xCIu}ng!mUw^Ww4d8bRkSr($`1eX>xDXDRW5?u}ojIafbNikJ?+RstYJl zeUbp{Nc^ZJ*@8hc_d801e;dXvz?GUyc%qLiLjcI*TEs2){h4E*WIq zDbFG?FP6zcc#c&)AR(G{1t=YOXD!RnbDt*X(y&WrYkpVV07?dFi#1$H{WYL+kGLC- zbR({msQldo!?B1PQi?@R#I4d=rAPTCRD|kLDooec!|ld1lzZEBR`63e8mJVasB-bif=$w%^{hHnWRs{h!9RL@eEq7A)>4%QVbGoS7p=^#SIy8IkP2vYgIv=uYOXMO{O%^eCPTo;YuXKNkUP8A+kF$&(}$EIvpBNqPIlLB+Lf(^`&2kP(QD_@vHbDovSZE9hMKgm^d5V7?;;3hbnA0<27kRKktZam^o)h)b25 z(g(Lef}NLig%RTnwyQkVIX%0aB7!^^ttgL{LXl~r;`gx5^O8oM7@`3?qH zJ2SF#sXBu&OrTj*85bP7Opg?IZ^eO#Q?$TSS60nDzM~SlD9t%`8^%`tzz4oRV~i>bp@VFI_exea>E+L z;mfo+Cgd~}r9e3}H;D*}LH3xz??qg@@@)n=uW4+x8W;WtB=Equ`MU(*%(w}W*Ro+p zFacCl;~EnTXQ!tu5>eP-i5vxzo-}#BjW2OU1%=qf)UEstY!n)ttYJjuMnRRZ0w!JB zkfg#!Rbq~L#jf$iiJ;9Bre<*z~!|pVIYuFq8UZW zZA|dt`4cLXwrUECC3z;vadUGvIBnnI`@NaRc=t**ZF`H3q=+Tn;C*2IDhhg@+R0B@=>sj!?x&%!FffK3peR3nqzQ|_1&v`Vka$BA^FHKsswkJrC6OgU5THO4+qu$7 z*18H=F{QMbo~O28@Y@7MV*`X^L`hCiO8GaC)obGrhm_?vWri2KGnLpd6sB8hBUTJQ zME^#lO6aap9BaUJ+7p<=OE>-D5?it@cxu+X}Dh z()V1IxBJXDU5Y!T97Mwjl*C8`9>>$u%j4Dw^w2PqAXZsJg(By7iqkO)qZlB4+VWB&wo3kWIM(-HV z8QE{huwBZGXE%T7!ZHdTRQq2Pa61Ri;t3iF#uYIMA(Klj;Yy)TXC}3wTWHl?!HqjK zW1?2T?)P!%6mgQM7Nd*#j@zF*WpbabyRYMpn&eh)X2ZGN)8 zm90QzMdBjRuWQ|Khe`9JjBxD@ki3>Y(KGl3;S^Am^5%rfMsO(h#_oA5iXPJ1vZcqEJRTMPEr{#g@rN;p(I}=McmREixyoXA*96+e0RWv&|WS zn2*}J&c~LD*q}MfSLHq3oOt$)c|)7!+Om2whf5US>D8?(8=Px#RRYoVHSz?x0#vOTpm zFqcEbD#T7;?d856gp$JNSwRwq1HdBsL`vpiEnp}m!$GP6)Sp*m2ANBHdy2g8)K5`X zwtaWS-iA!IdaHgn2)k7vJ!9yj`>Bh3Om zpke(XMpJY!PPu#%v0nlX@i^#NhDBG(N4Bd&!x88mMDwQ=H55hK|GMn;V<2*7ze;QxzYhHykTcW${+D!W@?%h0B3Mq>q&dkfDc`*0dJS0bzYibMtAa;14uPxDTMIflQ=>--Ooy_rpD-VR^K~a#nFKk;y~%}5 z+ZrrztAicq#{Uppg&-MM{pp>iUg4uKK}zgo!u`i^**I{;IW&oW1k3cSaWIA7PZ`OJ z@L(DDZAoLk*fc&rUx2cM_>x8&w5dGm8@-2lC0 zv`HItDP=0{BkF>d*_*jOadX(P^$b3I!5|C!jzQabO~*-M?mI}edVT*StLjF(3)ROx zpI>&4*A+)-*@I=eS{(Qh3bMW_kw0GBv+mpK2rp??i1);4=uKX$-EUdFx4Tr1?hE%Q zi6jx!n->2gg?my-qyZlo+=aoCI9PpgH-O5DSAK=L-UnE zxLx2O8A)=R8a}^@KueAvV~B}GH2Bvcp7%)f8VwEL+QoG(a#`(4@Jt&)@%f13$BpQ9 zHyqR*ypQLlyvQ0?}?p5y|t ztw&vUq4}|5j%|i5vPgdd%WJC2y0|<#-#uVp9^Mp@n@j^;&@aApI~|5_H2JD>*jUyS zm7D=p>}Y^~&RpG-!+(ms9u3jDf`~fY{+Pq(f)CmZ9eCZr!^gC6J4g7~(}&N##x>om z!xQ!!9uUCc`#6=e_;_>qgfLWx=Xs$2IMn+rw&hEO)-zgol_Xk0=-*(@!KbXgYVB;Cwv=x z18cV$`jMfhMcyA5ap&k^`BTWjT|aI_jn@%wBEZSNeYCC1ADVoBkDN3^aeM(W%I)M1 zAp|r1U8rU+(Sx z$cIG6isR7`fykdH20B@Y@VEKY?jms`vdHY}+>iI;{Wt&c1mGX1k|081%s$i)Z8(|rTV_Ov6&L5h-L@VVa64ZE=c2w)y!vcBBmg!>n@oX-p1b)14^}RD6V$9goZy1;d9#*Q4MG`SHpu-o zg8jmZMIr(n!72|RA}5l+f<&RcaVAzZr77xfs$}FXDm1lKC7++V+lDL|2KEg~oI5#8 zFdp7=YOE;>*LqCZDJ(yfXyuUcFCZ2`M{h&18X=8-4T}nU1P{cEdYn@QV;dY91UrZh zQiGV{h_gfLT%dm*@Y8j97pV2l&vB6Dh=_<>AXt|+G%zAVfgSlhs`-iV@bCb|Gz0tH z_k5!H>>=mU@8WPc2D5H?H~K^BcIM#2=*HbI)p`#RpZEBD-aiZ?hgbi~TWIZhr15<2 z_>D8tF$o@8rPZT*A%_hv8bUP=^m6u?8)z^h8jJcg&Ams%iw(vlnZ-#k1Hz~R5`&X~ zADwy;xF@4PU;ubZNsOP8Kxaf|j&xG52o%SEr@%PM{gWrd=jRx=BqN;$nIRvOorXxk zn*LEnV2a6*F)r*r4xeWlcJmg9r`2h`t0l@_O}tm-IQZcylbI5@ozME#f|X6gnMITT zd4X9Df1XuF<%tv9WRVBUko%SmJ2X+}YVgLMEO0F?-dNu{s5z%3I|^1KTw9wq?$oZ2 z69;j4ZW#BDL(T*oNUdMVGaY#$Q}%%KL4yz9R?`E=Q<7b~N1~0t-^-1`+a6kv_^O*K zse6Opl-)a)$8nL?_NOc4QINn?}em0dyvtU5ZG&P^sTbn4dmY zW4uv$PmdmIp?887emb3HqXdv6#82GR!!TMAY`%lxDnaeavbYFPZwzh%`~X}k5&*~| zddbs0tWaBB?mVx$`UJF*vMpo4`vHTRbcDv5g0r(P#CT=KR@VtSGM+A6%jEo8Da|f0 z^QG34U%MhMxL{=p<7J@OIAELIl^GQ$vA>svove1L^-&2@huyP*vVa&Gd)cb9(MXz{ z;S{A-09+pKD7-r%isMEaR6^R6NAkrW_$Vi53b~)?={MrS*1(Jc1t$gdo4v>>0I*zc z=uEzb^xi|pG~(sX8JeC{(J%=|u&o$n6D*x%`A z?BBObc~NS`LdHx20Ad|`V@hKibr9J!Y;9a+A;tOI%~c5uIA;=$Hv`GSoC(-1QEwc? zQ++A!mmUYcRw+zw6JrCm@?3uwuY4amdG{>ET@|Wy9ju+PYZyFDdl;=+WZ~}=ukiW* zz!f_>LS+yCxnt4bzii;oROjx=@zGbp(Uh03y{VIfjWFGhjyCMhn%`v>r^~f1P@8>{ zH&ETRI6f_iXIB^zGOb=JuNfz$B6jS`D?P>q*ly$;jqjuG&1xB zbyP#6{f;5q$IfHo0~i;yjrVjvJu0cX;zln-_8E2ohf8sil6vp1ICeym*+q$SxmlW< z#92wJ=9{=MgT{4-u~~?gF|k(lu~Em8bJp(*qk1Ps3Ta)jSlr@NJ&%x@o-58wN~u(8 z0&Q`1h>y4P+6ALn9#T|cF#-uzCleHWnOKKjUa&<%e9k0DNyCv=p)AhuS_riZbJxBx zX9o9v&+r7`aI!$)>_0e;gp7TOs5X0yfK(^H-f^(m9vcNAQ@6eNa2%rC`$D$dnLSPq zZ(&YGdBnY+6>n5Q%S`MYDktd7(MEy(m=p`_PIb?p1y&)C@aU!1bM@e?O`R(aExzEJ1?Z>aEkY=|CU7a3LDA*xmXN> zZc^{SKYztGVy&)7f`X1D@5z(b?kaqJSj@NeJT#77HB|AUyCvS0RH~?`V05r$$Ud;P zysHWxgYNgee)f&kZLZR)qYMDvqrbm-_WOE%CTHY!O7EC1sI!v>~hp zY09pZgm-n1C$dvp`XV0?eMp|zNuyQXlUb{7iSl}QY(I~RL#Oo?(>J^`j?qIr%OVs| zcO&Y|u-(K0cuDOhM*IR0{|BTSo(-3r+x&Nb5INluJ0J|8m#`}+sESCUS(=PJS!7U{ z+njd^bA`QcU~o<`4a4%K*`YYFBNkccrF%H$MSFM`1-iVE9^AiA?W_=t=V@3|Y;--+ zI`N?+YaIHSTm{~G!Fl;JZQIA1de|i34uKj9u zZKsg6uT%~vb1HRZ(ylB;hGsfFC<8sIDSDc2+PXv~wYiL>(ZBs2jxw*`4Wwi&@6b6Mp>iyH}YIM#!2 z6^7%-aYeek`ulB#si$*1)q5Z(&RhI^-gMfX;?QWcQH9glT&ZmBk8F za?3do)}VISaxhqdusixT!}pPAy#{xI%|bL@Zi!8Lfz%2}lQb$F{3wP3Ey^mB&dF1R z3Qo8V9IZuC9rUl5JS@*@GrzZ>JTvO@G(Vbp>xj=@%24G)f@I-{&I(py9%m8gv}tKa3$7d*2v#l%` znhhi8O(s$}a#Esfl)tWfKD3aha^FvL=U?xSzlSzbzZ2eDtUTTD!j&bl2WrbmZLI;HOie&4D#C-S`*$}{+Q|cmW$~COK zIXVqhz(4wEMj`6wkbt6*9<$~(B=(JkNheYT2XahQzN;TicWNV~pUg1G6D6=r&(Kcu zz^K5nbu`Dsc6a@Vw+Xq4I9BNDD2T(!6jn274A~VGln_P(jWoyak%t=T^$c4~7r7$d zp@3|8ElvI@vb8@tFm!&|$I~`x8m*pkB(X}d(?W;0$HWj7i@Oh_qf2~VcV(p|u@-BD$DvIJ`v;n~9a|H9T|MklEuoDC?$sBLwNh!IFDt@`YH^s*hMLkOiiV_&l zX~5NIpinpkE3}H!*Q(~M_=gUhEL30-RSfx6a9)Wkfs^&*)fmcBbwV4uCMbQo>^9cP zUKFE{-YP3geT-<$SJE@nc?1m06cga|2d&4%ro@La&DkJ4uqIK}CdPnXq&Ay>v|3i; zh2G1DyosTV4J&aAHT)n`>6oGLNL}a0ANV&kN?QrquY{5k^GySQp3reaOY(`*lm)X> zZZ7Dc521bpGf%No<>#N|Mm7W2-CiV97UcQ6F^J>k6^Gv|4fL%EHM}qa6a}*xe|vP( zB(w!BvW?TQTI|EEB*(I%qTq-K$+DtfNduO5<^E_wdY#TOrB0njb?;ikSoavN=m@4N z+LOmpgYyw6R3}p2;v2v3q=8yAl27;XzSy@u^5MrSMjbx;>y1W)Iiz*j7Yrn<$%yIo z#ujARf5F}@HU$nOR+S%W1IR5%a)+PaRZ?}dr)6t;Y>b9&tG(xKZA9!EjQ+|0gBWMC zD{+5h9B)z1xnO4MN{}yGa8RX0N%IR&G`C^GW_Fb$*>>2xn8igdAK6R7$jZ&S&Y%P^ zuH7Cd4BwT3GkGUa{?x5=AJsCAQ-!&!{Z)n2{U)xqyH=+|^rDKrwJrTF4StxLede@W z?=xckCCRu45)pkxr&S?Xm`E5C(yo=Q=Lys9v73WcSMnrlr?Nj#i=anaq@lJfZIwx#$N%W_txs*#%a|0&}%2f+OwfizIOtcRd>QOA|340)sXji zX6=!hoE*U?i=#0fVLG_p%gqgb2nX!Kp1GMj_ibIX{6ml`8U{Af0yRduK#7NFkqLy( zGHRLHyh!DKHSZNTX=bDL4$Y)4W^vJ~v@NIOz*}fqnE<>QFk|y7ok~>o$z3E32(6-Pm@cQb|&S03Qrz1x!^H=kI*W zGt``bsO}@^wbbmkrm#`(QN1`CyS>G}hRA^kgi&U3Rf0J)ul^rob&O`eyX zot>iU)ST~IF^jBn8K58t zG7=2?q=3Z*T`0uugfD#41|8)SZiYU~z>YF;EM2@;?~RGG6S_$-zMq%{{sIy7M~_RU zXWci@v;EI1fcF^_7y8Gg&E8RRYH}o&ytZ=2DipM)J>~ZtQPUDIt;0SL8FRVI52pI! z*Yg=|H{0hv+A&c~||5~X+UX7W$&y2)Rm~-S&RSbbpKtsK_VKttW1@k24 zh9^cf&d`R_ozo@wXV>yM_enPKwJXe$!lgHLjdO?e7+8lWX4F7P_)r^Ft@&}embNAB zj@`HO)2?eDwlEJWA!g)=1F*dGeHAqudJbs!4&QL_LG&oYl7h6~5q>8%T&LGxxnCKlmgsMAHJ?yzplx85^6z zYI!wk>xayiTsjRH? zgVzArq3z9mA2-Y(8xdBm!Si(&N?2xra&R1^l-xtXWyb)xgnYPvx=GpDY)NXh+M$tu zFPk=O46VPOZeK;6ZDMJ;zD z?gvboU0CX(^Q^DP5b=C4uTR{}adU3-^2ge6hG_a`Mqj-jMZz4EvKASHbSk z(S>4sB9QM{1NXQ^JDx)oq$9x^I^#9&|vH=aoY|IgLVNnUL15JtU>KR)Hur z@9#Y(mqI(uZ35;XyNia@;~g51XNCS&!A&ejq^8w>Ef;}ZTtU$wk;9$l5@?XwTv1k* zr_pE{Q5mNPQPD|Hnqb4iva}bnYt!0IcSY^|d^4Q{INwk#wZGc)dTDp+_4SGOKyLT* zZbt7542RcIxJe*4llq)-YNp7+>8kx6_`LxA80TO%QSKw5`+mz0c|}QERB$6Z3R#xX z`0X$mP3s|wsh`zaeZ*)C+jDm)^;fLeJ`)hSSNF|4m0=cSM^b8X`fBX(aA7reLGx=f zo4LL|Kf6MQ$8)|9I2^>Ls0p+$z>YqC1@H>F9T4#fy?EMW{Za+X(#i_t*VSrxq9G6E zaE!RU?R1WffsS5FLfY9-Cuy4ARwP4nxqwpr8KjMJT4qjdqtW9XRqgyxWa{2DknoNK zJ(5$<41SJrw_QPHy=M-61wmD5X<|EVZs}(Z9478gVg`6P)8W)PkkEjSwu$ zvWlV#hFxif8FmfBc#f*pACqo%cC4RkL)~Pz!=Qgo?{r%ZRrdT_(^xUaG&wF#Y<&yA zmTG-u2A?<}c}C8GyB`ke7IHscb2s+Zh-K6}w-4%wC%yHxmU3`E0_`_X2Cxf)<0^WN zT+r_F6WgVmw0Yr{z2E;3umqAeM7>K&^S)gIlW0tMG(HWBtGd28&#H7~k%&`Mg$5JJ zQ4~+&lbjMDVd11hY$IHf+En= zc|KAmDmI!<74R9d*K}NUGHovp z_eUJhPR@Q<0aQUbJ3G%>;709h*N1``(fl0jgSPSpTfzWYTlNfJfw1>V9~z6hyv@Rc zVQn`KbG`KpG)`cEjDsl_Fv_^bM6mL?ozo}kkI@!B9)|`X zdSV_f3o%0wbtlXJ6yS9WSRwwAth&(DAo=$0wY(4xt3w!U@w2NqGMlIALmaxR;g~qv z?i}%$qsh(jCz2e|l1w>Tq~r@sPkl2b zZzqJ5VC-!G&oo02mn-^$vhG>%5H$SD@#_RI8`?QKDvhRaGImCA2#eSA)gk(D(B4F^ zRIarRTTY4f;r`aAniu~T*^hR&-___ZzDZ;2q`MS{76#*(#gVmU zW+O6nrKX%9<`YgAd$n^lDK0-e)0AqncRXp;keKgN)>`fObeyJG`bSs$KV*D^sIFNJ zuT9oR&Y^AuZ(h;#ic()}n6~3;wc7+)xegMLV^>xUdf5Rj;zn4Px1ttLep1|KqdY#9 z9izLaBe)iIrwL=wXTgRrCktiEW^9usx$d8i>8j_g(af@p-ewlI`+R zg;T8#AqROG#kv8}|O~VcR|0V5WCg&tY=t>Xmwrf+Etaz`k$6*X)vApiU~C7U6PN(rp6}x0*v3 zpf~5L5&E7*5}^^8B#iof8+Y~!1wOV#oKS=7U5ywpXtJ`xtXvRw#^TDd;Ohqub7e(L zM#VX7vAbzNVZ(`z)zMt##LO%ko?kRv?rt;Ug}8Iwg8ZabrK+laJ+m8tAG<-k1mr+R z2iF<{1D!Mj{rn%a_RIBVDeZDes7SQVIi*s$NGg?VMj5=0>U7j|rJO}Lxi0EI#M#p3 z2Ch6Ly0(KUbbe%iI_m8UB%n8S5OpdSl*$HVBF8D{r{HjqHQCn~LugBqe`Jtlftlkm zlf2<3IcndM#jVFwV6x3vi-H>u1`-(p*i|Cp#rC0r{p8o1h69-&J%OPRi)i>Ae3DSrmjBphXH##v74!&mR1KtX5L;o z{Z8mHJ%0pq4RhJMF;*_(e(jv9hDHEK7DwF8{$EUdA4nPoJ__rPj(PIy82s2JqL8hvSz;|Pmg*>2?ttfnv0wn zFuR)ZQp-@C3yk8eQrbD_Fxq*ZbF=#hE8i3FcJsPpMp)-YB6$U=q2#5`AVpr3LzElT z>JabV4ekt0C0W0xOR`gItQpChep7bX;!Z2178s&7+ThYuD344P>s=OHxS&!{A`ms` z(b#6H`ClxY7RMlXY$8l#?D8v*qn>46XbJfa$Lu-PpPu_6hfBOUJP#?^olm?v0(K}r zV5(UGH2ug_gsre%#$0tW3F&-9$chi?8VNKi(s_AEv5xgonG7;189Gk%F%t=>y|~0E zwObvCV!fc;@q6N2ueW6$v8RKePiON7-uszXJwc<%5p@^X3l*4s0$W4;K3|WAP_v+q zW?C=a(ulCp$-)4+?nW1jG0ZFJQPk#(aw>g$0wOw442B*cRrev^}Rm3Jz=}@>h|5_p86k31(^Ao!_lf+`t>u0_ zlou20qO>z!VEvaln9tKPtnwh4un}f?Y;5V37?&6HFY=L52UcKSX@zlH=$(Cou3&VQq>(vV{P%O?hD zM;5ru`~GT0g1+T{rrkP&cqcQvDW!*!FLw{zj~ocf zO@IS?aB#8SF0PUl8)5D4^0yvuH3CJ3#P zuR|iyI4*KWCaGy>se$>__Y_)kpAQ zN4DRv%(*}Mtk9R`Xo||e=M2EFaw(mM*4WNTGWL56XdmmUO(aU{+I&V=Y%*V;x^(eG*kC)t6kOE! zxQwbIQ;kAQ<^;_Rmc+Su=~^3w?S9a~)JlqImp;}xkIaq9&sQ|cP(K@Isu z2N)!B82q=!!TzGfi7qIp{GdH$u21dofdR<`$?p}o*zh`uYW8PQ3TapVA7G%%z`H|e z9=&15Rt(qsvGqwXVuHU$Y;n0WjKNa$5%jZxTt(OW;UvlEKvI4iboqQdEY|u?nMpgW z!cheT^)I?Wsyd+2*45N251eyWOJu9`5}56hsSEL5PN%djMg-Z6xO;t4C@U!7s>5bU z>?GY#Zd7;a1v@#Q`$a@{BT9asu2EcFqSH;Xnr1n3?)qXplY~`NyoZrIK0B>qxGluy z9GVnUbEXO%7{>S)h;tJ|20e7gV{_Vj#IZ8ptU-`;j?i48K<^^aRF9QfVM3jzFBC3L zG4XfEHO>G2c!2fX80Tm*m8DrqMNYA-Ug{xRv7-h0?-eF}kOdMiJ~?=TD1bs3@77UoJ8#I-PeT4ZP?678TD zqf2-yl&N_-0+dUj*^)-0(}T;oA%`EA`RQM#&G36<3ZDRxn|!&D0p+f&Mo_Vl@=Dh& zchvnI+pn^S30;;;k`BB82sb4dnI-%}n_lJRx7Ywg>iq!?@O*bh0>L5O>f+Jt&ekV) zHE!KPy)*Y10Jah?K=zh(EK^6YhQ^8xB-G8?PuiM7nxc-;J?E%QFzihFb9*7)IsMJv z{2S2q^d#X@o#MaJP@T|MTX49L`DqEHN5=Hxo_ou2qIR-iZ`({>Up*EVnKRkOI4t(; zswXqn$d?uLRfT2L)oE;^T;OaWH-=en(qUI&Cp>pDkZ~S@8v}wiGL9zm_sL}0^Y5Q4$zvul$`tAB@1I~E{VU{6}eg*npF$y9Ea9uX0h>uR<^O0uYWwA5r zTzyQie4Yk$9~B8`45_H$A#)H^8?)MCcs-tQD$%YAddDVbm*$1sy1(hGnZuymQJU+& z&g;|LKdJIc3WI{K3M; z7CE%=`~9f(l$tIu1@f3{G_`@9S(+3FFPO?8o<=bCXfj7A(xY|wqrMRml}>lCZY{90 zwug>Z>rRSS&Kn4c+qq7dN|L?Edi?=xTg4G<%Vp%!Ind0heH9n|Ms?+eV!RU~>sg|K z0|wpidwI9Fe{{Xo8mn5ZE^FtvF}1j`B!l*H0mOTjra7InA2b7(zB;qp_hzX3(>KP< zSd-)b10O-)z9gx;r$=nDI%CE(b~^IKS`(~qa7%C)uG+Ak=CH$t8I>-U=_l>wow`=A zp0~VhlaPz>CLG#!=1dD6k%hH|RFa=~bP+C8R**~0mAuY?EqRVlf5xs!Bm9Z#?jNE{oqfEOY9F0%@1+j* zCazsJn;NI!glC@886Kp*?k+moF-)%?Yoj4P>;fkkmX(&XEDVN?2r$G-_4C6wFyMZI zovLp(loM7mv_V~7UiwKqHP_Lo?bfmmUxiumQO};FY6q=U?bLGiXgr}c32ah5fe9)q zCWyvFM!Wv|SD{skcos}m4OaouGj+oD0f$tdvVCyN8Wdl~^sBAG%*4`Eap$A8ZUFiO z_XJU*6l=8s5>&oR>Ubgye!c~JBW9U8-U_Q28CO0@flQVprP|wg8E<+QE?6K2V{%(i z49p*U?D05`wb0PeK&w`+6yQUA8nOCz_>cbR5BVhHo9O!MucK|e!xH#o7GdFng<=Dl zB}&AHWeW4}Fo~m_X;|ra9uQD7l8=SHJoV zpMT)~W?eAw{G)!@+>sWPMfv~$KmbWZK~zi2Dug40^RJMwI}`@zIK&Na-?50eamI9U zMnnbg$l1wfM(pQy)p-Kl5_W>H_TkXsBen(SRlNJsf_ZbPmz^f;VC0m}^R}qi@v4;h zfY+4zDKv!_jANGPlx6T=#AjO|l&Frkw8i-qGiS~qgmz&8Gq!uhDb-Gk(4~Cr!imtL zX|XdUPV)fYPr~-CgF}NtM{&l+lsevKmi6RkM%5GJa2z5xrLLB$E2}u?#o4^B0?wCd zh5=shDDO$T{o)`kt?j2xvr5G|4Dus`-{o?iLfBB5M^mVX9%~t-^Zg^@^fw&RW`q>w z(&EM%KAWM4cT38nqN-|f<^px~Q{O00i^NWi&S5!Y-0?9cWBtS{^jzkFsU5c@KfL}Q zEi*UJ`=yn#%pA-$$;%1X2@Wo?Zri?)+-S_wjapEA9gobwteQ&eN$J*h36JtnED+ed zdICGt4$FHO1@Lv?`=;9wZRDwby{HUPw(^_s1`pl=)g-~G6^hUp zDLlh2#vZY-RmIwZrlzL2w%fOFkMBYg2gVBar#yjy!D-|483KS=gC-uxV*vfitDEU+ zJ|6+=4yt+U&U^WAS~bB5c9$N!(Xa-Ecd?mzE@?%rz#)j zLGH^Y*mzYCxq=gl-*{__ILNJ%2j&>aC~;gE}vGF)B> zJ7M91&2iWq2JU?b-|y=3bQDzH+c~sq;llaCncK2;yW@evDvi){7wgHFSL$FV_P?I| z70+N)@HrP1;#ol$6%W_V$ym#fOaFDOhi3#h?nr(~ay~pXN|zZn#Q90yO{qVxh&_~g znp06gADLT9UwQXJ`o;%W(tqDLoyvPJ(LiShe-Lu0u(XWwDr@QJC64!E<08Q^z`Oz; z-cjCv7=orXOlQxlPAq=L2SxW`fjaU7EOD$kqnMJ)$BS0wWn$t`QF%L{ID(}tM}!IA zp!QH_DIILWcY2a^z~{a3h2{$>NxOx~8@$5gmt>bBvhXdC%x%@t=wKmfi{B={DUE74 zsvv(m9T9>yfT8TPS`Nx*g5mGnxy!WJc+1vpu06n@S0=TL*@QiN_lnT&E{@O$Cmva}lB>*IeZAbcpRv!Qk*l7FOlbCzn;xYz{*r9@BSp4O3h12)%iE zh+b^xsi_6asE;4O>h{C*zNQLVv9N)PM*I0xJzlH8Q!It-MHN?6QxQ*V>}egM|9=0= zbf(pax2mqL;VGOl(HF#S&6wWEUhD#Ta|<8xcI2R=$DK;&BieLYK>1dRyL9Q47x4~k z0reKS61yXsT1CYK(QsA*P;96cfKpYcG(2Mwv}8x`emg zPJDomuqJt`G8Rya9iMcJl7e~l(#*7O>I|x?uBC$q_L>`_T3Rh&3Q3ZZFw1}g)DCux z(EWQm=zY!QG>z9Ubo07}?d^l~YDX^3U9g-V#96d=&lchcB`PZ}pkZEnFv3?p;}+)g z13ZlN5CzncTSgDOdW2do_XrVi5c2t8HzXY3HnVXi$H&d*2Y!?naCAk^g0M_x{vh7* zcYf!0csjF5#M0pl*#RH?9r?s~V>?fEt5u!IU@#v_IWn|w`RRxn zHH2mXt-}EB(rGx*K0;jwx@cKtA)vIUHPN)w*cNH#faak;FIpKFl8o9t((eTatR$fag2I; z{jK;0pD3kf0W7xp!WX^}duw3uYHVyITyP-%IcQoXs>+;v+Hk%_+XPwC~56Lf_b78wDS&>7(X~P z*(K-^CsMb)!pz^ z#Z7>2r`APVG<|C9B5Ge2aC8_z4W}WO9f6iUUc11@Zx&AptJh|?=QKf7OFu))# z9RoQx#a-G|Rb>ApOx9hb-o zMtIt6-p_d&Z-s`V(odg0#r^1W6cQ94_X-D`ARXg{Th@CDcmW?~f^EZ)a8K3KFYzqk znLxsQ!Ioy&S`M~B!r?bq^V8JS#4~17#OawQc;8|yYC^*22e?zF)QUR(!0v$Kup2B; zlL>vBK7ATrGekUU3-6x|{<_#yNfTb4UB5Epq0M;6OzHk*Tww=+4&cCj3yV(>!H}sN z4N7R>k_>ZaZ; zcMcd3V<3+K+u!}&-~VXPcK|?04iX0KAN=44Y5n^3CR_{@pMU;&dh*F9 zN^|J4h2zw}h|NGyM4<-RGD=VWeXU_yu?MmdGlua+0T9+w<%yj@nO%8 zeB>iy5D$8p;IuvT(8I#PlCagQSJA!q-Ycs2-~U6}#;0-0bj>x_(EHzio2Y*K+us&D zQ7l+6Kkigv$BQLP77M3C(qJ36`|rP>w@*7HoS`p#;g4mL$Z=o~(vwdS|N7RvZibKcy~BNY6^mnnVC<2`qMUN0sLxfYlZzV zQ*2;`Le^RnjE1|o*cUi2WKO5_@wB6DI_4JAFG;_Nn3p7}- zEFCmSHD%9a9eFyE4g_wP)POPCYWKs zOvcSOZxXnrrABQ1;loGh2S50MIJ5&Z0C4g)Z+=bOXN9S$Xzup|mVW1QzZb;&y=c+G zxMKnb^v6H`F&#N_MA+i4yY3QB#F{m$`Si=jM95cAe7wPzec8YNfS3V-qxYWoyoZ)8 zTPo}YJO0x@{gbH=$yT0y_Bqq!SzB7sFj9)ztWW;%F5m`r z;0#QypGG)E(0J>~&H}#1*kQmx8S5Eps;BUvzgNr-fF_qua4z5w9?(|uk=!`Vu8;eC84%2&Sf74ha* zjYI$DH@_*~@WZ)~>kjtp*&_yfa1apQgtZ4)qoA%Kc>M9lMJNvBV7&uEd@!@2CfFSD z{z&J}ofn}sh^a@q@4oNTm%scaQJ&-TAdjoAx{7Bqt`{`wpNAfLNQ5<^O@`y_+qYjh zN-CaOcJKE}?sq}F-?L}WiIe{Fmrv0fZ@eMuSQml?!7}s77%Xr#1qD8k*7|bW~XN^&pNCWTris< z*E6UGvtW&ex=sTQhD>m>G2;Md?mz$YKjVwiMfjNfqL;{_Jc zGUF^hu({$x7Y$_?eZj!R7au*69;(rGf`KyGFUU&A_)*?kZC|v&RBlpu48!A;WPhXr z9yf)DBqDjB>6HL&QiOVT!J$4o8JuxMktPecIt+OGJH}h24kJW@2l#LZ#xOwTEmL#z za>ZE+mF3m!6jTZIFrdaiqYY;*ISW@JON{2y& z>Zy$mW#}Z+^5x427Zy9?Bu%WR!0Zd2!>mg3yFROw@}tZ+C_WA%{a7NiI4(wTX-Y}Q zbn#6|sq7_&xia=Gla2Q#n|0FM80jqFiAwt3seRVS$jsB4wDy@%FH59ge7%9kE*LLw z-L_*~v~qM9piOsoC!N30!UNUml#f{faq;%4oac^WjRG%f&NZ9_bS97AfU{@7;YsXd zj1BWl!ibnv$lQkN zUO216!8!q?p`l?yh|FkOr6BltJ1-MvC#*?@0XJ2LLC#)CIqGbagn8v~J`tAnJNzt_arhBZLqmhOHu8Ns zaNq#l$BX4LYZYEne<{M_nmJC%=${Nt55(bZP>iz@}i?L$Z7S7!G zGi=SX>xQ9sSQ@H&bE>l-wY8u~u>ag@#?0M7)=>)gFLW%|KdyfxWG^OO8saqW1@o8l zE}fU@#K}_`SJu&CK==z3yxe|?3OOXFhL7Rqy^q8-I+oAQ0XqYXlQU}Ugp|uq@aPzq z`N_skO6(sPWjGaZ6oAYB`g(i0qetl+J0fsA5-H`!J;BOn32OnMn|ynVFd*v!RG zQd3it0Kpl-Y=um4NUTXcie2vZqvAk+gxGiuTHz4X*VhSB=y&w!QBnTk4kdrIC2e{xF*y}AB+!&>Z@fL1;aFI_jd*^y6a*hTU&#c$tVxAkxM1&BMMZ^) z1nURVmgILN3)swS7v6aDO|e!%JYPIRCAV|Mv#@5(8hZWp*VCp-x)>{6w1`NiMPcDg zt{}M=LttSD2#t}uzFF6rM89n$HbB<((pe!@_X$3BkzGM<>xyi&H8`6_Z2_6&%Rjf- zmslsMU-l`dXcV(u#!RRRO7h+-+6O4Afk$K|{(0g(|{^gPPz8Ze_EW*PWf z05c6(zW~Pp8HpQY{|`h}3IR=9>XX0=&W55b$ z06MD)YYyaAqZqip^wP`XLVW#~zVz2(O#9EA4p!w-u(2J&(pL>z$& zQZ8V3-F2rpZvk)mF<^ufVog~0fH&F*aYDEY_UT8=J`(N~W)1T5^EiaXZ~(0IvM$#> zpso&x;cQ@A)<65RKQ)CCz4X$Hl2n@~({H&>0S*?{Ovr=<%NsUq5Hl=a|N1w?x(V1R z2!1a+rRWzHn8P8Fjuyhg5H5x^zy}eYKW{h}@_7Ipj++dL!n1%y$6=@Hnri;AC!D0Y z&COIFJL_S~mM!dj?h)%EFnjej4jn_XI-9BKWPZlIce?DM*C_7J83V0TZU&%G<)X@Hlij59sId zc=M1F&Ky=JTF$o6npMlGgvU?_iz@QN&EO@h(RBdHGaQ%x~m#Myb2E zP3(kJR8U0u1w7-xZPH=D^cjR;>(s%a0qW`PrVb8k>FMca2gEq>*|~FJKOE`&pmewI6^|OgAESwYUV+nj8VseR4ig`Z|{iH z<1Ia6<*^garcIkn18|9CoUDA4SV#>g;PapVZ?Z|7!={LLU$J62Ax!79pZ%;D+`?(V z8-C1sAi-Jr{`db=ly!eFJApwo2Gdv|{mD;$f}Vf=1#$2j7FEmbJtZx6UBYfdBO?f# zvZtW^hC_qC;Q6}hstsaR1abP9b=bIZqY!}gGjh>*P<+@3+nr)D@uxri`}FFon+4CS zufAHWt3X9v7l7wMChSIpEm030Iwa1Bz)nX=Cp>zw$8T`Z*bxc5-uaGq2!{siR^Z&+ zaN~`%nis?)!D)S-&-Q@xCTC#)S9L^vT$B2d8dpX93Qs}d6iEGQmz{X}j_aXLJqU*F z#Kj7iTxD);7j@T0Ek)`;$n-O=k-7m_mit(xulml!|@`~@~%y^ z2JNC`na$k3e(SBq z;$MlS<_O2ZPB?G?Fxy}~PXM^sauf**U=hBA0XGKpa7Nq`LWjQhy?+;uf*L9Vn!S7X z@xtjPHu6Uvd4yxzr;2cuS+i!^^nru&>tFxIMrQ>){q!?*_uY51LzpABcf}4)PHEY) zrQDZ$d7Ib=#C^2l1?@Kmzc`o;vnog%H(o0)l`pobl`;E4@v$BNHp0DyQzUnKlKe4K zqt0r;fr1P;2Uxd(84g^5l6=%;ZXrIYgk51)>mIf}!k=((+bgfULaTUZC44rJ<5Clz zDaS2URm3Z$>|kSk_X8oDS)@Q}W^^Uid>GFMN>Y|f7hgZhNZDRLMc^fI{qVKoTlxFt zVddjM2h{?JU;;OM*%q|R4(c&DIZh@jQ^i?QcC<)kkxOg(*Gy8Y6yTB^w-}*h7F-=k znMAJZNfK-(Fv&??yU^RyM-3d6P{Yv*ZEfwL_hvhfk#Bk1CR)iy3aAc49>3ZC8!u_b zAb*UvMja44A7Sv{)zvB9IODLjfq{PN>+cma3BA2N>|FFvKf}<5vll?`&rwh{@%vz? zcqprv$}dqyoO^$Np9n{S6M+6;h5>_A#Ek=na214yAYmo|3!SG#y!d6(!gKbJ-6Ey|F zhmCgcmNqIA;b5>24jROExIg;QgB%{0m<@uQUA$XUQ&TfLdX+*fbV0}$W&z}zehlnE z2is$|0%_;2onppGRQM0phhV({63)qxYbuaqMhZ?0oNmn4VEqW3Ej&kv6`aX4EM@F$ zB0)YJCg}Tb-}_!X^h`9S^ar1hV97=y05+(GDFPB>DPC{{7$043R;VPhIrl9eWH!Nq zmmX>s<3MUbnv7Lv>zGqUsg4IF+|rw#u=# zp{^#i-P)$&#mYWVY*eZUTVqmyWVEn8Nh~-yHc4rm8j)2|Ydtyck_&R{6^Nrs9EdP^ z|L2MuGap-Zb6ciy~aj)3W+ zA|Cf)hr)GhSJPr%H;BRbg$ox2y^a>Y=c`!G>eVY*?oy6Mso^oO5e~haU$U0**apAt zx`cDd5Gk^9#WKMI+x6r40fZd+NsTjSP(@`0kHfo#j$Skf(O$o94b9@0qO)c-vcu8K zWA=VWvW|{U5%N^S;r18U#+_^*q#WLP2cuulBnQ) z7JyQrdz zjixZ47x)0%^?U$tX<4Z_3ILG?2(54Dm!yyW;&I;4$J`<8R`kwWZV{Wu;11zsIyMIy zV7UkQ#Vs6(lP6EpZ}{b}HNlzKuwkt@-wZEk5rtF8{P4SXf?wi3|H6x6&99YCt)st7 z7cZd`r%uvupMF+t(w5=OeBk!?vn`B%JpJ7Bbo}@UEv^JETC{*};1Kba^XKTvr+zKK zo*_w+7~w~GeEtGDh&Q#FOHLn{a5RVy3VpKki;uytx|mkS9@}Zw^KL~LK;m45g$oym zH|#ifK%V9dI)o=VB|n2;Ct3-Io>TZQ4hrgp)gT<=a->hJe7A;_OyVfS?vfWh^gWx%{QXKBp|w*y{kLi@>b?=R)PaH6mj1wjgFIM2#BcT6;_EGE%$QC$ z^BTdm9CF>>)csI zy#JOXQxJWD7nwKmTGExvR~Q3xcrTWOH38S~y3Ik3f_Q23W}y!@p{e4Rnm65ey_gkQ zyLvUf{^na2N^=!6BG|RGu6ByK!Kucoz>$)-g^Ql)(4ix=Zp~`3#&#-?Q!iY+#QUH6 zN>Yr>eGx@S9u~mB@E5;$EbdJr916SgNM`{9%b)z@C$_`EJlICfK`nsCTD^kONB99P z;QT$}+!9cP1A4moJBXbC;0#*E$B&h2FlZ((6&{tx&jJ~ITE?%F<0{$9!sGjikkY-h z%+v?>4IW^>{K{sIkhm0g7I6E{@{T{4U4R}7=FhX;QK3KoY2}S;HoyLcc*%>GhFDm< zk7o)nu(ob|f(Qg`ZHg#?XZTIMTtk2tna}d(F?iu9X353j83~a%$Qaw9LYe0|vRJju3g_rI*DF$kJttc^zz7f>2Y!OHjx!E-BKqYCzmaG5aDrtZ`v$E+yvI@T^A#!>Qt`<^4Qsvxe7b%$YrtsyQ6rhrZz=GIk zp7D-DOQ#N#ns@XFhj@DL>kH8_UIZ$^e zvdSspH4j1vJ3C&^0%-gC`f1yaomMuUb*yLIyKg`5q`8t8k}vmi7|?|%MHZM~7Kk2O z<%R_}MsNy6oG5xOTecD?br0zt%?hLBitC+jmN~_i0N>f^k2sgU%hU+no7e@eebaYYc0A?0) z*l{Q@&fVe=9&5@Gi-2*k@Q}61sB^pZ*Q|^~lCUD$X_p}^e9nO>+yE;jBaE?IL&j-+^JK=O`>^?Q04~lb{VNkSBw?+~F$O5TY zAbM0S)=Psy(!kQ9bXuzuT>UiI#-Bw@Sf+|jB~OIJZ={Yqf<+cESpd&dctcR}bozKi zO)6xplC_HYvH^2zF?Lkcr2@d=nOX!6@ZcW)$t4bv`t38%=}3LUs;VjkdmL|& z?gYo^z`-N5gb#{yu#}~z>DDOXA6X!X1;mG(31l9Gc2eR>L&!Y&PJ%=5L0EdOafBkCX@va31^=yhW4f=Z>@!wGJT``J5Ck*S+QjxhLuqoPaYVg`a+ z;2kIlo7^BwskGR^F%6mT|~3U)Z)iNZQ5ci}5L4ZZix)*hRRJ z1=45%^XD~UWhgOl!ClMOngyN^lmA0M*>kQx9riS9=vlf?qD=LAEz z?0RIfOPjRcZgkf?j!sIXYBgivZfyClW7gC(hryswsbZL{i)CDIVgV;pt}&1e*og^U zXlSSxYbAR45HvN-o-iws-$fBa+j z8hv59H{aY!J9h2zMGGXHQ+D*&aor4q#;Cs8Mu?FGLb3oJLwSY7a^kX)hLHJq^#taOfaMK;;R#q9S`p6ArM&$}^Kzs$IT( z+3GMzj$Wiudt`wWEfCiCWr}KK2l@CJWBep%#`2TBf9bNK&2Bb;f5~xD-#;&L3jabP z%t>N_G~IiJtx_B(n}w-?5?|*}z(INZiKpn=Yp>=r6B=k%V|)a`i5y#Rb591 z_U}mmxl|$E@>lSoXWfJlpiCvK5rE@@w0h-ATDN{R?cA}O-sBktr-YN5EBH(Y%u3*N z=g_eJhp^HjZVj<* zRq+tx?xpKtc2gm0o0Jxa9x2Ujo&2A#)OzSe?bWU^c?6p97KnbCCj2e*(SbC4w$s4U zM@L*x!d6Hfaf7$4OF6RcqSAOZrKp+{ITq*Q%5;*>0_0BR#n5kxg~@X;gC06 zei9rEEZ}bAS%{sxuxpY3git4}TNvYTq^;X__$Rbr#vBHiUp{0OjHnt}AczIj$4D&) z;W4Rjv(pIa(JFbaz9@YmB_5uD=n29rxMZ`L4WKiQGm>+Qj*lItrPl)Ow3&fG8K>b( zW;B=_Qlt&D>gI-M+I00x@|E_3%5prHxo1;KRJCw5UW%&8Uc1UjVkU+1x)vUzom-lGQbv=#uPcl4RM`^YrPW8b=Pq zq%^e+Fx0I$5;w{xw*}<0kj(v8X?0~M%Sl{oyA_^{PF9|YI=K7h=o>M?UoE9buChw1 zjGc|PZr?6;Jc5%@RZ}f?W;)G_iMQ?8LDsVwk`fXU(dg(X;p~Y2pS|}EljFGVMQay} zoUx0Xc9C-;0A`9&BtN!2tHPzkKX{Kj(id=MsldHO?!l|k>LVblH4J+0%4gDKa z%eq?W*1-%S)y+`n3`l1{(yC=t9*8x^&nd_4q>2V@M>9H9KBTadyV6}2J1MIND&@Kl zAs77(iEBx{oj@>K?kXI|qu>Y0tkThC48rp-v!-GV=+CRtCCBIlrX+g-DlLCp{)IgZ zanb8|HD`g44{goq8>&#kw6+W(AH~%xR6wt%r!7X>^fIwdd4!D4B^)Chf(_;m=_&Cf7}w?r#3&u2AVzBE54`ns zm^@6I@uJ8TM!Qgul}%jpjhRKnT?!N{^?Y(mM`0kXG1 zeZY{tjmys=uivHeTSDVlH;iVGj+xA5GsuZhX^Rm^FR-xKHZ8%52zpE>pmuTevM^k= zJPcQbRpY>e42;k6aJ~v#i*Z#?)eg0$YcY15X zpfMAwb)x0B0Nx<}D?j&~a%6+>GpAx^EEcrSIwa>2Mj@;`YYo$;4}H|XwCUT?%e_?- z3FwDhdAoZD3oH-nOpn{uV|77shg8+Ix-^I`Ep)Axkg=>~s`i$aW^vA0XNuv&hgFN= zb1!Fog(3G<4%{I2I!<5Sc{En83Usds`8%M9MOf2FObt5`kE#2V# z**BsYGX>pRUkGl5GrZ4`Vg}YE;q2nml1>pJYAkaGQ3W!>$CEM~%Y|?wM)s5$3Q$Ch z0Gbe~h+dVkNL{oFXc(&^qstkS4bZab*2femy5<>TL~mQsF$&^aAPyWjQ1t6RP^?(~ zfl=ol;yxnS~VwbD7JexD4TDnIoDUI#3839o(Ewg@~DS8FGE4_bpI`3I_6& zdJ^_D7*eA9(qJgRXKX}2f>oZ+KWeZG$Fo!^2lh`OLITtPqh>=jfMLc(+>W3Z$HQ3y zQniFHrf-46qf_TD;`j+O(8LMjiARI@aK*}SfpiE-(o9zeRnsR=o)o)x?@_aAGG1R{ zK((qZI9mG;ZWJnAhD2L5<#Tz5eAW%Z)n1L3s0x`=5fVhI^94>teQu;-&$2Qz2~(YQ zWYQ#^Jhej9IH*VO90kjy(+`Huq%@%jY>|XyGEpr*L{;k`u3L@MUWrvKl&F{~DI%KeD?9?c>Z{H!_d3UimapHup*rP{{663~=5q*015}i7A z7DtXAk$PgU#+Hvi_Qe}8pufPrj^+UaL=W1ay=U(pv1!Z4V&%$@d~r}Pf8Jct)Txtr zckz4T^y$;0K48#WFsu}(u`(U?Ju$UAh6A4t8|p^js?U`rTw&Y@i)sHfq8c;pY32eF zI+$MQTnLv;h_Y2rxfqp;PcpOT1DkE7{&3k!#<+k_`fen}x0Tr*E**(rBT!0*n!WVp zhE&@Ec&lmXZWq{EcF?6z{rmS9UAlB7b2o_n`}UUt1m(zTqJJ!f7&x#+%$z=r;0b{S z88}^O-@d(p1BNkUTg8C>&0@#SU1IK>*`jB!9@34ep|MeJ(uO;5x@NPy{L?_~Ln*KX}?4;;V z1BfwgZK8G5Nb&rOFZ&KsCedn5=dNAEvgOOg`RAU~!3PX#o7PQj*=SreG&bM_(R6`3 zTBL52>Z$Rlbrls}u|xt?g^G-(NJ=NIq|3uaVVF1yiScRj4P{fwo{>GIuU7Sf$QDqo z&MgLc90x%)t-^B|o^gXtkLmCaE2qo*OwK(yh4N~g1vjcEcNQ;}t$dHgk*do+TrO6Av`P}j;NgnPE~U3ceP0YbX&}=; zs~_i_HD9b;wMx9Z=smePd&2l}bVAci+Q{8cw2f&Kt5>h_AY&jgZroTo%m36f&x);E zw+XmGHPRqp2(3_zr!rG$Yiku}ojH$=dp#jue&bcKX3aWDqfehc;=&8g6Qf3slziWK z>unQyA+Lc39CHP5I_|}7ZmSHmQ$V3>%lbgU*Ge$5jiG%B)J%bHg}P-dt5!FhC0cr5 z)m>A8-IWw=n<6Qv>QX0|UW=%GO5Env*25LT&vIEI2EUL#TNKG-a5s=oQ6K~L>d1;| zNkYQ}zHPvL2pDDTKVWy1s!I3Bkt1Reb>Pv7x4DDi)TvYQ-UZyfaN_t0ENW11Crnss z3-teP8jvh}{Y{CF!OhYSmWkynojn)BhYnT6l5w00)!u$utXsccY}&M04i-=VH=!-$ zTJ+*euaw|)B3Gg_$)yPVUVQmwv1-*C2@k;i`}b4ct5W8vQznaEy?U15BLgiLu2#c_ z4iS$$`gjK&FmRp18exH90f)H$7lz-V%In7A>NZ(I&11OSJRw}@$F5XbiB_6jLpe4d ziTtXYUj0~7vIGmVn6!9xn>|RqDk|g3mj{(4cjD=YLS2wnLin)WY~!WuOsKr0zBx9(JW%11n8eGwE#vrF5=3FE+VWavE7J2 z4Y^^M;JSCCm4-5hcH2=6bvzFqI#?pz(c{OYds3HfolDBrQ-^;J?RkJ((2WbO6KmJ4 z7hAV&6FYY7lPZ`X~zW_wNn#qW2WQ)+6-;H zp_*U-w{6=F$)aOzdPajo;HQ(S{~Or?bpyg=HDiU?ifD*h(rH%4Oj+b#;$Vj1t5AWp zVaLczuAZu_1?qKHS^HNzciF=%D1mrI+f&5_sOs8Ot5VjZC&R1SQS4iw^4_!=xV!;E z1qh}HgA<%i2AqT>JM;=XqI>BE>1UsPp7uVRE&BKCBl^yqAqN8|Pn?v;$1Zt)sentB z8v4KnB+?OD8Q4iDM)3-Wbe(cHhv3C%7Y71XWH1goc+eT(besW$V;9Gs75#XqRa#B) zy3x3{YR?k2rxDjx{AcyrB!80INn{5Vzeekrbqm;9K<)a~+oi45OmMJdJPWFIV4`fw zgZm9SxZQhn7o9sd(dj=YO<)=16=v?;j(7kIQp}_qtmN#0FxzXx#!X_w#`{G}OS3!~ zX-r$Iz-H^|bPCc~+9>^--`+1*D46pxIzTMD#UU`hESma|N8QFKJ%!--~%<+-0s1O~hx~odr zm`$VJs*=<)ce?oL(Bi7#Tz+FY9mp{RX#0*Ga$|2}LnpecppWb<2hvNi5Gx0vn=R;v zuaOnjctf@J2D&MlmjbkMPVS^5S@HKi-S>b!4cAg0+eW8g+}weZ%K9t0$>Ug^`Y zL&w%W4GY$3crC#FQ+|3&qoibaFbYBy!}&d3pfQR&jUw|Zr{FB zcDnoa?c*uSJRxPoKLLS?=?Vq^0DmF;S%zJ^cGJm8*wEY{1`qabT;92h>_FCSZtgF7 z(>{h+p@D}8j!c}2MXM^1xN_|4peoc#Pe>T1V;hGpz|Zt-n{!IC+BQZxHchPcqhR;Z#dRy_ zCg%n^+vwc0&lZ5y1CF7cHEV{R?WX0e*HU1o5;}%Ul3xwEX6Zz1fnfZKxe ztlJ}wJ@R3-d`RK7UpP5k8a)MU;!QQ^XNuo1PmZfo;)QMzVW7) z1Hqe`Axwa~7My(yUX<3+qs63&nHD5z%A2@7cbFKWm+zFD0Nf&0|ryg7)=u= zlZh)9jYB3=9F{RtCRIVaZizIjNwcPwOofv*O>4kZ#Hv~%k<1hcxWXo>CRrUvtPsmb@Zh|$=_Oi8H7+8>6#Y7_#>3nFQf6mqRli?9}a6yRJ&LoF2wpsHmL>_WN` zrc;u^1tm`pq$g1V>XQ)*$%j@wyXGyBpt&SKC9@{Ou57({yNcda1j%9}7J0M`9zrwZ z1H_8u9~Lu}7&`7Z-?%_tN`}*e8_v$6O(LED5Mir|CxM|uZz}*SB zxXa=AiQ{xs>LGEMj$DlrYIlVp)A!Ou9C<0c2~ldV1lA<*Y536q06+jqL_t(n2~f>v z)U8nSRqQI5PF<%%#TBX}MiQ7X0V-KK8Fojkst&Jn!Y0GN^6|(d!!B3dVfHz3NP$F< z45tGs;P~<5;+=OFiP^JfiP57+iB+p;UqcOqBS((XK*2dKHL5yT1;GFVe{n-?4j2L& zQd~n7@j#s41f7vuR>a6Irt{B^Q{E}pEfJ-Ll3Ob|1;`slC9FJ(&b192XsN(LlU*Vs zn26N#>K4eK1yX9-$;qG(k(^4p22Np^z+Izs1&c-P!{sXk{^}t;3)J3#A@g@I>_vwF zS-&-zE16yk%ZO6l0tpS9$bgBEQ~Q}rCPhN~)hv2>t(u%$*!MVx6~#*1imt+C{nL^| zbEPH{+dTz>YL%owuHqz8X;!HaskkZX0t8r~wgwC-eh^A+7KJ!qqrN>%U&rJ8Qi(cZ zPTd+wYdr@ROi2X1DZZq93zFI|U-;>&8J${mj5O^B?)vvKP5LR*(v793{n)8+Ri?6^ zN@dSiZCG~ZehdS@V17uc<`*SM@E#>VjjfDnXK-v{bwpbW)YgE(R_jP`{Dm&QT6XA+ zr$eh>F4LQ)mg~43FI~4rnsr{VW{nuNM%0L0!O+|E7MX3nu4k?L(PcdaRFfofyGkl6OiBN>wwf@#N&wrItt@Yf-EL6NwWWnZ@JJeQZLOh|CY* z<>F~6T1CNByHr$=Am&N>7(sNy%bcbHBSmO55kSKws6$kf1*(6*kl6=;3G*{+fnuE(V`lAx%ZsJO zn3+ykZc_X(`stNNk~9)Gnw2#Ir%KoRCg) zh|nk^fF`q*%BXVoNv1>XVpsQoA@%me1kq?YUb~fFDb4DZEw|+h7Ei_SsSqIpekFtUDsTGq-bE3+IMy+Wc{o8KBR zh9c+)q)9(*dNEW23ioePQVnEulALA}yvp)@*#*ZIIYN$2dAl_ZHSe!h0GO~KrHDKVj60ki>Q>RW5 z{rmM5Teog2%Yb1T@x#i;)@{-FK_3i)qT==L-CInbHdWdJ`wwv69W43YlJ{$Tz>w-& znJO_^86EAPx&^DD#?!AQ4@FNRNA?JmE3mL)O5{_jikZW}I9i9nKp=ir29=|e4AM@A zjju=zVphmF%$A>}mh~?wh0S3O8f4i5Y-PhR=q>RI+q+k9xw^1+-8$dFf`id68tln> znZ!v^kG&zrE!9{lX}2+vCex&ab^g(yb?jx*JBc$P|7-bcx9Eyk<3L=IF?r1&&qhIH|yAf z>YK1(xnL{W*|w2-w(W9CJ_H^ec$&R0SCFd zES;E8!DO}ns9UPq>sYHnEg4_CWQ3AoJ5r}XBfkF0Fe@*6~WTTtZ z4}%3vrDNj9B!zsIGX+xVlBhsiO`rhGXsl{uW&%bbs5(1NC#hzP6@2wm<&o||1Wf-A z9Wq3W8`~yY1`ZSl4;&C5f4oh6@ZpDrfrpADS_U+qOV3YFU zLx;rsA1w2fwNtOZz2K5GWXNDKe(YE=aA1o#Ao*=2e#?#gq%wtp%}~M{3%r&Vaq!?l zvE}2fVwsPe9_BIu{`Ttx0|xY$G7e}SAWxdg_kbZui;>3RCX<*@soiTRr*55UtxSuW zvjDNxK0Q+DQL>f22#24e^7GG>qc!o$=w7saK+IPM-+};Q`7BD)`mhSHVBU!H-=yah>aUJmJAqr_3A06Pn{}u z?%r84U~u@hOMWw^O%n}`4dVETlVU*s{$kYV(Zp|Tj zeRbwYtkxV}el@M=y_Jh70IBQbk62d9%$t_%g%!^0g)84Em6sU#d$W@gAOwJ!@- zTA~VsS@CW?x=R1Q z-#`Ll6~iRGloI|!ra~IUpnTSh>0;%oHN@{t55G|(N1FKoiT-BIm?=J5^-+nOBOvEA zl5=s$Jrm$hbU-dBjA?5XXP!A5&?GCcuo3ERS@Ct016jRiVhy|Bi3>Txv>)>F%EtQi%?)OUzV zLx<1w7Y+vT6Pk^s3zTKL5jYp;low$* zM~C#LJ9X+LJKWeSuw&QGlG%SRG^Gk|KKu6V7cag1s_eW2X2*`5;+0nx%0a=Dsgp$$ z(e(t`@h)uzfPu_@dleesl0>a%-+_a~?-h;TYlPe`zz=$O15u^__wV0VD(9;U<=|+_ z3I zLCZ0R4;L@YICc6IorfDfDg+&~>|1XQNcWM z+!)x@+0oxqKnYz>y}XguyL$ENC%NR8aX6RojN69@$|C^Yz$k6 z1+{5oDGRb9bSHf}7xXznOHN0QnCla;1If1!OJX=jxT&d0?Ay0bzF6z%=rU)65um(* z^+GOS;Hzf}DjdoIXQJt?^S;7qul99r;+^k2t~vP`B2hUVAhiWZ0JdFGIe6GfVhL4s z0^8|T0ktZ?(#{qkP^#R1KbSIK1q`7XRLo@f%?*N$Q^xf1^wTE}T^C1XfXqyoxZM0B zEQdctCMD6>W>w2+sAgGlmS9OG^0G0v-coCp=CB;-J6wD9Rpd_8DEo2y_wT0_f%n8x zZT|qnt52*hAfQvMhfSL|$rFaUb?Yvgo14Y9?c0kWvg7a7q*#boh0179p$F_=z@TB( zs#SWC*tBW0IC}h;Kp(J0=LcHU*E7mVc*i7OSHc@Wa_%Uh?Pi=N{xoO^3d4pD5xsi$ zl!LAHbUU^hn!fwpf03O(H4|~%j`!e$4~VzkdfQX01@zyG@gRrNV=V88gsfBdHs5~Int4)z)|W^73rGIsCY zEuMSsIitOx*G-DfKmYm9#gZkZ%Vu-t%n_gY%x7HscinZDShmc&Vd$cgI(NZoKzd9( zKz07MPn{Pbt0`7&(^dn89IK{kQhqTj%f0;i>KyZ>e;%Y!W$^rbss*|kEz>Fq&{ory zB=QNSDuTGjaLGlUN`Bwnx^@veckQByyA2LOm1hJNeW`x|AM|GGK;cH)H>n?kiLxjm zTHQ6szQ}a)FUKU_#*Lfg#AOtIS;1m*PrudISaliHX?i*ZGz9AO%gIHuI|dC1NSh`c zb$Qwe2Vo!e`Sfu5G)-_GJS1AWb)`OUPwI$!A%gBxD3J9c$P`(g{@9=m_cl1kGdYce+LC!2Lsxon z(SaK_Y`A#z(MMf+jg7^n63q6Rf}S6i)@eZL2@@uWapT9+pyfeNM-&a>bD#U1m_2Kj zj^?Iea49=&AbIrB$J~5GFdP5XuYN@g8#>IBuO?uyn{K>O455{mM@V;G1prK^PX1n8 z*ocC`68>h+oGE_(^IwP$Y4KZ@jcV&p6`@amy{YCH}!=&y8d+3@q-w_g>G7s?rDMEw|iE1E~#S@7}#0 zLb@Jm+Ntx;lAqyh500AXQmFIchB{Z_sv{ooar9Fl28ti4%<>b;=tcLYGLtz4!kI{F zP1G7N1x@WpMC*vz(KJDEr%1N|^XGEla$LF|>j+fNSq#VgIG@vMxf>gH2eCaAKz6px<87sWYVOG;&$pI@X9%WmVWR-CqF6L+FGR- z0lYXc;fRUQty{O2wC6MC%odom!%X`6b?e1TM0+z$Eb0N?4>#R-gS72?H1W4+(PAAW zG!1Kc-wn2OG1tlA{9uykXg~7U?<7!HlJAm>FA{TTPr|TaL&Wc%_(LGFTnQkEqeqS! z;f@|XB4zDK9w=&nr0wFgYe%(A#z`ipqg_%WGyM4-!$N{wDN!-8DnV-lzH%NRj}d&k zbU9TTGHzi~p3FZ=-a|Wg?;=HuNN(@<2pMb}4WZzcqJ~d=;u8WL!Yl(Cz3QIByc)@J zmtTIl9IdgJkU;mZ(&bPlMuD#|O35qff49DrTpDYv0l{WoQ zdaR)S3`Mj6Pz`ATu7X^4>80*q0sR>aK#m?&F0WF7BgEs{8J+%OJGt7LBR21T?a%%% z>H~dJOeRl)zJ2?Mp5!VrZroVh@UsDnxkoooox)Y&|7-qfi{cEpcq{bEQbZ(ml4 z72?R3znDr#+XcgDfJ%M&(SQ(x7=1Mi!v&D@!|O~F|5z=7{^0>K_=jW1Xz)ZJJIQn8 z>1Uo7Pe1#d`zNjR`s;6yJI4dkXC8k2x7~J|m_fU^5uhJtnV)|8X@3q0N)8=5EdHN= z_yegH7`sxDBKC~h*bm&k4HyQ*q?qX=5-Qot>i3S2H?Tj<#knGRMG-e*A zPEqlNSiWMpc;=aBC+;PsL#xv`iA8{`9Bi z>IdU~iascBz4eywo(sT@88b#)N+0#7Xtu*9V5wRSZy4$vHgbZu&Q-kp#krN|PcpAW zrWWdjsHYqYl&wastHc^GS{0^A*4JohGARxQK$R);Qz}mh`FpNd!dEnc!RkErbs^xK z@~{A22thO*i12@zRybq@AfTX0KvvvT#$p17;W#hC6P>kT)L%frtor}^FW|oH+aJvm~!qUt1_vuU_r)wT-AYL|knOPFi-gZOIwowr<-dj?nGKa6N}F zzTdt{AWNRK8qk9#GEJd7?YG4@0j@%7;QghlCj^&cpQ~xCfO5%?Mk#U5A? zp*#UA7WBWLoDMy5Y0~jLM9A%l+^iZqwab+%^#W)W3>(1xc*z07JMX;XZm`8>SPUMz zcXzJV1|h!M_E&l48-*jJ8bkfJu$b03=l^$Fq;HtzUK`is3GmQ<@ z*c-uNEcyLoz@WYuT*gnu1e_&5cKG1o4}+yWdv?=6>NdBW2Q`oZOO$HRNB$pw{Ba44 z3U7*Ipn}1U8lHOUX&PKT>t;c(UAuORuYK*$$W_Z3p<_cl+_6miKU_qLVAkZLk3OP- z+FCW+7;kH9_2irC90OhaSRkl%?m^5&!c^Na1xt}sumrY@Y~XBQN~MX11v>FDOQi_T zDI2Fqj3NOCE2x$Rk_{|WsrbgxAwmb|82zf@FbW*ZF`9hR@f)#*z8UGpDR0GQU^>q&9K>nURd&QtZgTx6soMr3QZ7wM6 zih&+njyrehEb9xu-~3z7fN;-2N9-`QIbFU%gpUp>eB4boW*TwY32^aSHf72bNd~|1 z-~ax9iS1NZ2+u$Ng80VQ|3bD+xZvWqnq`;JpiKHnx1=L4mdbnHxh~y)i3~|8Nh(a&5mXCabX;gHHC|eO?!8+4e|a3`q2V zwgp{GE=kh6g9`DjSiZvBrvyLjy&-lb{Lr68_XdZ~nB?qDgGa2E=yK|^;Tr~>(0%V@$FlBw>1s_a* z9FEgc5Ke94fEO2M)pFB56rSppxgJ<@bDv#xPt}G$H);Ict1&_Y!0YI z+n}GYgpUed0yLl`FT)4gj(^w*9~E2oB3t1_Wwx$&UEMz_$)KRf_9;D8Yf5Pwb+emr=*jXV?DT3Z=JpicgR>IC82 zfBSc`-r&LmTD&sEz}OTF-QIg|31`WAg69ARcK=4dQ)&R+F7(^Jj_mheKlq_qJ_^XB8857>ppm9fborq8y%n_E~ojghOnedGVw~HLlZ3zrr}7~1odt&qv(%_74%b|LwH%DW?!W!*{Uz?-3>WpOe=YD?LD2J^ z+$jGN1tu1RCSm9zwUNW+1OVLfIpEuZqea)zo=bfaaxcxo19dzN&hT#Gv`++iGxGSc za+ScuANHnu(9Hbi%%YWvcDdnS=Lb3P|0o(TV4}h!C*gtaTH1S}<4K{Ee{i5cKbj1| z#dBL|5(Mo+57=0}V#P;vTlGY7F0Cj%PyIWFlP#^KrCEIOi+9M`i_M$2$d>?aC+G}j z)gfgeu}S0h&wpMjJbd`@k{219o_YBPIQa3Ht!#d6X>Ji;yrUpH%~Y&gx0YOH-YbzE zGdUQ+sR5gBP2p`?alv2IfDP5NW_mYcW7!T3E9nb>PPiH{>y~BRVAetn8#eg21$;Es z(668KAye~A@&5e>h?{A76stTz0d=nKVQ8j0zoSs+_>uCf^B|h#ElXPainJ+`Qm6(- zJuE$mKs2{728xTD=SW5LvSx~}PW1--0OG5Oy$lC#wDy$e`Ch9dC{rkjBx$+*U>rXv`VcZ!_^g?czpNeprHUCq$6&S zl{)^gs3VJj4Xh=$rB0%+ZHf0stBbZh>&*G$;)^bnGGoT_KSL%NVM7cAb-j^)&e>;6 zI{H5YX^?Qo7rs!knG=Hz40`Uo;|t=yfAnM7fmQnnDjnp*W>|%WZkWW=1H2eMO9QFh z)DhoEt~m%!8`L2SY1uv{ln;QD9n?;O5V5MTbm<4OzR_{N{F9f-4nOkI#(D1oybE?H zt7?M=IWBUb{Q=<@L%Td(kp~PsDGR$`

jy@ah0hUUAsD!&$9^>+!s~b0sNkhF(Yg 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

0$Zu58W(uBCn>6SG)lS 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 D;ok@o literal 138778 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%0A_ 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⁡A^feRQ} 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 BK>Gjy From d9bd5b6f8683bc279979156b76935fe09da5288b Mon Sep 17 00:00:00 2001 From: Tam Nhu Tran Date: Tue, 23 Jun 2026 23:36:06 -0400 Subject: [PATCH 11/52] fix(bar): tighten subscription carousel spacing The per-provider carousel reserved more height than a card needs, leaving blank space between each card and its page dots. Size the paged frame to the tallest card (title + one bar per window + optional stale footnote) instead of a generous estimate, and trim the subscriptions section spacing from 8 to 6. --- macos-bar/Sources/CCSBarApp/BarMenuView.swift | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/macos-bar/Sources/CCSBarApp/BarMenuView.swift b/macos-bar/Sources/CCSBarApp/BarMenuView.swift index 4c14e1fd..8c400d89 100644 --- a/macos-bar/Sources/CCSBarApp/BarMenuView.swift +++ b/macos-bar/Sources/CCSBarApp/BarMenuView.swift @@ -226,7 +226,7 @@ struct BarMenuView: View { /// present, preserving the single "Accounts" header for a CLIProxy-only setup. @ViewBuilder private var accountsSection: some View { let parts = BarFormatting.partitionSubscriptions(viewModel.rows) - VStack(alignment: .leading, spacing: 8) { + VStack(alignment: .leading, spacing: 6) { if let error = viewModel.lastError { ErrorBanner(message: error) } @@ -364,17 +364,16 @@ struct BarMenuView: View { } } - /// Estimates the height of a single profile carousel so its frame does not - /// collapse. Only ONE card is visible at a time, so the height is the tallest - /// single card in the carousel: a title row plus one bar per quota window, or a - /// compact parked/empty card when there are no windows. + /// Height of the tallest single card in a carousel — only one card is visible + /// at a time, so the paged frame is sized to fit it WITHOUT reserving blank + /// space beneath. Card = vertical padding (16) + title row (~22) + one bar per + /// quota window (~20) + an optional stale footnote (~16); a parked/reauth card + /// is just the title row plus a one-line status. private func carouselHeight(_ rows: [BarSummaryRow]) -> CGFloat { let maxWindows = rows.map { $0.quotaWindows?.count ?? 0 }.max() ?? 0 - if maxWindows == 0 { - return 80 // parked / reauth card: title row + status line only. - } - // ~34pt title row + ~28pt per window bar + vertical padding. - return 44 + CGFloat(maxWindows) * 30 + if maxWindows == 0 { return 60 } + let hasFootnote = rows.contains { $0.staleAsOf != nil } + return 40 + CGFloat(maxWindows) * 20 + (hasFootnote ? 16 : 0) } private var header: some View { From ae5cd9b98d93f40c9a695e19ad069f2533ccee2b Mon Sep 17 00:00:00 2001 From: Tam Nhu Tran Date: Tue, 23 Jun 2026 23:38:52 -0400 Subject: [PATCH 12/52] chore(bar): drop low-value PR screenshot asset --- .../1595/bar-multi-profile-carousel.png | Bin 197333 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 .github/pr-assets/1595/bar-multi-profile-carousel.png diff --git a/.github/pr-assets/1595/bar-multi-profile-carousel.png b/.github/pr-assets/1595/bar-multi-profile-carousel.png deleted file mode 100644 index 8db1466f2dcd826631c97a3baa295c8637b25c91..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 197333 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

jy@ah0hUUAsD!&$9^>+!s~b0sNkhF(Yg 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

0$Zu58W(uBCn>6SG)lS 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 D;ok@o From a0a2dd00face1825aff6fbc4d87b93bd38bf7f9b Mon Sep 17 00:00:00 2001 From: Tam Nhu Tran Date: Tue, 23 Jun 2026 23:47:06 -0400 Subject: [PATCH 13/52] fix(bar): cache expired profiles and gate codex local fallback to the default Addresses two review focus areas: - Reauth polling: a 401/expired profile now caches its dimmed reauth row and opens a cooldown, so it is shown parked and re-checked at most every 10 min instead of being re-polled (and re-401'd) on every /summary refresh. - Wrong fallback: the global ~/.codex session-log fallback now applies ONLY to the bare default account. A named codex profile with no on-disk auth parks instead of borrowing the default's local usage (no misattribution). --- .../usage/native-quota-collector.ts | 84 +++++++++++---- .../web-server/native-quota-collector.test.ts | 102 ++++++++++++++++++ 2 files changed, 166 insertions(+), 20 deletions(-) diff --git a/src/web-server/usage/native-quota-collector.ts b/src/web-server/usage/native-quota-collector.ts index 167cc036..65b20820 100644 --- a/src/web-server/usage/native-quota-collector.ts +++ b/src/web-server/usage/native-quota-collector.ts @@ -60,6 +60,10 @@ import { getCcsDir } from '../../utils/config-manager'; /** On-demand cache TTL. Floor is 5 min; we use 10 min because the bar polls * /summary far more often than a hook fires. */ const NATIVE_QUOTA_TTL_MS = 600_000; // 10 minutes +// After a 401/expired result, cache the reauth row and cool the profile down so +// an expired account is shown dimmed and re-checked at most this often instead +// of being re-polled (and re-401'd) on every /summary refresh. +const REAUTH_COOLDOWN_MS = NATIVE_QUOTA_TTL_MS; // 10 minutes /** Exponential backoff base; delay = min(base * 2^n, MAX) + jitter. */ const RETRY_BASE_MS = 1_000; @@ -755,8 +759,10 @@ async function collectClaudeRowForProfile( return { ...row, cached: false }; } - // 401 -> token expired. Emit a reauth row so the bar can prompt; this is - // a real, actionable state distinct from a transient failure. + // 401 -> token expired. Emit a dimmed reauth row so the bar can prompt. + // Cache it and open a cooldown so the expired account is NOT re-polled + // (and re-401'd) on every refresh; it re-checks after REAUTH_COOLDOWN_MS, + // picking up a successful re-auth. if (quota.needsReauth) { const row: BarSummaryRow = { account_id: `${SURFACE_CLAUDE}:${profile}`, @@ -766,7 +772,7 @@ async function collectClaudeRowForProfile( is_subscription: true, displayName: profile, tier, - paused: false, + paused: true, quota_percentage: null, quotaStatus: 'error', next_reset: null, @@ -778,9 +784,10 @@ async function collectClaudeRowForProfile( fetchedAt: new Date(now).toISOString(), needsReauth: true, }; - // Do not cache the reauth row as a good value; it should re-evaluate - // once the user re-auths. But return it now. - return row; + state.cachedRow = row; + state.cachedAt = now; + state.cooldownUntil = now + REAUTH_COOLDOWN_MS; + return { ...row, cached: false }; } // 429 / 5xx / transient. Apply backoff + breaker, then serve stale. @@ -880,8 +887,10 @@ async function collectCodexRowForProfile( } // else: fall through to LOCAL fallback below. } else if (quota.needsReauth) { - // Token expired -> reauth row; do NOT cache as a good value. - return { + // Token expired -> dimmed reauth row. Cache it and cool down so the + // expired account is NOT re-polled (and re-401'd) every refresh; it + // re-checks after REAUTH_COOLDOWN_MS to pick up a re-auth. + const reauthRow: BarSummaryRow = { account_id: `${SURFACE_CODEX}:${profile}`, provider: CODEX_NATIVE_PROVIDER, surface: SURFACE_CODEX, @@ -889,7 +898,7 @@ async function collectCodexRowForProfile( is_subscription: true, displayName: profile, tier: null, - paused: false, + paused: true, quota_percentage: null, quotaStatus: 'error', next_reset: null, @@ -901,6 +910,10 @@ async function collectCodexRowForProfile( fetchedAt: new Date(now).toISOString(), needsReauth: true, }; + state.cachedRow = reauthRow; + state.cachedAt = now; + state.cooldownUntil = now + REAUTH_COOLDOWN_MS; + return { ...reauthRow, cached: false }; } else if (quota.httpStatus === 429) { // 429: apply breaker + backoff, then fall through to local. state.consecutive429 += 1; @@ -927,23 +940,54 @@ async function collectCodexRowForProfile( } // Fall through to LOCAL fallback below. } - // No on-disk auth for this profile -> fall through to local fallback. + // No on-disk auth for this profile -> fall through to the fallback below. } // ---------------------------------------------------------------- - // LOCAL FALLBACK: session log read (zero network, always attempted - // when network is unavailable / no auth file / breaker active) + // LOCAL FALLBACK: session-log read (zero network). The session logs live + // in the GLOBAL ~/.codex, so they represent ONLY the bare default account, + // never a named profile. Using them for a named profile would misattribute + // the default's usage to the profile, so only the default falls back to + // local; named profiles park instead. // ---------------------------------------------------------------- - const localQuota = await getCodex(); - if (localQuota) { - const row = buildCodexRow(localQuota, now, SURFACE_CODEX, profile); - state.cachedRow = row; - state.cachedAt = now; - return { ...row, cached: false }; + if (profile === DEFAULT_PROFILE) { + const localQuota = await getCodex(); + if (localQuota) { + const row = buildCodexRow(localQuota, now, SURFACE_CODEX, profile); + state.cachedRow = row; + state.cachedAt = now; + return { ...row, cached: false }; + } } - // No local data either: serve stale (may be null). - return serveCached(state); + // Named profile (or default with no local data): serve the last-known row + // if any, else a dimmed parked row -- never global local data for a named + // profile. + const stale = serveCached(state); + if (stale) return stale; + const parkedRow: BarSummaryRow = { + account_id: `${SURFACE_CODEX}:${profile}`, + provider: CODEX_NATIVE_PROVIDER, + surface: SURFACE_CODEX, + profile, + is_subscription: true, + displayName: profile, + tier: null, + paused: true, + quota_percentage: null, + quotaStatus: 'unsupported', + next_reset: null, + is_default: false, + last_activity_at: null, + today_cost: null, + health: 'ok', + cached: false, + fetchedAt: new Date(now).toISOString(), + needsReauth: true, + }; + state.cachedRow = parkedRow; + state.cachedAt = now; + return parkedRow; } catch { // Network/parse rejection -> treat as transient, serve stale. const backoff = computeBackoffMs(state.backoffAttempt); diff --git a/tests/unit/web-server/native-quota-collector.test.ts b/tests/unit/web-server/native-quota-collector.test.ts index 22c63654..3022f478 100644 --- a/tests/unit/web-server/native-quota-collector.test.ts +++ b/tests/unit/web-server/native-quota-collector.test.ts @@ -1205,3 +1205,105 @@ describe('multi-profile: getCachedNativeAccountRows reflects per-profile maps', expect(getCachedNativeAccountRows()).toEqual([]); }); }); + +describe('review focus areas: reauth caching + codex local fallback', () => { + it('Claude reauth (401) profile is dimmed, cached, and not re-polled within cooldown', async () => { + resetNativeQuotaState(); + const clock = { now: 5_000_000 }; + const deps = makeMultiProfileDeps({ + clock, + claudeProfiles: ['work'], + codexProfiles: [], + claudeDefault: 'work', + credsForProfile: () => maxCreds(), + claudeFetch: async () => reauthQuota(), + }); + + const first = await getNativeAccountRows(deps); + const r1 = first.find((r) => r.profile === 'work'); + expect(r1?.needsReauth).toBe(true); + expect(r1?.paused).toBe(true); // dimmed + expect(deps.claudeFetchCount()).toBe(1); + + // A forced refresh within the cooldown serves the cached reauth row and does + // NOT re-hit the endpoint (no repeated 401 on the same account). + const second = await getNativeAccountRows(deps, { force: true }); + const r2 = second.find((r) => r.profile === 'work'); + expect(r2?.needsReauth).toBe(true); + expect(r2?.cached).toBe(true); + expect(deps.claudeFetchCount()).toBe(1); + }); + + it('Codex reauth (401) profile is dimmed, cached, and not re-polled within cooldown', async () => { + resetNativeQuotaState(); + const clock = { now: 5_000_000 }; + const deps = makeMultiProfileDeps({ + clock, + claudeProfiles: [], + codexProfiles: ['ck'], + codexDefault: 'default', + codexNativeAuth: (p) => ({ accessToken: `t-${p}`, accountId: `id-${p}` }), + codexNetworkFetch: async () => ({ success: false, needsReauth: true }) as CodexQuotaResult, + }); + + const first = await getNativeAccountRows(deps); + const r1 = first.find((r) => r.profile === 'ck'); + expect(r1?.needsReauth).toBe(true); + expect(r1?.paused).toBe(true); + expect(deps.codexNetworkCount()).toBe(1); + + const second = await getNativeAccountRows(deps, { force: true }); + expect(second.find((r) => r.profile === 'ck')?.cached).toBe(true); + expect(deps.codexNetworkCount()).toBe(1); + }); + + it('Codex named profile without on-disk auth is parked, never filled from global local data', async () => { + resetNativeQuotaState(); + const clock = { now: 5_000_000 }; + let localCalls = 0; + const deps = makeMultiProfileDeps({ + clock, + claudeProfiles: [], + codexProfiles: ['ck'], + codexDefault: 'default', + codexNativeAuth: () => null, // no auth.json for the named profile + codexLocalFallback: async () => { + localCalls += 1; + return codexLocalQuota(); + }, + }); + + const rows = await getNativeAccountRows(deps); + const ck = rows.find((r) => r.profile === 'ck'); + expect(ck).toBeDefined(); + expect(ck?.paused).toBe(true); // parked, dimmed + expect(ck?.needsReauth).toBe(true); + expect(ck?.quota_percentage).toBeNull(); + // The global ~/.codex session data is never attributed to a named profile. + expect(localCalls).toBe(0); + }); + + it('Codex default profile without auth uses the global local session fallback', async () => { + resetNativeQuotaState(); + const clock = { now: 5_000_000 }; + let localCalls = 0; + const deps = makeMultiProfileDeps({ + clock, + claudeProfiles: [], + codexProfiles: ['default'], + codexDefault: 'default', + codexNativeAuth: () => null, + codexLocalFallback: async () => { + localCalls += 1; + return codexLocalQuota(); + }, + }); + + const rows = await getNativeAccountRows(deps); + const def = rows.find((r) => r.profile === 'default'); + expect(def).toBeDefined(); + // The bare default legitimately reflects the global ~/.codex local data. + expect(localCalls).toBe(1); + expect(def?.quotaStatus).not.toBe('unsupported'); + }); +}); From f57eed8c34817ea77f313d63029fa9e746f8b9c9 Mon Sep 17 00:00:00 2001 From: Tam Nhu Tran Date: Tue, 23 Jun 2026 23:49:11 -0400 Subject: [PATCH 14/52] feat(bar): make the profile carousel mouse-navigable The horizontal paging carousel only responded to trackpad swipe; a mouse could not move it. Add clickable prev/next arrows and make the page dots tappable -- each sets the scrollPosition binding (animated), so mouse users can page through a provider's profiles. Trackpad swipe is unchanged. --- macos-bar/Sources/CCSBarApp/BarMenuView.swift | 61 ++++++++++++++++--- 1 file changed, 51 insertions(+), 10 deletions(-) diff --git a/macos-bar/Sources/CCSBarApp/BarMenuView.swift b/macos-bar/Sources/CCSBarApp/BarMenuView.swift index 8c400d89..920d5db6 100644 --- a/macos-bar/Sources/CCSBarApp/BarMenuView.swift +++ b/macos-bar/Sources/CCSBarApp/BarMenuView.swift @@ -291,16 +291,11 @@ struct BarMenuView: View { get: { selectedProfileByProvider[prov] ?? rows.first?.id }, set: { selectedProfileByProvider[prov] = $0 ?? rows.first?.id })) .frame(height: carouselHeight(rows)) - // Page dots — one per profile in this provider's carousel. - HStack(spacing: 6) { - ForEach(rows) { row in - let isCurrent = (selectedProfileByProvider[prov] ?? rows.first?.id) == row.id - Circle() - .fill(isCurrent ? theme.subscription : Color.secondary.opacity(0.3)) - .frame(width: 6, height: 6) - } - } - .frame(maxWidth: .infinity, alignment: .center) + // Page controls — clickable prev/next arrows + dots so the carousel + // is navigable by MOUSE (click), not just by trackpad swipe. + // Programmatically setting the scrollPosition binding pages the + // ScrollView; withAnimation gives the same feel as a swipe. + carouselControls(prov: prov, rows: rows) } } } @@ -364,6 +359,52 @@ struct BarMenuView: View { } } + /// Prev/next arrows + clickable dots for a provider's profile carousel, so it + /// is navigable by MOUSE (click), not only by trackpad swipe. Selecting a page + /// sets the scrollPosition binding, which scrolls the ScrollView to that card. + @ViewBuilder private func carouselControls(prov: String, rows: [BarSummaryRow]) -> some View { + let currentId = selectedProfileByProvider[prov] ?? rows.first?.id + let curIdx = rows.firstIndex(where: { $0.id == currentId }) ?? 0 + HStack(spacing: 7) { + pageArrow(systemName: "chevron.left", enabled: curIdx > 0) { + if curIdx > 0 { selectPage(prov, rows[curIdx - 1].id) } + } + ForEach(rows) { row in + Circle() + .fill(currentId == row.id ? theme.subscription : Color.secondary.opacity(0.3)) + .frame(width: 6, height: 6) + .padding(4) // larger mouse hit target than the 6pt dot + .contentShape(Rectangle()) + .onTapGesture { selectPage(prov, row.id) } + } + pageArrow(systemName: "chevron.right", enabled: curIdx < rows.count - 1) { + if curIdx < rows.count - 1 { selectPage(prov, rows[curIdx + 1].id) } + } + } + .frame(maxWidth: .infinity, alignment: .center) + } + + /// Animate the carousel to the given profile card (mouse click or dot tap). + private func selectPage(_ prov: String, _ id: String) { + withAnimation(.easeInOut(duration: 0.2)) { + selectedProfileByProvider[prov] = id + } + } + + @ViewBuilder private func pageArrow( + systemName: String, enabled: Bool, action: @escaping () -> Void + ) -> some View { + Button(action: action) { + Image(systemName: systemName) + .font(.system(size: 9, weight: .bold)) + .frame(width: 16, height: 16) + .contentShape(Rectangle()) + } + .buttonStyle(.plain) + .disabled(!enabled) + .opacity(enabled ? 0.7 : 0.25) + } + /// Height of the tallest single card in a carousel — only one card is visible /// at a time, so the paged frame is sized to fit it WITHOUT reserving blank /// space beneath. Card = vertical padding (16) + title row (~22) + one bar per From 7b610f0e8275c4d61ae3b35a891cd17ef0f8262e Mon Sep 17 00:00:00 2001 From: Tam Nhu Tran Date: Wed, 24 Jun 2026 00:03:20 -0400 Subject: [PATCH 15/52] fix(bar): keep is_default on cache-fallback rows The collector cached each row before the default profile was resolved, so the cache-fallback path (getCachedNativeAccountRows) served the default account with is_default:false -- the UI then lost default ordering/tagging when /summary served from cache. Write the resolved default flag back onto the cached copy so the fallback stays consistent with a fresh collection. --- .../usage/native-quota-collector.ts | 24 ++++++++++++++-- .../web-server/native-quota-collector.test.ts | 28 +++++++++++++++++++ 2 files changed, 50 insertions(+), 2 deletions(-) diff --git a/src/web-server/usage/native-quota-collector.ts b/src/web-server/usage/native-quota-collector.ts index 65b20820..3d4517e4 100644 --- a/src/web-server/usage/native-quota-collector.ts +++ b/src/web-server/usage/native-quota-collector.ts @@ -669,6 +669,26 @@ function markDefault(row: BarSummaryRow, isDefault: boolean): BarSummaryRow { return { ...row, is_default: isDefault }; } +/** + * Tag the row with is_default AND write the flag back onto the cached copy. The + * collector caches a row before the default profile is known (the default is + * resolved in the enumerator), so without this the cache-fallback path + * (getCachedNativeAccountRows) would serve the default account with + * is_default:false and the UI would stop ordering/tagging it as the default. + */ +function markDefaultAndSyncCache( + map: Map, + profile: string, + row: BarSummaryRow, + isDefault: boolean +): BarSummaryRow { + const state = map.get(profile); + if (state?.cachedRow) { + state.cachedRow = { ...state.cachedRow, is_default: isDefault }; + } + return markDefault(row, isDefault); +} + async function collectClaudeRowForProfile( profile: string, deps: NativeQuotaDeps, @@ -1453,7 +1473,7 @@ async function getNativeAccountRowsMultiProfile( const isDefault = p === claudeDefault; tasks.push( collectClaudeRowForProfile(p, deps, force) - .then((r) => (r ? markDefault(r, isDefault) : null)) + .then((r) => (r ? markDefaultAndSyncCache(claudeProfileStates, p, r, isDefault) : null)) .catch(() => null) ); } @@ -1462,7 +1482,7 @@ async function getNativeAccountRowsMultiProfile( const isDefault = p === codexDefault; tasks.push( collectCodexRowForProfile(p, deps, force) - .then((r) => (r ? markDefault(r, isDefault) : null)) + .then((r) => (r ? markDefaultAndSyncCache(codexProfileStates, p, r, isDefault) : null)) .catch(() => null) ); } diff --git a/tests/unit/web-server/native-quota-collector.test.ts b/tests/unit/web-server/native-quota-collector.test.ts index 3022f478..2700e3bf 100644 --- a/tests/unit/web-server/native-quota-collector.test.ts +++ b/tests/unit/web-server/native-quota-collector.test.ts @@ -1306,4 +1306,32 @@ describe('review focus areas: reauth caching + codex local fallback', () => { expect(localCalls).toBe(1); expect(def?.quotaStatus).not.toBe('unsupported'); }); + + it('cache-fallback rows keep is_default for the default profile', async () => { + resetNativeQuotaState(); + const clock = { now: 6_000_000 }; + const deps = makeMultiProfileDeps({ + clock, + claudeProfiles: ['work', 'ck'], + codexProfiles: ['default', 'ck'], + claudeDefault: 'work', + codexDefault: 'default', + credsForProfile: () => maxCreds(), + claudeFetch: async () => successQuota(), + codexNativeAuth: (p) => ({ accessToken: `t-${p}`, accountId: `id-${p}` }), + codexNetworkFetch: async () => codexSuccessQuota(), + }); + + await getNativeAccountRows(deps); // populate the per-profile caches + + // The cache-fallback path must preserve is_default so the UI still orders and + // tags the default account when /summary serves from cache. + const cached = getCachedNativeAccountRows(); + expect(cached.find((r) => r.surface === 'ccs' && r.profile === 'work')?.is_default).toBe(true); + expect(cached.find((r) => r.surface === 'ccsx' && r.profile === 'default')?.is_default).toBe( + true + ); + expect(cached.find((r) => r.surface === 'ccs' && r.profile === 'ck')?.is_default).toBe(false); + expect(cached.find((r) => r.surface === 'ccsx' && r.profile === 'ck')?.is_default).toBe(false); + }); }); From a1a565177e5118bb06f1e159ee1dcd887c8ed19e Mon Sep 17 00:00:00 2001 From: Tam Nhu Tran Date: Wed, 24 Jun 2026 00:08:02 -0400 Subject: [PATCH 16/52] fix(codex): route codex CLI to /backend-api/codex on original CLIProxy backend The Codex CLI provider config uses wire_api = "responses", so the Codex CLI appends "/responses" to its base_url. buildCodexCliproxyProviderBaseUrl derived the base URL from the backend-aware route helper, which returns the bare root for the original backend. Codex then called http://127.0.0.1:/responses, which the original CLIProxy binary does not serve, producing a 404 on every request. The original backend serves the Codex Responses API only at /v1/responses and the chatgpt_base_url-compatible alias /backend-api/codex/responses. Use that alias for the original backend; keep the provider-scoped alias for the Plus backend. Closes #1597 --- src/targets/codex-cliproxy-provider-config.ts | 21 +++++++++++++-- .../codex-cliproxy-provider-config.test.ts | 27 ++++++++++++++----- 2 files changed, 39 insertions(+), 9 deletions(-) diff --git a/src/targets/codex-cliproxy-provider-config.ts b/src/targets/codex-cliproxy-provider-config.ts index e7525696..a2c93252 100644 --- a/src/targets/codex-cliproxy-provider-config.ts +++ b/src/targets/codex-cliproxy-provider-config.ts @@ -8,7 +8,11 @@ import { } from '../web-server/services/compatible-cli-toml-file-service'; import { getModelMaxLevel } from '../cliproxy/model-catalog'; import { parseCodexModelTuningAlias } from '../cliproxy/ai-providers/model-id-normalizer'; -import { buildLocalProviderBaseUrl } from '../cliproxy/config/provider-route'; +import { + buildLocalProviderBaseUrl, + getConfiguredCliproxyBackend, + usesScopedProviderRoutes, +} from '../cliproxy/config/provider-route'; import { ConfigError } from '../errors/error-types'; export const CCSXP_CLIPROXY_SHORTCUT_ENV = 'CCSXP_CLIPROXY_SHORTCUT'; @@ -39,7 +43,20 @@ function resolveCodexConfigPath(env: NodeJS.ProcessEnv = process.env): { } export function buildCodexCliproxyProviderBaseUrl(port: number): string { - return buildLocalProviderBaseUrl('codex', port); + // The Codex CLI provider uses wire_api = "responses", so the Codex CLI appends + // "/responses" to this base_url. The local CLIProxy backends do NOT serve the + // Codex Responses API at the bare root: + // - original backend: only "/v1/responses" and "/backend-api/codex/responses" + // - plus backend: additionally "/api/provider/codex/responses" + // Returning the root makes Codex call "http://127.0.0.1:/responses" -> 404 + // (issue #1597). Use the chatgpt_base_url-compatible "/backend-api/codex" alias, + // which both backends serve; keep the provider-scoped alias for the Plus backend + // to preserve its existing per-provider routing. + const backend = getConfiguredCliproxyBackend(); + if (usesScopedProviderRoutes(backend)) { + return buildLocalProviderBaseUrl('codex', port, backend); + } + return `http://127.0.0.1:${port}/backend-api/codex`; } export function isCcsxpCliproxyShortcut(env: NodeJS.ProcessEnv = process.env): boolean { diff --git a/tests/unit/targets/codex-cliproxy-provider-config.test.ts b/tests/unit/targets/codex-cliproxy-provider-config.test.ts index 62792f81..9b1b99d2 100644 --- a/tests/unit/targets/codex-cliproxy-provider-config.test.ts +++ b/tests/unit/targets/codex-cliproxy-provider-config.test.ts @@ -50,8 +50,21 @@ describe('codex cliproxy provider config repair', () => { clearConfigCache(); } - it('uses the original backend root URL by default', () => { - expect(buildCodexCliproxyProviderBaseUrl(8317)).toBe('http://127.0.0.1:8317'); + it('uses the original backend chatgpt_base_url alias by default', () => { + // Codex CLI (wire_api = "responses") appends "/responses" to base_url. The + // original CLIProxy backend serves the Codex Responses API only under the + // "/backend-api/codex" alias, never at the bare root. Returning the root here + // makes Codex call "http://127.0.0.1:8317/responses" -> 404 (issue #1597). + expect(buildCodexCliproxyProviderBaseUrl(8317)).toBe( + 'http://127.0.0.1:8317/backend-api/codex' + ); + }); + + it('produces a Codex Responses endpoint the original backend actually serves (regression #1597)', () => { + const baseUrl = buildCodexCliproxyProviderBaseUrl(8317); + const responsesEndpoint = `${baseUrl.replace(/\/+$/, '')}/responses`; + expect(responsesEndpoint).toBe('http://127.0.0.1:8317/backend-api/codex/responses'); + expect(responsesEndpoint).not.toBe('http://127.0.0.1:8317/responses'); }); it('uses the plus backend scoped Codex URL when configured', () => { @@ -69,7 +82,7 @@ describe('codex cliproxy provider config repair', () => { const rawText = fs.readFileSync(configPath, 'utf8'); expect(rawText).toContain('[model_providers.cliproxy]'); expect(rawText).toContain('name = "CLIProxy Codex"'); - expect(rawText).toContain('base_url = "http://127.0.0.1:8317"'); + expect(rawText).toContain('base_url = "http://127.0.0.1:8317/backend-api/codex"'); expect(rawText).toContain('env_key = "CLIPROXY_API_KEY"'); expect(rawText).not.toContain('model_provider = "cliproxy"'); }); @@ -116,7 +129,7 @@ wire_api = "responses" expect(result.changed).toBe(true); expect(result.envKey).toBe('CLIPROXY_API_KEY'); const rawText = fs.readFileSync(configPath, 'utf8'); - expect(rawText).toContain('base_url = "http://127.0.0.1:9321"'); + expect(rawText).toContain('base_url = "http://127.0.0.1:9321/backend-api/codex"'); expect(rawText).toContain('env_key = "CLIPROXY_API_KEY"'); expect(rawText).toContain('requires_openai_auth = false'); expect(rawText).toContain('supports_websockets = false'); @@ -180,7 +193,7 @@ supports_websockets = false expect(fs.readFileSync(configPath, 'utf8')).toBe(rawText); }); - it('repairs a stale ready localhost provider to the original backend root URL', async () => { + it('repairs a stale ready localhost provider to the original backend codex alias', async () => { fs.mkdirSync(codexHome, { recursive: true }); const rawText = `[model_providers.cliproxy] name = "CLIProxy Codex" @@ -197,7 +210,7 @@ supports_websockets = false expect(result.changed).toBe(true); expect(result.envKey).toBe('CLIPROXY_API_KEY'); const repairedText = fs.readFileSync(configPath, 'utf8'); - expect(repairedText).toContain('base_url = "http://127.0.0.1:8317"'); + expect(repairedText).toContain('base_url = "http://127.0.0.1:8317/backend-api/codex"'); expect(repairedText).not.toContain('/api/provider/codex'); }); @@ -299,7 +312,7 @@ supports_websockets = false [model_providers.cliproxy] name = "CLIProxy Codex" -base_url = "http://127.0.0.1:8317" +base_url = "http://127.0.0.1:8317/backend-api/codex" env_key = "CLIPROXY_API_KEY" wire_api = "responses" requires_openai_auth = false From b514986ddd947ebd4a67acd41bf6735586a72959 Mon Sep 17 00:00:00 2001 From: Tam Nhu Tran Date: Wed, 24 Jun 2026 00:52:55 -0400 Subject: [PATCH 17/52] fix(bar): short-TTL parked rows + keep valid codex subs active Addresses two review focus areas: - Stale Parked Rows: profiles with no on-disk credentials cached their parked row for the full quota TTL, so a fresh login stayed dimmed for up to 10 min. Parked rows (quotaStatus 'unsupported') now use a 30s TTL so a new login is picked up within seconds. - Codex Fallback: a named codex profile whose token authenticated but whose response lacked core windows was downgraded to a parked/needsAuth row, hiding a real subscription. It now emits an active (quota-less) row; only the bare default still falls back to global local session data. Also fixes a latent coalescing bug the short TTL exposed: a synchronous return inside the pending IIFE cleared state.pending during its own assignment, leaving a stale resolved promise that the next call reused. The IIFE now yields once so the assignment lands before the finally clears it. --- .../usage/native-quota-collector.ts | 51 ++++++++++++++++--- .../web-server/native-quota-collector.test.ts | 51 +++++++++++++++++++ 2 files changed, 94 insertions(+), 8 deletions(-) diff --git a/src/web-server/usage/native-quota-collector.ts b/src/web-server/usage/native-quota-collector.ts index 3d4517e4..8c9e8188 100644 --- a/src/web-server/usage/native-quota-collector.ts +++ b/src/web-server/usage/native-quota-collector.ts @@ -64,6 +64,11 @@ const NATIVE_QUOTA_TTL_MS = 600_000; // 10 minutes // an expired account is shown dimmed and re-checked at most this often instead // of being re-polled (and re-401'd) on every /summary refresh. const REAUTH_COOLDOWN_MS = NATIVE_QUOTA_TTL_MS; // 10 minutes +// Parked rows (no on-disk creds, quotaStatus 'unsupported') re-check on a short +// TTL — re-statting credentials is cheap, and this lets a profile that the user +// just logged into appear within seconds instead of staying dimmed for the full +// quota TTL. (Reauth/error rows keep the full TTL + cooldown to avoid re-401s.) +const PARKED_TTL_MS = 30_000; // 30 seconds /** Exponential backoff base; delay = min(base * 2^n, MAX) + jitter. */ const RETRY_BASE_MS = 1_000; @@ -697,9 +702,12 @@ async function collectClaudeRowForProfile( const now = (deps.now ?? Date.now)(); const state = getState(claudeProfileStates, profile); - // Serve from cache while within TTL — force bypasses TTL short-circuit. - if (!force && state.cachedRow && now - state.cachedAt < NATIVE_QUOTA_TTL_MS) { - return serveCached(state); + // Serve from cache while within TTL — force bypasses the short-circuit. Parked + // rows (no creds -> quotaStatus 'unsupported') use a short TTL so a fresh login + // is picked up within seconds instead of staying dimmed for the full quota TTL. + if (!force && state.cachedRow) { + const ttl = state.cachedRow.quotaStatus === 'unsupported' ? PARKED_TTL_MS : NATIVE_QUOTA_TTL_MS; + if (now - state.cachedAt < ttl) return serveCached(state); } // Breaker open or cooldown active -> zero network, serve stale (may be null). @@ -722,6 +730,12 @@ async function collectClaudeRowForProfile( state.pending = (async (): Promise => { try { + // Yield once so the `state.pending = (...)()` assignment above completes + // before any synchronous return below runs the finally that nulls it. + // Without this, a sync return (e.g. the no-creds parked path) clears + // pending DURING assignment, leaving a stale resolved promise that the + // next call's coalescing check would return instead of re-evaluating. + await Promise.resolve(); const creds = readCreds(profile); // No credentials file found -> emit parked row (needs auth, file absent). @@ -854,9 +868,12 @@ async function collectCodexRowForProfile( const now = (deps.now ?? Date.now)(); const state = getState(codexProfileStates, profile); - // Serve from cache while within TTL — force bypasses TTL short-circuit. - if (!force && state.cachedRow && now - state.cachedAt < NATIVE_QUOTA_TTL_MS) { - return serveCached(state); + // Serve from cache while within TTL — force bypasses the short-circuit. Parked + // rows (no auth -> quotaStatus 'unsupported') use a short TTL so a fresh login + // is picked up within seconds instead of staying dimmed for the full quota TTL. + if (!force && state.cachedRow) { + const ttl = state.cachedRow.quotaStatus === 'unsupported' ? PARKED_TTL_MS : NATIVE_QUOTA_TTL_MS; + if (now - state.cachedAt < ttl) return serveCached(state); } // Breaker open or cooldown active -> skip network, go to LOCAL fallback. @@ -881,6 +898,10 @@ async function collectCodexRowForProfile( state.pending = (async (): Promise => { try { + // Yield once so the `state.pending = (...)()` assignment completes before + // any synchronous return below runs the finally that nulls it (otherwise a + // sync return leaves a stale resolved promise the next call would reuse). + await Promise.resolve(); // ---------------------------------------------------------------- // PRIMARY: live network fetch (skipped when breaker/cooldown active) // ---------------------------------------------------------------- @@ -898,14 +919,24 @@ async function collectCodexRowForProfile( state.breakerOpenUntil = 0; state.cooldownUntil = 0; state.backoffAttempt = 0; - // Only usable when at least one core window (5h/weekly) resolved. + // At least one core window (5h/weekly) resolved -> full quota row. if (quota.coreUsage?.fiveHour || quota.coreUsage?.weekly) { const row = buildCodexNetworkRow(quota, now, SURFACE_CODEX, profile); state.cachedRow = row; state.cachedAt = now; return { ...row, cached: false }; } - // else: fall through to LOCAL fallback below. + // Success but no core window. The token authenticated, so this is a + // VALID active subscription with a sparse payload — emit an active + // (quota-less) row instead of parking it. Only the bare default keeps + // falling through to the global local session data below. + if (profile !== DEFAULT_PROFILE) { + const row = buildCodexNetworkRow(quota, now, SURFACE_CODEX, profile); + state.cachedRow = row; + state.cachedAt = now; + return { ...row, cached: false }; + } + // else (default): fall through to LOCAL fallback below. } else if (quota.needsReauth) { // Token expired -> dimmed reauth row. Cache it and cool down so the // expired account is NOT re-polled (and re-401'd) every refresh; it @@ -1201,6 +1232,10 @@ async function collectCodexRow( state.pending = (async (): Promise => { try { + // Yield once so the `state.pending = (...)()` assignment completes before + // any synchronous return below runs the finally that nulls it (otherwise a + // sync return leaves a stale resolved promise the next call would reuse). + await Promise.resolve(); // ---------------------------------------------------------------- // PRIMARY: live network fetch (skipped when breaker/cooldown active) // ---------------------------------------------------------------- diff --git a/tests/unit/web-server/native-quota-collector.test.ts b/tests/unit/web-server/native-quota-collector.test.ts index 2700e3bf..2cf892a8 100644 --- a/tests/unit/web-server/native-quota-collector.test.ts +++ b/tests/unit/web-server/native-quota-collector.test.ts @@ -1334,4 +1334,55 @@ describe('review focus areas: reauth caching + codex local fallback', () => { expect(cached.find((r) => r.surface === 'ccs' && r.profile === 'ck')?.is_default).toBe(false); expect(cached.find((r) => r.surface === 'ccsx' && r.profile === 'ck')?.is_default).toBe(false); }); + + it('parked (no-creds) rows use a short TTL so a fresh login is detected quickly', async () => { + resetNativeQuotaState(); + const clock = { now: 7_000_000 }; + let hasCreds = false; + const deps = makeMultiProfileDeps({ + clock, + claudeProfiles: ['work'], + codexProfiles: [], + claudeDefault: 'work', + credsForProfile: () => (hasCreds ? maxCreds() : null), + claudeFetch: async () => successQuota(), + }); + + // First poll: no creds -> parked, no network. + const first = await getNativeAccountRows(deps); + expect(first.find((r) => r.profile === 'work')?.paused).toBe(true); + expect(deps.claudeFetchCount()).toBe(0); + + // User logs in; advance past the short parked TTL (30s) but far within the + // full quota TTL (10min). The parked row must NOT be served stale. + hasCreds = true; + clock.now += 31_000; + const second = await getNativeAccountRows(deps); + const work = second.find((r) => r.profile === 'work'); + expect(work?.paused).toBe(false); // now live, not dimmed + expect(work?.quotaStatus).toBe('ok'); + expect(deps.claudeFetchCount()).toBe(1); // re-checked -> fetched + }); + + it('Codex named profile with valid auth but sparse payload stays active, not parked', async () => { + resetNativeQuotaState(); + const clock = { now: 7_000_000 }; + const deps = makeMultiProfileDeps({ + clock, + claudeProfiles: [], + codexProfiles: ['ck'], + codexDefault: 'default', + codexNativeAuth: (p) => ({ accessToken: `t-${p}`, accountId: `id-${p}` }), + // Successful response but NO core windows (sparse / changed payload). + codexNetworkFetch: async () => ({ success: true }) as CodexQuotaResult, + }); + + const rows = await getNativeAccountRows(deps); + const ck = rows.find((r) => r.profile === 'ck'); + expect(ck).toBeDefined(); + expect(ck?.paused).toBe(false); // active subscription, not parked + expect(ck?.needsReauth).toBe(false); + expect(ck?.quotaStatus).toBe('ok'); + expect(ck?.quota_percentage).toBeNull(); // no windows, but still active + }); }); From 7c635a171404de253412f84aa2e67b3f2f72d22f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Wed, 24 Jun 2026 21:09:56 +0000 Subject: [PATCH 18/52] chore(release): 8.6.1-dev.2 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index a7031922..8e2b333e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@kaitranntt/ccs", - "version": "8.6.1-dev.1", + "version": "8.6.1-dev.2", "description": "Claude Code Switch - Instant profile switching between Claude, GLM, Kimi, and more", "keywords": [ "cli", From 62274dabfa62049a4ab0a0249e59b2d5645bc2b8 Mon Sep 17 00:00:00 2001 From: "Kai (Tam Nhu) Tran" <61256810+kaitranntt@users.noreply.github.com> Date: Wed, 24 Jun 2026 18:15:43 -0400 Subject: [PATCH 19/52] fix(bar): align subscription carousel and collapse stale blank space (#1600) Closes #1599 --- macos-bar/Sources/CCSBarApp/BarMenuView.swift | 35 +++++++++++++------ macos-bar/VERSION | 2 +- 2 files changed, 25 insertions(+), 12 deletions(-) diff --git a/macos-bar/Sources/CCSBarApp/BarMenuView.swift b/macos-bar/Sources/CCSBarApp/BarMenuView.swift index 920d5db6..b5dd9396 100644 --- a/macos-bar/Sources/CCSBarApp/BarMenuView.swift +++ b/macos-bar/Sources/CCSBarApp/BarMenuView.swift @@ -5,11 +5,13 @@ import CCSBarCore // MARK: - Content height preference key /// Preference key used to bubble the measured content VStack height up to the -/// ScrollView parent without a feedback loop. The reduction takes the MAX so -/// that intermediate layout passes that report a smaller size don't cause the -/// frame to shrink, which would trigger another layout pass (the classic -/// GeometryReader loop). A `@State` var is updated only when the value changes, -/// keeping SwiftUI's diffing stable. +/// ScrollView parent. The reduction takes the MAX only to combine multiple +/// simultaneous reporters into one value (in practice a single background +/// GeometryReader reports here, so the max is just that reader's height). The +/// consumer (`onPreferenceChange`) then tracks the height in both directions so +/// the popover frame can shrink back when content collapses. This is safe from +/// the classic GeometryReader feedback loop because the reader measures the +/// intrinsic content VStack, whose height does not depend on the consumer frame. private struct ContentHeightKey: PreferenceKey { static let defaultValue: CGFloat = 0 static func reduce(value: inout CGFloat, nextValue: () -> CGFloat) { @@ -151,9 +153,14 @@ struct BarMenuView: View { // until the first preference fires. .frame(height: scrollAreaHeight, alignment: .top) .onPreferenceChange(ContentHeightKey.self) { measured in - // Only grow, never shrink — prevents a feedback loop where a smaller - // frame triggers a re-layout that reports an even smaller height. - if measured > contentHeight { + // Track the measured content height in BOTH directions so the popover + // collapses back when content shrinks (e.g. alert / reauth rows clear) + // instead of staying stuck at a past peak and rendering blank space + // below. The background GeometryReader measures the intrinsic content + // VStack, whose height does not depend on this frame, so updating in + // either direction cannot feed the classic GeometryReader layout loop. + // The 0.5pt deadband avoids churn on sub-pixel remeasures. + if abs(measured - contentHeight) > 0.5 { contentHeight = measured } } @@ -276,9 +283,15 @@ struct BarMenuView: View { BarSubscriptionCard( row: row, isParked: row.paused, onRefresh: { viewModel.forceRefresh() }) - // 340 leaves 10px side padding inside the 360-wide popover. - .frame(width: 340, alignment: .leading) - .padding(.horizontal, 2) + // Each card spans exactly the horizontal scroll viewport so + // .paging snaps to one whole card per page. A fixed width + // wider than the viewport (the 360 popover minus the content + // VStack's 14pt padding leaves ~332pt) drifts a few points on + // every page and leaves the card stuck off-center after + // paging forward and back. containerRelativeFrame keeps the + // card width == viewport width, so paging stays aligned and + // the card is centered like the single-profile card. + .containerRelativeFrame(.horizontal) .id(row.id) } } diff --git a/macos-bar/VERSION b/macos-bar/VERSION index f8e233b2..9ab8337f 100644 --- a/macos-bar/VERSION +++ b/macos-bar/VERSION @@ -1 +1 @@ -1.9.0 +1.9.1 From 0d20a102bd49b4da2be8ec904acc0b3d76abbeb1 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Wed, 24 Jun 2026 22:19:45 +0000 Subject: [PATCH 20/52] chore(release): 8.6.1-dev.3 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 8e2b333e..a1956962 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@kaitranntt/ccs", - "version": "8.6.1-dev.2", + "version": "8.6.1-dev.3", "description": "Claude Code Switch - Instant profile switching between Claude, GLM, Kimi, and more", "keywords": [ "cli", From d7933c6243b7593eed524b6aa6c9c977f1e16eea Mon Sep 17 00:00:00 2001 From: "Kai (Tam Nhu) Tran" <61256810+kaitranntt@users.noreply.github.com> Date: Wed, 24 Jun 2026 18:44:53 -0400 Subject: [PATCH 21/52] feat(bar): swipeable profile carousel and condensed alerts (#1603) Closes #1602 --- macos-bar/Sources/CCSBarApp/BarMenuView.swift | 341 +++++++++++++++--- macos-bar/VERSION | 2 +- 2 files changed, 284 insertions(+), 59 deletions(-) diff --git a/macos-bar/Sources/CCSBarApp/BarMenuView.swift b/macos-bar/Sources/CCSBarApp/BarMenuView.swift index b5dd9396..1f0ea18f 100644 --- a/macos-bar/Sources/CCSBarApp/BarMenuView.swift +++ b/macos-bar/Sources/CCSBarApp/BarMenuView.swift @@ -43,6 +43,14 @@ struct BarMenuView: View { // Per-provider carousel position: provider -> selected profile row id. Each // provider has its own profile carousel, so selection is tracked per provider. @State private var selectedProfileByProvider: [String: String] = [:] + /// Live horizontal drag translation per provider while a swipe is in progress. + /// Reset to 0 (and committed to a page change) on drag release. Keyed by + /// provider so each carousel tracks its own in-flight swipe independently. + @State private var dragByProvider: [String: CGFloat] = [:] + /// Whether the Alerts section is expanded to show every alert. Collapsed by + /// default: only the most-severe few render, with a "+N more" toggle, so a + /// burst of conditions never buries the cockpit under a wall of rows. + @State private var alertsExpanded = false // MARK: - Screen cap @@ -91,14 +99,10 @@ struct BarMenuView: View { // (2) ALERTS — urgent quota crossings surface above accounts. // Spend-cap alerts are opt-in OFF by default, so by default only - // quota/reauth/cooldown conditions appear here. + // quota/reauth/cooldown conditions appear here. Deduped, severity- + // ranked, compact, and collapsed past a few — see alertsSection. if !viewModel.activeAlerts.isEmpty { - VStack(alignment: .leading, spacing: 8) { - SectionLabel("Alerts") - ForEach(viewModel.activeAlerts) { alert in - AlertRow(alert: alert) - } - } + alertsSection } // (3) SUBSCRIPTIONS — the dominant section, opens here. @@ -177,13 +181,15 @@ struct BarMenuView: View { // Disarm quit on every popover open so a stale armed state never persists. quitArmed = false // Reset each provider's carousel to its first profile on every open — KISS, - // no persistence needed. + // no persistence needed. Clear any in-flight drag and re-collapse alerts. selectedProfileByProvider = [:] + dragByProvider = [:] + alertsExpanded = false } } /// "Update available" banner. Shown when `viewModel.updateAvailable` is true. - /// Styled to match the existing AlertRow / ErrorBanner patterns (tinted + /// Styled to match the existing CompactAlertRow / ErrorBanner patterns (tinted /// background card, section label, borderless button). @ViewBuilder private var updateBanner: some View { VStack(alignment: .leading, spacing: 8) { @@ -277,37 +283,9 @@ struct BarMenuView: View { onRefresh: { viewModel.forceRefresh() }) } } else { - ScrollView(.horizontal, showsIndicators: false) { - HStack(spacing: 0) { - ForEach(rows) { row in - BarSubscriptionCard( - row: row, isParked: row.paused, - onRefresh: { viewModel.forceRefresh() }) - // Each card spans exactly the horizontal scroll viewport so - // .paging snaps to one whole card per page. A fixed width - // wider than the viewport (the 360 popover minus the content - // VStack's 14pt padding leaves ~332pt) drifts a few points on - // every page and leaves the card stuck off-center after - // paging forward and back. containerRelativeFrame keeps the - // card width == viewport width, so paging stays aligned and - // the card is centered like the single-profile card. - .containerRelativeFrame(.horizontal) - .id(row.id) - } - } - // scrollTargetLayout on the HStack (the paging container) snaps to - // each profile card on .paging behavior. - .scrollTargetLayout() - } - .scrollTargetBehavior(.paging) - .scrollPosition(id: Binding( - get: { selectedProfileByProvider[prov] ?? rows.first?.id }, - set: { selectedProfileByProvider[prov] = $0 ?? rows.first?.id })) - .frame(height: carouselHeight(rows)) + profileCarousel(prov: prov, rows: rows) // Page controls — clickable prev/next arrows + dots so the carousel - // is navigable by MOUSE (click), not just by trackpad swipe. - // Programmatically setting the scrollPosition binding pages the - // ScrollView; withAnimation gives the same feel as a swipe. + // is also navigable by MOUSE click, not only by drag/swipe. carouselControls(prov: prov, rows: rows) } } @@ -372,9 +350,77 @@ struct BarMenuView: View { } } + /// Swipeable profile pager: one full-width card visible at a time, an HStack of + /// the provider's cards offset to the current page. Two complementary inputs + /// move between pages so no device is left out: + /// - a `DragGesture` for a mouse/trackpad press-drag (the previous ScrollView + /// never paged on a plain mouse click-drag), committing on release past a + /// 20% threshold, with the ends rubber-banding so an over-drag resists; + /// - a `CarouselScrollPager` overlay that turns a non-clicking horizontal + /// trackpad / Magic Mouse swipe (delivered as scroll-wheel events, which a + /// DragGesture does not see) into a page step. + /// No ScrollView, so there is no paging drift and the card is always centered. + @ViewBuilder private func profileCarousel(prov: String, rows: [BarSummaryRow]) -> some View { + let currentId = selectedProfileByProvider[prov] ?? rows.first?.id + let curIdx = rows.firstIndex(where: { $0.id == currentId }) ?? 0 + GeometryReader { geo in + let pageWidth = geo.size.width + HStack(spacing: 0) { + ForEach(rows) { row in + BarSubscriptionCard( + row: row, isParked: row.paused, + onRefresh: { viewModel.forceRefresh() }) + .frame(width: pageWidth) + } + } + .offset(x: -CGFloat(curIdx) * pageWidth + (dragByProvider[prov] ?? 0)) + .contentShape(Rectangle()) + .gesture( + DragGesture(minimumDistance: 8) + .onChanged { value in + // Rubber-band at the ends: an over-drag past the first/last card moves + // at a third the rate so it springs back instead of revealing a gap. + let raw = value.translation.width + let atStart = curIdx == 0 && raw > 0 + let atEnd = curIdx == rows.count - 1 && raw < 0 + dragByProvider[prov] = (atStart || atEnd) ? raw / 3 : raw + } + .onEnded { value in + // Commit a page change when the swipe passes 20% of the page width; + // otherwise snap back to the current card. + let threshold = pageWidth * 0.2 + var newIdx = curIdx + if value.translation.width <= -threshold { newIdx = min(curIdx + 1, rows.count - 1) } + else if value.translation.width >= threshold { newIdx = max(curIdx - 1, 0) } + withAnimation(.easeOut(duration: 0.2)) { + dragByProvider[prov] = 0 + selectedProfileByProvider[prov] = rows[newIdx].id + } + } + ) + // Trackpad / Magic Mouse horizontal swipe (scroll-wheel events) → page step. + // Transparent to clicks and to the DragGesture; only observes scroll. + .overlay( + CarouselScrollPager { step in page(prov: prov, by: step, rows: rows) } + ) + } + .frame(height: carouselHeight(rows)) + .clipped() // hide the neighbouring cards that sit outside the page viewport + } + + /// Step the given provider's carousel by ±1 page, clamped to the ends. Used by + /// the horizontal scroll-swipe overlay; the arrows/dots call `selectPage` + /// directly. + private func page(prov: String, by step: Int, rows: [BarSummaryRow]) { + let currentId = selectedProfileByProvider[prov] ?? rows.first?.id + let curIdx = rows.firstIndex(where: { $0.id == currentId }) ?? 0 + let newIdx = min(max(curIdx + step, 0), rows.count - 1) + if newIdx != curIdx { selectPage(prov, rows[newIdx].id) } + } + /// Prev/next arrows + clickable dots for a provider's profile carousel, so it - /// is navigable by MOUSE (click), not only by trackpad swipe. Selecting a page - /// sets the scrollPosition binding, which scrolls the ScrollView to that card. + /// is navigable by MOUSE click, not only by drag/swipe. Selecting a page sets + /// `selectedProfileByProvider`, which animates the pager offset to that card. @ViewBuilder private func carouselControls(prov: String, rows: [BarSummaryRow]) -> some View { let currentId = selectedProfileByProvider[prov] ?? rows.first?.id let curIdx = rows.firstIndex(where: { $0.id == currentId }) ?? 0 @@ -430,6 +476,92 @@ struct BarMenuView: View { return 40 + CGFloat(maxWindows) * 20 + (hasFootnote ? 16 : 0) } + // MARK: Alerts + + /// One displayed alert after de-duplication: the representative notification + /// plus how many identical conditions it stands for (e.g. the same "ck needs + /// re-authentication" firing on two surfaces collapses to one row with ×2). + private struct GroupedAlert: Identifiable { + let id: String + let alert: BarNotification + let count: Int + } + + /// De-duplicate alerts by their visible text and rank by severity so the most + /// actionable condition leads. Two alerts that render identically (same title + + /// body) collapse into one group with a count, killing the "ck reauth" / + /// "ck reauth" / "ck paused" / "ck paused" repetition seen with multi-surface + /// profiles. + private func groupedAlerts(_ alerts: [BarNotification]) -> [GroupedAlert] { + var order: [String] = [] + var byKey: [String: (alert: BarNotification, count: Int)] = [:] + for a in alerts { + let key = a.title + "\u{1F}" + a.body + if let hit = byKey[key] { + byKey[key] = (hit.alert, hit.count + 1) + } else { + byKey[key] = (a, 1) + order.append(key) + } + } + return order + .map { GroupedAlert(id: $0, alert: byKey[$0]!.alert, count: byKey[$0]!.count) } + .sorted { alertSeverityRank($0.alert.kind) < alertSeverityRank($1.alert.kind) } + } + + /// Severity order for alert ranking: reauth (account unusable) first, spend + /// caps next, then quota, then the soft paused/cooldown note. + private func alertSeverityRank(_ kind: BarAlertKind) -> Int { + switch kind { + case .reauthNeeded: return 0 + case .dailySpendAbove, .monthSpendAbove: return 1 + case .quotaRemainingBelow: return 2 + case .accountCooldownOrPaused: return 3 + } + } + + /// Calm, compact alerts: a labelled header with a total count, then a few + /// single-line rows (most-severe first). Collapsed past `collapsedCap` behind a + /// "+N more" toggle so a burst of conditions never floods the popover. Replaces + /// the previous stack of tall two-line cards. + @ViewBuilder private var alertsSection: some View { + let groups = groupedAlerts(viewModel.activeAlerts) + let collapsedCap = 3 + let overflow = groups.count - collapsedCap + let visible = alertsExpanded ? groups : Array(groups.prefix(collapsedCap)) + VStack(alignment: .leading, spacing: 5) { + HStack(spacing: 6) { + SectionLabel("Alerts") + Text("\(groups.count)") + .font(.system(size: 10, weight: .semibold)) + .padding(.horizontal, 5) + .padding(.vertical, 1) + .background(Color.secondary.opacity(0.18), in: Capsule()) + .foregroundStyle(.secondary) + Spacer(minLength: 0) + } + ForEach(visible) { g in + CompactAlertRow(alert: g.alert, count: g.count) + } + if overflow > 0 { + Button { + withAnimation(.easeInOut(duration: 0.15)) { alertsExpanded.toggle() } + } label: { + HStack(spacing: 4) { + Image(systemName: alertsExpanded ? "chevron.up" : "chevron.down") + .font(.system(size: 9, weight: .bold)) + Text(alertsExpanded ? "Show less" : "\(overflow) more") + .font(.caption2) + } + .foregroundStyle(.secondary) + .padding(.vertical, 2) + .contentShape(Rectangle()) + } + .buttonStyle(.plain) + } + } + } + private var header: some View { HStack(spacing: 8) { Image(nsImage: MenuBarIcon.headerImage()) @@ -789,33 +921,38 @@ struct ErrorBanner: View { } } -/// One in-dropdown alert row. Mirrors a delivered notification so the conditions -/// are visible even when system notifications are denied. The icon is keyed off -/// the alert kind so each rule reads at a glance. -struct AlertRow: View { +/// Compact, single-line alert row used by the condensed Alerts section. One +/// glanceable line — kind icon + the self-describing body (the title is dropped +/// as redundant with the icon) + an optional ×N when several identical +/// conditions were merged. The tint is softer than the old `AlertRow` card so a +/// list of them reads as informative, not alarming. +struct CompactAlertRow: View { @Environment(\.barTheme) private var theme let alert: BarNotification + let count: Int var body: some View { - HStack(alignment: .top, spacing: 6) { + HStack(spacing: 6) { Image(systemName: icon) .foregroundStyle(tint) - .font(.caption) - .padding(.top, 1) - VStack(alignment: .leading, spacing: 1) { - Text(alert.title) - .font(.caption.weight(.medium)) - Text(alert.body) - .font(.caption2) + .font(.caption2) + .frame(width: 12) + Text(alert.body) + .font(.caption2) + .foregroundStyle(.secondary) + .lineLimit(1) + .truncationMode(.tail) + if count > 1 { + Text("×\(count)") + .font(.system(size: 9, weight: .semibold)) .foregroundStyle(.secondary) - .lineLimit(2) } Spacer(minLength: 0) } - .padding(.vertical, 5) + .padding(.vertical, 4) .padding(.horizontal, 8) .frame(maxWidth: .infinity, alignment: .leading) - .background(tint.opacity(0.10), in: RoundedRectangle(cornerRadius: 7)) + .background(tint.opacity(0.08), in: RoundedRectangle(cornerRadius: 6)) } private var icon: String { @@ -828,8 +965,6 @@ struct AlertRow: View { } private var tint: Color { - // Themed: quota warnings take the brand accent, reauth the critical band, - // so alert chips match the rest of the dropdown on both plates. switch alert.kind { case .quotaRemainingBelow: return theme.accent case .dailySpendAbove, .monthSpendAbove: return theme.accent @@ -868,3 +1003,93 @@ struct Chip: View { .foregroundStyle(textColor) } } + +/// Adds horizontal trackpad / Magic Mouse swipe paging to the profile carousel. +/// SwiftUI's `DragGesture` handles a mouse or trackpad press-drag, but a +/// non-clicking two-finger swipe arrives as scroll-wheel events it never sees. +/// +/// This hosts a transparent AppKit anchor view (click- and drag-transparent via +/// a nil `hitTest`, so it never blocks the cards' buttons or the DragGesture) and +/// a local scroll-wheel monitor scoped to that view's on-screen frame. A +/// predominantly horizontal scroll pages once per gesture; a vertical scroll is +/// passed straight through so the popover still scrolls. If the frame math ever +/// fails to match, the worst case is that scroll-swipe simply does nothing — +/// drag and the arrows/dots still work — so the failure mode is benign. +struct CarouselScrollPager: NSViewRepresentable { + /// Called with +1 (next) or -1 (previous) when a horizontal swipe commits. + let onPage: (Int) -> Void + + func makeCoordinator() -> Coordinator { Coordinator(onPage: onPage) } + + func makeNSView(context: Context) -> NSView { + let view = PassthroughView() + context.coordinator.attach(to: view) + return view + } + + func updateNSView(_ nsView: NSView, context: Context) { + context.coordinator.onPage = onPage + } + + static func dismantleNSView(_ nsView: NSView, coordinator: Coordinator) { + coordinator.detach() + } + + /// Anchor view that is transparent to all mouse hit-testing, so clicks and the + /// SwiftUI DragGesture pass through to the cards beneath it. + final class PassthroughView: NSView { + override func hitTest(_ point: NSPoint) -> NSView? { nil } + } + + /// Owns the local scroll-wheel monitor and the per-gesture accumulator. + final class Coordinator { + var onPage: (Int) -> Void + private weak var view: NSView? + private var monitor: Any? + private var accumulated: CGFloat = 0 + private var firedThisGesture = false + private let threshold: CGFloat = 40 + + init(onPage: @escaping (Int) -> Void) { self.onPage = onPage } + + func attach(to view: NSView) { + self.view = view + monitor = NSEvent.addLocalMonitorForEvents(matching: [.scrollWheel]) { [weak self] event in + self?.handle(event) ?? event + } + } + + func detach() { + if let monitor { NSEvent.removeMonitor(monitor) } + monitor = nil + } + + /// Return nil to consume a horizontal swipe inside the carousel; return the + /// event unchanged otherwise so vertical popover scroll is never swallowed. + private func handle(_ event: NSEvent) -> NSEvent? { + guard let view, let window = view.window, event.window === window else { return event } + let frameInWindow = view.convert(view.bounds, to: nil) + guard frameInWindow.contains(event.locationInWindow) else { return event } + + let dx = event.scrollingDeltaX + let dy = event.scrollingDeltaY + guard abs(dx) > abs(dy) else { return event } // vertical → let the popover scroll + + if event.phase.contains(.began) || event.momentumPhase.contains(.began) { + accumulated = 0 + firedThisGesture = false + } + accumulated += dx + if !firedThisGesture && abs(accumulated) >= threshold { + firedThisGesture = true + // Natural scrolling: content moving left (negative dx) advances to next. + onPage(accumulated < 0 ? 1 : -1) + } + if event.phase.contains(.ended) || event.momentumPhase.contains(.ended) { + accumulated = 0 + firedThisGesture = false + } + return nil + } + } +} diff --git a/macos-bar/VERSION b/macos-bar/VERSION index 9ab8337f..8fdcf386 100644 --- a/macos-bar/VERSION +++ b/macos-bar/VERSION @@ -1 +1 @@ -1.9.1 +1.9.2 From 36ea9064e704b3f0a3f0ff996d05eadeda293f92 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Wed, 24 Jun 2026 22:48:58 +0000 Subject: [PATCH 22/52] chore(release): 8.6.1-dev.4 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index a1956962..183ffb81 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@kaitranntt/ccs", - "version": "8.6.1-dev.3", + "version": "8.6.1-dev.4", "description": "Claude Code Switch - Instant profile switching between Claude, GLM, Kimi, and more", "keywords": [ "cli", From 3847443da37aa7361b14d7e840b1fe595991cab0 Mon Sep 17 00:00:00 2001 From: juwain Date: Fri, 26 Jun 2026 17:11:12 +0300 Subject: [PATCH 23/52] fix(cliproxy): keep proxy-chain base URL authoritative over --settings env Claude Code applies the --settings `env` block over the process environment, so the persisted ANTHROPIC_BASE_URL (CLIProxy-direct) overrode the ephemeral proxy-chain URL CCS injects via env. Claude then bypassed the tool-sanitization / codex-reasoning proxies, surfacing as `400 {"detail":"System messages are not allowed"}` for Codex. Write a runtime settings overlay (in os.tmpdir(), matching createOpenAICompatLaunchSettings) whose routing env keys reflect the resolved launch environment, and pass it to `--settings`. The overlay is cleaned up on Claude exit; subcommands keep the persisted path untouched. Reuse the canonical routing/model env key lists from shell-executor instead of duplicating them. --- .../__tests__/launch-settings.test.ts | 130 +++++++++++++++++ src/cliproxy/executor/claude-launcher.ts | 18 ++- src/cliproxy/executor/launch-settings.ts | 136 ++++++++++++++++++ src/utils/shell-executor.ts | 4 +- 4 files changed, 285 insertions(+), 3 deletions(-) create mode 100644 src/cliproxy/executor/__tests__/launch-settings.test.ts create mode 100644 src/cliproxy/executor/launch-settings.ts diff --git a/src/cliproxy/executor/__tests__/launch-settings.test.ts b/src/cliproxy/executor/__tests__/launch-settings.test.ts new file mode 100644 index 00000000..6865cedf --- /dev/null +++ b/src/cliproxy/executor/__tests__/launch-settings.test.ts @@ -0,0 +1,130 @@ +/** + * Unit tests for launch-settings.ts + * + * Verifies that the runtime settings overlay keeps the resolved proxy-chain + * `ANTHROPIC_BASE_URL` (and related routing keys) authoritative when Claude is + * launched with `--settings`, instead of the persisted CLIProxy-direct URL. + * + * The overlay is written to an isolated os.tmpdir() directory, so these tests + * never touch the real ~/.ccs. + */ + +import { describe, expect, it, beforeEach, afterEach } from 'bun:test'; +import * as fs from 'fs'; +import * as os from 'os'; +import * as path from 'path'; +import { buildLaunchSettingsOverlay, prepareLaunchSettings } from '../launch-settings'; + +let tmpDir: string; +let settingsPath: string; + +beforeEach(() => { + tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'ccs-launch-settings-test-')); + settingsPath = path.join(tmpDir, 'codex.settings.json'); +}); + +afterEach(() => { + fs.rmSync(tmpDir, { recursive: true, force: true }); +}); + +function writePersisted(settings: unknown): void { + fs.writeFileSync(settingsPath, JSON.stringify(settings, null, 2)); +} + +describe('buildLaunchSettingsOverlay', () => { + it('overlays routing env keys from the resolved environment', () => { + writePersisted({ + env: { + ANTHROPIC_BASE_URL: 'http://127.0.0.1:8317/api/provider/codex', + ANTHROPIC_MODEL: 'gpt-5.5', + ANTHROPIC_AUTH_TOKEN: 'ccs-internal-managed', + }, + }); + + const { settings, changed } = buildLaunchSettingsOverlay(settingsPath, { + ANTHROPIC_BASE_URL: 'http://127.0.0.1:50118/api/provider/codex', + ANTHROPIC_MODEL: 'gpt-5.5-high', + } as NodeJS.ProcessEnv); + + expect(changed).toBe(true); + const env = settings.env as Record; + expect(env.ANTHROPIC_BASE_URL).toBe('http://127.0.0.1:50118/api/provider/codex'); + expect(env.ANTHROPIC_MODEL).toBe('gpt-5.5-high'); + // Untouched keys are preserved. + expect(env.ANTHROPIC_AUTH_TOKEN).toBe('ccs-internal-managed'); + }); + + it('preserves non-env settings (permissions, hooks, etc.)', () => { + writePersisted({ + env: { ANTHROPIC_BASE_URL: 'http://127.0.0.1:8317/api/provider/codex' }, + permissions: { allow: ['Bash'] }, + statusLine: { type: 'command' }, + }); + + const { settings } = buildLaunchSettingsOverlay(settingsPath, { + ANTHROPIC_BASE_URL: 'http://127.0.0.1:60000/api/provider/codex', + } as NodeJS.ProcessEnv); + + expect(settings.permissions).toEqual({ allow: ['Bash'] }); + expect(settings.statusLine).toEqual({ type: 'command' }); + }); + + it('reports changed=false when resolved env matches persisted values', () => { + writePersisted({ + env: { ANTHROPIC_BASE_URL: 'http://127.0.0.1:8317/api/provider/codex' }, + }); + + const { changed } = buildLaunchSettingsOverlay(settingsPath, { + ANTHROPIC_BASE_URL: 'http://127.0.0.1:8317/api/provider/codex', + } as NodeJS.ProcessEnv); + + expect(changed).toBe(false); + }); + + it('falls back to an env-only overlay when the settings file is missing', () => { + const { settings, changed } = buildLaunchSettingsOverlay(settingsPath, { + ANTHROPIC_BASE_URL: 'http://127.0.0.1:50118/api/provider/codex', + } as NodeJS.ProcessEnv); + + expect(changed).toBe(true); + expect((settings.env as Record).ANTHROPIC_BASE_URL).toBe( + 'http://127.0.0.1:50118/api/provider/codex' + ); + }); +}); + +describe('prepareLaunchSettings', () => { + it('writes a runtime overlay file and cleans it up when routing changes', () => { + writePersisted({ + env: { ANTHROPIC_BASE_URL: 'http://127.0.0.1:8317/api/provider/codex' }, + }); + + const result = prepareLaunchSettings(settingsPath, { + ANTHROPIC_BASE_URL: 'http://127.0.0.1:50118/api/provider/codex', + } as NodeJS.ProcessEnv); + + expect(result.settingsPath).not.toBe(settingsPath); + expect(fs.existsSync(result.settingsPath)).toBe(true); + + const written = JSON.parse(fs.readFileSync(result.settingsPath, 'utf8')); + expect(written.env.ANTHROPIC_BASE_URL).toBe('http://127.0.0.1:50118/api/provider/codex'); + + result.cleanup(); + expect(fs.existsSync(result.settingsPath)).toBe(false); + }); + + it('returns the original path and a no-op cleanup when nothing changes', () => { + writePersisted({ + env: { ANTHROPIC_BASE_URL: 'http://127.0.0.1:8317/api/provider/codex' }, + }); + + const result = prepareLaunchSettings(settingsPath, { + ANTHROPIC_BASE_URL: 'http://127.0.0.1:8317/api/provider/codex', + } as NodeJS.ProcessEnv); + + expect(result.settingsPath).toBe(settingsPath); + // Cleanup must not remove the persisted settings file. + result.cleanup(); + expect(fs.existsSync(settingsPath)).toBe(true); + }); +}); diff --git a/src/cliproxy/executor/claude-launcher.ts b/src/cliproxy/executor/claude-launcher.ts index ab74f0a4..ca539971 100644 --- a/src/cliproxy/executor/claude-launcher.ts +++ b/src/cliproxy/executor/claude-launcher.ts @@ -23,6 +23,7 @@ import { CodexReasoningProxy } from '../ai-providers/codex-reasoning-proxy'; import { ToolSanitizationProxy } from '../proxy/tool-sanitization-proxy'; import { HttpsTunnelProxy } from '../proxy/https-tunnel-proxy'; import { setupCleanupHandlers } from './session-bridge'; +import { prepareLaunchSettings } from './launch-settings'; import { resolveRuntimeQuotaMonitorProviders } from './account-resolution'; import { isClaudeSubcommandInvocation, @@ -92,7 +93,7 @@ export async function launchClaude(context: ClaudeLaunchContext): Promise {} } + : prepareLaunchSettings(persistedSettingsPath, env); + // Assemble final args: image analysis tools → browser tools → web search tools → settings const imageAnalysisArgs = imageAnalysisMcpReady ? appendThirdPartyImageAnalysisToolArgs(claudeSessionArgs) @@ -149,6 +160,11 @@ export async function launchClaude(context: ClaudeLaunchContext): Promise`. Recent + * Claude Code releases apply the settings file's `env` block on top of the + * inherited process environment, so the persisted `ANTHROPIC_BASE_URL` (which + * points straight at CLIProxy) overrides the proxy-chain URL CCS injected via + * env. Claude then bypasses the proxy chain entirely — breaking tool-name + * sanitization and Codex system-message folding (the latter surfaces as + * `400 {"detail":"System messages are not allowed"}`). + * + * To keep the proxy chain authoritative regardless of Claude's env precedence, + * we write a runtime copy of the settings file whose `env` routing keys are + * overlaid with the resolved launch environment, and pass that copy to + * `--settings`. + */ + +import * as fs from 'fs'; +import * as os from 'os'; +import * as path from 'path'; + +import { ANTHROPIC_MODEL_ENV_KEYS, ANTHROPIC_ROUTING_ENV_KEYS } from '../../utils/shell-executor'; + +/** + * Environment keys that control provider routing/model selection and are read + * by Claude from the settings `env` block. These must reflect the resolved + * proxy-chain environment, not the persisted on-disk values. Reuses the + * canonical routing/model key lists from shell-executor. + */ +const ROUTING_ENV_KEYS = [...ANTHROPIC_ROUTING_ENV_KEYS, ...ANTHROPIC_MODEL_ENV_KEYS]; + +function isRecord(value: unknown): value is Record { + return typeof value === 'object' && value !== null && !Array.isArray(value); +} + +/** + * Build a settings object based on the persisted settings file, with routing + * `env` keys overlaid from the resolved launch environment. + * + * @returns The merged settings and whether any routing key actually changed. + */ +export function buildLaunchSettingsOverlay( + settingsPath: string, + env: NodeJS.ProcessEnv +): { settings: Record; changed: boolean } { + let base: Record = {}; + try { + if (fs.existsSync(settingsPath)) { + const parsed: unknown = JSON.parse(fs.readFileSync(settingsPath, 'utf8')); + if (isRecord(parsed)) { + base = parsed; + } + } + } catch { + // Corrupt/unreadable settings file: fall back to an env-only overlay. + base = {}; + } + + const mergedEnv: Record = isRecord(base.env) ? { ...base.env } : {}; + + let changed = false; + for (const key of ROUTING_ENV_KEYS) { + const resolved = env[key]; + if (typeof resolved === 'string' && mergedEnv[key] !== resolved) { + mergedEnv[key] = resolved; + changed = true; + } + } + + return { settings: { ...base, env: mergedEnv }, changed }; +} + +/** + * Prepare the settings file path to hand to `claude --settings`. + * + * When the resolved launch environment changes any routing key relative to the + * persisted settings file (i.e. a proxy chain is active), a runtime overlay + * file is written and its path returned together with a cleanup callback that + * removes it. Otherwise the original `settingsPath` is returned unchanged and + * cleanup is a no-op. + */ +export function prepareLaunchSettings( + settingsPath: string, + env: NodeJS.ProcessEnv +): { settingsPath: string; cleanup: () => void } { + const noop = { settingsPath, cleanup: () => {} }; + + let overlay: { settings: Record; changed: boolean }; + try { + overlay = buildLaunchSettingsOverlay(settingsPath, env); + } catch { + return noop; + } + + if (!overlay.changed) { + return noop; + } + + try { + // Write to a private temp dir (matches createOpenAICompatLaunchSettings) so + // the overlay never lands in the user's ~/.ccs and is trivially isolated. + const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), 'ccs-launch-settings-')); + fs.chmodSync(tempDir, 0o700); + + const runtimePath = path.join(tempDir, path.basename(settingsPath) || 'settings.json'); + fs.writeFileSync(runtimePath, JSON.stringify(overlay.settings, null, 2) + '\n', { + encoding: 'utf8', + mode: 0o600, + }); + + let cleanedUp = false; + const cleanup = (): void => { + if (cleanedUp) { + return; + } + cleanedUp = true; + try { + fs.rmSync(tempDir, { recursive: true, force: true }); + } catch { + // best-effort cleanup + } + }; + + return { settingsPath: runtimePath, cleanup }; + } catch { + // If we cannot write the overlay, fall back to the persisted file. Routing + // may bypass the proxy chain, but the session still launches. + return noop; + } +} diff --git a/src/utils/shell-executor.ts b/src/utils/shell-executor.ts index 69c94916..58d459f6 100644 --- a/src/utils/shell-executor.ts +++ b/src/utils/shell-executor.ts @@ -34,13 +34,13 @@ export function stripAnthropicEnv(env: NodeJS.ProcessEnv): NodeJS.ProcessEnv { return result; } -const ANTHROPIC_ROUTING_ENV_KEYS = [ +export const ANTHROPIC_ROUTING_ENV_KEYS = [ 'ANTHROPIC_BASE_URL', 'ANTHROPIC_AUTH_TOKEN', 'ANTHROPIC_API_KEY', ]; const ANTHROPIC_ROUTING_ENV_KEY_SET = new Set(ANTHROPIC_ROUTING_ENV_KEYS); -const ANTHROPIC_MODEL_ENV_KEYS = [ +export const ANTHROPIC_MODEL_ENV_KEYS = [ 'ANTHROPIC_MODEL', 'ANTHROPIC_DEFAULT_OPUS_MODEL', 'ANTHROPIC_DEFAULT_SONNET_MODEL', From ba0e768fbf5d92d380caf1b8a1eb6cc2cf9d15fc Mon Sep 17 00:00:00 2001 From: Thieu Nguyen <79964592+thieung@users.noreply.github.com> Date: Sat, 27 Jun 2026 02:41:15 +0700 Subject: [PATCH 24/52] fix(codex): normalize CLIProxy responses routes (#1605) Normalize Codex Responses base URLs so CCS-backed Codex launches use /backend-api/codex on the original CLIProxy backend. Share the Codex Responses route builder with ccsxp provider repair, and repair stale native Codex provider auth blocks when env_key token injection is used. --- src/cliproxy/config/provider-route.ts | 41 +++++++++++++++++++ src/targets/codex-adapter.ts | 19 +++++---- src/targets/codex-cliproxy-provider-config.ts | 11 ++--- tests/unit/targets/codex-adapter.test.ts | 5 ++- .../codex-cliproxy-provider-config.test.ts | 34 +++++++++++++-- .../codex-settings-bridge-launch.test.ts | 13 ++++-- 6 files changed, 100 insertions(+), 23 deletions(-) diff --git a/src/cliproxy/config/provider-route.ts b/src/cliproxy/config/provider-route.ts index 0ccac5c3..e6f23a0e 100644 --- a/src/cliproxy/config/provider-route.ts +++ b/src/cliproxy/config/provider-route.ts @@ -40,3 +40,44 @@ export function buildLocalProviderBaseUrl( const rootUrl = `http://127.0.0.1:${port}`; return `${rootUrl}${buildCliproxyProviderPath(provider, backend)}`; } + +export function buildCodexResponsesProviderPath( + backend: CLIProxyBackend = getConfiguredCliproxyBackend() +): string { + return usesScopedProviderRoutes(backend) ? '/api/provider/codex' : '/backend-api/codex'; +} + +export function buildLocalCodexResponsesBaseUrl( + port: number, + backend: CLIProxyBackend = getConfiguredCliproxyBackend() +): string { + return `http://127.0.0.1:${port}${buildCodexResponsesProviderPath(backend)}`; +} + +export function normalizeCodexResponsesBaseUrl( + baseUrl: string, + backend: CLIProxyBackend = getConfiguredCliproxyBackend() +): string { + const trimmed = baseUrl.trim(); + if (!trimmed) return baseUrl; + + try { + const parsed = new URL(trimmed); + if (!['http:', 'https:'].includes(parsed.protocol)) return baseUrl; + + const currentPath = parsed.pathname.replace(/\/+$/, '') || '/'; + const expectedPath = buildCodexResponsesProviderPath(backend); + if (currentPath === expectedPath) return trimmed; + + const legacyCodexPath = '/api/provider/codex'; + const managedPaths = new Set(['/', legacyCodexPath]); + if (!managedPaths.has(currentPath)) return trimmed; + + parsed.pathname = expectedPath; + parsed.search = ''; + parsed.hash = ''; + return parsed.toString().replace(/\/$/, ''); + } catch { + return baseUrl; + } +} diff --git a/src/targets/codex-adapter.ts b/src/targets/codex-adapter.ts index 9e91f4db..9ef937b5 100644 --- a/src/targets/codex-adapter.ts +++ b/src/targets/codex-adapter.ts @@ -1,7 +1,7 @@ import { ChildProcess, spawn } from 'child_process'; import * as fs from 'fs'; import type { ProfileType } from '../types/profile'; -import { runCleanup } from '../errors'; +import { ConfigError, runCleanup } from '../errors'; import { expandPath } from '../utils/helpers'; import { wireChildProcessSignals } from '../utils/signal-forwarder'; import { @@ -25,6 +25,7 @@ import { } from './codex-detector'; import { createLogger } from '../services/logging'; import { getEffectiveApiKey } from '../cliproxy/auth/auth-token-manager'; +import { normalizeCodexResponsesBaseUrl } from '../cliproxy/config/provider-route'; import { resolveLifecyclePort } from '../cliproxy/config/port-manager'; import { getModelMaxLevel } from '../cliproxy/model-catalog'; import { parseCodexModelTuningAlias } from '../cliproxy/ai-providers/model-id-normalizer'; @@ -53,7 +54,7 @@ function buildConfigOverrideArgs(overrides: string[]): string[] { function buildConfigOverrideSupportError(binaryInfo?: TargetBinaryInfo): Error { const versionSummary = binaryInfo?.version ? ` (${binaryInfo.version})` : ''; - return new Error( + return new ConfigError( `Codex CLI${versionSummary} does not advertise --config overrides. Upgrade Codex before using CCS-backed Codex profiles or runtime reasoning overrides.` ); } @@ -100,7 +101,7 @@ function normalizeCodexReasoningOverride(value: string | number | undefined): st if (typeof value === 'string' && CODEX_REASONING_LEVELS.has(value)) { return value; } - throw new Error( + throw new ConfigError( 'Codex target supports reasoning levels only: minimal, low, medium, high, xhigh.' ); } @@ -272,7 +273,7 @@ export class CodexAdapter implements TargetAdapter { const providerRepair = await ensureCodexCliproxyProviderConfig(resolveLifecyclePort()); this.ccsxpCliproxyEnvKey = providerRepair.envKey; } catch (error) { - throw new Error( + throw new ConfigError( `ccsxp could not repair the native Codex cliproxy provider: ${(error as Error).message}` ); } @@ -316,14 +317,14 @@ export class CodexAdapter implements TargetAdapter { } if (!creds?.baseUrl?.trim() || !creds.apiKey?.trim()) { - throw new Error( + throw new ConfigError( 'Codex target requires base URL and API key for CCS-backed profile launches.' ); } const disallowedFlags = findDisallowedCodexManagedFlags(userArgs); if (disallowedFlags.length > 0) { - throw new Error( + throw new ConfigError( `Codex target does not allow ${disallowedFlags.join(', ')} when CCS manages the runtime provider. Remove native Codex provider selection flags and retry.` ); } @@ -331,7 +332,9 @@ export class CodexAdapter implements TargetAdapter { const overrides = [ `model_provider=${formatTomlString(CODEX_RUNTIME_PROVIDER_ID)}`, `model_providers.${CODEX_RUNTIME_PROVIDER_ID}.name=${formatTomlString('CCS Runtime')}`, - `model_providers.${CODEX_RUNTIME_PROVIDER_ID}.base_url=${formatTomlString(creds.baseUrl)}`, + `model_providers.${CODEX_RUNTIME_PROVIDER_ID}.base_url=${formatTomlString( + normalizeCodexResponsesBaseUrl(creds.baseUrl) + )}`, `model_providers.${CODEX_RUNTIME_PROVIDER_ID}.env_key=${formatTomlString(CODEX_RUNTIME_ENV_KEY)}`, `model_providers.${CODEX_RUNTIME_PROVIDER_ID}.wire_api=${formatTomlString('responses')}`, ]; @@ -360,7 +363,7 @@ export class CodexAdapter implements TargetAdapter { } if (profileType !== 'default') { if (!creds.apiKey?.trim()) { - throw new Error('Codex target requires an API key for CCS-backed profile launches.'); + throw new ConfigError('Codex target requires an API key for CCS-backed profile launches.'); } env[CODEX_RUNTIME_ENV_KEY] = creds.apiKey; } diff --git a/src/targets/codex-cliproxy-provider-config.ts b/src/targets/codex-cliproxy-provider-config.ts index a2c93252..750e113b 100644 --- a/src/targets/codex-cliproxy-provider-config.ts +++ b/src/targets/codex-cliproxy-provider-config.ts @@ -9,9 +9,8 @@ import { import { getModelMaxLevel } from '../cliproxy/model-catalog'; import { parseCodexModelTuningAlias } from '../cliproxy/ai-providers/model-id-normalizer'; import { - buildLocalProviderBaseUrl, + buildLocalCodexResponsesBaseUrl, getConfiguredCliproxyBackend, - usesScopedProviderRoutes, } from '../cliproxy/config/provider-route'; import { ConfigError } from '../errors/error-types'; @@ -52,11 +51,7 @@ export function buildCodexCliproxyProviderBaseUrl(port: number): string { // (issue #1597). Use the chatgpt_base_url-compatible "/backend-api/codex" alias, // which both backends serve; keep the provider-scoped alias for the Plus backend // to preserve its existing per-provider routing. - const backend = getConfiguredCliproxyBackend(); - if (usesScopedProviderRoutes(backend)) { - return buildLocalProviderBaseUrl('codex', port, backend); - } - return `http://127.0.0.1:${port}/backend-api/codex`; + return buildLocalCodexResponsesBaseUrl(port, getConfiguredCliproxyBackend()); } export function isCcsxpCliproxyShortcut(env: NodeJS.ProcessEnv = process.env): boolean { @@ -150,6 +145,7 @@ function isProviderReady( typeof provider.base_url === 'string' && resolveProviderBaseUrl(provider, expectedBaseUrl) === provider.base_url.trim() && provider.env_key === envKey && + provider.auth === undefined && provider.wire_api === 'responses' && provider.requires_openai_auth === false && provider.supports_websockets === false @@ -261,6 +257,7 @@ export async function ensureCodexCliproxyProviderConfig( ...currentProvider, ...buildProviderConfig(resolveProviderBaseUrl(currentProvider, expectedBaseUrl), envKey), }; + delete (providers[CODEX_CLIPROXY_PROVIDER_ID] as Record).auth; } if (providerReady && !normalizedModelAlias) { diff --git a/tests/unit/targets/codex-adapter.test.ts b/tests/unit/targets/codex-adapter.test.ts index 6d4927d9..86a3f2fb 100644 --- a/tests/unit/targets/codex-adapter.test.ts +++ b/tests/unit/targets/codex-adapter.test.ts @@ -128,7 +128,7 @@ describe('CodexAdapter', () => { profileType: 'cliproxy', creds: { profile: 'codex', - baseUrl: 'http://127.0.0.1:8317/api/provider/codex', + baseUrl: 'http://127.0.0.1:8317', apiKey: 'cliproxy-token', model: 'gpt-5.4', reasoningOverride: 'high', @@ -143,6 +143,9 @@ describe('CodexAdapter', () => { expect(args).toContain('-c'); expect(args).toContain('model_provider="ccs_runtime"'); + expect(args).toContain( + 'model_providers.ccs_runtime.base_url="http://127.0.0.1:8317/backend-api/codex"' + ); expect(args).toContain('model_providers.ccs_runtime.env_key="CCS_CODEX_API_KEY"'); expect(args).toContain('model="gpt-5.4"'); expect(args).toContain( diff --git a/tests/unit/targets/codex-cliproxy-provider-config.test.ts b/tests/unit/targets/codex-cliproxy-provider-config.test.ts index 9b1b99d2..a064cd5f 100644 --- a/tests/unit/targets/codex-cliproxy-provider-config.test.ts +++ b/tests/unit/targets/codex-cliproxy-provider-config.test.ts @@ -55,9 +55,7 @@ describe('codex cliproxy provider config repair', () => { // original CLIProxy backend serves the Codex Responses API only under the // "/backend-api/codex" alias, never at the bare root. Returning the root here // makes Codex call "http://127.0.0.1:8317/responses" -> 404 (issue #1597). - expect(buildCodexCliproxyProviderBaseUrl(8317)).toBe( - 'http://127.0.0.1:8317/backend-api/codex' - ); + expect(buildCodexCliproxyProviderBaseUrl(8317)).toBe('http://127.0.0.1:8317/backend-api/codex'); }); it('produces a Codex Responses endpoint the original backend actually serves (regression #1597)', () => { @@ -135,6 +133,36 @@ wire_api = "responses" expect(rawText).toContain('supports_websockets = false'); }); + it('removes native provider auth when ccsxp injects the token through env_key', async () => { + fs.mkdirSync(codexHome, { recursive: true }); + fs.writeFileSync( + configPath, + `[model_providers.cliproxy] +name = "CLIProxy Codex" +base_url = "http://127.0.0.1:8317/backend-api/codex" +env_key = "CLIPROXY_API_KEY" +wire_api = "responses" +requires_openai_auth = false +supports_websockets = false + +[model_providers.cliproxy.auth] +command = "/tmp/cliproxy-token" +timeout_ms = 5000 +refresh_interval_ms = 300000 +`, + 'utf8' + ); + + const result = await ensureCodexCliproxyProviderConfig(8317, env); + + expect(result.changed).toBe(true); + expect(result.envKey).toBe('CLIPROXY_API_KEY'); + const rawText = fs.readFileSync(configPath, 'utf8'); + expect(rawText).toContain('env_key = "CLIPROXY_API_KEY"'); + expect(rawText).not.toContain('[model_providers.cliproxy.auth]'); + expect(rawText).not.toContain('cliproxy-token'); + }); + it('preserves custom cliproxy provider values while repairing other fields', async () => { fs.mkdirSync(codexHome, { recursive: true }); fs.writeFileSync( diff --git a/tests/unit/targets/codex-settings-bridge-launch.test.ts b/tests/unit/targets/codex-settings-bridge-launch.test.ts index 6bf1c75c..384226d0 100644 --- a/tests/unit/targets/codex-settings-bridge-launch.test.ts +++ b/tests/unit/targets/codex-settings-bridge-launch.test.ts @@ -124,21 +124,26 @@ exit 0 const argsLog = fs.readFileSync(codexArgsLogPath, 'utf8'); expect(argsLog).toContain('model_provider="ccs_runtime"'); - expect(argsLog).toContain('model_providers.ccs_runtime.base_url="http://127.0.0.1:8317/api/provider/codex"'); + expect(argsLog).toContain( + 'model_providers.ccs_runtime.base_url="http://127.0.0.1:8317/backend-api/codex"' + ); expect(argsLog).toContain('model_reasoning_effort="high"'); expect(argsLog).not.toContain('mcp_servers.ccs_browser.command='); expect(argsLog).not.toContain('mcp_servers.ccs_browser.args=["-y","@playwright/mcp@0.0.70"]'); expect(argsLog).toContain('smoke'); expect(fs.readFileSync(codexEnvLogPath, 'utf8')).toBe('bridge-token'); - }); + }, 15000); it('rejects native Codex profile flags when CCS manages the bridge runtime', () => { if (process.platform === 'win32') return; - const result = runCcs(['codex-api', '--target', 'codex', '--profile', 'other', 'smoke'], baseEnv); + const result = runCcs( + ['codex-api', '--target', 'codex', '--profile', 'other', 'smoke'], + baseEnv + ); expect(result.status).toBe(1); expect(result.stderr).toContain('does not allow --profile/-p'); expect(fs.existsSync(codexArgsLogPath)).toBe(false); - }); + }, 15000); }); From a167f94e1b07ee47f201cdbbc72c6fd0e68a8738 Mon Sep 17 00:00:00 2001 From: Thibault Jaigu <84420566+Thibaultjaigu@users.noreply.github.com> Date: Fri, 26 Jun 2026 20:41:24 +0100 Subject: [PATCH 25/52] feat: add Requesty as an OpenAI-compatible provider (#1604) Add a Requesty provider preset to the provider preset catalog, mirroring the existing OpenRouter preset (base https://router.requesty.ai/v1, default model openai/gpt-4o-mini, OpenAI-compatible). --- eslint-rules/throw-error-baseline.json | 12 ++-- src/shared/provider-preset-catalog.ts | 14 +++++ .../api/provider-presets-requesty.test.ts | 57 +++++++++++++++++++ 3 files changed, 77 insertions(+), 6 deletions(-) create mode 100644 tests/unit/api/provider-presets-requesty.test.ts diff --git a/eslint-rules/throw-error-baseline.json b/eslint-rules/throw-error-baseline.json index 0536a9d7..e95bfe53 100644 --- a/eslint-rules/throw-error-baseline.json +++ b/eslint-rules/throw-error-baseline.json @@ -220,13 +220,13 @@ "src/shared/claude-extension-setup.ts:247", "src/shared/claude-extension-setup.ts:257", "src/shared/claude-extension-setup.ts:317", - "src/shared/provider-preset-catalog.ts:325", - "src/shared/provider-preset-catalog.ts:328", - "src/shared/provider-preset-catalog.ts:337", - "src/shared/provider-preset-catalog.ts:340", - "src/shared/provider-preset-catalog.ts:343", - "src/shared/provider-preset-catalog.ts:348", + "src/shared/provider-preset-catalog.ts:339", + "src/shared/provider-preset-catalog.ts:342", "src/shared/provider-preset-catalog.ts:351", + "src/shared/provider-preset-catalog.ts:354", + "src/shared/provider-preset-catalog.ts:357", + "src/shared/provider-preset-catalog.ts:362", + "src/shared/provider-preset-catalog.ts:365", "src/shared/toml-object.ts:23", "src/targets/codex-adapter.ts:103", "src/targets/codex-adapter.ts:275", diff --git a/src/shared/provider-preset-catalog.ts b/src/shared/provider-preset-catalog.ts index b2072f2d..5880588a 100644 --- a/src/shared/provider-preset-catalog.ts +++ b/src/shared/provider-preset-catalog.ts @@ -25,6 +25,7 @@ export const PROVIDER_PRESET_IDS = [ 'ollama-cloud', 'novita', 'fireworks', + 'requesty', ] as const; export type ProviderPresetId = (typeof PROVIDER_PRESET_IDS)[number]; @@ -297,6 +298,19 @@ const RAW_PROVIDER_PRESET_DEFINITIONS: readonly ProviderPresetDefinition[] = [ requiresApiKey: true, badge: 'Anthropic-compatible', }, + { + id: 'requesty', + name: 'Requesty', + description: 'OpenAI-compatible LLM gateway (provider/model naming, e.g. openai/gpt-4o-mini)', + baseUrl: 'https://router.requesty.ai/v1', + defaultProfileName: 'requesty', + defaultModel: 'openai/gpt-4o-mini', + apiKeyPlaceholder: 'rqsty-sk-...', + apiKeyHint: 'Create an API key at app.requesty.ai/api-keys', + category: 'alternative', + requiresApiKey: true, + badge: 'OpenAI-compatible', + }, ]; function clonePresetDefinition(preset: ProviderPresetDefinition): ProviderPresetDefinition { diff --git a/tests/unit/api/provider-presets-requesty.test.ts b/tests/unit/api/provider-presets-requesty.test.ts new file mode 100644 index 00000000..5716c613 --- /dev/null +++ b/tests/unit/api/provider-presets-requesty.test.ts @@ -0,0 +1,57 @@ +import { describe, expect, it } from 'bun:test'; +import { getPresetById, isValidPresetId } from '../../../src/api/services/provider-presets'; +import { PROVIDER_PRESET_IDS } from '../../../src/shared/provider-preset-catalog'; + +describe('provider-presets-requesty', () => { + it('resolves requesty preset id', () => { + const preset = getPresetById('requesty'); + expect(preset?.id).toBe('requesty'); + expect(preset?.baseUrl).toBe('https://router.requesty.ai/v1'); + expect(preset?.defaultProfileName).toBe('requesty'); + }); + + it('registers requesty in PROVIDER_PRESET_IDS', () => { + expect(PROVIDER_PRESET_IDS).toContain('requesty'); + }); + + it('uses the OpenAI-compatible base URL with a /v1 suffix', () => { + const preset = getPresetById('requesty'); + expect(preset?.baseUrl).toBe('https://router.requesty.ai/v1'); + expect(preset?.baseUrl.endsWith('/v1')).toBe(true); + }); + + it('pins a provider/model default (openai/gpt-4o-mini)', () => { + const preset = getPresetById('requesty'); + expect(preset?.defaultModel).toBe('openai/gpt-4o-mini'); + }); + + it('validates requesty preset requires an API key', () => { + const preset = getPresetById('requesty'); + expect(preset?.requiresApiKey).toBe(true); + }); + + it('is a plain (non-featured) alternative provider', () => { + const preset = getPresetById('requesty'); + expect(preset?.category).toBe('alternative'); + expect(preset?.featured).toBeUndefined(); + }); + + it('treats requesty as a valid preset id', () => { + expect(isValidPresetId('requesty')).toBe(true); + }); + + it('handles whitespace in requesty preset id', () => { + const preset = getPresetById(' requesty '); + expect(preset?.id).toBe('requesty'); + }); + + it('handles uppercase requesty preset id', () => { + const preset = getPresetById('REQUESTY'); + expect(preset?.id).toBe('requesty'); + }); + + it('does not resolve partial or invalid requesty ids', () => { + expect(getPresetById('requesty-invalid')).toBeUndefined(); + expect(isValidPresetId('requesty-invalid')).toBe(false); + }); +}); From 608ff97e3551f18b7755241bb520aa224c5eff65 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 26 Jun 2026 19:45:20 +0000 Subject: [PATCH 26/52] chore(release): 8.6.1-dev.5 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 183ffb81..ea04d730 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@kaitranntt/ccs", - "version": "8.6.1-dev.4", + "version": "8.6.1-dev.5", "description": "Claude Code Switch - Instant profile switching between Claude, GLM, Kimi, and more", "keywords": [ "cli", From 9dd9bf297890c1802fdc491ec6b909e1e5136a84 Mon Sep 17 00:00:00 2001 From: "Kai (Tam Nhu) Tran" <61256810+kaitranntt@users.noreply.github.com> Date: Sat, 27 Jun 2026 10:01:25 -0400 Subject: [PATCH 27/52] feat(websearch): add agy provider and deprecate gemini cli fallback (#1607) Google retired the gemini CLI on 2026-06-18, so the gemini websearch fallback no longer works. Add agy (Antigravity) as the primary CLI websearch provider end to end: runtime spawn in websearch-transformer.cjs (agy --dangerously-skip-permissions --print-timeout Ns -p), detection (agy.ts), config schema and defaults, hook env, status, dashboard persistence, and docs. The legacy gemini provider stays present but is marked deprecated for enterprise users who retain access. Image analysis already supported the agy provider (no change). The CLIProxy gemini quota fetcher (Gemini API OAuth, not the cli binary) is untouched. Validation: typecheck, lint, and the websearch + config + web-server unit suites pass. --- docs/websearch.md | 11 ++- lib/hooks/websearch-transformer.cjs | 85 +++++++++++++++++- src/config/loader/config-getters.ts | 9 ++ src/config/loader/defaults-merger.ts | 5 ++ src/config/loader/yaml-serializer.ts | 7 +- src/config/schemas/index.ts | 1 + src/config/schemas/unified-config.ts | 5 ++ src/config/schemas/websearch.ts | 23 ++++- src/utils/websearch-manager.ts | 11 ++- src/utils/websearch/agy.ts | 87 +++++++++++++++++++ src/utils/websearch/hook-config.ts | 3 + src/utils/websearch/hook-env.ts | 15 +++- src/utils/websearch/index.ts | 6 +- src/utils/websearch/status.ts | 31 +++++-- src/utils/websearch/types.ts | 8 ++ src/web-server/routes/websearch-routes.ts | 9 ++ .../unit/hooks/websearch-transformer.test.ts | 37 +++----- tests/unit/utils/websearch/status.test.ts | 85 +++++++++++++++++- 18 files changed, 395 insertions(+), 43 deletions(-) create mode 100644 src/utils/websearch/agy.ts diff --git a/docs/websearch.md b/docs/websearch.md index 29dcf740..f83ede4c 100644 --- a/docs/websearch.md +++ b/docs/websearch.md @@ -70,9 +70,10 @@ That shared launch helper applies to normal third-party settings profiles, CLIPr | Brave Search | HTTP API | `BRAVE_API_KEY` | No | Cleaner snippets and metadata | | SearXNG | JSON API | `providers.searxng.url` | No | Self-hosted/public SearXNG backend via `/search?format=json` | | DuckDuckGo | HTML fetch | None | Yes | Built-in zero-setup fallback | -| Gemini CLI | Legacy CLI | `npm i -g @google/gemini-cli` | No | Optional compatibility fallback | -| OpenCode | Legacy CLI | `curl -fsSL https://opencode.ai/install \| bash` | No | Optional compatibility fallback | -| Grok CLI | Legacy CLI | `npm i -g @vibe-kit/grok-cli` + `GROK_API_KEY` | No | Optional compatibility fallback | +| Antigravity (agy) | LLM CLI | `curl -fsSL https://antigravity.google/cli/install.sh \| bash` | No | Recommended LLM CLI fallback (Gemini CLI successor) | +| Gemini CLI | LLM CLI | Deprecated, use Antigravity (agy) | No | Deprecated. Google retired the gemini CLI on 2026-06-18 | +| OpenCode | LLM CLI | `curl -fsSL https://opencode.ai/install \| bash` | No | Optional compatibility fallback | +| Grok CLI | LLM CLI | `npm i -g @vibe-kit/grok-cli` + `GROK_API_KEY` | No | Optional compatibility fallback | ## Configuration @@ -111,6 +112,10 @@ websearch: duckduckgo: enabled: true max_results: 5 + agy: + enabled: false + model: gemini-2.5-flash + timeout: 90 gemini: enabled: false model: gemini-2.5-flash diff --git a/lib/hooks/websearch-transformer.cjs b/lib/hooks/websearch-transformer.cjs index eb198cba..39996352 100644 --- a/lib/hooks/websearch-transformer.cjs +++ b/lib/hooks/websearch-transformer.cjs @@ -9,8 +9,9 @@ * - SearXNG JSON API * - DuckDuckGo HTML search * - * Legacy compatibility fallback: - * - Gemini CLI + * Optional LLM CLI fallback: + * - Antigravity CLI (agy) - recommended (Gemini CLI successor) + * - Gemini CLI - deprecated (Google retired the gemini CLI on 2026-06-18) * - OpenCode * - Grok CLI */ @@ -49,6 +50,11 @@ const SHARED_INSTRUCTIONS = `Instructions: 7. Format output clearly with sections if the topic is complex`; const PROVIDER_CONFIG = { + agy: { + model: 'gemini-2.5-flash', + toolInstruction: 'Use your web search tool to find current information.', + quirks: null, + }, gemini: { model: 'gemini-2.5-flash', toolInstruction: 'Use the google_web_search tool to find current information.', @@ -124,7 +130,10 @@ function readProviderState() { const parsed = JSON.parse(fs.readFileSync(statePath, 'utf8')); const cooldowns = - parsed && typeof parsed === 'object' && parsed.cooldowns && typeof parsed.cooldowns === 'object' + parsed && + typeof parsed === 'object' && + parsed.cooldowns && + typeof parsed.cooldowns === 'object' ? parsed.cooldowns : {}; return { cooldowns }; @@ -856,6 +865,66 @@ async function tryDuckDuckGoSearch(query, timeoutSec = DEFAULT_TIMEOUT_SEC) { } } +function runAgyCommand(args, timeoutMs) { + const result = spawnSync('agy', args, { + encoding: 'utf8', + timeout: timeoutMs, + maxBuffer: 1024 * 1024 * 2, + stdio: ['pipe', 'pipe', 'pipe'], + // Never route query-derived prompts through a shell. Node concatenates + // arguments for shell-backed Windows spawns, which lets shell metacharacters + // in WebSearch queries escape the intended CLI invocation. + shell: false, + }); + + if (result.error) { + if (result.error.code === 'ENOENT') + return { success: false, error: 'Antigravity CLI (agy) not installed' }; + throw result.error; + } + if (result.status !== 0) { + return { + success: false, + error: (result.stderr || '').trim() || `Antigravity CLI exited with code ${result.status}`, + }; + } + + const output = (result.stdout || '').trim(); + if (!output || output.length < MIN_VALID_RESPONSE_LENGTH) { + return { success: false, error: 'Empty or too short response from Antigravity CLI' }; + } + return { success: true, content: output }; +} + +function tryAgySearch(query, timeoutSec = DEFAULT_TIMEOUT_SEC) { + try { + const timeoutMs = timeoutSec * 1000; + const model = process.env.CCS_WEBSEARCH_AGY_MODEL || PROVIDER_CONFIG.agy.model; + const prompt = buildPrompt('agy', query); + // gemini flag mapping: `--yolo` -> `--dangerously-skip-permissions`, `-m` -> `--model`, + // shell `timeout N` -> native `--print-timeout Ns`. The prompt is passed to `-p` (print mode). + const args = [ + '--model', + model, + '--dangerously-skip-permissions', + '--print-timeout', + `${timeoutSec}s`, + '-p', + prompt, + ]; + + debug(`Executing Antigravity (agy) fallback with model ${model}`); + return runAgyCommand(args, timeoutMs); + } catch (error) { + return { + success: false, + error: error.killed + ? 'Antigravity CLI timed out' + : error.message || 'Unknown Antigravity error', + }; + } +} + function shouldRetryGeminiWithLegacyPrompt(errorMessage) { const lower = (errorMessage || '').toLowerCase(); return ( @@ -1042,6 +1111,12 @@ function getConfiguredProviders() { available: () => isProviderEnabled('duckduckgo'), fn: tryDuckDuckGoSearch, }, + { + name: 'Antigravity CLI', + id: 'agy', + available: () => isProviderEnabled('agy') && isCliAvailable('agy'), + fn: tryAgySearch, + }, { name: 'Gemini CLI', id: 'gemini', @@ -1230,7 +1305,9 @@ async function runProviderWithPolicy(provider, query, timeoutSec, fingerprint) { } function getActiveProviders() { - return getConfiguredProviders().filter((provider) => !getProviderCooldown(provider.id) && provider.available()); + return getConfiguredProviders().filter( + (provider) => !getProviderCooldown(provider.id) && provider.available() + ); } function getActiveProviderIds() { diff --git a/src/config/loader/config-getters.ts b/src/config/loader/config-getters.ts index f8e77492..1081188b 100644 --- a/src/config/loader/config-getters.ts +++ b/src/config/loader/config-getters.ts @@ -90,6 +90,7 @@ export function getWebSearchConfig(): { brave?: { enabled?: boolean; max_results?: number }; searxng?: { enabled?: boolean; url?: string; max_results?: number }; duckduckgo?: { enabled?: boolean; max_results?: number }; + agy?: { enabled?: boolean; model?: string; timeout?: number }; gemini?: GeminiWebSearchInfo; opencode?: { enabled?: boolean; model?: string; timeout?: number }; grok?: { enabled?: boolean; timeout?: number }; @@ -126,6 +127,12 @@ export function getWebSearchConfig(): { max_results: config.websearch?.providers?.searxng?.max_results ?? 5, }; + const agyConfig = { + enabled: config.websearch?.providers?.agy?.enabled ?? false, + model: config.websearch?.providers?.agy?.model ?? 'gemini-2.5-flash', + timeout: config.websearch?.providers?.agy?.timeout ?? 90, + }; + const geminiConfig: GeminiWebSearchInfo = { enabled: config.websearch?.providers?.gemini?.enabled ?? config.websearch?.gemini?.enabled ?? false, @@ -152,6 +159,7 @@ export function getWebSearchConfig(): { braveConfig.enabled || searxngConfig.enabled || duckDuckGoConfig.enabled || + agyConfig.enabled || geminiConfig.enabled || opencodeConfig.enabled || grokConfig.enabled; @@ -165,6 +173,7 @@ export function getWebSearchConfig(): { brave: braveConfig, searxng: searxngConfig, duckduckgo: duckDuckGoConfig, + agy: agyConfig, gemini: geminiConfig, opencode: opencodeConfig, grok: grokConfig, diff --git a/src/config/loader/defaults-merger.ts b/src/config/loader/defaults-merger.ts index 7b45f4a1..b6cd7c9a 100644 --- a/src/config/loader/defaults-merger.ts +++ b/src/config/loader/defaults-merger.ts @@ -160,6 +160,11 @@ export function mergeWithDefaults(partial: Partial): UnifiedConfi enabled: partial.websearch?.providers?.duckduckgo?.enabled ?? true, max_results: partial.websearch?.providers?.duckduckgo?.max_results ?? 5, }, + agy: { + enabled: partial.websearch?.providers?.agy?.enabled ?? false, + model: partial.websearch?.providers?.agy?.model ?? 'gemini-2.5-flash', + timeout: partial.websearch?.providers?.agy?.timeout ?? 90, + }, gemini: { enabled: partial.websearch?.providers?.gemini?.enabled ?? diff --git a/src/config/loader/yaml-serializer.ts b/src/config/loader/yaml-serializer.ts index 7fc878e9..bd511b53 100644 --- a/src/config/loader/yaml-serializer.ts +++ b/src/config/loader/yaml-serializer.ts @@ -149,8 +149,11 @@ export function generateYamlWithComments(config: UnifiedConfig): string { lines.push('# Brave requires BRAVE_API_KEY in your environment.'); lines.push('# DuckDuckGo works with zero extra setup and is enabled by default.'); lines.push('#'); - lines.push('# Legacy LLM fallbacks remain optional if you still want them:'); - lines.push('# gemini: npm i -g @google/gemini-cli'); + lines.push('# Optional LLM CLI fallbacks:'); + lines.push( + '# agy (recommended): curl -fsSL https://antigravity.google/cli/install.sh | bash' + ); + lines.push('# gemini (deprecated, retired upstream 2026-06-18): use agy instead'); lines.push('# opencode: curl -fsSL https://opencode.ai/install | bash'); lines.push('# grok: npm i -g @vibe-kit/grok-cli'); lines.push('# ----------------------------------------------------------------------------'); diff --git a/src/config/schemas/index.ts b/src/config/schemas/index.ts index a25aa156..43a437b5 100644 --- a/src/config/schemas/index.ts +++ b/src/config/schemas/index.ts @@ -66,6 +66,7 @@ export type { ExaWebSearchConfig, TavilyWebSearchConfig, SearxngWebSearchConfig, + AgyWebSearchConfig, GeminiWebSearchConfig, GrokWebSearchConfig, OpenCodeWebSearchConfig, diff --git a/src/config/schemas/unified-config.ts b/src/config/schemas/unified-config.ts index a38db23a..4b4ce886 100644 --- a/src/config/schemas/unified-config.ts +++ b/src/config/schemas/unified-config.ts @@ -154,6 +154,11 @@ export function createEmptyUnifiedConfig(): UnifiedConfig { enabled: true, max_results: 5, }, + agy: { + enabled: false, + model: 'gemini-2.5-flash', + timeout: 90, + }, gemini: { enabled: false, model: 'gemini-2.5-flash', diff --git a/src/config/schemas/websearch.ts b/src/config/schemas/websearch.ts index d2714c41..42012a67 100644 --- a/src/config/schemas/websearch.ts +++ b/src/config/schemas/websearch.ts @@ -5,7 +5,7 @@ * - API-backed: Exa, Tavily, Brave * - Self-hosted: SearXNG * - Zero-setup: DuckDuckGo - * - Legacy CLI fallbacks: Gemini, Grok, OpenCode + * - LLM CLI fallbacks: Antigravity (agy, recommended), Gemini (deprecated), Grok, OpenCode */ /** @@ -60,8 +60,25 @@ export interface SearxngWebSearchConfig { max_results?: number; } +/** + * Antigravity CLI (agy) WebSearch configuration. + * + * Recommended LLM CLI fallback. `agy` is Google's successor to the retired + * `gemini` CLI. Install: `curl -fsSL https://antigravity.google/cli/install.sh | bash`. + */ +export interface AgyWebSearchConfig { + /** Enable Antigravity CLI fallback (default: false) */ + enabled?: boolean; + /** Model to use (default: gemini-2.5-flash; accepts legacy gemini ids) */ + model?: string; + /** Timeout in seconds (default: 90) */ + timeout?: number; +} + /** * Gemini CLI WebSearch configuration. + * + * @deprecated Google retired the gemini CLI on 2026-06-18. Use Antigravity (agy) instead. */ export interface GeminiWebSearchConfig { /** Enable Gemini CLI legacy fallback (default: false) */ @@ -109,7 +126,9 @@ export interface WebSearchProvidersConfig { searxng?: SearxngWebSearchConfig; /** DuckDuckGo HTML search - zero setup default backend */ duckduckgo?: DuckDuckGoWebSearchConfig; - /** Gemini CLI - optional legacy LLM fallback */ + /** Antigravity CLI (agy) - recommended LLM CLI fallback (Gemini CLI successor) */ + agy?: AgyWebSearchConfig; + /** Gemini CLI - deprecated legacy LLM fallback (retired upstream) */ gemini?: GeminiWebSearchConfig; /** Grok CLI - optional legacy LLM fallback */ grok?: GrokWebSearchConfig; diff --git a/src/utils/websearch-manager.ts b/src/utils/websearch-manager.ts index 77450d34..8b021ca2 100644 --- a/src/utils/websearch-manager.ts +++ b/src/utils/websearch-manager.ts @@ -16,6 +16,7 @@ // Re-export types export type { + AgyCliStatus, GeminiCliStatus, GrokCliStatus, OpenCodeCliStatus, @@ -25,6 +26,8 @@ export type { } from './websearch/types'; // Re-export CLI detection functions +export { getAgyCliStatus, hasAgyCli, clearAgyCliCache } from './websearch/agy'; + export { getGeminiCliStatus, hasGeminiCli, @@ -92,12 +95,18 @@ export { export { ensureProfileHooks, ensureProfileHooksOrThrow } from './websearch/profile-hook-injector'; // Import for local use -import { clearGeminiCliCache, clearGrokCliCache, clearOpenCodeCliCache } from './websearch'; +import { + clearAgyCliCache, + clearGeminiCliCache, + clearGrokCliCache, + clearOpenCodeCliCache, +} from './websearch'; /** * Clear all CLI caches */ export function clearAllCliCaches(): void { + clearAgyCliCache(); clearGeminiCliCache(); clearGrokCliCache(); clearOpenCodeCliCache(); diff --git a/src/utils/websearch/agy.ts b/src/utils/websearch/agy.ts new file mode 100644 index 00000000..f5528fdf --- /dev/null +++ b/src/utils/websearch/agy.ts @@ -0,0 +1,87 @@ +/** + * Antigravity CLI (agy) Detection + * + * Detects and manages Antigravity CLI installation status. `agy` is Google's + * successor to the retired `gemini` CLI (Google retired the gemini CLI on + * 2026-06-18) and is the recommended LLM CLI WebSearch fallback. + * + * @module utils/websearch/agy + */ + +import { execSync } from 'child_process'; +import type { AgyCliStatus } from './types'; + +// Cache for Antigravity CLI status (per process) +let agyCliCache: AgyCliStatus | null = null; + +/** + * Check if Antigravity CLI (agy) is installed globally. + * + * Install: `curl -fsSL https://antigravity.google/cli/install.sh | bash` + * (Unix installs to ~/.local/bin/agy). Must be in PATH. + * + * @returns Antigravity CLI status with path and version + */ +export function getAgyCliStatus(): AgyCliStatus { + // Return cached result if available + if (agyCliCache) { + return agyCliCache; + } + + const result: AgyCliStatus = { + installed: false, + path: undefined, + version: undefined, + }; + + try { + const isWindows = process.platform === 'win32'; + const whichCmd = isWindows ? 'where agy' : 'which agy'; + + const pathResult = execSync(whichCmd, { + encoding: 'utf8', + timeout: 5000, + stdio: ['pipe', 'pipe', 'pipe'], + }); + + const agyPath = pathResult.trim().split('\n')[0]; // First result on Windows + + if (agyPath) { + result.installed = true; + result.path = agyPath; + + // Try to get version + try { + const versionResult = execSync('agy --version', { + encoding: 'utf8', + timeout: 5000, + stdio: ['pipe', 'pipe', 'pipe'], + }); + result.version = versionResult.trim(); + } catch { + // Version check failed, but CLI is installed + result.version = 'unknown'; + } + } + } catch { + // Command not found - Antigravity CLI not installed + } + + // Cache result + agyCliCache = result; + return result; +} + +/** + * Check if Antigravity CLI is available (quick boolean check) + */ +export function hasAgyCli(): boolean { + return getAgyCliStatus().installed; +} + +/** + * Clear Antigravity CLI cache (for testing or after installation) + */ +export function clearAgyCliCache(): void { + agyCliCache = null; +} diff --git a/src/utils/websearch/hook-config.ts b/src/utils/websearch/hook-config.ts index 83b605ab..c1342df4 100644 --- a/src/utils/websearch/hook-config.ts +++ b/src/utils/websearch/hook-config.ts @@ -41,6 +41,9 @@ export function getWebSearchHookConfig(): Record { // Compute max timeout from enabled providers const timeouts: number[] = []; + if (wsConfig.providers?.agy?.enabled && wsConfig.providers.agy.timeout) { + timeouts.push(wsConfig.providers.agy.timeout); + } if (wsConfig.providers?.gemini?.enabled && wsConfig.providers.gemini.timeout) { timeouts.push(wsConfig.providers.gemini.timeout); } diff --git a/src/utils/websearch/hook-env.ts b/src/utils/websearch/hook-env.ts index f3b8887f..8a95bcbe 100644 --- a/src/utils/websearch/hook-env.ts +++ b/src/utils/websearch/hook-env.ts @@ -27,6 +27,7 @@ export function getWebSearchHookEnv(): Record { CCS_WEBSEARCH_BRAVE: '0', CCS_WEBSEARCH_SEARXNG: '0', CCS_WEBSEARCH_DUCKDUCKGO: '0', + CCS_WEBSEARCH_AGY: '0', CCS_WEBSEARCH_GEMINI: '0', CCS_WEBSEARCH_OPENCODE: '0', CCS_WEBSEARCH_GROK: '0', @@ -80,12 +81,24 @@ export function getWebSearchHookEnv(): Record { env.CCS_WEBSEARCH_SEARXNG_MAX_RESULTS = String(wsConfig.providers.searxng.max_results || 5); } + if (wsConfig.providers?.agy?.enabled) { + env.CCS_WEBSEARCH_AGY = '1'; + if (wsConfig.providers.agy.model) { + env.CCS_WEBSEARCH_AGY_MODEL = wsConfig.providers.agy.model; + } + // Antigravity is the primary CLI fallback, so its timeout wins. + env.CCS_WEBSEARCH_TIMEOUT = String(wsConfig.providers.agy.timeout || 90); + } + if (wsConfig.providers?.gemini?.enabled) { env.CCS_WEBSEARCH_GEMINI = '1'; if (wsConfig.providers.gemini.model) { env.CCS_WEBSEARCH_GEMINI_MODEL = wsConfig.providers.gemini.model; } - env.CCS_WEBSEARCH_TIMEOUT = String(wsConfig.providers.gemini.timeout || 55); + // Only set if Antigravity (primary) has not already chosen the timeout. + if (!env.CCS_WEBSEARCH_TIMEOUT) { + env.CCS_WEBSEARCH_TIMEOUT = String(wsConfig.providers.gemini.timeout || 55); + } } if (wsConfig.providers?.opencode?.enabled) { diff --git a/src/utils/websearch/index.ts b/src/utils/websearch/index.ts index 4111cad1..8d746801 100644 --- a/src/utils/websearch/index.ts +++ b/src/utils/websearch/index.ts @@ -8,6 +8,7 @@ // Types export type { + AgyCliStatus, GeminiCliStatus, GrokCliStatus, OpenCodeCliStatus, @@ -20,7 +21,10 @@ export type { export type { WebSearchApiKeyState } from './provider-secrets'; -// Gemini CLI +// Antigravity CLI (agy) - recommended Gemini CLI successor +export { getAgyCliStatus, hasAgyCli, clearAgyCliCache } from './agy'; + +// Gemini CLI (deprecated) export { getGeminiCliStatus, hasGeminiCli, diff --git a/src/utils/websearch/status.ts b/src/utils/websearch/status.ts index 1cf9e57b..af16138c 100644 --- a/src/utils/websearch/status.ts +++ b/src/utils/websearch/status.ts @@ -11,6 +11,7 @@ import { join } from 'path'; import { ok, warn, fail, info } from '../ui'; import { getCcsDir } from '../config-manager'; +import { getAgyCliStatus } from './agy'; import { getGeminiCliStatus, isGeminiAuthenticated } from './gemini-cli'; import { getGrokCliStatus } from './grok-cli'; import { getOpenCodeCliStatus } from './opencode-cli'; @@ -113,12 +114,31 @@ function applyCooldownStatus( function getLegacyProviderStatuses(): WebSearchCliInfo[] { const wsConfig = getWebSearchConfig(); + const agyStatus = getAgyCliStatus(); const geminiStatus = getGeminiCliStatus(); const grokStatus = getGrokCliStatus(); const opencodeStatus = getOpenCodeCliStatus(); const geminiAuthed = geminiStatus.installed && isGeminiAuthenticated(); return [ + { + id: 'agy', + kind: 'legacy-cli', + name: 'Antigravity CLI', + command: 'agy', + enabled: wsConfig.providers?.agy?.enabled ?? false, + available: agyStatus.installed, + version: agyStatus.version ?? null, + installCommand: 'curl -fsSL https://antigravity.google/cli/install.sh | bash', + docsUrl: 'https://antigravity.google/cli', + requiresApiKey: false, + description: 'Recommended LLM CLI fallback with Google web search (Gemini CLI successor).', + detail: agyStatus.installed + ? agyStatus.version + ? `Installed (${agyStatus.version})` + : 'Installed' + : 'Not installed', + }, { id: 'gemini', kind: 'legacy-cli', @@ -127,15 +147,16 @@ function getLegacyProviderStatuses(): WebSearchCliInfo[] { enabled: wsConfig.providers?.gemini?.enabled ?? false, available: geminiAuthed, version: geminiStatus.version ?? null, - installCommand: 'npm install -g @google/gemini-cli', - docsUrl: 'https://github.com/google-gemini/gemini-cli', + installCommand: 'curl -fsSL https://antigravity.google/cli/install.sh | bash', + docsUrl: 'https://antigravity.google/cli', requiresApiKey: false, - description: 'Optional legacy LLM fallback with Google web search.', + description: + 'Deprecated legacy fallback (Google retired the gemini CLI). Prefer Antigravity.', detail: geminiStatus.installed ? geminiAuthed ? 'Authenticated' : "Run 'gemini' to login" - : 'Not installed', + : 'Not installed (retired - use Antigravity)', }, { id: 'opencode', @@ -287,7 +308,7 @@ export function getCliInstallHints(): string[] { ' Enable DuckDuckGo in Settings > WebSearch for zero-setup search', ' Or enable SearXNG and set a valid base URL (must support /search?format=json)', ' Or export EXA_API_KEY, TAVILY_API_KEY, or BRAVE_API_KEY for API-backed search', - ' Optional legacy fallback: npm i -g @google/gemini-cli', + ' Optional LLM CLI fallback: curl -fsSL https://antigravity.google/cli/install.sh | bash', ]; } diff --git a/src/utils/websearch/types.ts b/src/utils/websearch/types.ts index 38f94499..57dd08a9 100644 --- a/src/utils/websearch/types.ts +++ b/src/utils/websearch/types.ts @@ -8,6 +8,12 @@ import type { ComponentStatus } from '../../types/utils'; +/** + * Antigravity CLI (agy) installation status + * @deprecated Use ComponentStatus directly + */ +export type AgyCliStatus = ComponentStatus; + /** * Gemini CLI installation status * @deprecated Use ComponentStatus directly @@ -40,6 +46,7 @@ export type WebSearchProviderId = | 'brave' | 'searxng' | 'duckduckgo' + | 'agy' | 'gemini' | 'grok' | 'opencode'; @@ -112,6 +119,7 @@ export interface WebSearchConfig { brave?: WebSearchProviderConfig; searxng?: WebSearchProviderConfig; duckduckgo?: WebSearchProviderConfig; + agy?: WebSearchProviderConfig; gemini?: WebSearchProviderConfig; opencode?: WebSearchProviderConfig; grok?: WebSearchProviderConfig; diff --git a/src/web-server/routes/websearch-routes.ts b/src/web-server/routes/websearch-routes.ts index 4b2220ca..a136a58b 100644 --- a/src/web-server/routes/websearch-routes.ts +++ b/src/web-server/routes/websearch-routes.ts @@ -197,6 +197,15 @@ router.put('/', (req: Request, res: Response): void => { config.websearch?.providers?.searxng?.max_results ?? DEFAULT_WEBSEARCH_MAX_RESULTS ), }, + agy: { + enabled: + providers.agy?.enabled ?? config.websearch?.providers?.agy?.enabled ?? false, + model: + providers.agy?.model ?? + config.websearch?.providers?.agy?.model ?? + 'gemini-2.5-flash', + timeout: providers.agy?.timeout ?? config.websearch?.providers?.agy?.timeout ?? 90, + }, gemini: { enabled: providers.gemini?.enabled ?? diff --git a/tests/unit/hooks/websearch-transformer.test.ts b/tests/unit/hooks/websearch-transformer.test.ts index f05f9765..822cd4a2 100644 --- a/tests/unit/hooks/websearch-transformer.test.ts +++ b/tests/unit/hooks/websearch-transformer.test.ts @@ -1,12 +1,5 @@ import { describe, expect, it } from 'bun:test'; -import { - existsSync, - mkdirSync, - mkdtempSync, - readFileSync, - rmSync, - writeFileSync, -} from 'node:fs'; +import { existsSync, mkdirSync, mkdtempSync, readFileSync, rmSync, writeFileSync } from 'node:fs'; import { join } from 'node:path'; import { tmpdir } from 'node:os'; import { spawnSync } from 'node:child_process'; @@ -32,11 +25,7 @@ const hook = require('../../../lib/hooks/websearch-transformer.cjs') as { query: string, errors: Array<{ provider: string; error: string }> ) => HookOutput; - buildSuccessHookOutput: ( - query: string, - providerName: string, - content: string - ) => HookOutput; + buildSuccessHookOutput: (query: string, providerName: string, content: string) => HookOutput; classifyDuckDuckGoHtml: ( html: string, count: number @@ -45,7 +34,10 @@ const hook = require('../../../lib/hooks/websearch-transformer.cjs') as { kind: 'results' | 'no_results' | 'non_result_html'; results: Array<{ title: string; url: string; description: string }>; }; - extractDuckDuckGoResults: (html: string, count: number) => Array<{ + extractDuckDuckGoResults: ( + html: string, + count: number + ) => Array<{ title: string; url: string; description: string; @@ -62,7 +54,10 @@ const hook = require('../../../lib/hooks/websearch-transformer.cjs') as { results: Array<{ title: string; url: string; description: string }> ) => string; parseRetryAfterSeconds: (rawValue: string) => number | null; - trySearxngSearch: (query: string, timeoutSec?: number) => Promise<{ + trySearxngSearch: ( + query: string, + timeoutSec?: number + ) => Promise<{ content?: string; error?: string; statusCode?: number; @@ -136,7 +131,7 @@ describe('websearch-transformer legacy CLI safety', () => { const source = readFileSync(hookPath, 'utf8'); expect(source).not.toContain('shell: isWindows'); - expect(source.match(/shell: false/g) || []).toHaveLength(3); + expect(source.match(/shell: false/g) || []).toHaveLength(4); }); }); @@ -411,9 +406,7 @@ describe('websearch-transformer hook helpers', () => { const output = JSON.parse(result.stdout.trim()) as HookOutput; expect(output.hookSpecificOutput.hookEventName).toBe('PreToolUse'); expect(output.hookSpecificOutput.permissionDecision).toBe('deny'); - expect(output.hookSpecificOutput.additionalContext).toContain( - 'CCS local WebSearch evidence' - ); + expect(output.hookSpecificOutput.additionalContext).toContain('CCS local WebSearch evidence'); expect(output.hookSpecificOutput.additionalContext).toContain('Provider: DuckDuckGo'); expect(output.hookSpecificOutput.additionalContext).toContain( 'URL: https://example.com/article' @@ -782,8 +775,7 @@ global.fetch = async (url) => { expect( traceEvents.some( (event) => - event.event === 'websearch_provider_success' && - event.providerId === 'duckduckgo' + event.event === 'websearch_provider_success' && event.providerId === 'duckduckgo' ) ).toBe(true); } finally { @@ -994,8 +986,7 @@ global.fetch = async (url) => { ).toBe(true); expect( traceEvents.some( - (event) => - event.event === 'websearch_provider_success' && event.providerId === 'exa' + (event) => event.event === 'websearch_provider_success' && event.providerId === 'exa' ) ).toBe(true); } finally { diff --git a/tests/unit/utils/websearch/status.test.ts b/tests/unit/utils/websearch/status.test.ts index a24c76a6..f625c2a2 100644 --- a/tests/unit/utils/websearch/status.test.ts +++ b/tests/unit/utils/websearch/status.test.ts @@ -2,6 +2,7 @@ import { describe, expect, it, spyOn } from 'bun:test'; import { mkdirSync, mkdtempSync, rmSync, writeFileSync } from 'node:fs'; import { tmpdir } from 'node:os'; import { join } from 'node:path'; +import * as agyCli from '../../../../src/utils/websearch/agy'; import * as geminiCli from '../../../../src/utils/websearch/gemini-cli'; import * as grokCli from '../../../../src/utils/websearch/grok-cli'; import * as opencodeCli from '../../../../src/utils/websearch/opencode-cli'; @@ -13,7 +14,9 @@ import { } from '../../../../src/utils/websearch/status'; import type { WebSearchCliInfo } from '../../../../src/utils/websearch/types'; -function provider(overrides: Partial & Pick): WebSearchCliInfo { +function provider( + overrides: Partial & Pick +): WebSearchCliInfo { return { id: overrides.id, kind: overrides.kind ?? 'backend', @@ -151,6 +154,10 @@ describe('websearch readiness', () => { installed: false, version: null, } as any); + const agyStatusSpy = spyOn(agyCli, 'getAgyCliStatus').mockReturnValue({ + installed: false, + version: null, + } as any); try { const providers = getWebSearchCliProviders(); @@ -166,6 +173,7 @@ describe('websearch readiness', () => { geminiAuthSpy.mockRestore(); grokStatusSpy.mockRestore(); opencodeStatusSpy.mockRestore(); + agyStatusSpy.mockRestore(); } }); @@ -205,6 +213,10 @@ describe('websearch readiness', () => { installed: false, version: null, } as any); + const agyStatusSpy = spyOn(agyCli, 'getAgyCliStatus').mockReturnValue({ + installed: false, + version: null, + } as any); try { const providers = getWebSearchCliProviders(); @@ -220,6 +232,72 @@ describe('websearch readiness', () => { geminiAuthSpy.mockRestore(); grokStatusSpy.mockRestore(); opencodeStatusSpy.mockRestore(); + agyStatusSpy.mockRestore(); + } + }); + + it('exposes Antigravity (agy) as a recommended CLI provider when enabled and installed', () => { + const getConfigSpy = spyOn(unifiedConfigLoader, 'getWebSearchConfig').mockReturnValue({ + enabled: true, + providers: { + exa: { enabled: false, max_results: 5 }, + tavily: { enabled: false, max_results: 5 }, + brave: { enabled: false, max_results: 5 }, + searxng: { enabled: false, url: '', max_results: 5 }, + duckduckgo: { enabled: false, max_results: 5 }, + agy: { enabled: true, model: 'gemini-2.5-flash', timeout: 90 }, + gemini: { enabled: false }, + grok: { enabled: false }, + opencode: { enabled: false }, + }, + } as any); + const apiKeySpy = spyOn(providerSecrets, 'getWebSearchApiKeyStates').mockReturnValue({ + exa: { envVar: 'EXA_API_KEY', configured: false, available: false, source: 'none' }, + tavily: { envVar: 'TAVILY_API_KEY', configured: false, available: false, source: 'none' }, + brave: { envVar: 'BRAVE_API_KEY', configured: false, available: false, source: 'none' }, + }); + const agyStatusSpy = spyOn(agyCli, 'getAgyCliStatus').mockReturnValue({ + installed: true, + version: '1.0.13', + } as any); + const geminiStatusSpy = spyOn(geminiCli, 'getGeminiCliStatus').mockReturnValue({ + installed: false, + version: null, + } as any); + const geminiAuthSpy = spyOn(geminiCli, 'isGeminiAuthenticated').mockReturnValue(false); + const grokStatusSpy = spyOn(grokCli, 'getGrokCliStatus').mockReturnValue({ + installed: false, + version: null, + } as any); + const opencodeStatusSpy = spyOn(opencodeCli, 'getOpenCodeCliStatus').mockReturnValue({ + installed: false, + version: null, + } as any); + + try { + const providers = getWebSearchCliProviders(); + const agy = providers.find((entry) => entry.id === 'agy'); + + expect(agy?.name).toBe('Antigravity CLI'); + expect(agy?.kind).toBe('legacy-cli'); + expect(agy?.command).toBe('agy'); + expect(agy?.enabled).toBe(true); + expect(agy?.available).toBe(true); + expect(agy?.requiresApiKey).toBe(false); + expect(agy?.installCommand).toContain('antigravity.google'); + expect(agy?.detail).toContain('1.0.13'); + + const readiness = buildWebSearchReadiness(true, providers); + expect(readiness.readiness).toBe('ready'); + expect(readiness.message).toContain('Antigravity CLI'); + } finally { + getConfigSpy.mockRestore(); + apiKeySpy.mockRestore(); + agyStatusSpy.mockRestore(); + geminiStatusSpy.mockRestore(); + geminiAuthSpy.mockRestore(); + grokStatusSpy.mockRestore(); + opencodeStatusSpy.mockRestore(); } }); @@ -293,6 +371,10 @@ describe('websearch readiness', () => { installed: false, version: null, } as any); + const agyStatusSpy = spyOn(agyCli, 'getAgyCliStatus').mockReturnValue({ + installed: false, + version: null, + } as any); try { const providers = getWebSearchCliProviders(); @@ -313,6 +395,7 @@ describe('websearch readiness', () => { geminiAuthSpy.mockRestore(); grokStatusSpy.mockRestore(); opencodeStatusSpy.mockRestore(); + agyStatusSpy.mockRestore(); if (originalCcsHome === undefined) { delete process.env.CCS_HOME; From a44978c9c8928a4d952992493aa4eb22687a0ccf Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 27 Jun 2026 14:05:27 +0000 Subject: [PATCH 28/52] chore(release): 8.6.1-dev.6 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index ea04d730..8b05109a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@kaitranntt/ccs", - "version": "8.6.1-dev.5", + "version": "8.6.1-dev.6", "description": "Claude Code Switch - Instant profile switching between Claude, GLM, Kimi, and more", "keywords": [ "cli", From 97e16d1d1c1a6027fce95fcacbb76d27d96a5eb7 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 27 Jun 2026 14:27:47 +0000 Subject: [PATCH 29/52] chore(release): 8.6.1-dev.7 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 8b05109a..af7d85bd 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@kaitranntt/ccs", - "version": "8.6.1-dev.6", + "version": "8.6.1-dev.7", "description": "Claude Code Switch - Instant profile switching between Claude, GLM, Kimi, and more", "keywords": [ "cli", From 454e1555a7b1d50f77d77c2fd7b6690930e52260 Mon Sep 17 00:00:00 2001 From: Tam Nhu Tran Date: Sat, 27 Jun 2026 10:54:50 -0400 Subject: [PATCH 30/52] fix(cliproxy): clean up launch-settings overlay on synchronous spawn failure The runtime settings overlay cleanup was registered only on the child 'exit'/'error' events, which run after spawn() returns. A synchronous spawn() throw (e.g. invalid arg/env) propagated out of launchClaude before those handlers were wired, orphaning the secret-bearing 0600 overlay file in os.tmpdir(). Wrap the spawn in try/catch and run the idempotent cleanup before rethrowing. --- .../__tests__/claude-launcher.test.ts | 26 ++++++++++++++ src/cliproxy/executor/claude-launcher.ts | 36 +++++++++++-------- 2 files changed, 48 insertions(+), 14 deletions(-) diff --git a/src/cliproxy/executor/__tests__/claude-launcher.test.ts b/src/cliproxy/executor/__tests__/claude-launcher.test.ts index e6111e50..3e587ca9 100644 --- a/src/cliproxy/executor/__tests__/claude-launcher.test.ts +++ b/src/cliproxy/executor/__tests__/claude-launcher.test.ts @@ -87,6 +87,16 @@ mock.module('../../quota/quota-manager', () => ({ stopQuotaMonitor: jest.fn(), })); +const mockCleanupLaunchSettings = jest.fn(); +const mockPrepareLaunchSettings = jest.fn().mockReturnValue({ + settingsPath: '/tmp/fake-settings-overlay.json', + cleanup: mockCleanupLaunchSettings, +}); + +mock.module('../launch-settings', () => ({ + prepareLaunchSettings: mockPrepareLaunchSettings, +})); + // ── Subject under test ──────────────────────────────────────────────────────── import { launchClaude } from '../claude-launcher'; @@ -131,6 +141,12 @@ describe('launchClaude', () => { mockSpawn.mockClear(); mockSetupCleanupHandlers.mockClear(); mockEscapeShellArg.mockClear(); + mockCleanupLaunchSettings.mockClear(); + mockPrepareLaunchSettings.mockClear(); + mockPrepareLaunchSettings.mockReturnValue({ + settingsPath: '/tmp/fake-settings-overlay.json', + cleanup: mockCleanupLaunchSettings, + }); }); it('calls spawn with claudeCli and includes --settings arg', async () => { @@ -189,6 +205,16 @@ describe('launchClaude', () => { expect(result).toBe(mockSpawnResult); }); + it('calls cleanup and rethrows when spawn throws synchronously', async () => { + const spawnErr = new Error('ERR_INVALID_ARG_VALUE'); + mockSpawn.mockImplementationOnce(() => { + throw spawnErr; + }); + + await expect(launchClaude(baseContext())).rejects.toThrow('ERR_INVALID_ARG_VALUE'); + expect(mockCleanupLaunchSettings).toHaveBeenCalledTimes(1); + }); + describe('Windows shell escaping', () => { const originalPlatform = process.platform; diff --git a/src/cliproxy/executor/claude-launcher.ts b/src/cliproxy/executor/claude-launcher.ts index ca539971..ff189bbf 100644 --- a/src/cliproxy/executor/claude-launcher.ts +++ b/src/cliproxy/executor/claude-launcher.ts @@ -144,20 +144,28 @@ export async function launchClaude(context: ClaudeLaunchContext): Promise Date: Sat, 27 Jun 2026 10:55:00 -0400 Subject: [PATCH 31/52] test(cliproxy): cover launch-settings corrupt-JSON fallback and overlay permissions Add a test for the env-only overlay fallback when the persisted settings file is corrupt (the existing 'missing file' test skips JSON.parse), and a POSIX-gated assertion that the overlay is written 0600 inside a 0700 dir, since it carries an auth token. --- .../__tests__/launch-settings.test.ts | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/src/cliproxy/executor/__tests__/launch-settings.test.ts b/src/cliproxy/executor/__tests__/launch-settings.test.ts index 6865cedf..b08d27bc 100644 --- a/src/cliproxy/executor/__tests__/launch-settings.test.ts +++ b/src/cliproxy/executor/__tests__/launch-settings.test.ts @@ -91,6 +91,17 @@ describe('buildLaunchSettingsOverlay', () => { 'http://127.0.0.1:50118/api/provider/codex' ); }); + + it('falls back to an env-only overlay when the settings file is corrupt', () => { + fs.writeFileSync(settingsPath, '{ not valid json'); + const { settings, changed } = buildLaunchSettingsOverlay(settingsPath, { + ANTHROPIC_BASE_URL: 'http://127.0.0.1:50118/api/provider/codex', + } as NodeJS.ProcessEnv); + expect(changed).toBe(true); + expect((settings.env as Record).ANTHROPIC_BASE_URL).toBe( + 'http://127.0.0.1:50118/api/provider/codex' + ); + }); }); describe('prepareLaunchSettings', () => { @@ -127,4 +138,20 @@ describe('prepareLaunchSettings', () => { result.cleanup(); expect(fs.existsSync(settingsPath)).toBe(true); }); + + it('writes the overlay with 0600 file mode inside a 0700 dir (POSIX)', () => { + if (process.platform === 'win32') return; // chmod modes are not enforced on Windows + writePersisted({ + env: { ANTHROPIC_BASE_URL: 'http://127.0.0.1:8317/api/provider/codex' }, + }); + const result = prepareLaunchSettings(settingsPath, { + ANTHROPIC_BASE_URL: 'http://127.0.0.1:50118/api/provider/codex', + } as NodeJS.ProcessEnv); + try { + expect(fs.statSync(result.settingsPath).mode & 0o777).toBe(0o600); + expect(fs.statSync(path.dirname(result.settingsPath)).mode & 0o777).toBe(0o700); + } finally { + result.cleanup(); + } + }); }); From 13e23e0fc5b55c10af16e00a82535ca8c71a161f Mon Sep 17 00:00:00 2001 From: Tam Nhu Tran Date: Sat, 27 Jun 2026 10:55:11 -0400 Subject: [PATCH 32/52] docs(cliproxy): document strip-vs-overlay launch-settings siblings and model-key superset Cross-reference the two helpers that solve the persisted-settings-env override (overlay in launch-settings.ts, strip in openai-compat-launch-settings.ts) and mark shell-executor's ANTHROPIC_MODEL_ENV_KEYS as the intentional superset distinct from the 4-key list in extended-context-utils. See issue #1609. --- src/cliproxy/executor/launch-settings.ts | 7 +++++++ src/utils/openai-compat-launch-settings.ts | 6 ++++++ src/utils/shell-executor.ts | 4 ++++ 3 files changed, 17 insertions(+) diff --git a/src/cliproxy/executor/launch-settings.ts b/src/cliproxy/executor/launch-settings.ts index c834e1ae..5e33bf7e 100644 --- a/src/cliproxy/executor/launch-settings.ts +++ b/src/cliproxy/executor/launch-settings.ts @@ -27,6 +27,13 @@ import * as path from 'path'; import { ANTHROPIC_MODEL_ENV_KEYS, ANTHROPIC_ROUTING_ENV_KEYS } from '../../utils/shell-executor'; +// SIBLING HELPER: src/utils/openai-compat-launch-settings.ts solves the same +// "persisted --settings env clobbers runtime routing env" problem by STRIPPING +// routing keys (process env wins by absence). This module instead OVERLAYS the +// resolved values (settings wins by overwrite). The two differ intentionally: +// strip vs overlay diverge when a key is present on disk but absent from the +// process env. Unifying them needs an explicit force-absent API — see issue #1609. + /** * Environment keys that control provider routing/model selection and are read * by Claude from the settings `env` block. These must reflect the resolved diff --git a/src/utils/openai-compat-launch-settings.ts b/src/utils/openai-compat-launch-settings.ts index bfb0887d..1f305419 100644 --- a/src/utils/openai-compat-launch-settings.ts +++ b/src/utils/openai-compat-launch-settings.ts @@ -10,6 +10,12 @@ export interface OpenAICompatLaunchSettings { cleanup: () => void; } +// SIBLING HELPER: src/cliproxy/executor/launch-settings.ts (prepareLaunchSettings) +// solves the same problem by OVERLAYING resolved routing values instead of +// stripping them. This strip-based variant is required where callers deliberately +// delete a routing key (e.g. ANTHROPIC_API_KEY in settings-flow) and need it +// ABSENT from the launch settings. Do not unify without an explicit force-absent +// key list — see issue #1609. export function createOpenAICompatLaunchSettings( settingsPath: string, settings: Settings diff --git a/src/utils/shell-executor.ts b/src/utils/shell-executor.ts index 58d459f6..68a9f1f6 100644 --- a/src/utils/shell-executor.ts +++ b/src/utils/shell-executor.ts @@ -40,6 +40,10 @@ export const ANTHROPIC_ROUTING_ENV_KEYS = [ 'ANTHROPIC_API_KEY', ]; const ANTHROPIC_ROUTING_ENV_KEY_SET = new Set(ANTHROPIC_ROUTING_ENV_KEYS); +// NOTE: This is the intentional routing-overlay SUPERSET of model env keys +// (includes ANTHROPIC_SMALL_FAST_MODEL). A separate 4-key `ANTHROPIC_MODEL_ENV_KEYS` +// exists in src/shared/extended-context-utils.ts (re-exported as MODEL_ENV_VAR_KEYS). +// The two are NOT interchangeable — import deliberately by purpose. See issue #1609. export const ANTHROPIC_MODEL_ENV_KEYS = [ 'ANTHROPIC_MODEL', 'ANTHROPIC_DEFAULT_OPUS_MODEL', From 173a72f50cdfbf3c50f77b1e44bab2ece91ac43e Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 28 Jun 2026 20:23:18 +0000 Subject: [PATCH 33/52] chore(release): 8.6.1-dev.8 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index af7d85bd..26f97720 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@kaitranntt/ccs", - "version": "8.6.1-dev.7", + "version": "8.6.1-dev.8", "description": "Claude Code Switch - Instant profile switching between Claude, GLM, Kimi, and more", "keywords": [ "cli", From 37d2bae001cc52753696c575d86a4889591d8789 Mon Sep 17 00:00:00 2001 From: Sergey Galuza Date: Mon, 29 Jun 2026 13:26:16 +0200 Subject: [PATCH 34/52] test(glmt): assert thinking signature is a non-empty opaque string Add two contract tests on the public proxy path createAnthropicProxyResponse: JSON and SSE. Anthropic requires a thinking block's signature to be a non-empty opaque string, but ccs currently fabricates the signature as an object via generateThinkingSignature(), which breaks the stream against reasoning backends. Built [OnSteroids](https://onsteroids.ai) --- .../sse-stream-transformer.test.ts | 104 ++++++++++++++++++ 1 file changed, 104 insertions(+) diff --git a/tests/unit/proxy/transformers/sse-stream-transformer.test.ts b/tests/unit/proxy/transformers/sse-stream-transformer.test.ts index 9faebabc..61d99223 100644 --- a/tests/unit/proxy/transformers/sse-stream-transformer.test.ts +++ b/tests/unit/proxy/transformers/sse-stream-transformer.test.ts @@ -67,4 +67,108 @@ describe('proxy SSE stream transformer', () => { expect(body).toContain('"type":"text_delta"'); expect(body).toContain('event: message_stop'); }); + + // Helper: extract all JSON `data:` payloads from an Anthropic SSE response body, + // skipping the `[DONE]` sentinel and any non-JSON lines. + function parseSseDataEvents(text: string): Record[] { + const events: Record[] = []; + for (const line of text.split('\n')) { + if (!line.startsWith('data: ')) continue; + const raw = line.slice('data: '.length).trim(); + if (raw.length === 0 || raw === '[DONE]') continue; + try { + events.push(JSON.parse(raw) as Record); + } catch { + // skip non-JSON data lines + } + } + return events; + } + + it('emits thinking.signature as a non-empty string — JSON (Anthropic contract)', async () => { + // Anthropic requires a thinking block's `signature` to be a non-empty opaque + // STRING. This test asserts that contract; it is intentionally RED on the + // current code, which fabricates the signature as an object via + // generateThinkingSignature(). After the fix it becomes a regression guard. + const response = new Response( + JSON.stringify({ + id: 'chatcmpl_sig_json', + model: 'gpt-5.x', + choices: [ + { + index: 0, + message: { + role: 'assistant', + content: 'Final answer.', + reasoning_content: 'Step-by-step reasoning before answering.', + }, + finish_reason: 'stop', + }, + ], + usage: { prompt_tokens: 3, completion_tokens: 2, total_tokens: 5 }, + }), + { + status: 200, + headers: { 'Content-Type': 'application/json' }, + } + ); + + const transformed = await createAnthropicProxyResponse(response); + const body = (await transformed.json()) as { + content: Array<{ type: string; signature?: unknown }>; + }; + + const thinkingBlock = body.content.find((block) => block.type === 'thinking'); + expect( + thinkingBlock, + `no thinking block found; content = ${JSON.stringify(body.content)}` + ).toBeDefined(); + + const signature = thinkingBlock?.signature; + expect( + typeof signature, + `expected non-empty string signature, received ${JSON.stringify(signature)}` + ).toBe('string'); + expect((signature as string).length).toBeGreaterThan(0); + }); + + it('emits thinking signature as a non-empty string — SSE (Anthropic contract)', async () => { + // Streaming counterpart of the contract test above: mirrors the failed + // prod path where reasoning_content streams in and ccs closes the thinking + // block with a fabricated signature via createSignatureDeltaEvent(). + const openAISse = [ + 'data: {"id":"chatcmpl_sig_stream","object":"chat.completion.chunk","created":1,"model":"gpt-5.x","choices":[{"index":0,"delta":{"role":"assistant","reasoning_content":"Planning the verification step by step."},"finish_reason":null}]}\n\n', + 'data: {"id":"chatcmpl_sig_stream","object":"chat.completion.chunk","created":1,"model":"gpt-5.x","choices":[{"index":0,"delta":{"content":"Final answer."},"finish_reason":null}]}\n\n', + 'data: {"id":"chatcmpl_sig_stream","object":"chat.completion.chunk","created":1,"model":"gpt-5.x","choices":[{"index":0,"delta":{},"finish_reason":"stop"}],"usage":{"prompt_tokens":3,"completion_tokens":2,"total_tokens":5}}\n\n', + 'data: [DONE]\n\n', + ].join(''); + + const transformed = await createAnthropicProxyResponse( + new Response(openAISse, { + status: 200, + headers: { 'Content-Type': 'text/event-stream' }, + }) + ); + + const body = await transformed.text(); + const payloads = parseSseDataEvents(body); + + // ccs emits the thinking signature through createSignatureDeltaEvent, + // which produces a content_block_delta with delta.type === 'thinking_signature_delta'. + const signatureDelta = payloads.find((payload) => { + const delta = (payload as { delta?: { type?: string } }).delta; + return delta?.type === 'thinking_signature_delta'; + }); + expect( + signatureDelta, + `no thinking_signature_delta event in stream; payloads = ${JSON.stringify(payloads)}` + ).toBeDefined(); + + const signature = (signatureDelta as { delta?: { signature?: unknown } }).delta?.signature; + // Anthropic contract: streaming thinking signature MUST be a non-empty opaque string. + expect( + typeof signature, + `expected non-empty string signature, received ${JSON.stringify(signature)}` + ).toBe('string'); + }); }); From cbcdb6ba626ee5438502ea32eb9505735fa0963a Mon Sep 17 00:00:00 2001 From: Sergey Galuza Date: Mon, 29 Jun 2026 13:27:09 +0200 Subject: [PATCH 35/52] fix(glmt): emit thinking signature as opaque string generateThinkingSignature() returned an object ({type, hash, length, timestamp}) but Anthropic requires a thinking block's `signature` to be a non-empty opaque STRING. The object made the thinking block invalid, breaking the stream against reasoning backends and surfacing as a false 502 "did not respond within 600s". Return a deterministic base64 token instead (no Date.now()), and narrow ThinkingSignature to a string alias so existing imports stay intact. The signature is only ever assigned, never read as an object, so consumers are unaffected. Update the existing unit test to the corrected string contract. Built [OnSteroids](https://onsteroids.ai) --- src/glmt/pipeline/response-builder.ts | 13 ++++++------- src/glmt/pipeline/types.ts | 11 ++++------- tests/unit/glmt/glmt-transformer.test.js | 13 +++++++------ 3 files changed, 17 insertions(+), 20 deletions(-) diff --git a/src/glmt/pipeline/response-builder.ts b/src/glmt/pipeline/response-builder.ts index 50862703..6426e288 100644 --- a/src/glmt/pipeline/response-builder.ts +++ b/src/glmt/pipeline/response-builder.ts @@ -177,17 +177,16 @@ export class ResponseBuilder { /** * Generate thinking signature for Claude Code UI + * + * Anthropic requires a thinking block's `signature` to be a non-empty + * opaque STRING. Emit a deterministic base64 token (no Date.now()) so the + * thinking block stays valid against reasoning backends; returning an object + * here produces an invalid thinking block and breaks the stream. */ generateThinkingSignature(thinking: string): ThinkingSignature { - // Generate signature hash const hash = crypto.createHash('sha256').update(thinking).digest('hex').substring(0, 16); - return { - type: 'thinking_signature', - hash: hash, - length: thinking.length, - timestamp: Date.now(), - }; + return Buffer.from(`ccs-thinking:${hash}:${thinking.length}`).toString('base64'); } /** diff --git a/src/glmt/pipeline/types.ts b/src/glmt/pipeline/types.ts index 27f68749..e18629ca 100644 --- a/src/glmt/pipeline/types.ts +++ b/src/glmt/pipeline/types.ts @@ -7,7 +7,7 @@ export interface ContentBlock { type: string; text?: string; thinking?: string; - signature?: ThinkingSignature; + signature?: string; id?: string; name?: string; input?: Record; @@ -95,12 +95,9 @@ export interface TransformResult { error?: string; } -export interface ThinkingSignature { - type: string; - hash: string; - length: number; - timestamp: number; -} +// Anthropic contract: a thinking block's signature is a non-empty opaque +// string. Kept as a named alias so existing imports stay intact. +export type ThinkingSignature = string; // OpenAI response types export interface OpenAIChoice { diff --git a/tests/unit/glmt/glmt-transformer.test.js b/tests/unit/glmt/glmt-transformer.test.js index 05950ba7..930fbb7e 100644 --- a/tests/unit/glmt/glmt-transformer.test.js +++ b/tests/unit/glmt/glmt-transformer.test.js @@ -161,16 +161,17 @@ describe('GlmtTransformer', () => { }); describe('Thinking signature', () => { - it('generates thinking signature', () => { + it('generates thinking signature as a non-empty opaque string', () => { const transformer = new GlmtTransformer(); const thinking = 'This is my reasoning process'; const signature = transformer.generateThinkingSignature(thinking); - assert.strictEqual(signature.type, 'thinking_signature'); - assert.ok(signature.hash); - assert.strictEqual(signature.hash.length, 16); - assert.strictEqual(signature.length, thinking.length); - assert.ok(signature.timestamp); + // Anthropic contract: a thinking block's signature is a non-empty + // opaque string, not an object. + assert.strictEqual(typeof signature, 'string'); + assert.ok(signature.length > 0); + // Deterministic: same reasoning yields the same signature (no Date.now()). + assert.strictEqual(signature, transformer.generateThinkingSignature(thinking)); }); }); From 045fc932857bdc9c52fa7573ec1bbd81a951b6a0 Mon Sep 17 00:00:00 2001 From: Tam Nhu Tran Date: Mon, 29 Jun 2026 12:58:38 -0400 Subject: [PATCH 36/52] test(glmt): align thinking signature coverage --- .../unit/glmt/test-thinking-signature-race.js | 18 +++++++++--------- .../sse-stream-transformer.test.ts | 1 + 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/tests/unit/glmt/test-thinking-signature-race.js b/tests/unit/glmt/test-thinking-signature-race.js index c9a7b40f..1537ceb5 100755 --- a/tests/unit/glmt/test-thinking-signature-race.js +++ b/tests/unit/glmt/test-thinking-signature-race.js @@ -12,6 +12,9 @@ const GlmtTransformer = require('../../../dist/glmt/glmt-transformer').default; const { DeltaAccumulator } = require('../../../dist/glmt/delta-accumulator'); +const { ResponseBuilder } = require('../../../dist/glmt/pipeline'); + +const responseBuilder = new ResponseBuilder(false); // Test runner class TestRunner { @@ -59,7 +62,6 @@ function assert(condition, message) { // Test 1: Signature not generated for empty thinking block runner.test('Signature not generated for empty thinking block', () => { - const transformer = new GlmtTransformer({ verbose: false }); const accumulator = new DeltaAccumulator({ thinking: true }); // Start thinking block but add no content @@ -67,7 +69,7 @@ runner.test('Signature not generated for empty thinking block', () => { const block = accumulator.startBlock('thinking'); // Try to generate signature for empty block - const signatureEvent = transformer._createSignatureDeltaEvent(block); + const signatureEvent = responseBuilder.createSignatureDeltaEvent(block); // Should return null for empty block (fix for race condition) assert(signatureEvent === null, 'Expected null for empty thinking block'); @@ -75,7 +77,6 @@ runner.test('Signature not generated for empty thinking block', () => { // Test 2: Signature generated correctly after content accumulated runner.test('Signature generated correctly after content accumulated', () => { - const transformer = new GlmtTransformer({ verbose: false }); const accumulator = new DeltaAccumulator({ thinking: true }); // Start thinking block and add content @@ -85,15 +86,14 @@ runner.test('Signature generated correctly after content accumulated', () => { accumulator.addDelta('Second thinking delta.'); // Generate signature - const signatureEvent = transformer._createSignatureDeltaEvent(block); + const signatureEvent = responseBuilder.createSignatureDeltaEvent(block); // Should return valid signature event assert(signatureEvent !== null, 'Expected signature event for non-empty block'); assert(signatureEvent.event === 'content_block_delta', 'Expected content_block_delta event'); assert(signatureEvent.data.delta.type === 'thinking_signature_delta', 'Expected thinking_signature_delta type'); + assert(typeof signatureEvent.data.delta.signature === 'string', 'Expected signature string'); assert(signatureEvent.data.delta.signature.length > 0, 'Expected signature length > 0'); - assert(signatureEvent.data.delta.signature.hash, 'Expected signature hash'); - assert(signatureEvent.data.delta.signature.hash.length === 16, 'Expected 16-char hash'); }); // Test 3: transformDelta skips signature for empty thinking blocks @@ -179,8 +179,8 @@ runner.test('transformDelta generates signature for non-empty thinking blocks', // Verify signature structure const sig = signatureEvents[0].data.delta.signature; - assert(sig.hash && sig.hash.length === 16, 'Expected valid 16-char hash'); - assert(sig.length > 0, 'Expected content length > 0'); + assert(typeof sig === 'string', 'Expected signature string'); + assert(sig.length > 0, 'Expected signature length > 0'); }); // Test 5: Loop detection handles empty thinking blocks @@ -217,7 +217,7 @@ runner.test('Loop detection handles empty thinking blocks without signature', () const currentBlock = accumulator.getCurrentBlock(); if (currentBlock && currentBlock.type === 'thinking') { - const signatureEvent = transformer._createSignatureDeltaEvent(currentBlock); + const signatureEvent = responseBuilder.createSignatureDeltaEvent(currentBlock); // Should return null for empty block assert(signatureEvent === null, 'Expected null signature for empty thinking block during loop detection'); } diff --git a/tests/unit/proxy/transformers/sse-stream-transformer.test.ts b/tests/unit/proxy/transformers/sse-stream-transformer.test.ts index 61d99223..6a946d78 100644 --- a/tests/unit/proxy/transformers/sse-stream-transformer.test.ts +++ b/tests/unit/proxy/transformers/sse-stream-transformer.test.ts @@ -170,5 +170,6 @@ describe('proxy SSE stream transformer', () => { typeof signature, `expected non-empty string signature, received ${JSON.stringify(signature)}` ).toBe('string'); + expect((signature as string).length).toBeGreaterThan(0); }); }); From 2282e15a99b22ab634092c11c0ab484e362c463f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 29 Jun 2026 17:09:02 +0000 Subject: [PATCH 37/52] chore(release): 8.6.1-dev.9 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 26f97720..c1446981 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@kaitranntt/ccs", - "version": "8.6.1-dev.8", + "version": "8.6.1-dev.9", "description": "Claude Code Switch - Instant profile switching between Claude, GLM, Kimi, and more", "keywords": [ "cli", From 23b2c3d6afd3170920bc00435f5013b7464e2795 Mon Sep 17 00:00:00 2001 From: "Kai (Tam Nhu) Tran" <61256810+kaitranntt@users.noreply.github.com> Date: Tue, 30 Jun 2026 12:21:33 -0400 Subject: [PATCH 38/52] fix: restrict bar release workflow to main (#1612) --- .github/workflows/bar-release.yml | 6 +++++- docs/ccs-bar.md | 4 ++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/.github/workflows/bar-release.yml b/.github/workflows/bar-release.yml index 9e2e2e09..78dc3b2a 100644 --- a/.github/workflows/bar-release.yml +++ b/.github/workflows/bar-release.yml @@ -5,7 +5,7 @@ name: Bar Release # # Scoped deliberately so it NEVER burdens other PRs or CI: # - Triggers ONLY on push to `main` that changes `macos-bar/**`, or a manual -# run. Regular PRs, dev pushes, and non-bar changes do not start it. +# run from `main`. Regular PRs, dev pushes, and non-bar changes do not start it. # - Runs ONLY on the dedicated self-hosted macOS runner (label `ccs-bar` on # kai-minim4). The Linux CI runners never match this job, and this job never # competes for them. @@ -32,10 +32,14 @@ concurrency: jobs: release: name: Build and publish CCS Bar + if: github.ref == 'refs/heads/main' runs-on: [self-hosted, macos, ccs-bar] steps: - name: Checkout uses: actions/checkout@v4 + with: + ref: main + persist-credentials: false - name: Read bar version id: ver diff --git a/docs/ccs-bar.md b/docs/ccs-bar.md index cc9e12b3..3226d6ec 100644 --- a/docs/ccs-bar.md +++ b/docs/ccs-bar.md @@ -126,10 +126,10 @@ The app ships as a single floating GitHub release asset, `CCS-Bar.app.zip` under The `Bar Release` workflow (`.github/workflows/bar-release.yml`) builds and publishes the asset automatically. It is scoped tightly so it never affects other PRs or CI: -- It runs only on a push to `main` that touches `macos-bar/**`, or a manual run from the Actions tab (`workflow_dispatch`). +- It runs only on a push to `main` that touches `macos-bar/**`, or a manual run from the Actions tab (`workflow_dispatch`) when the selected ref is `main`. - It runs only on the dedicated self-hosted macOS runner (label `ccs-bar`); the Linux CI runners never pick it up and it never competes for them. -So bar changes reach users when they land on `main` (the stable cadence). To cut a release without a code change, or to re-publish, trigger the workflow manually. +So bar changes reach users when they land on `main` (the stable cadence). To cut a release without a code change, or to re-publish, trigger the workflow manually with `main` selected as the workflow ref. ### Manual fallback From 58a90d3633ddac8a932ef71833f9c53723dda7d5 Mon Sep 17 00:00:00 2001 From: "Kai (Tam Nhu) Tran" <61256810+kaitranntt@users.noreply.github.com> Date: Tue, 30 Jun 2026 12:21:41 -0400 Subject: [PATCH 39/52] fix(ci): include compose parity in CI Gate (#1614) --- .github/workflows/ci.yml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e4315973..ecd4a563 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -163,7 +163,7 @@ jobs: # Single always-reporting status that branch protection requires. # - # The validate/build/test jobs are gated to trusted author associations so + # The validate/build/test/compose-parity jobs are gated to trusted author associations so # untrusted fork code never executes on the self-hosted runners. A job skipped # by a job-level `if` reports no status, so requiring those job names directly # leaves fork PRs stuck on "Expected - waiting for status to be reported" @@ -176,7 +176,7 @@ jobs: # third-party code and is safe on the self-hosted runner. ci-gate: if: always() - needs: [validate, build, test] + needs: [validate, build, test, compose-parity] runs-on: [self-hosted, linux, x64] name: CI Gate steps: @@ -185,9 +185,10 @@ jobs: VALIDATE: ${{ needs.validate.result }} BUILD: ${{ needs.build.result }} TEST: ${{ needs.test.result }} + COMPOSE_PARITY: ${{ needs.compose-parity.result }} run: | - echo "validate=$VALIDATE build=$BUILD test=$TEST" - for result in "$VALIDATE" "$BUILD" "$TEST"; do + echo "validate=$VALIDATE build=$BUILD test=$TEST compose-parity=$COMPOSE_PARITY" + for result in "$VALIDATE" "$BUILD" "$TEST" "$COMPOSE_PARITY"; do if [ "$result" = "failure" ] || [ "$result" = "cancelled" ]; then echo "[X] A required CI job did not pass (result: $result)" exit 1 From 0e097f3301634ef0527f91f673a3a2de70efa49f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 30 Jun 2026 16:25:42 +0000 Subject: [PATCH 40/52] chore(release): 8.6.1-dev.10 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index c1446981..38055242 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@kaitranntt/ccs", - "version": "8.6.1-dev.9", + "version": "8.6.1-dev.10", "description": "Claude Code Switch - Instant profile switching between Claude, GLM, Kimi, and more", "keywords": [ "cli", From 3f1dce30bc1a9743e3baab2cc479e32762d68cb5 Mon Sep 17 00:00:00 2001 From: "Kai (Tam Nhu) Tran" <61256810+kaitranntt@users.noreply.github.com> Date: Tue, 30 Jun 2026 12:33:46 -0400 Subject: [PATCH 41/52] fix: close bar launch case bypass (#1613) --- .../Sources/CCSBarApp/BarServerLauncher.swift | 17 ++++++++++++----- src/web-server/routes/route-helpers.ts | 13 ++++++++----- tests/unit/web-server/route-helpers.test.ts | 8 ++++++++ 3 files changed, 28 insertions(+), 10 deletions(-) diff --git a/macos-bar/Sources/CCSBarApp/BarServerLauncher.swift b/macos-bar/Sources/CCSBarApp/BarServerLauncher.swift index 7d5a7c64..b4e680d7 100644 --- a/macos-bar/Sources/CCSBarApp/BarServerLauncher.swift +++ b/macos-bar/Sources/CCSBarApp/BarServerLauncher.swift @@ -105,14 +105,21 @@ struct BarServerLauncher: Sendable { } private func isUnderCcsDir(_ path: String) -> Bool { - let ccsPath = URL(fileURLWithPath: home) - .appendingPathComponent(".ccs") - .standardizedFileURL - .path - let targetPath = URL(fileURLWithPath: path).standardizedFileURL.path + let ccsPath = pathForComparison( + URL(fileURLWithPath: home) + .appendingPathComponent(".ccs") + ) + let targetPath = pathForComparison(URL(fileURLWithPath: path)) return targetPath == ccsPath || targetPath.hasPrefix(ccsPath + "/") } + private func pathForComparison(_ url: URL) -> String { + url.standardizedFileURL + .resolvingSymlinksInPath() + .path + .lowercased() + } + private func isAbsolutePath(_ path: String) -> Bool { path.hasPrefix("/") } diff --git a/src/web-server/routes/route-helpers.ts b/src/web-server/routes/route-helpers.ts index e8758538..7e5ace2d 100644 --- a/src/web-server/routes/route-helpers.ts +++ b/src/web-server/routes/route-helpers.ts @@ -377,7 +377,9 @@ export function updateSettingsFile( */ function normalizePathForComparison(filePath: string): string { const normalized = path.resolve(path.normalize(filePath)); - return process.platform === 'win32' ? normalized.toLowerCase() : normalized; + return process.platform === 'win32' || process.platform === 'darwin' + ? normalized.toLowerCase() + : normalized; } function isPathWithin(basePath: string, targetPath: string): boolean { @@ -437,7 +439,8 @@ export function validateFilePath(filePath: string): { // Block access to sensitive subdirectories const relativePath = path.relative(ccsDir, normalizedPath); const pathSegments = relativePath.split(path.sep).filter(Boolean); - if (pathSegments.includes('.git') || pathSegments.includes('node_modules')) { + const comparisonSegments = pathSegments.map((segment) => segment.toLowerCase()); + if (comparisonSegments.includes('.git') || comparisonSegments.includes('node_modules')) { return { valid: false, readonly: false, error: 'Access to this path is not allowed' }; } @@ -445,9 +448,9 @@ export function validateFilePath(filePath: string): { // It must only be written by trusted bar install/launch code paths, not the // generic dashboard file API. if ( - pathSegments.length === 2 && - pathSegments[0] === 'bar' && - pathSegments[1] === 'launch.json' + comparisonSegments.length === 2 && + comparisonSegments[0] === 'bar' && + comparisonSegments[1] === 'launch.json' ) { return { valid: false, readonly: false, error: 'Access to this path is not allowed' }; } diff --git a/tests/unit/web-server/route-helpers.test.ts b/tests/unit/web-server/route-helpers.test.ts index eaab554e..581d1ee9 100644 --- a/tests/unit/web-server/route-helpers.test.ts +++ b/tests/unit/web-server/route-helpers.test.ts @@ -50,6 +50,14 @@ describe('validateFilePath', () => { expect(result.readonly).toBe(false); }); + test('rejects case variants of the macOS bar launch descriptor', () => { + const filePath = path.join(tempDir, '.ccs', 'BAR', 'LAUNCH.JSON'); + const result = validateFilePath(filePath); + + expect(result.valid).toBe(false); + expect(result.readonly).toBe(false); + }); + test('still allows other writes inside the bar directory', () => { const filePath = path.join(tempDir, '.ccs', 'bar', 'serve.log'); const result = validateFilePath(filePath); From 4283c4665c7812a7eda343b31f6ff3359f8294b8 Mon Sep 17 00:00:00 2001 From: "Kai (Tam Nhu) Tran" <61256810+kaitranntt@users.noreply.github.com> Date: Tue, 30 Jun 2026 12:37:41 -0400 Subject: [PATCH 42/52] fix(cursor): propagate daemon auth token (#1616) * fix(cursor): propagate daemon auth token * fix(cursor): align daemon auth token propagation --- src/commands/cursor-command.ts | 2 + src/cursor/cursor-daemon-entry.ts | 65 +++++++--- src/cursor/cursor-daemon.ts | 23 ++-- src/cursor/cursor-runtime-probe.ts | 3 +- src/web-server/routes/cursor-routes.ts | 2 + .../cursor-daemon-lifecycle.test.ts | 10 ++ tests/unit/cursor/cursor-daemon.test.ts | 111 +++++++++++++----- 7 files changed, 164 insertions(+), 52 deletions(-) diff --git a/src/commands/cursor-command.ts b/src/commands/cursor-command.ts index 7510f4a7..85e2488f 100644 --- a/src/commands/cursor-command.ts +++ b/src/commands/cursor-command.ts @@ -18,6 +18,7 @@ import { } from '../cursor'; import { DEFAULT_CURSOR_CONFIG } from '../config/unified-config-types'; +import { getCursorDaemonToken } from '../cursor/cursor-daemon-auth'; import { renderCursorHelp, renderCursorModels, @@ -253,6 +254,7 @@ async function handleStart(): Promise { const result = await startDaemon({ port: cursorConfig.port, ghost_mode: cursorConfig.ghost_mode, + daemon_token: getCursorDaemonToken(), }); if (result.success) { diff --git a/src/cursor/cursor-daemon-entry.ts b/src/cursor/cursor-daemon-entry.ts index a22a2a0a..db633f0f 100644 --- a/src/cursor/cursor-daemon-entry.ts +++ b/src/cursor/cursor-daemon-entry.ts @@ -22,6 +22,7 @@ import { translateAnthropicRequest } from './cursor-anthropic-translator'; import { checkAuthStatus } from './cursor-auth'; import { getModelsForDaemon, resolveCursorRequestModel } from './cursor-models'; import type { CursorTool } from './cursor-protobuf-schema'; +import { ValidationError } from '../errors/error-types'; interface DaemonRuntimeOptions { port: number; @@ -132,22 +133,46 @@ function readJsonBody(req: http.IncomingMessage): Promise { }); } +function headerMatchesToken(header: string | string[] | undefined, expectedToken: string): boolean { + if (typeof header === 'string') { + return header === expectedToken; + } + + if (Array.isArray(header)) { + return header.includes(expectedToken); + } + + return false; +} + +function authorizationMatchesToken( + header: string | string[] | undefined, + expectedToken: string +): boolean { + const values = Array.isArray(header) ? header : header ? [header] : []; + return values.some((value) => { + const trimmed = value.trim(); + if (trimmed === expectedToken) { + return true; + } + + const match = /^Bearer\s+(.+)$/i.exec(trimmed); + return match?.[1] === expectedToken; + }); +} + function hasValidDaemonToken(req: http.IncomingMessage): boolean { const expectedToken = process.env.CCS_CURSOR_DAEMON_TOKEN; if (!expectedToken) { return false; } - const provided = req.headers['x-ccs-cursor-token']; - if (typeof provided === 'string') { - return provided === expectedToken; - } - - if (Array.isArray(provided)) { - return provided.includes(expectedToken); - } - - return false; + return ( + headerMatchesToken(req.headers['x-ccs-cursor-token'], expectedToken) || + headerMatchesToken(req.headers['anthropic-auth-token'], expectedToken) || + headerMatchesToken(req.headers['x-api-key'], expectedToken) || + authorizationMatchesToken(req.headers.authorization, expectedToken) + ); } function resolveInboundRequestId(req: http.IncomingMessage): string | undefined { @@ -180,17 +205,20 @@ function withCursorDaemonRequestContext( function normalizeMessages(raw: unknown): NormalizedOpenAIMessage[] { if (!Array.isArray(raw)) { - throw new Error('messages must be an array'); + throw new ValidationError('messages must be an array', 'messages'); } return raw.map((message, index) => { if (typeof message !== 'object' || message === null) { - throw new Error(`messages[${index}] must be an object`); + throw new ValidationError(`messages[${index}] must be an object`, `messages[${index}]`); } const m = message as Record; if (typeof m.role !== 'string' || !m.role) { - throw new Error(`messages[${index}].role must be a non-empty string`); + throw new ValidationError( + `messages[${index}].role must be a non-empty string`, + `messages[${index}].role` + ); } const content = m.content; @@ -200,7 +228,10 @@ function normalizeMessages(raw: unknown): NormalizedOpenAIMessage[] { typeof content !== 'string' && !Array.isArray(content) ) { - throw new Error(`messages[${index}].content must be string, array, or null`); + throw new ValidationError( + `messages[${index}].content must be string, array, or null`, + `messages[${index}].content` + ); } return { @@ -364,7 +395,11 @@ export function startCursorDaemonServer(options: DaemonRuntimeOptions): http.Ser } if (isAnthropicRoute) { - const expectedToken = (process.env.ANTHROPIC_AUTH_TOKEN || 'cursor-managed').trim(); + const expectedToken = ( + process.env.ANTHROPIC_AUTH_TOKEN || + process.env.CCS_CURSOR_DAEMON_TOKEN || + 'cursor-managed' + ).trim(); const requestToken = getAnthropicRequestToken(req.headers); if (!expectedToken || requestToken !== expectedToken) { await pipeWebResponseToNode( diff --git a/src/cursor/cursor-daemon.ts b/src/cursor/cursor-daemon.ts index 41b41f3c..0d46da81 100644 --- a/src/cursor/cursor-daemon.ts +++ b/src/cursor/cursor-daemon.ts @@ -12,6 +12,7 @@ import * as path from 'path'; import * as http from 'http'; import type { CursorDaemonConfig, CursorDaemonStatus } from './types'; import { getPidFromFile, writePidToFile, removePidFile } from './cursor-daemon-pid'; +import { getCursorDaemonToken } from './cursor-daemon-auth'; import { verifyDaemonOwnership } from './daemon-process-ownership'; import { createLogger, forwardRequestIdEnv } from '../services/logging'; export { getPidFromFile, writePidToFile, removePidFile } from './cursor-daemon-pid'; @@ -53,6 +54,15 @@ async function resolveDaemonEntrypoint(): Promise { return null; } +export function buildDaemonProcessEnv(daemonToken: string): NodeJS.ProcessEnv { + return { + ...process.env, + ...forwardRequestIdEnv(), + CCS_CURSOR_DAEMON_TOKEN: daemonToken, + ANTHROPIC_AUTH_TOKEN: daemonToken, + }; +} + /** * Check if cursor daemon is running on the specified port. * Uses 127.0.0.1 instead of localhost for more reliable local connections. @@ -108,8 +118,11 @@ export async function isDaemonRunning(port: number, daemonToken?: string): Promi /** * Get daemon status. */ -export async function getDaemonStatus(port: number): Promise { - const running = await isDaemonRunning(port); +export async function getDaemonStatus( + port: number, + daemonToken = getCursorDaemonToken() +): Promise { + const running = await isDaemonRunning(port, daemonToken); const pid = getPidFromFile(); return { @@ -224,11 +237,7 @@ export async function startDaemon( proc = spawn(process.execPath, args, { stdio: 'ignore', detached: true, - env: { - ...process.env, - ...forwardRequestIdEnv(), - CCS_CURSOR_DAEMON_TOKEN: effectiveConfig.daemon_token || '', - }, + env: buildDaemonProcessEnv(effectiveConfig.daemon_token || ''), }); // Unref so parent can exit diff --git a/src/cursor/cursor-runtime-probe.ts b/src/cursor/cursor-runtime-probe.ts index 65b8feb5..c21bddbe 100644 --- a/src/cursor/cursor-runtime-probe.ts +++ b/src/cursor/cursor-runtime-probe.ts @@ -143,6 +143,7 @@ export async function probeCursorRuntime(config: CursorConfig): Promise const result = await startDaemon({ port: cursorConfig.port, ghost_mode: cursorConfig.ghost_mode, + daemon_token: getCursorDaemonToken(), }); const { daemonToken: _redactedDaemonToken, ...publicResult } = result; void _redactedDaemonToken; diff --git a/tests/integration/cursor-daemon-lifecycle.test.ts b/tests/integration/cursor-daemon-lifecycle.test.ts index acb21499..b4b724e6 100644 --- a/tests/integration/cursor-daemon-lifecycle.test.ts +++ b/tests/integration/cursor-daemon-lifecycle.test.ts @@ -77,6 +77,16 @@ describe('cursor daemon lifecycle smoke', () => { expect(await isDaemonRunning(port, daemonToken)).toBe(true); + const standardAuthHealthResponse = await fetch(`http://127.0.0.1:${port}/health`, { + headers: { 'x-api-key': daemonToken }, + }); + expect(standardAuthHealthResponse.status).toBe(200); + + const bearerAuthHealthResponse = await fetch(`http://127.0.0.1:${port}/health`, { + headers: { Authorization: `Bearer ${daemonToken}` }, + }); + expect(bearerAuthHealthResponse.status).toBe(200); + const modelsResponse = await fetch(`http://127.0.0.1:${port}/v1/models`); expect(modelsResponse.status).toBe(200); const modelsJson = (await modelsResponse.json()) as { object?: string; data?: unknown[] }; diff --git a/tests/unit/cursor/cursor-daemon.test.ts b/tests/unit/cursor/cursor-daemon.test.ts index 3724bc39..d8fc2482 100644 --- a/tests/unit/cursor/cursor-daemon.test.ts +++ b/tests/unit/cursor/cursor-daemon.test.ts @@ -16,14 +16,13 @@ import { getDaemonStatus, stopDaemon, startDaemon, + buildDaemonProcessEnv, } from '../../../src/cursor/cursor-daemon'; import { getCcsDir } from '../../../src/utils/config-manager'; import { handleCursorCommand } from '../../../src/commands/cursor-command'; -import { - renderCursorHelp, - renderCursorStatus, -} from '../../../src/commands/cursor-command-display'; +import { renderCursorHelp, renderCursorStatus } from '../../../src/commands/cursor-command-display'; import { loadCredentials } from '../../../src/cursor/cursor-auth'; +import { getCursorDaemonToken } from '../../../src/cursor/cursor-daemon-auth'; import { DEFAULT_CURSOR_CONFIG } from '../../../src/config/unified-config-types'; // Test isolation @@ -148,6 +147,26 @@ describe('removePidFile', () => { }); }); +describe('buildDaemonProcessEnv', () => { + it('uses the daemon token for both daemon and Anthropic caller auth', () => { + const originalAnthropicToken = process.env.ANTHROPIC_AUTH_TOKEN; + process.env.ANTHROPIC_AUTH_TOKEN = 'inherited-stale-token'; + + try { + const env = buildDaemonProcessEnv('generated-daemon-token'); + + expect(env.CCS_CURSOR_DAEMON_TOKEN).toBe('generated-daemon-token'); + expect(env.ANTHROPIC_AUTH_TOKEN).toBe('generated-daemon-token'); + } finally { + if (originalAnthropicToken !== undefined) { + process.env.ANTHROPIC_AUTH_TOKEN = originalAnthropicToken; + } else { + delete process.env.ANTHROPIC_AUTH_TOKEN; + } + } + }); +}); + describe('startDaemon', () => { it('rejects invalid port (0)', async () => { const result = await startDaemon({ port: 0 }); @@ -197,7 +216,7 @@ describe('isDaemonRunning', () => { throw new Error('Unable to resolve test server port'); } - const result = await isDaemonRunning(address.port, "bad-token"); + const result = await isDaemonRunning(address.port, 'bad-token'); expect(result).toBe(false); } finally { await new Promise((resolve) => { @@ -222,6 +241,41 @@ describe('getDaemonStatus', () => { expect(status.port).toBe(19999); expect(status.pid).toBeUndefined(); }); + + it('uses the persisted daemon token when checking status', async () => { + const daemonToken = getCursorDaemonToken(); + const server = http.createServer((req, res) => { + if (req.url === '/health' && req.headers['x-ccs-cursor-token'] === daemonToken) { + res.writeHead(200, { 'Content-Type': 'application/json' }); + res.end(JSON.stringify({ ok: true, service: 'cursor-daemon' })); + return; + } + + res.writeHead(401, { 'Content-Type': 'application/json' }); + res.end(JSON.stringify({ error: 'Unauthorized' })); + }); + + await new Promise((resolve) => { + server.listen(0, '127.0.0.1', () => resolve()); + }); + + try { + const address = server.address(); + if (!address || typeof address === 'string') { + throw new Error('Unable to resolve test server port'); + } + + writePidToFile(12345); + const status = await getDaemonStatus(address.port); + expect(status.running).toBe(true); + expect(status.port).toBe(address.port); + expect(status.pid).toBe(12345); + } finally { + await new Promise((resolve) => { + server.close(() => resolve()); + }); + } + }); }); describe('stopDaemon', () => { @@ -275,17 +329,18 @@ describe('stopDaemon', () => { }); it('refuses to stop when daemon ownership cannot be verified', async () => { - const killSpy = spyOn(process, 'kill').mockImplementation( - ((pid: number, signal?: NodeJS.Signals | number) => { - if (pid === process.pid && signal === 0) { - const err = new Error('EPERM') as NodeJS.ErrnoException; - err.code = 'EPERM'; - throw err; - } + const killSpy = spyOn(process, 'kill').mockImplementation((( + pid: number, + signal?: NodeJS.Signals | number + ) => { + if (pid === process.pid && signal === 0) { + const err = new Error('EPERM') as NodeJS.ErrnoException; + err.code = 'EPERM'; + throw err; + } - return true; - }) as typeof process.kill - ); + return true; + }) as typeof process.kill); writePidToFile(process.pid); @@ -388,11 +443,13 @@ describe('renderCursorStatus', () => { true ); expect( - logs.some((line) => line.includes('Chat route: http://127.0.0.1:20129/v1/chat/completions')) - ).toBe(true); - expect( - logs.some((line) => line.includes('Anthropic base: http://127.0.0.1:20129')) + logs.some((line) => + line.includes('Chat route: http://127.0.0.1:20129/v1/chat/completions') + ) ).toBe(true); + expect(logs.some((line) => line.includes('Anthropic base: http://127.0.0.1:20129'))).toBe( + true + ); expect( logs.some((line) => line.includes(`Raw settings: ${getCcsDir()}/cursor.settings.json`)) ).toBe(true); @@ -460,9 +517,9 @@ describe('renderCursorStatus', () => { { running: true, port: 20129, pid: 1234 } ); - expect(logs.some((line) => line.includes('Raw settings: ~/.ccs/cursor.settings.json'))).toBe( - true - ); + expect( + logs.some((line) => line.includes('Raw settings: ~/.ccs/cursor.settings.json')) + ).toBe(true); } finally { if (originalCcsHomeValue !== undefined) { process.env.CCS_HOME = originalCcsHomeValue; @@ -496,15 +553,11 @@ describe('renderCursorHelp', () => { line.includes('Deprecated: `ccs cursor` now belongs to the CLIProxy Cursor provider.') ) ).toBe(true); - expect(logs.some((line) => line.includes('probe Run a live authenticated runtime probe'))).toBe( - true - ); expect( - logs.some((line) => line.includes('ccs cursor --auth')) - ).toBe(true); - expect( - logs.some((line) => line.includes('ccs legacy cursor [claude args]')) + logs.some((line) => line.includes('probe Run a live authenticated runtime probe')) ).toBe(true); + expect(logs.some((line) => line.includes('ccs cursor --auth'))).toBe(true); + expect(logs.some((line) => line.includes('ccs legacy cursor [claude args]'))).toBe(true); } finally { console.log = originalLog; } From bb7c3a4037db6ff14a9511e6638b039437d7d68b Mon Sep 17 00:00:00 2001 From: "Kai (Tam Nhu) Tran" <61256810+kaitranntt@users.noreply.github.com> Date: Tue, 30 Jun 2026 12:40:07 -0400 Subject: [PATCH 43/52] fix(cliproxy): mask control panel login key (#1617) --- .../proxy-lifecycle-control-panel.test.ts | 22 +++++++++++-------- src/commands/cliproxy/help-subcommand.ts | 2 +- .../cliproxy/proxy-lifecycle-subcommand.ts | 14 +++++++----- 3 files changed, 22 insertions(+), 16 deletions(-) diff --git a/src/commands/cliproxy/__tests__/proxy-lifecycle-control-panel.test.ts b/src/commands/cliproxy/__tests__/proxy-lifecycle-control-panel.test.ts index 48aa735b..c799c30b 100644 --- a/src/commands/cliproxy/__tests__/proxy-lifecycle-control-panel.test.ts +++ b/src/commands/cliproxy/__tests__/proxy-lifecycle-control-panel.test.ts @@ -1,12 +1,12 @@ /** * Tests for printControlPanelAccess: the Control Panel (API Management Center) - * URL + login-key surface shown by `ccs cliproxy status` / `start`. + * URL + masked login-key hint shown by `ccs cliproxy status` / `start`. * * Why this matters: - * - The Control Panel login screen only asks for a "Management Key" with no - * hint. Users who don't know the default (`ccs`) cannot get in. This surface - * is the fix, so it must print the panel URL on the active port and the - * EFFECTIVE key (default `ccs`, or the user's custom management_secret). + * - Routine lifecycle output is commonly pasted into logs and support tickets, + * so it must not disclose the raw management key. The helper should print + * the panel URL, a masked key for orientation, and the explicit command users + * can run when they intentionally need the full key. */ import * as fs from 'fs'; import * as os from 'os'; @@ -56,12 +56,14 @@ describe('printControlPanelAccess', () => { } }); - it('prints the panel URL on the given port and the default key (ccs)', () => { + it('prints the panel URL on the given port and masks the default key', () => { printControlPanelAccess(8317); const out = lines.join('\n'); expect(out).toContain('http://127.0.0.1:8317/management.html'); expect(out).toContain('Panel login key:'); - expect(out).toContain('ccs'); + expect(out).toContain('Panel login key: ****'); + expect(out).toContain('ccs tokens --show'); + expect(out).not.toContain('Panel login key: ccs'); }); it('uses the active port in the URL', () => { @@ -69,7 +71,7 @@ describe('printControlPanelAccess', () => { expect(lines.join('\n')).toContain('http://127.0.0.1:9000/management.html'); }); - it('prints a custom management_secret when configured', () => { + it('masks a custom management_secret when configured', () => { mutateConfig((config) => { if (!config.cliproxy) { config.cliproxy = {}; @@ -84,6 +86,8 @@ describe('printControlPanelAccess', () => { printControlPanelAccess(8317); const out = lines.join('\n'); expect(out).toContain('Panel login key:'); - expect(out).toContain('my-custom-key'); + expect(out).toContain('my-c...-key'); + expect(out).toContain('ccs tokens --show'); + expect(out).not.toContain('my-custom-key'); }); }); diff --git a/src/commands/cliproxy/help-subcommand.ts b/src/commands/cliproxy/help-subcommand.ts index 9fb96480..87296a0c 100644 --- a/src/commands/cliproxy/help-subcommand.ts +++ b/src/commands/cliproxy/help-subcommand.ts @@ -91,7 +91,7 @@ export async function showHelp(): Promise { ['restart', 'Restart CLIProxy instance'], [ 'status [--verbose]', - 'Show CLIProxy status + Control Panel URL and login key (--verbose adds uptime)', + 'Show CLIProxy status + Control Panel URL and masked login key (--verbose adds uptime)', ], ['stop', 'Stop running CLIProxy instance'], ['doctor | diag', 'Quota diagnostics and shared project detection'], diff --git a/src/commands/cliproxy/proxy-lifecycle-subcommand.ts b/src/commands/cliproxy/proxy-lifecycle-subcommand.ts index 6794260d..92133e0a 100644 --- a/src/commands/cliproxy/proxy-lifecycle-subcommand.ts +++ b/src/commands/cliproxy/proxy-lifecycle-subcommand.ts @@ -12,22 +12,24 @@ import { initUI, header, color, dim, ok, warn, info } from '../../utils/ui'; import { getProxyStatus, startProxy, stopProxy } from '../../cliproxy/services'; import { detectRunningProxy } from '../../cliproxy/proxy/proxy-detector'; import { resolveLifecyclePort } from '../../cliproxy/config/port-manager'; -import { getEffectiveManagementSecret } from '../../cliproxy/auth/auth-token-manager'; +import { getEffectiveManagementSecret, maskToken } from '../../cliproxy/auth/auth-token-manager'; /** * Print how to reach the local CLIProxy Control Panel (a.k.a. API Management - * Center) and the key needed to log in. + * Center) without exposing the management secret in routine output. * * The panel is served by CLIProxy at `/management.html` on the proxy port and - * its login is gated by the management secret (default `ccs`). The login screen - * only asks for a "Management Key" with no hint, so users frequently cannot get - * in. Surfacing the URL + resolved key here removes that guesswork. + * its login is gated by the management secret (default `ccs`). Keep the resolved + * key masked here because `start` and `status` output is commonly shared in + * support tickets and logs. Users can explicitly reveal tokens with + * `ccs tokens --show` when they need the raw value. */ export function printControlPanelAccess(port: number): void { const secret = getEffectiveManagementSecret(); console.log(''); console.log(` Control Panel: http://127.0.0.1:${port}/management.html`); - console.log(` Panel login key: ${secret}`); + console.log(` Panel login key: ${maskToken(secret)}`); + console.log(dim(' To show the full key: ccs tokens --show')); } export async function handleStart(verbose = false): Promise { From b47d502376b9e449a08e639816fb8f086e6e9831 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 30 Jun 2026 16:48:07 +0000 Subject: [PATCH 44/52] chore(release): 8.6.1-dev.11 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 38055242..9477727d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@kaitranntt/ccs", - "version": "8.6.1-dev.10", + "version": "8.6.1-dev.11", "description": "Claude Code Switch - Instant profile switching between Claude, GLM, Kimi, and more", "keywords": [ "cli", From 2f1453e39785889ba82cb4183dd0a31f32349f45 Mon Sep 17 00:00:00 2001 From: "Kai (Tam Nhu) Tran" <61256810+kaitranntt@users.noreply.github.com> Date: Tue, 30 Jun 2026 12:53:03 -0400 Subject: [PATCH 45/52] fix(auth): honor legacy unified default profiles (#1619) --- src/auth/profile-detector.ts | 8 +++++ tests/unit/auth/profile-detector.test.ts | 45 ++++++++++++++++++++++++ 2 files changed, 53 insertions(+) diff --git a/src/auth/profile-detector.ts b/src/auth/profile-detector.ts index 8fa35701..48948a8e 100644 --- a/src/auth/profile-detector.ts +++ b/src/auth/profile-detector.ts @@ -427,6 +427,14 @@ class ProfileDetector { // Check if account-based default exists (legacy) const profiles = this.readProfiles(); + if (unifiedConfig?.default && profiles.profiles[unifiedConfig.default]) { + return { + type: 'account', + name: unifiedConfig.default, + profile: profiles.profiles[unifiedConfig.default], + }; + } + if (profiles.default && profiles.profiles[profiles.default]) { return { type: 'account', diff --git a/tests/unit/auth/profile-detector.test.ts b/tests/unit/auth/profile-detector.test.ts index 7bdb344a..8769615b 100644 --- a/tests/unit/auth/profile-detector.test.ts +++ b/tests/unit/auth/profile-detector.test.ts @@ -190,6 +190,51 @@ describe('ProfileDetector', () => { } }); + it('should resolve a unified default that points to a legacy-only account profile', () => { + const originalCcsHome = process.env.CCS_HOME; + process.env.CCS_HOME = tempDir; + const ccsDir = path.join(tempDir, '.ccs'); + fs.mkdirSync(ccsDir, { recursive: true }); + fs.writeFileSync( + path.join(ccsDir, 'profiles.json'), + JSON.stringify({ + default: 'oldDefault', + profiles: { + oldDefault: { created: '2025-01-01', last_used: '2025-01-02' }, + legacyOnly: { created: '2025-02-01', last_used: '2025-02-02' }, + }, + }) + ); + + const mockUnifiedConfig = { + version: 2, + default: 'legacyOnly', + profiles: {}, + accounts: {}, + }; + + const isUnifiedModeSpy = spyOn(unifiedConfigLoader, 'isUnifiedMode').mockReturnValue(true); + const loadUnifiedConfigSpy = spyOn(unifiedConfigLoader, 'loadUnifiedConfig').mockReturnValue( + mockUnifiedConfig as any + ); + + try { + const localDetector = new ProfileDetector(); + const result = localDetector.resolveDefaultProfileResult(); + expect(result.type).toBe('account'); + expect(result.name).toBe('legacyOnly'); + expect(result.profile).toEqual({ created: '2025-02-01', last_used: '2025-02-02' }); + } finally { + isUnifiedModeSpy.mockRestore(); + loadUnifiedConfigSpy.mockRestore(); + if (originalCcsHome !== undefined) { + process.env.CCS_HOME = originalCcsHome; + } else { + delete process.env.CCS_HOME; + } + } + }); + it('should return null for unknown profile (throws error)', () => { const isUnifiedModeSpy = spyOn(unifiedConfigLoader, 'isUnifiedMode').mockReturnValue(false); // Mock readConfig/readProfiles to return empty From 396e01ab6fbaddf74949a1777dc34a0ebbdc9677 Mon Sep 17 00:00:00 2001 From: "Kai (Tam Nhu) Tran" <61256810+kaitranntt@users.noreply.github.com> Date: Tue, 30 Jun 2026 12:53:35 -0400 Subject: [PATCH 46/52] fix: bound bar raw socket probes (#1618) --- src/commands/bar/bar-server-probe.ts | 12 +- src/commands/bar/launch-subcommand.ts | 21 +++- tests/unit/commands/bar-command.test.ts | 155 ++++++++++++++++++++++-- 3 files changed, 178 insertions(+), 10 deletions(-) diff --git a/src/commands/bar/bar-server-probe.ts b/src/commands/bar/bar-server-probe.ts index 2d489d9d..c2a4cf42 100644 --- a/src/commands/bar/bar-server-probe.ts +++ b/src/commands/bar/bar-server-probe.ts @@ -10,6 +10,9 @@ import * as fs from 'fs'; import * as path from 'path'; import { BAR_AUTH_TOKEN_HEADER, getOrCreateBarAuthToken } from '../../utils/bar-auth-token'; +const PROBE_TIMEOUT_MS = 1500; +const MAX_PROBE_RESPONSE_BYTES = 8192; + export interface DashboardInfo { port: number; baseUrl: string; @@ -65,9 +68,12 @@ export async function defaultFindRunningServer(ccsDir: string): Promise { let rawResponse = ''; let settled = false; + const absoluteDeadline = setTimeout(() => finish(), PROBE_TIMEOUT_MS); + absoluteDeadline.unref?.(); const finish = (statusCode = 0, headerSection = '') => { if (settled) return; settled = true; + clearTimeout(absoluteDeadline); // Tear down the socket the moment we have enough to decide. The summary // endpoint only needs the status code for liveness, so a non-CCS // loopback service that streams forever cannot block discovery from @@ -98,9 +104,13 @@ export async function defaultFindRunningServer(ccsDir: string): Promise finish()); + socket.setTimeout(PROBE_TIMEOUT_MS, () => finish()); socket.on('data', (chunk) => { rawResponse += chunk.toString('utf8'); + if (rawResponse.length > MAX_PROBE_RESPONSE_BYTES) { + finish(); + return; + } const statusMatch = rawResponse.match(/^HTTP\/\d(?:\.\d)?\s+(\d{3})/); if (statusMatch) { const code = Number(statusMatch[1]); diff --git a/src/commands/bar/launch-subcommand.ts b/src/commands/bar/launch-subcommand.ts index 4b22a182..7a0e3248 100644 --- a/src/commands/bar/launch-subcommand.ts +++ b/src/commands/bar/launch-subcommand.ts @@ -31,6 +31,9 @@ import { } from './bar-server-probe'; import type { DashboardInfo as _DashboardInfo } from './bar-server-probe'; +const BAR_PROBE_TIMEOUT_MS = 1500; +const MAX_BAR_PROBE_RESPONSE_BYTES = 8192; + // --------------------------------------------------------------------------- // Re-exports — backward compat for tests that import from this module. // resolveBarPort + defaultFindRunningServer are canonical in bar-server-probe.ts; @@ -129,6 +132,13 @@ export class BarServerAuthRequiredError extends Error { } } +export class BarServerTimeoutError extends Error { + constructor(baseUrl: string, timeoutSeconds: number) { + super(`CCS Bar server did not become live at ${baseUrl} within ${timeoutSeconds}s`); + this.name = 'BarServerTimeoutError'; + } +} + function isAuthRequiredStatus(statusCode: number): boolean { return statusCode === 401 || statusCode === 403; } @@ -145,9 +155,12 @@ export async function defaultWaitForServerLive(baseUrl: string): Promise { return new Promise((resolve) => { let rawResponse = ''; let settled = false; + const absoluteDeadline = setTimeout(() => finish(), BAR_PROBE_TIMEOUT_MS); + absoluteDeadline.unref?.(); const finish = (statusCode: number | null = null, headerSection = '') => { if (settled) return; settled = true; + clearTimeout(absoluteDeadline); socket.destroy(); if (statusCode === 200) { const echoMatch = headerSection.match( @@ -169,9 +182,13 @@ export async function defaultWaitForServerLive(baseUrl: string): Promise { ); } ); - socket.setTimeout(1500, () => finish()); + socket.setTimeout(BAR_PROBE_TIMEOUT_MS, () => finish()); socket.on('data', (chunk) => { rawResponse += chunk.toString('utf8'); + if (rawResponse.length > MAX_BAR_PROBE_RESPONSE_BYTES) { + finish(); + return; + } const statusMatch = rawResponse.match(/^HTTP\/\d(?:\.\d)?\s+(\d{3})/); if (statusMatch) { const code = Number(statusMatch[1]); @@ -204,7 +221,7 @@ export async function defaultWaitForServerLive(baseUrl: string): Promise { await new Promise((resolve) => setTimeout(resolve, INTERVAL_MS)); } - throw new Error(`CCS Bar server did not become live at ${baseUrl} within ${TIMEOUT_MS / 1000}s`); + throw new BarServerTimeoutError(baseUrl, TIMEOUT_MS / 1000); } function defaultWriteLaunchDescriptor(jsonPath: string, descriptor: LaunchJson): void { diff --git a/tests/unit/commands/bar-command.test.ts b/tests/unit/commands/bar-command.test.ts index f94de371..fbc5e2cc 100644 --- a/tests/unit/commands/bar-command.test.ts +++ b/tests/unit/commands/bar-command.test.ts @@ -3162,12 +3162,7 @@ describe('defaultFindRunningServer: socket-level 401/403 classifies authRequired setImmediate(() => { onConnect(); for (const cb of listeners.data ?? []) { - cb( - Buffer.from( - `HTTP/1.1 200 OK\r\nx-ccs-bar-token: ${token}\r\n\r\n`, - 'utf8' - ) - ); + cb(Buffer.from(`HTTP/1.1 200 OK\r\nx-ccs-bar-token: ${token}\r\n\r\n`, 'utf8')); } }); return socket; @@ -3387,7 +3382,9 @@ describe('defaultFindRunningServer: streaming lower-priority probes', () => { // exactly what the production CCS Bar server does, and is the property // that prevents a rogue reflector from passing the check. for (const cb of data) { - cb(Buffer.from(`HTTP/1.1 200 OK\r\nx-ccs-bar-token: ${expectedToken}\r\n\r\n`, 'utf8')); + cb( + Buffer.from(`HTTP/1.1 200 OK\r\nx-ccs-bar-token: ${expectedToken}\r\n\r\n`, 'utf8') + ); } } // Port 3000 never emits a status line: simulate an endlessly @@ -3424,6 +3421,150 @@ describe('defaultFindRunningServer: streaming lower-priority probes', () => { }); }); +describe('bar raw socket probes: absolute deadline for malformed streaming peers', () => { + it('continues past a higher-priority trickling non-HTTP response and returns a lower-priority hit', async () => { + const ccsDir = path.join(tempHome, '.ccs'); + fs.mkdirSync(ccsDir, { recursive: true }); + fs.writeFileSync( + path.join(ccsDir, 'bar.json'), + JSON.stringify({ port: 41236, baseUrl: 'http://127.0.0.1:41236', authMode: 'loopback' }) + ); + + const { getOrCreateBarAuthToken: getToken } = await import( + `../../../src/utils/bar-auth-token?test=${Date.now()}-deadline-find` + ); + const expectedToken = getToken(ccsDir); + + mock.module('net', () => ({ + connect: (opts: { host: string; port: number }, onConnect: () => void): unknown => { + const listeners: Record void>> = {}; + let interval: ReturnType | undefined; + const socket = { + on(event: string, cb: (arg?: unknown) => void) { + (listeners[event] ??= []).push(cb); + return socket; + }, + setTimeout() { + return socket; + }, + write() { + return true; + }, + destroy() { + if (interval) clearInterval(interval); + return socket; + }, + }; + + setImmediate(() => { + onConnect(); + if (opts.port === 41236) { + interval = setInterval(() => { + for (const cb of listeners.data ?? []) cb(Buffer.from('x', 'utf8')); + }, 25); + interval.unref?.(); + return; + } + if (opts.port === 3000) { + for (const cb of listeners.data ?? []) { + cb( + Buffer.from(`HTTP/1.1 200 OK\r\nx-ccs-bar-token: ${expectedToken}\r\n\r\n`, 'utf8') + ); + } + } + }); + + return socket; + }, + })); + + moduleSeq++; + const { defaultFindRunningServer } = (await import( + `../../../src/commands/bar/bar-server-probe?test=${Date.now()}-${moduleSeq}` + )) as { + defaultFindRunningServer: ( + ccsDir: string + ) => Promise<{ port: number; baseUrl: string; authRequired?: boolean } | null>; + }; + + const result = await Promise.race([ + defaultFindRunningServer(ccsDir), + new Promise<'timeout'>((resolve) => setTimeout(() => resolve('timeout'), 2500)), + ]); + + expect(result).toEqual({ + port: 3000, + baseUrl: 'http://127.0.0.1:3000', + authRequired: false, + }); + }); + + it('does not let a single launch wait probe outlive the outer deadline', async () => { + const ccsDir = path.join(tempHome, '.ccs'); + fs.mkdirSync(ccsDir, { recursive: true }); + + const realDateNow = Date.now; + let dateCall = 0; + Date.now = () => { + dateCall++; + return dateCall < 4 ? 0 : 10_001; + }; + + mock.module('net', () => ({ + connect: (_opts: { host: string; port: number }, onConnect: () => void): unknown => { + const listeners: Record void>> = {}; + let interval: ReturnType | undefined; + const socket = { + on(event: string, cb: (arg?: unknown) => void) { + (listeners[event] ??= []).push(cb); + return socket; + }, + setTimeout() { + return socket; + }, + write() { + return true; + }, + destroy() { + if (interval) clearInterval(interval); + return socket; + }, + }; + + setImmediate(() => { + onConnect(); + interval = setInterval(() => { + for (const cb of listeners.data ?? []) cb(Buffer.from('x', 'utf8')); + }, 25); + interval.unref?.(); + }); + + return socket; + }, + })); + + try { + moduleSeq++; + const { defaultWaitForServerLive } = (await import( + `../../../src/commands/bar/launch-subcommand?test=${Date.now()}-${moduleSeq}` + )) as { + defaultWaitForServerLive: (baseUrl: string) => Promise; + }; + + const result = await Promise.race([ + defaultWaitForServerLive('http://127.0.0.1:9996') + .then(() => 'resolved' as const) + .catch(() => 'rejected' as const), + new Promise<'timeout'>((resolve) => setTimeout(() => resolve('timeout'), 2500)), + ]); + + expect(result).toBe('rejected'); + } finally { + Date.now = realDateNow; + } + }); +}); + // --------------------------------------------------------------------------- // GH-1588 — `--await-quit` waits for a running app to exit, then swaps + relaunches // --------------------------------------------------------------------------- From 0527e276b12033a3718e1330120d020e9843188a Mon Sep 17 00:00:00 2001 From: "Kai (Tam Nhu) Tran" <61256810+kaitranntt@users.noreply.github.com> Date: Tue, 30 Jun 2026 12:59:54 -0400 Subject: [PATCH 47/52] fix: skip paused codex accounts in bar refresh (#1620) --- .../usage/native-quota-collector.ts | 52 ++++- .../web-server/native-quota-collector.test.ts | 199 ++++++++++++++++++ 2 files changed, 248 insertions(+), 3 deletions(-) diff --git a/src/web-server/usage/native-quota-collector.ts b/src/web-server/usage/native-quota-collector.ts index 8c9e8188..78a59d58 100644 --- a/src/web-server/usage/native-quota-collector.ts +++ b/src/web-server/usage/native-quota-collector.ts @@ -43,7 +43,7 @@ import { } from './claude-native-credentials'; import { fetchClaudeQuotaWithToken } from '../../cliproxy/quota/quota-fetcher-claude'; import { fetchCodexQuota } from '../../cliproxy/quota/quota-fetcher-codex'; -import { getDefaultAccount } from '../../cliproxy/accounts/query'; +import { getDefaultAccount, getProviderAccounts } from '../../cliproxy/accounts/query'; import { getCodexLocalQuota, type CodexLocalQuota } from './codex-local-quota-collector'; import type { ClaudeQuotaResult, CodexQuotaResult } from '../../cliproxy/quota/quota-types'; import type { BarSummaryRow, QuotaWindowDetail } from '../routes/bar-routes'; @@ -618,10 +618,17 @@ function listCodexProfilesFromDisk(): string[] { const { CodexProfileRegistry } = require('../../codex-auth/codex-profile-registry') as { CodexProfileRegistry: new () => { listProfiles: () => string[]; + getProfile: (name: string) => { email?: string; account_id?: string }; }; }; const registry = new CodexProfileRegistry(); - const profiles = registry.listProfiles(); + const pausedIdentities = getPausedCodexAccountIdentities(); + const profiles = registry + .listProfiles() + .filter( + (name) => + !codexProfileMatchesPausedAccount(name, registry.getProfile(name), pausedIdentities) + ); // Add the bare ~/.codex/auth.json (the default `ccsx` invocation) as the // DEFAULT_PROFILE account when it exists. It is the "default way of running", // distinct from named `ccsx ` profiles. @@ -643,11 +650,23 @@ function getDefaultCodexProfileFromDisk(): string | null { const { CodexProfileRegistry } = require('../../codex-auth/codex-profile-registry') as { CodexProfileRegistry: new () => { getDefault: () => string | null; + getProfile: (name: string) => { email?: string; account_id?: string }; + listProfiles: () => string[]; }; }; const registry = new CodexProfileRegistry(); + const pausedIdentities = getPausedCodexAccountIdentities(); const def = registry.getDefault(); - if (def) return def; + if (def && !codexProfileMatchesPausedAccount(def, registry.getProfile(def), pausedIdentities)) { + return def; + } + const fallback = registry + .listProfiles() + .find( + (name) => + !codexProfileMatchesPausedAccount(name, registry.getProfile(name), pausedIdentities) + ); + if (fallback) return fallback; // Fall back to the bare ~/.codex account (DEFAULT_PROFILE) when no registry // default is set — it is the default `ccsx` invocation. if (fs.existsSync(path.join(os.homedir(), '.codex', 'auth.json'))) return DEFAULT_PROFILE; @@ -657,6 +676,33 @@ function getDefaultCodexProfileFromDisk(): string | null { } } +function getPausedCodexAccountIdentities(): Set | null { + try { + const accounts = getProviderAccounts('codex'); + if (accounts.length === 0) return null; + const identities = new Set(); + for (const account of accounts) { + if (!account.paused) continue; + identities.add(account.id); + if (account.email) identities.add(account.email); + } + return identities; + } catch { + return null; + } +} + +function codexProfileMatchesPausedAccount( + profileName: string, + profile: { email?: string; account_id?: string }, + pausedIdentities: Set | null +): boolean { + if (!pausedIdentities || pausedIdentities.size === 0) return false; + return [profileName, profile.email, profile.account_id].some( + (identity): identity is string => typeof identity === 'string' && pausedIdentities.has(identity) + ); +} + // ============================================================================ // Per-profile collectors with full safety controls // ============================================================================ diff --git a/tests/unit/web-server/native-quota-collector.test.ts b/tests/unit/web-server/native-quota-collector.test.ts index 2cf892a8..d66abb5f 100644 --- a/tests/unit/web-server/native-quota-collector.test.ts +++ b/tests/unit/web-server/native-quota-collector.test.ts @@ -7,6 +7,9 @@ */ import { beforeEach, describe, expect, it } from 'bun:test'; +import * as fs from 'fs'; +import * as os from 'os'; +import * as path from 'path'; import { getNativeAccountRows, getCachedNativeAccountRows, @@ -467,6 +470,202 @@ function makeCodexDeps( // ============================================================================ describe('Codex network path', () => { + it('production profile enumeration skips paused Codex accounts before live network refresh', async () => { + const originalCcsHome = process.env.CCS_HOME; + const originalHome = process.env.HOME; + const tempHome = fs.mkdtempSync(path.join(os.tmpdir(), 'ccs-bar-paused-codex-')); + process.env.CCS_HOME = tempHome; + process.env.HOME = tempHome; + + try { + const ccsDir = path.join(tempHome, '.ccs'); + const cliproxyDir = path.join(ccsDir, 'cliproxy'); + fs.mkdirSync(cliproxyDir, { recursive: true }); + fs.writeFileSync( + path.join(ccsDir, 'codex-profiles.yaml'), + [ + 'version: "1.0"', + 'default: paused', + 'profiles:', + ' paused:', + ' type: codex', + ' created: "2026-01-01T00:00:00.000Z"', + ' last_used: null', + ' email: paused-codex@example.com', + ' account_id: paused-codex@example.com', + ' active:', + ' type: codex', + ' created: "2026-01-02T00:00:00.000Z"', + ' last_used: null', + ' email: active-codex@example.com', + ' account_id: active-codex@example.com', + '', + ].join('\n') + ); + fs.writeFileSync( + path.join(cliproxyDir, 'accounts.json'), + JSON.stringify( + { + version: 1, + providers: { + codex: { + default: 'paused-codex@example.com', + accounts: { + 'paused-codex@example.com': { + email: 'paused-codex@example.com', + tokenFile: 'paused-codex@example.com.json', + paused: true, + }, + 'active-codex@example.com': { + email: 'active-codex@example.com', + tokenFile: 'active-codex@example.com.json', + }, + }, + }, + }, + }, + null, + 2 + ) + ); + fs.mkdirSync(path.join(cliproxyDir, 'auth'), { recursive: true }); + fs.mkdirSync(path.join(cliproxyDir, 'auth-paused'), { recursive: true }); + fs.writeFileSync( + path.join(cliproxyDir, 'auth', 'active-codex@example.com.json'), + JSON.stringify({ type: 'codex' }) + ); + fs.writeFileSync( + path.join(cliproxyDir, 'auth-paused', 'paused-codex@example.com.json'), + JSON.stringify({ type: 'codex' }) + ); + + const fetchedAccountIds: string[] = []; + const deps = makeCodexDeps({ + clock: { now: 1_000_000 }, + listClaudeProfiles: () => [], + readCredentials: undefined, + getDefaultCodexAccountId: undefined, + readCodexNativeAuth: (profile: string) => ({ + accessToken: `token-${profile}`, + accountId: profile === 'active' ? 'active-codex@example.com' : 'paused-codex@example.com', + }), + fetchCodexNetworkQuota: async (accountId: string) => { + fetchedAccountIds.push(accountId); + return { ...codexSuccessQuota(), accountId }; + }, + }); + + const rows = await getNativeAccountRows(deps); + + expect(fetchedAccountIds).toEqual(['active-codex@example.com']); + expect(rows.find((row) => row.profile === 'paused')).toBeUndefined(); + const active = rows.find((row) => row.profile === 'active'); + expect(active?.paused).toBe(false); + expect(active?.is_default).toBe(true); + } finally { + if (originalCcsHome !== undefined) { + process.env.CCS_HOME = originalCcsHome; + } else { + delete process.env.CCS_HOME; + } + if (originalHome !== undefined) { + process.env.HOME = originalHome; + } else { + delete process.env.HOME; + } + fs.rmSync(tempHome, { recursive: true, force: true }); + } + }); + + it('production profile enumeration does not live-refresh when all Codex accounts are paused', async () => { + const originalCcsHome = process.env.CCS_HOME; + const originalHome = process.env.HOME; + const tempHome = fs.mkdtempSync(path.join(os.tmpdir(), 'ccs-bar-all-paused-codex-')); + process.env.CCS_HOME = tempHome; + process.env.HOME = tempHome; + + try { + const ccsDir = path.join(tempHome, '.ccs'); + const cliproxyDir = path.join(ccsDir, 'cliproxy'); + fs.mkdirSync(cliproxyDir, { recursive: true }); + fs.writeFileSync( + path.join(ccsDir, 'codex-profiles.yaml'), + [ + 'version: "1.0"', + 'default: paused', + 'profiles:', + ' paused:', + ' type: codex', + ' created: "2026-01-01T00:00:00.000Z"', + ' last_used: null', + ' email: paused-codex@example.com', + ' account_id: paused-codex@example.com', + '', + ].join('\n') + ); + fs.writeFileSync( + path.join(cliproxyDir, 'accounts.json'), + JSON.stringify( + { + version: 1, + providers: { + codex: { + default: 'paused-codex@example.com', + accounts: { + 'paused-codex@example.com': { + email: 'paused-codex@example.com', + tokenFile: 'paused-codex@example.com.json', + paused: true, + }, + }, + }, + }, + }, + null, + 2 + ) + ); + fs.mkdirSync(path.join(cliproxyDir, 'auth-paused'), { recursive: true }); + fs.writeFileSync( + path.join(cliproxyDir, 'auth-paused', 'paused-codex@example.com.json'), + JSON.stringify({ type: 'codex' }) + ); + + let networkCalls = 0; + const deps = makeCodexDeps({ + clock: { now: 1_000_000 }, + listClaudeProfiles: () => [], + readCredentials: undefined, + getDefaultCodexAccountId: undefined, + readCodexNativeAuth: (profile: string) => ({ + accessToken: `token-${profile}`, + accountId: 'paused-codex@example.com', + }), + fetchCodexNetworkQuota: async () => { + networkCalls += 1; + return codexSuccessQuota(); + }, + }); + + const rows = await getNativeAccountRows(deps); + + expect(networkCalls).toBe(0); + expect(deps.localCount()).toBe(0); + expect(rows.find((row) => row.profile === 'paused')).toBeUndefined(); + } finally { + if (originalCcsHome !== undefined) { + process.env.CCS_HOME = originalCcsHome; + } else { + delete process.env.CCS_HOME; + } + if (originalHome !== undefined) { + process.env.HOME = originalHome; + } else { + delete process.env.HOME; + } + fs.rmSync(tempHome, { recursive: true, force: true }); + } + }); it('network success builds a fresh row from coreUsage — no staleAsOf, health ok, correct windows', async () => { const clock = { now: 1_000_000 }; const deps = makeCodexDeps({ clock }); From f2843ad2ce8f929e46a75ca8692d8f3bb9c0034c Mon Sep 17 00:00:00 2001 From: "Kai (Tam Nhu) Tran" <61256810+kaitranntt@users.noreply.github.com> Date: Tue, 30 Jun 2026 13:00:41 -0400 Subject: [PATCH 48/52] fix: fail closed on websearch launch provisioning (#1621) --- .../__tests__/executor-option-value.test.ts | 40 ++++++++++--------- src/utils/websearch/mcp-installer.ts | 28 ++++--------- .../settings-profile-websearch-launch.test.ts | 39 +++++++++--------- 3 files changed, 49 insertions(+), 58 deletions(-) diff --git a/src/cliproxy/executor/__tests__/executor-option-value.test.ts b/src/cliproxy/executor/__tests__/executor-option-value.test.ts index bb147205..a04b2ed5 100644 --- a/src/cliproxy/executor/__tests__/executor-option-value.test.ts +++ b/src/cliproxy/executor/__tests__/executor-option-value.test.ts @@ -141,7 +141,7 @@ describe('execClaudeWithCLIProxy browser flag validation', () => { } }); - it('degrades WebSearch provisioning failures for CLIProxy launches', async () => { + it('fails closed on WebSearch provisioning failures for CLIProxy launches', async () => { makeWebSearchProvisioningFail(); const markerPath = path.join(tmpHome, 'fake-claude-launched'); @@ -176,26 +176,30 @@ describe('execClaudeWithCLIProxy browser flag validation', () => { const errorSpy = jest.spyOn(console, 'error').mockImplementation(() => {}); try { - await execClaudeWithCLIProxy( - fakeClaudePath, - 'gemini', - [ - '--proxy-host', - '127.0.0.1', - '--proxy-port', - String(address.port), - '--proxy-auth-token', - 'SECRET_TOKEN_FOR_VALIDATION', - '--remote-only', - '--print', - 'hello', - ], - {} + await expect( + execClaudeWithCLIProxy( + fakeClaudePath, + 'gemini', + [ + '--proxy-host', + '127.0.0.1', + '--proxy-port', + String(address.port), + '--proxy-auth-token', + 'SECRET_TOKEN_FOR_VALIDATION', + '--remote-only', + '--print', + 'hello', + ], + {} + ) + ).rejects.toThrow( + 'WebSearch is enabled, but CCS could not prepare the local WebSearch tool.' ); - expect(await waitForFile(markerPath)).toBe(true); + expect(await waitForFile(markerPath)).toBe(false); expect(requestCount).toBeGreaterThan(0); - expect(exitSpy).toHaveBeenCalledWith(0); + expect(exitSpy).not.toHaveBeenCalledWith(0); } finally { exitSpy.mockRestore(); logSpy.mockRestore(); diff --git a/src/utils/websearch/mcp-installer.ts b/src/utils/websearch/mcp-installer.ts index 419ab925..5944e500 100644 --- a/src/utils/websearch/mcp-installer.ts +++ b/src/utils/websearch/mcp-installer.ts @@ -440,28 +440,14 @@ export function ensureWebSearchMcpOrThrow(): void { } /** - * Prepare WebSearch for a user launch without blocking Claude startup. + * Prepare WebSearch for a user launch. * - * Returns true when the normal WebSearch status line is still accurate. A - * failed MCP prepare already prints a degraded-path warning, so callers should - * skip the ready/status line when this returns false. + * WebSearch-enabled launches must fail closed when the managed local MCP + * runtime cannot be prepared. Otherwise CCS would still suppress Claude's + * native WebSearch and inject fallback steering while the constrained MCP + * search path is unavailable. */ export function ensureWebSearchMcpForLaunch(): boolean { - const wsConfig = getWebSearchConfig(); - if (!wsConfig.enabled) { - return true; - } - - const ready = ensureWebSearchMcp(); - if (!ready) { - process.stderr.write( - String( - warn( - 'WebSearch is enabled, but CCS could not prepare the local WebSearch tool. This session will continue without local WebSearch.' - ) - ) + '\n' - ); - } - - return ready; + ensureWebSearchMcpOrThrow(); + return true; } diff --git a/tests/unit/targets/settings-profile-websearch-launch.test.ts b/tests/unit/targets/settings-profile-websearch-launch.test.ts index 9061efb5..7e3f5346 100644 --- a/tests/unit/targets/settings-profile-websearch-launch.test.ts +++ b/tests/unit/targets/settings-profile-websearch-launch.test.ts @@ -61,6 +61,11 @@ describe('settings profile WebSearch launch', () => { path.join(ccsDir, 'config.json'), JSON.stringify({ profiles: { glm: settingsPath } }, null, 2) + '\n' ); + fs.writeFileSync( + path.join(ccsDir, 'config.yaml'), + ['version: 12', 'websearch:', ' enabled: true', ''].join('\n'), + 'utf8' + ); fs.writeFileSync( settingsPath, JSON.stringify( @@ -93,6 +98,7 @@ exit 0 CCS_HOME: tmpHome, CCS_CLAUDE_PATH: fakeClaudePath, CCS_DEBUG: '1', + CCS_SKIP_PREFLIGHT: '1', }; }); @@ -104,40 +110,30 @@ exit 0 fs.rmSync(tmpHome, { recursive: true, force: true }); }); - it('continues without local WebSearch when the tool runtime cannot be prepared', () => { + it('fails closed when the local WebSearch tool runtime cannot be prepared', () => { if (process.platform === 'win32') return; fs.writeFileSync(path.join(ccsDir, 'hooks'), 'not-a-directory', 'utf8'); const result = runCcs(['glm', 'smoke'], baseEnv); - expect(result.status).toBe(0); + expect(result.status).not.toBe(0); expect(result.stderr).toContain('could not prepare the local WebSearch tool'); - expect(result.stderr).toContain('This session will continue without local WebSearch'); - expect(fs.existsSync(claudeArgsLogPath)).toBe(true); - const launchedArgs = fs.readFileSync(claudeArgsLogPath, 'utf8'); - expect(launchedArgs).toContain('--disallowedTools'); - expect(launchedArgs).toContain('WebSearch'); - expect(launchedArgs).toContain('--append-system-prompt'); - expect(launchedArgs).toContain(STEERING_PROMPT_SNIPPET); + expect(result.stderr).not.toContain('This session will continue without local WebSearch'); + expect(fs.existsSync(claudeArgsLogPath)).toBe(false); }); - it('continues delegated headless launch when the local WebSearch tool runtime cannot be prepared', () => { + it('fails closed for delegated headless launch when the local WebSearch tool runtime cannot be prepared', () => { if (process.platform === 'win32') return; fs.writeFileSync(path.join(ccsDir, 'hooks'), 'not-a-directory', 'utf8'); const result = runCcs(['glm', '-p', 'smoke'], baseEnv); - expect(result.status).toBe(0); + expect(result.status).not.toBe(0); expect(result.stderr).toContain('could not prepare the local WebSearch tool'); - expect(result.stderr).toContain('This session will continue without local WebSearch'); - expect(fs.existsSync(claudeArgsLogPath)).toBe(true); - const launchedArgs = fs.readFileSync(claudeArgsLogPath, 'utf8'); - expect(launchedArgs).toContain('--disallowedTools'); - expect(launchedArgs).toContain('WebSearch'); - expect(launchedArgs).toContain('--append-system-prompt'); - expect(launchedArgs).toContain(STEERING_PROMPT_SNIPPET); + expect(result.stderr).not.toContain('This session will continue without local WebSearch'); + expect(fs.existsSync(claudeArgsLogPath)).toBe(false); }); it('keeps launch non-fatal when WebSearch is disabled', () => { @@ -145,7 +141,7 @@ exit 0 fs.writeFileSync( path.join(ccsDir, 'config.yaml'), - 'version: 12\nwebsearch:\n enabled: false\n', + ['version: 12', 'websearch:', ' enabled: false', ''].join('\n'), 'utf8' ); fs.writeFileSync(path.join(ccsDir, 'hooks'), 'not-a-directory', 'utf8'); @@ -165,6 +161,11 @@ exit 0 it('writes a source-side launch trace for settings profiles when tracing is enabled', () => { if (process.platform === 'win32') return; + fs.writeFileSync( + path.join(ccsDir, 'config.yaml'), + ['version: 12', 'websearch:', ' enabled: false', ''].join('\n'), + 'utf8' + ); const tracePath = path.join(ccsDir, 'logs', 'websearch-trace.jsonl'); const result = runCcs(['glm', 'smoke'], { ...baseEnv, From a77096ed7c99d1854971717008226cf4918599c6 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 30 Jun 2026 17:06:38 +0000 Subject: [PATCH 49/52] chore(release): 8.6.1-dev.12 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 9477727d..8f81cf28 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@kaitranntt/ccs", - "version": "8.6.1-dev.11", + "version": "8.6.1-dev.12", "description": "Claude Code Switch - Instant profile switching between Claude, GLM, Kimi, and more", "keywords": [ "cli", From 138ead0e1ef36f96f7c7b3c515aaa308f27e389c Mon Sep 17 00:00:00 2001 From: "Kai (Tam Nhu) Tran" <61256810+kaitranntt@users.noreply.github.com> Date: Tue, 30 Jun 2026 13:07:46 -0400 Subject: [PATCH 50/52] fix(logging): redact browser debug endpoint (#1622) * fix(logging): redact browser debug endpoint * fix(logging): redact prompt argv values --- src/cliproxy/executor/index.ts | 2 +- src/services/logging/log-redaction.ts | 19 ++++++++++++++++-- .../logging/log-redaction-extended.test.ts | 20 +++++++++++++++++++ 3 files changed, 38 insertions(+), 3 deletions(-) diff --git a/src/cliproxy/executor/index.ts b/src/cliproxy/executor/index.ts index cb389095..d2fc4c76 100644 --- a/src/cliproxy/executor/index.ts +++ b/src/cliproxy/executor/index.ts @@ -548,7 +548,7 @@ export async function execClaudeWithCLIProxy( keys: Object.keys(env) .filter((key) => key.startsWith('CCS_BROWSER_')) .sort(), - ws: env.CCS_BROWSER_DEVTOOLS_WS_URL || '', + hasDevtoolsWsUrl: Boolean(env.CCS_BROWSER_DEVTOOLS_WS_URL), }); } logEnvironment(env, webSearchEnv, verbose); diff --git a/src/services/logging/log-redaction.ts b/src/services/logging/log-redaction.ts index 79a65dd7..8218e4e4 100644 --- a/src/services/logging/log-redaction.ts +++ b/src/services/logging/log-redaction.ts @@ -12,7 +12,14 @@ const SENSITIVE_KEY_PATTERN = /** CLI flags whose following argument should be redacted in argv arrays. */ const SENSITIVE_ARGV_FLAG_PATTERN = - /^--(token|api[_-]?key|auth|auth[_-]?token|secret|bearer|password|client[_-]?secret|refresh[_-]?token|access[_-]?token|id[_-]?token)$/i; + /^--(token|api[_-]?key|auth|auth[_-]?token|secret|bearer|password|client[_-]?secret|refresh[_-]?token|access[_-]?token|id[_-]?token|prompt)$/i; + +/** Short CLI flags whose following argument should be redacted in argv arrays. */ +const SENSITIVE_SHORT_ARGV_FLAG_PATTERN = /^-p$/; + +/** CLI flags whose inline `--flag=value` payload should be redacted in argv arrays. */ +const SENSITIVE_ARGV_ASSIGNMENT_PATTERN = + /^--(token|api[_-]?key|auth|auth[_-]?token|secret|bearer|password|client[_-]?secret|refresh[_-]?token|access[_-]?token|id[_-]?token|prompt)=/i; /** Bearer/Basic/Token auth-scheme prefix in raw string values. */ const AUTH_SCHEME_VALUE_PATTERN = /^(Bearer|Basic|Token)\s+\S+/; @@ -126,8 +133,16 @@ export function redactArgv(argv: readonly string[]): string[] { const out: string[] = []; for (let i = 0; i < argv.length; i++) { const arg = argv[i]; + if (SENSITIVE_ARGV_ASSIGNMENT_PATTERN.test(arg)) { + const separatorIndex = arg.indexOf('='); + out.push(`${arg.slice(0, separatorIndex + 1)}[redacted]`); + continue; + } out.push(arg); - if (SENSITIVE_ARGV_FLAG_PATTERN.test(arg) && i + 1 < argv.length) { + if ( + (SENSITIVE_ARGV_FLAG_PATTERN.test(arg) || SENSITIVE_SHORT_ARGV_FLAG_PATTERN.test(arg)) && + i + 1 < argv.length + ) { out.push('[redacted]'); i++; } diff --git a/tests/unit/services/logging/log-redaction-extended.test.ts b/tests/unit/services/logging/log-redaction-extended.test.ts index 44b87849..7b5b2402 100644 --- a/tests/unit/services/logging/log-redaction-extended.test.ts +++ b/tests/unit/services/logging/log-redaction-extended.test.ts @@ -136,4 +136,24 @@ describe('redactArgv', () => { '[redacted]', ]); }); + + it('redacts prompt values passed with -p and --prompt', () => { + expect(redactArgv(['glm', '-p', 'summarize secret account notes'])).toEqual([ + 'glm', + '-p', + '[redacted]', + ]); + + expect(redactArgv(['glm', '--prompt', 'summarize secret account notes'])).toEqual([ + 'glm', + '--prompt', + '[redacted]', + ]); + }); + + it('redacts inline prompt and sensitive flag assignments', () => { + expect( + redactArgv(['glm', '--prompt=summarize secret account notes', '--api-key=plainsecret']) + ).toEqual(['glm', '--prompt=[redacted]', '--api-key=[redacted]']); + }); }); From 0180b624539eda3e34155b4ef3adc169282d3c6a Mon Sep 17 00:00:00 2001 From: "Kai (Tam Nhu) Tran" <61256810+kaitranntt@users.noreply.github.com> Date: Tue, 30 Jun 2026 13:10:56 -0400 Subject: [PATCH 51/52] fix(bar): use nonce-bound probe auth (#1623) --- src/commands/bar/bar-server-probe.ts | 33 ++++---- src/commands/bar/launch-subcommand.ts | 19 +++-- src/utils/bar-auth-token.ts | 22 +++++ src/web-server/routes/index.ts | 20 +++-- tests/unit/commands/bar-command.test.ts | 105 +++++++++++++++--------- 5 files changed, 133 insertions(+), 66 deletions(-) diff --git a/src/commands/bar/bar-server-probe.ts b/src/commands/bar/bar-server-probe.ts index c2a4cf42..496521e6 100644 --- a/src/commands/bar/bar-server-probe.ts +++ b/src/commands/bar/bar-server-probe.ts @@ -8,7 +8,13 @@ import * as fs from 'fs'; import * as path from 'path'; -import { BAR_AUTH_TOKEN_HEADER, getOrCreateBarAuthToken } from '../../utils/bar-auth-token'; +import { + BAR_AUTH_NONCE_HEADER, + BAR_AUTH_TOKEN_HEADER, + createBarAuthNonce, + isMatchingBarAuthProof, + getOrCreateBarAuthToken, +} from '../../utils/bar-auth-token'; const PROBE_TIMEOUT_MS = 1500; const MAX_PROBE_RESPONSE_BYTES = 8192; @@ -49,12 +55,10 @@ export function resolveBarPort(ccsDir: string): number | null { * from a healthy one (200) without depending on a higher-level HTTP client. * * Token authentication: the probe does NOT send the token in the request. - * The real CCS Bar server reads the token from the 0600 file and includes it - * unconditionally in the x-ccs-bar-token response header. The probe then checks - * that the echoed value matches the locally-read token. A rogue loopback process - * that has not read the 0600 file cannot produce the correct value, so a 200 - * without a matching token header is rejected. Sending the token in the request - * would defeat this — any process could echo what it received. + * Instead, it sends a fresh nonce. The real CCS Bar server reads the token from + * the 0600 file and returns HMAC(token, nonce) in the x-ccs-bar-token response + * header. The probe verifies the nonce-bound proof, so a captured proof cannot + * be replayed for a future probe. */ export async function defaultFindRunningServer(ccsDir: string): Promise { const token = getOrCreateBarAuthToken(ccsDir); @@ -64,6 +68,7 @@ export async function defaultFindRunningServer(ccsDir: string): Promise { let rawResponse = ''; @@ -85,23 +90,21 @@ export async function defaultFindRunningServer(ccsDir: string): Promise { - // Do NOT include the token in the request — sending the secret to the - // party being authenticated lets any reflector trivially pass the check. + // Do NOT include the token in the request; only send a fresh nonce so + // the server can prove it knows the token without disclosing it. socket.write( - `GET ${parsed.pathname}${parsed.search} HTTP/1.1\r\nHost: ${parsed.host}\r\nConnection: close\r\n\r\n` + `GET ${parsed.pathname}${parsed.search} HTTP/1.1\r\nHost: ${parsed.host}\r\n${BAR_AUTH_NONCE_HEADER}: ${nonce}\r\nConnection: close\r\n\r\n` ); }); socket.setTimeout(PROBE_TIMEOUT_MS, () => finish()); diff --git a/src/commands/bar/launch-subcommand.ts b/src/commands/bar/launch-subcommand.ts index 7a0e3248..2d1f1897 100644 --- a/src/commands/bar/launch-subcommand.ts +++ b/src/commands/bar/launch-subcommand.ts @@ -21,7 +21,13 @@ import * as os from 'os'; import * as path from 'path'; import type { ChildProcess } from 'child_process'; import { getCcsDir } from '../../config/config-loader-facade'; -import { BAR_AUTH_TOKEN_HEADER, getOrCreateBarAuthToken } from '../../utils/bar-auth-token'; +import { + BAR_AUTH_NONCE_HEADER, + BAR_AUTH_TOKEN_HEADER, + createBarAuthNonce, + isMatchingBarAuthProof, + getOrCreateBarAuthToken, +} from '../../utils/bar-auth-token'; import { getBarDir, getBarJsonPath, getLaunchJsonPath, getServeLogPath } from './bar-paths'; import type { LaunchJson } from './bar-paths'; import { createBarLaunchDescriptor } from './launch-descriptor'; @@ -152,6 +158,7 @@ export async function defaultWaitForServerLive(baseUrl: string): Promise { async function probe(): Promise<{ statusCode: number | null; tokenMatched: boolean }> { const url = new URL(`${baseUrl}/api/bar/summary`); + const nonce = createBarAuthNonce(); return new Promise((resolve) => { let rawResponse = ''; let settled = false; @@ -166,8 +173,8 @@ export async function defaultWaitForServerLive(baseUrl: string): Promise { const echoMatch = headerSection.match( new RegExp(`${BAR_AUTH_TOKEN_HEADER}:\\s*([^\\r\\n]+)`, 'i') ); - const echoedToken = echoMatch ? echoMatch[1].trim() : ''; - resolve({ statusCode, tokenMatched: echoedToken === token }); + const proof = echoMatch ? echoMatch[1].trim() : ''; + resolve({ statusCode, tokenMatched: isMatchingBarAuthProof(token, nonce, proof) }); return; } resolve({ statusCode, tokenMatched: false }); @@ -175,10 +182,10 @@ export async function defaultWaitForServerLive(baseUrl: string): Promise { const socket = net.connect( { host: url.hostname.replace(/^\[|\]$/g, ''), port: Number(url.port) }, () => { - // Do NOT include the token in the request — sending the secret to the - // party being authenticated lets any reflector trivially pass the check. + // Do NOT include the token in the request; only send a fresh nonce so + // the server can prove it knows the token without disclosing it. socket.write( - `GET ${url.pathname}${url.search} HTTP/1.1\r\nHost: ${url.host}\r\nConnection: close\r\n\r\n` + `GET ${url.pathname}${url.search} HTTP/1.1\r\nHost: ${url.host}\r\n${BAR_AUTH_NONCE_HEADER}: ${nonce}\r\nConnection: close\r\n\r\n` ); } ); diff --git a/src/utils/bar-auth-token.ts b/src/utils/bar-auth-token.ts index bd8da5ca..0c9f4b58 100644 --- a/src/utils/bar-auth-token.ts +++ b/src/utils/bar-auth-token.ts @@ -4,7 +4,29 @@ import * as path from 'path'; import { getCcsDir } from '../config/config-loader-facade'; export const BAR_AUTH_TOKEN_HEADER = 'x-ccs-bar-token'; +export const BAR_AUTH_NONCE_HEADER = 'x-ccs-bar-nonce'; const TOKEN_BYTE_LENGTH = 32; +const NONCE_MIN_LENGTH = 16; + +export function createBarAuthNonce(): string { + return crypto.randomBytes(TOKEN_BYTE_LENGTH).toString('hex'); +} + +export function isValidBarAuthNonce(nonce: string): boolean { + return /^[a-f0-9]+$/i.test(nonce) && nonce.length >= NONCE_MIN_LENGTH && nonce.length <= 128; +} + +export function createBarAuthProof(token: string, nonce: string): string { + return crypto.createHmac('sha256', token).update(nonce).digest('hex'); +} + +export function isMatchingBarAuthProof(token: string, nonce: string, proof: string): boolean { + if (!isValidBarAuthNonce(nonce) || !/^[a-f0-9]{64}$/i.test(proof)) { + return false; + } + const expected = createBarAuthProof(token, nonce); + return crypto.timingSafeEqual(Buffer.from(expected, 'hex'), Buffer.from(proof, 'hex')); +} export function getBarAuthTokenPath(ccsDir = getCcsDir()): string { return path.join(ccsDir, 'bar', '.auth-token'); diff --git a/src/web-server/routes/index.ts b/src/web-server/routes/index.ts index 79d39161..a54cb44d 100644 --- a/src/web-server/routes/index.ts +++ b/src/web-server/routes/index.ts @@ -7,7 +7,13 @@ import { Router } from 'express'; import { requireLocalAccessWhenAuthDisabled } from '../middleware/auth-middleware'; -import { BAR_AUTH_TOKEN_HEADER, getOrCreateBarAuthToken } from '../../utils/bar-auth-token'; +import { + BAR_AUTH_NONCE_HEADER, + BAR_AUTH_TOKEN_HEADER, + createBarAuthProof, + getOrCreateBarAuthToken, + isValidBarAuthNonce, +} from '../../utils/bar-auth-token'; // Import domain routers import profileRoutes from './profile-routes'; @@ -69,11 +75,13 @@ apiRoutes.use((req, res, next) => { // Exact segment match so a future sibling like '/barbaz' isn't accidentally gated. if (req.path === '/bar' || req.path.startsWith('/bar/')) { if (requireLocalAccessWhenAuthDisabled(req, res, BAR_LOCAL_ACCESS_ERROR)) { - // Echo the token unconditionally so the probe can verify it without - // having sent the secret in the request. Only the real CCS Bar process - // (which owns the 0600 file) can produce this value — a rogue loopback - // process that hasn't read the file cannot replicate it. - res.setHeader(BAR_AUTH_TOKEN_HEADER, getOrCreateBarAuthToken()); + // Authenticate liveness probes with a nonce-bound HMAC so normal Bar + // responses never disclose the persistent file token, and captured probe + // proofs cannot be replayed for a future probe. + const nonce = req.header(BAR_AUTH_NONCE_HEADER)?.trim() ?? ''; + if (isValidBarAuthNonce(nonce)) { + res.setHeader(BAR_AUTH_TOKEN_HEADER, createBarAuthProof(getOrCreateBarAuthToken(), nonce)); + } next(); } return; diff --git a/tests/unit/commands/bar-command.test.ts b/tests/unit/commands/bar-command.test.ts index fbc5e2cc..5f649ef1 100644 --- a/tests/unit/commands/bar-command.test.ts +++ b/tests/unit/commands/bar-command.test.ts @@ -13,7 +13,12 @@ import { afterEach, beforeEach, describe, expect, it, mock } from 'bun:test'; import * as fs from 'fs'; import * as os from 'os'; import * as path from 'path'; -import { BAR_AUTH_TOKEN_HEADER, getOrCreateBarAuthToken } from '../../../src/utils/bar-auth-token'; +import { + BAR_AUTH_NONCE_HEADER, + BAR_AUTH_TOKEN_HEADER, + createBarAuthProof, + getOrCreateBarAuthToken, +} from '../../../src/utils/bar-auth-token'; // --------------------------------------------------------------------------- // Helpers @@ -1752,14 +1757,12 @@ describe('defaultFindRunningServer (GH-1500)', () => { const ccsDir = path.join(tempHome, '.ccs'); fs.mkdirSync(ccsDir, { recursive: true }); - // Start an ephemeral server that responds 200 to /api/bar/summary with the shared token. - // The server echoes the token unconditionally (reading it from the file), mirroring - // production behavior: only a process that owns the 0600 file can produce the value. - const server = http.createServer((_req, res) => { + const server = http.createServer((req, res) => { const token = getOrCreateBarAuthToken(ccsDir); + const nonce = String(req.headers[BAR_AUTH_NONCE_HEADER] ?? ''); res.writeHead(200, { 'Content-Type': 'application/json', - [BAR_AUTH_TOKEN_HEADER]: token, + [BAR_AUTH_TOKEN_HEADER]: createBarAuthProof(token, nonce), }); res.end('{}'); }); @@ -1970,11 +1973,12 @@ describe('defaultFindRunningServer (GH-1500)', () => { // This simulates `ccs config` starting the web-server with host 'localhost' // on macOS, where 'localhost' resolves to ::1. // The server echoes the token unconditionally (from the file), mirroring production. - const server = http.createServer((_req, res) => { + const server = http.createServer((req, res) => { const token = getOrCreateBarAuthToken(ccsDir); + const nonce = String(req.headers[BAR_AUTH_NONCE_HEADER] ?? ''); res.writeHead(200, { 'Content-Type': 'application/json', - [BAR_AUTH_TOKEN_HEADER]: token, + [BAR_AUTH_TOKEN_HEADER]: createBarAuthProof(token, nonce), }); res.end('{}'); }); @@ -2026,11 +2030,12 @@ describe('defaultFindRunningServer: priority over response speed (GH-1500)', () // Lower-priority server (default port candidate): responds immediately with 200. // Echoes token unconditionally (from file), mirroring production behavior. - const fastServer = http.createServer((_req, res) => { + const fastServer = http.createServer((req, res) => { const token = getOrCreateBarAuthToken(ccsDir); + const nonce = String(req.headers[BAR_AUTH_NONCE_HEADER] ?? ''); res.writeHead(200, { 'Content-Type': 'application/json', - [BAR_AUTH_TOKEN_HEADER]: token, + [BAR_AUTH_TOKEN_HEADER]: createBarAuthProof(token, nonce), }); res.end('{}'); }); @@ -2039,12 +2044,13 @@ describe('defaultFindRunningServer: priority over response speed (GH-1500)', () // Higher-priority server (bar.json port): adds ~300 ms artificial delay, // but still responds 200 within the 1500 ms timeout. - const slowServer = http.createServer((_req, res) => { + const slowServer = http.createServer((req, res) => { const token = getOrCreateBarAuthToken(ccsDir); + const nonce = String(req.headers[BAR_AUTH_NONCE_HEADER] ?? ''); setTimeout(() => { res.writeHead(200, { 'Content-Type': 'application/json', - [BAR_AUTH_TOKEN_HEADER]: token, + [BAR_AUTH_TOKEN_HEADER]: createBarAuthProof(token, nonce), }); res.end('{}'); }, 300); @@ -3152,7 +3158,17 @@ describe('defaultFindRunningServer: socket-level 401/403 classifies authRequired setTimeout(_ms: number, _cb: () => void) { return socket; }, - write() { + write(data: string) { + const nonce = + data.match(new RegExp(`${BAR_AUTH_NONCE_HEADER}:\\s*([^\\r\\n]+)`, 'i'))?.[1] ?? ''; + for (const cb of listeners.data ?? []) { + cb( + Buffer.from( + `HTTP/1.1 200 OK\r\n${BAR_AUTH_TOKEN_HEADER}: ${createBarAuthProof(token, nonce)}\r\n\r\n`, + 'utf8' + ) + ); + } return true; }, destroy() { @@ -3161,9 +3177,6 @@ describe('defaultFindRunningServer: socket-level 401/403 classifies authRequired }; setImmediate(() => { onConnect(); - for (const cb of listeners.data ?? []) { - cb(Buffer.from(`HTTP/1.1 200 OK\r\nx-ccs-bar-token: ${token}\r\n\r\n`, 'utf8')); - } }); return socket; }, @@ -3205,7 +3218,7 @@ describe('defaultWaitForServerLive: rogue 200 without matching token is rejected // fully synchronous and immune to OS socket state. The invariant is // behaviour-coupled: removing the token check causes both tests to fail. - function buildNetMock(responseHeaders: string) { + function buildNetMock(responseHeaders: string | ((request: string) => string)) { // Returns a `net` mock whose connect() immediately delivers the response, // then emits 'end'. return { @@ -3219,7 +3232,12 @@ describe('defaultWaitForServerLive: rogue 200 without matching token is rejected setTimeout(_ms: number, _cb: () => void) { return socket; }, - write() { + write(data: string) { + const response = + typeof responseHeaders === 'function' ? responseHeaders(data) : responseHeaders; + for (const cb of listeners.data ?? []) { + cb(Buffer.from(response, 'utf8')); + } return true; }, destroy() { @@ -3228,9 +3246,6 @@ describe('defaultWaitForServerLive: rogue 200 without matching token is rejected }; setImmediate(() => { onConnect(); - for (const cb of listeners.data ?? []) { - cb(Buffer.from(responseHeaders, 'utf8')); - } for (const cb of listeners.end ?? []) { cb(); } @@ -3294,11 +3309,15 @@ describe('defaultWaitForServerLive: rogue 200 without matching token is rejected const { getOrCreateBarAuthToken: getToken } = await import( `../../../src/utils/bar-auth-token?test=${Date.now()}-legit-net` ); - const realToken = getToken(ccsDir); + const realToken = getToken(); - // Mock net: every probe gets 200 with the CORRECT token. + // Mock net: every probe gets 200 with the CORRECT nonce-bound proof. mock.module('net', () => - buildNetMock(`HTTP/1.1 200 OK\r\nx-ccs-bar-token: ${realToken}\r\n\r\n`) + buildNetMock((request) => { + const nonce = + request.match(new RegExp(`${BAR_AUTH_NONCE_HEADER}:\\s*([^\\r\\n]+)`, 'i'))?.[1] ?? ''; + return `HTTP/1.1 200 OK\r\n${BAR_AUTH_TOKEN_HEADER}: ${createBarAuthProof(realToken, nonce)}\r\n\r\n`; + }) ); moduleSeq++; @@ -3363,7 +3382,19 @@ describe('defaultFindRunningServer: streaming lower-priority probes', () => { setTimeout() { return socket; }, - write() { + write(data: string) { + if (opts.port === 41235) { + const nonce = + data.match(new RegExp(`${BAR_AUTH_NONCE_HEADER}:\\s*([^\\r\\n]+)`, 'i'))?.[1] ?? ''; + for (const cb of listeners.data ?? []) { + cb( + Buffer.from( + `HTTP/1.1 200 OK\r\n${BAR_AUTH_TOKEN_HEADER}: ${createBarAuthProof(expectedToken, nonce)}\r\n\r\n`, + 'utf8' + ) + ); + } + } return true; }, destroy() { @@ -3375,18 +3406,6 @@ describe('defaultFindRunningServer: streaming lower-priority probes', () => { // Fire the connect callback asynchronously, mirroring net.connect. setImmediate(() => { onConnect(); - if (opts.port === 41235) { - const data = listeners.data ?? []; - // The mock server includes the token unconditionally in the response - // (read from the 0600 file, not echoed from the request) — this is - // exactly what the production CCS Bar server does, and is the property - // that prevents a rogue reflector from passing the check. - for (const cb of data) { - cb( - Buffer.from(`HTTP/1.1 200 OK\r\nx-ccs-bar-token: ${expectedToken}\r\n\r\n`, 'utf8') - ); - } - } // Port 3000 never emits a status line: simulate an endlessly // streaming service that must not block the higher-priority hit. // Any other port stays silent and is settled by the 1.5s timeout, @@ -3439,6 +3458,7 @@ describe('bar raw socket probes: absolute deadline for malformed streaming peers connect: (opts: { host: string; port: number }, onConnect: () => void): unknown => { const listeners: Record void>> = {}; let interval: ReturnType | undefined; + let request = ''; const socket = { on(event: string, cb: (arg?: unknown) => void) { (listeners[event] ??= []).push(cb); @@ -3447,7 +3467,8 @@ describe('bar raw socket probes: absolute deadline for malformed streaming peers setTimeout() { return socket; }, - write() { + write(data: string) { + request = data; return true; }, destroy() { @@ -3466,9 +3487,15 @@ describe('bar raw socket probes: absolute deadline for malformed streaming peers return; } if (opts.port === 3000) { + const nonce = + request.match(new RegExp(`${BAR_AUTH_NONCE_HEADER}:\\s*([^\\r\\n]+)`, 'i'))?.[1] ?? + ''; for (const cb of listeners.data ?? []) { cb( - Buffer.from(`HTTP/1.1 200 OK\r\nx-ccs-bar-token: ${expectedToken}\r\n\r\n`, 'utf8') + Buffer.from( + `HTTP/1.1 200 OK\r\n${BAR_AUTH_TOKEN_HEADER}: ${createBarAuthProof(expectedToken, nonce)}\r\n\r\n`, + 'utf8' + ) ); } } From 772a9c246e3f1a1a03251fdac319334d906cb424 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 30 Jun 2026 17:16:40 +0000 Subject: [PATCH 52/52] chore(release): 8.6.1-dev.13 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 8f81cf28..7ea7ddf8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@kaitranntt/ccs", - "version": "8.6.1-dev.12", + "version": "8.6.1-dev.13", "description": "Claude Code Switch - Instant profile switching between Claude, GLM, Kimi, and more", "keywords": [ "cli",