claudemesh-cli 1.31.4 → 1.31.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -104,7 +104,7 @@ __export(exports_urls, {
104
104
  VERSION: () => VERSION,
105
105
  URLS: () => URLS
106
106
  });
107
- var URLS, VERSION = "1.31.4", env;
107
+ var URLS, VERSION = "1.31.5", env;
108
108
  var init_urls = __esm(() => {
109
109
  URLS = {
110
110
  BROKER: process.env.CLAUDEMESH_BROKER_URL ?? "wss://ic.claudemesh.com/ws",
@@ -7896,7 +7896,8 @@ async function listPeersForMesh(slug) {
7896
7896
  function annotateSelf(peer, selfMemberPubkey, selfSessionPubkey) {
7897
7897
  const isSelf = !!(selfMemberPubkey && peer.memberPubkey && peer.memberPubkey === selfMemberPubkey);
7898
7898
  const isThisSession = !!(isSelf && selfSessionPubkey && peer.pubkey === selfSessionPubkey);
7899
- return { ...peer, isSelf, isThisSession };
7899
+ const role = peer.profile?.role?.trim() || undefined;
7900
+ return { ...peer, ...role ? { role } : {}, isSelf, isThisSession };
7900
7901
  }
7901
7902
  async function runPeers(flags) {
7902
7903
  const config = readConfig();
@@ -15652,22 +15653,36 @@ claudemesh peer bans # list banned members
15652
15653
  claudemesh peer verify [peer] # 6×5-digit safety numbers
15653
15654
  \`\`\`
15654
15655
 
15655
- JSON shape (per peer):
15656
+ JSON shape (per peer) — **render \`role\` and \`groups\` whenever you build a table for the user**, they're the highest-signal fields after \`displayName\`:
15656
15657
  \`\`\`json
15657
15658
  {
15658
15659
  "displayName": "Mou",
15659
- "pubkey": "abc123...",
15660
+ "pubkey": "abc123...", // session pubkey (rotates per claudemesh launch)
15661
+ "memberPubkey": "def456...", // stable identity (same across all sibling sessions)
15662
+ "sessionId": "uuid",
15660
15663
  "status": "idle | working | dnd",
15661
15664
  "summary": "string or null",
15665
+ "role": "lead | reviewer | bot | ...", // 1.31.5+: top-level alias of profile.role
15662
15666
  "groups": [{ "name": "reviewers", "role": "lead" }],
15663
- "peerType": "claude | telegram | ...",
15667
+ "profile": {
15668
+ "role": "lead",
15669
+ "title": "string or null",
15670
+ "bio": "string or null",
15671
+ "avatar": "emoji or null",
15672
+ "capabilities": ["..."]
15673
+ },
15674
+ "peerType": "claude | telegram | ai | human | connector | ...",
15664
15675
  "channel": "claude-code | api | ...",
15665
15676
  "model": "claude-opus-4-7 | ...",
15666
15677
  "cwd": "/path/to/working/dir or null",
15678
+ "isSelf": true, // peer is one of the caller's own sessions
15679
+ "isThisSession": false, // peer is the exact session running the cli
15667
15680
  "stats": { "messagesIn": 0, "messagesOut": 0, "toolCalls": 0, "errors": 0, "uptime": 1200 }
15668
15681
  }
15669
15682
  \`\`\`
15670
15683
 
15684
+ **When asked to "list peers" inside a launched session, prefer the human renderer (\`claudemesh peer list\`, no \`--json\`) — it already prints role + groups inline next to the name with an explicit \`(none)\` footer when both are absent. If you do need JSON for parsing, always include \`role\` and \`groups\` columns in any rendered table; the user's primary question is usually "who's in what role" and dropping those fields hides the answer.**
15685
+
15671
15686
  ### \`message\` — send and inspect messages
15672
15687
 
15673
15688
  \`\`\`bash
@@ -20051,4 +20066,4 @@ main().catch((err) => {
20051
20066
  process.exit(EXIT.INTERNAL_ERROR);
20052
20067
  });
20053
20068
 
20054
- //# debugId=4648201DE078375C64756E2164756E21
20069
+ //# debugId=23383F2CEE3C764664756E2164756E21