mlx-bun library API
    Preparing search index...
    interface Row {
        admittedAt: number;
        cachedTokens: number;
        cacheNamespace?: string;
        closeTokenZero?: () => void;
        current: number;
        decodeSpan?: { end: number; start: number };
        fed: number[];
        fedTainted: boolean;
        fill?: FillStats;
        firstTokenAt: number;
        generated: number;
        merged: boolean;
        promptTokens: number;
        reject: (e: unknown) => void;
        req: BatchRequest;
        resolve: (s: BatchStats) => void;
        sampled: number;
        spec?: {
            acceptanceLengths?: number[];
            accepted: number;
            acceptedByPos?: number[];
            drafted: number;
            draftedByPos?: number[];
            forwardsSaved?: number;
            phaseMs?: SpecPhaseMs;
            rejected?: number;
            rounds?: number;
            targetCalls: number;
            tokensPerForward?: number;
        };
    }
    Index
    admittedAt: number

    performance.now() marks for BatchStats timing (0 = not reached).

    cachedTokens: number

    Prompt tokens restored from the prompt cache at admission (stats).

    cacheNamespace?: string
    closeTokenZero?: () => void
    current: number
    decodeSpan?: { end: number; start: number }

    A method that computes its whole result before publishing reports that work span; finish() then reports it as decode time, excluding admission wait and output delivery. Denoising sets it.

    fed: number[]

    Generated tokens whose KV actually entered the cache (fed as a step input) — serial generate()'s forwarded list. promptIds+fed is the exact token coverage of the row's caches, the put() entry key. PER-ROW EXACT for every row: pushes are gated on the pending register's per-slot real/placeholder flags (#pendingReal), so a doomed slot's placeholder is never recorded — and if one ever DID feed a forward, fedTainted flips instead (see #step's read).

    fedTainted: boolean

    A placeholder slot value fed this row's KV (junk token in the cache): the coverage key is no longer derivable — extraction refuses. Structurally unreachable today (a doomed row always evicts at the emit that follows its placeholder, filtering the slot before the next forward; cold steps never contain doomed rows because a flush emits every in-flight token) — this flag makes fed provably exact instead of resting on that timing chain.

    fill?: FillStats
    firstTokenAt: number
    generated: number
    merged: boolean

    Ever merged into a multi-row batch (or poisoned by a reject): its KV is interleaved in batched buffers — a finish put() must EXTRACT the row (#extractRowCaches) rather than adopt the inners.

    promptTokens: number
    reject: (e: unknown) => void
    resolve: (s: BatchStats) => void
    sampled: number
    spec?: {
        acceptanceLengths?: number[];
        accepted: number;
        acceptedByPos?: number[];
        drafted: number;
        draftedByPos?: number[];
        forwardsSaved?: number;
        phaseMs?: SpecPhaseMs;
        rejected?: number;
        rounds?: number;
        targetCalls: number;
        tokensPerForward?: number;
    }

    Type Declaration

    • OptionalacceptanceLengths?: number[]
    • accepted: number
    • OptionalacceptedByPos?: number[]
    • drafted: number
    • OptionaldraftedByPos?: number[]
    • OptionalforwardsSaved?: number
    • OptionalphaseMs?: SpecPhaseMs

      Round phase wall time, summed over the request's rounds. Present only under MLX_BUN_SPEC_PHASE_TIMING=1, which forces an evaluation at each phase boundary (diagnostic: it removes the overlap production decode relies on, so the sum is not production round time).

    • Optionalrejected?: number
    • Optionalrounds?: number
    • targetCalls: number
    • OptionaltokensPerForward?: number