import { delimiter, join } from 'node:path'; import { homedir } from 'node:os'; // Env de l'enfant daemon. Une app GUI démarre souvent avec un PATH minimal (sans ~/.local/bin, // /usr/local/bin, /opt/homebrew/bin) : on l'enrichit pour que le daemon retrouve `git` et le CLI // `claude`. Le réglage `claude_bin_path` (UI) reste le filet de secours. export function buildChildEnv(extra: Record): NodeJS.ProcessEnv { const env: NodeJS.ProcessEnv = { ...process.env, ...extra }; const extras = pathExtras(process.platform, env); if (extras.length > 0) { const current = env.PATH ? env.PATH.split(delimiter) : []; env.PATH = [...new Set([...extras, ...current])].join(delimiter); } return env; } /** * Répertoires à ajouter au PATH du daemon, par plateforme. Windows était entièrement ignoré : or * l'installeur natif de Claude Code se pose dans %LOCALAPPDATA%\Programs et npm global dans * %APPDATA%\npm, deux emplacements absents du PATH d'une app lancée depuis le menu Démarrer. */ export function pathExtras(platform: NodeJS.Platform, env: NodeJS.ProcessEnv = process.env): string[] { const home = env.USERPROFILE ?? homedir(); if (platform === 'win32') { const local = env.LOCALAPPDATA ?? join(home, 'AppData', 'Local'); const roaming = env.APPDATA ?? join(home, 'AppData', 'Roaming'); return [ join(local, 'Programs'), join(local, 'Programs', 'claude'), join(roaming, 'npm'), join(home, '.local', 'bin'), ]; } return ['/usr/local/bin', '/opt/homebrew/bin', join(home, '.local', 'bin'), '/usr/bin', '/bin']; }