Member Junction
    Preparing search index...

    Type Alias TaskGraphDebugState

    The durable debug state of one graph.

    Everything optional: the empty object is "no debugging", and a graph submitted before this existed parses to exactly that.

    type TaskGraphDebugState = {
        breakpoints?: string[];
        edgeOverrides?: Record<string, EdgeOverrideVerdict>;
        paused?: boolean;
        pausedAtTaskID?: string | null;
        pausedBy?: string | null;
        pausedReason?: "user" | "breakpoint";
        skipBreakpointTaskID?: string | null;
        step?: StepTarget;
    }
    Index

    Properties

    breakpoints?: string[]

    Task IDs the dispatcher pauses the graph on, before claiming them.

    edgeOverrides?: Record<string, EdgeOverrideVerdict>

    Authored verdicts for edges whose conditions the user has overridden, keyed by MJ: Task Dependencies row ID. 'false' drops the edge (branch not taken → skip cascade); 'true' satisfies it. The operator-grade escape hatch for a held graph — durable, so it survives restarts and is honored by every instance.

    paused?: boolean

    Nothing new is claimed while true. In-flight tasks finish naturally.

    pausedAtTaskID?: string | null

    The task whose breakpoint fired, when pausedReason is 'breakpoint'.

    pausedBy?: string | null

    Who paused it — informational, for the console and the frame.

    pausedReason?: "user" | "breakpoint"

    Whether a person paused it or a breakpoint did.

    skipBreakpointTaskID?: string | null

    Continue from a breakpoint: this task's breakpoint is ignored for one claim so the stopped step actually runs. Without this, Resume clears paused and the next poll re-hits the same still-eligible breakpoint without claiming anything — a ForEach on the last step never starts.

    step?: StepTarget

    One-shot claim allowance while paused. Consumed atomically (CAS) by the instance that honors it, so two dispatchers polling the same paused graph release work exactly once.