diff --git a/packages/client/src/api/hermes/chat.ts b/packages/client/src/api/hermes/chat.ts index a6f51cc..d882553 100644 --- a/packages/client/src/api/hermes/chat.ts +++ b/packages/client/src/api/hermes/chat.ts @@ -28,6 +28,11 @@ export interface RunEvent { preview?: string timestamp?: number error?: string + usage?: { + input_tokens: number + output_tokens: number + total_tokens: number + } } export async function startRun(body: StartRunRequest): Promise { diff --git a/packages/client/src/api/hermes/sessions.ts b/packages/client/src/api/hermes/sessions.ts index 240477b..786c8ef 100644 --- a/packages/client/src/api/hermes/sessions.ts +++ b/packages/client/src/api/hermes/sessions.ts @@ -94,3 +94,26 @@ export async function renameSession(id: string, title: string): Promise return false } } + +export async function fetchSessionUsage(ids: string[]): Promise> { + if (ids.length === 0) return {} + const params = new URLSearchParams() + params.set('ids', ids.join(',')) + return request(`/api/hermes/sessions/usage?${params}`) +} + +export async function fetchSessionUsageSingle(id: string): Promise<{ input_tokens: number; output_tokens: number } | null> { + try { + return await request<{ input_tokens: number; output_tokens: number }>(`/api/hermes/sessions/${id}/usage`) + } catch { + return null + } +} + +export async function fetchContextLength(profile?: string): Promise { + const params = new URLSearchParams() + if (profile) params.set('profile', profile) + const query = params.toString() + const res = await request<{ context_length: number }>(`/api/hermes/sessions/context-length${query ? `?${query}` : ''}`) + return res.context_length +} diff --git a/packages/client/src/components/hermes/chat/ChatInput.vue b/packages/client/src/components/hermes/chat/ChatInput.vue index f3e1fcd..dd3ba77 100644 --- a/packages/client/src/components/hermes/chat/ChatInput.vue +++ b/packages/client/src/components/hermes/chat/ChatInput.vue @@ -1,8 +1,11 @@