import type { AgentManager } from "../agents/manager.js"; import type { ProviderParticipantRegistry } from "../topology/provider-participants.js"; import type { FabricShellJobStore } from "./shell-jobs.js"; import { type ShellMonitorOptions } from "./shell-monitor.js"; export interface MonitorTarget { kind: "task" | "participant"; id: string; } export type MonitorEvent = "output" | "progress" | "blocked" | "terminal" | "quiet"; export interface AttachedMonitorOptions extends ShellMonitorOptions { target: MonitorTarget; events: MonitorEvent[]; quietAfterMs?: number; description?: string; } export interface MonitorParticipantSnapshot { id: string; generation: string; name: string; status: string; terminal: boolean; progress: Record; } export interface MonitorParticipants { get(id: string): MonitorParticipantSnapshot | undefined; subscribe(listener: () => void): () => void; } /** Project operational metadata only: never copy participant transcripts or thinking. */ export declare function localMonitorParticipants(agents: AgentManager, providers: ProviderParticipantRegistry): MonitorParticipants; /** Attached observers own only their task, subscriptions and timers, never their target. */ export declare class AttachedMonitors { #private; readonly jobs: FabricShellJobStore; readonly participants?: MonitorParticipants | undefined; constructor(jobs: FabricShellJobStore, participants?: MonitorParticipants | undefined); start(options: AttachedMonitorOptions, ownerId?: string, signal?: AbortSignal): Promise; close(): void; } //# sourceMappingURL=attached-monitors.d.ts.map