import type { SessionSnapshot, TurnOutcome } from '../session/types.js'; import type { OwnerTaskPhase } from './tasks.js'; export type OwnerUpdatePhase = 'working' | 'approval' | 'blocked'; /** * The one conspicuous, stable prefix every relayed ACP live comment carries, so * an owner can tell at a glance exactly which messages `/comments` controls. * It is fleet-authored and applied after the commentary safety checks, so it can * never be spoofed away by model content. */ export declare const OWNER_COMMENT_LABEL = "\uD83D\uDFE1 Live update:"; /** Effective live-comment relay state of one running owner channel. */ export interface OwnerCommentsState { /** Live effective value for this running session. */ enabled: boolean; /** The fleet.yaml `owner_channel.comments` value, restored on every restart. */ baseline: boolean; /** False when this session's backend never emits ACP commentary at all. */ supported: boolean; } export type OwnerProgressPhase = 'starting request' | 'waiting behind earlier requests' | 'working on request' | 'planning next step' | 'using tools' | 'reviewing tool results' | 'drafting response' | 'waiting for approval' | 'resuming after permission decision' | 'recovering from session error'; export declare const ownerNotices: { receivedStarted: () => string; receivedQueued: (queuedBehind: number) => string; receivedInterrupting: () => string; /** * The honest answer when the agent is mid-task and pre-empting it would have * corrupted the conversation. Says "not started yet" rather than borrowing * `receivedInterrupting`'s claim that something was cancelled for this * request. */ receivedDeferred: () => string; status: (role: string, snapshot: SessionSnapshot) => string; interrupted: (role: string) => string; /** The turn IS cancelled — say how, without implying the owner must retry. */ interruptForced: (role: string) => string; interruptFailed: (role: string) => string; commandStarted: (command: string) => string; commandOutcome: (command: string, outcome: TurnOutcome, output?: string) => string; commandFailed: (command: string) => string; commandUnsupported: (command: string, harness: string) => string; restarting: (role: string, command: string, mode: "keep" | "fresh") => string; startupHandoffFailed: (role: string, identity: string) => string; attachmentRejected: (reason: string) => string; attachmentFailed: () => string; deliveryFailed: (role: string) => string; progress: (elapsedMs: number, phase: OwnerProgressPhase, started: number, completed: number, activityUpdates?: number) => string; /** The labeled form of one relayed ACP live comment. */ comment: (message: string) => string; comments: (state: OwnerCommentsState) => string; authoredUpdate: (phase: OwnerUpdatePhase, message: string) => string; taskReport: (phase: OwnerTaskPhase, message: string) => string; relayQueued: () => string; relayRefused: (reason: string) => string; completedWithoutText: () => string; terminal: (outcome: TurnOutcome) => "✅ Request completed." | "🛑 Request was cancelled before completion." | "⚠️ The agent declined this request." | "⚠️ Request failed before completion." | "⚠️ Request ended without a confirmed completion."; chunk: (part: number, total: number) => string; };