openmixer — generated API reference
    Preparing search index...

    Interface ServedPatchEndpoint

    A patch endpoint AS THE CONSOLE SERVES IT: the patch, plus what the live graph says about it right now. At most ONE mark, and absent means every leg is linked into the channel's head and carrying audio:

    • deferred — the patch carries NO audio: the source is absent from the live graph (a stopped stream, an unplugged stagebox), or no leg is linked into the head input. A surface ghosts the cell.
    • partial — at least one leg is linked and carrying while another is not: a stereo source running on one leg. Half-connected is a real operating condition and neither alternative tells the truth about it — drawn live it hides a dead leg, ghosted it claims a source that IS feeding the desk is gone.
    • unknown — the console cannot say. There is no live-graph mirror to ask, and the deferral ledger is silent about this endpoint; silence is not evidence of audio. A surface says so rather than drawing a live cell it has no grounds for.

    reason accompanies every mark and names its cause (PatchLivenessReason) — the difference between "your stagebox is unplugged" and "this patch was never laid" is the whole of what the operator does next.

    SEPARATE from PatchEndpointJson on purpose: that type is what a patch IS — it is persisted, under PATCH_SCHEMA_VERSION — and this is what the patch is DOING. A stored mark would carry one room's absent stagebox into the next room, where the box is plugged in.

    foreign is a FOURTH thing a served endpoint can be, and not a mark on a declared one: the live graph carries a link into this channel's head that the crosspoint ledger never declared (WirePlumber's default-sink policy adopting an app's stream — speech-dispatcher-dummy into MAIN's neighbourhood, live #73/#74 — or a hand-laid pw-link). GRAPH IS TRUTH (the crosspoint spec's own law: "anything you wire in PipeWire shows up in the matrix"), so this endpoint is APPENDED to the served set rather than folded into a declared one, and it is never written back — a client that echoed it into a PATCH would be declaring a patch nobody asked for. app names the source NODE (import('./port-name.js').nodeOfPort) so a surface can say WHOSE link it is, not just that one exists.

    interface ServedPatchEndpoint {
        app?: string;
        deferred?: boolean;
        foreign?: boolean;
        l: string;
        partial?: boolean;
        r?: string;
        reason?: PatchLivenessReason;
        unknown?: boolean;
    }

    Hierarchy (View Summary)

    Index
    app?: string

    The foreign link's source node name, present only alongside foreign.

    deferred?: boolean
    foreign?: boolean

    A live link into the head the console did not declare — never written back.

    l: string
    partial?: boolean
    r?: string
    unknown?: boolean