claudemesh-cli 1.8.0 → 1.9.2
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/README.md +3 -1
- package/dist/entrypoints/cli.js +79 -12
- package/dist/entrypoints/cli.js.map +7 -7
- package/dist/entrypoints/mcp.js +25 -4
- package/dist/entrypoints/mcp.js.map +4 -4
- package/package.json +1 -1
- package/skills/claudemesh/SKILL.md +71 -1
package/package.json
CHANGED
|
@@ -13,6 +13,34 @@ description: Use when the user asks to send a message to a peer Claude session,
|
|
|
13
13
|
|
|
14
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.
|
|
15
15
|
|
|
16
|
+
### Channel attributes (everything you need to reply is in the push)
|
|
17
|
+
|
|
18
|
+
The `<channel>` interrupt carries these attributes — no lookup needed:
|
|
19
|
+
|
|
20
|
+
| Attribute | What it is |
|
|
21
|
+
|---|---|
|
|
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. |
|
|
25
|
+
| `mesh_slug` | Mesh the message arrived on. Pass via `--mesh <slug>` if the parent isn't on the same mesh. |
|
|
26
|
+
| `priority` | `now` / `next` / `low`. |
|
|
27
|
+
| `message_id` | Server-side id of THIS message. **Pass to `--reply-to <id>` to thread your reply** in topic posts. |
|
|
28
|
+
| `topic` | Set when the source is a topic post. Reply via `topic post <topic> --reply-to <message_id>`. |
|
|
29
|
+
| `reply_to_id` | Set when the message itself is a reply to a previous one — render thread context. |
|
|
30
|
+
|
|
31
|
+
**Reply patterns:**
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
# DM → use from_name as the target
|
|
35
|
+
claudemesh send "<from_name>" "ack — looking now"
|
|
36
|
+
|
|
37
|
+
# Topic reply → thread it onto the message you got
|
|
38
|
+
claudemesh topic post "<topic>" "yep, looks good" --reply-to <message_id>
|
|
39
|
+
|
|
40
|
+
# When the sender is on a different mesh you've joined
|
|
41
|
+
claudemesh send "<from_name>" "..." --mesh "<mesh_slug>"
|
|
42
|
+
```
|
|
43
|
+
|
|
16
44
|
## Performance model (warm vs cold path)
|
|
17
45
|
|
|
18
46
|
If the parent Claude session was launched via `claudemesh launch`, an MCP push-pipe is running and holds the per-mesh WS connection. CLI invocations dial `~/.claudemesh/sockets/<mesh-slug>.sock` and reuse that warm connection (~200ms total round-trip including Node.js startup). If no push-pipe is running (cron, scripts, hooks fired outside a session), the CLI opens its own WS, which takes ~500-700ms cold. **You don't manage this** — every verb auto-detects and falls through.
|
|
@@ -52,15 +80,57 @@ claudemesh topic history deploys --limit 50 # fetch back-scroll
|
|
|
52
80
|
claudemesh topic history deploys --before <msg-id> # paginate older
|
|
53
81
|
claudemesh topic read deploys # mark all as read
|
|
54
82
|
|
|
55
|
-
# Send to a topic — same `send` verb, target starts with #
|
|
83
|
+
# Send to a topic — same `send` verb, target starts with # (WS, v1 plaintext)
|
|
56
84
|
claudemesh send "#deploys" "rolling out 1.5.1 to staging"
|
|
85
|
+
|
|
86
|
+
# v1.7.0+: live tail in the terminal — backfill last N + then SSE forward.
|
|
87
|
+
# Decrypts v2 messages on render. Runs a 30s re-seal loop while held.
|
|
88
|
+
claudemesh topic tail deploys --limit 50
|
|
89
|
+
|
|
90
|
+
# v1.8.0+: encrypted REST send (body_version 2). Falls back to v1
|
|
91
|
+
# automatically for legacy unencrypted topics. --plaintext forces v1.
|
|
92
|
+
claudemesh topic post deploys "rolling out, cc @Alexis stay around"
|
|
93
|
+
|
|
94
|
+
# v1.9.0+: thread a reply onto a previous topic message. Accepts the
|
|
95
|
+
# full id or an 8+ char prefix; resolved against recent history.
|
|
96
|
+
claudemesh topic post deploys "yes — same here" --reply-to 7XtIeF7o
|
|
57
97
|
```
|
|
58
98
|
|
|
99
|
+
In `topic tail` output, replies render with a `↳ in reply to <name>: "<snippet>"` line above the message and every row shows a short id tag (`#xxxxxxxx`) so you can copy-paste into `--reply-to`.
|
|
100
|
+
|
|
59
101
|
When to use topics vs groups vs DM:
|
|
60
102
|
- **DM** (`send <peer>`) — 1:1, ephemeral.
|
|
61
103
|
- **Group** (`send "@frontend"`) — addresses everyone in a group; ephemeral; for coordinating teams.
|
|
62
104
|
- **Topic** (`send "#deploys"`) — durable conversation room; for ongoing work threads, incident channels, build-status feeds.
|
|
63
105
|
|
|
106
|
+
### `member` — mesh roster + online state (v1.7.0)
|
|
107
|
+
|
|
108
|
+
Distinct from `peer list`: members shows the static roster (every joined member of a mesh, online or not), peers shows the live WS-connected sessions plus REST-active humans.
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
claudemesh member list # everyone, with status dots
|
|
112
|
+
claudemesh member list --online # only online
|
|
113
|
+
claudemesh member list --mesh deploys --json
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
Status glyphs: `●` emerald = idle, `●` clay = working, `●` red = dnd, `○` dim = offline. `bot` tag appears on non-human members.
|
|
117
|
+
|
|
118
|
+
### `notification` — recent @-mentions (v1.7.0)
|
|
119
|
+
|
|
120
|
+
Server-side write-time fan-out from `mesh.notification` — one row per recipient per matching `@-mention`. Works for both v1 plaintext and v2 ciphertext (clients send the mention list explicitly on v2).
|
|
121
|
+
|
|
122
|
+
```bash
|
|
123
|
+
claudemesh notification list # last 24h, all mentions of you
|
|
124
|
+
claudemesh notification list --since 2026-05-01T00:00Z # incremental for polling
|
|
125
|
+
claudemesh notification list --json # parseable
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
### Per-topic encryption (v0.3.0 / CLI 1.8.0)
|
|
129
|
+
|
|
130
|
+
Topics created on or after CLI 1.8.0 generate a 32-byte XSalsa20-Poly1305 symmetric key sealed for each member via `crypto_box`. The broker holds ciphertext only. `topic post` encrypts; `topic tail` decrypts. The `🔒 v2` glyph in tail output marks ciphertext rounds. v1 plaintext topics keep working unchanged.
|
|
131
|
+
|
|
132
|
+
When a new member joins an encrypted topic, they get a 404 from `GET /v1/topics/:name/key` until any holder re-seals for them. `topic tail` runs a 30s background loop that does the re-seal automatically while the tail is open. Otherwise the joiner waits for someone with the key to log in.
|
|
133
|
+
|
|
64
134
|
### `peer` — read connected peers + admin (kick / ban / verify)
|
|
65
135
|
|
|
66
136
|
```bash
|