claudemesh-cli 1.31.3 → 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.
package/dist/entrypoints/cli.js
CHANGED
|
@@ -104,7 +104,7 @@ __export(exports_urls, {
|
|
|
104
104
|
VERSION: () => VERSION,
|
|
105
105
|
URLS: () => URLS
|
|
106
106
|
});
|
|
107
|
-
var URLS, VERSION = "1.31.
|
|
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
|
-
|
|
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();
|
|
@@ -7930,7 +7931,6 @@ async function runPeers(flags) {
|
|
|
7930
7931
|
continue;
|
|
7931
7932
|
}
|
|
7932
7933
|
for (const p of peers) {
|
|
7933
|
-
const groups = p.groups.length ? " [" + p.groups.map((g) => `@${g.name}${g.role ? `:${g.role}` : ""}`).join(", ") + "]" : "";
|
|
7934
7934
|
const statusDot = p.status === "working" ? yellow("●") : green("●");
|
|
7935
7935
|
const name = bold(p.displayName);
|
|
7936
7936
|
const meta = [];
|
|
@@ -7944,9 +7944,20 @@ async function runPeers(flags) {
|
|
|
7944
7944
|
const summary = p.summary ? dim(` — ${p.summary}`) : "";
|
|
7945
7945
|
const pubkeyTag = dim(` · ${p.pubkey.slice(0, 16)}…`);
|
|
7946
7946
|
const selfTag = p.isThisSession ? dim(" ") + yellow("(this session)") : p.isSelf ? dim(" ") + yellow("(your other session)") : "";
|
|
7947
|
-
|
|
7947
|
+
const inlineTags = [];
|
|
7948
|
+
const peerRole = p.profile?.role?.trim();
|
|
7949
|
+
if (peerRole)
|
|
7950
|
+
inlineTags.push(`role:${peerRole}`);
|
|
7951
|
+
if (p.groups.length) {
|
|
7952
|
+
inlineTags.push(...p.groups.map((g) => `@${g.name}${g.role ? `:${g.role}` : ""}`));
|
|
7953
|
+
}
|
|
7954
|
+
const tagsStr = inlineTags.length ? " [" + inlineTags.join(", ") + "]" : "";
|
|
7955
|
+
render.info(`${statusDot} ${name}${selfTag}${tagsStr}${metaStr}${pubkeyTag}${summary}`);
|
|
7948
7956
|
if (p.cwd)
|
|
7949
7957
|
render.info(dim(` cwd: ${p.cwd}`));
|
|
7958
|
+
if (!peerRole && p.groups.length === 0) {
|
|
7959
|
+
render.info(dim(" role: (none) groups: (none)"));
|
|
7960
|
+
}
|
|
7950
7961
|
}
|
|
7951
7962
|
} catch (e) {
|
|
7952
7963
|
render.err(`${slug}: ${e instanceof Error ? e.message : String(e)}`);
|
|
@@ -15642,22 +15653,36 @@ claudemesh peer bans # list banned members
|
|
|
15642
15653
|
claudemesh peer verify [peer] # 6×5-digit safety numbers
|
|
15643
15654
|
\`\`\`
|
|
15644
15655
|
|
|
15645
|
-
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\`:
|
|
15646
15657
|
\`\`\`json
|
|
15647
15658
|
{
|
|
15648
15659
|
"displayName": "Mou",
|
|
15649
|
-
"pubkey": "abc123...",
|
|
15660
|
+
"pubkey": "abc123...", // session pubkey (rotates per claudemesh launch)
|
|
15661
|
+
"memberPubkey": "def456...", // stable identity (same across all sibling sessions)
|
|
15662
|
+
"sessionId": "uuid",
|
|
15650
15663
|
"status": "idle | working | dnd",
|
|
15651
15664
|
"summary": "string or null",
|
|
15665
|
+
"role": "lead | reviewer | bot | ...", // 1.31.5+: top-level alias of profile.role
|
|
15652
15666
|
"groups": [{ "name": "reviewers", "role": "lead" }],
|
|
15653
|
-
"
|
|
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 | ...",
|
|
15654
15675
|
"channel": "claude-code | api | ...",
|
|
15655
15676
|
"model": "claude-opus-4-7 | ...",
|
|
15656
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
|
|
15657
15680
|
"stats": { "messagesIn": 0, "messagesOut": 0, "toolCalls": 0, "errors": 0, "uptime": 1200 }
|
|
15658
15681
|
}
|
|
15659
15682
|
\`\`\`
|
|
15660
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
|
+
|
|
15661
15686
|
### \`message\` — send and inspect messages
|
|
15662
15687
|
|
|
15663
15688
|
\`\`\`bash
|
|
@@ -20041,4 +20066,4 @@ main().catch((err) => {
|
|
|
20041
20066
|
process.exit(EXIT.INTERNAL_ERROR);
|
|
20042
20067
|
});
|
|
20043
20068
|
|
|
20044
|
-
//# debugId=
|
|
20069
|
+
//# debugId=23383F2CEE3C764664756E2164756E21
|