From 586aabe11f62424c0f7bcc67faa5dbf7b8609742 Mon Sep 17 00:00:00 2001 From: webdevcody Date: Sat, 3 Jan 2026 23:36:22 -0500 Subject: [PATCH] chore: update .gitignore and improve cleanup handling in scripts - Added .claude/hans/ to .gitignore to prevent tracking of specific directory. - Updated cleanup calls in dev.mjs and start.mjs to use await for proper asynchronous handling. - Enhanced error handling during cleanup in case of failures. - Improved server failure handling in startServerAndWait function to ensure proper termination of failed processes. --- .gitignore | 1 + dev.mjs | 10 +++++++--- package-lock.json | 4 ++-- scripts/launcher-utils.mjs | 19 +++++++++++++++++++ start.mjs | 10 +++++++--- 5 files changed, 36 insertions(+), 8 deletions(-) diff --git a/.gitignore b/.gitignore index 48470efe..7d02e8ba 100644 --- a/.gitignore +++ b/.gitignore @@ -81,6 +81,7 @@ blob-report/ docker-compose.override.yml .claude/docker-compose.override.yml +.claude/hans/ pnpm-lock.yaml yarn.lock \ No newline at end of file diff --git a/dev.mjs b/dev.mjs index f2ad01cc..48ef9e67 100644 --- a/dev.mjs +++ b/dev.mjs @@ -117,7 +117,7 @@ async function main() { }); if (!processes.server) { - cleanup(); + await cleanup(); process.exit(1); } @@ -175,9 +175,13 @@ async function main() { } // Run main function -main().catch((err) => { +main().catch(async (err) => { console.error(err); const cleanup = createCleanupHandler(processes); - cleanup(); + try { + await cleanup(); + } catch (cleanupErr) { + console.error('Cleanup error:', cleanupErr); + } process.exit(1); }); diff --git a/package-lock.json b/package-lock.json index 48840b71..98ca8545 100644 --- a/package-lock.json +++ b/package-lock.json @@ -28,7 +28,7 @@ }, "apps/server": { "name": "@automaker/server", - "version": "0.7.1", + "version": "0.7.3", "license": "SEE LICENSE IN LICENSE", "dependencies": { "@anthropic-ai/claude-agent-sdk": "0.1.76", @@ -78,7 +78,7 @@ }, "apps/ui": { "name": "@automaker/ui", - "version": "0.7.1", + "version": "0.7.3", "hasInstallScript": true, "license": "SEE LICENSE IN LICENSE", "dependencies": { diff --git a/scripts/launcher-utils.mjs b/scripts/launcher-utils.mjs index 4e09b54a..2a1d4e71 100644 --- a/scripts/launcher-utils.mjs +++ b/scripts/launcher-utils.mjs @@ -610,6 +610,25 @@ export async function startServerAndWait({ serverPort, corsOriginEnv, npmArgs, c if (!serverReady) { log('Error: Server failed to start', 'red'); console.log('Check logs/server.log for details'); + + // Clean up the spawned server process that failed health check + if (serverProcess && !serverProcess.killed && serverProcess.pid) { + log('Terminating failed server process...', 'yellow'); + try { + await killProcessTree(serverProcess.pid); + } catch (killErr) { + // Fallback: try direct kill if tree-kill fails + try { + serverProcess.kill('SIGKILL'); + } catch { + // Process may have already exited + } + } + } + + // Close the log stream + logStream.end(); + return null; } diff --git a/start.mjs b/start.mjs index 0992ccfe..54213e4f 100755 --- a/start.mjs +++ b/start.mjs @@ -161,7 +161,7 @@ async function main() { }); if (!processes.server) { - cleanup(); + await cleanup(); process.exit(1); } @@ -256,9 +256,13 @@ async function main() { } // Run main function -main().catch((err) => { +main().catch(async (err) => { console.error(err); const cleanup = createCleanupHandler(processes); - cleanup(); + try { + await cleanup(); + } catch (cleanupErr) { + console.error('Cleanup error:', cleanupErr); + } process.exit(1); });