@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.
- package/README.md +32 -8
- 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
|
|
46
|
-
|
|
45
|
+
**Read these values — do not compose them.** Inside herdr they are already in
|
|
46
|
+
your environment and cost nothing:
|
|
47
47
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
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
|
|
57
|
-
|
|
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.
|
|
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.
|
|
29
|
-
"@miadi/voice-client": "0.2.
|
|
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",
|