/** * BuildInfoService - Provides build and runtime information * Separated from main index.ts to avoid making that file larger * * SECURITY FIX (PR #614): * 1. DMCP-SEC-004: FALSE POSITIVE SUPPRESSION - No user input Unicode normalization needed * This service only processes system information (git, package.json, environment variables) * The MCP tool 'get_build_info' takes NO parameters (empty inputSchema) * No user-provided data flows through this service that requires Unicode normalization */ import { IFileOperationsService } from './FileOperationsService.js'; import type { StartupTimer, StartupReport } from '../telemetry/StartupTimer.js'; import { type PermissionHookDiagnosticRecord, type PermissionHookHealthSummary, type PermissionHookStartupRepairSummary } from '../utils/permissionHooks.js'; export interface BuildInfo { sessionId: string; runtimeSessionId: string; sessionSource: 'env' | 'derived'; package: { name: string; version: string; }; build: { timestamp?: string; type: 'git' | 'npm' | 'unknown'; gitCommit?: string; gitBranch?: string; }; runtime: { nodeVersion: string; platform: string; arch: string; uptime: number; memoryUsage: NodeJS.MemoryUsage; }; environment: { nodeEnv?: string; isProduction: boolean; isDevelopment: boolean; isDebug: boolean; isDocker: boolean; dockerInfo?: string; }; server: { startTime: Date; uptime: number; mcpConnection: boolean; }; permissionHooks?: { health: PermissionHookHealthSummary; installedHosts: string[]; currentHosts: string[]; repairedHosts: string[]; needsRepairHosts: string[]; diagnosticsPath: string; lastDiagnostic: PermissionHookDiagnosticRecord | null; lastStartupRepair: PermissionHookStartupRepairSummary | null; }; /** Issue #706: Startup timing and readiness status. */ startup?: { status: 'ready' | 'initializing'; deferredSetupComplete: boolean; uptimeMs: number; startupTimingMs?: StartupReport; }; } export declare class BuildInfoService { private readonly startTime; private readonly fileOperations; /** Issue #706: Optional startup timer for timing instrumentation. */ private startupTimer; /** Issue #706: Callback to check deferred setup status. */ private deferredSetupChecker; constructor(fileOperations: IFileOperationsService); /** * Issue #706: Wire in startup instrumentation after DI is ready. * Called from Container to avoid circular dependency at registration time. */ setStartupTimer(timer: StartupTimer): void; /** * Issue #706: Wire in deferred setup status checker. */ setDeferredSetupChecker(checker: () => boolean): void; /** * Get comprehensive build information * SECURITY NOTE: This method processes only system-generated data * No user input is involved - all data comes from filesystem, git, and Node.js process * * Uses Promise.allSettled to collect partial results even if some sources fail, * providing maximum information availability with graceful degradation. */ getBuildInfo(): Promise; /** * Format build info as user-friendly markdown * SECURITY NOTE: Only formats system-generated data - no user input processing * All input data comes from getBuildInfo() which only reads system information */ formatBuildInfo(info: BuildInfo): string; /** * SECURITY NOTE: No Unicode normalization needed - executes system git commands * Data source: Git CLI output (system-controlled), no user input */ private getGitInfo; /** * SECURITY NOTE: No Unicode normalization needed - reads container runtime files * Data source: System cgroup files (container-controlled), no user input */ private getDockerInfo; private formatUptime; private formatMemory; } //# sourceMappingURL=BuildInfoService.d.ts.map