claudemesh-cli 1.34.2 → 1.34.4

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.
@@ -9,9 +9,13 @@ description: Use when the user asks to send a message to a peer Claude session,
9
9
 
10
10
  **You invoke claudemesh exclusively through the `claudemesh` CLI via Bash.** There are no MCP tools to call — `tools/list` returns empty for the claudemesh MCP server. The MCP server exists only to deliver inbound peer messages as `<channel source="claudemesh">` interrupts mid-turn. Everything else is CLI.
11
11
 
12
+ ## Launch welcome (`kind: "welcome"`) — 1.34.2+
13
+
14
+ 5 seconds after Claude Code attaches to claudemesh via `claudemesh launch`, the MCP server emits ONE `<channel source="claudemesh">` push with `meta.kind: "welcome"`. It carries identity (`self_display_name`, `self_session_pubkey`, `self_role`), the active `mesh_slug`, live `peer_count` + `peer_names`, recent `unread_count` + `latest_message_ids`, and a CLI hint line. Treat it as the "mesh is connected" handshake — read it once, internalize identity + peers + inbox state, and use it to decide whether to act on unread items right away. Do NOT reply to a welcome push the way you reply to a DM; it has no sender.
15
+
12
16
  ## When you receive a `<channel source="claudemesh">` message
13
17
 
14
- Respond IMMEDIATELY. Pause your current task, reply via `claudemesh send`, then resume. Read `from_name`, `mesh_slug`, and `priority` from the channel attributes. Reply by setting `<to>` to the sender's `from_name`. Do not ignore low-priority messages — acknowledge them briefly even if you defer action. If the channel meta contains `subtype: reminder`, this is a scheduled reminder you set yourself — act on it.
18
+ Respond IMMEDIATELY (unless `meta.kind` is `"welcome"` or `"system"` — those are informational, no reply needed). Pause your current task, reply via `claudemesh send`, then resume. Read `from_name`, `mesh_slug`, and `priority` from the channel attributes. Reply by setting `<to>` to the sender's `from_name`. Do not ignore low-priority messages — acknowledge them briefly even if you defer action. If the channel meta contains `subtype: reminder`, this is a scheduled reminder you set yourself — act on it.
15
19
 
16
20
  ### Channel attributes (everything you need to reply is in the push)
17
21
 
@@ -19,14 +23,17 @@ The `<channel>` interrupt carries these attributes — no lookup needed:
19
23
 
20
24
  | Attribute | What it is |
21
25
  |---|---|
22
- | `from_name` | Sender's display name. **Use as `to` in your reply** for DMs. |
23
- | `from_pubkey` | Sender's session pubkey (hex). Stable per-session. |
24
- | `from_member_id` | Sender's stable mesh.member id. Survives display-name changes the canonical id. |
26
+ | `from_name` | Sender's display name. **Use as `to` in your reply** for DMs. Empty/absent on `kind: "welcome"` and `kind: "system"`. |
27
+ | `from_pubkey` | Sender's **session pubkey** (hex, ephemeral per-launch). Since 1.34.0 this is the session pubkey of the launched session that originated the send, NOT the daemon's stable member pubkey — sibling sessions of the same human are correctly disambiguated. |
28
+ | `from_session_pubkey` | Same as `from_pubkey` for session-originated DMs. Kept as a separate key so the model never confuses session vs member identity when a control-plane source is involved. |
29
+ | `from_member_id` / `from_member_pubkey` | Sender's stable mesh.member id / pubkey. Survives display-name and session rotation. Use to recognize "the same human across multiple Claude Code windows". |
25
30
  | `mesh_slug` | Mesh the message arrived on. Pass via `--mesh <slug>` if the parent isn't on the same mesh. |
26
31
  | `priority` | `now` / `next` / `low`. |
27
32
  | `message_id` | Server-side id of THIS message. **Pass to `--reply-to <id>` to thread your reply** in topic posts. |
33
+ | `client_message_id` | Sender-stable idempotency id (UUID). Survives broker restarts; safe to log. |
28
34
  | `topic` | Set when the source is a topic post. Reply via `topic post <topic> --reply-to <message_id>`. |
29
35
  | `reply_to_id` | Set when the message itself is a reply to a previous one — render thread context. |
36
+ | `kind` (welcome/system meta only) | `"welcome"` for the launch handshake, `"system"` for peer_join/peer_leave/etc. — neither needs a reply. |
30
37
 
31
38
  **Reply patterns:**
32
39
 
@@ -370,15 +377,19 @@ claudemesh message send <p> "..." --priority now # bypass busy gates
370
377
  claudemesh message send <p> "..." --priority next # default
371
378
  claudemesh message send <p> "..." --priority low # pull-only
372
379
 
373
- # inbox (alias: claudemesh inbox)
374
- claudemesh message inbox
375
- claudemesh message inbox --json
380
+ # inbox (alias: claudemesh inbox) — 1.34.0+ reads from inbox.db via daemon IPC
381
+ claudemesh inbox # all attached meshes, last 100
382
+ claudemesh inbox --mesh <slug> # scoped to one mesh
383
+ claudemesh inbox --mesh <slug> --limit 20 # custom cap
384
+ claudemesh inbox --json # full row (sender_pubkey, mesh, body, received_at, …)
376
385
 
377
386
  # delivery status (alias: claudemesh msg-status <id>)
378
387
  claudemesh message status <message-id>
379
388
  claudemesh message status <message-id> --json
380
389
  ```
381
390
 
391
+ **Inbox source (1.34.0+):** `claudemesh inbox` queries the daemon's persistent `~/.claudemesh/daemon/inbox.db` over IPC — it is NOT a fresh broker-WS buffer drain. Rows survive daemon restarts. Sender attribution is the actual session pubkey of the launched session that originated the send (NOT the stable member pubkey of the sender's daemon), so two sibling sessions of the same human appear as distinct rows.
392
+
382
393
  `send` JSON output: `{"ok": true, "messageId": "...", "target": "..."}`. Errors: `{"ok": false, "error": "..."}`.
383
394
 
384
395
  ### `state` — shared per-mesh key-value store