From 9c9ee5f0e41a707c5bf4a96884c0526d532f3a20 Mon Sep 17 00:00:00 2001 From: "anthropic-code-agent[bot]" <242468646+Claude@users.noreply.github.com> Date: Mon, 13 Apr 2026 09:17:05 +0000 Subject: [PATCH 1/2] fix: properly handle @libsql/client native dependencies for Vercel deployment - Mark @libsql/client as external in esbuild (cannot bundle native bindings) - Copy entire @libsql scope to include platform-specific binaries - Add @libsql to vercel.json includeFiles pattern Fixes "Cannot find module '@libsql/linux-x64-gnu'" error on Vercel Agent-Logs-Url: https://github.com/objectstack-ai/framework/sessions/b0b587fe-a979-4361-8899-62cbc1fe5261 Co-authored-by: xuyushun441-sys <255036401+xuyushun441-sys@users.noreply.github.com> --- apps/studio/scripts/build-vercel.sh | 13 ++++++++++++- apps/studio/scripts/bundle-api.mjs | 6 +++--- apps/studio/vercel.json | 2 +- 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/apps/studio/scripts/build-vercel.sh b/apps/studio/scripts/build-vercel.sh index 10a5507f4..049aebf9b 100755 --- a/apps/studio/scripts/build-vercel.sh +++ b/apps/studio/scripts/build-vercel.sh @@ -39,7 +39,7 @@ node scripts/bundle-api.mjs # apps/studio/, so we must copy the actual module files here for Vercel to # include them in the serverless function's deployment package. # -# Note: @libsql/client is now bundled by esbuild, so we no longer copy it. +# Note: @libsql/client has native dependencies that must be copied. echo "[build-vercel] Copying external native modules to local node_modules..." for mod in better-sqlite3; do src="../../node_modules/$mod" @@ -52,6 +52,17 @@ for mod in better-sqlite3; do echo "[build-vercel] ⚠ $mod not found at $src (skipped)" fi done +# Copy the @libsql scope (includes @libsql/client and native binaries like @libsql/linux-x64-gnu) +if [ -d "../../node_modules/@libsql" ]; then + mkdir -p "node_modules/@libsql" + for pkg in ../../node_modules/@libsql/*/; do + pkgname="$(basename "$pkg")" + cp -rL "$pkg" "node_modules/@libsql/$pkgname" + done + echo "[build-vercel] ✓ Copied @libsql/*" +else + echo "[build-vercel] ⚠ @libsql not found (skipped)" +fi # Copy the @ai-sdk scope (dynamically loaded provider packages) if [ -d "../../node_modules/@ai-sdk" ]; then mkdir -p "node_modules/@ai-sdk" diff --git a/apps/studio/scripts/bundle-api.mjs b/apps/studio/scripts/bundle-api.mjs index 9f1d8fc81..9f9822ef3 100644 --- a/apps/studio/scripts/bundle-api.mjs +++ b/apps/studio/scripts/bundle-api.mjs @@ -16,9 +16,9 @@ import { build } from 'esbuild'; // Packages that cannot be bundled (native bindings / optional drivers) const EXTERNAL = [ - // @libsql/client is now bundled (pure JS, no native bindings) - // Bundling it solves Vercel deployment issues where external packages - // aren't properly included in the serverless function despite includeFiles config + // @libsql/client has native bindings (platform-specific like @libsql/linux-x64-gnu) + // and must be kept external, then copied to node_modules with includeFiles + '@libsql/client', 'better-sqlite3', // AI SDK provider packages — dynamically imported based on env vars '@ai-sdk/anthropic', diff --git a/apps/studio/vercel.json b/apps/studio/vercel.json index 96e8daf72..3365216d1 100644 --- a/apps/studio/vercel.json +++ b/apps/studio/vercel.json @@ -13,7 +13,7 @@ "api/**/*.js": { "memory": 1024, "maxDuration": 300, - "includeFiles": "node_modules/{better-sqlite3,@ai-sdk}/**" + "includeFiles": "node_modules/{better-sqlite3,@libsql,@ai-sdk}/**" } }, "headers": [ From b7d13dcb07e926babefbcdc1c499bc6544cec293 Mon Sep 17 00:00:00 2001 From: "anthropic-code-agent[bot]" <242468646+Claude@users.noreply.github.com> Date: Mon, 13 Apr 2026 09:33:13 +0000 Subject: [PATCH 2/2] fix: add @libsql/client and better-sqlite3 as direct dependencies to studio Vercel serverless functions require external packages to be direct dependencies in package.json, not just transitive workspace dependencies. Adding these packages ensures they are properly installed and included in the deployment. Related to: Cannot find package '@libsql/client' imported from /var/task/apps/studio/api/_handler.js Agent-Logs-Url: https://github.com/objectstack-ai/framework/sessions/4a0e5628-d026-4dab-ad6d-6ad619aeb571 Co-authored-by: xuyushun441-sys <255036401+xuyushun441-sys@users.noreply.github.com> --- apps/studio/package.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/apps/studio/package.json b/apps/studio/package.json index c6eeff7e7..1ce8ac30e 100644 --- a/apps/studio/package.json +++ b/apps/studio/package.json @@ -23,6 +23,7 @@ "@ai-sdk/openai": "^3.0.52", "@ai-sdk/react": "^3.0.160", "@hono/node-server": "^1.19.14", + "@libsql/client": "^0.17.2", "@objectstack/client": "workspace:*", "@objectstack/client-react": "workspace:*", "@objectstack/driver-memory": "workspace:*", @@ -57,6 +58,7 @@ "@radix-ui/react-toast": "^1.2.15", "@radix-ui/react-tooltip": "^1.2.8", "ai": "^6.0.158", + "better-sqlite3": "^12.9.0", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "hono": "^4.12.12",