feat(core): gossip this side's own agent identity and merge discoveries into listAgents - #139
Merged
Merged
Conversation
…es into listAgents WireMeshTransport's gossip tick gains a third optional source (getSelfAgentAdvert), gossiping this side's own name/harness/cwd/pid/ startedAt/tags/subscribedRooms under agent/self -- the write half of P3.8's eventual agent register/update/offline retirement. Deliberately excludes status (already carried separately under presence/status) and visibility (only ever populated for a "visible" agent in the first place, so a discovered entry's visibility is always exactly "visible" by construction). MeshStore.selfAgentAdvert reads this store's own agent record and withholds the advert entirely for anything other than "visible" -- gossip reaches every connected peer regardless of mesh-approval status, so advertising a hidden or ghost agent's identity this way would leak exactly what those visibility levels exist to withhold. AgentRegistry.listAgents merges in a gossip-discovered agent not otherwise locally known, mirroring listRooms' own room-discovery merge (#138): a display-only placeholder AgentIdentity, real facts from the gossiped advert, status read from the existing presence/ status key, never merged into the local agents map, and always shadowed by a real local record when one exists.
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
🎉 This PR is included in version 2.28.0 🎉 The release is available on: Your semantic-release bot 📦🚀 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
WireMeshTransport's gossip tick gains a third optional source (getSelfAgentAdvert), gossiping this side's own name/harness/cwd/pid/startedAt/tags/subscribedRooms under agent/self -- the write half of P3.8's eventual agent register/update/offline retirement (agent-comms#48). Deliberately excludes status (already carried separately under presence/status, no need to duplicate) and visibility (only ever populated for a "visible" agent in the first place, so a discovered entry's visibility is always exactly "visible" by construction).
MeshStore.selfAgentAdvert reads this store's own agent record and withholds the advert entirely for anything other than "visible" -- gossip reaches every connected peer regardless of mesh-approval status (quarantined connections observe gossip too, per wire-mesh-transport.ts's own allSessions comments), so advertising a hidden or ghost agent's identity this way would leak exactly what those visibility levels exist to withhold.
AgentRegistry.listAgents merges in a gossip-discovered agent not otherwise locally known, mirroring listRooms' own room-discovery merge (#138) closely: a display-only placeholder AgentIdentity built from the gossiped advert, status read from the existing presence/status key rather than duplicated, never merged into the local agents map, and always shadowed by a real local record when one exists.
Tested at both layers: a real two-transport integration test proving the gossip write side actually reaches a peer's listKnownDevices, and a fake-harness AgentRegistry test proving the merge (including the shadow-a-known-agent and no-capability cases) -- confirmed the merge test can actually fail (temporarily emptied the discovery loop, watched it fail for the right reason, reverted) before trusting the green run.
Refs #48.