diff --git a/apps/playground/next-env.d.ts b/apps/playground/next-env.d.ts
index c4b7818..9edff1c 100644
--- a/apps/playground/next-env.d.ts
+++ b/apps/playground/next-env.d.ts
@@ -1,6 +1,6 @@
///
///
-import "./.next/dev/types/routes.d.ts";
+import "./.next/types/routes.d.ts";
// NOTE: This file should not be edited
// see https://nextjs.org/docs/app/api-reference/config/typescript for more information.
diff --git a/apps/web/src/lib/health-check/health-check-service.ts b/apps/web/src/lib/health-check/health-check-service.ts
index 6c03f25..254b0c7 100644
--- a/apps/web/src/lib/health-check/health-check-service.ts
+++ b/apps/web/src/lib/health-check/health-check-service.ts
@@ -136,13 +136,17 @@ async function checkExecutionHealth(tool: Tool & { package: Package }): Promise<
return { status: 'HEALTHY', error: null, timeMs, testParams };
}
- // HTTP error from executor itself (not from tool)
- // This could be executor down, rate limited, etc.
+ // HTTP error from executor - could be tool-level or infrastructure
const data = await response.json().catch(() => ({}));
const error = data.error || `HTTP ${response.status}`;
- // Even HTTP errors might be tool-level errors returned through executor
- // Only mark as BROKEN for true infrastructure failures
+ // Check if this is a config/validation error (tool is working, just missing setup)
+ // The executor returns 500 for all tool errors, so we need to inspect the message
+ if (isNonBreakingError(error)) {
+ return { status: 'HEALTHY', error: null, timeMs, testParams };
+ }
+
+ // True infrastructure failures (executor down, rate limited, etc.)
if (response.status >= 500) {
return { status: 'BROKEN', error, timeMs, testParams };
}