import type { PlayRunnerEvent, PlayRunnerResult, } from '@shared_libs/play-runtime/protocol'; export function parsePlayRunnerEvents(stdout: string): PlayRunnerEvent[] { return stdout .split(/\r?\n/) .map((line) => line.trim()) .filter(Boolean) .flatMap((line) => { try { return [JSON.parse(line) as PlayRunnerEvent]; } catch { return []; } }); } export function parsePlayRunnerEventLine(line: string): PlayRunnerEvent | null { try { return JSON.parse(line) as PlayRunnerEvent; } catch { return null; } } export function findPlayRunnerResult( events: PlayRunnerEvent[], ): PlayRunnerResult | null { const resultEvent = [...events] .reverse() .find((event) => event.type === 'result'); return resultEvent?.type === 'result' ? resultEvent.result : null; }