Files
LittleWhiteBox/modules/story-summary/data/config.js

98 lines
3.1 KiB
JavaScript
Raw Normal View History

2026-01-26 01:16:35 +08:00
// Story Summary - Config
// Plugin settings, panel config, and vector config.
import { extension_settings } from "../../../../../../extensions.js";
import { EXT_ID } from "../../../core/constants.js";
import { xbLog } from "../../../core/debug-core.js";
import { CommonSettingStorage } from "../../../core/server-storage.js";
const MODULE_ID = 'summaryConfig';
const SUMMARY_CONFIG_KEY = 'storySummaryPanelConfig';
export function getSettings() {
const ext = extension_settings[EXT_ID] ||= {};
ext.storySummary ||= { enabled: true };
return ext;
}
export function getSummaryPanelConfig() {
const defaults = {
api: { provider: 'st', url: '', key: '', model: '', modelCache: [] },
gen: { temperature: null, top_p: null, top_k: null, presence_penalty: null, frequency_penalty: null },
trigger: {
enabled: false,
interval: 20,
timing: 'after_ai',
useStream: true,
maxPerRun: 100,
wrapperHead: '',
wrapperTail: '',
forceInsertAtEnd: false,
},
};
try {
const raw = localStorage.getItem('summary_panel_config');
if (!raw) return defaults;
const parsed = JSON.parse(raw);
const result = {
api: { ...defaults.api, ...(parsed.api || {}) },
gen: { ...defaults.gen, ...(parsed.gen || {}) },
trigger: { ...defaults.trigger, ...(parsed.trigger || {}) },
};
if (result.trigger.timing === 'manual') result.trigger.enabled = false;
if (result.trigger.useStream === undefined) result.trigger.useStream = true;
return result;
} catch {
return defaults;
}
}
export function saveSummaryPanelConfig(config) {
try {
localStorage.setItem('summary_panel_config', JSON.stringify(config));
CommonSettingStorage.set(SUMMARY_CONFIG_KEY, config);
} catch (e) {
xbLog.error(MODULE_ID, '保存面板配置失败', e);
}
}
export function getVectorConfig() {
try {
const raw = localStorage.getItem('summary_panel_config');
if (!raw) return null;
const parsed = JSON.parse(raw);
return parsed.vector || null;
} catch {
return null;
}
}
export function saveVectorConfig(vectorCfg) {
try {
const raw = localStorage.getItem('summary_panel_config') || '{}';
const parsed = JSON.parse(raw);
parsed.vector = vectorCfg;
localStorage.setItem('summary_panel_config', JSON.stringify(parsed));
CommonSettingStorage.set(SUMMARY_CONFIG_KEY, parsed);
} catch (e) {
xbLog.error(MODULE_ID, '保存向量配置失败', e);
}
}
export async function loadConfigFromServer() {
try {
const savedConfig = await CommonSettingStorage.get(SUMMARY_CONFIG_KEY, null);
if (savedConfig) {
localStorage.setItem('summary_panel_config', JSON.stringify(savedConfig));
xbLog.info(MODULE_ID, '已从服务器加载面板配置');
return savedConfig;
}
} catch (e) {
xbLog.warn(MODULE_ID, '加载面板配置失败', e);
}
return null;
}