export interface JsonEnvelope { ok: boolean; command: string; data?: T; error?: unknown; } export function emitJson(command: string, data: T, ok = true): void { const envelope: JsonEnvelope = { ok, command, data }; safeStdoutWrite(`${JSON.stringify(envelope, null, 2)}\n`); } export function emitError(command: string, error: unknown): void { const payload = error instanceof Error ? { name: error.name, message: error.message, stack: error.stack ?? null } : { message: String(error) }; const envelope: JsonEnvelope = { ok: false, command, error: payload }; safeStdoutWrite(`${JSON.stringify(envelope, null, 2)}\n`); } function safeStdoutWrite(text: string): void { try { process.stdout.write(text); } catch (error) { if (typeof error === "object" && error !== null && "code" in error && (error as { code?: unknown }).code === "EPIPE") { process.exitCode = 0; return; } throw error; } }