Files
Nova/src/config.js

45 lines
2.2 KiB
JavaScript

import dotenv from 'dotenv';
import path from 'path';
import { fileURLToPath } from 'url';
dotenv.config();
const defaultMemoryDbFile = fileURLToPath(new URL('../data/memory.sqlite', import.meta.url));
const legacyMemoryFile = fileURLToPath(new URL('../data/memory.json', import.meta.url));
const requiredEnv = ['DISCORD_TOKEN'];
requiredEnv.forEach((key) => {
if (!process.env[key]) {
console.warn(`[config] Missing environment variable ${key}. Did you copy .env.example?`);
}
});
export const config = {
discordToken: process.env.DISCORD_TOKEN || '',
useOpenRouter: true,
openRouterKey: process.env.OPENROUTER_API_KEY || '',
openrouterReferer: process.env.OPENROUTER_REFERER || '',
openrouterTitle: process.env.OPENROUTER_TITLE || '',
chatModel: process.env.OPENROUTER_MODEL || 'meta-llama/llama-3-8b-instruct',
embedModel: process.env.OPENROUTER_EMBED_MODEL || 'nvidia/llama-nemotron-embed-vl-1b-v2',
openrouterTimeoutMs: process.env.OPENROUTER_TIMEOUT_MS ? parseInt(process.env.OPENROUTER_TIMEOUT_MS, 10) : 30000,
preferredChannel: process.env.BOT_CHANNEL_ID || null,
enableWebSearch: process.env.ENABLE_WEB_SEARCH !== 'false',
coderUserId: process.env.CODER_USER_ID || null,
maxCoderPingIntervalMs: 6 * 60 * 60 * 1000,
coderPingMinIntervalMs: process.env.CODER_PING_MIN_MS ? parseInt(process.env.CODER_PING_MIN_MS, 10) : 6 * 60 * 60 * 1000,
coderPingMaxIntervalMs: process.env.CODER_PING_MAX_MS ? parseInt(process.env.CODER_PING_MAX_MS, 10) : 8 * 60 * 60 * 1000,
shortTermLimit: 10,
memoryDbFile: process.env.MEMORY_DB_FILE ? path.resolve(process.env.MEMORY_DB_FILE) : defaultMemoryDbFile,
legacyMemoryFile,
summaryTriggerChars: 3000,
memoryPruneThreshold: 0.2,
maxMemories: 8000,
relevantMemoryCount: 5,
// Proactive continuation settings: when a user stops replying, Nova can continue
// the conversation every `continuationIntervalMs` milliseconds until the user
// signals to stop or the `continuationMaxProactive` limit is reached.
continuationIntervalMs: process.env.CONTINUATION_INTERVAL_MS ? parseInt(process.env.CONTINUATION_INTERVAL_MS, 10) : 10000,
continuationMaxProactive: process.env.CONTINUATION_MAX_PROACTIVE ? parseInt(process.env.CONTINUATION_MAX_PROACTIVE, 10) : 10,
};