diff --git a/.do/gitnexus/Dockerfile b/.do/gitnexus/Dockerfile index 58a79e087e..ede0920593 100644 --- a/.do/gitnexus/Dockerfile +++ b/.do/gitnexus/Dockerfile @@ -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 diff --git a/.github/workflows/gitnexus-deploy.yml b/.github/workflows/gitnexus-deploy.yml index 203138c706..f4cd38bb2b 100644 --- a/.github/workflows/gitnexus-deploy.yml +++ b/.github/workflows/gitnexus-deploy.yml @@ -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: diff --git a/.github/workflows/gitnexus-index.yml b/.github/workflows/gitnexus-index.yml index 21c3f69321..26b0a06098 100644 --- a/.github/workflows/gitnexus-index.yml +++ b/.github/workflows/gitnexus-index.yml @@ -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