38 lines
1.3 KiB
JavaScript
38 lines
1.3 KiB
JavaScript
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 }; |