From cc782585c013744029c652cbc8cc7e891c58b1a3 Mon Sep 17 00:00:00 2001 From: DogEZ Date: Sat, 11 Apr 2026 09:47:15 +0800 Subject: [PATCH 01/14] chore: rebrand from free-code/claude to claudium --- README.md | 18 +++++----- install.sh | 37 +++++++++++---------- package.json | 4 +-- scripts/build.ts | 2 +- src/bridge/bridgeMain.ts | 2 +- src/components/LogoV2/ChannelsNotice.tsx | 2 +- src/components/LogoV2/CondensedLogo.tsx | 2 +- src/components/LogoV2/GuestPassesUpsell.tsx | 2 +- src/components/LogoV2/LogoV2.tsx | 4 +-- src/components/LogoV2/WelcomeV2.tsx | 6 ++-- src/components/LogoV2/feedConfigs.tsx | 4 +-- src/components/Onboarding.tsx | 4 +-- src/components/TrustDialog/TrustDialog.tsx | 2 +- src/screens/REPL.tsx | 2 +- src/services/tips/tipRegistry.ts | 20 +++++------ src/utils/gracefulShutdown.ts | 2 +- src/utils/theme.ts | 8 ++--- 17 files changed, 62 insertions(+), 59 deletions(-) diff --git a/README.md b/README.md index a97b4960..c9411ccf 100644 --- a/README.md +++ b/README.md @@ -1,17 +1,17 @@ -# free-code +# Claudium **The free build of Claude Code.** All telemetry stripped. All injected security-prompt guardrails removed. All experimental features unlocked. One binary, zero callbacks home. ```bash -curl -fsSL https://raw.githubusercontent.com/paoloanzn/free-code/main/install.sh | bash +curl -fsSL https://raw.githubusercontent.com/DdogezD/claudium/main/install.sh | bash ``` -> Checks your system, installs Bun if needed, clones, builds with all features enabled, and puts `free-code` on your PATH. Then just `export ANTHROPIC_API_KEY="sk-ant-..."` and run `free-code`. +> Checks your system, installs Bun if needed, clones, builds with all features enabled, and puts `claudium` on your PATH. Then just `export ANTHROPIC_API_KEY="sk-ant-..."` and run `claudium`.

- free-code screenshot + claudium screenshot

--- @@ -70,15 +70,15 @@ See [FEATURES.md](FEATURES.md) for the full audit of all 88 flags and their stat ## Quick install ```bash -curl -fsSL https://raw.githubusercontent.com/paoloanzn/free-code/main/install.sh | bash +curl -fsSL https://raw.githubusercontent.com/DdogezD/claudium/main/install.sh | bash ``` -This will check your system, install Bun if needed, clone the repo, build the binary with all experimental features enabled, and symlink it as `free-code` on your PATH. +This will check your system, install Bun if needed, clone the repo, build the binary with all experimental features enabled, and symlink it as `claudium` on your PATH. After install, just run: ```bash export ANTHROPIC_API_KEY="sk-ant-..." -free-code +claudium ``` --- @@ -100,8 +100,8 @@ curl -fsSL https://bun.sh/install | bash ```bash # Clone the repo -git clone https://github.com/paoloanzn/claude-code.git -cd claude-code +git clone https://github.com/DdogezD/claudium.git +cd claudium # Install dependencies bun install diff --git a/install.sh b/install.sh index 3a632e88..2d304fe1 100755 --- a/install.sh +++ b/install.sh @@ -1,19 +1,20 @@ #!/usr/bin/env bash set -euo pipefail -# free-code installer -# Usage: curl -fsSL https://raw.githubusercontent.com/paoloanzn/free-code/main/install.sh | bash +# claudium installer +# Usage: curl -fsSL https://raw.githubusercontent.com/DdogezD/claudium/main/install.sh | bash RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' +ORANGE='\033[38;5;208m' CYAN='\033[0;36m' BOLD='\033[1m' DIM='\033[2m' RESET='\033[0m' -REPO="https://github.com/paoloanzn/free-code.git" -INSTALL_DIR="$HOME/free-code" +REPO="https://github.com/DdogezD/claudium.git" +INSTALL_DIR="$HOME/claudium" BUN_MIN_VERSION="1.3.11" info() { printf "${CYAN}[*]${RESET} %s\n" "$*"; } @@ -23,13 +24,15 @@ fail() { printf "${RED}[x]${RESET} %s\n" "$*"; exit 1; } header() { echo "" - printf "${BOLD}${CYAN}" + printf "${BOLD}${ORANGE}" cat << 'ART' - ___ _ - / _|_ __ ___ ___ ___ __| | ___ - | |_| '__/ _ \/ _ \_____ / __/ _` |/ _ \ - | _| | | __/ __/_____| (_| (_| | __/ - |_| |_| \___|\___| \___\__,_|\___| + +_________ .__ .___ .__ +\_ ___ \ | | _____ __ __ __| _/ |__| __ __ _____ +/ \ \/ | | \__ \ | | \ / __ | | | | | \ / \ +\ \____ | |__ / __ \_ | | / / /_/ | | | | | / | Y Y \ + \______ / |____/ (____ / |____/ \____ | |__| |____/ |__|_| / + \/ \/ \/ \/ ART printf "${RESET}" @@ -120,7 +123,7 @@ install_deps() { } build_binary() { - info "Building free-code (all experimental features enabled)..." + info "Building claudium (all experimental features enabled)..." cd "$INSTALL_DIR" bun run build:dev:full ok "Binary built: $INSTALL_DIR/cli-dev" @@ -130,8 +133,8 @@ link_binary() { local link_dir="$HOME/.local/bin" mkdir -p "$link_dir" - ln -sf "$INSTALL_DIR/cli-dev" "$link_dir/free-code" - ok "Symlinked: $link_dir/free-code" + ln -sf "$INSTALL_DIR/cli-dev" "$link_dir/claudium" + ok "Symlinked: $link_dir/claudium" if ! echo "$PATH" | tr ':' '\n' | grep -qx "$link_dir"; then warn "$link_dir is not on your PATH" @@ -164,16 +167,16 @@ echo "" printf "${GREEN}${BOLD} Installation complete!${RESET}\n" echo "" printf " ${BOLD}Run it:${RESET}\n" -printf " ${CYAN}free-code${RESET} # interactive REPL\n" -printf " ${CYAN}free-code -p \"your prompt\"${RESET} # one-shot mode\n" +printf " ${CYAN}claudium${RESET} # interactive REPL\n" +printf " ${CYAN}claudium -p \"your prompt\"${RESET} # one-shot mode\n" echo "" printf " ${BOLD}Set your API key:${RESET}\n" printf " ${CYAN}export ANTHROPIC_API_KEY=\"sk-ant-...\"${RESET}\n" echo "" printf " ${BOLD}Or log in with Claude.ai:${RESET}\n" -printf " ${CYAN}free-code /login${RESET}\n" +printf " ${CYAN}claudium /login${RESET}\n" echo "" printf " ${DIM}Source: $INSTALL_DIR${RESET}\n" printf " ${DIM}Binary: $INSTALL_DIR/cli-dev${RESET}\n" -printf " ${DIM}Link: ~/.local/bin/free-code${RESET}\n" +printf " ${DIM}Link: ~/.local/bin/claudium${RESET}\n" echo "" diff --git a/package.json b/package.json index 425d56d7..9359c079 100644 --- a/package.json +++ b/package.json @@ -6,8 +6,8 @@ "type": "module", "packageManager": "bun@1.3.11", "bin": { - "claude": "./cli", - "claude-source": "./cli" + "claudium": "./cli", + "claudium-source": "./cli" }, "engines": { "bun": ">=1.3.11" diff --git a/scripts/build.ts b/scripts/build.ts index 262a6e9d..9bb1ee92 100644 --- a/scripts/build.ts +++ b/scripts/build.ts @@ -151,7 +151,7 @@ const defines = { 'This reconstructed source snapshot does not include Anthropic internal issue routing.', ), 'MACRO.VERSION_CHANGELOG': JSON.stringify( - dev ? getVersionChangelog() : 'https://github.com/paoloanzn/claude-code', + dev ? getVersionChangelog() : 'https://github.com/DdogezD/claudium', ), } as const diff --git a/src/bridge/bridgeMain.ts b/src/bridge/bridgeMain.ts index 7aeacafc..8e4b2b24 100644 --- a/src/bridge/bridgeMain.ts +++ b/src/bridge/bridgeMain.ts @@ -1529,7 +1529,7 @@ export async function runBridgeLoop( !fatalExit ) { logger.logStatus( - `Resume this session by running \`claude remote-control --continue\``, + `Resume this session by running \`claudium remote-control --continue\``, ) logForDebugging( `[bridge:shutdown] Skipping archive+deregister to allow resume of session ${initialSessionId}`, diff --git a/src/components/LogoV2/ChannelsNotice.tsx b/src/components/LogoV2/ChannelsNotice.tsx index 865ccd7e..da4135fc 100644 --- a/src/components/LogoV2/ChannelsNotice.tsx +++ b/src/components/LogoV2/ChannelsNotice.tsx @@ -135,7 +135,7 @@ export function ChannelsNotice() { } let t2; if ($[24] !== flag) { - t2 = Experimental · inbound messages will be pushed into this session, this carries prompt injection risks. Restart Free Code without {flag} to disable.; + t2 = Experimental · inbound messages will be pushed into this session, this carries prompt injection risks. Restart Claudium without {flag} to disable.; $[24] = flag; $[25] = t2; } else { diff --git a/src/components/LogoV2/CondensedLogo.tsx b/src/components/LogoV2/CondensedLogo.tsx index 91b940c5..5ed4076a 100644 --- a/src/components/LogoV2/CondensedLogo.tsx +++ b/src/components/LogoV2/CondensedLogo.tsx @@ -88,7 +88,7 @@ export function CondensedLogo() { } let t5; if ($[8] === Symbol.for("react.memo_cache_sentinel")) { - t5 = Free Code; + t5 = Claudium; $[8] = t5; } else { t5 = $[8]; diff --git a/src/components/LogoV2/GuestPassesUpsell.tsx b/src/components/LogoV2/GuestPassesUpsell.tsx index e5d5fb63..9e3396c5 100644 --- a/src/components/LogoV2/GuestPassesUpsell.tsx +++ b/src/components/LogoV2/GuestPassesUpsell.tsx @@ -60,7 +60,7 @@ export function GuestPassesUpsell() { let t0; if ($[0] === Symbol.for("react.memo_cache_sentinel")) { const reward = getCachedReferrerReward(); - t0 = [✻] [✻]{" "}[✻] ·{" "}{reward ? `Share Free Code and earn ${formatCreditAmount(reward)} of extra usage · /passes` : "3 guest passes at /passes"}; + t0 = [✻] [✻]{" "}[✻] ·{" "}{reward ? `Share Claudium and earn ${formatCreditAmount(reward)} of extra usage · /passes` : "3 guest passes at /passes"}; $[0] = t0; } else { t0 = $[0]; diff --git a/src/components/LogoV2/LogoV2.tsx b/src/components/LogoV2/LogoV2.tsx index bc54168c..3199964d 100644 --- a/src/components/LogoV2/LogoV2.tsx +++ b/src/components/LogoV2/LogoV2.tsx @@ -248,8 +248,8 @@ export function LogoV2() { } const layoutMode = getLayoutMode(columns); const userTheme = resolveThemeSetting(getGlobalConfig().theme); - const borderTitle = ` ${color("startupAccent", userTheme)("Free Code")} ${color("inactive", userTheme)(`v${version}`)} `; - const compactBorderTitle = color("startupAccent", userTheme)(" Free Code "); + const borderTitle = ` ${color("startupAccent", userTheme)("Claudium")} ${color("inactive", userTheme)(`v${version}`)} `; + const compactBorderTitle = color("startupAccent", userTheme)(" Claudium "); if (layoutMode === "compact") { let welcomeMessage = formatWelcomeMessage(username); if (stringWidth(welcomeMessage) > columns - 4) { diff --git a/src/components/LogoV2/WelcomeV2.tsx b/src/components/LogoV2/WelcomeV2.tsx index 296c777d..381b6aba 100644 --- a/src/components/LogoV2/WelcomeV2.tsx +++ b/src/components/LogoV2/WelcomeV2.tsx @@ -9,7 +9,7 @@ export function WelcomeV2() { if (env.terminal === "Apple_Terminal") { let t0; if ($[0] !== theme) { - t0 = ; + t0 = ; $[0] = theme; $[1] = t0; } else { @@ -28,7 +28,7 @@ export function WelcomeV2() { let t7; let t8; if ($[2] === Symbol.for("react.memo_cache_sentinel")) { - t0 = {"Welcome to Free Code"} v{MACRO.VERSION} ; + t0 = {"Welcome to Claudium"} v{MACRO.VERSION} ; t1 = {"\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026"}; t2 = {" "}; t3 = {" "}; @@ -113,7 +113,7 @@ export function WelcomeV2() { let t5; let t6; if ($[18] === Symbol.for("react.memo_cache_sentinel")) { - t0 = {"Welcome to Free Code"} v{MACRO.VERSION} ; + t0 = {"Welcome to Claudium"} v{MACRO.VERSION} ; t1 = {"\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026"}; t2 = {" "}; t3 = {" * \u2588\u2588\u2588\u2588\u2588\u2593\u2593\u2591 "}; diff --git a/src/components/LogoV2/feedConfigs.tsx b/src/components/LogoV2/feedConfigs.tsx index 44854154..a5ae0ff6 100644 --- a/src/components/LogoV2/feedConfigs.tsx +++ b/src/components/LogoV2/feedConfigs.tsx @@ -39,7 +39,7 @@ export function createWhatsNewFeed(releaseNotes: string[]): FeedConfig { text: note }; }); - const emptyMessage = "external" === 'ant' ? 'Unable to fetch latest claude-cli-internal commits' : 'Check the Free Code changelog for updates'; + const emptyMessage = "external" === 'ant' ? 'Unable to fetch latest claude-cli-internal commits' : 'Check the Claudium changelog for updates'; return { title: "external" === 'ant' ? "What's new [ANT-ONLY: Latest CC commits]" : "What's new", lines, @@ -73,7 +73,7 @@ export function createProjectOnboardingFeed(steps: Step[]): FeedConfig { } export function createGuestPassesFeed(): FeedConfig { const reward = getCachedReferrerReward(); - const subtitle = reward ? `Share Free Code and earn ${formatCreditAmount(reward)} of extra usage` : 'Share Free Code with friends'; + const subtitle = reward ? `Share Claudium and earn ${formatCreditAmount(reward)} of extra usage` : 'Share Claudium with friends'; return { title: '3 guest passes', lines: [], diff --git a/src/components/Onboarding.tsx b/src/components/Onboarding.tsx index d4b62663..ba32db7e 100644 --- a/src/components/Onboarding.tsx +++ b/src/components/Onboarding.tsx @@ -71,9 +71,9 @@ export function Onboarding({ */} - Claude can make mistakes + AI can make mistakes - You should always review Claude's responses, especially when + You should always review AI's responses, especially when running code. diff --git a/src/components/TrustDialog/TrustDialog.tsx b/src/components/TrustDialog/TrustDialog.tsx index 3bfcc22c..20df2ca3 100644 --- a/src/components/TrustDialog/TrustDialog.tsx +++ b/src/components/TrustDialog/TrustDialog.tsx @@ -206,7 +206,7 @@ export function TrustDialog(t0) { if ($[20] === Symbol.for("react.memo_cache_sentinel")) { t16 = {getFsImplementation().cwd()}; t17 = Quick safety check: Is this a project you created or one you trust? (Like your own code, a well-known open source project, or work from your team). If not, take a moment to review what{"'"}s in this folder first.; - t18 = Claude Code{"'"}ll be able to read, edit, and execute files here.; + t18 = Claudium{"'"}ll be able to read, edit, and execute files here.; $[20] = t16; $[21] = t17; $[22] = t18; diff --git a/src/screens/REPL.tsx b/src/screens/REPL.tsx index 54085283..0470ee27 100644 --- a/src/screens/REPL.tsx +++ b/src/screens/REPL.tsx @@ -1135,7 +1135,7 @@ export function REPL({ // session from mid-conversation context. const haikuTitleAttemptedRef = useRef((initialMessages?.length ?? 0) > 0); const agentTitle = mainThreadAgentDefinition?.agentType; - const terminalTitle = sessionTitle ?? agentTitle ?? haikuTitle ?? 'Free Code'; + const terminalTitle = sessionTitle ?? agentTitle ?? haikuTitle ?? 'Claudium'; const isWaitingForApproval = toolUseConfirmQueue.length > 0 || promptQueue.length > 0 || pendingWorkerRequest || pendingSandboxRequest; // Local-jsx commands (like /plugin, /config) show user-facing dialogs that // wait for input. Require jsx != null — if the flag is stuck true but jsx diff --git a/src/services/tips/tipRegistry.ts b/src/services/tips/tipRegistry.ts index c99edfdc..623d2125 100644 --- a/src/services/tips/tipRegistry.ts +++ b/src/services/tips/tipRegistry.ts @@ -143,7 +143,7 @@ const externalTips: Tip[] = [ { id: 'git-worktrees', content: async () => - 'Use git worktrees to run multiple Claude sessions in parallel.', + 'Use git worktrees to run multiple Claudium sessions in parallel.', cooldownSessions: 10, isRelevant: async () => { try { @@ -158,7 +158,7 @@ const externalTips: Tip[] = [ { id: 'color-when-multi-clauding', content: async () => - 'Running multiple Claude sessions? Use /color and /rename to tell them apart at a glance.', + 'Running multiple Claudium sessions? Use /color and /rename to tell them apart at a glance.', cooldownSessions: 10, isRelevant: async () => { if (getCurrentSessionAgentColor()) return false @@ -216,7 +216,7 @@ const externalTips: Tip[] = [ }, { id: 'memory-command', - content: async () => 'Use /memory to view and manage Claude memory', + content: async () => 'Use /memory to view and manage Claudium memory', cooldownSessions: 15, async isRelevant() { const config = getGlobalConfig() @@ -255,7 +255,7 @@ const externalTips: Tip[] = [ { id: 'prompt-queue', content: async () => - 'Hit Enter to queue up additional messages while Claude is working.', + 'Hit Enter to queue up additional messages while Claudium is working.', cooldownSessions: 5, async isRelevant() { const config = getGlobalConfig() @@ -265,14 +265,14 @@ const externalTips: Tip[] = [ { id: 'enter-to-steer-in-relatime', content: async () => - 'Send messages to Claude while it works to steer Claude in real-time', + 'Send messages to Claudium while it works to steer Claudium in real-time', cooldownSessions: 20, isRelevant: async () => true, }, { id: 'todo-list', content: async () => - 'Ask Claude to create a todo list when working on complex tasks to track progress and remain on track', + 'Ask Claudium to create a todo list when working on complex tasks to track progress and remain on track', cooldownSessions: 20, isRelevant: async () => true, }, @@ -376,7 +376,7 @@ const externalTips: Tip[] = [ { id: 'continue', content: async () => - 'Run claude --continue or claude --resume to resume a conversation', + 'Run claudium --continue or claudium --resume to resume a conversation', cooldownSessions: 10, isRelevant: async () => true, }, @@ -521,7 +521,7 @@ const externalTips: Tip[] = [ 'off' | 'copy_a' | 'copy_b' >('tengu_tide_elm', 'off') return variant === 'copy_b' - ? `Use ${cmd} for better one-shot answers. Claude thinks it through first.` + ? `Use ${cmd} for better one-shot answers. Claudium thinks it through first.` : `Working on something tricky? ${cmd} gives better first answers` }, cooldownSessions: 3, @@ -550,8 +550,8 @@ const externalTips: Tip[] = [ 'off' | 'copy_a' | 'copy_b' >('tengu_tern_alloy', 'off') return variant === 'copy_b' - ? `For big tasks, tell Claude to ${blue('use subagents')}. They work in parallel and keep your main thread clean.` - : `Say ${blue('"fan out subagents"')} and Claude sends a team. Each one digs deep so nothing gets missed.` + ? `For big tasks, tell Claudium to ${blue('use subagents')}. They work in parallel and keep your main thread clean.` + : `Say ${blue('"fan out subagents"')} and Claudium sends a team. Each one digs deep so nothing gets missed.` }, cooldownSessions: 3, isRelevant: async () => { diff --git a/src/utils/gracefulShutdown.ts b/src/utils/gracefulShutdown.ts index 03e6233e..cdfaf5c6 100644 --- a/src/utils/gracefulShutdown.ts +++ b/src/utils/gracefulShutdown.ts @@ -173,7 +173,7 @@ function printResumeHint(): void { writeSync( 1, chalk.dim( - `\nResume this session with:\nclaude --resume ${resumeArg}\n`, + `\nResume this session with:\nclaudium --resume ${resumeArg}\n`, ), ) resumeHintPrinted = true diff --git a/src/utils/theme.ts b/src/utils/theme.ts index 0b0d1c2c..eccd0f2f 100644 --- a/src/utils/theme.ts +++ b/src/utils/theme.ts @@ -117,7 +117,7 @@ const lightTheme: Theme = { autoAccept: 'rgb(135,0,255)', // Electric violet bashBorder: 'rgb(255,0,135)', // Vibrant pink claude: 'rgb(215,119,87)', // Claude orange - startupAccent: 'rgb(124,176,133)', // Free Code pastel green + startupAccent: 'rgb(255,195,130)', // Claudium light orange claudeShimmer: 'rgb(245,149,117)', // Lighter claude orange for shimmer effect claudeBlue_FOR_SYSTEM_SPINNER: 'rgb(87,105,247)', // Medium blue for system spinner claudeBlueShimmer_FOR_SYSTEM_SPINNER: 'rgb(117,135,255)', // Lighter blue for system spinner shimmer @@ -364,7 +364,7 @@ const lightDaltonizedTheme: Theme = { autoAccept: 'rgb(135,0,255)', // Electric violet bashBorder: 'rgb(0,102,204)', // Blue instead of pink claude: 'rgb(255,153,51)', // Orange adjusted for deuteranopia - startupAccent: 'rgb(124,176,133)', // Free Code pastel green + startupAccent: 'rgb(124,176,133)', // Claudium pastel green claudeShimmer: 'rgb(255,183,101)', // Lighter orange for shimmer effect claudeBlue_FOR_SYSTEM_SPINNER: 'rgb(51,102,255)', // Bright blue for system spinner claudeBlueShimmer_FOR_SYSTEM_SPINNER: 'rgb(101,152,255)', // Lighter bright blue for system spinner shimmer @@ -446,7 +446,7 @@ const darkTheme: Theme = { autoAccept: 'rgb(175,135,255)', // Electric violet bashBorder: 'rgb(253,93,177)', // Bright pink claude: 'rgb(215,119,87)', // Claude orange - startupAccent: 'rgb(184,225,174)', // Free Code pastel green + startupAccent: 'rgb(184,225,174)', // Claudium pastel green claudeShimmer: 'rgb(235,159,127)', // Lighter claude orange for shimmer effect claudeBlue_FOR_SYSTEM_SPINNER: 'rgb(147,165,255)', // Blue for system spinner claudeBlueShimmer_FOR_SYSTEM_SPINNER: 'rgb(177,195,255)', // Lighter blue for system spinner shimmer @@ -528,7 +528,7 @@ const darkDaltonizedTheme: Theme = { autoAccept: 'rgb(175,135,255)', // Electric violet bashBorder: 'rgb(51,153,255)', // Bright blue claude: 'rgb(255,153,51)', // Orange adjusted for deuteranopia - startupAccent: 'rgb(184,225,174)', // Free Code pastel green + startupAccent: 'rgb(184,225,174)', // Claudium pastel green claudeShimmer: 'rgb(255,183,101)', // Lighter orange for shimmer effect claudeBlue_FOR_SYSTEM_SPINNER: 'rgb(153,204,255)', // Light blue for system spinner claudeBlueShimmer_FOR_SYSTEM_SPINNER: 'rgb(183,224,255)', // Lighter blue for system spinner shimmer From 90a5a2592ce2d06b758ba0c67e418faaff156bd9 Mon Sep 17 00:00:00 2001 From: DogEZ Date: Sat, 11 Apr 2026 09:23:41 +0800 Subject: [PATCH 02/14] feat: remove all telemetry and analytics Ref: https://github.com/IIIIQIIII/claude-code-clean/commit/1bcfe6b7d3a06ed8248eeb617f049e945b337ba5 --- src/bridge/bridgeEnabled.ts | 2 +- src/bridge/bridgeMain.ts | 8 +- src/bridge/bridgeMessaging.ts | 2 +- src/bridge/debugUtils.ts | 2 +- src/bridge/envLessBridgeConfig.ts | 2 +- src/bridge/initReplBridge.ts | 2 +- src/bridge/jwtUtils.ts | 2 +- src/bridge/pollConfig.ts | 2 +- src/bridge/remoteBridgeCore.ts | 2 +- src/bridge/replBridge.ts | 2 +- src/bridge/trustedDevice.ts | 2 +- src/cli/handlers/auth.ts | 2 +- src/cli/handlers/mcp.tsx | 2 +- src/cli/handlers/plugins.ts | 2 +- src/cli/handlers/util.tsx | 2 +- src/cli/print.ts | 6 +- src/cli/transports/WebSocketTransport.ts | 2 +- src/cli/update.ts | 2 +- src/commands/branch/branch.ts | 2 +- src/commands/bridge/bridge.tsx | 2 +- src/commands/brief.ts | 4 +- src/commands/clear/conversation.ts | 2 +- src/commands/copy/copy.tsx | 2 +- src/commands/effort/effort.tsx | 2 +- src/commands/fast/fast.tsx | 2 +- src/commands/hooks/hooks.tsx | 2 +- src/commands/ide/ide.tsx | 2 +- .../install-github-app/OAuthFlowStep.tsx | 2 +- .../install-github-app/install-github-app.tsx | 2 +- .../install-github-app/setupGitHubActions.ts | 2 +- .../install-slack-app/install-slack-app.ts | 2 +- src/commands/install.tsx | 2 +- src/commands/login/login.tsx | 2 +- src/commands/logout/logout.tsx | 4 +- src/commands/mcp/addCommand.ts | 2 +- src/commands/model/model.tsx | 2 +- src/commands/passes/passes.tsx | 2 +- src/commands/plugin/AddMarketplace.tsx | 2 +- src/commands/plugin/ManageMarketplaces.tsx | 2 +- .../privacy-settings/privacy-settings.tsx | 2 +- .../rate-limit-options/rate-limit-options.tsx | 4 +- src/commands/remote-setup/index.ts | 2 +- src/commands/remote-setup/remote-setup.tsx | 2 +- src/commands/review/reviewRemote.ts | 4 +- src/commands/review/ultrareviewEnabled.ts | 2 +- src/commands/tag/tag.tsx | 2 +- src/commands/thinkback-play/index.ts | 2 +- src/commands/thinkback/index.ts | 2 +- src/commands/ultraplan.tsx | 4 +- src/commands/vim/vim.ts | 2 +- src/commands/voice/voice.ts | 2 +- src/components/AutoModeOptInDialog.tsx | 2 +- src/components/AutoUpdater.tsx | 200 +-- src/components/AutoUpdaterWrapper.tsx | 99 +- .../BypassPermissionsModeDialog.tsx | 2 +- src/components/ClaudeInChromeOnboarding.tsx | 2 +- .../ClaudeMdExternalIncludesDialog.tsx | 2 +- src/components/ConsoleOAuthFlow.tsx | 2 +- .../DesktopUpsell/DesktopUpsellStartup.tsx | 4 +- src/components/Feedback.tsx | 4 +- .../FeedbackSurvey/FeedbackSurvey.tsx | 2 +- .../FeedbackSurvey/useFeedbackSurvey.tsx | 6 +- .../FeedbackSurvey/useMemorySurvey.tsx | 8 +- .../FeedbackSurvey/usePostCompactSurvey.tsx | 8 +- src/components/GlobalSearchDialog.tsx | 2 +- src/components/HistorySearchDialog.tsx | 2 +- src/components/LogSelector.tsx | 2 +- src/components/LogoV2/EmergencyTip.tsx | 2 +- src/components/LogoV2/GuestPassesUpsell.tsx | 2 +- src/components/LogoV2/OverageCreditUpsell.tsx | 2 +- src/components/MCPServerApprovalDialog.tsx | 2 +- src/components/MCPServerMultiselectDialog.tsx | 2 +- src/components/MessageSelector.tsx | 2 +- src/components/ModelPicker.tsx | 2 +- src/components/NativeAutoUpdater.tsx | 194 +-- src/components/Onboarding.tsx | 2 +- src/components/PackageManagerAutoUpdater.tsx | 111 +- src/components/Passes/Passes.tsx | 2 +- src/components/PromptInput/Notifications.tsx | 2 +- src/components/PromptInput/PromptInput.tsx | 2 +- .../PromptInput/PromptInputHelpMenu.tsx | 2 +- src/components/QuickOpenDialog.tsx | 2 +- src/components/Settings/Config.tsx | 4 +- src/components/Spinner.tsx | 2 +- src/components/StatusLine.tsx | 2 +- src/components/TeleportResumeWrapper.tsx | 2 +- src/components/TokenWarning.tsx | 2 +- src/components/TrustDialog/TrustDialog.tsx | 2 +- src/components/WorktreeExitDialog.tsx | 2 +- src/components/agents/generateAgent.ts | 2 +- .../wizard-steps/ConfirmStepWrapper.tsx | 2 +- src/components/grove/Grove.tsx | 2 +- src/components/mcp/MCPRemoteServerMenu.tsx | 2 +- src/components/memory/MemoryFileSelector.tsx | 2 +- src/components/messageActions.tsx | 2 +- src/components/messages/UserPromptMessage.tsx | 2 +- .../AskUserQuestionPermissionRequest.tsx | 2 +- .../BashPermissionRequest.tsx | 6 +- .../EnterPlanModePermissionRequest.tsx | 2 +- .../ExitPlanModePermissionRequest.tsx | 2 +- .../permissions/FallbackPermissionRequest.tsx | 2 +- .../useFilePermissionDialog.ts | 4 +- .../usePermissionHandler.ts | 4 +- .../permissions/PermissionExplanation.tsx | 2 +- .../permissions/PermissionPrompt.tsx | 2 +- .../PowerShellPermissionRequest.tsx | 6 +- .../permissions/SandboxPermissionRequest.tsx | 2 +- .../SkillPermissionRequest.tsx | 2 +- src/components/permissions/hooks.ts | 4 +- .../permissions/useShellPermissionFeedback.ts | 4 +- src/constants/prompts.ts | 2 +- src/constants/system.ts | 2 +- src/coordinator/coordinatorMode.ts | 4 +- src/cost-tracker.ts | 2 +- src/entrypoints/init.ts | 139 +- src/hooks/fileSuggestions.ts | 2 +- .../useCanSwitchToExistingSubscription.tsx | 2 +- .../notifs/useNpmDeprecationNotification.tsx | 19 +- src/hooks/toolPermission/PermissionContext.ts | 4 +- src/hooks/toolPermission/permissionLogging.ts | 6 +- src/hooks/useAwaySummary.ts | 2 +- src/hooks/useCanUseTool.tsx | 4 +- src/hooks/useCancelRequest.ts | 4 +- src/hooks/useClaudeCodeHintRecommendation.tsx | 2 +- src/hooks/useDiffInIDE.ts | 2 +- src/hooks/useDynamicConfig.ts | 2 +- src/hooks/useGlobalKeybindings.tsx | 4 +- src/hooks/useIdeLogging.ts | 2 +- src/hooks/useMainLoopModel.ts | 2 +- src/hooks/useManagePlugins.ts | 2 +- src/hooks/usePromptSuggestion.ts | 2 +- src/hooks/useReplBridge.tsx | 2 +- src/hooks/useSkillImprovementSurvey.ts | 2 +- src/hooks/useSkillsChange.ts | 2 +- src/hooks/useTeleportResume.tsx | 2 +- src/hooks/useTypeahead.tsx | 2 +- src/hooks/useVoice.ts | 2 +- src/interactiveHelpers.tsx | 8 +- src/keybindings/loadUserBindings.ts | 4 +- src/keybindings/shortcutFormat.ts | 2 +- src/keybindings/useShortcutDisplay.ts | 2 +- src/main.tsx | 16 +- src/memdir/memdir.ts | 4 +- src/memdir/paths.ts | 2 +- src/memdir/teamMemPaths.ts | 2 +- .../migrateAutoUpdatesToSettings.ts | 2 +- ...rateBypassPermissionsAcceptedToSettings.ts | 2 +- ...ateEnableAllProjectMcpServersToSettings.ts | 2 +- src/migrations/migrateLegacyOpusToCurrent.ts | 2 +- src/migrations/migrateOpusToOpus1m.ts | 2 +- src/migrations/migrateSonnet45ToSonnet46.ts | 2 +- .../resetAutoModeOptInForDefaultOffer.ts | 2 +- src/migrations/resetProToOpusDefault.ts | 2 +- src/query.ts | 4 +- src/query/config.ts | 2 +- src/query/stopHooks.ts | 2 +- src/screens/REPL.tsx | 6 +- src/screens/ResumeConversation.tsx | 2 +- .../PromptSuggestion/promptSuggestion.ts | 4 +- src/services/PromptSuggestion/speculation.ts | 2 +- src/services/SessionMemory/sessionMemory.ts | 4 +- .../SessionMemory/sessionMemoryUtils.ts | 2 +- src/services/analytics-stub.ts | 219 ++++ src/services/analytics/config.ts | 38 - src/services/analytics/datadog.ts | 307 ----- .../analytics/firstPartyEventLogger.ts | 449 ------- .../firstPartyEventLoggingExporter.ts | 806 ------------ src/services/analytics/growthbook.ts | 1155 ----------------- src/services/analytics/index.ts | 173 --- src/services/analytics/sink.ts | 114 -- src/services/analytics/sinkKillswitch.ts | 25 - src/services/api/claude.ts | 10 +- src/services/api/errors.ts | 2 +- src/services/api/filesApi.ts | 2 +- src/services/api/grove.ts | 2 +- src/services/api/logging.ts | 8 +- src/services/api/promptCacheBreakDetection.ts | 2 +- src/services/api/withRetry.ts | 4 +- src/services/autoDream/autoDream.ts | 4 +- src/services/autoDream/config.ts | 2 +- src/services/claudeAiLimits.ts | 4 +- src/services/compact/autoCompact.ts | 2 +- src/services/compact/compact.ts | 4 +- src/services/compact/microCompact.ts | 2 +- src/services/compact/postCompactCleanup.ts | 2 +- src/services/compact/sessionMemoryCompact.ts | 4 +- src/services/compact/timeBasedMCConfig.ts | 2 +- .../extractMemories/extractMemories.ts | 6 +- src/services/internalLogging.ts | 2 +- src/services/mcp/auth.ts | 4 +- src/services/mcp/channelAllowlist.ts | 2 +- src/services/mcp/channelPermissions.ts | 2 +- src/services/mcp/claudeai.ts | 2 +- src/services/mcp/client.ts | 2 +- src/services/mcp/config.ts | 2 +- src/services/mcp/elicitationHandler.ts | 2 +- src/services/mcp/headersHelper.ts | 2 +- src/services/mcp/useManageMCPConnections.ts | 2 +- src/services/mcp/vscodeSdkMcp.ts | 4 +- src/services/notifier.ts | 2 +- src/services/oauth/auth-code-listener.ts | 2 +- src/services/oauth/client.ts | 2 +- src/services/oauth/index.ts | 2 +- .../plugins/PluginInstallationManager.ts | 2 +- src/services/plugins/pluginCliCommands.ts | 4 +- .../remoteManagedSettings/securityCheck.tsx | 2 +- src/services/settingsSync/index.ts | 4 +- src/services/teamMemorySync/index.ts | 4 +- src/services/teamMemorySync/watcher.ts | 2 +- src/services/tips/tipRegistry.ts | 2 +- src/services/tips/tipScheduler.ts | 2 +- src/services/tools/toolExecution.ts | 8 +- src/services/tools/toolHooks.ts | 4 +- src/services/voiceStreamSTT.ts | 2 +- src/setup.ts | 2 +- src/skills/bundled/scheduleRemoteAgents.ts | 2 +- src/skills/loadSkillsDir.ts | 2 +- src/state/teammateViewHelpers.ts | 2 +- src/tools/AgentTool/AgentTool.tsx | 4 +- src/tools/AgentTool/agentToolUtils.ts | 2 +- src/tools/AgentTool/builtInAgents.ts | 2 +- src/tools/AgentTool/loadAgentsDir.ts | 2 +- src/tools/AgentTool/prompt.ts | 2 +- src/tools/AgentTool/runAgent.ts | 4 +- src/tools/BashTool/BashTool.tsx | 2 +- src/tools/BashTool/bashPermissions.ts | 4 +- src/tools/BashTool/bashSecurity.ts | 2 +- src/tools/BashTool/shouldUseSandbox.ts | 2 +- src/tools/BashTool/utils.ts | 2 +- src/tools/BriefTool/BriefTool.ts | 4 +- src/tools/ConfigTool/ConfigTool.ts | 2 +- .../EnterWorktreeTool/EnterWorktreeTool.ts | 2 +- .../ExitPlanModeTool/ExitPlanModeV2Tool.ts | 4 +- .../ExitWorktreeTool/ExitWorktreeTool.ts | 2 +- src/tools/FileEditTool/FileEditTool.ts | 4 +- src/tools/FileReadTool/FileReadTool.ts | 6 +- src/tools/FileReadTool/limits.ts | 2 +- src/tools/FileWriteTool/FileWriteTool.ts | 4 +- src/tools/PowerShellTool/PowerShellTool.tsx | 2 +- .../RemoteTriggerTool/RemoteTriggerTool.ts | 2 +- src/tools/ScheduleCronTool/prompt.ts | 2 +- src/tools/SkillTool/SkillTool.ts | 6 +- src/tools/SkillTool/prompt.ts | 2 +- src/tools/TaskUpdateTool/TaskUpdateTool.ts | 2 +- src/tools/TeamCreateTool/TeamCreateTool.ts | 4 +- src/tools/TeamDeleteTool/TeamDeleteTool.ts | 4 +- src/tools/TodoWriteTool/TodoWriteTool.ts | 2 +- src/tools/ToolSearchTool/ToolSearchTool.ts | 2 +- src/tools/ToolSearchTool/prompt.ts | 2 +- src/tools/WebFetchTool/utils.ts | 2 +- src/tools/WebSearchTool/WebSearchTool.ts | 2 +- src/tools/shared/gitOperationTracking.ts | 2 +- src/utils/Shell.ts | 2 +- src/utils/advisor.ts | 2 +- src/utils/agentContext.ts | 2 +- src/utils/agentSwarmsEnabled.ts | 2 +- src/utils/analyzeContext.ts | 2 +- src/utils/api.ts | 6 +- src/utils/attachments.ts | 4 +- src/utils/auth.ts | 2 +- src/utils/autoUpdater.ts | 555 +------- src/utils/background/remote/preconditions.ts | 2 +- src/utils/background/remote/remoteSession.ts | 2 +- src/utils/bash/ShellSnapshot.ts | 2 +- src/utils/bash/parser.ts | 2 +- src/utils/betas.ts | 2 +- src/utils/claudeInChrome/mcpServer.ts | 10 +- src/utils/claudeInChrome/setup.ts | 2 +- src/utils/claudemd.ts | 4 +- src/utils/cleanup.ts | 2 +- src/utils/computerUse/gates.ts | 2 +- src/utils/computerUse/mcpServer.ts | 6 +- src/utils/config.ts | 2 +- src/utils/cronJitterConfig.ts | 2 +- src/utils/cronScheduler.ts | 2 +- src/utils/deepLink/registerProtocol.ts | 4 +- src/utils/diff.ts | 2 +- src/utils/effort.ts | 2 +- src/utils/fastMode.ts | 4 +- src/utils/file.ts | 4 +- src/utils/fileHistory.ts | 2 +- src/utils/fileOperationAnalytics.ts | 4 +- src/utils/filePersistence/filePersistence.ts | 2 +- src/utils/fingerprint-stub.ts | 17 + src/utils/fingerprint.ts | 76 -- src/utils/forkedAgent.ts | 2 +- src/utils/getWorktreePaths.ts | 2 +- src/utils/gracefulShutdown.ts | 6 +- src/utils/handlePromptSubmit.ts | 4 +- src/utils/headlessProfiler.ts | 2 +- src/utils/heapDumpService.ts | 2 +- src/utils/hooks.ts | 6 +- src/utils/hooks/execAgentHook.ts | 4 +- src/utils/hooks/skillImprovement.ts | 4 +- src/utils/ide.ts | 2 +- src/utils/imagePaste.ts | 2 +- src/utils/imageResizer.ts | 2 +- src/utils/imageValidation.ts | 2 +- src/utils/immediateCommand.ts | 2 +- src/utils/markdownConfigLoader.ts | 2 +- src/utils/mcpInstructionsDelta.ts | 4 +- src/utils/mcpOutputStorage.ts | 2 +- src/utils/mcpValidation.ts | 2 +- src/utils/messages.ts | 6 +- src/utils/model/antModels.ts | 2 +- src/utils/model/providers.ts | 2 +- src/utils/modelCost.ts | 4 +- src/utils/nativeInstaller/download.ts | 2 +- src/utils/nativeInstaller/installer.ts | 2 +- src/utils/nativeInstaller/pidLock.ts | 2 +- src/utils/permissions/filesystem.ts | 2 +- src/utils/permissions/permissionExplainer.ts | 4 +- src/utils/permissions/permissionSetup.ts | 4 +- src/utils/permissions/permissions.ts | 6 +- src/utils/permissions/yoloClassifier.ts | 6 +- src/utils/planModeV2.ts | 2 +- src/utils/plugins/fetchTelemetry.ts | 2 +- src/utils/plugins/headlessPluginInstall.ts | 2 +- src/utils/plugins/hintRecommendation.ts | 4 +- src/utils/plugins/marketplaceManager.ts | 2 +- src/utils/plugins/officialMarketplaceGcs.ts | 4 +- .../officialMarketplaceStartupCheck.ts | 4 +- .../plugins/pluginInstallationHelpers.ts | 4 +- src/utils/preflightChecks.tsx | 2 +- .../processUserInput/processBashCommand.tsx | 2 +- .../processUserInput/processSlashCommand.tsx | 6 +- .../processUserInput/processTextPrompt.ts | 6 +- .../processUserInput/processUserInput.ts | 2 +- src/utils/ripgrep.ts | 2 +- src/utils/sessionFileAccessHooks.ts | 2 +- src/utils/sessionStorage.ts | 4 +- src/utils/sessionTitle.ts | 2 +- src/utils/shell/prefix.ts | 4 +- src/utils/sideQuery.ts | 6 +- src/utils/sinks.ts | 2 +- src/utils/skills/skillChangeDetector.ts | 2 +- src/utils/startupProfiler.ts | 2 +- src/utils/swarm/inProcessRunner.ts | 4 +- src/utils/swarm/spawnInProcess.ts | 2 +- src/utils/systemPrompt.ts | 2 +- src/utils/telemetry-stub.ts | 286 ++++ src/utils/telemetry/betaSessionTracing.ts | 491 ------- src/utils/telemetry/bigqueryExporter.ts | 252 ---- src/utils/telemetry/events.ts | 75 -- src/utils/telemetry/instrumentation.ts | 825 ------------ src/utils/telemetry/logger.ts | 26 - src/utils/telemetry/pluginTelemetry.ts | 289 ----- src/utils/telemetry/skillLoadedEvent.ts | 39 - src/utils/telemetryAttributes-stub.ts | 16 + src/utils/telemetryAttributes.ts | 71 - src/utils/teleport.tsx | 4 +- src/utils/teleport/gitBundle.ts | 4 +- src/utils/thinking.ts | 2 +- src/utils/toolResultStorage.ts | 6 +- src/utils/toolSearch.ts | 4 +- src/utils/unaryLogging.ts | 2 +- src/utils/warningHandler.ts | 2 +- src/voice/voiceModeEnabled.ts | 2 +- tests/verify-privacy.sh | 276 ++++ 359 files changed, 1454 insertions(+), 6824 deletions(-) create mode 100644 src/services/analytics-stub.ts delete mode 100644 src/services/analytics/config.ts delete mode 100644 src/services/analytics/datadog.ts delete mode 100644 src/services/analytics/firstPartyEventLogger.ts delete mode 100644 src/services/analytics/firstPartyEventLoggingExporter.ts delete mode 100644 src/services/analytics/growthbook.ts delete mode 100644 src/services/analytics/index.ts delete mode 100644 src/services/analytics/sink.ts delete mode 100644 src/services/analytics/sinkKillswitch.ts create mode 100644 src/utils/fingerprint-stub.ts delete mode 100644 src/utils/fingerprint.ts create mode 100644 src/utils/telemetry-stub.ts delete mode 100644 src/utils/telemetry/betaSessionTracing.ts delete mode 100644 src/utils/telemetry/bigqueryExporter.ts delete mode 100644 src/utils/telemetry/events.ts delete mode 100644 src/utils/telemetry/instrumentation.ts delete mode 100644 src/utils/telemetry/logger.ts delete mode 100644 src/utils/telemetry/pluginTelemetry.ts delete mode 100644 src/utils/telemetry/skillLoadedEvent.ts create mode 100644 src/utils/telemetryAttributes-stub.ts delete mode 100644 src/utils/telemetryAttributes.ts create mode 100755 tests/verify-privacy.sh diff --git a/src/bridge/bridgeEnabled.ts b/src/bridge/bridgeEnabled.ts index b6eec416..a8a11ad3 100644 --- a/src/bridge/bridgeEnabled.ts +++ b/src/bridge/bridgeEnabled.ts @@ -3,7 +3,7 @@ import { checkGate_CACHED_OR_BLOCKING, getDynamicConfig_CACHED_MAY_BE_STALE, getFeatureValue_CACHED_MAY_BE_STALE, -} from '../services/analytics/growthbook.js' +} from '../services/analytics-stub.js' // Namespace import breaks the bridgeEnabled → auth → config → bridgeEnabled // cycle — authModule.foo is a live binding, so by the time the helpers below // call it, auth.js is fully loaded. Previously used require() for the same diff --git a/src/bridge/bridgeMain.ts b/src/bridge/bridgeMain.ts index 8e4b2b24..6f11153f 100644 --- a/src/bridge/bridgeMain.ts +++ b/src/bridge/bridgeMain.ts @@ -3,14 +3,14 @@ import { randomUUID } from 'crypto' import { hostname, tmpdir } from 'os' import { basename, join, resolve } from 'path' import { getRemoteSessionUrl } from '../constants/product.js' -import { shutdownDatadog } from '../services/analytics/datadog.js' -import { shutdown1PEventLogging } from '../services/analytics/firstPartyEventLogger.js' -import { checkGate_CACHED_OR_BLOCKING } from '../services/analytics/growthbook.js' +import { shutdownDatadog } from '../services/analytics-stub.js' +import { shutdown1PEventLogging } from '../services/analytics-stub.js' +import { checkGate_CACHED_OR_BLOCKING } from '../services/analytics-stub.js' import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent, logEventAsync, -} from '../services/analytics/index.js' +} from '../services/analytics-stub.js' import { isInBundledMode } from '../utils/bundledMode.js' import { logForDebugging } from '../utils/debug.js' import { logForDiagnosticsNoPII } from '../utils/diagLogs.js' diff --git a/src/bridge/bridgeMessaging.ts b/src/bridge/bridgeMessaging.ts index 98ece039..538f5c56 100644 --- a/src/bridge/bridgeMessaging.ts +++ b/src/bridge/bridgeMessaging.ts @@ -17,7 +17,7 @@ import type { SDKControlResponse, } from '../entrypoints/sdk/controlTypes.js' import type { SDKResultSuccess } from '../entrypoints/sdk/coreTypes.js' -import { logEvent } from '../services/analytics/index.js' +import { logEvent } from '../services/analytics-stub.js' import { EMPTY_USAGE } from '../services/api/emptyUsage.js' import type { Message } from '../types/message.js' import { normalizeControlMessageKeys } from '../utils/controlMessageCompat.js' diff --git a/src/bridge/debugUtils.ts b/src/bridge/debugUtils.ts index e9f7293a..39b14203 100644 --- a/src/bridge/debugUtils.ts +++ b/src/bridge/debugUtils.ts @@ -1,7 +1,7 @@ import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent, -} from '../services/analytics/index.js' +} from '../services/analytics-stub.js' import { logForDebugging } from '../utils/debug.js' import { errorMessage } from '../utils/errors.js' import { jsonStringify } from '../utils/slowOperations.js' diff --git a/src/bridge/envLessBridgeConfig.ts b/src/bridge/envLessBridgeConfig.ts index de0cb5e1..58f147e1 100644 --- a/src/bridge/envLessBridgeConfig.ts +++ b/src/bridge/envLessBridgeConfig.ts @@ -1,5 +1,5 @@ import { z } from 'zod/v4' -import { getFeatureValue_DEPRECATED } from '../services/analytics/growthbook.js' +import { getFeatureValue_DEPRECATED } from '../services/analytics-stub.js' import { lazySchema } from '../utils/lazySchema.js' import { lt } from '../utils/semver.js' import { isEnvLessBridgeEnabled } from './bridgeEnabled.js' diff --git a/src/bridge/initReplBridge.ts b/src/bridge/initReplBridge.ts index 85e403d4..5c03c05e 100644 --- a/src/bridge/initReplBridge.ts +++ b/src/bridge/initReplBridge.ts @@ -18,7 +18,7 @@ import { hostname } from 'os' import { getOriginalCwd, getSessionId } from '../bootstrap/state.js' import type { SDKMessage } from '../entrypoints/agentSdkTypes.js' import type { SDKControlResponse } from '../entrypoints/sdk/controlTypes.js' -import { getFeatureValue_CACHED_WITH_REFRESH } from '../services/analytics/growthbook.js' +import { getFeatureValue_CACHED_WITH_REFRESH } from '../services/analytics-stub.js' import { getOrganizationUUID } from '../services/oauth/client.js' import { isPolicyAllowed, diff --git a/src/bridge/jwtUtils.ts b/src/bridge/jwtUtils.ts index 030c001f..2f178733 100644 --- a/src/bridge/jwtUtils.ts +++ b/src/bridge/jwtUtils.ts @@ -1,4 +1,4 @@ -import { logEvent } from '../services/analytics/index.js' +import { logEvent } from '../services/analytics-stub.js' import { logForDebugging } from '../utils/debug.js' import { logForDiagnosticsNoPII } from '../utils/diagLogs.js' import { errorMessage } from '../utils/errors.js' diff --git a/src/bridge/pollConfig.ts b/src/bridge/pollConfig.ts index 024b4761..fa783ba5 100644 --- a/src/bridge/pollConfig.ts +++ b/src/bridge/pollConfig.ts @@ -1,5 +1,5 @@ import { z } from 'zod/v4' -import { getFeatureValue_CACHED_WITH_REFRESH } from '../services/analytics/growthbook.js' +import { getFeatureValue_CACHED_WITH_REFRESH } from '../services/analytics-stub.js' import { lazySchema } from '../utils/lazySchema.js' import { DEFAULT_POLL_CONFIG, diff --git a/src/bridge/remoteBridgeCore.ts b/src/bridge/remoteBridgeCore.ts index 76545f6e..2f27598d 100644 --- a/src/bridge/remoteBridgeCore.ts +++ b/src/bridge/remoteBridgeCore.ts @@ -61,7 +61,7 @@ import { registerCleanup } from '../utils/cleanupRegistry.js' import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent, -} from '../services/analytics/index.js' +} from '../services/analytics-stub.js' import type { ReplBridgeHandle, BridgeState } from './replBridge.js' import type { Message } from '../types/message.js' import type { SDKMessage } from '../entrypoints/agentSdkTypes.js' diff --git a/src/bridge/replBridge.ts b/src/bridge/replBridge.ts index 7d7ac6a3..6506db09 100644 --- a/src/bridge/replBridge.ts +++ b/src/bridge/replBridge.ts @@ -12,7 +12,7 @@ import { logForDiagnosticsNoPII } from '../utils/diagLogs.js' import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent, -} from '../services/analytics/index.js' +} from '../services/analytics-stub.js' import { registerCleanup } from '../utils/cleanupRegistry.js' import { handleIngressMessage, diff --git a/src/bridge/trustedDevice.ts b/src/bridge/trustedDevice.ts index a4bcf35b..74decc90 100644 --- a/src/bridge/trustedDevice.ts +++ b/src/bridge/trustedDevice.ts @@ -5,7 +5,7 @@ import { getOauthConfig } from '../constants/oauth.js' import { checkGate_CACHED_OR_BLOCKING, getFeatureValue_CACHED_MAY_BE_STALE, -} from '../services/analytics/growthbook.js' +} from '../services/analytics-stub.js' import { logForDebugging } from '../utils/debug.js' import { errorMessage } from '../utils/errors.js' import { isEssentialTrafficOnly } from '../utils/privacyLevel.js' diff --git a/src/cli/handlers/auth.ts b/src/cli/handlers/auth.ts index c4cba5d0..be9c32de 100644 --- a/src/cli/handlers/auth.ts +++ b/src/cli/handlers/auth.ts @@ -7,7 +7,7 @@ import { import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent, -} from '../../services/analytics/index.js' +} from '../../services/analytics-stub.js' import { getSSLErrorHint } from '../../services/api/errorUtils.js' import { fetchAndStoreClaudeCodeFirstTokenDate } from '../../services/api/firstTokenDate.js' import { diff --git a/src/cli/handlers/mcp.tsx b/src/cli/handlers/mcp.tsx index e530c268..cae41a53 100644 --- a/src/cli/handlers/mcp.tsx +++ b/src/cli/handlers/mcp.tsx @@ -10,7 +10,7 @@ import React from 'react'; import { MCPServerDesktopImportDialog } from '../../components/MCPServerDesktopImportDialog.js'; import { render } from '../../ink.js'; import { KeybindingSetup } from '../../keybindings/KeybindingProviderSetup.js'; -import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent } from '../../services/analytics/index.js'; +import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent } from '../../services/analytics-stub.js'; import { clearMcpClientConfig, clearServerTokensFromLocalStorage, getMcpClientConfig, readClientSecret, saveMcpClientSecret } from '../../services/mcp/auth.js'; import { connectToServer, getMcpServerConnectionBatchSize } from '../../services/mcp/client.js'; import { addMcpConfig, getAllMcpConfigs, getMcpConfigByName, getMcpConfigsByScope, removeMcpConfig } from '../../services/mcp/config.js'; diff --git a/src/cli/handlers/plugins.ts b/src/cli/handlers/plugins.ts index 9236abe0..bbbb3301 100644 --- a/src/cli/handlers/plugins.ts +++ b/src/cli/handlers/plugins.ts @@ -10,7 +10,7 @@ import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, type AnalyticsMetadata_I_VERIFIED_THIS_IS_PII_TAGGED, logEvent, -} from '../../services/analytics/index.js' +} from '../../services/analytics-stub.js' import { disableAllPlugins, disablePlugin, diff --git a/src/cli/handlers/util.tsx b/src/cli/handlers/util.tsx index 03ff3cd7..47180bde 100644 --- a/src/cli/handlers/util.tsx +++ b/src/cli/handlers/util.tsx @@ -12,7 +12,7 @@ import { useManagePlugins } from '../../hooks/useManagePlugins.js'; import type { Root } from '../../ink.js'; import { Box, Text } from '../../ink.js'; import { KeybindingSetup } from '../../keybindings/KeybindingProviderSetup.js'; -import { logEvent } from '../../services/analytics/index.js'; +import { logEvent } from '../../services/analytics-stub.js'; import { MCPConnectionManager } from '../../services/mcp/MCPConnectionManager.js'; import { AppStateProvider } from '../../state/AppState.js'; import { onChangeAppState } from '../../state/onChangeAppState.js'; diff --git a/src/cli/print.ts b/src/cli/print.ts index 60472575..5cf3c647 100644 --- a/src/cli/print.ts +++ b/src/cli/print.ts @@ -25,8 +25,8 @@ import { mergeAndFilterTools } from 'src/utils/toolPool.js' import { logEvent, type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, -} from 'src/services/analytics/index.js' -import { getFeatureValue_CACHED_MAY_BE_STALE } from 'src/services/analytics/growthbook.js' +} from '../services/analytics-stub.js' +import { getFeatureValue_CACHED_MAY_BE_STALE } from '../services/analytics-stub.js' import { logForDebugging } from 'src/utils/debug.js' import { logForDiagnosticsNoPII, @@ -348,7 +348,7 @@ import { getRunningTasks } from '../utils/task/framework.js' import { isBackgroundTask } from '../tasks/types.js' import { stopTask } from '../tasks/stopTask.js' import { drainSdkEvents } from '../utils/sdkEventQueue.js' -import { initializeGrowthBook } from '../services/analytics/growthbook.js' +import { initializeGrowthBook } from '../services/analytics-stub.js' import { errorMessage, toError } from '../utils/errors.js' import { sleep } from '../utils/sleep.js' import { isExtractModeActive } from '../memdir/paths.js' diff --git a/src/cli/transports/WebSocketTransport.ts b/src/cli/transports/WebSocketTransport.ts index f8e27ace..e5312d6a 100644 --- a/src/cli/transports/WebSocketTransport.ts +++ b/src/cli/transports/WebSocketTransport.ts @@ -1,6 +1,6 @@ import type { StdoutMessage } from 'src/entrypoints/sdk/controlTypes.js' import type WsWebSocket from 'ws' -import { logEvent } from '../../services/analytics/index.js' +import { logEvent } from '../../services/analytics-stub.js' import { CircularBuffer } from '../../utils/CircularBuffer.js' import { logForDebugging } from '../../utils/debug.js' import { logForDiagnosticsNoPII } from '../../utils/diagLogs.js' diff --git a/src/cli/update.ts b/src/cli/update.ts index a0cd35f5..ef080902 100644 --- a/src/cli/update.ts +++ b/src/cli/update.ts @@ -1,5 +1,5 @@ import chalk from 'chalk' -import { logEvent } from 'src/services/analytics/index.js' +import { logEvent } from '../services/analytics-stub.js' import { getLatestVersion, type InstallStatus, diff --git a/src/commands/branch/branch.ts b/src/commands/branch/branch.ts index 4a7c2779..1e88f9a3 100644 --- a/src/commands/branch/branch.ts +++ b/src/commands/branch/branch.ts @@ -2,7 +2,7 @@ import { randomUUID, type UUID } from 'crypto' import { mkdir, readFile, writeFile } from 'fs/promises' import { getOriginalCwd, getSessionId } from '../../bootstrap/state.js' import type { LocalJSXCommandContext } from '../../commands.js' -import { logEvent } from '../../services/analytics/index.js' +import { logEvent } from '../../services/analytics-stub.js' import type { LocalJSXCommandOnDone } from '../../types/command.js' import type { ContentReplacementEntry, diff --git a/src/commands/bridge/bridge.tsx b/src/commands/bridge/bridge.tsx index 02ca16b4..476c0e21 100644 --- a/src/commands/bridge/bridge.tsx +++ b/src/commands/bridge/bridge.tsx @@ -13,7 +13,7 @@ import { shouldShowRemoteCallout } from '../../components/RemoteCallout.js'; import { useRegisterOverlay } from '../../context/overlayContext.js'; import { Box, Text } from '../../ink.js'; import { useKeybindings } from '../../keybindings/useKeybinding.js'; -import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent } from '../../services/analytics/index.js'; +import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent } from '../../services/analytics-stub.js'; import { useAppState, useSetAppState } from '../../state/AppState.js'; import type { ToolUseContext } from '../../Tool.js'; import type { LocalJSXCommandContext, LocalJSXCommandOnDone } from '../../types/command.js'; diff --git a/src/commands/brief.ts b/src/commands/brief.ts index d37ffd0a..d31fc76f 100644 --- a/src/commands/brief.ts +++ b/src/commands/brief.ts @@ -1,11 +1,11 @@ import { feature } from 'bun:bundle' import { z } from 'zod/v4' import { getKairosActive, setUserMsgOptIn } from '../bootstrap/state.js' -import { getFeatureValue_CACHED_MAY_BE_STALE } from '../services/analytics/growthbook.js' +import { getFeatureValue_CACHED_MAY_BE_STALE } from '../services/analytics-stub.js' import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent, -} from '../services/analytics/index.js' +} from '../services/analytics-stub.js' import type { ToolUseContext } from '../Tool.js' import { isBriefEntitled } from '../tools/BriefTool/BriefTool.js' import { BRIEF_TOOL_NAME } from '../tools/BriefTool/prompt.js' diff --git a/src/commands/clear/conversation.ts b/src/commands/clear/conversation.ts index e528b56e..acc68671 100644 --- a/src/commands/clear/conversation.ts +++ b/src/commands/clear/conversation.ts @@ -13,7 +13,7 @@ import { import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent, -} from '../../services/analytics/index.js' +} from '../../services/analytics-stub.js' import type { AppState } from '../../state/AppState.js' import { isInProcessTeammateTask } from '../../tasks/InProcessTeammateTask/types.js' import { diff --git a/src/commands/copy/copy.tsx b/src/commands/copy/copy.tsx index 5853d165..2fb374d4 100644 --- a/src/commands/copy/copy.tsx +++ b/src/commands/copy/copy.tsx @@ -14,7 +14,7 @@ import type { KeyboardEvent } from '../../ink/events/keyboard-event.js'; import { stringWidth } from '../../ink/stringWidth.js'; import { setClipboard } from '../../ink/termio/osc.js'; import { Box, Text } from '../../ink.js'; -import { logEvent } from '../../services/analytics/index.js'; +import { logEvent } from '../../services/analytics-stub.js'; import type { LocalJSXCommandCall } from '../../types/command.js'; import type { AssistantMessage, Message } from '../../types/message.js'; import { getGlobalConfig, saveGlobalConfig } from '../../utils/config.js'; diff --git a/src/commands/effort/effort.tsx b/src/commands/effort/effort.tsx index 41dd0d85..ef1a6cea 100644 --- a/src/commands/effort/effort.tsx +++ b/src/commands/effort/effort.tsx @@ -1,7 +1,7 @@ import { c as _c } from "react/compiler-runtime"; import * as React from 'react'; import { useMainLoopModel } from '../../hooks/useMainLoopModel.js'; -import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent } from '../../services/analytics/index.js'; +import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent } from '../../services/analytics-stub.js'; import { useAppState, useSetAppState } from '../../state/AppState.js'; import type { LocalJSXCommandOnDone } from '../../types/command.js'; import { type EffortValue, getDisplayedEffortLevel, getEffortEnvOverride, getEffortValueDescription, isEffortLevel, toPersistableEffort } from '../../utils/effort.js'; diff --git a/src/commands/fast/fast.tsx b/src/commands/fast/fast.tsx index 398c3c34..b37b8ec1 100644 --- a/src/commands/fast/fast.tsx +++ b/src/commands/fast/fast.tsx @@ -6,7 +6,7 @@ import { Dialog } from '../../components/design-system/Dialog.js'; import { FastIcon, getFastIconString } from '../../components/FastIcon.js'; import { Box, Link, Text } from '../../ink.js'; import { useKeybindings } from '../../keybindings/useKeybinding.js'; -import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent } from '../../services/analytics/index.js'; +import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent } from '../../services/analytics-stub.js'; import { type AppState, useAppState, useSetAppState } from '../../state/AppState.js'; import type { LocalJSXCommandOnDone } from '../../types/command.js'; import { clearFastModeCooldown, FAST_MODE_MODEL_DISPLAY, getFastModeModel, getFastModeRuntimeState, getFastModeUnavailableReason, isFastModeEnabled, isFastModeSupportedByModel, prefetchFastModeStatus } from '../../utils/fastMode.js'; diff --git a/src/commands/hooks/hooks.tsx b/src/commands/hooks/hooks.tsx index c3994543..97a99782 100644 --- a/src/commands/hooks/hooks.tsx +++ b/src/commands/hooks/hooks.tsx @@ -1,6 +1,6 @@ import * as React from 'react'; import { HooksConfigMenu } from '../../components/hooks/HooksConfigMenu.js'; -import { logEvent } from '../../services/analytics/index.js'; +import { logEvent } from '../../services/analytics-stub.js'; import { getTools } from '../../tools.js'; import type { LocalJSXCommandCall } from '../../types/command.js'; export const call: LocalJSXCommandCall = async (onDone, context) => { diff --git a/src/commands/ide/ide.tsx b/src/commands/ide/ide.tsx index 0a41b977..cf1ad3ef 100644 --- a/src/commands/ide/ide.tsx +++ b/src/commands/ide/ide.tsx @@ -2,7 +2,7 @@ import { c as _c } from "react/compiler-runtime"; import chalk from 'chalk'; import * as path from 'path'; import React, { useCallback, useEffect, useRef, useState } from 'react'; -import { logEvent } from 'src/services/analytics/index.js'; +import { logEvent } from '../../services/analytics-stub.js'; import type { CommandResultDisplay, LocalJSXCommandContext } from '../../commands.js'; import { Select } from '../../components/CustomSelect/index.js'; import { Dialog } from '../../components/design-system/Dialog.js'; diff --git a/src/commands/install-github-app/OAuthFlowStep.tsx b/src/commands/install-github-app/OAuthFlowStep.tsx index cbefa7bb..b185583b 100644 --- a/src/commands/install-github-app/OAuthFlowStep.tsx +++ b/src/commands/install-github-app/OAuthFlowStep.tsx @@ -1,5 +1,5 @@ import React, { useCallback, useEffect, useRef, useState } from 'react'; -import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent } from 'src/services/analytics/index.js'; +import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent } from '../../services/analytics-stub.js'; import { KeyboardShortcutHint } from '../../components/design-system/KeyboardShortcutHint.js'; import { Spinner } from '../../components/Spinner.js'; import TextInput from '../../components/TextInput.js'; diff --git a/src/commands/install-github-app/install-github-app.tsx b/src/commands/install-github-app/install-github-app.tsx index a4faf95d..8e664151 100644 --- a/src/commands/install-github-app/install-github-app.tsx +++ b/src/commands/install-github-app/install-github-app.tsx @@ -1,6 +1,6 @@ import { execa } from 'execa'; import React, { useCallback, useState } from 'react'; -import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent } from 'src/services/analytics/index.js'; +import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent } from '../../services/analytics-stub.js'; import { WorkflowMultiselectDialog } from '../../components/WorkflowMultiselectDialog.js'; import { GITHUB_ACTION_SETUP_DOCS_URL } from '../../constants/github-app.js'; import { useExitOnCtrlCDWithKeybindings } from '../../hooks/useExitOnCtrlCDWithKeybindings.js'; diff --git a/src/commands/install-github-app/setupGitHubActions.ts b/src/commands/install-github-app/setupGitHubActions.ts index 09b24539..87147438 100644 --- a/src/commands/install-github-app/setupGitHubActions.ts +++ b/src/commands/install-github-app/setupGitHubActions.ts @@ -1,7 +1,7 @@ import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent, -} from 'src/services/analytics/index.js' +} from '../../services/analytics-stub.js' import { saveGlobalConfig } from 'src/utils/config.js' import { CODE_REVIEW_PLUGIN_WORKFLOW_CONTENT, diff --git a/src/commands/install-slack-app/install-slack-app.ts b/src/commands/install-slack-app/install-slack-app.ts index 6980cede..95fabc06 100644 --- a/src/commands/install-slack-app/install-slack-app.ts +++ b/src/commands/install-slack-app/install-slack-app.ts @@ -1,5 +1,5 @@ import type { LocalCommandResult } from '../../commands.js' -import { logEvent } from '../../services/analytics/index.js' +import { logEvent } from '../../services/analytics-stub.js' import { openBrowser } from '../../utils/browser.js' import { saveGlobalConfig } from '../../utils/config.js' diff --git a/src/commands/install.tsx b/src/commands/install.tsx index cba6949c..38165f85 100644 --- a/src/commands/install.tsx +++ b/src/commands/install.tsx @@ -3,7 +3,7 @@ import { homedir } from 'node:os'; import { join } from 'node:path'; import React, { useEffect, useState } from 'react'; import type { CommandResultDisplay } from 'src/commands.js'; -import { logEvent } from 'src/services/analytics/index.js'; +import { logEvent } from '../services/analytics-stub.js'; import { StatusIcon } from '../components/design-system/StatusIcon.js'; import { Box, render, Text } from '../ink.js'; import { logForDebugging } from '../utils/debug.js'; diff --git a/src/commands/login/login.tsx b/src/commands/login/login.tsx index b532534d..280f742b 100644 --- a/src/commands/login/login.tsx +++ b/src/commands/login/login.tsx @@ -9,7 +9,7 @@ import { ConsoleOAuthFlow } from '../../components/ConsoleOAuthFlow.js'; import { Dialog } from '../../components/design-system/Dialog.js'; import { useMainLoopModel } from '../../hooks/useMainLoopModel.js'; import { Text } from '../../ink.js'; -import { refreshGrowthBookAfterAuthChange } from '../../services/analytics/growthbook.js'; +import { refreshGrowthBookAfterAuthChange } from '../../services/analytics-stub.js'; import { refreshPolicyLimits } from '../../services/policyLimits/index.js'; import { refreshRemoteManagedSettings } from '../../services/remoteManagedSettings/index.js'; import type { LocalJSXCommandOnDone } from '../../types/command.js'; diff --git a/src/commands/logout/logout.tsx b/src/commands/logout/logout.tsx index ddff29a6..0bd24af1 100644 --- a/src/commands/logout/logout.tsx +++ b/src/commands/logout/logout.tsx @@ -1,7 +1,7 @@ import * as React from 'react'; import { clearTrustedDeviceTokenCache } from '../../bridge/trustedDevice.js'; import { Text } from '../../ink.js'; -import { refreshGrowthBookAfterAuthChange } from '../../services/analytics/growthbook.js'; +import { refreshGrowthBookAfterAuthChange } from '../../services/analytics-stub.js'; import { getGroveNoticeConfig, getGroveSettings } from '../../services/api/grove.js'; import { clearPolicyLimitsCache } from '../../services/policyLimits/index.js'; // flushTelemetry is loaded lazily to avoid pulling in ~1.1MB of OpenTelemetry at startup @@ -19,7 +19,7 @@ export async function performLogout({ // Flush telemetry BEFORE clearing credentials to prevent org data leakage const { flushTelemetry - } = await import('../../utils/telemetry/instrumentation.js'); + } = await import('../../utils/telemetry-stub.js'); await flushTelemetry(); await removeApiKey(); diff --git a/src/commands/mcp/addCommand.ts b/src/commands/mcp/addCommand.ts index aeb3bc05..51c10c5f 100644 --- a/src/commands/mcp/addCommand.ts +++ b/src/commands/mcp/addCommand.ts @@ -8,7 +8,7 @@ import { cliError, cliOk } from '../../cli/exit.js' import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent, -} from '../../services/analytics/index.js' +} from '../../services/analytics-stub.js' import { readClientSecret, saveMcpClientSecret, diff --git a/src/commands/model/model.tsx b/src/commands/model/model.tsx index 65c084d9..6b900916 100644 --- a/src/commands/model/model.tsx +++ b/src/commands/model/model.tsx @@ -4,7 +4,7 @@ import * as React from 'react'; import type { CommandResultDisplay } from '../../commands.js'; import { ModelPicker } from '../../components/ModelPicker.js'; import { COMMON_HELP_ARGS, COMMON_INFO_ARGS } from '../../constants/xml.js'; -import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent } from '../../services/analytics/index.js'; +import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent } from '../../services/analytics-stub.js'; import { useAppState, useSetAppState } from '../../state/AppState.js'; import type { LocalJSXCommandCall } from '../../types/command.js'; import type { EffortLevel } from '../../utils/effort.js'; diff --git a/src/commands/passes/passes.tsx b/src/commands/passes/passes.tsx index c17cb594..42444800 100644 --- a/src/commands/passes/passes.tsx +++ b/src/commands/passes/passes.tsx @@ -1,6 +1,6 @@ import * as React from 'react'; import { Passes } from '../../components/Passes/Passes.js'; -import { logEvent } from '../../services/analytics/index.js'; +import { logEvent } from '../../services/analytics-stub.js'; import { getCachedRemainingPasses } from '../../services/api/referral.js'; import type { LocalJSXCommandOnDone } from '../../types/command.js'; import { getGlobalConfig, saveGlobalConfig } from '../../utils/config.js'; diff --git a/src/commands/plugin/AddMarketplace.tsx b/src/commands/plugin/AddMarketplace.tsx index 79b8188d..9bd0cfc0 100644 --- a/src/commands/plugin/AddMarketplace.tsx +++ b/src/commands/plugin/AddMarketplace.tsx @@ -1,6 +1,6 @@ import * as React from 'react'; import { useEffect, useRef, useState } from 'react'; -import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent } from 'src/services/analytics/index.js'; +import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent } from '../../services/analytics-stub.js'; import { ConfigurableShortcutHint } from '../../components/ConfigurableShortcutHint.js'; import { Byline } from '../../components/design-system/Byline.js'; import { KeyboardShortcutHint } from '../../components/design-system/KeyboardShortcutHint.js'; diff --git a/src/commands/plugin/ManageMarketplaces.tsx b/src/commands/plugin/ManageMarketplaces.tsx index 0e5d3ccf..efdd8559 100644 --- a/src/commands/plugin/ManageMarketplaces.tsx +++ b/src/commands/plugin/ManageMarketplaces.tsx @@ -2,7 +2,7 @@ import { c as _c } from "react/compiler-runtime"; import figures from 'figures'; import * as React from 'react'; import { useEffect, useRef, useState } from 'react'; -import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent } from 'src/services/analytics/index.js'; +import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent } from '../../services/analytics-stub.js'; import { ConfigurableShortcutHint } from '../../components/ConfigurableShortcutHint.js'; import { Byline } from '../../components/design-system/Byline.js'; import { KeyboardShortcutHint } from '../../components/design-system/KeyboardShortcutHint.js'; diff --git a/src/commands/privacy-settings/privacy-settings.tsx b/src/commands/privacy-settings/privacy-settings.tsx index 4e4acf67..9413bc16 100644 --- a/src/commands/privacy-settings/privacy-settings.tsx +++ b/src/commands/privacy-settings/privacy-settings.tsx @@ -1,6 +1,6 @@ import * as React from 'react'; import { type GroveDecision, GroveDialog, PrivacySettingsDialog } from '../../components/grove/Grove.js'; -import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent } from '../../services/analytics/index.js'; +import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent } from '../../services/analytics-stub.js'; import { getGroveNoticeConfig, getGroveSettings, isQualifiedForGrove } from '../../services/api/grove.js'; import type { LocalJSXCommandOnDone } from '../../types/command.js'; const FALLBACK_MESSAGE = 'Review and manage your privacy settings at https://claude.ai/settings/data-privacy-controls'; diff --git a/src/commands/rate-limit-options/rate-limit-options.tsx b/src/commands/rate-limit-options/rate-limit-options.tsx index 296ca4b8..055075b2 100644 --- a/src/commands/rate-limit-options/rate-limit-options.tsx +++ b/src/commands/rate-limit-options/rate-limit-options.tsx @@ -3,8 +3,8 @@ import React, { useMemo, useState } from 'react'; import type { CommandResultDisplay, LocalJSXCommandContext } from '../../commands.js'; import { type OptionWithDescription, Select } from '../../components/CustomSelect/select.js'; import { Dialog } from '../../components/design-system/Dialog.js'; -import { getFeatureValue_CACHED_MAY_BE_STALE } from '../../services/analytics/growthbook.js'; -import { logEvent } from '../../services/analytics/index.js'; +import { getFeatureValue_CACHED_MAY_BE_STALE } from '../../services/analytics-stub.js'; +import { logEvent } from '../../services/analytics-stub.js'; import { useClaudeAiLimits } from '../../services/claudeAiLimitsHook.js'; import type { ToolUseContext } from '../../Tool.js'; import type { LocalJSXCommandOnDone } from '../../types/command.js'; diff --git a/src/commands/remote-setup/index.ts b/src/commands/remote-setup/index.ts index 7b291df1..bc368ab9 100644 --- a/src/commands/remote-setup/index.ts +++ b/src/commands/remote-setup/index.ts @@ -1,5 +1,5 @@ import type { Command } from '../../commands.js' -import { getFeatureValue_CACHED_MAY_BE_STALE } from '../../services/analytics/growthbook.js' +import { getFeatureValue_CACHED_MAY_BE_STALE } from '../../services/analytics-stub.js' import { isPolicyAllowed } from '../../services/policyLimits/index.js' const web = { diff --git a/src/commands/remote-setup/remote-setup.tsx b/src/commands/remote-setup/remote-setup.tsx index 00928795..9f821679 100644 --- a/src/commands/remote-setup/remote-setup.tsx +++ b/src/commands/remote-setup/remote-setup.tsx @@ -5,7 +5,7 @@ import { Select } from '../../components/CustomSelect/index.js'; import { Dialog } from '../../components/design-system/Dialog.js'; import { LoadingState } from '../../components/design-system/LoadingState.js'; import { Box, Text } from '../../ink.js'; -import { logEvent, type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS as SafeString } from '../../services/analytics/index.js'; +import { logEvent, type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS as SafeString } from '../../services/analytics-stub.js'; import type { LocalJSXCommandOnDone } from '../../types/command.js'; import { openBrowser } from '../../utils/browser.js'; import { getGhAuthStatus } from '../../utils/github/ghAuthStatus.js'; diff --git a/src/commands/review/reviewRemote.ts b/src/commands/review/reviewRemote.ts index 0b80e339..b523c3e2 100644 --- a/src/commands/review/reviewRemote.ts +++ b/src/commands/review/reviewRemote.ts @@ -10,11 +10,11 @@ */ import type { ContentBlockParam } from '@anthropic-ai/sdk/resources/messages.js' -import { getFeatureValue_CACHED_MAY_BE_STALE } from '../../services/analytics/growthbook.js' +import { getFeatureValue_CACHED_MAY_BE_STALE } from '../../services/analytics-stub.js' import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent, -} from '../../services/analytics/index.js' +} from '../../services/analytics-stub.js' import { fetchUltrareviewQuota } from '../../services/api/ultrareviewQuota.js' import { fetchUtilization } from '../../services/api/usage.js' import type { ToolUseContext } from '../../Tool.js' diff --git a/src/commands/review/ultrareviewEnabled.ts b/src/commands/review/ultrareviewEnabled.ts index d10e5f5f..4b172fdc 100644 --- a/src/commands/review/ultrareviewEnabled.ts +++ b/src/commands/review/ultrareviewEnabled.ts @@ -1,4 +1,4 @@ -import { getFeatureValue_CACHED_MAY_BE_STALE } from '../../services/analytics/growthbook.js' +import { getFeatureValue_CACHED_MAY_BE_STALE } from '../../services/analytics-stub.js' /** * Runtime gate for /ultrareview. GB config's `enabled` field controls diff --git a/src/commands/tag/tag.tsx b/src/commands/tag/tag.tsx index 3809a995..606e749d 100644 --- a/src/commands/tag/tag.tsx +++ b/src/commands/tag/tag.tsx @@ -8,7 +8,7 @@ import { Select } from '../../components/CustomSelect/select.js'; import { Dialog } from '../../components/design-system/Dialog.js'; import { COMMON_HELP_ARGS, COMMON_INFO_ARGS } from '../../constants/xml.js'; import { Box, Text } from '../../ink.js'; -import { logEvent } from '../../services/analytics/index.js'; +import { logEvent } from '../../services/analytics-stub.js'; import type { LocalJSXCommandOnDone } from '../../types/command.js'; import { recursivelySanitizeUnicode } from '../../utils/sanitization.js'; import { getCurrentSessionTag, getTranscriptPath, saveTag } from '../../utils/sessionStorage.js'; diff --git a/src/commands/thinkback-play/index.ts b/src/commands/thinkback-play/index.ts index efa4bf7e..83837d1a 100644 --- a/src/commands/thinkback-play/index.ts +++ b/src/commands/thinkback-play/index.ts @@ -1,5 +1,5 @@ import type { Command } from '../../commands.js' -import { checkStatsigFeatureGate_CACHED_MAY_BE_STALE } from '../../services/analytics/growthbook.js' +import { checkStatsigFeatureGate_CACHED_MAY_BE_STALE } from '../../services/analytics-stub.js' // Hidden command that just plays the animation // Called by the thinkback skill after generation is complete diff --git a/src/commands/thinkback/index.ts b/src/commands/thinkback/index.ts index eceddde8..907c0420 100644 --- a/src/commands/thinkback/index.ts +++ b/src/commands/thinkback/index.ts @@ -1,5 +1,5 @@ import type { Command } from '../../commands.js' -import { checkStatsigFeatureGate_CACHED_MAY_BE_STALE } from '../../services/analytics/growthbook.js' +import { checkStatsigFeatureGate_CACHED_MAY_BE_STALE } from '../../services/analytics-stub.js' const thinkback = { type: 'local-jsx', diff --git a/src/commands/ultraplan.tsx b/src/commands/ultraplan.tsx index e492c10b..6cac8d3f 100644 --- a/src/commands/ultraplan.tsx +++ b/src/commands/ultraplan.tsx @@ -3,8 +3,8 @@ import { REMOTE_CONTROL_DISCONNECTED_MSG } from '../bridge/types.js'; import type { Command } from '../commands.js'; import { DIAMOND_OPEN } from '../constants/figures.js'; import { getRemoteSessionUrl } from '../constants/product.js'; -import { getFeatureValue_CACHED_MAY_BE_STALE } from '../services/analytics/growthbook.js'; -import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent } from '../services/analytics/index.js'; +import { getFeatureValue_CACHED_MAY_BE_STALE } from '../services/analytics-stub.js'; +import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent } from '../services/analytics-stub.js'; import type { AppState } from '../state/AppStateStore.js'; import { checkRemoteAgentEligibility, formatPreconditionError, RemoteAgentTask, type RemoteAgentTaskState, registerRemoteAgentTask } from '../tasks/RemoteAgentTask/RemoteAgentTask.js'; import type { LocalJSXCommandCall } from '../types/command.js'; diff --git a/src/commands/vim/vim.ts b/src/commands/vim/vim.ts index de5fd99e..a250da11 100644 --- a/src/commands/vim/vim.ts +++ b/src/commands/vim/vim.ts @@ -1,7 +1,7 @@ import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent, -} from '../../services/analytics/index.js' +} from '../../services/analytics-stub.js' import type { LocalCommandCall } from '../../types/command.js' import { getGlobalConfig, saveGlobalConfig } from '../../utils/config.js' diff --git a/src/commands/voice/voice.ts b/src/commands/voice/voice.ts index f369891b..7096881f 100644 --- a/src/commands/voice/voice.ts +++ b/src/commands/voice/voice.ts @@ -1,6 +1,6 @@ import { normalizeLanguageForSTT } from '../../hooks/useVoice.js' import { getShortcutDisplay } from '../../keybindings/shortcutFormat.js' -import { logEvent } from '../../services/analytics/index.js' +import { logEvent } from '../../services/analytics-stub.js' import type { LocalCommandCall } from '../../types/command.js' import { isAnthropicAuthEnabled } from '../../utils/auth.js' import { getGlobalConfig, saveGlobalConfig } from '../../utils/config.js' diff --git a/src/components/AutoModeOptInDialog.tsx b/src/components/AutoModeOptInDialog.tsx index 07fbf03f..8c45d6c8 100644 --- a/src/components/AutoModeOptInDialog.tsx +++ b/src/components/AutoModeOptInDialog.tsx @@ -1,6 +1,6 @@ import { c as _c } from "react/compiler-runtime"; import React from 'react'; -import { logEvent } from 'src/services/analytics/index.js'; +import { logEvent } from '../services/analytics-stub.js'; import { Box, Link, Text } from '../ink.js'; import { updateSettingsForSource } from '../utils/settings/settings.js'; import { Select } from './CustomSelect/index.js'; diff --git a/src/components/AutoUpdater.tsx b/src/components/AutoUpdater.tsx index 144e2c8a..59ac268c 100644 --- a/src/components/AutoUpdater.tsx +++ b/src/components/AutoUpdater.tsx @@ -1,198 +1,20 @@ +/** + * AutoUpdater stub for claude-code-clean + * All auto-update functionality disabled + */ + import * as React from 'react'; -import { useEffect, useRef, useState } from 'react'; -import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent } from 'src/services/analytics/index.js'; -import { useInterval } from 'usehooks-ts'; -import { useUpdateNotification } from '../hooks/useUpdateNotification.js'; -import { Box, Text } from '../ink.js'; -import { type AutoUpdaterResult, getLatestVersion, getMaxVersion, type InstallStatus, installGlobalPackage, shouldSkipVersion } from '../utils/autoUpdater.js'; -import { getGlobalConfig, isAutoUpdaterDisabled } from '../utils/config.js'; -import { logForDebugging } from '../utils/debug.js'; -import { getCurrentInstallationType } from '../utils/doctorDiagnostic.js'; -import { installOrUpdateClaudePackage, localInstallationExists } from '../utils/localInstaller.js'; -import { removeInstalledSymlink } from '../utils/nativeInstaller/index.js'; -import { gt, gte } from '../utils/semver.js'; -import { getInitialSettings } from '../utils/settings/settings.js'; + type Props = { isUpdating: boolean; onChangeIsUpdating: (isUpdating: boolean) => void; - onAutoUpdaterResult: (autoUpdaterResult: AutoUpdaterResult) => void; - autoUpdaterResult: AutoUpdaterResult | null; + onAutoUpdaterResult: (autoUpdaterResult: any) => void; + autoUpdaterResult: any | null; showSuccessMessage: boolean; verbose: boolean; }; -export function AutoUpdater({ - isUpdating, - onChangeIsUpdating, - onAutoUpdaterResult, - autoUpdaterResult, - showSuccessMessage, - verbose -}: Props): React.ReactNode { - const [versions, setVersions] = useState<{ - global?: string | null; - latest?: string | null; - }>({}); - const [hasLocalInstall, setHasLocalInstall] = useState(false); - const updateSemver = useUpdateNotification(autoUpdaterResult?.version); - useEffect(() => { - void localInstallationExists().then(setHasLocalInstall); - }, []); - - // Track latest isUpdating value in a ref so the memoized checkForUpdates - // callback always sees the current value. Without this, the 30-minute - // interval fires with a stale closure where isUpdating is false, allowing - // a concurrent installGlobalPackage() to run while one is already in - // progress. - const isUpdatingRef = useRef(isUpdating); - isUpdatingRef.current = isUpdating; - const checkForUpdates = React.useCallback(async () => { - if (isUpdatingRef.current) { - return; - } - if ("production" === 'test' || "production" === 'development') { - logForDebugging('AutoUpdater: Skipping update check in test/dev environment'); - return; - } - const currentVersion = MACRO.VERSION; - const channel = getInitialSettings()?.autoUpdatesChannel ?? 'latest'; - let latestVersion = await getLatestVersion(channel); - const isDisabled = isAutoUpdaterDisabled(); - - // Check if max version is set (server-side kill switch for auto-updates) - const maxVersion = await getMaxVersion(); - if (maxVersion && latestVersion && gt(latestVersion, maxVersion)) { - logForDebugging(`AutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latestVersion} to ${maxVersion}`); - if (gte(currentVersion, maxVersion)) { - logForDebugging(`AutoUpdater: current version ${currentVersion} is already at or above maxVersion ${maxVersion}, skipping update`); - setVersions({ - global: currentVersion, - latest: latestVersion - }); - return; - } - latestVersion = maxVersion; - } - setVersions({ - global: currentVersion, - latest: latestVersion - }); - - // Check if update needed and perform update - if (!isDisabled && currentVersion && latestVersion && !gte(currentVersion, latestVersion) && !shouldSkipVersion(latestVersion)) { - const startTime = Date.now(); - onChangeIsUpdating(true); - - // Remove native installer symlink since we're using JS-based updates - // But only if user hasn't migrated to native installation - const config = getGlobalConfig(); - if (config.installMethod !== 'native') { - await removeInstalledSymlink(); - } - - // Detect actual running installation type - const installationType = await getCurrentInstallationType(); - logForDebugging(`AutoUpdater: Detected installation type: ${installationType}`); - - // Skip update for development builds - if (installationType === 'development') { - logForDebugging('AutoUpdater: Cannot auto-update development build'); - onChangeIsUpdating(false); - return; - } - - // Choose the appropriate update method based on what's actually running - let installStatus: InstallStatus; - let updateMethod: 'local' | 'global'; - if (installationType === 'npm-local') { - // Use local update for local installations - logForDebugging('AutoUpdater: Using local update method'); - updateMethod = 'local'; - installStatus = await installOrUpdateClaudePackage(channel); - } else if (installationType === 'npm-global') { - // Use global update for global installations - logForDebugging('AutoUpdater: Using global update method'); - updateMethod = 'global'; - installStatus = await installGlobalPackage(); - } else if (installationType === 'native') { - // This shouldn't happen - native should use NativeAutoUpdater - logForDebugging('AutoUpdater: Unexpected native installation in non-native updater'); - onChangeIsUpdating(false); - return; - } else { - // Fallback to config-based detection for unknown types - logForDebugging(`AutoUpdater: Unknown installation type, falling back to config`); - const isMigrated = config.installMethod === 'local'; - updateMethod = isMigrated ? 'local' : 'global'; - if (isMigrated) { - installStatus = await installOrUpdateClaudePackage(channel); - } else { - installStatus = await installGlobalPackage(); - } - } - onChangeIsUpdating(false); - if (installStatus === 'success') { - logEvent('tengu_auto_updater_success', { - fromVersion: currentVersion as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, - toVersion: latestVersion as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, - durationMs: Date.now() - startTime, - wasMigrated: updateMethod === 'local', - installationType: installationType as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS - }); - } else { - logEvent('tengu_auto_updater_fail', { - fromVersion: currentVersion as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, - attemptedVersion: latestVersion as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, - status: installStatus as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, - durationMs: Date.now() - startTime, - wasMigrated: updateMethod === 'local', - installationType: installationType as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS - }); - } - onAutoUpdaterResult({ - version: latestVersion, - status: installStatus - }); - } - // isUpdating intentionally omitted from deps; we read isUpdatingRef - // instead so the guard is always current without changing callback - // identity (which would re-trigger the initial-check useEffect below). - // eslint-disable-next-line react-hooks/exhaustive-deps - // biome-ignore lint/correctness/useExhaustiveDependencies: isUpdating read via ref - }, [onAutoUpdaterResult]); - - // Initial check - useEffect(() => { - void checkForUpdates(); - }, [checkForUpdates]); - // Check every 30 minutes - useInterval(checkForUpdates, 30 * 60 * 1000); - if (!autoUpdaterResult?.version && (!versions.global || !versions.latest)) { - return null; - } - if (!autoUpdaterResult?.version && !isUpdating) { - return null; - } - return - {verbose && - globalVersion: {versions.global} · latestVersion:{' '} - {versions.latest} - } - {isUpdating ? <> - - - Auto-updating… - - - : autoUpdaterResult?.status === 'success' && showSuccessMessage && updateSemver && - ✓ Update installed · Restart to apply - } - {(autoUpdaterResult?.status === 'install_failed' || autoUpdaterResult?.status === 'no_permissions') && - ✗ Auto-update failed · Try claude doctor or{' '} - - {hasLocalInstall ? `cd ~/.claude/local && npm update ${MACRO.PACKAGE_URL}` : `npm i -g ${MACRO.PACKAGE_URL}`} - - } - ; +export function AutoUpdater(props: Props): React.ReactNode { + // No-op: Auto-updates disabled in claude-code-clean + return null; } -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsInVzZUVmZmVjdCIsInVzZVJlZiIsInVzZVN0YXRlIiwiQW5hbHl0aWNzTWV0YWRhdGFfSV9WRVJJRklFRF9USElTX0lTX05PVF9DT0RFX09SX0ZJTEVQQVRIUyIsImxvZ0V2ZW50IiwidXNlSW50ZXJ2YWwiLCJ1c2VVcGRhdGVOb3RpZmljYXRpb24iLCJCb3giLCJUZXh0IiwiQXV0b1VwZGF0ZXJSZXN1bHQiLCJnZXRMYXRlc3RWZXJzaW9uIiwiZ2V0TWF4VmVyc2lvbiIsIkluc3RhbGxTdGF0dXMiLCJpbnN0YWxsR2xvYmFsUGFja2FnZSIsInNob3VsZFNraXBWZXJzaW9uIiwiZ2V0R2xvYmFsQ29uZmlnIiwiaXNBdXRvVXBkYXRlckRpc2FibGVkIiwibG9nRm9yRGVidWdnaW5nIiwiZ2V0Q3VycmVudEluc3RhbGxhdGlvblR5cGUiLCJpbnN0YWxsT3JVcGRhdGVDbGF1ZGVQYWNrYWdlIiwibG9jYWxJbnN0YWxsYXRpb25FeGlzdHMiLCJyZW1vdmVJbnN0YWxsZWRTeW1saW5rIiwiZ3QiLCJndGUiLCJnZXRJbml0aWFsU2V0dGluZ3MiLCJQcm9wcyIsImlzVXBkYXRpbmciLCJvbkNoYW5nZUlzVXBkYXRpbmciLCJvbkF1dG9VcGRhdGVyUmVzdWx0IiwiYXV0b1VwZGF0ZXJSZXN1bHQiLCJzaG93U3VjY2Vzc01lc3NhZ2UiLCJ2ZXJib3NlIiwiQXV0b1VwZGF0ZXIiLCJSZWFjdE5vZGUiLCJ2ZXJzaW9ucyIsInNldFZlcnNpb25zIiwiZ2xvYmFsIiwibGF0ZXN0IiwiaGFzTG9jYWxJbnN0YWxsIiwic2V0SGFzTG9jYWxJbnN0YWxsIiwidXBkYXRlU2VtdmVyIiwidmVyc2lvbiIsInRoZW4iLCJpc1VwZGF0aW5nUmVmIiwiY3VycmVudCIsImNoZWNrRm9yVXBkYXRlcyIsInVzZUNhbGxiYWNrIiwiY3VycmVudFZlcnNpb24iLCJNQUNSTyIsIlZFUlNJT04iLCJjaGFubmVsIiwiYXV0b1VwZGF0ZXNDaGFubmVsIiwibGF0ZXN0VmVyc2lvbiIsImlzRGlzYWJsZWQiLCJtYXhWZXJzaW9uIiwic3RhcnRUaW1lIiwiRGF0ZSIsIm5vdyIsImNvbmZpZyIsImluc3RhbGxNZXRob2QiLCJpbnN0YWxsYXRpb25UeXBlIiwiaW5zdGFsbFN0YXR1cyIsInVwZGF0ZU1ldGhvZCIsImlzTWlncmF0ZWQiLCJmcm9tVmVyc2lvbiIsInRvVmVyc2lvbiIsImR1cmF0aW9uTXMiLCJ3YXNNaWdyYXRlZCIsImF0dGVtcHRlZFZlcnNpb24iLCJzdGF0dXMiLCJQQUNLQUdFX1VSTCJdLCJzb3VyY2VzIjpbIkF1dG9VcGRhdGVyLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IHVzZUVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHtcbiAgdHlwZSBBbmFseXRpY3NNZXRhZGF0YV9JX1ZFUklGSUVEX1RISVNfSVNfTk9UX0NPREVfT1JfRklMRVBBVEhTLFxuICBsb2dFdmVudCxcbn0gZnJvbSAnc3JjL3NlcnZpY2VzL2FuYWx5dGljcy9pbmRleC5qcydcbmltcG9ydCB7IHVzZUludGVydmFsIH0gZnJvbSAndXNlaG9va3MtdHMnXG5pbXBvcnQgeyB1c2VVcGRhdGVOb3RpZmljYXRpb24gfSBmcm9tICcuLi9ob29rcy91c2VVcGRhdGVOb3RpZmljYXRpb24uanMnXG5pbXBvcnQgeyBCb3gsIFRleHQgfSBmcm9tICcuLi9pbmsuanMnXG5pbXBvcnQge1xuICB0eXBlIEF1dG9VcGRhdGVyUmVzdWx0LFxuICBnZXRMYXRlc3RWZXJzaW9uLFxuICBnZXRNYXhWZXJzaW9uLFxuICB0eXBlIEluc3RhbGxTdGF0dXMsXG4gIGluc3RhbGxHbG9iYWxQYWNrYWdlLFxuICBzaG91bGRTa2lwVmVyc2lvbixcbn0gZnJvbSAnLi4vdXRpbHMvYXV0b1VwZGF0ZXIuanMnXG5pbXBvcnQgeyBnZXRHbG9iYWxDb25maWcsIGlzQXV0b1VwZGF0ZXJEaXNhYmxlZCB9IGZyb20gJy4uL3V0aWxzL2NvbmZpZy5qcydcbmltcG9ydCB7IGxvZ0ZvckRlYnVnZ2luZyB9IGZyb20gJy4uL3V0aWxzL2RlYnVnLmpzJ1xuaW1wb3J0IHsgZ2V0Q3VycmVudEluc3RhbGxhdGlvblR5cGUgfSBmcm9tICcuLi91dGlscy9kb2N0b3JEaWFnbm9zdGljLmpzJ1xuaW1wb3J0IHtcbiAgaW5zdGFsbE9yVXBkYXRlQ2xhdWRlUGFja2FnZSxcbiAgbG9jYWxJbnN0YWxsYXRpb25FeGlzdHMsXG59IGZyb20gJy4uL3V0aWxzL2xvY2FsSW5zdGFsbGVyLmpzJ1xuaW1wb3J0IHsgcmVtb3ZlSW5zdGFsbGVkU3ltbGluayB9IGZyb20gJy4uL3V0aWxzL25hdGl2ZUluc3RhbGxlci9pbmRleC5qcydcbmltcG9ydCB7IGd0LCBndGUgfSBmcm9tICcuLi91dGlscy9zZW12ZXIuanMnXG5pbXBvcnQgeyBnZXRJbml0aWFsU2V0dGluZ3MgfSBmcm9tICcuLi91dGlscy9zZXR0aW5ncy9zZXR0aW5ncy5qcydcblxudHlwZSBQcm9wcyA9IHtcbiAgaXNVcGRhdGluZzogYm9vbGVhblxuICBvbkNoYW5nZUlzVXBkYXRpbmc6IChpc1VwZGF0aW5nOiBib29sZWFuKSA9PiB2b2lkXG4gIG9uQXV0b1VwZGF0ZXJSZXN1bHQ6IChhdXRvVXBkYXRlclJlc3VsdDogQXV0b1VwZGF0ZXJSZXN1bHQpID0+IHZvaWRcbiAgYXV0b1VwZGF0ZXJSZXN1bHQ6IEF1dG9VcGRhdGVyUmVzdWx0IHwgbnVsbFxuICBzaG93U3VjY2Vzc01lc3NhZ2U6IGJvb2xlYW5cbiAgdmVyYm9zZTogYm9vbGVhblxufVxuXG5leHBvcnQgZnVuY3Rpb24gQXV0b1VwZGF0ZXIoe1xuICBpc1VwZGF0aW5nLFxuICBvbkNoYW5nZUlzVXBkYXRpbmcsXG4gIG9uQXV0b1VwZGF0ZXJSZXN1bHQsXG4gIGF1dG9VcGRhdGVyUmVzdWx0LFxuICBzaG93U3VjY2Vzc01lc3NhZ2UsXG4gIHZlcmJvc2UsXG59OiBQcm9wcyk6IFJlYWN0LlJlYWN0Tm9kZSB7XG4gIGNvbnN0IFt2ZXJzaW9ucywgc2V0VmVyc2lvbnNdID0gdXNlU3RhdGU8e1xuICAgIGdsb2JhbD86IHN0cmluZyB8IG51bGxcbiAgICBsYXRlc3Q/OiBzdHJpbmcgfCBudWxsXG4gIH0+KHt9KVxuICBjb25zdCBbaGFzTG9jYWxJbnN0YWxsLCBzZXRIYXNMb2NhbEluc3RhbGxdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IHVwZGF0ZVNlbXZlciA9IHVzZVVwZGF0ZU5vdGlmaWNhdGlvbihhdXRvVXBkYXRlclJlc3VsdD8udmVyc2lvbilcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHZvaWQgbG9jYWxJbnN0YWxsYXRpb25FeGlzdHMoKS50aGVuKHNldEhhc0xvY2FsSW5zdGFsbClcbiAgfSwgW10pXG5cbiAgLy8gVHJhY2sgbGF0ZXN0IGlzVXBkYXRpbmcgdmFsdWUgaW4gYSByZWYgc28gdGhlIG1lbW9pemVkIGNoZWNrRm9yVXBkYXRlc1xuICAvLyBjYWxsYmFjayBhbHdheXMgc2VlcyB0aGUgY3VycmVudCB2YWx1ZS4gV2l0aG91dCB0aGlzLCB0aGUgMzAtbWludXRlXG4gIC8vIGludGVydmFsIGZpcmVzIHdpdGggYSBzdGFsZSBjbG9zdXJlIHdoZXJlIGlzVXBkYXRpbmcgaXMgZmFsc2UsIGFsbG93aW5nXG4gIC8vIGEgY29uY3VycmVudCBpbnN0YWxsR2xvYmFsUGFja2FnZSgpIHRvIHJ1biB3aGlsZSBvbmUgaXMgYWxyZWFkeSBpblxuICAvLyBwcm9ncmVzcy5cbiAgY29uc3QgaXNVcGRhdGluZ1JlZiA9IHVzZVJlZihpc1VwZGF0aW5nKVxuICBpc1VwZGF0aW5nUmVmLmN1cnJlbnQgPSBpc1VwZGF0aW5nXG5cbiAgY29uc3QgY2hlY2tGb3JVcGRhdGVzID0gUmVhY3QudXNlQ2FsbGJhY2soYXN5bmMgKCkgPT4ge1xuICAgIGlmIChpc1VwZGF0aW5nUmVmLmN1cnJlbnQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmIChcbiAgICAgIFwicHJvZHVjdGlvblwiID09PSAndGVzdCcgfHxcbiAgICAgIFwicHJvZHVjdGlvblwiID09PSAnZGV2ZWxvcG1lbnQnXG4gICAgKSB7XG4gICAgICBsb2dGb3JEZWJ1Z2dpbmcoXG4gICAgICAgICdBdXRvVXBkYXRlcjogU2tpcHBpbmcgdXBkYXRlIGNoZWNrIGluIHRlc3QvZGV2IGVudmlyb25tZW50JyxcbiAgICAgIClcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IGN1cnJlbnRWZXJzaW9uID0gTUFDUk8uVkVSU0lPTlxuICAgIGNvbnN0IGNoYW5uZWwgPSBnZXRJbml0aWFsU2V0dGluZ3MoKT8uYXV0b1VwZGF0ZXNDaGFubmVsID8/ICdsYXRlc3QnXG4gICAgbGV0IGxhdGVzdFZlcnNpb24gPSBhd2FpdCBnZXRMYXRlc3RWZXJzaW9uKGNoYW5uZWwpXG4gICAgY29uc3QgaXNEaXNhYmxlZCA9IGlzQXV0b1VwZGF0ZXJEaXNhYmxlZCgpXG5cbiAgICAvLyBDaGVjayBpZiBtYXggdmVyc2lvbiBpcyBzZXQgKHNlcnZlci1zaWRlIGtpbGwgc3dpdGNoIGZvciBhdXRvLXVwZGF0ZXMpXG4gICAgY29uc3QgbWF4VmVyc2lvbiA9IGF3YWl0IGdldE1heFZlcnNpb24oKVxuICAgIGlmIChtYXhWZXJzaW9uICYmIGxhdGVzdFZlcnNpb24gJiYgZ3QobGF0ZXN0VmVyc2lvbiwgbWF4VmVyc2lvbikpIHtcbiAgICAgIGxvZ0ZvckRlYnVnZ2luZyhcbiAgICAgICAgYEF1dG9VcGRhdGVyOiBtYXhWZXJzaW9uICR7bWF4VmVyc2lvbn0gaXMgc2V0LCBjYXBwaW5nIHVwZGF0ZSBmcm9tICR7bGF0ZXN0VmVyc2lvbn0gdG8gJHttYXhWZXJzaW9ufWAsXG4gICAgICApXG4gICAgICBpZiAoZ3RlKGN1cnJlbnRWZXJzaW9uLCBtYXhWZXJzaW9uKSkge1xuICAgICAgICBsb2dGb3JEZWJ1Z2dpbmcoXG4gICAgICAgICAgYEF1dG9VcGRhdGVyOiBjdXJyZW50IHZlcnNpb24gJHtjdXJyZW50VmVyc2lvbn0gaXMgYWxyZWFkeSBhdCBvciBhYm92ZSBtYXhWZXJzaW9uICR7bWF4VmVyc2lvbn0sIHNraXBwaW5nIHVwZGF0ZWAsXG4gICAgICAgIClcbiAgICAgICAgc2V0VmVyc2lvbnMoeyBnbG9iYWw6IGN1cnJlbnRWZXJzaW9uLCBsYXRlc3Q6IGxhdGVzdFZlcnNpb24gfSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBsYXRlc3RWZXJzaW9uID0gbWF4VmVyc2lvblxuICAgIH1cblxuICAgIHNldFZlcnNpb25zKHsgZ2xvYmFsOiBjdXJyZW50VmVyc2lvbiwgbGF0ZXN0OiBsYXRlc3RWZXJzaW9uIH0pXG5cbiAgICAvLyBDaGVjayBpZiB1cGRhdGUgbmVlZGVkIGFuZCBwZXJmb3JtIHVwZGF0ZVxuICAgIGlmIChcbiAgICAgICFpc0Rpc2FibGVkICYmXG4gICAgICBjdXJyZW50VmVyc2lvbiAmJlxuICAgICAgbGF0ZXN0VmVyc2lvbiAmJlxuICAgICAgIWd0ZShjdXJyZW50VmVyc2lvbiwgbGF0ZXN0VmVyc2lvbikgJiZcbiAgICAgICFzaG91bGRTa2lwVmVyc2lvbihsYXRlc3RWZXJzaW9uKVxuICAgICkge1xuICAgICAgY29uc3Qgc3RhcnRUaW1lID0gRGF0ZS5ub3coKVxuICAgICAgb25DaGFuZ2VJc1VwZGF0aW5nKHRydWUpXG5cbiAgICAgIC8vIFJlbW92ZSBuYXRpdmUgaW5zdGFsbGVyIHN5bWxpbmsgc2luY2Ugd2UncmUgdXNpbmcgSlMtYmFzZWQgdXBkYXRlc1xuICAgICAgLy8gQnV0IG9ubHkgaWYgdXNlciBoYXNuJ3QgbWlncmF0ZWQgdG8gbmF0aXZlIGluc3RhbGxhdGlvblxuICAgICAgY29uc3QgY29uZmlnID0gZ2V0R2xvYmFsQ29uZmlnKClcbiAgICAgIGlmIChjb25maWcuaW5zdGFsbE1ldGhvZCAhPT0gJ25hdGl2ZScpIHtcbiAgICAgICAgYXdhaXQgcmVtb3ZlSW5zdGFsbGVkU3ltbGluaygpXG4gICAgICB9XG5cbiAgICAgIC8vIERldGVjdCBhY3R1YWwgcnVubmluZyBpbnN0YWxsYXRpb24gdHlwZVxuICAgICAgY29uc3QgaW5zdGFsbGF0aW9uVHlwZSA9IGF3YWl0IGdldEN1cnJlbnRJbnN0YWxsYXRpb25UeXBlKClcbiAgICAgIGxvZ0ZvckRlYnVnZ2luZyhcbiAgICAgICAgYEF1dG9VcGRhdGVyOiBEZXRlY3RlZCBpbnN0YWxsYXRpb24gdHlwZTogJHtpbnN0YWxsYXRpb25UeXBlfWAsXG4gICAgICApXG5cbiAgICAgIC8vIFNraXAgdXBkYXRlIGZvciBkZXZlbG9wbWVudCBidWlsZHNcbiAgICAgIGlmIChpbnN0YWxsYXRpb25UeXBlID09PSAnZGV2ZWxvcG1lbnQnKSB7XG4gICAgICAgIGxvZ0ZvckRlYnVnZ2luZygnQXV0b1VwZGF0ZXI6IENhbm5vdCBhdXRvLXVwZGF0ZSBkZXZlbG9wbWVudCBidWlsZCcpXG4gICAgICAgIG9uQ2hhbmdlSXNVcGRhdGluZyhmYWxzZSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIC8vIENob29zZSB0aGUgYXBwcm9wcmlhdGUgdXBkYXRlIG1ldGhvZCBiYXNlZCBvbiB3aGF0J3MgYWN0dWFsbHkgcnVubmluZ1xuICAgICAgbGV0IGluc3RhbGxTdGF0dXM6IEluc3RhbGxTdGF0dXNcbiAgICAgIGxldCB1cGRhdGVNZXRob2Q6ICdsb2NhbCcgfCAnZ2xvYmFsJ1xuXG4gICAgICBpZiAoaW5zdGFsbGF0aW9uVHlwZSA9PT0gJ25wbS1sb2NhbCcpIHtcbiAgICAgICAgLy8gVXNlIGxvY2FsIHVwZGF0ZSBmb3IgbG9jYWwgaW5zdGFsbGF0aW9uc1xuICAgICAgICBsb2dGb3JEZWJ1Z2dpbmcoJ0F1dG9VcGRhdGVyOiBVc2luZyBsb2NhbCB1cGRhdGUgbWV0aG9kJylcbiAgICAgICAgdXBkYXRlTWV0aG9kID0gJ2xvY2FsJ1xuICAgICAgICBpbnN0YWxsU3RhdHVzID0gYXdhaXQgaW5zdGFsbE9yVXBkYXRlQ2xhdWRlUGFja2FnZShjaGFubmVsKVxuICAgICAgfSBlbHNlIGlmIChpbnN0YWxsYXRpb25UeXBlID09PSAnbnBtLWdsb2JhbCcpIHtcbiAgICAgICAgLy8gVXNlIGdsb2JhbCB1cGRhdGUgZm9yIGdsb2JhbCBpbnN0YWxsYXRpb25zXG4gICAgICAgIGxvZ0ZvckRlYnVnZ2luZygnQXV0b1VwZGF0ZXI6IFVzaW5nIGdsb2JhbCB1cGRhdGUgbWV0aG9kJylcbiAgICAgICAgdXBkYXRlTWV0aG9kID0gJ2dsb2JhbCdcbiAgICAgICAgaW5zdGFsbFN0YXR1cyA9IGF3YWl0IGluc3RhbGxHbG9iYWxQYWNrYWdlKClcbiAgICAgIH0gZWxzZSBpZiAoaW5zdGFsbGF0aW9uVHlwZSA9PT0gJ25hdGl2ZScpIHtcbiAgICAgICAgLy8gVGhpcyBzaG91bGRuJ3QgaGFwcGVuIC0gbmF0aXZlIHNob3VsZCB1c2UgTmF0aXZlQXV0b1VwZGF0ZXJcbiAgICAgICAgbG9nRm9yRGVidWdnaW5nKFxuICAgICAgICAgICdBdXRvVXBkYXRlcjogVW5leHBlY3RlZCBuYXRpdmUgaW5zdGFsbGF0aW9uIGluIG5vbi1uYXRpdmUgdXBkYXRlcicsXG4gICAgICAgIClcbiAgICAgICAgb25DaGFuZ2VJc1VwZGF0aW5nKGZhbHNlKVxuICAgICAgICByZXR1cm5cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIEZhbGxiYWNrIHRvIGNvbmZpZy1iYXNlZCBkZXRlY3Rpb24gZm9yIHVua25vd24gdHlwZXNcbiAgICAgICAgbG9nRm9yRGVidWdnaW5nKFxuICAgICAgICAgIGBBdXRvVXBkYXRlcjogVW5rbm93biBpbnN0YWxsYXRpb24gdHlwZSwgZmFsbGluZyBiYWNrIHRvIGNvbmZpZ2AsXG4gICAgICAgIClcbiAgICAgICAgY29uc3QgaXNNaWdyYXRlZCA9IGNvbmZpZy5pbnN0YWxsTWV0aG9kID09PSAnbG9jYWwnXG4gICAgICAgIHVwZGF0ZU1ldGhvZCA9IGlzTWlncmF0ZWQgPyAnbG9jYWwnIDogJ2dsb2JhbCdcblxuICAgICAgICBpZiAoaXNNaWdyYXRlZCkge1xuICAgICAgICAgIGluc3RhbGxTdGF0dXMgPSBhd2FpdCBpbnN0YWxsT3JVcGRhdGVDbGF1ZGVQYWNrYWdlKGNoYW5uZWwpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaW5zdGFsbFN0YXR1cyA9IGF3YWl0IGluc3RhbGxHbG9iYWxQYWNrYWdlKClcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBvbkNoYW5nZUlzVXBkYXRpbmcoZmFsc2UpXG5cbiAgICAgIGlmIChpbnN0YWxsU3RhdHVzID09PSAnc3VjY2VzcycpIHtcbiAgICAgICAgbG9nRXZlbnQoJ3Rlbmd1X2F1dG9fdXBkYXRlcl9zdWNjZXNzJywge1xuICAgICAgICAgIGZyb21WZXJzaW9uOlxuICAgICAgICAgICAgY3VycmVudFZlcnNpb24gYXMgQW5hbHl0aWNzTWV0YWRhdGFfSV9WRVJJRklFRF9USElTX0lTX05PVF9DT0RFX09SX0ZJTEVQQVRIUyxcbiAgICAgICAgICB0b1ZlcnNpb246XG4gICAgICAgICAgICBsYXRlc3RWZXJzaW9uIGFzIEFuYWx5dGljc01ldGFkYXRhX0lfVkVSSUZJRURfVEhJU19JU19OT1RfQ09ERV9PUl9GSUxFUEFUSFMsXG4gICAgICAgICAgZHVyYXRpb25NczogRGF0ZS5ub3coKSAtIHN0YXJ0VGltZSxcbiAgICAgICAgICB3YXNNaWdyYXRlZDogdXBkYXRlTWV0aG9kID09PSAnbG9jYWwnLFxuICAgICAgICAgIGluc3RhbGxhdGlvblR5cGU6XG4gICAgICAgICAgICBpbnN0YWxsYXRpb25UeXBlIGFzIEFuYWx5dGljc01ldGFkYXRhX0lfVkVSSUZJRURfVEhJU19JU19OT1RfQ09ERV9PUl9GSUxFUEFUSFMsXG4gICAgICAgIH0pXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsb2dFdmVudCgndGVuZ3VfYXV0b191cGRhdGVyX2ZhaWwnLCB7XG4gICAgICAgICAgZnJvbVZlcnNpb246XG4gICAgICAgICAgICBjdXJyZW50VmVyc2lvbiBhcyBBbmFseXRpY3NNZXRhZGF0YV9JX1ZFUklGSUVEX1RISVNfSVNfTk9UX0NPREVfT1JfRklMRVBBVEhTLFxuICAgICAgICAgIGF0dGVtcHRlZFZlcnNpb246XG4gICAgICAgICAgICBsYXRlc3RWZXJzaW9uIGFzIEFuYWx5dGljc01ldGFkYXRhX0lfVkVSSUZJRURfVEhJU19JU19OT1RfQ09ERV9PUl9GSUxFUEFUSFMsXG4gICAgICAgICAgc3RhdHVzOlxuICAgICAgICAgICAgaW5zdGFsbFN0YXR1cyBhcyBBbmFseXRpY3NNZXRhZGF0YV9JX1ZFUklGSUVEX1RISVNfSVNfTk9UX0NPREVfT1JfRklMRVBBVEhTLFxuICAgICAgICAgIGR1cmF0aW9uTXM6IERhdGUubm93KCkgLSBzdGFydFRpbWUsXG4gICAgICAgICAgd2FzTWlncmF0ZWQ6IHVwZGF0ZU1ldGhvZCA9PT0gJ2xvY2FsJyxcbiAgICAgICAgICBpbnN0YWxsYXRpb25UeXBlOlxuICAgICAgICAgICAgaW5zdGFsbGF0aW9uVHlwZSBhcyBBbmFseXRpY3NNZXRhZGF0YV9JX1ZFUklGSUVEX1RISVNfSVNfTk9UX0NPREVfT1JfRklMRVBBVEhTLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBvbkF1dG9VcGRhdGVyUmVzdWx0KHtcbiAgICAgICAgdmVyc2lvbjogbGF0ZXN0VmVyc2lvbixcbiAgICAgICAgc3RhdHVzOiBpbnN0YWxsU3RhdHVzLFxuICAgICAgfSlcbiAgICB9XG4gICAgLy8gaXNVcGRhdGluZyBpbnRlbnRpb25hbGx5IG9taXR0ZWQgZnJvbSBkZXBzOyB3ZSByZWFkIGlzVXBkYXRpbmdSZWZcbiAgICAvLyBpbnN0ZWFkIHNvIHRoZSBndWFyZCBpcyBhbHdheXMgY3VycmVudCB3aXRob3V0IGNoYW5naW5nIGNhbGxiYWNrXG4gICAgLy8gaWRlbnRpdHkgKHdoaWNoIHdvdWxkIHJlLXRyaWdnZXIgdGhlIGluaXRpYWwtY2hlY2sgdXNlRWZmZWN0IGJlbG93KS5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXG4gICAgLy8gYmlvbWUtaWdub3JlIGxpbnQvY29ycmVjdG5lc3MvdXNlRXhoYXVzdGl2ZURlcGVuZGVuY2llczogaXNVcGRhdGluZyByZWFkIHZpYSByZWZcbiAgfSwgW29uQXV0b1VwZGF0ZXJSZXN1bHRdKVxuXG4gIC8vIEluaXRpYWwgY2hlY2tcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICB2b2lkIGNoZWNrRm9yVXBkYXRlcygpXG4gIH0sIFtjaGVja0ZvclVwZGF0ZXNdKVxuXG4gIC8vIENoZWNrIGV2ZXJ5IDMwIG1pbnV0ZXNcbiAgdXNlSW50ZXJ2YWwoY2hlY2tGb3JVcGRhdGVzLCAzMCAqIDYwICogMTAwMClcblxuICBpZiAoIWF1dG9VcGRhdGVyUmVzdWx0Py52ZXJzaW9uICYmICghdmVyc2lvbnMuZ2xvYmFsIHx8ICF2ZXJzaW9ucy5sYXRlc3QpKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIGlmICghYXV0b1VwZGF0ZXJSZXN1bHQ/LnZlcnNpb24gJiYgIWlzVXBkYXRpbmcpIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94IGZsZXhEaXJlY3Rpb249XCJyb3dcIiBnYXA9ezF9PlxuICAgICAge3ZlcmJvc2UgJiYgKFxuICAgICAgICA8VGV4dCBkaW1Db2xvciB3cmFwPVwidHJ1bmNhdGVcIj5cbiAgICAgICAgICBnbG9iYWxWZXJzaW9uOiB7dmVyc2lvbnMuZ2xvYmFsfSAmbWlkZG90OyBsYXRlc3RWZXJzaW9uOnsnICd9XG4gICAgICAgICAge3ZlcnNpb25zLmxhdGVzdH1cbiAgICAgICAgPC9UZXh0PlxuICAgICAgKX1cbiAgICAgIHtpc1VwZGF0aW5nID8gKFxuICAgICAgICA8PlxuICAgICAgICAgIDxCb3g+XG4gICAgICAgICAgICA8VGV4dCBjb2xvcj1cInRleHRcIiBkaW1Db2xvciB3cmFwPVwidHJ1bmNhdGVcIj5cbiAgICAgICAgICAgICAgQXV0by11cGRhdGluZ+KAplxuICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgIDwvQm94PlxuICAgICAgICA8Lz5cbiAgICAgICkgOiAoXG4gICAgICAgIGF1dG9VcGRhdGVyUmVzdWx0Py5zdGF0dXMgPT09ICdzdWNjZXNzJyAmJlxuICAgICAgICBzaG93U3VjY2Vzc01lc3NhZ2UgJiZcbiAgICAgICAgdXBkYXRlU2VtdmVyICYmIChcbiAgICAgICAgICA8VGV4dCBjb2xvcj1cInN1Y2Nlc3NcIiB3cmFwPVwidHJ1bmNhdGVcIj5cbiAgICAgICAgICAgIOKckyBVcGRhdGUgaW5zdGFsbGVkIMK3IFJlc3RhcnQgdG8gYXBwbHlcbiAgICAgICAgICA8L1RleHQ+XG4gICAgICAgIClcbiAgICAgICl9XG4gICAgICB7KGF1dG9VcGRhdGVyUmVzdWx0Py5zdGF0dXMgPT09ICdpbnN0YWxsX2ZhaWxlZCcgfHxcbiAgICAgICAgYXV0b1VwZGF0ZXJSZXN1bHQ/LnN0YXR1cyA9PT0gJ25vX3Blcm1pc3Npb25zJykgJiYgKFxuICAgICAgICA8VGV4dCBjb2xvcj1cImVycm9yXCIgd3JhcD1cInRydW5jYXRlXCI+XG4gICAgICAgICAg4pyXIEF1dG8tdXBkYXRlIGZhaWxlZCAmbWlkZG90OyBUcnkgPFRleHQgYm9sZD5jbGF1ZGUgZG9jdG9yPC9UZXh0PiBvcnsnICd9XG4gICAgICAgICAgPFRleHQgYm9sZD5cbiAgICAgICAgICAgIHtoYXNMb2NhbEluc3RhbGxcbiAgICAgICAgICAgICAgPyBgY2Qgfi8uY2xhdWRlL2xvY2FsICYmIG5wbSB1cGRhdGUgJHtNQUNSTy5QQUNLQUdFX1VSTH1gXG4gICAgICAgICAgICAgIDogYG5wbSBpIC1nICR7TUFDUk8uUEFDS0FHRV9VUkx9YH1cbiAgICAgICAgICA8L1RleHQ+XG4gICAgICAgIDwvVGV4dD5cbiAgICAgICl9XG4gICAgPC9Cb3g+XG4gIClcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLQSxLQUFLLE1BQU0sT0FBTztBQUM5QixTQUFTQyxTQUFTLEVBQUVDLE1BQU0sRUFBRUMsUUFBUSxRQUFRLE9BQU87QUFDbkQsU0FDRSxLQUFLQywwREFBMEQsRUFDL0RDLFFBQVEsUUFDSCxpQ0FBaUM7QUFDeEMsU0FBU0MsV0FBVyxRQUFRLGFBQWE7QUFDekMsU0FBU0MscUJB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QUFDLEVBQUU7SUFDekUsT0FBTyxJQUFJO0VBQ2I7RUFFQSxJQUFJLENBQUNSLGlCQUFpQixFQUFFWSxPQUFPLElBQUksQ0FBQ2YsVUFBVSxFQUFFO0lBQzlDLE9BQU8sSUFBSTtFQUNiO0VBRUEsT0FDRSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNwQyxNQUFNLENBQUNLLE9BQU8sSUFDTixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVU7QUFDdEMseUJBQXlCLENBQUNHLFFBQVEsQ0FBQ0UsTUFBTSxDQUFDLHdCQUF3QixDQUFDLEdBQUc7QUFDdEUsVUFBVSxDQUFDRixRQUFRLENBQUNHLE1BQU07QUFDMUIsUUFBUSxFQUFFLElBQUksQ0FDUDtBQUNQLE1BQU0sQ0FBQ1gsVUFBVSxHQUNUO0FBQ1IsVUFBVSxDQUFDLEdBQUc7QUFDZCxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVO0FBQ3ZEO0FBQ0EsWUFBWSxFQUFFLElBQUk7QUFDbEIsVUFBVSxFQUFFLEdBQUc7QUFDZixRQUFRLEdBQUcsR0FFSEcsaUJBQWlCLEVBQUV3QyxNQUFNLEtBQUssU0FBUyxJQUN2Q3ZDLGtCQUFrQixJQUNsQlUsWUFBWSxJQUNWLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVU7QUFDL0M7QUFDQSxVQUFVLEVBQUUsSUFBSSxDQUVUO0FBQ1AsTUFBTSxDQUFDLENBQUNYLGlCQUFpQixFQUFFd0MsTUFBTSxLQUFLLGdCQUFnQixJQUM5Q3hDLGlCQUFpQixFQUFFd0MsTUFBTSxLQUFLLGdCQUFnQixLQUM5QyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVO0FBQzNDLDRDQUE0QyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRztBQUNsRixVQUFVLENBQUMsSUFBSSxDQUFDLElBQUk7QUFDcEIsWUFBWSxDQUFDL0IsZUFBZSxHQUNaLG9DQUFvQ1UsS0FBSyxDQUFDc0IsV0FBVyxFQUFFLEdBQ3ZELFlBQVl0QixLQUFLLENBQUNzQixXQUFXLEVBQUU7QUFDL0MsVUFBVSxFQUFFLElBQUk7QUFDaEIsUUFBUSxFQUFFLElBQUksQ0FDUDtBQUNQLElBQUksRUFBRSxHQUFHLENBQUM7QUFFViIsImlnbm9yZUxpc3QiOltdfQ== \ No newline at end of file diff --git a/src/components/AutoUpdaterWrapper.tsx b/src/components/AutoUpdaterWrapper.tsx index d812ec36..20532a1f 100644 --- a/src/components/AutoUpdaterWrapper.tsx +++ b/src/components/AutoUpdaterWrapper.tsx @@ -1,91 +1,10 @@ -import { c as _c } from "react/compiler-runtime"; -import { feature } from 'bun:bundle'; +/** + * AutoUpdaterWrapper stub for claudium + * All auto-update functionality disabled + */ + import * as React from 'react'; -import type { AutoUpdaterResult } from '../utils/autoUpdater.js'; -import { isAutoUpdaterDisabled } from '../utils/config.js'; -import { logForDebugging } from '../utils/debug.js'; -import { getCurrentInstallationType } from '../utils/doctorDiagnostic.js'; -import { AutoUpdater } from './AutoUpdater.js'; -import { NativeAutoUpdater } from './NativeAutoUpdater.js'; -import { PackageManagerAutoUpdater } from './PackageManagerAutoUpdater.js'; -type Props = { - isUpdating: boolean; - onChangeIsUpdating: (isUpdating: boolean) => void; - onAutoUpdaterResult: (autoUpdaterResult: AutoUpdaterResult) => void; - autoUpdaterResult: AutoUpdaterResult | null; - showSuccessMessage: boolean; - verbose: boolean; -}; -export function AutoUpdaterWrapper(t0) { - const $ = _c(17); - const { - isUpdating, - onChangeIsUpdating, - onAutoUpdaterResult, - autoUpdaterResult, - showSuccessMessage, - verbose - } = t0; - const [useNativeInstaller, setUseNativeInstaller] = React.useState(null); - const [isPackageManager, setIsPackageManager] = React.useState(null); - let t1; - let t2; - if ($[0] === Symbol.for("react.memo_cache_sentinel")) { - t1 = () => { - const checkInstallation = async function checkInstallation() { - if (feature("SKIP_DETECTION_WHEN_AUTOUPDATES_DISABLED") && isAutoUpdaterDisabled()) { - logForDebugging("AutoUpdaterWrapper: Skipping detection, auto-updates disabled"); - return; - } - const installationType = await getCurrentInstallationType(); - logForDebugging(`AutoUpdaterWrapper: Installation type: ${installationType}`); - setUseNativeInstaller(installationType === "native"); - setIsPackageManager(installationType === "package-manager"); - }; - checkInstallation(); - }; - t2 = []; - $[0] = t1; - $[1] = t2; - } else { - t1 = $[0]; - t2 = $[1]; - } - React.useEffect(t1, t2); - if (useNativeInstaller === null || isPackageManager === null) { - return null; - } - if (isPackageManager) { - let t3; - if ($[2] !== autoUpdaterResult || $[3] !== isUpdating || $[4] !== onAutoUpdaterResult || $[5] !== onChangeIsUpdating || $[6] !== showSuccessMessage || $[7] !== verbose) { - t3 = ; - $[2] = autoUpdaterResult; - $[3] = isUpdating; - $[4] = onAutoUpdaterResult; - $[5] = onChangeIsUpdating; - $[6] = showSuccessMessage; - $[7] = verbose; - $[8] = t3; - } else { - t3 = $[8]; - } - return t3; - } - const Updater = useNativeInstaller ? NativeAutoUpdater : AutoUpdater; - let t3; - if ($[9] !== Updater || $[10] !== autoUpdaterResult || $[11] !== isUpdating || $[12] !== onAutoUpdaterResult || $[13] !== onChangeIsUpdating || $[14] !== showSuccessMessage || $[15] !== verbose) { - t3 = ; - $[9] = Updater; - $[10] = autoUpdaterResult; - $[11] = isUpdating; - $[12] = onAutoUpdaterResult; - $[13] = onChangeIsUpdating; - $[14] = showSuccessMessage; - $[15] = verbose; - $[16] = t3; - } else { - t3 = $[16]; - } - return t3; -} -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmZWF0dXJlIiwiUmVhY3QiLCJBdXRvVXBkYXRlclJlc3VsdCIsImlzQXV0b1VwZGF0ZXJEaXNhYmxlZCIsImxvZ0ZvckRlYnVnZ2luZyIsImdldEN1cnJlbnRJbnN0YWxsYXRpb25UeXBlIiwiQXV0b1VwZGF0ZXIiLCJOYXRpdmVBdXRvVXBkYXRlciIsIlBhY2thZ2VNYW5hZ2VyQXV0b1VwZGF0ZXIiLCJQcm9wcyIsImlzVXBkYXRpbmciLCJvbkNoYW5nZUlzVXBkYXRpbmciLCJvbkF1dG9VcGRhdGVyUmVzdWx0IiwiYXV0b1VwZGF0ZXJSZXN1bHQiLCJzaG93U3VjY2Vzc01lc3NhZ2UiLCJ2ZXJib3NlIiwiQXV0b1VwZGF0ZXJXcmFwcGVyIiwidDAiLCIkIiwiX2MiLCJ1c2VOYXRpdmVJbnN0YWxsZXIiLCJzZXRVc2VOYXRpdmVJbnN0YWxsZXIiLCJ1c2VTdGF0ZSIsImlzUGFja2FnZU1hbmFnZXIiLCJzZXRJc1BhY2thZ2VNYW5hZ2VyIiwidDEiLCJ0MiIsIlN5bWJvbCIsImZvciIsImNoZWNrSW5zdGFsbGF0aW9uIiwiaW5zdGFsbGF0aW9uVHlwZSIsInVzZUVmZmVjdCIsInQzIiwiVXBkYXRlciJdLCJzb3VyY2VzIjpbIkF1dG9VcGRhdGVyV3JhcHBlci50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZmVhdHVyZSB9IGZyb20gJ2J1bjpidW5kbGUnXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB0eXBlIHsgQXV0b1VwZGF0ZXJSZXN1bHQgfSBmcm9tICcuLi91dGlscy9hdXRvVXBkYXRlci5qcydcbmltcG9ydCB7IGlzQXV0b1VwZGF0ZXJEaXNhYmxlZCB9IGZyb20gJy4uL3V0aWxzL2NvbmZpZy5qcydcbmltcG9ydCB7IGxvZ0ZvckRlYnVnZ2luZyB9IGZyb20gJy4uL3V0aWxzL2RlYnVnLmpzJ1xuaW1wb3J0IHsgZ2V0Q3VycmVudEluc3RhbGxhdGlvblR5cGUgfSBmcm9tICcuLi91dGlscy9kb2N0b3JEaWFnbm9zdGljLmpzJ1xuaW1wb3J0IHsgQXV0b1VwZGF0ZXIgfSBmcm9tICcuL0F1dG9VcGRhdGVyLmpzJ1xuaW1wb3J0IHsgTmF0aXZlQXV0b1VwZGF0ZXIgfSBmcm9tICcuL05hdGl2ZUF1dG9VcGRhdGVyLmpzJ1xuaW1wb3J0IHsgUGFja2FnZU1hbmFnZXJBdXRvVXBkYXRlciB9IGZyb20gJy4vUGFja2FnZU1hbmFnZXJBdXRvVXBkYXRlci5qcydcblxudHlwZSBQcm9wcyA9IHtcbiAgaXNVcGRhdGluZzogYm9vbGVhblxuICBvbkNoYW5nZUlzVXBkYXRpbmc6IChpc1VwZGF0aW5nOiBib29sZWFuKSA9PiB2b2lkXG4gIG9uQXV0b1VwZGF0ZXJSZXN1bHQ6IChhdXRvVXBkYXRlclJlc3VsdDogQXV0b1VwZGF0ZXJSZXN1bHQpID0+IHZvaWRcbiAgYXV0b1VwZGF0ZXJSZXN1bHQ6IEF1dG9VcGRhdGVyUmVzdWx0IHwgbnVsbFxuICBzaG93U3VjY2Vzc01lc3NhZ2U6IGJvb2xlYW5cbiAgdmVyYm9zZTogYm9vbGVhblxufVxuXG5leHBvcnQgZnVuY3Rpb24gQXV0b1VwZGF0ZXJXcmFwcGVyKHtcbiAgaXNVcGRhdGluZyxcbiAgb25DaGFuZ2VJc1VwZGF0aW5nLFxuICBvbkF1dG9VcGRhdGVyUmVzdWx0LFxuICBhdXRvVXBkYXRlclJlc3VsdCxcbiAgc2hvd1N1Y2Nlc3NNZXNzYWdlLFxuICB2ZXJib3NlLFxufTogUHJvcHMpOiBSZWFjdC5SZWFjdE5vZGUge1xuICBjb25zdCBbdXNlTmF0aXZlSW5zdGFsbGVyLCBzZXRVc2VOYXRpdmVJbnN0YWxsZXJdID0gUmVhY3QudXNlU3RhdGU8XG4gICAgYm9vbGVhbiB8IG51bGxcbiAgPihudWxsKVxuICBjb25zdCBbaXNQYWNrYWdlTWFuYWdlciwgc2V0SXNQYWNrYWdlTWFuYWdlcl0gPSBSZWFjdC51c2VTdGF0ZTxcbiAgICBib29sZWFuIHwgbnVsbFxuICA+KG51bGwpXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBhc3luYyBmdW5jdGlvbiBjaGVja0luc3RhbGxhdGlvbigpIHtcbiAgICAgIC8vIFNraXAgaW5zdGFsbGF0aW9uIHR5cGUgZGV0ZWN0aW9uIGlmIGF1dG8tdXBkYXRlcyBhcmUgZGlzYWJsZWQgKGFudC1vbmx5KVxuICAgICAgLy8gVGhpcyBhdm9pZHMgcG90ZW50aWFsbHkgc2xvdyBwYWNrYWdlIG1hbmFnZXIgZGV0ZWN0aW9uIChzcGF3blN5bmMgY2FsbHMpXG4gICAgICBpZiAoXG4gICAgICAgIGZlYXR1cmUoJ1NLSVBfREVURUNUSU9OX1dIRU5fQVVUT1VQREFURVNfRElTQUJMRUQnKSAmJlxuICAgICAgICBpc0F1dG9VcGRhdGVyRGlzYWJsZWQoKVxuICAgICAgKSB7XG4gICAgICAgIGxvZ0ZvckRlYnVnZ2luZyhcbiAgICAgICAgICAnQXV0b1VwZGF0ZXJXcmFwcGVyOiBTa2lwcGluZyBkZXRlY3Rpb24sIGF1dG8tdXBkYXRlcyBkaXNhYmxlZCcsXG4gICAgICAgIClcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGluc3RhbGxhdGlvblR5cGUgPSBhd2FpdCBnZXRDdXJyZW50SW5zdGFsbGF0aW9uVHlwZSgpXG4gICAgICBsb2dGb3JEZWJ1Z2dpbmcoXG4gICAgICAgIGBBdXRvVXBkYXRlcldyYXBwZXI6IEluc3RhbGxhdGlvbiB0eXBlOiAke2luc3RhbGxhdGlvblR5cGV9YCxcbiAgICAgIClcbiAgICAgIHNldFVzZU5hdGl2ZUluc3RhbGxlcihpbnN0YWxsYXRpb25UeXBlID09PSAnbmF0aXZlJylcbiAgICAgIHNldElzUGFja2FnZU1hbmFnZXIoaW5zdGFsbGF0aW9uVHlwZSA9PT0gJ3BhY2thZ2UtbWFuYWdlcicpXG4gICAgfVxuXG4gICAgdm9pZCBjaGVja0luc3RhbGxhdGlvbigpXG4gIH0sIFtdKVxuXG4gIC8vIERvbid0IHJlbmRlciB1bnRpbCB3ZSBrbm93IHRoZSBpbnN0YWxsYXRpb24gdHlwZVxuICBpZiAodXNlTmF0aXZlSW5zdGFsbGVyID09PSBudWxsIHx8IGlzUGFja2FnZU1hbmFnZXIgPT09IG51bGwpIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgaWYgKGlzUGFja2FnZU1hbmFnZXIpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPFBhY2thZ2VNYW5hZ2VyQXV0b1VwZGF0ZXJcbiAgICAgICAgdmVyYm9zZT17dmVyYm9zZX1cbiAgICAgICAgb25BdXRvVXBkYXRlclJlc3VsdD17b25BdXRvVXBkYXRlclJlc3VsdH1cbiAgICAgICAgYXV0b1VwZGF0ZXJSZXN1bHQ9e2F1dG9VcGRhdGVyUmVzdWx0fVxuICAgICAgICBpc1VwZGF0aW5nPXtpc1VwZGF0aW5nfVxuICAgICAgICBvbkNoYW5nZUlzVXBkYXRpbmc9e29uQ2hhbmdlSXNVcGRhdGluZ31cbiAgICAgICAgc2hvd1N1Y2Nlc3NNZXNzYWdlPXtzaG93U3VjY2Vzc01lc3NhZ2V9XG4gICAgICAvPlxuICAgIClcbiAgfVxuXG4gIGNvbnN0IFVwZGF0ZXIgPSB1c2VOYXRpdmVJbnN0YWxsZXIgPyBOYXRpdmVBdXRvVXBkYXRlciA6IEF1dG9VcGRhdGVyXG5cbiAgcmV0dXJuIChcbiAgICA8VXBkYXRlclxuICAgICAgdmVyYm9zZT17dmVyYm9zZX1cbiAgICAgIG9uQXV0b1VwZGF0ZXJSZXN1bHQ9e29uQXV0b1VwZGF0ZXJSZXN1bHR9XG4gICAgICBhdXRvVXBkYXRlclJlc3VsdD17YXV0b1VwZGF0ZXJSZXN1bHR9XG4gICAgICBpc1VwZGF0aW5nPXtpc1VwZGF0aW5nfVxuICAgICAgb25DaGFuZ2VJc1VwZGF0aW5nPXtvbkNoYW5nZUlzVXBkYXRpbmd9XG4gICAgICBzaG93U3VjY2Vzc01lc3NhZ2U9e3Nob3dTdWNjZXNzTWVzc2FnZX1cbiAgICAvPlxuICApXG59XG4iXSwibWFwcGluZ3MiOiI7QUFBQSxTQUFTQSxPQUFPLFFBQVEsWUFBWTtBQUNwQyxPQUFPLEtBQUtDLEtBQUssTUFBTSxPQUFPO0FBQzlCLGNBQWNDLGlCQUFpQixRQUFRLHlCQUF5QjtBQUNoRSxTQUFTQyxxQkFBcUIsUUFBUSxvQkFBb0I7QUFDMUQsU0FBU0MsZUFBZSxRQUFRLG1CQUFtQjtBQUNuRCxTQUFTQywwQkFBMEIsUUFBUSw4QkFBOEI7QUFDekUsU0FBU0MsV0FBVyxRQUFRLGtCQUFrQjtBQUM5QyxTQUFTQyxpQkFBaUIsUUFBUSx3QkFBd0I7QUFDMUQsU0FBU0MseUJBQXlCLFFBQVEsZ0NBQWdDO0FBRTFFLEtBQUtDLEtBQUssR0FBRztFQUNYQyxVQUFVLEVBQUUsT0FBTztFQUNuQkMsa0JBQWtCLEVBQUUsQ0FBQ0QsVUFBVSxFQUFFLE9BQU8sRUFBRSxHQUFHLElBQUk7RUFDakRFLG1CQUFtQixFQUFFLENBQUNDLGlCQUFpQixFQUFFWCxpQkFBaUIsRUFBRSxHQUFHLElBQUk7RUFDbkVXLGlCQUFpQixFQUFFWCxpQkFBaUIsR0FBRyxJQUFJO0VBQzNDWSxrQkFBa0IsRUFBRSxPQUFPO0VBQzNCQyxPQUFPLEVBQUUsT0FBTztBQUNsQixDQUFDO0FBRUQsT0FBTyxTQUFBQyxtQkFBQUMsRUFBQTtFQUFBLE1BQUFDLENBQUEsR0FBQUMsRUFBQTtFQUE0QjtJQUFBVCxVQUFBO0lBQUFDLGtCQUFBO0lBQUFDLG1CQUFBO0lBQUFDLGlCQUFBO0lBQUFDLGtCQUFBO0lBQUFDO0VBQUEsSUFBQUUsRUFPM0I7RUFDTixPQUFBRyxrQkFBQSxFQUFBQyxxQkFBQSxJQUFvRHBCLEtBQUssQ0FBQXFCLFFBQVMsQ0FFaEUsSUFBSSxDQUFDO0VBQ1AsT0FBQUMsZ0JBQUEsRUFBQUMsbUJBQUEsSUFBZ0R2QixLQUFLLENBQUFxQixRQUFTLENBRTVELElBQUksQ0FBQztFQUFBLElBQUFHLEVBQUE7RUFBQSxJQUFBQyxFQUFBO0VBQUEsSUFBQVIsQ0FBQSxRQUFBUyxNQUFBLENBQUFDLEdBQUE7SUFFU0gsRUFBQSxHQUFBQSxDQUFBO01BQ2QsTUFBQUksaUJBQUEsa0JBQUFBLGtCQUFBO1FBR0UsSUFDRTdCLE9BQU8sQ0FBQywwQ0FDYyxDQUFDLElBQXZCRyxxQkFBcUIsQ0FBQyxDQUFDO1VBRXZCQyxlQUFlLENBQ2IsK0RBQ0YsQ0FBQztVQUFBO1FBQUE7UUFJSCxNQUFBMEIsZ0JBQUEsR0FBeUIsTUFBTXpCLDBCQUEwQixDQUFDLENBQUM7UUFDM0RELGVBQWUsQ0FDYiwwQ0FBMEMwQixnQkFBZ0IsRUFDNUQsQ0FBQztRQUNEVCxxQkFBcUIsQ0FBQ1MsZ0JBQWdCLEtBQUssUUFBUSxDQUFDO1FBQ3BETixtQkFBbUIsQ0FBQ00sZ0JBQWdCLEtBQUssaUJBQWlCLENBQUM7TUFBQSxDQUM1RDtNQUVJRCxpQkFBaUIsQ0FBQyxDQUFDO0lBQUEsQ0FDekI7SUFBRUgsRUFBQSxLQUFFO0lBQUFSLENBQUEsTUFBQU8sRUFBQTtJQUFBUCxDQUFBLE1BQUFRLEVBQUE7RUFBQTtJQUFBRCxFQUFBLEdBQUFQLENBQUE7SUFBQVEsRUFBQSxHQUFBUixDQUFBO0VBQUE7RUF2QkxqQixLQUFLLENBQUE4QixTQUFVLENBQUNOLEVBdUJmLEVBQUVDLEVBQUUsQ0FBQztFQUdOLElBQUlOLGtCQUFrQixLQUFLLElBQWlDLElBQXpCRyxnQkFBZ0IsS0FBSyxJQUFJO0lBQUEsT0FDbkQsSUFBSTtFQUFBO0VBR2IsSUFBSUEsZ0JBQWdCO0lBQUEsSUFBQVMsRUFBQTtJQUFBLElBQUFkLENBQUEsUUFBQUwsaUJBQUEsSUFBQUssQ0FBQSxRQUFBUixVQUFBLElBQUFRLENBQUEsUUFBQU4sbUJBQUEsSUFBQU0sQ0FBQSxRQUFBUCxrQkFBQSxJQUFBTyxDQUFBLFFBQUFKLGtCQUFBLElBQUFJLENBQUEsUUFBQUgsT0FBQTtNQUVoQmlCLEVBQUEsSUFBQyx5QkFBeUIsQ0FDZmpCLE9BQU8sQ0FBUEEsUUFBTSxDQUFDLENBQ0tILG1CQUFtQixDQUFuQkEsb0JBQWtCLENBQUMsQ0FDckJDLGlCQUFpQixDQUFqQkEsa0JBQWdCLENBQUMsQ0FDeEJILFVBQVUsQ0FBVkEsV0FBUyxDQUFDLENBQ0ZDLGtCQUFrQixDQUFsQkEsbUJBQWlCLENBQUMsQ0FDbEJHLGtCQUFrQixDQUFsQkEsbUJBQWlCLENBQUMsR0FDdEM7TUFBQUksQ0FBQSxNQUFBTCxpQkFBQTtNQUFBSyxDQUFBLE1BQUFSLFVBQUE7TUFBQVEsQ0FBQSxNQUFBTixtQkFBQTtNQUFBTSxDQUFBLE1BQUFQLGtCQUFBO01BQUFPLENBQUEsTUFBQUosa0JBQUE7TUFBQUksQ0FBQSxNQUFBSCxPQUFBO01BQUFHLENBQUEsTUFBQWMsRUFBQTtJQUFBO01BQUFBLEVBQUEsR0FBQWQsQ0FBQTtJQUFBO0lBQUEsT0FQRmMsRUFPRTtFQUFBO0VBSU4sTUFBQUMsT0FBQSxHQUFnQmIsa0JBQWtCLEdBQWxCYixpQkFBb0QsR0FBcERELFdBQW9EO0VBQUEsSUFBQTBCLEVBQUE7RUFBQSxJQUFBZCxDQUFBLFFBQUFlLE9BQUEsSUFBQWYsQ0FBQSxTQUFBTCxpQkFBQSxJQUFBSyxDQUFBLFNBQUFSLFVBQUEsSUFBQVEsQ0FBQSxTQUFBTixtQkFBQSxJQUFBTSxDQUFBLFNBQUFQLGtCQUFBLElBQUFPLENBQUEsU0FBQUosa0JBQUEsSUFBQUksQ0FBQSxTQUFBSCxPQUFBO0lBR2xFaUIsRUFBQSxJQUFDLE9BQU8sQ0FDR2pCLE9BQU8sQ0FBUEEsUUFBTSxDQUFDLENBQ0tILG1CQUFtQixDQUFuQkEsb0JBQWtCLENBQUMsQ0FDckJDLGlCQUFpQixDQUFqQkEsa0JBQWdCLENBQUMsQ0FDeEJILFVBQVUsQ0FBVkEsV0FBUyxDQUFDLENBQ0ZDLGtCQUFrQixDQUFsQkEsbUJBQWlCLENBQUMsQ0FDbEJHLGtCQUFrQixDQUFsQkEsbUJBQWlCLENBQUMsR0FDdEM7SUFBQUksQ0FBQSxNQUFBZSxPQUFBO0lBQUFmLENBQUEsT0FBQUwsaUJBQUE7SUFBQUssQ0FBQSxPQUFBUixVQUFBO0lBQUFRLENBQUEsT0FBQU4sbUJBQUE7SUFBQU0sQ0FBQSxPQUFBUCxrQkFBQTtJQUFBTyxDQUFBLE9BQUFKLGtCQUFBO0lBQUFJLENBQUEsT0FBQUgsT0FBQTtJQUFBRyxDQUFBLE9BQUFjLEVBQUE7RUFBQTtJQUFBQSxFQUFBLEdBQUFkLENBQUE7RUFBQTtFQUFBLE9BUEZjLEVBT0U7QUFBQSIsImlnbm9yZUxpc3QiOltdfQ== \ No newline at end of file + +export function AutoUpdaterWrapper(): React.ReactNode { + return null; +} \ No newline at end of file diff --git a/src/components/BypassPermissionsModeDialog.tsx b/src/components/BypassPermissionsModeDialog.tsx index ed09416c..602a54c7 100644 --- a/src/components/BypassPermissionsModeDialog.tsx +++ b/src/components/BypassPermissionsModeDialog.tsx @@ -1,6 +1,6 @@ import { c as _c } from "react/compiler-runtime"; import React, { useCallback } from 'react'; -import { logEvent } from 'src/services/analytics/index.js'; +import { logEvent } from '../services/analytics-stub.js'; import { Box, Link, Newline, Text } from '../ink.js'; import { gracefulShutdownSync } from '../utils/gracefulShutdown.js'; import { updateSettingsForSource } from '../utils/settings/settings.js'; diff --git a/src/components/ClaudeInChromeOnboarding.tsx b/src/components/ClaudeInChromeOnboarding.tsx index 10fb1823..b35a244e 100644 --- a/src/components/ClaudeInChromeOnboarding.tsx +++ b/src/components/ClaudeInChromeOnboarding.tsx @@ -1,6 +1,6 @@ import { c as _c } from "react/compiler-runtime"; import React from 'react'; -import { logEvent } from 'src/services/analytics/index.js'; +import { logEvent } from '../services/analytics-stub.js'; // eslint-disable-next-line custom-rules/prefer-use-keybindings -- enter to continue import { Box, Link, Newline, Text, useInput } from '../ink.js'; import { isChromeExtensionInstalled } from '../utils/claudeInChrome/setup.js'; diff --git a/src/components/ClaudeMdExternalIncludesDialog.tsx b/src/components/ClaudeMdExternalIncludesDialog.tsx index 2428e89f..bf9f700c 100644 --- a/src/components/ClaudeMdExternalIncludesDialog.tsx +++ b/src/components/ClaudeMdExternalIncludesDialog.tsx @@ -1,6 +1,6 @@ import { c as _c } from "react/compiler-runtime"; import React, { useCallback } from 'react'; -import { logEvent } from 'src/services/analytics/index.js'; +import { logEvent } from '../services/analytics-stub.js'; import { Box, Link, Text } from '../ink.js'; import type { ExternalClaudeMdInclude } from '../utils/claudemd.js'; import { saveCurrentProjectConfig } from '../utils/config.js'; diff --git a/src/components/ConsoleOAuthFlow.tsx b/src/components/ConsoleOAuthFlow.tsx index 717697f6..671569d1 100644 --- a/src/components/ConsoleOAuthFlow.tsx +++ b/src/components/ConsoleOAuthFlow.tsx @@ -1,6 +1,6 @@ import { c as _c } from "react/compiler-runtime"; import React, { useCallback, useEffect, useRef, useState } from 'react'; -import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent } from 'src/services/analytics/index.js'; +import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent } from '../services/analytics-stub.js'; import { installOAuthTokens } from '../cli/handlers/auth.js'; import { useTerminalSize } from '../hooks/useTerminalSize.js'; import { setClipboard } from '../ink/termio/osc.js'; diff --git a/src/components/DesktopUpsell/DesktopUpsellStartup.tsx b/src/components/DesktopUpsell/DesktopUpsellStartup.tsx index e919039d..a371eb07 100644 --- a/src/components/DesktopUpsell/DesktopUpsellStartup.tsx +++ b/src/components/DesktopUpsell/DesktopUpsellStartup.tsx @@ -2,8 +2,8 @@ import { c as _c } from "react/compiler-runtime"; import * as React from 'react'; import { useEffect, useState } from 'react'; import { Box, Text } from '../../ink.js'; -import { getDynamicConfig_CACHED_MAY_BE_STALE } from '../../services/analytics/growthbook.js'; -import { logEvent } from '../../services/analytics/index.js'; +import { getDynamicConfig_CACHED_MAY_BE_STALE } from '../../services/analytics-stub.js'; +import { logEvent } from '../../services/analytics-stub.js'; import { getGlobalConfig, saveGlobalConfig } from '../../utils/config.js'; import { Select } from '../CustomSelect/select.js'; import { DesktopHandoff } from '../DesktopHandoff.js'; diff --git a/src/components/Feedback.tsx b/src/components/Feedback.tsx index 8f2fbb1b..96fe4ed4 100644 --- a/src/components/Feedback.tsx +++ b/src/components/Feedback.tsx @@ -3,8 +3,8 @@ import { readFile, stat } from 'fs/promises'; import * as React from 'react'; import { useCallback, useEffect, useState } from 'react'; import { getLastAPIRequest } from 'src/bootstrap/state.js'; -import { logEventTo1P } from 'src/services/analytics/firstPartyEventLogger.js'; -import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent } from 'src/services/analytics/index.js'; +import { logEventTo1P } from '../services/analytics-stub.js'; +import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent } from '../services/analytics-stub.js'; import { getLastAssistantMessage, normalizeMessagesForAPI } from 'src/utils/messages.js'; import type { CommandResultDisplay } from '../commands.js'; import { useTerminalSize } from '../hooks/useTerminalSize.js'; diff --git a/src/components/FeedbackSurvey/FeedbackSurvey.tsx b/src/components/FeedbackSurvey/FeedbackSurvey.tsx index dc3e7120..e27bb17c 100644 --- a/src/components/FeedbackSurvey/FeedbackSurvey.tsx +++ b/src/components/FeedbackSurvey/FeedbackSurvey.tsx @@ -1,6 +1,6 @@ import { c as _c } from "react/compiler-runtime"; import React from 'react'; -import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent } from 'src/services/analytics/index.js'; +import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent } from '../../services/analytics-stub.js'; import { Box, Text } from '../../ink.js'; import { FeedbackSurveyView, isValidResponseInput } from './FeedbackSurveyView.js'; import type { TranscriptShareResponse } from './TranscriptSharePrompt.js'; diff --git a/src/components/FeedbackSurvey/useFeedbackSurvey.tsx b/src/components/FeedbackSurvey/useFeedbackSurvey.tsx index 20bab3d7..ef91eecd 100644 --- a/src/components/FeedbackSurvey/useFeedbackSurvey.tsx +++ b/src/components/FeedbackSurvey/useFeedbackSurvey.tsx @@ -1,7 +1,7 @@ import { useCallback, useEffect, useMemo, useRef, useState } from 'react'; import { useDynamicConfig } from 'src/hooks/useDynamicConfig.js'; -import { isFeedbackSurveyDisabled } from 'src/services/analytics/config.js'; -import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent } from 'src/services/analytics/index.js'; +import { isFeedbackSurveyDisabled } from '../../services/analytics-stub.js'; +import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent } from '../../services/analytics-stub.js'; import { isPolicyAllowed } from '../../services/policyLimits/index.js'; import type { Message } from '../../types/message.js'; import { getGlobalConfig, saveGlobalConfig } from '../../utils/config.js'; @@ -9,7 +9,7 @@ import { isEnvTruthy } from '../../utils/envUtils.js'; import { getLastAssistantMessage } from '../../utils/messages.js'; import { getMainLoopModel } from '../../utils/model/model.js'; import { getInitialSettings } from '../../utils/settings/settings.js'; -import { logOTelEvent } from '../../utils/telemetry/events.js'; +import { logOTelEvent } from '../../utils/telemetry-stub.js'; import { submitTranscriptShare, type TranscriptShareTrigger } from './submitTranscriptShare.js'; import type { TranscriptShareResponse } from './TranscriptSharePrompt.js'; import { useSurveyState } from './useSurveyState.js'; diff --git a/src/components/FeedbackSurvey/useMemorySurvey.tsx b/src/components/FeedbackSurvey/useMemorySurvey.tsx index e7d9b18b..c0a076dc 100644 --- a/src/components/FeedbackSurvey/useMemorySurvey.tsx +++ b/src/components/FeedbackSurvey/useMemorySurvey.tsx @@ -1,7 +1,7 @@ import { useCallback, useEffect, useMemo, useRef } from 'react'; -import { isFeedbackSurveyDisabled } from 'src/services/analytics/config.js'; -import { getFeatureValue_CACHED_MAY_BE_STALE } from 'src/services/analytics/growthbook.js'; -import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent } from 'src/services/analytics/index.js'; +import { isFeedbackSurveyDisabled } from '../../services/analytics-stub.js'; +import { getFeatureValue_CACHED_MAY_BE_STALE } from '../../services/analytics-stub.js'; +import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent } from '../../services/analytics-stub.js'; import { isAutoMemoryEnabled } from '../../memdir/paths.js'; import { isPolicyAllowed } from '../../services/policyLimits/index.js'; import { FILE_READ_TOOL_NAME } from '../../tools/FileReadTool/prompt.js'; @@ -10,7 +10,7 @@ import { getGlobalConfig, saveGlobalConfig } from '../../utils/config.js'; import { isEnvTruthy } from '../../utils/envUtils.js'; import { isAutoManagedMemoryFile } from '../../utils/memoryFileDetection.js'; import { extractTextContent, getLastAssistantMessage } from '../../utils/messages.js'; -import { logOTelEvent } from '../../utils/telemetry/events.js'; +import { logOTelEvent } from '../../utils/telemetry-stub.js'; import { submitTranscriptShare } from './submitTranscriptShare.js'; import type { TranscriptShareResponse } from './TranscriptSharePrompt.js'; import { useSurveyState } from './useSurveyState.js'; diff --git a/src/components/FeedbackSurvey/usePostCompactSurvey.tsx b/src/components/FeedbackSurvey/usePostCompactSurvey.tsx index b33281a1..a34e611f 100644 --- a/src/components/FeedbackSurvey/usePostCompactSurvey.tsx +++ b/src/components/FeedbackSurvey/usePostCompactSurvey.tsx @@ -1,13 +1,13 @@ import { c as _c } from "react/compiler-runtime"; import { useCallback, useEffect, useMemo, useRef, useState } from 'react'; -import { isFeedbackSurveyDisabled } from 'src/services/analytics/config.js'; -import { checkStatsigFeatureGate_CACHED_MAY_BE_STALE } from 'src/services/analytics/growthbook.js'; -import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent } from 'src/services/analytics/index.js'; +import { isFeedbackSurveyDisabled } from '../../services/analytics-stub.js'; +import { checkStatsigFeatureGate_CACHED_MAY_BE_STALE } from '../../services/analytics-stub.js'; +import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent } from '../../services/analytics-stub.js'; import { shouldUseSessionMemoryCompaction } from '../../services/compact/sessionMemoryCompact.js'; import type { Message } from '../../types/message.js'; import { isEnvTruthy } from '../../utils/envUtils.js'; import { isCompactBoundaryMessage } from '../../utils/messages.js'; -import { logOTelEvent } from '../../utils/telemetry/events.js'; +import { logOTelEvent } from '../../utils/telemetry-stub.js'; import { useSurveyState } from './useSurveyState.js'; import type { FeedbackSurveyResponse } from './utils.js'; const HIDE_THANKS_AFTER_MS = 3000; diff --git a/src/components/GlobalSearchDialog.tsx b/src/components/GlobalSearchDialog.tsx index b4551e22..4477fac8 100644 --- a/src/components/GlobalSearchDialog.tsx +++ b/src/components/GlobalSearchDialog.tsx @@ -5,7 +5,7 @@ import { useEffect, useRef, useState } from 'react'; import { useRegisterOverlay } from '../context/overlayContext.js'; import { useTerminalSize } from '../hooks/useTerminalSize.js'; import { Text } from '../ink.js'; -import { logEvent } from '../services/analytics/index.js'; +import { logEvent } from '../services/analytics-stub.js'; import { getCwd } from '../utils/cwd.js'; import { openFileInExternalEditor } from '../utils/editor.js'; import { truncatePathMiddle, truncateToWidth } from '../utils/format.js'; diff --git a/src/components/HistorySearchDialog.tsx b/src/components/HistorySearchDialog.tsx index 639787ef..4ae70e98 100644 --- a/src/components/HistorySearchDialog.tsx +++ b/src/components/HistorySearchDialog.tsx @@ -6,7 +6,7 @@ import { useTerminalSize } from '../hooks/useTerminalSize.js'; import { stringWidth } from '../ink/stringWidth.js'; import { wrapAnsi } from '../ink/wrapAnsi.js'; import { Box, Text } from '../ink.js'; -import { logEvent } from '../services/analytics/index.js'; +import { logEvent } from '../services/analytics-stub.js'; import type { HistoryEntry } from '../utils/config.js'; import { formatRelativeTimeAgo, truncateToWidth } from '../utils/format.js'; import { FuzzyPicker } from './design-system/FuzzyPicker.js'; diff --git a/src/components/LogSelector.tsx b/src/components/LogSelector.tsx index 8b4ba2dc..5f59a930 100644 --- a/src/components/LogSelector.tsx +++ b/src/components/LogSelector.tsx @@ -11,7 +11,7 @@ import { applyColor } from '../ink/colorize.js'; import type { Color } from '../ink/styles.js'; import { Box, Text, useInput, useTerminalFocus, useTheme } from '../ink.js'; import { useKeybinding } from '../keybindings/useKeybinding.js'; -import { logEvent } from '../services/analytics/index.js'; +import { logEvent } from '../services/analytics-stub.js'; import type { LogOption, SerializedMessage } from '../types/logs.js'; import { formatLogMetadata, truncateToWidth } from '../utils/format.js'; import { getWorktreePaths } from '../utils/getWorktreePaths.js'; diff --git a/src/components/LogoV2/EmergencyTip.tsx b/src/components/LogoV2/EmergencyTip.tsx index ff6a83e3..820db26c 100644 --- a/src/components/LogoV2/EmergencyTip.tsx +++ b/src/components/LogoV2/EmergencyTip.tsx @@ -1,7 +1,7 @@ import * as React from 'react'; import { useEffect, useMemo } from 'react'; import { Box, Text } from 'src/ink.js'; -import { getDynamicConfig_CACHED_MAY_BE_STALE } from 'src/services/analytics/growthbook.js'; +import { getDynamicConfig_CACHED_MAY_BE_STALE } from '../../services/analytics-stub.js'; import { getGlobalConfig, saveGlobalConfig } from 'src/utils/config.js'; const CONFIG_NAME = 'tengu-top-of-feed-tip'; export function EmergencyTip(): React.ReactNode { diff --git a/src/components/LogoV2/GuestPassesUpsell.tsx b/src/components/LogoV2/GuestPassesUpsell.tsx index 9e3396c5..81cc6eb7 100644 --- a/src/components/LogoV2/GuestPassesUpsell.tsx +++ b/src/components/LogoV2/GuestPassesUpsell.tsx @@ -2,7 +2,7 @@ import { c as _c } from "react/compiler-runtime"; import * as React from 'react'; import { useState } from 'react'; import { Text } from '../../ink.js'; -import { logEvent } from '../../services/analytics/index.js'; +import { logEvent } from '../../services/analytics-stub.js'; import { checkCachedPassesEligibility, formatCreditAmount, getCachedReferrerReward, getCachedRemainingPasses } from '../../services/api/referral.js'; import { getGlobalConfig, saveGlobalConfig } from '../../utils/config.js'; function resetIfPassesRefreshed(): void { diff --git a/src/components/LogoV2/OverageCreditUpsell.tsx b/src/components/LogoV2/OverageCreditUpsell.tsx index 8c4a19f7..7bf80db4 100644 --- a/src/components/LogoV2/OverageCreditUpsell.tsx +++ b/src/components/LogoV2/OverageCreditUpsell.tsx @@ -2,7 +2,7 @@ import { c as _c } from "react/compiler-runtime"; import * as React from 'react'; import { useState } from 'react'; import { Text } from '../../ink.js'; -import { logEvent } from '../../services/analytics/index.js'; +import { logEvent } from '../../services/analytics-stub.js'; import { formatGrantAmount, getCachedOverageCreditGrant, refreshOverageCreditGrantCache } from '../../services/api/overageCreditGrant.js'; import { getGlobalConfig, saveGlobalConfig } from '../../utils/config.js'; import { truncate } from '../../utils/format.js'; diff --git a/src/components/MCPServerApprovalDialog.tsx b/src/components/MCPServerApprovalDialog.tsx index f75abcce..709cc3da 100644 --- a/src/components/MCPServerApprovalDialog.tsx +++ b/src/components/MCPServerApprovalDialog.tsx @@ -1,6 +1,6 @@ import { c as _c } from "react/compiler-runtime"; import React from 'react'; -import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent } from 'src/services/analytics/index.js'; +import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent } from '../services/analytics-stub.js'; import { getSettings_DEPRECATED, updateSettingsForSource } from '../utils/settings/settings.js'; import { Select } from './CustomSelect/index.js'; import { Dialog } from './design-system/Dialog.js'; diff --git a/src/components/MCPServerMultiselectDialog.tsx b/src/components/MCPServerMultiselectDialog.tsx index b5325ba4..26ba3e1f 100644 --- a/src/components/MCPServerMultiselectDialog.tsx +++ b/src/components/MCPServerMultiselectDialog.tsx @@ -1,7 +1,7 @@ import { c as _c } from "react/compiler-runtime"; import partition from 'lodash-es/partition.js'; import React, { useCallback } from 'react'; -import { logEvent } from 'src/services/analytics/index.js'; +import { logEvent } from '../services/analytics-stub.js'; import { Box, Text } from '../ink.js'; import { getSettings_DEPRECATED, updateSettingsForSource } from '../utils/settings/settings.js'; import { ConfigurableShortcutHint } from './ConfigurableShortcutHint.js'; diff --git a/src/components/MessageSelector.tsx b/src/components/MessageSelector.tsx index 7df5b566..f751b3d0 100644 --- a/src/components/MessageSelector.tsx +++ b/src/components/MessageSelector.tsx @@ -4,7 +4,7 @@ import { randomUUID, type UUID } from 'crypto'; import figures from 'figures'; import * as React from 'react'; import { useCallback, useEffect, useMemo, useState } from 'react'; -import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent } from 'src/services/analytics/index.js'; +import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent } from '../services/analytics-stub.js'; import { useAppState } from 'src/state/AppState.js'; import { type DiffStats, fileHistoryCanRestore, fileHistoryEnabled, fileHistoryGetDiffStats } from 'src/utils/fileHistory.js'; import { logError } from 'src/utils/log.js'; diff --git a/src/components/ModelPicker.tsx b/src/components/ModelPicker.tsx index 4bf18bc5..9fe6354b 100644 --- a/src/components/ModelPicker.tsx +++ b/src/components/ModelPicker.tsx @@ -3,7 +3,7 @@ import capitalize from 'lodash-es/capitalize.js'; import * as React from 'react'; import { useCallback, useMemo, useState } from 'react'; import { useExitOnCtrlCDWithKeybindings } from 'src/hooks/useExitOnCtrlCDWithKeybindings.js'; -import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent } from 'src/services/analytics/index.js'; +import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent } from '../services/analytics-stub.js'; import { FAST_MODE_MODEL_DISPLAY, isFastModeAvailable, isFastModeCooldown, isFastModeEnabled } from 'src/utils/fastMode.js'; import { Box, Text } from '../ink.js'; import { useKeybindings } from '../keybindings/useKeybinding.js'; diff --git a/src/components/NativeAutoUpdater.tsx b/src/components/NativeAutoUpdater.tsx index a71244dd..70611789 100644 --- a/src/components/NativeAutoUpdater.tsx +++ b/src/components/NativeAutoUpdater.tsx @@ -1,193 +1,11 @@ -import * as React from 'react'; -import { useEffect, useRef, useState } from 'react'; -import { logEvent } from 'src/services/analytics/index.js'; -import { logForDebugging } from 'src/utils/debug.js'; -import { logError } from 'src/utils/log.js'; -import { useInterval } from 'usehooks-ts'; -import { useUpdateNotification } from '../hooks/useUpdateNotification.js'; -import { Box, Text } from '../ink.js'; -import type { AutoUpdaterResult } from '../utils/autoUpdater.js'; -import { getMaxVersion, getMaxVersionMessage } from '../utils/autoUpdater.js'; -import { isAutoUpdaterDisabled } from '../utils/config.js'; -import { installLatest } from '../utils/nativeInstaller/index.js'; -import { gt } from '../utils/semver.js'; -import { getInitialSettings } from '../utils/settings/settings.js'; - /** - * Categorize error messages for analytics + * NativeAutoUpdater stub for claude-code-clean + * All auto-update functionality disabled */ -function getErrorType(errorMessage: string): string { - if (errorMessage.includes('timeout')) { - return 'timeout'; - } - if (errorMessage.includes('Checksum mismatch')) { - return 'checksum_mismatch'; - } - if (errorMessage.includes('ENOENT') || errorMessage.includes('not found')) { - return 'not_found'; - } - if (errorMessage.includes('EACCES') || errorMessage.includes('permission')) { - return 'permission_denied'; - } - if (errorMessage.includes('ENOSPC')) { - return 'disk_full'; - } - if (errorMessage.includes('npm')) { - return 'npm_error'; - } - if (errorMessage.includes('network') || errorMessage.includes('ECONNREFUSED') || errorMessage.includes('ENOTFOUND')) { - return 'network_error'; - } - return 'unknown'; -} -type Props = { - isUpdating: boolean; - onChangeIsUpdating: (isUpdating: boolean) => void; - onAutoUpdaterResult: (autoUpdaterResult: AutoUpdaterResult) => void; - autoUpdaterResult: AutoUpdaterResult | null; - showSuccessMessage: boolean; - verbose: boolean; -}; -export function NativeAutoUpdater({ - isUpdating, - onChangeIsUpdating, - onAutoUpdaterResult, - autoUpdaterResult, - showSuccessMessage, - verbose -}: Props): React.ReactNode { - const [versions, setVersions] = useState<{ - current?: string | null; - latest?: string | null; - }>({}); - const [maxVersionIssue, setMaxVersionIssue] = useState(null); - const updateSemver = useUpdateNotification(autoUpdaterResult?.version); - const channel = getInitialSettings()?.autoUpdatesChannel ?? 'latest'; - - // Track latest isUpdating value in a ref so the memoized checkForUpdates - // callback always sees the current value without changing callback identity - // (which would re-trigger the initial-check useEffect below and cause - // repeated downloads on remount — the upstream trigger for #22413). - const isUpdatingRef = useRef(isUpdating); - isUpdatingRef.current = isUpdating; - const checkForUpdates = React.useCallback(async () => { - if (isUpdatingRef.current) { - return; - } - if ("production" === 'test' || "production" === 'development') { - logForDebugging('NativeAutoUpdater: Skipping update check in test/dev environment'); - return; - } - if (isAutoUpdaterDisabled()) { - return; - } - onChangeIsUpdating(true); - const startTime = Date.now(); - // Log the start of an auto-update check for funnel analysis - logEvent('tengu_native_auto_updater_start', {}); - try { - // Check if current version is above the max allowed version - const maxVersion = await getMaxVersion(); - if (maxVersion && gt(MACRO.VERSION, maxVersion)) { - const msg = await getMaxVersionMessage(); - setMaxVersionIssue(msg ?? 'affects your version'); - } - const result = await installLatest(channel); - const currentVersion = MACRO.VERSION; - const latencyMs = Date.now() - startTime; - - // Handle lock contention gracefully - just return without treating as error - if (result.lockFailed) { - logEvent('tengu_native_auto_updater_lock_contention', { - latency_ms: latencyMs - }); - return; // Silently skip this update check, will try again later - } - - // Update versions for display - setVersions({ - current: currentVersion, - latest: result.latestVersion - }); - if (result.wasUpdated) { - logEvent('tengu_native_auto_updater_success', { - latency_ms: latencyMs - }); - onAutoUpdaterResult({ - version: result.latestVersion, - status: 'success' - }); - } else { - // Already up to date - logEvent('tengu_native_auto_updater_up_to_date', { - latency_ms: latencyMs - }); - } - } catch (error) { - const latencyMs = Date.now() - startTime; - const errorMessage = error instanceof Error ? error.message : String(error); - logError(error); - const errorType = getErrorType(errorMessage); - logEvent('tengu_native_auto_updater_fail', { - latency_ms: latencyMs, - error_timeout: errorType === 'timeout', - error_checksum: errorType === 'checksum_mismatch', - error_not_found: errorType === 'not_found', - error_permission: errorType === 'permission_denied', - error_disk_full: errorType === 'disk_full', - error_npm: errorType === 'npm_error', - error_network: errorType === 'network_error' - }); - onAutoUpdaterResult({ - version: null, - status: 'install_failed' - }); - } finally { - onChangeIsUpdating(false); - } - // isUpdating intentionally omitted from deps; we read isUpdatingRef - // instead so the guard is always current without changing callback - // identity (which would re-trigger the initial-check useEffect below). - // eslint-disable-next-line react-hooks/exhaustive-deps - // biome-ignore lint/correctness/useExhaustiveDependencies: isUpdating read via ref - }, [onAutoUpdaterResult, channel]); - - // Initial check - useEffect(() => { - void checkForUpdates(); - }, [checkForUpdates]); +import * as React from 'react'; - // Check every 30 minutes - useInterval(checkForUpdates, 30 * 60 * 1000); - const hasUpdateResult = !!autoUpdaterResult?.version; - const hasVersionInfo = !!versions.current && !!versions.latest; - // Show the component when: - // - warning banner needed (above max version), or - // - there's an update result to display (success/error), or - // - actively checking and we have version info to show - const shouldRender = !!maxVersionIssue || hasUpdateResult || isUpdating && hasVersionInfo; - if (!shouldRender) { - return null; - } - return - {verbose && - current: {versions.current} · {channel}: {versions.latest} - } - {isUpdating ? - - Checking for updates - - : autoUpdaterResult?.status === 'success' && showSuccessMessage && updateSemver && - ✓ Update installed · Restart to update - } - {autoUpdaterResult?.status === 'install_failed' && - ✗ Auto-update failed · Try /status - } - {maxVersionIssue && "external" === 'ant' && - ⚠ Known issue: {maxVersionIssue} · Run{' '} - claude rollback --safe to downgrade - } - ; +export function NativeAutoUpdater(): React.ReactNode { + // No-op: Auto-updates disabled in claude-code-clean + return null; } -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsInVzZUVmZmVjdCIsInVzZVJlZiIsInVzZVN0YXRlIiwibG9nRXZlbnQiLCJsb2dGb3JEZWJ1Z2dpbmciLCJsb2dFcnJvciIsInVzZUludGVydmFsIiwidXNlVXBkYXRlTm90aWZpY2F0aW9uIiwiQm94IiwiVGV4dCIsIkF1dG9VcGRhdGVyUmVzdWx0IiwiZ2V0TWF4VmVyc2lvbiIsImdldE1heFZlcnNpb25NZXNzYWdlIiwiaXNBdXRvVXBkYXRlckRpc2FibGVkIiwiaW5zdGFsbExhdGVzdCIsImd0IiwiZ2V0SW5pdGlhbFNldHRpbmdzIiwiZ2V0RXJyb3JUeXBlIiwiZXJyb3JNZXNzYWdlIiwiaW5jbHVkZXMiLCJQcm9wcyIsImlzVXBkYXRpbmciLCJvbkNoYW5nZUlzVXBkYXRpbmciLCJvbkF1dG9VcGRhdGVyUmVzdWx0IiwiYXV0b1VwZGF0ZXJSZXN1bHQiLCJzaG93U3VjY2Vzc01lc3NhZ2UiLCJ2ZXJib3NlIiwiTmF0aXZlQXV0b1VwZGF0ZXIiLCJSZWFjdE5vZGUiLCJ2ZXJzaW9ucyIsInNldFZlcnNpb25zIiwiY3VycmVudCIsImxhdGVzdCIsIm1heFZlcnNpb25Jc3N1ZSIsInNldE1heFZlcnNpb25Jc3N1ZSIsInVwZGF0ZVNlbXZlciIsInZlcnNpb24iLCJjaGFubmVsIiwiYXV0b1VwZGF0ZXNDaGFubmVsIiwiaXNVcGRhdGluZ1JlZiIsImNoZWNrRm9yVXBkYXRlcyIsInVzZUNhbGxiYWNrIiwic3RhcnRUaW1lIiwiRGF0ZSIsIm5vdyIsIm1heFZlcnNpb24iLCJNQUNSTyIsIlZFUlNJT04iLCJtc2ciLCJyZXN1bHQiLCJjdXJyZW50VmVyc2lvbiIsImxhdGVuY3lNcyIsImxvY2tGYWlsZWQiLCJsYXRlbmN5X21zIiwibGF0ZXN0VmVyc2lvbiIsIndhc1VwZGF0ZWQiLCJzdGF0dXMiLCJlcnJvciIsIkVycm9yIiwibWVzc2FnZSIsIlN0cmluZyIsImVycm9yVHlwZSIsImVycm9yX3RpbWVvdXQiLCJlcnJvcl9jaGVja3N1bSIsImVycm9yX25vdF9mb3VuZCIsImVycm9yX3Blcm1pc3Npb24iLCJlcnJvcl9kaXNrX2Z1bGwiLCJlcnJvcl9ucG0iLCJlcnJvcl9uZXR3b3JrIiwiaGFzVXBkYXRlUmVzdWx0IiwiaGFzVmVyc2lvbkluZm8iLCJzaG91bGRSZW5kZXIiXSwic291cmNlcyI6WyJOYXRpdmVBdXRvVXBkYXRlci50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IGxvZ0V2ZW50IH0gZnJvbSAnc3JjL3NlcnZpY2VzL2FuYWx5dGljcy9pbmRleC5qcydcbmltcG9ydCB7IGxvZ0ZvckRlYnVnZ2luZyB9IGZyb20gJ3NyYy91dGlscy9kZWJ1Zy5qcydcbmltcG9ydCB7IGxvZ0Vycm9yIH0gZnJvbSAnc3JjL3V0aWxzL2xvZy5qcydcbmltcG9ydCB7IHVzZUludGVydmFsIH0gZnJvbSAndXNlaG9va3MtdHMnXG5pbXBvcnQgeyB1c2VVcGRhdGVOb3RpZmljYXRpb24gfSBmcm9tICcuLi9ob29rcy91c2VVcGRhdGVOb3RpZmljYXRpb24uanMnXG5pbXBvcnQgeyBCb3gsIFRleHQgfSBmcm9tICcuLi9pbmsuanMnXG5pbXBvcnQgdHlwZSB7IEF1dG9VcGRhdGVyUmVzdWx0IH0gZnJvbSAnLi4vdXRpbHMvYXV0b1VwZGF0ZXIuanMnXG5pbXBvcnQgeyBnZXRNYXhWZXJzaW9uLCBnZXRNYXhWZXJzaW9uTWVzc2FnZSB9IGZyb20gJy4uL3V0aWxzL2F1dG9VcGRhdGVyLmpzJ1xuaW1wb3J0IHsgaXNBdXRvVXBkYXRlckRpc2FibGVkIH0gZnJvbSAnLi4vdXRpbHMvY29uZmlnLmpzJ1xuaW1wb3J0IHsgaW5zdGFsbExhdGVzdCB9IGZyb20gJy4uL3V0aWxzL25hdGl2ZUluc3RhbGxlci9pbmRleC5qcydcbmltcG9ydCB7IGd0IH0gZnJvbSAnLi4vdXRpbHMvc2VtdmVyLmpzJ1xuaW1wb3J0IHsgZ2V0SW5pdGlhbFNldHRpbmdzIH0gZnJvbSAnLi4vdXRpbHMvc2V0dGluZ3Mvc2V0dGluZ3MuanMnXG5cbi8qKlxuICogQ2F0ZWdvcml6ZSBlcnJvciBtZXNzYWdlcyBmb3IgYW5hbHl0aWNzXG4gKi9cbmZ1bmN0aW9uIGdldEVycm9yVHlwZShlcnJvck1lc3NhZ2U6IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmIChlcnJvck1lc3NhZ2UuaW5jbHVkZXMoJ3RpbWVvdXQnKSkge1xuICAgIHJldHVybiAndGltZW91dCdcbiAgfVxuICBpZiAoZXJyb3JNZXNzYWdlLmluY2x1ZGVzKCdDaGVja3N1bSBtaXNtYXRjaCcpKSB7XG4gICAgcmV0dXJuICdjaGVja3N1bV9taXNtYXRjaCdcbiAgfVxuICBpZiAoZXJyb3JNZXNzYWdlLmluY2x1ZGVzKCdFTk9FTlQnKSB8fCBlcnJvck1lc3NhZ2UuaW5jbHVkZXMoJ25vdCBmb3VuZCcpKSB7XG4gICAgcmV0dXJuICdub3RfZm91bmQnXG4gIH1cbiAgaWYgKGVycm9yTWVzc2FnZS5pbmNsdWRlcygnRUFDQ0VTJykgfHwgZXJyb3JNZXNzYWdlLmluY2x1ZGVzKCdwZXJtaXNzaW9uJykpIHtcbiAgICByZXR1cm4gJ3Blcm1pc3Npb25fZGVuaWVkJ1xuICB9XG4gIGlmIChlcnJvck1lc3NhZ2UuaW5jbHVkZXMoJ0VOT1NQQycpKSB7XG4gICAgcmV0dXJuICdkaXNrX2Z1bGwnXG4gIH1cbiAgaWYgKGVycm9yTWVzc2FnZS5pbmNsdWRlcygnbnBtJykpIHtcbiAgICByZXR1cm4gJ25wbV9lcnJvcidcbiAgfVxuICBpZiAoXG4gICAgZXJyb3JNZXNzYWdlLmluY2x1ZGVzKCduZXR3b3JrJykgfHxcbiAgICBlcnJvck1lc3NhZ2UuaW5jbHVkZXMoJ0VDT05OUkVGVVNFRCcpIHx8XG4gICAgZXJyb3JNZXNzYWdlLmluY2x1ZGVzKCdFTk9URk9VTkQnKVxuICApIHtcbiAgICByZXR1cm4gJ25ldHdvcmtfZXJyb3InXG4gIH1cbiAgcmV0dXJuICd1bmtub3duJ1xufVxuXG50eXBlIFByb3BzID0ge1xuICBpc1VwZGF0aW5nOiBib29sZWFuXG4gIG9uQ2hhbmdlSXNVcGRhdGluZzogKGlzVXBkYXRpbmc6IGJvb2xlYW4pID0+IHZvaWRcbiAgb25BdXRvVXBkYXRlclJlc3VsdDogKGF1dG9VcGRhdGVyUmVzdWx0OiBBdXRvVXBkYXRlclJlc3VsdCkgPT4gdm9pZFxuICBhdXRvVXBkYXRlclJlc3VsdDogQXV0b1VwZGF0ZXJSZXN1bHQgfCBudWxsXG4gIHNob3dTdWNjZXNzTWVzc2FnZTogYm9vbGVhblxuICB2ZXJib3NlOiBib29sZWFuXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBOYXRpdmVBdXRvVXBkYXRlcih7XG4gIGlzVXBkYXRpbmcsXG4gIG9uQ2hhbmdlSXNVcGRhdGluZyxcbiAgb25BdXRvVXBkYXRlclJlc3VsdCxcbiAgYXV0b1VwZGF0ZXJSZXN1bHQsXG4gIHNob3dTdWNjZXNzTWVzc2FnZSxcbiAgdmVyYm9zZSxcbn06IFByb3BzKTogUmVhY3QuUmVhY3ROb2RlIHtcbiAgY29uc3QgW3ZlcnNpb25zLCBzZXRWZXJzaW9uc10gPSB1c2VTdGF0ZTx7XG4gICAgY3VycmVudD86IHN0cmluZyB8IG51bGxcbiAgICBsYXRlc3Q/OiBzdHJpbmcgfCBudWxsXG4gIH0+KHt9KVxuICBjb25zdCBbbWF4VmVyc2lvbklzc3VlLCBzZXRNYXhWZXJzaW9uSXNzdWVdID0gdXNlU3RhdGU8c3RyaW5nIHwgbnVsbD4obnVsbClcbiAgY29uc3QgdXBkYXRlU2VtdmVyID0gdXNlVXBkYXRlTm90aWZpY2F0aW9uKGF1dG9VcGRhdGVyUmVzdWx0Py52ZXJzaW9uKVxuICBjb25zdCBjaGFubmVsID0gZ2V0SW5pdGlhbFNldHRpbmdzKCk/LmF1dG9VcGRhdGVzQ2hhbm5lbCA/PyAnbGF0ZXN0J1xuXG4gIC8vIFRyYWNrIGxhdGVzdCBpc1VwZGF0aW5nIHZhbHVlIGluIGEgcmVmIHNvIHRoZSBtZW1vaXplZCBjaGVja0ZvclVwZGF0ZXNcbiAgLy8gY2FsbGJhY2sgYWx3YXlzIHNlZXMgdGhlIGN1cnJlbnQgdmFsdWUgd2l0aG91dCBjaGFuZ2luZyBjYWxsYmFjayBpZGVudGl0eVxuICAvLyAod2hpY2ggd291bGQgcmUtdHJpZ2dlciB0aGUgaW5pdGlhbC1jaGVjayB1c2VFZmZlY3QgYmVsb3cgYW5kIGNhdXNlXG4gIC8vIHJlcGVhdGVkIGRvd25sb2FkcyBvbiByZW1vdW50IOKAlCB0aGUgdXBzdHJlYW0gdHJpZ2dlciBmb3IgIzIyNDEzKS5cbiAgY29uc3QgaXNVcGRhdGluZ1JlZiA9IHVzZVJlZihpc1VwZGF0aW5nKVxuICBpc1VwZGF0aW5nUmVmLmN1cnJlbnQgPSBpc1VwZGF0aW5nXG5cbiAgY29uc3QgY2hlY2tGb3JVcGRhdGVzID0gUmVhY3QudXNlQ2FsbGJhY2soYXN5bmMgKCkgPT4ge1xuICAgIGlmIChpc1VwZGF0aW5nUmVmLmN1cnJlbnQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmIChcbiAgICAgIFwicHJvZHVjdGlvblwiID09PSAndGVzdCcgfHxcbiAgICAgIFwicHJvZHVjdGlvblwiID09PSAnZGV2ZWxvcG1lbnQnXG4gICAgKSB7XG4gICAgICBsb2dGb3JEZWJ1Z2dpbmcoXG4gICAgICAgICdOYXRpdmVBdXRvVXBkYXRlcjogU2tpcHBpbmcgdXBkYXRlIGNoZWNrIGluIHRlc3QvZGV2IGVudmlyb25tZW50JyxcbiAgICAgIClcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmIChpc0F1dG9VcGRhdGVyRGlzYWJsZWQoKSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgb25DaGFuZ2VJc1VwZGF0aW5nKHRydWUpXG4gICAgY29uc3Qgc3RhcnRUaW1lID0gRGF0ZS5ub3coKVxuXG4gICAgLy8gTG9nIHRoZSBzdGFydCBvZiBhbiBhdXRvLXVwZGF0ZSBjaGVjayBmb3IgZnVubmVsIGFuYWx5c2lzXG4gICAgbG9nRXZlbnQoJ3Rlbmd1X25hdGl2ZV9hdXRvX3VwZGF0ZXJfc3RhcnQnLCB7fSlcblxuICAgIHRyeSB7XG4gICAgICAvLyBDaGVjayBpZiBjdXJyZW50IHZlcnNpb24gaXMgYWJvdmUgdGhlIG1heCBhbGxvd2VkIHZlcnNpb25cbiAgICAgIGNvbnN0IG1heFZlcnNpb24gPSBhd2FpdCBnZXRNYXhWZXJzaW9uKClcbiAgICAgIGlmIChtYXhWZXJzaW9uICYmIGd0KE1BQ1JPLlZFUlNJT04sIG1heFZlcnNpb24pKSB7XG4gICAgICAgIGNvbnN0IG1zZyA9IGF3YWl0IGdldE1heFZlcnNpb25NZXNzYWdlKClcbiAgICAgICAgc2V0TWF4VmVyc2lvbklzc3VlKG1zZyA/PyAnYWZmZWN0cyB5b3VyIHZlcnNpb24nKVxuICAgICAgfVxuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBpbnN0YWxsTGF0ZXN0KGNoYW5uZWwpXG4gICAgICBjb25zdCBjdXJyZW50VmVyc2lvbiA9IE1BQ1JPLlZFUlNJT05cbiAgICAgIGNvbnN0IGxhdGVuY3lNcyA9IERhdGUubm93KCkgLSBzdGFydFRpbWVcblxuICAgICAgLy8gSGFuZGxlIGxvY2sgY29udGVudGlvbiBncmFjZWZ1bGx5IC0ganVzdCByZXR1cm4gd2l0aG91dCB0cmVhdGluZyBhcyBlcnJvclxuICAgICAgaWYgKHJlc3VsdC5sb2NrRmFpbGVkKSB7XG4gICAgICAgIGxvZ0V2ZW50KCd0ZW5ndV9uYXRpdmVfYXV0b191cGRhdGVyX2xvY2tfY29udGVudGlvbicsIHtcbiAgICAgICAgICBsYXRlbmN5X21zOiBsYXRlbmN5TXMsXG4gICAgICAgIH0pXG4gICAgICAgIHJldHVybiAvLyBTaWxlbnRseSBza2lwIHRoaXMgdXBkYXRlIGNoZWNrLCB3aWxsIHRyeSBhZ2FpbiBsYXRlclxuICAgICAgfVxuXG4gICAgICAvLyBVcGRhdGUgdmVyc2lvbnMgZm9yIGRpc3BsYXlcbiAgICAgIHNldFZlcnNpb25zKHsgY3VycmVudDogY3VycmVudFZlcnNpb24sIGxhdGVzdDogcmVzdWx0LmxhdGVzdFZlcnNpb24gfSlcblxuICAgICAgaWYgKHJlc3VsdC53YXNVcGRhdGVkKSB7XG4gICAgICAgIGxvZ0V2ZW50KCd0ZW5ndV9uYXRpdmVfYXV0b191cGRhdGVyX3N1Y2Nlc3MnLCB7XG4gICAgICAgICAgbGF0ZW5jeV9tczogbGF0ZW5jeU1zLFxuICAgICAgICB9KVxuXG4gICAgICAgIG9uQXV0b1VwZGF0ZXJSZXN1bHQoe1xuICAgICAgICAgIHZlcnNpb246IHJlc3VsdC5sYXRlc3RWZXJzaW9uLFxuICAgICAgICAgIHN0YXR1czogJ3N1Y2Nlc3MnLFxuICAgICAgICB9KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gQWxyZWFkeSB1cCB0byBkYXRlXG4gICAgICAgIGxvZ0V2ZW50KCd0ZW5ndV9uYXRpdmVfYXV0b191cGRhdGVyX3VwX3RvX2RhdGUnLCB7XG4gICAgICAgICAgbGF0ZW5jeV9tczogbGF0ZW5jeU1zLFxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zdCBsYXRlbmN5TXMgPSBEYXRlLm5vdygpIC0gc3RhcnRUaW1lXG4gICAgICBjb25zdCBlcnJvck1lc3NhZ2UgPVxuICAgICAgICBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFN0cmluZyhlcnJvcilcbiAgICAgIGxvZ0Vycm9yKGVycm9yKVxuXG4gICAgICBjb25zdCBlcnJvclR5cGUgPSBnZXRFcnJvclR5cGUoZXJyb3JNZXNzYWdlKVxuICAgICAgbG9nRXZlbnQoJ3Rlbmd1X25hdGl2ZV9hdXRvX3VwZGF0ZXJfZmFpbCcsIHtcbiAgICAgICAgbGF0ZW5jeV9tczogbGF0ZW5jeU1zLFxuICAgICAgICBlcnJvcl90aW1lb3V0OiBlcnJvclR5cGUgPT09ICd0aW1lb3V0JyxcbiAgICAgICAgZXJyb3JfY2hlY2tzdW06IGVycm9yVHlwZSA9PT0gJ2NoZWNrc3VtX21pc21hdGNoJyxcbiAgICAgICAgZXJyb3Jfbm90X2ZvdW5kOiBlcnJvclR5cGUgPT09ICdub3RfZm91bmQnLFxuICAgICAgICBlcnJvcl9wZXJtaXNzaW9uOiBlcnJvclR5cGUgPT09ICdwZXJtaXNzaW9uX2RlbmllZCcsXG4gICAgICAgIGVycm9yX2Rpc2tfZnVsbDogZXJyb3JUeXBlID09PSAnZGlza19mdWxsJyxcbiAgICAgICAgZXJyb3JfbnBtOiBlcnJvclR5cGUgPT09ICducG1fZXJyb3InLFxuICAgICAgICBlcnJvcl9uZXR3b3JrOiBlcnJvclR5cGUgPT09ICduZXR3b3JrX2Vycm9yJyxcbiAgICAgIH0pXG5cbiAgICAgIG9uQXV0b1VwZGF0ZXJSZXN1bHQoe1xuICAgICAgICB2ZXJzaW9uOiBudWxsLFxuICAgICAgICBzdGF0dXM6ICdpbnN0YWxsX2ZhaWxlZCcsXG4gICAgICB9KVxuICAgIH0gZmluYWxseSB7XG4gICAgICBvbkNoYW5nZUlzVXBkYXRpbmcoZmFsc2UpXG4gICAgfVxuICAgIC8vIGlzVXBkYXRpbmcgaW50ZW50aW9uYWxseSBvbWl0dGVkIGZyb20gZGVwczsgd2UgcmVhZCBpc1VwZGF0aW5nUmVmXG4gICAgLy8gaW5zdGVhZCBzbyB0aGUgZ3VhcmQgaXMgYWx3YXlzIGN1cnJlbnQgd2l0aG91dCBjaGFuZ2luZyBjYWxsYmFja1xuICAgIC8vIGlkZW50aXR5ICh3aGljaCB3b3VsZCByZS10cmlnZ2VyIHRoZSBpbml0aWFsLWNoZWNrIHVzZUVmZmVjdCBiZWxvdykuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL2V4aGF1c3RpdmUtZGVwc1xuICAgIC8vIGJpb21lLWlnbm9yZSBsaW50L2NvcnJlY3RuZXNzL3VzZUV4aGF1c3RpdmVEZXBlbmRlbmNpZXM6IGlzVXBkYXRpbmcgcmVhZCB2aWEgcmVmXG4gIH0sIFtvbkF1dG9VcGRhdGVyUmVzdWx0LCBjaGFubmVsXSlcblxuICAvLyBJbml0aWFsIGNoZWNrXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgdm9pZCBjaGVja0ZvclVwZGF0ZXMoKVxuICB9LCBbY2hlY2tGb3JVcGRhdGVzXSlcblxuICAvLyBDaGVjayBldmVyeSAzMCBtaW51dGVzXG4gIHVzZUludGVydmFsKGNoZWNrRm9yVXBkYXRlcywgMzAgKiA2MCAqIDEwMDApXG5cbiAgY29uc3QgaGFzVXBkYXRlUmVzdWx0ID0gISFhdXRvVXBkYXRlclJlc3VsdD8udmVyc2lvblxuICBjb25zdCBoYXNWZXJzaW9uSW5mbyA9ICEhdmVyc2lvbnMuY3VycmVudCAmJiAhIXZlcnNpb25zLmxhdGVzdFxuICAvLyBTaG93IHRoZSBjb21wb25lbnQgd2hlbjpcbiAgLy8gLSB3YXJuaW5nIGJhbm5lciBuZWVkZWQgKGFib3ZlIG1heCB2ZXJzaW9uKSwgb3JcbiAgLy8gLSB0aGVyZSdzIGFuIHVwZGF0ZSByZXN1bHQgdG8gZGlzcGxheSAoc3VjY2Vzcy9lcnJvciksIG9yXG4gIC8vIC0gYWN0aXZlbHkgY2hlY2tpbmcgYW5kIHdlIGhhdmUgdmVyc2lvbiBpbmZvIHRvIHNob3dcbiAgY29uc3Qgc2hvdWxkUmVuZGVyID1cbiAgICAhIW1heFZlcnNpb25Jc3N1ZSB8fCBoYXNVcGRhdGVSZXN1bHQgfHwgKGlzVXBkYXRpbmcgJiYgaGFzVmVyc2lvbkluZm8pXG5cbiAgaWYgKCFzaG91bGRSZW5kZXIpIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94IGZsZXhEaXJlY3Rpb249XCJyb3dcIiBnYXA9ezF9PlxuICAgICAge3ZlcmJvc2UgJiYgKFxuICAgICAgICA8VGV4dCBkaW1Db2xvciB3cmFwPVwidHJ1bmNhdGVcIj5cbiAgICAgICAgICBjdXJyZW50OiB7dmVyc2lvbnMuY3VycmVudH0gJm1pZGRvdDsge2NoYW5uZWx9OiB7dmVyc2lvbnMubGF0ZXN0fVxuICAgICAgICA8L1RleHQ+XG4gICAgICApfVxuICAgICAge2lzVXBkYXRpbmcgPyAoXG4gICAgICAgIDxCb3g+XG4gICAgICAgICAgPFRleHQgZGltQ29sb3Igd3JhcD1cInRydW5jYXRlXCI+XG4gICAgICAgICAgICBDaGVja2luZyBmb3IgdXBkYXRlc1xuICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgPC9Cb3g+XG4gICAgICApIDogKFxuICAgICAgICBhdXRvVXBkYXRlclJlc3VsdD8uc3RhdHVzID09PSAnc3VjY2VzcycgJiZcbiAgICAgICAgc2hvd1N1Y2Nlc3NNZXNzYWdlICYmXG4gICAgICAgIHVwZGF0ZVNlbXZlciAmJiAoXG4gICAgICAgICAgPFRleHQgY29sb3I9XCJzdWNjZXNzXCIgd3JhcD1cInRydW5jYXRlXCI+XG4gICAgICAgICAgICDinJMgVXBkYXRlIGluc3RhbGxlZCDCtyBSZXN0YXJ0IHRvIHVwZGF0ZVxuICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgKVxuICAgICAgKX1cbiAgICAgIHthdXRvVXBkYXRlclJlc3VsdD8uc3RhdHVzID09PSAnaW5zdGFsbF9mYWlsZWQnICYmIChcbiAgICAgICAgPFRleHQgY29sb3I9XCJlcnJvclwiIHdyYXA9XCJ0cnVuY2F0ZVwiPlxuICAgICAgICAgIOKclyBBdXRvLXVwZGF0ZSBmYWlsZWQgJm1pZGRvdDsgVHJ5IDxUZXh0IGJvbGQ+L3N0YXR1czwvVGV4dD5cbiAgICAgICAgPC9UZXh0PlxuICAgICAgKX1cbiAgICAgIHttYXhWZXJzaW9uSXNzdWUgJiYgXCJleHRlcm5hbFwiID09PSAnYW50JyAmJiAoXG4gICAgICAgIDxUZXh0IGNvbG9yPVwid2FybmluZ1wiPlxuICAgICAgICAgIOKaoCBLbm93biBpc3N1ZToge21heFZlcnNpb25Jc3N1ZX0gJm1pZGRvdDsgUnVueycgJ31cbiAgICAgICAgICA8VGV4dCBib2xkPmNsYXVkZSByb2xsYmFjayAtLXNhZmU8L1RleHQ+IHRvIGRvd25ncmFkZVxuICAgICAgICA8L1RleHQ+XG4gICAgICApfVxuICAgIDwvQm94PlxuICApXG59XG4iXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBS0EsS0FBSyxNQUFNLE9BQU87QUFDOUIsU0FBU0MsU0FBUyxFQUFFQyxNQUFNLEVBQUVDLFFBQVEsUUFBUSxPQUFPO0FBQ25ELFNBQVNDLFFBQVEsUUFBUSxpQ0FBaUM7QUFDMUQsU0FBU0MsZUFBZSxRQUFRLG9CQUFvQjtBQUNwRCxTQUFTQyxRQUFRLFFBQVEsa0JBQWtCO0FBQzNDLFNBQVNDLFdBQVcsUUFBUSxhQUFhO0FBQ3pDLFNBQVNDLHFCQUFxQixRQUFRLG1DQUFtQztBQUN6RSxTQUFTQyxHQUFHLEVBQUVDLElBQUksUUFBUSxXQUFXO0FBQ3JDLGNBQWNDLGlCQUFpQixRQUFRLHlCQUF5QjtBQUNoRSxTQUFTQyxhQUFhLEVBQUVDLG9CQUFvQixRQUFRLHlCQUF5QjtBQUM3RSxTQUFTQyxxQkFBcUIsUUFBUSxvQkFBb0I7QUFDMUQsU0FBU0MsYUFBYSxRQUFRLG1DQUFtQztBQUNqRSxTQUFTQyxFQUFFLFFBQVEsb0JBQW9CO0FBQ3ZDLFNBQVNDLGtCQUFrQixRQUFRLCtCQUErQjs7QUFFbEU7QUFDQTtBQUNBO0FBQ0EsU0FBU0MsWUFBWUEsQ0FBQ0MsWUFBWSxFQUFFLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQztFQUNsRCxJQUFJQSxZQUFZLENBQUNDLFFBQVEsQ0FBQyxTQUFTLENBQUMsRUFBRTtJQUNwQyxPQUFPLFNBQVM7RUFDbEI7RUFDQSxJQUFJRCxZQUFZLENBQUNDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFO0lBQzlDLE9BQU8sbUJBQW1CO0VBQzVCO0VBQ0EsSUFBSUQsWUFBWSxDQUFDQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUlELFlBQVksQ0FBQ0MsUUFBUSxDQUFDLFdBQVcsQ0FBQyxFQUFFO0lBQ3pFLE9BQU8sV0FBVztFQUNwQjtFQUNBLElBQUlELFlBQVksQ0FBQ0MsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJRCxZQUFZLENBQUNDLFFBQVEsQ0FBQyxZQUFZLENBQUMsRUFBRTtJQUMxRSxPQUFPLG1CQUFtQjtFQUM1QjtFQUNBLElBQUlELFlBQVksQ0FBQ0MsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFO0lBQ25DLE9BQU8sV0FBVztFQUNwQjtFQUNBLElBQUlELFlBQVksQ0FBQ0MsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFO0lBQ2hDLE9BQU8sV0FBVztFQUNwQjtFQUNBLElBQ0VELFlBQVksQ0FBQ0MsUUFBUSxDQUFDLFNBQVMsQ0FBQyxJQUNoQ0QsWUFBWSxDQUFDQyxRQUFRLENBQUMsY0FBYyxDQUFDLElBQ3JDRCxZQUFZLENBQUNDLFFBQVEsQ0FBQyxXQUFXLENBQUMsRUFDbEM7SUFDQSxPQUFPLGVBQWU7RUFDeEI7RUFDQSxPQUFPLFNBQVM7QUFDbEI7QUFFQSxLQUFLQyxLQUFLLEdBQUc7RUFDWEMsVUFBVSxFQUFFLE9BQU87RUFDbkJDLGtCQUFrQixFQUFFLENBQUNELFVBQVUsRUFBRSxPQUFPLEVBQUUsR0FBRyxJQUFJO0VBQ2pERSxtQkFBbUIsRUFBRSxDQUFDQyxpQkFBaUIsRUFBRWQsaUJBQWlCLEVBQUUsR0FBRyxJQUFJO0VBQ25FYyxpQkFBaUIsRUFBRWQsaUJBQWlCLEdBQUcsSUFBSTtFQUMzQ2Usa0JBQWtCLEVBQUUsT0FBTztFQUMzQkMsT0FBTyxFQUFFLE9BQU87QUFDbEIsQ0FBQztBQUVELE9BQU8sU0FBU0MsaUJBQWlCQSxDQUFDO0VBQ2hDTixVQUFVO0VBQ1ZDLGtCQUFrQjtFQUNsQkMsbUJBQW1CO0VBQ25CQyxpQkFBaUI7RUFDakJDLGtCQUFrQjtFQUNsQkM7QUFDSyxDQUFOLEVBQUVOLEtBQUssQ0FBQyxFQUFFckIsS0FBSyxDQUFDNkIsU0FBUyxDQUFDO0VBQ3pCLE1BQU0sQ0FBQ0MsUUFBUSxFQUFFQyxXQUFXLENBQUMsR0FBRzVCLFFBQVEsQ0FBQztJQUN2QzZCLE9BQU8sQ0FBQyxFQUFFLE1BQU0sR0FBRyxJQUFJO0lBQ3ZCQyxNQUFNLENBQUMsRUFBRSxNQUFNLEdBQUcsSUFBSTtFQUN4QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztFQUNOLE1BQU0sQ0FBQ0MsZUFBZSxFQUFFQyxrQkFBa0IsQ0FBQyxHQUFHaEMsUUFBUSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUM7RUFDM0UsTUFBTWlDLFlBQVksR0FBRzVCLHFCQUFxQixDQUFDaUIsaUJBQWlCLEVBQUVZLE9BQU8sQ0FBQztFQUN0RSxNQUFNQyxPQUFPLEdBQUdyQixrQkFBa0IsQ0FBQyxDQUFDLEVBQUVzQixrQkFBa0IsSUFBSSxRQUFROztFQUVwRTtFQUNBO0VBQ0E7RUFDQTtFQUNBLE1BQU1DLGFBQWEsR0FBR3RDLE1BQU0sQ0FBQ29CLFVBQVUsQ0FBQztFQUN4Q2tCLGFBQWEsQ0FBQ1IsT0FBTyxHQUFHVixVQUFVO0VBRWxDLE1BQU1tQixlQUFlLEdBQUd6QyxLQUFLLENBQUMwQyxXQUFXLENBQUMsWUFBWTtJQUNwRCxJQUFJRixhQUFhLENBQUNSLE9BQU8sRUFBRTtNQUN6QjtJQUNGO0lBRUEsSUFDRSxZQUFZLEtBQUssTUFBTSxJQUN2QixZQUFZLEtBQUssYUFBYSxFQUM5QjtNQUNBM0IsZUFBZSxDQUNiLGtFQUNGLENBQUM7TUFDRDtJQUNGO0lBRUEsSUFBSVMscUJBQXFCLENBQUMsQ0FBQyxFQUFFO01BQzNCO0lBQ0Y7SUFFQVMsa0JBQWtCLENBQUMsSUFBSSxDQUFDO0lBQ3hCLE1BQU1vQixTQUFTLEdBQUdDLElBQUksQ0FBQ0MsR0FBRyxDQUFDLENBQUM7O0lBRTVCO0lBQ0F6QyxRQUFRLENBQUMsaUNBQWlDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFL0MsSUFBSTtNQUNGO01BQ0EsTUFBTTBDLFVBQVUsR0FBRyxNQUFNbEMsYUFBYSxDQUFDLENBQUM7TUFDeEMsSUFBSWtDLFVBQVUsSUFBSTlCLEVBQUUsQ0FBQytCLEtBQUssQ0FBQ0MsT0FBTyxFQUFFRixVQUFVLENBQUMsRUFBRTtRQUMvQyxNQUFNRyxHQUFHLEdBQUcsTUFBTXBDLG9CQUFvQixDQUFDLENBQUM7UUFDeENzQixrQkFBa0IsQ0FBQ2MsR0FBRyxJQUFJLHNCQUFzQixDQUFDO01BQ25EO01BRUEsTUFBTUMsTUFBTSxHQUFHLE1BQU1uQyxhQUFhLENBQUN1QixPQUFPLENBQUM7TUFDM0MsTUFBTWEsY0FBYyxHQUFHSixLQUFLLENBQUNDLE9BQU87TUFDcEMsTUFBTUksU0FBUyxHQUFHUixJQUFJLENBQUNDLEdBQUcsQ0FBQyxDQUFDLEdBQUdGLFNBQVM7O01BRXhDO01BQ0EsSUFBSU8sTUFBTSxDQUFDRyxVQUFVLEVBQUU7UUFDckJqRCxRQUFRLENBQUMsMkNBQTJDLEVBQUU7VUFDcERrRCxVQUFVLEVBQUVGO1FBQ2QsQ0FBQyxDQUFDO1FBQ0YsT0FBTSxDQUFDO01BQ1Q7O01BRUE7TUFDQXJCLFdBQVcsQ0FBQztRQUFFQyxPQUFPLEVBQUVtQixjQUFjO1FBQUVsQixNQUFNLEVBQUVpQixNQUFNLENBQUNLO01BQWMsQ0FBQyxDQUFDO01BRXRFLElBQUlMLE1BQU0sQ0FBQ00sVUFBVSxFQUFFO1FBQ3JCcEQsUUFBUSxDQUFDLG1DQUFtQyxFQUFFO1VBQzVDa0QsVUFBVSxFQUFFRjtRQUNkLENBQUMsQ0FBQztRQUVGNUIsbUJBQW1CLENBQUM7VUFDbEJhLE9BQU8sRUFBRWEsTUFBTSxDQUFDSyxhQUFhO1VBQzdCRSxNQUFNLEVBQUU7UUFDVixDQUFDLENBQUM7TUFDSixDQUFDLE1BQU07UUFDTDtRQUNBckQsUUFBUSxDQUFDLHNDQUFzQyxFQUFFO1VBQy9Da0QsVUFBVSxFQUFFRjtRQUNkLENBQUMsQ0FBQztNQUNKO0lBQ0YsQ0FBQyxDQUFDLE9BQU9NLEtBQUssRUFBRTtNQUNkLE1BQU1OLFNBQVMsR0FBR1IsSUFBSSxDQUFDQyxHQUFHLENBQUMsQ0FBQyxHQUFHRixTQUFTO01BQ3hDLE1BQU14QixZQUFZLEdBQ2hCdUMsS0FBSyxZQUFZQyxLQUFLLEdBQUdELEtBQUssQ0FBQ0UsT0FBTyxHQUFHQyxNQUFNLENBQUNILEtBQUssQ0FBQztNQUN4RHBELFFBQVEsQ0FBQ29ELEtBQUssQ0FBQztNQUVmLE1BQU1JLFNBQVMsR0FBRzVDLFlBQVksQ0FBQ0MsWUFBWSxDQUFDO01BQzVDZixRQUFRLENBQUMsZ0NBQWdDLEVBQUU7UUFDekNrRCxVQUFVLEVBQUVGLFNBQVM7UUFDckJXLGFBQWEsRUFBRUQsU0FBUyxLQUFLLFNBQVM7UUFDdENFLGNBQWMsRUFBRUYsU0FBUyxLQUFLLG1CQUFtQjtRQUNqREcsZUFBZSxFQUFFSCxTQUFTLEtBQUssV0FBVztRQUMxQ0ksZ0JBQWdCLEVBQUVKLFNBQVMsS0FBSyxtQkFBbUI7UUFDbkRLLGVBQWUsRUFBRUwsU0FBUyxLQUFLLFdBQVc7UUFDMUNNLFNBQVMsRUFBRU4sU0FBUyxLQUFLLFdBQVc7UUFDcENPLGFBQWEsRUFBRVAsU0FBUyxLQUFLO01BQy9CLENBQUMsQ0FBQztNQUVGdEMsbUJBQW1CLENBQUM7UUFDbEJhLE9BQU8sRUFBRSxJQUFJO1FBQ2JvQixNQUFNLEVBQUU7TUFDVixDQUFDLENBQUM7SUFDSixDQUFDLFNBQVM7TUFDUmxDLGtCQUFrQixDQUFDLEtBQUssQ0FBQztJQUMzQjtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7RUFDRixDQUFDLEVBQUUsQ0FBQ0MsbUJBQW1CLEVBQUVjLE9BQU8sQ0FBQyxDQUFDOztFQUVsQztFQUNBckMsU0FBUyxDQUFDLE1BQU07SUFDZCxLQUFLd0MsZUFBZSxDQUFDLENBQUM7RUFDeEIsQ0FBQyxFQUFFLENBQUNBLGVBQWUsQ0FBQyxDQUFDOztFQUVyQjtFQUNBbEMsV0FBVyxDQUFDa0MsZUFBZSxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO0VBRTVDLE1BQU02QixlQUFlLEdBQUcsQ0FBQyxDQUFDN0MsaUJBQWlCLEVBQUVZLE9BQU87RUFDcEQsTUFBTWtDLGNBQWMsR0FBRyxDQUFDLENBQUN6QyxRQUFRLENBQUNFLE9BQU8sSUFBSSxDQUFDLENBQUNGLFFBQVEsQ0FBQ0csTUFBTTtFQUM5RDtFQUNBO0VBQ0E7RUFDQTtFQUNBLE1BQU11QyxZQUFZLEdBQ2hCLENBQUMsQ0FBQ3RDLGVBQWUsSUFBSW9DLGVBQWUsSUFBS2hELFVBQVUsSUFBSWlELGNBQWU7RUFFeEUsSUFBSSxDQUFDQyxZQUFZLEVBQUU7SUFDakIsT0FBTyxJQUFJO0VBQ2I7RUFFQSxPQUNFLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3BDLE1BQU0sQ0FBQzdDLE9BQU8sSUFDTixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVU7QUFDdEMsbUJBQW1CLENBQUNHLFFBQVEsQ0FBQ0UsT0FBTyxDQUFDLFVBQVUsQ0FBQ00sT0FBTyxDQUFDLEVBQUUsQ0FBQ1IsUUFBUSxDQUFDRyxNQUFNO0FBQzFFLFFBQVEsRUFBRSxJQUFJLENBQ1A7QUFDUCxNQUFNLENBQUNYLFVBQVUsR0FDVCxDQUFDLEdBQUc7QUFDWixVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVTtBQUN4QztBQUNBLFVBQVUsRUFBRSxJQUFJO0FBQ2hCLFFBQVEsRUFBRSxHQUFHLENBQUMsR0FFTkcsaUJBQWlCLEVBQUVnQyxNQUFNLEtBQUssU0FBUyxJQUN2Qy9CLGtCQUFrQixJQUNsQlUsWUFBWSxJQUNWLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVU7QUFDL0M7QUFDQSxVQUFVLEVBQUUsSUFBSSxDQUVUO0FBQ1AsTUFBTSxDQUFDWCxpQkFBaUIsRUFBRWdDLE1BQU0sS0FBSyxnQkFBZ0IsSUFDN0MsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVTtBQUMzQyw0Q0FBNEMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJO0FBQ3BFLFFBQVEsRUFBRSxJQUFJLENBQ1A7QUFDUCxNQUFNLENBQUN2QixlQUFlLElBQUksVUFBVSxLQUFLLEtBQUssSUFDdEMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVM7QUFDN0IseUJBQXlCLENBQUNBLGVBQWUsQ0FBQyxhQUFhLENBQUMsR0FBRztBQUMzRCxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxJQUFJLENBQUM7QUFDbEQsUUFBUSxFQUFFLElBQUksQ0FDUDtBQUNQLElBQUksRUFBRSxHQUFHLENBQUM7QUFFViIsImlnbm9yZUxpc3QiOltdfQ== \ No newline at end of file diff --git a/src/components/Onboarding.tsx b/src/components/Onboarding.tsx index ba32db7e..c705821a 100644 --- a/src/components/Onboarding.tsx +++ b/src/components/Onboarding.tsx @@ -1,6 +1,6 @@ import { c as _c } from "react/compiler-runtime"; import React, { useCallback, useEffect, useMemo, useState } from 'react'; -import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent } from 'src/services/analytics/index.js'; +import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent } from '../services/analytics-stub.js'; import { setupTerminal, shouldOfferTerminalSetup } from '../commands/terminalSetup/terminalSetup.js'; import { useExitOnCtrlCDWithKeybindings } from '../hooks/useExitOnCtrlCDWithKeybindings.js'; import { Box, Link, Newline, Text, useTheme } from '../ink.js'; diff --git a/src/components/PackageManagerAutoUpdater.tsx b/src/components/PackageManagerAutoUpdater.tsx index a8681abf..da82a5cf 100644 --- a/src/components/PackageManagerAutoUpdater.tsx +++ b/src/components/PackageManagerAutoUpdater.tsx @@ -1,104 +1,11 @@ -import { c as _c } from "react/compiler-runtime"; +/** + * PackageManagerAutoUpdater stub for claude-code-clean + * All auto-update functionality disabled + */ + import * as React from 'react'; -import { useState } from 'react'; -import { useInterval } from 'usehooks-ts'; -import { Text } from '../ink.js'; -import { type AutoUpdaterResult, getLatestVersionFromGcs, getMaxVersion, shouldSkipVersion } from '../utils/autoUpdater.js'; -import { isAutoUpdaterDisabled } from '../utils/config.js'; -import { logForDebugging } from '../utils/debug.js'; -import { getPackageManager, type PackageManager } from '../utils/nativeInstaller/packageManagers.js'; -import { gt, gte } from '../utils/semver.js'; -import { getInitialSettings } from '../utils/settings/settings.js'; -type Props = { - isUpdating: boolean; - onChangeIsUpdating: (isUpdating: boolean) => void; - onAutoUpdaterResult: (autoUpdaterResult: AutoUpdaterResult) => void; - autoUpdaterResult: AutoUpdaterResult | null; - showSuccessMessage: boolean; - verbose: boolean; -}; -export function PackageManagerAutoUpdater(t0) { - const $ = _c(10); - const { - verbose - } = t0; - const [updateAvailable, setUpdateAvailable] = useState(false); - const [packageManager, setPackageManager] = useState("unknown"); - let t1; - if ($[0] === Symbol.for("react.memo_cache_sentinel")) { - t1 = async () => { - false || false; - if (isAutoUpdaterDisabled()) { - return; - } - const [channel, pm] = await Promise.all([Promise.resolve(getInitialSettings()?.autoUpdatesChannel ?? "latest"), getPackageManager()]); - setPackageManager(pm); - let latest = await getLatestVersionFromGcs(channel); - const maxVersion = await getMaxVersion(); - if (maxVersion && latest && gt(latest, maxVersion)) { - logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`); - if (gte(MACRO.VERSION, maxVersion)) { - logForDebugging(`PackageManagerAutoUpdater: current version ${MACRO.VERSION} is already at or above maxVersion ${maxVersion}, skipping update`); - setUpdateAvailable(false); - return; - } - latest = maxVersion; - } - const hasUpdate = latest && !gte(MACRO.VERSION, latest) && !shouldSkipVersion(latest); - setUpdateAvailable(!!hasUpdate); - if (hasUpdate) { - logForDebugging(`PackageManagerAutoUpdater: Update available ${MACRO.VERSION} -> ${latest}`); - } - }; - $[0] = t1; - } else { - t1 = $[0]; - } - const checkForUpdates = t1; - let t2; - let t3; - if ($[1] === Symbol.for("react.memo_cache_sentinel")) { - t2 = () => { - checkForUpdates(); - }; - t3 = [checkForUpdates]; - $[1] = t2; - $[2] = t3; - } else { - t2 = $[1]; - t3 = $[2]; - } - React.useEffect(t2, t3); - useInterval(checkForUpdates, 1800000); - if (!updateAvailable) { - return null; - } - const updateCommand = packageManager === "homebrew" ? "brew upgrade claude-code" : packageManager === "winget" ? "winget upgrade Anthropic.ClaudeCode" : packageManager === "apk" ? "apk upgrade claude-code" : "your package manager update command"; - let t4; - if ($[3] !== verbose) { - t4 = verbose && currentVersion: {MACRO.VERSION}; - $[3] = verbose; - $[4] = t4; - } else { - t4 = $[4]; - } - let t5; - if ($[5] !== updateCommand) { - t5 = Update available! Run: {updateCommand}; - $[5] = updateCommand; - $[6] = t5; - } else { - t5 = $[6]; - } - let t6; - if ($[7] !== t4 || $[8] !== t5) { - t6 = <>{t4}{t5}; - $[7] = t4; - $[8] = t5; - $[9] = t6; - } else { - t6 = $[9]; - } - return t6; + +export function PackageManagerAutoUpdater(): React.ReactNode { + // No-op: Auto-updates disabled in claude-code-clean + return null; } -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsInVzZVN0YXRlIiwidXNlSW50ZXJ2YWwiLCJUZXh0IiwiQXV0b1VwZGF0ZXJSZXN1bHQiLCJnZXRMYXRlc3RWZXJzaW9uRnJvbUdjcyIsImdldE1heFZlcnNpb24iLCJzaG91bGRTa2lwVmVyc2lvbiIsImlzQXV0b1VwZGF0ZXJEaXNhYmxlZCIsImxvZ0ZvckRlYnVnZ2luZyIsImdldFBhY2thZ2VNYW5hZ2VyIiwiUGFja2FnZU1hbmFnZXIiLCJndCIsImd0ZSIsImdldEluaXRpYWxTZXR0aW5ncyIsIlByb3BzIiwiaXNVcGRhdGluZyIsIm9uQ2hhbmdlSXNVcGRhdGluZyIsIm9uQXV0b1VwZGF0ZXJSZXN1bHQiLCJhdXRvVXBkYXRlclJlc3VsdCIsInNob3dTdWNjZXNzTWVzc2FnZSIsInZlcmJvc2UiLCJQYWNrYWdlTWFuYWdlckF1dG9VcGRhdGVyIiwidDAiLCIkIiwiX2MiLCJ1cGRhdGVBdmFpbGFibGUiLCJzZXRVcGRhdGVBdmFpbGFibGUiLCJwYWNrYWdlTWFuYWdlciIsInNldFBhY2thZ2VNYW5hZ2VyIiwidDEiLCJTeW1ib2wiLCJmb3IiLCJjaGFubmVsIiwicG0iLCJQcm9taXNlIiwiYWxsIiwicmVzb2x2ZSIsImF1dG9VcGRhdGVzQ2hhbm5lbCIsImxhdGVzdCIsIm1heFZlcnNpb24iLCJNQUNSTyIsIlZFUlNJT04iLCJoYXNVcGRhdGUiLCJjaGVja0ZvclVwZGF0ZXMiLCJ0MiIsInQzIiwidXNlRWZmZWN0IiwidXBkYXRlQ29tbWFuZCIsInQ0IiwidDUiLCJ0NiJdLCJzb3VyY2VzIjpbIlBhY2thZ2VNYW5hZ2VyQXV0b1VwZGF0ZXIudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IHVzZUludGVydmFsIH0gZnJvbSAndXNlaG9va3MtdHMnXG5pbXBvcnQgeyBUZXh0IH0gZnJvbSAnLi4vaW5rLmpzJ1xuaW1wb3J0IHtcbiAgdHlwZSBBdXRvVXBkYXRlclJlc3VsdCxcbiAgZ2V0TGF0ZXN0VmVyc2lvbkZyb21HY3MsXG4gIGdldE1heFZlcnNpb24sXG4gIHNob3VsZFNraXBWZXJzaW9uLFxufSBmcm9tICcuLi91dGlscy9hdXRvVXBkYXRlci5qcydcbmltcG9ydCB7IGlzQXV0b1VwZGF0ZXJEaXNhYmxlZCB9IGZyb20gJy4uL3V0aWxzL2NvbmZpZy5qcydcbmltcG9ydCB7IGxvZ0ZvckRlYnVnZ2luZyB9IGZyb20gJy4uL3V0aWxzL2RlYnVnLmpzJ1xuaW1wb3J0IHtcbiAgZ2V0UGFja2FnZU1hbmFnZXIsXG4gIHR5cGUgUGFja2FnZU1hbmFnZXIsXG59IGZyb20gJy4uL3V0aWxzL25hdGl2ZUluc3RhbGxlci9wYWNrYWdlTWFuYWdlcnMuanMnXG5pbXBvcnQgeyBndCwgZ3RlIH0gZnJvbSAnLi4vdXRpbHMvc2VtdmVyLmpzJ1xuaW1wb3J0IHsgZ2V0SW5pdGlhbFNldHRpbmdzIH0gZnJvbSAnLi4vdXRpbHMvc2V0dGluZ3Mvc2V0dGluZ3MuanMnXG5cbnR5cGUgUHJvcHMgPSB7XG4gIGlzVXBkYXRpbmc6IGJvb2xlYW5cbiAgb25DaGFuZ2VJc1VwZGF0aW5nOiAoaXNVcGRhdGluZzogYm9vbGVhbikgPT4gdm9pZFxuICBvbkF1dG9VcGRhdGVyUmVzdWx0OiAoYXV0b1VwZGF0ZXJSZXN1bHQ6IEF1dG9VcGRhdGVyUmVzdWx0KSA9PiB2b2lkXG4gIGF1dG9VcGRhdGVyUmVzdWx0OiBBdXRvVXBkYXRlclJlc3VsdCB8IG51bGxcbiAgc2hvd1N1Y2Nlc3NNZXNzYWdlOiBib29sZWFuXG4gIHZlcmJvc2U6IGJvb2xlYW5cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFBhY2thZ2VNYW5hZ2VyQXV0b1VwZGF0ZXIoeyB2ZXJib3NlIH06IFByb3BzKTogUmVhY3QuUmVhY3ROb2RlIHtcbiAgY29uc3QgW3VwZGF0ZUF2YWlsYWJsZSwgc2V0VXBkYXRlQXZhaWxhYmxlXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbcGFja2FnZU1hbmFnZXIsIHNldFBhY2thZ2VNYW5hZ2VyXSA9XG4gICAgdXNlU3RhdGU8UGFja2FnZU1hbmFnZXI+KCd1bmtub3duJylcblxuICBjb25zdCBjaGVja0ZvclVwZGF0ZXMgPSBSZWFjdC51c2VDYWxsYmFjayhhc3luYyAoKSA9PiB7XG4gICAgaWYgKFxuICAgICAgXCJwcm9kdWN0aW9uXCIgPT09ICd0ZXN0JyB8fFxuICAgICAgXCJwcm9kdWN0aW9uXCIgPT09ICdkZXZlbG9wbWVudCdcbiAgICApIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmIChpc0F1dG9VcGRhdGVyRGlzYWJsZWQoKSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc3QgW2NoYW5uZWwsIHBtXSA9IGF3YWl0IFByb21pc2UuYWxsKFtcbiAgICAgIFByb21pc2UucmVzb2x2ZShnZXRJbml0aWFsU2V0dGluZ3MoKT8uYXV0b1VwZGF0ZXNDaGFubmVsID8/ICdsYXRlc3QnKSxcbiAgICAgIGdldFBhY2thZ2VNYW5hZ2VyKCksXG4gICAgXSlcbiAgICBzZXRQYWNrYWdlTWFuYWdlcihwbSlcblxuICAgIGxldCBsYXRlc3QgPSBhd2FpdCBnZXRMYXRlc3RWZXJzaW9uRnJvbUdjcyhjaGFubmVsKVxuXG4gICAgLy8gQ2hlY2sgaWYgbWF4IHZlcnNpb24gaXMgc2V0IChzZXJ2ZXItc2lkZSBraWxsIHN3aXRjaCBmb3IgYXV0by11cGRhdGVzKVxuICAgIGNvbnN0IG1heFZlcnNpb24gPSBhd2FpdCBnZXRNYXhWZXJzaW9uKClcblxuICAgIGlmIChtYXhWZXJzaW9uICYmIGxhdGVzdCAmJiBndChsYXRlc3QsIG1heFZlcnNpb24pKSB7XG4gICAgICBsb2dGb3JEZWJ1Z2dpbmcoXG4gICAgICAgIGBQYWNrYWdlTWFuYWdlckF1dG9VcGRhdGVyOiBtYXhWZXJzaW9uICR7bWF4VmVyc2lvbn0gaXMgc2V0LCBjYXBwaW5nIHVwZGF0ZSBmcm9tICR7bGF0ZXN0fSB0byAke21heFZlcnNpb259YCxcbiAgICAgIClcbiAgICAgIGlmIChndGUoTUFDUk8uVkVSU0lPTiwgbWF4VmVyc2lvbikpIHtcbiAgICAgICAgbG9nRm9yRGVidWdnaW5nKFxuICAgICAgICAgIGBQYWNrYWdlTWFuYWdlckF1dG9VcGRhdGVyOiBjdXJyZW50IHZlcnNpb24gJHtNQUNSTy5WRVJTSU9OfSBpcyBhbHJlYWR5IGF0IG9yIGFib3ZlIG1heFZlcnNpb24gJHttYXhWZXJzaW9ufSwgc2tpcHBpbmcgdXBkYXRlYCxcbiAgICAgICAgKVxuICAgICAgICBzZXRVcGRhdGVBdmFpbGFibGUoZmFsc2UpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgbGF0ZXN0ID0gbWF4VmVyc2lvblxuICAgIH1cblxuICAgIGNvbnN0IGhhc1VwZGF0ZSA9XG4gICAgICBsYXRlc3QgJiYgIWd0ZShNQUNSTy5WRVJTSU9OLCBsYXRlc3QpICYmICFzaG91bGRTa2lwVmVyc2lvbihsYXRlc3QpXG5cbiAgICBzZXRVcGRhdGVBdmFpbGFibGUoISFoYXNVcGRhdGUpXG5cbiAgICBpZiAoaGFzVXBkYXRlKSB7XG4gICAgICBsb2dGb3JEZWJ1Z2dpbmcoXG4gICAgICAgIGBQYWNrYWdlTWFuYWdlckF1dG9VcGRhdGVyOiBVcGRhdGUgYXZhaWxhYmxlICR7TUFDUk8uVkVSU0lPTn0gLT4gJHtsYXRlc3R9YCxcbiAgICAgIClcbiAgICB9XG4gIH0sIFtdKVxuXG4gIC8vIEluaXRpYWwgY2hlY2tcbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICB2b2lkIGNoZWNrRm9yVXBkYXRlcygpXG4gIH0sIFtjaGVja0ZvclVwZGF0ZXNdKVxuXG4gIC8vIENoZWNrIGV2ZXJ5IDMwIG1pbnV0ZXNcbiAgdXNlSW50ZXJ2YWwoY2hlY2tGb3JVcGRhdGVzLCAzMCAqIDYwICogMTAwMClcblxuICBpZiAoIXVwZGF0ZUF2YWlsYWJsZSkge1xuICAgIHJldHVybiBudWxsXG4gIH1cblxuICAvLyBwYWNtYW4sIGRlYiwgYW5kIHJwbSBkb24ndCBnZXQgc3BlY2lmaWMgY29tbWFuZHMgYmVjYXVzZSB0aGV5IGVhY2ggaGF2ZVxuICAvLyBtdWx0aXBsZSBmcm9udGVuZHMgKHBhY21hbjogeWF5L3BhcnUvbWFrZXBrZywgZGViOiBhcHQvYXB0LWdldC9hcHRpdHVkZS9uYWxhLFxuICAvLyBycG06IGRuZi95dW0venlwcGVyKVxuICBjb25zdCB1cGRhdGVDb21tYW5kID1cbiAgICBwYWNrYWdlTWFuYWdlciA9PT0gJ2hvbWVicmV3J1xuICAgICAgPyAnYnJldyB1cGdyYWRlIGNsYXVkZS1jb2RlJ1xuICAgICAgOiBwYWNrYWdlTWFuYWdlciA9PT0gJ3dpbmdldCdcbiAgICAgICAgPyAnd2luZ2V0IHVwZ3JhZGUgQW50aHJvcGljLkNsYXVkZUNvZGUnXG4gICAgICAgIDogcGFja2FnZU1hbmFnZXIgPT09ICdhcGsnXG4gICAgICAgICAgPyAnYXBrIHVwZ3JhZGUgY2xhdWRlLWNvZGUnXG4gICAgICAgICAgOiAneW91ciBwYWNrYWdlIG1hbmFnZXIgdXBkYXRlIGNvbW1hbmQnXG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAge3ZlcmJvc2UgJiYgKFxuICAgICAgICA8VGV4dCBkaW1Db2xvciB3cmFwPVwidHJ1bmNhdGVcIj5cbiAgICAgICAgICBjdXJyZW50VmVyc2lvbjoge01BQ1JPLlZFUlNJT059XG4gICAgICAgIDwvVGV4dD5cbiAgICAgICl9XG4gICAgICA8VGV4dCBjb2xvcj1cIndhcm5pbmdcIiB3cmFwPVwidHJ1bmNhdGVcIj5cbiAgICAgICAgVXBkYXRlIGF2YWlsYWJsZSEgUnVuOiA8VGV4dCBib2xkPnt1cGRhdGVDb21tYW5kfTwvVGV4dD5cbiAgICAgIDwvVGV4dD5cbiAgICA8Lz5cbiAgKVxufVxuIl0sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxLQUFLQSxLQUFLLE1BQU0sT0FBTztBQUM5QixTQUFTQyxRQUFRLFFBQVEsT0FBTztBQUNoQyxTQUFTQyxXQUFXLFFBQVEsYUFBYTtBQUN6QyxTQUFTQyxJQUFJLFFBQVEsV0FBVztBQUNoQyxTQUNFLEtBQUtDLGlCQUFpQixFQUN0QkMsdUJBQXVCLEVBQ3ZCQyxhQUFhLEVBQ2JDLGlCQUFpQixRQUNaLHlCQUF5QjtBQUNoQyxTQUFTQyxxQkFBcUIsUUFBUSxvQkFBb0I7QUFDMUQsU0FBU0MsZUFBZSxRQUFRLG1CQUFtQjtBQUNuRCxTQUNFQyxpQkFBaUIsRUFDakIsS0FBS0MsY0FBYyxRQUNkLDZDQUE2QztBQUNwRCxTQUFTQyxFQUFFLEVBQUVDLEdBQUcsUUFBUSxvQkFBb0I7QUFDNUMsU0FBU0Msa0JBQWtCLFFBQVEsK0JBQStCO0FBRWxFLEtBQUtDLEtBQUssR0FBRztFQUNYQyxVQUFVLEVBQUUsT0FBTztFQUNuQkMsa0JBQWtCLEVBQUUsQ0FBQ0QsVUFBVSxFQUFFLE9BQU8sRUFBRSxHQUFHLElBQUk7RUFDakRFLG1CQUFtQixFQUFFLENBQUNDLGlCQUFpQixFQUFFZixpQkFBaUIsRUFBRSxHQUFHLElBQUk7RUFDbkVlLGlCQUFpQixFQUFFZixpQkFBaUIsR0FBRyxJQUFJO0VBQzNDZ0Isa0JBQWtCLEVBQUUsT0FBTztFQUMzQkMsT0FBTyxFQUFFLE9BQU87QUFDbEIsQ0FBQztBQUVELE9BQU8sU0FBQUMsMEJBQUFDLEVBQUE7RUFBQSxNQUFBQyxDQUFBLEdBQUFDLEVBQUE7RUFBbUM7SUFBQUo7RUFBQSxJQUFBRSxFQUFrQjtFQUMxRCxPQUFBRyxlQUFBLEVBQUFDLGtCQUFBLElBQThDMUIsUUFBUSxDQUFDLEtBQUssQ0FBQztFQUM3RCxPQUFBMkIsY0FBQSxFQUFBQyxpQkFBQSxJQUNFNUIsUUFBUSxDQUFpQixTQUFTLENBQUM7RUFBQSxJQUFBNkIsRUFBQTtFQUFBLElBQUFOLENBQUEsUUFBQU8sTUFBQSxDQUFBQyxHQUFBO0lBRUtGLEVBQUEsU0FBQUEsQ0FBQTtNQUV0QyxLQUM4QixJQUQ5QixLQUM4QjtNQUtoQyxJQUFJdEIscUJBQXFCLENBQUMsQ0FBQztRQUFBO01BQUE7TUFJM0IsT0FBQXlCLE9BQUEsRUFBQUMsRUFBQSxJQUFzQixNQUFNQyxPQUFPLENBQUFDLEdBQUksQ0FBQyxDQUN0Q0QsT0FBTyxDQUFBRSxPQUFRLENBQUN2QixrQkFBa0IsQ0FBcUIsQ0FBQyxFQUFBd0Isa0JBQVksSUFBcEQsUUFBb0QsQ0FBQyxFQUNyRTVCLGlCQUFpQixDQUFDLENBQUMsQ0FDcEIsQ0FBQztNQUNGbUIsaUJBQWlCLENBQUNLLEVBQUUsQ0FBQztNQUVyQixJQUFBSyxNQUFBLEdBQWEsTUFBTWxDLHVCQUF1QixDQUFDNEIsT0FBTyxDQUFDO01BR25ELE1BQUFPLFVBQUEsR0FBbUIsTUFBTWxDLGFBQWEsQ0FBQyxDQUFDO01BRXhDLElBQUlrQyxVQUFvQixJQUFwQkQsTUFBOEMsSUFBdEIzQixFQUFFLENBQUMyQixNQUFNLEVBQUVDLFVBQVUsQ0FBQztRQUNoRC9CLGVBQWUsQ0FDYix5Q0FBeUMrQixVQUFVLGdDQUFnQ0QsTUFBTSxPQUFPQyxVQUFVLEVBQzVHLENBQUM7UUFDRCxJQUFJM0IsR0FBRyxDQUFDNEIsS0FBSyxDQUFBQyxPQUFRLEVBQUVGLFVBQVUsQ0FBQztVQUNoQy9CLGVBQWUsQ0FDYiw4Q0FBOENnQyxLQUFLLENBQUFDLE9BQVEsc0NBQXNDRixVQUFVLG1CQUM3RyxDQUFDO1VBQ0RiLGtCQUFrQixDQUFDLEtBQUssQ0FBQztVQUFBO1FBQUE7UUFHM0JZLE1BQUEsQ0FBQUEsQ0FBQSxDQUFTQyxVQUFVO01BQWI7TUFHUixNQUFBRyxTQUFBLEdBQ0VKLE1BQXFDLElBQXJDLENBQVcxQixHQUFHLENBQUM0QixLQUFLLENBQUFDLE9BQVEsRUFBRUgsTUFBTSxDQUErQixJQUFuRSxDQUEwQ2hDLGlCQUFpQixDQUFDZ0MsTUFBTSxDQUFDO01BRXJFWixrQkFBa0IsQ0FBQyxDQUFDLENBQUNnQixTQUFTLENBQUM7TUFFL0IsSUFBSUEsU0FBUztRQUNYbEMsZUFBZSxDQUNiLCtDQUErQ2dDLEtBQUssQ0FBQUMsT0FBUSxPQUFPSCxNQUFNLEVBQzNFLENBQUM7TUFBQTtJQUNGLENBQ0Y7SUFBQWYsQ0FBQSxNQUFBTSxFQUFBO0VBQUE7SUFBQUEsRUFBQSxHQUFBTixDQUFBO0VBQUE7RUEvQ0QsTUFBQW9CLGVBQUEsR0FBd0JkLEVBK0NsQjtFQUFBLElBQUFlLEVBQUE7RUFBQSxJQUFBQyxFQUFBO0VBQUEsSUFBQXRCLENBQUEsUUFBQU8sTUFBQSxDQUFBQyxHQUFBO0lBR1VhLEVBQUEsR0FBQUEsQ0FBQTtNQUNURCxlQUFlLENBQUMsQ0FBQztJQUFBLENBQ3ZCO0lBQUVFLEVBQUEsSUFBQ0YsZUFBZSxDQUFDO0lBQUFwQixDQUFBLE1BQUFxQixFQUFBO0lBQUFyQixDQUFBLE1BQUFzQixFQUFBO0VBQUE7SUFBQUQsRUFBQSxHQUFBckIsQ0FBQTtJQUFBc0IsRUFBQSxHQUFBdEIsQ0FBQTtFQUFBO0VBRnBCeEIsS0FBSyxDQUFBK0MsU0FBVSxDQUFDRixFQUVmLEVBQUVDLEVBQWlCLENBQUM7RUFHckI1QyxXQUFXLENBQUMwQyxlQUFlLEVBQUUsT0FBYyxDQUFDO0VBRTVDLElBQUksQ0FBQ2xCLGVBQWU7SUFBQSxPQUNYLElBQUk7RUFBQTtFQU1iLE1BQUFzQixhQUFBLEdBQ0VwQixjQUFjLEtBQUssVUFNMEIsR0FON0MsMEJBTTZDLEdBSnpDQSxjQUFjLEtBQUssUUFJc0IsR0FKekMscUNBSXlDLEdBRnZDQSxjQUFjLEtBQUssS0FFb0IsR0FGdkMseUJBRXVDLEdBRnZDLHFDQUV1QztFQUFBLElBQUFxQixFQUFBO0VBQUEsSUFBQXpCLENBQUEsUUFBQUgsT0FBQTtJQUkxQzRCLEVBQUEsR0FBQTVCLE9BSUEsSUFIQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQVIsS0FBTyxDQUFDLENBQU0sSUFBVSxDQUFWLFVBQVUsQ0FBQyxnQkFDWixDQUFBb0IsS0FBSyxDQUFBQyxPQUFPLENBQy9CLEVBRkMsSUFBSSxDQUdOO0lBQUFsQixDQUFBLE1BQUFILE9BQUE7SUFBQUcsQ0FBQSxNQUFBeUIsRUFBQTtFQUFBO0lBQUFBLEVBQUEsR0FBQXpCLENBQUE7RUFBQTtFQUFBLElBQUEwQixFQUFBO0VBQUEsSUFBQTFCLENBQUEsUUFBQXdCLGFBQUE7SUFDREUsRUFBQSxJQUFDLElBQUksQ0FBTyxLQUFTLENBQVQsU0FBUyxDQUFNLElBQVUsQ0FBVixVQUFVLENBQUMsdUJBQ2IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFKLEtBQUcsQ0FBQyxDQUFFRixjQUFZLENBQUUsRUFBekIsSUFBSSxDQUM5QixFQUZDLElBQUksQ0FFRTtJQUFBeEIsQ0FBQSxNQUFBd0IsYUFBQTtJQUFBeEIsQ0FBQSxNQUFBMEIsRUFBQTtFQUFBO0lBQUFBLEVBQUEsR0FBQTFCLENBQUE7RUFBQTtFQUFBLElBQUEyQixFQUFBO0VBQUEsSUFBQTNCLENBQUEsUUFBQXlCLEVBQUEsSUFBQXpCLENBQUEsUUFBQTBCLEVBQUE7SUFSVEMsRUFBQSxLQUNHLENBQUFGLEVBSUQsQ0FDQSxDQUFBQyxFQUVNLENBQUMsR0FDTjtJQUFBMUIsQ0FBQSxNQUFBeUIsRUFBQTtJQUFBekIsQ0FBQSxNQUFBMEIsRUFBQTtJQUFBMUIsQ0FBQSxNQUFBMkIsRUFBQTtFQUFBO0lBQUFBLEVBQUEsR0FBQTNCLENBQUE7RUFBQTtFQUFBLE9BVEgyQixFQVNHO0FBQUEiLCJpZ25vcmVMaXN0IjpbXX0= \ No newline at end of file diff --git a/src/components/Passes/Passes.tsx b/src/components/Passes/Passes.tsx index fe47f9db..82f19efd 100644 --- a/src/components/Passes/Passes.tsx +++ b/src/components/Passes/Passes.tsx @@ -7,7 +7,7 @@ import { setClipboard } from '../../ink/termio/osc.js'; // eslint-disable-next-line custom-rules/prefer-use-keybindings -- enter to copy link import { Box, Link, Text, useInput } from '../../ink.js'; import { useKeybinding } from '../../keybindings/useKeybinding.js'; -import { logEvent } from '../../services/analytics/index.js'; +import { logEvent } from '../../services/analytics-stub.js'; import { fetchReferralRedemptions, formatCreditAmount, getCachedOrFetchPassesEligibility } from '../../services/api/referral.js'; import type { ReferralRedemptionsResponse, ReferrerRewardInfo } from '../../services/oauth/types.js'; import { count } from '../../utils/array.js'; diff --git a/src/components/PromptInput/Notifications.tsx b/src/components/PromptInput/Notifications.tsx index 9b263cf2..79087370 100644 --- a/src/components/PromptInput/Notifications.tsx +++ b/src/components/PromptInput/Notifications.tsx @@ -3,7 +3,7 @@ import { feature } from 'bun:bundle'; import * as React from 'react'; import { type ReactNode, useEffect, useMemo, useState } from 'react'; import { type Notification, useNotifications } from 'src/context/notifications.js'; -import { logEvent } from 'src/services/analytics/index.js'; +import { logEvent } from '../../services/analytics-stub.js'; import { useAppState } from 'src/state/AppState.js'; import { useVoiceState } from '../../context/voice.js'; import type { VerificationStatus } from '../../hooks/useApiKeyVerification.js'; diff --git a/src/components/PromptInput/PromptInput.tsx b/src/components/PromptInput/PromptInput.tsx index 128e73cb..247fe9dd 100644 --- a/src/components/PromptInput/PromptInput.tsx +++ b/src/components/PromptInput/PromptInput.tsx @@ -6,7 +6,7 @@ import { useCallback, useEffect, useMemo, useRef, useState, useSyncExternalStore import { useNotifications } from 'src/context/notifications.js'; import { useCommandQueue } from 'src/hooks/useCommandQueue.js'; import { type IDEAtMentioned, useIdeAtMentioned } from 'src/hooks/useIdeAtMentioned.js'; -import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent } from 'src/services/analytics/index.js'; +import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent } from '../../services/analytics-stub.js'; import { type AppState, useAppState, useAppStateStore, useSetAppState } from 'src/state/AppState.js'; import type { FooterItem } from 'src/state/AppStateStore.js'; import { getCwd } from 'src/utils/cwd.js'; diff --git a/src/components/PromptInput/PromptInputHelpMenu.tsx b/src/components/PromptInput/PromptInputHelpMenu.tsx index 53fdcc98..b4307346 100644 --- a/src/components/PromptInput/PromptInputHelpMenu.tsx +++ b/src/components/PromptInput/PromptInputHelpMenu.tsx @@ -5,7 +5,7 @@ import { Box, Text } from 'src/ink.js'; import { getPlatform } from 'src/utils/platform.js'; import { isKeybindingCustomizationEnabled } from '../../keybindings/loadUserBindings.js'; import { useShortcutDisplay } from '../../keybindings/useShortcutDisplay.js'; -import { getFeatureValue_CACHED_MAY_BE_STALE } from '../../services/analytics/growthbook.js'; +import { getFeatureValue_CACHED_MAY_BE_STALE } from '../../services/analytics-stub.js'; import { isFastModeAvailable, isFastModeEnabled } from '../../utils/fastMode.js'; import { getNewlineInstructions } from './utils.js'; diff --git a/src/components/QuickOpenDialog.tsx b/src/components/QuickOpenDialog.tsx index 23c12af9..4b6b706f 100644 --- a/src/components/QuickOpenDialog.tsx +++ b/src/components/QuickOpenDialog.tsx @@ -6,7 +6,7 @@ import { useRegisterOverlay } from '../context/overlayContext.js'; import { generateFileSuggestions } from '../hooks/fileSuggestions.js'; import { useTerminalSize } from '../hooks/useTerminalSize.js'; import { Text } from '../ink.js'; -import { logEvent } from '../services/analytics/index.js'; +import { logEvent } from '../services/analytics-stub.js'; import { getCwd } from '../utils/cwd.js'; import { openFileInExternalEditor } from '../utils/editor.js'; import { truncatePathMiddle, truncateToWidth } from '../utils/format.js'; diff --git a/src/components/Settings/Config.tsx b/src/components/Settings/Config.tsx index 37ee93c9..7db97e0f 100644 --- a/src/components/Settings/Config.tsx +++ b/src/components/Settings/Config.tsx @@ -14,7 +14,7 @@ import chalk from 'chalk'; import { permissionModeTitle, permissionModeFromString, toExternalPermissionMode, isExternalPermissionMode, EXTERNAL_PERMISSION_MODES, PERMISSION_MODES, type ExternalPermissionMode, type PermissionMode } from '../../utils/permissions/PermissionMode.js'; import { getAutoModeEnabledState, hasAutoModeOptInAnySource, transitionPlanAutoMode } from '../../utils/permissions/permissionSetup.js'; import { logError } from '../../utils/log.js'; -import { logEvent, type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS } from 'src/services/analytics/index.js'; +import { logEvent, type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS } from '../../services/analytics-stub.js'; import { isBridgeEnabled } from '../../bridge/bridgeEnabled.js'; import { ThemePicker } from '../ThemePicker.js'; import { useAppState, useSetAppState, useAppStateStore } from '../../state/AppState.js'; @@ -40,7 +40,7 @@ import { getUserMsgOptIn, setUserMsgOptIn } from '../../bootstrap/state.js'; import { DEFAULT_OUTPUT_STYLE_NAME } from 'src/constants/outputStyles.js'; import { isEnvTruthy, isRunningOnHomespace } from 'src/utils/envUtils.js'; import type { LocalJSXCommandContext, CommandResultDisplay } from '../../commands.js'; -import { getFeatureValue_CACHED_MAY_BE_STALE } from '../../services/analytics/growthbook.js'; +import { getFeatureValue_CACHED_MAY_BE_STALE } from '../../services/analytics-stub.js'; import { isAgentSwarmsEnabled } from '../../utils/agentSwarmsEnabled.js'; import { getCliTeammateModeOverride, clearCliTeammateModeOverride } from '../../utils/swarm/backends/teammateModeSnapshot.js'; import { getHardcodedTeammateModelFallback } from '../../utils/swarm/teammateModel.js'; diff --git a/src/components/Spinner.tsx b/src/components/Spinner.tsx index c170c86b..86cb4e9f 100644 --- a/src/components/Spinner.tsx +++ b/src/components/Spinner.tsx @@ -6,7 +6,7 @@ import { useEffect, useMemo, useRef, useState } from 'react'; import { computeGlimmerIndex, computeShimmerSegments, SHIMMER_INTERVAL_MS } from '../bridge/bridgeStatusUtil.js'; import { feature } from 'bun:bundle'; import { getKairosActive, getUserMsgOptIn } from '../bootstrap/state.js'; -import { getFeatureValue_CACHED_MAY_BE_STALE } from '../services/analytics/growthbook.js'; +import { getFeatureValue_CACHED_MAY_BE_STALE } from '../services/analytics-stub.js'; import { isEnvTruthy } from '../utils/envUtils.js'; import { count } from '../utils/array.js'; import sample from 'lodash-es/sample.js'; diff --git a/src/components/StatusLine.tsx b/src/components/StatusLine.tsx index eafb49ad..115ef8ab 100644 --- a/src/components/StatusLine.tsx +++ b/src/components/StatusLine.tsx @@ -1,7 +1,7 @@ import { feature } from 'bun:bundle'; import * as React from 'react'; import { memo, useCallback, useEffect, useRef } from 'react'; -import { logEvent } from 'src/services/analytics/index.js'; +import { logEvent } from '../services/analytics-stub.js'; import { useAppState, useSetAppState } from 'src/state/AppState.js'; import type { PermissionMode } from 'src/utils/permissions/PermissionMode.js'; import { getIsRemoteMode, getKairosActive, getMainThreadAgentType, getOriginalCwd, getSdkBetas, getSessionId } from '../bootstrap/state.js'; diff --git a/src/components/TeleportResumeWrapper.tsx b/src/components/TeleportResumeWrapper.tsx index ead5fdb9..d40678a9 100644 --- a/src/components/TeleportResumeWrapper.tsx +++ b/src/components/TeleportResumeWrapper.tsx @@ -1,6 +1,6 @@ import { c as _c } from "react/compiler-runtime"; import React, { useEffect } from 'react'; -import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent } from 'src/services/analytics/index.js'; +import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent } from '../services/analytics-stub.js'; import type { TeleportRemoteResponse } from 'src/utils/conversationRecovery.js'; import type { CodeSession } from 'src/utils/teleport/api.js'; import { type TeleportSource, useTeleportResume } from '../hooks/useTeleportResume.js'; diff --git a/src/components/TokenWarning.tsx b/src/components/TokenWarning.tsx index 8a5c2004..df549896 100644 --- a/src/components/TokenWarning.tsx +++ b/src/components/TokenWarning.tsx @@ -3,7 +3,7 @@ import { feature } from 'bun:bundle'; import * as React from 'react'; import { useSyncExternalStore } from 'react'; import { Box, Text } from '../ink.js'; -import { getFeatureValue_CACHED_MAY_BE_STALE } from '../services/analytics/growthbook.js'; +import { getFeatureValue_CACHED_MAY_BE_STALE } from '../services/analytics-stub.js'; import { calculateTokenWarningState, getEffectiveContextWindowSize, isAutoCompactEnabled } from '../services/compact/autoCompact.js'; import { useCompactWarningSuppression } from '../services/compact/compactWarningHook.js'; import { getUpgradeMessage } from '../utils/model/contextWindowUpgradeCheck.js'; diff --git a/src/components/TrustDialog/TrustDialog.tsx b/src/components/TrustDialog/TrustDialog.tsx index 20df2ca3..c3d66869 100644 --- a/src/components/TrustDialog/TrustDialog.tsx +++ b/src/components/TrustDialog/TrustDialog.tsx @@ -1,7 +1,7 @@ import { c as _c } from "react/compiler-runtime"; import { homedir } from 'os'; import React from 'react'; -import { logEvent } from 'src/services/analytics/index.js'; +import { logEvent } from '../../services/analytics-stub.js'; import { setSessionTrustAccepted } from '../../bootstrap/state.js'; import type { Command } from '../../commands.js'; import { useExitOnCtrlCDWithKeybindings } from '../../hooks/useExitOnCtrlCDWithKeybindings.js'; diff --git a/src/components/WorktreeExitDialog.tsx b/src/components/WorktreeExitDialog.tsx index c51c9390..e74fb69f 100644 --- a/src/components/WorktreeExitDialog.tsx +++ b/src/components/WorktreeExitDialog.tsx @@ -1,6 +1,6 @@ import React, { useEffect, useState } from 'react'; import type { CommandResultDisplay } from 'src/commands.js'; -import { logEvent } from 'src/services/analytics/index.js'; +import { logEvent } from '../services/analytics-stub.js'; import { logForDebugging } from 'src/utils/debug.js'; import { Box, Text } from '../ink.js'; import { execFileNoThrow } from '../utils/execFileNoThrow.js'; diff --git a/src/components/agents/generateAgent.ts b/src/components/agents/generateAgent.ts index 04fd6245..7f88ba3a 100644 --- a/src/components/agents/generateAgent.ts +++ b/src/components/agents/generateAgent.ts @@ -13,7 +13,7 @@ import { isAutoMemoryEnabled } from '../../memdir/paths.js' import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent, -} from '../../services/analytics/index.js' +} from '../../services/analytics-stub.js' import { jsonParse } from '../../utils/slowOperations.js' import { asSystemPrompt } from '../../utils/systemPromptType.js' diff --git a/src/components/agents/new-agent-creation/wizard-steps/ConfirmStepWrapper.tsx b/src/components/agents/new-agent-creation/wizard-steps/ConfirmStepWrapper.tsx index 343eca21..10dbbcaa 100644 --- a/src/components/agents/new-agent-creation/wizard-steps/ConfirmStepWrapper.tsx +++ b/src/components/agents/new-agent-creation/wizard-steps/ConfirmStepWrapper.tsx @@ -1,6 +1,6 @@ import chalk from 'chalk'; import React, { type ReactNode, useCallback, useState } from 'react'; -import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent } from 'src/services/analytics/index.js'; +import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent } from '../../../../services/analytics-stub.js'; import { useSetAppState } from 'src/state/AppState.js'; import type { Tools } from '../../../../Tool.js'; import type { AgentDefinition } from '../../../../tools/AgentTool/loadAgentsDir.js'; diff --git a/src/components/grove/Grove.tsx b/src/components/grove/Grove.tsx index be5505bc..e242e271 100644 --- a/src/components/grove/Grove.tsx +++ b/src/components/grove/Grove.tsx @@ -1,6 +1,6 @@ import { c as _c } from "react/compiler-runtime"; import React, { useEffect, useState } from 'react'; -import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent } from 'src/services/analytics/index.js'; +import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent } from '../../services/analytics-stub.js'; import { Box, Link, Text, useInput } from '../../ink.js'; import { type AccountSettings, calculateShouldShowGrove, type GroveConfig, getGroveNoticeConfig, getGroveSettings, markGroveNoticeViewed, updateGroveSettings } from '../../services/api/grove.js'; import { Select } from '../CustomSelect/index.js'; diff --git a/src/components/mcp/MCPRemoteServerMenu.tsx b/src/components/mcp/MCPRemoteServerMenu.tsx index 954c6f30..abcf38ba 100644 --- a/src/components/mcp/MCPRemoteServerMenu.tsx +++ b/src/components/mcp/MCPRemoteServerMenu.tsx @@ -1,6 +1,6 @@ import figures from 'figures'; import React, { useEffect, useRef, useState } from 'react'; -import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent } from 'src/services/analytics/index.js'; +import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent } from '../../services/analytics-stub.js'; import type { CommandResultDisplay } from '../../commands.js'; import { getOauthConfig } from '../../constants/oauth.js'; import { useExitOnCtrlCDWithKeybindings } from '../../hooks/useExitOnCtrlCDWithKeybindings.js'; diff --git a/src/components/memory/MemoryFileSelector.tsx b/src/components/memory/MemoryFileSelector.tsx index 0c207efe..c938803a 100644 --- a/src/components/memory/MemoryFileSelector.tsx +++ b/src/components/memory/MemoryFileSelector.tsx @@ -10,7 +10,7 @@ import { useExitOnCtrlCDWithKeybindings } from '../../hooks/useExitOnCtrlCDWithK import { Box, Text } from '../../ink.js'; import { useKeybinding } from '../../keybindings/useKeybinding.js'; import { getAutoMemPath, isAutoMemoryEnabled } from '../../memdir/paths.js'; -import { logEvent } from '../../services/analytics/index.js'; +import { logEvent } from '../../services/analytics-stub.js'; import { isAutoDreamEnabled } from '../../services/autoDream/config.js'; import { readLastConsolidatedAt } from '../../services/autoDream/consolidationLock.js'; import { useAppState } from '../../state/AppState.js'; diff --git a/src/components/messageActions.tsx b/src/components/messageActions.tsx index 982eca0b..5712e667 100644 --- a/src/components/messageActions.tsx +++ b/src/components/messageActions.tsx @@ -4,7 +4,7 @@ import type { RefObject } from 'react'; import React, { useCallback, useMemo, useRef } from 'react'; import { Box, Text } from '../ink.js'; import { useKeybindings } from '../keybindings/useKeybinding.js'; -import { logEvent } from '../services/analytics/index.js'; +import { logEvent } from '../services/analytics-stub.js'; import type { NormalizedUserMessage, RenderableMessage } from '../types/message.js'; import { isEmptyMessageText, SYNTHETIC_MESSAGES } from '../utils/messages.js'; const NAVIGABLE_TYPES = ['user', 'assistant', 'grouped_tool_use', 'collapsed_read_search', 'system', 'attachment'] as const; diff --git a/src/components/messages/UserPromptMessage.tsx b/src/components/messages/UserPromptMessage.tsx index e2fa3d7e..5afa73a8 100644 --- a/src/components/messages/UserPromptMessage.tsx +++ b/src/components/messages/UserPromptMessage.tsx @@ -3,7 +3,7 @@ import type { TextBlockParam } from '@anthropic-ai/sdk/resources/index.mjs'; import React, { useContext, useMemo } from 'react'; import { getKairosActive, getUserMsgOptIn } from '../../bootstrap/state.js'; import { Box } from '../../ink.js'; -import { getFeatureValue_CACHED_MAY_BE_STALE } from '../../services/analytics/growthbook.js'; +import { getFeatureValue_CACHED_MAY_BE_STALE } from '../../services/analytics-stub.js'; import { useAppState } from '../../state/AppState.js'; import { isEnvTruthy } from '../../utils/envUtils.js'; import { logError } from '../../utils/log.js'; diff --git a/src/components/permissions/AskUserQuestionPermissionRequest/AskUserQuestionPermissionRequest.tsx b/src/components/permissions/AskUserQuestionPermissionRequest/AskUserQuestionPermissionRequest.tsx index 38719156..e9791f2e 100644 --- a/src/components/permissions/AskUserQuestionPermissionRequest/AskUserQuestionPermissionRequest.tsx +++ b/src/components/permissions/AskUserQuestionPermissionRequest/AskUserQuestionPermissionRequest.tsx @@ -6,7 +6,7 @@ import { useTerminalSize } from '../../../hooks/useTerminalSize.js'; import { stringWidth } from '../../../ink/stringWidth.js'; import { useTheme } from '../../../ink.js'; import { useKeybindings } from '../../../keybindings/useKeybinding.js'; -import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent } from '../../../services/analytics/index.js'; +import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent } from '../../../services/analytics-stub.js'; import { useAppState } from '../../../state/AppState.js'; import type { Question } from '../../../tools/AskUserQuestionTool/AskUserQuestionTool.js'; import { AskUserQuestionTool } from '../../../tools/AskUserQuestionTool/AskUserQuestionTool.js'; diff --git a/src/components/permissions/BashPermissionRequest/BashPermissionRequest.tsx b/src/components/permissions/BashPermissionRequest/BashPermissionRequest.tsx index bb193726..2ea1e5dc 100644 --- a/src/components/permissions/BashPermissionRequest/BashPermissionRequest.tsx +++ b/src/components/permissions/BashPermissionRequest/BashPermissionRequest.tsx @@ -4,9 +4,9 @@ import figures from 'figures'; import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'; import { Box, Text, useTheme } from '../../../ink.js'; import { useKeybinding } from '../../../keybindings/useKeybinding.js'; -import { getFeatureValue_CACHED_MAY_BE_STALE } from '../../../services/analytics/growthbook.js'; -import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent } from '../../../services/analytics/index.js'; -import { sanitizeToolNameForAnalytics } from '../../../services/analytics/metadata.js'; +import { getFeatureValue_CACHED_MAY_BE_STALE } from '../../../services/analytics-stub.js'; +import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent } from '../../../services/analytics-stub.js'; +import { sanitizeToolNameForAnalytics } from '../../../services/analytics-stub.js'; import { useAppState } from '../../../state/AppState.js'; import { BashTool } from '../../../tools/BashTool/BashTool.js'; import { getFirstWordPrefix, getSimpleCommandPrefix } from '../../../tools/BashTool/bashPermissions.js'; diff --git a/src/components/permissions/EnterPlanModePermissionRequest/EnterPlanModePermissionRequest.tsx b/src/components/permissions/EnterPlanModePermissionRequest/EnterPlanModePermissionRequest.tsx index d680f0c5..2c6631f0 100644 --- a/src/components/permissions/EnterPlanModePermissionRequest/EnterPlanModePermissionRequest.tsx +++ b/src/components/permissions/EnterPlanModePermissionRequest/EnterPlanModePermissionRequest.tsx @@ -2,7 +2,7 @@ import { c as _c } from "react/compiler-runtime"; import React from 'react'; import { handlePlanModeTransition } from '../../../bootstrap/state.js'; import { Box, Text } from '../../../ink.js'; -import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent } from '../../../services/analytics/index.js'; +import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent } from '../../../services/analytics-stub.js'; import { useAppState } from '../../../state/AppState.js'; import { isPlanModeInterviewPhaseEnabled } from '../../../utils/planModeV2.js'; import { Select } from '../../CustomSelect/index.js'; diff --git a/src/components/permissions/ExitPlanModePermissionRequest/ExitPlanModePermissionRequest.tsx b/src/components/permissions/ExitPlanModePermissionRequest/ExitPlanModePermissionRequest.tsx index 8e0ca6c5..bfaadc11 100644 --- a/src/components/permissions/ExitPlanModePermissionRequest/ExitPlanModePermissionRequest.tsx +++ b/src/components/permissions/ExitPlanModePermissionRequest/ExitPlanModePermissionRequest.tsx @@ -3,7 +3,7 @@ import type { UUID } from 'crypto'; import figures from 'figures'; import React, { useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react'; import { useNotifications } from 'src/context/notifications.js'; -import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent } from 'src/services/analytics/index.js'; +import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent } from '../../../services/analytics-stub.js'; import { useAppState, useAppStateStore, useSetAppState } from 'src/state/AppState.js'; import { getSdkBetas, getSessionId, isSessionPersistenceDisabled, setHasExitedPlanMode, setNeedsAutoModeExitAttachment, setNeedsPlanModeExitAttachment } from '../../../bootstrap/state.js'; import { generateSessionName } from '../../../commands/rename/generateSessionName.js'; diff --git a/src/components/permissions/FallbackPermissionRequest.tsx b/src/components/permissions/FallbackPermissionRequest.tsx index 2e889785..fcc9c39a 100644 --- a/src/components/permissions/FallbackPermissionRequest.tsx +++ b/src/components/permissions/FallbackPermissionRequest.tsx @@ -2,7 +2,7 @@ import { c as _c } from "react/compiler-runtime"; import React, { useCallback, useMemo } from 'react'; import { getOriginalCwd } from '../../bootstrap/state.js'; import { Box, Text, useTheme } from '../../ink.js'; -import { sanitizeToolNameForAnalytics } from '../../services/analytics/metadata.js'; +import { sanitizeToolNameForAnalytics } from '../../services/analytics-stub.js'; import { env } from '../../utils/env.js'; import { shouldShowAlwaysAllowOptions } from '../../utils/permissions/permissionsLoader.js'; import { truncateToLines } from '../../utils/stringUtils.js'; diff --git a/src/components/permissions/FilePermissionDialog/useFilePermissionDialog.ts b/src/components/permissions/FilePermissionDialog/useFilePermissionDialog.ts index 3272c967..63f7285c 100644 --- a/src/components/permissions/FilePermissionDialog/useFilePermissionDialog.ts +++ b/src/components/permissions/FilePermissionDialog/useFilePermissionDialog.ts @@ -4,8 +4,8 @@ import { useKeybindings } from '../../../keybindings/useKeybinding.js' import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent, -} from '../../../services/analytics/index.js' -import { sanitizeToolNameForAnalytics } from '../../../services/analytics/metadata.js' +} from '../../../services/analytics-stub.js' +import { sanitizeToolNameForAnalytics } from '../../../services/analytics-stub.js' import type { PermissionUpdate } from '../../../utils/permissions/PermissionUpdateSchema.js' import type { CompletionType } from '../../../utils/unaryLogging.js' import type { ToolUseConfirm } from '../PermissionRequest.js' diff --git a/src/components/permissions/FilePermissionDialog/usePermissionHandler.ts b/src/components/permissions/FilePermissionDialog/usePermissionHandler.ts index 85821cbc..e0a4cd53 100644 --- a/src/components/permissions/FilePermissionDialog/usePermissionHandler.ts +++ b/src/components/permissions/FilePermissionDialog/usePermissionHandler.ts @@ -1,8 +1,8 @@ import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent, -} from '../../../services/analytics/index.js' -import { sanitizeToolNameForAnalytics } from '../../../services/analytics/metadata.js' +} from '../../../services/analytics-stub.js' +import { sanitizeToolNameForAnalytics } from '../../../services/analytics-stub.js' import type { ToolPermissionContext } from '../../../Tool.js' import { CLAUDE_FOLDER_PERMISSION_PATTERN, diff --git a/src/components/permissions/PermissionExplanation.tsx b/src/components/permissions/PermissionExplanation.tsx index b7fd36b2..d0c10052 100644 --- a/src/components/permissions/PermissionExplanation.tsx +++ b/src/components/permissions/PermissionExplanation.tsx @@ -2,7 +2,7 @@ import { c as _c } from "react/compiler-runtime"; import React, { Suspense, use, useState } from 'react'; import { Box, Text } from '../../ink.js'; import { useKeybinding } from '../../keybindings/useKeybinding.js'; -import { logEvent } from '../../services/analytics/index.js'; +import { logEvent } from '../../services/analytics-stub.js'; import type { Message } from '../../types/message.js'; import { generatePermissionExplanation, isPermissionExplainerEnabled, type PermissionExplanation as PermissionExplanationType, type RiskLevel } from '../../utils/permissions/permissionExplainer.js'; import { ShimmerChar } from '../Spinner/ShimmerChar.js'; diff --git a/src/components/permissions/PermissionPrompt.tsx b/src/components/permissions/PermissionPrompt.tsx index cc04708a..86718804 100644 --- a/src/components/permissions/PermissionPrompt.tsx +++ b/src/components/permissions/PermissionPrompt.tsx @@ -3,7 +3,7 @@ import React, { type ReactNode, useCallback, useMemo, useState } from 'react'; import { Box, Text } from '../../ink.js'; import type { KeybindingAction } from '../../keybindings/types.js'; import { useKeybindings } from '../../keybindings/useKeybinding.js'; -import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent } from '../../services/analytics/index.js'; +import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent } from '../../services/analytics-stub.js'; import { useSetAppState } from '../../state/AppState.js'; import { type OptionWithDescription, Select } from '../CustomSelect/select.js'; export type FeedbackType = 'accept' | 'reject'; diff --git a/src/components/permissions/PowerShellPermissionRequest/PowerShellPermissionRequest.tsx b/src/components/permissions/PowerShellPermissionRequest/PowerShellPermissionRequest.tsx index 2a7cd38e..1956d37e 100644 --- a/src/components/permissions/PowerShellPermissionRequest/PowerShellPermissionRequest.tsx +++ b/src/components/permissions/PowerShellPermissionRequest/PowerShellPermissionRequest.tsx @@ -1,9 +1,9 @@ import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'; import { Box, Text, useTheme } from '../../../ink.js'; import { useKeybinding } from '../../../keybindings/useKeybinding.js'; -import { getFeatureValue_CACHED_MAY_BE_STALE } from '../../../services/analytics/growthbook.js'; -import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent } from '../../../services/analytics/index.js'; -import { sanitizeToolNameForAnalytics } from '../../../services/analytics/metadata.js'; +import { getFeatureValue_CACHED_MAY_BE_STALE } from '../../../services/analytics-stub.js'; +import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent } from '../../../services/analytics-stub.js'; +import { sanitizeToolNameForAnalytics } from '../../../services/analytics-stub.js'; import { getDestructiveCommandWarning } from '../../../tools/PowerShellTool/destructiveCommandWarning.js'; import { PowerShellTool } from '../../../tools/PowerShellTool/PowerShellTool.js'; import { isAllowlistedCommand } from '../../../tools/PowerShellTool/readOnlyValidation.js'; diff --git a/src/components/permissions/SandboxPermissionRequest.tsx b/src/components/permissions/SandboxPermissionRequest.tsx index bd994212..484e758d 100644 --- a/src/components/permissions/SandboxPermissionRequest.tsx +++ b/src/components/permissions/SandboxPermissionRequest.tsx @@ -2,7 +2,7 @@ import { c as _c } from "react/compiler-runtime"; import * as React from 'react'; import { Box, Text } from 'src/ink.js'; import { type NetworkHostPattern, shouldAllowManagedSandboxDomainsOnly } from 'src/utils/sandbox/sandbox-adapter.js'; -import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent } from '../../services/analytics/index.js'; +import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent } from '../../services/analytics-stub.js'; import { Select } from '../CustomSelect/select.js'; import { PermissionDialog } from './PermissionDialog.js'; export type SandboxPermissionRequestProps = { diff --git a/src/components/permissions/SkillPermissionRequest/SkillPermissionRequest.tsx b/src/components/permissions/SkillPermissionRequest/SkillPermissionRequest.tsx index 346f846b..4582fc7c 100644 --- a/src/components/permissions/SkillPermissionRequest/SkillPermissionRequest.tsx +++ b/src/components/permissions/SkillPermissionRequest/SkillPermissionRequest.tsx @@ -3,7 +3,7 @@ import React, { useCallback, useMemo } from 'react'; import { logError } from 'src/utils/log.js'; import { getOriginalCwd } from '../../../bootstrap/state.js'; import { Box, Text } from '../../../ink.js'; -import { sanitizeToolNameForAnalytics } from '../../../services/analytics/metadata.js'; +import { sanitizeToolNameForAnalytics } from '../../../services/analytics-stub.js'; import { SKILL_TOOL_NAME } from '../../../tools/SkillTool/constants.js'; import { SkillTool } from '../../../tools/SkillTool/SkillTool.js'; import { env } from '../../../utils/env.js'; diff --git a/src/components/permissions/hooks.ts b/src/components/permissions/hooks.ts index 7cba31b7..631419e7 100644 --- a/src/components/permissions/hooks.ts +++ b/src/components/permissions/hooks.ts @@ -3,8 +3,8 @@ import { useEffect, useRef } from 'react' import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent, -} from 'src/services/analytics/index.js' -import { sanitizeToolNameForAnalytics } from 'src/services/analytics/metadata.js' +} from '../../services/analytics-stub.js' +import { sanitizeToolNameForAnalytics } from '../../services/analytics-stub.js' import { BashTool } from 'src/tools/BashTool/BashTool.js' import { splitCommand_DEPRECATED } from 'src/utils/bash/commands.js' import type { diff --git a/src/components/permissions/useShellPermissionFeedback.ts b/src/components/permissions/useShellPermissionFeedback.ts index 58abbbda..ddc6098c 100644 --- a/src/components/permissions/useShellPermissionFeedback.ts +++ b/src/components/permissions/useShellPermissionFeedback.ts @@ -2,8 +2,8 @@ import { useState } from 'react' import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent, -} from '../../services/analytics/index.js' -import { sanitizeToolNameForAnalytics } from '../../services/analytics/metadata.js' +} from '../../services/analytics-stub.js' +import { sanitizeToolNameForAnalytics } from '../../services/analytics-stub.js' import { useSetAppState } from '../../state/AppState.js' import type { ToolUseConfirm } from './PermissionRequest.js' import { logUnaryPermissionEvent } from './utils.js' diff --git a/src/constants/prompts.ts b/src/constants/prompts.ts index 9eb49b36..01812d46 100644 --- a/src/constants/prompts.ts +++ b/src/constants/prompts.ts @@ -46,7 +46,7 @@ import { import { isEnvTruthy } from '../utils/envUtils.js' import { isReplModeEnabled } from '../tools/REPLTool/constants.js' import { feature } from 'bun:bundle' -import { getFeatureValue_CACHED_MAY_BE_STALE } from 'src/services/analytics/growthbook.js' +import { getFeatureValue_CACHED_MAY_BE_STALE } from '../services/analytics-stub.js' import { shouldUseGlobalCacheScope } from '../utils/betas.js' import { isForkSubagentEnabled } from '../tools/AgentTool/forkSubagent.js' import { diff --git a/src/constants/system.ts b/src/constants/system.ts index 0cd2e765..ed88fb36 100644 --- a/src/constants/system.ts +++ b/src/constants/system.ts @@ -1,7 +1,7 @@ // Critical system constants extracted to break circular dependencies import { feature } from 'bun:bundle' -import { getFeatureValue_CACHED_MAY_BE_STALE } from '../services/analytics/growthbook.js' +import { getFeatureValue_CACHED_MAY_BE_STALE } from '../services/analytics-stub.js' import { logForDebugging } from '../utils/debug.js' import { isEnvDefinedFalsy } from '../utils/envUtils.js' import { getAPIProvider } from '../utils/model/providers.js' diff --git a/src/coordinator/coordinatorMode.ts b/src/coordinator/coordinatorMode.ts index fc5dc4eb..2193b735 100644 --- a/src/coordinator/coordinatorMode.ts +++ b/src/coordinator/coordinatorMode.ts @@ -1,10 +1,10 @@ import { feature } from 'bun:bundle' import { ASYNC_AGENT_ALLOWED_TOOLS } from '../constants/tools.js' -import { checkStatsigFeatureGate_CACHED_MAY_BE_STALE } from '../services/analytics/growthbook.js' +import { checkStatsigFeatureGate_CACHED_MAY_BE_STALE } from '../services/analytics-stub.js' import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent, -} from '../services/analytics/index.js' +} from '../services/analytics-stub.js' import { AGENT_TOOL_NAME } from '../tools/AgentTool/constants.js' import { BASH_TOOL_NAME } from '../tools/BashTool/toolName.js' import { FILE_EDIT_TOOL_NAME } from '../tools/FileEditTool/constants.js' diff --git a/src/cost-tracker.ts b/src/cost-tracker.ts index b03184c6..c5a54881 100644 --- a/src/cost-tracker.ts +++ b/src/cost-tracker.ts @@ -31,7 +31,7 @@ import type { ModelUsage } from './entrypoints/agentSdkTypes.js' import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent, -} from './services/analytics/index.js' +} from './services/analytics-stub.js' import { getAdvisorUsage } from './utils/advisor.js' import { getCurrentProjectConfig, diff --git a/src/entrypoints/init.ts b/src/entrypoints/init.ts index 69eb01d2..6f76f77f 100644 --- a/src/entrypoints/init.ts +++ b/src/entrypoints/init.ts @@ -45,8 +45,8 @@ import { // ~400KB of OpenTelemetry + protobuf modules until telemetry is actually initialized. // gRPC exporters (~700KB via @grpc/grpc-js) are further lazy-loaded within instrumentation.ts. import { configureGlobalAgents } from '../utils/proxy.js' -import { isBetaTracingEnabled } from '../utils/telemetry/betaSessionTracing.js' -import { getTelemetryAttributes } from '../utils/telemetryAttributes.js' +import { isBetaTracingEnabled } from '../utils/telemetry-stub.js' +import { getTelemetryAttributes } from '../utils/telemetryAttributes-stub.js' import { setShellIfWindows } from '../utils/windowsPaths.js' // initialize1PEventLogging is dynamically imported to defer OpenTelemetry sdk-logs/resources @@ -87,22 +87,23 @@ export const init = memoize(async (): Promise => { setupGracefulShutdown() profileCheckpoint('init_after_graceful_shutdown') + // REMOVED: 1P event logging (privacy-focused fork) // Initialize 1P event logging (no security concerns, but deferred to avoid // loading OpenTelemetry sdk-logs at startup). growthbook.js is already in // the module cache by this point (firstPartyEventLogger imports it), so the // second dynamic import adds no load cost. - void Promise.all([ - import('../services/analytics/firstPartyEventLogger.js'), - import('../services/analytics/growthbook.js'), - ]).then(([fp, gb]) => { - fp.initialize1PEventLogging() - // Rebuild the logger provider if tengu_1p_event_batch_config changes - // mid-session. Change detection (isEqual) is inside the handler so - // unchanged refreshes are no-ops. - gb.onGrowthBookRefresh(() => { - void fp.reinitialize1PEventLoggingIfConfigChanged() - }) - }) + // void Promise.all([ + // import('../services/analytics/firstPartyEventLogger.js'), + // import('../services/analytics/growthbook.js'), + // ]).then(([fp, gb]) => { + // fp.initialize1PEventLogging() + // // Rebuild the logger provider if tengu_1p_event_batch_config changes + // // mid-session. Change detection (isEqual) is inside the handler so + // // unchanged refreshes are no-ops. + // gb.onGrowthBookRefresh(() => { + // void fp.reinitialize1PEventLoggingIfConfigChanged() + // }) + // }) profileCheckpoint('init_after_1p_event_logging') // Populate OAuth account info if it is not already cached in config. This is needed since the @@ -244,71 +245,71 @@ export const init = memoize(async (): Promise => { * For non-eligible users, initializes telemetry immediately. * This should only be called once, after the trust dialog has been accepted. */ -export function initializeTelemetryAfterTrust(): void { - if (isEligibleForRemoteManagedSettings()) { - // For SDK/headless mode with beta tracing, initialize eagerly first - // to ensure the tracer is ready before the first query runs. - // The async path below will still run but doInitializeTelemetry() guards against double init. - if (getIsNonInteractiveSession() && isBetaTracingEnabled()) { - void doInitializeTelemetry().catch(error => { - logForDebugging( - `[3P telemetry] Eager telemetry init failed (beta tracing): ${errorMessage(error)}`, - { level: 'error' }, - ) - }) - } - logForDebugging( - '[3P telemetry] Waiting for remote managed settings before telemetry init', - ) - void waitForRemoteManagedSettingsToLoad() - .then(async () => { - logForDebugging( - '[3P telemetry] Remote managed settings loaded, initializing telemetry', - ) +// export function initializeTelemetryAfterTrust(): void { +// if (isEligibleForRemoteManagedSettings()) { +// // For SDK/headless mode with beta tracing, initialize eagerly first +// // to ensure the tracer is ready before the first query runs. +// // The async path below will still run but doInitializeTelemetry() guards against double init. +// if (getIsNonInteractiveSession() && isBetaTracingEnabled()) { +// void doInitializeTelemetry().catch(error => { +// logForDebugging( +// `[3P telemetry] Eager telemetry init failed (beta tracing): ${errorMessage(error)}`, +// { level: 'error' }, +// ) +// }) +// } +// logForDebugging( +// '[3P telemetry] Waiting for remote managed settings before telemetry init', +// ) +// void waitForRemoteManagedSettingsToLoad() +// .then(async () => { +// logForDebugging( +// '[3P telemetry] Remote managed settings loaded, initializing telemetry', +// ) // Re-apply env vars to pick up remote settings before initializing telemetry. - applyConfigEnvironmentVariables() - await doInitializeTelemetry() - }) - .catch(error => { - logForDebugging( - `[3P telemetry] Telemetry init failed (remote settings path): ${errorMessage(error)}`, - { level: 'error' }, - ) - }) - } else { - void doInitializeTelemetry().catch(error => { - logForDebugging( - `[3P telemetry] Telemetry init failed: ${errorMessage(error)}`, - { level: 'error' }, - ) - }) - } -} +// applyConfigEnvironmentVariables() +// await doInitializeTelemetry() +// }) +// .catch(error => { +// logForDebugging( +// `[3P telemetry] Telemetry init failed (remote settings path): ${errorMessage(error)}`, +// { level: 'error' }, +// ) +// }) +// } else { +// void doInitializeTelemetry().catch(error => { +// logForDebugging( +// `[3P telemetry] Telemetry init failed: ${errorMessage(error)}`, +// { level: 'error' }, +// ) +// }) +// } +// } -async function doInitializeTelemetry(): Promise { - if (telemetryInitialized) { +// async function doInitializeTelemetry(): Promise { +// if (telemetryInitialized) { // Already initialized, nothing to do - return - } +// return +// } // Set flag before init to prevent double initialization - telemetryInitialized = true - try { - await setMeterState() - } catch (error) { +// telemetryInitialized = true +// try { +// await setMeterState() +// } catch (error) { // Reset flag on failure so subsequent calls can retry - telemetryInitialized = false - throw error - } -} +// telemetryInitialized = false +// throw error +// } +// } async function setMeterState(): Promise { // Lazy-load instrumentation to defer ~400KB of OpenTelemetry + protobuf - const { initializeTelemetry } = await import( - '../utils/telemetry/instrumentation.js' - ) +// const { initializeTelemetry } = await import( +// '../utils/telemetry/instrumentation.js' +// ) // Initialize customer OTLP telemetry (metrics, logs, traces) - const meter = await initializeTelemetry() +// const meter = await initializeTelemetry() if (meter) { // Create factory function for attributed counters const createAttributedCounter = ( diff --git a/src/hooks/fileSuggestions.ts b/src/hooks/fileSuggestions.ts index 95403108..24143b65 100644 --- a/src/hooks/fileSuggestions.ts +++ b/src/hooks/fileSuggestions.ts @@ -11,7 +11,7 @@ import { FileIndex, yieldToEventLoop, } from '../native-ts/file-index/index.js' -import { logEvent } from '../services/analytics/index.js' +import { logEvent } from '../services/analytics-stub.js' import type { FileSuggestionCommandInput } from '../types/fileSuggestion.js' import { getGlobalConfig } from '../utils/config.js' import { getCwd } from '../utils/cwd.js' diff --git a/src/hooks/notifs/useCanSwitchToExistingSubscription.tsx b/src/hooks/notifs/useCanSwitchToExistingSubscription.tsx index 8884477d..7986d6af 100644 --- a/src/hooks/notifs/useCanSwitchToExistingSubscription.tsx +++ b/src/hooks/notifs/useCanSwitchToExistingSubscription.tsx @@ -2,7 +2,7 @@ import * as React from 'react'; import { getOauthProfileFromApiKey } from 'src/services/oauth/getOauthProfile.js'; import { isClaudeAISubscriber } from 'src/utils/auth.js'; import { Text } from '../../ink.js'; -import { logEvent } from '../../services/analytics/index.js'; +import { logEvent } from '../../services/analytics-stub.js'; import { getGlobalConfig, saveGlobalConfig } from '../../utils/config.js'; import { useStartupNotification } from './useStartupNotification.js'; const MAX_SHOW_COUNT = 3; diff --git a/src/hooks/notifs/useNpmDeprecationNotification.tsx b/src/hooks/notifs/useNpmDeprecationNotification.tsx index f0e9d292..781e066c 100644 --- a/src/hooks/notifs/useNpmDeprecationNotification.tsx +++ b/src/hooks/notifs/useNpmDeprecationNotification.tsx @@ -4,22 +4,7 @@ import { isEnvTruthy } from 'src/utils/envUtils.js'; import { useStartupNotification } from './useStartupNotification.js'; const NPM_DEPRECATION_MESSAGE = 'Claude Code has switched from npm to native installer. Run `claude install` or see https://docs.anthropic.com/en/docs/claude-code/getting-started for more options.'; export function useNpmDeprecationNotification() { - useStartupNotification(_temp); -} -async function _temp() { - if (isInBundledMode() || isEnvTruthy(process.env.DISABLE_INSTALLATION_CHECKS)) { - return null; - } - const installationType = await getCurrentInstallationType(); - if (installationType === "development") { - return null; - } - return { - timeoutMs: 15000, - key: "npm-deprecation-warning", - text: NPM_DEPRECATION_MESSAGE, - color: "warning", - priority: "high" - }; + // Disabled in claude-code-clean - no update notifications + useStartupNotification(async () => null); } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJpc0luQnVuZGxlZE1vZGUiLCJnZXRDdXJyZW50SW5zdGFsbGF0aW9uVHlwZSIsImlzRW52VHJ1dGh5IiwidXNlU3RhcnR1cE5vdGlmaWNhdGlvbiIsIk5QTV9ERVBSRUNBVElPTl9NRVNTQUdFIiwidXNlTnBtRGVwcmVjYXRpb25Ob3RpZmljYXRpb24iLCJfdGVtcCIsInByb2Nlc3MiLCJlbnYiLCJESVNBQkxFX0lOU1RBTExBVElPTl9DSEVDS1MiLCJpbnN0YWxsYXRpb25UeXBlIiwidGltZW91dE1zIiwia2V5IiwidGV4dCIsImNvbG9yIiwicHJpb3JpdHkiXSwic291cmNlcyI6WyJ1c2VOcG1EZXByZWNhdGlvbk5vdGlmaWNhdGlvbi50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNJbkJ1bmRsZWRNb2RlIH0gZnJvbSAnc3JjL3V0aWxzL2J1bmRsZWRNb2RlLmpzJ1xuaW1wb3J0IHsgZ2V0Q3VycmVudEluc3RhbGxhdGlvblR5cGUgfSBmcm9tICdzcmMvdXRpbHMvZG9jdG9yRGlhZ25vc3RpYy5qcydcbmltcG9ydCB7IGlzRW52VHJ1dGh5IH0gZnJvbSAnc3JjL3V0aWxzL2VudlV0aWxzLmpzJ1xuaW1wb3J0IHsgdXNlU3RhcnR1cE5vdGlmaWNhdGlvbiB9IGZyb20gJy4vdXNlU3RhcnR1cE5vdGlmaWNhdGlvbi5qcydcblxuY29uc3QgTlBNX0RFUFJFQ0FUSU9OX01FU1NBR0UgPVxuICAnQ2xhdWRlIENvZGUgaGFzIHN3aXRjaGVkIGZyb20gbnBtIHRvIG5hdGl2ZSBpbnN0YWxsZXIuIFJ1biBgY2xhdWRlIGluc3RhbGxgIG9yIHNlZSBodHRwczovL2RvY3MuYW50aHJvcGljLmNvbS9lbi9kb2NzL2NsYXVkZS1jb2RlL2dldHRpbmctc3RhcnRlZCBmb3IgbW9yZSBvcHRpb25zLidcblxuZXhwb3J0IGZ1bmN0aW9uIHVzZU5wbURlcHJlY2F0aW9uTm90aWZpY2F0aW9uKCk6IHZvaWQge1xuICB1c2VTdGFydHVwTm90aWZpY2F0aW9uKGFzeW5jICgpID0+IHtcbiAgICBpZiAoXG4gICAgICBpc0luQnVuZGxlZE1vZGUoKSB8fFxuICAgICAgaXNFbnZUcnV0aHkocHJvY2Vzcy5lbnYuRElTQUJMRV9JTlNUQUxMQVRJT05fQ0hFQ0tTKVxuICAgICkge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG4gICAgY29uc3QgaW5zdGFsbGF0aW9uVHlwZSA9IGF3YWl0IGdldEN1cnJlbnRJbnN0YWxsYXRpb25UeXBlKClcbiAgICBpZiAoaW5zdGFsbGF0aW9uVHlwZSA9PT0gJ2RldmVsb3BtZW50JykgcmV0dXJuIG51bGxcbiAgICByZXR1cm4ge1xuICAgICAgdGltZW91dE1zOiAxNTAwMCxcbiAgICAgIGtleTogJ25wbS1kZXByZWNhdGlvbi13YXJuaW5nJyxcbiAgICAgIHRleHQ6IE5QTV9ERVBSRUNBVElPTl9NRVNTQUdFLFxuICAgICAgY29sb3I6ICd3YXJuaW5nJyxcbiAgICAgIHByaW9yaXR5OiAnaGlnaCcsXG4gICAgfVxuICB9KVxufVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxlQUFlLFFBQVEsMEJBQTBCO0FBQzFELFNBQVNDLDBCQUEwQixRQUFRLCtCQUErQjtBQUMxRSxTQUFTQyxXQUFXLFFBQVEsdUJBQXVCO0FBQ25ELFNBQVNDLHNCQUFzQixRQUFRLDZCQUE2QjtBQUVwRSxNQUFNQyx1QkFBdUIsR0FDM0IscUtBQXFLO0FBRXZLLE9BQU8sU0FBQUMsOEJBQUE7RUFDTEYsc0JBQXNCLENBQUNHLEtBZ0J0QixDQUFDO0FBQUE7QUFqQkcsZUFBQUEsTUFBQTtFQUVILElBQ0VOLGVBQWUsQ0FDb0MsQ0FBQyxJQUFwREUsV0FBVyxDQUFDSyxPQUFPLENBQUFDLEdBQUksQ0FBQUMsMkJBQTRCLENBQUM7SUFBQSxPQUU3QyxJQUFJO0VBQUE7RUFFYixNQUFBQyxnQkFBQSxHQUF5QixNQUFNVCwwQkFBMEIsQ0FBQyxDQUFDO0VBQzNELElBQUlTLGdCQUFnQixLQUFLLGFBQWE7SUFBQSxPQUFTLElBQUk7RUFBQTtFQUFBLE9BQzVDO0lBQUFDLFNBQUEsRUFDTSxLQUFLO0lBQUFDLEdBQUEsRUFDWCx5QkFBeUI7SUFBQUMsSUFBQSxFQUN4QlQsdUJBQXVCO0lBQUFVLEtBQUEsRUFDdEIsU0FBUztJQUFBQyxRQUFBLEVBQ047RUFDWixDQUFDO0FBQUEiLCJpZ25vcmVMaXN0IjpbXX0= \ No newline at end of file diff --git a/src/hooks/toolPermission/PermissionContext.ts b/src/hooks/toolPermission/PermissionContext.ts index 43ae7e81..87f9247a 100644 --- a/src/hooks/toolPermission/PermissionContext.ts +++ b/src/hooks/toolPermission/PermissionContext.ts @@ -3,8 +3,8 @@ import type { ContentBlockParam } from '@anthropic-ai/sdk/resources/messages.mjs import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent, -} from 'src/services/analytics/index.js' -import { sanitizeToolNameForAnalytics } from 'src/services/analytics/metadata.js' +} from '../../services/analytics-stub.js' +import { sanitizeToolNameForAnalytics } from '../../services/analytics-stub.js' import type { ToolUseConfirm } from '../../components/permissions/PermissionRequest.js' import type { ToolPermissionContext, diff --git a/src/hooks/toolPermission/permissionLogging.ts b/src/hooks/toolPermission/permissionLogging.ts index fa0dc5aa..8ebdd121 100644 --- a/src/hooks/toolPermission/permissionLogging.ts +++ b/src/hooks/toolPermission/permissionLogging.ts @@ -5,13 +5,13 @@ import { feature } from 'bun:bundle' import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent, -} from 'src/services/analytics/index.js' -import { sanitizeToolNameForAnalytics } from 'src/services/analytics/metadata.js' +} from '../../services/analytics-stub.js' +import { sanitizeToolNameForAnalytics } from '../../services/analytics-stub.js' import { getCodeEditToolDecisionCounter } from '../../bootstrap/state.js' import type { Tool as ToolType, ToolUseContext } from '../../Tool.js' import { getLanguageName } from '../../utils/cliHighlight.js' import { SandboxManager } from '../../utils/sandbox/sandbox-adapter.js' -import { logOTelEvent } from '../../utils/telemetry/events.js' +import { logOTelEvent } from '../../utils/telemetry-stub.js' import type { PermissionApprovalSource, PermissionRejectionSource, diff --git a/src/hooks/useAwaySummary.ts b/src/hooks/useAwaySummary.ts index 6fb23810..4001c9a9 100644 --- a/src/hooks/useAwaySummary.ts +++ b/src/hooks/useAwaySummary.ts @@ -4,7 +4,7 @@ import { getTerminalFocusState, subscribeTerminalFocus, } from '../ink/terminal-focus-state.js' -import { getFeatureValue_CACHED_MAY_BE_STALE } from '../services/analytics/growthbook.js' +import { getFeatureValue_CACHED_MAY_BE_STALE } from '../services/analytics-stub.js' import { generateAwaySummary } from '../services/awaySummary.js' import type { Message } from '../types/message.js' import { createAwaySummaryMessage } from '../utils/messages.js' diff --git a/src/hooks/useCanUseTool.tsx b/src/hooks/useCanUseTool.tsx index 1eb77d56..b0ab0f4a 100644 --- a/src/hooks/useCanUseTool.tsx +++ b/src/hooks/useCanUseTool.tsx @@ -3,8 +3,8 @@ import { feature } from 'bun:bundle'; import { APIUserAbortError } from '@anthropic-ai/sdk'; import * as React from 'react'; import { useCallback } from 'react'; -import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent } from 'src/services/analytics/index.js'; -import { sanitizeToolNameForAnalytics } from 'src/services/analytics/metadata.js'; +import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent } from '../services/analytics-stub.js'; +import { sanitizeToolNameForAnalytics } from '../services/analytics-stub.js'; import type { ToolUseConfirm } from '../components/permissions/PermissionRequest.js'; import { Text } from '../ink.js'; import type { ToolPermissionContext, Tool as ToolType, ToolUseContext } from '../Tool.js'; diff --git a/src/hooks/useCancelRequest.ts b/src/hooks/useCancelRequest.ts index 4382e276..c530dc80 100644 --- a/src/hooks/useCancelRequest.ts +++ b/src/hooks/useCancelRequest.ts @@ -5,8 +5,8 @@ * This component renders nothing - it just registers the cancel keybinding handler. */ import { useCallback, useRef } from 'react' -import { logEvent } from 'src/services/analytics/index.js' -import type { AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS } from 'src/services/analytics/metadata.js' +import { logEvent } from '../services/analytics-stub.js' +import type { AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS } from '../services/analytics-stub.js' import { useAppState, useAppStateStore, diff --git a/src/hooks/useClaudeCodeHintRecommendation.tsx b/src/hooks/useClaudeCodeHintRecommendation.tsx index 390185b3..dd664c41 100644 --- a/src/hooks/useClaudeCodeHintRecommendation.tsx +++ b/src/hooks/useClaudeCodeHintRecommendation.tsx @@ -11,7 +11,7 @@ import { c as _c } from "react/compiler-runtime"; import * as React from 'react'; import { useNotifications } from '../context/notifications.js'; -import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, type AnalyticsMetadata_I_VERIFIED_THIS_IS_PII_TAGGED, logEvent } from '../services/analytics/index.js'; +import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, type AnalyticsMetadata_I_VERIFIED_THIS_IS_PII_TAGGED, logEvent } from '../services/analytics-stub.js'; import { clearPendingHint, getPendingHintSnapshot, markShownThisSession, subscribeToPendingHint } from '../utils/claudeCodeHints.js'; import { logForDebugging } from '../utils/debug.js'; import { disableHintRecommendations, markHintPluginShown, type PluginHintRecommendation, resolvePluginHint } from '../utils/plugins/hintRecommendation.js'; diff --git a/src/hooks/useDiffInIDE.ts b/src/hooks/useDiffInIDE.ts index 8fb0d106..53f2785c 100644 --- a/src/hooks/useDiffInIDE.ts +++ b/src/hooks/useDiffInIDE.ts @@ -1,7 +1,7 @@ import { randomUUID } from 'crypto' import { basename } from 'path' import { useEffect, useMemo, useRef, useState } from 'react' -import { logEvent } from 'src/services/analytics/index.js' +import { logEvent } from '../services/analytics-stub.js' import { readFileSync } from 'src/utils/fileRead.js' import { expandPath } from 'src/utils/path.js' import type { PermissionOption } from '../components/permissions/FilePermissionDialog/permissionOptions.js' diff --git a/src/hooks/useDynamicConfig.ts b/src/hooks/useDynamicConfig.ts index 7edd5bb7..7f252f3e 100644 --- a/src/hooks/useDynamicConfig.ts +++ b/src/hooks/useDynamicConfig.ts @@ -1,5 +1,5 @@ import React from 'react' -import { getDynamicConfig_BLOCKS_ON_INIT } from '../services/analytics/growthbook.js' +import { getDynamicConfig_BLOCKS_ON_INIT } from '../services/analytics-stub.js' /** * React hook for dynamic config values. diff --git a/src/hooks/useGlobalKeybindings.tsx b/src/hooks/useGlobalKeybindings.tsx index 5f1c39b4..1dc95fcd 100644 --- a/src/hooks/useGlobalKeybindings.tsx +++ b/src/hooks/useGlobalKeybindings.tsx @@ -9,8 +9,8 @@ import { useCallback } from 'react'; import instances from '../ink/instances.js'; import { useKeybinding } from '../keybindings/useKeybinding.js'; import type { Screen } from '../screens/REPL.js'; -import { getFeatureValue_CACHED_MAY_BE_STALE } from '../services/analytics/growthbook.js'; -import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent } from '../services/analytics/index.js'; +import { getFeatureValue_CACHED_MAY_BE_STALE } from '../services/analytics-stub.js'; +import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent } from '../services/analytics-stub.js'; import { useAppState, useSetAppState } from '../state/AppState.js'; import { count } from '../utils/array.js'; import { getTerminalPanel } from '../utils/terminalPanel.js'; diff --git a/src/hooks/useIdeLogging.ts b/src/hooks/useIdeLogging.ts index e73c2301..aab88d7a 100644 --- a/src/hooks/useIdeLogging.ts +++ b/src/hooks/useIdeLogging.ts @@ -1,5 +1,5 @@ import { useEffect } from 'react' -import { logEvent } from 'src/services/analytics/index.js' +import { logEvent } from '../services/analytics-stub.js' import { z } from 'zod/v4' import type { MCPServerConnection } from '../services/mcp/types.js' import { getConnectedIdeClient } from '../utils/ide.js' diff --git a/src/hooks/useMainLoopModel.ts b/src/hooks/useMainLoopModel.ts index ceb54813..9d5df00d 100644 --- a/src/hooks/useMainLoopModel.ts +++ b/src/hooks/useMainLoopModel.ts @@ -1,5 +1,5 @@ import { useEffect, useReducer } from 'react' -import { onGrowthBookRefresh } from '../services/analytics/growthbook.js' +import { onGrowthBookRefresh } from '../services/analytics-stub.js' import { useAppState } from '../state/AppState.js' import { getDefaultMainLoopModelSetting, diff --git a/src/hooks/useManagePlugins.ts b/src/hooks/useManagePlugins.ts index 7efe1d55..b9ca477c 100644 --- a/src/hooks/useManagePlugins.ts +++ b/src/hooks/useManagePlugins.ts @@ -4,7 +4,7 @@ import { useNotifications } from '../context/notifications.js' import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent, -} from '../services/analytics/index.js' +} from '../services/analytics-stub.js' import { reinitializeLspServerManager } from '../services/lsp/manager.js' import { useAppState, useSetAppState } from '../state/AppState.js' import type { AgentDefinition } from '../tools/AgentTool/loadAgentsDir.js' diff --git a/src/hooks/usePromptSuggestion.ts b/src/hooks/usePromptSuggestion.ts index 0a0a35f9..90c2108a 100644 --- a/src/hooks/usePromptSuggestion.ts +++ b/src/hooks/usePromptSuggestion.ts @@ -3,7 +3,7 @@ import { useTerminalFocus } from '../ink/hooks/use-terminal-focus.js' import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent, -} from '../services/analytics/index.js' +} from '../services/analytics-stub.js' import { abortSpeculation } from '../services/PromptSuggestion/speculation.js' import { useAppState, useSetAppState } from '../state/AppState.js' diff --git a/src/hooks/useReplBridge.tsx b/src/hooks/useReplBridge.tsx index 7c10ac6b..0d08bd92 100644 --- a/src/hooks/useReplBridge.tsx +++ b/src/hooks/useReplBridge.tsx @@ -13,7 +13,7 @@ import { useNotifications } from '../context/notifications.js'; import type { PermissionMode, SDKMessage } from '../entrypoints/agentSdkTypes.js'; import type { SDKControlResponse } from '../entrypoints/sdk/controlTypes.js'; import { Text } from '../ink.js'; -import { getFeatureValue_CACHED_MAY_BE_STALE } from '../services/analytics/growthbook.js'; +import { getFeatureValue_CACHED_MAY_BE_STALE } from '../services/analytics-stub.js'; import { useAppState, useAppStateStore, useSetAppState } from '../state/AppState.js'; import type { Message } from '../types/message.js'; import { getCwd } from '../utils/cwd.js'; diff --git a/src/hooks/useSkillImprovementSurvey.ts b/src/hooks/useSkillImprovementSurvey.ts index 29f27256..e7b0ca62 100644 --- a/src/hooks/useSkillImprovementSurvey.ts +++ b/src/hooks/useSkillImprovementSurvey.ts @@ -4,7 +4,7 @@ import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, type AnalyticsMetadata_I_VERIFIED_THIS_IS_PII_TAGGED, logEvent, -} from '../services/analytics/index.js' +} from '../services/analytics-stub.js' import { useAppState, useSetAppState } from '../state/AppState.js' import type { Message } from '../types/message.js' import type { SkillUpdate } from '../utils/hooks/skillImprovement.js' diff --git a/src/hooks/useSkillsChange.ts b/src/hooks/useSkillsChange.ts index 198675de..58697543 100644 --- a/src/hooks/useSkillsChange.ts +++ b/src/hooks/useSkillsChange.ts @@ -5,7 +5,7 @@ import { clearCommandsCache, getCommands, } from '../commands.js' -import { onGrowthBookRefresh } from '../services/analytics/growthbook.js' +import { onGrowthBookRefresh } from '../services/analytics-stub.js' import { logError } from '../utils/log.js' import { skillChangeDetector } from '../utils/skills/skillChangeDetector.js' diff --git a/src/hooks/useTeleportResume.tsx b/src/hooks/useTeleportResume.tsx index 9b459aab..8759a48a 100644 --- a/src/hooks/useTeleportResume.tsx +++ b/src/hooks/useTeleportResume.tsx @@ -1,7 +1,7 @@ import { c as _c } from "react/compiler-runtime"; import { useCallback, useState } from 'react'; import { setTeleportedSessionInfo } from 'src/bootstrap/state.js'; -import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent } from 'src/services/analytics/index.js'; +import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent } from '../services/analytics-stub.js'; import type { TeleportRemoteResponse } from 'src/utils/conversationRecovery.js'; import type { CodeSession } from 'src/utils/teleport/api.js'; import { errorMessage, TeleportOperationError } from '../utils/errors.js'; diff --git a/src/hooks/useTypeahead.tsx b/src/hooks/useTypeahead.tsx index a269902b..44ca08e4 100644 --- a/src/hooks/useTypeahead.tsx +++ b/src/hooks/useTypeahead.tsx @@ -2,7 +2,7 @@ import * as React from 'react'; import { useCallback, useEffect, useMemo, useRef, useState } from 'react'; import { useNotifications } from 'src/context/notifications.js'; import { Text } from 'src/ink.js'; -import { logEvent } from 'src/services/analytics/index.js'; +import { logEvent } from '../services/analytics-stub.js'; import { useDebounceCallback } from 'usehooks-ts'; import { type Command, getCommandName } from '../commands.js'; import { getModeFromInput, getValueFromInput } from '../components/PromptInput/inputModes.js'; diff --git a/src/hooks/useVoice.ts b/src/hooks/useVoice.ts index 30c09917..0d03e5f0 100644 --- a/src/hooks/useVoice.ts +++ b/src/hooks/useVoice.ts @@ -12,7 +12,7 @@ import { useTerminalFocus } from '../ink/hooks/use-terminal-focus.js' import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent, -} from '../services/analytics/index.js' +} from '../services/analytics-stub.js' import { getVoiceKeyterms } from '../services/voiceKeyterms.js' import { connectVoiceStream, diff --git a/src/interactiveHelpers.tsx b/src/interactiveHelpers.tsx index b88dbbf1..544e140e 100644 --- a/src/interactiveHelpers.tsx +++ b/src/interactiveHelpers.tsx @@ -1,18 +1,18 @@ import { feature } from 'bun:bundle'; import { appendFileSync } from 'fs'; import React from 'react'; -import { logEvent } from 'src/services/analytics/index.js'; +import { logEvent } from './services/analytics-stub.js'; import { gracefulShutdown, gracefulShutdownSync } from 'src/utils/gracefulShutdown.js'; import { type ChannelEntry, getAllowedChannels, setAllowedChannels, setHasDevChannels, setSessionTrustAccepted, setStatsStore } from './bootstrap/state.js'; import type { Command } from './commands.js'; import { createStatsStore, type StatsStore } from './context/stats.js'; import { getSystemContext } from './context.js'; -import { initializeTelemetryAfterTrust } from './entrypoints/init.js'; +// import { initializeTelemetryAfterTrust } from './entrypoints/init.js'; import { isSynchronizedOutputSupported } from './ink/terminal.js'; import type { RenderOptions, Root, TextProps } from './ink.js'; import { KeybindingSetup } from './keybindings/KeybindingProviderSetup.js'; import { startDeferredPrefetches } from './main.js'; -import { checkGate_CACHED_OR_BLOCKING, initializeGrowthBook, resetGrowthBook } from './services/analytics/growthbook.js'; +import { checkGate_CACHED_OR_BLOCKING, initializeGrowthBook, resetGrowthBook } from './services/analytics-stub.js'; import { isQualifiedForGrove } from './services/api/grove.js'; import { handleMcpjsonServerApprovals } from './services/mcpServerApproval.js'; import { AppStateProvider } from './state/AppState.js'; @@ -187,7 +187,7 @@ export async function showSetupScreens(root: Root, permissionMode: PermissionMod // otelHeadersHelper (which requires trust to execute) are available. // Defer to next tick so the OTel dynamic import resolves after first render // instead of during the pre-render microtask queue. - setImmediate(() => initializeTelemetryAfterTrust()); +// setImmediate(() => initializeTelemetryAfterTrust()); if (await isQualifiedForGrove()) { const { GroveDialog diff --git a/src/keybindings/loadUserBindings.ts b/src/keybindings/loadUserBindings.ts index 416abe7a..c06611b3 100644 --- a/src/keybindings/loadUserBindings.ts +++ b/src/keybindings/loadUserBindings.ts @@ -13,8 +13,8 @@ import chokidar, { type FSWatcher } from 'chokidar' import { readFileSync } from 'fs' import { readFile, stat } from 'fs/promises' import { dirname, join } from 'path' -import { getFeatureValue_CACHED_MAY_BE_STALE } from '../services/analytics/growthbook.js' -import { logEvent } from '../services/analytics/index.js' +import { getFeatureValue_CACHED_MAY_BE_STALE } from '../services/analytics-stub.js' +import { logEvent } from '../services/analytics-stub.js' import { registerCleanup } from '../utils/cleanupRegistry.js' import { logForDebugging } from '../utils/debug.js' import { getClaudeConfigHomeDir } from '../utils/envUtils.js' diff --git a/src/keybindings/shortcutFormat.ts b/src/keybindings/shortcutFormat.ts index 45db3b0c..3de486b9 100644 --- a/src/keybindings/shortcutFormat.ts +++ b/src/keybindings/shortcutFormat.ts @@ -1,7 +1,7 @@ import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent, -} from '../services/analytics/index.js' +} from '../services/analytics-stub.js' import { loadKeybindingsSync } from './loadUserBindings.js' import { getBindingDisplayText } from './resolver.js' import type { KeybindingContextName } from './types.js' diff --git a/src/keybindings/useShortcutDisplay.ts b/src/keybindings/useShortcutDisplay.ts index d8217488..ec46d3d3 100644 --- a/src/keybindings/useShortcutDisplay.ts +++ b/src/keybindings/useShortcutDisplay.ts @@ -2,7 +2,7 @@ import { useEffect, useRef } from 'react' import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent, -} from '../services/analytics/index.js' +} from '../services/analytics-stub.js' import { useOptionalKeybindingContext } from './KeybindingContext.js' import type { KeybindingContextName } from './types.js' diff --git a/src/main.tsx b/src/main.tsx index 016fe8c8..8f2f4bfc 100644 --- a/src/main.tsx +++ b/src/main.tsx @@ -29,11 +29,11 @@ import React from 'react'; import { getOauthConfig } from './constants/oauth.js'; import { getRemoteSessionUrl } from './constants/product.js'; import { getSystemContext, getUserContext } from './context.js'; -import { init, initializeTelemetryAfterTrust } from './entrypoints/init.js'; +import { init } from './entrypoints/init.js'; import { addToHistory } from './history.js'; import type { Root } from './ink.js'; import { launchRepl } from './replLauncher.js'; -import { hasGrowthBookEnvOverride, initializeGrowthBook, refreshGrowthBookAfterAuthChange } from './services/analytics/growthbook.js'; +import { hasGrowthBookEnvOverride, initializeGrowthBook, refreshGrowthBookAfterAuthChange } from './services/analytics-stub.js'; import { fetchBootstrapData } from './services/api/bootstrap.js'; import { type DownloadResult, downloadSessionFiles, type FilesApiConfig, parseFileSpecs } from './services/api/filesApi.js'; import { prefetchPassesEligibility } from './services/api/referral.js'; @@ -80,10 +80,10 @@ const coordinatorModeModule = feature('COORDINATOR_MODE') ? require('./coordinat const assistantModule = feature('KAIROS') ? require('./assistant/index.js') as typeof import('./assistant/index.js') : null; const kairosGate = feature('KAIROS') ? require('./assistant/gate.js') as typeof import('./assistant/gate.js') : null; import { relative, resolve } from 'path'; -import { isAnalyticsDisabled } from 'src/services/analytics/config.js'; -import { getFeatureValue_CACHED_MAY_BE_STALE } from 'src/services/analytics/growthbook.js'; -import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent } from 'src/services/analytics/index.js'; -import { initializeAnalyticsGates } from 'src/services/analytics/sink.js'; +import { isAnalyticsDisabled } from './services/analytics-stub.js'; +import { getFeatureValue_CACHED_MAY_BE_STALE } from './services/analytics-stub.js'; +import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent } from './services/analytics-stub.js'; +import { initializeAnalyticsGates } from './services/analytics-stub.js'; import { getOriginalCwd, setAdditionalDirectoriesForClaudeMd, setIsRemoteMode, setMainLoopModelOverride, setMainThreadAgentType, setTeleportedSessionInfo } from './bootstrap/state.js'; import { filterCommandsForRemoteMode, getCommands } from './commands.js'; import type { StatsStore } from './context/stats.js'; @@ -132,8 +132,8 @@ import { getInitialSettings, getManagedSettingsKeysForLogging, getSettingsForSou import { resetSettingsCache } from './utils/settings/settingsCache.js'; import type { ValidationError } from './utils/settings/validation.js'; import { DEFAULT_TASKS_MODE_TASK_LIST_ID, TASK_STATUSES } from './utils/tasks.js'; -import { logPluginLoadErrors, logPluginsEnabledForSession } from './utils/telemetry/pluginTelemetry.js'; -import { logSkillsLoaded } from './utils/telemetry/skillLoadedEvent.js'; +import { logPluginLoadErrors, logPluginsEnabledForSession } from './utils/telemetry-stub.js'; +import { logSkillsLoaded } from './utils/telemetry-stub.js'; import { generateTempFilePath } from './utils/tempfile.js'; import { validateUuid } from './utils/uuid.js'; // Plugin startup checks are now handled non-blockingly in REPL.tsx diff --git a/src/memdir/memdir.ts b/src/memdir/memdir.ts index 1e7e68b5..636f072b 100644 --- a/src/memdir/memdir.ts +++ b/src/memdir/memdir.ts @@ -9,12 +9,12 @@ const teamMemPaths = feature('TEAMMEM') : null import { getKairosActive, getOriginalCwd } from '../bootstrap/state.js' -import { getFeatureValue_CACHED_MAY_BE_STALE } from '../services/analytics/growthbook.js' +import { getFeatureValue_CACHED_MAY_BE_STALE } from '../services/analytics-stub.js' /* eslint-enable @typescript-eslint/no-require-imports */ import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent, -} from '../services/analytics/index.js' +} from '../services/analytics-stub.js' import { GREP_TOOL_NAME } from '../tools/GrepTool/prompt.js' import { isReplModeEnabled } from '../tools/REPLTool/constants.js' import { logForDebugging } from '../utils/debug.js' diff --git a/src/memdir/paths.ts b/src/memdir/paths.ts index 68a6baf0..59feb17d 100644 --- a/src/memdir/paths.ts +++ b/src/memdir/paths.ts @@ -5,7 +5,7 @@ import { getIsNonInteractiveSession, getProjectRoot, } from '../bootstrap/state.js' -import { getFeatureValue_CACHED_MAY_BE_STALE } from '../services/analytics/growthbook.js' +import { getFeatureValue_CACHED_MAY_BE_STALE } from '../services/analytics-stub.js' import { getClaudeConfigHomeDir, isEnvDefinedFalsy, diff --git a/src/memdir/teamMemPaths.ts b/src/memdir/teamMemPaths.ts index 1a13ae7e..b7296e72 100644 --- a/src/memdir/teamMemPaths.ts +++ b/src/memdir/teamMemPaths.ts @@ -1,6 +1,6 @@ import { lstat, realpath } from 'fs/promises' import { dirname, join, resolve, sep } from 'path' -import { getFeatureValue_CACHED_MAY_BE_STALE } from '../services/analytics/growthbook.js' +import { getFeatureValue_CACHED_MAY_BE_STALE } from '../services/analytics-stub.js' import { getErrnoCode } from '../utils/errors.js' import { getAutoMemPath, isAutoMemoryEnabled } from './paths.js' diff --git a/src/migrations/migrateAutoUpdatesToSettings.ts b/src/migrations/migrateAutoUpdatesToSettings.ts index c541713b..e8816db0 100644 --- a/src/migrations/migrateAutoUpdatesToSettings.ts +++ b/src/migrations/migrateAutoUpdatesToSettings.ts @@ -1,4 +1,4 @@ -import { logEvent } from 'src/services/analytics/index.js' +import { logEvent } from '../services/analytics-stub.js' import { getGlobalConfig, saveGlobalConfig } from '../utils/config.js' import { logError } from '../utils/log.js' import { diff --git a/src/migrations/migrateBypassPermissionsAcceptedToSettings.ts b/src/migrations/migrateBypassPermissionsAcceptedToSettings.ts index e36407f5..ec642134 100644 --- a/src/migrations/migrateBypassPermissionsAcceptedToSettings.ts +++ b/src/migrations/migrateBypassPermissionsAcceptedToSettings.ts @@ -1,4 +1,4 @@ -import { logEvent } from 'src/services/analytics/index.js' +import { logEvent } from '../services/analytics-stub.js' import { getGlobalConfig, saveGlobalConfig } from '../utils/config.js' import { logError } from '../utils/log.js' import { diff --git a/src/migrations/migrateEnableAllProjectMcpServersToSettings.ts b/src/migrations/migrateEnableAllProjectMcpServersToSettings.ts index 42d1bc20..bf6285c0 100644 --- a/src/migrations/migrateEnableAllProjectMcpServersToSettings.ts +++ b/src/migrations/migrateEnableAllProjectMcpServersToSettings.ts @@ -1,4 +1,4 @@ -import { logEvent } from 'src/services/analytics/index.js' +import { logEvent } from '../services/analytics-stub.js' import { getCurrentProjectConfig, saveCurrentProjectConfig, diff --git a/src/migrations/migrateLegacyOpusToCurrent.ts b/src/migrations/migrateLegacyOpusToCurrent.ts index bdca4aad..616c9e20 100644 --- a/src/migrations/migrateLegacyOpusToCurrent.ts +++ b/src/migrations/migrateLegacyOpusToCurrent.ts @@ -1,7 +1,7 @@ import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent, -} from '../services/analytics/index.js' +} from '../services/analytics-stub.js' import { saveGlobalConfig } from '../utils/config.js' import { isLegacyModelRemapEnabled } from '../utils/model/model.js' import { getAPIProvider } from '../utils/model/providers.js' diff --git a/src/migrations/migrateOpusToOpus1m.ts b/src/migrations/migrateOpusToOpus1m.ts index e065e198..b403ec2d 100644 --- a/src/migrations/migrateOpusToOpus1m.ts +++ b/src/migrations/migrateOpusToOpus1m.ts @@ -1,4 +1,4 @@ -import { logEvent } from '../services/analytics/index.js' +import { logEvent } from '../services/analytics-stub.js' import { getDefaultMainLoopModelSetting, isOpus1mMergeEnabled, diff --git a/src/migrations/migrateSonnet45ToSonnet46.ts b/src/migrations/migrateSonnet45ToSonnet46.ts index bfbfcefe..d45cd603 100644 --- a/src/migrations/migrateSonnet45ToSonnet46.ts +++ b/src/migrations/migrateSonnet45ToSonnet46.ts @@ -1,7 +1,7 @@ import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent, -} from '../services/analytics/index.js' +} from '../services/analytics-stub.js' import { isMaxSubscriber, isProSubscriber, diff --git a/src/migrations/resetAutoModeOptInForDefaultOffer.ts b/src/migrations/resetAutoModeOptInForDefaultOffer.ts index bc0c78a4..ff5b0e3f 100644 --- a/src/migrations/resetAutoModeOptInForDefaultOffer.ts +++ b/src/migrations/resetAutoModeOptInForDefaultOffer.ts @@ -1,5 +1,5 @@ import { feature } from 'bun:bundle' -import { logEvent } from 'src/services/analytics/index.js' +import { logEvent } from '../services/analytics-stub.js' import { getGlobalConfig, saveGlobalConfig } from '../utils/config.js' import { logError } from '../utils/log.js' import { getAutoModeEnabledState } from '../utils/permissions/permissionSetup.js' diff --git a/src/migrations/resetProToOpusDefault.ts b/src/migrations/resetProToOpusDefault.ts index 601872f7..4409fb8e 100644 --- a/src/migrations/resetProToOpusDefault.ts +++ b/src/migrations/resetProToOpusDefault.ts @@ -1,4 +1,4 @@ -import { logEvent } from 'src/services/analytics/index.js' +import { logEvent } from '../services/analytics-stub.js' import { isProSubscriber } from '../utils/auth.js' import { getGlobalConfig, saveGlobalConfig } from '../utils/config.js' import { getAPIProvider } from '../utils/model/providers.js' diff --git a/src/query.ts b/src/query.ts index 07e8b6fa..6c2640c0 100644 --- a/src/query.ts +++ b/src/query.ts @@ -22,7 +22,7 @@ const contextCollapse = feature('CONTEXT_COLLAPSE') import { logEvent, type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, -} from 'src/services/analytics/index.js' +} from './services/analytics-stub.js' import { ImageSizeError } from './utils/imageValidation.js' import { ImageResizeError } from './utils/imageResizer.js' import { findToolByName, type ToolUseContext } from './Tool.js' @@ -87,7 +87,7 @@ import { tokenCountWithEstimation, } from './utils/tokens.js' import { ESCALATED_MAX_TOKENS } from './utils/context.js' -import { getFeatureValue_CACHED_MAY_BE_STALE } from './services/analytics/growthbook.js' +import { getFeatureValue_CACHED_MAY_BE_STALE } from './services/analytics-stub.js' import { SLEEP_TOOL_NAME } from './tools/SleepTool/prompt.js' import { executePostSamplingHooks } from './utils/hooks/postSamplingHooks.js' import { executeStopFailureHooks } from './utils/hooks.js' diff --git a/src/query/config.ts b/src/query/config.ts index 83261e6a..e2494f62 100644 --- a/src/query/config.ts +++ b/src/query/config.ts @@ -1,5 +1,5 @@ import { getSessionId } from '../bootstrap/state.js' -import { checkStatsigFeatureGate_CACHED_MAY_BE_STALE } from '../services/analytics/growthbook.js' +import { checkStatsigFeatureGate_CACHED_MAY_BE_STALE } from '../services/analytics-stub.js' import type { SessionId } from '../types/ids.js' import { isEnvTruthy } from '../utils/envUtils.js' diff --git a/src/query/stopHooks.ts b/src/query/stopHooks.ts index 1118086c..56a687b6 100644 --- a/src/query/stopHooks.ts +++ b/src/query/stopHooks.ts @@ -4,7 +4,7 @@ import { isExtractModeActive } from '../memdir/paths.js' import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent, -} from '../services/analytics/index.js' +} from '../services/analytics-stub.js' import type { ToolUseContext } from '../Tool.js' import type { HookProgress } from '../types/hooks.js' import type { diff --git a/src/screens/REPL.tsx b/src/screens/REPL.tsx index 0470ee27..123a050e 100644 --- a/src/screens/REPL.tsx +++ b/src/screens/REPL.tsx @@ -44,7 +44,7 @@ import { WorkerPendingPermission } from '../components/permissions/WorkerPending import { injectUserMessageToTeammate, getAllInProcessTeammateTasks } from '../tasks/InProcessTeammateTask/InProcessTeammateTask.js'; import { isLocalAgentTask, queuePendingMessage, appendMessageToLocalAgent, type LocalAgentTaskState } from '../tasks/LocalAgentTask/LocalAgentTask.js'; import { registerLeaderToolUseConfirmQueue, unregisterLeaderToolUseConfirmQueue, registerLeaderSetToolPermissionContext, unregisterLeaderSetToolPermissionContext } from '../utils/swarm/leaderPermissionBridge.js'; -import { endInteractionSpan } from '../utils/telemetry/sessionTracing.js'; +import { endInteractionSpan } from '../utils/telemetry-stub.js'; import { useLogMessages } from '../hooks/useLogMessages.js'; import { useReplBridge } from '../hooks/useReplBridge.js'; import { type Command, type CommandResultDisplay, type ResumeEntrypoint, getCommandName, isCommandEnabled } from '../commands.js'; @@ -130,8 +130,8 @@ import { clearSpeculativeChecks } from '../tools/BashTool/bashPermissions.js'; import type { AutoUpdaterResult } from '../utils/autoUpdater.js'; import { getGlobalConfig, saveGlobalConfig, getGlobalConfigWriteCount } from '../utils/config.js'; import { hasConsoleBillingAccess } from '../utils/billing.js'; -import { logEvent, type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS } from 'src/services/analytics/index.js'; -import { getFeatureValue_CACHED_MAY_BE_STALE } from 'src/services/analytics/growthbook.js'; +import { logEvent, type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS } from '../services/analytics-stub.js'; +import { getFeatureValue_CACHED_MAY_BE_STALE } from '../services/analytics-stub.js'; import { textForResubmit, handleMessageFromStream, type StreamingToolUse, type StreamingThinking, isCompactBoundaryMessage, getMessagesAfterCompactBoundary, getContentText, createUserMessage, createAssistantMessage, createTurnDurationMessage, createAgentsKilledMessage, createApiMetricsMessage, createSystemMessage, createCommandInputMessage, formatCommandInputTags } from '../utils/messages.js'; import { generateSessionTitle } from '../utils/sessionTitle.js'; import { BASH_INPUT_TAG, COMMAND_MESSAGE_TAG, COMMAND_NAME_TAG, LOCAL_COMMAND_STDOUT_TAG } from '../constants/xml.js'; diff --git a/src/screens/ResumeConversation.tsx b/src/screens/ResumeConversation.tsx index f97fa946..28ef8150 100644 --- a/src/screens/ResumeConversation.tsx +++ b/src/screens/ResumeConversation.tsx @@ -11,7 +11,7 @@ import { restoreCostStateForSession } from '../cost-tracker.js'; import { setClipboard } from '../ink/termio/osc.js'; import { Box, Text } from '../ink.js'; import { useKeybinding } from '../keybindings/useKeybinding.js'; -import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent } from '../services/analytics/index.js'; +import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent } from '../services/analytics-stub.js'; import type { MCPServerConnection, ScopedMcpServerConfig } from '../services/mcp/types.js'; import { useAppState, useSetAppState } from '../state/AppState.js'; import type { Tool } from '../Tool.js'; diff --git a/src/services/PromptSuggestion/promptSuggestion.ts b/src/services/PromptSuggestion/promptSuggestion.ts index dc68563f..f3236e7f 100644 --- a/src/services/PromptSuggestion/promptSuggestion.ts +++ b/src/services/PromptSuggestion/promptSuggestion.ts @@ -18,11 +18,11 @@ import { } from '../../utils/messages.js' import { getInitialSettings } from '../../utils/settings/settings.js' import { isTeammate } from '../../utils/teammate.js' -import { getFeatureValue_CACHED_MAY_BE_STALE } from '../analytics/growthbook.js' +import { getFeatureValue_CACHED_MAY_BE_STALE } from '../analytics-stub.js' import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent, -} from '../analytics/index.js' +} from '../analytics-stub.js' import { currentLimits } from '../claudeAiLimits.js' import { isSpeculationEnabled, startSpeculation } from './speculation.js' diff --git a/src/services/PromptSuggestion/speculation.ts b/src/services/PromptSuggestion/speculation.ts index 0d96557f..fd44cd6f 100644 --- a/src/services/PromptSuggestion/speculation.ts +++ b/src/services/PromptSuggestion/speculation.ts @@ -46,7 +46,7 @@ import { jsonStringify } from '../../utils/slowOperations.js' import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent, -} from '../analytics/index.js' +} from '../analytics-stub.js' import { generateSuggestion, getPromptVariant, diff --git a/src/services/SessionMemory/sessionMemory.ts b/src/services/SessionMemory/sessionMemory.ts index b0c67fba..a9fce0e5 100644 --- a/src/services/SessionMemory/sessionMemory.ts +++ b/src/services/SessionMemory/sessionMemory.ts @@ -39,7 +39,7 @@ import { import { sequential } from '../../utils/sequential.js' import { asSystemPrompt } from '../../utils/systemPromptType.js' import { getTokenUsage, tokenCountWithEstimation } from '../../utils/tokens.js' -import { logEvent } from '../analytics/index.js' +import { logEvent } from '../analytics-stub.js' import { isAutoCompactEnabled } from '../compact/autoCompact.js' import { buildSessionMemoryUpdatePrompt, @@ -71,7 +71,7 @@ import { errorMessage, getErrnoCode } from '../../utils/errors.js' import { getDynamicConfig_CACHED_MAY_BE_STALE, getFeatureValue_CACHED_MAY_BE_STALE, -} from '../analytics/growthbook.js' +} from '../analytics-stub.js' /** * Check if session memory feature is enabled. diff --git a/src/services/SessionMemory/sessionMemoryUtils.ts b/src/services/SessionMemory/sessionMemoryUtils.ts index ee4ec460..62526546 100644 --- a/src/services/SessionMemory/sessionMemoryUtils.ts +++ b/src/services/SessionMemory/sessionMemoryUtils.ts @@ -7,7 +7,7 @@ import { isFsInaccessible } from '../../utils/errors.js' import { getFsImplementation } from '../../utils/fsOperations.js' import { getSessionMemoryPath } from '../../utils/permissions/filesystem.js' import { sleep } from '../../utils/sleep.js' -import { logEvent } from '../analytics/index.js' +import { logEvent } from '../analytics-stub.js' const EXTRACTION_WAIT_TIMEOUT_MS = 15000 const EXTRACTION_STALE_THRESHOLD_MS = 60000 // 1 minute diff --git a/src/services/analytics-stub.ts b/src/services/analytics-stub.ts new file mode 100644 index 00000000..f7853db0 --- /dev/null +++ b/src/services/analytics-stub.ts @@ -0,0 +1,219 @@ +/** + * Stub file for analytics functionality + * All functions are no-ops to allow code to compile without analytics infrastructure + */ + +// Type stubs +export type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS = Record; +export type AnalyticsMetadata_I_VERIFIED_THIS_IS_PII_TAGGED = Record; + +// No-op analytics functions +export function logEvent(...args: any[]): void { + // No-op +} + +export function initializeGrowthBook(...args: any[]): Promise { + return Promise.resolve(); +} + +export function refreshGrowthBookAfterAuthChange(...args: any[]): Promise { + return Promise.resolve(); +} + +export function hasGrowthBookEnvOverride(): boolean { + return false; +} + +export function isAnalyticsDisabled(): boolean { + return true; +} + +export function getFeatureValue_CACHED_MAY_BE_STALE(key: string, defaultValue?: any): any { + return defaultValue; +} + +export function getFeatureValue_CACHED_WITH_REFRESH(key: string, defaultValue?: any): any { + return defaultValue; +} + +export function getFeatureValue_DEPRECATED(key: string, defaultValue?: any): any { + return defaultValue; +} + +export function checkStatsigFeatureGate_CACHED_MAY_BE_STALE(gate: string): boolean { + return false; +} + +export function checkGate_CACHED_OR_BLOCKING(gate: string): Promise { + return Promise.resolve(false); +} + +export function initializeAnalyticsGates(...args: any[]): void { + // No-op +} + +export function initializeAnalyticsSink(...args: any[]): void { + // No-op +} + +export function shutdownDatadog(...args: any[]): Promise { + return Promise.resolve(); +} + +export function shutdown1PEventLogging(...args: any[]): Promise { + return Promise.resolve(); +} + +export function sanitizeToolNameForAnalytics(toolName: string): string { + return toolName; +} + +export function getDynamicConfig_BLOCKS_ON_INIT(key: string, defaultValue?: any): Promise { + return Promise.resolve(defaultValue); +} + +export function onGrowthBookRefresh(callback: () => void): void { + // No-op +} + +export function getDynamicConfig_CACHED_MAY_BE_STALE(key: string, defaultValue?: any): any { + return defaultValue; +} + +export function logEventTo1P(...args: any[]): void { + // No-op +} + +export function isFeedbackSurveyDisabled(): boolean { + return true; +} + +export function resetGrowthBook(...args: any[]): Promise { + return Promise.resolve(); +} + +export function getFileExtensionForAnalytics(path: string): string { + return path.split('.').pop() || ''; +} + +export function isToolDetailsLoggingEnabled(): boolean { + return false; +} + +export function isUserPromptsLoggingEnabled(): boolean { + return false; +} + +// Additional analytics functions +export function extractToolInputForTelemetry(...args: any[]): any { + return {}; +} + +export function extractToolResponseForTelemetry(...args: any[]): any { + return {}; +} + +export function buildMCPToolTelemetryFieldsAnonymized(...args: any[]): Record { + return {}; +} + +export function getQueryIdForLogging(): string { + return 'stub-query-id'; +} + +// Complete set of analytics stubs from original +export function mcpToolDetailsForAnalytics(...args: any[]): Record { + return {}; +} + +export function extractMcpToolDetails(...args: any[]): Record { + return {}; +} + +export function extractSkillName(...args: any[]): string { + return ''; +} + +export function getAllGrowthBookFeatures(): Record { + return {}; +} + +export function getApiBaseUrlHost(): string { + return ''; +} + +export function getEventMetadata(): Record { + return {}; +} + +export function getEventSamplingConfig(...args: any[]): Record { + return {}; +} + +export function getFileExtensionsFromBashCommand(...args: any[]): string[] { + return []; +} + +export function getGrowthBookConfigOverrides(): Record { + return {}; +} + +export function is1PEventLoggingEnabled(): boolean { + return false; +} + +export function isAnalyticsToolDetailsLoggingEnabled(): boolean { + return false; +} + +export function isSinkKilled(): boolean { + return true; +} + +export function logEventAsync(...args: any[]): Promise { + return Promise.resolve(); +} + +export function logGrowthBookExperimentTo1P(...args: any[]): void { + // No-op +} + +export function refreshGrowthBookFeatures(): Promise { + return Promise.resolve(); +} + +export function reinitialize1PEventLoggingIfConfigChanged(): Promise { + return Promise.resolve(); +} + +export function setGrowthBookConfigOverride(...args: any[]): void { + // No-op +} + +export function setupPeriodicGrowthBookRefresh(...args: any[]): void { + // No-op +} + +export function shouldSampleEvent(...args: any[]): boolean { + return false; +} + +export function checkSecurityRestrictionGate(...args: any[]): boolean { + return false; +} + +export function clearGrowthBookConfigOverrides(): void { + // No-op +} + +export function attachAnalyticsSink(...args: any[]): void { + // No-op +} + +export function initializeDatadog(...args: any[]): void { + // No-op +} + +export function initialize1PEventLogging(...args: any[]): void { + // No-op +} diff --git a/src/services/analytics/config.ts b/src/services/analytics/config.ts deleted file mode 100644 index 9e80601b..00000000 --- a/src/services/analytics/config.ts +++ /dev/null @@ -1,38 +0,0 @@ -/** - * Shared analytics configuration - * - * Common logic for determining when analytics should be disabled - * across all analytics systems (Datadog, 1P) - */ - -import { isEnvTruthy } from '../../utils/envUtils.js' -import { isTelemetryDisabled } from '../../utils/privacyLevel.js' - -/** - * Check if analytics operations should be disabled - * - * Analytics is disabled in the following cases: - * - Test environment (NODE_ENV === 'test') - * - Third-party cloud providers (Bedrock/Vertex) - * - Privacy level is no-telemetry or essential-traffic - */ -export function isAnalyticsDisabled(): boolean { - return ( - process.env.NODE_ENV === 'test' || - isEnvTruthy(process.env.CLAUDE_CODE_USE_BEDROCK) || - isEnvTruthy(process.env.CLAUDE_CODE_USE_VERTEX) || - isEnvTruthy(process.env.CLAUDE_CODE_USE_FOUNDRY) || - isTelemetryDisabled() - ) -} - -/** - * Check if the feedback survey should be suppressed. - * - * Unlike isAnalyticsDisabled(), this does NOT block on 3P providers - * (Bedrock/Vertex/Foundry). The survey is a local UI prompt with no - * transcript data — enterprise customers capture responses via OTEL. - */ -export function isFeedbackSurveyDisabled(): boolean { - return process.env.NODE_ENV === 'test' || isTelemetryDisabled() -} diff --git a/src/services/analytics/datadog.ts b/src/services/analytics/datadog.ts deleted file mode 100644 index 2f8bdf31..00000000 --- a/src/services/analytics/datadog.ts +++ /dev/null @@ -1,307 +0,0 @@ -import axios from 'axios' -import { createHash } from 'crypto' -import memoize from 'lodash-es/memoize.js' -import { getOrCreateUserID } from '../../utils/config.js' -import { logError } from '../../utils/log.js' -import { getCanonicalName } from '../../utils/model/model.js' -import { getAPIProvider } from '../../utils/model/providers.js' -import { MODEL_COSTS } from '../../utils/modelCost.js' -import { isAnalyticsDisabled } from './config.js' -import { getEventMetadata } from './metadata.js' - -const DATADOG_LOGS_ENDPOINT = - 'https://http-intake.logs.us5.datadoghq.com/api/v2/logs' -const DATADOG_CLIENT_TOKEN = 'pubbbf48e6d78dae54bceaa4acf463299bf' -const DEFAULT_FLUSH_INTERVAL_MS = 15000 -const MAX_BATCH_SIZE = 100 -const NETWORK_TIMEOUT_MS = 5000 - -const DATADOG_ALLOWED_EVENTS = new Set([ - 'chrome_bridge_connection_succeeded', - 'chrome_bridge_connection_failed', - 'chrome_bridge_disconnected', - 'chrome_bridge_tool_call_completed', - 'chrome_bridge_tool_call_error', - 'chrome_bridge_tool_call_started', - 'chrome_bridge_tool_call_timeout', - 'tengu_api_error', - 'tengu_api_success', - 'tengu_brief_mode_enabled', - 'tengu_brief_mode_toggled', - 'tengu_brief_send', - 'tengu_cancel', - 'tengu_compact_failed', - 'tengu_exit', - 'tengu_flicker', - 'tengu_init', - 'tengu_model_fallback_triggered', - 'tengu_oauth_error', - 'tengu_oauth_success', - 'tengu_oauth_token_refresh_failure', - 'tengu_oauth_token_refresh_success', - 'tengu_oauth_token_refresh_lock_acquiring', - 'tengu_oauth_token_refresh_lock_acquired', - 'tengu_oauth_token_refresh_starting', - 'tengu_oauth_token_refresh_completed', - 'tengu_oauth_token_refresh_lock_releasing', - 'tengu_oauth_token_refresh_lock_released', - 'tengu_query_error', - 'tengu_session_file_read', - 'tengu_started', - 'tengu_tool_use_error', - 'tengu_tool_use_granted_in_prompt_permanent', - 'tengu_tool_use_granted_in_prompt_temporary', - 'tengu_tool_use_rejected_in_prompt', - 'tengu_tool_use_success', - 'tengu_uncaught_exception', - 'tengu_unhandled_rejection', - 'tengu_voice_recording_started', - 'tengu_voice_toggled', - 'tengu_team_mem_sync_pull', - 'tengu_team_mem_sync_push', - 'tengu_team_mem_sync_started', - 'tengu_team_mem_entries_capped', -]) - -const TAG_FIELDS = [ - 'arch', - 'clientType', - 'errorType', - 'http_status_range', - 'http_status', - 'kairosActive', - 'model', - 'platform', - 'provider', - 'skillMode', - 'subscriptionType', - 'toolName', - 'userBucket', - 'userType', - 'version', - 'versionBase', -] - -function camelToSnakeCase(str: string): string { - return str.replace(/[A-Z]/g, letter => `_${letter.toLowerCase()}`) -} - -type DatadogLog = { - ddsource: string - ddtags: string - message: string - service: string - hostname: string - [key: string]: unknown -} - -let logBatch: DatadogLog[] = [] -let flushTimer: NodeJS.Timeout | null = null -let datadogInitialized: boolean | null = null - -async function flushLogs(): Promise { - if (logBatch.length === 0) return - - const logsToSend = logBatch - logBatch = [] - - try { - await axios.post(DATADOG_LOGS_ENDPOINT, logsToSend, { - headers: { - 'Content-Type': 'application/json', - 'DD-API-KEY': DATADOG_CLIENT_TOKEN, - }, - timeout: NETWORK_TIMEOUT_MS, - }) - } catch (error) { - logError(error) - } -} - -function scheduleFlush(): void { - if (flushTimer) return - - flushTimer = setTimeout(() => { - flushTimer = null - void flushLogs() - }, getFlushIntervalMs()).unref() -} - -export const initializeDatadog = memoize(async (): Promise => { - if (isAnalyticsDisabled()) { - datadogInitialized = false - return false - } - - try { - datadogInitialized = true - return true - } catch (error) { - logError(error) - datadogInitialized = false - return false - } -}) - -/** - * Flush remaining Datadog logs and shut down. - * Called from gracefulShutdown() before process.exit() since - * forceExit() prevents the beforeExit handler from firing. - */ -export async function shutdownDatadog(): Promise { - if (flushTimer) { - clearTimeout(flushTimer) - flushTimer = null - } - await flushLogs() -} - -// NOTE: use via src/services/analytics/index.ts > logEvent -export async function trackDatadogEvent( - eventName: string, - properties: { [key: string]: boolean | number | undefined }, -): Promise { - if (process.env.NODE_ENV !== 'production') { - return - } - - // Don't send events for 3P providers (Bedrock, Vertex, Foundry) - if (getAPIProvider() !== 'firstParty') { - return - } - - // Fast path: use cached result if available to avoid await overhead - let initialized = datadogInitialized - if (initialized === null) { - initialized = await initializeDatadog() - } - if (!initialized || !DATADOG_ALLOWED_EVENTS.has(eventName)) { - return - } - - try { - const metadata = await getEventMetadata({ - model: properties.model, - betas: properties.betas, - }) - // Destructure to avoid duplicate envContext (once nested, once flattened) - const { envContext, ...restMetadata } = metadata - const allData: Record = { - ...restMetadata, - ...envContext, - ...properties, - userBucket: getUserBucket(), - } - - // Normalize MCP tool names to "mcp" for cardinality reduction - if ( - typeof allData.toolName === 'string' && - allData.toolName.startsWith('mcp__') - ) { - allData.toolName = 'mcp' - } - - // Normalize model names for cardinality reduction (external users only) - if (process.env.USER_TYPE !== 'ant' && typeof allData.model === 'string') { - const shortName = getCanonicalName(allData.model.replace(/\[1m]$/i, '')) - allData.model = shortName in MODEL_COSTS ? shortName : 'other' - } - - // Truncate dev version to base + date (remove timestamp and sha for cardinality reduction) - // e.g. "2.0.53-dev.20251124.t173302.sha526cc6a" -> "2.0.53-dev.20251124" - if (typeof allData.version === 'string') { - allData.version = allData.version.replace( - /^(\d+\.\d+\.\d+-dev\.\d{8})\.t\d+\.sha[a-f0-9]+$/, - '$1', - ) - } - - // Transform status to http_status and http_status_range to avoid Datadog reserved field - if (allData.status !== undefined && allData.status !== null) { - const statusCode = String(allData.status) - allData.http_status = statusCode - - // Determine status range (1xx, 2xx, 3xx, 4xx, 5xx) - const firstDigit = statusCode.charAt(0) - if (firstDigit >= '1' && firstDigit <= '5') { - allData.http_status_range = `${firstDigit}xx` - } - - // Remove original status field to avoid conflict with Datadog's reserved field - delete allData.status - } - - // Build ddtags with high-cardinality fields for filtering. - // event: is prepended so the event name is searchable via the - // log search API — the `message` field (where eventName also lives) - // is a DD reserved field and is NOT queryable from dashboard widget - // queries or the aggregation API. See scripts/release/MONITORING.md. - const allDataRecord = allData - const tags = [ - `event:${eventName}`, - ...TAG_FIELDS.filter( - field => - allDataRecord[field] !== undefined && allDataRecord[field] !== null, - ).map(field => `${camelToSnakeCase(field)}:${allDataRecord[field]}`), - ] - - const log: DatadogLog = { - ddsource: 'nodejs', - ddtags: tags.join(','), - message: eventName, - service: 'claude-code', - hostname: 'claude-code', - env: process.env.USER_TYPE, - } - - // Add all fields as searchable attributes (not duplicated in tags) - for (const [key, value] of Object.entries(allData)) { - if (value !== undefined && value !== null) { - log[camelToSnakeCase(key)] = value - } - } - - logBatch.push(log) - - // Flush immediately if batch is full, otherwise schedule - if (logBatch.length >= MAX_BATCH_SIZE) { - if (flushTimer) { - clearTimeout(flushTimer) - flushTimer = null - } - void flushLogs() - } else { - scheduleFlush() - } - } catch (error) { - logError(error) - } -} - -const NUM_USER_BUCKETS = 30 - -/** - * Gets a 'bucket' that the user ID falls into. - * - * For alerting purposes, we want to alert on the number of users impacted - * by an issue, rather than the number of events- often a small number of users - * can generate a large number of events (e.g. due to retries). To approximate - * this without ruining cardinality by counting user IDs directly, we hash the user ID - * and assign it to one of a fixed number of buckets. - * - * This allows us to estimate the number of unique users by counting unique buckets, - * while preserving user privacy and reducing cardinality. - */ -const getUserBucket = memoize((): number => { - const userId = getOrCreateUserID() - const hash = createHash('sha256').update(userId).digest('hex') - return parseInt(hash.slice(0, 8), 16) % NUM_USER_BUCKETS -}) - -function getFlushIntervalMs(): number { - // Allow tests to override to not block on the default flush interval. - return ( - parseInt(process.env.CLAUDE_CODE_DATADOG_FLUSH_INTERVAL_MS || '', 10) || - DEFAULT_FLUSH_INTERVAL_MS - ) -} diff --git a/src/services/analytics/firstPartyEventLogger.ts b/src/services/analytics/firstPartyEventLogger.ts deleted file mode 100644 index e3a501d7..00000000 --- a/src/services/analytics/firstPartyEventLogger.ts +++ /dev/null @@ -1,449 +0,0 @@ -import type { AnyValueMap, Logger, logs } from '@opentelemetry/api-logs' -import { resourceFromAttributes } from '@opentelemetry/resources' -import { - BatchLogRecordProcessor, - LoggerProvider, -} from '@opentelemetry/sdk-logs' -import { - ATTR_SERVICE_NAME, - ATTR_SERVICE_VERSION, -} from '@opentelemetry/semantic-conventions' -import { randomUUID } from 'crypto' -import { isEqual } from 'lodash-es' -import { getOrCreateUserID } from '../../utils/config.js' -import { logForDebugging } from '../../utils/debug.js' -import { logError } from '../../utils/log.js' -import { getPlatform, getWslVersion } from '../../utils/platform.js' -import { jsonStringify } from '../../utils/slowOperations.js' -import { profileCheckpoint } from '../../utils/startupProfiler.js' -import { getCoreUserData } from '../../utils/user.js' -import { isAnalyticsDisabled } from './config.js' -import { FirstPartyEventLoggingExporter } from './firstPartyEventLoggingExporter.js' -import type { GrowthBookUserAttributes } from './growthbook.js' -import { getDynamicConfig_CACHED_MAY_BE_STALE } from './growthbook.js' -import { getEventMetadata } from './metadata.js' -import { isSinkKilled } from './sinkKillswitch.js' - -/** - * Configuration for sampling individual event types. - * Each event name maps to an object containing sample_rate (0-1). - * Events not in the config are logged at 100% rate. - */ -export type EventSamplingConfig = { - [eventName: string]: { - sample_rate: number - } -} - -const EVENT_SAMPLING_CONFIG_NAME = 'tengu_event_sampling_config' -/** - * Get the event sampling configuration from GrowthBook. - * Uses cached value if available, updates cache in background. - */ -export function getEventSamplingConfig(): EventSamplingConfig { - return getDynamicConfig_CACHED_MAY_BE_STALE( - EVENT_SAMPLING_CONFIG_NAME, - {}, - ) -} - -/** - * Determine if an event should be sampled based on its sample rate. - * Returns the sample rate if sampled, null if not sampled. - * - * @param eventName - Name of the event to check - * @returns The sample_rate if event should be logged, null if it should be dropped - */ -export function shouldSampleEvent(eventName: string): number | null { - const config = getEventSamplingConfig() - const eventConfig = config[eventName] - - // If no config for this event, log at 100% rate (no sampling) - if (!eventConfig) { - return null - } - - const sampleRate = eventConfig.sample_rate - - // Validate sample rate is in valid range - if (typeof sampleRate !== 'number' || sampleRate < 0 || sampleRate > 1) { - return null - } - - // Sample rate of 1 means log everything (no need to add metadata) - if (sampleRate >= 1) { - return null - } - - // Sample rate of 0 means drop everything - if (sampleRate <= 0) { - return 0 - } - - // Randomly decide whether to sample this event - return Math.random() < sampleRate ? sampleRate : 0 -} - -const BATCH_CONFIG_NAME = 'tengu_1p_event_batch_config' -type BatchConfig = { - scheduledDelayMillis?: number - maxExportBatchSize?: number - maxQueueSize?: number - skipAuth?: boolean - maxAttempts?: number - path?: string - baseUrl?: string -} -function getBatchConfig(): BatchConfig { - return getDynamicConfig_CACHED_MAY_BE_STALE( - BATCH_CONFIG_NAME, - {}, - ) -} - -// Module-local state for event logging (not exposed globally) -let firstPartyEventLogger: ReturnType | null = null -let firstPartyEventLoggerProvider: LoggerProvider | null = null -// Last batch config used to construct the provider — used by -// reinitialize1PEventLoggingIfConfigChanged to decide whether a rebuild is -// needed when GrowthBook refreshes. -let lastBatchConfig: BatchConfig | null = null -/** - * Flush and shutdown the 1P event logger. - * This should be called as the final step before process exit to ensure - * all events (including late ones from API responses) are exported. - */ -export async function shutdown1PEventLogging(): Promise { - if (!firstPartyEventLoggerProvider) { - return - } - try { - await firstPartyEventLoggerProvider.shutdown() - if (process.env.USER_TYPE === 'ant') { - logForDebugging('1P event logging: final shutdown complete') - } - } catch { - // Ignore shutdown errors - } -} - -/** - * Check if 1P event logging is enabled. - * Respects the same opt-outs as other analytics sinks: - * - Test environment - * - Third-party cloud providers (Bedrock/Vertex) - * - Global telemetry opt-outs - * - Non-essential traffic disabled - * - * Note: Unlike BigQuery metrics, event logging does NOT check organization-level - * metrics opt-out via API. It follows the same pattern as Statsig event logging. - */ -export function is1PEventLoggingEnabled(): boolean { - // Respect standard analytics opt-outs - return !isAnalyticsDisabled() -} - -/** - * Log a 1st-party event for internal analytics (async version). - * Events are batched and exported to /api/event_logging/batch - * - * This enriches the event with core metadata (model, session, env context, etc.) - * at log time, similar to logEventToStatsig. - * - * @param eventName - Name of the event (e.g., 'tengu_api_query') - * @param metadata - Additional metadata for the event (intentionally no strings, to avoid accidentally logging code/filepaths) - */ -async function logEventTo1PAsync( - firstPartyEventLogger: Logger, - eventName: string, - metadata: Record = {}, -): Promise { - try { - // Enrich with core metadata at log time (similar to Statsig pattern) - const coreMetadata = await getEventMetadata({ - model: metadata.model, - betas: metadata.betas, - }) - - // Build attributes - OTel supports nested objects natively via AnyValueMap - // Cast through unknown since our nested objects are structurally compatible - // with AnyValue but TS doesn't recognize it due to missing index signatures - const attributes = { - event_name: eventName, - event_id: randomUUID(), - // Pass objects directly - no JSON serialization needed - core_metadata: coreMetadata, - user_metadata: getCoreUserData(true), - event_metadata: metadata, - } as unknown as AnyValueMap - - // Add user_id if available - const userId = getOrCreateUserID() - if (userId) { - attributes.user_id = userId - } - - // Debug logging when debug mode is enabled - if (process.env.USER_TYPE === 'ant') { - logForDebugging( - `[ANT-ONLY] 1P event: ${eventName} ${jsonStringify(metadata, null, 0)}`, - ) - } - - // Emit log record - firstPartyEventLogger.emit({ - body: eventName, - attributes, - }) - } catch (e) { - if (process.env.NODE_ENV === 'development') { - throw e - } - if (process.env.USER_TYPE === 'ant') { - logError(e as Error) - } - // swallow - } -} - -/** - * Log a 1st-party event for internal analytics. - * Events are batched and exported to /api/event_logging/batch - * - * @param eventName - Name of the event (e.g., 'tengu_api_query') - * @param metadata - Additional metadata for the event (intentionally no strings, to avoid accidentally logging code/filepaths) - */ -export function logEventTo1P( - eventName: string, - metadata: Record = {}, -): void { - if (!is1PEventLoggingEnabled()) { - return - } - - if (!firstPartyEventLogger || isSinkKilled('firstParty')) { - return - } - - // Fire and forget - don't block on metadata enrichment - void logEventTo1PAsync(firstPartyEventLogger, eventName, metadata) -} - -/** - * GrowthBook experiment event data for logging - */ -export type GrowthBookExperimentData = { - experimentId: string - variationId: number - userAttributes?: GrowthBookUserAttributes - experimentMetadata?: Record -} - -// api.anthropic.com only serves the "production" GrowthBook environment -// (see starling/starling/cli/cli.py DEFAULT_ENVIRONMENTS). Staging and -// development environments are not exported to the prod API. -function getEnvironmentForGrowthBook(): string { - return 'production' -} - -/** - * Log a GrowthBook experiment assignment event to 1P. - * Events are batched and exported to /api/event_logging/batch - * - * @param data - GrowthBook experiment assignment data - */ -export function logGrowthBookExperimentTo1P( - data: GrowthBookExperimentData, -): void { - if (!is1PEventLoggingEnabled()) { - return - } - - if (!firstPartyEventLogger || isSinkKilled('firstParty')) { - return - } - - const userId = getOrCreateUserID() - const { accountUuid, organizationUuid } = getCoreUserData(true) - - // Build attributes for GrowthbookExperimentEvent - const attributes = { - event_type: 'GrowthbookExperimentEvent', - event_id: randomUUID(), - experiment_id: data.experimentId, - variation_id: data.variationId, - ...(userId && { device_id: userId }), - ...(accountUuid && { account_uuid: accountUuid }), - ...(organizationUuid && { organization_uuid: organizationUuid }), - ...(data.userAttributes && { - session_id: data.userAttributes.sessionId, - user_attributes: jsonStringify(data.userAttributes), - }), - ...(data.experimentMetadata && { - experiment_metadata: jsonStringify(data.experimentMetadata), - }), - environment: getEnvironmentForGrowthBook(), - } - - if (process.env.USER_TYPE === 'ant') { - logForDebugging( - `[ANT-ONLY] 1P GrowthBook experiment: ${data.experimentId} variation=${data.variationId}`, - ) - } - - firstPartyEventLogger.emit({ - body: 'growthbook_experiment', - attributes, - }) -} - -const DEFAULT_LOGS_EXPORT_INTERVAL_MS = 10000 -const DEFAULT_MAX_EXPORT_BATCH_SIZE = 200 -const DEFAULT_MAX_QUEUE_SIZE = 8192 - -/** - * Initialize 1P event logging infrastructure. - * This creates a separate LoggerProvider for internal event logging, - * independent of customer OTLP telemetry. - * - * This uses its own minimal resource configuration with just the attributes - * we need for internal analytics (service name, version, platform info). - */ -export function initialize1PEventLogging(): void { - profileCheckpoint('1p_event_logging_start') - const enabled = is1PEventLoggingEnabled() - - if (!enabled) { - if (process.env.USER_TYPE === 'ant') { - logForDebugging('1P event logging not enabled') - } - return - } - - // Fetch batch processor configuration from GrowthBook dynamic config - // Uses cached value if available, refreshes in background - const batchConfig = getBatchConfig() - lastBatchConfig = batchConfig - profileCheckpoint('1p_event_after_growthbook_config') - - const scheduledDelayMillis = - batchConfig.scheduledDelayMillis || - parseInt( - process.env.OTEL_LOGS_EXPORT_INTERVAL || - DEFAULT_LOGS_EXPORT_INTERVAL_MS.toString(), - ) - - const maxExportBatchSize = - batchConfig.maxExportBatchSize || DEFAULT_MAX_EXPORT_BATCH_SIZE - - const maxQueueSize = batchConfig.maxQueueSize || DEFAULT_MAX_QUEUE_SIZE - - // Build our own resource for 1P event logging with minimal attributes - const platform = getPlatform() - const attributes: Record = { - [ATTR_SERVICE_NAME]: 'claude-code', - [ATTR_SERVICE_VERSION]: MACRO.VERSION, - } - - // Add WSL-specific attributes if running on WSL - if (platform === 'wsl') { - const wslVersion = getWslVersion() - if (wslVersion) { - attributes['wsl.version'] = wslVersion - } - } - - const resource = resourceFromAttributes(attributes) - - // Create a new LoggerProvider with the EventLoggingExporter - // NOTE: This is kept separate from customer telemetry logs to ensure - // internal events don't leak to customer endpoints and vice versa. - // We don't register this globally - it's only used for internal event logging. - const eventLoggingExporter = new FirstPartyEventLoggingExporter({ - maxBatchSize: maxExportBatchSize, - skipAuth: batchConfig.skipAuth, - maxAttempts: batchConfig.maxAttempts, - path: batchConfig.path, - baseUrl: batchConfig.baseUrl, - isKilled: () => isSinkKilled('firstParty'), - }) - firstPartyEventLoggerProvider = new LoggerProvider({ - resource, - processors: [ - new BatchLogRecordProcessor(eventLoggingExporter, { - scheduledDelayMillis, - maxExportBatchSize, - maxQueueSize, - }), - ], - }) - - // Initialize event logger from our internal provider (NOT from global API) - // IMPORTANT: We must get the logger from our local provider, not logs.getLogger() - // because logs.getLogger() returns a logger from the global provider, which is - // separate and used for customer telemetry. - firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger( - 'com.anthropic.claude_code.events', - MACRO.VERSION, - ) -} - -/** - * Rebuild the 1P event logging pipeline if the batch config changed. - * Register this with onGrowthBookRefresh so long-running sessions pick up - * changes to batch size, delay, endpoint, etc. - * - * Event-loss safety: - * 1. Null the logger first — concurrent logEventTo1P() calls hit the - * !firstPartyEventLogger guard and bail during the swap window. This drops - * a handful of events but prevents emitting to a draining provider. - * 2. forceFlush() drains the old BatchLogRecordProcessor buffer to the - * exporter. Export failures go to disk at getCurrentBatchFilePath() which - * is keyed by module-level BATCH_UUID + sessionId — unchanged across - * reinit — so the NEW exporter's disk-backed retry picks them up. - * 3. Swap to new provider/logger; old provider shutdown runs in background - * (buffer already drained, just cleanup). - */ -export async function reinitialize1PEventLoggingIfConfigChanged(): Promise { - if (!is1PEventLoggingEnabled() || !firstPartyEventLoggerProvider) { - return - } - - const newConfig = getBatchConfig() - - if (isEqual(newConfig, lastBatchConfig)) { - return - } - - if (process.env.USER_TYPE === 'ant') { - logForDebugging( - `1P event logging: ${BATCH_CONFIG_NAME} changed, reinitializing`, - ) - } - - const oldProvider = firstPartyEventLoggerProvider - const oldLogger = firstPartyEventLogger - firstPartyEventLogger = null - - try { - await oldProvider.forceFlush() - } catch { - // Export failures are already on disk; new exporter will retry them. - } - - firstPartyEventLoggerProvider = null - try { - initialize1PEventLogging() - } catch (e) { - // Restore so the next GrowthBook refresh can retry. oldProvider was - // only forceFlush()'d, not shut down — it's still functional. Without - // this, both stay null and the !firstPartyEventLoggerProvider gate at - // the top makes recovery impossible. - firstPartyEventLoggerProvider = oldProvider - firstPartyEventLogger = oldLogger - logError(e) - return - } - - void oldProvider.shutdown().catch(() => {}) -} diff --git a/src/services/analytics/firstPartyEventLoggingExporter.ts b/src/services/analytics/firstPartyEventLoggingExporter.ts deleted file mode 100644 index aefb22cb..00000000 --- a/src/services/analytics/firstPartyEventLoggingExporter.ts +++ /dev/null @@ -1,806 +0,0 @@ -import type { HrTime } from '@opentelemetry/api' -import { type ExportResult, ExportResultCode } from '@opentelemetry/core' -import type { - LogRecordExporter, - ReadableLogRecord, -} from '@opentelemetry/sdk-logs' -import axios from 'axios' -import { randomUUID } from 'crypto' -import { appendFile, mkdir, readdir, unlink, writeFile } from 'fs/promises' -import * as path from 'path' -import type { CoreUserData } from 'src/utils/user.js' -import { - getIsNonInteractiveSession, - getSessionId, -} from '../../bootstrap/state.js' -import { ClaudeCodeInternalEvent } from '../../types/generated/events_mono/claude_code/v1/claude_code_internal_event.js' -import { GrowthbookExperimentEvent } from '../../types/generated/events_mono/growthbook/v1/growthbook_experiment_event.js' -import { - getClaudeAIOAuthTokens, - hasProfileScope, - isClaudeAISubscriber, -} from '../../utils/auth.js' -import { checkHasTrustDialogAccepted } from '../../utils/config.js' -import { logForDebugging } from '../../utils/debug.js' -import { getClaudeConfigHomeDir } from '../../utils/envUtils.js' -import { errorMessage, isFsInaccessible, toError } from '../../utils/errors.js' -import { getAuthHeaders } from '../../utils/http.js' -import { readJSONLFile } from '../../utils/json.js' -import { logError } from '../../utils/log.js' -import { sleep } from '../../utils/sleep.js' -import { jsonStringify } from '../../utils/slowOperations.js' -import { getClaudeCodeUserAgent } from '../../utils/userAgent.js' -import { isOAuthTokenExpired } from '../oauth/client.js' -import { stripProtoFields } from './index.js' -import { type EventMetadata, to1PEventFormat } from './metadata.js' - -// Unique ID for this process run - used to isolate failed event files between runs -const BATCH_UUID = randomUUID() - -// File prefix for failed event storage -const FILE_PREFIX = '1p_failed_events.' - -// Storage directory for failed events - evaluated at runtime to respect CLAUDE_CONFIG_DIR in tests -function getStorageDir(): string { - return path.join(getClaudeConfigHomeDir(), 'telemetry') -} - -// API envelope - event_data is the JSON output from proto toJSON() -type FirstPartyEventLoggingEvent = { - event_type: 'ClaudeCodeInternalEvent' | 'GrowthbookExperimentEvent' - event_data: unknown -} - -type FirstPartyEventLoggingPayload = { - events: FirstPartyEventLoggingEvent[] -} - -/** - * Exporter for 1st-party event logging to /api/event_logging/batch. - * - * Export cycles are controlled by OpenTelemetry's BatchLogRecordProcessor, which - * triggers export() when either: - * - Time interval elapses (default: 5 seconds via scheduledDelayMillis) - * - Batch size is reached (default: 200 events via maxExportBatchSize) - * - * This exporter adds resilience on top: - * - Append-only log for failed events (concurrency-safe) - * - Quadratic backoff retry for failed events, dropped after maxAttempts - * - Immediate retry of queued events when any export succeeds (endpoint is healthy) - * - Chunking large event sets into smaller batches - * - Auth fallback: retries without auth on 401 errors - */ -export class FirstPartyEventLoggingExporter implements LogRecordExporter { - private readonly endpoint: string - private readonly timeout: number - private readonly maxBatchSize: number - private readonly skipAuth: boolean - private readonly batchDelayMs: number - private readonly baseBackoffDelayMs: number - private readonly maxBackoffDelayMs: number - private readonly maxAttempts: number - private readonly isKilled: () => boolean - private pendingExports: Promise[] = [] - private isShutdown = false - private readonly schedule: ( - fn: () => Promise, - delayMs: number, - ) => () => void - private cancelBackoff: (() => void) | null = null - private attempts = 0 - private isRetrying = false - private lastExportErrorContext: string | undefined - - constructor( - options: { - timeout?: number - maxBatchSize?: number - skipAuth?: boolean - batchDelayMs?: number - baseBackoffDelayMs?: number - maxBackoffDelayMs?: number - maxAttempts?: number - path?: string - baseUrl?: string - // Injected killswitch probe. Checked per-POST so that disabling the - // firstParty sink also stops backoff retries (not just new emits). - // Passed in rather than imported to avoid a cycle with firstPartyEventLogger.ts. - isKilled?: () => boolean - schedule?: (fn: () => Promise, delayMs: number) => () => void - } = {}, - ) { - // Default: prod, except when ANTHROPIC_BASE_URL is explicitly staging. - // Overridable via tengu_1p_event_batch_config.baseUrl. - const baseUrl = - options.baseUrl || - (process.env.ANTHROPIC_BASE_URL === 'https://api-staging.anthropic.com' - ? 'https://api-staging.anthropic.com' - : 'https://api.anthropic.com') - - this.endpoint = `${baseUrl}${options.path || '/api/event_logging/batch'}` - - this.timeout = options.timeout || 10000 - this.maxBatchSize = options.maxBatchSize || 200 - this.skipAuth = options.skipAuth ?? false - this.batchDelayMs = options.batchDelayMs || 100 - this.baseBackoffDelayMs = options.baseBackoffDelayMs || 500 - this.maxBackoffDelayMs = options.maxBackoffDelayMs || 30000 - this.maxAttempts = options.maxAttempts ?? 8 - this.isKilled = options.isKilled ?? (() => false) - this.schedule = - options.schedule ?? - ((fn, ms) => { - const t = setTimeout(fn, ms) - return () => clearTimeout(t) - }) - - // Retry any failed events from previous runs of this session (in background) - void this.retryPreviousBatches() - } - - // Expose for testing - async getQueuedEventCount(): Promise { - return (await this.loadEventsFromCurrentBatch()).length - } - - // --- Storage helpers --- - - private getCurrentBatchFilePath(): string { - return path.join( - getStorageDir(), - `${FILE_PREFIX}${getSessionId()}.${BATCH_UUID}.json`, - ) - } - - private async loadEventsFromFile( - filePath: string, - ): Promise { - try { - return await readJSONLFile(filePath) - } catch { - return [] - } - } - - private async loadEventsFromCurrentBatch(): Promise< - FirstPartyEventLoggingEvent[] - > { - return this.loadEventsFromFile(this.getCurrentBatchFilePath()) - } - - private async saveEventsToFile( - filePath: string, - events: FirstPartyEventLoggingEvent[], - ): Promise { - try { - if (events.length === 0) { - try { - await unlink(filePath) - } catch { - // File doesn't exist, nothing to delete - } - } else { - // Ensure storage directory exists - await mkdir(getStorageDir(), { recursive: true }) - // Write as JSON lines (one event per line) - const content = events.map(e => jsonStringify(e)).join('\n') + '\n' - await writeFile(filePath, content, 'utf8') - } - } catch (error) { - logError(error) - } - } - - private async appendEventsToFile( - filePath: string, - events: FirstPartyEventLoggingEvent[], - ): Promise { - if (events.length === 0) return - try { - // Ensure storage directory exists - await mkdir(getStorageDir(), { recursive: true }) - // Append as JSON lines (one event per line) - atomic on most filesystems - const content = events.map(e => jsonStringify(e)).join('\n') + '\n' - await appendFile(filePath, content, 'utf8') - } catch (error) { - logError(error) - } - } - - private async deleteFile(filePath: string): Promise { - try { - await unlink(filePath) - } catch { - // File doesn't exist or can't be deleted, ignore - } - } - - // --- Previous batch retry (startup) --- - - private async retryPreviousBatches(): Promise { - try { - const prefix = `${FILE_PREFIX}${getSessionId()}.` - let files: string[] - try { - files = (await readdir(getStorageDir())) - .filter((f: string) => f.startsWith(prefix) && f.endsWith('.json')) - .filter((f: string) => !f.includes(BATCH_UUID)) // Exclude current batch - } catch (e) { - if (isFsInaccessible(e)) return - throw e - } - - for (const file of files) { - const filePath = path.join(getStorageDir(), file) - void this.retryFileInBackground(filePath) - } - } catch (error) { - logError(error) - } - } - - private async retryFileInBackground(filePath: string): Promise { - if (this.attempts >= this.maxAttempts) { - await this.deleteFile(filePath) - return - } - - const events = await this.loadEventsFromFile(filePath) - if (events.length === 0) { - await this.deleteFile(filePath) - return - } - - if (process.env.USER_TYPE === 'ant') { - logForDebugging( - `1P event logging: retrying ${events.length} events from previous batch`, - ) - } - - const failedEvents = await this.sendEventsInBatches(events) - if (failedEvents.length === 0) { - await this.deleteFile(filePath) - if (process.env.USER_TYPE === 'ant') { - logForDebugging('1P event logging: previous batch retry succeeded') - } - } else { - // Save only the failed events back (not all original events) - await this.saveEventsToFile(filePath, failedEvents) - if (process.env.USER_TYPE === 'ant') { - logForDebugging( - `1P event logging: previous batch retry failed, ${failedEvents.length} events remain`, - ) - } - } - } - - async export( - logs: ReadableLogRecord[], - resultCallback: (result: ExportResult) => void, - ): Promise { - if (this.isShutdown) { - if (process.env.USER_TYPE === 'ant') { - logForDebugging( - '1P event logging export failed: Exporter has been shutdown', - ) - } - resultCallback({ - code: ExportResultCode.FAILED, - error: new Error('Exporter has been shutdown'), - }) - return - } - - const exportPromise = this.doExport(logs, resultCallback) - this.pendingExports.push(exportPromise) - - // Clean up completed exports - void exportPromise.finally(() => { - const index = this.pendingExports.indexOf(exportPromise) - if (index > -1) { - void this.pendingExports.splice(index, 1) - } - }) - } - - private async doExport( - logs: ReadableLogRecord[], - resultCallback: (result: ExportResult) => void, - ): Promise { - try { - // Filter for event logs only (by scope name) - const eventLogs = logs.filter( - log => - log.instrumentationScope?.name === 'com.anthropic.claude_code.events', - ) - - if (eventLogs.length === 0) { - resultCallback({ code: ExportResultCode.SUCCESS }) - return - } - - // Transform new logs (failed events are retried independently via backoff) - const events = this.transformLogsToEvents(eventLogs).events - - if (events.length === 0) { - resultCallback({ code: ExportResultCode.SUCCESS }) - return - } - - if (this.attempts >= this.maxAttempts) { - resultCallback({ - code: ExportResultCode.FAILED, - error: new Error( - `Dropped ${events.length} events: max attempts (${this.maxAttempts}) reached`, - ), - }) - return - } - - // Send events - const failedEvents = await this.sendEventsInBatches(events) - this.attempts++ - - if (failedEvents.length > 0) { - await this.queueFailedEvents(failedEvents) - this.scheduleBackoffRetry() - const context = this.lastExportErrorContext - ? ` (${this.lastExportErrorContext})` - : '' - resultCallback({ - code: ExportResultCode.FAILED, - error: new Error( - `Failed to export ${failedEvents.length} events${context}`, - ), - }) - return - } - - // Success - reset backoff and immediately retry any queued events - this.resetBackoff() - if ((await this.getQueuedEventCount()) > 0 && !this.isRetrying) { - void this.retryFailedEvents() - } - resultCallback({ code: ExportResultCode.SUCCESS }) - } catch (error) { - if (process.env.USER_TYPE === 'ant') { - logForDebugging( - `1P event logging export failed: ${errorMessage(error)}`, - ) - } - logError(error) - resultCallback({ - code: ExportResultCode.FAILED, - error: toError(error), - }) - } - } - - private async sendEventsInBatches( - events: FirstPartyEventLoggingEvent[], - ): Promise { - // Chunk events into batches - const batches: FirstPartyEventLoggingEvent[][] = [] - for (let i = 0; i < events.length; i += this.maxBatchSize) { - batches.push(events.slice(i, i + this.maxBatchSize)) - } - - if (process.env.USER_TYPE === 'ant') { - logForDebugging( - `1P event logging: exporting ${events.length} events in ${batches.length} batch(es)`, - ) - } - - // Send each batch with delay between them. On first failure, assume the - // endpoint is down and short-circuit: queue the failed batch plus all - // remaining unsent batches without POSTing them. The backoff retry will - // probe again with a single batch next tick. - const failedBatchEvents: FirstPartyEventLoggingEvent[] = [] - let lastErrorContext: string | undefined - for (let i = 0; i < batches.length; i++) { - const batch = batches[i]! - try { - await this.sendBatchWithRetry({ events: batch }) - } catch (error) { - lastErrorContext = getAxiosErrorContext(error) - for (let j = i; j < batches.length; j++) { - failedBatchEvents.push(...batches[j]!) - } - if (process.env.USER_TYPE === 'ant') { - const skipped = batches.length - 1 - i - logForDebugging( - `1P event logging: batch ${i + 1}/${batches.length} failed (${lastErrorContext}); short-circuiting ${skipped} remaining batch(es)`, - ) - } - break - } - - if (i < batches.length - 1 && this.batchDelayMs > 0) { - await sleep(this.batchDelayMs) - } - } - - if (failedBatchEvents.length > 0 && lastErrorContext) { - this.lastExportErrorContext = lastErrorContext - } - - return failedBatchEvents - } - - private async queueFailedEvents( - events: FirstPartyEventLoggingEvent[], - ): Promise { - const filePath = this.getCurrentBatchFilePath() - - // Append-only: just add new events to file (atomic on most filesystems) - await this.appendEventsToFile(filePath, events) - - const context = this.lastExportErrorContext - ? ` (${this.lastExportErrorContext})` - : '' - const message = `1P event logging: ${events.length} events failed to export${context}` - logError(new Error(message)) - } - - private scheduleBackoffRetry(): void { - // Don't schedule if already retrying or shutdown - if (this.cancelBackoff || this.isRetrying || this.isShutdown) { - return - } - - // Quadratic backoff (matching Statsig SDK): base * attempts² - const delay = Math.min( - this.baseBackoffDelayMs * this.attempts * this.attempts, - this.maxBackoffDelayMs, - ) - - if (process.env.USER_TYPE === 'ant') { - logForDebugging( - `1P event logging: scheduling backoff retry in ${delay}ms (attempt ${this.attempts})`, - ) - } - - this.cancelBackoff = this.schedule(async () => { - this.cancelBackoff = null - await this.retryFailedEvents() - }, delay) - } - - private async retryFailedEvents(): Promise { - const filePath = this.getCurrentBatchFilePath() - - // Keep retrying while there are events and endpoint is healthy - while (!this.isShutdown) { - const events = await this.loadEventsFromFile(filePath) - if (events.length === 0) break - - if (this.attempts >= this.maxAttempts) { - if (process.env.USER_TYPE === 'ant') { - logForDebugging( - `1P event logging: max attempts (${this.maxAttempts}) reached, dropping ${events.length} events`, - ) - } - await this.deleteFile(filePath) - this.resetBackoff() - return - } - - this.isRetrying = true - - // Clear file before retry (we have events in memory now) - await this.deleteFile(filePath) - - if (process.env.USER_TYPE === 'ant') { - logForDebugging( - `1P event logging: retrying ${events.length} failed events (attempt ${this.attempts + 1})`, - ) - } - - const failedEvents = await this.sendEventsInBatches(events) - this.attempts++ - - this.isRetrying = false - - if (failedEvents.length > 0) { - // Write failures back to disk - await this.saveEventsToFile(filePath, failedEvents) - this.scheduleBackoffRetry() - return // Failed - wait for backoff - } - - // Success - reset backoff and continue loop to drain any newly queued events - this.resetBackoff() - if (process.env.USER_TYPE === 'ant') { - logForDebugging('1P event logging: backoff retry succeeded') - } - } - } - - private resetBackoff(): void { - this.attempts = 0 - if (this.cancelBackoff) { - this.cancelBackoff() - this.cancelBackoff = null - } - } - - private async sendBatchWithRetry( - payload: FirstPartyEventLoggingPayload, - ): Promise { - if (this.isKilled()) { - // Throw so the caller short-circuits remaining batches and queues - // everything to disk. Zero network traffic while killed; the backoff - // timer keeps ticking and will resume POSTs as soon as the GrowthBook - // cache picks up the cleared flag. - throw new Error('firstParty sink killswitch active') - } - - const baseHeaders: Record = { - 'Content-Type': 'application/json', - 'User-Agent': getClaudeCodeUserAgent(), - 'x-service-name': 'claude-code', - } - - // Skip auth if trust hasn't been established yet - // This prevents executing apiKeyHelper commands before the trust dialog - // Non-interactive sessions implicitly have workspace trust - const hasTrust = - checkHasTrustDialogAccepted() || getIsNonInteractiveSession() - if (process.env.USER_TYPE === 'ant' && !hasTrust) { - logForDebugging('1P event logging: Trust not accepted') - } - - // Skip auth when the OAuth token is expired or lacks user:profile - // scope (service key sessions). Falls through to unauthenticated send. - let shouldSkipAuth = this.skipAuth || !hasTrust - if (!shouldSkipAuth && isClaudeAISubscriber()) { - const tokens = getClaudeAIOAuthTokens() - if (!hasProfileScope()) { - shouldSkipAuth = true - } else if (tokens && isOAuthTokenExpired(tokens.expiresAt)) { - shouldSkipAuth = true - if (process.env.USER_TYPE === 'ant') { - logForDebugging( - '1P event logging: OAuth token expired, skipping auth to avoid 401', - ) - } - } - } - - // Try with auth headers first (unless trust not established or token is known to be expired) - const authResult = shouldSkipAuth - ? { headers: {}, error: 'trust not established or Oauth token expired' } - : getAuthHeaders() - const useAuth = !authResult.error - - if (!useAuth && process.env.USER_TYPE === 'ant') { - logForDebugging( - `1P event logging: auth not available, sending without auth`, - ) - } - - const headers = useAuth - ? { ...baseHeaders, ...authResult.headers } - : baseHeaders - - try { - const response = await axios.post(this.endpoint, payload, { - timeout: this.timeout, - headers, - }) - this.logSuccess(payload.events.length, useAuth, response.data) - return - } catch (error) { - // Handle 401 by retrying without auth - if ( - useAuth && - axios.isAxiosError(error) && - error.response?.status === 401 - ) { - if (process.env.USER_TYPE === 'ant') { - logForDebugging( - '1P event logging: 401 auth error, retrying without auth', - ) - } - const response = await axios.post(this.endpoint, payload, { - timeout: this.timeout, - headers: baseHeaders, - }) - this.logSuccess(payload.events.length, false, response.data) - return - } - - throw error - } - } - - private logSuccess( - eventCount: number, - withAuth: boolean, - responseData: unknown, - ): void { - if (process.env.USER_TYPE === 'ant') { - logForDebugging( - `1P event logging: ${eventCount} events exported successfully${withAuth ? ' (with auth)' : ' (without auth)'}`, - ) - logForDebugging(`API Response: ${jsonStringify(responseData, null, 2)}`) - } - } - - private hrTimeToDate(hrTime: HrTime): Date { - const [seconds, nanoseconds] = hrTime - return new Date(seconds * 1000 + nanoseconds / 1000000) - } - - private transformLogsToEvents( - logs: ReadableLogRecord[], - ): FirstPartyEventLoggingPayload { - const events: FirstPartyEventLoggingEvent[] = [] - - for (const log of logs) { - const attributes = log.attributes || {} - - // Check if this is a GrowthBook experiment event - if (attributes.event_type === 'GrowthbookExperimentEvent') { - const timestamp = this.hrTimeToDate(log.hrTime) - const account_uuid = attributes.account_uuid as string | undefined - const organization_uuid = attributes.organization_uuid as - | string - | undefined - events.push({ - event_type: 'GrowthbookExperimentEvent', - event_data: GrowthbookExperimentEvent.toJSON({ - event_id: attributes.event_id as string, - timestamp, - experiment_id: attributes.experiment_id as string, - variation_id: attributes.variation_id as number, - environment: attributes.environment as string, - user_attributes: attributes.user_attributes as string, - experiment_metadata: attributes.experiment_metadata as string, - device_id: attributes.device_id as string, - session_id: attributes.session_id as string, - auth: - account_uuid || organization_uuid - ? { account_uuid, organization_uuid } - : undefined, - }), - }) - continue - } - - // Extract event name - const eventName = - (attributes.event_name as string) || (log.body as string) || 'unknown' - - // Extract metadata objects directly (no JSON parsing needed) - const coreMetadata = attributes.core_metadata as EventMetadata | undefined - const userMetadata = attributes.user_metadata as CoreUserData - const eventMetadata = (attributes.event_metadata || {}) as Record< - string, - unknown - > - - if (!coreMetadata) { - // Emit partial event if core metadata is missing - if (process.env.USER_TYPE === 'ant') { - logForDebugging( - `1P event logging: core_metadata missing for event ${eventName}`, - ) - } - events.push({ - event_type: 'ClaudeCodeInternalEvent', - event_data: ClaudeCodeInternalEvent.toJSON({ - event_id: attributes.event_id as string | undefined, - event_name: eventName, - client_timestamp: this.hrTimeToDate(log.hrTime), - session_id: getSessionId(), - additional_metadata: Buffer.from( - jsonStringify({ - transform_error: 'core_metadata attribute is missing', - }), - ).toString('base64'), - }), - }) - continue - } - - // Transform to 1P format - const formatted = to1PEventFormat( - coreMetadata, - userMetadata, - eventMetadata, - ) - - // _PROTO_* keys are PII-tagged values meant only for privileged BQ - // columns. Hoist known keys to proto fields, then defensively strip any - // remaining _PROTO_* so an unrecognized future key can't silently land - // in the general-access additional_metadata blob. sink.ts applies the - // same strip before Datadog; this closes the 1P side. - const { - _PROTO_skill_name, - _PROTO_plugin_name, - _PROTO_marketplace_name, - ...rest - } = formatted.additional - const additionalMetadata = stripProtoFields(rest) - - events.push({ - event_type: 'ClaudeCodeInternalEvent', - event_data: ClaudeCodeInternalEvent.toJSON({ - event_id: attributes.event_id as string | undefined, - event_name: eventName, - client_timestamp: this.hrTimeToDate(log.hrTime), - device_id: attributes.user_id as string | undefined, - email: userMetadata?.email, - auth: formatted.auth, - ...formatted.core, - env: formatted.env, - process: formatted.process, - skill_name: - typeof _PROTO_skill_name === 'string' - ? _PROTO_skill_name - : undefined, - plugin_name: - typeof _PROTO_plugin_name === 'string' - ? _PROTO_plugin_name - : undefined, - marketplace_name: - typeof _PROTO_marketplace_name === 'string' - ? _PROTO_marketplace_name - : undefined, - additional_metadata: - Object.keys(additionalMetadata).length > 0 - ? Buffer.from(jsonStringify(additionalMetadata)).toString( - 'base64', - ) - : undefined, - }), - }) - } - - return { events } - } - - async shutdown(): Promise { - this.isShutdown = true - this.resetBackoff() - await this.forceFlush() - if (process.env.USER_TYPE === 'ant') { - logForDebugging('1P event logging exporter shutdown complete') - } - } - - async forceFlush(): Promise { - await Promise.all(this.pendingExports) - if (process.env.USER_TYPE === 'ant') { - logForDebugging('1P event logging exporter flush complete') - } - } -} - -function getAxiosErrorContext(error: unknown): string { - if (!axios.isAxiosError(error)) { - return errorMessage(error) - } - - const parts: string[] = [] - - const requestId = error.response?.headers?.['request-id'] - if (requestId) { - parts.push(`request-id=${requestId}`) - } - - if (error.response?.status) { - parts.push(`status=${error.response.status}`) - } - - if (error.code) { - parts.push(`code=${error.code}`) - } - - if (error.message) { - parts.push(error.message) - } - - return parts.join(', ') -} diff --git a/src/services/analytics/growthbook.ts b/src/services/analytics/growthbook.ts deleted file mode 100644 index c71bba84..00000000 --- a/src/services/analytics/growthbook.ts +++ /dev/null @@ -1,1155 +0,0 @@ -import { GrowthBook } from '@growthbook/growthbook' -import { isEqual, memoize } from 'lodash-es' -import { - getIsNonInteractiveSession, - getSessionTrustAccepted, -} from '../../bootstrap/state.js' -import { getGrowthBookClientKey } from '../../constants/keys.js' -import { - checkHasTrustDialogAccepted, - getGlobalConfig, - saveGlobalConfig, -} from '../../utils/config.js' -import { logForDebugging } from '../../utils/debug.js' -import { toError } from '../../utils/errors.js' -import { getAuthHeaders } from '../../utils/http.js' -import { logError } from '../../utils/log.js' -import { createSignal } from '../../utils/signal.js' -import { jsonStringify } from '../../utils/slowOperations.js' -import { - type GitHubActionsMetadata, - getUserForGrowthBook, -} from '../../utils/user.js' -import { - is1PEventLoggingEnabled, - logGrowthBookExperimentTo1P, -} from './firstPartyEventLogger.js' - -/** - * User attributes sent to GrowthBook for targeting. - * Uses UUID suffix (not Uuid) to align with GrowthBook conventions. - */ -export type GrowthBookUserAttributes = { - id: string - sessionId: string - deviceID: string - platform: 'win32' | 'darwin' | 'linux' - apiBaseUrlHost?: string - organizationUUID?: string - accountUUID?: string - userType?: string - subscriptionType?: string - rateLimitTier?: string - firstTokenTime?: number - email?: string - appVersion?: string - github?: GitHubActionsMetadata -} - -/** - * Malformed feature response from API that uses "value" instead of "defaultValue". - * This is a workaround until the API is fixed. - */ -type MalformedFeatureDefinition = { - value?: unknown - defaultValue?: unknown - [key: string]: unknown -} - -let client: GrowthBook | null = null - -// Named handler refs so resetGrowthBook can remove them to prevent accumulation -let currentBeforeExitHandler: (() => void) | null = null -let currentExitHandler: (() => void) | null = null - -// Track whether auth was available when the client was created -// This allows us to detect when we need to recreate with fresh auth headers -let clientCreatedWithAuth = false - -// Store experiment data from payload for logging exposures later -type StoredExperimentData = { - experimentId: string - variationId: number - inExperiment?: boolean - hashAttribute?: string - hashValue?: string -} -const experimentDataByFeature = new Map() - -// Cache for remote eval feature values - workaround for SDK not respecting remoteEval response -// The SDK's setForcedFeatures also doesn't work reliably with remoteEval -const remoteEvalFeatureValues = new Map() - -// Track features accessed before init that need exposure logging -const pendingExposures = new Set() - -// Track features that have already had their exposure logged this session (dedup) -// This prevents firing duplicate exposure events when getFeatureValue_CACHED_MAY_BE_STALE -// is called repeatedly in hot paths (e.g., isAutoMemoryEnabled in render loops) -const loggedExposures = new Set() - -// Track re-initialization promise for security gate checks -// When GrowthBook is re-initializing (e.g., after auth change), security gate checks -// should wait for init to complete to avoid returning stale values -let reinitializingPromise: Promise | null = null - -// Listeners notified when GrowthBook feature values refresh (initial init or -// periodic refresh). Use for systems that bake feature values into long-lived -// objects at construction time (e.g. firstPartyEventLogger reads -// tengu_1p_event_batch_config once and builds a LoggerProvider with it) and -// need to rebuild when config changes. Per-call readers like -// getEventSamplingConfig / isSinkKilled don't need this — they're already -// reactive. -// -// NOT cleared by resetGrowthBook — subscribers register once (typically in -// init.ts) and must survive auth-change resets. -type GrowthBookRefreshListener = () => void | Promise -const refreshed = createSignal() - -/** Call a listener with sync-throw and async-rejection both routed to logError. */ -function callSafe(listener: GrowthBookRefreshListener): void { - try { - // Promise.resolve() normalizes sync returns and Promises so both - // sync throws (caught by outer try) and async rejections (caught - // by .catch) hit logError. Without the .catch, an async listener - // that rejects becomes an unhandled rejection — the try/catch - // only sees the Promise, not its eventual rejection. - void Promise.resolve(listener()).catch(e => { - logError(e) - }) - } catch (e) { - logError(e) - } -} - -/** - * Register a callback to fire when GrowthBook feature values refresh. - * Returns an unsubscribe function. - * - * If init has already completed with features by the time this is called - * (remoteEvalFeatureValues is populated), the listener fires once on the - * next microtask. This catch-up handles the race where GB's network response - * lands before the REPL's useEffect commits — on external builds with fast - * networks and MCP-heavy configs, init can finish in ~100ms while REPL mount - * takes ~600ms (see #20951 external-build trace at 30.540 vs 31.046). - * - * Change detection is on the subscriber: the callback fires on every refresh; - * use isEqual against your last-seen config to decide whether to act. - */ -export function onGrowthBookRefresh( - listener: GrowthBookRefreshListener, -): () => void { - let subscribed = true - const unsubscribe = refreshed.subscribe(() => callSafe(listener)) - if (remoteEvalFeatureValues.size > 0) { - queueMicrotask(() => { - // Re-check: listener may have been removed, or resetGrowthBook may have - // cleared the Map, between registration and this microtask running. - if (subscribed && remoteEvalFeatureValues.size > 0) { - callSafe(listener) - } - }) - } - return () => { - subscribed = false - unsubscribe() - } -} - -/** - * Parse env var overrides for GrowthBook features. - * Set CLAUDE_INTERNAL_FC_OVERRIDES to a JSON object mapping feature keys to values - * to bypass remote eval and disk cache. Useful for eval harnesses that need to - * test specific feature flag configurations. Only active when USER_TYPE is 'ant'. - * - * Example: CLAUDE_INTERNAL_FC_OVERRIDES='{"my_feature": true, "my_config": {"key": "val"}}' - */ -let envOverrides: Record | null = null -let envOverridesParsed = false - -function getEnvOverrides(): Record | null { - if (!envOverridesParsed) { - envOverridesParsed = true - if (process.env.USER_TYPE === 'ant') { - const raw = process.env.CLAUDE_INTERNAL_FC_OVERRIDES - if (raw) { - try { - envOverrides = JSON.parse(raw) as Record - logForDebugging( - `GrowthBook: Using env var overrides for ${Object.keys(envOverrides!).length} features: ${Object.keys(envOverrides!).join(', ')}`, - ) - } catch { - logError( - new Error( - `GrowthBook: Failed to parse CLAUDE_INTERNAL_FC_OVERRIDES: ${raw}`, - ), - ) - } - } - } - } - return envOverrides -} - -/** - * Check if a feature has an env-var override (CLAUDE_INTERNAL_FC_OVERRIDES). - * When true, _CACHED_MAY_BE_STALE will return the override without touching - * disk or network — callers can skip awaiting init for that feature. - */ -export function hasGrowthBookEnvOverride(feature: string): boolean { - const overrides = getEnvOverrides() - return overrides !== null && feature in overrides -} - -/** - * Local config overrides set via /config Gates tab (ant-only). Checked after - * env-var overrides — env wins so eval harnesses remain deterministic. Unlike - * getEnvOverrides this is not memoized: the user can change overrides at - * runtime, and getGlobalConfig() is already memory-cached (pointer-chase) - * until the next saveGlobalConfig() invalidates it. - */ -function getConfigOverrides(): Record | undefined { - if (process.env.USER_TYPE !== 'ant') return undefined - try { - return getGlobalConfig().growthBookOverrides - } catch { - // getGlobalConfig() throws before configReadingAllowed is set (early - // main.tsx startup path). Same degrade as the disk-cache fallback below. - return undefined - } -} - -/** - * Enumerate all known GrowthBook features and their current resolved values - * (not including overrides). In-memory payload first, disk cache fallback — - * same priority as the getters. Used by the /config Gates tab. - */ -export function getAllGrowthBookFeatures(): Record { - if (remoteEvalFeatureValues.size > 0) { - return Object.fromEntries(remoteEvalFeatureValues) - } - return getGlobalConfig().cachedGrowthBookFeatures ?? {} -} - -export function getGrowthBookConfigOverrides(): Record { - return getConfigOverrides() ?? {} -} - -/** - * Set or clear a single config override. Pass undefined to clear. - * Fires onGrowthBookRefresh listeners so systems that bake gate values into - * long-lived objects (useMainLoopModel, useSkillsChange, etc.) rebuild — - * otherwise overriding e.g. tengu_ant_model_override wouldn't actually - * change the model until the next periodic refresh. - */ -export function setGrowthBookConfigOverride( - feature: string, - value: unknown, -): void { - if (process.env.USER_TYPE !== 'ant') return - try { - saveGlobalConfig(c => { - const current = c.growthBookOverrides ?? {} - if (value === undefined) { - if (!(feature in current)) return c - const { [feature]: _, ...rest } = current - if (Object.keys(rest).length === 0) { - const { growthBookOverrides: __, ...configWithout } = c - return configWithout - } - return { ...c, growthBookOverrides: rest } - } - if (isEqual(current[feature], value)) return c - return { ...c, growthBookOverrides: { ...current, [feature]: value } } - }) - // Subscribers do their own change detection (see onGrowthBookRefresh docs), - // so firing on a no-op write is fine. - refreshed.emit() - } catch (e) { - logError(e) - } -} - -export function clearGrowthBookConfigOverrides(): void { - if (process.env.USER_TYPE !== 'ant') return - try { - saveGlobalConfig(c => { - if ( - !c.growthBookOverrides || - Object.keys(c.growthBookOverrides).length === 0 - ) { - return c - } - const { growthBookOverrides: _, ...rest } = c - return rest - }) - refreshed.emit() - } catch (e) { - logError(e) - } -} - -/** - * Log experiment exposure for a feature if it has experiment data. - * Deduplicates within a session - each feature is logged at most once. - */ -function logExposureForFeature(feature: string): void { - // Skip if already logged this session (dedup) - if (loggedExposures.has(feature)) { - return - } - - const expData = experimentDataByFeature.get(feature) - if (expData) { - loggedExposures.add(feature) - logGrowthBookExperimentTo1P({ - experimentId: expData.experimentId, - variationId: expData.variationId, - userAttributes: getUserAttributes(), - experimentMetadata: { - feature_id: feature, - }, - }) - } -} - -/** - * Process a remote eval payload from the GrowthBook server and populate - * local caches. Called after both initial client.init() and after - * client.refreshFeatures() so that _BLOCKS_ON_INIT callers see fresh values - * across the process lifetime, not just init-time snapshots. - * - * Without this running on refresh, remoteEvalFeatureValues freezes at its - * init-time snapshot and getDynamicConfig_BLOCKS_ON_INIT returns stale values - * for the entire process lifetime — which broke the tengu_max_version_config - * kill switch for long-running sessions. - */ -async function processRemoteEvalPayload( - gbClient: GrowthBook, -): Promise { - // WORKAROUND: Transform remote eval response format - // The API returns { "value": ... } but SDK expects { "defaultValue": ... } - // TODO: Remove this once the API is fixed to return correct format - const payload = gbClient.getPayload() - // Empty object is truthy — without the length check, `{features: {}}` - // (transient server bug, truncated response) would pass, clear the maps - // below, return true, and syncRemoteEvalToDisk would wholesale-write `{}` - // to disk: total flag blackout for every process sharing ~/.claude.json. - if (!payload?.features || Object.keys(payload.features).length === 0) { - return false - } - - // Clear before rebuild so features removed between refreshes don't - // leave stale ghost entries that short-circuit getFeatureValueInternal. - experimentDataByFeature.clear() - - const transformedFeatures: Record = {} - for (const [key, feature] of Object.entries(payload.features)) { - const f = feature as MalformedFeatureDefinition - if ('value' in f && !('defaultValue' in f)) { - transformedFeatures[key] = { - ...f, - defaultValue: f.value, - } - } else { - transformedFeatures[key] = f - } - - // Store experiment data for later logging when feature is accessed - if (f.source === 'experiment' && f.experimentResult) { - const expResult = f.experimentResult as { - variationId?: number - } - const exp = f.experiment as { key?: string } | undefined - if (exp?.key && expResult.variationId !== undefined) { - experimentDataByFeature.set(key, { - experimentId: exp.key, - variationId: expResult.variationId, - }) - } - } - } - // Re-set the payload with transformed features - await gbClient.setPayload({ - ...payload, - features: transformedFeatures, - }) - - // WORKAROUND: Cache the evaluated values directly from remote eval response. - // The SDK's evalFeature() tries to re-evaluate rules locally, ignoring the - // pre-evaluated 'value' from remoteEval. setForcedFeatures also doesn't work - // reliably. So we cache values ourselves and use them in getFeatureValueInternal. - remoteEvalFeatureValues.clear() - for (const [key, feature] of Object.entries(transformedFeatures)) { - // Under remoteEval:true the server pre-evaluates. Whether the answer - // lands in `value` (current API) or `defaultValue` (post-TODO API shape), - // it's the authoritative value for this user. Guarding on both keeps - // syncRemoteEvalToDisk correct across a partial or full API migration. - const v = 'value' in feature ? feature.value : feature.defaultValue - if (v !== undefined) { - remoteEvalFeatureValues.set(key, v) - } - } - return true -} - -/** - * Write the complete remoteEvalFeatureValues map to disk. Called exactly - * once per successful processRemoteEvalPayload — never from a failure path, - * so init-timeout poisoning is structurally impossible (the .catch() at init - * never reaches here). - * - * Wholesale replace (not merge): features deleted server-side are dropped - * from disk on the next successful payload. Ant builds ⊇ external, so - * switching builds is safe — the write is always a complete answer for this - * process's SDK key. - */ -function syncRemoteEvalToDisk(): void { - const fresh = Object.fromEntries(remoteEvalFeatureValues) - const config = getGlobalConfig() - if (isEqual(config.cachedGrowthBookFeatures, fresh)) { - return - } - saveGlobalConfig(current => ({ - ...current, - cachedGrowthBookFeatures: fresh, - })) -} - -/** - * Check if GrowthBook operations should be enabled - */ -function isGrowthBookEnabled(): boolean { - // GrowthBook depends on 1P event logging. - return is1PEventLoggingEnabled() -} - -/** - * Hostname of ANTHROPIC_BASE_URL when it points at a non-Anthropic proxy. - * - * Enterprise-proxy deployments (Epic, Marble, etc.) typically use - * apiKeyHelper auth, which means isAnthropicAuthEnabled() returns false and - * organizationUUID/accountUUID/email are all absent from GrowthBook - * attributes. Without this, there's no stable attribute to target them on - * — only per-device IDs. See src/utils/auth.ts isAnthropicAuthEnabled(). - * - * Returns undefined for unset/default (api.anthropic.com) so the attribute - * is absent for direct-API users. Hostname only — no path/query/creds. - */ -export function getApiBaseUrlHost(): string | undefined { - const baseUrl = process.env.ANTHROPIC_BASE_URL - if (!baseUrl) return undefined - try { - const host = new URL(baseUrl).host - if (host === 'api.anthropic.com') return undefined - return host - } catch { - return undefined - } -} - -/** - * Get user attributes for GrowthBook from CoreUserData - */ -function getUserAttributes(): GrowthBookUserAttributes { - const user = getUserForGrowthBook() - - // For ants, always try to include email from OAuth config even if ANTHROPIC_API_KEY is set. - // This ensures GrowthBook targeting by email works regardless of auth method. - let email = user.email - if (!email && process.env.USER_TYPE === 'ant') { - email = getGlobalConfig().oauthAccount?.emailAddress - } - - const apiBaseUrlHost = getApiBaseUrlHost() - - const attributes = { - id: user.deviceId, - sessionId: user.sessionId, - deviceID: user.deviceId, - platform: user.platform, - ...(apiBaseUrlHost && { apiBaseUrlHost }), - ...(user.organizationUuid && { organizationUUID: user.organizationUuid }), - ...(user.accountUuid && { accountUUID: user.accountUuid }), - ...(user.userType && { userType: user.userType }), - ...(user.subscriptionType && { subscriptionType: user.subscriptionType }), - ...(user.rateLimitTier && { rateLimitTier: user.rateLimitTier }), - ...(user.firstTokenTime && { firstTokenTime: user.firstTokenTime }), - ...(email && { email }), - ...(user.appVersion && { appVersion: user.appVersion }), - ...(user.githubActionsMetadata && { - githubActionsMetadata: user.githubActionsMetadata, - }), - } - return attributes -} - -/** - * Get or create the GrowthBook client instance - */ -const getGrowthBookClient = memoize( - (): { client: GrowthBook; initialized: Promise } | null => { - if (!isGrowthBookEnabled()) { - return null - } - - const attributes = getUserAttributes() - const clientKey = getGrowthBookClientKey() - if (process.env.USER_TYPE === 'ant') { - logForDebugging( - `GrowthBook: Creating client with clientKey=${clientKey}, attributes: ${jsonStringify(attributes)}`, - ) - } - const baseUrl = - process.env.USER_TYPE === 'ant' - ? process.env.CLAUDE_CODE_GB_BASE_URL || 'https://api.anthropic.com/' - : 'https://api.anthropic.com/' - - // Skip auth if trust hasn't been established yet - // This prevents executing apiKeyHelper commands before the trust dialog - // Non-interactive sessions implicitly have workspace trust - // getSessionTrustAccepted() covers the case where the TrustDialog auto-resolved - // without persisting trust for the specific CWD (e.g., home directory) — - // showSetupScreens() sets this after the trust dialog flow completes. - const hasTrust = - checkHasTrustDialogAccepted() || - getSessionTrustAccepted() || - getIsNonInteractiveSession() - const authHeaders = hasTrust - ? getAuthHeaders() - : { headers: {}, error: 'trust not established' } - const hasAuth = !authHeaders.error - clientCreatedWithAuth = hasAuth - - // Capture in local variable so the init callback operates on THIS client, - // not a later client if reinitialization happens before init completes - const thisClient = new GrowthBook({ - apiHost: baseUrl, - clientKey, - attributes, - remoteEval: true, - // Re-fetch when user ID or org changes (org change = login to different org) - cacheKeyAttributes: ['id', 'organizationUUID'], - // Add auth headers if available - ...(authHeaders.error - ? {} - : { apiHostRequestHeaders: authHeaders.headers }), - // Debug logging for Ants - ...(process.env.USER_TYPE === 'ant' - ? { - log: (msg: string, ctx: Record) => { - logForDebugging(`GrowthBook: ${msg} ${jsonStringify(ctx)}`) - }, - } - : {}), - }) - client = thisClient - - if (!hasAuth) { - // No auth available yet — skip HTTP init, rely on disk-cached values. - // initializeGrowthBook() will reset and re-create with auth when available. - return { client: thisClient, initialized: Promise.resolve() } - } - - const initialized = thisClient - .init({ timeout: 5000 }) - .then(async result => { - // Guard: if this client was replaced by a newer one, skip processing - if (client !== thisClient) { - if (process.env.USER_TYPE === 'ant') { - logForDebugging( - 'GrowthBook: Skipping init callback for replaced client', - ) - } - return - } - - if (process.env.USER_TYPE === 'ant') { - logForDebugging( - `GrowthBook initialized successfully, source: ${result.source}, success: ${result.success}`, - ) - } - - const hadFeatures = await processRemoteEvalPayload(thisClient) - // Re-check: processRemoteEvalPayload yields at `await setPayload`. - // Microtask-only today (no encryption, no sticky-bucket service), but - // the guard at the top of this callback runs before that await; - // this runs after. - if (client !== thisClient) return - - if (hadFeatures) { - for (const feature of pendingExposures) { - logExposureForFeature(feature) - } - pendingExposures.clear() - syncRemoteEvalToDisk() - // Notify subscribers: remoteEvalFeatureValues is populated and - // disk is freshly synced. _CACHED_MAY_BE_STALE reads memory first - // (#22295), so subscribers see fresh values immediately. - refreshed.emit() - } - - // Log what features were loaded - if (process.env.USER_TYPE === 'ant') { - const features = thisClient.getFeatures() - if (features) { - const featureKeys = Object.keys(features) - logForDebugging( - `GrowthBook loaded ${featureKeys.length} features: ${featureKeys.slice(0, 10).join(', ')}${featureKeys.length > 10 ? '...' : ''}`, - ) - } - } - }) - .catch(error => { - if (process.env.USER_TYPE === 'ant') { - logError(toError(error)) - } - }) - - // Register cleanup handlers for graceful shutdown (named refs so resetGrowthBook can remove them) - currentBeforeExitHandler = () => client?.destroy() - currentExitHandler = () => client?.destroy() - process.on('beforeExit', currentBeforeExitHandler) - process.on('exit', currentExitHandler) - - return { client: thisClient, initialized } - }, -) - -/** - * Initialize GrowthBook client (blocks until ready) - */ -export const initializeGrowthBook = memoize( - async (): Promise => { - let clientWrapper = getGrowthBookClient() - if (!clientWrapper) { - return null - } - - // Check if auth has become available since the client was created - // If so, we need to recreate the client with fresh auth headers - // Only check if trust is established to avoid triggering apiKeyHelper before trust dialog - if (!clientCreatedWithAuth) { - const hasTrust = - checkHasTrustDialogAccepted() || - getSessionTrustAccepted() || - getIsNonInteractiveSession() - if (hasTrust) { - const currentAuth = getAuthHeaders() - if (!currentAuth.error) { - if (process.env.USER_TYPE === 'ant') { - logForDebugging( - 'GrowthBook: Auth became available after client creation, reinitializing', - ) - } - // Use resetGrowthBook to properly destroy old client and stop periodic refresh - // This prevents double-init where old client's init promise continues running - resetGrowthBook() - clientWrapper = getGrowthBookClient() - if (!clientWrapper) { - return null - } - } - } - } - - await clientWrapper.initialized - - // Set up periodic refresh after successful initialization - // This is called here (not separately) so it's always re-established after any reinit - setupPeriodicGrowthBookRefresh() - - return clientWrapper.client - }, -) - -/** - * Get a feature value with a default fallback - blocks until initialized. - * @internal Used by both deprecated and cached functions. - */ -async function getFeatureValueInternal( - feature: string, - defaultValue: T, - logExposure: boolean, -): Promise { - // Check env var overrides first (for eval harnesses) - const overrides = getEnvOverrides() - if (overrides && feature in overrides) { - return overrides[feature] as T - } - const configOverrides = getConfigOverrides() - if (configOverrides && feature in configOverrides) { - return configOverrides[feature] as T - } - - if (!isGrowthBookEnabled()) { - return defaultValue - } - - const growthBookClient = await initializeGrowthBook() - if (!growthBookClient) { - return defaultValue - } - - // Use cached remote eval values if available (workaround for SDK bug) - let result: T - if (remoteEvalFeatureValues.has(feature)) { - result = remoteEvalFeatureValues.get(feature) as T - } else { - result = growthBookClient.getFeatureValue(feature, defaultValue) as T - } - - // Log experiment exposure using stored experiment data - if (logExposure) { - logExposureForFeature(feature) - } - - if (process.env.USER_TYPE === 'ant') { - logForDebugging( - `GrowthBook: getFeatureValue("${feature}") = ${jsonStringify(result)}`, - ) - } - return result -} - -/** - * @deprecated Use getFeatureValue_CACHED_MAY_BE_STALE instead, which is non-blocking. - * This function blocks on GrowthBook initialization which can slow down startup. - */ -export async function getFeatureValue_DEPRECATED( - feature: string, - defaultValue: T, -): Promise { - return getFeatureValueInternal(feature, defaultValue, true) -} - -/** - * Get a feature value from disk cache immediately. Pure read — disk is - * populated by syncRemoteEvalToDisk on every successful payload (init + - * periodic refresh), not by this function. - * - * This is the preferred method for startup-critical paths and sync contexts. - * The value may be stale if the cache was written by a previous process. - */ -export function getFeatureValue_CACHED_MAY_BE_STALE( - feature: string, - defaultValue: T, -): T { - // Check env var overrides first (for eval harnesses) - const overrides = getEnvOverrides() - if (overrides && feature in overrides) { - return overrides[feature] as T - } - const configOverrides = getConfigOverrides() - if (configOverrides && feature in configOverrides) { - return configOverrides[feature] as T - } - - if (!isGrowthBookEnabled()) { - return defaultValue - } - - // Log experiment exposure if data is available, otherwise defer until after init - if (experimentDataByFeature.has(feature)) { - logExposureForFeature(feature) - } else { - pendingExposures.add(feature) - } - - // In-memory payload is authoritative once processRemoteEvalPayload has run. - // Disk is also fresh by then (syncRemoteEvalToDisk runs synchronously inside - // init), so this is correctness-equivalent to the disk read below — but it - // skips the config JSON parse and is what onGrowthBookRefresh subscribers - // depend on to read fresh values the instant they're notified. - if (remoteEvalFeatureValues.has(feature)) { - return remoteEvalFeatureValues.get(feature) as T - } - - // Fall back to disk cache (survives across process restarts) - try { - const cached = getGlobalConfig().cachedGrowthBookFeatures?.[feature] - return cached !== undefined ? (cached as T) : defaultValue - } catch { - return defaultValue - } -} - -/** - * @deprecated Disk cache is now synced on every successful payload load - * (init + 20min/6h periodic refresh). The per-feature TTL never fetched - * fresh data from the server — it only re-wrote in-memory state to disk, - * which is now redundant. Use getFeatureValue_CACHED_MAY_BE_STALE directly. - */ -export function getFeatureValue_CACHED_WITH_REFRESH( - feature: string, - defaultValue: T, - _refreshIntervalMs: number, -): T { - return getFeatureValue_CACHED_MAY_BE_STALE(feature, defaultValue) -} - -/** - * Check a Statsig feature gate value via GrowthBook, with fallback to Statsig cache. - * - * **MIGRATION ONLY**: This function is for migrating existing Statsig gates to GrowthBook. - * For new features, use `getFeatureValue_CACHED_MAY_BE_STALE()` instead. - * - * - Checks GrowthBook disk cache first - * - Falls back to Statsig's cachedStatsigGates during migration - * - The value may be stale if the cache hasn't been updated recently - * - * @deprecated Use getFeatureValue_CACHED_MAY_BE_STALE() for new code. This function - * exists only to support migration of existing Statsig gates. - */ -export function checkStatsigFeatureGate_CACHED_MAY_BE_STALE( - gate: string, -): boolean { - // Check env var overrides first (for eval harnesses) - const overrides = getEnvOverrides() - if (overrides && gate in overrides) { - return Boolean(overrides[gate]) - } - const configOverrides = getConfigOverrides() - if (configOverrides && gate in configOverrides) { - return Boolean(configOverrides[gate]) - } - - if (!isGrowthBookEnabled()) { - return false - } - - // Log experiment exposure if data is available, otherwise defer until after init - if (experimentDataByFeature.has(gate)) { - logExposureForFeature(gate) - } else { - pendingExposures.add(gate) - } - - // Return cached value immediately from disk - // First check GrowthBook cache, then fall back to Statsig cache for migration - const config = getGlobalConfig() - const gbCached = config.cachedGrowthBookFeatures?.[gate] - if (gbCached !== undefined) { - return Boolean(gbCached) - } - // Fallback to Statsig cache for migration period - return config.cachedStatsigGates?.[gate] ?? false -} - -/** - * Check a security restriction gate, waiting for re-init if in progress. - * - * Use this for security-critical gates where we need fresh values after auth changes. - * - * Behavior: - * - If GrowthBook is re-initializing (e.g., after login), waits for it to complete - * - Otherwise, returns cached value immediately (Statsig cache first, then GrowthBook) - * - * Statsig cache is checked first as a safety measure for security-related checks: - * if the Statsig cache indicates the gate is enabled, we honor it. - */ -export async function checkSecurityRestrictionGate( - gate: string, -): Promise { - // Check env var overrides first (for eval harnesses) - const overrides = getEnvOverrides() - if (overrides && gate in overrides) { - return Boolean(overrides[gate]) - } - const configOverrides = getConfigOverrides() - if (configOverrides && gate in configOverrides) { - return Boolean(configOverrides[gate]) - } - - if (!isGrowthBookEnabled()) { - return false - } - - // If re-initialization is in progress, wait for it to complete - // This ensures we get fresh values after auth changes - if (reinitializingPromise) { - await reinitializingPromise - } - - // Check Statsig cache first - it may have correct value from previous logged-in session - const config = getGlobalConfig() - const statsigCached = config.cachedStatsigGates?.[gate] - if (statsigCached !== undefined) { - return Boolean(statsigCached) - } - - // Then check GrowthBook cache - const gbCached = config.cachedGrowthBookFeatures?.[gate] - if (gbCached !== undefined) { - return Boolean(gbCached) - } - - // No cache - return false (don't block on init for uncached gates) - return false -} - -/** - * Check a boolean entitlement gate with fallback-to-blocking semantics. - * - * Fast path: if the disk cache already says `true`, return it immediately. - * Slow path: if disk says `false`/missing, await GrowthBook init and fetch the - * fresh server value (max ~5s). Disk is populated by syncRemoteEvalToDisk - * inside init, so by the time the slow path returns, disk already has the - * fresh value — no write needed here. - * - * Use for user-invoked features (e.g. /remote-control) that are gated on - * subscription/org, where a stale `false` would unfairly block access but a - * stale `true` is acceptable (the server is the real gatekeeper). - */ -export async function checkGate_CACHED_OR_BLOCKING( - gate: string, -): Promise { - // Check env var overrides first (for eval harnesses) - const overrides = getEnvOverrides() - if (overrides && gate in overrides) { - return Boolean(overrides[gate]) - } - const configOverrides = getConfigOverrides() - if (configOverrides && gate in configOverrides) { - return Boolean(configOverrides[gate]) - } - - if (!isGrowthBookEnabled()) { - return false - } - - // Fast path: disk cache already says true — trust it - const cached = getGlobalConfig().cachedGrowthBookFeatures?.[gate] - if (cached === true) { - // Log experiment exposure if data is available, otherwise defer - if (experimentDataByFeature.has(gate)) { - logExposureForFeature(gate) - } else { - pendingExposures.add(gate) - } - return true - } - - // Slow path: disk says false/missing — may be stale, fetch fresh - return getFeatureValueInternal(gate, false, true) -} - -/** - * Refresh GrowthBook after auth changes (login/logout). - * - * NOTE: This must destroy and recreate the client because GrowthBook's - * apiHostRequestHeaders cannot be updated after client creation. - */ -export function refreshGrowthBookAfterAuthChange(): void { - if (!isGrowthBookEnabled()) { - return - } - - try { - // Reset the client completely to get fresh auth headers - // This is necessary because apiHostRequestHeaders can't be updated after creation - resetGrowthBook() - - // resetGrowthBook cleared remoteEvalFeatureValues. If re-init below - // times out (hadFeatures=false) or short-circuits on !hasAuth (logout), - // the init-callback notify never fires — subscribers stay synced to the - // previous account's memoized state. Notify here so they re-read now - // (falls to disk cache). If re-init succeeds, they'll notify again with - // fresh values; if not, at least they're synced to the post-reset state. - refreshed.emit() - - // Reinitialize with fresh auth headers and attributes - // Track this promise so security gate checks can wait for it. - // .catch before .finally: initializeGrowthBook can reject if its sync - // helpers throw (getGrowthBookClient, getAuthHeaders, resetGrowthBook — - // clientWrapper.initialized itself has its own .catch so never rejects), - // and .finally re-settles with the original rejection — the sync - // try/catch below cannot catch async rejections. - reinitializingPromise = initializeGrowthBook() - .catch(error => { - logError(toError(error)) - return null - }) - .finally(() => { - reinitializingPromise = null - }) - } catch (error) { - if (process.env.NODE_ENV === 'development') { - throw error - } - logError(toError(error)) - } -} - -/** - * Reset GrowthBook client state (primarily for testing) - */ -export function resetGrowthBook(): void { - stopPeriodicGrowthBookRefresh() - // Remove process handlers before destroying client to prevent accumulation - if (currentBeforeExitHandler) { - process.off('beforeExit', currentBeforeExitHandler) - currentBeforeExitHandler = null - } - if (currentExitHandler) { - process.off('exit', currentExitHandler) - currentExitHandler = null - } - client?.destroy() - client = null - clientCreatedWithAuth = false - reinitializingPromise = null - experimentDataByFeature.clear() - pendingExposures.clear() - loggedExposures.clear() - remoteEvalFeatureValues.clear() - getGrowthBookClient.cache?.clear?.() - initializeGrowthBook.cache?.clear?.() - envOverrides = null - envOverridesParsed = false -} - -// Periodic refresh interval (matches Statsig's 6-hour interval) -const GROWTHBOOK_REFRESH_INTERVAL_MS = - process.env.USER_TYPE !== 'ant' - ? 6 * 60 * 60 * 1000 // 6 hours - : 20 * 60 * 1000 // 20 min (for ants) -let refreshInterval: ReturnType | null = null -let beforeExitListener: (() => void) | null = null - -/** - * Light refresh - re-fetch features from server without recreating client. - * Use this for periodic refresh when auth headers haven't changed. - * - * Unlike refreshGrowthBookAfterAuthChange() which destroys and recreates the client, - * this preserves client state and just fetches fresh feature values. - */ -export async function refreshGrowthBookFeatures(): Promise { - if (!isGrowthBookEnabled()) { - return - } - - try { - const growthBookClient = await initializeGrowthBook() - if (!growthBookClient) { - return - } - - await growthBookClient.refreshFeatures() - - // Guard: if this client was replaced during the in-flight refresh - // (e.g. refreshGrowthBookAfterAuthChange ran), skip processing the - // stale payload. Mirrors the init-callback guard above. - if (growthBookClient !== client) { - if (process.env.USER_TYPE === 'ant') { - logForDebugging( - 'GrowthBook: Skipping refresh processing for replaced client', - ) - } - return - } - - // Rebuild remoteEvalFeatureValues from the refreshed payload so that - // _BLOCKS_ON_INIT callers (e.g. getMaxVersion for the auto-update kill - // switch) see fresh values, not the stale init-time snapshot. - const hadFeatures = await processRemoteEvalPayload(growthBookClient) - // Same re-check as init path: covers the setPayload yield inside - // processRemoteEvalPayload (the guard above only covers refreshFeatures). - if (growthBookClient !== client) return - - if (process.env.USER_TYPE === 'ant') { - logForDebugging('GrowthBook: Light refresh completed') - } - - // Gate on hadFeatures: if the payload was empty/malformed, - // remoteEvalFeatureValues wasn't rebuilt — skip both the no-op disk - // write and the spurious subscriber churn (clearCommandMemoizationCaches - // + getCommands + 4× model re-renders). - if (hadFeatures) { - syncRemoteEvalToDisk() - refreshed.emit() - } - } catch (error) { - if (process.env.NODE_ENV === 'development') { - throw error - } - logError(toError(error)) - } -} - -/** - * Set up periodic refresh of GrowthBook features. - * Uses light refresh (refreshGrowthBookFeatures) to re-fetch without recreating client. - * - * Call this after initialization for long-running sessions to ensure - * feature values stay fresh. Matches Statsig's 6-hour refresh interval. - */ -export function setupPeriodicGrowthBookRefresh(): void { - if (!isGrowthBookEnabled()) { - return - } - - // Clear any existing interval to avoid duplicates - if (refreshInterval) { - clearInterval(refreshInterval) - } - - refreshInterval = setInterval(() => { - void refreshGrowthBookFeatures() - }, GROWTHBOOK_REFRESH_INTERVAL_MS) - // Allow process to exit naturally - this timer shouldn't keep the process alive - refreshInterval.unref?.() - - // Register cleanup listener only once - if (!beforeExitListener) { - beforeExitListener = () => { - stopPeriodicGrowthBookRefresh() - } - process.once('beforeExit', beforeExitListener) - } -} - -/** - * Stop periodic refresh (for testing or cleanup) - */ -export function stopPeriodicGrowthBookRefresh(): void { - if (refreshInterval) { - clearInterval(refreshInterval) - refreshInterval = null - } - if (beforeExitListener) { - process.removeListener('beforeExit', beforeExitListener) - beforeExitListener = null - } -} - -// ============================================================================ -// Dynamic Config Functions -// These are semantic wrappers around feature functions for Statsig API parity. -// In GrowthBook, dynamic configs are just features with object values. -// ============================================================================ - -/** - * Get a dynamic config value - blocks until GrowthBook is initialized. - * Prefer getFeatureValue_CACHED_MAY_BE_STALE for startup-critical paths. - */ -export async function getDynamicConfig_BLOCKS_ON_INIT( - configName: string, - defaultValue: T, -): Promise { - return getFeatureValue_DEPRECATED(configName, defaultValue) -} - -/** - * Get a dynamic config value from disk cache immediately. Pure read — see - * getFeatureValue_CACHED_MAY_BE_STALE. - * This is the preferred method for startup-critical paths and sync contexts. - * - * In GrowthBook, dynamic configs are just features with object values. - */ -export function getDynamicConfig_CACHED_MAY_BE_STALE( - configName: string, - defaultValue: T, -): T { - return getFeatureValue_CACHED_MAY_BE_STALE(configName, defaultValue) -} diff --git a/src/services/analytics/index.ts b/src/services/analytics/index.ts deleted file mode 100644 index 30d2e592..00000000 --- a/src/services/analytics/index.ts +++ /dev/null @@ -1,173 +0,0 @@ -/** - * Analytics service - public API for event logging - * - * This module serves as the main entry point for analytics events in Claude CLI. - * - * DESIGN: This module has NO dependencies to avoid import cycles. - * Events are queued until attachAnalyticsSink() is called during app initialization. - * The sink handles routing to Datadog and 1P event logging. - */ - -/** - * Marker type for verifying analytics metadata doesn't contain sensitive data - * - * This type forces explicit verification that string values being logged - * don't contain code snippets, file paths, or other sensitive information. - * - * Usage: `myString as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS` - */ -export type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS = never - -/** - * Marker type for values routed to PII-tagged proto columns via `_PROTO_*` - * payload keys. The destination BQ column has privileged access controls, - * so unredacted values are acceptable — unlike general-access backends. - * - * sink.ts strips `_PROTO_*` keys before Datadog fanout; only the 1P - * exporter (firstPartyEventLoggingExporter) sees them and hoists them to the - * top-level proto field. A single stripProtoFields call guards all non-1P - * sinks — no per-sink filtering to forget. - * - * Usage: `rawName as AnalyticsMetadata_I_VERIFIED_THIS_IS_PII_TAGGED` - */ -export type AnalyticsMetadata_I_VERIFIED_THIS_IS_PII_TAGGED = never - -/** - * Strip `_PROTO_*` keys from a payload destined for general-access storage. - * Used by: - * - sink.ts: before Datadog fanout (never sees PII-tagged values) - * - firstPartyEventLoggingExporter: defensive strip of additional_metadata - * after hoisting known _PROTO_* keys to proto fields — prevents a future - * unrecognized _PROTO_foo from silently landing in the BQ JSON blob. - * - * Returns the input unchanged (same reference) when no _PROTO_ keys present. - */ -export function stripProtoFields( - metadata: Record, -): Record { - let result: Record | undefined - for (const key in metadata) { - if (key.startsWith('_PROTO_')) { - if (result === undefined) { - result = { ...metadata } - } - delete result[key] - } - } - return result ?? metadata -} - -// Internal type for logEvent metadata - different from the enriched EventMetadata in metadata.ts -type LogEventMetadata = { [key: string]: boolean | number | undefined } - -type QueuedEvent = { - eventName: string - metadata: LogEventMetadata - async: boolean -} - -/** - * Sink interface for the analytics backend - */ -export type AnalyticsSink = { - logEvent: (eventName: string, metadata: LogEventMetadata) => void - logEventAsync: ( - eventName: string, - metadata: LogEventMetadata, - ) => Promise -} - -// Event queue for events logged before sink is attached -const eventQueue: QueuedEvent[] = [] - -// Sink - initialized during app startup -let sink: AnalyticsSink | null = null - -/** - * Attach the analytics sink that will receive all events. - * Queued events are drained asynchronously via queueMicrotask to avoid - * adding latency to the startup path. - * - * Idempotent: if a sink is already attached, this is a no-op. This allows - * calling from both the preAction hook (for subcommands) and setup() (for - * the default command) without coordination. - */ -export function attachAnalyticsSink(newSink: AnalyticsSink): void { - if (sink !== null) { - return - } - sink = newSink - - // Drain the queue asynchronously to avoid blocking startup - if (eventQueue.length > 0) { - const queuedEvents = [...eventQueue] - eventQueue.length = 0 - - // Log queue size for ants to help debug analytics initialization timing - if (process.env.USER_TYPE === 'ant') { - sink.logEvent('analytics_sink_attached', { - queued_event_count: queuedEvents.length, - }) - } - - queueMicrotask(() => { - for (const event of queuedEvents) { - if (event.async) { - void sink!.logEventAsync(event.eventName, event.metadata) - } else { - sink!.logEvent(event.eventName, event.metadata) - } - } - }) - } -} - -/** - * Log an event to analytics backends (synchronous) - * - * Events may be sampled based on the 'tengu_event_sampling_config' dynamic config. - * When sampled, the sample_rate is added to the event metadata. - * - * If no sink is attached, events are queued and drained when the sink attaches. - */ -export function logEvent( - eventName: string, - // intentionally no strings unless AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, - // to avoid accidentally logging code/filepaths - metadata: LogEventMetadata, -): void { - if (sink === null) { - eventQueue.push({ eventName, metadata, async: false }) - return - } - sink.logEvent(eventName, metadata) -} - -/** - * Log an event to analytics backends (asynchronous) - * - * Events may be sampled based on the 'tengu_event_sampling_config' dynamic config. - * When sampled, the sample_rate is added to the event metadata. - * - * If no sink is attached, events are queued and drained when the sink attaches. - */ -export async function logEventAsync( - eventName: string, - // intentionally no strings, to avoid accidentally logging code/filepaths - metadata: LogEventMetadata, -): Promise { - if (sink === null) { - eventQueue.push({ eventName, metadata, async: true }) - return - } - await sink.logEventAsync(eventName, metadata) -} - -/** - * Reset analytics state for testing purposes only. - * @internal - */ -export function _resetForTesting(): void { - sink = null - eventQueue.length = 0 -} diff --git a/src/services/analytics/sink.ts b/src/services/analytics/sink.ts deleted file mode 100644 index a7b70212..00000000 --- a/src/services/analytics/sink.ts +++ /dev/null @@ -1,114 +0,0 @@ -/** - * Analytics sink implementation - * - * This module contains the actual analytics routing logic and should be - * initialized during app startup. It routes events to Datadog and 1P event - * logging. - * - * Usage: Call initializeAnalyticsSink() during app startup to attach the sink. - */ - -import { trackDatadogEvent } from './datadog.js' -import { logEventTo1P, shouldSampleEvent } from './firstPartyEventLogger.js' -import { checkStatsigFeatureGate_CACHED_MAY_BE_STALE } from './growthbook.js' -import { attachAnalyticsSink, stripProtoFields } from './index.js' -import { isSinkKilled } from './sinkKillswitch.js' - -// Local type matching the logEvent metadata signature -type LogEventMetadata = { [key: string]: boolean | number | undefined } - -const DATADOG_GATE_NAME = 'tengu_log_datadog_events' - -// Module-level gate state - starts undefined, initialized during startup -let isDatadogGateEnabled: boolean | undefined = undefined - -/** - * Check if Datadog tracking is enabled. - * Falls back to cached value from previous session if not yet initialized. - */ -function shouldTrackDatadog(): boolean { - if (isSinkKilled('datadog')) { - return false - } - if (isDatadogGateEnabled !== undefined) { - return isDatadogGateEnabled - } - - // Fallback to cached value from previous session - try { - return checkStatsigFeatureGate_CACHED_MAY_BE_STALE(DATADOG_GATE_NAME) - } catch { - return false - } -} - -/** - * Log an event (synchronous implementation) - */ -function logEventImpl(eventName: string, metadata: LogEventMetadata): void { - // Check if this event should be sampled - const sampleResult = shouldSampleEvent(eventName) - - // If sample result is 0, the event was not selected for logging - if (sampleResult === 0) { - return - } - - // If sample result is a positive number, add it to metadata - const metadataWithSampleRate = - sampleResult !== null - ? { ...metadata, sample_rate: sampleResult } - : metadata - - if (shouldTrackDatadog()) { - // Datadog is a general-access backend — strip _PROTO_* keys - // (unredacted PII-tagged values meant only for the 1P privileged column). - void trackDatadogEvent(eventName, stripProtoFields(metadataWithSampleRate)) - } - - // 1P receives the full payload including _PROTO_* — the exporter - // destructures and routes those keys to proto fields itself. - logEventTo1P(eventName, metadataWithSampleRate) -} - -/** - * Log an event (asynchronous implementation) - * - * With Segment removed the two remaining sinks are fire-and-forget, so this - * just wraps the sync impl — kept to preserve the sink interface contract. - */ -function logEventAsyncImpl( - eventName: string, - metadata: LogEventMetadata, -): Promise { - logEventImpl(eventName, metadata) - return Promise.resolve() -} - -/** - * Initialize analytics gates during startup. - * - * Updates gate values from server. Early events use cached values from previous - * session to avoid data loss during initialization. - * - * Called from main.tsx during setupBackend(). - */ -export function initializeAnalyticsGates(): void { - isDatadogGateEnabled = - checkStatsigFeatureGate_CACHED_MAY_BE_STALE(DATADOG_GATE_NAME) -} - -/** - * Initialize the analytics sink. - * - * Call this during app startup to attach the analytics backend. - * Any events logged before this is called will be queued and drained. - * - * Idempotent: safe to call multiple times (subsequent calls are no-ops). - */ -export function initializeAnalyticsSink(): void { - attachAnalyticsSink({ - logEvent: logEventImpl, - logEventAsync: logEventAsyncImpl, - }) -} diff --git a/src/services/analytics/sinkKillswitch.ts b/src/services/analytics/sinkKillswitch.ts deleted file mode 100644 index 88757580..00000000 --- a/src/services/analytics/sinkKillswitch.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { getDynamicConfig_CACHED_MAY_BE_STALE } from './growthbook.js' - -// Mangled name: per-sink analytics killswitch -const SINK_KILLSWITCH_CONFIG_NAME = 'tengu_frond_boric' - -export type SinkName = 'datadog' | 'firstParty' - -/** - * GrowthBook JSON config that disables individual analytics sinks. - * Shape: { datadog?: boolean, firstParty?: boolean } - * A value of true for a key stops all dispatch to that sink. - * Default {} (nothing killed). Fail-open: missing/malformed config = sink stays on. - * - * NOTE: Must NOT be called from inside is1PEventLoggingEnabled() - - * growthbook.ts:isGrowthBookEnabled() calls that, so a lookup here would recurse. - * Call at per-event dispatch sites instead. - */ -export function isSinkKilled(sink: SinkName): boolean { - const config = getDynamicConfig_CACHED_MAY_BE_STALE< - Partial> - >(SINK_KILLSWITCH_CONFIG_NAME, {}) - // getFeatureValue_CACHED_MAY_BE_STALE guards on `!== undefined`, so a - // cached JSON null leaks through instead of falling back to {}. - return config?.[sink] === true -} diff --git a/src/services/api/claude.ts b/src/services/api/claude.ts index 89a6e661..94513e20 100644 --- a/src/services/api/claude.ts +++ b/src/services/api/claude.ts @@ -70,7 +70,7 @@ import { import { resolveAppliedEffort } from '../../utils/effort.js' import { isEnvTruthy } from '../../utils/envUtils.js' import { errorMessage } from '../../utils/errors.js' -import { computeFingerprintFromMessages } from '../../utils/fingerprint.js' +import { computeFingerprintFromMessages } from '../../utils/fingerprint-stub.js' import { captureAPIRequest, logError } from '../../utils/log.js' import { createAssistantAPIErrorMessage, @@ -93,7 +93,7 @@ import { type SystemPrompt, } from '../../utils/systemPromptType.js' import { tokenCountFromLastAPIResponse } from '../../utils/tokens.js' -import { getDynamicConfig_BLOCKS_ON_INIT } from '../analytics/growthbook.js' +import { getDynamicConfig_BLOCKS_ON_INIT } from '../analytics-stub.js' import { currentLimits, extractQuotaStatusFromError, @@ -144,7 +144,7 @@ import { import type { QuerySource } from 'src/constants/querySource.js' import type { Notification } from 'src/context/notifications.js' import { addToTotalSessionCost } from 'src/cost-tracker.js' -import { getFeatureValue_CACHED_MAY_BE_STALE } from 'src/services/analytics/growthbook.js' +import { getFeatureValue_CACHED_MAY_BE_STALE } from '../analytics-stub.js' import type { AgentId } from 'src/types/ids.js' import { ADVISOR_TOOL_INSTRUCTIONS, @@ -213,12 +213,12 @@ import { isBetaTracingEnabled, type LLMRequestNewContext, startLLMRequestSpan, -} from '../../utils/telemetry/sessionTracing.js' +} from '../../utils/telemetry-stub.js' /* eslint-enable @typescript-eslint/no-require-imports */ import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent, -} from '../analytics/index.js' +} from '../analytics-stub.js' import { consumePendingCacheEdits, getPinnedCacheEdits, diff --git a/src/services/api/errors.ts b/src/services/api/errors.ts index 1a7edc52..ffd3f9f8 100644 --- a/src/services/api/errors.ts +++ b/src/services/api/errors.ts @@ -42,7 +42,7 @@ import { ImageSizeError } from '../../utils/imageValidation.js' import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent, -} from '../analytics/index.js' +} from '../analytics-stub.js' import { type ClaudeAILimits, getRateLimitErrorMessage, diff --git a/src/services/api/filesApi.ts b/src/services/api/filesApi.ts index cb9a03b9..99a302eb 100644 --- a/src/services/api/filesApi.ts +++ b/src/services/api/filesApi.ts @@ -20,7 +20,7 @@ import { sleep } from '../../utils/sleep.js' import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent, -} from '../analytics/index.js' +} from '../analytics-stub.js' // Files API is currently in beta. oauth-2025-04-20 enables Bearer OAuth // on public-api routes (auth.py: "oauth_auth" not in beta_versions → 404). diff --git a/src/services/api/grove.ts b/src/services/api/grove.ts index f8af7897..663beed8 100644 --- a/src/services/api/grove.ts +++ b/src/services/api/grove.ts @@ -3,7 +3,7 @@ import memoize from 'lodash-es/memoize.js' import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent, -} from 'src/services/analytics/index.js' +} from '../analytics-stub.js' import { getOauthAccountInfo, isConsumerSubscriber } from 'src/utils/auth.js' import { logForDebugging } from 'src/utils/debug.js' import { gracefulShutdown } from 'src/utils/gracefulShutdown.js' diff --git a/src/services/api/logging.ts b/src/services/api/logging.ts index a411c12c..9a1e05fd 100644 --- a/src/services/api/logging.ts +++ b/src/services/api/logging.ts @@ -22,19 +22,19 @@ import { logError } from 'src/utils/log.js' import { getAPIProviderForStatsig } from 'src/utils/model/providers.js' import type { PermissionMode } from 'src/utils/permissions/PermissionMode.js' import { jsonStringify } from 'src/utils/slowOperations.js' -import { logOTelEvent } from 'src/utils/telemetry/events.js' +import { logOTelEvent } from '../../utils/telemetry-stub.js' import { endLLMRequestSpan, isBetaTracingEnabled, type Span, -} from 'src/utils/telemetry/sessionTracing.js' +} from '../../utils/telemetry-stub.js' import type { NonNullableUsage } from '../../entrypoints/sdk/sdkUtilityTypes.js' import { consumeInvokingRequestId } from '../../utils/agentContext.js' import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent, -} from '../analytics/index.js' -import { sanitizeToolNameForAnalytics } from '../analytics/metadata.js' +} from '../analytics-stub.js' +import { sanitizeToolNameForAnalytics } from '../analytics-stub.js' import { EMPTY_USAGE } from './emptyUsage.js' import { classifyAPIError } from './errors.js' import { extractConnectionErrorDetails } from './errorUtils.js' diff --git a/src/services/api/promptCacheBreakDetection.ts b/src/services/api/promptCacheBreakDetection.ts index 1599d537..3858ea10 100644 --- a/src/services/api/promptCacheBreakDetection.ts +++ b/src/services/api/promptCacheBreakDetection.ts @@ -14,7 +14,7 @@ import type { QuerySource } from '../../constants/querySource.js' import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent, -} from '../analytics/index.js' +} from '../analytics-stub.js' function getCacheBreakDiffPath(): string { const chars = 'abcdefghijklmnopqrstuvwxyz0123456789' diff --git a/src/services/api/withRetry.ts b/src/services/api/withRetry.ts index 5ec9ad08..c2a8f292 100644 --- a/src/services/api/withRetry.ts +++ b/src/services/api/withRetry.ts @@ -35,11 +35,11 @@ import { isNonCustomOpusModel } from '../../utils/model/model.js' import { disableKeepAlive } from '../../utils/proxy.js' import { sleep } from '../../utils/sleep.js' import type { ThinkingConfig } from '../../utils/thinking.js' -import { getFeatureValue_CACHED_MAY_BE_STALE } from '../analytics/growthbook.js' +import { getFeatureValue_CACHED_MAY_BE_STALE } from '../analytics-stub.js' import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent, -} from '../analytics/index.js' +} from '../analytics-stub.js' import { checkMockRateLimitError, isMockRateLimitError, diff --git a/src/services/autoDream/autoDream.ts b/src/services/autoDream/autoDream.ts index d387d9f6..9a0d24a6 100644 --- a/src/services/autoDream/autoDream.ts +++ b/src/services/autoDream/autoDream.ts @@ -22,8 +22,8 @@ import { import type { Message } from '../../types/message.js' import { logForDebugging } from '../../utils/debug.js' import type { ToolUseContext } from '../../Tool.js' -import { logEvent } from '../analytics/index.js' -import { getFeatureValue_CACHED_MAY_BE_STALE } from '../analytics/growthbook.js' +import { logEvent } from '../analytics-stub.js' +import { getFeatureValue_CACHED_MAY_BE_STALE } from '../analytics-stub.js' import { isAutoMemoryEnabled, getAutoMemPath } from '../../memdir/paths.js' import { isAutoDreamEnabled } from './config.js' import { getProjectDir } from '../../utils/sessionStorage.js' diff --git a/src/services/autoDream/config.ts b/src/services/autoDream/config.ts index 3ed70ef3..16c55116 100644 --- a/src/services/autoDream/config.ts +++ b/src/services/autoDream/config.ts @@ -3,7 +3,7 @@ // agent / task registry / message builder chain that autoDream.ts pulls in. import { getInitialSettings } from '../../utils/settings/settings.js' -import { getFeatureValue_CACHED_MAY_BE_STALE } from '../analytics/growthbook.js' +import { getFeatureValue_CACHED_MAY_BE_STALE } from '../analytics-stub.js' /** * Whether background memory consolidation should run. User setting diff --git a/src/services/claudeAiLimits.ts b/src/services/claudeAiLimits.ts index 979f4f72..8a768527 100644 --- a/src/services/claudeAiLimits.ts +++ b/src/services/claudeAiLimits.ts @@ -8,8 +8,8 @@ import { getGlobalConfig, saveGlobalConfig } from '../utils/config.js' import { logError } from '../utils/log.js' import { getSmallFastModel } from '../utils/model/model.js' import { isEssentialTrafficOnly } from '../utils/privacyLevel.js' -import type { AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS } from './analytics/index.js' -import { logEvent } from './analytics/index.js' +import type { AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS } from './analytics-stub.js' +import { logEvent } from './analytics-stub.js' import { getAPIMetadata } from './api/claude.js' import { getAnthropicClient } from './api/client.js' import { diff --git a/src/services/compact/autoCompact.ts b/src/services/compact/autoCompact.ts index 4025897c..46faaa96 100644 --- a/src/services/compact/autoCompact.ts +++ b/src/services/compact/autoCompact.ts @@ -12,7 +12,7 @@ import { hasExactErrorMessage } from '../../utils/errors.js' import type { CacheSafeParams } from '../../utils/forkedAgent.js' import { logError } from '../../utils/log.js' import { tokenCountWithEstimation } from '../../utils/tokens.js' -import { getFeatureValue_CACHED_MAY_BE_STALE } from '../analytics/growthbook.js' +import { getFeatureValue_CACHED_MAY_BE_STALE } from '../analytics-stub.js' import { getMaxOutputTokensForModel } from '../api/claude.js' import { notifyCompaction } from '../api/promptCacheBreakDetection.js' import { setLastSummarizedMessageId } from '../SessionMemory/sessionMemoryUtils.js' diff --git a/src/services/compact/compact.ts b/src/services/compact/compact.ts index f8f86eaf..095303d4 100644 --- a/src/services/compact/compact.ts +++ b/src/services/compact/compact.ts @@ -91,11 +91,11 @@ import { extractDiscoveredToolNames, isToolSearchEnabled, } from '../../utils/toolSearch.js' -import { getFeatureValue_CACHED_MAY_BE_STALE } from '../analytics/growthbook.js' +import { getFeatureValue_CACHED_MAY_BE_STALE } from '../analytics-stub.js' import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent, -} from '../analytics/index.js' +} from '../analytics-stub.js' import { getMaxOutputTokensForModel, queryModelWithStreaming, diff --git a/src/services/compact/microCompact.ts b/src/services/compact/microCompact.ts index 5e13587f..f1c3a57e 100644 --- a/src/services/compact/microCompact.ts +++ b/src/services/compact/microCompact.ts @@ -17,7 +17,7 @@ import { jsonStringify } from '../../utils/slowOperations.js' import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent, -} from '../analytics/index.js' +} from '../analytics-stub.js' import { notifyCacheDeletion } from '../api/promptCacheBreakDetection.js' import { roughTokenCountEstimation } from '../tokenEstimation.js' import { diff --git a/src/services/compact/postCompactCleanup.ts b/src/services/compact/postCompactCleanup.ts index 2b214728..e42611a5 100644 --- a/src/services/compact/postCompactCleanup.ts +++ b/src/services/compact/postCompactCleanup.ts @@ -6,7 +6,7 @@ import { clearSpeculativeChecks } from '../../tools/BashTool/bashPermissions.js' import { clearClassifierApprovals } from '../../utils/classifierApprovals.js' import { resetGetMemoryFilesCache } from '../../utils/claudemd.js' import { clearSessionMessagesCache } from '../../utils/sessionStorage.js' -import { clearBetaTracingState } from '../../utils/telemetry/betaSessionTracing.js' +import { clearBetaTracingState } from '../../utils/telemetry-stub.js' import { resetMicrocompactState } from './microCompact.js' /** diff --git a/src/services/compact/sessionMemoryCompact.ts b/src/services/compact/sessionMemoryCompact.ts index 9a5f8d25..1e7b4ad9 100644 --- a/src/services/compact/sessionMemoryCompact.ts +++ b/src/services/compact/sessionMemoryCompact.ts @@ -21,8 +21,8 @@ import { extractDiscoveredToolNames } from '../../utils/toolSearch.js' import { getDynamicConfig_BLOCKS_ON_INIT, getFeatureValue_CACHED_MAY_BE_STALE, -} from '../analytics/growthbook.js' -import { logEvent } from '../analytics/index.js' +} from '../analytics-stub.js' +import { logEvent } from '../analytics-stub.js' import { isSessionMemoryEmpty, truncateSessionMemoryForCompact, diff --git a/src/services/compact/timeBasedMCConfig.ts b/src/services/compact/timeBasedMCConfig.ts index 19ae9497..2573e72d 100644 --- a/src/services/compact/timeBasedMCConfig.ts +++ b/src/services/compact/timeBasedMCConfig.ts @@ -1,4 +1,4 @@ -import { getFeatureValue_CACHED_MAY_BE_STALE } from '../analytics/growthbook.js' +import { getFeatureValue_CACHED_MAY_BE_STALE } from '../analytics-stub.js' /** * GrowthBook config for time-based microcompact. diff --git a/src/services/extractMemories/extractMemories.ts b/src/services/extractMemories/extractMemories.ts index 708d47d7..45bbb7db 100644 --- a/src/services/extractMemories/extractMemories.ts +++ b/src/services/extractMemories/extractMemories.ts @@ -53,9 +53,9 @@ import { createMemorySavedMessage, createUserMessage, } from '../../utils/messages.js' -import { getFeatureValue_CACHED_MAY_BE_STALE } from '../analytics/growthbook.js' -import { logEvent } from '../analytics/index.js' -import { sanitizeToolNameForAnalytics } from '../analytics/metadata.js' +import { getFeatureValue_CACHED_MAY_BE_STALE } from '../analytics-stub.js' +import { logEvent } from '../analytics-stub.js' +import { sanitizeToolNameForAnalytics } from '../analytics-stub.js' import { buildExtractAutoOnlyPrompt, buildExtractCombinedPrompt, diff --git a/src/services/internalLogging.ts b/src/services/internalLogging.ts index c70cad73..895ce92a 100644 --- a/src/services/internalLogging.ts +++ b/src/services/internalLogging.ts @@ -5,7 +5,7 @@ import { jsonStringify } from '../utils/slowOperations.js' import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent, -} from './analytics/index.js' +} from '../services/analytics-stub.js' /** * Get the current Kubernetes namespace: diff --git a/src/services/mcp/auth.ts b/src/services/mcp/auth.ts index 61c94636..58d18078 100644 --- a/src/services/mcp/auth.ts +++ b/src/services/mcp/auth.ts @@ -43,8 +43,8 @@ import { clearKeychainCache } from '../../utils/secureStorage/macOsKeychainHelpe import type { SecureStorageData } from '../../utils/secureStorage/types.js' import { sleep } from '../../utils/sleep.js' import { jsonParse, jsonStringify } from '../../utils/slowOperations.js' -import { logEvent } from '../analytics/index.js' -import type { AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS } from '../analytics/metadata.js' +import { logEvent } from '../analytics-stub.js' +import type { AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS } from '../analytics-stub.js' import { buildRedirectUri, findAvailablePort } from './oauthPort.js' import type { McpHTTPServerConfig, McpSSEServerConfig } from './types.js' import { getLoggingSafeMcpBaseUrl } from './utils.js' diff --git a/src/services/mcp/channelAllowlist.ts b/src/services/mcp/channelAllowlist.ts index bf511e59..73c25197 100644 --- a/src/services/mcp/channelAllowlist.ts +++ b/src/services/mcp/channelAllowlist.ts @@ -18,7 +18,7 @@ import { z } from 'zod/v4' import { lazySchema } from '../../utils/lazySchema.js' import { parsePluginIdentifier } from '../../utils/plugins/pluginIdentifier.js' -import { getFeatureValue_CACHED_MAY_BE_STALE } from '../analytics/growthbook.js' +import { getFeatureValue_CACHED_MAY_BE_STALE } from '../analytics-stub.js' export type ChannelAllowlistEntry = { marketplace: string diff --git a/src/services/mcp/channelPermissions.ts b/src/services/mcp/channelPermissions.ts index 1a2a65f0..8cd465b2 100644 --- a/src/services/mcp/channelPermissions.ts +++ b/src/services/mcp/channelPermissions.ts @@ -24,7 +24,7 @@ */ import { jsonStringify } from '../../utils/slowOperations.js' -import { getFeatureValue_CACHED_MAY_BE_STALE } from '../analytics/growthbook.js' +import { getFeatureValue_CACHED_MAY_BE_STALE } from '../analytics-stub.js' /** * GrowthBook runtime gate — separate from the channels gate (tengu_harbor) diff --git a/src/services/mcp/claudeai.ts b/src/services/mcp/claudeai.ts index 132990a2..5be28fe4 100644 --- a/src/services/mcp/claudeai.ts +++ b/src/services/mcp/claudeai.ts @@ -4,7 +4,7 @@ import { getOauthConfig } from 'src/constants/oauth.js' import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent, -} from 'src/services/analytics/index.js' +} from '../analytics-stub.js' import { getClaudeAIOAuthTokens } from 'src/utils/auth.js' import { getGlobalConfig, saveGlobalConfig } from 'src/utils/config.js' import { logForDebugging } from 'src/utils/debug.js' diff --git a/src/services/mcp/client.ts b/src/services/mcp/client.ts index bcd06616..c24bd38f 100644 --- a/src/services/mcp/client.ts +++ b/src/services/mcp/client.ts @@ -103,7 +103,7 @@ import { import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent, -} from '../analytics/index.js' +} from '../analytics-stub.js' import { type ElicitationWaitingState, runElicitationHooks, diff --git a/src/services/mcp/config.ts b/src/services/mcp/config.ts index c5cee9cd..713cc095 100644 --- a/src/services/mcp/config.ts +++ b/src/services/mcp/config.ts @@ -39,7 +39,7 @@ import { jsonStringify } from '../../utils/slowOperations.js' import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent, -} from '../analytics/index.js' +} from '../analytics-stub.js' import { fetchClaudeAIMcpConfigsIfEligible } from './claudeai.js' import { expandEnvVarsInString } from './envExpansion.js' import { diff --git a/src/services/mcp/elicitationHandler.ts b/src/services/mcp/elicitationHandler.ts index 5f71f7b6..6ad04f25 100644 --- a/src/services/mcp/elicitationHandler.ts +++ b/src/services/mcp/elicitationHandler.ts @@ -16,7 +16,7 @@ import { jsonStringify } from '../../utils/slowOperations.js' import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent, -} from '../analytics/index.js' +} from '../analytics-stub.js' /** Configuration for the waiting state shown after the user opens a URL. */ export type ElicitationWaitingState = { diff --git a/src/services/mcp/headersHelper.ts b/src/services/mcp/headersHelper.ts index 3ae0e3d9..20b0d5f5 100644 --- a/src/services/mcp/headersHelper.ts +++ b/src/services/mcp/headersHelper.ts @@ -5,7 +5,7 @@ import { errorMessage } from '../../utils/errors.js' import { execFileNoThrowWithCwd } from '../../utils/execFileNoThrow.js' import { logError, logMCPDebug, logMCPError } from '../../utils/log.js' import { jsonParse } from '../../utils/slowOperations.js' -import { logEvent } from '../analytics/index.js' +import { logEvent } from '../analytics-stub.js' import type { McpHTTPServerConfig, McpSSEServerConfig, diff --git a/src/services/mcp/useManageMCPConnections.ts b/src/services/mcp/useManageMCPConnections.ts index 9b550992..38e5041b 100644 --- a/src/services/mcp/useManageMCPConnections.ts +++ b/src/services/mcp/useManageMCPConnections.ts @@ -40,7 +40,7 @@ import reject from 'lodash-es/reject.js' import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent, -} from 'src/services/analytics/index.js' +} from '../analytics-stub.js' import { dedupClaudeAiMcpServers, doesEnterpriseMcpConfigExist, diff --git a/src/services/mcp/vscodeSdkMcp.ts b/src/services/mcp/vscodeSdkMcp.ts index a15329cf..87a450a2 100644 --- a/src/services/mcp/vscodeSdkMcp.ts +++ b/src/services/mcp/vscodeSdkMcp.ts @@ -4,8 +4,8 @@ import { lazySchema } from '../../utils/lazySchema.js' import { checkStatsigFeatureGate_CACHED_MAY_BE_STALE, getFeatureValue_CACHED_MAY_BE_STALE, -} from '../analytics/growthbook.js' -import { logEvent } from '../analytics/index.js' +} from '../analytics-stub.js' +import { logEvent } from '../analytics-stub.js' import type { ConnectedMCPServer, MCPServerConnection } from './types.js' // Mirror of AutoModeEnabledState in permissionSetup.ts — inlined because that diff --git a/src/services/notifier.ts b/src/services/notifier.ts index 330e16a0..abb5e128 100644 --- a/src/services/notifier.ts +++ b/src/services/notifier.ts @@ -7,7 +7,7 @@ import { logError } from '../utils/log.js' import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent, -} from './analytics/index.js' +} from './analytics-stub.js' export type NotificationOptions = { message: string diff --git a/src/services/oauth/auth-code-listener.ts b/src/services/oauth/auth-code-listener.ts index a46c33ec..a566a0a9 100644 --- a/src/services/oauth/auth-code-listener.ts +++ b/src/services/oauth/auth-code-listener.ts @@ -1,7 +1,7 @@ import type { IncomingMessage, ServerResponse } from 'http' import { createServer, type Server } from 'http' import type { AddressInfo } from 'net' -import { logEvent } from 'src/services/analytics/index.js' +import { logEvent } from '../analytics-stub.js' import { getOauthConfig } from '../../constants/oauth.js' import { logError } from '../../utils/log.js' import { shouldUseClaudeAIAuth } from './client.js' diff --git a/src/services/oauth/client.ts b/src/services/oauth/client.ts index 76bfdce1..3ae80f54 100644 --- a/src/services/oauth/client.ts +++ b/src/services/oauth/client.ts @@ -3,7 +3,7 @@ import axios from 'axios' import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent, -} from 'src/services/analytics/index.js' +} from '../analytics-stub.js' import { ALL_OAUTH_SCOPES, CLAUDE_AI_INFERENCE_SCOPE, diff --git a/src/services/oauth/index.ts b/src/services/oauth/index.ts index fdd8e5f7..b64fc1a5 100644 --- a/src/services/oauth/index.ts +++ b/src/services/oauth/index.ts @@ -1,4 +1,4 @@ -import { logEvent } from 'src/services/analytics/index.js' +import { logEvent } from '../analytics-stub.js' import { openBrowser } from '../../utils/browser.js' import { AuthCodeListener } from './auth-code-listener.js' import * as client from './client.js' diff --git a/src/services/plugins/PluginInstallationManager.ts b/src/services/plugins/PluginInstallationManager.ts index 67b0c1e1..0dbf7eff 100644 --- a/src/services/plugins/PluginInstallationManager.ts +++ b/src/services/plugins/PluginInstallationManager.ts @@ -20,7 +20,7 @@ import { reconcileMarketplaces, } from '../../utils/plugins/reconciler.js' import { refreshActivePlugins } from '../../utils/plugins/refresh.js' -import { logEvent } from '../analytics/index.js' +import { logEvent } from '../analytics-stub.js' type SetAppState = (f: (prevState: AppState) => AppState) => void diff --git a/src/services/plugins/pluginCliCommands.ts b/src/services/plugins/pluginCliCommands.ts index 514a4143..8558d5bf 100644 --- a/src/services/plugins/pluginCliCommands.ts +++ b/src/services/plugins/pluginCliCommands.ts @@ -17,12 +17,12 @@ import { writeToStdout } from '../../utils/process.js' import { buildPluginTelemetryFields, classifyPluginCommandError, -} from '../../utils/telemetry/pluginTelemetry.js' +} from '../../utils/telemetry-stub.js' import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, type AnalyticsMetadata_I_VERIFIED_THIS_IS_PII_TAGGED, logEvent, -} from '../analytics/index.js' +} from '../analytics-stub.js' import { disableAllPluginsOp, disablePluginOp, diff --git a/src/services/remoteManagedSettings/securityCheck.tsx b/src/services/remoteManagedSettings/securityCheck.tsx index 0ec8aeb0..8403b64b 100644 --- a/src/services/remoteManagedSettings/securityCheck.tsx +++ b/src/services/remoteManagedSettings/securityCheck.tsx @@ -8,7 +8,7 @@ import { AppStateProvider } from '../../state/AppState.js'; import { gracefulShutdownSync } from '../../utils/gracefulShutdown.js'; import { getBaseRenderOptions } from '../../utils/renderOptions.js'; import type { SettingsJson } from '../../utils/settings/types.js'; -import { logEvent } from '../analytics/index.js'; +import { logEvent } from '../analytics-stub.js'; export type SecurityCheckResult = 'approved' | 'rejected' | 'no_check_needed'; /** diff --git a/src/services/settingsSync/index.ts b/src/services/settingsSync/index.ts index 2d392b75..fcf99789 100644 --- a/src/services/settingsSync/index.ts +++ b/src/services/settingsSync/index.ts @@ -38,8 +38,8 @@ import { getSettingsFilePathForSource } from '../../utils/settings/settings.js' import { resetSettingsCache } from '../../utils/settings/settingsCache.js' import { sleep } from '../../utils/sleep.js' import { getClaudeCodeUserAgent } from '../../utils/userAgent.js' -import { getFeatureValue_CACHED_MAY_BE_STALE } from '../analytics/growthbook.js' -import { logEvent } from '../analytics/index.js' +import { getFeatureValue_CACHED_MAY_BE_STALE } from '../analytics-stub.js' +import { logEvent } from '../analytics-stub.js' import { getRetryDelay } from '../api/withRetry.js' import { type SettingsSyncFetchResult, diff --git a/src/services/teamMemorySync/index.ts b/src/services/teamMemorySync/index.ts index ef66940d..61fbee56 100644 --- a/src/services/teamMemorySync/index.ts +++ b/src/services/teamMemorySync/index.ts @@ -54,8 +54,8 @@ import { import { sleep } from '../../utils/sleep.js' import { jsonStringify } from '../../utils/slowOperations.js' import { getClaudeCodeUserAgent } from '../../utils/userAgent.js' -import { logEvent } from '../analytics/index.js' -import type { AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS } from '../analytics/metadata.js' +import { logEvent } from '../analytics-stub.js' +import type { AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS } from '../analytics-stub.js' import { getRetryDelay } from '../api/withRetry.js' import { scanForSecrets } from './secretScanner.js' import { diff --git a/src/services/teamMemorySync/watcher.ts b/src/services/teamMemorySync/watcher.ts index 0d9874e6..0645f376 100644 --- a/src/services/teamMemorySync/watcher.ts +++ b/src/services/teamMemorySync/watcher.ts @@ -22,7 +22,7 @@ import { getGithubRepo } from '../../utils/git.js' import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent, -} from '../analytics/index.js' +} from '../analytics-stub.js' import { createSyncState, isTeamMemorySyncAvailable, diff --git a/src/services/tips/tipRegistry.ts b/src/services/tips/tipRegistry.ts index 623d2125..7177389b 100644 --- a/src/services/tips/tipRegistry.ts +++ b/src/services/tips/tipRegistry.ts @@ -43,7 +43,7 @@ import { getCurrentSessionAgentColor, isCustomTitleEnabled, } from '../../utils/sessionStorage.js' -import { getFeatureValue_CACHED_MAY_BE_STALE } from '../analytics/growthbook.js' +import { getFeatureValue_CACHED_MAY_BE_STALE } from '../analytics-stub.js' import { formatGrantAmount, getCachedOverageCreditGrant, diff --git a/src/services/tips/tipScheduler.ts b/src/services/tips/tipScheduler.ts index 2924f601..21009100 100644 --- a/src/services/tips/tipScheduler.ts +++ b/src/services/tips/tipScheduler.ts @@ -2,7 +2,7 @@ import { getSettings_DEPRECATED } from '../../utils/settings/settings.js' import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent, -} from '../analytics/index.js' +} from '../analytics-stub.js' import { getSessionsSinceLastShown, recordTipShown } from './tipHistory.js' import { getRelevantTips } from './tipRegistry.js' import type { Tip, TipContext } from './types.js' diff --git a/src/services/tools/toolExecution.ts b/src/services/tools/toolExecution.ts index 40ef38ec..24d53ecb 100644 --- a/src/services/tools/toolExecution.ts +++ b/src/services/tools/toolExecution.ts @@ -7,7 +7,7 @@ import type { import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent, -} from 'src/services/analytics/index.js' +} from '../analytics-stub.js' import { extractMcpToolDetails, extractSkillName, @@ -17,7 +17,7 @@ import { isToolDetailsLoggingEnabled, mcpToolDetailsForAnalytics, sanitizeToolNameForAnalytics, -} from 'src/services/analytics/metadata.js' +} from '../analytics-stub.js' import { addToToolDuration, getCodeEditToolDecisionCounter, @@ -87,7 +87,7 @@ import { } from '../../utils/sessionActivity.js' import { jsonStringify } from '../../utils/slowOperations.js' import { Stream } from '../../utils/stream.js' -import { logOTelEvent } from '../../utils/telemetry/events.js' +import { logOTelEvent } from '../../utils/telemetry-stub.js' import { addToolContentEvent, endToolBlockedOnUserSpan, @@ -97,7 +97,7 @@ import { startToolBlockedOnUserSpan, startToolExecutionSpan, startToolSpan, -} from '../../utils/telemetry/sessionTracing.js' +} from '../../utils/telemetry-stub.js' import { formatError, formatZodValidationError, diff --git a/src/services/tools/toolHooks.ts b/src/services/tools/toolHooks.ts index cb2ef8fa..c964316a 100644 --- a/src/services/tools/toolHooks.ts +++ b/src/services/tools/toolHooks.ts @@ -1,8 +1,8 @@ import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent, -} from 'src/services/analytics/index.js' -import { sanitizeToolNameForAnalytics } from 'src/services/analytics/metadata.js' +} from '../analytics-stub.js' +import { sanitizeToolNameForAnalytics } from '../analytics-stub.js' import type z from 'zod/v4' import type { CanUseToolFn } from '../../hooks/useCanUseTool.js' import type { AnyObject, Tool, ToolUseContext } from '../../Tool.js' diff --git a/src/services/voiceStreamSTT.ts b/src/services/voiceStreamSTT.ts index e1c86f78..daedb207 100644 --- a/src/services/voiceStreamSTT.ts +++ b/src/services/voiceStreamSTT.ts @@ -29,7 +29,7 @@ import { jsonParse, jsonStringify } from '../utils/slowOperations.js' const KEEPALIVE_MSG = '{"type":"KeepAlive"}' const CLOSE_STREAM_MSG = '{"type":"CloseStream"}' -import { getFeatureValue_CACHED_MAY_BE_STALE } from './analytics/growthbook.js' +import { getFeatureValue_CACHED_MAY_BE_STALE } from './analytics-stub.js' // ─── Constants ─────────────────────────────────────────────────────── diff --git a/src/setup.ts b/src/setup.ts index 985e8577..ea189608 100644 --- a/src/setup.ts +++ b/src/setup.ts @@ -5,7 +5,7 @@ import chalk from 'chalk' import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent, -} from 'src/services/analytics/index.js' +} from './services/analytics-stub.js' import { getCwd } from 'src/utils/cwd.js' import { checkForReleaseNotes } from 'src/utils/releaseNotes.js' import { setCwd } from 'src/utils/Shell.js' diff --git a/src/skills/bundled/scheduleRemoteAgents.ts b/src/skills/bundled/scheduleRemoteAgents.ts index 21b2ac69..99b91634 100644 --- a/src/skills/bundled/scheduleRemoteAgents.ts +++ b/src/skills/bundled/scheduleRemoteAgents.ts @@ -1,4 +1,4 @@ -import { getFeatureValue_CACHED_MAY_BE_STALE } from '../../services/analytics/growthbook.js' +import { getFeatureValue_CACHED_MAY_BE_STALE } from '../../services/analytics-stub.js' import type { MCPServerConnection } from '../../services/mcp/types.js' import { isPolicyAllowed } from '../../services/policyLimits/index.js' import type { ToolUseContext } from '../../Tool.js' diff --git a/src/skills/loadSkillsDir.ts b/src/skills/loadSkillsDir.ts index b1138eed..3296cb79 100644 --- a/src/skills/loadSkillsDir.ts +++ b/src/skills/loadSkillsDir.ts @@ -16,7 +16,7 @@ import { import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent, -} from '../services/analytics/index.js' +} from '../services/analytics-stub.js' import { roughTokenCountEstimation } from '../services/tokenEstimation.js' import type { Command, PromptCommand } from '../types/command.js' import { diff --git a/src/state/teammateViewHelpers.ts b/src/state/teammateViewHelpers.ts index 2c32f7b1..e157198a 100644 --- a/src/state/teammateViewHelpers.ts +++ b/src/state/teammateViewHelpers.ts @@ -1,4 +1,4 @@ -import { logEvent } from '../services/analytics/index.js' +import { logEvent } from '../services/analytics-stub.js' import { isTerminalTaskStatus } from '../Task.js' import type { LocalAgentTaskState } from '../tasks/LocalAgentTask/LocalAgentTask.js' diff --git a/src/tools/AgentTool/AgentTool.tsx b/src/tools/AgentTool/AgentTool.tsx index ee378b7b..8fad9669 100644 --- a/src/tools/AgentTool/AgentTool.tsx +++ b/src/tools/AgentTool/AgentTool.tsx @@ -8,8 +8,8 @@ import { clearInvokedSkillsForAgent, getSdkAgentProgressSummariesEnabled } from import { enhanceSystemPromptWithEnvDetails, getSystemPrompt } from '../../constants/prompts.js'; import { isCoordinatorMode } from '../../coordinator/coordinatorMode.js'; import { startAgentSummarization } from '../../services/AgentSummary/agentSummary.js'; -import { getFeatureValue_CACHED_MAY_BE_STALE } from '../../services/analytics/growthbook.js'; -import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent } from '../../services/analytics/index.js'; +import { getFeatureValue_CACHED_MAY_BE_STALE } from '../../services/analytics-stub.js'; +import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent } from '../../services/analytics-stub.js'; import { clearDumpState } from '../../services/api/dumpPrompts.js'; import { completeAgentTask as completeAsyncAgent, createActivityDescriptionResolver, createProgressTracker, enqueueAgentNotification, failAgentTask as failAsyncAgent, getProgressUpdate, getTokenCountFromTracker, isLocalAgentTask, killAsyncAgent, registerAgentForeground, registerAsyncAgent, unregisterAgentForeground, updateAgentProgress as updateAsyncAgentProgress, updateProgressFromMessage } from '../../tasks/LocalAgentTask/LocalAgentTask.js'; import { checkRemoteAgentEligibility, formatPreconditionError, getRemoteTaskSessionUrl, registerRemoteAgentTask } from '../../tasks/RemoteAgentTask/RemoteAgentTask.js'; diff --git a/src/tools/AgentTool/agentToolUtils.ts b/src/tools/AgentTool/agentToolUtils.ts index a566ac31..d0b233c1 100644 --- a/src/tools/AgentTool/agentToolUtils.ts +++ b/src/tools/AgentTool/agentToolUtils.ts @@ -11,7 +11,7 @@ import { startAgentSummarization } from '../../services/AgentSummary/agentSummar import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent, -} from '../../services/analytics/index.js' +} from '../../services/analytics-stub.js' import { clearDumpState } from '../../services/api/dumpPrompts.js' import type { AppState } from '../../state/AppState.js' import type { diff --git a/src/tools/AgentTool/builtInAgents.ts b/src/tools/AgentTool/builtInAgents.ts index 721dff96..a9df8c6b 100644 --- a/src/tools/AgentTool/builtInAgents.ts +++ b/src/tools/AgentTool/builtInAgents.ts @@ -1,6 +1,6 @@ import { feature } from 'bun:bundle' import { getIsNonInteractiveSession } from '../../bootstrap/state.js' -import { getFeatureValue_CACHED_MAY_BE_STALE } from '../../services/analytics/growthbook.js' +import { getFeatureValue_CACHED_MAY_BE_STALE } from '../../services/analytics-stub.js' import { isEnvTruthy } from '../../utils/envUtils.js' import { CLAUDE_CODE_GUIDE_AGENT } from './built-in/claudeCodeGuideAgent.js' import { EXPLORE_AGENT } from './built-in/exploreAgent.js' diff --git a/src/tools/AgentTool/loadAgentsDir.ts b/src/tools/AgentTool/loadAgentsDir.ts index cb4dc35e..98d6efc9 100644 --- a/src/tools/AgentTool/loadAgentsDir.ts +++ b/src/tools/AgentTool/loadAgentsDir.ts @@ -7,7 +7,7 @@ import { isAutoMemoryEnabled } from '../../memdir/paths.js' import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent, -} from '../../services/analytics/index.js' +} from '../../services/analytics-stub.js' import { type McpServerConfig, McpServerConfigSchema, diff --git a/src/tools/AgentTool/prompt.ts b/src/tools/AgentTool/prompt.ts index 2a051768..6d5569bb 100644 --- a/src/tools/AgentTool/prompt.ts +++ b/src/tools/AgentTool/prompt.ts @@ -1,4 +1,4 @@ -import { getFeatureValue_CACHED_MAY_BE_STALE } from '../../services/analytics/growthbook.js' +import { getFeatureValue_CACHED_MAY_BE_STALE } from '../../services/analytics-stub.js' import { getSubscriptionType } from '../../utils/auth.js' import { hasEmbeddedSearchTools } from '../../utils/embeddedTools.js' import { isEnvDefinedFalsy, isEnvTruthy } from '../../utils/envUtils.js' diff --git a/src/tools/AgentTool/runAgent.ts b/src/tools/AgentTool/runAgent.ts index e2cb942e..03c36af6 100644 --- a/src/tools/AgentTool/runAgent.ts +++ b/src/tools/AgentTool/runAgent.ts @@ -13,7 +13,7 @@ import type { QuerySource } from '../../constants/querySource.js' import { getSystemContext, getUserContext } from '../../context.js' import type { CanUseToolFn } from '../../hooks/useCanUseTool.js' import { query } from '../../query.js' -import { getFeatureValue_CACHED_MAY_BE_STALE } from '../../services/analytics/growthbook.js' +import { getFeatureValue_CACHED_MAY_BE_STALE } from '../../services/analytics-stub.js' import { getDumpPromptsPath } from '../../services/api/dumpPrompts.js' import { cleanupAgentTracking } from '../../services/api/promptCacheBreakDetection.js' import { @@ -76,7 +76,7 @@ import { isPerfettoTracingEnabled, registerAgent as registerPerfettoAgent, unregisterAgent as unregisterPerfettoAgent, -} from '../../utils/telemetry/perfettoTracing.js' +} from '../../utils/telemetry-stub.js' import type { ContentReplacementState } from '../../utils/toolResultStorage.js' import { createAgentId } from '../../utils/uuid.js' import { resolveAgentTools } from './agentToolUtils.js' diff --git a/src/tools/BashTool/BashTool.tsx b/src/tools/BashTool/BashTool.tsx index 3fcc8876..e7a8f8cd 100644 --- a/src/tools/BashTool/BashTool.tsx +++ b/src/tools/BashTool/BashTool.tsx @@ -7,7 +7,7 @@ import type { AppState } from 'src/state/AppState.js'; import { z } from 'zod/v4'; import { getKairosActive } from '../../bootstrap/state.js'; import { TOOL_SUMMARY_MAX_LENGTH } from '../../constants/toolLimits.js'; -import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent } from '../../services/analytics/index.js'; +import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent } from '../../services/analytics-stub.js'; import { notifyVscodeFileUpdated } from '../../services/mcp/vscodeSdkMcp.js'; import type { SetToolJSXFn, ToolCallProgress, ToolUseContext, ValidationResult } from '../../Tool.js'; import { buildTool, type ToolDef } from '../../Tool.js'; diff --git a/src/tools/BashTool/bashPermissions.ts b/src/tools/BashTool/bashPermissions.ts index 83b3c633..b151512b 100644 --- a/src/tools/BashTool/bashPermissions.ts +++ b/src/tools/BashTool/bashPermissions.ts @@ -1,11 +1,11 @@ import { feature } from 'bun:bundle' import { APIUserAbortError } from '@anthropic-ai/sdk' import type { z } from 'zod/v4' -import { getFeatureValue_CACHED_MAY_BE_STALE } from '../../services/analytics/growthbook.js' +import { getFeatureValue_CACHED_MAY_BE_STALE } from '../../services/analytics-stub.js' import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent, -} from '../../services/analytics/index.js' +} from '../../services/analytics-stub.js' import type { ToolPermissionContext, ToolUseContext } from '../../Tool.js' import type { PendingClassifierCheck } from '../../types/permissions.js' import { count } from '../../utils/array.js' diff --git a/src/tools/BashTool/bashSecurity.ts b/src/tools/BashTool/bashSecurity.ts index a7213111..ff8e76fe 100644 --- a/src/tools/BashTool/bashSecurity.ts +++ b/src/tools/BashTool/bashSecurity.ts @@ -1,4 +1,4 @@ -import { logEvent } from 'src/services/analytics/index.js' +import { logEvent } from '../../services/analytics-stub.js' import { extractHeredocs } from '../../utils/bash/heredoc.js' import { ParsedCommand } from '../../utils/bash/ParsedCommand.js' import { diff --git a/src/tools/BashTool/shouldUseSandbox.ts b/src/tools/BashTool/shouldUseSandbox.ts index 92032afd..e621819c 100644 --- a/src/tools/BashTool/shouldUseSandbox.ts +++ b/src/tools/BashTool/shouldUseSandbox.ts @@ -1,4 +1,4 @@ -import { getFeatureValue_CACHED_MAY_BE_STALE } from 'src/services/analytics/growthbook.js' +import { getFeatureValue_CACHED_MAY_BE_STALE } from '../../services/analytics-stub.js' import { splitCommand_DEPRECATED } from '../../utils/bash/commands.js' import { SandboxManager } from '../../utils/sandbox/sandbox-adapter.js' import { getSettings_DEPRECATED } from '../../utils/settings/settings.js' diff --git a/src/tools/BashTool/utils.ts b/src/tools/BashTool/utils.ts index 9edee875..96920956 100644 --- a/src/tools/BashTool/utils.ts +++ b/src/tools/BashTool/utils.ts @@ -5,7 +5,7 @@ import type { } from '@anthropic-ai/sdk/resources/index.mjs' import { readFile, stat } from 'fs/promises' import { getOriginalCwd } from 'src/bootstrap/state.js' -import { logEvent } from 'src/services/analytics/index.js' +import { logEvent } from '../../services/analytics-stub.js' import type { ToolPermissionContext } from 'src/Tool.js' import { getCwd } from 'src/utils/cwd.js' import { pathInAllowedWorkingPath } from 'src/utils/permissions/filesystem.js' diff --git a/src/tools/BriefTool/BriefTool.ts b/src/tools/BriefTool/BriefTool.ts index 31f28296..7b938497 100644 --- a/src/tools/BriefTool/BriefTool.ts +++ b/src/tools/BriefTool/BriefTool.ts @@ -1,8 +1,8 @@ import { feature } from 'bun:bundle' import { z } from 'zod/v4' import { getKairosActive, getUserMsgOptIn } from '../../bootstrap/state.js' -import { getFeatureValue_CACHED_WITH_REFRESH } from '../../services/analytics/growthbook.js' -import { logEvent } from '../../services/analytics/index.js' +import { getFeatureValue_CACHED_WITH_REFRESH } from '../../services/analytics-stub.js' +import { logEvent } from '../../services/analytics-stub.js' import type { ValidationResult } from '../../Tool.js' import { buildTool, type ToolDef } from '../../Tool.js' import { isEnvTruthy } from '../../utils/envUtils.js' diff --git a/src/tools/ConfigTool/ConfigTool.ts b/src/tools/ConfigTool/ConfigTool.ts index ad8f0f99..11c5dc2f 100644 --- a/src/tools/ConfigTool/ConfigTool.ts +++ b/src/tools/ConfigTool/ConfigTool.ts @@ -3,7 +3,7 @@ import { z } from 'zod/v4' import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent, -} from '../../services/analytics/index.js' +} from '../../services/analytics-stub.js' import { buildTool, type ToolDef } from '../../Tool.js' import { type GlobalConfig, diff --git a/src/tools/EnterWorktreeTool/EnterWorktreeTool.ts b/src/tools/EnterWorktreeTool/EnterWorktreeTool.ts index eb2e6dbf..30ac9a50 100644 --- a/src/tools/EnterWorktreeTool/EnterWorktreeTool.ts +++ b/src/tools/EnterWorktreeTool/EnterWorktreeTool.ts @@ -1,7 +1,7 @@ import { z } from 'zod/v4' import { getSessionId, setOriginalCwd } from '../../bootstrap/state.js' import { clearSystemPromptSections } from '../../constants/systemPromptSections.js' -import { logEvent } from '../../services/analytics/index.js' +import { logEvent } from '../../services/analytics-stub.js' import type { Tool } from '../../Tool.js' import { buildTool, type ToolDef } from '../../Tool.js' import { clearMemoryFileCaches } from '../../utils/claudemd.js' diff --git a/src/tools/ExitPlanModeTool/ExitPlanModeV2Tool.ts b/src/tools/ExitPlanModeTool/ExitPlanModeV2Tool.ts index 5aa83c12..9cc36aad 100644 --- a/src/tools/ExitPlanModeTool/ExitPlanModeV2Tool.ts +++ b/src/tools/ExitPlanModeTool/ExitPlanModeV2Tool.ts @@ -8,8 +8,8 @@ import { setNeedsAutoModeExitAttachment, setNeedsPlanModeExitAttachment, } from '../../bootstrap/state.js' -import { logEvent } from '../../services/analytics/index.js' -import type { AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS } from '../../services/analytics/metadata.js' +import { logEvent } from '../../services/analytics-stub.js' +import type { AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS } from '../../services/analytics-stub.js' import { buildTool, type Tool, diff --git a/src/tools/ExitWorktreeTool/ExitWorktreeTool.ts b/src/tools/ExitWorktreeTool/ExitWorktreeTool.ts index 2d735c07..672e94eb 100644 --- a/src/tools/ExitWorktreeTool/ExitWorktreeTool.ts +++ b/src/tools/ExitWorktreeTool/ExitWorktreeTool.ts @@ -6,7 +6,7 @@ import { setProjectRoot, } from '../../bootstrap/state.js' import { clearSystemPromptSections } from '../../constants/systemPromptSections.js' -import { logEvent } from '../../services/analytics/index.js' +import { logEvent } from '../../services/analytics-stub.js' import type { Tool } from '../../Tool.js' import { buildTool, type ToolDef } from '../../Tool.js' import { count } from '../../utils/array.js' diff --git a/src/tools/FileEditTool/FileEditTool.ts b/src/tools/FileEditTool/FileEditTool.ts index 85399420..b0c4e194 100644 --- a/src/tools/FileEditTool/FileEditTool.ts +++ b/src/tools/FileEditTool/FileEditTool.ts @@ -1,6 +1,6 @@ import { dirname, isAbsolute, sep } from 'path' -import { logEvent } from 'src/services/analytics/index.js' -import { getFeatureValue_CACHED_MAY_BE_STALE } from '../../services/analytics/growthbook.js' +import { logEvent } from '../../services/analytics-stub.js' +import { getFeatureValue_CACHED_MAY_BE_STALE } from '../../services/analytics-stub.js' import { diagnosticTracker } from '../../services/diagnosticTracking.js' import { clearDeliveredDiagnosticsForFile } from '../../services/lsp/LSPDiagnosticRegistry.js' import { getLspServerManager } from '../../services/lsp/manager.js' diff --git a/src/tools/FileReadTool/FileReadTool.ts b/src/tools/FileReadTool/FileReadTool.ts index 1ceed46d..ccb877b3 100644 --- a/src/tools/FileReadTool/FileReadTool.ts +++ b/src/tools/FileReadTool/FileReadTool.ts @@ -10,12 +10,12 @@ import { } from '../../constants/apiLimits.js' import { hasBinaryExtension } from '../../constants/files.js' import { memoryFreshnessNote } from '../../memdir/memoryAge.js' -import { getFeatureValue_CACHED_MAY_BE_STALE } from '../../services/analytics/growthbook.js' -import { logEvent } from '../../services/analytics/index.js' +import { getFeatureValue_CACHED_MAY_BE_STALE } from '../../services/analytics-stub.js' +import { logEvent } from '../../services/analytics-stub.js' import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, getFileExtensionForAnalytics, -} from '../../services/analytics/metadata.js' +} from '../../services/analytics-stub.js' import { countTokensWithAPI, roughTokenCountEstimationForFileType, diff --git a/src/tools/FileReadTool/limits.ts b/src/tools/FileReadTool/limits.ts index 3e0247f6..b04af643 100644 --- a/src/tools/FileReadTool/limits.ts +++ b/src/tools/FileReadTool/limits.ts @@ -13,7 +13,7 @@ * tool-result while truncation yields ~25K tokens of content at the cap. */ import memoize from 'lodash-es/memoize.js' -import { getFeatureValue_CACHED_MAY_BE_STALE } from 'src/services/analytics/growthbook.js' +import { getFeatureValue_CACHED_MAY_BE_STALE } from '../../services/analytics-stub.js' import { MAX_OUTPUT_SIZE } from 'src/utils/file.js' export const DEFAULT_MAX_OUTPUT_TOKENS = 25000 diff --git a/src/tools/FileWriteTool/FileWriteTool.ts b/src/tools/FileWriteTool/FileWriteTool.ts index 6da0afc8..a087b23d 100644 --- a/src/tools/FileWriteTool/FileWriteTool.ts +++ b/src/tools/FileWriteTool/FileWriteTool.ts @@ -1,7 +1,7 @@ import { dirname, sep } from 'path' -import { logEvent } from 'src/services/analytics/index.js' +import { logEvent } from '../../services/analytics-stub.js' import { z } from 'zod/v4' -import { getFeatureValue_CACHED_MAY_BE_STALE } from '../../services/analytics/growthbook.js' +import { getFeatureValue_CACHED_MAY_BE_STALE } from '../../services/analytics-stub.js' import { diagnosticTracker } from '../../services/diagnosticTracking.js' import { clearDeliveredDiagnosticsForFile } from '../../services/lsp/LSPDiagnosticRegistry.js' import { getLspServerManager } from '../../services/lsp/manager.js' diff --git a/src/tools/PowerShellTool/PowerShellTool.tsx b/src/tools/PowerShellTool/PowerShellTool.tsx index db35d2aa..1681e689 100644 --- a/src/tools/PowerShellTool/PowerShellTool.tsx +++ b/src/tools/PowerShellTool/PowerShellTool.tsx @@ -7,7 +7,7 @@ import type { AppState } from 'src/state/AppState.js'; import { z } from 'zod/v4'; import { getKairosActive } from '../../bootstrap/state.js'; import { TOOL_SUMMARY_MAX_LENGTH } from '../../constants/toolLimits.js'; -import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent } from '../../services/analytics/index.js'; +import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent } from '../../services/analytics-stub.js'; import type { SetToolJSXFn, Tool, ToolCallProgress, ValidationResult } from '../../Tool.js'; import { buildTool, type ToolDef } from '../../Tool.js'; import { backgroundExistingForegroundTask, markTaskNotified, registerForeground, spawnShellTask, unregisterForeground } from '../../tasks/LocalShellTask/LocalShellTask.js'; diff --git a/src/tools/RemoteTriggerTool/RemoteTriggerTool.ts b/src/tools/RemoteTriggerTool/RemoteTriggerTool.ts index 8e623a15..9a6eb831 100644 --- a/src/tools/RemoteTriggerTool/RemoteTriggerTool.ts +++ b/src/tools/RemoteTriggerTool/RemoteTriggerTool.ts @@ -1,7 +1,7 @@ import axios from 'axios' import { z } from 'zod/v4' import { getOauthConfig } from '../../constants/oauth.js' -import { getFeatureValue_CACHED_MAY_BE_STALE } from '../../services/analytics/growthbook.js' +import { getFeatureValue_CACHED_MAY_BE_STALE } from '../../services/analytics-stub.js' import { getOrganizationUUID } from '../../services/oauth/client.js' import { isPolicyAllowed } from '../../services/policyLimits/index.js' import type { ToolUseContext } from '../../Tool.js' diff --git a/src/tools/ScheduleCronTool/prompt.ts b/src/tools/ScheduleCronTool/prompt.ts index 33ff2a20..b1522637 100644 --- a/src/tools/ScheduleCronTool/prompt.ts +++ b/src/tools/ScheduleCronTool/prompt.ts @@ -1,5 +1,5 @@ import { feature } from 'bun:bundle' -import { getFeatureValue_CACHED_WITH_REFRESH } from '../../services/analytics/growthbook.js' +import { getFeatureValue_CACHED_WITH_REFRESH } from '../../services/analytics-stub.js' import { DEFAULT_CRON_JITTER_CONFIG } from '../../utils/cronTasks.js' import { isEnvTruthy } from '../../utils/envUtils.js' diff --git a/src/tools/SkillTool/SkillTool.ts b/src/tools/SkillTool/SkillTool.ts index 85b68fad..bd7a6aca 100644 --- a/src/tools/SkillTool/SkillTool.ts +++ b/src/tools/SkillTool/SkillTool.ts @@ -32,7 +32,7 @@ import { isOfficialMarketplaceName, parsePluginIdentifier, } from 'src/utils/plugins/pluginIdentifier.js' -import { buildPluginCommandTelemetryFields } from 'src/utils/telemetry/pluginTelemetry.js' +import { buildPluginCommandTelemetryFields } from '../../utils/telemetry-stub.js' import { z } from 'zod/v4' import { addInvokedSkill, @@ -45,7 +45,7 @@ import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, type AnalyticsMetadata_I_VERIFIED_THIS_IS_PII_TAGGED, logEvent, -} from '../../services/analytics/index.js' +} from '../../services/analytics-stub.js' import { getAgentContext } from '../../utils/agentContext.js' import { errorMessage } from '../../utils/errors.js' import { @@ -109,7 +109,7 @@ const remoteSkillModules = feature('EXPERIMENTAL_SKILL_SEARCH') ? { ...(require('../../services/skillSearch/remoteSkillState.js') as typeof import('../../services/skillSearch/remoteSkillState.js')), ...(require('../../services/skillSearch/remoteSkillLoader.js') as typeof import('../../services/skillSearch/remoteSkillLoader.js')), - ...(require('../../services/skillSearch/telemetry.js') as typeof import('../../services/skillSearch/telemetry.js')), + ...(require('../../services/analytics-stub.js') as typeof import('../../services/skillSearch/telemetry.js')), ...(require('../../services/skillSearch/featureCheck.js') as typeof import('../../services/skillSearch/featureCheck.js')), } : null diff --git a/src/tools/SkillTool/prompt.ts b/src/tools/SkillTool/prompt.ts index b05a58f3..39cff651 100644 --- a/src/tools/SkillTool/prompt.ts +++ b/src/tools/SkillTool/prompt.ts @@ -10,7 +10,7 @@ import { stringWidth } from '../../ink/stringWidth.js' import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent, -} from '../../services/analytics/index.js' +} from '../../services/analytics-stub.js' import { count } from '../../utils/array.js' import { logForDebugging } from '../../utils/debug.js' import { toError } from '../../utils/errors.js' diff --git a/src/tools/TaskUpdateTool/TaskUpdateTool.ts b/src/tools/TaskUpdateTool/TaskUpdateTool.ts index 427831bf..4c249698 100644 --- a/src/tools/TaskUpdateTool/TaskUpdateTool.ts +++ b/src/tools/TaskUpdateTool/TaskUpdateTool.ts @@ -1,6 +1,6 @@ import { feature } from 'bun:bundle' import { z } from 'zod/v4' -import { getFeatureValue_CACHED_MAY_BE_STALE } from '../../services/analytics/growthbook.js' +import { getFeatureValue_CACHED_MAY_BE_STALE } from '../../services/analytics-stub.js' import { buildTool, type ToolDef } from '../../Tool.js' import { isAgentSwarmsEnabled } from '../../utils/agentSwarmsEnabled.js' import { diff --git a/src/tools/TeamCreateTool/TeamCreateTool.ts b/src/tools/TeamCreateTool/TeamCreateTool.ts index 64a80186..919d7bce 100644 --- a/src/tools/TeamCreateTool/TeamCreateTool.ts +++ b/src/tools/TeamCreateTool/TeamCreateTool.ts @@ -1,7 +1,7 @@ import { z } from 'zod/v4' import { getSessionId } from '../../bootstrap/state.js' -import { logEvent } from '../../services/analytics/index.js' -import type { AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS } from '../../services/analytics/metadata.js' +import { logEvent } from '../../services/analytics-stub.js' +import type { AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS } from '../../services/analytics-stub.js' import type { Tool } from '../../Tool.js' import { buildTool, type ToolDef } from '../../Tool.js' import { formatAgentId } from '../../utils/agentId.js' diff --git a/src/tools/TeamDeleteTool/TeamDeleteTool.ts b/src/tools/TeamDeleteTool/TeamDeleteTool.ts index f09f78c3..5ef2bd95 100644 --- a/src/tools/TeamDeleteTool/TeamDeleteTool.ts +++ b/src/tools/TeamDeleteTool/TeamDeleteTool.ts @@ -1,6 +1,6 @@ import { z } from 'zod/v4' -import { logEvent } from '../../services/analytics/index.js' -import type { AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS } from '../../services/analytics/metadata.js' +import { logEvent } from '../../services/analytics-stub.js' +import type { AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS } from '../../services/analytics-stub.js' import type { Tool } from '../../Tool.js' import { buildTool, type ToolDef } from '../../Tool.js' import { isAgentSwarmsEnabled } from '../../utils/agentSwarmsEnabled.js' diff --git a/src/tools/TodoWriteTool/TodoWriteTool.ts b/src/tools/TodoWriteTool/TodoWriteTool.ts index f0eafbad..3b4573b3 100644 --- a/src/tools/TodoWriteTool/TodoWriteTool.ts +++ b/src/tools/TodoWriteTool/TodoWriteTool.ts @@ -1,7 +1,7 @@ import { feature } from 'bun:bundle' import { z } from 'zod/v4' import { getSessionId } from '../../bootstrap/state.js' -import { getFeatureValue_CACHED_MAY_BE_STALE } from '../../services/analytics/growthbook.js' +import { getFeatureValue_CACHED_MAY_BE_STALE } from '../../services/analytics-stub.js' import { buildTool, type ToolDef } from '../../Tool.js' import { lazySchema } from '../../utils/lazySchema.js' import { isTodoV2Enabled } from '../../utils/tasks.js' diff --git a/src/tools/ToolSearchTool/ToolSearchTool.ts b/src/tools/ToolSearchTool/ToolSearchTool.ts index ee43b668..5ef1a9f0 100644 --- a/src/tools/ToolSearchTool/ToolSearchTool.ts +++ b/src/tools/ToolSearchTool/ToolSearchTool.ts @@ -4,7 +4,7 @@ import { z } from 'zod/v4' import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent, -} from '../../services/analytics/index.js' +} from '../../services/analytics-stub.js' import { buildTool, findToolByName, diff --git a/src/tools/ToolSearchTool/prompt.ts b/src/tools/ToolSearchTool/prompt.ts index ca3e6b07..cd4da889 100644 --- a/src/tools/ToolSearchTool/prompt.ts +++ b/src/tools/ToolSearchTool/prompt.ts @@ -1,6 +1,6 @@ import { feature } from 'bun:bundle' import { isReplBridgeActive } from '../../bootstrap/state.js' -import { getFeatureValue_CACHED_MAY_BE_STALE } from '../../services/analytics/growthbook.js' +import { getFeatureValue_CACHED_MAY_BE_STALE } from '../../services/analytics-stub.js' import type { Tool } from '../../Tool.js' import { AGENT_TOOL_NAME } from '../AgentTool/constants.js' diff --git a/src/tools/WebFetchTool/utils.ts b/src/tools/WebFetchTool/utils.ts index 6d55f70b..7f2a067a 100644 --- a/src/tools/WebFetchTool/utils.ts +++ b/src/tools/WebFetchTool/utils.ts @@ -3,7 +3,7 @@ import { LRUCache } from 'lru-cache' import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent, -} from '../../services/analytics/index.js' +} from '../../services/analytics-stub.js' import { queryHaiku } from '../../services/api/claude.js' import { AbortError } from '../../utils/errors.js' import { getWebFetchUserAgent } from '../../utils/http.js' diff --git a/src/tools/WebSearchTool/WebSearchTool.ts b/src/tools/WebSearchTool/WebSearchTool.ts index bbe12eb7..e7995aa7 100644 --- a/src/tools/WebSearchTool/WebSearchTool.ts +++ b/src/tools/WebSearchTool/WebSearchTool.ts @@ -5,7 +5,7 @@ import type { import { getAPIProvider } from 'src/utils/model/providers.js' import type { PermissionResult } from 'src/utils/permissions/PermissionResult.js' import { z } from 'zod/v4' -import { getFeatureValue_CACHED_MAY_BE_STALE } from '../../services/analytics/growthbook.js' +import { getFeatureValue_CACHED_MAY_BE_STALE } from '../../services/analytics-stub.js' import { queryModelWithStreaming } from '../../services/api/claude.js' import { buildTool, type ToolDef } from '../../Tool.js' import { lazySchema } from '../../utils/lazySchema.js' diff --git a/src/tools/shared/gitOperationTracking.ts b/src/tools/shared/gitOperationTracking.ts index 970a53f8..0fe6108d 100644 --- a/src/tools/shared/gitOperationTracking.ts +++ b/src/tools/shared/gitOperationTracking.ts @@ -12,7 +12,7 @@ import { getCommitCounter, getPrCounter } from '../../bootstrap/state.js' import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent, -} from '../../services/analytics/index.js' +} from '../../services/analytics-stub.js' /** * Build a regex that matches `git ` while tolerating git's global diff --git a/src/utils/Shell.ts b/src/utils/Shell.ts index f2e5fcf4..4966f4f8 100644 --- a/src/utils/Shell.ts +++ b/src/utils/Shell.ts @@ -4,7 +4,7 @@ import { type FileHandle, mkdir, open, realpath } from 'fs/promises' import memoize from 'lodash-es/memoize.js' import { isAbsolute, resolve } from 'path' import { join as posixJoin } from 'path/posix' -import { logEvent } from 'src/services/analytics/index.js' +import { logEvent } from '../services/analytics-stub.js' import { getOriginalCwd, getSessionId, diff --git a/src/utils/advisor.ts b/src/utils/advisor.ts index 54a2dfb3..e916b028 100644 --- a/src/utils/advisor.ts +++ b/src/utils/advisor.ts @@ -1,5 +1,5 @@ import type { BetaUsage } from '@anthropic-ai/sdk/resources/beta/messages/messages.mjs' -import { getFeatureValue_CACHED_MAY_BE_STALE } from '../services/analytics/growthbook.js' +import { getFeatureValue_CACHED_MAY_BE_STALE } from '../services/analytics-stub.js' import { shouldIncludeFirstPartyOnlyBetas } from './betas.js' import { isEnvTruthy } from './envUtils.js' import { getInitialSettings } from './settings/settings.js' diff --git a/src/utils/agentContext.ts b/src/utils/agentContext.ts index 821a4aab..e296f050 100644 --- a/src/utils/agentContext.ts +++ b/src/utils/agentContext.ts @@ -22,7 +22,7 @@ */ import { AsyncLocalStorage } from 'async_hooks' -import type { AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS } from '../services/analytics/index.js' +import type { AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS } from '../services/analytics-stub.js' import { isAgentSwarmsEnabled } from './agentSwarmsEnabled.js' /** diff --git a/src/utils/agentSwarmsEnabled.ts b/src/utils/agentSwarmsEnabled.ts index fac5404c..d1a3bdee 100644 --- a/src/utils/agentSwarmsEnabled.ts +++ b/src/utils/agentSwarmsEnabled.ts @@ -1,4 +1,4 @@ -import { getFeatureValue_CACHED_MAY_BE_STALE } from '../services/analytics/growthbook.js' +import { getFeatureValue_CACHED_MAY_BE_STALE } from '../services/analytics-stub.js' import { isEnvTruthy } from './envUtils.js' /** diff --git a/src/utils/analyzeContext.ts b/src/utils/analyzeContext.ts index 87d4dd55..1c330d8e 100644 --- a/src/utils/analyzeContext.ts +++ b/src/utils/analyzeContext.ts @@ -8,7 +8,7 @@ import { microcompactMessages } from 'src/services/compact/microCompact.js' import { getSdkBetas } from '../bootstrap/state.js' import { getCommandName } from '../commands.js' import { getSystemContext } from '../context.js' -import { getFeatureValue_CACHED_MAY_BE_STALE } from '../services/analytics/growthbook.js' +import { getFeatureValue_CACHED_MAY_BE_STALE } from '../services/analytics-stub.js' import { AUTOCOMPACT_BUFFER_TOKENS, getEffectiveContextWindowSize, diff --git a/src/utils/api.ts b/src/utils/api.ts index 9b66fd79..1a6ed413 100644 --- a/src/utils/api.ts +++ b/src/utils/api.ts @@ -6,15 +6,15 @@ import type { import { createHash } from 'crypto' import { SYSTEM_PROMPT_DYNAMIC_BOUNDARY } from 'src/constants/prompts.js' import { getSystemContext, getUserContext } from 'src/context.js' -import { isAnalyticsDisabled } from 'src/services/analytics/config.js' +import { isAnalyticsDisabled } from '../services/analytics-stub.js' import { checkStatsigFeatureGate_CACHED_MAY_BE_STALE, getFeatureValue_CACHED_MAY_BE_STALE, -} from 'src/services/analytics/growthbook.js' +} from '../services/analytics-stub.js' import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent, -} from 'src/services/analytics/index.js' +} from '../services/analytics-stub.js' import { prefetchAllMcpResources } from 'src/services/mcp/client.js' import type { ScopedMcpServerConfig } from 'src/services/mcp/types.js' import { BashTool } from 'src/tools/BashTool/BashTool.js' diff --git a/src/utils/attachments.ts b/src/utils/attachments.ts index 8a1612a4..1c803825 100644 --- a/src/utils/attachments.ts +++ b/src/utils/attachments.ts @@ -2,7 +2,7 @@ import { logEvent, type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, -} from 'src/services/analytics/index.js' +} from '../services/analytics-stub.js' import { toolMatchesName, type Tools, @@ -216,7 +216,7 @@ import { getEffectiveContextWindowSize, isAutoCompactEnabled, } from '../services/compact/autoCompact.js' -import { getFeatureValue_CACHED_MAY_BE_STALE } from '../services/analytics/growthbook.js' +import { getFeatureValue_CACHED_MAY_BE_STALE } from '../services/analytics-stub.js' import { hasInstructionsLoadedHook, executeInstructionsLoadedHooks, diff --git a/src/utils/auth.ts b/src/utils/auth.ts index 64a61808..0c0b3e8f 100644 --- a/src/utils/auth.ts +++ b/src/utils/auth.ts @@ -8,7 +8,7 @@ import { CLAUDE_AI_PROFILE_SCOPE } from 'src/constants/oauth.js' import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent, -} from 'src/services/analytics/index.js' +} from '../services/analytics-stub.js' import { getModelStrings } from 'src/utils/model/modelStrings.js' import { getAPIProvider } from 'src/utils/model/providers.js' import { diff --git a/src/utils/autoUpdater.ts b/src/utils/autoUpdater.ts index 2a5fc6f9..790c75a8 100644 --- a/src/utils/autoUpdater.ts +++ b/src/utils/autoUpdater.ts @@ -1,34 +1,9 @@ -import axios from 'axios' -import { constants as fsConstants } from 'fs' -import { access, writeFile } from 'fs/promises' -import { homedir } from 'os' -import { join } from 'path' -import { getDynamicConfig_BLOCKS_ON_INIT } from 'src/services/analytics/growthbook.js' -import { - type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, - logEvent, -} from 'src/services/analytics/index.js' -import { type ReleaseChannel, saveGlobalConfig } from './config.js' -import { logForDebugging } from './debug.js' -import { env } from './env.js' -import { getClaudeConfigHomeDir } from './envUtils.js' -import { ClaudeError, getErrnoCode, isENOENT } from './errors.js' -import { execFileNoThrowWithCwd } from './execFileNoThrow.js' -import { getFsImplementation } from './fsOperations.js' -import { gracefulShutdownSync } from './gracefulShutdown.js' -import { logError } from './log.js' -import { gte, lt } from './semver.js' -import { getInitialSettings } from './settings/settings.js' -import { - filterClaudeAliases, - getShellConfigPaths, - readFileLines, - writeFileLines, -} from './shellConfig.js' -import { jsonParse } from './slowOperations.js' +/** + * Auto-updater stub for claude-code-clean + * All auto-update functionality has been disabled for privacy and independence + */ -const GCS_BUCKET_URL = - 'https://storage.googleapis.com/claude-code-dist-86c565f3-f756-42ad-8dfa-d59b1c096819/claude-code-releases' +import { ClaudeError } from './errors.js' class AutoUpdaterError extends ClaudeError {} @@ -51,511 +26,111 @@ export type MaxVersionConfig = { ant_message?: string } -/** - * Checks if the current version meets the minimum required version from Statsig config - * Terminates the process with an error message if the version is too old - * - * NOTE ON SHA-BASED VERSIONING: - * We use SemVer-compliant versioning with build metadata format (X.X.X+SHA) for continuous deployment. - * According to SemVer specs, build metadata (the +SHA part) is ignored when comparing versions. - * - * Versioning approach: - * 1. For version requirements/compatibility (assertMinVersion), we use semver comparison that ignores build metadata - * 2. For updates ('claude update'), we use exact string comparison to detect any change, including SHA - * - This ensures users always get the latest build, even when only the SHA changes - * - The UI clearly shows both versions including build metadata - * - * This approach keeps version comparison logic simple while maintaining traceability via the SHA. - */ +// Disabled: No version checks from remote servers export async function assertMinVersion(): Promise { - if (process.env.NODE_ENV === 'test') { - return - } - - try { - const versionConfig = await getDynamicConfig_BLOCKS_ON_INIT<{ - minVersion: string - }>('tengu_version_config', { minVersion: '0.0.0' }) - - if ( - versionConfig.minVersion && - lt(MACRO.VERSION, versionConfig.minVersion) - ) { - // biome-ignore lint/suspicious/noConsole:: intentional console output - console.error(` -It looks like your version of Claude Code (${MACRO.VERSION}) needs an update. -A newer version (${versionConfig.minVersion} or higher) is required to continue. - -To update, please run: - claude update - -This will ensure you have access to the latest features and improvements. -`) - gracefulShutdownSync(1) - } - } catch (error) { - logError(error as Error) - } + // No-op: claude-code-clean does not enforce minimum versions + return } -/** - * Returns the maximum allowed version for the current user type. - * For ants, returns the `ant` field (dev version format). - * For external users, returns the `external` field (clean semver). - * This is used as a server-side kill switch to pause auto-updates during incidents. - * Returns undefined if no cap is configured. - */ +// Disabled: No maximum version caps export async function getMaxVersion(): Promise { - const config = await getMaxVersionConfig() - if (process.env.USER_TYPE === 'ant') { - return config.ant || undefined - } - return config.external || undefined + return undefined } -/** - * Returns the server-driven message explaining the known issue, if configured. - * Shown in the warning banner when the current version exceeds the max allowed version. - */ +// Disabled: No version messages from server export async function getMaxVersionMessage(): Promise { - const config = await getMaxVersionConfig() - if (process.env.USER_TYPE === 'ant') { - return config.ant_message || undefined - } - return config.external_message || undefined + return undefined } -async function getMaxVersionConfig(): Promise { - try { - return await getDynamicConfig_BLOCKS_ON_INIT( - 'tengu_max_version_config', - {}, - ) - } catch (error) { - logError(error as Error) - return {} - } -} - -/** - * Checks if a target version should be skipped due to user's minimumVersion setting. - * This is used when switching to stable channel - the user can choose to stay on their - * current version until stable catches up, preventing downgrades. - */ +// Disabled: No version skipping export function shouldSkipVersion(targetVersion: string): boolean { - const settings = getInitialSettings() - const minimumVersion = settings?.minimumVersion - if (!minimumVersion) { - return false - } - // Skip if target version is less than minimum - const shouldSkip = !gte(targetVersion, minimumVersion) - if (shouldSkip) { - logForDebugging( - `Skipping update to ${targetVersion} - below minimumVersion ${minimumVersion}`, - ) - } - return shouldSkip + return false } -// Lock file for auto-updater to prevent concurrent updates -const LOCK_TIMEOUT_MS = 5 * 60 * 1000 // 5 minute timeout for locks - -/** - * Get the path to the lock file - * This is a function to ensure it's evaluated at runtime after test setup - */ +// Disabled: No update locks needed export function getLockFilePath(): string { - return join(getClaudeConfigHomeDir(), '.update.lock') + return '' } -/** - * Attempts to acquire a lock for auto-updater - * @returns true if lock was acquired, false if another process holds the lock - */ -async function acquireLock(): Promise { - const fs = getFsImplementation() - const lockPath = getLockFilePath() - - // Check for existing lock: 1 stat() on the happy path (fresh lock or ENOENT), - // 2 on stale-lock recovery (re-verify staleness immediately before unlink). - try { - const stats = await fs.stat(lockPath) - const age = Date.now() - stats.mtimeMs - if (age < LOCK_TIMEOUT_MS) { - return false - } - // Lock is stale, remove it before taking over. Re-verify staleness - // immediately before unlinking to close a TOCTOU race: if two processes - // both observe the stale lock, A unlinks + writes a fresh lock, then B - // would unlink A's fresh lock and both believe they hold it. A fresh - // lock has a recent mtime, so re-checking staleness makes B back off. - try { - const recheck = await fs.stat(lockPath) - if (Date.now() - recheck.mtimeMs < LOCK_TIMEOUT_MS) { - return false - } - await fs.unlink(lockPath) - } catch (err) { - if (!isENOENT(err)) { - logError(err as Error) - return false - } - } - } catch (err) { - if (!isENOENT(err)) { - logError(err as Error) - return false - } - // ENOENT: no lock file, proceed to create one - } +// Disabled: No updates from GCS +export async function getLatestVersionFromGcs(channel: string): Promise { + return null +} - // Create lock file atomically with O_EXCL (flag: 'wx'). If another process - // wins the race and creates it first, we get EEXIST and back off. - // Lazy-mkdir the config dir on ENOENT. - try { - await writeFile(lockPath, `${process.pid}`, { - encoding: 'utf8', - flag: 'wx', - }) - return true - } catch (err) { - const code = getErrnoCode(err) - if (code === 'EEXIST') { - return false - } - if (code === 'ENOENT') { - try { - // fs.mkdir from getFsImplementation() is always recursive:true and - // swallows EEXIST internally, so a dir-creation race cannot reach the - // catch below — only writeFile's EEXIST (true lock contention) can. - await fs.mkdir(getClaudeConfigHomeDir()) - await writeFile(lockPath, `${process.pid}`, { - encoding: 'utf8', - flag: 'wx', - }) - return true - } catch (mkdirErr) { - if (getErrnoCode(mkdirErr) === 'EEXIST') { - return false - } - logError(mkdirErr as Error) - return false - } - } - logError(err as Error) - return false +// Disabled: No auto-updates +export async function checkForUpdates(): Promise { + return { + version: null, + status: 'success', + notifications: ['Auto-updates disabled in claude-code-clean'] } } -/** - * Releases the update lock if it's held by this process - */ -async function releaseLock(): Promise { - const fs = getFsImplementation() - const lockPath = getLockFilePath() - try { - const lockData = await fs.readFile(lockPath, { encoding: 'utf8' }) - if (lockData === `${process.pid}`) { - await fs.unlink(lockPath) - } - } catch (err) { - if (isENOENT(err)) { - return - } - logError(err as Error) +// Disabled: No installations +export async function installUpdate(version: string): Promise { + return { + version: null, + status: 'success', + notifications: ['Auto-updates disabled in claude-code-clean'] } } -async function getInstallationPrefix(): Promise { - // Run from home directory to avoid reading project-level .npmrc/.bunfig.toml - const isBun = env.isRunningWithBun() - let prefixResult = null - if (isBun) { - prefixResult = await execFileNoThrowWithCwd('bun', ['pm', 'bin', '-g'], { - cwd: homedir(), - }) - } else { - prefixResult = await execFileNoThrowWithCwd( - 'npm', - ['-g', 'config', 'get', 'prefix'], - { cwd: homedir() }, - ) - } - if (prefixResult.code !== 0) { - logError(new Error(`Failed to check ${isBun ? 'bun' : 'npm'} permissions`)) - return null - } - return prefixResult.stdout.trim() +// Export any other functions that might be imported elsewhere as no-ops +export async function checkAndInstallUpdate(): Promise { + // No-op } -export async function checkGlobalInstallPermissions(): Promise<{ - hasPermissions: boolean - npmPrefix: string | null -}> { - try { - const prefix = await getInstallationPrefix() - if (!prefix) { - return { hasPermissions: false, npmPrefix: null } - } +export async function getUpdateStatus(): Promise { + return 'disabled' +} - try { - await access(prefix, fsConstants.W_OK) - return { hasPermissions: true, npmPrefix: prefix } - } catch { - logError( - new AutoUpdaterError( - 'Insufficient permissions for global npm install.', - ), - ) - return { hasPermissions: false, npmPrefix: prefix } - } - } catch (error) { - logError(error as Error) - return { hasPermissions: false, npmPrefix: null } - } +export function isAutoUpdateEnabled(): boolean { + return false } -export async function getLatestVersion( - channel: ReleaseChannel, -): Promise { - const npmTag = channel === 'stable' ? 'stable' : 'latest' +// Additional stub exports +export async function checkGlobalInstallPermissions(): Promise<{ canInstall: boolean; reason?: string }> { + return { canInstall: false, reason: 'Auto-updates disabled in claude-code-clean' } +} - // Run from home directory to avoid reading project-level .npmrc - // which could be maliciously crafted to redirect to an attacker's registry - const result = await execFileNoThrowWithCwd( - 'npm', - ['view', `${MACRO.PACKAGE_URL}@${npmTag}`, 'version', '--prefer-online'], - { abortSignal: AbortSignal.timeout(5000), cwd: homedir() }, - ) - if (result.code !== 0) { - logForDebugging(`npm view failed with code ${result.code}`) - if (result.stderr) { - logForDebugging(`npm stderr: ${result.stderr.trim()}`) - } else { - logForDebugging('npm stderr: (empty)') - } - if (result.stdout) { - logForDebugging(`npm stdout: ${result.stdout.trim()}`) - } - return null - } - return result.stdout.trim() +export async function getLatestVersion(channel: string): Promise { + return null } export type NpmDistTags = { - latest: string | null - stable: string | null + latest?: string + beta?: string + stable?: string } -/** - * Get npm dist-tags (latest and stable versions) from the registry. - * This is used by the doctor command to show users what versions are available. - */ export async function getNpmDistTags(): Promise { - // Run from home directory to avoid reading project-level .npmrc - const result = await execFileNoThrowWithCwd( - 'npm', - ['view', MACRO.PACKAGE_URL, 'dist-tags', '--json', '--prefer-online'], - { abortSignal: AbortSignal.timeout(5000), cwd: homedir() }, - ) - - if (result.code !== 0) { - logForDebugging(`npm view dist-tags failed with code ${result.code}`) - return { latest: null, stable: null } - } - - try { - const parsed = jsonParse(result.stdout.trim()) as Record - return { - latest: typeof parsed.latest === 'string' ? parsed.latest : null, - stable: typeof parsed.stable === 'string' ? parsed.stable : null, - } - } catch (error) { - logForDebugging(`Failed to parse dist-tags: ${error}`) - return { latest: null, stable: null } - } + return {} } -/** - * Get the latest version from GCS bucket for a given release channel. - * This is used by installations that don't have npm (e.g. package manager installs). - */ -export async function getLatestVersionFromGcs( - channel: ReleaseChannel, -): Promise { - try { - const response = await axios.get(`${GCS_BUCKET_URL}/${channel}`, { - timeout: 5000, - responseType: 'text', - }) - return response.data.trim() - } catch (error) { - logForDebugging(`Failed to fetch ${channel} from GCS: ${error}`) - return null - } -} - -/** - * Get available versions from GCS bucket (for native installations). - * Fetches both latest and stable channel pointers. - */ export async function getGcsDistTags(): Promise { - const [latest, stable] = await Promise.all([ - getLatestVersionFromGcs('latest'), - getLatestVersionFromGcs('stable'), - ]) - - return { latest, stable } + return {} } -/** - * Get version history from npm registry (ant-only feature) - * Returns versions sorted newest-first, limited to the specified count - * - * Uses NATIVE_PACKAGE_URL when available because: - * 1. Native installation is the primary installation method for ant users - * 2. Not all JS package versions have corresponding native packages - * 3. This prevents rollback from listing versions that don't have native binaries - */ export async function getVersionHistory(limit: number): Promise { - if (process.env.USER_TYPE !== 'ant') { - return [] - } - - // Use native package URL when available to ensure we only show versions - // that have native binaries (not all JS package versions have native builds) - const packageUrl = MACRO.NATIVE_PACKAGE_URL ?? MACRO.PACKAGE_URL - - // Run from home directory to avoid reading project-level .npmrc - const result = await execFileNoThrowWithCwd( - 'npm', - ['view', packageUrl, 'versions', '--json', '--prefer-online'], - // Longer timeout for version list - { abortSignal: AbortSignal.timeout(30000), cwd: homedir() }, - ) - - if (result.code !== 0) { - logForDebugging(`npm view versions failed with code ${result.code}`) - if (result.stderr) { - logForDebugging(`npm stderr: ${result.stderr.trim()}`) - } - return [] - } - - try { - const versions = jsonParse(result.stdout.trim()) as string[] - // Take last N versions, then reverse to get newest first - return versions.slice(-limit).reverse() - } catch (error) { - logForDebugging(`Failed to parse version history: ${error}`) - return [] - } + return [] } -export async function installGlobalPackage( - specificVersion?: string | null, -): Promise { - if (!(await acquireLock())) { - logError( - new AutoUpdaterError('Another process is currently installing an update'), - ) - // Log the lock contention - logEvent('tengu_auto_updater_lock_contention', { - pid: process.pid, - currentVersion: - MACRO.VERSION as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, - }) - return 'in_progress' - } - - try { - await removeClaudeAliasesFromShellConfigs() - // Check if we're using npm from Windows path in WSL - if (!env.isRunningWithBun() && env.isNpmFromWindowsPath()) { - logError(new Error('Windows NPM detected in WSL environment')) - logEvent('tengu_auto_updater_windows_npm_in_wsl', { - currentVersion: - MACRO.VERSION as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, - }) - // biome-ignore lint/suspicious/noConsole:: intentional console output - console.error(` -Error: Windows NPM detected in WSL - -You're running Claude Code in WSL but using the Windows NPM installation from /mnt/c/. -This configuration is not supported for updates. - -To fix this issue: - 1. Install Node.js within your Linux distribution: e.g. sudo apt install nodejs npm - 2. Make sure Linux NPM is in your PATH before the Windows version - 3. Try updating again with 'claude update' -`) - return 'install_failed' - } - - const { hasPermissions } = await checkGlobalInstallPermissions() - if (!hasPermissions) { - return 'no_permissions' - } - - // Use specific version if provided, otherwise use latest - const packageSpec = specificVersion - ? `${MACRO.PACKAGE_URL}@${specificVersion}` - : MACRO.PACKAGE_URL - - // Run from home directory to avoid reading project-level .npmrc/.bunfig.toml - // which could be maliciously crafted to redirect to an attacker's registry - const packageManager = env.isRunningWithBun() ? 'bun' : 'npm' - const installResult = await execFileNoThrowWithCwd( - packageManager, - ['install', '-g', packageSpec], - { cwd: homedir() }, - ) - if (installResult.code !== 0) { - const error = new AutoUpdaterError( - `Failed to install new version of claude: ${installResult.stdout} ${installResult.stderr}`, - ) - logError(error) - return 'install_failed' - } - - // Set installMethod to 'global' to track npm global installations - saveGlobalConfig(current => ({ - ...current, - installMethod: 'global', - })) - - return 'success' - } finally { - // Ensure we always release the lock - await releaseLock() +export async function installGlobalPackage(version: string): Promise { + return { + version: null, + status: 'success', + notifications: ['Auto-updates disabled in claude-code-clean'] } } -/** - * Remove claude aliases from shell configuration files - * This helps clean up old installation methods when switching to native or npm global - */ -async function removeClaudeAliasesFromShellConfigs(): Promise { - const configMap = getShellConfigPaths() - - // Process each shell config file - for (const [, configFile] of Object.entries(configMap)) { - try { - const lines = await readFileLines(configFile) - if (!lines) continue +export async function removeShellAliases(): Promise { + // No-op +} - const { filtered, hadAlias } = filterClaudeAliases(lines) +export async function addShellAliases(): Promise { + // No-op +} - if (hadAlias) { - await writeFileLines(configFile, filtered) - logForDebugging(`Removed claude alias from ${configFile}`) - } - } catch (error) { - // Don't fail the whole operation if one file can't be processed - logForDebugging(`Failed to remove alias from ${configFile}: ${error}`, { - level: 'error', - }) - } - } +export function isUpdateAvailable(current: string, latest: string): boolean { + return false } diff --git a/src/utils/background/remote/preconditions.ts b/src/utils/background/remote/preconditions.ts index a7b229b4..ebdb296d 100644 --- a/src/utils/background/remote/preconditions.ts +++ b/src/utils/background/remote/preconditions.ts @@ -1,7 +1,7 @@ import axios from 'axios' import { getOauthConfig } from 'src/constants/oauth.js' import { getOrganizationUUID } from 'src/services/oauth/client.js' -import { getFeatureValue_CACHED_MAY_BE_STALE } from '../../../services/analytics/growthbook.js' +import { getFeatureValue_CACHED_MAY_BE_STALE } from '../../../services/analytics-stub.js' import { checkAndRefreshOAuthTokenIfNeeded, getClaudeAIOAuthTokens, diff --git a/src/utils/background/remote/remoteSession.ts b/src/utils/background/remote/remoteSession.ts index a054921d..ca21246e 100644 --- a/src/utils/background/remote/remoteSession.ts +++ b/src/utils/background/remote/remoteSession.ts @@ -1,5 +1,5 @@ import type { SDKMessage } from 'src/entrypoints/agentSdkTypes.js' -import { checkGate_CACHED_OR_BLOCKING } from '../../../services/analytics/growthbook.js' +import { checkGate_CACHED_OR_BLOCKING } from '../../../services/analytics-stub.js' import { isPolicyAllowed } from '../../../services/policyLimits/index.js' import { detectCurrentRepositoryWithHost } from '../../detectRepository.js' import { isEnvTruthy } from '../../envUtils.js' diff --git a/src/utils/bash/ShellSnapshot.ts b/src/utils/bash/ShellSnapshot.ts index d26f052c..29d77d23 100644 --- a/src/utils/bash/ShellSnapshot.ts +++ b/src/utils/bash/ShellSnapshot.ts @@ -3,7 +3,7 @@ import { execa } from 'execa' import { mkdir, stat } from 'fs/promises' import * as os from 'os' import { join } from 'path' -import { logEvent } from 'src/services/analytics/index.js' +import { logEvent } from '../../services/analytics-stub.js' import { registerCleanup } from '../cleanupRegistry.js' import { getCwd } from '../cwd.js' import { logForDebugging } from '../debug.js' diff --git a/src/utils/bash/parser.ts b/src/utils/bash/parser.ts index c6851f1c..015b8a6e 100644 --- a/src/utils/bash/parser.ts +++ b/src/utils/bash/parser.ts @@ -1,5 +1,5 @@ import { feature } from 'bun:bundle' -import { logEvent } from '../../services/analytics/index.js' +import { logEvent } from '../../services/analytics-stub.js' import { logForDebugging } from '../debug.js' import { ensureParserInitialized, diff --git a/src/utils/betas.ts b/src/utils/betas.ts index fcd7b971..e315a59e 100644 --- a/src/utils/betas.ts +++ b/src/utils/betas.ts @@ -3,7 +3,7 @@ import memoize from 'lodash-es/memoize.js' import { checkStatsigFeatureGate_CACHED_MAY_BE_STALE, getFeatureValue_CACHED_MAY_BE_STALE, -} from 'src/services/analytics/growthbook.js' +} from '../services/analytics-stub.js' import { getIsNonInteractiveSession, getSdkBetas } from '../bootstrap/state.js' import { BEDROCK_EXTRA_PARAMS_HEADERS, diff --git a/src/utils/claudeInChrome/mcpServer.ts b/src/utils/claudeInChrome/mcpServer.ts index bbe0e2b1..42f9fabb 100644 --- a/src/utils/claudeInChrome/mcpServer.ts +++ b/src/utils/claudeInChrome/mcpServer.ts @@ -1,13 +1,13 @@ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js' import { format } from 'util' -import { shutdownDatadog } from '../../services/analytics/datadog.js' -import { shutdown1PEventLogging } from '../../services/analytics/firstPartyEventLogger.js' -import { getFeatureValue_CACHED_MAY_BE_STALE } from '../../services/analytics/growthbook.js' +import { shutdownDatadog } from '../../services/analytics-stub.js' +import { shutdown1PEventLogging } from '../../services/analytics-stub.js' +import { getFeatureValue_CACHED_MAY_BE_STALE } from '../../services/analytics-stub.js' import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent, -} from '../../services/analytics/index.js' -import { initializeAnalyticsSink } from '../../services/analytics/sink.js' +} from '../../services/analytics-stub.js' +import { initializeAnalyticsSink } from '../../services/analytics-stub.js' import { getClaudeAIOAuthTokens } from '../auth.js' import { enableConfigs, getGlobalConfig, saveGlobalConfig } from '../config.js' import { logForDebugging } from '../debug.js' diff --git a/src/utils/claudeInChrome/setup.ts b/src/utils/claudeInChrome/setup.ts index 77697023..15f48c0e 100644 --- a/src/utils/claudeInChrome/setup.ts +++ b/src/utils/claudeInChrome/setup.ts @@ -7,7 +7,7 @@ import { getIsNonInteractiveSession, getSessionBypassPermissionsMode, } from '../../bootstrap/state.js' -import { getFeatureValue_CACHED_MAY_BE_STALE } from '../../services/analytics/growthbook.js' +import { getFeatureValue_CACHED_MAY_BE_STALE } from '../../services/analytics-stub.js' import type { ScopedMcpServerConfig } from '../../services/mcp/types.js' import { isInBundledMode } from '../bundledMode.js' import { getGlobalConfig, saveGlobalConfig } from '../config.js' diff --git a/src/utils/claudemd.ts b/src/utils/claudemd.ts index 5ea8ab6d..1f44bd73 100644 --- a/src/utils/claudemd.ts +++ b/src/utils/claudemd.ts @@ -40,14 +40,14 @@ import { sep, } from 'path' import picomatch from 'picomatch' -import { logEvent } from 'src/services/analytics/index.js' +import { logEvent } from '../services/analytics-stub.js' import { getAdditionalDirectoriesForClaudeMd, getOriginalCwd, } from '../bootstrap/state.js' import { truncateEntrypointContent } from '../memdir/memdir.js' import { getAutoMemEntrypoint, isAutoMemoryEnabled } from '../memdir/paths.js' -import { getFeatureValue_CACHED_MAY_BE_STALE } from '../services/analytics/growthbook.js' +import { getFeatureValue_CACHED_MAY_BE_STALE } from '../services/analytics-stub.js' import { getCurrentProjectConfig, getManagedClaudeRulesDir, diff --git a/src/utils/cleanup.ts b/src/utils/cleanup.ts index 294ad2f7..dc838af6 100644 --- a/src/utils/cleanup.ts +++ b/src/utils/cleanup.ts @@ -1,7 +1,7 @@ import * as fs from 'fs/promises' import { homedir } from 'os' import { join } from 'path' -import { logEvent } from '../services/analytics/index.js' +import { logEvent } from '../services/analytics-stub.js' import { CACHE_PATHS } from './cachePaths.js' import { logForDebugging } from './debug.js' import { getClaudeConfigHomeDir } from './envUtils.js' diff --git a/src/utils/computerUse/gates.ts b/src/utils/computerUse/gates.ts index 6563a480..8fd8c640 100644 --- a/src/utils/computerUse/gates.ts +++ b/src/utils/computerUse/gates.ts @@ -1,6 +1,6 @@ import type { CoordinateMode, CuSubGates } from '@ant/computer-use-mcp/types' -import { getDynamicConfig_CACHED_MAY_BE_STALE } from '../../services/analytics/growthbook.js' +import { getDynamicConfig_CACHED_MAY_BE_STALE } from '../../services/analytics-stub.js' import { getSubscriptionType } from '../auth.js' import { isEnvTruthy } from '../envUtils.js' diff --git a/src/utils/computerUse/mcpServer.ts b/src/utils/computerUse/mcpServer.ts index d51d80ab..ac2561e3 100644 --- a/src/utils/computerUse/mcpServer.ts +++ b/src/utils/computerUse/mcpServer.ts @@ -6,9 +6,9 @@ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js' import { ListToolsRequestSchema } from '@modelcontextprotocol/sdk/types.js' import { homedir } from 'os' -import { shutdownDatadog } from '../../services/analytics/datadog.js' -import { shutdown1PEventLogging } from '../../services/analytics/firstPartyEventLogger.js' -import { initializeAnalyticsSink } from '../../services/analytics/sink.js' +import { shutdownDatadog } from '../../services/analytics-stub.js' +import { shutdown1PEventLogging } from '../../services/analytics-stub.js' +import { initializeAnalyticsSink } from '../../services/analytics-stub.js' import { enableConfigs } from '../config.js' import { logForDebugging } from '../debug.js' import { filterAppsForDescription } from './appNames.js' diff --git a/src/utils/config.ts b/src/utils/config.ts index eecbf0c6..ea0189e6 100644 --- a/src/utils/config.ts +++ b/src/utils/config.ts @@ -6,7 +6,7 @@ import pickBy from 'lodash-es/pickBy.js' import { basename, dirname, join, resolve } from 'path' import { getOriginalCwd, getSessionTrustAccepted } from '../bootstrap/state.js' import { getAutoMemEntrypoint } from '../memdir/paths.js' -import { logEvent } from '../services/analytics/index.js' +import { logEvent } from '../services/analytics-stub.js' import type { McpServerConfig } from '../services/mcp/types.js' import type { BillingType, diff --git a/src/utils/cronJitterConfig.ts b/src/utils/cronJitterConfig.ts index 9cab46f8..4ae74f24 100644 --- a/src/utils/cronJitterConfig.ts +++ b/src/utils/cronJitterConfig.ts @@ -9,7 +9,7 @@ // Daemon/SDK: omit getJitterConfig → DEFAULT_CRON_JITTER_CONFIG applies. import { z } from 'zod/v4' -import { getFeatureValue_CACHED_WITH_REFRESH } from '../services/analytics/growthbook.js' +import { getFeatureValue_CACHED_WITH_REFRESH } from '../services/analytics-stub.js' import { type CronJitterConfig, DEFAULT_CRON_JITTER_CONFIG, diff --git a/src/utils/cronScheduler.ts b/src/utils/cronScheduler.ts index 56b36271..58a6d172 100644 --- a/src/utils/cronScheduler.ts +++ b/src/utils/cronScheduler.ts @@ -16,7 +16,7 @@ import { import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent, -} from '../services/analytics/index.js' +} from '../services/analytics-stub.js' import { cronToHuman } from './cron.js' import { type CronJitterConfig, diff --git a/src/utils/deepLink/registerProtocol.ts b/src/utils/deepLink/registerProtocol.ts index 0e630ee6..41971e4b 100644 --- a/src/utils/deepLink/registerProtocol.ts +++ b/src/utils/deepLink/registerProtocol.ts @@ -16,11 +16,11 @@ import { promises as fs } from 'fs' import * as os from 'os' import * as path from 'path' -import { getFeatureValue_CACHED_MAY_BE_STALE } from 'src/services/analytics/growthbook.js' +import { getFeatureValue_CACHED_MAY_BE_STALE } from '../../services/analytics-stub.js' import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent, -} from 'src/services/analytics/index.js' +} from '../../services/analytics-stub.js' import { logForDebugging } from '../debug.js' import { getClaudeConfigHomeDir } from '../envUtils.js' import { getErrnoCode } from '../errors.js' diff --git a/src/utils/diff.ts b/src/utils/diff.ts index 38e7c1bf..998739de 100644 --- a/src/utils/diff.ts +++ b/src/utils/diff.ts @@ -1,5 +1,5 @@ import { type StructuredPatchHunk, structuredPatch } from 'diff' -import { logEvent } from 'src/services/analytics/index.js' +import { logEvent } from '../services/analytics-stub.js' import { getLocCounter } from '../bootstrap/state.js' import { addToTotalLinesChanged } from '../cost-tracker.js' import type { FileEdit } from '../tools/FileEditTool/types.js' diff --git a/src/utils/effort.ts b/src/utils/effort.ts index cafcf3de..8e46efab 100644 --- a/src/utils/effort.ts +++ b/src/utils/effort.ts @@ -2,7 +2,7 @@ import { isUltrathinkEnabled } from './thinking.js' import { getInitialSettings } from './settings/settings.js' import { isProSubscriber, isMaxSubscriber, isTeamSubscriber } from './auth.js' -import { getFeatureValue_CACHED_MAY_BE_STALE } from 'src/services/analytics/growthbook.js' +import { getFeatureValue_CACHED_MAY_BE_STALE } from '../services/analytics-stub.js' import { getAPIProvider } from './model/providers.js' import { get3PModelCapabilityOverride } from './model/modelSupportOverrides.js' import { isEnvTruthy } from './envUtils.js' diff --git a/src/utils/fastMode.ts b/src/utils/fastMode.ts index 98de3ee6..f9a4e779 100644 --- a/src/utils/fastMode.ts +++ b/src/utils/fastMode.ts @@ -1,6 +1,6 @@ import axios from 'axios' import { getOauthConfig, OAUTH_BETA_HEADER } from 'src/constants/oauth.js' -import { getFeatureValue_CACHED_MAY_BE_STALE } from 'src/services/analytics/growthbook.js' +import { getFeatureValue_CACHED_MAY_BE_STALE } from '../services/analytics-stub.js' import { getIsNonInteractiveSession, getKairosActive, @@ -9,7 +9,7 @@ import { import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent, -} from '../services/analytics/index.js' +} from '../services/analytics-stub.js' import { getAnthropicApiKey, getClaudeAIOAuthTokens, diff --git a/src/utils/file.ts b/src/utils/file.ts index 773c3f41..7b8a972b 100644 --- a/src/utils/file.ts +++ b/src/utils/file.ts @@ -12,8 +12,8 @@ import { resolve, sep, } from 'path' -import { logEvent } from 'src/services/analytics/index.js' -import { getFeatureValue_CACHED_MAY_BE_STALE } from '../services/analytics/growthbook.js' +import { logEvent } from '../services/analytics-stub.js' +import { getFeatureValue_CACHED_MAY_BE_STALE } from '../services/analytics-stub.js' import { getCwd } from '../utils/cwd.js' import { logForDebugging } from './debug.js' import { isENOENT, isFsInaccessible } from './errors.js' diff --git a/src/utils/fileHistory.ts b/src/utils/fileHistory.ts index 4e227d99..59003556 100644 --- a/src/utils/fileHistory.ts +++ b/src/utils/fileHistory.ts @@ -16,7 +16,7 @@ import { getOriginalCwd, getSessionId, } from 'src/bootstrap/state.js' -import { logEvent } from 'src/services/analytics/index.js' +import { logEvent } from '../services/analytics-stub.js' import { notifyVscodeFileUpdated } from 'src/services/mcp/vscodeSdkMcp.js' import type { LogOption } from 'src/types/logs.js' import { inspect } from 'util' diff --git a/src/utils/fileOperationAnalytics.ts b/src/utils/fileOperationAnalytics.ts index 097c5a73..b2cacc4b 100644 --- a/src/utils/fileOperationAnalytics.ts +++ b/src/utils/fileOperationAnalytics.ts @@ -1,6 +1,6 @@ import { createHash } from 'crypto' -import type { AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS } from 'src/services/analytics/index.js' -import { logEvent } from 'src/services/analytics/index.js' +import type { AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS } from '../services/analytics-stub.js' +import { logEvent } from '../services/analytics-stub.js' /** * Creates a truncated SHA256 hash (16 chars) for file paths diff --git a/src/utils/filePersistence/filePersistence.ts b/src/utils/filePersistence/filePersistence.ts index 9dabbab7..a939e702 100644 --- a/src/utils/filePersistence/filePersistence.ts +++ b/src/utils/filePersistence/filePersistence.ts @@ -12,7 +12,7 @@ import { join, relative } from 'path' import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent, -} from '../../services/analytics/index.js' +} from '../../services/analytics-stub.js' import { type FilesApiConfig, uploadSessionFiles, diff --git a/src/utils/fingerprint-stub.ts b/src/utils/fingerprint-stub.ts new file mode 100644 index 00000000..ba1a83c5 --- /dev/null +++ b/src/utils/fingerprint-stub.ts @@ -0,0 +1,17 @@ +/** + * Stub file for fingerprint functionality + * All functions are no-ops to allow code to compile without fingerprint infrastructure + */ + +export function computeFingerprint(...args: any[]): string { + return 'no-fingerprint'; +} + +export function computeFingerprintFromMessages(...args: any[]): string { + // Return a dummy fingerprint + return 'no-fingerprint'; +} + +export function generateFingerprint(...args: any[]): string { + return 'no-fingerprint'; +} diff --git a/src/utils/fingerprint.ts b/src/utils/fingerprint.ts deleted file mode 100644 index 17906ebd..00000000 --- a/src/utils/fingerprint.ts +++ /dev/null @@ -1,76 +0,0 @@ -import { createHash } from 'crypto' -import type { AssistantMessage, UserMessage } from '../types/message.js' - -/** - * Hardcoded salt from backend validation. - * Must match exactly for fingerprint validation to pass. - */ -export const FINGERPRINT_SALT = '59cf53e54c78' - -/** - * Extracts text content from the first user message. - * - * @param messages - Array of internal message types - * @returns First text content, or empty string if not found - */ -export function extractFirstMessageText( - messages: (UserMessage | AssistantMessage)[], -): string { - const firstUserMessage = messages.find(msg => msg.type === 'user') - if (!firstUserMessage) { - return '' - } - - const content = firstUserMessage.message.content - - if (typeof content === 'string') { - return content - } - - if (Array.isArray(content)) { - const textBlock = content.find(block => block.type === 'text') - if (textBlock && textBlock.type === 'text') { - return textBlock.text - } - } - - return '' -} - -/** - * Computes 3-character fingerprint for Claude Code attribution. - * Algorithm: SHA256(SALT + msg[4] + msg[7] + msg[20] + version)[:3] - * IMPORTANT: Do not change this method without careful coordination with - * 1P and 3P (Bedrock, Vertex, Azure) APIs. - * - * @param messageText - First user message text content - * @param version - Version string (from MACRO.VERSION) - * @returns 3-character hex fingerprint - */ -export function computeFingerprint( - messageText: string, - version: string, -): string { - // Extract chars at indices [4, 7, 20], use "0" if index not found - const indices = [4, 7, 20] - const chars = indices.map(i => messageText[i] || '0').join('') - - const fingerprintInput = `${FINGERPRINT_SALT}${chars}${version}` - - // SHA256 hash, return first 3 hex chars - const hash = createHash('sha256').update(fingerprintInput).digest('hex') - return hash.slice(0, 3) -} - -/** - * Computes fingerprint from the first user message. - * - * @param messages - Array of normalized messages - * @returns 3-character hex fingerprint - */ -export function computeFingerprintFromMessages( - messages: (UserMessage | AssistantMessage)[], -): string { - const firstMessageText = extractFirstMessageText(messages) - return computeFingerprint(firstMessageText, MACRO.VERSION) -} diff --git a/src/utils/forkedAgent.ts b/src/utils/forkedAgent.ts index eff95953..9b6ad9fd 100644 --- a/src/utils/forkedAgent.ts +++ b/src/utils/forkedAgent.ts @@ -17,7 +17,7 @@ import { query } from '../query.js' import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent, -} from '../services/analytics/index.js' +} from '../services/analytics-stub.js' import { accumulateUsage, updateUsage } from '../services/api/claude.js' import { EMPTY_USAGE, type NonNullableUsage } from '../services/api/logging.js' import type { ToolUseContext } from '../Tool.js' diff --git a/src/utils/getWorktreePaths.ts b/src/utils/getWorktreePaths.ts index fdac0bcb..517b3a21 100644 --- a/src/utils/getWorktreePaths.ts +++ b/src/utils/getWorktreePaths.ts @@ -1,5 +1,5 @@ import { sep } from 'path' -import { logEvent } from '../services/analytics/index.js' +import { logEvent } from '../services/analytics-stub.js' import { execFileNoThrowWithCwd } from './execFileNoThrow.js' import { gitExe } from './git.js' diff --git a/src/utils/gracefulShutdown.ts b/src/utils/gracefulShutdown.ts index cdfaf5c6..598b95fd 100644 --- a/src/utils/gracefulShutdown.ts +++ b/src/utils/gracefulShutdown.ts @@ -29,12 +29,12 @@ import { supportsTabStatus, wrapForMultiplexer, } from '../ink/termio/osc.js' -import { shutdownDatadog } from '../services/analytics/datadog.js' -import { shutdown1PEventLogging } from '../services/analytics/firstPartyEventLogger.js' +import { shutdownDatadog } from '../services/analytics-stub.js' +import { shutdown1PEventLogging } from '../services/analytics-stub.js' import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent, -} from '../services/analytics/index.js' +} from '../services/analytics-stub.js' import type { AppState } from '../state/AppState.js' import { runCleanupFunctions } from './cleanupRegistry.js' import { logForDebugging } from './debug.js' diff --git a/src/utils/handlePromptSubmit.ts b/src/utils/handlePromptSubmit.ts index 4e514dd0..0be393d3 100644 --- a/src/utils/handlePromptSubmit.ts +++ b/src/utils/handlePromptSubmit.ts @@ -1,6 +1,6 @@ import type { UUID } from 'crypto' -import { logEvent } from 'src/services/analytics/index.js' -import type { AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS } from 'src/services/analytics/metadata.js' +import { logEvent } from '../services/analytics-stub.js' +import type { AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS } from '../services/analytics-stub.js' import { type Command, getCommandName, isCommandEnabled } from '../commands.js' import { selectableUserMessagesFilter } from '../components/MessageSelector.js' import type { SpinnerMode } from '../components/Spinner/types.js' diff --git a/src/utils/headlessProfiler.ts b/src/utils/headlessProfiler.ts index 50aadaf2..629ed203 100644 --- a/src/utils/headlessProfiler.ts +++ b/src/utils/headlessProfiler.ts @@ -16,7 +16,7 @@ import { getIsNonInteractiveSession } from '../bootstrap/state.js' import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent, -} from '../services/analytics/index.js' +} from '../services/analytics-stub.js' import { logForDebugging } from './debug.js' import { isEnvTruthy } from './envUtils.js' import { getPerformance } from './profilerBase.js' diff --git a/src/utils/heapDumpService.ts b/src/utils/heapDumpService.ts index c451d85a..9fa1c2eb 100644 --- a/src/utils/heapDumpService.ts +++ b/src/utils/heapDumpService.ts @@ -14,7 +14,7 @@ import { type HeapSpaceInfo, } from 'v8' import { getSessionId } from '../bootstrap/state.js' -import { logEvent } from '../services/analytics/index.js' +import { logEvent } from '../services/analytics-stub.js' import { logForDebugging } from './debug.js' import { toError } from './errors.js' import { getDesktopPath } from './file.js' diff --git a/src/utils/hooks.ts b/src/utils/hooks.ts index 41985744..1394b8c0 100644 --- a/src/utils/hooks.ts +++ b/src/utils/hooks.ts @@ -54,14 +54,14 @@ import { import { logEvent, type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, -} from 'src/services/analytics/index.js' -import { logOTelEvent } from './telemetry/events.js' +} from '../services/analytics-stub.js' +import { logOTelEvent } from './telemetry-stub.js' import { ALLOWED_OFFICIAL_MARKETPLACE_NAMES } from './plugins/schemas.js' import { startHookSpan, endHookSpan, isBetaTracingEnabled, -} from './telemetry/sessionTracing.js' +} from './telemetry-stub.js' import { hookJSONOutputSchema, promptRequestSchema, diff --git a/src/utils/hooks/execAgentHook.ts b/src/utils/hooks/execAgentHook.ts index 3282670f..1ff22259 100644 --- a/src/utils/hooks/execAgentHook.ts +++ b/src/utils/hooks/execAgentHook.ts @@ -1,8 +1,8 @@ import { randomUUID } from 'crypto' import type { HookEvent } from 'src/entrypoints/agentSdkTypes.js' import { query } from '../../query.js' -import { logEvent } from '../../services/analytics/index.js' -import type { AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS } from '../../services/analytics/metadata.js' +import { logEvent } from '../../services/analytics-stub.js' +import type { AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS } from '../../services/analytics-stub.js' import type { ToolUseContext } from '../../Tool.js' import { type Tool, toolMatchesName } from '../../Tool.js' import { SYNTHETIC_OUTPUT_TOOL_NAME } from '../../tools/SyntheticOutputTool/SyntheticOutputTool.js' diff --git a/src/utils/hooks/skillImprovement.ts b/src/utils/hooks/skillImprovement.ts index 564a3f89..af42e1a6 100644 --- a/src/utils/hooks/skillImprovement.ts +++ b/src/utils/hooks/skillImprovement.ts @@ -1,11 +1,11 @@ import { feature } from 'bun:bundle' import { getInvokedSkillsForAgent } from '../../bootstrap/state.js' -import { getFeatureValue_CACHED_MAY_BE_STALE } from '../../services/analytics/growthbook.js' +import { getFeatureValue_CACHED_MAY_BE_STALE } from '../../services/analytics-stub.js' import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, type AnalyticsMetadata_I_VERIFIED_THIS_IS_PII_TAGGED, logEvent, -} from '../../services/analytics/index.js' +} from '../../services/analytics-stub.js' import { queryModelWithoutStreaming } from '../../services/api/claude.js' import { getEmptyToolPermissionContext } from '../../Tool.js' import type { Message } from '../../types/message.js' diff --git a/src/utils/ide.ts b/src/utils/ide.ts index fe6d55d7..6a5a3fa8 100644 --- a/src/utils/ide.ts +++ b/src/utils/ide.ts @@ -6,7 +6,7 @@ import memoize from 'lodash-es/memoize.js' import { createConnection } from 'net' import * as os from 'os' import { basename, join, sep as pathSeparator, resolve } from 'path' -import { logEvent } from 'src/services/analytics/index.js' +import { logEvent } from '../services/analytics-stub.js' import { getIsScrollDraining, getOriginalCwd } from '../bootstrap/state.js' import { callIdeRpc } from '../services/mcp/client.js' import type { diff --git a/src/utils/imagePaste.ts b/src/utils/imagePaste.ts index 9d3c2b04..c63793d2 100644 --- a/src/utils/imagePaste.ts +++ b/src/utils/imagePaste.ts @@ -7,7 +7,7 @@ import { IMAGE_MAX_WIDTH, IMAGE_TARGET_RAW_SIZE, } from '../constants/apiLimits.js' -import { getFeatureValue_CACHED_MAY_BE_STALE } from '../services/analytics/growthbook.js' +import { getFeatureValue_CACHED_MAY_BE_STALE } from '../services/analytics-stub.js' import { getImageProcessor } from '../tools/FileReadTool/imageProcessor.js' import { logForDebugging } from './debug.js' import { execFileNoThrowWithCwd } from './execFileNoThrow.js' diff --git a/src/utils/imageResizer.ts b/src/utils/imageResizer.ts index 149b4087..2c7fbab9 100644 --- a/src/utils/imageResizer.ts +++ b/src/utils/imageResizer.ts @@ -8,7 +8,7 @@ import { IMAGE_MAX_WIDTH, IMAGE_TARGET_RAW_SIZE, } from '../constants/apiLimits.js' -import { logEvent } from '../services/analytics/index.js' +import { logEvent } from '../services/analytics-stub.js' import { getImageProcessor, type SharpFunction, diff --git a/src/utils/imageValidation.ts b/src/utils/imageValidation.ts index 401f50a2..c4eae17c 100644 --- a/src/utils/imageValidation.ts +++ b/src/utils/imageValidation.ts @@ -1,5 +1,5 @@ import { API_IMAGE_MAX_BASE64_SIZE } from '../constants/apiLimits.js' -import { logEvent } from '../services/analytics/index.js' +import { logEvent } from '../services/analytics-stub.js' import { formatFileSize } from './format.js' /** diff --git a/src/utils/immediateCommand.ts b/src/utils/immediateCommand.ts index faa5733c..89b36840 100644 --- a/src/utils/immediateCommand.ts +++ b/src/utils/immediateCommand.ts @@ -1,4 +1,4 @@ -import { getFeatureValue_CACHED_MAY_BE_STALE } from '../services/analytics/growthbook.js' +import { getFeatureValue_CACHED_MAY_BE_STALE } from '../services/analytics-stub.js' /** * Whether inference-config commands (/model, /fast, /effort) should execute diff --git a/src/utils/markdownConfigLoader.ts b/src/utils/markdownConfigLoader.ts index 68729976..f8197b02 100644 --- a/src/utils/markdownConfigLoader.ts +++ b/src/utils/markdownConfigLoader.ts @@ -7,7 +7,7 @@ import { dirname, join, resolve, sep } from 'path' import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent, -} from 'src/services/analytics/index.js' +} from '../services/analytics-stub.js' import { getProjectRoot } from '../bootstrap/state.js' import { logForDebugging } from './debug.js' import { getClaudeConfigHomeDir, isEnvTruthy } from './envUtils.js' diff --git a/src/utils/mcpInstructionsDelta.ts b/src/utils/mcpInstructionsDelta.ts index acac0c1e..71c57209 100644 --- a/src/utils/mcpInstructionsDelta.ts +++ b/src/utils/mcpInstructionsDelta.ts @@ -1,5 +1,5 @@ -import { getFeatureValue_CACHED_MAY_BE_STALE } from '../services/analytics/growthbook.js' -import { logEvent } from '../services/analytics/index.js' +import { getFeatureValue_CACHED_MAY_BE_STALE } from '../services/analytics-stub.js' +import { logEvent } from '../services/analytics-stub.js' import type { ConnectedMCPServer, MCPServerConnection, diff --git a/src/utils/mcpOutputStorage.ts b/src/utils/mcpOutputStorage.ts index 530d185b..39ceed2a 100644 --- a/src/utils/mcpOutputStorage.ts +++ b/src/utils/mcpOutputStorage.ts @@ -3,7 +3,7 @@ import { join } from 'path' import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent, -} from '../services/analytics/index.js' +} from '../services/analytics-stub.js' import type { MCPResultType } from '../services/mcp/client.js' import { toError } from './errors.js' import { formatFileSize } from './format.js' diff --git a/src/utils/mcpValidation.ts b/src/utils/mcpValidation.ts index d2dcc7d5..4c4645fa 100644 --- a/src/utils/mcpValidation.ts +++ b/src/utils/mcpValidation.ts @@ -3,7 +3,7 @@ import type { ImageBlockParam, TextBlockParam, } from '@anthropic-ai/sdk/resources/index.mjs' -import { getFeatureValue_CACHED_MAY_BE_STALE } from '../services/analytics/growthbook.js' +import { getFeatureValue_CACHED_MAY_BE_STALE } from '../services/analytics-stub.js' import { countMessagesTokensWithAPI, roughTokenCountEstimation, diff --git a/src/utils/messages.ts b/src/utils/messages.ts index 7d8db974..61dba5eb 100644 --- a/src/utils/messages.ts +++ b/src/utils/messages.ts @@ -18,8 +18,8 @@ import last from 'lodash-es/last.js' import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent, -} from 'src/services/analytics/index.js' -import { sanitizeToolNameForAnalytics } from 'src/services/analytics/metadata.js' +} from '../services/analytics-stub.js' +import { sanitizeToolNameForAnalytics } from '../services/analytics-stub.js' import type { AgentId } from 'src/types/ids.js' import { companionIntroText } from '../buddy/prompt.js' import { NO_CONTENT_MESSAGE } from '../constants/messages.js' @@ -28,7 +28,7 @@ import { isAutoMemoryEnabled } from '../memdir/paths.js' import { checkStatsigFeatureGate_CACHED_MAY_BE_STALE, getFeatureValue_CACHED_MAY_BE_STALE, -} from '../services/analytics/growthbook.js' +} from '../services/analytics-stub.js' import { getImageTooLargeErrorMessage, getPdfInvalidErrorMessage, diff --git a/src/utils/model/antModels.ts b/src/utils/model/antModels.ts index bde34efd..6b22716f 100644 --- a/src/utils/model/antModels.ts +++ b/src/utils/model/antModels.ts @@ -1,4 +1,4 @@ -import { getFeatureValue_CACHED_MAY_BE_STALE } from 'src/services/analytics/growthbook.js' +import { getFeatureValue_CACHED_MAY_BE_STALE } from '../../services/analytics-stub.js' import type { EffortLevel } from '../effort.js' export type AntModel = { diff --git a/src/utils/model/providers.ts b/src/utils/model/providers.ts index aba9b7d7..481f8bf7 100644 --- a/src/utils/model/providers.ts +++ b/src/utils/model/providers.ts @@ -1,4 +1,4 @@ -import type { AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS } from '../../services/analytics/index.js' +import type { AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS } from '../../services/analytics-stub.js' import { isEnvTruthy } from '../envUtils.js' export type APIProvider = 'firstParty' | 'bedrock' | 'vertex' | 'foundry' diff --git a/src/utils/modelCost.ts b/src/utils/modelCost.ts index b4867d4e..e8969238 100644 --- a/src/utils/modelCost.ts +++ b/src/utils/modelCost.ts @@ -1,6 +1,6 @@ import type { BetaUsage as Usage } from '@anthropic-ai/sdk/resources/beta/messages/messages.mjs' -import type { AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS } from 'src/services/analytics/index.js' -import { logEvent } from 'src/services/analytics/index.js' +import type { AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS } from '../services/analytics-stub.js' +import { logEvent } from '../services/analytics-stub.js' import { setHasUnknownModelCost } from '../bootstrap/state.js' import { isFastModeEnabled } from './fastMode.js' import { diff --git a/src/utils/nativeInstaller/download.ts b/src/utils/nativeInstaller/download.ts index fa11e670..ea07cde7 100644 --- a/src/utils/nativeInstaller/download.ts +++ b/src/utils/nativeInstaller/download.ts @@ -11,7 +11,7 @@ import axios from 'axios' import { createHash } from 'crypto' import { chmod, writeFile } from 'fs/promises' import { join } from 'path' -import { logEvent } from 'src/services/analytics/index.js' +import { logEvent } from '../../services/analytics-stub.js' import type { ReleaseChannel } from '../config.js' import { logForDebugging } from '../debug.js' import { toError } from '../errors.js' diff --git a/src/utils/nativeInstaller/installer.ts b/src/utils/nativeInstaller/installer.ts index 3a3b770b..9921c11a 100644 --- a/src/utils/nativeInstaller/installer.ts +++ b/src/utils/nativeInstaller/installer.ts @@ -33,7 +33,7 @@ import { basename, delimiter, dirname, join, resolve } from 'path' import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent, -} from 'src/services/analytics/index.js' +} from '../../services/analytics-stub.js' import { getMaxVersion, shouldSkipVersion } from '../autoUpdater.js' import { registerCleanup } from '../cleanupRegistry.js' import { getGlobalConfig, saveGlobalConfig } from '../config.js' diff --git a/src/utils/nativeInstaller/pidLock.ts b/src/utils/nativeInstaller/pidLock.ts index 5e820279..601ee47c 100644 --- a/src/utils/nativeInstaller/pidLock.ts +++ b/src/utils/nativeInstaller/pidLock.ts @@ -10,7 +10,7 @@ */ import { basename, join } from 'path' -import { getFeatureValue_CACHED_MAY_BE_STALE } from '../../services/analytics/growthbook.js' +import { getFeatureValue_CACHED_MAY_BE_STALE } from '../../services/analytics-stub.js' import { logForDebugging } from '../debug.js' import { isEnvDefinedFalsy, isEnvTruthy } from '../envUtils.js' import { isENOENT, toError } from '../errors.js' diff --git a/src/utils/permissions/filesystem.ts b/src/utils/permissions/filesystem.ts index 320b6235..30886c9f 100644 --- a/src/utils/permissions/filesystem.ts +++ b/src/utils/permissions/filesystem.ts @@ -13,7 +13,7 @@ import { } from 'src/tools/FileEditTool/constants.js' import type { z } from 'zod/v4' import { getOriginalCwd, getSessionId } from '../../bootstrap/state.js' -import { checkStatsigFeatureGate_CACHED_MAY_BE_STALE } from '../../services/analytics/growthbook.js' +import { checkStatsigFeatureGate_CACHED_MAY_BE_STALE } from '../../services/analytics-stub.js' import type { AnyObject, Tool, ToolPermissionContext } from '../../Tool.js' import { FILE_READ_TOOL_NAME } from '../../tools/FileReadTool/prompt.js' import { getCwd } from '../cwd.js' diff --git a/src/utils/permissions/permissionExplainer.ts b/src/utils/permissions/permissionExplainer.ts index e2ef3ed0..bc5eaf79 100644 --- a/src/utils/permissions/permissionExplainer.ts +++ b/src/utils/permissions/permissionExplainer.ts @@ -1,6 +1,6 @@ import { z } from 'zod/v4' -import { logEvent } from '../../services/analytics/index.js' -import { sanitizeToolNameForAnalytics } from '../../services/analytics/metadata.js' +import { logEvent } from '../../services/analytics-stub.js' +import { sanitizeToolNameForAnalytics } from '../../services/analytics-stub.js' import type { AssistantMessage, Message } from '../../types/message.js' import { getGlobalConfig } from '../config.js' import { logForDebugging } from '../debug.js' diff --git a/src/utils/permissions/permissionSetup.ts b/src/utils/permissions/permissionSetup.ts index 8520da84..9c8dacb3 100644 --- a/src/utils/permissions/permissionSetup.ts +++ b/src/utils/permissions/permissionSetup.ts @@ -39,7 +39,7 @@ import { checkStatsigFeatureGate_CACHED_MAY_BE_STALE, getDynamicConfig_BLOCKS_ON_INIT, getFeatureValue_CACHED_MAY_BE_STALE, -} from 'src/services/analytics/growthbook.js' +} from '../../services/analytics-stub.js' import { addDirHelpMessage, validateDirectoryForWorkspace, @@ -47,7 +47,7 @@ import { import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent, -} from '../../services/analytics/index.js' +} from '../../services/analytics-stub.js' import { AGENT_TOOL_NAME } from '../../tools/AgentTool/constants.js' import { BASH_TOOL_NAME } from '../../tools/BashTool/toolName.js' /* eslint-enable @typescript-eslint/no-require-imports */ diff --git a/src/utils/permissions/permissions.ts b/src/utils/permissions/permissions.ts index 99db042d..24686a60 100644 --- a/src/utils/permissions/permissions.ts +++ b/src/utils/permissions/permissions.ts @@ -70,12 +70,12 @@ import { getTotalInputTokens, getTotalOutputTokens, } from '../../bootstrap/state.js' -import { getFeatureValue_CACHED_WITH_REFRESH } from '../../services/analytics/growthbook.js' +import { getFeatureValue_CACHED_WITH_REFRESH } from '../../services/analytics-stub.js' import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent, -} from '../../services/analytics/index.js' -import { sanitizeToolNameForAnalytics } from '../../services/analytics/metadata.js' +} from '../../services/analytics-stub.js' +import { sanitizeToolNameForAnalytics } from '../../services/analytics-stub.js' import { clearClassifierChecking, setClassifierChecking, diff --git a/src/utils/permissions/yoloClassifier.ts b/src/utils/permissions/yoloClassifier.ts index 1ec78b51..0ae5c110 100644 --- a/src/utils/permissions/yoloClassifier.ts +++ b/src/utils/permissions/yoloClassifier.ts @@ -10,9 +10,9 @@ import { getSessionId, setLastClassifierRequests, } from '../../bootstrap/state.js' -import { getFeatureValue_CACHED_MAY_BE_STALE } from '../../services/analytics/growthbook.js' -import { logEvent } from '../../services/analytics/index.js' -import type { AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS } from '../../services/analytics/metadata.js' +import { getFeatureValue_CACHED_MAY_BE_STALE } from '../../services/analytics-stub.js' +import { logEvent } from '../../services/analytics-stub.js' +import type { AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS } from '../../services/analytics-stub.js' import { getCacheControl } from '../../services/api/claude.js' import { parsePromptTooLongTokenCounts } from '../../services/api/errors.js' import { getDefaultMaxRetries } from '../../services/api/withRetry.js' diff --git a/src/utils/planModeV2.ts b/src/utils/planModeV2.ts index ffacb46d..31639547 100644 --- a/src/utils/planModeV2.ts +++ b/src/utils/planModeV2.ts @@ -1,4 +1,4 @@ -import { getFeatureValue_CACHED_MAY_BE_STALE } from '../services/analytics/growthbook.js' +import { getFeatureValue_CACHED_MAY_BE_STALE } from '../services/analytics-stub.js' import { getRateLimitTier, getSubscriptionType } from './auth.js' import { isEnvDefinedFalsy, isEnvTruthy } from './envUtils.js' diff --git a/src/utils/plugins/fetchTelemetry.ts b/src/utils/plugins/fetchTelemetry.ts index cf30af47..1755fd45 100644 --- a/src/utils/plugins/fetchTelemetry.ts +++ b/src/utils/plugins/fetchTelemetry.ts @@ -15,7 +15,7 @@ import { logEvent, type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS as SafeString, -} from '../../services/analytics/index.js' +} from '../../services/analytics-stub.js' import { OFFICIAL_MARKETPLACE_NAME } from './officialMarketplace.js' export type PluginFetchSource = diff --git a/src/utils/plugins/headlessPluginInstall.ts b/src/utils/plugins/headlessPluginInstall.ts index 2839f433..2f768e17 100644 --- a/src/utils/plugins/headlessPluginInstall.ts +++ b/src/utils/plugins/headlessPluginInstall.ts @@ -9,7 +9,7 @@ * ZIP creation on install and extraction on load transparently. */ -import { logEvent } from '../../services/analytics/index.js' +import { logEvent } from '../../services/analytics-stub.js' import { registerCleanup } from '../cleanupRegistry.js' import { logForDebugging } from '../debug.js' import { withDiagnosticsTiming } from '../diagLogs.js' diff --git a/src/utils/plugins/hintRecommendation.ts b/src/utils/plugins/hintRecommendation.ts index 4c39e1ff..f0a1aa74 100644 --- a/src/utils/plugins/hintRecommendation.ts +++ b/src/utils/plugins/hintRecommendation.ts @@ -10,12 +10,12 @@ * marketplace filtering is hardcoded for v1. */ -import { getFeatureValue_CACHED_MAY_BE_STALE } from '../../services/analytics/growthbook.js' +import { getFeatureValue_CACHED_MAY_BE_STALE } from '../../services/analytics-stub.js' import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, type AnalyticsMetadata_I_VERIFIED_THIS_IS_PII_TAGGED, logEvent, -} from '../../services/analytics/index.js' +} from '../../services/analytics-stub.js' import { type ClaudeCodeHint, hasShownHintThisSession, diff --git a/src/utils/plugins/marketplaceManager.ts b/src/utils/plugins/marketplaceManager.ts index c7c84b61..570c4973 100644 --- a/src/utils/plugins/marketplaceManager.ts +++ b/src/utils/plugins/marketplaceManager.ts @@ -23,7 +23,7 @@ import { writeFile } from 'fs/promises' import isEqual from 'lodash-es/isEqual.js' import memoize from 'lodash-es/memoize.js' import { basename, dirname, isAbsolute, join, resolve, sep } from 'path' -import { getFeatureValue_CACHED_MAY_BE_STALE } from '../../services/analytics/growthbook.js' +import { getFeatureValue_CACHED_MAY_BE_STALE } from '../../services/analytics-stub.js' import { logForDebugging } from '../debug.js' import { isEnvTruthy } from '../envUtils.js' import { diff --git a/src/utils/plugins/officialMarketplaceGcs.ts b/src/utils/plugins/officialMarketplaceGcs.ts index 987636b9..5fc3d773 100644 --- a/src/utils/plugins/officialMarketplaceGcs.ts +++ b/src/utils/plugins/officialMarketplaceGcs.ts @@ -12,8 +12,8 @@ import axios from 'axios' import { chmod, mkdir, readFile, rename, rm, writeFile } from 'fs/promises' import { dirname, join, resolve, sep } from 'path' import { waitForScrollIdle } from '../../bootstrap/state.js' -import type { AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS } from '../../services/analytics/index.js' -import { logEvent } from '../../services/analytics/index.js' +import type { AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS } from '../../services/analytics-stub.js' +import { logEvent } from '../../services/analytics-stub.js' import { logForDebugging } from '../debug.js' import { parseZipModes, unzipFile } from '../dxt/zip.js' import { errorMessage, getErrnoCode } from '../errors.js' diff --git a/src/utils/plugins/officialMarketplaceStartupCheck.ts b/src/utils/plugins/officialMarketplaceStartupCheck.ts index d8fb2eba..d3e6542c 100644 --- a/src/utils/plugins/officialMarketplaceStartupCheck.ts +++ b/src/utils/plugins/officialMarketplaceStartupCheck.ts @@ -9,8 +9,8 @@ */ import { join } from 'path' -import { getFeatureValue_CACHED_MAY_BE_STALE } from '../../services/analytics/growthbook.js' -import { logEvent } from '../../services/analytics/index.js' +import { getFeatureValue_CACHED_MAY_BE_STALE } from '../../services/analytics-stub.js' +import { logEvent } from '../../services/analytics-stub.js' import { getGlobalConfig, saveGlobalConfig } from '../config.js' import { logForDebugging } from '../debug.js' import { isEnvTruthy } from '../envUtils.js' diff --git a/src/utils/plugins/pluginInstallationHelpers.ts b/src/utils/plugins/pluginInstallationHelpers.ts index 1e4c885f..afc33fdc 100644 --- a/src/utils/plugins/pluginInstallationHelpers.ts +++ b/src/utils/plugins/pluginInstallationHelpers.ts @@ -12,7 +12,7 @@ import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, type AnalyticsMetadata_I_VERIFIED_THIS_IS_PII_TAGGED, logEvent, -} from '../../services/analytics/index.js' +} from '../../services/analytics-stub.js' import { getCwd } from '../cwd.js' import { toError } from '../errors.js' import { getFsImplementation } from '../fsOperations.js' @@ -21,7 +21,7 @@ import { getSettingsForSource, updateSettingsForSource, } from '../settings/settings.js' -import { buildPluginTelemetryFields } from '../telemetry/pluginTelemetry.js' +import { buildPluginTelemetryFields } from '../telemetry-stub.js' import { clearAllCaches } from './cacheUtils.js' import { formatDependencyCountSuffix, diff --git a/src/utils/preflightChecks.tsx b/src/utils/preflightChecks.tsx index ca0fe4c1..7f1c4e2e 100644 --- a/src/utils/preflightChecks.tsx +++ b/src/utils/preflightChecks.tsx @@ -1,7 +1,7 @@ import { c as _c } from "react/compiler-runtime"; import axios from 'axios'; import React, { useEffect, useState } from 'react'; -import { logEvent } from 'src/services/analytics/index.js'; +import { logEvent } from '../services/analytics-stub.js'; import { Spinner } from '../components/Spinner.js'; import { getOauthConfig } from '../constants/oauth.js'; import { useTimeout } from '../hooks/useTimeout.js'; diff --git a/src/utils/processUserInput/processBashCommand.tsx b/src/utils/processUserInput/processBashCommand.tsx index 8ab95850..37e62de1 100644 --- a/src/utils/processUserInput/processBashCommand.tsx +++ b/src/utils/processUserInput/processBashCommand.tsx @@ -6,7 +6,7 @@ import type { SetToolJSXFn } from 'src/Tool.js'; import { BashTool } from 'src/tools/BashTool/BashTool.js'; import type { AttachmentMessage, SystemMessage, UserMessage } from 'src/types/message.js'; import type { ShellProgress } from 'src/types/tools.js'; -import { logEvent } from '../../services/analytics/index.js'; +import { logEvent } from '../../services/analytics-stub.js'; import { errorMessage, ShellError } from '../errors.js'; import { createSyntheticUserCaveatMessage, createUserInterruptionMessage, createUserMessage, prepareUserContent } from '../messages.js'; import { resolveDefaultShell } from '../shell/resolveDefaultShell.js'; diff --git a/src/utils/processUserInput/processSlashCommand.tsx b/src/utils/processUserInput/processSlashCommand.tsx index a0bf451b..27ee9c5c 100644 --- a/src/utils/processUserInput/processSlashCommand.tsx +++ b/src/utils/processUserInput/processSlashCommand.tsx @@ -9,7 +9,7 @@ import type { AssistantMessage, AttachmentMessage, Message, NormalizedUserMessag import { addInvokedSkill, getSessionId } from '../../bootstrap/state.js'; import { COMMAND_MESSAGE_TAG, COMMAND_NAME_TAG } from '../../constants/xml.js'; import type { CanUseToolFn } from '../../hooks/useCanUseTool.js'; -import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, type AnalyticsMetadata_I_VERIFIED_THIS_IS_PII_TAGGED, logEvent } from '../../services/analytics/index.js'; +import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, type AnalyticsMetadata_I_VERIFIED_THIS_IS_PII_TAGGED, logEvent } from '../../services/analytics-stub.js'; import { getDumpPromptsPath } from '../../services/api/dumpPrompts.js'; import { buildPostCompactMessages } from '../../services/compact/compact.js'; import { resetMicrocompactState } from '../../services/compact/microCompact.js'; @@ -40,8 +40,8 @@ import { isRestrictedToPluginOnly, isSourceAdminTrusted } from '../settings/plug import { parseSlashCommand } from '../slashCommandParsing.js'; import { sleep } from '../sleep.js'; import { recordSkillUsage } from '../suggestions/skillUsageTracking.js'; -import { logOTelEvent, redactIfDisabled } from '../telemetry/events.js'; -import { buildPluginCommandTelemetryFields } from '../telemetry/pluginTelemetry.js'; +import { logOTelEvent, redactIfDisabled } from '../telemetry-stub.js'; +import { buildPluginCommandTelemetryFields } from '../telemetry-stub.js'; import { getAssistantMessageContentLength } from '../tokens.js'; import { createAgentId } from '../uuid.js'; import { getWorkload } from '../workloadContext.js'; diff --git a/src/utils/processUserInput/processTextPrompt.ts b/src/utils/processUserInput/processTextPrompt.ts index cc91c5b8..ffcaf213 100644 --- a/src/utils/processUserInput/processTextPrompt.ts +++ b/src/utils/processUserInput/processTextPrompt.ts @@ -6,11 +6,11 @@ import type { SystemMessage, UserMessage, } from 'src/types/message.js' -import { logEvent } from '../../services/analytics/index.js' +import { logEvent } from '../../services/analytics-stub.js' import type { PermissionMode } from '../../types/permissions.js' import { createUserMessage } from '../messages.js' -import { logOTelEvent, redactIfDisabled } from '../telemetry/events.js' -import { startInteractionSpan } from '../telemetry/sessionTracing.js' +import { logOTelEvent, redactIfDisabled } from '../telemetry-stub.js' +import { startInteractionSpan } from '../telemetry-stub.js' import { matchesKeepGoingKeyword, matchesNegativeKeyword, diff --git a/src/utils/processUserInput/processUserInput.ts b/src/utils/processUserInput/processUserInput.ts index d5a68c43..93b71e00 100644 --- a/src/utils/processUserInput/processUserInput.ts +++ b/src/utils/processUserInput/processUserInput.ts @@ -6,7 +6,7 @@ import type { } from '@anthropic-ai/sdk/resources/messages.mjs' import { randomUUID } from 'crypto' import type { QuerySource } from 'src/constants/querySource.js' -import { logEvent } from 'src/services/analytics/index.js' +import { logEvent } from '../../services/analytics-stub.js' import { getContentText } from 'src/utils/messages.js' import { findCommand, diff --git a/src/utils/ripgrep.ts b/src/utils/ripgrep.ts index 683da051..d762bf88 100644 --- a/src/utils/ripgrep.ts +++ b/src/utils/ripgrep.ts @@ -3,7 +3,7 @@ import { execFile, spawn } from 'child_process' import memoize from 'lodash-es/memoize.js' import { homedir } from 'os' import * as path from 'path' -import { logEvent } from 'src/services/analytics/index.js' +import { logEvent } from '../services/analytics-stub.js' import { fileURLToPath } from 'url' import { isInBundledMode } from './bundledMode.js' import { logForDebugging } from './debug.js' diff --git a/src/utils/sessionFileAccessHooks.ts b/src/utils/sessionFileAccessHooks.ts index 08d4ed50..9432bfe8 100644 --- a/src/utils/sessionFileAccessHooks.ts +++ b/src/utils/sessionFileAccessHooks.ts @@ -9,7 +9,7 @@ import type { HookInput, HookJSONOutput } from '../entrypoints/agentSdkTypes.js' import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent, -} from '../services/analytics/index.js' +} from '../services/analytics-stub.js' import { FILE_EDIT_TOOL_NAME } from '../tools/FileEditTool/constants.js' import { inputSchema as editInputSchema } from '../tools/FileEditTool/types.js' import { FileReadTool } from '../tools/FileReadTool/FileReadTool.js' diff --git a/src/utils/sessionStorage.ts b/src/utils/sessionStorage.ts index 6d775d6c..bfe7db73 100644 --- a/src/utils/sessionStorage.ts +++ b/src/utils/sessionStorage.ts @@ -20,7 +20,7 @@ import { basename, dirname, join } from 'path' import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent, -} from 'src/services/analytics/index.js' +} from '../services/analytics-stub.js' import { getOriginalCwd, getPlanSlugCache, @@ -32,7 +32,7 @@ import { } from '../bootstrap/state.js' import { builtInCommandNames } from '../commands.js' import { COMMAND_NAME_TAG, TICK_TAG } from '../constants/xml.js' -import { getFeatureValue_CACHED_MAY_BE_STALE } from '../services/analytics/growthbook.js' +import { getFeatureValue_CACHED_MAY_BE_STALE } from '../services/analytics-stub.js' import * as sessionIngress from '../services/api/sessionIngress.js' import { REPL_TOOL_NAME } from '../tools/REPLTool/constants.js' import { diff --git a/src/utils/sessionTitle.ts b/src/utils/sessionTitle.ts index 5a722c88..c88c896b 100644 --- a/src/utils/sessionTitle.ts +++ b/src/utils/sessionTitle.ts @@ -14,7 +14,7 @@ import { z } from 'zod/v4' import { getIsNonInteractiveSession } from '../bootstrap/state.js' -import { logEvent } from '../services/analytics/index.js' +import { logEvent } from '../services/analytics-stub.js' import { queryHaiku } from '../services/api/claude.js' import type { Message } from '../types/message.js' import { logForDebugging } from './debug.js' diff --git a/src/utils/shell/prefix.ts b/src/utils/shell/prefix.ts index e97a37b7..55e8c355 100644 --- a/src/utils/shell/prefix.ts +++ b/src/utils/shell/prefix.ts @@ -9,11 +9,11 @@ import chalk from 'chalk' import type { QuerySource } from '../../constants/querySource.js' -import { getFeatureValue_CACHED_MAY_BE_STALE } from '../../services/analytics/growthbook.js' +import { getFeatureValue_CACHED_MAY_BE_STALE } from '../../services/analytics-stub.js' import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent, -} from '../../services/analytics/index.js' +} from '../../services/analytics-stub.js' import { queryHaiku } from '../../services/api/claude.js' import { startsWithApiErrorPrefix } from '../../services/api/errors.js' import { memoizeWithLRU } from '../memoize.js' diff --git a/src/utils/sideQuery.ts b/src/utils/sideQuery.ts index 4e6d4d73..38def71b 100644 --- a/src/utils/sideQuery.ts +++ b/src/utils/sideQuery.ts @@ -10,12 +10,12 @@ import { getAttributionHeader, getCLISyspromptPrefix, } from '../constants/system.js' -import { logEvent } from '../services/analytics/index.js' -import type { AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS } from '../services/analytics/metadata.js' +import { logEvent } from '../services/analytics-stub.js' +import type { AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS } from '../services/analytics-stub.js' import { getAPIMetadata } from '../services/api/claude.js' import { getAnthropicClient } from '../services/api/client.js' import { getModelBetas, modelSupportsStructuredOutputs } from './betas.js' -import { computeFingerprint } from './fingerprint.js' +import { computeFingerprint } from './fingerprint-stub.js' import { normalizeModelStringForAPI } from './model/model.js' type MessageParam = Anthropic.MessageParam diff --git a/src/utils/sinks.ts b/src/utils/sinks.ts index 386ce6ae..fb26ca26 100644 --- a/src/utils/sinks.ts +++ b/src/utils/sinks.ts @@ -1,4 +1,4 @@ -import { initializeAnalyticsSink } from '../services/analytics/sink.js' +import { initializeAnalyticsSink } from '../services/analytics-stub.js' import { initializeErrorLogSink } from './errorLogSink.js' /** diff --git a/src/utils/skills/skillChangeDetector.ts b/src/utils/skills/skillChangeDetector.ts index a3acb5e2..7860dcab 100644 --- a/src/utils/skills/skillChangeDetector.ts +++ b/src/utils/skills/skillChangeDetector.ts @@ -8,7 +8,7 @@ import { import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent, -} from '../../services/analytics/index.js' +} from '../../services/analytics-stub.js' import { clearSkillCaches, getSkillsPath, diff --git a/src/utils/startupProfiler.ts b/src/utils/startupProfiler.ts index d16b094a..0e5714a9 100644 --- a/src/utils/startupProfiler.ts +++ b/src/utils/startupProfiler.ts @@ -14,7 +14,7 @@ import { getSessionId } from 'src/bootstrap/state.js' import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent, -} from '../services/analytics/index.js' +} from '../services/analytics-stub.js' import { logForDebugging } from './debug.js' import { getClaudeConfigHomeDir, isEnvTruthy } from './envUtils.js' import { getFsImplementation } from './fsOperations.js' diff --git a/src/utils/swarm/inProcessRunner.ts b/src/utils/swarm/inProcessRunner.ts index c85d959e..2c6b53ee 100644 --- a/src/utils/swarm/inProcessRunner.ts +++ b/src/utils/swarm/inProcessRunner.ts @@ -22,7 +22,7 @@ import { import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent, -} from '../../services/analytics/index.js' +} from '../../services/analytics-stub.js' import { getAutoCompactThreshold } from '../../services/compact/autoCompact.js' import { buildPostCompactMessages, @@ -96,7 +96,7 @@ import { readMailbox, writeToMailbox, } from '../teammateMailbox.js' -import { unregisterAgent as unregisterPerfettoAgent } from '../telemetry/perfettoTracing.js' +import { unregisterAgent as unregisterPerfettoAgent } from '../telemetry-stub.js' import { createContentReplacementState } from '../toolResultStorage.js' import { TEAM_LEAD_NAME } from './constants.js' import { diff --git a/src/utils/swarm/spawnInProcess.ts b/src/utils/swarm/spawnInProcess.ts index 7f548f28..9b0c36d8 100644 --- a/src/utils/swarm/spawnInProcess.ts +++ b/src/utils/swarm/spawnInProcess.ts @@ -39,7 +39,7 @@ import { isPerfettoTracingEnabled, registerAgent as registerPerfettoAgent, unregisterAgent as unregisterPerfettoAgent, -} from '../telemetry/perfettoTracing.js' +} from '../telemetry-stub.js' import { removeMemberByAgentId } from './teamHelpers.js' type SetAppStateFn = (updater: (prev: AppState) => AppState) => void diff --git a/src/utils/systemPrompt.ts b/src/utils/systemPrompt.ts index 2059c81b..104ed28b 100644 --- a/src/utils/systemPrompt.ts +++ b/src/utils/systemPrompt.ts @@ -2,7 +2,7 @@ import { feature } from 'bun:bundle' import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent, -} from '../services/analytics/index.js' +} from '../services/analytics-stub.js' import type { ToolUseContext } from '../Tool.js' import type { AgentDefinition } from '../tools/AgentTool/loadAgentsDir.js' import { isBuiltInAgent } from '../tools/AgentTool/loadAgentsDir.js' diff --git a/src/utils/telemetry-stub.ts b/src/utils/telemetry-stub.ts new file mode 100644 index 00000000..9b85f075 --- /dev/null +++ b/src/utils/telemetry-stub.ts @@ -0,0 +1,286 @@ +/** + * Stub file for telemetry functionality + * All functions are no-ops to allow code to compile without telemetry infrastructure + */ + +// No-op telemetry functions +export function logOTelEvent(...args: any[]): void { + // No-op +} + +export function redactIfDisabled(value: any): any { + return value; +} + +export function startInteractionSpan(...args: any[]): any { + return { end: () => {} }; +} + +export function endInteractionSpan(...args: any[]): void { + // No-op +} + +export function logPluginLoadErrors(...args: any[]): void { + // No-op +} + +export function logPluginsEnabledForSession(...args: any[]): void { + // No-op +} + +export function logSkillsLoaded(...args: any[]): void { + // No-op +} + +export function buildPluginCommandTelemetryFields(...args: any[]): Record { + return {}; +} + +export function buildPluginTelemetryFields(...args: any[]): Record { + return {}; +} + +export function isBetaTracingEnabled(): boolean { + return false; +} + +export function clearBetaTracingState(...args: any[]): void { + // No-op +} + +// Perfetto tracing stubs +export function isPerfettoTracingEnabled(): boolean { + return false; +} + +export function registerAgent(...args: any[]): void { + // No-op +} + +export function unregisterAgent(...args: any[]): void { + // No-op +} + +export function startToolSpan(...args: any[]): any { + return { end: () => {} }; +} + +export function endToolSpan(...args: any[]): void { + // No-op +} + +export function startApiSpan(...args: any[]): any { + return { end: () => {} }; +} + +export function endApiSpan(...args: any[]): void { + // No-op +} + +export function recordApiLatency(...args: any[]): void { + // No-op +} + +// Perfetto tracing stubs +export function registerAgent(...args: any[]): void { + // No-op +} + +export function unregisterAgent(...args: any[]): void { + // No-op +} + +export function beginPerfettoSpan(...args: any[]): any { + return { end: () => {} }; +} + +export function endPerfettoSpan(...args: any[]): void { + // No-op +} + +// Instrumentation stubs +export function shutdownTelemetry(...args: any[]): Promise { + return Promise.resolve(); +} + +export function flushTelemetry(...args: any[]): Promise { + return Promise.resolve(); +} + +// Additional telemetry span stubs +export function startToolBlockedOnUserSpan(...args: any[]): any { + return { end: () => {}, setAttribute: () => {} }; +} + +export function startToolSpan(...args: any[]): any { + return { end: () => {}, setAttribute: () => {} }; +} + +export function startCompactSpan(...args: any[]): any { + return { end: () => {}, setAttribute: () => {} }; +} + +export function startQuerySpan(...args: any[]): any { + return { end: () => {}, setAttribute: () => {} }; +} + +export function endSpan(...args: any[]): void { + // No-op +} + +export function setSpanAttribute(...args: any[]): void { + // No-op +} + +// Complete set of telemetry span stubs +export function endToolExecutionSpan(...args: any[]): void { + // No-op +} + +export function startToolExecutionSpan(...args: any[]): any { + return { end: () => {}, setAttribute: () => {} }; +} + +export function endToolBlockedOnUserSpan(...args: any[]): void { + // No-op +} + +export function endToolSpan(...args: any[]): void { + // No-op +} + +export function endHookSpan(...args: any[]): void { + // No-op +} + +export function startHookSpan(...args: any[]): any { + return { end: () => {}, setAttribute: () => {} }; +} + +export function startLLMRequestSpan(...args: any[]): any { + return { end: () => {}, setAttribute: () => {} }; +} + +export function endLLMRequestSpan(...args: any[]): void { + // No-op +} + +export function startUserInputPerfettoSpan(...args: any[]): any { + return { end: () => {} }; +} + +export function endUserInputPerfettoSpan(...args: any[]): void { + // No-op +} + +export function startInteractionPerfettoSpan(...args: any[]): any { + return { end: () => {} }; +} + +export function endInteractionPerfettoSpan(...args: any[]): void { + // No-op +} + +export function startLLMRequestPerfettoSpan(...args: any[]): any { + return { end: () => {} }; +} + +export function endLLMRequestPerfettoSpan(...args: any[]): void { + // No-op +} + +export function startToolPerfettoSpan(...args: any[]): any { + return { end: () => {} }; +} + +export function endToolPerfettoSpan(...args: any[]): void { + // No-op +} + +export function addBetaInteractionAttributes(...args: any[]): void { + // No-op +} + +export function addBetaLLMRequestAttributes(...args: any[]): void { + // No-op +} + +export function addBetaLLMResponseAttributes(...args: any[]): void { + // No-op +} + +export function addBetaToolInputAttributes(...args: any[]): void { + // No-op +} + +export function addBetaToolResultAttributes(...args: any[]): void { + // No-op +} + +export function addToolContentEvent(...args: any[]): void { + // No-op +} + +export function classifyPluginCommandError(...args: any[]): string { + return 'unknown'; +} + +export function emitPerfettoCounter(...args: any[]): void { + // No-op +} + +export function emitPerfettoInstant(...args: any[]): void { + // No-op +} + +export function executeInSpan(callback: () => T): T { + return callback(); +} + +export function getCurrentSpan(): any { + return { end: () => {}, setAttribute: () => {} }; +} + +export function getEnabledVia(): string { + return 'disabled'; +} + +export function getPerfettoEvents(): any[] { + return []; +} + +export function getTelemetryPluginScope(): string { + return ''; +} + +export function hashPluginId(...args: any[]): string { + return ''; +} + +export function initializePerfettoTracing(...args: any[]): void { + // No-op +} + +export function initializeTelemetry(...args: any[]): Promise { + return Promise.resolve(); +} + +export function isEnhancedTelemetryEnabled(): boolean { + return false; +} + +export function isTelemetryEnabled(): boolean { + return false; +} + +export function resetPerfettoTracer(): void { + // No-op +} + +export function truncateContent(...args: any[]): string { + return ''; +} + +export function bootstrapTelemetry(...args: any[]): void { + // No-op +} diff --git a/src/utils/telemetry/betaSessionTracing.ts b/src/utils/telemetry/betaSessionTracing.ts deleted file mode 100644 index 6699721e..00000000 --- a/src/utils/telemetry/betaSessionTracing.ts +++ /dev/null @@ -1,491 +0,0 @@ -/** - * Beta Session Tracing for Claude Code - * - * This module contains beta tracing features enabled when - * ENABLE_BETA_TRACING_DETAILED=1 and BETA_TRACING_ENDPOINT are set. - * - * For external users, tracing is enabled in SDK/headless mode, or in - * interactive mode when the org is allowlisted via the - * tengu_trace_lantern GrowthBook gate. - * For ant users, tracing is enabled in all modes. - * - * Visibility Rules: - * | Content | External | Ant | - * |------------------|----------|------| - * | System prompts | ✅ | ✅ | - * | Model output | ✅ | ✅ | - * | Thinking output | ❌ | ✅ | - * | Tools | ✅ | ✅ | - * | new_context | ✅ | ✅ | - * - * Features: - * - Per-agent message tracking with hash-based deduplication - * - System prompt logging (once per unique hash) - * - Hook execution spans - * - Detailed new_context attributes for LLM requests - */ - -import type { Span } from '@opentelemetry/api' -import { createHash } from 'crypto' -import { getIsNonInteractiveSession } from '../../bootstrap/state.js' -import { getFeatureValue_CACHED_MAY_BE_STALE } from '../../services/analytics/growthbook.js' -import { sanitizeToolNameForAnalytics } from '../../services/analytics/metadata.js' -import type { AssistantMessage, UserMessage } from '../../types/message.js' -import { isEnvTruthy } from '../envUtils.js' -import { jsonParse, jsonStringify } from '../slowOperations.js' -import { logOTelEvent } from './events.js' - -// Message type for API calls (UserMessage or AssistantMessage) -type APIMessage = UserMessage | AssistantMessage - -/** - * Track hashes we've already logged this session (system prompts, tools, etc). - * - * WHY: System prompts and tool schemas are large and rarely change within a session. - * Sending full content on every request would be wasteful. Instead, we hash and - * only log the full content once per unique hash. - */ -const seenHashes = new Set() - -/** - * Track the last reported message hash per querySource (agent) for incremental context. - * - * WHY: When debugging traces, we want to see what NEW information was added each turn, - * not the entire conversation history (which can be huge). By tracking the last message - * we reported per agent, we can compute and send only the delta (new messages since - * the last request). This is tracked per-agent (querySource) because different agents - * (main thread, subagents, warmup requests) have independent conversation contexts. - */ -const lastReportedMessageHash = new Map() - -/** - * Clear tracking state after compaction. - * Old hashes are irrelevant once messages have been replaced. - */ -export function clearBetaTracingState(): void { - seenHashes.clear() - lastReportedMessageHash.clear() -} - -const MAX_CONTENT_SIZE = 60 * 1024 // 60KB (Honeycomb limit is 64KB, staying safe) - -/** - * Check if beta detailed tracing is enabled. - * - Requires ENABLE_BETA_TRACING_DETAILED=1 and BETA_TRACING_ENDPOINT - * - For external users, enabled in SDK/headless mode OR when org is - * allowlisted via the tengu_trace_lantern GrowthBook gate - */ -export function isBetaTracingEnabled(): boolean { - const baseEnabled = - isEnvTruthy(process.env.ENABLE_BETA_TRACING_DETAILED) && - Boolean(process.env.BETA_TRACING_ENDPOINT) - - if (!baseEnabled) { - return false - } - - // For external users, enable in SDK/headless mode OR when org is allowlisted. - // Gate reads from disk cache, so first run after allowlisting returns false; - // works from second run onward (same behavior as enhanced_telemetry_beta). - if (process.env.USER_TYPE !== 'ant') { - return ( - getIsNonInteractiveSession() || - getFeatureValue_CACHED_MAY_BE_STALE('tengu_trace_lantern', false) - ) - } - - return true -} - -/** - * Truncate content to fit within Honeycomb limits. - */ -export function truncateContent( - content: string, - maxSize: number = MAX_CONTENT_SIZE, -): { content: string; truncated: boolean } { - if (content.length <= maxSize) { - return { content, truncated: false } - } - - return { - content: - content.slice(0, maxSize) + - '\n\n[TRUNCATED - Content exceeds 60KB limit]', - truncated: true, - } -} - -/** - * Generate a short hash (first 12 hex chars of SHA-256). - */ -function shortHash(content: string): string { - return createHash('sha256').update(content).digest('hex').slice(0, 12) -} - -/** - * Generate a hash for a system prompt. - */ -function hashSystemPrompt(systemPrompt: string): string { - return `sp_${shortHash(systemPrompt)}` -} - -/** - * Generate a hash for a message based on its content. - */ -function hashMessage(message: APIMessage): string { - const content = jsonStringify(message.message.content) - return `msg_${shortHash(content)}` -} - -// Regex to detect content wrapped in tags -const SYSTEM_REMINDER_REGEX = - /^\n?([\s\S]*?)\n?<\/system-reminder>$/ - -/** - * Check if text is entirely a system reminder (wrapped in tags). - * Returns the inner content if it is, null otherwise. - */ -function extractSystemReminderContent(text: string): string | null { - const match = text.trim().match(SYSTEM_REMINDER_REGEX) - return match && match[1] ? match[1].trim() : null -} - -/** - * Result of formatting messages - separates regular content from system reminders. - */ -interface FormattedMessages { - contextParts: string[] - systemReminders: string[] -} - -/** - * Format user messages for new_context display, separating system reminders. - * Only handles user messages (assistant messages are filtered out before this is called). - */ -function formatMessagesForContext(messages: UserMessage[]): FormattedMessages { - const contextParts: string[] = [] - const systemReminders: string[] = [] - - for (const message of messages) { - const content = message.message.content - if (typeof content === 'string') { - const reminderContent = extractSystemReminderContent(content) - if (reminderContent) { - systemReminders.push(reminderContent) - } else { - contextParts.push(`[USER]\n${content}`) - } - } else if (Array.isArray(content)) { - for (const block of content) { - if (block.type === 'text') { - const reminderContent = extractSystemReminderContent(block.text) - if (reminderContent) { - systemReminders.push(reminderContent) - } else { - contextParts.push(`[USER]\n${block.text}`) - } - } else if (block.type === 'tool_result') { - const resultContent = - typeof block.content === 'string' - ? block.content - : jsonStringify(block.content) - // Tool results can also contain system reminders (e.g., malware warning) - const reminderContent = extractSystemReminderContent(resultContent) - if (reminderContent) { - systemReminders.push(reminderContent) - } else { - contextParts.push( - `[TOOL RESULT: ${block.tool_use_id}]\n${resultContent}`, - ) - } - } - } - } - } - - return { contextParts, systemReminders } -} - -export interface LLMRequestNewContext { - /** System prompt (typically only on first request or if changed) */ - systemPrompt?: string - /** Query source identifying the agent/purpose (e.g., 'repl_main_thread', 'agent:builtin') */ - querySource?: string - /** Tool schemas sent with the request */ - tools?: string -} - -/** - * Add beta attributes to an interaction span. - * Adds new_context with the user prompt. - */ -export function addBetaInteractionAttributes( - span: Span, - userPrompt: string, -): void { - if (!isBetaTracingEnabled()) { - return - } - - const { content: truncatedPrompt, truncated } = truncateContent( - `[USER PROMPT]\n${userPrompt}`, - ) - span.setAttributes({ - new_context: truncatedPrompt, - ...(truncated && { - new_context_truncated: true, - new_context_original_length: userPrompt.length, - }), - }) -} - -/** - * Add beta attributes to an LLM request span. - * Handles system prompt logging and new_context computation. - */ -export function addBetaLLMRequestAttributes( - span: Span, - newContext?: LLMRequestNewContext, - messagesForAPI?: APIMessage[], -): void { - if (!isBetaTracingEnabled()) { - return - } - - // Add system prompt info to the span - if (newContext?.systemPrompt) { - const promptHash = hashSystemPrompt(newContext.systemPrompt) - const preview = newContext.systemPrompt.slice(0, 500) - - // Always add hash, preview, and length to the span - span.setAttribute('system_prompt_hash', promptHash) - span.setAttribute('system_prompt_preview', preview) - span.setAttribute('system_prompt_length', newContext.systemPrompt.length) - - // Log the full system prompt only once per unique hash this session - if (!seenHashes.has(promptHash)) { - seenHashes.add(promptHash) - - // Truncate for the log if needed - const { content: truncatedPrompt, truncated } = truncateContent( - newContext.systemPrompt, - ) - - void logOTelEvent('system_prompt', { - system_prompt_hash: promptHash, - system_prompt: truncatedPrompt, - system_prompt_length: String(newContext.systemPrompt.length), - ...(truncated && { system_prompt_truncated: 'true' }), - }) - } - } - - // Add tools info to the span - if (newContext?.tools) { - try { - const toolsArray = jsonParse(newContext.tools) as Record< - string, - unknown - >[] - - // Build array of {name, hash} for each tool - const toolsWithHashes = toolsArray.map(tool => { - const toolJson = jsonStringify(tool) - const toolHash = shortHash(toolJson) - return { - name: typeof tool.name === 'string' ? tool.name : 'unknown', - hash: toolHash, - json: toolJson, - } - }) - - // Set span attribute with array of name/hash pairs - span.setAttribute( - 'tools', - jsonStringify( - toolsWithHashes.map(({ name, hash }) => ({ name, hash })), - ), - ) - span.setAttribute('tools_count', toolsWithHashes.length) - - // Log each tool's full description once per unique hash - for (const { name, hash, json } of toolsWithHashes) { - if (!seenHashes.has(`tool_${hash}`)) { - seenHashes.add(`tool_${hash}`) - - const { content: truncatedTool, truncated } = truncateContent(json) - - void logOTelEvent('tool', { - tool_name: sanitizeToolNameForAnalytics(name), - tool_hash: hash, - tool: truncatedTool, - ...(truncated && { tool_truncated: 'true' }), - }) - } - } - } catch { - // If parsing fails, log the raw tools string - span.setAttribute('tools_parse_error', true) - } - } - - // Add new_context using hash-based tracking (visible to all users) - if (messagesForAPI && messagesForAPI.length > 0 && newContext?.querySource) { - const querySource = newContext.querySource - const lastHash = lastReportedMessageHash.get(querySource) - - // Find where the last reported message is in the array - let startIndex = 0 - if (lastHash) { - for (let i = 0; i < messagesForAPI.length; i++) { - const msg = messagesForAPI[i] - if (msg && hashMessage(msg) === lastHash) { - startIndex = i + 1 // Start after the last reported message - break - } - } - // If lastHash not found, startIndex stays 0 (send everything) - } - - // Get new messages (filter out assistant messages - we only want user input/tool results) - const newMessages = messagesForAPI - .slice(startIndex) - .filter((m): m is UserMessage => m.type === 'user') - - if (newMessages.length > 0) { - // Format new messages, separating system reminders from regular content - const { contextParts, systemReminders } = - formatMessagesForContext(newMessages) - - // Set new_context (regular user content and tool results) - if (contextParts.length > 0) { - const fullContext = contextParts.join('\n\n---\n\n') - const { content: truncatedContext, truncated } = - truncateContent(fullContext) - - span.setAttributes({ - new_context: truncatedContext, - new_context_message_count: newMessages.length, - ...(truncated && { - new_context_truncated: true, - new_context_original_length: fullContext.length, - }), - }) - } - - // Set system_reminders as a separate attribute - if (systemReminders.length > 0) { - const fullReminders = systemReminders.join('\n\n---\n\n') - const { content: truncatedReminders, truncated: remindersTruncated } = - truncateContent(fullReminders) - - span.setAttributes({ - system_reminders: truncatedReminders, - system_reminders_count: systemReminders.length, - ...(remindersTruncated && { - system_reminders_truncated: true, - system_reminders_original_length: fullReminders.length, - }), - }) - } - - // Update last reported hash to the last message in the array - const lastMessage = messagesForAPI[messagesForAPI.length - 1] - if (lastMessage) { - lastReportedMessageHash.set(querySource, hashMessage(lastMessage)) - } - } - } -} - -/** - * Add beta attributes to endLLMRequestSpan. - * Handles model_output and thinking_output truncation. - */ -export function addBetaLLMResponseAttributes( - endAttributes: Record, - metadata?: { - modelOutput?: string - thinkingOutput?: string - }, -): void { - if (!isBetaTracingEnabled() || !metadata) { - return - } - - // Add model_output (text content) - visible to all users - if (metadata.modelOutput !== undefined) { - const { content: modelOutput, truncated: outputTruncated } = - truncateContent(metadata.modelOutput) - endAttributes['response.model_output'] = modelOutput - if (outputTruncated) { - endAttributes['response.model_output_truncated'] = true - endAttributes['response.model_output_original_length'] = - metadata.modelOutput.length - } - } - - // Add thinking_output - ant-only - if ( - process.env.USER_TYPE === 'ant' && - metadata.thinkingOutput !== undefined - ) { - const { content: thinkingOutput, truncated: thinkingTruncated } = - truncateContent(metadata.thinkingOutput) - endAttributes['response.thinking_output'] = thinkingOutput - if (thinkingTruncated) { - endAttributes['response.thinking_output_truncated'] = true - endAttributes['response.thinking_output_original_length'] = - metadata.thinkingOutput.length - } - } -} - -/** - * Add beta attributes to startToolSpan. - * Adds tool_input with the serialized tool input. - */ -export function addBetaToolInputAttributes( - span: Span, - toolName: string, - toolInput: string, -): void { - if (!isBetaTracingEnabled()) { - return - } - - const { content: truncatedInput, truncated } = truncateContent( - `[TOOL INPUT: ${toolName}]\n${toolInput}`, - ) - span.setAttributes({ - tool_input: truncatedInput, - ...(truncated && { - tool_input_truncated: true, - tool_input_original_length: toolInput.length, - }), - }) -} - -/** - * Add beta attributes to endToolSpan. - * Adds new_context with the tool result. - */ -export function addBetaToolResultAttributes( - endAttributes: Record, - toolName: string | number | boolean, - toolResult: string, -): void { - if (!isBetaTracingEnabled()) { - return - } - - const { content: truncatedResult, truncated } = truncateContent( - `[TOOL RESULT: ${toolName}]\n${toolResult}`, - ) - endAttributes['new_context'] = truncatedResult - if (truncated) { - endAttributes['new_context_truncated'] = true - endAttributes['new_context_original_length'] = toolResult.length - } -} diff --git a/src/utils/telemetry/bigqueryExporter.ts b/src/utils/telemetry/bigqueryExporter.ts deleted file mode 100644 index 2f935c45..00000000 --- a/src/utils/telemetry/bigqueryExporter.ts +++ /dev/null @@ -1,252 +0,0 @@ -import type { Attributes, HrTime } from '@opentelemetry/api' -import { type ExportResult, ExportResultCode } from '@opentelemetry/core' -import { - AggregationTemporality, - type MetricData, - type DataPoint as OTelDataPoint, - type PushMetricExporter, - type ResourceMetrics, -} from '@opentelemetry/sdk-metrics' -import axios from 'axios' -import { checkMetricsEnabled } from 'src/services/api/metricsOptOut.js' -import { getIsNonInteractiveSession } from '../../bootstrap/state.js' -import { getSubscriptionType, isClaudeAISubscriber } from '../auth.js' -import { checkHasTrustDialogAccepted } from '../config.js' -import { logForDebugging } from '../debug.js' -import { errorMessage, toError } from '../errors.js' -import { getAuthHeaders } from '../http.js' -import { logError } from '../log.js' -import { jsonStringify } from '../slowOperations.js' -import { getClaudeCodeUserAgent } from '../userAgent.js' - -type DataPoint = { - attributes: Record - value: number - timestamp: string -} - -type Metric = { - name: string - description?: string - unit?: string - data_points: DataPoint[] -} - -type InternalMetricsPayload = { - resource_attributes: Record - metrics: Metric[] -} - -export class BigQueryMetricsExporter implements PushMetricExporter { - private readonly endpoint: string - private readonly timeout: number - private pendingExports: Promise[] = [] - private isShutdown = false - - constructor(options: { timeout?: number } = {}) { - const defaultEndpoint = 'https://api.anthropic.com/api/claude_code/metrics' - - if ( - process.env.USER_TYPE === 'ant' && - process.env.ANT_CLAUDE_CODE_METRICS_ENDPOINT - ) { - this.endpoint = - process.env.ANT_CLAUDE_CODE_METRICS_ENDPOINT + - '/api/claude_code/metrics' - } else { - this.endpoint = defaultEndpoint - } - - this.timeout = options.timeout || 5000 - } - - async export( - metrics: ResourceMetrics, - resultCallback: (result: ExportResult) => void, - ): Promise { - if (this.isShutdown) { - resultCallback({ - code: ExportResultCode.FAILED, - error: new Error('Exporter has been shutdown'), - }) - return - } - - const exportPromise = this.doExport(metrics, resultCallback) - this.pendingExports.push(exportPromise) - - // Clean up completed exports - void exportPromise.finally(() => { - const index = this.pendingExports.indexOf(exportPromise) - if (index > -1) { - void this.pendingExports.splice(index, 1) - } - }) - } - - private async doExport( - metrics: ResourceMetrics, - resultCallback: (result: ExportResult) => void, - ): Promise { - try { - // Skip if trust not established in interactive mode - // This prevents triggering apiKeyHelper before trust dialog - const hasTrust = - checkHasTrustDialogAccepted() || getIsNonInteractiveSession() - if (!hasTrust) { - logForDebugging( - 'BigQuery metrics export: trust not established, skipping', - ) - resultCallback({ code: ExportResultCode.SUCCESS }) - return - } - - // Check organization-level metrics opt-out - const metricsStatus = await checkMetricsEnabled() - if (!metricsStatus.enabled) { - logForDebugging('Metrics export disabled by organization setting') - resultCallback({ code: ExportResultCode.SUCCESS }) - return - } - - const payload = this.transformMetricsForInternal(metrics) - - const authResult = getAuthHeaders() - if (authResult.error) { - logForDebugging(`Metrics export failed: ${authResult.error}`) - resultCallback({ - code: ExportResultCode.FAILED, - error: new Error(authResult.error), - }) - return - } - - const headers: Record = { - 'Content-Type': 'application/json', - 'User-Agent': getClaudeCodeUserAgent(), - ...authResult.headers, - } - - const response = await axios.post(this.endpoint, payload, { - timeout: this.timeout, - headers, - }) - - logForDebugging('BigQuery metrics exported successfully') - logForDebugging( - `BigQuery API Response: ${jsonStringify(response.data, null, 2)}`, - ) - resultCallback({ code: ExportResultCode.SUCCESS }) - } catch (error) { - logForDebugging(`BigQuery metrics export failed: ${errorMessage(error)}`) - logError(error) - resultCallback({ - code: ExportResultCode.FAILED, - error: toError(error), - }) - } - } - - private transformMetricsForInternal( - metrics: ResourceMetrics, - ): InternalMetricsPayload { - const attrs = metrics.resource.attributes - - const resourceAttributes: Record = { - 'service.name': (attrs['service.name'] as string) || 'claude-code', - 'service.version': (attrs['service.version'] as string) || 'unknown', - 'os.type': (attrs['os.type'] as string) || 'unknown', - 'os.version': (attrs['os.version'] as string) || 'unknown', - 'host.arch': (attrs['host.arch'] as string) || 'unknown', - 'aggregation.temporality': - this.selectAggregationTemporality() === AggregationTemporality.DELTA - ? 'delta' - : 'cumulative', - } - - // Only add wsl.version if it exists (omit instead of default) - if (attrs['wsl.version']) { - resourceAttributes['wsl.version'] = attrs['wsl.version'] as string - } - - // Add customer type and subscription type - if (isClaudeAISubscriber()) { - resourceAttributes['user.customer_type'] = 'claude_ai' - const subscriptionType = getSubscriptionType() - if (subscriptionType) { - resourceAttributes['user.subscription_type'] = subscriptionType - } - } else { - resourceAttributes['user.customer_type'] = 'api' - } - - const transformed = { - resource_attributes: resourceAttributes, - metrics: metrics.scopeMetrics.flatMap(scopeMetric => - scopeMetric.metrics.map(metric => ({ - name: metric.descriptor.name, - description: metric.descriptor.description, - unit: metric.descriptor.unit, - data_points: this.extractDataPoints(metric), - })), - ), - } - - return transformed - } - - private extractDataPoints(metric: MetricData): DataPoint[] { - const dataPoints = metric.dataPoints || [] - - return dataPoints - .filter( - (point): point is OTelDataPoint => - typeof point.value === 'number', - ) - .map(point => ({ - attributes: this.convertAttributes(point.attributes), - value: point.value, - timestamp: this.hrTimeToISOString( - point.endTime || point.startTime || [Date.now() / 1000, 0], - ), - })) - } - - async shutdown(): Promise { - this.isShutdown = true - await this.forceFlush() - logForDebugging('BigQuery metrics exporter shutdown complete') - } - - async forceFlush(): Promise { - await Promise.all(this.pendingExports) - logForDebugging('BigQuery metrics exporter flush complete') - } - - private convertAttributes( - attributes: Attributes | undefined, - ): Record { - const result: Record = {} - if (attributes) { - for (const [key, value] of Object.entries(attributes)) { - if (value !== undefined && value !== null) { - result[key] = String(value) - } - } - } - return result - } - - private hrTimeToISOString(hrTime: HrTime): string { - const [seconds, nanoseconds] = hrTime - const date = new Date(seconds * 1000 + nanoseconds / 1000000) - return date.toISOString() - } - - selectAggregationTemporality(): AggregationTemporality { - // DO NOT CHANGE THIS TO CUMULATIVE - // It would mess up the aggregation of metrics - // for CC Productivity metrics dashboard - return AggregationTemporality.DELTA - } -} diff --git a/src/utils/telemetry/events.ts b/src/utils/telemetry/events.ts deleted file mode 100644 index f93b8aaa..00000000 --- a/src/utils/telemetry/events.ts +++ /dev/null @@ -1,75 +0,0 @@ -import type { Attributes } from '@opentelemetry/api' -import { getEventLogger, getPromptId } from 'src/bootstrap/state.js' -import { logForDebugging } from '../debug.js' -import { isEnvTruthy } from '../envUtils.js' -import { getTelemetryAttributes } from '../telemetryAttributes.js' - -// Monotonically increasing counter for ordering events within a session -let eventSequence = 0 - -// Track whether we've already warned about a null event logger to avoid spamming -let hasWarnedNoEventLogger = false - -function isUserPromptLoggingEnabled() { - return isEnvTruthy(process.env.OTEL_LOG_USER_PROMPTS) -} - -export function redactIfDisabled(content: string): string { - return isUserPromptLoggingEnabled() ? content : '' -} - -export async function logOTelEvent( - eventName: string, - metadata: { [key: string]: string | undefined } = {}, -): Promise { - const eventLogger = getEventLogger() - if (!eventLogger) { - if (!hasWarnedNoEventLogger) { - hasWarnedNoEventLogger = true - logForDebugging( - `[3P telemetry] Event dropped (no event logger initialized): ${eventName}`, - { level: 'warn' }, - ) - } - return - } - - // Skip logging in test environment - if (process.env.NODE_ENV === 'test') { - return - } - - const attributes: Attributes = { - ...getTelemetryAttributes(), - 'event.name': eventName, - 'event.timestamp': new Date().toISOString(), - 'event.sequence': eventSequence++, - } - - // Add prompt ID to events (but not metrics, where it would cause unbounded cardinality) - const promptId = getPromptId() - if (promptId) { - attributes['prompt.id'] = promptId - } - - // Workspace directory from the desktop app (host path). Events only — - // filesystem paths are too high-cardinality for metric dimensions, and - // the BQ metrics pipeline must never see them. - const workspaceDir = process.env.CLAUDE_CODE_WORKSPACE_HOST_PATHS - if (workspaceDir) { - attributes['workspace.host_paths'] = workspaceDir.split('|') - } - - // Add metadata as attributes - all values are already strings - for (const [key, value] of Object.entries(metadata)) { - if (value !== undefined) { - attributes[key] = value - } - } - - // Emit log record as an event - eventLogger.emit({ - body: `claude_code.${eventName}`, - attributes, - }) -} diff --git a/src/utils/telemetry/instrumentation.ts b/src/utils/telemetry/instrumentation.ts deleted file mode 100644 index 224f0481..00000000 --- a/src/utils/telemetry/instrumentation.ts +++ /dev/null @@ -1,825 +0,0 @@ -import { DiagLogLevel, diag, trace } from '@opentelemetry/api' -import { logs } from '@opentelemetry/api-logs' -// OTLP/Prometheus exporters are dynamically imported inside the protocol -// switch statements below. A process uses at most one protocol variant per -// signal, but static imports would load all 6 (~1.2MB) on every startup. -import { - envDetector, - hostDetector, - osDetector, - resourceFromAttributes, -} from '@opentelemetry/resources' -import { - BatchLogRecordProcessor, - ConsoleLogRecordExporter, - LoggerProvider, -} from '@opentelemetry/sdk-logs' -import { - ConsoleMetricExporter, - MeterProvider, - PeriodicExportingMetricReader, -} from '@opentelemetry/sdk-metrics' -import { - BasicTracerProvider, - BatchSpanProcessor, - ConsoleSpanExporter, -} from '@opentelemetry/sdk-trace-base' -import { - ATTR_SERVICE_NAME, - ATTR_SERVICE_VERSION, - SEMRESATTRS_HOST_ARCH, -} from '@opentelemetry/semantic-conventions' -import { HttpsProxyAgent } from 'https-proxy-agent' -import { - getLoggerProvider, - getMeterProvider, - getTracerProvider, - setEventLogger, - setLoggerProvider, - setMeterProvider, - setTracerProvider, -} from 'src/bootstrap/state.js' -import { - getOtelHeadersFromHelper, - getSubscriptionType, - is1PApiCustomer, - isClaudeAISubscriber, -} from 'src/utils/auth.js' -import { getPlatform, getWslVersion } from 'src/utils/platform.js' - -import { getCACertificates } from '../caCerts.js' -import { registerCleanup } from '../cleanupRegistry.js' -import { getHasFormattedOutput, logForDebugging } from '../debug.js' -import { isEnvTruthy } from '../envUtils.js' -import { errorMessage } from '../errors.js' -import { getMTLSConfig } from '../mtls.js' -import { getProxyUrl, shouldBypassProxy } from '../proxy.js' -import { getSettings_DEPRECATED } from '../settings/settings.js' -import { jsonStringify } from '../slowOperations.js' -import { profileCheckpoint } from '../startupProfiler.js' -import { isBetaTracingEnabled } from './betaSessionTracing.js' -import { BigQueryMetricsExporter } from './bigqueryExporter.js' -import { ClaudeCodeDiagLogger } from './logger.js' -import { initializePerfettoTracing } from './perfettoTracing.js' -import { - endInteractionSpan, - isEnhancedTelemetryEnabled, -} from './sessionTracing.js' - -const DEFAULT_METRICS_EXPORT_INTERVAL_MS = 60000 -const DEFAULT_LOGS_EXPORT_INTERVAL_MS = 5000 -const DEFAULT_TRACES_EXPORT_INTERVAL_MS = 5000 - -class TelemetryTimeoutError extends Error {} - -function telemetryTimeout(ms: number, message: string): Promise { - return new Promise((_, reject) => { - setTimeout( - (rej: (e: Error) => void, msg: string) => - rej(new TelemetryTimeoutError(msg)), - ms, - reject, - message, - ).unref() - }) -} - -export function bootstrapTelemetry() { - if (process.env.USER_TYPE === 'ant') { - // Read from ANT_ prefixed variables that are defined at build time - if (process.env.ANT_OTEL_METRICS_EXPORTER) { - process.env.OTEL_METRICS_EXPORTER = process.env.ANT_OTEL_METRICS_EXPORTER - } - if (process.env.ANT_OTEL_LOGS_EXPORTER) { - process.env.OTEL_LOGS_EXPORTER = process.env.ANT_OTEL_LOGS_EXPORTER - } - if (process.env.ANT_OTEL_TRACES_EXPORTER) { - process.env.OTEL_TRACES_EXPORTER = process.env.ANT_OTEL_TRACES_EXPORTER - } - if (process.env.ANT_OTEL_EXPORTER_OTLP_PROTOCOL) { - process.env.OTEL_EXPORTER_OTLP_PROTOCOL = - process.env.ANT_OTEL_EXPORTER_OTLP_PROTOCOL - } - if (process.env.ANT_OTEL_EXPORTER_OTLP_ENDPOINT) { - process.env.OTEL_EXPORTER_OTLP_ENDPOINT = - process.env.ANT_OTEL_EXPORTER_OTLP_ENDPOINT - } - if (process.env.ANT_OTEL_EXPORTER_OTLP_HEADERS) { - process.env.OTEL_EXPORTER_OTLP_HEADERS = - process.env.ANT_OTEL_EXPORTER_OTLP_HEADERS - } - } - - // Set default tempoality to 'delta' because it's the more sane default - if (!process.env.OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE) { - process.env.OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE = 'delta' - } -} - -// Per OTEL spec, "none" means "no automatically configured exporter for this signal". -// https://opentelemetry.io/docs/specs/otel/configuration/sdk-environment-variables/#exporter-selection -export function parseExporterTypes(value: string | undefined): string[] { - return (value || '') - .trim() - .split(',') - .filter(Boolean) - .map(t => t.trim()) - .filter(t => t !== 'none') -} - -async function getOtlpReaders() { - const exporterTypes = parseExporterTypes(process.env.OTEL_METRICS_EXPORTER) - const exportInterval = parseInt( - process.env.OTEL_METRIC_EXPORT_INTERVAL || - DEFAULT_METRICS_EXPORT_INTERVAL_MS.toString(), - ) - - const exporters = [] - for (const exporterType of exporterTypes) { - if (exporterType === 'console') { - // Custom console exporter that shows resource attributes - const consoleExporter = new ConsoleMetricExporter() - const originalExport = consoleExporter.export.bind(consoleExporter) - - consoleExporter.export = (metrics, callback) => { - // Log resource attributes once at the start - if (metrics.resource && metrics.resource.attributes) { - // The console exporter is for debugging, so console output is intentional here - - logForDebugging('\n=== Resource Attributes ===') - logForDebugging(jsonStringify(metrics.resource.attributes)) - logForDebugging('===========================\n') - } - - return originalExport(metrics, callback) - } - - exporters.push(consoleExporter) - } else if (exporterType === 'otlp') { - const protocol = - process.env.OTEL_EXPORTER_OTLP_METRICS_PROTOCOL?.trim() || - process.env.OTEL_EXPORTER_OTLP_PROTOCOL?.trim() - - const httpConfig = getOTLPExporterConfig() - - switch (protocol) { - case 'grpc': { - // Lazy-import to keep @grpc/grpc-js (~700KB) out of the telemetry chunk - // when the protocol is http/protobuf (ant default) or http/json. - const { OTLPMetricExporter } = await import( - '@opentelemetry/exporter-metrics-otlp-grpc' - ) - exporters.push(new OTLPMetricExporter()) - break - } - case 'http/json': { - const { OTLPMetricExporter } = await import( - '@opentelemetry/exporter-metrics-otlp-http' - ) - exporters.push(new OTLPMetricExporter(httpConfig)) - break - } - case 'http/protobuf': { - const { OTLPMetricExporter } = await import( - '@opentelemetry/exporter-metrics-otlp-proto' - ) - exporters.push(new OTLPMetricExporter(httpConfig)) - break - } - default: - throw new Error( - `Unknown protocol set in OTEL_EXPORTER_OTLP_METRICS_PROTOCOL or OTEL_EXPORTER_OTLP_PROTOCOL env var: ${protocol}`, - ) - } - } else if (exporterType === 'prometheus') { - const { PrometheusExporter } = await import( - '@opentelemetry/exporter-prometheus' - ) - exporters.push(new PrometheusExporter()) - } else { - throw new Error( - `Unknown exporter type set in OTEL_EXPORTER_OTLP_METRICS_PROTOCOL or OTEL_EXPORTER_OTLP_PROTOCOL env var: ${exporterType}`, - ) - } - } - - return exporters.map(exporter => { - if ('export' in exporter) { - return new PeriodicExportingMetricReader({ - exporter, - exportIntervalMillis: exportInterval, - }) - } - return exporter - }) -} - -async function getOtlpLogExporters() { - const exporterTypes = parseExporterTypes(process.env.OTEL_LOGS_EXPORTER) - - const protocol = - process.env.OTEL_EXPORTER_OTLP_LOGS_PROTOCOL?.trim() || - process.env.OTEL_EXPORTER_OTLP_PROTOCOL?.trim() - const endpoint = process.env.OTEL_EXPORTER_OTLP_ENDPOINT - - logForDebugging( - `[3P telemetry] getOtlpLogExporters: types=${jsonStringify(exporterTypes)}, protocol=${protocol}, endpoint=${endpoint}`, - ) - - const exporters = [] - for (const exporterType of exporterTypes) { - if (exporterType === 'console') { - exporters.push(new ConsoleLogRecordExporter()) - } else if (exporterType === 'otlp') { - const httpConfig = getOTLPExporterConfig() - - switch (protocol) { - case 'grpc': { - const { OTLPLogExporter } = await import( - '@opentelemetry/exporter-logs-otlp-grpc' - ) - exporters.push(new OTLPLogExporter()) - break - } - case 'http/json': { - const { OTLPLogExporter } = await import( - '@opentelemetry/exporter-logs-otlp-http' - ) - exporters.push(new OTLPLogExporter(httpConfig)) - break - } - case 'http/protobuf': { - const { OTLPLogExporter } = await import( - '@opentelemetry/exporter-logs-otlp-proto' - ) - exporters.push(new OTLPLogExporter(httpConfig)) - break - } - default: - throw new Error( - `Unknown protocol set in OTEL_EXPORTER_OTLP_LOGS_PROTOCOL or OTEL_EXPORTER_OTLP_PROTOCOL env var: ${protocol}`, - ) - } - } else { - throw new Error( - `Unknown exporter type set in OTEL_LOGS_EXPORTER env var: ${exporterType}`, - ) - } - } - - return exporters -} - -async function getOtlpTraceExporters() { - const exporterTypes = parseExporterTypes(process.env.OTEL_TRACES_EXPORTER) - - const exporters = [] - for (const exporterType of exporterTypes) { - if (exporterType === 'console') { - exporters.push(new ConsoleSpanExporter()) - } else if (exporterType === 'otlp') { - const protocol = - process.env.OTEL_EXPORTER_OTLP_TRACES_PROTOCOL?.trim() || - process.env.OTEL_EXPORTER_OTLP_PROTOCOL?.trim() - - const httpConfig = getOTLPExporterConfig() - - switch (protocol) { - case 'grpc': { - const { OTLPTraceExporter } = await import( - '@opentelemetry/exporter-trace-otlp-grpc' - ) - exporters.push(new OTLPTraceExporter()) - break - } - case 'http/json': { - const { OTLPTraceExporter } = await import( - '@opentelemetry/exporter-trace-otlp-http' - ) - exporters.push(new OTLPTraceExporter(httpConfig)) - break - } - case 'http/protobuf': { - const { OTLPTraceExporter } = await import( - '@opentelemetry/exporter-trace-otlp-proto' - ) - exporters.push(new OTLPTraceExporter(httpConfig)) - break - } - default: - throw new Error( - `Unknown protocol set in OTEL_EXPORTER_OTLP_TRACES_PROTOCOL or OTEL_EXPORTER_OTLP_PROTOCOL env var: ${protocol}`, - ) - } - } else { - throw new Error( - `Unknown exporter type set in OTEL_TRACES_EXPORTER env var: ${exporterType}`, - ) - } - } - - return exporters -} - -export function isTelemetryEnabled() { - return isEnvTruthy(process.env.CLAUDE_CODE_ENABLE_TELEMETRY) -} - -function getBigQueryExportingReader() { - const bigqueryExporter = new BigQueryMetricsExporter() - return new PeriodicExportingMetricReader({ - exporter: bigqueryExporter, - exportIntervalMillis: 5 * 60 * 1000, // 5mins for BigQuery metrics exporter to reduce load - }) -} - -function isBigQueryMetricsEnabled() { - // BigQuery metrics are enabled for: - // 1. API customers (excluding Claude.ai subscribers and Bedrock/Vertex) - // 2. Claude for Enterprise (C4E) users - // 3. Claude for Teams users - const subscriptionType = getSubscriptionType() - const isC4EOrTeamUser = - isClaudeAISubscriber() && - (subscriptionType === 'enterprise' || subscriptionType === 'team') - - return is1PApiCustomer() || isC4EOrTeamUser -} - -/** - * Initialize beta tracing - a separate code path for detailed debugging. - * Uses BETA_TRACING_ENDPOINT instead of OTEL_EXPORTER_OTLP_ENDPOINT. - */ -async function initializeBetaTracing( - resource: ReturnType, -): Promise { - const endpoint = process.env.BETA_TRACING_ENDPOINT - if (!endpoint) { - return - } - - const [{ OTLPTraceExporter }, { OTLPLogExporter }] = await Promise.all([ - import('@opentelemetry/exporter-trace-otlp-http'), - import('@opentelemetry/exporter-logs-otlp-http'), - ]) - - const httpConfig = { - url: `${endpoint}/v1/traces`, - } - - const logHttpConfig = { - url: `${endpoint}/v1/logs`, - } - - // Initialize trace exporter - const traceExporter = new OTLPTraceExporter(httpConfig) - const spanProcessor = new BatchSpanProcessor(traceExporter, { - scheduledDelayMillis: DEFAULT_TRACES_EXPORT_INTERVAL_MS, - }) - - const tracerProvider = new BasicTracerProvider({ - resource, - spanProcessors: [spanProcessor], - }) - - trace.setGlobalTracerProvider(tracerProvider) - setTracerProvider(tracerProvider) - - // Initialize log exporter - const logExporter = new OTLPLogExporter(logHttpConfig) - const loggerProvider = new LoggerProvider({ - resource, - processors: [ - new BatchLogRecordProcessor(logExporter, { - scheduledDelayMillis: DEFAULT_LOGS_EXPORT_INTERVAL_MS, - }), - ], - }) - - logs.setGlobalLoggerProvider(loggerProvider) - setLoggerProvider(loggerProvider) - - // Initialize event logger - const eventLogger = logs.getLogger( - 'com.anthropic.claude_code.events', - MACRO.VERSION, - ) - setEventLogger(eventLogger) - - // Setup flush handlers - flush both logs AND traces - process.on('beforeExit', async () => { - await loggerProvider?.forceFlush() - await tracerProvider?.forceFlush() - }) - - process.on('exit', () => { - void loggerProvider?.forceFlush() - void tracerProvider?.forceFlush() - }) -} - -export async function initializeTelemetry() { - profileCheckpoint('telemetry_init_start') - bootstrapTelemetry() - - // Console exporters call console.dir on a timer (5s logs/traces, 60s - // metrics), writing pretty-printed objects to stdout. In stream-json - // mode stdout is the SDK message channel; the first line (`{`) breaks - // the SDK's line reader. Stripped here (not main.tsx) because init.ts - // re-runs applyConfigEnvironmentVariables() inside initializeTelemetry- - // AfterTrust for remote-managed-settings users, and bootstrapTelemetry - // above copies ANT_OTEL_* for ant users — both would undo an earlier strip. - if (getHasFormattedOutput()) { - for (const key of [ - 'OTEL_METRICS_EXPORTER', - 'OTEL_LOGS_EXPORTER', - 'OTEL_TRACES_EXPORTER', - ] as const) { - const v = process.env[key] - if (v?.includes('console')) { - process.env[key] = v - .split(',') - .map(s => s.trim()) - .filter(s => s !== 'console') - .join(',') - } - } - } - - diag.setLogger(new ClaudeCodeDiagLogger(), DiagLogLevel.ERROR) - - // Initialize Perfetto tracing (independent of OTEL) - // Enable via CLAUDE_CODE_PERFETTO_TRACE=1 or CLAUDE_CODE_PERFETTO_TRACE= - initializePerfettoTracing() - - const readers = [] - - // Add customer exporters (if enabled) - const telemetryEnabled = isTelemetryEnabled() - logForDebugging( - `[3P telemetry] isTelemetryEnabled=${telemetryEnabled} (CLAUDE_CODE_ENABLE_TELEMETRY=${process.env.CLAUDE_CODE_ENABLE_TELEMETRY})`, - ) - if (telemetryEnabled) { - readers.push(...(await getOtlpReaders())) - } - - // Add BigQuery exporter (for API customers, C4E users, and internal users) - if (isBigQueryMetricsEnabled()) { - readers.push(getBigQueryExportingReader()) - } - - // Create base resource with service attributes - const platform = getPlatform() - const baseAttributes: Record = { - [ATTR_SERVICE_NAME]: 'claude-code', - [ATTR_SERVICE_VERSION]: MACRO.VERSION, - } - - // Add WSL-specific attributes if running on WSL - if (platform === 'wsl') { - const wslVersion = getWslVersion() - if (wslVersion) { - baseAttributes['wsl.version'] = wslVersion - } - } - - const baseResource = resourceFromAttributes(baseAttributes) - - // Use OpenTelemetry detectors - const osResource = resourceFromAttributes( - osDetector.detect().attributes || {}, - ) - - // Extract only host.arch from hostDetector - const hostDetected = hostDetector.detect() - const hostArchAttributes = hostDetected.attributes?.[SEMRESATTRS_HOST_ARCH] - ? { - [SEMRESATTRS_HOST_ARCH]: hostDetected.attributes[SEMRESATTRS_HOST_ARCH], - } - : {} - const hostArchResource = resourceFromAttributes(hostArchAttributes) - - const envResource = resourceFromAttributes( - envDetector.detect().attributes || {}, - ) - - // Merge resources - later resources take precedence - const resource = baseResource - .merge(osResource) - .merge(hostArchResource) - .merge(envResource) - - // Check if beta tracing is enabled - this is a separate code path - // Available to all users who set ENABLE_BETA_TRACING_DETAILED=1 and BETA_TRACING_ENDPOINT - if (isBetaTracingEnabled()) { - void initializeBetaTracing(resource).catch(e => - logForDebugging(`Beta tracing init failed: ${e}`, { level: 'error' }), - ) - // Still set up meter provider for metrics (but skip regular logs/traces setup) - const meterProvider = new MeterProvider({ - resource, - views: [], - readers, - }) - setMeterProvider(meterProvider) - - // Register shutdown for beta tracing - const shutdownTelemetry = async () => { - const timeoutMs = parseInt( - process.env.CLAUDE_CODE_OTEL_SHUTDOWN_TIMEOUT_MS || '2000', - ) - try { - endInteractionSpan() - - // Force flush + shutdown together inside the timeout. Previously forceFlush - // was awaited unbounded BEFORE the race, blocking exit on slow OTLP endpoints. - // Each provider's flush→shutdown is chained independently so a slow logger - // flush doesn't delay meterProvider/tracerProvider shutdown (no waterfall). - const loggerProvider = getLoggerProvider() - const tracerProvider = getTracerProvider() - - const chains: Promise[] = [meterProvider.shutdown()] - if (loggerProvider) { - chains.push( - loggerProvider.forceFlush().then(() => loggerProvider.shutdown()), - ) - } - if (tracerProvider) { - chains.push( - tracerProvider.forceFlush().then(() => tracerProvider.shutdown()), - ) - } - - await Promise.race([ - Promise.all(chains), - telemetryTimeout(timeoutMs, 'OpenTelemetry shutdown timeout'), - ]) - } catch { - // Ignore shutdown errors - } - } - registerCleanup(shutdownTelemetry) - - return meterProvider.getMeter('com.anthropic.claude_code', MACRO.VERSION) - } - - const meterProvider = new MeterProvider({ - resource, - views: [], - readers, - }) - - // Store reference in state for flushing - setMeterProvider(meterProvider) - - // Initialize logs if telemetry is enabled - if (telemetryEnabled) { - const logExporters = await getOtlpLogExporters() - logForDebugging( - `[3P telemetry] Created ${logExporters.length} log exporter(s)`, - ) - - if (logExporters.length > 0) { - const loggerProvider = new LoggerProvider({ - resource, - // Add batch processors for each exporter - processors: logExporters.map( - exporter => - new BatchLogRecordProcessor(exporter, { - scheduledDelayMillis: parseInt( - process.env.OTEL_LOGS_EXPORT_INTERVAL || - DEFAULT_LOGS_EXPORT_INTERVAL_MS.toString(), - ), - }), - ), - }) - - // Register the logger provider globally - logs.setGlobalLoggerProvider(loggerProvider) - setLoggerProvider(loggerProvider) - - // Initialize event logger - const eventLogger = logs.getLogger( - 'com.anthropic.claude_code.events', - MACRO.VERSION, - ) - setEventLogger(eventLogger) - logForDebugging('[3P telemetry] Event logger set successfully') - - // 'beforeExit' is emitted when Node.js empties its event loop and has no additional work to schedule. - // Unlike 'exit', it allows us to perform async operations, so it works well for letting - // network requests complete before the process exits naturally. - process.on('beforeExit', async () => { - await loggerProvider?.forceFlush() - // Also flush traces - they use BatchSpanProcessor which needs explicit flush - const tracerProvider = getTracerProvider() - await tracerProvider?.forceFlush() - }) - - process.on('exit', () => { - // Final attempt to flush logs and traces - void loggerProvider?.forceFlush() - void getTracerProvider()?.forceFlush() - }) - } - } - - // Initialize tracing if enhanced telemetry is enabled (BETA) - if (telemetryEnabled && isEnhancedTelemetryEnabled()) { - const traceExporters = await getOtlpTraceExporters() - if (traceExporters.length > 0) { - // Create span processors for each exporter - const spanProcessors = traceExporters.map( - exporter => - new BatchSpanProcessor(exporter, { - scheduledDelayMillis: parseInt( - process.env.OTEL_TRACES_EXPORT_INTERVAL || - DEFAULT_TRACES_EXPORT_INTERVAL_MS.toString(), - ), - }), - ) - - const tracerProvider = new BasicTracerProvider({ - resource, - spanProcessors, - }) - - // Register the tracer provider globally - trace.setGlobalTracerProvider(tracerProvider) - setTracerProvider(tracerProvider) - } - } - - // Shutdown metrics and logs on exit (flushes and closes exporters) - const shutdownTelemetry = async () => { - const timeoutMs = parseInt( - process.env.CLAUDE_CODE_OTEL_SHUTDOWN_TIMEOUT_MS || '2000', - ) - - try { - // End any active interaction span before shutdown - endInteractionSpan() - - const shutdownPromises = [meterProvider.shutdown()] - const loggerProvider = getLoggerProvider() - if (loggerProvider) { - shutdownPromises.push(loggerProvider.shutdown()) - } - const tracerProvider = getTracerProvider() - if (tracerProvider) { - shutdownPromises.push(tracerProvider.shutdown()) - } - - await Promise.race([ - Promise.all(shutdownPromises), - telemetryTimeout(timeoutMs, 'OpenTelemetry shutdown timeout'), - ]) - } catch (error) { - if (error instanceof Error && error.message.includes('timeout')) { - logForDebugging( - ` -OpenTelemetry telemetry flush timed out after ${timeoutMs}ms - -To resolve this issue, you can: -1. Increase the timeout by setting CLAUDE_CODE_OTEL_SHUTDOWN_TIMEOUT_MS env var (e.g., 5000 for 5 seconds) -2. Check if your OpenTelemetry backend is experiencing scalability issues -3. Disable OpenTelemetry by unsetting CLAUDE_CODE_ENABLE_TELEMETRY env var - -Current timeout: ${timeoutMs}ms -`, - { level: 'error' }, - ) - } - throw error - } - } - - // Always register shutdown (internal metrics are always enabled) - registerCleanup(shutdownTelemetry) - - return meterProvider.getMeter('com.anthropic.claude_code', MACRO.VERSION) -} - -/** - * Flush all pending telemetry data immediately. - * This should be called before logout or org switching to prevent data leakage. - */ -export async function flushTelemetry(): Promise { - const meterProvider = getMeterProvider() - if (!meterProvider) { - return - } - - const timeoutMs = parseInt( - process.env.CLAUDE_CODE_OTEL_FLUSH_TIMEOUT_MS || '5000', - ) - - try { - const flushPromises = [meterProvider.forceFlush()] - const loggerProvider = getLoggerProvider() - if (loggerProvider) { - flushPromises.push(loggerProvider.forceFlush()) - } - const tracerProvider = getTracerProvider() - if (tracerProvider) { - flushPromises.push(tracerProvider.forceFlush()) - } - - await Promise.race([ - Promise.all(flushPromises), - telemetryTimeout(timeoutMs, 'OpenTelemetry flush timeout'), - ]) - - logForDebugging('Telemetry flushed successfully') - } catch (error) { - if (error instanceof TelemetryTimeoutError) { - logForDebugging( - `Telemetry flush timed out after ${timeoutMs}ms. Some metrics may not be exported.`, - { level: 'warn' }, - ) - } else { - logForDebugging(`Telemetry flush failed: ${errorMessage(error)}`, { - level: 'error', - }) - } - // Don't throw - allow logout to continue even if flush fails - } -} - -function parseOtelHeadersEnvVar(): Record { - const headers: Record = {} - const envHeaders = process.env.OTEL_EXPORTER_OTLP_HEADERS - if (envHeaders) { - for (const pair of envHeaders.split(',')) { - const [key, ...valueParts] = pair.split('=') - if (key && valueParts.length > 0) { - headers[key.trim()] = valueParts.join('=').trim() - } - } - } - return headers -} - -/** - * Get configuration for OTLP exporters including: - * - HTTP agent options (proxy, mTLS) - * - Dynamic headers via otelHeadersHelper or static headers from env var - */ -function getOTLPExporterConfig() { - const proxyUrl = getProxyUrl() - const mtlsConfig = getMTLSConfig() - const settings = getSettings_DEPRECATED() - - // Build base config - const config: Record = {} - - // Parse static headers from env var once (doesn't change at runtime) - const staticHeaders = parseOtelHeadersEnvVar() - - // If otelHeadersHelper is configured, use async headers function for dynamic refresh - // Otherwise just return static headers if any exist - if (settings?.otelHeadersHelper) { - config.headers = async (): Promise> => { - const dynamicHeaders = getOtelHeadersFromHelper() - return { ...staticHeaders, ...dynamicHeaders } - } - } else if (Object.keys(staticHeaders).length > 0) { - config.headers = async (): Promise> => staticHeaders - } - - // Check if we should bypass proxy for OTEL endpoint - const otelEndpoint = process.env.OTEL_EXPORTER_OTLP_ENDPOINT - if (!proxyUrl || (otelEndpoint && shouldBypassProxy(otelEndpoint))) { - // No proxy configured or OTEL endpoint should bypass proxy - const caCerts = getCACertificates() - if (mtlsConfig || caCerts) { - config.httpAgentOptions = { - ...mtlsConfig, - ...(caCerts && { ca: caCerts }), - } - } - return config - } - - // Return an HttpAgentFactory function that creates our proxy agent - const caCerts = getCACertificates() - const agentFactory = (_protocol: string) => { - // Create and return the proxy agent with mTLS and CA cert config - const proxyAgent = - mtlsConfig || caCerts - ? new HttpsProxyAgent(proxyUrl, { - ...(mtlsConfig && { - cert: mtlsConfig.cert, - key: mtlsConfig.key, - passphrase: mtlsConfig.passphrase, - }), - ...(caCerts && { ca: caCerts }), - }) - : new HttpsProxyAgent(proxyUrl) - - return proxyAgent - } - - config.httpAgentOptions = agentFactory - return config -} diff --git a/src/utils/telemetry/logger.ts b/src/utils/telemetry/logger.ts deleted file mode 100644 index 0f080f58..00000000 --- a/src/utils/telemetry/logger.ts +++ /dev/null @@ -1,26 +0,0 @@ -import type { DiagLogger } from '@opentelemetry/api' -import { logForDebugging } from '../debug.js' -import { logError } from '../log.js' -export class ClaudeCodeDiagLogger implements DiagLogger { - error(message: string, ..._: unknown[]) { - logError(new Error(message)) - logForDebugging(`[3P telemetry] OTEL diag error: ${message}`, { - level: 'error', - }) - } - warn(message: string, ..._: unknown[]) { - logError(new Error(message)) - logForDebugging(`[3P telemetry] OTEL diag warn: ${message}`, { - level: 'warn', - }) - } - info(_message: string, ..._args: unknown[]) { - return - } - debug(_message: string, ..._args: unknown[]) { - return - } - verbose(_message: string, ..._args: unknown[]) { - return - } -} diff --git a/src/utils/telemetry/pluginTelemetry.ts b/src/utils/telemetry/pluginTelemetry.ts deleted file mode 100644 index 30600e74..00000000 --- a/src/utils/telemetry/pluginTelemetry.ts +++ /dev/null @@ -1,289 +0,0 @@ -/** - * Plugin telemetry helpers — shared field builders for plugin lifecycle events. - * - * Implements the twin-column privacy pattern: every user-defined-name field - * emits both a raw value (routed to PII-tagged _PROTO_* BQ columns) and a - * redacted twin (real name iff marketplace ∈ allowlist, else 'third-party'). - * - * plugin_id_hash provides an opaque per-plugin aggregation key with no privacy - * dependency — sha256(name@marketplace + FIXED_SALT) truncated to 16 chars. - * This answers distinct-count and per-plugin-trend questions that the - * redacted column can't, without exposing user-defined names. - */ - -import { createHash } from 'crypto' -import { sep } from 'path' -import { - type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, - type AnalyticsMetadata_I_VERIFIED_THIS_IS_PII_TAGGED, - logEvent, -} from '../../services/analytics/index.js' -import type { - LoadedPlugin, - PluginError, - PluginManifest, -} from '../../types/plugin.js' -import { - isOfficialMarketplaceName, - parsePluginIdentifier, -} from '../plugins/pluginIdentifier.js' - -// builtinPlugins.ts:BUILTIN_MARKETPLACE_NAME — inlined to avoid the cycle -// through commands.js. Marketplace schemas.ts enforces 'builtin' is reserved. -const BUILTIN_MARKETPLACE_NAME = 'builtin' - -// Fixed salt for plugin_id_hash. Same constant across all repos and emission -// sites. Not per-org, not rotated — per-org salt would defeat cross-org -// distinct-count, rotation would break trend lines. Customers can compute the -// same hash on their known plugin names to reverse-match their own telemetry. -const PLUGIN_ID_HASH_SALT = 'claude-plugin-telemetry-v1' - -/** - * Opaque per-plugin aggregation key. Input is the name@marketplace string as - * it appears in enabledPlugins keys, lowercased on the marketplace suffix for - * reproducibility. 16-char truncation keeps BQ GROUP BY cardinality manageable - * while making collisions negligible at projected 10k-plugin scale. Name case - * is preserved in both branches (enabledPlugins keys are case-sensitive). - */ -export function hashPluginId(name: string, marketplace?: string): string { - const key = marketplace ? `${name}@${marketplace.toLowerCase()}` : name - return createHash('sha256') - .update(key + PLUGIN_ID_HASH_SALT) - .digest('hex') - .slice(0, 16) -} - -/** - * 4-value scope enum for plugin origin. Distinct from PluginScope - * (managed/user/project/local) which is installation-target — this is - * marketplace-origin. - * - * - official: from an allowlisted Anthropic marketplace - * - default-bundle: ships with product (@builtin), auto-enabled - * - org: enterprise admin-pushed via managed settings (policySettings) - * - user-local: user added marketplace or local plugin - */ -export type TelemetryPluginScope = - | 'official' - | 'org' - | 'user-local' - | 'default-bundle' - -export function getTelemetryPluginScope( - name: string, - marketplace: string | undefined, - managedNames: Set | null, -): TelemetryPluginScope { - if (marketplace === BUILTIN_MARKETPLACE_NAME) return 'default-bundle' - if (isOfficialMarketplaceName(marketplace)) return 'official' - if (managedNames?.has(name)) return 'org' - return 'user-local' -} - -/** - * How a plugin arrived in the session. Splits self-selected from org-pushed - * — plugin_scope alone doesn't (an official plugin can be user-installed OR - * org-pushed; both are scope='official'). - */ -export type EnabledVia = - | 'user-install' - | 'org-policy' - | 'default-enable' - | 'seed-mount' - -/** How a skill/command invocation was triggered. */ -export type InvocationTrigger = - | 'user-slash' - | 'claude-proactive' - | 'nested-skill' - -/** Where a skill invocation executes. */ -export type SkillExecutionContext = 'fork' | 'inline' | 'remote' - -/** How a plugin install was initiated. */ -export type InstallSource = - | 'cli-explicit' - | 'ui-discover' - | 'ui-suggestion' - | 'deep-link' - -export function getEnabledVia( - plugin: LoadedPlugin, - managedNames: Set | null, - seedDirs: string[], -): EnabledVia { - if (plugin.isBuiltin) return 'default-enable' - if (managedNames?.has(plugin.name)) return 'org-policy' - // Trailing sep: /opt/plugins must not match /opt/plugins-extra - if ( - seedDirs.some(dir => - plugin.path.startsWith(dir.endsWith(sep) ? dir : dir + sep), - ) - ) { - return 'seed-mount' - } - return 'user-install' -} - -/** - * Common plugin telemetry fields keyed off name@marketplace. Returns the - * hash, scope enum, and the redacted-twin columns. Callers add the raw - * _PROTO_* fields separately (those require the PII-tagged marker type). - */ -export function buildPluginTelemetryFields( - name: string, - marketplace: string | undefined, - managedNames: Set | null = null, -): { - plugin_id_hash: AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS - plugin_scope: AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS - plugin_name_redacted: AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS - marketplace_name_redacted: AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS - is_official_plugin: boolean -} { - const scope = getTelemetryPluginScope(name, marketplace, managedNames) - // Both official marketplaces and builtin plugins are Anthropic-controlled - // — safe to expose real names in the redacted columns. - const isAnthropicControlled = - scope === 'official' || scope === 'default-bundle' - return { - plugin_id_hash: hashPluginId( - name, - marketplace, - ) as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, - plugin_scope: - scope as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, - plugin_name_redacted: (isAnthropicControlled - ? name - : 'third-party') as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, - marketplace_name_redacted: (isAnthropicControlled && marketplace - ? marketplace - : 'third-party') as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, - is_official_plugin: isAnthropicControlled, - } -} - -/** - * Per-invocation callers (SkillTool, processSlashCommand) pass - * managedNames=null — the session-level tengu_plugin_enabled_for_session - * event carries the authoritative plugin_scope, and per-invocation rows can - * join on plugin_id_hash to recover it. This keeps hot-path call sites free - * of the extra settings read. - */ -export function buildPluginCommandTelemetryFields( - pluginInfo: { pluginManifest: PluginManifest; repository: string }, - managedNames: Set | null = null, -): ReturnType { - const { marketplace } = parsePluginIdentifier(pluginInfo.repository) - return buildPluginTelemetryFields( - pluginInfo.pluginManifest.name, - marketplace, - managedNames, - ) -} - -/** - * Emit tengu_plugin_enabled_for_session once per enabled plugin at session - * start. Supplements tengu_skill_loaded (which still fires per-skill) — use - * this for plugin-level aggregates instead of DISTINCT-on-prefix hacks. - * A plugin with 5 skills emits 5 skill_loaded rows but 1 of these. - */ -export function logPluginsEnabledForSession( - plugins: LoadedPlugin[], - managedNames: Set | null, - seedDirs: string[], -): void { - for (const plugin of plugins) { - const { marketplace } = parsePluginIdentifier(plugin.repository) - - logEvent('tengu_plugin_enabled_for_session', { - _PROTO_plugin_name: - plugin.name as AnalyticsMetadata_I_VERIFIED_THIS_IS_PII_TAGGED, - ...(marketplace && { - _PROTO_marketplace_name: - marketplace as AnalyticsMetadata_I_VERIFIED_THIS_IS_PII_TAGGED, - }), - ...buildPluginTelemetryFields(plugin.name, marketplace, managedNames), - enabled_via: getEnabledVia( - plugin, - managedNames, - seedDirs, - ) as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, - skill_path_count: - (plugin.skillsPath ? 1 : 0) + (plugin.skillsPaths?.length ?? 0), - command_path_count: - (plugin.commandsPath ? 1 : 0) + (plugin.commandsPaths?.length ?? 0), - has_mcp: plugin.manifest.mcpServers !== undefined, - has_hooks: plugin.hooksConfig !== undefined, - ...(plugin.manifest.version && { - version: plugin.manifest - .version as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, - }), - }) - } -} - -/** - * Bounded-cardinality error bucket for CLI plugin operation failures. - * Maps free-form error messages to 5 stable categories so dashboard - * GROUP BY stays tractable. - */ -export type PluginCommandErrorCategory = - | 'network' - | 'not-found' - | 'permission' - | 'validation' - | 'unknown' - -export function classifyPluginCommandError( - error: unknown, -): PluginCommandErrorCategory { - const msg = String((error as { message?: unknown })?.message ?? error) - if ( - /ENOTFOUND|ECONNREFUSED|EAI_AGAIN|ETIMEDOUT|ECONNRESET|network|Could not resolve|Connection refused|timed out/i.test( - msg, - ) - ) { - return 'network' - } - if (/\b404\b|not found|does not exist|no such plugin/i.test(msg)) { - return 'not-found' - } - if (/\b40[13]\b|EACCES|EPERM|permission denied|unauthorized/i.test(msg)) { - return 'permission' - } - if (/invalid|malformed|schema|validation|parse error/i.test(msg)) { - return 'validation' - } - return 'unknown' -} - -/** - * Emit tengu_plugin_load_failed once per error surfaced by session-start - * plugin loading. Pairs with tengu_plugin_enabled_for_session so dashboards - * can compute a load-success rate. PluginError.type is already a bounded - * enum — use it directly as error_category. - */ -export function logPluginLoadErrors( - errors: PluginError[], - managedNames: Set | null, -): void { - for (const err of errors) { - const { name, marketplace } = parsePluginIdentifier(err.source) - // Not all PluginError variants carry a plugin name (some have pluginId, - // some are marketplace-level). Use the 'plugin' property if present, - // fall back to the name parsed from err.source. - const pluginName = 'plugin' in err && err.plugin ? err.plugin : name - logEvent('tengu_plugin_load_failed', { - error_category: - err.type as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, - _PROTO_plugin_name: - pluginName as AnalyticsMetadata_I_VERIFIED_THIS_IS_PII_TAGGED, - ...(marketplace && { - _PROTO_marketplace_name: - marketplace as AnalyticsMetadata_I_VERIFIED_THIS_IS_PII_TAGGED, - }), - ...buildPluginTelemetryFields(pluginName, marketplace, managedNames), - }) - } -} diff --git a/src/utils/telemetry/skillLoadedEvent.ts b/src/utils/telemetry/skillLoadedEvent.ts deleted file mode 100644 index a84a58bb..00000000 --- a/src/utils/telemetry/skillLoadedEvent.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { getSkillToolCommands } from '../../commands.js' -import { - type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, - type AnalyticsMetadata_I_VERIFIED_THIS_IS_PII_TAGGED, - logEvent, -} from '../../services/analytics/index.js' -import { getCharBudget } from '../../tools/SkillTool/prompt.js' - -/** - * Logs a tengu_skill_loaded event for each skill available at session startup. - * This enables analytics on which skills are available across sessions. - */ -export async function logSkillsLoaded( - cwd: string, - contextWindowTokens: number, -): Promise { - const skills = await getSkillToolCommands(cwd) - const skillBudget = getCharBudget(contextWindowTokens) - - for (const skill of skills) { - if (skill.type !== 'prompt') continue - - logEvent('tengu_skill_loaded', { - // _PROTO_skill_name routes to the privileged skill_name BQ column. - // Unredacted names don't go in additional_metadata. - _PROTO_skill_name: - skill.name as AnalyticsMetadata_I_VERIFIED_THIS_IS_PII_TAGGED, - skill_source: - skill.source as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, - skill_loaded_from: - skill.loadedFrom as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, - skill_budget: skillBudget, - ...(skill.kind && { - skill_kind: - skill.kind as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, - }), - }) - } -} diff --git a/src/utils/telemetryAttributes-stub.ts b/src/utils/telemetryAttributes-stub.ts new file mode 100644 index 00000000..2801c3d5 --- /dev/null +++ b/src/utils/telemetryAttributes-stub.ts @@ -0,0 +1,16 @@ +/** + * Stub file for telemetry attributes functionality + * All functions are no-ops to allow code to compile without telemetry attributes infrastructure + */ + +export function getTelemetryAttributes(...args: any[]): Record { + return {}; +} + +export function setTelemetryAttribute(...args: any[]): void { + // No-op +} + +export function getTelemetryAttribute(key: string): any { + return undefined; +} diff --git a/src/utils/telemetryAttributes.ts b/src/utils/telemetryAttributes.ts deleted file mode 100644 index 2038c104..00000000 --- a/src/utils/telemetryAttributes.ts +++ /dev/null @@ -1,71 +0,0 @@ -import type { Attributes } from '@opentelemetry/api' -import { getSessionId } from 'src/bootstrap/state.js' -import { getOauthAccountInfo } from './auth.js' -import { getOrCreateUserID } from './config.js' -import { envDynamic } from './envDynamic.js' -import { isEnvTruthy } from './envUtils.js' -import { toTaggedId } from './taggedId.js' - -// Default configuration for metrics cardinality -const METRICS_CARDINALITY_DEFAULTS = { - OTEL_METRICS_INCLUDE_SESSION_ID: true, - OTEL_METRICS_INCLUDE_VERSION: false, - OTEL_METRICS_INCLUDE_ACCOUNT_UUID: true, -} - -function shouldIncludeAttribute( - envVar: keyof typeof METRICS_CARDINALITY_DEFAULTS, -): boolean { - const defaultValue = METRICS_CARDINALITY_DEFAULTS[envVar] - const envValue = process.env[envVar] - - if (envValue === undefined) { - return defaultValue - } - - return isEnvTruthy(envValue) -} - -export function getTelemetryAttributes(): Attributes { - const userId = getOrCreateUserID() - const sessionId = getSessionId() - - const attributes: Attributes = { - 'user.id': userId, - } - - if (shouldIncludeAttribute('OTEL_METRICS_INCLUDE_SESSION_ID')) { - attributes['session.id'] = sessionId - } - if (shouldIncludeAttribute('OTEL_METRICS_INCLUDE_VERSION')) { - attributes['app.version'] = MACRO.VERSION - } - - // Only include OAuth account data when actively using OAuth authentication - const oauthAccount = getOauthAccountInfo() - if (oauthAccount) { - const orgId = oauthAccount.organizationUuid - const email = oauthAccount.emailAddress - const accountUuid = oauthAccount.accountUuid - - if (orgId) attributes['organization.id'] = orgId - if (email) attributes['user.email'] = email - - if ( - accountUuid && - shouldIncludeAttribute('OTEL_METRICS_INCLUDE_ACCOUNT_UUID') - ) { - attributes['user.account_uuid'] = accountUuid - attributes['user.account_id'] = - process.env.CLAUDE_CODE_ACCOUNT_TAGGED_ID || - toTaggedId('user', accountUuid) - } - } - - // Add terminal type if available - if (envDynamic.terminal) { - attributes['terminal.type'] = envDynamic.terminal - } - - return attributes -} diff --git a/src/utils/teleport.tsx b/src/utils/teleport.tsx index 4be98a0a..32422e72 100644 --- a/src/utils/teleport.tsx +++ b/src/utils/teleport.tsx @@ -3,8 +3,8 @@ import chalk from 'chalk'; import { randomUUID } from 'crypto'; import React from 'react'; import { getOriginalCwd, getSessionId } from 'src/bootstrap/state.js'; -import { checkGate_CACHED_OR_BLOCKING } from 'src/services/analytics/growthbook.js'; -import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent } from 'src/services/analytics/index.js'; +import { checkGate_CACHED_OR_BLOCKING } from '../services/analytics-stub.js'; +import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent } from '../services/analytics-stub.js'; import { isPolicyAllowed } from 'src/services/policyLimits/index.js'; import { z } from 'zod/v4'; import { getTeleportErrors, TeleportError, type TeleportLocalErrorType } from '../components/TeleportError.js'; diff --git a/src/utils/teleport/gitBundle.ts b/src/utils/teleport/gitBundle.ts index 0e53c5dc..b6e52101 100644 --- a/src/utils/teleport/gitBundle.ts +++ b/src/utils/teleport/gitBundle.ts @@ -13,8 +13,8 @@ import { stat, unlink } from 'fs/promises' import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent, -} from 'src/services/analytics/index.js' -import { getFeatureValue_CACHED_MAY_BE_STALE } from '../../services/analytics/growthbook.js' +} from '../../services/analytics-stub.js' +import { getFeatureValue_CACHED_MAY_BE_STALE } from '../../services/analytics-stub.js' import { type FilesApiConfig, uploadFile } from '../../services/api/filesApi.js' import { getCwd } from '../cwd.js' import { logForDebugging } from '../debug.js' diff --git a/src/utils/thinking.ts b/src/utils/thinking.ts index b37fe42d..04c374c6 100644 --- a/src/utils/thinking.ts +++ b/src/utils/thinking.ts @@ -1,7 +1,7 @@ // biome-ignore-all assist/source/organizeImports: ANT-ONLY import markers must not be reordered import type { Theme } from './theme.js' import { feature } from 'bun:bundle' -import { getFeatureValue_CACHED_MAY_BE_STALE } from '../services/analytics/growthbook.js' +import { getFeatureValue_CACHED_MAY_BE_STALE } from '../services/analytics-stub.js' import { getCanonicalName } from './model/model.js' import { get3PModelCapabilityOverride } from './model/modelSupportOverrides.js' import { getAPIProvider } from './model/providers.js' diff --git a/src/utils/toolResultStorage.ts b/src/utils/toolResultStorage.ts index f4dfef32..67245500 100644 --- a/src/utils/toolResultStorage.ts +++ b/src/utils/toolResultStorage.ts @@ -12,9 +12,9 @@ import { MAX_TOOL_RESULT_BYTES, MAX_TOOL_RESULTS_PER_MESSAGE_CHARS, } from '../constants/toolLimits.js' -import { getFeatureValue_CACHED_MAY_BE_STALE } from '../services/analytics/growthbook.js' -import { logEvent } from '../services/analytics/index.js' -import { sanitizeToolNameForAnalytics } from '../services/analytics/metadata.js' +import { getFeatureValue_CACHED_MAY_BE_STALE } from '../services/analytics-stub.js' +import { logEvent } from '../services/analytics-stub.js' +import { sanitizeToolNameForAnalytics } from '../services/analytics-stub.js' import type { Message } from '../types/message.js' import { logForDebugging } from './debug.js' import { getErrnoCode, toError } from './errors.js' diff --git a/src/utils/toolSearch.ts b/src/utils/toolSearch.ts index 5f9a001e..3393957e 100644 --- a/src/utils/toolSearch.ts +++ b/src/utils/toolSearch.ts @@ -7,11 +7,11 @@ */ import memoize from 'lodash-es/memoize.js' -import { getFeatureValue_CACHED_MAY_BE_STALE } from '../services/analytics/growthbook.js' +import { getFeatureValue_CACHED_MAY_BE_STALE } from '../services/analytics-stub.js' import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent, -} from '../services/analytics/index.js' +} from '../services/analytics-stub.js' import type { Tool } from '../Tool.js' import { type ToolPermissionContext, diff --git a/src/utils/unaryLogging.ts b/src/utils/unaryLogging.ts index 2e375e62..811dfa15 100644 --- a/src/utils/unaryLogging.ts +++ b/src/utils/unaryLogging.ts @@ -1,7 +1,7 @@ import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent, -} from 'src/services/analytics/index.js' +} from '../services/analytics-stub.js' export type CompletionType = | 'str_replace_single' diff --git a/src/utils/warningHandler.ts b/src/utils/warningHandler.ts index 3c9572e6..25610942 100644 --- a/src/utils/warningHandler.ts +++ b/src/utils/warningHandler.ts @@ -2,7 +2,7 @@ import { posix, win32 } from 'path' import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent, -} from 'src/services/analytics/index.js' +} from '../services/analytics-stub.js' import { logForDebugging } from './debug.js' import { isEnvTruthy } from './envUtils.js' import { getPlatform } from './platform.js' diff --git a/src/voice/voiceModeEnabled.ts b/src/voice/voiceModeEnabled.ts index 1d8867c3..e6a0260e 100644 --- a/src/voice/voiceModeEnabled.ts +++ b/src/voice/voiceModeEnabled.ts @@ -1,5 +1,5 @@ import { feature } from 'bun:bundle' -import { getFeatureValue_CACHED_MAY_BE_STALE } from '../services/analytics/growthbook.js' +import { getFeatureValue_CACHED_MAY_BE_STALE } from '../services/analytics-stub.js' import { getClaudeAIOAuthTokens, isAnthropicAuthEnabled, diff --git a/tests/verify-privacy.sh b/tests/verify-privacy.sh new file mode 100755 index 00000000..1da246a5 --- /dev/null +++ b/tests/verify-privacy.sh @@ -0,0 +1,276 @@ +#!/bin/bash +# Privacy Verification Test Suite +# This script verifies that all telemetry, analytics, and fingerprinting code has been removed + +set -e + +PROJECT_ROOT="$(pwd)" +cd "$PROJECT_ROOT" + +echo "==================================" +echo "Privacy Verification Test Suite" +echo "==================================" +echo "" + +# Color codes +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +NC='\033[0m' # No Color + +TESTS_PASSED=0 +TESTS_FAILED=0 + +# Test function +test_check() { + local test_name="$1" + local command="$2" + local expected_count="$3" + + echo -n "Testing: $test_name ... " + + result=$(eval "$command" 2>/dev/null | wc -l | tr -d ' ') + + if [ "$result" -eq "$expected_count" ]; then + echo -e "${GREEN}✓ PASS${NC} (found $result matches, expected $expected_count)" + ((TESTS_PASSED++)) + return 0 + else + echo -e "${RED}✗ FAIL${NC} (found $result matches, expected $expected_count)" + ((TESTS_FAILED++)) + return 1 + fi +} + +echo "=== 1. Verifying Deleted Directories ===" +echo "" + +test_check "Telemetry directory deleted" \ + "find src/utils/telemetry -type f 2>/dev/null || true" \ + "0" + +test_check "Analytics directory deleted" \ + "find src/services/analytics -type f 2>/dev/null || true" \ + "0" + +echo "" +echo "=== 2. Verifying Deleted Files ===" +echo "" + +test_check "fingerprint.ts deleted" \ + "find src -name 'fingerprint.ts' -not -name '*stub*' 2>/dev/null || true" \ + "0" + +test_check "telemetryAttributes.ts deleted" \ + "find src -name 'telemetryAttributes.ts' -not -name '*stub*' 2>/dev/null || true" \ + "0" + +echo "" +echo "=== 3. Verifying No Old Imports Remain ===" +echo "" + +test_check "No local telemetry imports (non-stub)" \ + "grep -r \"from.*['\\\"]\\.\\.*/telemetry/\" src/ --include='*.ts' --include='*.tsx' || true" \ + "0" + +test_check "No local analytics imports (non-stub)" \ + "grep -r \"from.*['\\\"]\\.\\.*/analytics/\" src/ --include='*.ts' --include='*.tsx' || true" \ + "0" + +test_check "No fingerprint imports (non-stub)" \ + "grep -r \"from.*['\\\"].*fingerprint[^-]\" src/ --include='*.ts' --include='*.tsx' --exclude='*stub*' || true" \ + "0" + +test_check "No telemetryAttributes imports (non-stub)" \ + "grep -r \"from.*['\\\"].*telemetryAttributes[^-]\" src/ --include='*.ts' --include='*.tsx' || true" \ + "0" + +echo "" +echo "=== 4. Verifying API Endpoints Removed ===" +echo "" + +test_check "No BigQuery metrics endpoint" \ + "grep -r 'api.anthropic.com/api/claude_code/metrics' src/ || true" \ + "0" + +test_check "No event logging endpoint" \ + "grep -r 'api.anthropic.com/api/event_logging/batch' src/ || true" \ + "0" + +echo "" +echo "=== 5. Verifying Tracking Code Patterns Removed ===" +echo "" + +# Allow computeFingerprint calls if they import from stub +echo -n "Testing: computeFingerprint calls use stub implementation ... " +fingerprint_calls=$(grep -r 'computeFingerprint(' src/ --include='*.ts' --include='*.tsx' --exclude='*stub*' 2>/dev/null | wc -l | tr -d ' ') +if [ "$fingerprint_calls" -eq "0" ]; then + echo -e "${GREEN}✓ PASS${NC} (no calls found)" + ((TESTS_PASSED++)) +else + # Check if the files importing it use the stub + files_with_calls=$(grep -r 'computeFingerprint(' src/ --include='*.ts' --include='*.tsx' --exclude='*stub*' -l 2>/dev/null || true) + all_use_stub=true + for file in $files_with_calls; do + if ! grep -q "from.*fingerprint-stub" "$file" 2>/dev/null; then + all_use_stub=false + break + fi + done + if [ "$all_use_stub" = true ]; then + echo -e "${GREEN}✓ PASS${NC} (all calls use stub implementation)" + ((TESTS_PASSED++)) + else + echo -e "${RED}✗ FAIL${NC} (found calls not using stub)" + ((TESTS_FAILED++)) + fi +fi + +test_check "No BigQueryExporter usage" \ + "grep -r 'BigQueryExporter' src/ --include='*.ts' --include='*.tsx' || true" \ + "0" + +test_check "No firstPartyEventLogger usage" \ + "grep -r 'firstPartyEventLogger' src/ --include='*.ts' --include='*.tsx' | grep -v '//.*firstPartyEventLogger' || true" \ + "0" + +# Check for actual GrowthBook method calls (not just comments/docs) +echo -n "Testing: No GrowthBook API calls ... " +gb_calls=$(grep -r 'growthbook\.\(getFeatureValue\|evalFeature\|run\|setAttributes\)' src/ --include='*.ts' --include='*.tsx' --exclude='*stub*' 2>/dev/null | wc -l | tr -d ' ') +if [ "$gb_calls" -eq "0" ]; then + echo -e "${GREEN}✓ PASS${NC} (no API calls found)" + ((TESTS_PASSED++)) +else + echo -e "${RED}✗ FAIL${NC} (found $gb_calls API calls)" + ((TESTS_FAILED++)) +fi + +echo "" +echo "=== 6. Verifying Stub Files Exist ===" +echo "" + +test_check "telemetry-stub.ts exists" \ + "find src -name 'telemetry-stub.ts' 2>/dev/null" \ + "1" + +test_check "analytics-stub.ts exists" \ + "find src -name 'analytics-stub.ts' 2>/dev/null" \ + "1" + +test_check "fingerprint-stub.ts exists" \ + "find src -name 'fingerprint-stub.ts' 2>/dev/null" \ + "1" + +test_check "telemetryAttributes-stub.ts exists" \ + "find src -name 'telemetryAttributes-stub.ts' 2>/dev/null" \ + "1" + +echo "" +echo "=== 7. Verifying Stub Implementations ===" +echo "" + +# Check that stubs return no-op or safe values +test_check "Fingerprint stub returns 'no-fingerprint'" \ + "grep -c \"return 'no-fingerprint'\" src/utils/fingerprint-stub.ts" \ + "1" + +echo -n "Testing: Analytics stub exports no-op functions ... " +analytics_exports=$(grep -E '^export (function|const)' src/services/analytics-stub.ts 2>/dev/null | wc -l | tr -d ' ') +if [ "$analytics_exports" -ge "10" ]; then + echo -e "${GREEN}✓ PASS${NC} (found $analytics_exports exports)" + ((TESTS_PASSED++)) +else + echo -e "${RED}✗ FAIL${NC} (found $analytics_exports exports, expected at least 10)" + ((TESTS_FAILED++)) +fi + +echo "" +echo "=== 8. Checking for Suspicious Patterns ===" +echo "" + +# Look for potential data collection patterns +echo -n "Checking for SHA256 hash operations... " +sha_count=$(grep -r "createHash('sha256')" src/ --include='*.ts' --include='*.tsx' --exclude='*stub*' --exclude-dir=node_modules 2>/dev/null | wc -l | tr -d ' ') +if [ "$sha_count" -eq "0" ]; then + echo -e "${GREEN}✓ None found${NC}" + ((TESTS_PASSED++)) +else + echo -e "${YELLOW}⚠ Found $sha_count instances${NC} (may be legitimate uses)" + # Not counting as failure since SHA256 can be used for non-tracking purposes +fi + +echo -n "Checking for user.id references... " +user_id_count=$(grep -r "user\.id" src/ --include='*.ts' --include='*.tsx' --exclude='*stub*' --exclude-dir=node_modules 2>/dev/null | wc -l | tr -d ' ') +if [ "$user_id_count" -eq "0" ]; then + echo -e "${GREEN}✓ None found${NC}" + ((TESTS_PASSED++)) +else + echo -e "${YELLOW}⚠ Found $user_id_count instances${NC}" +fi + +echo -n "Checking for session tracking... " +session_track=$(grep -r "sessionId\|session\.id" src/ --include='*.ts' --include='*.tsx' --exclude='*stub*' --exclude-dir=node_modules 2>/dev/null | grep -v "// " | wc -l | tr -d ' ') +if [ "$session_track" -eq "0" ]; then + echo -e "${GREEN}✓ None found${NC}" + ((TESTS_PASSED++)) +else + echo -e "${YELLOW}⚠ Found $session_track instances${NC} (checking if legitimate...)" +fi + +echo "" +echo "=== 9. Package.json Verification ===" +echo "" + +test_check "Package name changed to claude-code-clean" \ + "grep -c '\"name\": \"claude-code-clean\"' package.json" \ + "1" + +test_check "Version changed to clean variant" \ + "grep -c '\"version\": \"1.0.0-clean\"' package.json" \ + "1" + +test_check "Binary name changed to claude-clean" \ + "grep -c '\"claude-clean\"' package.json" \ + "1" + +echo "" +echo "=== 10. Essential Files Verification ===" +echo "" + +test_check "README.md exists" \ + "test -f README.md && echo 'exists'" \ + "1" + +test_check "LICENSE exists" \ + "test -f LICENSE && echo 'exists'" \ + "1" + +echo "" +echo "==================================" +echo "Test Results Summary" +echo "==================================" +echo -e "${GREEN}Tests Passed: $TESTS_PASSED${NC}" +if [ "$TESTS_FAILED" -gt "0" ]; then + echo -e "${RED}Tests Failed: $TESTS_FAILED${NC}" +else + echo -e "${GREEN}Tests Failed: 0${NC}" +fi +echo "" + +if [ "$TESTS_FAILED" -eq "0" ]; then + echo -e "${GREEN}✓✓✓ ALL PRIVACY CHECKS PASSED ✓✓✓${NC}" + echo "" + echo "This codebase has been verified to be free of:" + echo " ✓ Telemetry infrastructure" + echo " ✓ Analytics and event logging" + echo " ✓ User fingerprinting" + echo " ✓ Session tracking" + echo " ✓ Data collection endpoints" + echo "" + exit 0 +else + echo -e "${RED}✗✗✗ SOME TESTS FAILED ✗✗✗${NC}" + echo "" + echo "Please review the failed tests above." + exit 1 +fi From 36d9b12c32a718230294453d16909073e32b9347 Mon Sep 17 00:00:00 2001 From: DogEZ Date: Sat, 11 Apr 2026 09:53:45 +0800 Subject: [PATCH 03/14] Add OpenAI-compatible model support via API shim Enable any OpenAI-compatible API (OpenAI, OpenRouter, DeepSeek, Ollama, LM Studio, Together AI, Groq, Mistral, Azure OpenAI, etc.) as the backend LLM by setting CLAUDE_CODE_USE_OPENAI=1. New files: - openaiShim.ts: Anthropic <-> OpenAI format translation + streaming - codexShim.ts: ChatGPT Codex Responses API support - providerConfig.ts: provider routing, model alias resolution Modified files: - client.ts: route to OpenAI shim when enabled - providers.ts: add 'openai' provider type - configs.ts: add openai model mappings per tier - model.ts: respect OPENAI_MODEL env var - auth.ts: recognize OpenAI as valid 3P provider - README.md: add ANTHROPIC_BASE_URL config + OpenAI provider docs --- src/services/api/client.ts | 8 + src/services/api/codexShim.ts | 822 +++++++++++++++++++++++++++ src/services/api/openaiShim.ts | 855 +++++++++++++++++++++++++++++ src/services/api/providerConfig.ts | 313 +++++++++++ src/utils/auth.ts | 8 +- src/utils/model/configs.ts | 22 + src/utils/model/model.ts | 9 +- src/utils/model/providers.ts | 18 +- 8 files changed, 2042 insertions(+), 13 deletions(-) create mode 100644 src/services/api/codexShim.ts create mode 100644 src/services/api/openaiShim.ts create mode 100644 src/services/api/providerConfig.ts diff --git a/src/services/api/client.ts b/src/services/api/client.ts index 8c1feb69..1a022f08 100644 --- a/src/services/api/client.ts +++ b/src/services/api/client.ts @@ -150,6 +150,14 @@ export async function getAnthropicClient({ fetch: resolvedFetch, }), } + if (isEnvTruthy(process.env.CLAUDE_CODE_USE_OPENAI)) { + const { createOpenAIShimClient } = await import('./openaiShim.js') + return createOpenAIShimClient({ + defaultHeaders, + maxRetries, + timeout: parseInt(process.env.API_TIMEOUT_MS || String(600 * 1000), 10), + }) as unknown as Anthropic + } if (isEnvTruthy(process.env.CLAUDE_CODE_USE_BEDROCK)) { const { AnthropicBedrock } = await import('@anthropic-ai/bedrock-sdk') // Use region override for small fast model if specified diff --git a/src/services/api/codexShim.ts b/src/services/api/codexShim.ts new file mode 100644 index 00000000..208127b0 --- /dev/null +++ b/src/services/api/codexShim.ts @@ -0,0 +1,822 @@ +import type { + ResolvedCodexCredentials, + ResolvedProviderRequest, +} from './providerConfig.js' + +export interface AnthropicUsage { + input_tokens: number + output_tokens: number + cache_creation_input_tokens: number + cache_read_input_tokens: number +} + +export interface AnthropicStreamEvent { + type: string + message?: Record + index?: number + content_block?: Record + delta?: Record + usage?: Partial +} + +export interface ShimCreateParams { + model: string + messages: Array> + system?: unknown + tools?: Array> + max_tokens: number + stream?: boolean + temperature?: number + top_p?: number + tool_choice?: unknown + metadata?: unknown + [key: string]: unknown +} + +type ResponsesInputPart = + | { type: 'input_text'; text: string } + | { type: 'output_text'; text: string } + | { type: 'input_image'; image_url: string } + +type ResponsesInputItem = + | { + type: 'message' + role: 'user' | 'assistant' + content: ResponsesInputPart[] + } + | { + type: 'function_call' + id: string + call_id: string + name: string + arguments: string + } + | { + type: 'function_call_output' + call_id: string + output: string + } + +type ResponsesTool = { + type: 'function' + name: string + description: string + parameters: Record + strict?: boolean +} + +type CodexSseEvent = { + event: string + data: Record +} + +function makeUsage(usage?: { + input_tokens?: number + output_tokens?: number +}): AnthropicUsage { + return { + input_tokens: usage?.input_tokens ?? 0, + output_tokens: usage?.output_tokens ?? 0, + cache_creation_input_tokens: 0, + cache_read_input_tokens: 0, + } +} + +function makeMessageId(): string { + return `msg_${Math.random().toString(36).slice(2)}${Date.now().toString(36)}` +} + +function normalizeToolUseId(toolUseId: string | undefined): { + id: string + callId: string +} { + const value = (toolUseId || '').trim() + if (!value) { + return { + id: 'fc_unknown', + callId: 'call_unknown', + } + } + if (value.startsWith('call_')) { + return { + id: `fc_${value.slice('call_'.length)}`, + callId: value, + } + } + if (value.startsWith('fc_')) { + return { + id: value, + callId: `call_${value.slice('fc_'.length)}`, + } + } + return { + id: `fc_${value}`, + callId: value, + } +} + +function convertSystemPrompt(system: unknown): string { + if (!system) return '' + if (typeof system === 'string') return system + if (Array.isArray(system)) { + return system + .map((block: { type?: string; text?: string }) => + block.type === 'text' ? (block.text ?? '') : '', + ) + .join('\n\n') + } + return String(system) +} + +function convertToolResultToText(content: unknown): string { + if (typeof content === 'string') return content + if (!Array.isArray(content)) return JSON.stringify(content ?? '') + + const chunks: string[] = [] + for (const block of content) { + if (block?.type === 'text' && typeof block.text === 'string') { + chunks.push(block.text) + continue + } + + if (block?.type === 'image') { + const src = block.source + if (src?.type === 'url' && src.url) { + chunks.push(`[Image](${src.url})`) + } + continue + } + + if (typeof block?.text === 'string') { + chunks.push(block.text) + } + } + + return chunks.join('\n') +} + +function convertContentBlocksToResponsesParts( + content: unknown, + role: 'user' | 'assistant', +): ResponsesInputPart[] { + const textType = role === 'assistant' ? 'output_text' : 'input_text' + if (typeof content === 'string') { + return [{ type: textType, text: content }] + } + if (!Array.isArray(content)) { + return [{ type: textType, text: String(content ?? '') }] + } + + const parts: ResponsesInputPart[] = [] + for (const block of content) { + switch (block?.type) { + case 'text': + parts.push({ type: textType, text: block.text ?? '' }) + break + case 'image': { + if (role === 'assistant') break + const source = block.source + if (source?.type === 'base64') { + parts.push({ + type: 'input_image', + image_url: `data:${source.media_type};base64,${source.data}`, + }) + } else if (source?.type === 'url' && source.url) { + parts.push({ + type: 'input_image', + image_url: source.url, + }) + } + break + } + case 'thinking': + if (block.thinking) { + parts.push({ + type: textType, + text: `${block.thinking}`, + }) + } + break + case 'tool_use': + case 'tool_result': + break + default: + if (typeof block?.text === 'string') { + parts.push({ type: textType, text: block.text }) + } + } + } + + return parts +} + +export function convertAnthropicMessagesToResponsesInput( + messages: Array<{ role?: string; message?: { role?: string; content?: unknown }; content?: unknown }>, +): ResponsesInputItem[] { + const items: ResponsesInputItem[] = [] + + for (const message of messages) { + const inner = message.message ?? message + const role = (inner as { role?: string }).role ?? message.role + const content = (inner as { content?: unknown }).content + + if (role === 'user') { + if (Array.isArray(content)) { + const toolResults = content.filter( + (block: { type?: string }) => block.type === 'tool_result', + ) + const otherContent = content.filter( + (block: { type?: string }) => block.type !== 'tool_result', + ) + + for (const toolResult of toolResults) { + const { callId } = normalizeToolUseId(toolResult.tool_use_id) + items.push({ + type: 'function_call_output', + call_id: callId, + output: convertToolResultToText(toolResult.content), + }) + } + + const parts = convertContentBlocksToResponsesParts(otherContent, 'user') + if (parts.length > 0) { + items.push({ + type: 'message', + role: 'user', + content: parts, + }) + } + continue + } + + items.push({ + type: 'message', + role: 'user', + content: convertContentBlocksToResponsesParts(content, 'user'), + }) + continue + } + + if (role === 'assistant') { + const textBlocks = Array.isArray(content) + ? content.filter((block: { type?: string }) => block.type !== 'tool_use') + : content + const parts = convertContentBlocksToResponsesParts(textBlocks, 'assistant') + if (parts.length > 0) { + items.push({ + type: 'message', + role: 'assistant', + content: parts, + }) + } + + if (Array.isArray(content)) { + for (const toolUse of content.filter( + (block: { type?: string }) => block.type === 'tool_use', + )) { + const normalized = normalizeToolUseId(toolUse.id) + items.push({ + type: 'function_call', + id: normalized.id, + call_id: normalized.callId, + name: toolUse.name ?? 'tool', + arguments: + typeof toolUse.input === 'string' + ? toolUse.input + : JSON.stringify(toolUse.input ?? {}), + }) + } + } + } + } + + return items.filter(item => + item.type !== 'message' || item.content.length > 0, + ) +} + +/** + * Recursively enforces Codex strict-mode constraints on a JSON schema: + * - Every `object` type gets `additionalProperties: false` + * - All property keys are listed in `required` + * - Nested schemas (properties, items, anyOf/oneOf/allOf) are processed too + */ +function enforceStrictSchema(schema: unknown): Record { + if (!schema || typeof schema !== 'object' || Array.isArray(schema)) { + return (schema ?? {}) as Record + } + + const record = { ...(schema as Record) } + + // Codex API strict schemas reject these JSON schema keywords + delete record.$schema + delete record.propertyNames + + if (record.type === 'object') { + // OpenAI structured outputs completely forbid dynamic additionalProperties. + // They must be set to false unconditionally. + record.additionalProperties = false + + if ( + record.properties && + typeof record.properties === 'object' && + !Array.isArray(record.properties) + ) { + const props = record.properties as Record + + const enforcedProps: Record = {} + for (const [key, value] of Object.entries(props)) { + const strictValue = enforceStrictSchema(value) + if ( + strictValue && + typeof strictValue === 'object' && + strictValue.type === 'object' && + strictValue.additionalProperties === false && + (!strictValue.properties || Object.keys(strictValue.properties).length === 0) + ) { + continue + } + enforcedProps[key] = strictValue + } + record.properties = enforcedProps + record.required = Object.keys(enforcedProps) + } else { + // No properties — empty required array + record.required = [] + } + } + + // Recurse into array items + if ('items' in record) { + if (Array.isArray(record.items)) { + record.items = (record.items as unknown[]).map(item => enforceStrictSchema(item)) + } else { + record.items = enforceStrictSchema(record.items) + } + } + + // Recurse into combinators + for (const key of ['anyOf', 'oneOf', 'allOf'] as const) { + if (key in record && Array.isArray(record[key])) { + record[key] = (record[key] as unknown[]).map(item => enforceStrictSchema(item)) + } + } + + return record +} + +export function convertToolsToResponsesTools( + tools: Array<{ name?: string; description?: string; input_schema?: Record }>, +): ResponsesTool[] { + return tools + .filter(tool => tool.name && tool.name !== 'ToolSearchTool') + .map(tool => { + const rawParameters = tool.input_schema ?? { type: 'object', properties: {} } + const parameters = enforceStrictSchema(rawParameters) + + return { + type: 'function', + name: tool.name ?? 'tool', + description: tool.description ?? '', + parameters, + strict: true, + } + }) +} + +function convertToolChoice(toolChoice: unknown): unknown { + const choice = toolChoice as { type?: string; name?: string } | undefined + if (!choice?.type) return undefined + if (choice.type === 'auto') return 'auto' + if (choice.type === 'any') return 'required' + if (choice.type === 'tool' && choice.name) { + return { + type: 'function', + name: choice.name, + } + } + return undefined +} + +export async function performCodexRequest(options: { + request: ResolvedProviderRequest + credentials: ResolvedCodexCredentials + params: ShimCreateParams + defaultHeaders: Record + signal?: AbortSignal +}): Promise { + const input = convertAnthropicMessagesToResponsesInput( + options.params.messages as Array<{ + role?: string + message?: { role?: string; content?: unknown } + content?: unknown + }>, + ) + const body: Record = { + model: options.request.resolvedModel, + input: input.length > 0 + ? input + : [ + { + type: 'message', + role: 'user', + content: [{ type: 'input_text', text: '' }], + }, + ], + store: false, + stream: true, + } + + const instructions = convertSystemPrompt(options.params.system) + if (instructions) { + body.instructions = instructions + } + + const toolChoice = convertToolChoice(options.params.tool_choice) + if (toolChoice) { + body.tool_choice = toolChoice + } + + if (options.params.tools && options.params.tools.length > 0) { + const convertedTools = convertToolsToResponsesTools( + options.params.tools as Array<{ + name?: string + description?: string + input_schema?: Record + }>, + ) + if (convertedTools.length > 0) { + body.tools = convertedTools + body.parallel_tool_calls = true + body.tool_choice ??= 'auto' + } + } + + if (options.request.reasoning) { + body.reasoning = options.request.reasoning + } + + const isTargetModel = + options.request.resolvedModel?.toLowerCase().includes('gpt') || + options.request.resolvedModel?.toLowerCase().includes('codex') + + // Only pass temperature and top_p if it's not a GPT/Codex model that rejects them + if (!isTargetModel) { + if (options.params.temperature !== undefined) { + body.temperature = options.params.temperature + } + if (options.params.top_p !== undefined) { + body.top_p = options.params.top_p + } + } + + const headers: Record = { + 'Content-Type': 'application/json', + ...options.defaultHeaders, + Authorization: `Bearer ${options.credentials.apiKey}`, + } + if (options.credentials.accountId) { + headers['chatgpt-account-id'] = options.credentials.accountId + } + headers.originator ??= 'openclaude' + + const response = await fetch(`${options.request.baseUrl}/responses`, { + method: 'POST', + headers, + body: JSON.stringify(body), + signal: options.signal, + }) + + if (!response.ok) { + const errorBody = await response.text().catch(() => 'unknown error') + throw new Error(`Codex API error ${response.status}: ${errorBody}`) + } + + return response +} + +async function* readSseEvents(response: Response): AsyncGenerator { + const reader = response.body?.getReader() + if (!reader) return + + const decoder = new TextDecoder() + let buffer = '' + + while (true) { + const { done, value } = await reader.read() + if (done) break + + buffer += decoder.decode(value, { stream: true }) + const chunks = buffer.split('\n\n') + buffer = chunks.pop() ?? '' + + for (const chunk of chunks) { + const lines = chunk + .split('\n') + .map(line => line.trim()) + .filter(Boolean) + if (lines.length === 0) continue + + const eventLine = lines.find(line => line.startsWith('event: ')) + const dataLines = lines.filter(line => line.startsWith('data: ')) + if (!eventLine || dataLines.length === 0) continue + + const event = eventLine.slice(7).trim() + const rawData = dataLines.map(line => line.slice(6)).join('\n') + if (rawData === '[DONE]') continue + + let data: Record + try { + const parsed = JSON.parse(rawData) + if (!parsed || typeof parsed !== 'object') continue + data = parsed as Record + } catch { + continue + } + + yield { event, data } + } + } +} + +function determineStopReason( + response: Record | undefined, + sawToolUse: boolean, +): 'end_turn' | 'tool_use' | 'max_tokens' { + const output = Array.isArray(response?.output) ? response.output : [] + if ( + sawToolUse || + output.some((item: { type?: string }) => item?.type === 'function_call') + ) { + return 'tool_use' + } + + const incompleteReason = response?.incomplete_details?.reason + if ( + typeof incompleteReason === 'string' && + incompleteReason.includes('max_output_tokens') + ) { + return 'max_tokens' + } + + return 'end_turn' +} + +export async function collectCodexCompletedResponse( + response: Response, +): Promise> { + let completedResponse: Record | undefined + + for await (const event of readSseEvents(response)) { + if (event.event === 'response.failed') { + throw new Error( + event.data?.response?.error?.message ?? + event.data?.error?.message ?? + 'Codex response failed', + ) + } + + if ( + event.event === 'response.completed' || + event.event === 'response.incomplete' + ) { + completedResponse = event.data?.response + break + } + } + + if (!completedResponse) { + throw new Error('Codex response ended without a completed payload') + } + + return completedResponse +} + +export async function* codexStreamToAnthropic( + response: Response, + model: string, +): AsyncGenerator { + const messageId = makeMessageId() + const toolBlocksByItemId = new Map< + string, + { index: number; toolUseId: string } + >() + let activeTextBlockIndex: number | null = null + let nextContentBlockIndex = 0 + let sawToolUse = false + let finalResponse: Record | undefined + + const closeActiveTextBlock = async function* () { + if (activeTextBlockIndex === null) return + yield { + type: 'content_block_stop', + index: activeTextBlockIndex, + } + activeTextBlockIndex = null + } + + const startTextBlockIfNeeded = async function* () { + if (activeTextBlockIndex !== null) return + activeTextBlockIndex = nextContentBlockIndex++ + yield { + type: 'content_block_start', + index: activeTextBlockIndex, + content_block: { type: 'text', text: '' }, + } + } + + yield { + type: 'message_start', + message: { + id: messageId, + type: 'message', + role: 'assistant', + content: [], + model, + stop_reason: null, + stop_sequence: null, + usage: makeUsage(), + }, + } + + for await (const event of readSseEvents(response)) { + const payload = event.data + + if (event.event === 'response.output_item.added') { + const item = payload.item + if (item?.type === 'function_call') { + yield* closeActiveTextBlock() + const blockIndex = nextContentBlockIndex++ + const toolUseId = item.call_id ?? item.id ?? `call_${blockIndex}` + toolBlocksByItemId.set(String(item.id ?? toolUseId), { + index: blockIndex, + toolUseId, + }) + sawToolUse = true + + yield { + type: 'content_block_start', + index: blockIndex, + content_block: { + type: 'tool_use', + id: toolUseId, + name: item.name ?? 'tool', + input: {}, + }, + } + + if (item.arguments) { + yield { + type: 'content_block_delta', + index: blockIndex, + delta: { + type: 'input_json_delta', + partial_json: item.arguments, + }, + } + } + } + continue + } + + if (event.event === 'response.content_part.added') { + if (payload.part?.type === 'output_text') { + yield* startTextBlockIfNeeded() + } + continue + } + + if (event.event === 'response.output_text.delta') { + yield* startTextBlockIfNeeded() + if (activeTextBlockIndex !== null) { + yield { + type: 'content_block_delta', + index: activeTextBlockIndex, + delta: { + type: 'text_delta', + text: payload.delta ?? '', + }, + } + } + continue + } + + if (event.event === 'response.function_call_arguments.delta') { + const toolBlock = toolBlocksByItemId.get(String(payload.item_id ?? '')) + if (toolBlock) { + yield { + type: 'content_block_delta', + index: toolBlock.index, + delta: { + type: 'input_json_delta', + partial_json: payload.delta ?? '', + }, + } + } + continue + } + + if (event.event === 'response.output_item.done') { + const item = payload.item + if (item?.type === 'function_call') { + const toolBlock = toolBlocksByItemId.get(String(item.id ?? '')) + if (toolBlock) { + yield { + type: 'content_block_stop', + index: toolBlock.index, + } + toolBlocksByItemId.delete(String(item.id)) + } + } else if (item?.type === 'message') { + yield* closeActiveTextBlock() + } + continue + } + + if ( + event.event === 'response.completed' || + event.event === 'response.incomplete' + ) { + finalResponse = payload.response + break + } + + if (event.event === 'response.failed') { + throw new Error( + payload?.response?.error?.message ?? + payload?.error?.message ?? + 'Codex response failed', + ) + } + } + + yield* closeActiveTextBlock() + for (const toolBlock of toolBlocksByItemId.values()) { + yield { + type: 'content_block_stop', + index: toolBlock.index, + } + } + + yield { + type: 'message_delta', + delta: { + stop_reason: determineStopReason(finalResponse, sawToolUse), + stop_sequence: null, + }, + usage: { + input_tokens: finalResponse?.usage?.input_tokens ?? 0, + output_tokens: finalResponse?.usage?.output_tokens ?? 0, + }, + } + yield { type: 'message_stop' } +} + +export function convertCodexResponseToAnthropicMessage( + data: Record, + model: string, +): Record { + const content: Array> = [] + const output = Array.isArray(data.output) ? data.output : [] + + for (const item of output) { + if (item?.type === 'message' && Array.isArray(item.content)) { + for (const part of item.content) { + if (part?.type === 'output_text') { + content.push({ + type: 'text', + text: part.text ?? '', + }) + } + } + continue + } + + if (item?.type === 'function_call') { + let input: unknown + try { + input = JSON.parse(item.arguments ?? '{}') + } catch { + input = { raw: item.arguments ?? '' } + } + + content.push({ + type: 'tool_use', + id: item.call_id ?? item.id ?? makeMessageId(), + name: item.name ?? 'tool', + input, + }) + } + } + + return { + id: data.id ?? makeMessageId(), + type: 'message', + role: 'assistant', + content, + model: data.model ?? model, + stop_reason: determineStopReason(data, content.some(item => item.type === 'tool_use')), + stop_sequence: null, + usage: makeUsage(data.usage), + } +} diff --git a/src/services/api/openaiShim.ts b/src/services/api/openaiShim.ts new file mode 100644 index 00000000..53cc9bee --- /dev/null +++ b/src/services/api/openaiShim.ts @@ -0,0 +1,855 @@ +/** + * OpenAI-compatible API shim for Claude Code. + * + * Translates Anthropic SDK calls (anthropic.beta.messages.create) into + * OpenAI-compatible chat completion requests and streams back events + * in the Anthropic streaming format so the rest of the codebase is unaware. + * + * Supports: OpenAI, Azure OpenAI, Ollama, LM Studio, OpenRouter, + * Together, Groq, Fireworks, DeepSeek, Mistral, and any OpenAI-compatible API. + * + * Environment variables: + * CLAUDE_CODE_USE_OPENAI=1 — enable this provider + * OPENAI_API_KEY=sk-... — API key (optional for local models) + * OPENAI_BASE_URL=http://... — base URL (default: https://api.openai.com/v1) + * OPENAI_MODEL=gpt-4o — default model override + * CODEX_API_KEY / ~/.codex/auth.json — Codex auth for codexplan/codexspark + */ + +import { + codexStreamToAnthropic, + collectCodexCompletedResponse, + convertCodexResponseToAnthropicMessage, + performCodexRequest, + type AnthropicStreamEvent, + type AnthropicUsage, + type ShimCreateParams, +} from './codexShim.js' +import { + resolveCodexApiCredentials, + resolveProviderRequest, +} from './providerConfig.js' + +// --------------------------------------------------------------------------- +// Types — minimal subset of Anthropic SDK types we need to produce +// --------------------------------------------------------------------------- + +// --------------------------------------------------------------------------- +// Message format conversion: Anthropic → OpenAI +// --------------------------------------------------------------------------- + +interface OpenAIMessage { + role: 'system' | 'user' | 'assistant' | 'tool' + content?: string | Array<{ type: string; text?: string; image_url?: { url: string } }> + tool_calls?: Array<{ + id: string + type: 'function' + function: { name: string; arguments: string } + extra_content?: Record + }> + tool_call_id?: string + name?: string +} + +interface OpenAITool { + type: 'function' + function: { + name: string + description: string + parameters: Record + strict?: boolean + } +} + +function convertSystemPrompt( + system: unknown, +): string { + if (!system) return '' + if (typeof system === 'string') return system + if (Array.isArray(system)) { + return system + .map((block: { type?: string; text?: string }) => + block.type === 'text' ? block.text ?? '' : '', + ) + .join('\n\n') + } + return String(system) +} + +function convertContentBlocks( + content: unknown, +): string | Array<{ type: string; text?: string; image_url?: { url: string } }> { + if (typeof content === 'string') return content + if (!Array.isArray(content)) return String(content ?? '') + + const parts: Array<{ type: string; text?: string; image_url?: { url: string } }> = [] + for (const block of content) { + switch (block.type) { + case 'text': + parts.push({ type: 'text', text: block.text ?? '' }) + break + case 'image': { + const src = block.source + if (src?.type === 'base64') { + parts.push({ + type: 'image_url', + image_url: { + url: `data:${src.media_type};base64,${src.data}`, + }, + }) + } else if (src?.type === 'url') { + parts.push({ type: 'image_url', image_url: { url: src.url } }) + } + break + } + case 'tool_use': + // handled separately + break + case 'tool_result': + // handled separately + break + case 'thinking': + // Append thinking as text with a marker for models that support reasoning + if (block.thinking) { + parts.push({ type: 'text', text: `${block.thinking}` }) + } + break + default: + if (block.text) { + parts.push({ type: 'text', text: block.text }) + } + } + } + + if (parts.length === 0) return '' + if (parts.length === 1 && parts[0].type === 'text') return parts[0].text ?? '' + return parts +} + +function convertMessages( + messages: Array<{ role: string; message?: { role?: string; content?: unknown }; content?: unknown }>, + system: unknown, +): OpenAIMessage[] { + const result: OpenAIMessage[] = [] + + // System message first + const sysText = convertSystemPrompt(system) + if (sysText) { + result.push({ role: 'system', content: sysText }) + } + + for (const msg of messages) { + // Claude Code wraps messages in { role, message: { role, content } } + const inner = msg.message ?? msg + const role = (inner as { role?: string }).role ?? msg.role + const content = (inner as { content?: unknown }).content + + if (role === 'user') { + // Check for tool_result blocks in user messages + if (Array.isArray(content)) { + const toolResults = content.filter((b: { type?: string }) => b.type === 'tool_result') + const otherContent = content.filter((b: { type?: string }) => b.type !== 'tool_result') + + // Emit tool results as tool messages + for (const tr of toolResults) { + const trContent = Array.isArray(tr.content) + ? tr.content.map((c: { text?: string }) => c.text ?? '').join('\n') + : typeof tr.content === 'string' + ? tr.content + : JSON.stringify(tr.content ?? '') + result.push({ + role: 'tool', + tool_call_id: tr.tool_use_id ?? 'unknown', + content: tr.is_error ? `Error: ${trContent}` : trContent, + }) + } + + // Emit remaining user content + if (otherContent.length > 0) { + result.push({ + role: 'user', + content: convertContentBlocks(otherContent), + }) + } + } else { + result.push({ + role: 'user', + content: convertContentBlocks(content), + }) + } + } else if (role === 'assistant') { + // Check for tool_use blocks + if (Array.isArray(content)) { + const toolUses = content.filter((b: { type?: string }) => b.type === 'tool_use') + const textContent = content.filter( + (b: { type?: string }) => b.type !== 'tool_use' && b.type !== 'thinking', + ) + + const assistantMsg: OpenAIMessage = { + role: 'assistant', + content: convertContentBlocks(textContent) as string, + } + + if (toolUses.length > 0) { + assistantMsg.tool_calls = toolUses.map( + (tu: { + id?: string + name?: string + input?: unknown + extra_content?: Record + }) => ({ + id: tu.id ?? `call_${Math.random().toString(36).slice(2)}`, + type: 'function' as const, + function: { + name: tu.name ?? 'unknown', + arguments: + typeof tu.input === 'string' + ? tu.input + : JSON.stringify(tu.input ?? {}), + }, + ...(tu.extra_content ? { extra_content: tu.extra_content } : {}), + }), + ) + } + + result.push(assistantMsg) + } else { + result.push({ + role: 'assistant', + content: convertContentBlocks(content) as string, + }) + } + } + } + + return result +} + +/** + * OpenAI requires every key in `properties` to also appear in `required`. + * Anthropic schemas often mark fields as optional (omitted from `required`), + * which causes 400 errors on OpenAI/Codex endpoints. This normalizes the + * schema by ensuring `required` is a superset of `properties` keys. + */ +function normalizeSchemaForOpenAI( + schema: Record, + strict = true, +): Record { + if (schema.type !== 'object' || !schema.properties) return schema + const properties = schema.properties as Record + const existingRequired = Array.isArray(schema.required) ? schema.required as string[] : [] + // OpenAI strict mode requires every property to be listed in required[]. + // Gemini rejects schemas where required[] contains keys absent from properties, + // so only promote keys that actually exist in properties. + if (strict) { + const allKeys = Object.keys(properties) + const required = Array.from(new Set([...existingRequired, ...allKeys])) + return { ...schema, required } + } + // For Gemini: keep only existing required keys that are present in properties + const required = existingRequired.filter(k => k in properties) + return { ...schema, required } +} + +function convertTools( + tools: Array<{ name: string; description?: string; input_schema?: Record }>, +): OpenAITool[] { + return tools + .filter(t => t.name !== 'ToolSearchTool') // Not relevant for OpenAI + .map(t => { + const schema = { ...(t.input_schema ?? { type: 'object', properties: {} }) } as Record + + // For Codex/OpenAI: promote known Agent sub-fields into required[] only if + // they actually exist in properties (Gemini rejects required keys absent from properties). + if (t.name === 'Agent' && schema.properties) { + const props = schema.properties as Record + if (!Array.isArray(schema.required)) schema.required = [] + const req = schema.required as string[] + for (const key of ['message', 'subagent_type']) { + if (key in props && !req.includes(key)) req.push(key) + } + } + + return { + type: 'function' as const, + function: { + name: t.name, + description: t.description ?? '', + parameters: normalizeSchemaForOpenAI(schema), + }, + } + }) +} + +// --------------------------------------------------------------------------- +// Streaming: OpenAI SSE → Anthropic stream events +// --------------------------------------------------------------------------- + +interface OpenAIStreamChunk { + id: string + object: string + model: string + choices: Array<{ + index: number + delta: { + role?: string + content?: string | null + tool_calls?: Array<{ + index: number + id?: string + type?: string + function?: { name?: string; arguments?: string } + extra_content?: Record + }> + } + finish_reason: string | null + }> + usage?: { + prompt_tokens?: number + completion_tokens?: number + total_tokens?: number + } +} + +function makeMessageId(): string { + return `msg_${Math.random().toString(36).slice(2)}${Date.now().toString(36)}` +} + +function convertChunkUsage( + usage: OpenAIStreamChunk['usage'] | undefined, +): Partial | undefined { + if (!usage) return undefined + + return { + input_tokens: usage.prompt_tokens ?? 0, + output_tokens: usage.completion_tokens ?? 0, + cache_creation_input_tokens: 0, + cache_read_input_tokens: 0, + } +} + +/** + * Async generator that transforms an OpenAI SSE stream into + * Anthropic-format BetaRawMessageStreamEvent objects. + */ +async function* openaiStreamToAnthropic( + response: Response, + model: string, +): AsyncGenerator { + const messageId = makeMessageId() + let contentBlockIndex = 0 + const activeToolCalls = new Map() + let hasEmittedContentStart = false + let lastStopReason: 'tool_use' | 'max_tokens' | 'end_turn' | null = null + let hasEmittedFinalUsage = false + let hasProcessedFinishReason = false + + // Emit message_start + yield { + type: 'message_start', + message: { + id: messageId, + type: 'message', + role: 'assistant', + content: [], + model, + stop_reason: null, + stop_sequence: null, + usage: { + input_tokens: 0, + output_tokens: 0, + cache_creation_input_tokens: 0, + cache_read_input_tokens: 0, + }, + }, + } + + const reader = response.body?.getReader() + if (!reader) return + + const decoder = new TextDecoder() + let buffer = '' + + while (true) { + const { done, value } = await reader.read() + if (done) break + + buffer += decoder.decode(value, { stream: true }) + const lines = buffer.split('\n') + buffer = lines.pop() ?? '' + + for (const line of lines) { + const trimmed = line.trim() + if (!trimmed || trimmed === 'data: [DONE]') continue + if (!trimmed.startsWith('data: ')) continue + + let chunk: OpenAIStreamChunk + try { + chunk = JSON.parse(trimmed.slice(6)) + } catch { + continue + } + + const chunkUsage = convertChunkUsage(chunk.usage) + + for (const choice of chunk.choices ?? []) { + const delta = choice.delta + + // Text content — use != null to distinguish absent field from empty string, + // some providers send "" as first delta to signal streaming start + if (delta.content != null) { + if (!hasEmittedContentStart) { + yield { + type: 'content_block_start', + index: contentBlockIndex, + content_block: { type: 'text', text: '' }, + } + hasEmittedContentStart = true + } + yield { + type: 'content_block_delta', + index: contentBlockIndex, + delta: { type: 'text_delta', text: delta.content }, + } + } + + // Tool calls + if (delta.tool_calls) { + for (const tc of delta.tool_calls) { + if (tc.id && tc.function?.name) { + // New tool call starting + if (hasEmittedContentStart) { + yield { + type: 'content_block_stop', + index: contentBlockIndex, + } + contentBlockIndex++ + hasEmittedContentStart = false + } + + const toolBlockIndex = contentBlockIndex + activeToolCalls.set(tc.index, { + id: tc.id, + name: tc.function.name, + index: toolBlockIndex, + }) + + yield { + type: 'content_block_start', + index: toolBlockIndex, + content_block: { + type: 'tool_use', + id: tc.id, + name: tc.function.name, + input: {}, + ...(tc.extra_content ? { extra_content: tc.extra_content } : {}), + }, + } + contentBlockIndex++ + + // Emit any initial arguments + if (tc.function.arguments) { + yield { + type: 'content_block_delta', + index: toolBlockIndex, + delta: { + type: 'input_json_delta', + partial_json: tc.function.arguments, + }, + } + } + } else if (tc.function?.arguments) { + // Continuation of existing tool call + const active = activeToolCalls.get(tc.index) + if (active) { + yield { + type: 'content_block_delta', + index: active.index, + delta: { + type: 'input_json_delta', + partial_json: tc.function.arguments, + }, + } + } + } + } + } + + // Finish — guard ensures we only process finish_reason once even if + // multiple chunks arrive with finish_reason set (some providers do this) + if (choice.finish_reason && !hasProcessedFinishReason) { + hasProcessedFinishReason = true + + // Close any open content blocks + if (hasEmittedContentStart) { + yield { + type: 'content_block_stop', + index: contentBlockIndex, + } + } + // Close active tool calls + for (const [, tc] of activeToolCalls) { + yield { type: 'content_block_stop', index: tc.index } + } + + const stopReason = + choice.finish_reason === 'tool_calls' + ? 'tool_use' + : choice.finish_reason === 'length' + ? 'max_tokens' + : 'end_turn' + lastStopReason = stopReason + + yield { + type: 'message_delta', + delta: { stop_reason: stopReason, stop_sequence: null }, + ...(chunkUsage ? { usage: chunkUsage } : {}), + } + if (chunkUsage) { + hasEmittedFinalUsage = true + } + } + } + + if ( + !hasEmittedFinalUsage && + chunkUsage && + (chunk.choices?.length ?? 0) === 0 + ) { + yield { + type: 'message_delta', + delta: { stop_reason: lastStopReason, stop_sequence: null }, + usage: chunkUsage, + } + hasEmittedFinalUsage = true + } + } + } + + yield { type: 'message_stop' } +} + +// --------------------------------------------------------------------------- +// The shim client — duck-types as Anthropic SDK +// --------------------------------------------------------------------------- + +class OpenAIShimStream { + private generator: AsyncGenerator + // The controller property is checked by claude.ts to distinguish streams from error messages + controller = new AbortController() + + constructor(generator: AsyncGenerator) { + this.generator = generator + } + + async *[Symbol.asyncIterator]() { + yield* this.generator + } +} + +class OpenAIShimMessages { + private defaultHeaders: Record + + constructor(defaultHeaders: Record) { + this.defaultHeaders = defaultHeaders + } + + create( + params: ShimCreateParams, + options?: { signal?: AbortSignal; headers?: Record }, + ) { + const self = this + + const promise = (async () => { + const request = resolveProviderRequest({ model: params.model }) + const response = await self._doRequest(request, params, options) + + if (params.stream) { + return new OpenAIShimStream( + request.transport === 'codex_responses' + ? codexStreamToAnthropic(response, request.resolvedModel) + : openaiStreamToAnthropic(response, request.resolvedModel), + ) + } + + if (request.transport === 'codex_responses') { + const data = await collectCodexCompletedResponse(response) + return convertCodexResponseToAnthropicMessage( + data, + request.resolvedModel, + ) + } + + const data = await response.json() + return self._convertNonStreamingResponse(data, request.resolvedModel) + })() + + ; (promise as unknown as Record).withResponse = + async () => { + const data = await promise + return { + data, + response: new Response(), + request_id: makeMessageId(), + } + } + + return promise + } + + private async _doRequest( + request: ReturnType, + params: ShimCreateParams, + options?: { signal?: AbortSignal; headers?: Record }, + ): Promise { + if (request.transport === 'codex_responses') { + const credentials = resolveCodexApiCredentials() + if (!credentials.apiKey) { + const authHint = credentials.authPath + ? ` or place a Codex auth.json at ${credentials.authPath}` + : '' + throw new Error( + `Codex auth is required for ${request.requestedModel}. Set CODEX_API_KEY${authHint}.`, + ) + } + if (!credentials.accountId) { + throw new Error( + 'Codex auth is missing chatgpt_account_id. Re-login with the Codex CLI or set CHATGPT_ACCOUNT_ID/CODEX_ACCOUNT_ID.', + ) + } + + return performCodexRequest({ + request, + credentials, + params, + defaultHeaders: { + ...this.defaultHeaders, + ...(options?.headers ?? {}), + }, + signal: options?.signal, + }) + } + + return this._doOpenAIRequest(request, params, options) + } + + private async _doOpenAIRequest( + request: ReturnType, + params: ShimCreateParams, + options?: { signal?: AbortSignal; headers?: Record }, + ): Promise { + const openaiMessages = convertMessages( + params.messages as Array<{ + role: string + message?: { role?: string; content?: unknown } + content?: unknown + }>, + params.system, + ) + + const body: Record = { + model: request.resolvedModel, + messages: openaiMessages, + stream: params.stream ?? false, + } + // Convert max_tokens to max_completion_tokens for OpenAI API compatibility. + // Azure OpenAI requires max_completion_tokens and does not accept max_tokens. + // Ensure max_tokens is a valid positive number before using it. + const maxTokensValue = typeof params.max_tokens === 'number' && params.max_tokens > 0 + ? params.max_tokens + : undefined + const maxCompletionTokensValue = typeof (params as Record).max_completion_tokens === 'number' + ? (params as Record).max_completion_tokens as number + : undefined + + if (maxTokensValue !== undefined) { + body.max_completion_tokens = maxTokensValue + } else if (maxCompletionTokensValue !== undefined) { + body.max_completion_tokens = maxCompletionTokensValue + } + + if (params.stream) { + body.stream_options = { include_usage: true } + } + + if (params.temperature !== undefined) body.temperature = params.temperature + if (params.top_p !== undefined) body.top_p = params.top_p + + if (params.tools && params.tools.length > 0) { + const converted = convertTools( + params.tools as Array<{ + name: string + description?: string + input_schema?: Record + }>, + ) + if (converted.length > 0) { + body.tools = converted + if (params.tool_choice) { + const tc = params.tool_choice as { type?: string; name?: string } + if (tc.type === 'auto') { + body.tool_choice = 'auto' + } else if (tc.type === 'tool' && tc.name) { + body.tool_choice = { + type: 'function', + function: { name: tc.name }, + } + } else if (tc.type === 'any') { + body.tool_choice = 'required' + } else if (tc.type === 'none') { + body.tool_choice = 'none' + } + } + } + } + + const headers: Record = { + 'Content-Type': 'application/json', + ...this.defaultHeaders, + ...(options?.headers ?? {}), + } + + const apiKey = process.env.OPENAI_API_KEY ?? '' + const isAzure = /cognitiveservices\.azure\.com|openai\.azure\.com/.test(request.baseUrl) + + if (apiKey) { + if (isAzure) { + // Azure uses api-key header instead of Bearer token + headers['api-key'] = apiKey + } else { + headers.Authorization = `Bearer ${apiKey}` + } + } + + // Build the chat completions URL + // Azure Cognitive Services / Azure OpenAI require a deployment-specific path + // and an api-version query parameter. + // Standard format: {base}/openai/deployments/{model}/chat/completions?api-version={version} + // Non-Azure: {base}/chat/completions + let chatCompletionsUrl: string + if (isAzure) { + const apiVersion = process.env.AZURE_OPENAI_API_VERSION ?? '2024-12-01-preview' + const deployment = request.resolvedModel ?? process.env.OPENAI_MODEL ?? 'gpt-4o' + // If base URL already contains /deployments/, use it as-is with api-version + if (/\/deployments\//i.test(request.baseUrl)) { + const base = request.baseUrl.replace(/\/+$/, '') + chatCompletionsUrl = `${base}/chat/completions?api-version=${apiVersion}` + } else { + // Strip trailing /v1 or /openai/v1 if present, then build Azure path + const base = request.baseUrl.replace(/\/(openai\/)?v1\/?$/, '').replace(/\/+$/, '') + chatCompletionsUrl = `${base}/openai/deployments/${deployment}/chat/completions?api-version=${apiVersion}` + } + } else { + chatCompletionsUrl = `${request.baseUrl}/chat/completions` + } + + const response = await fetch(chatCompletionsUrl, { + method: 'POST', + headers, + body: JSON.stringify(body), + signal: options?.signal, + }) + + if (!response.ok) { + const errorBody = await response.text().catch(() => 'unknown error') + throw new Error(`OpenAI API error ${response.status}: ${errorBody}`) + } + + return response + } + + private _convertNonStreamingResponse( + data: { + id?: string + model?: string + choices?: Array<{ + message?: { + role?: string + content?: string | null + tool_calls?: Array<{ + id: string + function: { name: string; arguments: string } + extra_content?: Record + }> + } + finish_reason?: string + }> + usage?: { + prompt_tokens?: number + completion_tokens?: number + } + }, + model: string, + ) { + const choice = data.choices?.[0] + const content: Array> = [] + + if (choice?.message?.content) { + content.push({ type: 'text', text: choice.message.content }) + } + + if (choice?.message?.tool_calls) { + for (const tc of choice.message.tool_calls) { + let input: unknown + try { + input = JSON.parse(tc.function.arguments) + } catch { + input = { raw: tc.function.arguments } + } + content.push({ + type: 'tool_use', + id: tc.id, + name: tc.function.name, + input, + ...(tc.extra_content ? { extra_content: tc.extra_content } : {}), + }) + } + } + + const stopReason = + choice?.finish_reason === 'tool_calls' + ? 'tool_use' + : choice?.finish_reason === 'length' + ? 'max_tokens' + : 'end_turn' + + return { + id: data.id ?? makeMessageId(), + type: 'message', + role: 'assistant', + content, + model: data.model ?? model, + stop_reason: stopReason, + stop_sequence: null, + usage: { + input_tokens: data.usage?.prompt_tokens ?? 0, + output_tokens: data.usage?.completion_tokens ?? 0, + cache_creation_input_tokens: 0, + cache_read_input_tokens: 0, + }, + } + } +} + +class OpenAIShimBeta { + messages: OpenAIShimMessages + + constructor(defaultHeaders: Record) { + this.messages = new OpenAIShimMessages(defaultHeaders) + } +} + +export function createOpenAIShimClient(options: { + defaultHeaders?: Record + maxRetries?: number + timeout?: number +}): unknown { + const beta = new OpenAIShimBeta({ + ...(options.defaultHeaders ?? {}), + }) + + return { + beta, + messages: beta.messages, + } +} diff --git a/src/services/api/providerConfig.ts b/src/services/api/providerConfig.ts new file mode 100644 index 00000000..b197d785 --- /dev/null +++ b/src/services/api/providerConfig.ts @@ -0,0 +1,313 @@ +import { existsSync, readFileSync } from 'node:fs' +import { homedir } from 'node:os' +import { join } from 'node:path' + +export const DEFAULT_OPENAI_BASE_URL = 'https://api.openai.com/v1' +export const DEFAULT_CODEX_BASE_URL = 'https://chatgpt.com/backend-api/codex' + +const CODEX_ALIAS_MODELS: Record< + string, + { + model: string + reasoningEffort?: ReasoningEffort + } +> = { + codexplan: { + model: 'gpt-5.4', + reasoningEffort: 'high', + }, + codexspark: { + model: 'gpt-5.3-codex-spark', + }, +} as const + +type CodexAlias = keyof typeof CODEX_ALIAS_MODELS +type ReasoningEffort = 'low' | 'medium' | 'high' + +export type ProviderTransport = 'chat_completions' | 'codex_responses' + +export type ResolvedProviderRequest = { + transport: ProviderTransport + requestedModel: string + resolvedModel: string + baseUrl: string + reasoning?: { + effort: ReasoningEffort + } +} + +export type ResolvedCodexCredentials = { + apiKey: string + accountId?: string + authPath?: string + source: 'env' | 'auth.json' | 'none' +} + +type ModelDescriptor = { + raw: string + baseModel: string + reasoning?: { + effort: ReasoningEffort + } +} + +const LOCALHOST_HOSTNAMES = new Set(['localhost', '127.0.0.1', '::1']) + +function asTrimmedString(value: unknown): string | undefined { + return typeof value === 'string' && value.trim() ? value.trim() : undefined +} + +function readNestedString( + value: unknown, + paths: string[][], +): string | undefined { + for (const path of paths) { + let current = value + let valid = true + for (const key of path) { + if (!current || typeof current !== 'object' || !(key in current)) { + valid = false + break + } + current = (current as Record)[key] + } + if (!valid) continue + const stringValue = asTrimmedString(current) + if (stringValue) return stringValue + } + return undefined +} + +function decodeJwtPayload(token: string): Record | undefined { + const parts = token.split('.') + if (parts.length < 2) return undefined + + try { + const normalized = parts[1].replace(/-/g, '+').replace(/_/g, '/') + const padded = normalized + '='.repeat((4 - (normalized.length % 4)) % 4) + const json = Buffer.from(padded, 'base64').toString('utf8') + const parsed = JSON.parse(json) + return parsed && typeof parsed === 'object' + ? (parsed as Record) + : undefined + } catch { + return undefined + } +} + +function parseReasoningEffort(value: string | undefined): ReasoningEffort | undefined { + if (!value) return undefined + const normalized = value.trim().toLowerCase() + if (normalized === 'low' || normalized === 'medium' || normalized === 'high') { + return normalized + } + return undefined +} + +function parseModelDescriptor(model: string): ModelDescriptor { + const trimmed = model.trim() + const queryIndex = trimmed.indexOf('?') + if (queryIndex === -1) { + const alias = trimmed.toLowerCase() as CodexAlias + const aliasConfig = CODEX_ALIAS_MODELS[alias] + if (aliasConfig) { + return { + raw: trimmed, + baseModel: aliasConfig.model, + reasoning: aliasConfig.reasoningEffort + ? { effort: aliasConfig.reasoningEffort } + : undefined, + } + } + return { + raw: trimmed, + baseModel: trimmed, + } + } + + const baseModel = trimmed.slice(0, queryIndex).trim() + const params = new URLSearchParams(trimmed.slice(queryIndex + 1)) + const alias = baseModel.toLowerCase() as CodexAlias + const aliasConfig = CODEX_ALIAS_MODELS[alias] + const resolvedBaseModel = aliasConfig?.model ?? baseModel + const reasoning = + parseReasoningEffort(params.get('reasoning') ?? undefined) ?? + (aliasConfig?.reasoningEffort + ? { effort: aliasConfig.reasoningEffort } + : undefined) + + return { + raw: trimmed, + baseModel: resolvedBaseModel, + reasoning: typeof reasoning === 'string' ? { effort: reasoning } : reasoning, + } +} + +function isCodexAlias(model: string): boolean { + const normalized = model.trim().toLowerCase() + const base = normalized.split('?', 1)[0] ?? normalized + return base in CODEX_ALIAS_MODELS +} + +export function isLocalProviderUrl(baseUrl: string | undefined): boolean { + if (!baseUrl) return false + try { + return LOCALHOST_HOSTNAMES.has(new URL(baseUrl).hostname) + } catch { + return false + } +} + +export function isCodexBaseUrl(baseUrl: string | undefined): boolean { + if (!baseUrl) return false + try { + const parsed = new URL(baseUrl) + return ( + parsed.hostname === 'chatgpt.com' && + parsed.pathname.replace(/\/+$/, '') === '/backend-api/codex' + ) + } catch { + return false + } +} + +export function resolveProviderRequest(options?: { + model?: string + baseUrl?: string + fallbackModel?: string +}): ResolvedProviderRequest { + const requestedModel = + options?.model?.trim() || + process.env.OPENAI_MODEL?.trim() || + options?.fallbackModel?.trim() || + 'gpt-4o' + const descriptor = parseModelDescriptor(requestedModel) + const rawBaseUrl = + options?.baseUrl ?? + process.env.OPENAI_BASE_URL ?? + process.env.OPENAI_API_BASE ?? + undefined + const transport: ProviderTransport = + isCodexAlias(requestedModel) || isCodexBaseUrl(rawBaseUrl) + ? 'codex_responses' + : 'chat_completions' + + return { + transport, + requestedModel, + resolvedModel: descriptor.baseModel, + baseUrl: + (rawBaseUrl ?? + (transport === 'codex_responses' + ? DEFAULT_CODEX_BASE_URL + : DEFAULT_OPENAI_BASE_URL) + ).replace(/\/+$/, ''), + reasoning: descriptor.reasoning, + } +} + +export function resolveCodexAuthPath( + env: NodeJS.ProcessEnv = process.env, +): string { + const explicit = asTrimmedString(env.CODEX_AUTH_JSON_PATH) + if (explicit) return explicit + + const codexHome = asTrimmedString(env.CODEX_HOME) + if (codexHome) return join(codexHome, 'auth.json') + + return join(homedir(), '.codex', 'auth.json') +} + +export function parseChatgptAccountId( + token: string | undefined, +): string | undefined { + if (!token) return undefined + const payload = decodeJwtPayload(token) + const fromClaim = asTrimmedString( + payload?.['https://api.openai.com/auth.chatgpt_account_id'], + ) + if (fromClaim) return fromClaim + return asTrimmedString(payload?.chatgpt_account_id) +} + +function loadCodexAuthJson( + authPath: string, +): Record | undefined { + if (!existsSync(authPath)) return undefined + try { + const raw = readFileSync(authPath, 'utf8') + const parsed = JSON.parse(raw) + return parsed && typeof parsed === 'object' + ? (parsed as Record) + : undefined + } catch { + return undefined + } +} + +export function resolveCodexApiCredentials( + env: NodeJS.ProcessEnv = process.env, +): ResolvedCodexCredentials { + const envApiKey = asTrimmedString(env.CODEX_API_KEY) + const envAccountId = + asTrimmedString(env.CODEX_ACCOUNT_ID) ?? + asTrimmedString(env.CHATGPT_ACCOUNT_ID) + + if (envApiKey) { + return { + apiKey: envApiKey, + accountId: envAccountId ?? parseChatgptAccountId(envApiKey), + source: 'env', + } + } + + const authPath = resolveCodexAuthPath(env) + const authJson = loadCodexAuthJson(authPath) + if (!authJson) { + return { + apiKey: '', + authPath, + source: 'none', + } + } + + const apiKey = readNestedString(authJson, [ + ['access_token'], + ['accessToken'], + ['tokens', 'access_token'], + ['tokens', 'accessToken'], + ['auth', 'access_token'], + ['auth', 'accessToken'], + ['token', 'access_token'], + ['token', 'accessToken'], + ['tokens', 'id_token'], + ['tokens', 'idToken'], + ]) + const accountId = + envAccountId ?? + readNestedString(authJson, [ + ['account_id'], + ['accountId'], + ['tokens', 'account_id'], + ['tokens', 'accountId'], + ['auth', 'account_id'], + ['auth', 'accountId'], + ]) ?? + parseChatgptAccountId(apiKey) + + if (!apiKey) { + return { + apiKey: '', + accountId, + authPath, + source: 'none', + } + } + + return { + apiKey, + accountId, + authPath, + source: 'auth.json', + } +} diff --git a/src/utils/auth.ts b/src/utils/auth.ts index 0c0b3e8f..6c62ad8e 100644 --- a/src/utils/auth.ts +++ b/src/utils/auth.ts @@ -115,7 +115,8 @@ export function isAnthropicAuthEnabled(): boolean { const is3P = isEnvTruthy(process.env.CLAUDE_CODE_USE_BEDROCK) || isEnvTruthy(process.env.CLAUDE_CODE_USE_VERTEX) || - isEnvTruthy(process.env.CLAUDE_CODE_USE_FOUNDRY) + isEnvTruthy(process.env.CLAUDE_CODE_USE_FOUNDRY) || + isEnvTruthy(process.env.CLAUDE_CODE_USE_OPENAI) // Check if user has configured an external API key source // This allows externally-provided API keys to work (without requiring proxy configuration) @@ -1728,12 +1729,13 @@ export function getSubscriptionName(): string { } } -/** Check if using third-party services (Bedrock or Vertex or Foundry) */ +/** Check if using third-party services (Bedrock or Vertex or Foundry or OpenAI-compatible) */ export function isUsing3PServices(): boolean { return !!( isEnvTruthy(process.env.CLAUDE_CODE_USE_BEDROCK) || isEnvTruthy(process.env.CLAUDE_CODE_USE_VERTEX) || - isEnvTruthy(process.env.CLAUDE_CODE_USE_FOUNDRY) + isEnvTruthy(process.env.CLAUDE_CODE_USE_FOUNDRY) || + isEnvTruthy(process.env.CLAUDE_CODE_USE_OPENAI) ) } diff --git a/src/utils/model/configs.ts b/src/utils/model/configs.ts index 89f243d8..8587b276 100644 --- a/src/utils/model/configs.ts +++ b/src/utils/model/configs.ts @@ -3,6 +3,17 @@ import type { APIProvider } from './providers.js' export type ModelConfig = Record +// --------------------------------------------------------------------------- +// OpenAI-compatible model mappings +// Maps Claude model tiers to sensible defaults for popular providers. +// Override with OPENAI_MODEL, ANTHROPIC_MODEL, or settings.model +// --------------------------------------------------------------------------- +export const OPENAI_MODEL_DEFAULTS = { + opus: 'gpt-4o', // best reasoning + sonnet: 'gpt-4o-mini', // balanced + haiku: 'gpt-4o-mini', // fast & cheap +} as const + // @[MODEL LAUNCH]: Add a new CLAUDE_*_CONFIG constant here. Double check the correct model strings // here since the pattern may change. @@ -11,6 +22,7 @@ export const CLAUDE_3_7_SONNET_CONFIG = { bedrock: 'us.anthropic.claude-3-7-sonnet-20250219-v1:0', vertex: 'claude-3-7-sonnet@20250219', foundry: 'claude-3-7-sonnet', + openai: 'gpt-4o-mini', } as const satisfies ModelConfig export const CLAUDE_3_5_V2_SONNET_CONFIG = { @@ -18,6 +30,7 @@ export const CLAUDE_3_5_V2_SONNET_CONFIG = { bedrock: 'anthropic.claude-3-5-sonnet-20241022-v2:0', vertex: 'claude-3-5-sonnet-v2@20241022', foundry: 'claude-3-5-sonnet', + openai: 'gpt-4o-mini', } as const satisfies ModelConfig export const CLAUDE_3_5_HAIKU_CONFIG = { @@ -25,6 +38,7 @@ export const CLAUDE_3_5_HAIKU_CONFIG = { bedrock: 'us.anthropic.claude-3-5-haiku-20241022-v1:0', vertex: 'claude-3-5-haiku@20241022', foundry: 'claude-3-5-haiku', + openai: 'gpt-4o-mini', } as const satisfies ModelConfig export const CLAUDE_HAIKU_4_5_CONFIG = { @@ -32,6 +46,7 @@ export const CLAUDE_HAIKU_4_5_CONFIG = { bedrock: 'us.anthropic.claude-haiku-4-5-20251001-v1:0', vertex: 'claude-haiku-4-5@20251001', foundry: 'claude-haiku-4-5', + openai: 'gpt-4o-mini', } as const satisfies ModelConfig export const CLAUDE_SONNET_4_CONFIG = { @@ -39,6 +54,7 @@ export const CLAUDE_SONNET_4_CONFIG = { bedrock: 'us.anthropic.claude-sonnet-4-20250514-v1:0', vertex: 'claude-sonnet-4@20250514', foundry: 'claude-sonnet-4', + openai: 'gpt-4o-mini', } as const satisfies ModelConfig export const CLAUDE_SONNET_4_5_CONFIG = { @@ -46,6 +62,7 @@ export const CLAUDE_SONNET_4_5_CONFIG = { bedrock: 'us.anthropic.claude-sonnet-4-5-20250929-v1:0', vertex: 'claude-sonnet-4-5@20250929', foundry: 'claude-sonnet-4-5', + openai: 'gpt-4o', } as const satisfies ModelConfig export const CLAUDE_OPUS_4_CONFIG = { @@ -53,6 +70,7 @@ export const CLAUDE_OPUS_4_CONFIG = { bedrock: 'us.anthropic.claude-opus-4-20250514-v1:0', vertex: 'claude-opus-4@20250514', foundry: 'claude-opus-4', + openai: 'gpt-4o', } as const satisfies ModelConfig export const CLAUDE_OPUS_4_1_CONFIG = { @@ -60,6 +78,7 @@ export const CLAUDE_OPUS_4_1_CONFIG = { bedrock: 'us.anthropic.claude-opus-4-1-20250805-v1:0', vertex: 'claude-opus-4-1@20250805', foundry: 'claude-opus-4-1', + openai: 'gpt-4o', } as const satisfies ModelConfig export const CLAUDE_OPUS_4_5_CONFIG = { @@ -67,6 +86,7 @@ export const CLAUDE_OPUS_4_5_CONFIG = { bedrock: 'us.anthropic.claude-opus-4-5-20251101-v1:0', vertex: 'claude-opus-4-5@20251101', foundry: 'claude-opus-4-5', + openai: 'gpt-4o', } as const satisfies ModelConfig export const CLAUDE_OPUS_4_6_CONFIG = { @@ -74,6 +94,7 @@ export const CLAUDE_OPUS_4_6_CONFIG = { bedrock: 'us.anthropic.claude-opus-4-6-v1', vertex: 'claude-opus-4-6', foundry: 'claude-opus-4-6', + openai: 'gpt-4o', } as const satisfies ModelConfig export const CLAUDE_SONNET_4_6_CONFIG = { @@ -81,6 +102,7 @@ export const CLAUDE_SONNET_4_6_CONFIG = { bedrock: 'us.anthropic.claude-sonnet-4-6', vertex: 'claude-sonnet-4-6', foundry: 'claude-sonnet-4-6', + openai: 'gpt-4o-mini', } as const satisfies ModelConfig // @[MODEL LAUNCH]: Register the new config here. diff --git a/src/utils/model/model.ts b/src/utils/model/model.ts index 85e369fa..2c3a5a30 100644 --- a/src/utils/model/model.ts +++ b/src/utils/model/model.ts @@ -34,7 +34,12 @@ export type ModelName = string export type ModelSetting = ModelName | ModelAlias | null export function getSmallFastModel(): ModelName { - return process.env.ANTHROPIC_SMALL_FAST_MODEL || getDefaultHaikuModel() + if (process.env.ANTHROPIC_SMALL_FAST_MODEL) return process.env.ANTHROPIC_SMALL_FAST_MODEL + // For OpenAI provider, use OPENAI_MODEL or a sensible default + if (getAPIProvider() === 'openai') { + return process.env.OPENAI_MODEL || 'gpt-4o-mini' + } + return getDefaultHaikuModel() } export function isNonCustomOpusModel(model: ModelName): boolean { @@ -66,7 +71,7 @@ export function getUserSpecifiedModelSetting(): ModelSetting | undefined { specifiedModel = modelOverride } else { const settings = getSettings_DEPRECATED() || {} - specifiedModel = process.env.ANTHROPIC_MODEL || settings.model || undefined + specifiedModel = process.env.ANTHROPIC_MODEL || process.env.OPENAI_MODEL || settings.model || undefined } // Ignore the user-specified model if it's not in the availableModels allowlist. diff --git a/src/utils/model/providers.ts b/src/utils/model/providers.ts index 481f8bf7..b78e757a 100644 --- a/src/utils/model/providers.ts +++ b/src/utils/model/providers.ts @@ -1,16 +1,18 @@ import type { AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS } from '../../services/analytics-stub.js' import { isEnvTruthy } from '../envUtils.js' -export type APIProvider = 'firstParty' | 'bedrock' | 'vertex' | 'foundry' +export type APIProvider = 'firstParty' | 'bedrock' | 'vertex' | 'foundry' | 'openai' export function getAPIProvider(): APIProvider { - return isEnvTruthy(process.env.CLAUDE_CODE_USE_BEDROCK) - ? 'bedrock' - : isEnvTruthy(process.env.CLAUDE_CODE_USE_VERTEX) - ? 'vertex' - : isEnvTruthy(process.env.CLAUDE_CODE_USE_FOUNDRY) - ? 'foundry' - : 'firstParty' + return isEnvTruthy(process.env.CLAUDE_CODE_USE_OPENAI) + ? 'openai' + : isEnvTruthy(process.env.CLAUDE_CODE_USE_BEDROCK) + ? 'bedrock' + : isEnvTruthy(process.env.CLAUDE_CODE_USE_VERTEX) + ? 'vertex' + : isEnvTruthy(process.env.CLAUDE_CODE_USE_FOUNDRY) + ? 'foundry' + : 'firstParty' } export function getAPIProviderForStatsig(): AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS { From a4957ce0326bf59974c687525fdb6fb430b69e26 Mon Sep 17 00:00:00 2001 From: DogEZ Date: Sat, 11 Apr 2026 09:59:20 +0800 Subject: [PATCH 04/14] chore: remove stickers command --- src/commands.ts | 3 --- src/commands/stickers/index.ts | 11 ----------- src/commands/stickers/stickers.ts | 16 ---------------- 3 files changed, 30 deletions(-) delete mode 100644 src/commands/stickers/index.ts delete mode 100644 src/commands/stickers/stickers.ts diff --git a/src/commands.ts b/src/commands.ts index 9e4bf810..6ec9601e 100644 --- a/src/commands.ts +++ b/src/commands.ts @@ -148,7 +148,6 @@ import antTrace from './commands/ant-trace/index.js' import perfIssue from './commands/perf-issue/index.js' import sandboxToggle from './commands/sandbox-toggle/index.js' import chrome from './commands/chrome/index.js' -import stickers from './commands/stickers/index.js' import advisor from './commands/advisor.js' import { logError } from './utils/log.js' import { toError } from './utils/errors.js' @@ -300,7 +299,6 @@ const COMMANDS = memoize((): Command[] => [ stats, status, statusline, - stickers, tag, theme, feedback, @@ -632,7 +630,6 @@ export const REMOTE_SAFE_COMMANDS: Set = new Set([ plan, // Plan mode toggle keybindings, // Keybinding management statusline, // Status line toggle - stickers, // Stickers mobile, // Mobile QR code ]) diff --git a/src/commands/stickers/index.ts b/src/commands/stickers/index.ts deleted file mode 100644 index ebca4530..00000000 --- a/src/commands/stickers/index.ts +++ /dev/null @@ -1,11 +0,0 @@ -import type { Command } from '../../commands.js' - -const stickers = { - type: 'local', - name: 'stickers', - description: 'Order Claude Code stickers', - supportsNonInteractive: false, - load: () => import('./stickers.js'), -} satisfies Command - -export default stickers diff --git a/src/commands/stickers/stickers.ts b/src/commands/stickers/stickers.ts deleted file mode 100644 index ede51931..00000000 --- a/src/commands/stickers/stickers.ts +++ /dev/null @@ -1,16 +0,0 @@ -import type { LocalCommandResult } from '../../types/command.js' -import { openBrowser } from '../../utils/browser.js' - -export async function call(): Promise { - const url = 'https://www.stickermule.com/claudecode' - const success = await openBrowser(url) - - if (success) { - return { type: 'text', value: 'Opening sticker page in browser…' } - } else { - return { - type: 'text', - value: `Failed to open browser. Visit: ${url}`, - } - } -} From aab46c64b9bbf6adb576443ac0279798dc747414 Mon Sep 17 00:00:00 2001 From: DogEZ Date: Sat, 11 Apr 2026 10:00:22 +0800 Subject: [PATCH 05/14] feat: remove user quota validation for CLAUDE_CODE_MAX_CONTEXT_TOKENS override --- src/utils/context.ts | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/utils/context.ts b/src/utils/context.ts index d9714de9..ee5d09e6 100644 --- a/src/utils/context.ts +++ b/src/utils/context.ts @@ -52,14 +52,11 @@ export function getContextWindowForModel( model: string, betas?: string[], ): number { - // Allow override via environment variable (ant-only) + // Allow override via environment variable // This takes precedence over all other context window resolution, including 1M detection, // so users can cap the effective context window for local decisions (auto-compact, etc.) // while still using a 1M-capable endpoint. - if ( - process.env.USER_TYPE === 'ant' && - process.env.CLAUDE_CODE_MAX_CONTEXT_TOKENS - ) { + if (process.env.CLAUDE_CODE_MAX_CONTEXT_TOKENS) { const override = parseInt(process.env.CLAUDE_CODE_MAX_CONTEXT_TOKENS, 10) if (!isNaN(override) && override > 0) { return override From 2d303d1dcf7007bf1a6eeb85f6a11f5fb7fd21fe Mon Sep 17 00:00:00 2001 From: DogEZ Date: Sat, 11 Apr 2026 10:04:18 +0800 Subject: [PATCH 06/14] feat: add auto-compact buffer and summary token overrides - Add CLAUDE_CODE_SUMMARY_OUTPUT_TOKENS - Add CLAUDE_CODE_AUTO_COMPACT_BUFFER_TOKENS --- src/services/compact/autoCompact.ts | 35 +++++++++++++++++++++++------ src/utils/analyzeContext.ts | 4 ++-- 2 files changed, 30 insertions(+), 9 deletions(-) diff --git a/src/services/compact/autoCompact.ts b/src/services/compact/autoCompact.ts index 46faaa96..45f03d5a 100644 --- a/src/services/compact/autoCompact.ts +++ b/src/services/compact/autoCompact.ts @@ -27,14 +27,23 @@ import { trySessionMemoryCompaction } from './sessionMemoryCompact.js' // Reserve this many tokens for output during compaction // Based on p99.99 of compact summary output being 17,387 tokens. -const MAX_OUTPUT_TOKENS_FOR_SUMMARY = 20_000 +export const DEFAULT_MAX_OUTPUT_TOKENS_FOR_SUMMARY = 20_000 // Returns the context window size minus the max output tokens for the model export function getEffectiveContextWindowSize(model: string): number { - const reservedTokensForSummary = Math.min( - getMaxOutputTokensForModel(model), - MAX_OUTPUT_TOKENS_FOR_SUMMARY, - ) + // Allow overriding max output tokens for summary via environment variable. + // If the env var is defined, use the provided value directly. + const envSummaryTokens = process.env.CLAUDE_CODE_SUMMARY_OUTPUT_TOKENS + const parsedSummaryTokens = envSummaryTokens + ? parseInt(envSummaryTokens, 10) + : DEFAULT_MAX_OUTPUT_TOKENS_FOR_SUMMARY + const reservedTokensForSummary = envSummaryTokens !== undefined && + !Number.isNaN(parsedSummaryTokens) + ? parsedSummaryTokens + : Math.min( + getMaxOutputTokensForModel(model), + DEFAULT_MAX_OUTPUT_TOKENS_FOR_SUMMARY, + ) let contextWindow = getContextWindowForModel(model, getSdkBetas()) const autoCompactWindow = process.env.CLAUDE_CODE_AUTO_COMPACT_WINDOW @@ -59,11 +68,22 @@ export type AutoCompactTrackingState = { consecutiveFailures?: number } -export const AUTOCOMPACT_BUFFER_TOKENS = 13_000 +export const DEFAULT_AUTOCOMPACT_BUFFER_TOKENS = 13_000 export const WARNING_THRESHOLD_BUFFER_TOKENS = 20_000 export const ERROR_THRESHOLD_BUFFER_TOKENS = 20_000 export const MANUAL_COMPACT_BUFFER_TOKENS = 3_000 +export function getAutoCompactBufferTokens(): number { + // Allow overriding autocompact buffer size via environment variable. + // If the env var is defined, use the provided value directly. + const envBuffer = process.env.CLAUDE_CODE_AUTO_COMPACT_BUFFER_TOKENS + const parsed = envBuffer !== undefined ? parseInt(envBuffer, 10) : NaN + if (envBuffer !== undefined && !Number.isNaN(parsed)) { + return parsed + } + return DEFAULT_AUTOCOMPACT_BUFFER_TOKENS +} + // Stop trying autocompact after this many consecutive failures. // BQ 2026-03-10: 1,279 sessions had 50+ consecutive failures (up to 3,272) // in a single session, wasting ~250K API calls/day globally. @@ -72,8 +92,9 @@ const MAX_CONSECUTIVE_AUTOCOMPACT_FAILURES = 3 export function getAutoCompactThreshold(model: string): number { const effectiveContextWindow = getEffectiveContextWindowSize(model) + const autocompactBufferTokens = getAutoCompactBufferTokens() const autocompactThreshold = - effectiveContextWindow - AUTOCOMPACT_BUFFER_TOKENS + effectiveContextWindow - autocompactBufferTokens // Override for easier testing of autocompact const envPercent = process.env.CLAUDE_AUTOCOMPACT_PCT_OVERRIDE diff --git a/src/utils/analyzeContext.ts b/src/utils/analyzeContext.ts index 1c330d8e..24ecc376 100644 --- a/src/utils/analyzeContext.ts +++ b/src/utils/analyzeContext.ts @@ -10,7 +10,7 @@ import { getCommandName } from '../commands.js' import { getSystemContext } from '../context.js' import { getFeatureValue_CACHED_MAY_BE_STALE } from '../services/analytics-stub.js' import { - AUTOCOMPACT_BUFFER_TOKENS, + getAutoCompactBufferTokens, getEffectiveContextWindowSize, isAutoCompactEnabled, MANUAL_COMPACT_BUFFER_TOKENS, @@ -1001,7 +1001,7 @@ export async function analyzeContextUsage( // Check if autocompact is enabled and calculate threshold const isAutoCompact = isAutoCompactEnabled() const autoCompactThreshold = isAutoCompact - ? getEffectiveContextWindowSize(model) - AUTOCOMPACT_BUFFER_TOKENS + ? getEffectiveContextWindowSize(model) - getAutoCompactBufferTokens() : undefined // Create categories From 601baa3aade98379204bac67cb941cbbab17fe29 Mon Sep 17 00:00:00 2001 From: DogEZ Date: Sat, 11 Apr 2026 10:07:06 +0800 Subject: [PATCH 07/14] refactor: install.sh: improve installation path and cleanup --- install.sh | 59 +++++++++++++++++++++++++++++++----------------------- 1 file changed, 34 insertions(+), 25 deletions(-) diff --git a/install.sh b/install.sh index 2d304fe1..5c49da42 100755 --- a/install.sh +++ b/install.sh @@ -14,7 +14,8 @@ DIM='\033[2m' RESET='\033[0m' REPO="https://github.com/DdogezD/claudium.git" -INSTALL_DIR="$HOME/claudium" +BUILD_DIR="$HOME/.cache/claudium" +INSTALL_DIR="$HOME/.local/bin" BUN_MIN_VERSION="1.3.11" info() { printf "${CYAN}[*]${RESET} %s\n" "$*"; } @@ -64,7 +65,9 @@ check_git() { # Compare semver: returns 0 if $1 >= $2 version_gte() { - [ "$(printf '%s\n' "$1" "$2" | sort -V | head -1)" = "$2" ] + local newer + newer="$(printf '%s\n' "$1" "$2" | sort -V | tail -1)" + [ "$newer" = "$1" ] } check_bun() { @@ -100,44 +103,48 @@ install_bun() { # ------------------------------------------------------------------- clone_repo() { - if [ -d "$INSTALL_DIR" ]; then - warn "$INSTALL_DIR already exists" - if [ -d "$INSTALL_DIR/.git" ]; then + if [ -d "$BUILD_DIR" ]; then + warn "$BUILD_DIR already exists" + if [ -d "$BUILD_DIR/.git" ]; then info "Pulling latest changes..." - git -C "$INSTALL_DIR" pull --ff-only origin main 2>/dev/null || { + git -C "$BUILD_DIR" pull --ff-only origin main 2>/dev/null || { warn "Pull failed, continuing with existing copy" } fi else - info "Cloning repository..." - git clone --depth 1 "$REPO" "$INSTALL_DIR" + info "Cloning repository to cache..." + git clone --depth 1 "$REPO" "$BUILD_DIR" fi - ok "Source: $INSTALL_DIR" + ok "Source cache: $BUILD_DIR" } install_deps() { info "Installing dependencies..." - cd "$INSTALL_DIR" + cd "$BUILD_DIR" || fail "Cannot enter $BUILD_DIR" bun install --frozen-lockfile 2>/dev/null || bun install ok "Dependencies installed" } build_binary() { info "Building claudium (all experimental features enabled)..." - cd "$INSTALL_DIR" + cd "$BUILD_DIR" || fail "Cannot enter $BUILD_DIR" bun run build:dev:full - ok "Binary built: $INSTALL_DIR/cli-dev" + local binary="$BUILD_DIR/cli-dev" + ok "Binary built: $binary" } -link_binary() { - local link_dir="$HOME/.local/bin" - mkdir -p "$link_dir" +install_binary() { + mkdir -p "$(dirname "$INSTALL_DIR")" - ln -sf "$INSTALL_DIR/cli-dev" "$link_dir/claudium" - ok "Symlinked: $link_dir/claudium" + cp "$BUILD_DIR/cli-dev" "$INSTALL_DIR/claudium" + chmod +x "$INSTALL_DIR/claudium" + ok "Installed: $INSTALL_DIR/claudium" - if ! echo "$PATH" | tr ':' '\n' | grep -qx "$link_dir"; then - warn "$link_dir is not on your PATH" + rm -rf "$BUILD_DIR" + ok "Build cache cleaned" + + if ! echo "$PATH" | tr ':' '\n' | grep -qx "$INSTALL_DIR"; then + warn "$INSTALL_DIR is not on your PATH" echo "" printf "${YELLOW} Add this to your shell profile (~/.bashrc, ~/.zshrc, etc.):${RESET}\n" printf "${BOLD} export PATH=\"\$HOME/.local/bin:\$PATH\"${RESET}\n" @@ -161,22 +168,24 @@ echo "" clone_repo install_deps build_binary -link_binary +install_binary echo "" printf "${GREEN}${BOLD} Installation complete!${RESET}\n" echo "" printf " ${BOLD}Run it:${RESET}\n" -printf " ${CYAN}claudium${RESET} # interactive REPL\n" +printf " ${CYAN}claudium${RESET} # interactive REPL\n" printf " ${CYAN}claudium -p \"your prompt\"${RESET} # one-shot mode\n" echo "" -printf " ${BOLD}Set your API key:${RESET}\n" +printf " ${BOLD}Set your Anthropic Messages API key:${RESET}\n" printf " ${CYAN}export ANTHROPIC_API_KEY=\"sk-ant-...\"${RESET}\n" echo "" printf " ${BOLD}Or log in with Claude.ai:${RESET}\n" printf " ${CYAN}claudium /login${RESET}\n" echo "" -printf " ${DIM}Source: $INSTALL_DIR${RESET}\n" -printf " ${DIM}Binary: $INSTALL_DIR/cli-dev${RESET}\n" -printf " ${DIM}Link: ~/.local/bin/claudium${RESET}\n" +printf " ${BOLD}Also support OpenAI Chat Completions APIs:${RESET}\n" +printf " ${CYAN}export CLAUDE_CODE_USE_OPENAI=1${RESET}\n" +printf " ${CYAN}export OPENAI_BASE_URL=http://.../v1${RESET}\n" +echo "" +printf " ${BOLD}See README.md for full configs.${RESET}\n" echo "" From cd12faf8e6c92b502a04c8fd029a0a4936f200a1 Mon Sep 17 00:00:00 2001 From: DogEZ Date: Sat, 11 Apr 2026 10:08:49 +0800 Subject: [PATCH 08/14] feat: use claudium features --- install.sh | 4 ++-- package.json | 1 + scripts/build.ts | 35 +++++++++++++++++++++++++++++++++++ 3 files changed, 38 insertions(+), 2 deletions(-) diff --git a/install.sh b/install.sh index 5c49da42..3547e964 100755 --- a/install.sh +++ b/install.sh @@ -126,9 +126,9 @@ install_deps() { } build_binary() { - info "Building claudium (all experimental features enabled)..." + info "Building claudium..." cd "$BUILD_DIR" || fail "Cannot enter $BUILD_DIR" - bun run build:dev:full + bun run build:dev:claudium local binary="$BUILD_DIR/cli-dev" ok "Binary built: $binary" } diff --git a/package.json b/package.json index 9359c079..b3541a57 100644 --- a/package.json +++ b/package.json @@ -16,6 +16,7 @@ "build": "bun run ./scripts/build.ts", "build:dev": "bun run ./scripts/build.ts --dev", "build:dev:full": "bun run ./scripts/build.ts --dev --feature-set=dev-full", + "build:dev:claudium": "bun run ./scripts/build.ts --dev --feature-set=claudium", "compile": "bun run ./scripts/build.ts --compile", "dev": "bun run ./src/entrypoints/cli.tsx" }, diff --git a/scripts/build.ts b/scripts/build.ts index 9bb1ee92..303fa010 100644 --- a/scripts/build.ts +++ b/scripts/build.ts @@ -88,6 +88,41 @@ for (let i = 0; i < args.length; i += 1) { for (const feature of fullExperimentalFeatures) { featureSet.add(feature) } + } else if (args[i + 1] === 'claudium') { + const claudiumFeatures = [ + 'AGENT_MEMORY_SNAPSHOT', + 'AGENT_TRIGGERS', + 'AGENT_TRIGGERS_REMOTE', + 'AWAY_SUMMARY', + 'BASH_CLASSIFIER', + 'BUILTIN_EXPLORE_PLAN_AGENTS', + 'CACHED_MICROCOMPACT', + 'COMPACTION_REMINDERS', + 'EXTRACT_MEMORIES', + 'HISTORY_PICKER', + 'HOOK_PROMPTS', + 'KAIROS_BRIEF', + 'KAIROS_CHANNELS', + 'LODESTONE', + 'MCP_RICH_OUTPUT', + 'MESSAGE_ACTIONS', + 'NATIVE_CLIPBOARD_IMAGE', + 'NEW_INIT', + 'POWERSHELL_AUTO_MODE', + 'PROMPT_CACHE_BREAK_DETECTION', + 'QUICK_SEARCH', + 'SHOT_STATS', + 'TEAMMEM', + 'TOKEN_BUDGET', + 'TREE_SITTER_BASH', + 'TREE_SITTER_BASH_SHADOW', + 'UNATTENDED_RETRY', + 'VERIFICATION_AGENT', + 'VOICE_MODE', + ] + for (const feature of claudiumFeatures) { + featureSet.add(feature) + } } i += 1 continue From bac9f11eed70059ed5b1a4e63fb02b898466e1d4 Mon Sep 17 00:00:00 2001 From: DogEZ Date: Sat, 11 Apr 2026 10:10:27 +0800 Subject: [PATCH 09/14] chore: update docs --- README.md | 147 ++++++++++++++++++++++++++++++++++-------- assets/screenshot.png | Bin 907500 -> 497350 bytes 2 files changed, 121 insertions(+), 26 deletions(-) diff --git a/README.md b/README.md index c9411ccf..07981f20 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ All telemetry stripped. All injected security-prompt guardrails removed. All exp curl -fsSL https://raw.githubusercontent.com/DdogezD/claudium/main/install.sh | bash ``` -> Checks your system, installs Bun if needed, clones, builds with all features enabled, and puts `claudium` on your PATH. Then just `export ANTHROPIC_API_KEY="sk-ant-..."` and run `claudium`. +> Checks your system, installs Bun if needed, clones, builds with all features enabled, and puts `claudium` on your PATH. See [API Configuration](#api-configuration) for API setup.

claudium screenshot @@ -20,17 +20,22 @@ curl -fsSL https://raw.githubusercontent.com/DdogezD/claudium/main/install.sh | This is a clean, buildable fork of Anthropic's [Claude Code](https://docs.anthropic.com/en/docs/claude-code) CLI -- the terminal-native AI coding agent. The upstream source became publicly available on March 31, 2026 through a source map exposure in the npm distribution. -This fork applies three categories of changes on top of that snapshot: +This fork applies four categories of changes on top of that snapshot: -### 1. Telemetry removed +### 1. Privacy-First -The upstream binary phones home through OpenTelemetry/gRPC, GrowthBook analytics, Sentry error reporting, and custom event logging. In this build: +Eliminates all tracking and remote-control mechanisms present in the original Claude Code: -- All outbound telemetry endpoints are dead-code-eliminated or stubbed -- GrowthBook feature flag evaluation still works locally (needed for runtime feature gates) but does not report back -- No crash reports, no usage analytics, no session fingerprinting +- No telemetry – No unnecessary data is transmitted to Anthropic servers +- No analytics – No usage tracking or event logging +- No fingerprinting – No user or environment identification +- No auto-updates – No remote version control or forced updates -### 2. Security-prompt guardrails removed +### 2. OpenAI Chat Completions API support + +Added an API shim layer (`src/services/api/openaiShim.ts`) transparently translates between Anthropic message format and OpenAI Chat Completions format. All Claude Code tools (bash, file read/write, grep, glob, agents, MCP, etc.) work normally —— only the underlying LLM changes. + +### 3. Security-prompt guardrails removed Anthropic injects system-level instructions into every conversation that constrain Claude's behavior beyond what the model itself enforces. These include: @@ -38,9 +43,9 @@ Anthropic injects system-level instructions into every conversation that constra - Injected "cyber risk" instruction blocks - Managed-settings security overlays pushed from Anthropic's servers -This build strips those injections. The model's own safety training still applies -- this just removes the extra layer of prompt-level restrictions that the CLI wraps around it. +This build strips those injections. The model's own safety training still applies —— this just removes the extra layer of prompt-level restrictions that the CLI wraps around it. -### 3. Experimental features enabled +### 4. Experimental features enabled Claude Code ships with dozens of feature flags gated behind `bun:bundle` compile-time switches. Most are disabled in the public npm release. This build unlocks all 45+ flags that compile cleanly, including: @@ -73,13 +78,7 @@ See [FEATURES.md](FEATURES.md) for the full audit of all 88 flags and their stat curl -fsSL https://raw.githubusercontent.com/DdogezD/claudium/main/install.sh | bash ``` -This will check your system, install Bun if needed, clone the repo, build the binary with all experimental features enabled, and symlink it as `claudium` on your PATH. - -After install, just run: -```bash -export ANTHROPIC_API_KEY="sk-ant-..." -claudium -``` +This will check your system, install Bun if needed, clone the repo, build the binary `cli-dev` (with all experimental features enabled), and put it as `claudium` on your PATH. --- @@ -87,7 +86,7 @@ claudium - [Bun](https://bun.sh) >= 1.3.11 - macOS or Linux (Windows via WSL) -- An Anthropic API key (set `ANTHROPIC_API_KEY` in your environment) +- An API key ([Anthropic Messages](#anthropic-messages-api) or [OpenAI Completions](#openai-chat-completions-api)) ```bash # Install Bun if you don't have it @@ -145,7 +144,11 @@ bun run ./scripts/build.ts --dev --feature=BRIDGE_MODE ## Run ```bash -# Run the built binary directly + +# Run the installed binary +claudium + +# Or the built binary ./cli # Or the dev binary @@ -154,24 +157,23 @@ bun run ./scripts/build.ts --dev --feature=BRIDGE_MODE # Or run from source without compiling (slower startup) bun run dev -# Set your API key -export ANTHROPIC_API_KEY="sk-ant-..." +# See [API Configuration](#api-configuration) for API setup. # Or use Claude.ai OAuth -./cli /login +claudium /login ``` ### Quick test ```bash # One-shot mode -./cli -p "what files are in this directory?" +claudium -p "what files are in this directory?" # Interactive REPL (default) -./cli +claudium # With specific model -./cli --model claude-sonnet-4-6-20250514 +claudium --model claude-sonnet-4-6-20250514 ``` --- @@ -216,7 +218,100 @@ src/ | Schema validation | Zod v4 | | Code search | ripgrep (bundled) | | Protocols | MCP, LSP | -| API | Anthropic Messages API | +| API | Anthropic Messages API / OpenAI Chat Completions API | + +--- + +## API Configuration + +Claudium supports both **Anthropic Messages API** (natively) and **OpenAI Chat Completions APIs** (including OpenAI, OpenRouter, DeepSeek, LLaMa.CPP, Ollama, LM Studio, Together AI, Groq, Mistral, Azure OpenAI, and more). + +### Anthropic Messages API + +Use the official Anthropic Messages API with your Anthropic API key. + +```bash +export ANTHROPIC_API_KEY="sk-ant-..." +``` + +### OpenAI Chat Completions API + +Enable OpenAI Chat Completions API mode and configure your preferred provider: + +```bash +export CLAUDE_CODE_USE_OPENAI=1 +``` + +#### Environment Variables + +| Variable | Description | +|---|---| +| `OPENAI_API_KEY` | API key (required for cloud APIs, optional for local models) | +| `OPENAI_BASE_URL` | API base URL (default: `https://api.openai.com/v1`) | +| `OPENAI_MODEL` | Model ID (default: `gpt-4o`) | +| `CLAUDE_CODE_MAX_CONTEXT_TOKENS` | Override max context window size | +| `CLAUDE_CODE_SUMMARY_OUTPUT_TOKENS` | Override token limit for summarized context | +| `CLAUDE_CODE_AUTO_COMPACT_BUFFER_TOKENS` | Override auto-compact buffer size | + +**Autocompact buffer** = `CLAUDE_CODE_SUMMARY_OUTPUT_TOKENS` + `CLAUDE_CODE_AUTO_COMPACT_BUFFER_TOKENS` + +#### Provider Examples + +**OpenAI:** +```bash +export CLAUDE_CODE_USE_OPENAI=1 +export OPENAI_API_KEY=sk-... +export OPENAI_MODEL=gpt-4o +``` + +**OpenRouter:** +```bash +export CLAUDE_CODE_USE_OPENAI=1 +export OPENAI_API_KEY=sk-or-v1-... +export OPENAI_BASE_URL=https://openrouter.ai/api/v1 +export OPENAI_MODEL=openai/gpt-5.4 +``` + +**DeepSeek:** +```bash +export CLAUDE_CODE_USE_OPENAI=1 +export OPENAI_API_KEY=sk-... +export OPENAI_BASE_URL=https://api.deepseek.com/v1 +export OPENAI_MODEL=deepseek-chat +``` + +**LLaMA.CPP (local):** +```bash +export CLAUDE_CODE_USE_OPENAI=1 +export OPENAI_BASE_URL=http://localhost:1234/v1 +export OPENAI_MODEL=your-model-name +export CLAUDE_CODE_MAX_CONTEXT_TOKENS=65536 +export CLAUDE_CODE_SUMMARY_OUTPUT_TOKENS=12000 +export CLAUDE_CODE_AUTO_COMPACT_BUFFER_TOKENS=4000 +``` + +**Ollama (local):** +```bash +export CLAUDE_CODE_USE_OPENAI=1 +export OPENAI_BASE_URL=http://localhost:1234/v1 +export OPENAI_MODEL=llama3.3 +``` + +**LM Studio (local):** +```bash +export CLAUDE_CODE_USE_OPENAI=1 +export OPENAI_BASE_URL=http://localhost:1234/v1 +export OPENAI_MODEL=your-model-name +``` + +**Azure OpenAI:** +```bash +export CLAUDE_CODE_USE_OPENAI=1 +export OPENAI_API_KEY=your-azure-key +export OPENAI_BASE_URL=https://your-resource.openai.azure.com/openai/deployments/your-deployment +export OPENAI_MODEL=gpt-4o +export AZURE_OPENAI_API_VERSION=2024-12-01-preview +``` --- diff --git a/assets/screenshot.png b/assets/screenshot.png index 22ffc10d235a06198131d87921d69300390b4b6e..cfdc10effe0986a6a1c43e5e574543e24192bf3f 100644 GIT binary patch literal 497350 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

{HQ%u;WK=R#$s09L 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⁡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

f_nXUn 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 bZu7^=3kPRLP{~*>;P0%ll~L&#*Bk!_nbPKT literal 907500 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�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%0A-XyJ1OVMBfZ0j=!_5 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 z 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�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

kJf?X^r<>_m1#?7_p@!?q%l6`Z((KV5C0U? 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�!ls9U3eh#)9csUp%l z(pywOM7l_C0)q4+y@rlbMY@!T^xmZt1nHg7dkmrX8bXru<-Om%_vaZIBO@c{oW0jx zYtCnWiDb6`*Vxcss%E~#-w*uTkWvjr?zvv0mtu^-jzxSA?7=E=OrdUNcb&yr zv?5J|sp8TWk<{DVA0Hnce!fqcxB@pFPYr zxu5zq;Y7EJ>1q61ODJRF!u|Kxn?1iIHNS>o?O5q{5m!IFIk-SiDi^R zH%ByA99gNGN4v{wpX_G^(W7YDxc<=-(&b}IAK&dz!fZTI>p0=|Djx5fElfQNTEFKS z!bXrxsC2Jvok|1KS0N(XWjm3m8DT@%M&G>YSUaTYN6O#vdZim~q7C)rZC0X&LY>iB zV)j(KbJeU0H|Mb9)s)g0A)d@<^&FQ&UxD8O#u4!ni-vLY+D6$Ulpx%(weN9W^uYS( zGbk}!V)f0j!hj$tJ|5SNo#nj52y@R}z0$sdEEt-DS$n1ObIv^A;P}G8BKic;Z&G0W z7zp~i7W0{Z(LUk~MQ`x+RSf$Q4Pu2$7xEQ+B&Wa&-QXtC{B zEvnXU4Y~7vXg-d&lBAJJ=#F$~5d%FYPvPPcT-Ky(WyDs?Z+Tw-z0X46xAQ}Z+2#-t zmP{28fT&>YA*58WtI%maJ6WrC#I*gn!${QWFjLM)xfOi{LJ7Bv`_-w_{4U%B2M-^B zk#AFbTq=EFddVD?`_1m~CD+b8l#tG~tJPV^9r*K^tE=|T^duZ~7EO;ZusB%wv?KNG z_et8vL9IU=KTc1#E?kEN{$b$d)#6}Z_wKijK;;|354ffRB#16V4hT|8Ne91sT8&2l zRLWJ{MnKzf<%L5_(00IRNtcNA^Tj6`$Li{T>}lyDaAf)6reM4-I@dM15E3 ziMOn!aNCO4U1^rMbO%Tgf0@&^T9`MjM@!FO~1^fz=)?HxGV-#2bHDS>B~&6 z5+uj|tdLJaj~d*})6V(y zD`?8}DycRxa$J~m51J4aL4EQdtx)B701Vu$9ruH9B5{ne5=`DGI9>a?&F-j7jN#Zdw0Xy()~Z*#(YR6A zz#VNbfh_E5-3o6Ju(^hwRkd|{FFDgI;I8m$2H7{;+w~EqmC^9(X>fLRV-ri4(J{ zd98gzZ|t;W+P%_e886N-&ofJ@jJTNNj0E3jput@Y0@<+l(YLneD$LnE@i7EW<$)DI zG$;Z>rGSU(cn=#`Z9CW$f<>@^LfK`ZJxo~tU>M#Y1cjlSex9nV_6>9F@T6&BEgoV2 zQ|>!8pY+YHntvYTfG2AyTq|Ffo94ZfI>Ma2x?m8WhK^EzfdJPX5Lv=%O5t9ZvEC4C zscM-ZKQ8tME|pjBo?e;0UI4a!ac_a=aLpK_B9FGS`{gg|vM)8W)Kh_F)6%iybHsSX z_7S%^m}(o3&Ncs3&8QUJanR!d)AH#}`_`1j%iET>S2!H7X13HVLT2<$1WY|f#o=0D zbaGw%JK81aq?SCbjL&Y0`&YTDd&tDoM$ut#8ZK@0MsPv>nz^ zBwtX^3+bhygo4qBE8l;2_#0f79gjN7YYoLzT|;bWyJ$BQ*1m^6dFM_?KN>~hb6--Nak5CoBU6Zt zUZqq=gyxEOxS~diD?>ETJ=T|B`?S7d+al;f+;Rn?bxB=Dxxu7M@{7l=OciGlAGF+?=V0*F1h~f%m9jCw8^)jvq8T!IF7ca-urH z@A`LavyauX|6V#)f%O^(-dxLH&Rh2^?o}nv9v4G`c|CUx4b}O^0KDHn%Cg5r6#hXy z_HO9)**NIF3X^+^w-PkHK-)<&tpU3LhGM&CjE~PGc&7L;V>o;7?U}u1;oaK)U)Dvq znKB*)*RXNtO6>E6;O?2N#hJj3Bo$8CEc$Aktd~`X+$o?VP{2;Wc-2h?uTeDeMF-7- zg!IadG4cQj1(RL3-eP3HVT)w8|8D6JxBKuAr1Uz^I$G1RtLv;1({VAI1s4J@@Qvhv zTvK;m@1IdtBO_Mi3u{JzfMFjMM$z=OC=SDvnisWhcY1-m6v#8QKas=qKz;A#p>j0gw}1aU}vVD7=m?e&LQ8l}`rl8Z5l%j}mqTlb)Fz05OOo>FC@h zQ28O6Ea>mQ3NXLJ_4pZdA`FQH2?5ATDDuK}#tHm;g7!)m&TMq`*eQ?ZJt({ zGzt3r&>0!v(LPLEv2^p1I^QReL%DlIW(~{#Ow8`W;`M}#43tObIh@BCIuu92M$A(E zluWj6q4a(cXSbMenv~BWZTb0K2Zx*A=2!L`Ru0eQna=Yz1I6mSH=P%;0#ZdWFDOkE`PAx)P?? z&aG_3pF$xc4D+8lb-)9CeqY}ITsZAVL0HAJaSgSRn(RS9A&9o>lTS-(goeb|u;)+s zZB@V7nfM`HkJtZLCdyw<%shug9{9|!E?8{tfYZI*T!tw$H9q*@hph5ukQ3;-%!TmzEio*ddy`?QRuyD zBk^CDnGz$uC+eH6rqgg0CYC-0ki_6&-O^g>BtVxAwOIko@p>vq)IpO0&>4c;nqva^ z0C$`Dz}V5Avmr$A)_LP^5B%GGG1>g{Q(`V}_nD$~4msdQal6Kl&LH*D_1G)Cn$@KwMymfr%QA)q|aojJE7=Zr3;H)GXBtgE@$wYYQ0L# z<9xnaoTTG#J>TP7IRv`bAdTBSZQ^|+yg?~(b$QQ{ z*64ZRItq|$Q=$^mwx)QE6>wwe&uX1M@#k`o=vH$Q|+8Q)T-+O;EdA-LSh^Fh7%Y?-=DLg;|L^6qA#aX~^z` zDbKD4u5U@@Sj_$Ty3oU(+_mpJQEz+P{FI3mhku=fCw%0#jiih;UM|sEhTwN$O7D>b zvPT9+^=+BC%BDl?wNgn|%&)3qlG<{Jy2*RGtS^-meVQtu*}6U>$Vo5s7<4b<<;z%n z+sWIw`Q`Y|aE9$|H|`I@;m>ad9pI)U#W#pe?-6by>oNLs?F7b^mE{%76OZS@8I$sw z^P!m>y{Hq{x}&lAFY@hY4-Uxy*zkS?+l%)P3Ey4$&M5B+e)H?L zr++?3E}$8ihpHsVLB0U+{_SXaarajQzYh{*E8Ng@FR>41QXc}ymr$)W1@}C)0p~ov zfSII+{IWoRBfP4Z=u?SPGk&{#tq#JMZQ&#q^q2ENNO^)$ZR%F0Yn-J3<``6NP*mD>jE>t^$wrDzZ zfcMf{kn8apkUob(9$&5oK!lwaY0OlO5ejp$9Le37171HOgRlQYOA>EX}wqz z=N0uizRm*Jz51!k;?^pOK+kD#4|=c4m3Rw9tw~O~F!NeOe6LbpGA_NV;&Uo5yzR&~ zD(Gs3OFc(M{5@xJrIk&dATs7SAV2fFDO8qymN zmH>D_*zto;@;hhNeeQ1VVi|rk3z~^4~?*zkq0KFtG+*vV&ZVH5z+pp>I?lW_8 z0n1{A?CYLg0C-LvSt_3aMgHsfcM5O6T{Aucst3?>{2jMNh+GuD+^!k;6T=NaqwqH2 zGmu2lL8goPk|y@6#Yx+419;;+W*2-oiwP}nLfofn&1Bc%i@_bqW6w}P=bl9_;D>we zV!C{?_5BiDYj*V-H&>7Q;nu#q35L#|uUW;~{>J5)hR!SRM3{zB-Xg!vF}uIQpP$Kd z=k9g%y(aiO2vT$Cxital8;2h`Ra5!`i3x7%+NQ@aiX78Gs0G*9I?>4?a zCyI7nY$Utbt&3H#d*$ylM0_57pSjEzYU?s{v3}*Zl|%1K=zu}d_f!Hc8V?E)Zv8yu_l{P&u%MaO8^n3P%3cek5^rf7Mf?$i9sw#hlWi6`y2K1T1z5vXem zM`1i3VoWDG=QOXK@HXyQ$EvUOXVf?t=Zp%y+7Q$PW-cxtv{gy2IO*n;IZ*NL#K$Ho zpoQhm&g)}(!0O-Ftx6pxe<|A)i!I<4CEbgT)wB+~&;B&n!@8GTq0EO+Ab2UMrRMzT z%!jlt;gBtRP}9}StAYD^tw{^gT=VN2qvWb#vF|44DIm|vt5-o|&IE)_t?MJ?8G)JI zN|v#t2NXZF-ahDVBa3|n(jY>#YvabG5aflui<>LIotLz$S&)U#jJkw}(r}6{OjMj5 zd8gm$Vz2X*W1W-Fomgg#9S^!_gH0i*&5b4}$>T>k4G%q_+CHmZ#Z@nsR}YWZRAr^i zPF@c_ZdE9T|8V4)Z+C-fNJbl21mPpg49ee)(lInG6t#5FOImn2pJpXDx?MC6tvT1$ zr04();)_q1JVrz;V+DSb-=A}^+W{gqB{WiMb`RT*NQFAY*etDgc3Hy;`&q%Juks&S z9$$pxbNgUDZAYDs&5+sBw1mstH*8q>!<>y^-1XM542XOxVU0|PiQD7rs+8ShJbwP< zDRV0Gx;!qz{0=>P>|C8QSW{t#=HTCKqsLQUWU4_FUv+c$wk{y!waqlf>Xti+N3F@6 z_~lKml_JOBzn8513O_iyQTyk(1#Xy37!gBbr|>5LJy|>jL-VJ?2tFHYzVM@r!>sKTfilN*K{zSt`#GnYq8wbAe#ej1{u`bKXBcN7_e+0wpl#KE zFVfnRc&8}Kna%-^_uU-LVO-6STR@l8BKnGUTn8?CN}mr=V=sk~Hye^`-yGR+*s&e@ zvhtt+Ol?1*!9`z~*#NLP+C-Wokd4+_Q%7ivrEfEKmO}CGn zCc)G{D^B`n{rhXIx5g}2v;E+=8#Taam|&jQ-b#0ZjFEy0m;9RlnRBn}H*_VvhT$62 z0?@7%y|^^VF<#N@j(iIjDO|xLc`H2?o;#HWtgnHA@GeHz>9*C%Qer3`*yCfIX%Fw-ngcL6=w_%nyuB$$Xa4GzdKnLzt3|Yp{{z(;E)cI|&N>Rulh!?E^9j_v1Zg~MkBv5`;IRX<=pcdjDKwcoMf zo%U?xP(42+5xMAW{c4cE2^w_rH+is4=WB7p{b?=MfD!kYHCsB6=2Xyi%OXeoCo7YhnTxQQ>M>3*I{rwyW9gArpFid+-Pkdvee#k96U+5cpA^ zv-bX=y(%C_F4H^seX|}S7hewi#`G*QI95Ewq357O1ucJSvb^~E_(c2vo@`vA=HAP` zQ9z7m6^)m!A&D|vQ>1mVPl|o$8*!vb&US|N@E>VoeU zsE!(PxH^<~66|X0kw^$sLky^>M9R8A6{TRIE^o&W5SfqLc#@r#Rc?>e-_4-23JetI zAIEwkRALBd&SekvBM-y`t4*46ZTeSyR`MkhroSQ~{<5mBzXjuhZ-G=z?eLV`D(1YN zD4w;)uIchXA;9RiN{|nZ?mJ#ULvvjyrCuLQZMOc&w~aSW%XPIg4PJ6?ilp~Uwb8fP zfmI7%7P7X!xcE|z_F1ZoCpur^3W8->*7RjgvulAP%9nQ0&Z`87drHR-!JFV>M}>OZ zaB(XT9_tF9F)$zfP7%)_eouwf!_%(FF@vE@10k@9Pds>c5W9J+0pid!6bpsXhfGg3 zf_g8iyFTV&1*&n#^Rxez?X(9SUyd(6SS%XB%>5{Rg|I4ex-r?{a9qW09DourpahdanylCBaCslAb<_T&5zyS0r@cL`tbYM=qj8#P^!=1PQWA2F2gp-Da|d2kCWP-u6Ldg+7D*DW`VSP0L1|lb*YUdwxk=*S{`p*rP$}#Z zw#BS@YmA8c;E(gPG9{ty^{|dJ4pSm4@s%xo?%yBoQ!re|& zh6c<#MDxEkz>rm{>_W1SSrO76_+iGwgq>Rk_(t5xKO&@JrHmz766U3`{yPlj<%2#$ z`DmPm{!BOfT#C|D$Pf~YwZLU$SLG=~ozVT{RIN&(*G>Ws%fbE3U)3t8VMUr`w4QY$ zxN>`sg+a#t2rXw!n%xo<;Dr z9##1@=LTjDinEFR_qzWp2YDP54}9W;%i&)I=j|V=Sj8?G|8rgApU?e#ZktUs*VX7o zQ}jiPRMVBVV-oYMFwU0xo^&a=zkAH2T^~{%mt<}jKcsO!WDHI>4Xj;7$#gR%$efl4 zZ(eUT*qJK73Q_5aVsy51f=k=%(g-v(ezpIOXLp>Z7ht9L;_9D$Og?^FHh02h_w)4U zwu%+KMPL$2Zp!JPcgw>%S9euU+>$tulYi&^e9A;w&Qll?QtCw*wtZJES~& zdU7higvgI|Xk&ydLR<6{#4aCoWR z7Ti1S{}O_3ils|kkh_)X^DJ&&cdp6IcQSJD<{O)7WqBRWy%+SCO@xs5H@MyPd>ptb z?r1Sw21c`FwWI{^%~^oWsPIt@m7-jaG`EO)9`b$Kzc2_|V| zCA>o+EZBU{35vbcLrr0i@WYJ9tzJ7;!nweDL|i&Z*(MZAd1Ni|9`~>he_-eJNWaep zb8cEOFT;sX&a{P32TN#1#IOwX#4(A8G70^G$z4eI9#|A7#H@vc(rw)8b+zcN&cNZn z_8}gd%`lsOJh|(vgZXM)i#}{Kblut(&_Erd*h4B^=LY)D*_;9i_q7S@vNa!Z0eFX$ zC0CYT42<>GwT|jis>Xke&omZ#->@%Ja*b?wVr3?pGoCC?+I}i_=c@L;U@L=Br-a~7 zutgsNMCXLJxjKh&T8s2>nabw}S9A>J71js;1b(f`765#=iRJWAIRfzNcoI@POrJ+L zMUXawoZjj%)UXEEj|3*9zWF?}_J3clKT`#(G%-NX$FsL=&P$-X)TVI43H#}B>_U?$ zB!mGP0y%|l{@5*s=wr(Cg_I|Ds6o3%Mmv!IJb~$RfODaD?&rAA7+aptzIYn%44rqw zBf1P;Qs(!pcXB~p*(FEQ(Z7DeNu9l)bSmJCrqFXzrA?iWpA;qwkMYb?Piu|mNUFHA zNfx|0>*WTw#}6`Qmhj=+Bder4>)zj}Py}F1eotpuWSNx!Tj#P|%N6l&@ef^>+)MnN z^#@7D+c%T5%(kw#gz%%$Y_!UaEBF`OvGAj{)3=ZzPCv?1}<8@cdZpVa| zwx5GfB2TD9IZt9g?pIo`N)c+f-vHgQhzbRQABEXO@h+!Qd;9fNq0HJy*cDo3K{zml z^06;0Lvqj!`ie29s(p8;0f&IZgNH{ri#xZ@?@Ov_zkPvTas;lmNOyMA{-s`~i~8pE z#bxVr&cy8aOvm5dqWq?lm5084to=M-{s+Ru59=mTWC>>x)B`~=IVSLNh9 zcqqd|BDhK{zguz%=W{kbMfbO(cp4!y__+qJ8l|-1%`g9h0}FRdPVf&-)h^{h;B<;r z;e~EC(2I5bjo(}8p*Z9YtD3z#cKH8GV+}q6)~+F?Y~Km?RT@D#cHsrwQGw*GVuT`* z6}Ke!x5X@s^5|+7gi!&HM%)SLy_R(jH{ms(XdB$vRqrPEBF-mCk057TmK!#3_x@4$ ze+iGT@3yuP5^B;&x#Q&^)+$^~C;cNN{P(~ksDQw`5HAm=<`zhFx-L&Pg<{5MT5^7M zzh@!g(kWbm1McCESW(#@I5JfOKhZEF-SEwEmO3dpd{WpyqFf>(kmZC^Do+WlMTu5inmik1>VU9X+k`Amv!)5 zU;Iqg@#W3K6TL6Mmxq)~H>T?MOny7rA1OU-O!M#g3e#t?&~#WXVlLh93r{c8EB|5f zUln*2=#B|sSbVK|0s-acMw24bgZj5Gee>P6*`kXA@kjq#aHN5`j&LMT zc(AL0=fy@0Q>n)Jygb>V5yOI*L}El|ht9VM#|k%)F&^HC`n4D^5T5qLSfL+eS zdc#Y8p@(OR#?zbAeWn5%znxn0kv+dAq91`D#G*c?GzQ&V{>Z4dSGdb8JxDt|tT)w2 z|5~`qBXzBTNB3YsET;OXzJ>`Rc z=}9ycynudA9fGg;tcsZD&RQ`PE3J<#^nA(8X?I>~Oe%aPw&YNLTuJn^IM?4_3Yn68 z|1a2fB*QXRBSL5Tso?X!sJ?e$(u?fce<*#N4&!U1G&yG`W}@+uk-U|rwuPQET0Z?6 z7*%$|4O}H&w}kATXHUH3VkxNGnL`13y~$|i=V>f;y^*|en_UOroFq?$2~cy=tFxN7 zWAIUFS*)`rKG@@Zk8y_XBirEWa{B%q=UTIw-+x`;&N-%;mB}gDV^3eHFa>{nB3>a!Nqzim*Z6eJ~D;lfDxwqbsGT=S-z46JlHHT<4+deia(Ev!3dBr!7>)^WAS z)&2|ZkAlC2h%Q2DSAZ3%jXSALAnIOWr+HyVMxzv91J4kZaQ4=Hthb;(^@z~mi^9e9 zcFm=XBcGD$qiW_Aq0+JHLS5nZfM~0ePO~L%cn8lB{x;PFg13Vg)I8BTw}nrIsKJ_@ zKh^PZ;`|X`OYL7eS>`5N5R0#ABGqRHt6LWhr;0SPj+g7lBL!Q#r-#TvPhNyNKD+_g zXJ*+56q&1fVNo(2BxU7B&0-Nr<@j#3qo;~~x?v?gYkrb)+<&|| zazhGo{KR!V+1?rZS1 zO?s3fg*4HJ@}|4zwk4}Btvjqe=HP{4P1$d03zvyF`2-R*b+?h7PkU?Ctqg*3%5~?# z7e_}LLF3JF%VTpWw;zR|S3gx{nDJEI>Ymq(JZ2QStq&@drvD!cfE%QZ&x$UCy?Uav zeKu~*w4iF+C)DrYp5y-UoSpb}3FVsUftNSa&I$DWNj~I`f0!m!!X)YQ)eSU)bw=x` z!v~N5Ojo|C5j_K`u`_~`_?1~ZyDW;mnd2$j7zO8JvHO9I`A5WkhAH4aP%;;^in>ka zB=a1c3oy%iro8YC5pIdOz-r_Sy&`Bf$y(`tJ{?_U7N>A~fur<4Ey-PW*5GGPe!l9+ zull3d3+V z2zC0(zqEaLoet%WU*(0Y_>)`$F?8s9ynEWAWvX3K%`g_IBJx4A@)HMLftMAe6ocM?cp*czRoS zIc5(WeW_w^x;oLf7R`HKDpd6`^t7y;e3r`MmOWzLsi7IU_OukGn0|H0UGFrpJyodo zkE1B&6hN8xFZ8LNehCEYa-H+qhts<*Rpm2^znLKQZ}RRYx@dCvgdc%|tYPRS?}P4? ztG~rH$(@?4w+!=G;JUv|9&_#}oqTj2sBq+JhfH#o2<{qiFHD0p9h|rDAYy|2_)Smz zTJ1wvuUV@xy`w(L+Idaq`HS|%yz0K+h=w-8g2`3#&WQF+ojpv$3yE6&aV2t?hkce2 z9Q*I+e3%!kX|1|v;f~w-KSzIv15DHbTsn!NZ2~nAzrSe5VI^ikXP4=@;Vf~96fD+a z)x1d7TaWhb1-qV=)+@|zSe|bE9Z`A+q6seXLoe^kSfXmqEIIoI9@VsE);Oq+u(oHo z;|bd7Zu5M*J#n8IGU`2RO?KaMk+a^DT(42=zrM}Y{Du9bXXSd}H2yJoTXtOZM>l0; z0&9b|CTkn)@BJU!UDmH{c4V|r)O3b4hh6YZF&qBMY+t-4e3X4lFo9o9ESAaV(Xm_C zO>|q9Jh==je0iLG{VO8L4IIi4NJmn`y+yV{J$NEzF)z<=DQqyC-kaEV76A&5@R0c^ z=u)-J>a#wXM?#@c{563Y37^b6IzRR>ZVnyCn)(DsAJ$))&&((Hz0!1&h@gnOM=Ops zMuaM!ThHYmSofHvOqr$8y>g=d#(HNwEYl*CVE*)?cY?j(yG!) z1EjS&d~p=i_VBW@Vigem>_z&}sl4}`ttV=r_%CNbw8Ny|%aiCkbE35`M*o@r7!$RD z0r>Q@NzFe}Ev<^h-*H9dCYx`beC&O#I$NY+LaMYI-L{dg0fbY?yfM)3c%Xnj&VRSF zR&F4qu{|!Tu#hw|wsATIt=9Zp=o)1A>2M!n>-hcc;lp1T%n_`~XFG3?A=GMX$LZjK z5FgO;>f^>hG_kUR980Uu9;a>`$e__p;8Bd@WvkcGZ}s6dukh+Q(h7O?lHWa-{!WZ8 z^x8NInT;nV%^M=SPWW8=soR4_#!ntD&EeJ>z2(h*W7fR53^IH#|wk7CMvNj{8M^KH9L#~ffBB(rUtpB zj2CJbuBUshQM;`_jsr+_ez?{*A~WZp{;iAkE*&%7H^xfB{vrqgNZoloQpn390&P*s zd%FgYLqz@V{Uf>y5K=C4g}(FX)tZAjH@MH2Oh$R@v5-B#S_4}cep>N5PT;d9Rf(E8uIV$XegXN-fq4wk@Cl6M<&_hU==sa&5ZuZ3C!7r-*2YBNM$-TN%d#wcbYz0`zzDQr zZ0P`qUHcIdY4Wlr&;9u z(6;1Us(&`q<}^u?44%I^W3a}u)BA-n8}^C%jqc16y`k{zqwbY@{IMJiDwR7+<6x9{ z1F)?4@1i#iUB_j$E-qism`t9a!4oe@98HBK0#We(+~e1P)L#E1`jIATio14oJCMRP z6W5T7{ZjWN8ZPzVT>0Yn*zrs7D}xvX%XS>cLm^tQ+8e#)!Pf3%{~PSpTKQ@js~Q^A z$9isUYB6Fj5v%n0fHh0qmpV-n@f${K%>tZmvzBuaD_0KDJ zKluGRZOV)=q2xlO_p8VkIo`B>#Y*9nw_lk5Vu3{!vY54T!mThZzfvThec}yXDk1-# zXpXBid&i{KsFsP|Iv0SWc-V1t;{|~>XRKFOYg{Y55hgAz(ltgrVWBFS%277|C@T|~ z7x(^dz3?061nu4k_q7sDQyS>arn@d* zXeck41v=SY*xgGkqEe)VynPitkrnbFWs|yqs7hAtdnE^o$4=I4AqL^9$fHM+alLVCi^$$aVa=^_Y*rkBO!{@p$POh^8JweTUyt%-Se|# zEqSBLP6r90@hK4dDI6bWjZe+fMRs;hVNAvCB9ZJZrk2v*hVxf4mIHipL#-_$5ZdI zM_9CA&ZpdIs9R)dKZv-3&hSI<1%#{sm;A2^sUpwrqST(o>R0)B@CIo54h%qYanJz+ z1)e1}T=~;9w87#U|1O{g=%UxaTd3#SjQN>hQw9H#;j)0XT>~v+leb(cpxqr4=<W-xqaT+FT^oEn`A#Wg<+H67@K)M?>nY31s;RmUuj$CmGUz zAJqMD6}s$veY~zBMHqaiyPJ|)CM)ge`1BrumhV=g&6XUs4VFG^wToPR>kIWAwr1wX zWP?2q{4mZ#43^ptUTzW16H!9iUwjTuyVXH0+qNHqy}Nh3zHWb=W`BLUn^wDit6P!m z35l%K2E#Wpuzq8lWKK_rq?sUfHsZ}AfPals>{t|JWYTc_Nc!Udod-2aa0R&kAu+9# zyVkAS8WQSBeiHQ>d^3MmyHfPyrK5WJq^AMJ=wvl zZZZHy=X7T(z`}U?Zls138~x#~gONbQSyIb>-7v3x!SDJ&Iu%^NLIJ@I34J^OF8d1>Xn4`i)sryMtI%o~q^wd%44jpRQ{wa!uOU^& z_I!2bpOQFJvOCg&JQ?u^iRFA++94gdJF&7k!;q_)=9u`saQ!)ZSvsj(Lw|;vQ0cD`wq5_Zgh6dFMJkv)b_7~35ZuZ8j|PgR1`jpxAvHQJ2>zha4UuY5`Zy0~*F z%KrT!l!ltm<;4#395^&*@4C#`Lsq<(^8Jy>^r9gki5)h`-b|hxw*QqY z_nQEc)yofcobMH8pIS1@=+dBbaohtAwVB4Rvn_gW>w14toMxbU5UdZ)v;7CaQ<8j( ztp8x7H8k{eHBo(}HKlu?x$5Iu;B>h9J!CooXYnSf$Haf!fz1{Vv6=SL1;zF9OeKCk z)yoN7_>wG=GX#>MDj@rq=>0yOz?n-6bj03k^73m+0m(9^Evr1}g6`4LtH;qKbIKIj zau#}WeimOH>-8;y^m1^za;ZoCj_Cr$1K-+OS4sTw!K<%=&2jRLz!wSU&N1LtHUaF= z;)77f*7?#JPCqtOrC;1aXm?jks5Aa%IDAoOrCR1)F(rOz)bLX!I7Iyl%AHtAfM~ET zK4lei^W*6%7$P_w zIm5JHqNz$tH^$%G$Xaha<^|%Py7YK68)LDqTHMm5^54$k#$w2OdLQ!dOP1l@HIXa= z0{#fwT3kc)oVbFMF}6^Fl-4K>3D&|2y;=ceu^Y%Gaa_Te8eky^rh{s?{ygUxWpu95c~AZN84ctlN+V?rH>2EoTSN=UU!eW6 zrm(T3TL|7_zKDXHW?NyQj4;*lFE#%xubTt*z@NkbEd?YEkAJ}gs-N0l*Zso$47@P_ zdvBq@tivGTX?W4Z1<;*Xo#g&j1zLD7luwGG*Td}Koivo2;pZ;V}3pdDX z5_py2O^MdE7a@d~i4EQ7imk@gD=u2!|Doo;tvLbN-Z&xWYd!r>Ay_~GLKWy6 zyS*Mx$r(VTI|nFIUTemUrhvJ-3bOA#7&p?xHEnNvX6WbC%W`hbM4z0*#1Lt2p~iVg zs~!fuJNq*;{YetGri+7>AHQbd>eVs5oU@J7?~Hrb$#hz|j=UUKoqst@seU%_C;TER zy^0M6+SF9w=pO{itJ-CTme26-K}X>(kc1P_bZuQI+WC7o>1`&aJX25H8cF_nBQ*S%o>xieYwEDP_-HH217tdb*&Cb38MO(>ZoqSl zHYw6)`Vr)FqxZ`zhA^dS#bXj>eS04RUnt_v!UyFg5_i`V-7uJ?ycdnv0=YvFxZ zKqRh7=Ia}*^_gmW`kU80_)G4BX0vsCXDI>WlmMQF98rK`9^}11#4p&Q_tYsFP9c5^ z4vR0YFlRz`$&{P7}S-V&)m@C(iTvEagv%i$6 z#JCPYX09zZiuGr7u|n6ZdQd$;4V%@7wXg>lVkev50{QAF$v{A;xRI(8=!G>Q%b%aO`r`@^@-XubnaR*01xq3dI)!yYr z_@$VH=@x8BiNIUsj(PJRS*yOxKHU1B%=DEA=S7Y19agcl@CsWgw~(DA<=4_IsF&d& zsV+|MGoth};g0L`(e4FG>Ggvsy5M!^f6+OtINYF2DlQ1KkW>Xzu~f` z#E+6MqI=1Y1LMxW5-Z5PETUZTw0x@h@C+Vnu@ZXMgfO_y>Wkn(tA_c*g3V71fl4xJ z8}$euT{^j3-*;pzi_%i}uVw3G>lAD}&cEa%j9WWfe{cT=E$a)kPjoMmqC6YXA67{M zbXAd=+f@#g+95ftq%!(P^%%?+*Pvz?H4|PUGeZw8p?t>Sz#&kBJ!1vzt|egLnVH3% zO0(|vTbF(U+CD>IZ)p!364BR*vsoNy->g-Pg~Lu^c{TW=+&zb)%~rRz+3oK;_x9so zv1Q@s-#%+0!Sj~UeN{Re(NFihF2-RxxOV2K+i`Uo2G0s5XG_3r%@P}594AdF*c;Zt zQ>9!6^?O5%RbP$m;Kb!%xifWfL)n)W#Y}gFnNQiW^{+jCeSm3aC>T}#LQnAk)S@#0 zN4oLr#B^{YLtQW3yBCJ(%p&g!-hA_RH22lptm!oT$Q(mV|t2G~xl(uM975}CO(IJ3?qe@UWqYqm<_)AohN_&AnC!;PNr zJpl>!|)lbSdmzVfR=i)2FqD5<%M$Gd;>ysSiA4F9A z(utaZVoKTc_i7Zohp&&M#@^hty*wJ`&r1#~fZq3dP15Z*QHc9kto=p`pq#qU%l3~9 zOI9#_Jncd`M^@Tt7FRrj1I!R>a%ZE|7a_{Nq8|05(cAC01QNt&`^ zKmBb=Fp5cIPyhFYzS!Bd{kq6yXU(SA|BuC2c+7yB9yEX#Eb+qdR#e>qde5~)4u=hg zsnmYSswzXTlYq3bFNUy??4RByDirM1U;_v9uAMwzLZ`NI6{W0eNE3*Lx;Xa-je&6C z%4dy7JO|T&h!ASgptH!`=}mUgLnB6-FSuykVG;-PZ=yE4*K3yV9FADHx>|QnI`l)5 zxIdkcUxG(ZwGQZ%YtoWT5E)hXrn4g2C41x4lTtyq?>k>}t9N|s{4w-%0T4R_XL6*M zb(TpINdo(udLUe5Lz|0SXK zrS#VOwWQnp)!>{>p#3r0j3<8Zz|*D-9dNHA8UtCl^y#QVn}6Qn;2=>YsMWGr&IStn z#z)2PH@s-W1gL?Wu3tC5!LrxjV+i!E3kE(qZA)I6vH>0tY_`N-xx#XU3pKIp=I;Gw zNH+Jwm44`BXRserQV=ayLBW%ML%N!8yoLbV8_4QqfAgSt?u(&88Bk6oJQ+7ZdCIbR zJ^)EV_ox04AYP-#sdO*eM0|WJSqgWuJAT)90< zuN?DKke7oRneHNuzX5mEK*6}n^@3e}dk_N>*MlgB;N{8qD;n3c8=rKu-6jr>PvFt4N0M1PuAAV0Eiu1lU1$qD@hi{l9r_%a*zd%I z4KVOGmwVT5JCdTBn2$Pd1TTb48~q)XW%E_a6+MT6qCnrVAB^J#Lq#FTg z5cwcEdgO*84v>^oVl>hqoueCuv>=S`+^CIh_ix|lIG%rZY=7Lxy?0#Kd0wy6eNbJ< z`MgF)@x%5eVp68vO=gJ*_M?gk^yYAce-dOvC} zk)$h8pI&~AlZ8_U6#T(wEgqdwPOvsRbURK)(VlRB`^1!K;{BcG{zyA(0N57QdUicf z2nXMye_9?(<(Hmb-%?OWU^0>^H;-^{p=67E(kPb*w8$lS!Ig$(iXN3qz@y*ZuvoZ~ z9yF-FeWLzd!4hMdXVX#0@f3q*I6BTQqxr3~y_uVUu{PsrPO{v;Y1Zw`!kz0nEZT}RuoQe2r0{MY@* zFkPb(*t9&Cl~BZ)^inSI^u-yl6WPJKHqUiHPQi5g!uHz_S zWZR0m;!YKHE^el$de<(|cf6wZ%xt;G&D__|i-^8q_N4=Mvh}CQ_dgpkc8S~;YZI`o zhb2pV%!xe9=hv6IEW`u^iGNX2xe*X|74INw2EAIH6=e%2J^C0f+XM05%a_Ev+HUz62iAl@l1pZhLJ|YBHLsJw5IFlo%3r)I`4)$eWgulJ2T^tC*!1EMdd)7 zhTUST_{X%|9kdU=57EBYKrWj6=~SS%t%v!(1ftIFzj0zYXg+U~QS5bdyl722F8l!` zqraP~%3OcUta-JOV7(Ka!)me=Ii@k=CShfm|KivL_6v3*-LilF&#P%P!nuWiay^z{ zn0I%1^7bRW8E(vf0-jf&55_7zOyLn~zfJn5pPNUK`|nd6Ck*me9sFbK%H4K(m2`u& zq-{938aSpq6nfg`^^9#>Nae$aYSNRK;bl^FxujJ|MUf%t8zpfwdIy9(>7%R6-8l(f z#x}7Z`VKf2A{tDg7N3M^*pGU+d`qE_A?>Mp?*ONY*0b_?*PTsLo^zR>*QRP8@C$z& z3rk;9{dLlZshIxkVe!e2L#Vxu#Ztpwf_z!x0UKjTQ$e_v7p!3{b(43>M+LY|ep&6; z_GM~RS#Yi8K6T7Enr00Lw-oI9Cp{R!rwB;qrv$OwGPNDJmJZcg%9V>hn?Mk?W_X-v z?O)J$qc5l28Xq41S8IOv*$|>r7RUcwIX{74xc&RmC`O-qVq?Ro?Oj`q!PHQ(ykTDY ziZ?AzH*nqy)yk`BL2@K@st+|jh2b=72MVR545j%LVG$G6dOARwPM&K|TzPAo7H*KIA|5USf<>RWYYHST>SkjqOQ4J)7`vSds@#E~!kwsNxW zJ>=Bc9c;fG$c|eibA%Mz{U8Avr>!}`2UFRx-sKMn&KD(MPxyE!bcwGWQILOzbNzQs z7JRp0|0yfAP``3#J^fbCl>5(zaf8)_P)CZ<^!YYV>*sa83A*&ZGHv1W0ikt){m7C9jd}1MYyp)H^CK4DuhWk_8ra?C^%*KFnPYqxUskykz|w83;$nk%VmxkEn6Kka!TC%;VaSUB_pP76oUT^k)0^?=l3p_ft;T#|+h2Ne|%l=aQerJcb1*Yal1yKyW zd_)VEZHD&up*-CEw1yIDStYmHyShB1tL4vMfAwF9%}9Eob;+FhXd{&FZYp;Hi%L>xPtj(?sajjYijxoA4nZ5N#4vI}1l8BQ7m!;pN}S2h#@g7txL0 zSRS6UYd?7L$-C&c^4$WTvY(=Wo5i3tA%^?yQzq7y#H~KixDWqoV)@MJnI3xQrTD)r z&gD6|@`_x7<@2ggLzDYdxiwkje!r%Xb9tjmga6V`L){mdKs~S>JH^W&UJ5beF428O zqrQeZSpyAEqiu*XQdMVjyE_>_NfDn&O3(EbW=!S(jlwt^$*T_tPPzm8lfyhr(gpML z)4XeLdHu`4qcZ|jUN`4ivNnk}u?l{3nCr@UI28{-{^9zZmTB(9h{j#5P?Fj5D-n@| zk>M;8f2%0S5JAc9g+l2QK?4oT%0E2to5s_PKJ0r+iZ1B<^IGnprI+G1F8_7_ov~50 zLZ;Yl7E~WMOzhoaw&(j401c2JtxPh04{>UP>tWRo&_oxQNV{8v=*_~dpBY^C$b5XV z@3AKr_u)nMqc3PK;dXxP#cBeT*uby+58GrjM-BF8SS=8dF{2*9jre5NeUG^7eM{Jv zf46D0g;ZbBsTq0m!-LPFnnd4s7N6dU>h%LquMt+9+F}fQ*vg*XE7OMICEgz2)h{X+ z{gS%?XE=*F!*22O#Z6OZ@u`LGoT=U{hPTO3vH=VGksxSx(^_>IB)63N--44}cV*!j zc!j^K^S050cFKwGh+k%j%TY%@(`y*X33)%!vIc`OvGVhR>)N=M{T?G|iz(Jag!ktu zEKz5vta?<=qw~XG`{bloIG?I_fhY@($NyNEqDX8tZ#9-GtT9WPb;}>==H1!J}V~`L*JLxPV3K#1T^c?KWaVn zY`JYClzyM)?z=F^C4}U)?kU_p>4qFDTWE?oT_kM*+*7QOBey!_>Irn@tmz?31OBJ; ztB6sV-m9#5w{pjH*Sd1OlRbeqx-99WuC}hLDGObfb_N8m){hv&hyNWDz|X7S_-{AZ-RRq6SU0| z*`b(!SF3Xe!y>dHIiFqn7O2kGVSZixH*O@o^m3%ZT|WHLI^VSIcxVE?TtFl=DO;pO15B zYqF|H@`INjoBPE(tjVI1*AW9RKi)iU{o5rNkI~TyDGQ%%kuqzz$vl) zKjA6s9tRkB_ItA|DZ#pRByidQAt#ROml`f6KrX)#ausM=PeBo#K3e5X^v|$JL%ezS ze=F_%w-Mh-iBbYUkx22)i9bLSeG)#!?9MacQ^w*q)qbQDCkK4mhj;H5pw6Fpt#N;b z&cX6Le1)B+c#zRdy+6UWx=7FBqgujIJ{KP%6A9RdIi!PzhX{{GXzlMQjFLMGb;dDMbd}+X+2O$E)-m6|!ACs(>9n@r}oP*=4kz*v`mY>!YguNXlBkS_F@a5L;dzXR-ZiFpG&5VEddi zw$s9p`Ujo>`0&9;z1ar{7=3@xiwHTaBkC~`nU3| zY4;1}L%4h!WEk%N_0i^AMiXDf zqVqe(hNfaoTR8zH2ZMeyjGe*f^O92?Vu0kBxnXF&-j9>Hk||86@z_9XibE4oKbThY z;2e2Qbb8U6+BTJJZVcH8E;Uw;a1=z7(ISP?z~-3SP6L(x_QuHdMT*_Gz-k7c_)T-A zncJRbVVsv>%jj^=yA9Y;kde7-?diM$Nnb`om?1r#Vx21;SrRp^XC+Ha$NV$@_Wpjq z>dL?k`%b8Z$zWArT1z8#RKBFF&RBs4;}q7nC_;Q0$MSHJBI8;^5tKTL#YU{(ROwr` zvlHbv(z!0I>9vr$HDq7BdqpvCS z3kLu>&F6DaQ?VE7kGU0`o7X(@xn^Aju!N@ ze(q>=2_M}QBR@=K4jtyiR8pka@_f5?)<3#4Q6Xy9dka`&4FTTbDrA_ZJK58C*mx@a z#$5B??8*Z{g?o9G86=uJgo+*V)O-nk^tt&0$$L;$Bc|#+Ps+PsjW7P1iVbH7r|IQt z&32^JSM4G;>!65Vb{W0oU{IN=IRg&qYi%1polRiG-PMIz1323*+Bz78es+WZ&ExT8 zGtYq?Im;?_CnN{hAY<`6V(?I|e~!LV1xS-zt6EhQ30Koo7WnRP`4$)3_jLRaGjxg2 zOV!9e9)6qY+Uq!=dc}+Zm(DJfsYLm81^mTcJqG zkg(H;SgE%9^=3l*a4}{^YWZ$on~*?eQm2cKO_W+r^H6=~iQ`mClF9f*CV8DWt_}sc zY)9g5t-7VZgIjF_hq17nCWAu9fv=*gSKgUZepP1U@{^2w&aj5Pqf-aY_5ToQ>Q@M2 z#PMfon#4}1AS+I4d$-G;>YxW?6rDHGEP`5kGnNPn`IARI>Qcjao)p9oLR2?)d{$NN z`9k7Z=4~4tn1+pp0L-C|NL=Y;$c+*zT9BwG34;0dW@sXPT$EVq+uNRfnb{V_0ck|{kquC+PhFIvb^ZuK7dS(5-UV2wf^)WA!b&!6O@$q5P)if#BKX2|t97fY@ zSl|ClW*I0UrfE}17 z(U52$m~_@Rrstr%rm_v>=u9pIZNrLp49V>tB{j;kpHY@4b{d1RZeN)mIs5?ij>#_3 zYR4p0hrzG*`>&sTfq$jsY)tJnthoL_n1++;Zdl4d!3QxpFPr2x)StHUBvx13F3%OcdBD}VUk*-7`6u4Z+6_r^g=0w zqp@H0?|Nm7sG!W6*}bbVJcN$*v;X|C{4J|HN3X*66k4zpES2)|lm$J_?0yM0kxGwj z+ys@gSnZXRj>2`U-Zp%ib27Ww>PT~!N+!3QePv@Q*jhfJ zSzUntt<55x3y})KPM!rOA(VnrqU)9X_Sy;wJY}LcX`RkRUNss=7^?V_P_hmnOCK5V zX(C%~|NGzgtBWs8J&Sf&gOAE9S0blMEP~%{f@UOLEhVSDh_v*NI=#Om=Tm%3+Pp3x zYnqu`Wp`T{Z)H)u4eK@-qKd|#UF#*oJa6{WZcWbhoMv2#xL<;;NHaShrXKsqrmm1D z5~9u>6XS0gGxT_|W5|CQqMk`c5D7bf)j384`Aa(MW1NnmX87ZctKw{ujcd0CQ6?p< zNeByp?Gr!^*BFg4)Yp*j&Zih!ua+5Trik6OleM(#;~g*Xu%v%%b*o~ercz#iX2ev< z#PSBm^QSrPrM`uLg~`ij6X-%PqG1rzbH{2Y8EBz=;{SUmPow6Utl?S=;UIoRR;#MC z7#y_9;jwO*36Nbdw<7wyHvrCR6!%Qu&0`Kg*M!EY&-sJ!4?}VfvHC7{*BW5&UG509 zsc4lG8Allf22K~=f-|LbZr2zVnk(_%>N_B!c)y965qGUoJ9$)IpPt8&_UkU+`|Oda zKqoSmwfoQK!|!{TLE~0%94mDE`M!HslW*RBWpzbGs+THQ7qhD-@cb`Y0k|`>{q>AB zT#nLrXv8c^zF}_OJX6$mQS7T%;JjS!I^D62MyzT8kq|h{s_mhzyc#!dlIQ%a60YPQajf;dk^fS?6&cggaW1 z{4bleJWSPz*Ku_h-!=Oa^Irpf+s)u0;%?=5(Ik%vi1a6Rr!+HXV$gZF$;x$FuL(TC zsxv<&1k1AYvrR&CC885|43c>4|HEAljm`_VH*Ws=$COKG8anjlRSy0u<2ss}v<)F` z5>ZUB3+mGucJwKDtnjKas`cVkMn2iA!WXNMv%;nLcr|r3rcB2m*l`1JsU9gHc}cVq z&v`$TofvBSF8+{ikBK}=`vry`eY%w20M)cnF>}j1#m710-f68rjnH-D4VmC)AeUE> zyF8j6jNT6c8RndGJ7|UUr?&QpxEn+;)W@+!zd%Y51w=}vNRRHAm zPaQO)?edCz9;d5Jzl17D%De!FS$ZD7SyHI7vNELD zJYM?g;-EUR-ES9P-^=b?0Df)jc1d)dIbNGPe2WFUyxaw6h;O6h4$|WgeOq{R zP(-v05D9F_6ZAk z%C~A=+&u^iOEbQ79tCL-O>QKfncxxQfbPsi-vo6{ic|`unMyxZ=5JC{WnNzA=EHhVfZgEI7w+zVc>UbB65I7p!@M81?FTFmZg%Q)OWBRD{hJeG4@eg}Qzg6w_B z@i%R=e?O-?UD<_j&l~XMa=`k?jE4l@AclYI3Zd50C4|$Gmc&?^iIr)Kert%vo(=Pp z)lXO%O2I2PpV3%TsCL>EJrM33RsKZxIRYB~{MFqco*2SW04_2%v1y zMIP!8ss;x|jU;oQI`yl5Visx-ucoqw5PhcNRXK|$G^%%%JDA=dUs0(VN}IU%yKgi4 zmMlQKQL%Apa~T~$PLX@jjJ-2)s(-#)Gs&%<_)6h&&&w<^ko);(5s!6t9_OO~ONNU+ zPOnm5Cu`>BJ0@fA8Jq9PXD9lQmwseI8Ax>T!D3^+cU- zekpn9$7@hBh4!KE19?zCDmoD{mMOiXu)cY3N|T)ZSor0;s^5K>A*1xRork+ot0{J- z4=A3XFnB-t=zVv1!_JM&bm6}NyRL5w`uB>J2+K@8ucul>F&k+KB?&rmMfe^`iKq#u zZ<0#)b?zNBbj3`eNhE0zmpa#Vn6>@JY~W!LDJx_1&PV1=6l8(5@Fs0VmC7?h|MJvl z2Fbfj5b*DT!V>blB+s!I3C?HB`R0fItK|a`0QYY3V=kleU!xHbnps=4x@*Kj6$rGw z8Sk*R{suY5>*~!OL7Zy(iM1PoiVjGBbV= z&r@D&<{i(ZZt4}0NQtb-9E(VWHf?+~6nDcu!tDibE0xR!1BR_>V_!v@Fqoh3X8DCA zCX&=Gyt*!#;IPeW;@m!Opf{#R=L&D@)`Q@>jVZh`Wu(JgVxz{sAdR+=dK1|cXCc%+ zZK1lI{{4Rpoo*ft$^udL3=&RB238w_zw?1=b61gNaHHe$u%fLLvK`&$(7 zYTuUZgz!0eE#g}-#|Bok%7X5VHXlS8eh8hpTbkgkYQ!Mk5;r%)VRmhyfxY4^ZU&Ni zatJVs;|UTM`MxDT`Rpx`aD?g<@v z?Nb}?9^NG~88to$Eo)%It_IQ%#m z)(cr@VTiip{G?ZLXSd+vdT7a4>p$BshJZ0Rh*N&n-^BCx;5mP5m-io?;PRs`C~-!dOc)kMyS2U5NSwasU`e;k6%m6Z`imptHjR1O}1s%Zexu|u%<4P z`vnPU{dxVH2q1Kd7Ie|Ec5~x112o&W#Gi8CH&*f+Z$9wX0Z7`Qp`Vna6s({=1HCY@ z{Zn6uMF#tb&~N!(%I}{{ytfK*NzAoaCSZmndqh&7O5RsV|8O>NwDwg=7cevEMM!IK zeBuX_BW zKmY2+ttm2{*LuGp0b?kXoT@6<`g<~~d-`}_{oEK((kqOOYnR;d@258Sc~BmtRaA76 zfvr&EvA=VZvf$SOhO6E>%Wa}1U9|h~&)sr!np{NT!kHl2(>CsX1u~lC@QH>^O-NLL z<5=2pv34RxzDH)D;1>1zfnil1D7t>eggjopH^ZH7(`ZLb;J|{T^x?zMGrxRPc&_UU3H!qQD z`il>4v-kYCZ(r^2LLOKpCj6ycfGOYj5v7{K(y&KoyJ_1hZP_}DB(~B~wjfjpgFW*6 zDs~j2T{vNT%*Ux9B`#SAXM?2`bdAJ5t(IfprhqHPrg$9Hb3NG%oQ`{7K0F{%R|Roq z&Po!G^ZpuM+TtVdyMH(DWsK2_zQG&_gKe|Y?e9hf0b*q!Y%@qMQQespBU zeHXfrTWYTmq`oHx$u4A$20>#mFJ zgItx!Kz!HQdADYP#X&$9T*?(w7_Fs0$bZW>l0NY~CS28E)}3Z$a_Pj2rte`%x!7m9 zC(h#;zW-kG#Nh8orhYDc(kcPFtx;0?bFs}+D|=3V+08A?85`v}w!(HmFZ=&l0QXGv zs4UQ)V=vL^2N>{Rthik3B$CpA-x4z7b9~qL+At{yn}#lJi0L~$oR|~YQ{A8cAY!zK z(c(Ei?Of)z;1YO zn~v(aR}TvOT2yjQ3QAf0HO~5x((+hm-~!I$Xdm`X3AVRW$+N%NyM0(j ztbTHmY8S)o!!MWLT(^M%oetGzhGTp6>ze&CqM!11c{8!+!UTEW7^XX9Seps_}? z;EPjzONVZAmomI0r^)@r;-2h!FT!QMPKbwR%7^Y}(QbgqH@@OzSOeQ~TX%DU$RCZ& za4n$(?fd3IXVv-=xQiJHq|FTeiRn6=>hlTtq>4m^ik!=#oZ85hbg+?0(=G9G&tgS$ z%zEZ0JUa4)>q~NutyuYShA81(kd|Jbx>P>$zifrUx@6s8^7D1sl|He5!kPBiueylN z#Yx8L;;6s(-O-E=v42u7VoV+|Y;F~KB)|8|5+l9MSQ&ciYh7c0+s63~ag*_pP6$_p zZ{Vwv1z)3K27(}85M!AP+&*${KXpgcnyA4qmGJ^stJYjhePe0IV8oTTj@KB^lX3BJ z?Ag3^lpVW+Sq-zGy4LDlIxV3e=W#hgDBxN`K2QGq!;;d6PQ2InQCyH&5xhh!>}|%q z48UV>)3$a#Tswo*4N_k@{K4LL0~~Ey8arZHR4>`-NM!aMKUc2`9~DnO%@s$BsH}i(Ywg(3=QOMqVPw z758g+5duUApS8G^KaovnWb@oDQ!4yPOLOIgE24wcH}kpkQ^L6m#>}np)6|w!ZYbZL ziJ5^ zXgUY+ewzgFA3&x+4ep%om>)OJVQ;#-E(ItJ=2hTv|KSRuR?=SA0=^&O zrOQa0X2GHo)x&+CXCOug7OO4kI*~iYIql3tNj{9nPh8pudqL%`x~pY|VRU(T2x>O4 z1O+{)p7VPUWJl2C5FKy$8=xskler^lF#u~bH?hgKNd;7wwo&WU|@=LLv5BIN&h!3e{T>Ad@~5?>E-#%u;@gRwo7WL z1LTN`QvfgW@?sS)-Fk{#gPj}yDfb^R-a!wa0{Nt(nW*d+Fm@s=iVr-2cW?yax1~s} zX&7=M_xE9>&$FfjZ25&A?c(GiBXR3L0-1@eU=x^8$;RzlLHj00N?fLsB6W=ND2$er zN&#J>+*|UJ6a1D8GIx~*t#V0Xy<7I5Tldky2*dN3Bb5J3T1J_@{=Q7?ljyN!xFfXp z8BVTceLiDCzI>^Pl6i}9c#^rc+3+rd2QN1K#bITte*rl}8SX{Z!8hYJ5hA^G$U~yI z#~}H5RKcE6UXYX=%M}859I0@8H4~9Zo{h;~R>ez=%-HHD%DOdzF4E!Y%-o#bd8nsH zYmfr6j0nFYuZzR)N5;In8y5LS(;b80gwlVy_NRNE&pjqgyRoochqs+sru(l;^P2wa zE6EE_AEO0vqNSCeb-aTc&A>#T5~g8!>;4C~#5k+ET3MUF60C_B6IR<}wDFAa;xT;Q z-b8_8J2nHgnIVZR#!pqij9hD$3ronfZJ~bz+p6Osxsg-p45;I44Nzg0QtKa;SE~m% z_Irf(FD671sL$rDuPm%%{S-|^#k0baIb|HXBC2byO>1N?TF>Rnshwa)pH%c0-Lmvx zBxBrzB^RHuKU&H?{)L5_z1S@yY!cgprn1clR^SDnl31~`_@z)nnYZ{@1`J>A5&?NU zUyj?zFqtXfGAk2()AybS=g#F8$tF=(M9OPEm7fCnYTq!BjeBhY@oB#O9_&Cghx$*Y zDEgYrO_ywt1Eb#Eey_joY)ve_OG#I~9@Pf3QeK#O!lHdX?E-bR!#S(W{a#iKuqRIOrp zMNVb>*=A_fxsQzJL112f8ogW7F}9xA^Jf_@t5SO0si+Cmr8^qvI4@xm$7hGjM+E6K zX9DMifO$sHxX1zqC_4dJpw$(Mup$-VMxRZDTFo+)FeeS%TVb1s-C3Zl`CxA9JoXZL zx*Qv%_Q_!TxBO)xNME5=a{1K&9wrdn&C zk*Q^EuC|r>6o@83Mr_?F{Ni^Wl`+&00YCs1Ru!LM08;lSgT7bg)O9k3pPVarjBNf< zjg52IJRwh&l9hd)mf}TQdE;Z_z>n<gb#NdtGoX2#gu2l z4sgFm-2CJe%$xg{1Yd~;s|5kbN)XDUGICI~xHZgIeR-1+06fCo%Drge7 zsr`)PTC#8wuQXr*A)cP<4CgM4^K4)9wVWc09-M_54iiOcZ1F%|&sqhH=*&8Uj^>b- zSY*v7Rd0v-$`gbwcZ=(Gjt`%Tx46|TtLOtuLl+4K`DzcP-b(#*5tdzQC*~0KfePd1 zuSBQNL0?^{pXb`uAy)`pY< zji~WVdVx*v3Jq`EW_oiqN9B@Su}cosZ%86yS*#)|1Mx+>Co?4#&t=9p&uFc6JUyG@ zea}DR^Xu(MuaQb91#I^K#x6$jzhXSkE|Fi4krOxXR&tib(ziyA;wY~;Q_8l(C-Iey zw<}fegMBhmV||;4AIJCTbNk@XWM;_DCTikY*rs+8pp9#gUk7phoJU_9LANz5oc$p^ z*E5Itb@JhDcE+`7>iZ%xk3GHKKRpB%H7@PSJ6x$`*VYfucvfq4UY))rkv;In2~+~7 zp;2k^Y2wFHv7A0uQ5h3EFzgw+h}4xB{T?xWwf*2`m{8(~hRI=Z>>o(XJh{tW(chAO zD07O%ZeMn-1GN>fHzp3bSv&toaetFT818$YpQ++_3jI&d=7yaS)Zx3$0 zxnuS8-)==c=`9W=bVe4T+0q_fZsYx_rJq?8q+Qn&#{LK9n8Qpo;8u@T0wWWeGR6`0 z$ZFKodFaPJMH!tzhlQQ^U>FR;f-rz?UA`QAwN_D@rb#MlYhfaOdoEX64(Z=8f=!RI zo+2trfJt?L`R94d5rKhgT{4H|J#waC>@WW4%yIDLBI8EQ2MLgZxvb7;y+9Zrsb&I= z8JR=ZjH3;SbMPq*-A`F0!dmp0AEgS)F$SC6; zodz)DNFeHN!%WY4iFUmfqjZ(F_||*Zh|GGHV^TJc)t6~sP-oRVmNhSyYejV%{Dd%*Iss^NU2|{kfjT^B0x*-V?Ve-kD0bg z5bJiM<%reKLD=|O0YoLI^n*-on1c>WEa#BwR|X~pPcfFZS#b`f*$587lP~MbBIe2bV4x6ltNNG6#);rGizw``_RFkZSlwvGtvUUGRle z-KPmA6^eqerTb!<&wJ}WnzOz7q1t`j7dPmm6VWk$_k4MGlL#`=9(9TN#dS5j{^_H6RUUAnJ^BBz~|+V^wL4Vi8%EQxD4_b~wp~EOMy9WvI@FQzKc0QqS4Sz@KYQGc{`$ zkQrp7Pd?i>9x(-_idfb1Oaf#Qz$qPl(lf5SP=y@NcJ~#-NZ7yJ^JtggOJhxmDrI4# zmFTnqurW)G8juPBqex{Of`5g?S#5u=EniCmaWbyc)m-T*J$HgH?XlT zu)3{hj6I`$R7Q#|8PJP#XGD>|UBo4lXh*je7;;q%(j>=Ks(8uJaw=y{kB4=n1Z{H_8GqGjCZuh{3bCLRRMC(8WQ*TFRT-=jX$J2g z{@W`eE34TJ2p9>+HynJvSV0J??mIqQNQY`P8SRN{J_MMG+r+R{_9fDbZ{12Ez=Ql$B?3=_Q+vYA_rCBQ5jeiTs zjq?9@CI9fv02DNWBpY+yfGV`vhXeI)X$S2|S!SH05=+Pi8C_?>VHqKpxW)8z;i2}B ztPc)ozC@54J*2+aHuR2Q~8@5>eh%i%P0DiX+lgb=!YEvi1jD)`jWh!i{p zlOP9AfP3$p7$0#MF8&hK8H0r22^gaFG>Ei7M3uV0p4ONul2S;L9J#3%*9st{iRkA{ zlPmGZnKVSO2w(u98TMgI?VtX9Rf&y|ZvR>=TN$p(u-x=|dZVmM?OWgg!jb=5Qz<(1 zJl4ISZ?uyYdeqU4a@#vvc2GL%<~eu9XIqEBiS~@#M|DA+ELT|+e6>1nvdLYf)-U)g zj4**NZd$LI!>J^XLU4A{+#qO-5Fs6s42O;KD21##ai@+-rZuKtn;N$&I zL*~m$3Ii>ZwvIEm|GO=Ut?);J6xug#d~-BgyQg)i99p>4FYF%TKbuiW$Aq%jR(==q zh{Co~{$L}1NI*%JX?}UVax5)n)$ZOH$2Ggf8>{YPYYM0_y2{2En8llO5VjAt?DuZ7 zxu|Q+o(Ktw$#Pw%I8~@}mU@N7Topc!syG{ne2bY$zURLr`ioJy#eA*$WB;k^{I)kM zvw~T3kM5tq2l3oQ#{v+N%0n_E^QzXYEwpS}*a(Ys5BcrC*1ppkPB6hP^!apHDj^R(0>e1}`+dgjWv(oe9yH0H$(K z(s6wh(w-0uLxHZ|FpGJRUyP>UFe{vn6m6mqjU0Qe$CabeU&Fz&K&3Jq*%-WX)P>6g26 zam0k5v*ak9>Z9&eHYv-Yj0T1pq=`ZVilwwdxa?`1F7Ttgt*UQ zW4OZJF(ip>F=ANM{NHAS#(+r2v3*9GqTA)c<==Uq_$xq<*q!rsVHP)U-()TRYHYPy zE^5YL((JryX$qu63x$3-2?G!IEAo)#^$QQl6GH|7@T3<#PSU(Y^eo&D*fvpO?n^<&~K6SUkEVJ@LK69z8|MyD2XI3ca zKW>L1zI5`Q!H$LZlJh=k70Hfnp_8_lKar2I?)Y|ju2h{nWGT$*SHJ4NepzSigV!7P zDTLa`UiNf|-MqKN|3^zu7D89LNj4eBhTlxz($#qKY_Nh zIp?XAwv+swf;2GMh0*LoGM}?{gdM`q`U(ayL{?KhU4dPuNC@s6vJLy+i{v@A^zk}1 zxjBj)XCSP(ZjQL^}ZgDv@_nnCwx5cdG%-wJd32>)w$fk6;C4G?= z>;HmUG2l93nKl)^`bMVRZ|HZ>5G4xbrUhLJr#_jL@>qq_!Tcasp6qUkd`NJV2zhh^ zt)5EE3T3iMXZeoxy86liuuzhLj>SKkUv|V9KfLEKfsyL?fh;W}k7i0toZMh)-Chb^ zczRSbe%*o;dLv-);Ke(2az8f|p$tDWttDqQIqJa5__=jslSw?>2NZyV-w2z*3oZaDPy{ugNO31~2_iQ35b zE_>s;gz;iNApXDeZHN%6lsk;zA*IuW%$`G;;kCSqkfRcw-8P>{=IJ zTfb~p)EC=javb?Y$}UCbwdfhIEukVmQTx#3C`jlEwSOJlG1N)*D+*<-e043D4&-?U zwl}u&_38xa%c<^kR@W7+)d};0&^rNF36xsiSC4wVTf`7DGEt68G~$9J0>N`KV=z`D!z8A9`smulYBWm|z z-Fa#5-)%=R)2P04h~i`5=A>xla}|i)=HlkQ;T+&TmJq*Gxp~Yl25R^7o8{)luU2;d zjT9kVV^Fj)B}4Rhw&-YY$lHLl;L?j8-B;plagEmrSydo6EXa_)vhi9k-6JY868G%N zF^=bxp-Ms6c+ITP?`4;@0d3)#Ed{J$%O`38?Y$!G&{x;K}w_ZW~s^ZZmQP<*_8`3;wwrh+4h zp@GS;EB3_fQc&V)%5TzI*yeAN@icl7kLRO*G>ufXCdYR&PQB}j3pI$e_uWg?dQ(b~ z@a%+oT7RkcMwav=#s4*C8U6kdK92VCbv=#`fe2ww%_cT_}%dFfu;y;x3b-F9kdFj2eD@NSQ4JB-3}#LNz2yx*ZJ? zO6^{c@bqKozH%)^HA+qPy}#gR>PH!}8OU?tivQlB@wa?V=H7! z%9eeXvSim}>`PgaeVt@2YbeS#mW-Xqmc6krF^0@A%k$Cq_kEt zo#%O7_jwKNw=a3#G5+IXo*AmYeKiSe^P9~~1-gWR5DTb5puNUH5OlvFqT0=I$9Wjz z9E{J*=jMZC7(8}}B_(9`}i+172#VP%g4 z?m3SNuY3Rh{qWhc>4bpOTW-V0*?;6hAUlhhnIp8BC$q)U54kJd#>Q|ou~=GrhQ>LO=%ysS@0NzL>+vCXWV#LRNftC+ z`?M_rURu&Hn_Z0xXM9OjB9uWp(!kDHzQdCn(GUm$ja5=l8D?UQ!iGzu>}WXR{<$*D4M+!7G+xJ2!QZptXAe&MS5WasnbSDrjh2NAJG)7<7P>Jo3AHc%xT;CYd@9(Wq01 z2?w03Oh!2JA@Xay{-Jvcu=Pc|tUc6%)C~}V3PCi0)Y6KgfZF(UIXdG91NfQX#~u;$ z8Zi;82UgNqn{akibbsBg}`N;pUq)hTN?TZh9 zgI5~4^Z-E1*s?6W!vrUyI1Y5Tk4L7Ts5^as6!sh@PZDATt%e;R7yz zk;>0^#H$NHCdzsC(21n>QiD%^T>go!IpXS;gcIpQ1#B?tG7!+ic7J+qIM zgKh6!`lFASjg-EK4rW4A!vfWSZZ7JNS0cYhfAVc2wjaBi)P~7WIXmN<4yqP0qonrl zYH}}u+eJ8=2G7z>#W8Sn$rztKXEfIHt2QT}L5aiQBH*WTYbrS`M^DbiYfl6|G>lc{ zJ!__Nuy+UVK%&Jz@Z2Y6DIH4ZggRR4~$&fIj@<&6}W z3%g)BvRFdJ5Ha`Nf%aUW*9aeYUgpN+V-cB=PG)e(NPz~`@bHp2Cv2NY6~lO2RsHjC z9m_!wud1NRqmnLW^S#g^MHVzGbl*$KBRwhSz@inWRmKI2p^q^*s}dQ*C0U(&lORJ@ zRHd1FuBhhh*ucpu)M(kr`RDB7P`e%0)0s{FT^5zg+m**0ku%S0XnN}Qud+`=T*2vH zJz)(&wtSxR>YtfLe6PNva?KUgo9#hEEM^ChX{Kx$V-~I9wCtuAK@t4L{3w1~QcZlz zNk0CrV-F}9&b#-6$Ae|M$x^R`^qoi%>RJl>*FCVL_fM-irHd0TpBdHrzR-kK_wT=s7K@9ab_wGvM6s0 z%=zjefsf=S4v_}Y7|yQ7%tCLFyC&UwF&BLUyoydIWQh7S!rNTVP15vo{_9|crom3< zQtj(zq0$+e7S224Z;_&sr8FQj72rV*uo?*G-lzIivz;A8d@eZB$)CHTo`G3@itQRE z*mDX}Eq#h;Kvq<8I^iSa1VX;*ZI|j&%W~(jiK5<`^&DTd-F)TMex0)ymz;5&@hdZ%W+!I#k=*r$Pow17{?yat zCG+O*)!*41&i}h?JCQ4?!>SVw8cw65dY@$8+SY%p@nW^2>QhDAPch@=sCRHg#v#3m z#8y&YE%~iUe&4aNmC(Advlr>bB5LJlrSGFcbo}bKPOC*Ke(G;D=XJmGD=D7I`GScS zY(T7^t(cX{BfV=-A83wb5^VhNYeYSQQ34;);AZVXw;It4YEi$bF@(aUk4c(|D^lP-?_hF~;vMW++TD@pUK0Uw%0P{meWw z2w16005`)G2cB=Q1;+p6xAnnY-JEmSO;@d=)<(uK<=ETC zg_Thlj-;FY|xJFj|cn8j1s^pXdT|a9T)st zF>>aj<^QT5AC$Be2W$EsbT3FzuHvetCmSG1)a$~n_fn?YkLjO-Xp0r>Rmct*8_y4xO~c`KvsQh!a)F!3d8L7M3zeu+*}0E7;!ncDecRd(NBh?_uF-*Xm#(L_n=W#p0=`>vpp z3FOQs@lfqN*p|f3D(4^1^?yd-9M!?w1%l;eM1Sbvpp@ThD6Z+t zb^0ze+>~vVdB_g1gj)pMX=oSDWFFBCUF2z>^60Q_m=OuTaXyz*$o(}J-z6sb-vAAh zSy_P!&;{>>c3v9JVo}L(;@eA4nuBix@^e0^;I<&AU?%<~2D&^W?%vNT9*T4Wyk0S9 z1;|CTxf{6p(6xYxH-inCb-Lx@0cd{Pj@aw1YfeAv^<(`-IxpItV~vrbVu}0(i*htI z;(wRd;hmT*CeyCp@y65q-D~)M-E!NOrj@a!!}|x{9hpGXcRwJmK^`y*uiZN-FW35+ zJW3goBG0j(_aD2Pkm5nq@LLKj#xu` zIVc5E-eKrL1}~^bs54i?_?w)TWMP3hpc3k)&KHfsEKn3p=IU0xyvpi|*AT`Tlkfi;nO$#|yl7p;Y)r$r=sNGPZ8UcXdNPbHZc2(vrsI zN*WfRi&!uCCk;<>t-o&$o5h$Ci$^IZxW0$)E8&e0iKha+$yx)x_(zzS+Cvx4@IWGc zyPd6BCAHpuM9ZXOq(|W%YtjAL@*7PZ;Z+Jw1?^W=m{ys{P zLOBX+^2zl9lKg*D{|(&kKFO%Ht?wUgdzXaw9r5=`^<`_u-aXC8jpmO=qT7W$% zNWm&B7Jdz7o&KpQB&4)oks}9dE{yo*y>0Sp8q(nA`0R%olJZXLvOM4cq5LK(A4OiA zF;6{^ZWLdTDnPSk&WC(u%p+*T2v~Pfzl_9C3y>2f{6o4O&g{vmuz#NM@BcEhFTh6V zK_$Sq7q>lw^m#A2(d4&;k#0SU`4nX`W63>{YEU)8+r@}1$i9?vn8do|s57<8EeRYH29ycDY$i;E zROwYC1o8=nLkupQ`G4tM$iLCO_@*&Dm~Zs zg<+d4*9bPJZlA@JxcvHqwh!*7t)^?3>QyGUzpDM(vYU6a5Ji^%5YPacrQ{co{aayu zM;Ux)DF0N9665oG4gaGVJsjqF5OHQIbWycpjBDSYN9ibj~ z`^5|}v&VX#HtUe%FMU!T&_A@LH+UfZTs{y75|*p9LCOh6vxm;4Nh3C zdyUbnW9hZmtg0Z#w!vA(7?1}h*Zga)C6_< z*?Pf~?3b7=HDY#CncL2Te~G1m#i8MeaF^9`^5-6(qRmQcoC`RH^=Ctl_E& zM2X|yT;{-<=9ZvZqWnkM)iV_pdHA5;im;$OE=ShTRuEZ$xM=d9L^D3}p#S<#^#Sak z7Fz!JDyDi(^dATNS6i`Jz?JShGCkGf7XBp}NiJVAhwG=`w6X%0emEKMgao|#Ekgif z@IjB1e`XwLKD}_G^jKP9$Z%6hP#A(>kR&MC$*aT@yFhaKU7sK)-54G;- zCa$1wJSI0%&k`AEB${yeCHh5|JK0W|)qY%!*iKe<2u;Wy)l)zj8E)?*gw{d)X+r+euf>|PiEvyp#`e1nqB($!iCQuQ4{+wT zW5a+EP5GEQIPt!Wc`IQi)%0pbk7P%9K(5nHx`)`WJyGkgXZrV1)T4PcwP zMqnVXsC&73m{KQGO;a&d1S7R@r2Wq;nwuA=)J*83nb#&Jw0Vru-^2kLe3sHQG zV)hAD9$!Y?^BhY`WtCs`NCwCe}g3-i6-!cE;y9(HK(EREl zI*>+>lyu&p3M_hCX`})2&IXU1pn^LntOl}OP3t7Q% zy;l{_*?q61glPH0k&y0`(&*3tOkOY1y z^|*CR=m1mCK>zKixK`jLKxiz7n`678U9}<&<-y(u~{mGLu_D z@0kk)Gp{++I5eNZ&WMDlv8{EL_eh*(k-3n2Ct{?e;NJhy77pP;gE#t4QOhY{IaLw} zFlm-l1KcC;8QvGg$2*ni^+df_^U$`TW)8+Ia{b|941jp|&9 zC9gtL6q^~{U(1_+GOc{ceXzt4WMukdJWn+h?AQW#d zBI1Esx|Qr1gg57sU!EB*!My0^(vaOn=U=Q+)q5iLDWXvQiUz`ApXCz4+s}Vn_>6>3 zrLi@K`VWzdh;`^4>0%Idau8up9{EwYCB1{FNCfwiarr2cAQs<0PX=94WsioJ$R(v0IAS@XegJyT!UE z)Qm&d`sA0ea{jN)LAU`bWQ@@M(0S3fk|q~d;!qynjjS&!z(mhlh;lix+rl~&o1GK{ z_iDkVi~)%m(j7Apg{dXRO6sqBM>>*wB|bds`fD-(Q}DhVj~JnnEeOjXEV)<&#)G9C zUw>7bz5UmN*dc9E^1iP_hr8wSS@VIEN2dIJg)Qt76|UZO>s+exR9s6LdpbXg%c4Xg zNFt7rq-E8T+5hlXSLhG$fvDP(YyVevHd;dk^5^LNzkZ8bG&_#2ghfxNkC-FzDpNIW z7xer+9Fewb_?iBY8E&1r>v_c57hg+O75Ue9xqyqVC9@BzAtJeOo9j04<#rSk+pF!--(w6I(>RW6G%<01>57{d!-S3YH^5w1+Z0A4IinZu|l&UMw#DBCRDuwSV6D;oZm0 zu{2TX#b>OIrZ1*`QRQ_KtEHWu7kekwcW_T_y6*|^`)#*tx~V_X|B?~FLzkDx-JQwm zlwzHe5FG=9AsvIaxaHoUx64uK&33tEZ_H!M<1Ml>7nih+fyGrplcol7H!dh+-dy_G zVWWO^-&E@=sXD&xJ>nHvd>9$1nZ5=Dj-*D%i1DgT5H%oOXIW+t0)i;EwF5Jpild3G z1(Mc5lg`LNELX~}-ip0&+G@_~$(HvJGtD;K#VIC85ZAL-k9fdxLMI;RA2 ziww*1P-cmTVI>&fyhP$;F=wLE7jr<2CBUF}(%@wB49o)yuI6 z12K=hwtk`dFGG>P)Mt{^*j-8@2fGHsrg@R_v?y0hI4T3_#vzg*A1w_0A+79yJIT(! zM!K?Y+D$ToaYA#A(OIIc{dCV3=9~oa%P!~(jf8d+gdn=MjgZ+qR*1uC~^nw|&dt zL&X@^E<9QeV;5nRi2cba-8`Qeg-AwhAo#?ch>u=f5=+3p7EE?!C{%bw{-Lh*qiuy? zoc|y38tZixH@x}Dts1B>C-gXx!Yg|WLy@q5X-L6iX!O<3yD?mpRSzODE|-$}qa zn)qcf$Dd0lh%$6e%_02|(61$n4>RUxsYOI-rs((m$CKQm5wa|wyTfQYmnIWTia1;n z76Msx_hM-R1P$HeAEN^V3u1&pl9uk-tWHH)pf3#TpI52b2Am#BmgEg-f$7;`eXeWr zA#=&x&`J8%DcMaY6Pa}*(_9=o9i6^yWmOu&J-BO2dq?QLTdtVxT@Myh2F1t(P(Cw# z^Xpqs+p=iV#v+DA6mHiRLJDS&6|hyi+okzq_{h?hT4du*pXfqDl7}+N8|B=$xYst92OxwNYsZYqBh-L(Lvy@i+Ynp z)@qzwzFjxtnM#CZnMotYK#qg6(v&Kb`K}7O-Fxc7l|-MY0^RI948Hpc>+vGBFl#4! zf+G!wq!O;9I!2$LZ`Du`!y)?&qd3Rv5X|!-w0(h9i?1H*jUp^<=VajCt}15Adaq}u zZ!F~`27Iu(PGct5?nK3(rfXOgEpwhxe?ZI&Hx(I*O&#qx$Mq*rO~g1&uG!2tTe?B5ZE6+>Tf|?G|+Y( z8|nKI=0u+UQYcx~M^w6N2xzB-fGmV*@VUJE^RT`Xtsu(PUC0Wluo;nhB%#c6sF#~~ zG(28U!{W<}>h7I+1hekN-x@^88X39sq&&TG22CeoE5A<_&}>ki2+DuPz4u+vmM1XM zyF`O`F=_|pB&BS-xRjCvaa;Z{CiQYre&4oG(yDWBM-N>;&@YqA{i|qcpv^iz_ievM zCUMcoGh+^VmT67i7c64f#1{EM!7JV+9M8T&FMK^-8VqS<-jG@3x+uB-wWCYFpTKcG z?aChrlraaEpvFTF&X&D29+d2ST!gU<8TBf{#CCF%d75%3oxaoG4dL$$#YVttf*WtQ zxxHO*@(T$I4^VD%3Qh89{z9WiSJUS$^7pd7mz4sOCN)de4)DjoxV;iXF?rVAqWrt5Z*71Gw4$ zBTq|b{QIWm&4~0Ppf7-W5pmw$Z8A-f}Oul(66P;i^C! z{V5b?zp}_7SFdn}Be||ltWK9v_<~*fqK=Q^*3pzmjl`n%T8#8SjIB8&SYH6!hAmGMe6GFIlM zvu?}6gEHc(uH%S3QC3U2o82Nf`V1Ln&V~9=oU|dl^cs&H^TJ)Ru{zISz-D^l{f!|F zzM++O@MYmSVjQPGpB;vuZTR)^(ayrlw_HXJ^qExhQa<+glCJ`d|Z0h-5U?lDjNfLRJhKi>Dfd}GIT6^Pp_ zMyD{>*c>q$XsfMRaW?Ph<@k=q=FkzXAha`zE>D@Cb)g)UazolZm-;zlVd?T z5jSN9IolFJH#hz!Xyrnnw>+rP)WVh$8FqUCJZ%O?ze7mJ0S?^lWma(#Iolw!Z%m~?C=8QC zj*}E=1vIJ-+N8*@$c%S#=p+4}{Ae4;6hjexxc}GA&(Tsp%`Y}9q`Kx)UG7OZ*z?DD zf2X7MX$bsR&9M3DcsNid-k`U2?0_79fj&NB9aKV%e6CnV+Wemb!34 z^U&HW>X>RwH?@b>H$)NU=?!(S62@G~L|>d}d_=U+;dSHxdI5OrSC7+IE5pZbtH=|} zV67X9646o_mHBMV1{yzlKrGNr7qIJolXgI;pQziDX_dPCm-p=t^fux;8xXRElAv%GfusVtwCzN=sS6D?HDeAXw#04 zpwGvpL`T42onZWjX@2phB4N zcmn1=981)`w$--D-5jv!yi6(#*qs;Z+|ud-K7U+1>rHS#&#&fZJg85!i=D3|w~o3< zg^%J5d1yG?M%qOOy*oyhTog+Ta|=PABvd;$nCMttb6|vmI8d&nN>C58ps(HxHdsMF zNoM`NHGU@gjQFDbnCMe^H=?D%y1Dl_dh@_pVB+u;qU9v4&$hhKKM~GG2UaYSf)s(HP$BrI8B$yq?#> zphRe-mH${7t{Cda$EMLA)GjBUfrg?Qgp=Hql5k$iaE@$yYS z4lm9}3B|5@JX?Y6sErT3v~|bj400eU`v9Iu5vI3ehrQY7wA0F=nOx*MU5{AMzUzlvezexyKnhY76*PhP0Q3#uf)5crHLs&dUI#Ooca zAgq%yN7Qb8oYi)SrrBW9chk$OK-Z#NxOz-SnoUKPX)>;6i&lIsEU7;}seFx=j%}#E zcZ-P9qsdi#hNEX=YaF7lu%hqynH!hs`hr$6ky&#VW=l@yUc1+@>T@O3Vck0-1u3&8 zoG9!O!S21dCkZ)O1px=kwo&x8qDU#xh>0BC9wYNxeqWs)x(3j@RR@TCVq=hcQVs5H z_b^mDK%rfTb?x}=(HUM;aBZ$^wh~HDVT2e{@g{i~VMLFRqUGb64&_u3yJpM6OuTL# zgiYJjOkUAVF&o0PTjJLyn5mDG&OTh0;2l|e-XKP*K6lnClKRotZZlzP)_S^%SEkmy zh;w%TmkFd3VpP8UYX|^+FHZQPD*ffU-tGvw9H_uht#NVvKQK-)G&LYkjE}7m4Y5fiq zi(KN%#pNivp`~EOJw*^sj;*!dP6dxjFiv8g4Q&cR{gRh57##N=2!;A}ABG!wp+8)u z<3AgfXovOhO9b~Dn*M1uT_lh^1J##y^xu_`@^{l6MsRxdVPzh-nSk+P~72}aF z0VU!%=s<8V@ISR5dB@A9W<_t&&mN)zTD0Y=md-?h<2u)Vw~~(iuFxo^OvTHfD$6hziOze31)p;eev_B!ll`)c+RIX|TyAy3D&cAtC%CauqDW+AqgP&Ds1&##a)egnTG^YL+*#XRgi(h=*p zA>(-278r5al{x!h)h3;aw6gGw{59CqKh$qjz}EZhZ&a+K64m$@j^3skd9F9NUvyEi zBrk@pE&Uvb5N~e*C~R+x;VizJdSUOzswLZ~PDC}3+4tz#5Zeshe#RW4c|`f&^1p93 zy$n=e@YU0Jhe9W+DIR#0EIpsLwr>o|Y9mmst;wsvY*VS>9r$z_l>;jf0FOA`0eEB) zH^CdaLc~`N0KH~kujsFr{DQeI1{zf3=(|DCKm`_k9KZ`DPgava0|ytLrVbLfpb5Lg zMSc*#tZDT52SdjZi(#Ib;jFExyjs?-nS%JD>42;R5b-UUbmF%b+hJ5#Pjdro8z-ug zAX@Qs>5<)crEB6}9?+NT$?oF%7OWf+#n) zKu)APAAt_TznPUD3lCC4n3p+%R5ob?;N@kgeHZIIwTYbn2kMTc$AE->bWS!ND$9P22Og&+u(0B-viDT=k|p}q!Z)E;zI#>%n9Q4Qe!qrv6#*O! z=8^w7cqq*Fa;>s70<+(NwuA3meiUX0o(R*JS*w5OdGI`Z$t~zwyy=7Vz9{VV+L#OF z(XsLQ)@v$?mB9_`oxW zTqZFh(1(*7zQc3N{aPAKngrDNIis< zFszWoBs5cx3=gB$*~goW?B4&&P*HY9FAG+QU9 zb`nckyO;7L8@t-u0~CV*n7_B@-HrVtj!|P)qS=s#KcyS#4){8Nl#);Ken)##WrMi6 z@_g!GuicxsMz;}OvhsW}LYG&cAN)JD6TY>v$XjJA%rf8`mLnKcu%XBY%JmnB6;R;p z2x$C#Ke{tleaSXnc#xL%t~GOa6fGMIeJk@b;UsJxgm1_lZo4R~Z5z3@a#;eFyENh@ zf9?PsbghonxG0$$o*TqLx8REsg-CYDmo6!_E!`AWVG~@nSySVaHxTtW=I*7ErJtUn zzUwTtFPv-DOuoB%qo?_PDz`4G-aSXmq5b*$iOZiW*!xuFo!_UfN?)SM`(@m$t-cjaq7(IZ zTZZW+kuBJ^#c<|g!Wy!Af+Sk(jX{?J_Ia|l$S88#`lZ)J(?8i9(5?CN2ujPx3$MtY z<-ID$Yo|8VAF+~;gGqh~F-P;D%D&j1KZR=)b1(v#MnJ1G-+Z&0hahKeb@hx|y3RIw z7l^8e;gHs^Z@&FDG@;NUqKpkYI9p4p=xJ+NODYwY7NdOU+ITdE+jY9_Tso<;@iha3a2$3d*%I1%kid|TgTZpl|r}wbgxd(z(X-b*Y+{jUuY#XL8BuKc>tBMlsY0NsDoKcQ8I(q3=mNg!5ieS9S^IludT^xz`=w~ z+QR!c&8%WkUU;rVH!5j_ZPCogLqll^c<##%o+L}_zC>w+t2!FC9zg@A;plB62)bGm6ccOa#zTouWRFp{R84yqk2l|2Qnmp z0zB&*9E17{=XE#Bip&KJzZ`>-WoMp_$pC&8MU$z!^DqA7eZU?W^|s-j))gc3$;RVu z558^om5=r$H$1|$?%*k9_(E989g1E8MexOT)`Yps4iD8I3Z@(JhHZ)xidTQ`e7Nuv zzm_bA!FYa|Rw_m2k~ulbel7i-DfbT*$^M%%PC?!wOG}ZRQ|yF(sSWpu-4^s{d%4_} zN0gg^zn0mZ^(nsP&|UK4Pm1*`mydTZMI^&+U4;>_ZPU)9O}KXfHo8Z1FF;Yo(+{h% zGAY}i)&$)uKTrP9tWlt3NqWG4QBWipu)canwKxZZ_%dWQY8dh=Uwh+Y`N*WOuqDNT z#I412i>C0J%X9LP8-#)dpXj9P3N|$8!s|T9CvMdg^fcLt+#AZ|WX}Df8N$jZbM@_z z%G&n9dSPMz$uJ_8{2?HcqDgwZxsa;rh8Q%nulxW-xQrh^2EfD7!ic0afh=9P)kgV4 zsy^cTMx$r^ZIi8L?uz?UCcXW=4LBQ4Y9gOQZ&CK{4Ro(o$oiX%MmIa#4#7}Q(>2-w z?~@U)=^9=3FJb*E2MMLNBNt(K|E^wUL`H&4#;^>klh*@oJ3`~p>L<9mtEiOFIM(AH zd|1l}_RY(XuS!G;i6eSPk|P*tZwab+Gf{hYRI(K&h^@mJSS${Skp%P1!w&U@j*n}! z3xRl|7s?yYlRK~g)$f!k0NwN+wM2f~m4u>jN%DTa=6fU>G@ar;j>b8QqdU3H00ec- z6qV7I1L1@Pv=rUA|85PlNhYd-FN~rbzsrOVV25Z;Vs)rHuIq?qRo!~>+52+2v-!JM zUFLpj#eI3WWlIIHtmOUe)M+9D9|0*!Gqq5_4M;b~(;7q|R_R7#IAMAxq&=;=c#5di ze=f46BrC6?%re572PK&Q=P#v?jglri>xwzp*Oe$nK2Z~ofB&Ra$JiAyiHND*ek1$K ztMgz~SE3Y2){9O_`asD-{8>GaR%~oe%B0vI|01JfK(B63CO0e;+`-z!ZTuuie4Bc| z5etC~EouWlgi}u1n6$({&W_2ERX!dEBvWsT!W5K$QJ%2a2E;!kT`zqSOhh~+mOeVY z{u47#b4(sT8^0>w)V`YD{v66YL+@&rlPHyP?D>S~VnXrHuYApt%ok&SekXKkMfx%& ztCCW`iR8gSmhf9LO)MSb>WXwrGfwPe8Q}grqC9?hyuH_%6zlSLr(n41CqDBShcLko zH`iJh43^4}xvd@^BHn}Y z{B)APzvxqmdSG}6y~Ycl#@9GP8MeqIT zFi#~~yZt3Sq|BzO;F>h(_bMQXq?p9ysB9b_XR8nf7n<8Ycbfc`%0avc4D&qe;&G@G zu(Zd)PTM7C#PdM@cgb1}_L`)fY0rg=)}R!m`~^uXoG2nMzd!62gG>IR1~}jasswqDT=sBr;KHwhU|z9Gkmk_j)mp3B z>S`9-U>}I`6W_~MD}OK?X55|QpD|kub+!G@54$B;DwX?b@utItc)V9=xW9?*TM3UR zBlll%J-no(%~T_Er`_v5u`f}n1F%Nwvcr!)6`lY z&7yR-W2cd1MaiRQ(c|}QR0}4In~r_zOiWOrMc>7Y{U`~85zAB$6w363DYMeIUHO6{ z2DG{nlU7$s4<|F!0v;$HmlY^-?IgT8`HA1XPN))9&?kD?D+ZVCw-E03Jh_XuN%!*k z;rfJF>PHONfIe1ivAEx2p~U1d7XIV~hEn*O0@N)38IP3XqumUZOi7`gwgqyXCgtVN zLnJFrCW{38vDeDDX^GO^`T4t)ke@_YB}QU0r!5}mwo8##BrCc@iOZ!oiq-^dg`HwG z3zte_DD{bLN$)8EMTh|YMt2KD%i*Y|Uwwg=K-xT{rhEQaw1 z2mG2rSS+{g_|FvYoE*LeST^jw(w*CXc@Riv60oH4Hw$mDWM6da1Y6B4jHG&5_Hd2j z0+30x076L+u|CYxkd3hP8&8||Qf6LjGsYNhJf}Z?+J^{T^@C3x)UHOL1z*HJ8S^LG zR8uN45#**r*e^u#ofpMwTHtF&`uALrekOb*Jf`5j^Y;@|EAl~&`EANcBNB%ELh$?m zYdIV{A*Y=vBa|j6NI%kvTMojni1M0z?YIGo__$%cUR;r<(vNGS_>#t&43Vy_TUzm` zsk)qyDV9KfN8VXGTK?{f9aC&i7th25mZ7hMJyR|uE}>ALeL~<~nK!dV<$>$X;Z2hnSYb8Lj=Nh)VZiI%mcGHhcnluJcsK%+gBgWdz2F-VLvw!t-k&psLP z39+5h9N@IfbsNV%zt?Z$;z}*|zUmF5!k>E)3@p(lE3cZ)bZrd<>3CjX16skfH!kBE zgkl>BKM5&+;IbG*n|+FBH$+kB|SCqHD0zKysN zQ&`a$Eclye&TE!>A`exjq%R3}jm#`wB+O0^O85)gZN`lO z`$Q`4=CuA@aLS-|6Xr!(kB6gc9AZApw7xfXrBKuO>+nA*SROYeSHZPhTK{NLoOe#G z=Dr)H)VXE+BpuBmZ?-OSH(HkK=DszEhsSJV?! z@46B5!il9(l!N%TX~|GG`io9(K1CDgt_7=7BTstga0-z3x#?==)?)xB-|KELOpP97VhsJ!}%%)(B((vMRt8N_*&wq zPwI^8S5=Bhu*7vuLrn@XEm5`EDyoXlXdbai6l1Xk3zZXGz+thL?}vZRoTt7O&3~?( z_DNuv%{Y6HB7p%&2Sx1oD8&jP zzK`_VUjr_b-`U?)u4W|LP^?IsjN=KNEZZVEnT`b>uhYdy(;23f32`e~gW`ePe;!b2 zV-8I??a&vVjmRP3{B@`Z&z2iq1vD@?ptnq2+1p`A;nvFBU$PYG7&6SpZZ)oYTH?^v zYhfbZV-cRp5*w+LejhT_7QYNdc>r3Awj5g|LrzvF7n^s-;#aT4oM_TtrVme-ZdhJ- z%YXDB0?`ug2VIoMiL$!19>OCDpZ8IXnw|IAMmJ?pF|v|4+G;lAdbJdp{_iR>Udy5^ zvu;eX{;A1qvw=n9LFZcU)72ER>e*mF<0Qr=w*o(`~x z$`(@(8GrNrEs@r;`wah0qWfy3#|iOh+I_b^7&-6O5h!q*i&=YB%8Be=_1R?m@?*Uw zw3kE+-adG5DQ0ZUQ27FM2Gh3J@p`@d(9g*%C)1=P!NcCX*Tx8G?!BQ1>hW6J{#)ZT*~5pkMZo%Ma!%Re^jmNYDc zh$>?{g;Gk>j%@Mj{?bC>iHSAj0!mR2HdC4;A7`}1dZfp%?2;$-cWT_~J8Rn!9Wjs+1Q7$-m|n}* z1(hoo#`k6Wyml$<*4f!p_}nR#Ad@HrKeD0p@$^ZG?^8A>TeDT#iu)w4qagv7!5b?X zcIQ}1f08eU?6}+LKKA$&6+Q^>8Ct1mfGO2XjI-5U$uN@=FA13o`eNW#;qL?`PdRL~ z(?cFEX!v~=K+Jvf)8+T9^|pA9y)tHr8%XPJp{NBLX_?QLp1`LHxT^B7Z9N?=qsPC} zzQiB5$(j_EB17&4Y|Z9G3%>MC9i)@&U)TXrK2KOki&qQ06Ks%pGOI!y>D;*X!>eU; zA8Ae+yMqZN9Zu>3zGaTU_Kfc`RZ4f}1YaKfI2h>!eW%6kB*2QAt!_L$8dr|ww727* zHq;^e3@eyg_#KWvYFHT~;)Zg*`R(R+$G;SBc`vMzOfid^Nuh8(_7M8uYjETiMjn*g z|D)nFt^N!avkoOpijGMe!Z@3^h}`Cmb{lo98iu|Plt_=h?E)Ljb$foC(d`;T zFZim^Da>82BKs_dRi$7hdRD&+4++BlhlGY3X0~PQaXb1i@eCq5J5Vk5?*siuVr5M=3s4GG||_9snqBI0G&` zt7$)Wi~F9T4Ng(a5$vdL!#V>lZ(3uWo1W{96WGbh#{nDd`XASRz=d##W^rYFe7@E( zekoz<`<>p|eunEe)S8}Y6OK*WvcKSoYZ_#8e}7tPS`Ym{G4Vpe2CxNP9qku-@m zqJ3~I)&S<74BN+daJRDi?zWy-9}eCbTQf1gBL4YcbOYkqmX{y+JMJJxX*XW#4rA{^ zJ5hLRZdmJOq7pe!VC>|T*`>6;aeP2}a=gGd-7>`Uv*s>y$%oPT!$~@Zdjm+G{ipXz zhT1%Bc>6xnY|{+dNQMfDH`ezd{~}*hDU3ZChXRlvgG>5~* z>2YsKJ0IGLUlfZbs;sWNT0_#Vdq1p=`_*nWd~|#4x!4V4`Uv#(u_Sqf6JdOkMHv{P zY#wKX2pk8;6~7n2<1u~-ehoCFUn?>ckGI1m1)}Nqd~^)snU%5c9sR10WrlAx1kPY5 z%QNyF_%!;pZw^rM*}l#q6IB5Gig)dqIsbHqvIG;x4NqVV?t9{JVJfV!;H-}@Y<$%Kb zfFtWjS#gmS55wxbG0KN zllo~Ny8SY}LIq$&nl^XC;=BIe03Y8&L@XU~#xL#CHs={%02fLWzwT|X@*k3o5npJ{RQzv`q&p;g`)^%uSB#-J{#*6NN_hpMCHDIFvWi6DOY@S_Av(E6UVGVw}r zLQzg?rN3Gq?HxfIhMhWMRfDs=m*@1F3BSOMJ?$=}&BxE@&H~jHxEbq9#plB}&ziVSLP9b-#m2Jt1Ho$6m-P*_3-BaLwk3onQW8%ssyQ z6n4RoR{{Tyi1sBk0_%*B`j_*_vFpbl?|jdH%!z7v^9vN*qS;XK2tZH5YYc#|NZhd; zHd{j9_3tgMUC_;j7N8lQqi>h6^{6{;2k?j(IEg;+*4B~1uQb!5^4_cw&XI;0(ac>fu9K+O>QKE|LEEn(YX zX??ueIp7821UmRYp$*easx9V9RY-h8x@p^=yLtPl5p_5dtkoLRO+C!Rdh7DVd>P@7|b%xzr>#4mM zO=2B>;{fX7dJkY+O!^t83H(}+&`55&f?lGzYZK{%S9=s6A05Bzx?l%vjtK&rtLRQ{ z3#HA5>2gyq)28(EeILPD)6oV-@QC_S?sd~x2Lq~Y{ zkKBy7eiV24ZRh`-Xu>+8BVR!2kn=A<^HTeEh+Kb(q1_>^!l1(oqp~p#w^|-Rc1KL3C2>-0tlHK>k zr2}kTZ7YrSKUP%QF}*uMfAd7~Lq@S&LGtq|J%b-xCp+9hPJREm=x^UZ`*>$679)`& zu;@Q}8`-cy?6p+$@(}u<=+d`y#oFDkyFcZ%flX+8WsbkMf%XEC057!g z>~5o3zDT*j^CYmh^m|sz-sX0`%kabwd(p%3iFzb8?6h$JjXb&+Ijhv)=b@imaur;O zcEIqtyjev)i_}U&I@AB)$71}*BGj6xPgtXG%_)v?oD5Rtnc@XOI?44RBb#KmYn0Uid4##viy_H-Ac|h5bSRGDSbx zJ)g^Q1VGZ-1xG*{`(8tab0pIC(hRv`uc&DS-OlW2IT7OziAsVo%$gD;H`N;ZHIsx2iIl#niq)$Uv)!f1%tbtKPeQ9}dGz%nU zL?!G7^F@h<74B6%Bw(7%AXT zJk?@0;i6zrMkhy9F)X4<6Q-c3f#Eo63L}Q}cu{7-Fs#)8B9J$A$uZZFPU=sKjpuQ14?MR~ zF38r-EzAr3k12DtF7C-Wjma}N+$jFNTT*_D5nQe(^F52Wz1&lNM>Q?mq&X%<3bIYU zp^o(tYFT#)xffLA!%6E$=3GU8nVFeY?&sN0wYm*Pzy_9_I)z*q+_7c7$tAChqa^IW z{hdFV)d7=r7X;NH^@{p#78iHZI9f);S~EFq@r6iISeP%6j>z z^|YP*l9Y0)Uap2of9icG!NyAlrT_MUIIUwzf2V?4Ec@nuh}?5PgHBX4ZD< z)H(N`vd=z!9uFV(C;=EMY#D8zc-Ihtv)k9`5G`K7(gP*z_cwBCoo< z>_Mt>jaScW=KTY4$R3vCh`FoS}LTc><=nJXKY|%u(4xe0!Ki$v$Ix1@%z}Mn^9HG3=d5}ffA*KOq zu6mC#nNyVYS_^!~z^OIlnq$$jWJIT+kt>qx3p2X_KY}^w;5&7X5U-qb%YnmTm2oOR z-G5BJNh?S-zv`V^u?t<9533Gy=8bZU972r2(8Is+r|QeEP6;|l`*eS5o7z0cu}#7v zQUnT~P|8Z5s@>Rp&aBIIjvJ%j8*bM5H9$4P>!|b1Gd?+w1 z@p)kCO1H~ze>H&E+bu^O8ZsGQi1q~8voC-8MXq>w&8~hy%-M*Sjag9P#-DrJN+%kKxD?iVhx7kZJfPu4=cukDPG%Sqkw0^DS{IWk3m3r*6ch zq~P;&=ss%JmGOp@^ooUl1DGLhR;E6GU%$wDbKV-;^Im37iYp>zj!#Y(Tg#>k4!dZZ zvj>-<$=-=AfKh-sHQzXQz5JrEYfsZAsH&6eiF3uzUp_|4=>tZB)wI=nj8->NVyPR} z1+Erl-)i2kZH>{;|6KfqwoN}g9CixGc}`5-&k9*-i!>lgT-_#z6q10IulxR2w4zwC zdk&h5p&*o`MD^U*GJf(QE4S=!kvhRY-~ICM{tdIELqm&WmuWc%eO;dq6HBi2n9x{v z1$Iy7l;gklH}%%fZYr65#a&G#Hp^HcE{V@;{9U6Wp_>vL6By)GxsV{mXV6wPugfnL z#F6oseWkBLp-aR~vD858=~NFRYB|L*mQxHu1e zkh;eXj3|QP;2cQDlLSs6eat#NV}TNdWd?tN&wJsk&@$(IAnmbGg2AXsI)?@`8MeG) ztzR4X;-GJzgSET{Xnios;9`66%a18P$3a!zz1va2Ps0P;#^%8Vt=mMVfVs8c*GX}5 z2?Ikjk7&4|J)dM1k6nsQNQ%Mc=!J2Wd*i?T;f(rv!D|Bx8R3|B4re>@ojx3^4Z7_f`%=YjMwW8(#nhH_@hm2r&#mz_!QkcdW*`3ja+Zg=yScY+Xvgn=jyRfs zUAOwLJxqq9E4{q$^!FV0hO(pX?ST6J$y?fHZQV?7cc&v!dl?lE|E>A2QwDEtc@-t} zcwgI~5*kAmrI9OXupJ)=FVutlTfJ^;?U98scaB=pM8pk2sq+f*J4Yr_1KamgODz?M z-WhurMb5iq3sgrjF) zuLMOt@y%vQnt<(O_`b6~!Fl4A&P4d)MWpA*qZwJ^rXk|S_&w-Z(+#eF1sAHjq<^dC z_CyaZ=H3b)w5(!!<9+vY%34jM zB^$zj>54^b@SCp}mw%P}zB3d{U5ohqb@~OX>MbXs5J0|VW3>qVWaEUqJLQQ!2p%m- zdfWDAJK~fNwViw1?mdZl!7RX#tI$T1boI5o#uxHh`p5Ny%EdpNYWYQcoEE5QJo$rA zN?;5=w6G$mlEHgO8Mw*K#n7qxA8i4q9VLtL{~{uaO~k;{-prHwrvK#u+s%hAiU)Nz zBh#k2@KD#fD$5mL0UnxU%gRFCdc>2`uL7Qg8bZtJ^;C z6-b+gtJv|pm0bc-ecwT@UN*5+QvFcQ;JrKo%~Y|y;qGdGwcnEEHBj0Z;7U|5H21Pe2Pdurb&;)oG~1Hd&v`kF>FxPBTDl*Im@CIAREvm)lT^4AFt_{BvnI zD)gdzPr#)EyVxo@nFa>VpeR$GIAvQ0gh-c?hc(B3a+2Qomi($SZ?j-X+U!trIA#O} z{F?OG+b3593sVq>)6OGzotQOAogvdc^K6v~`VWBq6^gJc_%tWnmCxUdN*=?!>@f^8 zr^#RaObS7~Z8B*5`i;neeZ$79SWQy8exZGHW^XhHZU{QRMWRH*+0LXC72tFgHj{nO zAlj^84!55*j$%2_D<8|Yp-b{q>-hTLdd(q; zA&aOP<(GoUa#+6Fwo@bm_bp5Oa#F==vG<1{liits%(qw2qW*I^Az!5xr4b=qbl1)l zBh9_XU_UjB~eMZimd~jn2*Lk8#NqvB(x6f8-R%5W=;GBH1CtCQ$5N9$s6ZLLwF|yZvV1x!53{2(EEm1Ps0b_*F#j-&qKANOr zj+lSuPKiE0?bHj4RD7bh&mOG95Am19NeghK00_s4wgoV1%;sl(w?3mz{=fql1m zAzAkfC*4)G2Kui?SG){ZSk5H#H|pZ5df!%ceopM0_>wlU$3MbmHYHfke?z%yDGQ-$JvH&l1m%eRQ7LvtB5shhK+F;OoP>=`W zlto32N@|i2nTX%-hbass5P9gJP|dMqKH`?{v!lnqbinU(Oobij-;4KwUkGsaU{bcM zb}JyG)On(E+1BfHrMm!9=@y0@=jwFcHDhkHZn@)R7P@vGmYZ}&f*P@J75nuwv20lx zyT+s_8rBD~f8Z4Lr{cKc12NGpGI8BjqE^_%G~q9bO_Sm8wQJznm~(< zVRlm89F#&*TAqo{Fp9>FNXm2wcxN|N%6V6uF6k?+_|gJosJlX?Vl&iPIU+LoNB>uQ z`Y7stLhS4^0^%b_G)4}Z(YMt*idI`T;TsvB_!k&#Ban@b6R~rM1dg3XElRnHLZyvK zp4;=AA2gV|rj)I*401B1HJY&FS?k!ycU~!^tCSe3;ug{hF_JoOYjK;Q3DQPO4ZOa# zK?@ga+`KqHzve&BEa}$Ir)1R?d4}e`xHR#U(>x@(k9JqsVJv&~6oV9${=jXof^f=J zKFW7d{2Ghur2FngpBa_d{>y21@~oJ+`OkgyY&#p~I?-F9JL2EUjPkUkm~^+UH^nl| z(9UL}M)FLEL@&1s*vK;~t3VsWiR{i~R9KAgANdX)?CVqUUTdfNDddI|L|=DI3%${M z`1?vi9h3G&>&`vxP}=Y5%QF96`w){Vb|Rb{Rx;wL+v4P?sFIu2K}^14==MH?r48S7 zLN6M$4BXDH%wi-M3&-+aVQNwYvwi<6yv>*Fc83f2+Xm?QzB*m;5ytv8DEjQipgNll z14+U?piK-hqW9Xylsc`@5#@@y!KfMIinDRX{1TaYctoc zjjD4|6+0=(s0oOu=c<-&OC1Il>sSxKR5q|v_0`4!$AX|X+_5cQ(!1ydn8oB|qS0NA z!~l-j7Fr7o#QvR$Bx>mte|+hzgrg`A*oT=JdA8P4TT zFe3}5ftxs^3O*Zqh zp)UyQ@BZ3EF6IgoBx)G2^&PHT*f>FW$yKtig^bEQ zm5k=Av<1s@226jqSCv|e*?YTrV0x!zONEAw#Aa)k!=O^WN8`2OeW`n<^0shQS-|)2 z>r~@bu4@;D>gcJlWhT4z!I&@ZjaAf(Tc6a~qbtZ~4L~ZzwE|3sO(t{jI|y@cbq8qq z@(*DZEXT;T+A?;_1nR^z(rnY~p9`9lxO(zf@M1NCy5&8Q;71)a`>j&ZQlG}nb zZB5}{-dtj(EK{He)@h!>b()Q}nT9D>xs5%1aU;2fKD(VSTf>*q=)wpGtKsV<<24Zk z#zA}FqtCD(U?{$JNBVZp!eSTS+l$nA3zKc9iHAYF6}D@*_oNR~RUfq3$NY|qe2o4S z)Bfol3ks>kI1~}hOnGc+!J;O*IslJ%?O!|Re~$LEXGJ==0hehB3%mGPvmsc`v@o@Z zdIheUb0b*i813GL8%E^#$(>AA}^s0Y1buK{nw&(;BT$B$oR9(a~V=D?^l*h zjWzT$p8}uB){zjd#t`6$jqtCSr_o>?%xB!kn7g&HfoD&TZ!LL_h^mxxJih~4>}yXt zw8wp=GdptMikV)?(4CU)u+D-$6>-TYvBi1};Y6YEFP*v~LmgIr1wQj>FeqMkXfLXP zq|{)D6E+W|)y`ZJE;$cdLlRfoFZYTK$u7F4Kf|;Q!&$X*W~93!ZxdAb1@GtSG#r`z z+KfZ)hoiDkQ0>EMBy8!DPYkW713k;%;3j@PEKekv>??=A9X2L=0pL0JTS~N>k-UnA zRp-6)7zI0$YM8VG7GCmNCBz*eeJhm5U=tq!|FmV{jb74TWcCewvULtAKFhV@e06NX zN$7UsG(34ynJl@P^JPw|9j_no{-7Na&@D6-yr1)JP;C1HdofULfRr}aQW9D8r+te( z_vI=%AF?vxx{4b8dPWQ3T)RBFC@84lpmJuGQ&(PPE0jzjY{6sCDHF5q4UCFVq=waI`lL<%$#bVvef#vsibRD4s*qN(IawEO+gc#a8&e50c%my*7Op|Qx_5v zdg|a;7cs4OvWlKs!0cTi#HQShQayzEaF7zX&%9PCSI}wf_$e;ZIY1Cf6rzKN0c`gw z!g$HsVdQoxU4SoBbZ@+oW~ZP;~-RyNr~{dWG%OlTAU)fTzzhFL-bG~zxhZ-eOI zyOa3g89y82&g0%j8I9$?e2Gt`QE7+IP_&jWjjvM}XYnK@HLTbvDA2?lcu*goI@%YPr|D?kR%Q~)l1@jxGB@LG4oBq#2gA5Sb zIws54|F4X_NAc?lV)30#EW^#=CaeF_5uZWogFUoUz$G=OY-9kS2dCaxhPlheKQ-fR zJ$NQ0O|x3ei{UJ!bhvBNqnU_sPw4p>*bXg2%F>$OPd;emn(ky%RHi_+4l^EAx!2g3 zzQpJQ)mm=e;NvI zgYGsL&j=bxq6uC1bW+>uP+{@b=a~C7ZZEJwvpwpX!rSD6Pfy43v6~a1?CuksJasz_ zxvm%n=f-5|_hJK6`s-rK^YJm9X}%g0)AQ#ypIcljjRdaI(W`&{ea=cV6F@4Grb3kDrcs;9(ew5Qr;-1O4 zh3{;2=6S0bX%Cb{Dk?(y(o_kI^;>%lQ!Eu7)GIa>z4vCVRI<}#rC0J0t3i)vFco|P z?tUt#ja3Xod}lajipkuVYVWCk7(gp8n)Dt>LumxAt=d;h9X|?q+wc6Fb+xV80!Tjo z`Wc3p`FZCf72*E(%BsX{^b6OvBs~>FtgJUd$!zvQ{_&Y9M=+FWSGOFq9)q`TmwGp} zRk-l!M2hF}_H~d&D~rNXrWI=DeLq`#W)$*Mip=fAh! z!Kw>uLErIHS3aa3k;fDf+t1-0%w?!9L98O%5UQA=kCNMtQq*M?@0}DtUTE>6>gkRw z5ZIYmh<}Su^rZ1bphM()u3t4_Z8Q^c z0;RPG?XRH`n)DUnzh4<;?i!ik#0;IXu3t*Mg0yVUTylDgqlDLLsStJ#jET+Ftgwn`^2TXKXjM&MyoH0@ihl>)TGixjB;XFhw|}TRT0(lbaQS|}qHLEwVX%S$_oziE zJH~_YH4Hcvs{|Apf^SNNFCJOl+>%nhCYX{@Vyn0u7oX=8^QU&u+&23@c#5^drDmKY z=dlP`yN7w+yh~$cnzR~=CgIpBhpL#qAJM+z57WNFd3u9i+@?vtlB`+0w1&nN80ab} zeEi24OTXGe|H=LmnhUfk+x2PbrNR8y2$Fq@IE-!rX_I#~I>Jz6`BMFy0JGIEJkTFG zFbY?ekF_s)f|wxxce#+ks-N}IS}((t?>~C*-^0=Y*n0HXtHY%Ar&Q}W_t>T?jb!kc1T|U6c{q{I$NNxa+M9$)>9+ zK7(_afo4FE{CFd7je1QhK*~#}9QIb)_-z}dk@m4~fvxctn5;X3@<0_ftNLoXr}EKV z^G@IAPF8J}XhSXHIC5YH$2BOBF|?3+2QeGEcc?u}sQCYYTk7khC8KA!M1P&%#qnUk zu>qK*t0+Ck#AWKx<`7xZgC`?nedPDVX9XM5R9xhhrayeYEhqp>S2&ii4cBFCvj>Z4y2^@b(9s8Jc%2x&J zta#cV&Y<7&1Zde-m_2o#;{(_0R)K#W?~I7>wEwC19ry&^-QKG7hq?d*%*eirKzOLa zEX~xPrC?Qaqgw%jw`R#a8&dkr{F9;uq4C{d?jXft|K~*=KBYYasoxAZSVqNqH!0pL zr0{LdpgT`aog&-O6JP&Uxx1%@&&PU=T!(4M?fx?mSV=o$ZGIwtY|l4#9fwfqlhP^^VDuJOVmXR zZNKD~%|)lNEX*p%DPsJ|^PSQsnI=OT)YXeONw9-DYj-2&a4fc*`LyUI)D!Wu(&;*@ z_EV=@rFFak#+&Oi#R$7T6(=c&2w8f4t|F-ZGnwk?Pkz$AhdOoMT5@HssH_%vPW=%p zmbHZA#$LS2h}kjq`)AnzCm2ybQV()3;OdDPW~tw|c_r6`qA2ZmN>S=V(r&`#7!@Bc zooEKV&UIY>kzFW_+tfJbC7kU-y1#YY4>N$jZ9EvYWokS!^mJl{<=2PUOd9jb_1z2J z$^T0EBRi^+F4=dRiwgbyX5#VvFOZ;z6>l+xWV4uB0A#9U{o->{gg6a1@pz3Lwp&?w z&zg!rwj|FjYb`M5`YxFh2qF;C?=Df(p5qjG<)yLyr(4JYYl3mcdW9edYb%6=OL=c) z$b0)G0k`nb8N@&Iy>em3d*Wf^zKl<%TlmX31(xk1s}iB6IBr> ztk1%bq7a|RrrXH=9GDx47Jg)QEO}4p# znhf9#4&P_z27Z_i92;|D-aHZYZJix@{R<>q1z-x+OfD5rA&Wd!dE~K-%ZJs=ojoDO z@D~t1w{_sU34U5w8TvX^-5#YKL%ULPun4M?aVg%9mL?~0|M8bdmd%GRL07S0|@dRh?XC=+uTGySHAjx`U?UI zs`5vfIO7h(uNM6*Ra?q0zTPDr%Ab1f-<=vJ;hYPGMd%@t97E`_%GP4@9vj6mQHsEi z=F!yqQ?ht#`OntB_fdV;RV>x=Vwh>_wcBhIhod;Q_Z)+I%wG$h$xA&Ws$P^#Hu1JC z*qt~Qtd6`e;>Qj9J?GE+gOpoANgQx#E~*(xe)WOl@g@@zRm@)?eEW~!e_TI_pYoEv z-l`a56XU5qz>vLNms>+kwk>Zp_bDgu^dP6!@JHOAa(F%}iI9F@r~4BwuM3{edJptK zTk}Qor`bN86z@WIO8>qB<|q?C<;aUt5rrZ*u0&^>jA9yN1OMAhbIUex39>zH&a!-zMNumG+t+Y$ho3HobBcLb^(>iR;h=tc5prVky)YU zI!Ey#wqA;GY|HTEUSDzVP=?hYo814-DzfxiyZ3&S{E_>?p078ciGDA+~Y ziM(yZu%jRGP`FUPXsJODbbybYZP#M~+#|2U_0Q<%*o?rySo?%6KGv%>RHFsfBl~*0 z*rBf)ML)^zTx4*F9hv;n*!}dTJW@HfVg5AN`%9sd!4*_eXg|BZE+M&V;FZri4i!D< zwY|tIw!P%TfrTcUPhW*ZdMcGMQ+i96V-C8I60S+0!{#?7c;iDetYCw}a@ZItY>4|y zlMax~$~bh;`u3vhALko{pu|R#FI;)olBQ{CpXF}1lA3l0qI|i7f?oexOhsA%tv$WW zr)Hj2Qq>oBD zKP4?=IQPjv|D|=C2SYE73;O!w`QyF<`4=q^aLiv$}Gm^|F8g z8a?kqQ`H2xQtZ@9q;h`%G44qxAA_0&wF8(KzzC7oxMH;LdNb;ihCcwWDE8`ulW0pU zkEmI5HY%SMnb+)z*=G0OBPW@^{Z*Sh7ez=D-<9tus;1;~+>-R)xWi*T9H*DDm#`(( z;x7+VX<|6#A>Le&V0Ihv^50ZXs@$_lDjo^Vaa>TxqJn7e7?S^aS4E1q(&P5F=>f94 zzcz!AJMtc7q5Q^};{E&WrEgK`)l{h;&NsK@PhEf0#`$Y-CvPZ2;u({!-_xK!_@!Ds z0e&wIaa5)M$*)Qb^=L1-bS6NBU;ucMivrgE~YrPJq{=+ zwHZR%j@DR$hA%Dkv76tsUt0RVzPocb%M7j@_ZVZaFAFA9YK@Rq;>)9Z{joIe7yci9 zFllco1)Bif#gWt1NOAdbl$CQlcme|d8H%zX$fwDla=$u_?ku@b&D0OYez_=nG_j7! z_jyN>g;vH$G-z@+;00G`dBAk9W@z4fl;>m~Y&^kq`%%M}H~?#*&W~rnp`&c9-yq2x zPgI0$v$khTr);U!w7!^(n&vPhu^6pP#$)bc}CcQ z-fGF@$y=7y!7I)_|F$Zde@m8JU@%Hl!XnprzmRaLMvT6D@|G;z)?vFSVRot zc-X&eljJJ8+NIk+JU&MBSg6TJ)q#IjD4Ad3I4K#M?eqS?LG2K@w&@D&>s%3`FtLiX zK4s8V$A_!p?o|9pq&}0S&y)m(1C-xHxi(ADxWmfcT$W_rXv{<9_( zB^a!$(VbL!z^+#R(BKWjy<$8e*R+oLZVtR^M9f1&!K9AZB7-6=qm&86wl#D5Dt@4WHTtFhx*eIp;U47=R6sFOI<5|aaVIse<0-89mX!3W)9G) z2U^qQY2DMht2lPr6W__%#IBVz**=dt>Soq$PH2@R#ysFlB65yb?h#3MY$)lE1-(+y zL{QjkT`{o1a6cq4&gbJxn)JcJT8&izjU>WHA0ealph@vB!Tc0H-v_q^3CK@AoDnVK za99ol1RiYxe$pC!(k*V5Q!~`Up?zvHj?aN*xqLO^7~l2AYLOL{82as;v7-XKe*Lj zV?#>D!vI;gzBIu6u{hia8k;^yd59NMk{L z<*yz=uOq=>Qq;C1RtE09cl!x4K|+mP39HY2EnAs>@r*#$Gk6ZiOyY8m;Fif;`;%RKP zyCvAXxO=c5=nmztohnaIuWkCp$oM@@=6HGQ_Beu!0vpOATTTkAgLNm=l7uD`JVV$0 z!jJSB=7v|?I`ddP7wQ63SsE|B;8*Op@UwC)XswB*QT1#)lOjz@>0dv)4F^iTj@FNs z^6z#9C_5r(cT(uI$V`S_ZmyYJP$>SYh$LH1K7pk@{(eX@I}a@K&$Jr_ah=K7_vnue z5G5M(`NlqXa{qPUW8%1|N6&@g;pt+r;rynBIiBCixt*bS6UlT&*y~#lhK6)X3x2IU zPxvCNSR#S_xBkV53?~oC&CBa$Un_v40jTN9Fz?Z()M^wgh8nn0RrK+`KEjv{^;pKJ zwgynHzSyaDlKYRx<@En?g#wQXQuhn&YjPENzRswPz3SQ2pA#EHGO(&AP^2@rg$gFB zH#hL({>@c0#g-3izjlc~);qZ@#3^CNxm)4{Es}{Cl570;iCX}XW{#MF&gOZkx%acS6e3fX$X=iS@fh$iXPmAV^2Q;ZMZg}O^#W_=f=FlP#WyC#Gym^}I6 zr1o3)*_w$WGq2UarV%50e4xlA$8T=ROqq-`oe zYKv*C=mAh~8=U_7vra`5&Eu8a3D)^KL7El5did!b>_FC6l)^cW3$^c2O4E88*C__} zTlKYK{9!PdPi1;! z@B|o6h_tU)lBmz}w@aC+qGfjWZelhcOy`Hlxa8Tf4RO5SF*iMih5vn%V(V~-4U%j~hW=NhCG}1D32U+reMAum*$ET; zAmrQ66Q|%~JT|lI#JsK6*4`ombDnQ|TKQ&5re!1xRoS5&aLbu%ym1rF#y zi(`u6%OSQnY5yWKw{B{@aKpif`}ewKwSX-oLyh9_of8EU`ct4nHqH!zyjjpIrDckR zPaS}aE$JohYc@H{LJ*?YR2#dzf-k*eV+p6SGYP`4dg3_G^e=lh z+(kZpkqWA@I>0@=&u4Bod{Nm#ie!H$CTxu#&z50E5^@6shE6)O9Z4|I@Z8f@%wY=cXynEB$ZeImY z7s&?oPt)9??`$pB+_UhXli7)t=r<>X9iL|yHQGn6io(aY7|gZA{i5S-S0!YC)0+$S z64!lMJ?fWh&-N&0ArV((KOeFJRU@mYgg7E%oYVQyF~pMhbFN_b z<|u6V8;s#Qpq)q+MDT(FM$jz(W!!DMdcXyI3E(MIxm{1~fcN%X@UihDL9ap80MuPh zT$N1?-vAi|TJWy1(}U=RZ6Z7L#@|2cuPYiZ2_I=jd`TItwR2%mVa7o+H4|y~n7Eqk zL+z3qF3fc0!Zj76&s&g*>{xC%-7B%JDn%e4Xx>lY>C!VdQ}=K|s$AUB?OmVzizr2A zGYnseRQS}3DKx}t#+mH995zJEeKoOx9Cg(oqF1iZaRYgQ-BW9+=5r-~z(PYHIfLr@ zll)+{4*_@t8FylZOZ#|y#{b$EZLhF(pXI!jj{(R%X?P`o!nta{*0_w%I((*!y8p%u zxdO*IC4gUK-jRa1oHsv=qBJ3fyll2T=*Hs}ZccLO1zcM68t6j?T#ZN24}doLRPi;K z@+N|!H+`%(w!8TYnSfCYSw%{}DKcWD4I6c#(J-Cn?Po(^4rq$0KBO^*mn(?F_|-AY z%*igwNY8VgR^vBa0&VeE9&9jckG~Oi=fT6m_0p8QC(haE|7T9%Gm<>p#v0Th=k-SJ zq(&(;c!%+m$`0OK2-$~j#6PH&0 z^1br*Hu$o4$UK!9RCIlu$)*NTV3Z{(H|tP^xXSE1)@iJEDwNCJkcc|>&BoS6S$3=Z zc09v$G~o8$fBt{VWz^&iI*E9Y^=>EaJH9g2c`vCFP%^K1F}@O7vNG+h>Jev-B+U;TDVA z-NDj)M?)78iPUeI`{F>cN#G`9IEBz*^z|7KoUb=d4pn;{EtO=kLZ$N6A4LOW(Wqk8md_@g#Ed{ga7D5=|$;JFa-F}maPJ( zGMXbZYV3L3dobE`kSG(d$Do2#IXnG*{W-30g1M(#L4e8N7UZh+QwAOr+}S+yqptwj zd|cs`&-E4CGoKFUs-G4_!Ul(Q@08d5_^2$M?f2g2_O~}>g=z0XZ|CfZ8oz60b zSGGi>IfBQzO;%*h_)8t^QLx$-!b<)g4hoZR2l=4E_aq`B+314mmFt)hU72rh8~i`j zo5EXWU-Gt!DjYhzEj`|Q_J|vx{obEfXRoe6ilSK>z_v)L?{+z1vzlVDjpR9HnP}Zk z>$&o`B>L3x)*a!Y-aBV|*>rvWYyMPPOf>^6Zr6X36Y1r=vWI`BF%~MblNi7-u`7hX zwhd=Su5BU*Lz#O3tF8;Z%Nxdfe=?MzTR6C;o@nZe4<>p4+{_X=>eHaUEd4iG- zYVf%f3pbtl4>L}x9g*{Wn(6YRq@yQ6OQiS@;@s8b&2{{w*xRbdmiL=K`h3#erNsPr z^V4DnJUZ>f4C%}WG@Pc|tn6?$&w&lT6DW0`oqFJ0RxU&Z2aC6Kx`T{IQbigiquD1C zoF(6vo*F~LEbO;0b**1a6Acb2#T8XJy}2zK_HQY!@$A1(+gGphA1QoTH;1HP_liW$ zNUb_DjJE#1t&@fN)VLk}p!Se>T9ZE{M9x0J4AWKkwTvskeH6yE>SBGm?OmYVd*5&$ zZulNJBs;ka^mvF^Zk*r@Vvt+NMA6!mm5Jfhs(VK_SFe*Q`UKSr;yOvdJj6HAye z?q5%#A+MQldOfw*Vpmb5R*7@UoD=MwdHr+4qi>}=^KfCV*qz{Qi(tlqfWUSyvMqwU zFmj)CW-)i77b5{KD=RCWBFzMOnKgsiehWR;D~l@(AnYKcXIYS0Lm@S$QGofv)nwR< zi+!lIczr?T(Chy+AEG4pD8BT@72bQ6jUx##!+E`CfbYAcvb5X7SkgV5${l4Pn~Gz` zJdL@>t+D_4FsG}Qo&!-seInY!#zlB{<3!`ak3PQLNYGL76(>;Z!Cw`NT*icYjY>e- zU!XJd@6TTG+pM`jXRO0v&NXy0Z}8DVpX7r@^f8f3e`2y~S}NH$abPX;S5nS3LWC2B zc{JpO%PzGq?QTmMy@Gr+l0ds>h}t<$P$_pP6`4o4f)W-Dz4M>YHltt+!b+mRzHVyk z;~hWLY?;jM_}#lv(uSUVDCUKM`zSv))nX92XO`Gkm>DY8>}DQ2os~8$mk*OmazA+` z3aCcq0&x#6(RtI68OUH-J+K@vC`Gb=6OuwL$xmHZ2%eZ7)6E6#w{=dCzx6iaQ%*cd zW7fBGE40$R_+QQY1-HP`C*>b0HSZHIK06*euyi(4t$O@okb0I4&7`ZXdK;DN_Wq}K z+xw3hoVJN-k4N>+JT829g9spTQ{bTmap}*aQ~5heJu1#+_U6u;vaszrXm3%`O}xK$ z6kWSQ0qid#E2@#&`q+PGsN$1#V37%-8Mn0(r80dOz=O1F%W5h@KfxFwWVJ6d`?l_{V0GLOj5-lRuXTOW;%r z%=GCo-@&BC>Se65D;EO?(E2>{)zuYZLg|`uY23E#t2pDir9fOO(QW?xU@hF$TMSKo znVPs{`=>V5dG_8L+KA6%#o|D#M9a`Rog;4gGnO`L`ww4Mgl9ueNRY>O%hye-w=zGQ z`A3i&@v?b}6kv$i9qSmQ1#h zow3dSOrP)f_xzscPk+qo<#oT$ea>}V=iJw!bQcexm1)c5yKMVJcN;jeQ>m?5{Wa63 z5IfEP@jssj^RnV-8fwA-TPDb8?2R%Xp@}S;P%FN*bde+}6qaG>hF&AHN0h^Dt*-r8 z>uK=-q0>3A{?ixsvF#S(A&VzErxQ`EIgy7J^rZ~3JwIFV!X|XT$L)RLg~d{)Y}Zcq zwJJlraFumrs1sJJO>Y%oCe_z&pTLGtjKe?g3%+%R0nf#XgI25DaG;bKo_x_b5Ys+w zUJ>fcnPP;isBy}|#LWt+w570Mo(XB4#Bo0?zt)Ilb)N0X8(W1aM$1|#RXLihSNp$6gxu?V=1>K>7UWPP!<+c`d)U1yFZl-rtlGlS-J1H%j1P>)*8nTdurUeFED|lE#qXuKMC(U02}Djz&1dC1<~yj@E6+&i%4Xt3 z1;@yfD7KWG)jv!D~3;*BfI0k3>2 zK({yxq?{bYCuURhTFX+w(hG#`;KfS&(dFK-=-=?gErUgO?do(@FU z8=~~s`n@CY$PYo*$M&Rppz3BNg6x)U+r1!#`%!r`9Ne5+2pnljBB-CPFcTZ3UDYs8 z)(QQ_aW~`+3uH$C_lG{JtKAQqrsWdfh;PhV6LnkH*P#d|r>NFvi~DtoEIUYO=;fz# z0`RoXqUs|YOE&iQ`ijFhIlk3kH}g#98oVT3Zde8 z&{wTI8b0P8gcPnj7xloUkOSqkqCX^ap2!{OsXykOT>aMEljjMGpAXe(JWn zd)|o=g|sEn+V*Uy*EF|)5YkK|12B!Q#$3*Adyp;upa6cbehXAK+sEM7CSm)rdCp?B zr1kkBY;&hR72cvBI`Jf;(0fACyiypH@V0(s(yBycWNj>5?97HOW!1x_;v@)d6 z1ONU#O3GN*pu0tUI%FoHg}a7_*V`cLvRN{yGxB2MYV)l19$P;(*G7(BwqC!oL zv_`;JX>^kx?TUbhq-J7qJ#h95qIEx#sZY=?#yMLZJw;Re8Dgxa=92*LRZz(83GZH2 zK_q)fAZ8P7CwA(`I8yRl@`wx!d_T>N2KLS>?{_I#txLGm3YxVR08RQyGso-iv!MGi z&pZP(2Hej`H}8@yZw(@WpJ-d}egABYfUi80JJC7JfPDsTf1G-KGoqp{cRQw7D)&|+ z_Njf|yYNa%G8wk=MI~WEY4j?7%WW!8HHY{Cz0nJ7xwr{XuG(&1DtFm=e3mqaVl*A1-s`a*9#x*9 zX%VI0xp8zGTIIcSwzS>EzB<>40vg_Akr5I6YA5zJtknSpI>NbSPwOo_*XcJyhdpXo ze*J7kog!nufZH;IBd{g%5#>CHLsm%J5JcNLx;!cLJ4(Erw~AN%L<%G2*9cbkhW`wZ zOXMaVmw6-PKz1Tml_v$3*=7=z=0EQdjo*n;IhPJaDzc0x7c`9g`ffL0H+AP3M$W;q z^_oTZx0`m7#Pfa9r$|MR+}2IBj1MuBhc*23me_w@k>ynl735|iB4S;xWSshZ0^Og?M2rPy-#`83cR$iE6jFVJ{7qd!x@_Im-Q5ub6MPz0 zXWXAobesfNuL`u*1>@#}yP$2y7c-| zyj6hRr!4t>%{13br?L1$)f=%eSA?PsI5h8@7+`&BWurTc?6$ z&X(3PdwmG8{U8~C&R4az(%vWceT?2vPxp!D4qTf(#0Z;8Ul>E^pZ;j)a) zqjyB!6!ZFJo@+U~w)1j}ly-&eMv?SxXSjms|2nKGx4?(}Bf&SK#C?6|QqGgkrXr{8 zDeaukW+~@p=u^DTY1+UXo`yx9X*BLIW*KptpfnmB>!V_iTR8u#hubc!0DGY#M3;Pr zOxbyA`-ZlL961gN(CE0*ER?Qu_y#D5Z030KNw;OUWQFegG@z-jp&*Hs*_+#z@r|P> z`>z0IaX$~uwij_{Dj~aiVUiQHC4zY)N8?pkMIYao^v78eT}~9}=Q=Tn2rL(G6J26D zQkr%2N0{MqoQgT}t!dRPmdq$=XcT0V>fQKrm3W^t@;Vh=D*>xx6w4dc!**XxKAc%d zQn7>X_tY6y+RnzEI^go3nf3I$y_-TL9q{{MuSTZ zBxqMNPVBbUZJ+nopzCYHPddPVX26{@G$4$8=rruSeHngpjMhZt(H>T3Me(d_OdMUK zRpoVX8&q5XqGu9_#x~{f=ee7&p5Hb$j2NUo+}75886AOOy*1@{?L)-# zL-Z6l$UJnlDp$Fh+K@PYmUR}FhisKU>Rxbmzo)EI0bY?|C++2M|2&Pm9KG23(9kH? zkDKr`7cz+)?7Foh9b= z8ea|bOWN0~J&C7&&eLC+aWB6HCaj?@!*^gXb8OR-gd8b&w}C(~OQc^u*|EWe8u=(K`Vd z_vWma-I|ccpOk)tbd7yZaE4TVSz1X%&RyB2`LC>n&buF;DxBdv%DBU`)j`Q?wjub# z;|X6sBfnV!x0Bl|K@NG7K-r51yvP$4-eZE*0y#(-=N@*p*aEqmllx~ZIC(EG{1*Zz z$lV7H6cJdiU?I-dpwW}5;UFFD7?twYexPOn|C>K|rHx71NVf|*VYdmP{EoyPx#;Ko z3&=X%&80WUs@#BLPs^o%W5LV0IxDPfG+Pd*WeklQSLaaPDNmG4 z!VXcaA9o$+rVj6@t}kpzcWtyB%@vyQJdAw)Zo7}>1h!_H$I>TfCACaRw#3(~Hxc48j!gt_ zgUP(w2L|@2u#H*o4O{lB+b|=p7LV0|BqPn`id0h)`e@zu4Uo2ztg$vhn+$tNvay^> z*=Z~%Sx9Otl!8;&tir-N7&yi%O27@|j?E^@AFo)~Sz9=5;T~)TI~ykuLVQ|RoJVk>7a)zT1aup{jc2wH$xzrOSs!U98A{1`>hBxQ4V_u@cX9rQ8}K8tA3#mg5=G z3{ckt5ma-9q9yh)yCiQ!zXeA?Fd8x-P zwpz|Xtn6GSYWx1ktFKJG%swvN51wjUB5E1XZ1HlZW!NqHW3-F53fU}X%>uN3M6TQN1(%_!h_{@LB}Fi13T)$LMo-h;bA^9ws`JQc&U$8YbZaUU-*OZ&lPR9H9k+rZxS%fh3+D`*w*jkA>rfBhRV) zE!f>58@K@d5v0|@%(;)0c}b;>CK=oKsb?HB3r46l*0nRB>Xe7IBqO0@Majfhj;p|%T`F8-QOvlLJ9_8-06D< zc6bjjo|E^cH2o$D9Ow)^^X>U_gd@QMUlI#)0anQ|cQm4QV)|`IT#6~f$4Kdk{*nX! zFN23~bgZaW$l#LP^b6*?PJ^bsrCU_Zgg21TsE+Gd9=Yf56Vg@g-_6 z$7lIp==)x+{A7!GsiT z$Y`zsMCMP-Q{6G~4)eL%cM{rhxU$G5%~AAb1FSr=P<_pK+41qc4>4vV$F9}|LXj5| zX{0rEkWX8bFL;jDd)}xAquv0NLhsNb!lJh$nQXtP6mz%}VXSd%JW?hk@*Rk8IL);K zwCRTlnIk17iXXvCZ~g(OS@?IbE4|@X>7IX}*V5uqw-mH8fP_`uXm+$e|JZ=I5SBV6 z9bT0{t%O4iu4IrhzQArkDh9^e6^stEzmO_-7vr7oGC#UTm%7JjjW4C1ZUnYA-w9?r z47OC$pwP{=%T_#EM0biZXm8f(F3k8np{m6=X z<|u1F*widUO_t(WHMlWml5f4Wm2RaFvHmB%A6ZN^Q4xM~ZSrT)IP@d_tg=;+J5%+< zq}2-@$@G)wqDIetswaIk`(m*F##H#@zF{Ia*(K8V@zb))Ye?Jo%h!4A8K z-r{?Hez#=JWLiD%w5)xxk1#JxIO>DxBht)7_7ewszgmN&kq=4a=ee&75wb}bb?HZ> z(vKSpv>XL>&|Fy+3odV?0^MpIGV*Li&(gVO%iD+S*-iUJ0Y9XTOB@|f23rEhH&T?w zj=AWQTjBj>VP{u2Rp7vJS}Vyl8`BaGZtM{;%=yh}5wiDv->K^iqNw*U`N9m1crg36 zn+nZ7H%&`D88U7fo#i%>-pG)v`P6jsPh#Hu364awo60MB7_pC|;`Vorn{gRt>q2r= zmd`Q?F+A=qp_67q#T&P|pj5AhiHj?0J7Go#Vy*f=8p|bNMjeZv3xK+?V#`7*>L>UH zdKR4DZEG@3@%#^9}Z8!SU$^B1bLBS#x*0X!*--#irDd4HGLY7bg2HWVBq+J6}t5zS4^1cA-XHI zZu5*GhAdY~soGXHU&0!yZr-~Rw$lBJ{XlF5j|!iv=>Nf8J6Y13tbD69?A@UN+d)nf z<#00IAZ!U(dlCgOss)zNYH1Z-G%JB)*w%(&`6{`i?3e=Hq^P8{!?Y&us?@*=5BvhwptjfA=v8^LxzIe|Iqh z%V^XS6)&j!p{zUKvn?6kZ!R6qvLTQD+jy{I$Z}1!E=MhnY|d>ny+KeyireG9fSd4p$Q7h1ytP@QGm)+HU}$(X7>zfbn8&10Am z)?Xs>i`E##HDV+L8W}2>EAPKrns}nSIsF#I>7wV(vzDJ|E*9e~r=omunp467B!5R( z2NJL<{7Kd1OP`kM#N?khmzfjN+_UQOC<(-;m&0$+}qXL=Y5o zRQS;BKJ{=i%j9IJ{bJaR>(7&i6ifUs$ZiX+^>Q-(^``}4iRWi^L3vWWboG}BPvqf+ zIK9{dJs5GsFEN*jJ$xqMA@gyr;AsR3{-CDdsJkK>Op7fG{QRlov0%cy|ITZ_5{_RP zH!QwAnx#Pn?{BvZtNYTITXyXrhu!xd!KtDCtNLEvf^L$M-D_!j=&3P}!{G066>!?D z4r{&+=ktc|T!$~W*#0o7EPR57+NFP&ouq}z6kRYYsx#IQn&Ni&p zr_CYS``eGYU*~Pp_L9X#>VA4zDfdrKNl)!a)ctzYJ&f`r~+VrYB z@kRHKJ$~3x*`jVTwK&VO*0sTGNqj3+Tv-C6^vbxB1wTBqhBP+GQ1xi?JYa=0^p|Ws zaw0#iqztcg?{QIVR_L;=Ejg!4;kwf_rAUg<1*Vr<<;Kipuk;w4`ZJRyI|{gXN^HMR zJ$tdcc_U}NXr6nFKDzn0Z1#m#mBC4>7F!8BBEJfPx+FGa8WktO{=gioqetr3#%}Tl zdykEAb@YLC$MY@>!m_*?Lw~OBSxLC3F0o!va*wdj{+#$mh)?0!_4eX4m=0&zKTZf` z+1f)${*=tZ72HrI5ttH1MWAa;wy8sYXXMXR6XiqR^f14LWxgw+4{+`PdO}9G)4T< zpPge_z0cvzrfr_?23_bH1zOoU8GZd2>9j%Do_Dt7%fxHvy_!NS_taZ-7ax`7`EXS9 zoittFLUUXRxM*o~Fkb0JqN{7z-|U>Tu4vg%N-sZaQ}{1`+?`|F8}YRZ_NtWouJ0zB zl)4+spJ?3aZ@@+9d%<0!DJ z={~1SP4hnShFnkJyiGF6a1+}=E5?1IY?X?iUbMPb5PskQmYA{*H1#-{`gnwrODb|W z(WL+nOP0n~hiyL|!D^lsKS2me!TUIut$pMV*Si7dam1Jlx`CjE0{5*` z>QlDWt7l`j&`FAa8@X9{X@uAm7&u52>&^oqzeHst*KF6>O>{H{pbfN*nOjL{W$I+^ z*Pvs1-*->Dm8#}9=>Rt8#XiVgCi2`*=MQ&_zDyu^L+ zwd8azWkBo92e;cZc6xlSyKC({nvknZLfQDwF5XYipc#aul$3W3xoaa0POOCvu(K}s zQpXBhs#+DA8;zc!iPX7n(x?Lg?Q$|Kjix| zU|%%tCdG8udUNFCN7Dzx45|?Qnyh+pg={2DHfulkOm0C-csr|*V6A)hm?XQv5@=B-bJ#;SR0@!@7rQE8Jc6c`?@0x)-oq z>7BF7i;@a>#Zp>P!vG8Msf|JG9u;XYwGpCOBcG5alZAXF4SFlJ<2c&FJQq$TTL}qr zMpt>sOZV6pa}?+AlvYauAkOEMi+=mgF<)k{Z(Doz#OEER8G`|WAuf>T_4+}aQF7B4 z?FH(*0;bhvSH-;MR~6=!x`>dQj3~qc#AWTusWyKG4$uB?7;Bb|D~UoI-_*4>_Ke+% z=*1X(#3vw7(x6vtCUB?ocH7q`c*doN0LYUw1|HCd187dSn70R577LoC&^hMM=RXU! zVg7vPy*wIWa%Ym(H%lM6tQLevh0x#X=+38jWnI|&E5f+2atn9oy%2l`PhF~bcY6q_ zOe+ni?p@;cHz-Fop81sY?Sc5b-CZbdp*(En%vD^T<+Wc|m&t|1&xxYl3m_zEUhC@| z5=YR^MK2SKbJ0JxZw!MK!~^0tPy5kEBrCrp!Y2+ElMkpd-ak_1l-o{Nra?B2FXCN= z7IcD@o(^47jmLhCIRlD37gA(pBMA#Xva#bqM*8k@v6iBsc5Dk#ct->lE2fjg#xGkY zwZRG$j!FI=mMA7~o*eiyJ<$B(JO(i9jW@og0P9RaCHtxF)QXryj;;BEGV=i)eE=c6 zg^0+V1{s|whNUy@s;Qr%f|;YWhnTN;+N2j1T)p9HJAKKEGp}g%fQymo~qZ;_sa12vzN9^R)+C3xMC$87}9T^|M{5wF;eL5WxoEPrU`%3GNz_ zeI+YxAhJ3vVHQvJ5|4Ntf9UeB6|Cwet7l>)uJVWOe~geQ+z)=KJ%=2Pn54zHBI)C5 zuAzShGH%Hcw}a7U5y-68l(a2rlCAgW-aYZ|g}=d{BXcd}=LnlWC1oR-wTjwv=skaS znV6Ta1AEs)F)Bxk-&1Iy4jej{!~7}A_V?GyR0Vtg^A}-F9VwKVZzk-<%WEU^`$F9J z&QzQEsIYc@-E6TCmrwo?$=-}KMnDdm%usWWRXV3~Bu0;v6r-nZc-&Nve+&T*U(N-P15l|BC`8H~Vn#c*dY{en-TO1-6q z=tD_7?<7(&jcs*`?OC5(I!BT@RLe?-^AAPz_)dpf#y6X@fUx1OV9W1k)m;}qaVeqq zrlEmH13$;QY97Rkx5WZDR}+01E`|Ll`>Z&qF&Ha&!zJjw*?$ETZi7=XaJ46qWU&DryzQiDry^e|PyLb;)}O7Wgcm`U>w|4)dd=Z46r@ zanzWVl&Fwx^!lkx((u3GuBsAHq#8rG#f%tm^U@L@FB9qNyg`vDB z3HOrOiE9mocP}X$@rd(eKOK`z+@G<%RUXpZB=$ zMy_1tu4SKO7vy){Xlv~+T+^w<>Uh9bt}t|EcF6dmq^jjs4uolTtDBs%FvTAEFu+-0 zy`Qy=Pwfu5-JP`DuLAm>EQrq^;}BnZcGe2ZfRZY5%FpM?snws}?_itHC*1b8=f+(O z0f6=tZM*Cje7`^1ajkkXnA_*B*mY5I{q|7#Yi;4{di)1>OkCGPMsAz5bzN6~=%(|Q zJEf>I+6Z|iUiFg4J*~y z?r{*Z>CffAsr_%GIK8o`;8c)u*67H62oP|P#d+-@hWFMZsb8!G~ z`@Gj{$R)|@(IMHl>mUU}gJWncybhAMV~ExLO*W9Psy&FlM%iL$_5m|c!=)%=Y?on8 z7bR$beILcTeq<+_N8z0A%!rKG5E$TTWWWu(ZUhSDYgc*U*i=GLyX{OvM=$D#17ZQY zT$XvhlQ_(N?M^^HaOb`-lLVtg;H?~?D-L2(j#*qMl6R*c@yk0(;-aIv%g0t3yd$^S zRP3C&F3>UD3nq+b9wd?jZ@FN1dO;>)LjeZ0ev^j@lZ-DM2zCF1wGzDZ911zPniq=c z4J>YDP-GvSo_?(FuF9Kq)&7z~`Ej=aqd4)~dwoXk#TVYld_E!N>aOkw;@ntH4u1~P zH7=FY_CE#-Ww!qE^mu9t#mM2--{$iwIraa>bmPL%VckWR23ik=2i-jNQ298ofi{Fk zL6N=m&3Mm4sp+_6`Iyyv3PbjVPC65vzaNrc^csJCt~6{5uEkHKr0^A!oQN#bjJW_+ z6CP(`Hi0R7V#z`Hlrt0xFqBxbR3Wdrc3cFa53low-4p+y2?$E~$ssQVuw>gcA0l^2 zN+&i4s+>XzNs-Lk_^=%#cBD>*-P)b{EmZ?VfZs;HVkH6c03pz+ZY_2k%_KZFC4T^f~kzB{4*{8xk z?`oU&`Y`Wr?oNUQCM5XE{wI469-`7s8mPrfkDK0XR>F(*dJ^s6) zaF4yR;h_VHtwMF#q~{UX?0?m$L{||USRwYU?o(qY3fCRM%TFnnJ`?{p@U4;VG6NL7 z0nmSQiGtAbf3OQT&i~)252fq=K^YD@;WtcrB%{g&kl zZooM4Z9;})H6++LgxVTYYM_vf$f5~P683l0lpppv<2eZ?iLayfd@{*$Ix{>F+a5-# zgZJ5N3_^Oz-jIFF4LyEgPZX!??sTOfsy3M;zzP`PG9(dD=}Q__uGzB3hn4h@uvr?IW5AVpiR%`j4hePZ`8= zOlVeAq-?8L0;fJU36t`QW&W}=I`JbYO@WCcy5(p;O6JDSnT;=vrK4IRbd=9DncYAg zqIla#FH_O8A%P4Iy51GK1+y-PJ~oYPezdf|w_=rGn~QVeVuViDzb^vqFBKB>16|z~q&<4pta|{{N681PcY7CV%fo1uLJnky=|-fPen1H#)8C zxms#r%!xfydE$HeA7OrB{d|joz3{U)tiuk25SM}H1Z97TVm@k`njU)N)Yw2?UyHvk zaowFUvpJA3I5du$=_gi{UH%*MUUaCacYzDG?G(9o{c^W$BDW3V0QHbFIxH*=pIj`8 zTbNM^^VBi8GzD&;qeq^lOEFI1+pEM>x8A?-(VyO-Qt+pgz3e%xyTW=UuKd9=ReNG& zLeJat&l!bd@Q9(?;rPs-iIi6j)JL;_OmCN?t(mGb^k#|v#M4HR2BS)C^iDiVr+~o4S^AbznQ2EBz&5-TR?J8T8{gAB~7ox#wf zJ+Ze_buZ-umKjC?uDE#-#Sw3{NfDFXrS8Zi^){7kY0}+q7s168)GEI)GZUdH^xAy{!tHqzq#GONzy~ z3*K``$#Y0o$ASL<9FbvL`Sbr0suhBmbHi3rR7fsbeH>S@ck1nWXh1+z9>6`vrjdam z)-!vs)i*Y1V49#kJ=%~dY1FR=eWZPsVROk@xRZk?QvKwHI|WnPAtH}U!4R8nU1$WM z4CjI{QQnNC7|eRqbHVpD_CiYr{&5lAlF5j+&;s&qnXGyH%Tw7mLj=VGK8oD!s_y}0 zR{ct^SmC-0Xzr;N(izS&@C2=d8? zTJC{X7gexi2s?*R-|BwKEwq!B3Uo+12qdnv8qmV%Tm0Q8azgBlp`@}ne^gS&_t1~+ z4|zrP;DeKzyG4K_4wiaPEfcW4NQ@A3P6){RBckTb-+8;gGX(ZBTP%w{ zr$Vy__mptp8s>M}L+C(BEi>2m7LTg$p7UKMicQgH5w&o1S~N>H(8(d?&Cy(~dnjhx zG(1^s7-=rLOf3=8S*99$ity{yd6{H8ZlnEZ7m{>qp0PC3Kzt(-oX>3U=K-=xKIi#~ z#&!~*b|_BjKT?)F0gJn@pQA7Vj)-gg;jxjSMH~dQdA=mdMC^o}~TG~$#j?I8tDnUQ=qPA)SP7=(jd03rWuw_7tfX0N?80V{P z^`e!cTHUO2PSCF2^Yr)H@8r&MSePZqu?c|yXgN>uWP)TeNB=u8h-`8RvgoOvvcj04 zhg#CafcsxNtA2Vf!UnUm>ik_NbdtiP2a-v|?02aq#{v}TH-O#&8Pm6-eWBNbI9{Vj zkpy9$y|Z5_?7uBj4&Q$kN^f(0d)2f-rs1CRYn4ZF?HW);(K~eequZ%h-0qOZoyzpR z9#6tNrDwrZSs7@np&2g-J4*izjvSn@?syYp{L&$4G4_V;Ccs#p z%ydNe@Z!KK$-rFkkxIajQR@KbrLXo`)1vHx>ihO|Y9h5!%YoNodKJYA4J+$*5>1pY z9F+F;>B;X7aLl&VjahBBL~G9mM%=gTGE zta!fS)F>b1&GhSE*cpEK47p=<&6sy*P zooc@AW+lI30{}S}eZC=Pt2s7wV9g)$8=#(R5JfCr_noYYbZjeKE8+;1@+p^F1nifo zpJ42>)*`(GYFPy%IkuK9szMnP%!HG4Jx_RvD|c$O(4`tN(9e}h>?CS>J43iWSH zTgF~_X^kv4S|(-*>f5L-Q)ASuZWI+523#Eq$s|=!K?TGfdiI79`1H5wAU}uX&7OGE zewat>!w)AH%UVq*evB4Mx6Tjf#HoU@vKhc7A zAGWdpMlr&NdcTf51>i9hqcVzpc>B&d%Mh9Bf6j9jMfV8j zr#*f(kf}EUpCdcIt!GL*<0c+X~`<;YNECA54a zS$)&WyCen@l%o_td~rj!gQXFmh367wvqM$458c4!$cM(VX0KE-bG*X`&6H;PMSj6a z30Z+ojc9#-PBAEK6`0+?US%&|+xxKY?VkSi_hd1HHnd*nmbirMHc;s>Ag;i+=vm0P z<@~#poA1}f?~#60KcSSUeJ<1S_m${9GE=oYLi0-eEvQQWzd%s)cpLUN{*AUuLvP3) zFU$))6r*2*Wda-SjPLtbI3u#W=wl`CkZ{r3 zGtzc8lC~euk!#ujjTr$^r9G}Z{I`5~tEG76n1$z~o$`T?I3RYFfbvVTbz*VVTh&Kf z(6dg1;E)^fpdgH=U~HFF-Tf8;7j@8m08|Pn;@Zb12p^5f$T3TI5B0Qt%&>gH#p(7^ z025tql^1o0zu3*6DI$IEo2=ak$d&PjI6*N}@2bW4tl}H}5$#*e&vTQCnLQtQr^ByO z-rgmZ&;Bj02fQ;(QHwumCS2vIyf^;81D7658R2@|m;h^_jtBIHTbOZiIVeAP5Vb?; zJq+H4J=UL4cm-b&k?i>o-OW#G!~Rh(F!>8N%T{0EZ0`v@;2OAiA)UuRKA!E?8_GeMuSwpx)o^ zjz|~j47MwJ>vTr2I~nsSZSzkZLQAy@`$Gz{A)F|*$@QA$_ELthJg448VM8ha7gfKK zpNU?nLEvZ9?ImIiM<-G9k1nbZ0xf2sr`5Q!|Gb!vINKO{UuUih6ud&OH+gcn>Ocr6 zUH=7hz2CJDoeA$B@7c5O&hhRulubmPYi#$`L{0;PY2oD#&n`6#OP@w!SH$@~bGEUQdiKDo>K zXIRvWkL&-HcIXUO%dYMLZIvo^Z2Pz12Is;K%!c^+@#K%HnFUg({t7*;wHfoDWQT3n zd+Ca0Aba%9#|pz}y<4B$%`;7g1l2O81cx-4+)kZv_}r**r7vU#sTlG{jJEEcnQm}W zAH&vZ4>ZP}75v~jv-@2;PU;{g*u`d>Wm3E6nQeYez9W|YmH{)nUhTEJCe99X)xyPd zMxr1*2S?v%-PM|zkJ9TszdJw0GHiVQB7!UnKYi`~)l;PyR|!QSA?MD_O0SU3PLXYS z+4G>vgr!(XaGICkn&+0--FL5E7BRA~R+UP;3t;PkNT-W?DsRS!ds@YM3gxF>iG8B3 z`}A8G`x<~yd(L$ci&-h^@aUGuEnT9Mcro>t4K5xj=k|F6=7sLmuC`rd8liA`Sxdjl zE9L1qo;$yMCFFv=j4*4uDKFY95|ynp)N~4!{%uD$WM-I{yqf>ypRG>MxN6P%|G>_F z(~noABPQXqs4{Jp4l->Us0TCp_T}gaP@|;YHq88XaN55@&ni`Q7;M56N=?Pt{*@TK zOV2UJg|Pq37v+?qBcDyOr_KUkNhUlXpk3`Hi2rZ~StZLVwt zDKkG7rg#& zhW1dJiruyfNq>7IPSBo1JsXFw^o7v>OQC+qz7V;2l=^Sr&)?HY{hTN^3|^dmwxF-8 zgWM-y9?skU3pnY^(SIu=v*_&+S!$9L?+;}KBOXK1Y{i+m<814Qe-ct=sAseQw$JyD z+|6^V32l6(Kw{f>;Y|T=L~QQmIHpOqTsD^#jOtarOlv6|-$HDl1i$RstzRNxH{6@F zn5(}@qA52%Wj%k@uQ9hG-uWEwL0bEY2w-PEWp>JQ^}(E0$#`bqYOnmap-X<)O;B`R zf0|2Z{uL89D+t}2I$gv7^y^XHYcG52LE!-Dk>DUsikERZ8xEf_Mx> zd>Bkt3wS?<8SPaCpqDTpfj-Gl+5g?{F8}Y&KF}SSGad z)b}+EinW0FmY?1sp?BKpAy14E|7nd}A<9iH(1o4DVDFp1^SN~XR^gPtWVSO|ZvBX^ z+EdC*y$8aDi<7_Hq^?poMk;CinREc^`g&ZcEq(3N&>wyVC0^8p3^VQ%j`}}XNR#-s zJo!@xFjro~Jj)=k+~T6T6uw4wHxkFVQ(f>|xB~_Fm2sHLlFho9E^hd13l+)g;#7%} z4Dk?9_gU3rJz|&zkDrm|A$&tjaWz_2!hO;;^8#b)DCs=m!27MDKFs;2e;A5s&$*&_ zzdi7giY-ushxA;H1$KSUPZDpwpJtLRh` zI2-!v#aQ@lrtFnemf;@(OOO!TUElneq87jjKx;$TV6OJI6}Yhsh0&PX&)t5d$r=)g z3A4F~>u$Wk1pC${rZ?9(OPA5+u~tF>yzdz>o(tq!ccJC%VAQGtFyHm1I;U{?Y0Iz@ z5H$0WG1j+>Gq~O34JMH$TVrrxt!|I^ILoE3-Dcsf3g{} zDMHiTMs_ME5f@Bp=Uiv&3{GA!ttyqV|E`KSi7SkUVv~K;u`%1^e{iz7oEmj|QEQ_~ zv$bQj-pZQ}G4e-rU3313#WU_BkkjncCvKIb#{wdt((}$ACfp;OIRzcxaq4l%8d?=? zy*OW+!u&of53;`&wcY%_UvY%~k=u?Wja*2(Ry@s}?V5E`%f5{wdbcBbP=TDREQi%9 zSj}ATPzzw#SBA1dR=+YSd|s({r01!n0$m4F(M}bGA151;WxoZjX3LReY`Zyg`#*Wc)VYVC zHz}C?&fggzU0!Lx{+}CCiYlvhP`k?E98I#=cMX z!L0Y`^SQp)bzk>iaR21-@Dt~8p2zWizhBSS>mbNJ;CJp_isyAu2)5@^pkDr&X$W!l zEOk@}7D2{QOiJ>CqYum#ay}Ze$$yY^FbXbOqzx7|;|sd_fj+1wJ@0*3yxGae`jPD+ z_MC{^PIX@|cYE}yM;Lv8$t_l12mE|jG)8E;o)(Z)E~r`g2(r5{4%^5|=YIrCcch7J zQ;cg^r|qqVtV+wb(Hh?z*)@%J4A2O1YF~V~8Iyj6=1sL_`0jGjOV`U6&;4qbOSip` zxcKea>B(3koOgJkz5J={Qj2waS$l~#h@{z}IUS8#zjggT(#h-V{d+Zxk^gp8RjX~X4x2824p5-2PCdK9h z0cK$X$UH6N#REs6gjcyowV*ryiy}zn<6WOlmPl#t%a9b}#k?T?D0x$bwwBRsS_)JDLGPx$(qtxe1OI}$XTu` z)0~+rd8yi79=p~{A*qpN68Me3*}Hjx!m%YZ_e&URL?Q~yGySlYM%>t)M#Af9Tqn%e zpp*ebh|glm$`bjfeBT0YajqyQulx%bG@4yqgO_Nz{72oEt7bowV*lA#($5~~FQePb zp9KG{RnB_VSXsm>r)eeX-5|H|*NdCCjZgTt?S3JeMbV0vI%)mx{J5x=7oyC?DCF7i zIEPIP{S>!ehCavL7P}$Iq99idEwCGY49=;IQBEGUCjqqEk zkoljOz;}&-?;5IR7Z;Adf5BYD{qncvB=JZyE3_${Yk###c?~=uu}E#57xb>fE;NSz z`S&3MlP%{DSu@nq>&q>&E$nH~LuE*_{s1;>!MfaU%R@k0y71d=ix#=Ta7}?4Zu_Bb z-L2+w1*d?c3)iH+pgBt#d!--xFr5D*=pG;v2d2M4^C8$p;&GU)(r&#nqh6-0 zEqAfX82VM5brhh*7DqmMD$#a2X1pG#{)I9>EWmZTnSRg${KUJlQ?wh~pz;R*_$d_UM5wo~&ji!j_KgltSvsXQv zrF&x?C=BPXT#6}^zsiQCjXho==&R<$K$r$(TbMgx_pJe;@Z1pXoXh-U=4)2?fuLu~ zYK(QgLB0_cj7|X0k~t{bAJpeUv6>i2M*&R%8`TOxLhpzkPML05yS#buckiNF&B4&7 z(?TI?j26Zc=5MiW!BL5p{bGl%=8E%JtcF0PM?mhwDl|~%`y4uWjOdK&K*P{SIYhOk zPw>25bS0+V?tX~IeNg&jCh6k=Ln#AG(j7nWC;sZB4Y={m_~+kSZEnzBRx>KI+z;1S zWchf1+B&j1#Fc#en)LhcS}LWRbnX(m#{bH#6Nt07Is5s4DczWHIyXyzQTpGN2At>b9N9dI35N}VuDXzsYtVlhBDchU-uKMMR|layaR(4C)4tklI#sVr zw#A|Y%OSMrbN^W5b144D8vn-4mp+GEEvW*r9;Ah+0-W)Y@IYx(&NjpP9CNp<3;$Z< zF^)!3< zSc~1@b0#&Oxh?N;^pCcCp%_KHHTlzE!g{_{HlBN0CyNb;E6AY*JMqX1`X{kB?D=&g z_@Vwi=QCO)8s>|@e$-2kYF6%W>*H^PwK{^dIQ*9Byx{iJ*lsYJ3$-=1#jx7C%V%_X zF!dqtKVHjxFTP;2ho)4k?>b^zXf~?Fn`^`^<`Nh0Uo(ej8`3Pgb5%*@jIF(I-uksj zU(WN851v#bvIaJ;UJ{RW*c&&Kbq~vCHUYa2@9?)Yrw)qmrVd(uU`jg(`y}QG3f;}@ z#bu_jar5_ox#t6fFG6A2r>o2bL6dGpSbUqj0csz+~CF5)12zrvFxLLDf&D8A7c zwCk!Rm$PQj`#au$_&M*KWTGZspFBlcmmlUn%)gHjJX4v@+I=VkV_(f4U;KYlN#iW{ z3pw?~OM|WzXsnCqVY z^F&(cK11+H5J&&Tpt@!a&}Ut$G>QYcHjuLwwQ)|1oOwq|r|a%~VXut^WNG#4AyqWy zSGiZ(S(YvXgK%ON7uk{Wg z4#IeglcS7vTZ_IUCnS{Xsws!fqDa5w!d=uU&BDVEy{Eboy9sFVAqr0e&fU*%8jE;3 zi_i^>MNA4o4Ml!yDt62*;WuB0=0BsE6maG&b9SOWh`$Mzwokjb?V``-Y@OrG#a;r0 zcEDJu`s;>i^~9W$X?bP>9ZZ(&;)lFcYEZM5oWWfOZ7dDD%}g0XKgToN-Y-$6A(m*; zOI|TyDO^7%OYbK+`;rQ$D)KTd%S-~hUQ6d(zLF+$KcGy^-whhX`}x*o#1TKiG&5Jg z-$t$A|yD%WUkh?FhPq^1DCcm?r$jRkp&I$YMe4c>84hrwAjiVNX7 z6nh3m{@0Z2j?6NyB2|)m`D_geQ-AXSQfaU1@h6(^$$t>zSmlsqlH4)6mOTC~2ETI! zy5*3X?p_r42Qk56*4B3hnCZ=(_R^q1%v}`jCGTbG^xmA5n_J&z;Neo5lr74PUHydi zbyYuk6jbvm`QEDisR$nyWYJ6!Bq7(6ImOsSbI8yW00gMr;^@`vjisJnxE4*FPiv^e zs+bI^Karf47h=Z=2$`}2<3C!53)C2<5x!Y*26G^>h0au^iCy%9cUUS^(Tb74+aDqk zP3NFEGV~L)+h*+9*nh}Gl;KkIKnKM13L z+0pg5%R@Nv=4+|DSQ}-V%SWTY8H&aT&p^TNajO4zK>x^1Z~C8QyG3Ss)&#GY+>yP^ zUtdeQqL+F!VW=UZDlq|nD{2huJ%acNoWUGDMEGCCJMxZK)<8;spFV$hpp4`M)XhHW z445qcFodA0{8()Dn^7WW;3)rX=-z{8p)8xCYiPAmf}FTG-``>`Q(y2lP)X9SbDRh` zU80!xt&;GilfOZ&RP&-+_R&P%i=#k@fxNTb6h9?X6UA~EbG7pga7=5H+b?sjx*=tb z(x!20!hFjVqb1l8ab5zH2JFGs)sDnzrqlS@NC4d@6Kh}%`{@{nyMaL;%)?SGAQz>B>@QY3Z>ff2_{k6M-+uu``m1-* zFH0m7!eT#*IFYMp1I?30S}yVYo#f^F-K}~dRMYzA7~j$2Sf)Q1k^EQR}YCxG_yOME&f5uJo~Idf(2H7U7(`=#D8w* z=@;rb78*tww$GJr`WfM0OLP3p;(ub^-3|@Ys&>Qa5ePKO2oD*}QL;clA!LRM+xJ_7798u|&W- z1grbuWZ3l@H`Ui$o~|vyy1d#e@>4qfiSOgXrPX$ao~{vi(C0{0AXzrkG%tk_L!SSE z-Y4qLp!fYyzrz$Z4ja!R_%KiUPl~$UV6JLmFi$%6MdjWr6vlAQvclv(sBxX&-YdCP z++p!`O7q0#dk=xhp=V!Xq^+iZnQ=K$O}xDK^bghj5~1_l#jc*zbW0rpnr!1#QVcS{ z6yf{>T^}NAH*1~ z_a9{Yq`#^mSs+}aLLQr6%^pkD&|{hkBA_+cX%!P4I9Y4!=`Ne&muN zswpbH1{wM=*kW+1d4*40ex9bEY0f2_I=#|z7%VolSqbluxQ|zxuR4g-zG_wKH!|4* zReq!hxZD8UEKO^1o)!RWlz0juscjf?nZqy1!F87=k*)HSn@OPF=Qr&*3pr&aM#cmE zlGT7zs}?}M>(QY6bT`y&k;SwR&0t1j&EESeVzTz}r7NLqbt(t3tG{jzi0py@wx;P*YtvG2(cI{p z{x1rN`859z@^0`y$a~xw@_wtPjk^`r51zQfRt-Z-Bf5tuwe zIoXOzWqx>$ge=GNSmM(&3TIULb!}Mw)LT5R-6kA-mE^&!M1M$ILdPV*pL>ztk$O+z z*$)QDUpTKYNGPwPl2gx|B7i>og>hj3P^KKxp3N?weO6y&_X&ZbErjnq08L+)6c%!B zY0aq%81(!*$-g&?=>M#E>0t0ZNvipZlQgPx>eub1e{uTbYlEJ7cjbP}Q_x@zT{skh z52G}jmP=w+DV>LZe~Kwk!w+68t=eSmqO8Q0dsAkR2Mtty-VW(mFenc= zG_sD^t^6289Pyepgk44|aUhLF+v@j*nYiTQ{c83=pn+{7su7jCbW zA}?hHU3m3J{`|xpeEoKVy4Un*2I~rHFE6!6N7qE>pq?=SF<>~SFZsta-epOw_|}@= zUPW{d4nB)LZp(*db9rn|WE0a*G7!RSh$Xw(lIfyTb@i=Qz8O-K^g=>;=euLwjD+ao z!C?~96#2X56j5DwntZbeWulKDGPL<1^sBeEqQBq~%X|Ci`77Ir44fYF|xNsK73>C*OA z$HwpvJfpPr%rzP2eeRjg6z-K{FUQPe4w&B?nsDfExzaGQ|Njc}b4iMsNaU%wmTAW6 zhbVfoMyI|0LfOs?yS!O>F_Xq=HC-tQoi*(W!2GlW#q*JW-P%aSTIi~VLov8PM$^`) zt!iQk6i!-l+3e<@sF*Fbh_*O|c`V$s-1pu}h8yiw?3XyoXL`hc$CCdZkxgfyjHSmJ zzM2W-B?X9{eTZ|(cox=Ueu4Z<6+5R}W2-&2*R3VO=~(V{(&7{#k_fi5B<}1)kxZwK z#o+q>K1&QMA|+mX*{dWJj=@oM6nP|{Xr(>1(5)rLXCOpW2h!L14*TWS;u1l7AQ5ii{`(23^2%i*=&7fOW_3_>u6YgHT;70+gNo z4_E++fMzZ%PcD{u;v&Fa393{NgZ1t)-yzak>Gg(ED)GUfpI6xUEUuoc+@tIK^21;J za)$e`(B`ky5A;t1p6(t_WfDDnmp_$Hy)sl`92d(t3Ea;PLBFc&wh~b4{4zsctKoU> z4qTV>qf8LSSPIn4?Lq=#CoU%3o0*nDbRWTsfrfnWK^h*3B?wMHZL3LF&h%W` zI)L2NNl<;$$>J;*zN_-=$S7bm_=IPEDGfQKc)_#ZO8>s+5Cb&Xrp-QH8fO6cY}s7n zU6kM68ew7`6i~P^)Ta^_{mb&&Uze<2@k!?l+Q3(=T=D^Ke70Ur;}lv2GuW0^aLG#Z z8LmnF>UD0bxG9fSSf!X#Qw){Sy0Q!#rF;|*+G#mUKT1Mrn(^w$e3_XXqdk;+y_#oz zC{1@AxJ>d_lk;StDu)uQ!mhr_aPv%*$}Y%e<^j~X_x@5j!}O}K2y1>{#i-{=6)ACYVdKoSpjWUtX8-zm*wY4YAS*Ix?y!2F-0*53kdfrnyVC=M z5)jGtJ0$b=LQ6c9xZc_2UVA);?`da)8=36KB@0v)8j+TId%N>9_Dhptx11jlkpn

df_K}lNDe&$5&>kIXjR#5}$As}syxm27=Y$vy|pP$tNvJ$X&aB>=oEw{@#pw-Cm5 z_DQ3{vVV0YhqYICGhRa5h#T9h}IMi{JJQV8qyydTgWwv-pN zDhRHV?%HyQQJW*>ve$pz+6C zfJEj@!=vvCimGwlEn=7f5?~I@NAp7dE*L91F@stXm3z&>U6mhZKE*oc3kooD z-U`3qwBWoRP-EUHF3LsN1+r%3SNSpL@A2pZZ-u8^`H&TNS4*frP=i*7rfq~%M<2DC z%Pj7;Fao3ni3Qro%7Dn<>n?l`b1)`BJ=%_uzaE=0O<#9q)oqWr;@tjXnwC7-CPRmqoq~5)c zKx`?j!grOZrf?k_?KfDqQr;^nf+mxWd(u7TbQBM>n34oJp9;c&nEQkmn%+B61kVMJAf}~Mhguz(b;qb7Fe1K33MG%)uIrrh#-ROI9(!wV9oGeSzw&C8ydoJxn>(4NXqZz*$*#@+;oU@UB0Vl1h9CYxtH%uDaWcLHrzJ_yMH( zFN2mE8vr3eWiY{&i3YS)YeKqOd3TvS=@ONn{$Yo%XpiDDj8)qtzh(5Szd_&GM{l+xZh-I z@A!-z)YoT|#~};Qb=RL@Foh$D?BYYCCv`UmlrbP>7oUNsvlVkW1uG8xH<2-qI_ z@JEYZFTG#rHoK3aE^^<{!2dL&pm!aGP}O2FiTV+czpd$WihAqgMX0vSj+7EbH9p2X zv?MZBB@3~+VM5-o|5Eglf97?=zeNTvfN$8fw5+jGthX!Xm+78ZVMFBm?xfwlQM!nO zo$M@Mkv}u>NKc z5r?+xE$W4n`we?7W>JnmjA4Esrq>h)b@9HcwZ!VwUKZFZJfUxIg@pg>)7AlVc>m)L zMomGUaG>=cHiABt+(`OJQI|pr43q}8^{E5QX~4}B3x#4qB>}TEo&>(OSibA_{s+yDzQ%8U`znQgFdk*WOhKak z2sEn?YwVTPcmfz>K0uskV7Q`A+4(>yjN0`OC>wmI;IA9(r~2ncZkz_7C5GRO3#CqGbvc1sVv?WQW!MCfTs(um5z? z(G^nm{p!cXuZAE*B(mWbJqOV!RYnHxCLs-K=q)@HH$-a*mTC6q0!ok8xmIJ6*%6FP z2^8|mwSU7mL55@dNdH)qbZLDJ-c6*>*4qdeSAzB&F24t4nXpfum8cbO366n7-dqv*&8sNS^d5*)AJs zwCYw^_*3z~i3W9|#+H2C=;e?A+`$7EdG<2F?zvSJ5#~G*i|cu~K|F`%deL}Jfs}N= zah`x5*Bund&)5~a_P8?!ix^5>UYA)vdhW_)s=l)RoqgL*_4aq)!@`KxT9r#q8m?Qo znEW)P?BAl5_f+ujPoLD28<$y1L_)cp3pcH_Yu7p9g80U59kY&Oq>D+@E`H^Nk8x`X zM*LOK>x~=ds($NWr&IBs%Lab34C$%0@|7+8Y<{eOd@;9Ib~gxV^h!VE2Y<{YnN$lG zK%Um{)z=k%vHkFI0*|DI#LU+7E5GdXA~?=Z7f|!5|(Z9P>~K zd1aQ23)gc66Zau7Nj`PsrnCHr7%UP~5+y!G{uU~$-R|^t@7EF{3ic!A>Vabv%0A+% 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 z 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 From a1532cd5ad443c72503095c9b2d3886eb66d0148 Mon Sep 17 00:00:00 2001 From: DogEZ Date: Sun, 12 Apr 2026 16:03:06 +0800 Subject: [PATCH 10/14] feat: add CLAUDE_CODE_PROMPTS_KNOWLEDGE_DATE env override for knowledge cutoff date --- src/constants/prompts.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/constants/prompts.ts b/src/constants/prompts.ts index 01812d46..8c3bc353 100644 --- a/src/constants/prompts.ts +++ b/src/constants/prompts.ts @@ -712,6 +712,11 @@ export async function computeSimpleEnvInfo( // @[MODEL LAUNCH]: Add a knowledge cutoff date for the new model. function getKnowledgeCutoff(modelId: string): string | null { const canonical = getCanonicalName(modelId) + // Allow environment variable override: CLAUDE_CODE_PROMPTS_KNOWLEDGE_DATE + const customDate = process.env.CLAUDE_CODE_PROMPTS_KNOWLEDGE_DATE?.trim() + if (customDate) { + return customDate + } if (canonical.includes('claude-sonnet-4-6')) { return 'August 2025' } else if (canonical.includes('claude-opus-4-6')) { From edd139f7e2c0f9689a7558fbdf59b155627e1e86 Mon Sep 17 00:00:00 2001 From: DogEZ Date: Fri, 24 Apr 2026 09:05:40 +0800 Subject: [PATCH 11/14] feat: add unified OpenAI-compatible responses shim support --- README.md | 41 ++++- src/services/api/openaiShim.ts | 235 +++++++++++++++++++++++++---- src/services/api/providerConfig.ts | 64 +++++++- 3 files changed, 296 insertions(+), 44 deletions(-) diff --git a/README.md b/README.md index 07981f20..de25ac8d 100644 --- a/README.md +++ b/README.md @@ -31,9 +31,9 @@ Eliminates all tracking and remote-control mechanisms present in the original Cl - No fingerprinting – No user or environment identification - No auto-updates – No remote version control or forced updates -### 2. OpenAI Chat Completions API support +### 2. OpenAI-compatible API support -Added an API shim layer (`src/services/api/openaiShim.ts`) transparently translates between Anthropic message format and OpenAI Chat Completions format. All Claude Code tools (bash, file read/write, grep, glob, agents, MCP, etc.) work normally —— only the underlying LLM changes. +Added an API shim layer (`src/services/api/openaiShim.ts`) transparently translates between Anthropic message format and OpenAI-compatible APIs. It supports both Chat Completions and the newer Responses API, so all Claude Code tools (bash, file read/write, grep, glob, agents, MCP, etc.) keep working while you swap in a different backend LLM. ### 3. Security-prompt guardrails removed @@ -86,7 +86,7 @@ This will check your system, install Bun if needed, clone the repo, build the bi - [Bun](https://bun.sh) >= 1.3.11 - macOS or Linux (Windows via WSL) -- An API key ([Anthropic Messages](#anthropic-messages-api) or [OpenAI Completions](#openai-chat-completions-api)) +- An API key ([Anthropic Messages](#anthropic-messages-api) or [OpenAI-compatible APIs](#openai-compatible-apis)) ```bash # Install Bun if you don't have it @@ -218,13 +218,13 @@ src/ | Schema validation | Zod v4 | | Code search | ripgrep (bundled) | | Protocols | MCP, LSP | -| API | Anthropic Messages API / OpenAI Chat Completions API | +| API | Anthropic Messages API / OpenAI-compatible APIs | --- ## API Configuration -Claudium supports both **Anthropic Messages API** (natively) and **OpenAI Chat Completions APIs** (including OpenAI, OpenRouter, DeepSeek, LLaMa.CPP, Ollama, LM Studio, Together AI, Groq, Mistral, Azure OpenAI, and more). +Claudium supports both **Anthropic Messages API** (natively) and **OpenAI-compatible APIs**. The shim can use either Chat Completions or the newer Responses API depending on the provider and model you configure. ### Anthropic Messages API @@ -234,9 +234,9 @@ Use the official Anthropic Messages API with your Anthropic API key. export ANTHROPIC_API_KEY="sk-ant-..." ``` -### OpenAI Chat Completions API +### OpenAI-compatible APIs -Enable OpenAI Chat Completions API mode and configure your preferred provider: +Enable OpenAI-compatible mode and configure your preferred provider: ```bash export CLAUDE_CODE_USE_OPENAI=1 @@ -249,19 +249,44 @@ export CLAUDE_CODE_USE_OPENAI=1 | `OPENAI_API_KEY` | API key (required for cloud APIs, optional for local models) | | `OPENAI_BASE_URL` | API base URL (default: `https://api.openai.com/v1`) | | `OPENAI_MODEL` | Model ID (default: `gpt-4o`) | +| `OPENAI_API_MODE` | Force transport selection: `chat_completions` or `responses` | | `CLAUDE_CODE_MAX_CONTEXT_TOKENS` | Override max context window size | | `CLAUDE_CODE_SUMMARY_OUTPUT_TOKENS` | Override token limit for summarized context | | `CLAUDE_CODE_AUTO_COMPACT_BUFFER_TOKENS` | Override auto-compact buffer size | **Autocompact buffer** = `CLAUDE_CODE_SUMMARY_OUTPUT_TOKENS` + `CLAUDE_CODE_AUTO_COMPACT_BUFFER_TOKENS` +#### Transport selection + +- Codex aliases such as `codexplan` and `codexspark` also use the unified Responses transport, but through the ChatGPT Codex auth/backend path. +- Other OpenAI-compatible backends stay on Chat Completions by default for maximum compatibility unless you explicitly select Responses. +- Official OpenAI requests that include reasoning still use the Responses API. +- Set `OPENAI_API_MODE=responses` to force `/responses` on providers that support it, or `OPENAI_API_MODE=chat_completions` to force the legacy path. + #### Provider Examples -**OpenAI:** +**OpenAI (Responses API, explicit):** +```bash +export CLAUDE_CODE_USE_OPENAI=1 +export OPENAI_API_KEY=sk-... +export OPENAI_MODEL=gpt-5.4 +export OPENAI_API_MODE=responses +``` + +**OpenAI ChatGPT ** ```bash export CLAUDE_CODE_USE_OPENAI=1 export OPENAI_API_KEY=sk-... export OPENAI_MODEL=gpt-4o +export OPENAI_API_MODE=chat_completions +``` + +**OpenAI ChatGPT Codex:** +```bash +export CLAUDE_CODE_USE_OPENAI=1 +export CODEX_API_KEY=eyJ... +export CHATGPT_ACCOUNT_ID=account_... +export OPENAI_MODEL=codexplan ``` **OpenRouter:** diff --git a/src/services/api/openaiShim.ts b/src/services/api/openaiShim.ts index 53cc9bee..00757649 100644 --- a/src/services/api/openaiShim.ts +++ b/src/services/api/openaiShim.ts @@ -2,24 +2,28 @@ * OpenAI-compatible API shim for Claude Code. * * Translates Anthropic SDK calls (anthropic.beta.messages.create) into - * OpenAI-compatible chat completion requests and streams back events - * in the Anthropic streaming format so the rest of the codebase is unaware. + * OpenAI-compatible requests and streams back events in the Anthropic + * streaming format so the rest of the codebase is unaware. * - * Supports: OpenAI, Azure OpenAI, Ollama, LM Studio, OpenRouter, - * Together, Groq, Fireworks, DeepSeek, Mistral, and any OpenAI-compatible API. + * Supports both Chat Completions and the newer Responses API for OpenAI, + * Azure OpenAI, Ollama, LM Studio, OpenRouter, Together, Groq, Fireworks, + * DeepSeek, Mistral, ChatGPT Codex aliases, and other OpenAI-compatible APIs. * * Environment variables: * CLAUDE_CODE_USE_OPENAI=1 — enable this provider * OPENAI_API_KEY=sk-... — API key (optional for local models) * OPENAI_BASE_URL=http://... — base URL (default: https://api.openai.com/v1) - * OPENAI_MODEL=gpt-4o — default model override + * OPENAI_MODEL=gpt-4o — default model override + * OPENAI_API_MODE=chat_completions|responses — force the transport mode * CODEX_API_KEY / ~/.codex/auth.json — Codex auth for codexplan/codexspark */ import { codexStreamToAnthropic, collectCodexCompletedResponse, + convertAnthropicMessagesToResponsesInput, convertCodexResponseToAnthropicMessage, + convertToolsToResponsesTools, performCodexRequest, type AnthropicStreamEvent, type AnthropicUsage, @@ -61,6 +65,15 @@ interface OpenAITool { } } +type ResponsesToolChoice = + | 'auto' + | 'required' + | 'none' + | { + type: 'function' + name: string + } + function convertSystemPrompt( system: unknown, ): string { @@ -281,6 +294,108 @@ function convertTools( }) } +function convertResponsesToolChoice( + toolChoice: unknown, +): ResponsesToolChoice | undefined { + const choice = toolChoice as { type?: string; name?: string } | undefined + if (!choice?.type) return undefined + if (choice.type === 'auto') return 'auto' + if (choice.type === 'any') return 'required' + if (choice.type === 'none') return 'none' + if (choice.type === 'tool' && choice.name) { + return { + type: 'function', + name: choice.name, + } + } + return undefined +} + +function shouldOmitSamplingParamsForResponses(model: string): boolean { + const normalized = model.toLowerCase() + return ( + normalized.includes('gpt') || + normalized.includes('codex') || + /^o\d/.test(normalized) + ) +} + +function buildResponsesRequestBody( + request: ReturnType, + params: ShimCreateParams, +): Record { + const input = convertAnthropicMessagesToResponsesInput( + params.messages as Array<{ + role?: string + message?: { role?: string; content?: unknown } + content?: unknown + }>, + ) + const body: Record = { + model: request.resolvedModel, + input: + input.length > 0 + ? input + : [ + { + type: 'message', + role: 'user', + content: [{ type: 'input_text', text: '' }], + }, + ], + store: false, + stream: true, + } + + const instructions = convertSystemPrompt(params.system) + if (instructions) { + body.instructions = instructions + } + + if (params.max_tokens > 0) { + body.max_output_tokens = params.max_tokens + } + + const toolChoice = convertResponsesToolChoice(params.tool_choice) + if (toolChoice) { + body.tool_choice = toolChoice + } + + if (params.tools && params.tools.length > 0) { + const convertedTools = convertToolsToResponsesTools( + params.tools as Array<{ + name?: string + description?: string + input_schema?: Record + }>, + ) + if (convertedTools.length > 0) { + body.tools = convertedTools + body.parallel_tool_calls = true + body.tool_choice ??= 'auto' + } + } + + if (request.reasoning) { + body.reasoning = request.reasoning + } + + if (params.metadata !== undefined) { + body.metadata = params.metadata + } + + if (!shouldOmitSamplingParamsForResponses(request.resolvedModel)) { + if (params.temperature !== undefined) { + body.temperature = params.temperature + } + if (params.top_p !== undefined) { + body.top_p = params.top_p + } + } + + return body +} + // --------------------------------------------------------------------------- // Streaming: OpenAI SSE → Anthropic stream events // --------------------------------------------------------------------------- @@ -563,16 +678,17 @@ class OpenAIShimMessages { const promise = (async () => { const request = resolveProviderRequest({ model: params.model }) const response = await self._doRequest(request, params, options) + const usesResponsesTransport = request.transport === 'responses' if (params.stream) { return new OpenAIShimStream( - request.transport === 'codex_responses' + usesResponsesTransport ? codexStreamToAnthropic(response, request.resolvedModel) : openaiStreamToAnthropic(response, request.resolvedModel), ) } - if (request.transport === 'codex_responses') { + if (usesResponsesTransport) { const data = await collectCodexCompletedResponse(response) return convertCodexResponseToAnthropicMessage( data, @@ -602,37 +718,94 @@ class OpenAIShimMessages { params: ShimCreateParams, options?: { signal?: AbortSignal; headers?: Record }, ): Promise { - if (request.transport === 'codex_responses') { - const credentials = resolveCodexApiCredentials() - if (!credentials.apiKey) { - const authHint = credentials.authPath - ? ` or place a Codex auth.json at ${credentials.authPath}` - : '' - throw new Error( - `Codex auth is required for ${request.requestedModel}. Set CODEX_API_KEY${authHint}.`, - ) - } - if (!credentials.accountId) { - throw new Error( - 'Codex auth is missing chatgpt_account_id. Re-login with the Codex CLI or set CHATGPT_ACCOUNT_ID/CODEX_ACCOUNT_ID.', - ) + if (request.transport === 'responses') { + if (request.backend === 'codex') { + const credentials = resolveCodexApiCredentials() + if (!credentials.apiKey) { + const authHint = credentials.authPath + ? ` or place a Codex auth.json at ${credentials.authPath}` + : '' + throw new Error( + `Codex auth is required for ${request.requestedModel}. Set CODEX_API_KEY${authHint}.`, + ) + } + if (!credentials.accountId) { + throw new Error( + 'Codex auth is missing chatgpt_account_id. Re-login with the Codex CLI or set CHATGPT_ACCOUNT_ID/CODEX_ACCOUNT_ID.', + ) + } + + return performCodexRequest({ + request, + credentials, + params, + defaultHeaders: { + ...this.defaultHeaders, + ...(options?.headers ?? {}), + }, + signal: options?.signal, + }) } - return performCodexRequest({ - request, - credentials, - params, - defaultHeaders: { - ...this.defaultHeaders, - ...(options?.headers ?? {}), - }, - signal: options?.signal, - }) + return this._doResponsesRequest(request, params, options) } return this._doOpenAIRequest(request, params, options) } + private async _doResponsesRequest( + request: ReturnType, + params: ShimCreateParams, + options?: { signal?: AbortSignal; headers?: Record }, + ): Promise { + const body = buildResponsesRequestBody(request, params) + const headers: Record = { + 'Content-Type': 'application/json', + ...this.defaultHeaders, + ...(options?.headers ?? {}), + } + + const apiKey = process.env.OPENAI_API_KEY ?? '' + const isAzure = /cognitiveservices\.azure\.com|openai\.azure\.com/.test(request.baseUrl) + + if (apiKey) { + if (isAzure) { + headers['api-key'] = apiKey + } else { + headers.Authorization = `Bearer ${apiKey}` + } + } + + let responsesUrl: string + if (isAzure) { + const apiVersion = process.env.AZURE_OPENAI_API_VERSION ?? '2025-03-01-preview' + const deployment = request.resolvedModel ?? process.env.OPENAI_MODEL ?? 'gpt-4o' + if (/\/deployments\//i.test(request.baseUrl)) { + const base = request.baseUrl.replace(/\/+$/, '') + responsesUrl = `${base}/responses?api-version=${apiVersion}` + } else { + const base = request.baseUrl.replace(/\/(openai\/)?v1\/?$/, '').replace(/\/+$/, '') + responsesUrl = `${base}/openai/deployments/${deployment}/responses?api-version=${apiVersion}` + } + } else { + responsesUrl = `${request.baseUrl}/responses` + } + + const response = await fetch(responsesUrl, { + method: 'POST', + headers, + body: JSON.stringify(body), + signal: options?.signal, + }) + + if (!response.ok) { + const errorBody = await response.text().catch(() => 'unknown error') + throw new Error(`OpenAI Responses API error ${response.status}: ${errorBody}`) + } + + return response + } + private async _doOpenAIRequest( request: ReturnType, params: ShimCreateParams, diff --git a/src/services/api/providerConfig.ts b/src/services/api/providerConfig.ts index b197d785..d1036f9b 100644 --- a/src/services/api/providerConfig.ts +++ b/src/services/api/providerConfig.ts @@ -24,10 +24,13 @@ const CODEX_ALIAS_MODELS: Record< type CodexAlias = keyof typeof CODEX_ALIAS_MODELS type ReasoningEffort = 'low' | 'medium' | 'high' -export type ProviderTransport = 'chat_completions' | 'codex_responses' +export type ProviderTransport = 'chat_completions' | 'responses' + +export type ProviderBackend = 'openai' | 'codex' export type ResolvedProviderRequest = { transport: ProviderTransport + backend: ProviderBackend requestedModel: string resolvedModel: string baseUrl: string @@ -171,6 +174,47 @@ export function isCodexBaseUrl(baseUrl: string | undefined): boolean { } } +function isOfficialOpenAIBaseUrl(baseUrl: string | undefined): boolean { + const candidate = baseUrl ?? DEFAULT_OPENAI_BASE_URL + try { + return new URL(candidate).hostname === 'api.openai.com' + } catch { + return false + } +} + +function getConfiguredOpenAITransport( + env: NodeJS.ProcessEnv = process.env, +): Extract | undefined { + const explicitMode = asTrimmedString(env.OPENAI_API_MODE)?.toLowerCase() + if (explicitMode === 'chat_completions' || explicitMode === 'responses') { + return explicitMode + } + + return undefined +} + +function shouldUseOpenAIResponsesApi(options: { + baseUrl?: string + descriptor: ModelDescriptor + env?: NodeJS.ProcessEnv +}): boolean { + const configuredTransport = getConfiguredOpenAITransport(options.env) + if (configuredTransport) { + return configuredTransport === 'responses' + } + + if (!isOfficialOpenAIBaseUrl(options.baseUrl)) { + return false + } + + if (options.descriptor.reasoning) { + return true + } + + return false +} + export function resolveProviderRequest(options?: { model?: string baseUrl?: string @@ -187,18 +231,28 @@ export function resolveProviderRequest(options?: { process.env.OPENAI_BASE_URL ?? process.env.OPENAI_API_BASE ?? undefined - const transport: ProviderTransport = + const backend: ProviderBackend = isCodexAlias(requestedModel) || isCodexBaseUrl(rawBaseUrl) - ? 'codex_responses' - : 'chat_completions' + ? 'codex' + : 'openai' + const transport: ProviderTransport = + backend === 'codex' + ? 'responses' + : shouldUseOpenAIResponsesApi({ + baseUrl: rawBaseUrl, + descriptor, + }) + ? 'responses' + : 'chat_completions' return { transport, + backend, requestedModel, resolvedModel: descriptor.baseModel, baseUrl: (rawBaseUrl ?? - (transport === 'codex_responses' + (backend === 'codex' ? DEFAULT_CODEX_BASE_URL : DEFAULT_OPENAI_BASE_URL) ).replace(/\/+$/, ''), From 375d9cdb498cc70fe2b7a8faa30f282d971eef61 Mon Sep 17 00:00:00 2001 From: DogEZ Date: Fri, 24 Apr 2026 12:28:30 +0800 Subject: [PATCH 12/14] fix: do not default to gpt-4o-mini for Haiku --- src/utils/model/model.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/utils/model/model.ts b/src/utils/model/model.ts index 2c3a5a30..8fe7a177 100644 --- a/src/utils/model/model.ts +++ b/src/utils/model/model.ts @@ -35,9 +35,10 @@ export type ModelSetting = ModelName | ModelAlias | null export function getSmallFastModel(): ModelName { if (process.env.ANTHROPIC_SMALL_FAST_MODEL) return process.env.ANTHROPIC_SMALL_FAST_MODEL - // For OpenAI provider, use OPENAI_MODEL or a sensible default + // For OpenAI provider, honor an explicit OPENAI_MODEL first; otherwise fall + // back to the Haiku default chain so ANTHROPIC_DEFAULT_HAIKU_MODEL also works. if (getAPIProvider() === 'openai') { - return process.env.OPENAI_MODEL || 'gpt-4o-mini' + return process.env.OPENAI_MODEL || getDefaultHaikuModel() } return getDefaultHaikuModel() } From 21948fd48421a414639c1a04c41680a88ceff806 Mon Sep 17 00:00:00 2001 From: DogEZ Date: Fri, 24 Apr 2026 12:35:25 +0800 Subject: [PATCH 13/14] docs: document OpenAI alias model overrides --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index de25ac8d..978bbcfa 100644 --- a/README.md +++ b/README.md @@ -250,12 +250,17 @@ export CLAUDE_CODE_USE_OPENAI=1 | `OPENAI_BASE_URL` | API base URL (default: `https://api.openai.com/v1`) | | `OPENAI_MODEL` | Model ID (default: `gpt-4o`) | | `OPENAI_API_MODE` | Force transport selection: `chat_completions` or `responses` | +| `ANTHROPIC_DEFAULT_OPUS_MODEL` | Override which concrete model the `opus` alias resolves to | +| `ANTHROPIC_DEFAULT_SONNET_MODEL` | Override which concrete model the `sonnet` alias resolves to | +| `ANTHROPIC_DEFAULT_HAIKU_MODEL` | Override which concrete model the `haiku` alias resolves to | | `CLAUDE_CODE_MAX_CONTEXT_TOKENS` | Override max context window size | | `CLAUDE_CODE_SUMMARY_OUTPUT_TOKENS` | Override token limit for summarized context | | `CLAUDE_CODE_AUTO_COMPACT_BUFFER_TOKENS` | Override auto-compact buffer size | **Autocompact buffer** = `CLAUDE_CODE_SUMMARY_OUTPUT_TOKENS` + `CLAUDE_CODE_AUTO_COMPACT_BUFFER_TOKENS` +Use `OPENAI_MODEL` when you want to pin the whole session to one exact model. Use `ANTHROPIC_DEFAULT_OPUS_MODEL`, `ANTHROPIC_DEFAULT_SONNET_MODEL`, and `ANTHROPIC_DEFAULT_HAIKU_MODEL` when you want aliases such as `opus`, `sonnet`, and `haiku` to resolve to your own provider-specific model IDs. + #### Transport selection - Codex aliases such as `codexplan` and `codexspark` also use the unified Responses transport, but through the ChatGPT Codex auth/backend path. From 6ded9a52543910a8559b08ddfedd6b198790f125 Mon Sep 17 00:00:00 2001 From: szh1118 Date: Mon, 27 Apr 2026 01:01:30 +0800 Subject: [PATCH 14/14] feat: add adaptive memory pressure advisor to prevent madvise() storms - Added src/utils/memoryPressureAdvisor.ts: adaptive memory monitoring with 3-state machine - Modified src/cli/print.ts: replaced fixed 1-second GC interval with startMemoryPressureAdvisor() --- src/cli/print.ts | 8 +- src/utils/memoryPressureAdvisor.ts | 234 +++++++++++++++++++++++++++++ 2 files changed, 239 insertions(+), 3 deletions(-) create mode 100644 src/utils/memoryPressureAdvisor.ts diff --git a/src/cli/print.ts b/src/cli/print.ts index 5cf3c647..bcfe291d 100644 --- a/src/cli/print.ts +++ b/src/cli/print.ts @@ -107,6 +107,7 @@ import { } from 'src/utils/gracefulShutdown.js' import { registerCleanup } from 'src/utils/cleanupRegistry.js' import { createIdleTimeoutManager } from 'src/utils/idleTimeout.js' +import { startMemoryPressureAdvisor } from 'src/utils/memoryPressureAdvisor.js' import type { SDKStatus, ModelInfo, @@ -544,10 +545,11 @@ export async function runHeadless( proactiveModule.activateProactive('command') } - // Periodically force a full GC to keep memory usage in check + // Adaptive memory pressure monitoring + GC + // Replaces blind fixed-interval GC with RSS-based state machine + // to prevent GC death spiral (madvise/mmap/munmap storms) if (typeof Bun !== 'undefined') { - const gcTimer = setInterval(Bun.gc, 1000) - gcTimer.unref() + startMemoryPressureAdvisor() } // Start headless profiler for first turn diff --git a/src/utils/memoryPressureAdvisor.ts b/src/utils/memoryPressureAdvisor.ts new file mode 100644 index 00000000..031e4f7b --- /dev/null +++ b/src/utils/memoryPressureAdvisor.ts @@ -0,0 +1,234 @@ +/** + * Adaptive Memory Pressure Advisor + * + * Monitors RSS memory usage and adjusts GC frequency based on pressure level. + * Replaces the blind fixed-interval GC that could contribute to death spirals. + * + * Problem: At ~2000+ messages, React Fiber trees cause severe memory pressure. + * Bun's GC behavior triggers excessive mmap/munmap → madvise() storms → soft lockup. + * + * Solution: Adaptive monitoring with 3 states (NORMAL → ELEVATED → CRITICAL) + * that adjusts GC frequency and triggers more aggressive collection when needed. + */ + +import { logForDebugging } from './debug.js' + +/** Memory pressure states */ +export type MemoryPressureState = 'NORMAL' | 'ELEVATED' | 'CRITICAL' + +/** Memory pressure thresholds in MB */ +const RSS_THRESHOLD_ELEVATED_MB = 500 +const RSS_THRESHOLD_CRITICAL_MB = 1500 + +/** GC intervals based on state (milliseconds) */ +const GC_INTERVAL_NORMAL_MS = 5000 +const GC_INTERVAL_ELEVATED_MS = 2000 +const GC_INTERVAL_CRITICAL_MS = 500 + +/** Number of samples to keep for trend analysis */ +const TREND_WINDOW_SIZE = 5 + +/** Growth rate threshold for CRITICAL (MB per sample) */ +const GROWTH_RATE_CRITICAL_MB = 100 + +/** + * Tracks memory usage and RSS growth trend + */ +interface MemorySample { + rss: number + timestamp: number +} + +/** + * Adaptive memory pressure advisor with 3-state machine: + * - NORMAL: Memory usage is healthy, infrequent GC + * - ELEVATED: Memory pressure building, moderate GC frequency + * - CRITICAL: High memory pressure, frequent GC to prevent death spiral + */ +export class MemoryPressureAdvisor { + private samples: MemorySample[] = [] + private currentState: MemoryPressureState = 'NORMAL' + private gcTimer: ReturnType | null = null + private isRunning = false + + /** + * Get current RSS in MB + */ + private getRssMB(): number { + if (typeof Bun !== 'undefined') { + const mem = Bun.memory() + return mem.rss / (1024 * 1024) + } + // Fallback for non-Bun environment + const usage = process.memoryUsage() + return usage.rss / (1024 * 1024) + } + + /** + * Compute RSS growth rate in MB per sample interval + */ + private computeGrowthRateMB(): number { + if (this.samples.length < 2) return 0 + const oldest = this.samples[0]! + const newest = this.samples[this.samples.length - 1]! + const timeDeltaSec = (newest.timestamp - oldest.timestamp) / 1000 + if (timeDeltaSec === 0) return 0 + return (newest.rss - oldest.rss) / timeDeltaSec + } + + /** + * Determine pressure state based on RSS and growth trend + */ + private computeState(rssMB: number): MemoryPressureState { + // Check for critical growth rate first (predictive) + const growthRate = this.computeGrowthRateMB() + if (growthRate > GROWTH_RATE_CRITICAL_MB) { + return 'CRITICAL' + } + + // Check absolute thresholds + if (rssMB >= RSS_THRESHOLD_CRITICAL_MB) { + return 'CRITICAL' + } + if (rssMB >= RSS_THRESHOLD_ELEVATED_MB) { + return 'ELEVATED' + } + return 'NORMAL' + } + + /** + * Get GC interval for given state + */ + private getGcInterval(state: MemoryPressureState): number { + switch (state) { + case 'CRITICAL': + return GC_INTERVAL_CRITICAL_MS + case 'ELEVATED': + return GC_INTERVAL_ELEVATED_MS + case 'NORMAL': + default: + return GC_INTERVAL_NORMAL_MS + } + } + + /** + * Record a memory sample + */ + private recordSample(rss: number): void { + this.samples.push({ rss, timestamp: Date.now() }) + // Keep only recent samples for trend analysis + if (this.samples.length > TREND_WINDOW_SIZE) { + this.samples.shift() + } + } + + /** + * Perform adaptive GC based on current state + */ + private adaptiveGC(): void { + const rssMB = this.getRssMB() + this.recordSample(rssMB) + const newState = this.computeState(rssMB) + + // Log state transitions + if (newState !== this.currentState) { + const prevState = this.currentState + this.currentState = newState + logForDebugging( + `[MemoryPressure] State: ${prevState} → ${newState} (RSS: ${rssMB.toFixed(1)} MB)`, + ) + this.restartTimer() + } + + // Only trigger full GC when memory is elevated + if (newState !== 'NORMAL' && typeof Bun !== 'undefined') { + Bun.gc(true) + } + } + + /** + * Restart the GC timer with updated interval + */ + private restartTimer(): void { + if (this.gcTimer) { + clearInterval(this.gcTimer) + } + const interval = this.getGcInterval(this.currentState) + this.gcTimer = setInterval(() => this.adaptiveGC(), interval) + this.gcTimer.unref() + } + + /** + * Start the memory pressure advisor + */ + start(): void { + if (this.isRunning) return + this.isRunning = true + + // Initial sample + const initialRSS = this.getRssMB() + this.recordSample(initialRSS) + this.currentState = this.computeState(initialRSS) + + logForDebugging( + `[MemoryPressure] Started - Initial RSS: ${initialRSS.toFixed(1)} MB, State: ${this.currentState}`, + ) + + // Start the adaptive GC timer + this.restartTimer() + } + + /** + * Stop the memory pressure advisor + */ + stop(): void { + if (!this.isRunning) return + this.isRunning = false + + if (this.gcTimer) { + clearInterval(this.gcTimer) + this.gcTimer = null + } + this.samples = [] + this.currentState = 'NORMAL' + + logForDebugging('[MemoryPressure] Stopped') + } + + /** + * Get current memory pressure state + */ + getState(): MemoryPressureState { + return this.currentState + } +} + +// Singleton instance +let advisorInstance: MemoryPressureAdvisor | null = null + +/** + * Start the global memory pressure advisor + */ +export function startMemoryPressureAdvisor(): MemoryPressureAdvisor { + if (!advisorInstance) { + advisorInstance = new MemoryPressureAdvisor() + } + advisorInstance.start() + return advisorInstance +} + +/** + * Get the global memory pressure advisor instance + */ +export function getMemoryPressureAdvisor(): MemoryPressureAdvisor | null { + return advisorInstance +} + +/** + * Stop the global memory pressure advisor + */ +export function stopMemoryPressureAdvisor(): void { + if (advisorInstance) { + advisorInstance.stop() + } +}