diff --git a/src/auto-reply/reply.triggers.test.ts b/src/auto-reply/reply.triggers.test.ts index 9a0395708..ef85f92fd 100644 --- a/src/auto-reply/reply.triggers.test.ts +++ b/src/auto-reply/reply.triggers.test.ts @@ -131,6 +131,30 @@ describe("trigger handling", () => { }); }); + it("includes the error cause when the embedded agent throws", async () => { + await withTempHome(async (home) => { + vi.mocked(runEmbeddedPiAgent).mockRejectedValue( + new Error("sandbox is not defined"), + ); + + const res = await getReplyFromConfig( + { + Body: "hello", + From: "+1002", + To: "+2000", + }, + {}, + makeCfg(home), + ); + + const text = Array.isArray(res) ? res[0]?.text : res?.text; + expect(text).toBe( + "⚠️ Agent failed before reply: sandbox is not defined. Check gateway logs for details.", + ); + expect(runEmbeddedPiAgent).toHaveBeenCalledOnce(); + }); + }); + it("uses heartbeat model override for heartbeat runs", async () => { await withTempHome(async (home) => { vi.mocked(runEmbeddedPiAgent).mockResolvedValue({ diff --git a/src/auto-reply/reply.ts b/src/auto-reply/reply.ts index c866dcc6e..ebd840e4f 100644 --- a/src/auto-reply/reply.ts +++ b/src/auto-reply/reply.ts @@ -2291,7 +2291,7 @@ export async function getReplyFromConfig( return finalizeWithFollowup({ text: isContextOverflow ? "⚠️ Context overflow - conversation too long. Starting fresh might help!" - : "⚠️ Agent failed. Check gateway logs.", + : `⚠️ Agent failed before reply: ${message}. Check gateway logs for details.`, }); }