MCPcopy Create free account
hub / github.com/colbymchenry/codegraph / startPpidWatchdogNoSocket

Function startPpidWatchdogNoSocket

src/mcp/proxy.ts:422–443  ·  view source on GitHub ↗

PPID watchdog for the local-handshake proxy — same #277 logic as * startPpidWatchdog but with no socket to close (the caller's shutdown * handles teardown).

(onDeath: () => void)

Source from the content-addressed store, hash-verified

420 * {@link startPpidWatchdog} but with no socket to close (the caller's shutdown
421 * handles teardown). */
422function startPpidWatchdogNoSocket(onDeath: () => void): void {
423 const pollMs = parsePollMs(process.env.CODEGRAPH_PPID_POLL_MS);
424 if (pollMs <= 0) return;
425 // Baseline from the CLI entry's earliest capture, not process.ppid here —
426 // a launcher killed during our first ~100ms would otherwise leave the
427 // baseline at 1 and blind the divergence check forever (#1185).
428 const originalPpid = EARLY_PPID;
429 const hostPpid = parseHostPpid(process.env[HOST_PPID_ENV]);
430 const timer = setInterval(() => {
431 const reason = supervisionLostReason({
432 originalPpid,
433 currentPpid: process.ppid,
434 hostPpid,
435 isAlive: isProcessAliveLocal,
436 });
437 if (reason) {
438 process.stderr.write(`[CodeGraph MCP] Parent process exited (${reason}); shutting down.\n`);
439 onDeath();
440 }
441 }, pollMs);
442 timer.unref?.();
443}
444
445/**
446 * Read one CRLF/LF-terminated JSON line from the socket, parse it as the

Callers 1

runLocalHandshakeProxyFunction · 0.85

Calls 4

supervisionLostReasonFunction · 0.90
parsePollMsFunction · 0.85
parseHostPpidFunction · 0.70
writeMethod · 0.65

Tested by

no test coverage detected