From 8f439f8ab76c00c7bd82504f53c9399b69ff846c Mon Sep 17 00:00:00 2001 From: Fredrik Jensen Date: Sat, 6 Dec 2025 15:25:21 +0100 Subject: [PATCH] fix rebuild for serverless --- package-lock.json | 2 +- packages/library/package.json | 2 +- packages/library/server/bundle.ts | 12 +++++++++--- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index f01799a..94357e0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4004,7 +4004,7 @@ }, "packages/library": { "name": "mcp-ui-kit", - "version": "1.0.0", + "version": "1.0.2", "license": "MIT", "dependencies": { "@mcp-ui/server": "^5.15.0", diff --git a/packages/library/package.json b/packages/library/package.json index b237e85..80f1d64 100644 --- a/packages/library/package.json +++ b/packages/library/package.json @@ -1,6 +1,6 @@ { "name": "mcp-ui-kit", - "version": "1.0.0", + "version": "1.0.2", "description": "MCP UI Kit - Create rich UI components for MCP servers", "type": "module", "main": "./dist/server/index.cjs", diff --git a/packages/library/server/bundle.ts b/packages/library/server/bundle.ts index 0aa8bc1..2adee86 100644 --- a/packages/library/server/bundle.ts +++ b/packages/library/server/bundle.ts @@ -28,14 +28,20 @@ export async function bundleComponent(entryPath: string): Promise { } let result: esbuild.BuildResult<{ write: false }>; - + try { result = await runBuild(entryPath); } catch (error) { - // Handle "The service was stopped" error in serverless environments (Vercel, Lambda, etc.) + // Handle esbuild service errors in serverless environments (Vercel, Lambda, etc.) // This happens when the serverless runtime freezes/stops the esbuild subprocess. + // Error messages vary: "service was stopped", "service is no longer running", etc. // esbuild automatically restarts its service on the next call, so we just retry. - if (error instanceof Error && error.message.includes('service was stopped')) { + const isServiceError = error instanceof Error && ( + error.message.includes('service was stopped') || + error.message.includes('service is no longer running') || + error.message.includes('The service') + ); + if (isServiceError) { result = await runBuild(entryPath); } else { throw error;