LibreChat/api/server/controllers/agents
Danny Avila ff3f5fdbb4 🧷 fix: Close five gaps where an upload succeeded but reached nothing usable
A failed read of the deferred-provisioning query returned an empty list, which is
indistinguishable from nothing needing provisioning. The turn then built no
provisioning state and let the tool run without the attachment, defeating the
abort the callback performs for exactly that case. The failure now surfaces.

The OpenAI-compatible controllers passed neither the liveness probe nor the code
credential loader, so an expired sandbox reference looked usable on those
surfaces and no replacement upload was queued.

The native text reader decodes whatever bytes it is given as UTF-8, which is
meaningful only for types that are already text. An administrator routing images
to text on a deployment without OCR reached it and stored mojibake as the file's
text. It is now offered only for natively readable types, so a missing extractor
surfaces as an error instead of as nonsense content. This also guards the class
generally rather than one MIME type at a time.

A permanent agent image upload went to the image pipeline, which always stores a
message attachment and never files anything against the agent, so the request
reported success and left an orphan. Permanent uploads now take the agent path,
where that outcome is decided rather than assumed.

Dropping a file still opened the destination chooser in unified mode while the
attach button no longer shows one, so the same file could be delivered
differently depending on how it was added. The drop handler now follows the mode.
The paste heuristic keeps reading the viable options, since it asks a different
question about whether a text context is available.
2026-08-31 20:53:59 -04:00
..
__tests__ 🏗️ refactor: Move provisioning into the TypeScript workspace 2026-08-31 15:20:54 -04:00
callbacks.background.spec.js 🛂 feat: Filter Model-Bound Content by Source (#14425) 2026-08-21 22:43:32 -04:00
callbacks.js 🗿 feat: Add Attached Stateful Code Environments (#15352) 2026-08-30 15:38:45 -04:00
client.js 🧬 perf: Evolve Compaction Guidance on Warm Turns (#15371) 2026-08-30 17:11:20 -04:00
client.test.js 🧬 perf: Evolve Compaction Guidance on Warm Turns (#15371) 2026-08-30 17:11:20 -04:00
errors.js 🧾 fix: Honor Disabled Transactions on the Assistants Usage Path (#15100) 2026-08-25 08:30:12 -04:00
filterAuthorizedTools.spec.js 🔗 fix: Resolve MCP Tool-Key Boundary Against Configured Server Names (#14448) 2026-07-27 14:45:38 -04:00
openai.js 🧷 fix: Close five gaps where an upload succeeded but reached nothing usable 2026-08-31 20:53:59 -04:00
protocol.js 🛫 refactor: Promote Generation Protocol V2 Automatically (#15324) 2026-08-28 17:17:09 -04:00
recordCollectedUsage.spec.js
request.js 🎠 refactor: Route Every Event Actor Turn Through One Lifecycle (#15325) 2026-08-28 17:30:23 -04:00
responses.js 🧷 fix: Close five gaps where an upload succeeded but reached nothing usable 2026-08-31 20:53:59 -04:00
resume.js 🛄 feat: Restore Compaction Guidance Across Continuations (#15356) 2026-08-30 08:13:24 -04:00
steer.js 🛫 refactor: Promote Generation Protocol V2 Automatically (#15324) 2026-08-28 17:17:09 -04:00
v1.js 🗿 feat: Add Attached Stateful Code Environments (#15352) 2026-08-30 15:38:45 -04:00
v1.spec.js 🗿 feat: Add Attached Stateful Code Environments (#15352) 2026-08-30 15:38:45 -04:00