import type { ExecutionLeaseState, ExecutionLeaseStatus, ExecutionOwnerKind, SessionRuntimeMode, SessionRuntimeState, SessionRuntimeStatus } from "../../features/work-state/types"; export type ExecutionLeaseOwner = ExecutionOwnerKind; export type ExecutionTransitionEvent = "observe_ad_hoc_agent" | "start_plan" | "resume_plan" | "start_workflow" | "resume_workflow" | "advance_workflow_step" | "pause_owner" | "complete_owner" | "clear_owner" | "delete_session"; export type ExecutionLeaseAction = "preserve" | "upsert" | "clear" | "clear_if_owned_by_session"; export type SessionRuntimeAction = "preserve" | "upsert" | "clear"; export interface ExecutionStateTransition { event: ExecutionTransitionEvent; leaseAction: ExecutionLeaseAction; sessionAction: SessionRuntimeAction; ownerKind?: ExecutionOwnerKind; leaseStatus?: ExecutionLeaseStatus; sessionMode?: SessionRuntimeMode; sessionStatus?: SessionRuntimeStatus; foregroundAgent: "observed" | "executor" | "preserve"; note: string; } export interface ExecutionTransitionProjection { lease: ExecutionLeaseState | null; sessionRuntime: SessionRuntimeState | null; } export declare const ExecutionStateTransitions: readonly ExecutionStateTransition[]; export interface ExecutionLeaseSnapshot { owner: ExecutionLeaseOwner; ownerRef: string | null; status: ExecutionLeaseStatus; sessionId: string | null; executorAgent: string | null; hasActivePlan: boolean; hasActiveWorkflow: boolean; activePlanPaused: boolean; activeWorkflowPaused: boolean; } export interface ExecutionLeaseRepository { readExecutionLease(directory: string): ExecutionLeaseState | null; writeExecutionLease(directory: string, state: ExecutionLeaseState): boolean; clearExecutionLease(directory: string): boolean; readSessionRuntime(directory: string, sessionId: string): SessionRuntimeState | null; writeSessionRuntime(directory: string, state: SessionRuntimeState): boolean; clearSessionRuntime(directory: string, sessionId: string): boolean; getExecutionSnapshot(directory: string): ExecutionLeaseSnapshot; } export declare function getExecutionStateTransition(event: ExecutionTransitionEvent): ExecutionStateTransition; export declare function determineExecutionOwner(snapshot: Omit): ExecutionLeaseOwner; export declare function createExecutionLeaseState(input: { ownerKind: ExecutionOwnerKind; ownerRef?: string | null; status: ExecutionLeaseStatus; sessionId?: string | null; executorAgent?: string | null; startedAt?: string; updatedAt?: string; }): ExecutionLeaseState; export declare function createSessionRuntimeState(input: { sessionId: string; foregroundAgent?: string | null; mode: SessionRuntimeMode; executionRef?: string | null; status: SessionRuntimeStatus; updatedAt?: string; }): SessionRuntimeState; export declare function createExecutionLeaseSnapshot(input: { lease?: ExecutionLeaseState | null; hasActivePlan: boolean; hasActiveWorkflow: boolean; activePlanPaused: boolean; activeWorkflowPaused: boolean; }): ExecutionLeaseSnapshot; export declare function isExecutionOwnerActive(snapshot: ExecutionLeaseSnapshot, owner: ExecutionLeaseOwner): boolean; export declare function isExecutionOwnerPaused(snapshot: ExecutionLeaseSnapshot, owner: ExecutionLeaseOwner): boolean; export declare function projectExecutionTransition(input: { event: ExecutionTransitionEvent; sessionId: string; ownerRef?: string | null; executionRef?: string | null; foregroundAgent?: string | null; executorAgent?: string | null; currentLease?: ExecutionLeaseState | null; currentSessionRuntime?: SessionRuntimeState | null; at?: string; }): ExecutionTransitionProjection;