From 0db6f62a2dee2e75eb6ea6c5142e26e61ec4ed3a Mon Sep 17 00:00:00 2001 From: janole Date: Mon, 22 Sep 2025 20:52:42 +0200 Subject: [PATCH 1/5] fix: add error level handling to ErrorMessage class and constructor --- src/ai/custom-messages.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/ai/custom-messages.ts b/src/ai/custom-messages.ts index 24df355..85300c9 100644 --- a/src/ai/custom-messages.ts +++ b/src/ai/custom-messages.ts @@ -27,7 +27,7 @@ export abstract class CustomMessage { if (obj._type === "error") { - return new ErrorMessage(obj.content, obj.error); + return new ErrorMessage(obj.content, obj.level, obj.error); } else if (obj._type === "tool-progress") { @@ -41,6 +41,7 @@ export abstract class CustomMessage class ErrorMessage extends CustomMessage { content: string; + level: "debug" | "warn" | "error"; error?: { name: string; @@ -48,11 +49,12 @@ class ErrorMessage extends CustomMessage stack?: string; }; - constructor(content: string, error?: Error | ErrorMessage["error"]) + constructor(content: string, level: ErrorMessage["level"] = "error", error?: Error | ErrorMessage["error"]) { super("error"); this.content = content; + this.level = level; if (error) { @@ -201,3 +203,4 @@ export setMessageIsStreaming, ToolProgressMessage, }; + From adea269b8150385aadcaf58e0914de2491020cff Mon Sep 17 00:00:00 2001 From: janole Date: Mon, 22 Sep 2025 20:53:22 +0200 Subject: [PATCH 2/5] feat: add addError method to append error messages in ChatSession --- src/ai/session/session.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/ai/session/session.ts b/src/ai/session/session.ts index 3417006..f133bdd 100644 --- a/src/ai/session/session.ts +++ b/src/ai/session/session.ts @@ -173,6 +173,11 @@ export class ChatSession implements IChatSession this.notifyListeners(); }; + addError = (message: string, level: ErrorMessage["level"], error: ErrorMessage["error"]): void => + { + this.setMessages([...this.messages, new ErrorMessage(message, level, error)]); + }; + #isWorking = false; private set isWorking(isWorking: boolean) From 3954ed1a8025553cf4d1cde2097977690dad1b36 Mon Sep 17 00:00:00 2001 From: janole Date: Mon, 22 Sep 2025 20:53:31 +0200 Subject: [PATCH 3/5] fix: replace console.error with addError for session save failure logging --- src/ai/session/session.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ai/session/session.ts b/src/ai/session/session.ts index f133bdd..b21e4b6 100644 --- a/src/ai/session/session.ts +++ b/src/ai/session/session.ts @@ -303,7 +303,7 @@ export class ChatSession implements IChatSession }) .catch((error) => { - console.error("ERROR: Session save failed!", error); + this.addError("Saving session failed", "error", error); }); return this._saveQueue; From 5a5db30be7063825a4feee8bef02485b154cd64b Mon Sep 17 00:00:00 2001 From: janole Date: Mon, 22 Sep 2025 20:53:42 +0200 Subject: [PATCH 4/5] fix: provide correct error level to ErrorMessage constructor instances in ai work module --- src/ai/work.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/ai/work.ts b/src/ai/work.ts index 70bc90d..1eb756e 100644 --- a/src/ai/work.ts +++ b/src/ai/work.ts @@ -33,7 +33,7 @@ async function work(props: WorkProps) if (!stream) { - messages.push(new ErrorMessage(`ERROR: ${error?.message || error?.toString() || "llm.stream(...) failed."}`, error)); + messages.push(new ErrorMessage(`ERROR: ${error?.message || error?.toString() || "llm.stream(...) failed."}`, "error", error)); return messages; } @@ -63,7 +63,7 @@ async function work(props: WorkProps) if (!result || error) { - messages.push(new ErrorMessage(`ERROR: ${error?.message || error?.toString() || "llm.generate(...) failed."}`, error)); + messages.push(new ErrorMessage(`ERROR: ${error?.message || error?.toString() || "llm.generate(...) failed."}`, "error", error)); return messages; } @@ -201,7 +201,7 @@ function addFailedToolCallMessage(error: string | Error, toolCall: { id?: string } else { - messages.push(new ErrorMessage(content, (error instanceof Error) ? error : undefined)); + messages.push(new ErrorMessage(content, "error", (error instanceof Error) ? error : undefined)); } } From 136873a9edec199ac8898f33a9865bc0a6f40078 Mon Sep 17 00:00:00 2001 From: janole Date: Mon, 22 Sep 2025 20:58:09 +0200 Subject: [PATCH 5/5] refactor: remove addError method and inline error message addition in save catch block --- src/ai/session/session.ts | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/ai/session/session.ts b/src/ai/session/session.ts index b21e4b6..0eb1e30 100644 --- a/src/ai/session/session.ts +++ b/src/ai/session/session.ts @@ -173,11 +173,6 @@ export class ChatSession implements IChatSession this.notifyListeners(); }; - addError = (message: string, level: ErrorMessage["level"], error: ErrorMessage["error"]): void => - { - this.setMessages([...this.messages, new ErrorMessage(message, level, error)]); - }; - #isWorking = false; private set isWorking(isWorking: boolean) @@ -303,7 +298,10 @@ export class ChatSession implements IChatSession }) .catch((error) => { - this.addError("Saving session failed", "error", error); + this.setMessages([ + ...this.messages, + new ErrorMessage("Saving session failed", "error", error) + ]); }); return this._saveQueue;