import type { NormalizedUsage } from "../agents/usage.js"; import type { SessionUsageTimePoint as SharedSessionUsageTimePoint, SessionUsageTimeSeries as SharedSessionUsageTimeSeries } from "../shared/session-usage-timeseries-types.js"; export type CostBreakdown = { total?: number; input?: number; output?: number; cacheRead?: number; cacheWrite?: number; }; export type ParsedUsageEntry = { usage: NormalizedUsage; costTotal?: number; costBreakdown?: CostBreakdown; provider?: string; model?: string; timestamp?: Date; }; export type ParsedTranscriptEntry = { message: Record; role?: "user" | "assistant"; timestamp?: Date; durationMs?: number; usage?: NormalizedUsage; costTotal?: number; costBreakdown?: CostBreakdown; provider?: string; model?: string; stopReason?: string; toolNames: string[]; toolResultCounts: { total: number; errors: number; }; }; export type CostUsageTotals = { input: number; output: number; cacheRead: number; cacheWrite: number; totalTokens: number; totalCost: number; inputCost: number; outputCost: number; cacheReadCost: number; cacheWriteCost: number; missingCostEntries: number; }; type CostUsageDailyEntry = CostUsageTotals & { date: string; }; export type CostUsageSummary = { updatedAt: number; days: number; daily: CostUsageDailyEntry[]; totals: CostUsageTotals; cacheStatus?: { status: "fresh" | "partial" | "stale" | "refreshing"; cachedFiles: number; pendingFiles: number; staleFiles: number; refreshedAt?: number; }; }; export type UsageCacheStatus = NonNullable; export type SessionDailyUsage = { date: string; tokens: number; cost: number; }; export type SessionDailyMessageCounts = { date: string; total: number; user: number; assistant: number; toolCalls: number; toolResults: number; errors: number; }; export type SessionUtcQuarterHourMessageCounts = { date: string; quarterIndex: number; total: number; user: number; assistant: number; toolCalls: number; toolResults: number; errors: number; }; export type SessionUtcQuarterHourTokenUsage = { date: string; quarterIndex: number; input: number; output: number; cacheRead: number; cacheWrite: number; totalTokens: number; totalCost: number; }; export type SessionLatencyStats = { count: number; avgMs: number; p95Ms: number; minMs: number; maxMs: number; }; export type SessionDailyLatency = SessionLatencyStats & { date: string; }; export type SessionDailyModelUsage = { date: string; provider?: string; model?: string; tokens: number; cost: number; count: number; }; export type SessionMessageCounts = { total: number; user: number; assistant: number; toolCalls: number; toolResults: number; errors: number; }; export type SessionToolUsage = { totalCalls: number; uniqueTools: number; tools: Array<{ name: string; count: number; }>; }; export type SessionModelUsage = { provider?: string; model?: string; count: number; totals: CostUsageTotals; }; export type SessionCostSummary = CostUsageTotals & { sessionId?: string; sessionFile?: string; firstActivity?: number; lastActivity?: number; durationMs?: number; activityDates?: string[]; dailyBreakdown?: SessionDailyUsage[]; dailyMessageCounts?: SessionDailyMessageCounts[]; utcQuarterHourMessageCounts?: SessionUtcQuarterHourMessageCounts[]; utcQuarterHourTokenUsage?: SessionUtcQuarterHourTokenUsage[]; dailyLatency?: SessionDailyLatency[]; dailyModelUsage?: SessionDailyModelUsage[]; messageCounts?: SessionMessageCounts; toolUsage?: SessionToolUsage; modelUsage?: SessionModelUsage[]; latency?: SessionLatencyStats; }; export type DiscoveredSession = { sessionId: string; sessionFile: string; mtime: number; firstUserMessage?: string; }; export type SessionUsageTimePoint = SharedSessionUsageTimePoint; export type SessionUsageTimeSeries = SharedSessionUsageTimeSeries; export type SessionLogEntry = { timestamp: number; role: "user" | "assistant" | "tool" | "toolResult"; content: string; tokens?: number; cost?: number; }; export {};