/** * Optional *structured* polish for known scanner outputs (nmap open ports, * ffuf hits, …). There is **no** generic keyword-ranker — arbitrary shell/fs * output is never "reduced" by guessing what looks interesting. * * Philosophy (clai): * - Eliminate noise at the **command** (flags, matchers, quiet modes). * - Long runs → durable background jobs with live artifact files; model uses * shell.tail / head+tail / full file when needed. * - Model context gets honest head+tail + artifact path, not invented omissions. */ import type { Reducer, ReducerOutput } from "../reducers/types.js"; interface PolicyContext { toolName: string; command?: string | undefined; argv?: string[] | undefined; } /** * Structured reducers only for tools that emit parseable *findings*. * Returns null when the caller should use raw head+tail (default for all * other tools — including shell.exec whoami, npm, ls, …). */ export declare function pickReducer(context: PolicyContext): Reducer | null; export declare function reduceToolOutput(raw: string, context: PolicyContext): ReducerOutput; /** True when a specialized (non-identity) reducer will run. */ export declare function hasStructuredReducer(context: PolicyContext): boolean; export {};