export type TaskAction = 'navigate' | 'pick' | 'place' | 'teach' | 'run_program' | 'io_write';
export interface TaskCommand {
    sessionId: string;
    connectionId: string;
    ipcIp: string;
    targetType: 'agv' | 'arm' | 'both';
    action: TaskAction;
    target: string;
    params: Record<string, string | number | boolean>;
    riskLevel: 'low' | 'medium' | 'high';
}
export interface DispatchCommandReq {
    sessionId: string;
    modality?: 'text' | 'audio' | 'video';
    text?: string;
    audioBase64?: string;
    videoBase64?: string;
    hintText?: string;
    highRiskConfirmed?: boolean;
    highRiskConfirmNote?: string;
}
export interface DispatchCommandResp {
    command: TaskCommand;
    task: RuntimeTask;
    execution: {
        accepted: boolean;
        message: string;
        data?: Record<string, unknown>;
        state?: 'accepted' | 'pending_confirmation' | 'rejected';
        code?: string;
        confirmation?: {
            confirmText?: string;
            note?: string;
        };
        recommendedQuestions?: Array<{
            question: string;
            similarity: number;
        }>;
    };
}
export interface PlannerPlan {
    planId: string;
    commands: TaskCommand[];
    summary: string;
}
export interface SkillExecutionTrace {
    skillId: string;
    module: string;
    version: string;
    status: 'success' | 'failed' | 'skipped';
    attempts: number;
    startedAt: string;
    endedAt: string;
    durationMs: number;
    timeoutMs: number;
    input?: Record<string, unknown>;
    output?: Record<string, unknown>;
    error?: string;
}
export interface RuntimeTaskExecutionReport {
    framework: 'openclaw' | 'hermes' | 'native';
    startedAt: string;
    endedAt: string;
    totalDurationMs: number;
    traces: SkillExecutionTrace[];
}
export interface RuntimeTask {
    taskId: string;
    sessionId: string;
    status: 'created' | 'running' | 'failed' | 'stopped' | 'completed';
    createdAt: string;
    updatedAt: string;
    executionReport?: RuntimeTaskExecutionReport;
    error?: string;
}
