From 30e1b421bab49901cb443967f98c9872ecd44d1d Mon Sep 17 00:00:00 2001 From: Dustin Healy Date: Sat, 9 Aug 2025 10:27:28 -0700 Subject: [PATCH] feat: add data-service layer --- packages/data-provider/src/api-endpoints.ts | 3 +++ packages/data-provider/src/data-service.ts | 4 ++++ packages/data-provider/src/types.ts | 15 +++++++++++++++ 3 files changed, 22 insertions(+) diff --git a/packages/data-provider/src/api-endpoints.ts b/packages/data-provider/src/api-endpoints.ts index be3f2a62a2..3097b0891c 100644 --- a/packages/data-provider/src/api-endpoints.ts +++ b/packages/data-provider/src/api-endpoints.ts @@ -66,6 +66,9 @@ export const messages = (params: q.MessagesListParams) => { export const messagesArtifacts = (messageId: string) => `${messagesRoot}/artifacts/${messageId}`; +export const conversationCosts = (conversationId: string) => + `/api/messages/${conversationId}/costs`; + const shareRoot = `${BASE_URL}/api/share`; export const shareMessages = (shareId: string) => `${shareRoot}/${shareId}`; export const getSharedLink = (conversationId: string) => `${shareRoot}/link/${conversationId}`; diff --git a/packages/data-provider/src/data-service.ts b/packages/data-provider/src/data-service.ts index 7116f0d7c3..337a0af894 100644 --- a/packages/data-provider/src/data-service.ts +++ b/packages/data-provider/src/data-service.ts @@ -697,6 +697,10 @@ export function getMessagesByConvoId(conversationId: string): Promise { + return request.get(endpoints.conversationCosts(conversationId)); +} + export function getPrompt(id: string): Promise<{ prompt: t.TPrompt }> { return request.get(endpoints.getPrompt(id)); } diff --git a/packages/data-provider/src/types.ts b/packages/data-provider/src/types.ts index c01db59c17..caf429a820 100644 --- a/packages/data-provider/src/types.ts +++ b/packages/data-provider/src/types.ts @@ -653,3 +653,18 @@ export type TBalanceResponse = { lastRefill?: Date; refillAmount?: number; }; + +export type TConversationCosts = { + conversationId: string; + totals: { + prompt: { usd: number; tokenCount: number }; + completion: { usd: number; tokenCount: number }; + total: { usd: number; tokenCount: number }; + }; + perMessage: Array<{ + messageId: string; + tokenType: 'prompt' | 'completion'; + tokenCount: number; + usd: number; + }>; +};