Skip to content

chore(upstream): integrate code interpreter v1.10.10 - #42

Merged
rschlaefli merged 12 commits into
mainfrom
rs/codeapi-lifecycle-ci
Oct 23, 2026
Merged

rschlaefli merged 12 commits into
mainfrom
rs/codeapi-lifecycle-ci

Conversation

@rschlaefli

@rschlaefli rschlaefli commented Oct 23, 2026 •

Copy link
Copy Markdown
Member

Integrate upstream v1.10.10 with merge history preserved, carrying the fork’s cancellation, cleanup, isolation and GitOps compatibility behavior forward. This includes upstream’s updated Node runtimes, restored-module handling, worker setup/enrollment/recovery, workspace file import, standalone extraction package and proxy-addr correction.

The fork keeps its readable sandbox helpers, issuer-specific trust, values-free logs, nonfatal telemetry, external replica/secret ownership and execution deadlines. Equivalent descriptor-wait and orphan-helper patches are replaced by upstream implementations; distinct startup-cancellation, graceful-shutdown and bounded negative-control tests remain. The existing native CI lanes now explicitly verify the bridge executable and run the focused descendant regressions.

The persisted roadmap and fork ledger describe the retained behavior and next gates. Development Compose retains upstream’s paired-worker/import capabilities. The managed HTTP/static/non-dynamic contract remains separate; extraction has its own workflow and Compose file. This source package does not publish images, deploy services or create fork releases.

Validation: YAML and focused chart/configuration checks pass, along with extraction formatting, type checking and all 14 local unit tests. All fourteen main CI jobs and the Extraction Service workflow pass at the upstream candidate, including both native architectures, both Node versions, packaged guest execution and extraction container isolation. Independent simplification and runtime/build risk reviews passed. The final integrated source review passed after all source sections and their integration were covered. Merge with history and source branch retained, plus the existing automatic seven-image publication, is approved. Deployment retains its subsequent qualification gates.

Scoped pattern scanning completed with parser limitations. Its findings were checked manually and in the independent risk review; it is not a clean or exhaustive security-audit claim.

lia-by-librechat Bot and others added 12 commits October 21, 2026 16:43
* 🧭 feat: Add Guided Worker Setup And Saved Profiles

* 🔒 fix: Keep Pairing Codes Out Of Terminal History

* 🔒 fix: Isolate Secret Prompt Editing State

---------

Co-authored-by: Lia <lia@librechat.ai>
…at-AI#342)

* 🪪 feat: Add Key-Bound Browser Enrollment And Resumable Setup

* 🛡️ fix: Protect Setup State And Legacy Enrollment Fences

* 🔐 fix: Remove Completed Setup Secrets And Bind Pending State To Identity

* 🛡️ fix: Bind Setup Recovery State Across Startup Modes

* 🗝️ fix: Protect The Entire Setup Journal Namespace

---------

Co-authored-by: Lia <lia@librechat.ai>
* 📑 feat: Add Standalone File Extraction Service

* fix: Restrict Worker Control and Preserve Nested Document Text

* fix: Preserve Parser Policy Failures and Startup Restrictions

* fix: Reject Unsupported DOCX Content and Validate OPC XML Parts

* fix: Enforce Complete DOCX Content Structure

* fix: Extract Merged DOCX Cells Once

* fix: Reject Unmappable PDF Font Text

* fix: Normalize Optional PDF Font Encodings

---------

Co-authored-by: Lia <lia@librechat.ai>
* fix: Diagnose Unavailable Worker Commands Without Logging Payloads

* fix: Preserve Diagnostic Correlation And Isolate Async Log Sinks

* fix: Preserve Failure Diagnostics Across Cleanup And Log Boundaries
…-AI#352)

* test: handle descendant adoption races in orphan cleanup

* test: bound asynchronous pipe descriptor cleanup wait
* 📥 feat: Import Chat Uploads Into Attached Workspaces

Add the additive `import_file` workspace operation so a chat's uploaded
files, binaries included, land in an attached BYOM workspace.

Code API verifies the caller owns the stored object with the download
route's session rule, mints a one-object, read-only, short-lived egress
grant, and relays opaque handles to the worker. The worker streams the
object through its file relay upstream into a same-directory temporary
file, enforces the declared size and SHA-256, refuses `.git` paths and
symlinked parents, and installs it atomically as 0644. Identical bytes
are an idempotent no-op; different bytes conflict unless `overwrite`.

The operation is negotiated: Code API offers it only with an egress
gateway, and workers advertise it only with writes enabled and a relay
upstream configured.

* 🛡️ fix: Harden Imports and Make Advertisement Opt-In

- Verify size and SHA-256 on the synced staged file, not just the stream.
- Set created parent directories to 0755 regardless of umask.
- Install disconnect listeners before ownership and grant minting, and
  never dispatch for a caller that already left.
- Authorize durable imports only for new request IDs so retries of an
  existing request stay idempotent after the upload expires.
- Gate worker advertisement behind LIBRECHAT_CODE_ALLOW_WORKSPACE_IMPORTS,
  since older LibreChat releases reject unknown operations.

* 🧹 fix: Tighten Import Cleanup, Stall Timing, and Durable Grants

- Roll back a created parent only while it is still the inode the import
  created; otherwise report a possibly committed mutation.
- Report an unremovable staging file as a possibly committed mutation.
- Arm the stall timer only while waiting on the source, not during writes.
- Revoke a durable import's grant when the queue does not adopt it.

* 🔒 fix: Refuse NTFS Stream Aliases of .git in Import Paths

Compare only the part of each segment before an NTFS stream separator, so
`.git::$INDEX_ALLOCATION` and similar aliases are refused like `.git`.

* ⚡ feat: Advertise Workspace Imports by Default With an Explicit Opt-Out

The code bridge is experimental, so import_file is now on whenever a worker
can perform it (writes enabled and a relay upstream configured). Operators
opt out with LIBRECHAT_CODE_ALLOW_WORKSPACE_IMPORTS=false or
--no-workspace-imports; any other value fails startup.
…AI#347)

* 🔗 fix: Refresh Runtime Module Links After Upgrades

* fix: Preserve Canonical User Module Links

* test: Isolate Input-Cache Route Setup

* fix: Complete Runtime Module Link Migration Paths

* fix: Update Patched Node Runtimes And Align Rollout Defaults

---------

Co-authored-by: Lia <lia@librechat.ai>
* fix(codeapi): pin proxy-addr to 2.0.8 (#4534)

Source: ClickHouse/ai@4215c459945b0de73db0f99d6d86d8b470b96572

* ci(codeapi): mirror upstream node runtime versions

Source: ClickHouse/ai@5f963906ee74d3247802b52ac2cdb8f85a9fcfda

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
@rschlaefli rschlaefli changed the title test(codeapi): make descendant cleanup checks deterministic chore(upstream): integrate code interpreter v1.10.10 Oct 23, 2026
@rschlaefli
rschlaefli marked this pull request as ready for review October 23, 2026 09:44
Copilot AI balanced review requested due to automatic review settings October 23, 2026 09:44
@rschlaefli
rschlaefli merged commit bb747c2 into main Oct 23, 2026
15 checks passed

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

An organization owner can choose the repository organization as the billing source for reviews requested by members with a paid Copilot license. Learn about Copilot code review billing.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

3 participants