57 lines
1.5 KiB
JavaScript
57 lines
1.5 KiB
JavaScript
// ── API Calls ──
|
|
|
|
async function apiChat(model, messages, systemPrompt, sessionId) {
|
|
return fetch('/api/chat', {
|
|
method: 'POST',
|
|
headers: { 'Content-Type': 'application/json' },
|
|
body: JSON.stringify({ model, messages, systemPrompt, sessionId })
|
|
});
|
|
}
|
|
|
|
async function apiHistory(sessionId) {
|
|
const resp = await fetch(`/api/history?sessionId=${sessionId}`);
|
|
return resp.json();
|
|
}
|
|
|
|
async function apiHistoryPoll(sessionId, afterId) {
|
|
const resp = await fetch(`/api/history/poll?sessionId=${sessionId}&afterId=${afterId}`);
|
|
return resp.json();
|
|
}
|
|
|
|
async function apiArchive(sessionId) {
|
|
const resp = await fetch(`/api/archive?sessionId=${sessionId}`, { method: 'POST' });
|
|
if (resp.status === 204) return null;
|
|
return resp.json();
|
|
}
|
|
|
|
async function apiListArchives(sessionId) {
|
|
const resp = await fetch(`/api/archives?sessionId=${sessionId}`);
|
|
return resp.json();
|
|
}
|
|
|
|
async function apiGetArchive(archiveId) {
|
|
const resp = await fetch(`/api/archive/${archiveId}`);
|
|
return resp.json();
|
|
}
|
|
|
|
// ── Session API ──
|
|
|
|
async function apiGetSessions() {
|
|
const resp = await fetch('/api/sessions');
|
|
return resp.json();
|
|
}
|
|
|
|
async function apiCreateSession() {
|
|
const resp = await fetch('/api/sessions', { method: 'POST' });
|
|
return resp.json();
|
|
}
|
|
|
|
async function apiUpdateSession(sessionId, data) {
|
|
const resp = await fetch(`/api/sessions/${sessionId}`, {
|
|
method: 'PUT',
|
|
headers: { 'Content-Type': 'application/json' },
|
|
body: JSON.stringify(data)
|
|
});
|
|
return resp.json();
|
|
}
|