import type { PreparedInstruction } from '../instruction/prepared-instruction.js'; import type { AgentResponse, FallbackContext, LoopMonitorConfig, WorkflowMaxSteps, WorkflowState, WorkflowStep } from '../../models/types.js'; import type { RuntimeStepResolution, StepProviderInfo, StepRunResult, WorkflowAbortResult, WorkflowEngineOptions, WorkflowRunResult } from '../types.js'; import type { WorkflowRuleTransition } from './transitions.js'; import { type StepSpanParams } from '../observability/workflowSpans.js'; import type { QualityGateRunResult } from '../quality-gates/types.js'; import type { PreparedNormalStepExecution } from './StepExecutor.js'; import type { WorkflowCallExecutionToken } from './WorkflowCallRunner.js'; import { type WorkflowStepAbortSignalContext, type WorkflowStepInactivityDeadline } from './step-deadline.js'; interface SingleWorkflowIterationResult { response: AgentResponse; nextStep: string; isComplete: boolean; returnValue?: string; loopDetected?: boolean; abort?: WorkflowAbortResult; } interface WorkflowRunLoopDeps { state: WorkflowState; options: WorkflowEngineOptions; getWorkflowName: () => string; getTask: () => string; getCurrentWorkflowStack: () => StepSpanParams['workflowStack']; getCwd: () => string; getMaxSteps: () => WorkflowMaxSteps; getReportDir: () => string; abortRequested: () => boolean; getStep: (name: string) => WorkflowStep; beginStepDeadline?: (step: WorkflowStep, runtime: RuntimeStepResolution | undefined, stepIteration: number) => WorkflowStepInactivityDeadline; refreshStepDeadline?: (step: WorkflowStep, runtime: RuntimeStepResolution | undefined, stepIteration: number) => WorkflowStepInactivityDeadline; disposeStepDeadline?: (step: WorkflowStep, stepIteration: number) => void; disposeAllStepDeadlines?: () => void; stepAbortSignalContext?: WorkflowStepAbortSignalContext; applyRuntimeEnvironment: (stage: 'step') => void; loopDetectorCheck: (stepName: string) => { shouldWarn?: boolean; shouldAbort?: boolean; count: number; isLoop: boolean; }; cycleDetectorRecordAndCheck: (stepName: string, nextStep: string) => { triggered: boolean; monitor?: LoopMonitorConfig; cycleCount: number; }; resolveDoneTransition: (step: WorkflowStep, response: AgentResponse) => WorkflowRuleTransition; runLoopMonitorJudge: (monitor: LoopMonitorConfig, cycleCount: number, triggeringStep: WorkflowStep, triggeringRuntime: RuntimeStepResolution | undefined, fallbackNextStep: string) => Promise; runStep: (step: WorkflowStep, prebuiltInstruction?: PreparedInstruction, runtime?: RuntimeStepResolution, stepIteration?: number, preparedExecution?: PreparedNormalStepExecution, workflowCallExecution?: WorkflowCallExecutionToken) => Promise; runQualityGates: (options: { qualityGates: WorkflowStep['qualityGates']; projectRoot: string; step: WorkflowStep; childProcessEnv?: Readonly>; observabilityEnabled: boolean; runId?: string; workflowName?: string; }) => Promise; persistPreviousResponseSnapshot: (state: WorkflowState, stepName: string, stepIteration: number, content: string) => void; prepareInstruction: (step: WorkflowStep, stepIteration: number, fallbackContext?: FallbackContext) => PreparedInstruction; buildPhase1Instruction: (step: WorkflowStep, instruction: string, runtime?: RuntimeStepResolution) => string; /** Engine が通常 agent ステップに渡す、実行前に一度だけ確定した入力。 */ prepareNormalStepExecution: (step: WorkflowStep, stepIteration: number, runtime?: RuntimeStepResolution) => Promise; resolveStepProviderModel: (step: WorkflowStep, runtime?: RuntimeStepResolution) => StepProviderInfo; /** auto-routing ルーター・promotion 評価への入力専用(補完前の解決)。 */ resolveStepProviderModelBeforeAutoRouting: (step: WorkflowStep, runtime?: RuntimeStepResolution) => StepProviderInfo; resolveRuntimeForStep: (step: WorkflowStep) => RuntimeStepResolution | undefined; claimStepOccurrence: (step: WorkflowStep) => number; setActiveStep: (step: WorkflowStep, iteration: number, occurrence: number) => WorkflowCallExecutionToken | undefined; cancelPendingStepActivation: () => void; addUserInput: (input: string) => void; emit: (event: string, ...args: unknown[]) => void; updateMaxSteps: (maxSteps: number) => void; } export declare function runWorkflowToCompletion(deps: WorkflowRunLoopDeps): Promise; export declare function runSingleWorkflowIteration(deps: WorkflowRunLoopDeps): Promise; export {}; //# sourceMappingURL=WorkflowRunLoop.d.ts.map