import type { SubagentRecord } from "#src/types"; /** * Snapshot of live subagent activity (from status poller or enhanced session parser). */ export interface ActivitySnapshot { /** Name of the tool currently being executed, if any. */ currentTool?: string; /** Live activity phase for the cast lane (idle | thinking | tool). */ activityPhase?: "idle" | "thinking" | "tool"; /** Current turn count from the session file. */ turnCount?: number; /** Last response text snippet. */ responseText?: string; /** ISO-8601 timestamp of the most recent event. */ lastActivity?: string; } /** * Observer interface for subagent lifecycle events. * * Implementations receive notifications when subagent state changes. * Multiple observers can be registered via CompositeObserver. */ export interface SubagentObserver { /** Called when a new subagent record is created (status = "pending"). */ onSubagentCreated(record: SubagentRecord): void; /** Called when a subagent transitions to "running". */ onSubagentStarted(record: SubagentRecord): void; /** Called when a subagent reaches a terminal state (completed/failed/crashed). */ onSubagentCompleted(record: SubagentRecord): void; /** Called when new activity data arrives (from status poller or session parser). */ onSubagentActivity(record: SubagentRecord, activity: ActivitySnapshot): void; } /** * Composite observer that fans out notifications to multiple consumers. * * Each method calls all registered observers in registration order. * Errors in one observer do not affect others. */ export declare class CompositeObserver implements SubagentObserver { private observers; /** * Register a new observer. Registered observers receive all lifecycle events. */ addObserver(observer: SubagentObserver): void; /** * Remove a previously registered observer. */ removeObserver(observer: SubagentObserver): void; /** * Remove all observers. */ clear(): void; /** Number of registered observers. */ get observerCount(): number; onSubagentCreated(record: SubagentRecord): void; onSubagentStarted(record: SubagentRecord): void; onSubagentCompleted(record: SubagentRecord): void; onSubagentActivity(record: SubagentRecord, activity: ActivitySnapshot): void; } //# sourceMappingURL=observer.d.ts.map