mirror of
https://github.com/warpdotdev/warp.git
synced 2026-05-06 15:22:21 +08:00
## Description Fixes APP-4002 <img width="444" height="303" alt="Screenshot 2026-04-28 at 5 42 20 PM" src="https://github.com/user-attachments/assets/1c45e5fa-1a20-4aa9-8666-c6d59b781fa5" /> This is a defensively coded UI in case something else leads to missing file contexts. <img width="469" height="113" alt="Screenshot 2026-04-28 at 5 40 44 PM" src="https://github.com/user-attachments/assets/f2bd2c03-c529-49a2-8c6c-4d1efdc37544" /> When an LLM requests a `read_files` tool call with line ranges entirely beyond EOF (e.g., lines 1891–2090 of a 1237-line file), the client returns `ReadFilesResult::Success { files: [] }` — the file silently vanishes from the result. This renders as an empty box with a green checkmark in the blocklist UI. **Root cause:** `TextFileAccumulator::flush_range` only emitted a segment on final flush for whole-file reads (`final_flush && self.whole_file`). For ranged reads where no lines fall within the requested range, the buffer stays empty and no segment is emitted. The file ends up in neither `file_contexts` nor `missing_files`. **Fix:** 1. **Primary:** Change `flush_range` to always emit a segment on final flush (`!self.buf.is_empty() || final_flush`), so every requested range produces a `TextFileSegment` even when entirely past EOF. 2. **Defensive:** Add rendering fallback that shows a red X error box with "Failed to read files" when `ReadFilesResult::Success` has empty `file_contexts`, preventing empty boxes for any future edge case. 3. **Tests:** Updated existing test and added two new tests covering out-of-bounds ranges on non-empty files. ## Testing - Updated `empty_file_with_ranges_produces_no_segment` → `empty_file_with_ranges_produces_empty_segment` (expects 1 segment with empty content) - Added `range_past_eof_produces_empty_segment` — 5-line file, range 10..15 - Added `multiple_ranges_some_past_eof` — 5-line file, ranges [1..3, 10..15] - All 23 text_file_reader tests pass - `cargo fmt` and `cargo clippy` clean ## Agent Mode - [x] Warp Agent Mode - This PR was created via Warp's AI Agent Mode ## Changelog Entries for Stable CHANGELOG-BUG-FIX: Fixed read_files tool showing an empty box when the LLM requests line ranges beyond the end of a file. --- [Conversation](https://staging.warp.dev/conversation/ef9f9688-ca1e-4eb3-b29a-35c5c13e80da) | [Plan](https://staging.warp.dev/drive/notebook/lAlU2uG6KN5y96mdmk8wYL) Co-Authored-By: Oz <oz-agent@warp.dev> Co-authored-by: Oz <oz-agent@warp.dev>