const REMOTE_EXECUTION_ENV_IDENTITY_KEYS = new Set([ "PATH", "HOME", "PWD", "SHELL", "USER", "LOGNAME", "NVM_DIR", "TMPDIR", "TMP", "TEMP", "XDG_CONFIG_HOME", "XDG_CACHE_HOME", "XDG_DATA_HOME", "XDG_STATE_HOME", "XDG_RUNTIME_DIR", ]); function readEnvValueCaseInsensitive(env: NodeJS.ProcessEnv, key: string): string | undefined { const direct = env[key]; if (typeof direct === "string") return direct; const upper = key.toUpperCase(); for (const [candidateKey, candidateValue] of Object.entries(env)) { if (candidateKey.toUpperCase() === upper && typeof candidateValue === "string") { return candidateValue; } } return undefined; } export function sanitizeRemoteExecutionEnv( env: Record, inheritedEnv: NodeJS.ProcessEnv = process.env, ): Record { const sanitized: Record = {}; for (const [key, value] of Object.entries(env)) { const normalizedKey = key.toUpperCase(); if (!REMOTE_EXECUTION_ENV_IDENTITY_KEYS.has(normalizedKey)) { sanitized[key] = value; continue; } const inheritedValue = readEnvValueCaseInsensitive(inheritedEnv, key); if (typeof inheritedValue === "string" && inheritedValue === value) { continue; } sanitized[key] = value; } return sanitized; }