From 3109189305ab105e1fa4af8831a93eb05d1c3d70 Mon Sep 17 00:00:00 2001 From: Pedram Amini Date: Wed, 4 Feb 2026 11:40:58 -0600 Subject: [PATCH] Fix EPIPE error when console stdout is disconnected Wrap console output in try-catch to gracefully handle EPIPE errors that occur when a parent process consuming output dies unexpectedly. Fixes MAESTRO-5C --- src/main/utils/logger.ts | 50 +++++++++++++++++++++++----------------- 1 file changed, 29 insertions(+), 21 deletions(-) diff --git a/src/main/utils/logger.ts b/src/main/utils/logger.ts index e7a16407..b9dc4656 100644 --- a/src/main/utils/logger.ts +++ b/src/main/utils/logger.ts @@ -167,27 +167,35 @@ class Logger extends EventEmitter { } // Also output to console for development - switch (entry.level) { - case 'error': - console.error(message, entry.data || ''); - break; - case 'warn': - console.warn(message, entry.data || ''); - break; - case 'info': - console.info(message, entry.data || ''); - break; - case 'debug': - console.log(message, entry.data || ''); - break; - case 'toast': - // Toast notifications logged with info styling (purple in LogViewer) - console.info(message, entry.data || ''); - break; - case 'autorun': - // Auto Run logs for workflow tracking (orange in LogViewer) - console.info(message, entry.data || ''); - break; + // Wrapped in try-catch to handle EPIPE errors when stdout/stderr is disconnected + // (e.g., when a parent process consuming output dies unexpectedly) + // Fixes MAESTRO-5C + try { + switch (entry.level) { + case 'error': + console.error(message, entry.data || ''); + break; + case 'warn': + console.warn(message, entry.data || ''); + break; + case 'info': + console.info(message, entry.data || ''); + break; + case 'debug': + console.log(message, entry.data || ''); + break; + case 'toast': + // Toast notifications logged with info styling (purple in LogViewer) + console.info(message, entry.data || ''); + break; + case 'autorun': + // Auto Run logs for workflow tracking (orange in LogViewer) + console.info(message, entry.data || ''); + break; + } + } catch (err) { + // Silently ignore EPIPE errors - console is disconnected + // Other errors are also ignored to prevent infinite loops } }