Răsfoiți Sursa

fix(app): more defensive session context metrics

Adam 2 luni în urmă
părinte
comite
ed472d8a67

+ 7 - 0
packages/app/src/components/session/session-context-metrics.test.ts

@@ -91,4 +91,11 @@ describe("getSessionContextMetrics", () => {
     expect(two.context?.message.id).toBe("a2")
     expect(two.totalCost).toBe(1)
   })
+
+  test("returns empty metrics when inputs are undefined", () => {
+    const metrics = getSessionContextMetrics(undefined, undefined)
+
+    expect(metrics.totalCost).toBe(0)
+    expect(metrics.context).toBeUndefined()
+  })
 })

+ 2 - 2
packages/app/src/components/session/session-context-metrics.ts

@@ -47,7 +47,7 @@ const lastAssistantWithTokens = (messages: Message[]) => {
   }
 }
 
-const build = (messages: Message[], providers: Provider[]): Metrics => {
+const build = (messages: Message[] = [], providers: Provider[] = []): Metrics => {
   const totalCost = messages.reduce((sum, msg) => sum + (msg.role === "assistant" ? msg.cost : 0), 0)
   const message = lastAssistantWithTokens(messages)
   if (!message) return { totalCost, context: undefined }
@@ -77,6 +77,6 @@ const build = (messages: Message[], providers: Provider[]): Metrics => {
   }
 }
 
-export function getSessionContextMetrics(messages: Message[], providers: Provider[]) {
+export function getSessionContextMetrics(messages: Message[] = [], providers: Provider[] = []) {
   return build(messages, providers)
 }