export type TraceEventType = | "run.start" | "run.end" | "interaction.start" | "interaction.end" | "turn.start" | "turn.end" | "llm.request" | "llm.response" | "tool.request" | "tool.response" | "trace.warning"; export interface TraceContext { sessionId: string; runId: string; interactionId?: string; turnId?: string; spanId?: string; parentSpanId?: string; } export interface TraceEnvelope extends TraceContext { schemaVersion: 1; seq: number; eventId: string; timestamp: string; type: TraceEventType; payload: unknown; } export interface TraceConfig { enabled: boolean; autoOpen: boolean; persistence: boolean; contentMode: "full"; viewerPort: number; retentionDays: number; maxProjectBytes: number; maxQueueBytes: number; } export interface Clock { now(): Date; } export interface IdSource { next(): string; } export type TraceControlCommand = "status" | "open" | "on" | "off"; export type TraceSubsystemStatus = "disabled" | "starting" | "active" | "failed"; export interface TraceStatus { enabled: boolean; persistence: TraceSubsystemStatus; viewer: TraceSubsystemStatus; runId?: string; tracePath?: string; viewerUrl?: string; warnings: readonly string[]; } export interface ViewerReadyMessage { type: "ready"; port: number; }