/** * Stdio Transport Detector * * Identifies stdio transport support from multiple sources: * 1. server.json manifest (packages[0].transport.type) * 2. package.json bin entries (indicates CLI/stdio) * 3. Source code scanning for transport patterns * 4. Runtime transport configuration * * This fixes Issue #172: C6/F6 incorrectly fails for valid stdio servers * because transport detection previously relied solely on serverInfo metadata. * * @module helpers/StdioTransportDetector */ import type { TransportMode } from "../config/architecturePatterns.js"; /** * Evidence source for transport detection */ export type TransportEvidenceSource = "server.json" | "package.json" | "source-code" | "runtime-config"; /** * Individual piece of transport detection evidence */ export interface TransportEvidence { /** Source of the evidence */ source: TransportEvidenceSource; /** Transport type detected */ transport: TransportMode; /** Confidence level for this evidence */ confidence: "high" | "medium" | "low"; /** Human-readable detail about the detection */ detail: string; } /** * Transport detection results */ export interface TransportDetectionResult { /** Set of detected transport modes */ detectedTransports: Set; /** Overall detection confidence */ confidence: "high" | "medium" | "low"; /** All evidence collected during detection */ evidence: TransportEvidence[]; /** Whether stdio transport is supported */ supportsStdio: boolean; /** Whether HTTP transport is supported */ supportsHTTP: boolean; /** Whether SSE transport is supported */ supportsSSE: boolean; /** Whether source code was scanned */ sourceCodeScanned: boolean; } /** * server.json structure (partial - transport fields only) */ export interface ServerJsonTransport { packages?: Array<{ transport?: { type?: string; }; }>; } /** * package.json structure (partial - bin field only) */ export interface PackageJsonBin { bin?: Record | string; } /** * Detects transport capabilities from multiple sources. * * Detection priority (highest confidence first): * 1. Runtime transport configuration (actual runtime proof) * 2. server.json transport declaration (explicit manifest) * 3. package.json bin entries (strong CLI/stdio indicator) * 4. Source code patterns (StdioServerTransport, mcp.run, etc.) * * @public */ export declare class StdioTransportDetector { /** * TypeScript/JavaScript patterns for stdio transport */ private readonly STDIO_CODE_PATTERNS; /** * Python/FastMCP patterns for stdio transport */ private readonly PYTHON_STDIO_PATTERNS; /** * HTTP/SSE transport patterns */ private readonly HTTP_CODE_PATTERNS; /** * File patterns to skip during source code scanning */ private readonly SKIP_FILE_PATTERNS; /** Maximum file size for source scanning (500KB) */ private readonly MAX_FILE_SIZE; /** * Detect transport capabilities from all available sources. * * @param sourceCodeFiles - Map of file paths to content * @param packageJson - Parsed package.json content * @param serverJson - Parsed server.json content * @param runtimeTransport - Transport type from runtime config * @returns Transport detection results */ detect(sourceCodeFiles?: Map, packageJson?: PackageJsonBin, serverJson?: ServerJsonTransport, runtimeTransport?: TransportMode): TransportDetectionResult; /** * Scan source code files for transport patterns. * * @param sourceCodeFiles - Map of file paths to content * @returns Array of evidence from source code analysis */ private scanSourceCode; /** * Check if a transport type is valid. */ private isValidTransport; /** * Check if a file should be skipped during scanning. */ private shouldSkipFile; /** * Shorten file path for display. */ private shortenPath; /** * Compute overall confidence from collected evidence. * * Confidence rules: * - High: Any high-confidence evidence present * - Medium: Only medium-confidence evidence OR multiple sources agree * - Low: No evidence or only weak patterns */ private computeConfidence; } //# sourceMappingURL=StdioTransportDetector.d.ts.map