/** * JSON Schema walker — extracts what the fuzzer needs to know about a * tool's argument shape. * * v0.1 supports JSON Schema Draft 7 (the dialect the official MCP * filesystem server uses). We don't validate the schema — we extract * structural facts: which keys exist, what types they declare, which * are required, which look like paths or URLs. * * Heuristic shape-detection: arg names containing `path` are flagged * path-shaped; arg names containing `url`, `origin`, `endpoint` are * URL-shaped. The classifier (week 3) will refine these heuristics. */ /** Default seed for the deterministic fuzz PRNG (matches docs/SPEC.md). */ export declare const DEFAULT_FUZZ_SEED = 12648430; /** Default per-tool fuzz budget (matches docs/SPEC.md). */ export declare const DEFAULT_FUZZ_BUDGET = 200; /** Recognised JSON Schema primitive types we generate inputs for. */ export type SchemaType = "string" | "number" | "integer" | "boolean" | "array" | "object" | "null"; export interface ToolArgFact { /** Path within the args object — e.g. ["path"], ["options", "recursive"]. */ path: string[]; /** Declared JSON Schema type. `unknown` if the schema didn't say. */ declaredType: SchemaType | "unknown"; /** Whether this arg is required (per the schema's `required` array). */ required: boolean; /** Heuristic: is this arg name path-shaped (filesystem)? */ isPathShaped: boolean; /** Heuristic: is this arg name URL-shaped (network)? */ isUrlShaped: boolean; /** Heuristic: is this arg name command-shaped (shell)? */ isCommandShaped: boolean; /** If declared as enum, the allowed values. */ enumValues?: readonly unknown[]; } export interface ToolFacts { /** Tool name. */ name: string; /** All discovered arg facts (top-level only in v0.1). */ args: ToolArgFact[]; /** Whether the schema declares no args at all (an args-less tool). */ isArgless: boolean; } /** Walk one tool's `inputSchema`. Returns structural facts. */ export declare function extractToolFacts(name: string, inputSchema: unknown): ToolFacts; //# sourceMappingURL=schema.d.ts.map