Agent/utils/conversation-store.ts
2026-08-06 22:17:39 +08:00

72 lines
1.8 KiB
TypeScript

// @ts-nocheck
import { CONFIG } from './config.js';
const BASE = CONFIG.ZHONGTAI_BASE;
const DEFAULT_ID = 'default';
const SAVE_DEBOUNCE_MS = 800;
let _saveTimer = null;
let _lastMessages = null;
export async function load(id = DEFAULT_ID) {
try {
const r = await fetch(`${BASE}/conversations?id=${encodeURIComponent(id)}`);
if (!r.ok) return [];
const data = await r.json();
return Array.isArray(data.messages) ? data.messages : [];
} catch (e) {
console.warn('[conversation] load 失败,回退空:', e.message);
return [];
}
}
export function save(messages, id = DEFAULT_ID) {
_lastMessages = messages;
if (_saveTimer) clearTimeout(_saveTimer);
_saveTimer = setTimeout(() => {
_saveTimer = null;
_doSave(_lastMessages, id);
}, SAVE_DEBOUNCE_MS);
}
async function _doSave(messages, id) {
try {
const r = await fetch(`${BASE}/conversations?id=${encodeURIComponent(id)}`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ messages }),
});
return r.ok;
} catch (e) {
console.warn('[conversation] save 失败:', e.message);
return false;
}
}
export async function clear(id = DEFAULT_ID) {
if (_saveTimer) {
clearTimeout(_saveTimer);
_saveTimer = null;
}
try {
const r = await fetch(`${BASE}/conversations?id=${encodeURIComponent(id)}`, {
method: 'DELETE',
});
if (r.ok) return true;
} catch (e) {}
return _doSave([], id);
}
export async function list() {
try {
const r = await fetch(`${BASE}/conversations/list`);
if (!r.ok) return [];
const data = await r.json();
return data.conversations || [];
} catch (e) {
return [];
}
}