/** * Reflection — iterative self-refinement via critic + revise. * * Paper: "Self-Refine: Iterative Refinement with Self-Feedback" — * Madaan et al., 2023 (https://arxiv.org/abs/2303.17651). * * Pattern: Factory (GoF) → produces a `Runner` built from a `Loop` * whose body is `Sequence(Propose → Critique → Revise)`. * Role: patterns/ layer. Pure composition — no new abstractions. * Emits: Loop's composition.iteration_start / iteration_exit plus * every inner LLMCall's stream.llm_start/end. */ import type { LLMProvider } from '../adapters/types.js'; import type { Runner } from '../core/runner.js'; export interface ReflectionOptions { readonly provider: LLMProvider; readonly model: string; /** System prompt for the initial / revision proposer. */ readonly proposerPrompt: string; /** * System prompt for the critic. Should instruct the critic to return * "DONE" (or a consumer-chosen sentinel) when the proposal is good * enough — that string is checked by `untilCritiqueContains` to stop * the refinement loop. */ readonly criticPrompt: string; /** * Stop string the critic should emit when satisfied. When the critic's * response contains this substring, the loop exits and the last * proposal is returned. Default: 'DONE'. */ readonly untilCritiqueContains?: string; /** Max refinement iterations. Default 3. */ readonly maxIterations?: number; readonly temperature?: number; readonly maxTokens?: number; readonly name?: string; readonly id?: string; } /** * Build a Reflection Runner. Each iteration: * 1. Propose — LLMCall writes a candidate answer based on the input * 2. Critique — LLMCall judges the candidate; exit marker stops loop * 3. Revise — next iteration's propose sees the previous critique * * Each iteration's output (the candidate proposal) becomes the next * iteration's input. The final iteration's proposal is returned. */ export declare function reflection(opts: ReflectionOptions): Runner<{ message: string; }, string>; //# sourceMappingURL=Reflection.d.ts.map