jobWhen
uses node:assert/strict
A job in dir once ready says it is (its output, or its end), waited for up to ms.
import { readJob } from "#codebase/tcmts/cli/mcp"; import type { JobState } from "#codebase/tcmts/cli/mcp"; import assert from "node:assert/strict"; export async function jobWhen( dir: string, id: number, ready: (j: JobState) => boolean, ms = 30_000, ): Promise<JobState> { for (const until = Date.now() + ms; ; await new Promise((r) => setTimeout(r, 50))) { const j = readJob(dir, id); if (j && ready(j)) return j; if (Date.now() > until) assert.fail(`job ${id} isn't as expected after ${ms}ms: ${JSON.stringify(j)}`); } }