fix(app): more defensive session context metrics
This commit is contained in:
@@ -91,4 +91,11 @@ describe("getSessionContextMetrics", () => {
|
|||||||
expect(two.context?.message.id).toBe("a2")
|
expect(two.context?.message.id).toBe("a2")
|
||||||
expect(two.totalCost).toBe(1)
|
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()
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -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 totalCost = messages.reduce((sum, msg) => sum + (msg.role === "assistant" ? msg.cost : 0), 0)
|
||||||
const message = lastAssistantWithTokens(messages)
|
const message = lastAssistantWithTokens(messages)
|
||||||
if (!message) return { totalCost, context: undefined }
|
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)
|
return build(messages, providers)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user