import { extensionName } from "../../utils/settings.js"; import { extension_settings } from "/scripts/extensions.js"; import { saveSettingsDebounced } from "/script.js"; import { initializeSuperMemory, purgeSuperMemory } from "./manager.js"; import { defaultSettings as ragDefaultSettings } from "../rag-settings.js"; import { getMemoryState } from "../table-system/manager.js"; const RAG_MODULE_NAME = 'hanlinyuan-rag-core'; function getRagSettings() { if (!extension_settings[extensionName]) extension_settings[extensionName] = {}; if (!extension_settings[extensionName][RAG_MODULE_NAME]) { extension_settings[extensionName][RAG_MODULE_NAME] = structuredClone(ragDefaultSettings); } return extension_settings[extensionName][RAG_MODULE_NAME]; } export function bindSuperMemoryEvents() { const panel = $('#amily2_super_memory_panel'); if (panel.length === 0) return; panel.on('click', '.sm-nav-item', function() { const tab = $(this).data('tab'); panel.find('.sm-nav-item').removeClass('active'); $(this).addClass('active'); panel.find('.sm-tab-pane').removeClass('active'); panel.find(`#sm-${tab}-tab`).addClass('active'); }); // 处理 Checkbox 变更 panel.on('change', 'input[type="checkbox"]', function() { if ($(this).hasClass('sm-table-setting-check')) return; // Skip table settings checks here if (!extension_settings[extensionName]) extension_settings[extensionName] = {}; const id = this.id; // Super Memory 自身设置 if (id === 'sm-system-enabled') { extension_settings[extensionName]['super_memory_enabled'] = this.checked; saveSettingsDebounced(); return; } if (id === 'sm-bridge-enabled') { extension_settings[extensionName]['superMemory_bridgeEnabled'] = this.checked; saveSettingsDebounced(); return; } // RAG 设置 (归档 & 关联图谱) const ragSettings = getRagSettings(); if (id === 'sm-archive-enabled') { if (!ragSettings.archive) ragSettings.archive = {}; ragSettings.archive.enabled = this.checked; } else if (id === 'sm-relationship-graph-enabled') { if (!ragSettings.relationshipGraph) ragSettings.relationshipGraph = {}; ragSettings.relationshipGraph.enabled = this.checked; } saveSettingsDebounced(); console.log(`[Amily2-SuperMemory] Checkbox updated: ${id} = ${this.checked}`); }); // 处理 Input 变更 (归档阈值等) panel.on('change', 'input[type="number"], input[type="text"]', function() { if (!extension_settings[extensionName]) extension_settings[extensionName] = {}; const id = this.id; // SuperMemory 自身设置 if (id === 'sm-min-trigger-floor') { extension_settings[extensionName]['superMemory_minTriggerFloor'] = Math.max(0, parseInt(this.value, 10) || 0); saveSettingsDebounced(); console.log(`[Amily2-SuperMemory] Input updated: ${id} = ${this.value}`); return; } // RAG 归档设置 const ragSettings = getRagSettings(); if (!ragSettings.archive) ragSettings.archive = {}; if (id === 'sm-archive-threshold') { ragSettings.archive.threshold = parseInt(this.value, 10); } else if (id === 'sm-archive-batch-size') { ragSettings.archive.batchSize = parseInt(this.value, 10); } else if (id === 'sm-archive-target-table') { ragSettings.archive.targetTable = this.value; } saveSettingsDebounced(); console.log(`[Amily2-SuperMemory] Input updated: ${id} = ${this.value}`); }); // 绑定刷新表格列表按钮 panel.on('click', '#sm-refresh-table-list', function() { renderTableSettingsList(); }); // 绑定表格专属配置的 Checkbox panel.on('change', '.sm-table-setting-check', function() { if (!extension_settings[extensionName]) extension_settings[extensionName] = {}; if (!extension_settings[extensionName].superMemory_tableSettings) { extension_settings[extensionName].superMemory_tableSettings = {}; } const tableName = $(this).data('table'); const type = $(this).data('type'); // 'sync' or 'constant' const checked = this.checked; if (!extension_settings[extensionName].superMemory_tableSettings[tableName]) { extension_settings[extensionName].superMemory_tableSettings[tableName] = {}; } extension_settings[extensionName].superMemory_tableSettings[tableName][type] = checked; saveSettingsDebounced(); console.log(`[Amily2-SuperMemory] Table setting updated: ${tableName}.${type} = ${checked}`); }); loadSuperMemorySettings(); console.log('[Amily2-SuperMemory] Events bound successfully.'); } function renderTableSettingsList() { const container = $('#sm-table-settings-list'); container.html('