import { existsSync, readFileSync, writeFileSync } from 'fs'; import { PID_FILE } from '../constants'; const REFERENCE_COUNT_FILE = '/tmp/claude-code-reference-count.txt'; export function incrementReferenceCount() { let count = 0; if (existsSync(REFERENCE_COUNT_FILE)) { count = parseInt(readFileSync(REFERENCE_COUNT_FILE, 'utf-8')) || 0; } count++; writeFileSync(REFERENCE_COUNT_FILE, count.toString()); } export function decrementReferenceCount() { let count = 0; if (existsSync(REFERENCE_COUNT_FILE)) { count = parseInt(readFileSync(REFERENCE_COUNT_FILE, 'utf-8')) || 0; } count = Math.max(0, count - 1); writeFileSync(REFERENCE_COUNT_FILE, count.toString()); } export function getReferenceCount(): number { if (!existsSync(REFERENCE_COUNT_FILE)) { return 0; } return parseInt(readFileSync(REFERENCE_COUNT_FILE, 'utf-8')) || 0; } export function isServiceRunning(): boolean { if (!existsSync(PID_FILE)) { return false; } try { const pid = parseInt(readFileSync(PID_FILE, 'utf-8')); process.kill(pid, 0); return true; } catch (e) { // Process not running, clean up pid file cleanupPidFile(); return false; } } export function savePid(pid: number) { writeFileSync(PID_FILE, pid.toString()); } export function cleanupPidFile() { if (existsSync(PID_FILE)) { try { const fs = require('fs'); fs.unlinkSync(PID_FILE); } catch (e) { // Ignore cleanup errors } } } export function getServicePid(): number | null { if (!existsSync(PID_FILE)) { return null; } try { const pid = parseInt(readFileSync(PID_FILE, 'utf-8')); return isNaN(pid) ? null : pid; } catch (e) { return null; } } export function getServiceInfo() { const pid = getServicePid(); const running = isServiceRunning(); return { running, pid, port: 3456, endpoint: 'http://127.0.0.1:3456', pidFile: PID_FILE, referenceCount: getReferenceCount() }; }