mirror of
https://github.com/danny-avila/LibreChat.git
synced 2026-08-04 14:57:42 +00:00
🩹 fix: Bump GitNexus to 1.6.5 and Fail-Soft the PR Index Job (#13569)
* 🩹 fix: Bump GitNexus to 1.6.5 and Fail-Soft the PR Index Job The GitNexus Index workflow began failing on most PRs with "Analysis failed: Maximum call stack size exceeded". Root cause is in the pinned gitnexus@1.5.3 CLI: pipeline.js does `deferredWorkerCalls.push(...chunkWorkerData.calls)`, and once a chunk yields more extracted calls than V8's argument-count limit (~125k on this repo) the spread-push throws a RangeError. It is deterministic on repo size, not flaky — LibreChat simply grew past the threshold, so it fails "more often" as more branches cross it. Stack-size flags don't help; it's an arg-count limit, not stack depth. gitnexus@1.6.5 refactored that code path (the .calls spread-pushes are gone) and indexes this repo cleanly. Bump the indexer, the deploy image tag/build-arg, and the Dockerfile default in lockstep (an index written by 1.6.5 must be served by a 1.6.5 server), and move the co-pinned @ladybugdb/core to 0.16.1 to match. Also make the index job fail-soft on pull_request events so a future tool-internal crash degrades gracefully instead of red-X'ing PRs. Push, dispatch, and /gitnexus command runs still fail loudly, keeping the deploy-gating and completion-comment logic correct. * 🐳 fix: Unbreak the GitNexus Deploy Image for 1.6.5 Addresses two issues in the deploy image surfaced after the 1.6.5 bump: - The image build's lbug-adapter patch grepped dist/mcp/core/lbug-adapter.js for "LOAD EXTENSION fts", but in 1.6.5 that file is a shim re-export and the FTS load moved to dist/core/lbug/lbug-adapter.js. The grep would fail the build on the next image rebuild. The patch is also obsolete: 1.6.5 loads the vector extension itself via loadVectorExtension. Removed the patch step. - The image installed only gitnexus, letting @ladybugdb/core resolve freely via gitnexus's ^0.16.1 range while the index workflow pins 0.16.1 exactly. Pin the native DB in the image too (nested under gitnexus so install-extensions.js keeps resolving it), restoring the intended indexer/server lockstep.
This commit is contained in:
parent
9bf7046f6a
commit
7554f2e9e9
3 changed files with 16 additions and 12 deletions
|
|
@ -7,13 +7,18 @@
|
|||
|
||||
FROM node:24.16.0-slim
|
||||
|
||||
ARG GITNEXUS_VERSION=1.5.3
|
||||
ARG GITNEXUS_VERSION=1.6.5
|
||||
# Pin the native DB to match the index workflow; gitnexus's ^0.16.1 range
|
||||
# would otherwise let the served image drift from the CI-produced index.
|
||||
ARG LADYBUG_VERSION=0.16.1
|
||||
|
||||
# 1. Build native addons with Bookworm toolchain, then remove build tools.
|
||||
# curl stays for the docker healthcheck; Caddy lives in its own container.
|
||||
# LadybugDB is pinned nested under gitnexus so step 3's require() resolves it.
|
||||
RUN apt-get update \
|
||||
&& apt-get install -y --no-install-recommends python3 make g++ curl \
|
||||
&& npm install -g gitnexus@${GITNEXUS_VERSION} \
|
||||
&& npm install --no-save --prefix /usr/local/lib/node_modules/gitnexus "@ladybugdb/core@${LADYBUG_VERSION}" \
|
||||
&& apt-get purge -y --auto-remove python3 make g++ \
|
||||
&& rm -rf /var/lib/apt/lists/* /root/.npm
|
||||
|
||||
|
|
@ -26,17 +31,13 @@ RUN echo "deb http://deb.debian.org/debian trixie main" > /etc/apt/sources.list.
|
|||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# 3. Pre-install LadybugDB FTS + vector extensions so ~/.kuzu/extension/
|
||||
# is baked into the image. Workaround for upstream GitNexus 1.5.3 bug.
|
||||
# is baked into the image. gitnexus serve loads extensions with a
|
||||
# load-only policy and never installs them at runtime, so the cache
|
||||
# must already exist. (GitNexus 1.6.5 loads the vector extension itself
|
||||
# via loadVectorExtension — no adapter patch needed.)
|
||||
COPY install-extensions.js /tmp/install-extensions.js
|
||||
RUN node /tmp/install-extensions.js && rm -rf /tmp/install-extensions.js /tmp/lbug-ext-install
|
||||
|
||||
# 4. Patch lbug-adapter.js to also LOAD EXTENSION vector after FTS.
|
||||
RUN LBUG_ADAPTER=/usr/local/lib/node_modules/gitnexus/dist/mcp/core/lbug-adapter.js \
|
||||
&& grep -q "LOAD EXTENSION fts" "$LBUG_ADAPTER" \
|
||||
&& sed -i "s|await available\[0\]\.query('LOAD EXTENSION fts');|await available[0].query('LOAD EXTENSION fts'); try { await available[0].query('LOAD EXTENSION vector'); } catch (e) { /* vector extension may not be installed */ }|g" "$LBUG_ADAPTER" \
|
||||
&& grep -c "LOAD EXTENSION vector" "$LBUG_ADAPTER" \
|
||||
&& echo "lbug-adapter.js patched to load vector extension"
|
||||
|
||||
COPY entrypoint.sh /entrypoint.sh
|
||||
RUN chmod +x /entrypoint.sh
|
||||
|
||||
|
|
|
|||
2
.github/workflows/gitnexus-deploy.yml
vendored
2
.github/workflows/gitnexus-deploy.yml
vendored
|
|
@ -84,7 +84,7 @@ concurrency:
|
|||
cancel-in-progress: false
|
||||
|
||||
env:
|
||||
GITNEXUS_VERSION: '1.5.3'
|
||||
GITNEXUS_VERSION: '1.6.5'
|
||||
IMAGE_NAME: ghcr.io/${{ github.repository_owner }}/librechat-gitnexus
|
||||
|
||||
jobs:
|
||||
|
|
|
|||
7
.github/workflows/gitnexus-index.yml
vendored
7
.github/workflows/gitnexus-index.yml
vendored
|
|
@ -43,7 +43,7 @@ concurrency:
|
|||
cancel-in-progress: true
|
||||
|
||||
env:
|
||||
GITNEXUS_VERSION: '1.5.3'
|
||||
GITNEXUS_VERSION: '1.6.5'
|
||||
|
||||
jobs:
|
||||
index:
|
||||
|
|
@ -64,6 +64,9 @@ jobs:
|
|||
github.event.pull_request.user.login == 'danny-avila'
|
||||
runs-on: ubuntu-latest
|
||||
timeout-minutes: 25
|
||||
# Best-effort index: a tool-internal crash must not block PRs. Fail soft on
|
||||
# PR events; push/dispatch runs still fail loudly so regressions stay visible.
|
||||
continue-on-error: ${{ github.event_name == 'pull_request' }}
|
||||
steps:
|
||||
- name: Validate dispatch inputs
|
||||
if: github.event_name == 'workflow_dispatch'
|
||||
|
|
@ -162,7 +165,7 @@ jobs:
|
|||
--no-save \
|
||||
--no-package-lock \
|
||||
"gitnexus@${{ env.GITNEXUS_VERSION }}" \
|
||||
"@ladybugdb/core@0.15.2"
|
||||
"@ladybugdb/core@0.16.1"
|
||||
test -x "$RUNNER_TEMP/gitnexus-cli/node_modules/.bin/gitnexus"
|
||||
|
||||
- name: Checkout repository
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue