/**
 * agent-dir-scanner.ts
 *
 * Scan a directory for AI agent source files and classify them by provider
 * and framework. Pure function — no disk writes, only reads + directory walk.
 *
 * F-NEW-PRODUCT-AGENT-DIR-WRAPPER slice 1
 * @connexum/ai-governance
 */
import { ScanBudget } from './scan-limits';
export interface LineRange {
    start: number;
    end: number;
    match: string;
}
export interface DetectedAgent {
    /** 'auto-' + first 12 hex chars of sha256(filePath + firstMatchedPattern) */
    agentId: string;
    /** Relative to agentDir */
    filePath: string;
    language: 'python' | 'typescript' | 'javascript';
    provider: string | null;
    framework: string | null;
    lineRanges: LineRange[];
    wrapMode: 'shim';
    packs: string[];
    /**
     * Explicit agent name when the agent was declared by a `manifest.json`
     * (the fleet convention). For code-signature detections this is omitted and
     * the name is derived from the file basename downstream.
     */
    name?: string;
    /** True when this agent came from a declarative manifest.json, not a code scan. */
    fromManifest?: boolean;
    /**
     * Declared tool names from a manifest.json (e.g. 'Bash', 'WebFetch'). Captured
     * so the platform's OWASP/ASI analysis can grade real tool surface, not just a
     * file path. Safe metadata only — never raw source (Invariant 10).
     */
    tools?: string[];
    /** Declared MCP server URIs/ids from a manifest.json. Safe metadata. */
    mcpServers?: string[];
}
/**
 * Recursively scan `dirPath` for Python / TS / JS files that contain AI
 * provider or framework imports. Returns one DetectedAgent per file that
 * matches at least one signature.
 *
 * Pure function: no disk writes, no async I/O.
 *
 * Accepts an optional shared {@link ScanBudget} that enforces hard caps
 * (file count, recursion depth, per-file size, wall-clock time) so the walk
 * can never run away on a customer's machine. When omitted, a default budget
 * is created; callers that need the report (e.g. the CLI) pass their own.
 */
export declare function scanAgentDirectory(dirPath: string, budget?: ScanBudget): DetectedAgent[];
//# sourceMappingURL=agent-dir-scanner.d.ts.map