export type JsonRecord = Record; export interface ProviderFailure { error: string; provider: string; event: string; category: string; classification: { kind: string; retryable: boolean }; diagnostic: unknown; } export type ExtractProviderFailure = ( content: string, providerName: string ) => ProviderFailure | null; export interface PiUsageAccumulator { tokens: Record; cost: Record; } export interface PiLifecycleState { piUsage?: PiUsageAccumulator; piProtocolFailure?: ProviderFailure | null; providerFailure?: ProviderFailure | null; piLatestAssistantObserved?: boolean; pendingPiFailure?: ProviderFailure | null; piProtocolSettled?: boolean; piProtocolPrefixOmitted?: boolean; piProtocolObserved?: boolean; } export interface PiTokenUsage { inputTokens: number; outputTokens: number; cacheReadInputTokens: number; cacheCreationInputTokens: number; totalCostUsd: number; durationMs: null; modelUsage: Record>; }