@ai-sdk/mcp
Version:
51 lines (44 loc) • 1.24 kB
text/typescript
/**
* Constructs the environment variables for the child process.
*
* @param customEnv - Custom environment variables to merge with default environment variables.
* @returns The environment variables for the child process.
*/
export function getEnvironment(
customEnv?: Record<string, string>,
): Record<string, string> {
const isWindows = globalThis.process.platform === 'win32';
const DEFAULT_INHERITED_ENV_VARS = isWindows
? [
'APPDATA',
'HOMEDRIVE',
'HOMEPATH',
'LOCALAPPDATA',
'PATH',
'PROCESSOR_ARCHITECTURE',
'SYSTEMDRIVE',
'SYSTEMROOT',
'TEMP',
'USERNAME',
'USERPROFILE',
]
: ['HOME', 'LOGNAME', 'PATH', 'SHELL', 'TERM', 'USER'];
const env: Record<string, string> = customEnv ? { ...customEnv } : {};
const customEnvKeys = new Set(
Object.keys(env).map(key => (isWindows ? key.toUpperCase() : key)),
);
for (const key of DEFAULT_INHERITED_ENV_VARS) {
if (customEnvKeys.has(key)) {
continue;
}
const value = globalThis.process.env[key];
if (value === undefined) {
continue;
}
if (value.startsWith('()')) {
continue;
}
env[key] = value;
}
return env;
}