fix(build): Turbopack/Docker build — externalize sqlite-vec .so + sync mitm manager stub

The Docker image build (`docker compose --profile cli build`) runs `next build`
with OMNIROUTE_USE_TURBOPACK=1 and failed with two Turbopack errors that the
webpack-based VM build never hits — which is why the VM deploy validated but the
Docker build errored (#3066). The reporter's log was truncated before the real
errors; reproducing `OMNIROUTE_USE_TURBOPACK=1 npm run build` locally surfaced them:

1. node_modules/sqlite-vec-linux-x64/vec0.so — "Unknown module type". sqlite-vec
   ships a native vec0.so loaded at runtime via createRequire(); Turbopack tried to
   bundle the .so. Fixed by adding "sqlite-vec" to serverExternalPackages, exactly
   like better-sqlite3.

2. /api/tools/agent-bridge/state statically imports getAllAgentsStatus from
   @/mitm/manager, which next.config aliases to manager.stub.ts for the Turbopack
   build. The stub did not export getAllAgentsStatus → "Export getAllAgentsStatus
   doesn't exist in target module". Added the export (throws like the other heavy
   ops — MITM/agent-bridge is non-functional in the bundled build anyway).

Tests (tests/unit/next-config.test.ts):
- assert sqlite-vec is in serverExternalPackages.
- new guard: manager.stub.ts must export every name statically imported from
  @/mitm/manager across src/app (catches stub/manager drift — would have caught this).

Verified: OMNIROUTE_USE_TURBOPACK=1 npm run build → EXIT 0 (was: Build error
occurred); webpack build → EXIT 0; typecheck:core / check:cycles / lint clean.

Fixes #3066
This commit is contained in:
diegosouzapw
2026-06-02 12:18:56 -03:00
parent e438139b03
commit 146244b8f5
4 changed files with 82 additions and 0 deletions

View File

@@ -141,6 +141,11 @@ const nextConfig = {
"thread-stream",
"pino-abstract-transport",
"better-sqlite3",
// sqlite-vec ships a native vec0.so loaded at runtime via createRequire().
// Turbopack otherwise tries to bundle the .so and fails with "Unknown module
// type"; externalizing it keeps the require at runtime (like better-sqlite3).
// See issue #3066.
"sqlite-vec",
"node-machine-id",
"keytar",
"wreq-js",