/** * Random testing model built on the faux provider. * * Generates deterministic, structured LLM-like responses that exercise the * full observational memory pipeline (observer → reflector → pruner → compaction) * without real LLM API calls. * * The model inspects the tool definitions in the context to decide what kind * of response to generate: * - `record_observations` → generates observation batches with source entry IDs * - `record_reflections` → generates reflection proposals with supporting IDs * - `drop_observations` → generates drop-lists with observation IDs * - No tool / unknown → generates plain text */ import { type FauxProviderRegistration } from "../../sdk/ai/providers/faux.js"; import { SeededRandom } from "./seeded-random.js"; export interface RandomModelConfig { /** Seed for reproducible sequences. Default: 42. */ seed?: number; /** Target character count per assistant text response. Default: 500. */ textTargetChars?: number; /** Number of observation batches per observer run. Default: 2-4 (random). */ observationBatches?: { min: number; max: number; }; /** Observations per batch. Default: 2-5 (random). */ observationsPerBatch?: { min: number; max: number; }; /** Number of reflection batches per reflector pass. Default: 1-3. */ reflectionBatches?: { min: number; max: number; }; /** Reflections per batch. Default: 1-3. */ reflectionsPerBatch?: { min: number; max: number; }; /** Number of drop calls per pruner pass. Default: 1-3. */ prunerDropCalls?: { min: number; max: number; }; /** IDs to drop per call. Default: 1-5. */ prunerIdsPerCall?: { min: number; max: number; }; /** Tokens per second for streaming simulation. Default: 0 (instant). */ tokensPerSecond?: number; } export interface RandomModelRegistration { provider: FauxProviderRegistration; config: Required; /** The seeded RNG for direct use by tests. */ rng: SeededRandom; } /** * Register a deterministic random model as a faux provider. * * The model automatically detects which tools are in the context and generates * appropriate structured responses for the observer, reflector, and pruner. * * @example * ```typescript * const testModel = createRandomModel({ seed: 123 }); * // Use testModel.provider.getModel() in agentLoop calls * // After testing: testModel.provider.unregister() * ``` */ export declare function createRandomModel(config?: RandomModelConfig): RandomModelRegistration; //# sourceMappingURL=random-model.d.ts.map