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, }; + diff --git a/src/ai/session/session.ts b/src/ai/session/session.ts index 3417006..0eb1e30 100644 --- a/src/ai/session/session.ts +++ b/src/ai/session/session.ts @@ -298,7 +298,10 @@ export class ChatSession implements IChatSession }) .catch((error) => { - console.error("ERROR: Session save failed!", error); + this.setMessages([ + ...this.messages, + new ErrorMessage("Saving session failed", "error", error) + ]); }); return this._saveQueue; 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)); } }