feat: harden intelligence runtime and llm providers
This commit is contained in:
@@ -2,22 +2,47 @@
|
||||
|
||||
import "./apis/utils/env.mjs"; // Load .env first
|
||||
|
||||
function intEnv(name, fallback) {
|
||||
const value = parseInt(process.env[name], 10);
|
||||
return Number.isFinite(value) ? value : fallback;
|
||||
}
|
||||
|
||||
function floatEnv(name, fallback) {
|
||||
const value = parseFloat(process.env[name]);
|
||||
return Number.isFinite(value) ? value : fallback;
|
||||
}
|
||||
|
||||
function boolEnv(name, fallback = false) {
|
||||
const value = process.env[name];
|
||||
if (value == null || value === '') return fallback;
|
||||
return ['1', 'true', 'yes', 'on'].includes(String(value).toLowerCase());
|
||||
}
|
||||
|
||||
export default {
|
||||
port: parseInt(process.env.PORT) || 3117,
|
||||
refreshIntervalMinutes: parseInt(process.env.REFRESH_INTERVAL_MINUTES) || 15,
|
||||
port: intEnv('PORT', 3117),
|
||||
refreshIntervalMinutes: intEnv('REFRESH_INTERVAL_MINUTES', 15),
|
||||
autoOpenBrowser: boolEnv('AUTO_OPEN_BROWSER', false),
|
||||
staleDataMaxAgeMinutes: intEnv('STALE_DATA_MAX_AGE_MINUTES', 60),
|
||||
sweepToken: process.env.SWEEP_TOKEN || null,
|
||||
|
||||
llm: {
|
||||
provider: process.env.LLM_PROVIDER || null, // anthropic | openai | gemini | codex | openrouter | minimax | mistral | ollama | grok
|
||||
apiKey: process.env.LLM_API_KEY || null,
|
||||
model: process.env.LLM_MODEL || null,
|
||||
baseUrl: process.env.OLLAMA_BASE_URL || null,
|
||||
baseUrl: process.env.LLM_BASE_URL || process.env.OPENAI_BASE_URL || process.env.OLLAMA_BASE_URL || null,
|
||||
temperature: floatEnv('LLM_TEMPERATURE', 0.2),
|
||||
maxTokens: intEnv('LLM_MAX_TOKENS', 2000),
|
||||
timeoutMs: intEnv('LLM_TIMEOUT_MS', 90000),
|
||||
openRouterSiteUrl: process.env.OPENROUTER_SITE_URL || 'https://git.wilkensxl.de/MrSphay/intelligence-terminal',
|
||||
openRouterAppName: process.env.OPENROUTER_APP_NAME || 'Intelligence Terminal',
|
||||
},
|
||||
|
||||
telegram: {
|
||||
botToken: process.env.TELEGRAM_BOT_TOKEN || null,
|
||||
chatId: process.env.TELEGRAM_CHAT_ID || null,
|
||||
botPollingInterval: parseInt(process.env.TELEGRAM_POLL_INTERVAL) || 5000,
|
||||
botPollingInterval: intEnv('TELEGRAM_POLL_INTERVAL', 5000),
|
||||
channels: process.env.TELEGRAM_CHANNELS || null, // Comma-separated extra channel IDs
|
||||
briefVerbosity: process.env.BRIEF_VERBOSITY || 'standard',
|
||||
},
|
||||
|
||||
discord: {
|
||||
|
||||
Reference in New Issue
Block a user