import { extensionName } from "../../utils/settings.js"; import { AgentManager } from "./agent-manager.js"; import { characters, this_chid, saveSettingsDebounced, getCharacters } from "/script.js"; import { world_names } from "/scripts/world-info.js"; import { getApiConfig, setApiConfig, testConnection, fetchModels } from "./api.js"; import { tools } from "./tools.js"; import { syncSlot } from "../../ui/profile-sync.js"; const extensionFolderPath = `scripts/extensions/third-party/${extensionName}`; let isInitialized = false; let agentManager = null; let previousCharData = {}; let previousWorldData = {}; let isWaitingForApproval = false; let openedFiles = new Map(); let activeFileId = null; let promptLogContent = "=== Prompt Log ===\n\n"; export async function openAutoCharCardWindow() { if ($('#acc-window').length > 0) { $('#acc-window').show(); return; } if (!$('#acc-style').length) { $('') .attr('id', 'acc-style') .attr('rel', 'stylesheet') .attr('type', 'text/css') .attr('href', `${extensionFolderPath}/assets/auto-char-card/style.css`) .appendTo('head'); } try { const htmlContent = await $.get(`${extensionFolderPath}/assets/auto-char-card/index.html`); $('body').append(htmlContent); bindEvents(); agentManager = new AgentManager(); try { populateDropdowns(); loadApiSettings(); await syncSlot('autoCharCard'); renderRulesList(); renderSessionsList(); restoreChatHistory(); } catch (dataError) { console.error('[Amily2 AutoCharCard] Failed to load data:', dataError); toastr.warning('数据加载部分失败,请检查控制台。'); } isInitialized = true; console.log('[Amily2 AutoCharCard] Window initialized.'); } catch (error) { console.error('[Amily2 AutoCharCard] Failed to initialize window:', error); toastr.error(`无法加载自动构建器界面: ${error.message}`); $('#acc-window').remove(); } } function populateDropdowns() { const charSelect = $('#acc-target-char'); const prevCharId = charSelect.val(); charSelect.empty().append(''); charSelect.append(''); let isPrevCharStillPresent = false; characters.forEach((char, index) => { if (char) { charSelect.append($(''); worldSelect.append(''); let isPrevWorldStillPresent = false; world_names.forEach(name => { worldSelect.append($('