import type { AgentResponse, LoopMonitorConfig, WorkflowMaxSteps, WorkflowResumePointEntry, WorkflowState, WorkflowStep } from '../../models/types.js'; import type { InternalAgentSeats } from '../../models/config-types.js'; import type { RuntimeStepResolution, StepProviderInfo } from '../types.js'; import type { OptionsBuilder } from './OptionsBuilder.js'; import type { StepExecutor } from './StepExecutor.js'; import { type WorkflowStepAbortSignalContext } from './step-deadline.js'; interface LoopMonitorJudgeRunnerDeps { optionsBuilder: OptionsBuilder; stepExecutor: StepExecutor; stepAbortSignalContext: WorkflowStepAbortSignalContext; state: WorkflowState; task: string; getMaxSteps: () => WorkflowMaxSteps; language?: string; updatePersonaSession: (persona: string, sessionId: string | undefined) => void; resolveNextStepFromDone: (step: WorkflowStep, response: AgentResponse) => string; onStepStart: (step: WorkflowStep, iteration: number, instruction: string, providerInfo: StepProviderInfo | undefined, resumeStepName: string, stepIteration: number) => WorkflowResumePointEntry[]; onStepComplete: (step: WorkflowStep, response: AgentResponse, instruction: string, resumeStepName: string, workflowStack: WorkflowResumePointEntry[]) => void; emitCollectedReports: () => void; resetCycleDetector: () => void; /** runtime.yaml internal_agents の解決済み seat。`loop-judge` seat だけを消費する。 */ internalAgentSeats?: InternalAgentSeats; } export declare class LoopMonitorJudgeRunner { private readonly deps; constructor(deps: LoopMonitorJudgeRunnerDeps); run(monitor: LoopMonitorConfig, cycleCount: number, triggeringStep: WorkflowStep, triggeringRuntime: RuntimeStepResolution | undefined, fallbackNextStep: string): Promise; private createJudgeStep; /** * 判定役(judge)の provider/model を決める。 * * 優先順位は (1) judge ステップの通常解決で得られる provider_routing.* や * persona_providers.loop-judge、(2) どちらも無い場合だけ * トリガー元(ループを踏んだステップ)の解決済み provider/model(rate-limit フォールバック * 後の値を含む)。 * * (3) を既定の挙動にしてしまうと「実装した本人が自分のループの健全性を判定する」ことになり * 監視が機能しない(実測: coder の qwen3-coder-next が 4 回とも「健全」と判定し、56 周・ * 9 時間走り続けた)。そのため runtime を渡さずに judge ステップ単体の通常解決を先に取り、 * そこに明示指定が無かった場合だけトリガー元へフォールバックする。 * * judge ステップ自体の通常解決とトリガー元の解決を分離し、最後に共通 resolver で * 優先順位を決める。 */ private resolveJudgeRuntime; private buildDefaultInstruction; } export {}; //# sourceMappingURL=LoopMonitorJudgeRunner.d.ts.map