/** * The model call G4 was designed around and never had. * * `trigger-eval.ts` takes its judge as a parameter so scoring stays testable * without a model, and nothing in the tree ever passed one — so every G4 run * has reported `not-run` since it was written. This is that judge. * * It is deliberately in its own module rather than inside `trigger-eval.ts`: * the eval is pure and testable, this reaches the network, and the same * separation lets the agent-selection eval reuse the judge without pulling in * the plugin gate machinery. * * ## Why one call for all prompts * * The judge sees every candidate and every prompt at once. Per-prompt calls * would be cleaner to reason about, but the question being scored is * comparative — "which of these fires" — and batching keeps the candidate list * identical across prompts, which is the thing that must not vary. It also * makes the cost proportional to the corpus rather than to the case count. */ import { type Model } from "@kolisachint/hoocode-ai"; import type { TriggerCandidate, TriggerJudge, TriggerJudgeVerdict } from "./trigger-eval.js"; /** * Read the verdict list back, positionally. * * Returns one entry per prompt no matter what came back: a missing or * unparseable row becomes null (read as "nothing fired") rather than shifting * every later verdict onto the wrong prompt. `runTriggerEval` rejects a * length mismatch outright, so the alternative to filling the gaps is * discarding the whole run — and a hallucinated capability name is a real * signal about the candidate list, not a reason to throw the batch away. */ export declare function parseTriggerVerdicts(response: string, candidates: readonly TriggerCandidate[], promptCount: number): TriggerJudgeVerdict[]; export interface TriggerJudgeDeps { model: Model; apiKey?: string; headers?: Record; signal?: AbortSignal; } /** A {@link TriggerJudge} backed by a real model. */ export declare function createLlmTriggerJudge(deps: TriggerJudgeDeps): TriggerJudge; //# sourceMappingURL=trigger-judge.d.ts.map