import { rememberFlowCandidate } from '../../flow-session' import { rnxExit } from '../../run-rnx' import { waitForSimReady } from './shared' export async function runWaitSubcommand(opts: { wsPort: number commandTimeoutMs: number simId?: string simIdSource?: 'flag' | 'saved' | 'none' positional: string[] }): Promise { const { wsPort, commandTimeoutMs, simId, simIdSource, positional } = opts const seconds = positional[1] ? Number(positional[1]) : 30 const timeoutMs = Math.max(1000, (Number.isFinite(seconds) ? seconds : 30) * 1000) const attempts = Math.max(1, Math.ceil(timeoutMs / 500)) console.log(` waiting for sim reconnect...`) const ready = await waitForSimReady(wsPort, commandTimeoutMs, simId, { attempts, simIdSource, }) if (!ready) { console.error(` timed out waiting for sim reconnect`) rnxExit(1) } ready.bridge.close() rememberFlowCandidate({ source: 'inspect wait', step: { wait: timeoutMs }, summary: `wait ${Math.round(timeoutMs / 1000)}s`, }) console.log(` ready: ${ready.count} nodes`) }