const fs = require('fs'); const path = require('path'); const { getEnv, ORCHESTRATION, INFERENCE_DEFAULTS, RETRIEVAL } = require('@nexusai/shared'); const SETTINGS_PATH = path.join(__dirname, '../../data/settings.json'); const DEFAULTS = { recentEpisodeLimit: ORCHESTRATION.RECENT_EPISODE_LIMIT, semanticLimit: ORCHESTRATION.SEMANTIC_LIMIT, scoreThreshold: ORCHESTRATION.SCORE_THRESHOLD, modelsFolderPath: getEnv('MODELS_MANIFEST_PATH', '/mnt/nexus-models'), temperature: INFERENCE_DEFAULTS.TEMPERATURE, repeatPenalty: INFERENCE_DEFAULTS.REPEAT_PENALTY, topP: INFERENCE_DEFAULTS.TOP_P, topK: INFERENCE_DEFAULTS.TOP_K, systemPrompt: ORCHESTRATION.SYSTEM_PROMPT, semanticWeight: RETRIEVAL.SEMANTIC_WEIGHT, keywordWeight: RETRIEVAL.KEYWORD_WEIGHT, }; function load() { try { const raw = fs.readFileSync(SETTINGS_PATH, 'utf8'); return { ...DEFAULTS, ...JSON.parse(raw) }; } catch { return { ...DEFAULTS }; // file doesn't exist yet — use defaults } } function save(updates) { const current = load(); const next = { ...current, ...updates }; fs.mkdirSync(path.dirname(SETTINGS_PATH), { recursive: true }); fs.writeFileSync(SETTINGS_PATH, JSON.stringify(next, null, 2)); return next; } module.exports = { load, save, DEFAULTS };