import { apiDelete, apiGet, apiPost } from "@/lib/api/client"; import type { StudyChatAcademicContext, StudyChatEvidence, StudyChatMode, WebSource, } from "@/lib/api/chat"; export type ChatSessionOut = { id: string; source_id: string | null; subject: string; title: string; context_data: StudyChatAcademicContext | null; active_source_ids: string[]; mode: StudyChatMode; message_count: number; created_at: string; updated_at: string; }; export type ChatMessageOut = { id: string; role: "user" | "assistant"; content: string; intent: string | null; evidence_label?: string | null; client_turn_id?: string | null; web_sources?: WebSource[]; evidence?: StudyChatEvidence | null; created_at: string; }; export type ChatSessionDetail = { id: string; source_id: string | null; subject: string; title: string; context_data: StudyChatAcademicContext | null; active_source_ids: string[]; mode: StudyChatMode; messages: ChatMessageOut[]; created_at: string; updated_at: string; }; export function listChatSessions(sourceId?: string | null) { const query = sourceId ? `?source_id=${encodeURIComponent(sourceId)}` : ""; return apiGet(`/chat/sessions${query}`); } export function getChatSession(sessionId: string) { return apiGet(`/chat/sessions/${sessionId}`); } export function createChatSession(body: { source_id?: string | null; subject?: string; title?: string; context_data?: StudyChatAcademicContext | null; active_source_ids?: string[]; mode?: StudyChatMode; }) { return apiPost("/chat/sessions", body); } export function appendChatMessages( sessionId: string, body: { user_content: string; assistant_content: string; client_turn_id?: string; intent?: string; evidence_label?: string | null; web_sources?: WebSource[]; evidence?: StudyChatEvidence | null; }, ) { return apiPost( `/chat/sessions/${sessionId}/messages`, body, ); } export function deleteChatSession(sessionId: string) { return apiDelete(`/chat/sessions/${sessionId}`); }