[pull] main from danny-avila:main - #265
Merged
Merged
Conversation
* feat: carry schedule context into MCP token providers * fix: restore scheduled token context after approval pauses * fix: make scheduled identity boundaries explicit * test: keep owner-drain leases live through CI delays
* fix: Preserve Code Environments Across Approval Pauses 🧷 * test: Match Agent Request Conversation Identity 🪪
* 🧱 fix: Keep Streamed Content When a Turn Fails A failure the server reported outside the run — a rejected start on a resumed turn, an error SSE event, a lost connection — rebuilt the response row from the submission's empty placeholder, so the failure replaced the reasoning, text and tool calls that had already streamed and stood alone as if it were its own message. A failure inside the run never did this: the server appends it as an ERROR content part and the row keeps its parts. resolveErrorTurn now builds every client-constructed failure the same way: the in-flight response keeps what it streamed, less stream holes and the empty text part a run opens before its first token, and takes the failure as one more ERROR part. A turn that fails before anything streamed is still the whole row. * 🪪 fix: Keep Render Identity and Skip Empty Slots in the Failed Row The streamed tail is compacted with isEmptyContentPart, so a comparison run's type: '' placeholders and a text or think part opened before its first delta no longer count as streamed content — a run that failed before either lane produced anything is the whole-row error again. Kept parts are stamped with preserveStreamedContentIdentity before the failure is appended, as the final path stamps them, so compacting a hole does not remount the settled row; the appended part is keyed past every existing key so a carried stamp cannot collide with it. The spec fixtures are typed so the client typecheck passes. * 🛤️ fix: Keep a Comparison Lane's Placeholder When the Other Lane Streamed Empty slots now decide only whether anything streamed. Once something did, every non-hole part stays, so a comparison run whose one lane produced output before the failure keeps the other lane's type: '' placeholder — without it the parallel grouping saw a single agent and demoted the surviving output to the sequential flow under the primary agent's name. * 🪪 fix: Keep the Streamed Row's Envelope When Appending a Failure The failed row keeps the author, model, icon and creation time it streamed under and takes from the failure envelope only its metadata. A server payload names System as its sender and the schema dates a fresh envelope now; spreading either over the row changed its attribution and timestamp when only a part was being appended.
* 🪃 fix: Remember the Last Code Approval Mode The code approval dropdown reopened on "Ask before changes" after every new chat and reload. `useCodeApprovalMode` derived its selection from `conversation.codeApprovalMode ?? 'ask'`, and a new conversation never carries that field: `buildDefaultConvo` runs the last setup through `parseConvo`, whose agents schema does not pick `codeApprovalMode`, so the pick was dropped. The menu now records each pick in a localStorage-backed Jotai atom, and the hook seeds its default from it when the conversation carries no mode of its own. The remembered value is a preference and not a grant: it passes the same policy gate as a stored mode, so anything current policy no longer allows falls back to `ask`, and sign-in/sign-out clears it so a shared browser does not hand the next account a permissive default. * 🎨 style: Format the Code Approval Preference Files --------- Co-authored-by: Lia <lia@librechat.ai>
…nts Module (#15910) types/assistants.ts held ~60 exports of which only ~11 were Assistants API types. The rest were core message-content types and the Agent entity types, so schemas.ts and agents.ts both imported foundational types from a file named after the Assistants API. Split into types/tools.ts (tool primitives, action naming) and types/content.ts (message content parts, annotations, tool calls), moved the Agent entity types into the existing types/agents.ts, and left a slim Assistants-only types/assistants.ts. No behavior change: every symbol keeps its public export from the package barrel, so no consumer outside data-provider changes. Co-authored-by: Lia <lia@librechat.ai>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
See Commits and Changes for more details.
Created by
pull[bot] (v2.0.0-alpha.4)
Can you help keep this open source service alive? 💖 Please sponsor : )