From f8da5ada71e9ef0d70550d8edd9c7d3a4d5e4ac2 Mon Sep 17 00:00:00 2001 From: Mohamed Boudra Date: Fri, 30 Jan 2026 12:09:56 +0700 Subject: [PATCH] fix: move PID lock to bootstrap.ts for all entrypoints --- packages/server/src/server/bootstrap.ts | 6 ++++++ packages/server/src/server/index.ts | 11 ++++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/packages/server/src/server/bootstrap.ts b/packages/server/src/server/bootstrap.ts index c9227e57a..2c363ffdb 100644 --- a/packages/server/src/server/bootstrap.ts +++ b/packages/server/src/server/bootstrap.ts @@ -59,6 +59,7 @@ import type { AgentClient, AgentProvider, } from "./agent/agent-sdk-types.js"; +import { acquirePidLock, releasePidLock } from "./pid-lock.js"; type AgentMcpTransportMap = Map; @@ -498,6 +499,9 @@ export async function createPaseoDaemon( ); const start = async () => { + // Acquire PID lock + await acquirePidLock(config.paseoHome, selfIdMcpSocketPath); + // Start Self-ID MCP socket server first await new Promise((resolve, reject) => { const onError = (err: Error) => { @@ -604,6 +608,8 @@ export async function createPaseoDaemon( if (existsSync(selfIdMcpSocketPath)) { unlinkSync(selfIdMcpSocketPath); } + // Release PID lock + await releasePidLock(config.paseoHome); }; return { diff --git a/packages/server/src/server/index.ts b/packages/server/src/server/index.ts index ca46e9c50..78a2c1e90 100644 --- a/packages/server/src/server/index.ts +++ b/packages/server/src/server/index.ts @@ -9,6 +9,7 @@ import { loadConfig } from "./config.js"; import { resolvePaseoHome } from "./paseo-home.js"; import { createRootLogger } from "./logger.js"; import { loadPersistedConfig } from "./persisted-config.js"; +import { PidLockError } from "./pid-lock.js"; async function main() { const paseoHome = resolvePaseoHome(); @@ -21,7 +22,15 @@ async function main() { } const daemon = await createPaseoDaemon(config, logger); - await daemon.start(); + try { + await daemon.start(); + } catch (err) { + if (err instanceof PidLockError) { + logger.error({ pid: err.existingLock?.pid }, err.message); + process.exit(1); + } + throw err; + } let shuttingDown = false; const handleShutdown = async (signal: string) => {