From e92b4806293637ccc2dabd7437722279549cbb7d Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Fri, 2 Jan 2026 11:40:55 +0000 Subject: [PATCH] fix(signal): surface signal-cli failures as errors --- src/signal/daemon.test.ts | 9 +++++++++ src/signal/daemon.ts | 2 ++ 2 files changed, 11 insertions(+) diff --git a/src/signal/daemon.test.ts b/src/signal/daemon.test.ts index 4940fc8b7..134605f10 100644 --- a/src/signal/daemon.test.ts +++ b/src/signal/daemon.test.ts @@ -16,6 +16,15 @@ describe("classifySignalCliLogLine", () => { expect(classifySignalCliLogLine("ERROR Something")).toBe("error"); }); + it("treats failures without explicit severity as error", () => { + expect( + classifySignalCliLogLine("Failed to initialize HTTP Server - oops"), + ).toBe("error"); + expect(classifySignalCliLogLine('Exception in thread "main"')).toBe( + "error", + ); + }); + it("returns null for empty lines", () => { expect(classifySignalCliLogLine("")).toBe(null); expect(classifySignalCliLogLine(" ")).toBe(null); diff --git a/src/signal/daemon.ts b/src/signal/daemon.ts index 0bd382f9c..ca1b01b60 100644 --- a/src/signal/daemon.ts +++ b/src/signal/daemon.ts @@ -23,6 +23,8 @@ export function classifySignalCliLogLine(line: string): "log" | "error" | null { if (!trimmed) return null; // signal-cli commonly writes all logs to stderr; treat severity explicitly. if (/\b(ERROR|WARN|WARNING)\b/.test(trimmed)) return "error"; + // Some signal-cli failures are not tagged with WARN/ERROR but should still be surfaced loudly. + if (/\b(FAILED|SEVERE|EXCEPTION)\b/i.test(trimmed)) return "error"; return "log"; }