import { type LivePane, type LivePaneStatus, type TmuxRunner } from "./live.js"; export type BulkSessionAction = "status" | "capture" | "ensure" | "start" | "stop" | "restart" | "doctor"; export type BulkEntryDecision = "planned" | "queued" | "skipped" | "refused"; export interface BulkSessionOptions { action: BulkSessionAction; panes: LivePane[]; openOnly?: boolean; statuses?: LivePaneStatus[]; statusFilterExplicit?: boolean; project?: string; machine?: string; localMachine?: string; dryRun?: boolean; yes?: boolean; queue?: boolean; executionEnabled?: boolean; concurrency?: number; jitterMs?: number; maxActiveAgents?: number; maxLoad1?: number; maxLoadPerCore?: number; load1?: number; cpuCount?: number; now?: Date; } export interface BulkLiveDiscoveryOptions { openOnly?: boolean; project?: string; captureLines?: number; tmuxBin?: string; runner?: TmuxRunner; } export interface BulkGuardHints { captureScope: "prefiltered"; activeAgentCount: number; selectedCount: number; selectedMachineCount: number; selectedMachines: string[]; load1: number; cpuCount: number; loadPerCore: number; maxActiveAgents: number; maxLoad1: number | null; maxLoadPerCore: number; } export interface BulkGuardDecision { ok: boolean; reasons: string[]; hints: BulkGuardHints; } export interface BulkPlanEntry { target: string; machine: string; projectSlug: string; projectPath: string | null; isOpenSession: boolean; status: LivePaneStatus; action: BulkSessionAction; decision: BulkEntryDecision; reason: string; scheduledDelayMs: number; queue: "none" | "local"; argv: string[] | null; commandPreview: string | null; lastVisibleLine: string | null; } export interface BulkSessionPlan { schemaVersion: "sessions.bulk.v1"; observedAt: string; action: BulkSessionAction; dryRun: boolean; yes: boolean; queue: boolean; executionEnabled: boolean; concurrency: number; jitterMs: number; filters: { openOnly: boolean; statuses: LivePaneStatus[] | null; project: string | null; machine: string | null; }; guard: BulkGuardDecision; summary: { totalPanes: number; selected: number; planned: number; queued: number; skipped: number; refused: number; }; entries: BulkPlanEntry[]; } export declare const BULK_SESSION_ACTIONS: BulkSessionAction[]; export declare function isBulkSessionAction(value: string): value is BulkSessionAction; export declare function parseConcurrency(value: number | string | undefined, fallback?: number): number; export declare function parseJitterMs(value: number | string | undefined, fallback?: number): number; export declare function listBulkLivePanes(options?: BulkLiveDiscoveryOptions): LivePane[]; export declare function buildBulkSessionPlan(options: BulkSessionOptions): BulkSessionPlan; export declare function buildBulkGuardDecision(selectedPanes: LivePane[], options: Pick): BulkGuardDecision; export declare function formatBulkSessionPlan(plan: BulkSessionPlan): string; //# sourceMappingURL=bulk.d.ts.map