$ the-wire · showcase
Two laravel/ai fixes: tool statuses survive reloads, uploads survive requests
By RepoJournal · Filed · About Laravel
laravel/ai merged two fixes today: one keeps tool result failure statuses across conversation reloads, and the other copies uploaded files to a managed path so their contents persist beyond the request.
laravel/ai merged a fix [1] so tool result stream events no longer lose their success, failure, or denial status when the conversation is reloaded. Previously, the persisted ToolResult payload did not retain that metadata, making failed results indistinguishable from successful ones after a reload. The change keeps the status on the ToolResult value object, serializes only non-default fields, and remains compatible with legacy payloads. The authors say validation includes failing-fi[1] and the merge commit describes it as "Preserve tool result failure status across conversations" [2].
A second merged fix [3] addresses a regression where `Files::put(UploadedFile)` and `Store::add(UploadedFile)` only stored the file's pathname, so the underlying upload temp file was deleted when the request ended, causing `content()` to throw `RuntimeException: File does not exist`. The fix copies the upload to a managed temp path, making content readable even after the request. The merge commit records it as "Copy uploaded files to a managed temp path so their contents survive the request" [4].
Action items
References
- [1] Preserve tool result failure status across conversations ↗ laravel/ai
- [2] Merge pull request #812 from drewmt/fix/tool-result-status-persistence ↗ laravel/ai
- [3] Copy uploaded files to a managed temp path so their contents survive the request ↗ laravel/ai
- [4] Merge pull request #959 from sulimanbenhalim/fix/uploaded-file-deferred-content ↗ laravel/ai