/** * VerificationNotifier - Non-blocking OS dialog for verification codes (Issue #522) * * Spawns native OS dialogs to display verification codes directly to the human. * The code is NEVER returned to the LLM via MCP tool responses. * * Why a separate service instead of reusing DisplayService? * - DisplayService uses execSync (blocking). We need non-blocking spawn so * the MCP response returns immediately. * - DI-injectable for testability (integration tests run headless, can mock/spy). * - Clean separation: DisplayService owns cross-platform dialog mechanics, * VerificationNotifier owns the "fire-and-forget, never block the server" concern. * * @since v1.1.0 */ /** * Interface for verification code display. * Implementations must NEVER return or log the code itself. */ export interface IVerificationNotifier { /** Fire-and-forget: show the code in an OS dialog. Never throws. */ showCode(code: string, reason: string): void; /** Whether the current platform supports OS dialogs. */ isAvailable(): boolean; } export declare class VerificationNotifier implements IVerificationNotifier { /** * Display the verification code via a native OS dialog. * * - Uses child_process.spawn with detached + unref for true fire-and-forget * - Never throws (catches all errors internally) * - Never logs the code itself */ showCode(code: string, reason: string): void; isAvailable(): boolean; private spawnMacOS; private spawnLinux; private spawnWindows; private hasLinuxDialogTool; } //# sourceMappingURL=VerificationNotifier.d.ts.map