Conversation
Add a system-prompt guardrail and inject a per-round focus hint when built-in or MCP tools fail, covering TUI, headless, and ACP loops. Fixes KlaatAI#18
|
🤖 KlaatAI Review Bot (powered by Klaatu, advisory only — a maintainer makes the real call) Issue match Test coverage Correctness concerns Verdict This is an automated review to help triage faster, not a gate. Nothing here blocks merging. |
Summary
When a tool call fails, the agent can pivot to unrelated tasks instead of retrying or asking for clarification. This PR adds a static system-prompt guardrail and injects a per-round focus hint after failed tool results.
Motivation
Fixes #18 — reported scenario: after
browser_navigate404, the model ignored the user's correction and started reading unrelated local files via MCP filesystem tools.Changes
isToolFailure()helper detecting built-inError:results, MCP errors, and non-zerorun_commandexits (excludes doom-loopRefused:guidance)TOOL_FAILURE_FOCUS_HINTinjected into API messages after any failed tool roundrepl.ts), headless agent, and ACP agent loopsTests
bun test src/agent/tool-failure-focus.test.ts— 7 passbun test— 452 passbun run typecheck— passbun run build— passNotes
This is a prompt-level guardrail, not a hard tool-category block. It follows the same injection pattern as the existing doom-loop recovery guidance. No server-side routing changes required.