Skip to content

[pull] main from danny-avila:main - #256

Merged
pull[bot] merged 6 commits into
innFactory:mainfrom
danny-avila:main
Sep 10, 2026
Merged

pull[bot] merged 6 commits into
innFactory:mainfrom
danny-avila:main

Conversation

@pull

@pull pull Bot commented Sep 10, 2026

Copy link
Copy Markdown

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 : )

danny-avila and others added 6 commits September 10, 2026 08:29
* 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.
@pull pull Bot locked and limited conversation to collaborators Sep 10, 2026
@pull pull Bot added the ⤵️ pull label Sep 10, 2026
@pull
pull Bot merged commit 0354db3 into innFactory:main Sep 10, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants