import { Agent, Runnable } from './agent.js'; /** * 순수 함수를 워크플로우 단계로 감싼다. * 전처리/후처리처럼 모델이 필요 없는 단계를 chain 사이에 끼울 때 쓴다. */ export declare function step(run: (input: string) => string | Promise, name?: string): Runnable; /** * 순차 실행. 앞 단계의 출력이 다음 단계의 입력이 된다. * * ```ts * const pipeline = chain(writer, editor, translator) * ``` */ export declare function chain(...steps: Array): Runnable; export interface ParallelOptions { /** 결과 합치기. 기본값은 에이전트 이름을 소제목으로 붙여 이어붙인다. */ reduce?: (results: Array, input: string) => string | Promise; } /** * 같은 입력을 여러 단계에 동시에 흘리고 결과를 합친다. * * 합칠 때 모델이 필요하면 reduce 대신 chain으로 이어라: * `chain(parallel([a, b, c]), summarizer)` */ export declare function parallel(steps: Array, options?: ParallelOptions): Runnable; export interface RouterOptions { /** 분류를 담당할 에이전트. generate()를 쓰므로 Agent여야 한다. */ classifier: Agent; /** 라우트 이름 → 실행 단계 */ routes: Record; /** 분류 실패 시 대체 경로. 없으면 에러를 던진다. */ fallback?: Runnable; /** 각 라우트가 어떤 요청을 받아야 하는지 설명. 정확도를 크게 올린다. */ descriptions?: Record; } /** * 입력을 분류해 알맞은 단계 하나에만 넘긴다. * 분류는 JSON Schema enum으로 강제하므로 라우트 이름 밖의 값이 나오지 않는다. */ export declare function router(options: RouterOptions): Runnable; export interface RefineOptions { /** 결과물을 만드는 단계 */ worker: Runnable; /** 점수와 피드백을 매기는 에이전트 */ evaluator: Agent; /** 최대 시도 횟수(최초 작성 포함) */ maxRounds?: number; /** 이 점수 이상이면 조기 종료 (0~100) */ minScore?: number; /** 라운드마다 진행 상황 관찰용 */ onRound?: (round: number, draft: string, score: number, feedback: string) => void; } /** * evaluator-optimizer 루프. * worker가 초안을 쓰고 evaluator가 채점하며, 점수가 기준에 닿을 때까지 다시 쓴다. */ export declare function refine(options: RefineOptions): Runnable;