Marmot-TS
    Preparing search index...

    Function ensureMarmotCapabilities

    • Ensures a Capabilities object advertises the MLS code points a Marmot v2 group relies on, so a LeafNode bearing these capabilities passes MLS leaf-capability validation when added to a group that carries them.

      Marmot v2 stores group state as versioned app components in the app_data_dictionary GroupContext extension (0x0006) and mutates them with app_data_update proposals (0x0008), both from draft-ietf-mls-extensions-09. Every member MUST advertise support for the extension and the proposal type. last_resort (0x000a extension) is also advertised for key-package reuse, and the self_remove proposal (0x000a proposal type) for member departure (protocol-core/member-departure.md).

      The agent-text-stream-QUIC receive role capability (0xf2d1) is advertised so a member can be invited into a group whose marmot.group.agent-text-stream.quic.v1 (0x8006) policy requires it — darkmatter's default group sets required_member_roles = receive, and its do_send_invite rejects any KeyPackage missing a required role capability (agent-text-stream-quic-v1.md).

      Only receive is advertised. The role extensions are capability markers (registries.md: "v1 defines no extension data for them"), and a client that does not implement raw QUIC is explicitly conformant — it "ignores the live preview and waits for the final MLS message" (transports/quic.md). marmot-ts honestly satisfies receive that way: it has no QUIC data plane (and raw QUIC is not portably available in browsers/Node/Bun), so it never advertises send (0xf2d2) or fanout (0xf2d4), which would claim the ability to originate or relay live QUIC streams it cannot fulfill.

      Parameters

      Returns Capabilities