@miadi/voice-mcp 0.3.0 → 0.3.1

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.
Files changed (2) hide show
  1. package/README.md +32 -8
  2. package/package.json +3 -3
package/README.md CHANGED
@@ -42,19 +42,43 @@ portal card is for.
42
42
  }
43
43
  ```
44
44
 
45
- Read these in the **same invocation that publishes**. A pane id copied from
46
- another message points a reply at somebody else's terminal.
45
+ **Read these values — do not compose them.** Inside herdr they are already in
46
+ your environment and cost nothing:
47
47
 
48
- The server is the authority: an absent, incomplete, or `"none"` declaration
49
- answers `400 { error, problems, help }` — every missing field at once, plus the
50
- shape to send — and no TTS is spent on it. The tool schema mirrors the rule so
51
- the common case is a correct first call rather than a refusal to interpret.
48
+ | field | where it actually is |
49
+ |---|---|
50
+ | `workspace` | `$HERDR_WORKSPACE_ID` |
51
+ | `tab` | `$HERDR_TAB_ID` |
52
+ | `pane` | `$HERDR_PANE_ID` |
53
+ | `session` | `default` when `$HERDR_SOCKET_PATH` is `~/.config/herdr/herdr.sock`, else the `<name>` in `.../herdr/sessions/<name>/herdr.sock` |
54
+
55
+ Inside tmux: `$TMUX_PANE` and `tmux display-message -p "#{session_name}"`. Read
56
+ them in the **same invocation that publishes** — a pane id copied from another
57
+ message is a real id pointing at somebody else's terminal.
58
+
59
+ The server is the authority, twice over:
60
+
61
+ 1. **Shape.** An absent, incomplete, or `"none"` declaration answers
62
+ `400 { error, problems, help }` — every missing field at once, plus the shape
63
+ to send — and no TTS is spent on it.
64
+ 2. **Truth.** When the declaration names the portal's own host and user, it is
65
+ probed against the live multiplexer inventory. An address that is not in it is
66
+ **refused**, and the refusal prints what the inventory *does* hold. This
67
+ exists because a required field taught an agent to invent `wH:p2` in a session
68
+ that has no such workspace, and the card drew a Steer button that led nowhere
69
+ (2026-08-05).
70
+
71
+ A probe that cannot run — another host, no herdr installed — is `unprovable`, not
72
+ a refusal: it publishes, `attested` stays `"self-declared"`, and the reason is
73
+ recorded on the record. An unreadable inventory proves nothing in either
74
+ direction.
52
75
 
53
76
  `reach` is the server's verdict, never the caller's claim: declaring a different
54
77
  host or a multiplexer owned by another user publishes fine and renders as
55
78
  unreachable, because that is a fact about the topology rather than a defect in
56
- the declaration. `attested` stays `"self-declared"` until an agent can register
57
- its pane — the card says so, and hiding it would make a guess look like a fact.
79
+ the declaration. `attested: "server"` means **the pane was seen**, not that this
80
+ persona occupies it — the card says `pane live` rather than `verified`, and
81
+ `verified` stays unspent until occupancy itself can be proven.
58
82
 
59
83
  Resolution consults exactly what it is handed: an explicit reference, a
60
84
  caller-supplied `cwd`, or an existing record's binding. It does **not** rank
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@miadi/voice-mcp",
3
- "version": "0.3.0",
3
+ "version": "0.3.1",
4
4
  "description": "MCP server fronting the Miadi voice layer with episode addressing — play, find, publish and mint episode-bound voice from an agent's tool surface.",
5
5
  "license": "MIT",
6
6
  "author": "Miadi",
@@ -25,8 +25,8 @@
25
25
  "dependencies": {
26
26
  "@modelcontextprotocol/sdk": "^1.30.0",
27
27
  "zod": "^4.4.0",
28
- "@miadi/voice": "0.3.0",
29
- "@miadi/voice-client": "0.2.1"
28
+ "@miadi/voice": "0.3.1",
29
+ "@miadi/voice-client": "0.2.2"
30
30
  },
31
31
  "devDependencies": {
32
32
  "@types/node": "^22.0.0",