fix: add log hint for agent failure (#1550) (thanks @sweepies)

This commit is contained in:
Peter Steinberger
2026-01-24 02:54:22 +00:00
parent e6fdbae79b
commit b6591c3f69
3 changed files with 11 additions and 7 deletions

View File

@@ -97,7 +97,7 @@ afterEach(() => {
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"));
vi.mocked(runEmbeddedPiAgent).mockRejectedValue(new Error("sandbox is not defined."));
const res = await getReplyFromConfig(
{
@@ -111,7 +111,7 @@ describe("trigger handling", () => {
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.",
"⚠️ Agent failed before reply: sandbox is not defined.\nLogs: clawdbot logs --follow",
);
expect(runEmbeddedPiAgent).toHaveBeenCalledOnce();
});

View File

@@ -507,14 +507,17 @@ export async function runAgentTurnWithFallback(params: {
}
defaultRuntime.error(`Embedded agent failed before reply: ${message}`);
const trimmedMessage = message.replace(/\.\s*$/, "");
const fallbackText = isContextOverflow
? "⚠️ Context overflow — prompt too large for this model. Try a shorter message or a larger-context model."
: isRoleOrderingError
? "⚠️ Message ordering conflict - please try again. If this persists, use /new to start a fresh session."
: `⚠️ Agent failed before reply: ${trimmedMessage}.\nLogs: clawdbot logs --follow`;
return {
kind: "final",
payload: {
text: isContextOverflow
? "⚠️ Context overflow — prompt too large for this model. Try a shorter message or a larger-context model."
: isRoleOrderingError
? "⚠️ Message ordering conflict - please try again. If this persists, use /new to start a fresh session."
: `⚠️ Agent failed before reply: ${message}\nCheck gateway logs for details.`,
text: fallbackText,
},
};
}