feat: add environment configuration loader
This commit is contained in:
@@ -1 +1,44 @@
|
||||
// Environment variable loading and validation.
|
||||
|
||||
export function loadConfig() {
|
||||
const key = process.env.OPENAI_API_KEY;
|
||||
|
||||
if (!key) {
|
||||
throw new Error('Configuration error: OPENAI_API_KEY is missing.');
|
||||
}
|
||||
|
||||
const parseNum = (name, raw, fallback) => {
|
||||
if (raw === undefined || raw === '') return fallback;
|
||||
const n = Number(raw);
|
||||
if (isNaN(n) || !Number.isFinite(n) || n < 0) {
|
||||
throw new Error(
|
||||
`Configuration error: ${name} must be a positive number, got "${raw}".`
|
||||
);
|
||||
}
|
||||
return n;
|
||||
};
|
||||
|
||||
const parseBool = (name, raw, fallback) => {
|
||||
if (raw === undefined || raw === '') return fallback;
|
||||
if (raw === 'true') return true;
|
||||
if (raw === 'false') return false;
|
||||
throw new Error(
|
||||
`Configuration error: ${name} must be true or false, got "${raw}".`
|
||||
);
|
||||
};
|
||||
|
||||
return {
|
||||
openaiApiKey: key,
|
||||
openaiModel: process.env.OPENAI_MODEL || 'gpt-5.1',
|
||||
temperature: parseNum('OPENAI_TEMPERATURE', process.env.OPENAI_TEMPERATURE, 0.2),
|
||||
maxOutputTokens: parseNum('OPENAI_MAX_OUTPUT_TOKENS', process.env.OPENAI_MAX_OUTPUT_TOKENS, 2000),
|
||||
logLevel: process.env.CHATGPT_MCP_LOG_LEVEL || 'info',
|
||||
enableFileContext: parseBool('CHATGPT_MCP_ENABLE_FILE_CONTEXT', process.env.CHATGPT_MCP_ENABLE_FILE_CONTEXT, false),
|
||||
contextDir: process.env.CHATGPT_MCP_CONTEXT_DIR || './context',
|
||||
maxInputChars: parseNum('CHATGPT_MCP_MAX_INPUT_CHARS', process.env.CHATGPT_MCP_MAX_INPUT_CHARS, 30000),
|
||||
maxFileChars: parseNum('CHATGPT_MCP_MAX_FILE_CHARS', process.env.CHATGPT_MCP_MAX_FILE_CHARS, 12000),
|
||||
maxFiles: parseNum('CHATGPT_MCP_MAX_FILES', process.env.CHATGPT_MCP_MAX_FILES, 5),
|
||||
maxLogChars: parseNum('CHATGPT_MCP_MAX_LOG_CHARS', process.env.CHATGPT_MCP_MAX_LOG_CHARS, 10000),
|
||||
redactSecrets: parseBool('CHATGPT_MCP_REDACT_SECRETS', process.env.CHATGPT_MCP_REDACT_SECRETS, true),
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user