98 lines
3.1 KiB
JavaScript
98 lines
3.1 KiB
JavaScript
|
|
// 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;
|
||
|
|
}
|