Skip to content

P4: presence #49

Description

@Mearman

Parent: #45
Blocked by: P3 above

Refined during planning: presence is a gossip-frame extension, not a separate mechanism. gossip-frame's peer-advert already carries snapshot-seconds; extend it with an open extension bag (mirroring token-claims' own * tstr => any pattern) carrying status (active/idle/busy) and whatever else a peer wants to advertise about itself, plus periodic re-advertisement. list_agents/list_rooms read this the same way they'd read any other gossiped fact.


Foundational wire-mesh piece landed: ExaDev/wire-mesh#91 opens peer-advert's own extension tail (the same * tstr => any pattern token-claims already carries) and adds MeshSession.sendGossipUpdate(extensions?), which re-sends a fresh self-advert with given extensions merged in -- the mechanism periodic re-advertisement needs, since the initial self-advert wireUpConnection sends at connect time is otherwise never repeated. No timer lives inside MeshSession itself; the caller (agent-comms) owns its own re-advertisement cadence.

Remaining for P4, once #91 merges and a new wire-mesh-core version publishes: agent-comms' own periodic re-advertisement loop (calling sendGossipUpdate on some interval with {status: agent.status}), consuming the status extension field off each connected peer's own advert (via WireMeshTransport's own peer-directory access) to drive list_agents/list_rooms' own presence display, and deciding the actual re-advertisement interval.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions