jobWhen

tcmts.cli.mcp.jobWhen · #ygmqq5ta · term · runs on the server

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)}`);
  }
}

uses

used by