export type ApprovalDecision = "approve" | "deny" | "timeout"; export interface ApprovalRequest { id?: string; prompt: string; score?: number; timeoutMinutes?: number; metadata?: Record; } export interface ApprovalResult { id: string; decision: ApprovalDecision; source: "channel_callback" | "timeout"; metadata?: Record; } export type ManualOverrideCommand = string; export interface ParsedCommand { command: ManualOverrideCommand; args: string[]; raw: string; } export interface NotificationChannel { sendMessage(text: string): Promise; sendSummary(summary: Record): Promise; sendScreenshot(input: { photoPath: string; caption?: string; }): Promise; requestApproval(request: ApprovalRequest): Promise; poll(): Promise<{ approvals: ApprovalResult[]; commands: ParsedCommand[]; }>; }