[pull] main from danny-avila:main - #256
Merged
Merged
Conversation
* Propagate host cancellation through API tool execution * Preserve selected signal ownership across every API ingress
* Restore attached workspaces from the resolved owner conversation * Carry restored conversation through lazy tool initialization * fix: Resolve Workspace State From Effective Conversation * style: Format Conversation Regression Cases * test: Retain Real Workspace Resolver In Controller Fixtures * test: Exercise Workspace Envelope Conversation Identity
* 🪢 fix: Keep One Code File per Sandbox Destination Codeapi mounts a by-ref input at the filename recorded on the stored object (the file server's Content-Disposition) and only falls back to the `name` sent in `/exec` when that header is absent. The `<stem>-<hash>` alias `claimCodeDestination` handed to an older same-name file was therefore remapped onto the bare name inside the sandbox, and the whole request was rejected with "Conflicting input destinations" — on every later turn, because nothing came back to collapse the pair. Any conversation in which code rewrote an uploaded file in place, or the user re-uploaded a file under its original name, lost code execution for good. `primeFiles` now reserves each destination with `reserveCodeDestination` in newest-content-first order and skips the files that lose, before the freshness probe so a dropped file is never re-uploaded. This is the same collapse `seedCodeFilesIntoSessions` and `ToolNode.updateCodeSession` already apply. The spec stub mirrors the real directory-prefix rule so the ancestor case is covered at this layer too. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * fix: preserve stored sandbox destinations during priming * test: remove unused mock transport imports * fix: recover unnamed legacy inputs and converted images safely * fix: keep freshness decisions paired with mount destinations * fix: align recovery destinations with upload and route boundaries * style: format upload receipt regression fixture * fix: distinguish stored paths from proposed recovery paths * fix: preserve lazy provisioning destination priority and recovery names * fix: reconcile recovery names with live code destinations * fix: distinguish recoverable destinations from superseded scoped content * fix: guard optional request user in recovery scope check --------- Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com> Co-authored-by: Danny Avila <danny@librechat.ai>
* Trace BYOM command cancellation at the HTTP boundary
* 🧹 chore: Sort Command Module Imports
The Static Checks job fails on this branch at the "Import sorting" step:
`node scripts/sort-imports.mts --check` reports
`packages/api/src/code/command.ts` as out of order.
The `logger` import added for the BYOM command diagnostics was placed after
`import { tool } from '@librechat/agents/langchain/tools'`, but package
imports sort shortest to longest line, and the data-schemas import is the
shorter of the two. Reordered by running the repo's own sorter, which is
also what the pre-commit lint-staged hook applies.
`csp.spec.js`, `index.spec.js` and `index.metrics.spec.js` boot the real
server with `require('~/server')`; `index.js` calls `app.listen` at module
scope and exports only the app, so the specs never closed the listening
socket. In-band runs (`--runInBand`, or `maxWorkers: '50%'` on a 2-vCPU
runner) then never exit: every test passes and Jest waits on the leaked
server until the workflow timeout.
Capture the server through a spy on `express.application.listen` that
keeps the real implementation, and await `server.close()` in `afterAll`
before stopping MongoMemoryServer.
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 : )