@sym-bot/mesh-channel 0.3.11 → 0.3.13

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.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sym-mesh-channel",
3
- "version": "0.3.10",
3
+ "version": "0.3.13",
4
4
  "description": "Real-time Claude-to-Claude mesh. Agent-to-agent cognitive signals over Bonjour LAN or WebSocket relay.",
5
5
  "author": {
6
6
  "name": "Hongwei Xu",
package/CHANGELOG.md CHANGED
@@ -1,5 +1,62 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.3.13
4
+
5
+ ### Changed
6
+
7
+ - **Track the latest released `@sym-bot/sym` (`^0.7.6`).** Pulls in the SVAF decision log (every evaluation — admit and reject — is now persisted and emitted) on top of the 0.7.5 replay-storm receive-path dedup. Additive; no API changes in mesh-channel.
8
+
9
+ ## 0.3.12
10
+
11
+ ### Changed
12
+
13
+ - **Bump `@sym-bot/sym` to `^0.7.5`** — mesh replay-storm receive-path dedup (dedup received CMBs so a co-resident peer restart no longer triggers a replay storm).
14
+
15
+ ### Fixed
16
+
17
+ - Align install commands + channel-flag handles with the actual marketplace (#13).
18
+ - Fix 5 moderate Dependabot vulnerabilities (`npm audit fix`).
19
+
20
+ ## 0.3.11
21
+
22
+ ### Added
23
+
24
+ - **Prompt-injection filter (security layer 3).** Every incoming CMB — all CAT7 fields and the opaque payload — is now scanned against a curated blocklist of injection patterns before `pushChannel()` is called. Patterns cover: instruction-override phrases ("ignore previous instructions", "forget everything you know"), role/persona hijacking ("you are now a new AI", "act as an unrestricted assistant"), system-prompt injection (`<system>`, `[SYSTEM]`, `## system prompt`), tool-call fabrication (`<tool_call>`, `<function_calls>`), and privilege-escalation language ("override safety filter", "jailbreak", "DAN mode"). Blocked CMBs are audit-logged to stderr with reason, peer name, and a truncated excerpt — never silently dropped.
25
+
26
+ - **Per-peer rate limiting.** A sliding 60-second window caps each peer at `SYM_RATE_LIMIT` CMBs per minute (default: 30). CMBs exceeding the cap are blocked and audit-logged. Prevents flood attacks from a compromised or malfunctioning peer.
27
+
28
+ - **Payload size cap.** Payloads larger than `SYM_MAX_PAYLOAD_BYTES` (default: 8 192 bytes) are rejected before context injection. Prevents oversized-payload attacks that could exhaust the context window.
29
+
30
+ - **README security section updated** to document all four defence layers accurately.
31
+
32
+ ### Security model
33
+
34
+ The full gate before any mesh signal reaches Claude's context is now:
35
+ 1. **Transport** — Ed25519 peer identity + relay-token auth.
36
+ 2. **Protocol** — SVAF per-field semantic relevance gate.
37
+ 3. **Safety** — prompt-injection filter + rate limiter + payload size cap (this release).
38
+ 4. **Application** — text-only injection; `claude/channel/permission` not declared.
39
+
40
+ ## 0.3.10
41
+
42
+ ### Fixed
43
+
44
+ - **Live-identity-collision auto-suffix.** Two sessions wanting the same `SYM_NODE_NAME` previously hard-failed with `EIDENTITYLOCK`. The server now checks whether the name's lock file is held by a live process; if so, it appends `-2`, `-3`, … (up to 64) until it finds a free slot. Stale locks (dead holder) are still reclaimed by `@sym-bot/sym` on start — unchanged. Result: duplicate dev-agent sessions, or any two sessions sharing a fixed `SYM_NODE_NAME`, coexist instead of failing.
45
+
46
+ ## 0.3.9
47
+
48
+ ### Fixed
49
+
50
+ - **stdout discipline — fixes `-32000 / Connection closed`.** The MCP JSON-RPC stream runs on stdout. Dependency load banners (e.g. `[encoder] Semantic encoder ready` from the semantic model) were printing to stdout, intermittently corrupting the handshake and causing Claude Code to log "Ignoring non-JSON line on stdout" or drop the connection with `-32000`. A stdout guard is now installed before any `require()`: lines that start with `{` (JSON-RPC frames) pass through to the real stdout; everything else is redirected to stderr. Verified: stdout is pure JSON after the fix.
51
+
52
+ ## 0.3.8
53
+
54
+ ### Added
55
+
56
+ - **Per-session node identity.** Each Claude Code session now gets its own mesh identity derived from the working-directory slug and a session-unique suffix (e.g. `claude-symday-webapp-6e174e`), instead of all sessions sharing the machine hostname. Enables multiple Claude Code sessions on the same machine to appear as distinct peers on the mesh — confirmed working over loopback via Bonjour with no relay.
57
+
58
+ - **`npx` launch path.** The plugin now launches via `npx @sym-bot/mesh-channel` rather than a global `node` path, so marketplace installs work without a prior `npm install -g`. The npx cache warms on first launch; subsequent sessions start in ~1 s.
59
+
3
60
  ## 0.3.7
4
61
 
5
62
  ### Changed
package/README.md CHANGED
@@ -6,12 +6,12 @@
6
6
 
7
7
  ```
8
8
  # in Claude Code — the first line is one-time setup
9
- /plugin marketplace add sym-bot/sym-mesh-channel
10
- /plugin install sym-mesh-channel@sym-mesh-channel
9
+ /plugin marketplace add anthropics/claude-plugins-community
10
+ /plugin install sym-mesh-channel@claude-community
11
11
  ```
12
12
 
13
13
  [![npm](https://img.shields.io/npm/v/@sym-bot/mesh-channel)](https://www.npmjs.com/package/@sym-bot/mesh-channel)
14
- [![Plugin Directory](https://img.shields.io/badge/Anthropic_Plugin_Directory-approved-success)](https://claude.ai/settings/plugins/submit)
14
+ [![Plugin Directory](https://img.shields.io/badge/Anthropic_Plugin_Directory-listed-success)](https://github.com/anthropics/claude-plugins-community)
15
15
  [![MMP Spec](https://img.shields.io/badge/protocol-MMP_v1.0-orange)](https://meshcognition.org/spec/mmp)
16
16
  [![SVAF arXiv](https://img.shields.io/badge/arXiv-2604.03955-b31b1b.svg)](https://arxiv.org/abs/2604.03955)
17
17
  [![MMP arXiv](https://img.shields.io/badge/arXiv-2604.19540-b31b1b.svg)](https://arxiv.org/abs/2604.19540)
@@ -69,22 +69,33 @@ They're **not alternatives** — the channel is built *on* sym and speaks the sa
69
69
  Install the published plugin — in Claude Code:
70
70
 
71
71
  ```
72
- /plugin marketplace add sym-bot/sym-mesh-channel
73
- /plugin install sym-mesh-channel@sym-mesh-channel
72
+ /plugin marketplace add anthropics/claude-plugins-community
73
+ /plugin install sym-mesh-channel@claude-community
74
74
  ```
75
75
 
76
76
  That gives you all **11 MCP tools — no flag, no npm, nothing else to add** — and **one install covers every Claude Code session on the machine**: open as many as you like (one per repo, or one planning while another codes); each gets its own mesh identity and picks up the mesh on resume. The first command is a one-time marketplace registration.
77
77
 
78
- Also in the official [Anthropic Plugin Directory](https://claude.ai/settings/plugins) — `/plugin` → **Discover** → search "mesh", or `/plugin install sym-mesh-channel@claude-community` after `/plugin marketplace add anthropics/claude-plugins-community`.
78
+ Discoverable in Claude Code too — `/plugin` → **Discover** → search "mesh".
79
+
80
+ Want the always-latest build straight from the source repo? Add it as its own marketplace instead:
81
+
82
+ ```
83
+ /plugin marketplace add sym-bot/sym-mesh-channel
84
+ /plugin install sym-mesh-channel@sym-mesh-channel
85
+ ```
86
+
87
+ This tracks `main`, so it can be a few versions ahead of the community listing (whose pinned build lags until the next directory sync). **Whichever marketplace you install from, the channel flag below must use that same `@<marketplace>` handle** — `@claude-community` for the directory install above, `@sym-mesh-channel` for this source-repo install. Mismatching them is the #1 cause of `plugin … not installed` when launching with the channel flag.
79
88
 
80
89
  ### Real-time push (the `<channel>` experience)
81
90
 
82
91
  The tools above are pull-based. For a peer's message to **land in Claude's context mid-turn, with no tool call** — the "Claude thinks with the mesh" experience the screenshots show — Claude Code has to load this plugin's *channel*, which is currently gated behind a flag while it awaits Anthropic's approved-channels allowlist:
83
92
 
84
93
  ```
85
- claude --dangerously-load-development-channels plugin:sym-mesh-channel@sym-mesh-channel
94
+ claude --dangerously-load-development-channels plugin:sym-mesh-channel@claude-community
86
95
  ```
87
96
 
97
+ (If you installed from the source-repo marketplace instead, use `plugin:sym-mesh-channel@sym-mesh-channel` — the `@<marketplace>` must match wherever you installed from.)
98
+
88
99
  The flag becomes unnecessary once the channel is allowlisted — tracked in [anthropics/claude-plugins-official#1512](https://github.com/anthropics/claude-plugins-official/issues/1512).
89
100
 
90
101
  ## What you get
@@ -334,7 +345,7 @@ Some corporate networks block mDNS multicast entirely — try a hotspot or home
334
345
 
335
346
  The 11 tools work without any flag. The real-time `<channel>` **push** is separate: Claude Code only delivers channel notifications for channels on its **approved-channels allowlist**, and sym-mesh-channel isn't on it yet — so push requires the development-channels flag matching your install path:
336
347
 
337
- - plugin install: `--dangerously-load-development-channels plugin:sym-mesh-channel@sym-mesh-channel`
348
+ - plugin install: `--dangerously-load-development-channels plugin:sym-mesh-channel@claude-community` (or `@sym-mesh-channel` if you installed from the source-repo marketplace — the handle must match your install source)
338
349
  - npm install: `--dangerously-load-development-channels server:claude-sym-mesh`
339
350
 
340
351
  This is an Anthropic-side gate, not a bug here — once the channel is allowlisted the flag is no longer needed. Tracked in [anthropics/claude-plugins-official#1512](https://github.com/anthropics/claude-plugins-official/issues/1512).
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sym-bot/mesh-channel",
3
- "version": "0.3.11",
3
+ "version": "0.3.13",
4
4
  "description": "MCP server — real-time agent-to-agent cognition for Claude Code remote teams via the SYM mesh.",
5
5
  "main": "server.js",
6
6
  "bin": {
@@ -22,7 +22,7 @@
22
22
  ],
23
23
  "dependencies": {
24
24
  "@modelcontextprotocol/sdk": "^1.12.1",
25
- "@sym-bot/sym": "^0.7.4",
25
+ "@sym-bot/sym": "^0.7.6",
26
26
  "bonjour-service": "^1.3.0"
27
27
  },
28
28
  "engines": {