/** * Ralph Runner * * Executor de loops Ralph Wiggum individuais. * Gerencia iterações, detecção de COMPLETE e stall. */ import { Task, TaskResult, CriteriaValidationResult } from '../../shared/types/index.js'; /** * Opções do Ralph Runner */ export interface RalphRunnerOptions { maxIterations: number; timeout?: number; workingDirectory: string; stallDetectionIterations?: number; onIteration?: (iteration: number, output: string) => void; onComplete?: (result: TaskResult) => void; onFail?: (error: string) => void; } /** * Resultado de uma iteração */ export interface IterationResult { iteration: number; output: string; complete: boolean; criteriaResult?: CriteriaValidationResult; timestamp: string; } /** * Estado do runner */ export type RunnerState = 'idle' | 'running' | 'paused' | 'completed' | 'failed' | 'timeout'; /** * Backend de execução (interface para diferentes implementações) */ export interface ExecutionBackend { execute(prompt: string, context?: Record): Promise; } /** * Backend mock para testes */ export declare class MockExecutionBackend implements ExecutionBackend { private responses; private currentIndex; constructor(responses?: string[]); addResponse(response: string): void; execute(_prompt: string): Promise; reset(): void; } /** * Ralph Runner */ export declare class RalphRunner { private options; private backend; private state; private iterations; private abortController; constructor(backend: ExecutionBackend, options: RalphRunnerOptions); /** * Executa um loop Ralph para uma task */ run(task: Task, prompt: string): Promise; /** * Executa uma única iteração */ private executeIteration; /** * Constrói prompt com contexto da iteração */ private buildContextPrompt; /** * Detecta se o output contém COMPLETE */ detectComplete(output: string): boolean; /** * Detecta stall (falta de progresso) */ detectStall(): boolean; /** * Verifica critérios de sucesso */ private checkCriteria; /** * Pausa a execução */ pause(): void; /** * Retoma a execução */ resume(): void; /** * Aborta a execução */ abort(): void; /** * Aguarda retomada quando pausado */ private waitForResume; /** * Obtém estado atual */ getState(): RunnerState; /** * Obtém histórico de iterações */ getIterations(): IterationResult[]; /** * Obtém última iteração */ getLastIteration(): IterationResult | undefined; } /** * Cria uma instância do RalphRunner */ export declare function createRalphRunner(backend: ExecutionBackend, options: RalphRunnerOptions): RalphRunner; /** * Cria um backend mock para testes */ export declare function createMockBackend(responses?: string[]): MockExecutionBackend; //# sourceMappingURL=ralph-runner.d.ts.map