import type { ChatConversation, ChatConversationListResponse, ChatMessage } from "@paperclipai/shared"; import { api } from "./client"; export const chatApi = { listConversations: (companyId: string, opts?: { cursor?: string; limit?: number }) => { const params = new URLSearchParams(); if (opts?.cursor) params.set("cursor", opts.cursor); if (opts?.limit) params.set("limit", String(opts.limit)); const qs = params.toString(); return api.get(`/api/companies/${companyId}/conversations${qs ? `?${qs}` : ""}`); }, createConversation: (companyId: string, data?: { title?: string }) => api.post(`/api/companies/${companyId}/conversations`, data ?? {}), getConversation: (id: string) => api.get(`/api/conversations/${id}`), updateConversation: (id: string, data: { title?: string }) => api.patch(`/api/conversations/${id}`, data), deleteConversation: (id: string) => api.delete(`/api/conversations/${id}`), archiveConversation: (id: string) => api.post(`/api/conversations/${id}/archive`, {}), unarchiveConversation: (id: string) => api.post(`/api/conversations/${id}/unarchive`, {}), pinConversation: (id: string) => api.post(`/api/conversations/${id}/pin`, {}), unpinConversation: (id: string) => api.post(`/api/conversations/${id}/unpin`, {}), listMessages: (conversationId: string, opts?: { cursor?: string; limit?: number }) => { const params = new URLSearchParams(); if (opts?.cursor) params.set("cursor", opts.cursor); if (opts?.limit) params.set("limit", String(opts.limit)); const qs = params.toString(); return api.get<{ items: ChatMessage[]; hasMore: boolean }>(`/api/conversations/${conversationId}/messages${qs ? `?${qs}` : ""}`); }, sendMessage: (conversationId: string, data: { role: string; content: string; agentId?: string | null }) => api.post(`/api/conversations/${conversationId}/messages`, data), };