import type { Conversation, ConversationListResponse, ConversationResponse, MessageListResponse, UpdateConversationRequest, } from "../../shared/api"; import { handleResponse, handleVoidResponse } from "../utils/api"; import { createConsoleLogger } from "../utils/logger"; const logger = createConsoleLogger(); export async function createConversation(projectId: string, modelId?: string): Promise { const response = await fetch(`/api/projects/${projectId}/conversations`, { body: JSON.stringify({ modelId }), headers: { "Content-Type": "application/json" }, method: "POST", }); return handleResponse(response, (data) => (data as ConversationResponse).conversation); } export async function deleteConversation(projectId: string, conversationId: string): Promise { const response = await fetch(`/api/projects/${projectId}/conversations/${conversationId}`, { method: "DELETE" }); return handleVoidResponse(response); } export async function fetchConversation(projectId: string, conversationId: string): Promise { try { const response = await fetch(`/api/projects/${projectId}/conversations/${conversationId}`); return handleResponse(response, (data) => (data as ConversationResponse).conversation); } catch (err) { logger.error("获取会话失败", { conversationId, error: err instanceof Error ? err.message : String(err), projectId, }); throw err; } } export async function fetchConversations(projectId: string): Promise { const response = await fetch(`/api/projects/${projectId}/conversations?pageSize=100`); return handleResponse(response, (data) => data as ConversationListResponse); } export async function fetchMessages(projectId: string, conversationId: string): Promise { const response = await fetch(`/api/projects/${projectId}/conversations/${conversationId}/messages?pageSize=200`); return handleResponse(response, (data) => data as MessageListResponse); } export async function updateConversation( projectId: string, conversationId: string, data: UpdateConversationRequest, ): Promise { try { const response = await fetch(`/api/projects/${projectId}/conversations/${conversationId}`, { body: JSON.stringify(data), headers: { "Content-Type": "application/json" }, method: "PATCH", }); return handleResponse(response, (data) => (data as ConversationResponse).conversation); } catch (err) { logger.error("更新会话失败", { conversationId, error: err instanceof Error ? err.message : String(err), projectId, }); throw err; } }