import type { AssistantMessage, StopReason, Usage } from "@mariozechner/pi-ai"; export type StreamModelDescriptor = { api: string; provider: string; id: string; }; export function buildZeroUsage(): Usage { return { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, totalTokens: 0, cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 }, }; } export function buildAssistantMessageWithZeroUsage(params: { model: StreamModelDescriptor; content: AssistantMessage["content"]; stopReason: StopReason; timestamp?: number; }): AssistantMessage { return { role: "assistant", content: params.content, stopReason: params.stopReason, api: params.model.api, provider: params.model.provider, model: params.model.id, usage: buildZeroUsage(), timestamp: params.timestamp ?? Date.now(), }; } export function buildStreamErrorAssistantMessage(params: { model: StreamModelDescriptor; errorMessage: string; timestamp?: number; }): AssistantMessage & { stopReason: "error"; errorMessage: string } { return { ...buildAssistantMessageWithZeroUsage({ model: params.model, content: [], stopReason: "error", timestamp: params.timestamp, }), stopReason: "error", errorMessage: params.errorMessage, }; }