import type { TaskContextManager } from "./task_context.js";
/**
 * 工作区状态唤醒 — 解决前端对话窗口刷新导致 UUID 内存丢失的问题。
 *
 * 核心能力:
 * 1. 扫描 .soloforge/state/ 目录，找到最后处于 In Progress 的工单
 * 2. 反序列化工单上下文，重新加载到内存
 * 3. 向用户播报当前进度，实现上下文断点续传
 * 4. 检测可恢复性、清理孤儿租约、多工单时提示人工选择
 *
 * 强制前置: 系统启动或建立新会话时必须调用 scanAndResume()
 */
/** 不可恢复原因 */
export type UnrecoverableReason = "classifying" | "corrupt_json" | "missing_file";
/** 唤醒结果 */
export interface ResumeResult {
    /** 是否发现可恢复的工单 */
    resumed: boolean;
    /** 恢复的工单信息 */
    task?: {
        task_id: string;
        intent: string;
        status: string;
        created_at: string;
        phase_hint: string;
        recoverable: boolean;
        unrecoverable_reason?: UnrecoverableReason;
    };
    /** 播报消息（向用户展示） */
    broadcast: string;
    /** state 目录中的工单总数 */
    total_tasks: number;
    /** 处于活跃状态的工单数 */
    active_tasks: number;
    /** 多个活跃工单时需要人工选择 */
    needs_human_confirm: boolean;
    /** 所有活跃工单摘要（needs_human_confirm=true 时有值） */
    active_candidates?: Array<{
        task_id: string;
        intent: string;
        status: string;
        created_at: string;
        phase_hint: string;
    }>;
    /** 清理的孤儿租约数量 */
    orphan_leases_cleaned: number;
}
/**
 * 扫描工作区状态目录，恢复最后活跃的工单。
 *
 * 增强能力:
 * - recoverable: 标识任务是否实际可恢复（classifying / corrupt → 不可恢复）
 * - needs_human_confirm: 多个活跃工单时返回 true，附带候选列表
 * - orphan_leases_cleaned: 清理无对应任务文件的孤儿租约
 *
 * @param taskContext - 任务上下文管理器
 * @returns 唤醒结果
 */
export declare function scanAndResume(taskContext: TaskContextManager): Promise<ResumeResult>;
/**
 * 清理超期活跃任务 — advisory 报告，不自动 fail。
 * @param taskContext - 任务上下文管理器
 * @param maxAgeMs - 最大存活时间（毫秒），默认 7 天
 * @returns 清理报告（不执行任何状态变更）
 */
export declare function cleanupStaleTasks(taskContext: TaskContextManager, maxAgeMs?: number): Promise<CleanupReport>;
export interface StaleTaskInfo {
    task_id: string;
    intent: string;
    status: string;
    created_at: string;
    age_ms: number;
    advisory: string;
}
export interface CleanupReport {
    stale_tasks: StaleTaskInfo[];
    stale_count: number;
    recommendation: string;
}
//# sourceMappingURL=workspace_resumer.d.ts.map