import { defineStore } from 'pinia'; import { ref } from 'vue'; import axios from 'axios'; export const useHistoryStore = defineStore('history', () => { // State const historyItems = ref([]); const isLoading = ref(false); // Getters const getHistoryItems = () => historyItems.value; const getHistoryById = (id) => historyItems.value.find((item) => item.id === id); // Actions /** * 加载历史会话列表 */ async function loadHistorySessions() { console.log('[historyStore] 开始加载历史会话...'); isLoading.value = true; try { const baseUrl = window.__opencodeBaseUrl || 'http://127.0.0.1:4096'; console.log('[historyStore] baseUrl:', baseUrl); const response = await axios.get(`${baseUrl}/session`); console.log('[historyStore] 响应数据:', response.data); const sessions = response.data || []; console.log('[historyStore] 会话数量:', sessions.length); // 将会话列表转换为历史记录格式 historyItems.value = sessions.map((session) => ({ id: session.id, name: session.title || `会话 ${session.slug || session.id.slice(0, 8)}...`, slug: session.slug, created: session.time?.created, updated: session.time?.updated, })); console.log('[historyStore] 转换后的历史记录:', historyItems.value); } catch (err) { console.error('[historyStore] 加载历史会话失败:', err); historyItems.value = []; } finally { isLoading.value = false; } } /** * 清空历史记录 */ function clearHistory() { historyItems.value = []; } /** * 添加单个历史记录项(用于新创建的会话) */ function addHistoryItem(item) { // 检查是否已存在 const exists = historyItems.value.find((h) => h.id === item.id); if (!exists) { historyItems.value.unshift({ id: item.id, name: item.title || `会话 ${item.slug || item.id.slice(0, 8)}...`, slug: item.slug, created: item.time?.created, updated: item.time?.updated, }); } } /** * 创建新会话 * @param {string} title - 会话标题 * @returns {Promise} 创建的会话对象 */ async function createSession(title) { console.log('[historyStore] 创建新会话,title:', title); try { const session = await window.opencode.createSession({ title }); console.log('[historyStore] 创建会话成功:', session); // 添加到历史记录 addHistoryItem(session); return session; } catch (err) { console.error('[historyStore] 创建会话失败:', err); throw err; } } return { // State historyItems, isLoading, // Getters getHistoryItems, getHistoryById, // Actions loadHistorySessions, clearHistory, addHistoryItem, createSession, }; });