07ab7000a8
1. Fix esbuild inlining build-machine __dirname as string literal — use
CJS-compatible runtime banner with require("node:url").fileURLToPath
across worker-service, mcp-server, and context-generator builds.
2. Fix isMainModule check missing .cjs extension and Windows backslash
path normalization.
3. Wrap extractLastMessage in try-catch to prevent infinite Stop hook
feedback loop on malformed transcripts (exit 0 instead of exit 2).
4. Replace heavy SessionEnd hook (Node→Bun→1.7MB CJS→HTTP) with
lightweight inline node -e one-liner (~200ms vs >1s).
5. Add 7 Gemini/OpenRouter error patterns to unrecoverablePatterns
circuit breaker to prevent 77K+ retry loops on expired API keys.
6. Preserve CLAUDE_CODE_OAUTH_TOKEN and CLAUDE_CODE_GIT_BASH_PATH in
sanitizeEnv instead of stripping them with the CLAUDE_CODE_ prefix.
7. Use PowerShell -EncodedCommand for spawnDaemon to fix path quoting
when Windows usernames contain spaces.
Closes #1515, #1495, #1475, #1465, #1500, #1513, #1512, #1450, #1460,
#1486, #1449, #1481, #1451, #1480, #1453, #1445
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
28 lines
855 B
TypeScript
28 lines
855 B
TypeScript
export const ENV_PREFIXES = ['CLAUDECODE_', 'CLAUDE_CODE_'];
|
|
export const ENV_EXACT_MATCHES = new Set([
|
|
'CLAUDECODE',
|
|
'CLAUDE_CODE_SESSION',
|
|
'CLAUDE_CODE_ENTRYPOINT',
|
|
'MCP_SESSION_ID',
|
|
]);
|
|
|
|
/** Vars that start with CLAUDE_CODE_ but must be preserved for subprocess auth/tooling */
|
|
export const ENV_PRESERVE = new Set([
|
|
'CLAUDE_CODE_OAUTH_TOKEN',
|
|
'CLAUDE_CODE_GIT_BASH_PATH',
|
|
]);
|
|
|
|
export function sanitizeEnv(env: NodeJS.ProcessEnv = process.env): NodeJS.ProcessEnv {
|
|
const sanitized: NodeJS.ProcessEnv = {};
|
|
|
|
for (const [key, value] of Object.entries(env)) {
|
|
if (value === undefined) continue;
|
|
if (ENV_PRESERVE.has(key)) { sanitized[key] = value; continue; }
|
|
if (ENV_EXACT_MATCHES.has(key)) continue;
|
|
if (ENV_PREFIXES.some(prefix => key.startsWith(prefix))) continue;
|
|
sanitized[key] = value;
|
|
}
|
|
|
|
return sanitized;
|
|
}
|