import { type AgentLaunchConfiguration } from './lifecycle-summary.js'; import type { SessionBackendId } from './config.js'; export type FleetCommandDecision = 'allow' | 'deny' | 'unsupported'; export type FleetCommandOutcomeClass = 'success' | 'validation' | 'denied' | 'runtime' | 'timeout' | 'proxy' | 'delivery'; export declare class FleetCliExit extends Error { readonly exitCode: number; readonly outcomeClass: FleetCommandOutcomeClass; readonly effect: 'not_started' | 'completed' | 'unknown'; constructor(exitCode: number, outcomeClass?: FleetCommandOutcomeClass, effect?: 'not_started' | 'completed' | 'unknown'); } export type FleetAuditPresentation = { kind: 'agent_started'; eventId: string; id: string; name: string; lifetime: 'permanent' | 'temporary'; brain: string; role: string; harness: string; session: SessionBackendId; model?: string; permissions?: string; parent: string; actionId: string; inherited: string[]; configuration?: AgentLaunchConfiguration; } | { kind: 'task'; operation: 'create' | 'start' | 'work' | 'block' | 'unblock' | 'review' | 'done' | 'cancel' | 'finish' | 'delete' | 'settling'; eventId: string; id: string; title?: string; previousState?: string; newState: string; template?: string; roomId?: string; roomName?: string; reason?: string; revision?: string; list?: string; agents: Array<{ name: string; brain?: string; role: string; permissions?: string; configuration?: AgentLaunchConfiguration; }>; } | { kind: 'room'; operation: 'create' | 'activate' | 'close' | 'delete'; eventId: string; id: string; previousState?: string; newState: string; revision?: string; name?: string; template?: string; taskId?: string; anonymous?: boolean; memberCount?: number; ownerAttached?: boolean; participants: Array<{ name: string; id?: string; brain?: string; role: string; permissions?: string; configuration?: AgentLaunchConfiguration; }>; } | { kind: 'lifecycle_failure'; eventId: string; resource: 'Agent' | 'Task' | 'Room'; id: string; label?: string; state: string; category: 'provision_failed' | 'provision_pending' | 'readiness_failed' | 'settlement_failed' | 'settlement_pending' | 'cleanup_failed' | 'cleanup_pending'; }; /** Commands are Owner-silent unless they record one of these semantic lifecycle kinds. */ export declare const FLEET_LIFECYCLE_EVENT_KINDS: readonly ["agent_started", "task", "room", "lifecycle_failure"]; /** Stable semantic dedupe basis: resource kind + stable resource ID + transition/action ID. */ export declare function lifecycleEventDigestBasis(value: FleetAuditPresentation): string; export declare function beginFleetAuditCollection(): void; export declare function setFleetAuditLifecycleCheckpoint(checkpoint: ((presentations: FleetAuditPresentation[]) => Promise) | undefined): void; /** * Deliver already-recorded lifecycle events while a managed command is still * running. On a failed checkpoint the events remain in the final audit batch, * so a temporary Owner-channel outage loses timing, never the notice itself. */ export declare function checkpointFleetAuditPresentations(): Promise; export declare function recordFleetAuditResource(kind: 'agent' | 'task' | 'room', id: string | undefined): void; type FleetAuditPresentationInput = FleetAuditPresentation extends infer T ? T extends FleetAuditPresentation ? Omit & { eventId?: string; } : never : never; /** Immutable, single-line human label captured before mutable Task/Room state can disappear. */ export declare function fleetPresentationLabel(value: unknown): string | undefined; export declare function recordFleetAuditPresentation(value: FleetAuditPresentationInput): void; export declare function recordFleetAuditFailure(failure: { class: FleetCommandOutcomeClass; effect: 'not_started' | 'completed' | 'unknown'; }): void; export declare function consumeFleetAuditCollection(): { resourceIds?: Record; presentations?: FleetAuditPresentation[]; failure?: { class: FleetCommandOutcomeClass; effect: 'not_started' | 'completed' | 'unknown'; }; }; export interface FleetCommandClassification { command: string; route: string; decision: FleetCommandDecision; } export interface FleetAuditAttempt { version: 1; correlationId: string; requestId: string; caller: string; invokedAt: string; classification: FleetCommandClassification; argv: string[]; invocation: 'sending' | 'delivered' | 'uncertain'; outcome?: { completedAt: string; class: FleetCommandOutcomeClass; exitCode?: number; effect: 'not_started' | 'completed' | 'unknown'; delivery: 'sending' | 'delivered' | 'uncertain'; resourceIds?: Record; presentations?: FleetAuditPresentation[]; }; } export declare const fleetProxyCommandInventory: Readonly<{ [k: string]: string[]; }>; export declare const fleetProxyTopLevelInventory: Readonly<{ safeRead: string[]; agent: string[]; public: string[]; denied: string[]; hidden: string[]; aliases: string[]; }>; /** Classify before Commander parsing. Unknown and internal paths fail closed. */ export declare function classifyFleetArgv(argv: readonly string[]): FleetCommandClassification; /** Faithful ordered argv with deterministic structural redaction. */ export declare function redactFleetArgv(argv: readonly string[]): string[]; /** Durable write-once attempt ledger; contains redacted argv only. */ export declare class FleetCommandAuditStore { private readonly path; private readonly deps; private attempts; constructor(path: string, deps?: { now(): Date; uuid(): string; }); list(): readonly FleetAuditAttempt[]; begin(requestId: string, caller: string, argv: readonly string[]): FleetAuditAttempt; invocation(correlationId: string, caller: string, delivery: 'delivered' | 'uncertain'): FleetAuditAttempt; finish(correlationId: string, caller: string, outcome: Omit, 'completedAt' | 'delivery'>): FleetAuditAttempt; outcome(correlationId: string, caller: string, delivery: 'delivered' | 'uncertain'): FleetAuditAttempt; private owned; private persist; } export declare function validateFleetAuditBegin(value: unknown): asserts value is { requestId: string; argv: string[]; }; export declare function validateFleetAuditFinish(value: unknown): asserts value is { correlationId: string; class: FleetCommandOutcomeClass; exitCode?: number; effect: 'not_started' | 'completed' | 'unknown'; resourceIds?: Record; presentations?: FleetAuditPresentation[]; }; export declare function validateFleetAuditPresentations(value: unknown): asserts value is FleetAuditPresentation[]; /** Compact Owner presentation. It intentionally has no command, argv, environment, or correlation data. */ export declare function renderFleetLifecycleEvent(value: FleetAuditPresentation): string; export {};