/** * The Critic's model seam. The rest of the Critic depends only on this small * interface, so every non-LLM path is unit-testable with {@link StubCritiqueModel} * and no subscription call. * * THE REAL IMPLEMENTATION (deferred — needs the maintainer's go-ahead + install): * a client backed by the Claude Agent SDK (`@anthropic-ai/claude-agent-sdk`), * running on the maintainer's Claude Max subscription (individual use). It calls * `query({ prompt, options })` with ALL built-in tools disabled (`allowedTools: * []`) — the Critic only reasons over the context we pass in — and concatenates * the assistant text. Auth is the Claude Code OAuth flow (`claude` login or * `CLAUDE_CODE_OAUTH_TOKEN`); `ANTHROPIC_API_KEY` must be UNSET or it shadows the * OAuth token and reverts to pay-per-token. See docs/prd-slice-2-critic.md. */ import type { CritiquePrompt } from './prompt.js'; export interface CritiqueModel { /** Model identifier, recorded on the Critique for reproducibility. */ readonly name: string; /** Return the model's raw text response to the prompt. */ complete(prompt: CritiquePrompt): Promise; } /** * A deterministic stand-in for tests and offline development: returns a fixed * response (or a sequence, one per call) without any network or subscription. */ export declare class StubCritiqueModel implements CritiqueModel { readonly name: string; private readonly responses; private calls; constructor(response: string | string[], name?: string); complete(_prompt: CritiquePrompt): Promise; /** How many times the model was asked to complete (useful in tests). */ get callCount(): number; }