From 5eae570daf17d7b1d5ae1257714419f1938eba6c Mon Sep 17 00:00:00 2001 From: Gucc1 <1006490933@qq.com> Date: Tue, 2 Jun 2026 18:37:50 +0800 Subject: [PATCH] fix(read_file): normalize empty pages string to prevent validation loop When some models/providers emit `pages: ""` instead of omitting the field, parsePdfPageRange rejects it and triggers invalid_tool_input. After 3 consecutive failures the agent_tool_error_loop circuit breaker terminates the session. Treat blank pages values the same as omitted before validation runs. Closes #108 Co-authored-by: Cursor --- src/tool/builtin/readFile.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/tool/builtin/readFile.ts b/src/tool/builtin/readFile.ts index e3d470d9..8b9724e2 100644 --- a/src/tool/builtin/readFile.ts +++ b/src/tool/builtin/readFile.ts @@ -94,6 +94,10 @@ export function createReadFileTool(): PilotDeckToolDefinition { issues: [{ path: "limit", code: "invalid_schema", message: "limit must be greater than or equal to 0." }], }; } + if (typeof input.pages === "string" && input.pages.trim().length === 0) { + const { pages: _pages, ...rest } = input; + input = rest as ReadFileInput; + } if (input.pages !== undefined) { const parsed = parsePdfPageRange(input.pages); if (!parsed) {