mlx-bun library API
    Preparing search index...

    Draft preparation consumes each target chunk at the same batch geometry. Inputs are borrowed and contain only new tokens/context, with equal chunk lengths across rows. A null checkpoint appends a cold request. The provider owns alignment and retained hidden state; scheduling and persistence do not. Membership and capture occur between prefill calls. Capture returns owned state after at least one target token has been consumed for that row.

    interface DraftPrefillGroup {
        namespace: string;
        prefillMode: "full" | "tail-split";
        rowCount: number;
        tapLayers: readonly number[];
        append(checkpoints: readonly (DraftRowCheckpoint | null)[]): void;
        capture(row: number): DraftRowCheckpoint;
        dispose(): void;
        filterRows(keep: readonly number[]): void;
        materialize(): void;
        prefill(tokens: MlxArray, context?: MlxArray): void | Promise<void>;
        prepareAppend(
            checkpoints: readonly (DraftRowCheckpoint | null)[],
        ): PreparedStateChange;
    }
    Index
    namespace: string
    prefillMode: "full" | "tail-split"

    Target prefill shape required by this provider's oracle. Most mlx-lm providers leave the final prompt token pending (tail-split); the MTP heads start from a full-prompt target forward.

    rowCount: number
    tapLayers: readonly number[]