@miadi/voice-mcp 0.3.3 → 0.4.0
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/LICENSE +21 -0
- package/SPEC-LINKS.md +13 -7
- package/dist/closing.d.ts +34 -0
- package/dist/closing.d.ts.map +1 -0
- package/dist/closing.js +314 -0
- package/dist/closing.js.map +1 -0
- package/dist/handlers.d.ts +1 -1
- package/dist/handlers.d.ts.map +1 -1
- package/dist/handlers.js +85 -14
- package/dist/handlers.js.map +1 -1
- package/dist/index.js +0 -0
- package/package.json +11 -12
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2024 Miadi
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/SPEC-LINKS.md
CHANGED
|
@@ -4,7 +4,9 @@
|
|
|
4
4
|
behaviour on its own — every handler names the section that governs it in the
|
|
5
5
|
error it throws. Read these before implementing anything here.
|
|
6
6
|
|
|
7
|
-
Status recorded 2026-08-04
|
|
7
|
+
Status recorded 2026-08-04; refreshed 2026-08-13 (jgwill/Miadi#604): the
|
|
8
|
+
voice-episode-binding spec exists — it landed in `6dc64e69` on 2026-08-04 —
|
|
9
|
+
and this file's earlier "not yet written" row misled readers for nine days.
|
|
8
10
|
|
|
9
11
|
## Owned by this package
|
|
10
12
|
|
|
@@ -23,15 +25,19 @@ original. These are cited in the spec and in the code, never copied.
|
|
|
23
25
|
| `/a/src/Miadi/rispecs/episode-addressing/SPEC.md` | Domain master for episode identity | present |
|
|
24
26
|
| `/a/src/Miadi/rispecs/episode-addressing/episode-addressing.spec.md` | Address grammar `ep<NNN>[.<II>][/<segment>]`, iteration decision rule, number allocation, wheel-key contract | present |
|
|
25
27
|
| `/a/src/Miadi/rispecs/episode-addressing/episode-addressing.kin.md` | Why episodic memory is already an opus | present |
|
|
26
|
-
| `/a/src/Miadi/rispecs/voice-episode-binding/` | Playback path, enforcement decision table, discovery resolution order, the two-corpus resolution | **
|
|
28
|
+
| `/a/src/Miadi/rispecs/voice-episode-binding/` | Playback path, enforcement decision table, discovery resolution order, the two-corpus resolution | **present** — landed `6dc64e69`, 2026-08-04 |
|
|
27
29
|
|
|
28
|
-
###
|
|
30
|
+
### The four cited verdicts, now rulable
|
|
29
31
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
32
|
+
The scaffold-era table below named what could not be implemented before the
|
|
33
|
+
binding spec existed. The spec exists, all six handlers are code (none throws
|
|
34
|
+
`NotImplementedError` — `e295ffdd`), and since 2026-08-13 the binding itself
|
|
35
|
+
is a top-level `episode_binding` on `VoiceMessage` stamped by `produce()`
|
|
36
|
+
(jgwill/Miadi#604). What each verdict still owes is the spec's own ladder —
|
|
37
|
+
the ranked resolvers in `produce()` and the enforcement modes — which belongs
|
|
38
|
+
to its own issue.
|
|
33
39
|
|
|
34
|
-
| Cited as |
|
|
40
|
+
| Cited as | Consumed by |
|
|
35
41
|
|---|---|
|
|
36
42
|
| `§ Playback path` | `voice_play_episode` |
|
|
37
43
|
| `§ Discovery resolution order` | `voice_resolve_episode`, and every tool that omits `episode` |
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { VoiceMcpConfig } from "./contract.js";
|
|
2
|
+
import type { ClosingStageProof, CreateEpisodeInput } from "./types.js";
|
|
3
|
+
export declare class RefusedWheelError extends Error {
|
|
4
|
+
constructor(url: string);
|
|
5
|
+
}
|
|
6
|
+
export declare function refusePoisonedWheel(wheelUrl: string): void;
|
|
7
|
+
export interface ClosingReport {
|
|
8
|
+
closing: ClosingStageProof[];
|
|
9
|
+
drift: string[];
|
|
10
|
+
owedActions: string[];
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Run all five proofs for one episode folder, read-only, and name any drift
|
|
14
|
+
* shape found in the reconciler's vocabulary. This is Tool 6's whole behaviour
|
|
15
|
+
* and the tail of Tool 4's.
|
|
16
|
+
*/
|
|
17
|
+
export declare function proveClosing(config: VoiceMcpConfig, folder: string): Promise<ClosingReport>;
|
|
18
|
+
/**
|
|
19
|
+
* Which episode numbers are taken, over the union of the local tree and
|
|
20
|
+
* `origin/main` — never the local root alone
|
|
21
|
+
* ([episode-addressing spec § Number Allocation]).
|
|
22
|
+
*/
|
|
23
|
+
export declare function numberIsFree(config: VoiceMcpConfig, number: number): Promise<{
|
|
24
|
+
free: boolean;
|
|
25
|
+
observed: string;
|
|
26
|
+
}>;
|
|
27
|
+
export interface MintResult {
|
|
28
|
+
folder: string;
|
|
29
|
+
vesselPath: string;
|
|
30
|
+
stdout: string;
|
|
31
|
+
}
|
|
32
|
+
/** Invoke mkepisode with the wheel set, and read the folder it made. */
|
|
33
|
+
export declare function mintEpisode(config: VoiceMcpConfig, input: CreateEpisodeInput): Promise<MintResult>;
|
|
34
|
+
//# sourceMappingURL=closing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"closing.d.ts","sourceRoot":"","sources":["../src/closing.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAUxE,qBAAa,iBAAkB,SAAQ,KAAK;gBAC9B,GAAG,EAAE,MAAM;CAQxB;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAE1D;AA+ED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAC7B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED;;;;GAIG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,aAAa,CAAC,CAiJxB;AAED;;;;GAIG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAyB9C;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wEAAwE;AACxE,wBAAsB,WAAW,CAC/B,MAAM,EAAE,cAAc,EACtB,KAAK,EAAE,kBAAkB,GACxB,OAAO,CAAC,UAAU,CAAC,CA0CrB"}
|
package/dist/closing.js
ADDED
|
@@ -0,0 +1,314 @@
|
|
|
1
|
+
// The five-stage closing gate and the mkepisode invocation behind Tool 4 and
|
|
2
|
+
// Tool 6.
|
|
3
|
+
//
|
|
4
|
+
// Governing contract: voice-mcp.spec.md § Tool 4 · voice_create_episode,
|
|
5
|
+
// § The closing gate is part of the tool, not after it, and § Tool 6 ·
|
|
6
|
+
// voice_episode_closing_status. The proofs themselves are the
|
|
7
|
+
// chronicle-episode-closing skill's, implemented as code: each stage is proven
|
|
8
|
+
// by running its probe and reporting what the command ACTUALLY said — never a
|
|
9
|
+
// summary of what it should say, and never a later word than the stage proven.
|
|
10
|
+
//
|
|
11
|
+
// Stages 2 (committed) and 3 (pushed) belong to the human. This module still
|
|
12
|
+
// RUNS their probes — read-only — so the report carries observation, but a
|
|
13
|
+
// stage the human has not performed reads `owed` with its exact command in
|
|
14
|
+
// `owedActions`. The tool never runs `git add`, `commit`, or `push`.
|
|
15
|
+
import { execFile } from "node:child_process";
|
|
16
|
+
import { promises as fs } from "node:fs";
|
|
17
|
+
import path from "node:path";
|
|
18
|
+
import { promisify } from "node:util";
|
|
19
|
+
const exec = promisify(execFile);
|
|
20
|
+
/** The retired ceremony wheel. A card registered there is lost; the spec says
|
|
21
|
+
* an implementation refuses the host outright rather than warning about it. */
|
|
22
|
+
const POISONED_WHEEL_HOST = "tail3b11eb";
|
|
23
|
+
const WHEEL_PROBE_TIMEOUT_MS = 5_000;
|
|
24
|
+
export class RefusedWheelError extends Error {
|
|
25
|
+
constructor(url) {
|
|
26
|
+
super(`refusing wheel ${url}: that host is Gaia's ceremony wheel, offline since ` +
|
|
27
|
+
`2026-07-29 — a Chronicle episode registered there is lost. The chronicle ` +
|
|
28
|
+
`wheel is http://127.0.0.1:8040 (voice-mcp.spec.md § Tool 4).`);
|
|
29
|
+
this.name = "RefusedWheelError";
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
export function refusePoisonedWheel(wheelUrl) {
|
|
33
|
+
if (wheelUrl.includes(POISONED_WHEEL_HOST))
|
|
34
|
+
throw new RefusedWheelError(wheelUrl);
|
|
35
|
+
}
|
|
36
|
+
/** Run a command and report what it said, never throwing: an error IS an
|
|
37
|
+
* observation here. */
|
|
38
|
+
async function observe(cmd, args, opts = {}) {
|
|
39
|
+
try {
|
|
40
|
+
const { stdout, stderr } = await exec(cmd, args, {
|
|
41
|
+
env: opts.env ?? process.env,
|
|
42
|
+
timeout: 30_000,
|
|
43
|
+
maxBuffer: 1024 * 1024,
|
|
44
|
+
});
|
|
45
|
+
const out = (stdout.trim() || stderr.trim()) ?? "";
|
|
46
|
+
return { ok: true, out };
|
|
47
|
+
}
|
|
48
|
+
catch (e) {
|
|
49
|
+
const err = e;
|
|
50
|
+
return {
|
|
51
|
+
ok: false,
|
|
52
|
+
out: (err.stderr?.trim() || err.stdout?.trim() || err.message || String(e)).slice(0, 500),
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/** GET the episode card off the wheel. Status `null` means the wheel did not
|
|
57
|
+
* answer at all — different, and reported differently, from a 404. */
|
|
58
|
+
async function readWheel(wheelUrl, nodeId) {
|
|
59
|
+
const url = `${wheelUrl.replace(/\/$/, "")}/api/nodes/${nodeId}`;
|
|
60
|
+
const controller = new AbortController();
|
|
61
|
+
const timer = setTimeout(() => controller.abort(), WHEEL_PROBE_TIMEOUT_MS);
|
|
62
|
+
try {
|
|
63
|
+
const response = await fetch(url, { signal: controller.signal });
|
|
64
|
+
return { status: response.status, observed: `HTTP ${response.status} from ${url}` };
|
|
65
|
+
}
|
|
66
|
+
catch (e) {
|
|
67
|
+
return {
|
|
68
|
+
status: null,
|
|
69
|
+
observed: `wheel unreachable at ${url}: ${e instanceof Error ? e.message : String(e)}`,
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
finally {
|
|
73
|
+
clearTimeout(timer);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
async function readReceipt(receiptPath) {
|
|
77
|
+
let text;
|
|
78
|
+
try {
|
|
79
|
+
text = await fs.readFile(receiptPath, "utf8");
|
|
80
|
+
}
|
|
81
|
+
catch {
|
|
82
|
+
return { exists: false, observed: `no receipt at ${receiptPath}` };
|
|
83
|
+
}
|
|
84
|
+
try {
|
|
85
|
+
const parsed = JSON.parse(text);
|
|
86
|
+
return {
|
|
87
|
+
exists: true,
|
|
88
|
+
state: parsed.state,
|
|
89
|
+
url: parsed.url,
|
|
90
|
+
raw: text.trim(),
|
|
91
|
+
observed: `receipt state=${parsed.state ?? "?"} url=${parsed.url ?? "?"}`,
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
catch {
|
|
95
|
+
return { exists: true, raw: text.trim(), observed: `receipt at ${receiptPath} is not JSON` };
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Run all five proofs for one episode folder, read-only, and name any drift
|
|
100
|
+
* shape found in the reconciler's vocabulary. This is Tool 6's whole behaviour
|
|
101
|
+
* and the tail of Tool 4's.
|
|
102
|
+
*/
|
|
103
|
+
export async function proveClosing(config, folder) {
|
|
104
|
+
const relative = `${path.basename(config.chronicleRoot)}/${folder}`;
|
|
105
|
+
const vesselPath = path.join(config.chronicleRoot, folder);
|
|
106
|
+
const receiptPath = path.join(vesselPath, ".mw-registration.json");
|
|
107
|
+
const nodeId = `chronicle:${folder}`;
|
|
108
|
+
const closing = [];
|
|
109
|
+
const drift = [];
|
|
110
|
+
const owedActions = [];
|
|
111
|
+
// 1 — created
|
|
112
|
+
const yamlPath = path.join(vesselPath, "episode.yaml");
|
|
113
|
+
let created = false;
|
|
114
|
+
try {
|
|
115
|
+
await fs.access(yamlPath);
|
|
116
|
+
created = true;
|
|
117
|
+
}
|
|
118
|
+
catch {
|
|
119
|
+
created = false;
|
|
120
|
+
}
|
|
121
|
+
closing.push({
|
|
122
|
+
stage: "created",
|
|
123
|
+
state: created ? "proven" : "failed",
|
|
124
|
+
probe: `ls "${yamlPath}"`,
|
|
125
|
+
observed: created ? yamlPath : `no such file: ${yamlPath}`,
|
|
126
|
+
});
|
|
127
|
+
// 4 first in execution order (2/3 read git; the wheel answer also feeds 5 and
|
|
128
|
+
// the GHOST-NODE reading when the vessel is missing on disk).
|
|
129
|
+
const wheel = await readWheel(config.wheelUrl, nodeId);
|
|
130
|
+
if (!created && wheel.status === 200)
|
|
131
|
+
drift.push("GHOST-NODE");
|
|
132
|
+
// 2 — committed
|
|
133
|
+
const committed = await observe("git", [
|
|
134
|
+
"-C",
|
|
135
|
+
config.chronicleGitRoot,
|
|
136
|
+
"log",
|
|
137
|
+
"-1",
|
|
138
|
+
"--oneline",
|
|
139
|
+
"--",
|
|
140
|
+
relative,
|
|
141
|
+
]);
|
|
142
|
+
const isCommitted = committed.ok && committed.out.length > 0;
|
|
143
|
+
closing.push({
|
|
144
|
+
stage: "committed",
|
|
145
|
+
state: isCommitted ? "proven" : "owed",
|
|
146
|
+
probe: `git -C ${config.chronicleGitRoot} log -1 --oneline -- "${relative}"`,
|
|
147
|
+
observed: committed.out || "(no commit touches this vessel)",
|
|
148
|
+
});
|
|
149
|
+
if (created && !isCommitted) {
|
|
150
|
+
drift.push("UNCOMMITTED-VESSEL");
|
|
151
|
+
owedActions.push(`git -C ${config.chronicleGitRoot} add "${relative}/episode.yaml" "${relative}/.mw-registration.json"`, `git -C ${config.chronicleGitRoot} commit -m "<name the episode>"`);
|
|
152
|
+
}
|
|
153
|
+
// dirty? (not a stage; a drift shape)
|
|
154
|
+
if (isCommitted) {
|
|
155
|
+
const dirty = await observe("git", [
|
|
156
|
+
"-C",
|
|
157
|
+
config.chronicleGitRoot,
|
|
158
|
+
"status",
|
|
159
|
+
"--porcelain",
|
|
160
|
+
"--",
|
|
161
|
+
relative,
|
|
162
|
+
]);
|
|
163
|
+
if (dirty.ok && dirty.out.length > 0)
|
|
164
|
+
drift.push("DIRTY-VESSEL");
|
|
165
|
+
}
|
|
166
|
+
// 3 — pushed
|
|
167
|
+
const unpushed = await observe("git", [
|
|
168
|
+
"-C",
|
|
169
|
+
config.chronicleGitRoot,
|
|
170
|
+
"rev-list",
|
|
171
|
+
"--count",
|
|
172
|
+
"origin/main..main",
|
|
173
|
+
]);
|
|
174
|
+
const isPushed = isCommitted && unpushed.ok && unpushed.out === "0";
|
|
175
|
+
closing.push({
|
|
176
|
+
stage: "pushed",
|
|
177
|
+
state: isPushed ? "proven" : "owed",
|
|
178
|
+
probe: `git -C ${config.chronicleGitRoot} rev-list --count origin/main..main`,
|
|
179
|
+
observed: unpushed.out,
|
|
180
|
+
});
|
|
181
|
+
if (isCommitted && !isPushed) {
|
|
182
|
+
drift.push("UNPUSHED-VESSEL");
|
|
183
|
+
owedActions.push(`git -C ${config.chronicleGitRoot} push origin main`);
|
|
184
|
+
}
|
|
185
|
+
// 4 — registered
|
|
186
|
+
const isRegistered = wheel.status === 200;
|
|
187
|
+
closing.push({
|
|
188
|
+
stage: "registered",
|
|
189
|
+
state: isRegistered ? "proven" : wheel.status === null ? "owed" : "failed",
|
|
190
|
+
probe: `curl -sf -o /dev/null -w '%{http_code}' "${config.wheelUrl}/api/nodes/${nodeId}"`,
|
|
191
|
+
observed: wheel.observed,
|
|
192
|
+
});
|
|
193
|
+
// 5 — receipt-verified: the receipt's state and url match what the wheel
|
|
194
|
+
// just said. A pending or lying receipt is a debt, never a record.
|
|
195
|
+
const receipt = await readReceipt(receiptPath);
|
|
196
|
+
let receiptState;
|
|
197
|
+
let receiptObserved = receipt.observed;
|
|
198
|
+
if (!receipt.exists) {
|
|
199
|
+
receiptState = created ? "failed" : "owed";
|
|
200
|
+
if (created && isCommitted && !isRegistered)
|
|
201
|
+
drift.push("UNREGISTERED-VESSEL");
|
|
202
|
+
if (created) {
|
|
203
|
+
receiptObserved += " — born invisible: registration never ran (MW_API_URL law)";
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
else if (receipt.url?.includes(POISONED_WHEEL_HOST)) {
|
|
207
|
+
receiptState = "failed";
|
|
208
|
+
drift.push("POISONED-RECEIPT");
|
|
209
|
+
}
|
|
210
|
+
else if (receipt.state === "pending") {
|
|
211
|
+
receiptState = "failed";
|
|
212
|
+
drift.push("PENDING-RECEIPT");
|
|
213
|
+
}
|
|
214
|
+
else if ((receipt.state === "registered" || receipt.state === "already-registered") &&
|
|
215
|
+
!isRegistered) {
|
|
216
|
+
receiptState = "failed";
|
|
217
|
+
if (wheel.status !== null)
|
|
218
|
+
drift.push("LYING-RECEIPT");
|
|
219
|
+
else
|
|
220
|
+
receiptObserved += " — wheel did not answer; the receipt cannot be verified right now";
|
|
221
|
+
}
|
|
222
|
+
else if ((receipt.state === "registered" || receipt.state === "already-registered") &&
|
|
223
|
+
isRegistered) {
|
|
224
|
+
receiptState = "proven";
|
|
225
|
+
}
|
|
226
|
+
else {
|
|
227
|
+
receiptState = "failed";
|
|
228
|
+
receiptObserved += ` — unrecognised state "${receipt.state ?? "?"}"`;
|
|
229
|
+
}
|
|
230
|
+
closing.push({
|
|
231
|
+
stage: "receipt-verified",
|
|
232
|
+
state: receiptState,
|
|
233
|
+
probe: `cat "${receiptPath}" # state and url must match the registered probe`,
|
|
234
|
+
observed: receiptObserved,
|
|
235
|
+
});
|
|
236
|
+
if (drift.includes("PENDING-RECEIPT") || drift.includes("LYING-RECEIPT") || drift.includes("POISONED-RECEIPT")) {
|
|
237
|
+
owedActions.push(`/etc/claude-code/skills/chronicle-episode-closing/redeem-receipt.sh ${folder}`);
|
|
238
|
+
}
|
|
239
|
+
return { closing, drift, owedActions };
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* Which episode numbers are taken, over the union of the local tree and
|
|
243
|
+
* `origin/main` — never the local root alone
|
|
244
|
+
* ([episode-addressing spec § Number Allocation]).
|
|
245
|
+
*/
|
|
246
|
+
export async function numberIsFree(config, number) {
|
|
247
|
+
const chronicleDir = path.basename(config.chronicleRoot);
|
|
248
|
+
await observe("git", ["-C", config.chronicleGitRoot, "fetch", "origin", "--quiet"]);
|
|
249
|
+
const remote = await observe("git", [
|
|
250
|
+
"-C",
|
|
251
|
+
config.chronicleGitRoot,
|
|
252
|
+
"ls-tree",
|
|
253
|
+
"--name-only",
|
|
254
|
+
`origin/main:${chronicleDir}`,
|
|
255
|
+
]);
|
|
256
|
+
let local = [];
|
|
257
|
+
try {
|
|
258
|
+
local = await fs.readdir(config.chronicleRoot);
|
|
259
|
+
}
|
|
260
|
+
catch {
|
|
261
|
+
local = [];
|
|
262
|
+
}
|
|
263
|
+
const union = new Set([...local, ...(remote.ok ? remote.out.split("\n") : [])]);
|
|
264
|
+
const pattern = new RegExp(`-episode-0*${number}-`);
|
|
265
|
+
const taken = [...union].filter((name) => pattern.test(name));
|
|
266
|
+
return {
|
|
267
|
+
free: taken.length === 0,
|
|
268
|
+
observed: taken.length
|
|
269
|
+
? `episode ${number} already resolves: ${taken.join(", ")}`
|
|
270
|
+
: `episode ${number} is free over ${union.size} names (local ∪ origin/main${remote.ok ? "" : "; origin unreadable, local only"})`,
|
|
271
|
+
};
|
|
272
|
+
}
|
|
273
|
+
/** Invoke mkepisode with the wheel set, and read the folder it made. */
|
|
274
|
+
export async function mintEpisode(config, input) {
|
|
275
|
+
refusePoisonedWheel(config.wheelUrl);
|
|
276
|
+
// The configured entry point, verified before it is stood on; the
|
|
277
|
+
// PATH-installed `mkepisode` (npm passages) is the fallback.
|
|
278
|
+
let cmd = "node";
|
|
279
|
+
let lead = [config.mkepisodePath];
|
|
280
|
+
try {
|
|
281
|
+
await fs.access(config.mkepisodePath);
|
|
282
|
+
}
|
|
283
|
+
catch {
|
|
284
|
+
cmd = "mkepisode";
|
|
285
|
+
lead = [];
|
|
286
|
+
}
|
|
287
|
+
const args = [
|
|
288
|
+
...lead,
|
|
289
|
+
"-n",
|
|
290
|
+
String(input.number),
|
|
291
|
+
"-t",
|
|
292
|
+
input.title,
|
|
293
|
+
"-g",
|
|
294
|
+
input.goal,
|
|
295
|
+
...input.references.flatMap((r) => ["-r", r]),
|
|
296
|
+
];
|
|
297
|
+
const result = await observe(cmd, args, {
|
|
298
|
+
env: {
|
|
299
|
+
...process.env,
|
|
300
|
+
MW_API_URL: config.wheelUrl,
|
|
301
|
+
MIADI_CHRONICLE_ROOT: config.chronicleRoot,
|
|
302
|
+
},
|
|
303
|
+
});
|
|
304
|
+
if (!result.ok) {
|
|
305
|
+
throw new Error(`mkepisode refused: ${result.out}`);
|
|
306
|
+
}
|
|
307
|
+
const createdLine = result.out.split("\n").find((l) => l.startsWith("created:"));
|
|
308
|
+
const vesselPath = createdLine?.slice("created:".length).trim();
|
|
309
|
+
if (!vesselPath) {
|
|
310
|
+
throw new Error(`mkepisode exited 0 but announced no vessel:\n${result.out}`);
|
|
311
|
+
}
|
|
312
|
+
return { folder: path.basename(vesselPath), vesselPath, stdout: result.out };
|
|
313
|
+
}
|
|
314
|
+
//# sourceMappingURL=closing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"closing.js","sourceRoot":"","sources":["../src/closing.ts"],"names":[],"mappings":"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"}
|
package/dist/handlers.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { type VoiceApiClient } from "@miadi/voice-client";
|
|
2
|
-
import {
|
|
2
|
+
import type { VoiceMcpConfig, VoiceMcpHandlers } from "./contract.js";
|
|
3
3
|
export declare function createHttpHandlers(config: VoiceMcpConfig, client?: VoiceApiClient): VoiceMcpHandlers;
|
|
4
4
|
//# sourceMappingURL=handlers.d.ts.map
|
package/dist/handlers.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../src/handlers.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../src/handlers.ts"],"names":[],"mappings":"AAyBA,OAAO,EAOL,KAAK,cAAc,EAEpB,MAAM,qBAAqB,CAAC;AAI7B,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAwBtE,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,cAAc,EACtB,MAAM,GAAE,cAIN,GACD,gBAAgB,CAkTlB"}
|
package/dist/handlers.js
CHANGED
|
@@ -6,11 +6,13 @@
|
|
|
6
6
|
// HTTP surface at `/api/voice/*` (through `@miadi/voice-client`) and the folder
|
|
7
7
|
// list under `MIADI_CHRONICLE_ROOT`. They are implemented.
|
|
8
8
|
//
|
|
9
|
-
//
|
|
10
|
-
// and prove a chronicle vessel
|
|
11
|
-
//
|
|
12
|
-
//
|
|
13
|
-
//
|
|
9
|
+
// The remaining two — `voice_create_episode` and `voice_episode_closing_status`
|
|
10
|
+
// — mint and prove a chronicle vessel: `mkepisode`, the wheel registration, and
|
|
11
|
+
// the five-stage closing gate, implemented in `closing.ts` (2026-08-12, ep320).
|
|
12
|
+
// The gate is part of the tool, not after it: every stage is proven by running
|
|
13
|
+
// its probe and reporting what the command actually said, `owed` is a
|
|
14
|
+
// first-class state, and stages 2/3 (commit, push) stay the human's — the tool
|
|
15
|
+
// emits their exact commands and never runs them.
|
|
14
16
|
//
|
|
15
17
|
// AND THE PART DELIBERATELY LEFT UNBUILT. Resolution here consults exactly what
|
|
16
18
|
// it is given: an explicit reference, a caller-supplied `cwd`, or an existing
|
|
@@ -20,9 +22,9 @@
|
|
|
20
22
|
// here would make this file a second source of truth for a rule that has an
|
|
21
23
|
// owner. When nothing given answers, the tool says so; `episode: null` with a
|
|
22
24
|
// reason is a valid answer, not a failure.
|
|
23
|
-
import { VoiceApiError, createVoiceClient, episodeOf, episodeNodeId, episodeFromPath, } from "@miadi/voice-client";
|
|
24
|
-
import { listEpisodeFolders, matchRef } from "./chronicle.js";
|
|
25
|
-
import {
|
|
25
|
+
import { VoiceApiError, createVoiceClient, episodeOf, episodeNodeId, episodeFolderOf, episodeFromPath, } from "@miadi/voice-client";
|
|
26
|
+
import { isEpisodeFolder, listEpisodeFolders, matchRef } from "./chronicle.js";
|
|
27
|
+
import { mintEpisode, numberIsFree, proveClosing, refusePoisonedWheel } from "./closing.js";
|
|
26
28
|
/** How many alternatives an unresolved answer offers. Enough to choose from. */
|
|
27
29
|
const ALTERNATIVES_SHOWN = 5;
|
|
28
30
|
export function createHttpHandlers(config, client = createVoiceClient({
|
|
@@ -143,7 +145,7 @@ export function createHttpHandlers(config, client = createVoiceClient({
|
|
|
143
145
|
}
|
|
144
146
|
return { voices, unplayable };
|
|
145
147
|
}
|
|
146
|
-
|
|
148
|
+
const api = {
|
|
147
149
|
async playEpisode(input) {
|
|
148
150
|
const resolution = await resolve({ episode: input.episode });
|
|
149
151
|
if (!resolution.episode)
|
|
@@ -219,13 +221,82 @@ export function createHttpHandlers(config, client = createVoiceClient({
|
|
|
219
221
|
// 40 needs to know there are 40.
|
|
220
222
|
return { resolution, total: filtered.length, voices: split(limited).voices };
|
|
221
223
|
},
|
|
222
|
-
async createEpisode() {
|
|
223
|
-
|
|
224
|
-
|
|
224
|
+
async createEpisode(input) {
|
|
225
|
+
refusePoisonedWheel(config.wheelUrl);
|
|
226
|
+
if (!Number.isInteger(input.number) || input.number <= 0) {
|
|
227
|
+
throw new Error(`number must be a positive integer, got ${input.number}`);
|
|
228
|
+
}
|
|
229
|
+
if (!input.title?.trim())
|
|
230
|
+
throw new Error("title is required — it becomes the folder slug");
|
|
231
|
+
if (!input.goal?.trim()) {
|
|
232
|
+
throw new Error("goal is required — the desired result this episode advances");
|
|
233
|
+
}
|
|
234
|
+
if (!input.references?.length) {
|
|
235
|
+
throw new Error("at least one owner/repo#n reference is required — it is the provenance " +
|
|
236
|
+
"anchor, and the first becomes the card's source_issue");
|
|
237
|
+
}
|
|
238
|
+
// Free over local ∪ origin/main, never the local root alone
|
|
239
|
+
// ([episode-addressing spec § Number Allocation]).
|
|
240
|
+
const allocation = await numberIsFree(config, input.number);
|
|
241
|
+
if (!allocation.free)
|
|
242
|
+
throw new Error(`refusing to mint: ${allocation.observed}`);
|
|
243
|
+
const mint = await mintEpisode(config, input);
|
|
244
|
+
const report = await proveClosing(config, mint.folder);
|
|
245
|
+
const result = {
|
|
246
|
+
episode: mint.folder,
|
|
247
|
+
nodeId: episodeNodeId(mint.folder),
|
|
248
|
+
path: mint.vesselPath,
|
|
249
|
+
closing: report.closing,
|
|
250
|
+
owedActions: report.owedActions,
|
|
251
|
+
};
|
|
252
|
+
// The first voice publishes like any other voice — same return-address
|
|
253
|
+
// contract, no shortcut. It makes the episode audible at birth. Note the
|
|
254
|
+
// spec's caution: a large first voice into an unpushed vessel narrows the
|
|
255
|
+
// room to rename if another host takes the number first.
|
|
256
|
+
if (input.firstVoice) {
|
|
257
|
+
result.firstVoice = await api.publishToEpisode({
|
|
258
|
+
text: input.firstVoice.text,
|
|
259
|
+
episode: mint.folder,
|
|
260
|
+
...(input.firstVoice.persona ? { persona: input.firstVoice.persona } : {}),
|
|
261
|
+
...(input.firstVoice.lang ? { lang: input.firstVoice.lang } : {}),
|
|
262
|
+
source: "episode-first-voice",
|
|
263
|
+
origin: input.firstVoice.origin,
|
|
264
|
+
});
|
|
265
|
+
}
|
|
266
|
+
return result;
|
|
225
267
|
},
|
|
226
|
-
async episodeClosingStatus() {
|
|
227
|
-
|
|
268
|
+
async episodeClosingStatus(input) {
|
|
269
|
+
if (!input.episode?.trim()) {
|
|
270
|
+
throw new Error("episode is required: the folder name, chronicle:<folder>, or ep<NNN>");
|
|
271
|
+
}
|
|
272
|
+
const folders = await listEpisodeFolders(config.chronicleRoot);
|
|
273
|
+
const match = matchRef(input.episode, folders);
|
|
274
|
+
let folder = match.folder;
|
|
275
|
+
if (!folder && match.candidates.length > 1) {
|
|
276
|
+
throw new Error(`"${input.episode}" matches ${match.candidates.length} folders ` +
|
|
277
|
+
`(${match.candidates.join(", ")}) — it resolves to neither; choosing is not this tool's call`);
|
|
278
|
+
}
|
|
279
|
+
// A well-formed folder name absent on disk is a valid subject, not an
|
|
280
|
+
// error: the wheel may still hold its card, and that is GHOST-NODE drift
|
|
281
|
+
// this tool exists to report.
|
|
282
|
+
if (!folder) {
|
|
283
|
+
const bare = episodeFolderOf(input.episode.trim());
|
|
284
|
+
if (isEpisodeFolder(bare))
|
|
285
|
+
folder = bare;
|
|
286
|
+
}
|
|
287
|
+
if (!folder) {
|
|
288
|
+
throw new Error(`"${input.episode}" matches no folder under ${config.chronicleRoot} and is not ` +
|
|
289
|
+
`a well-formed episode reference (folder name, chronicle:<folder>, or ep<NNN>)`);
|
|
290
|
+
}
|
|
291
|
+
const report = await proveClosing(config, folder);
|
|
292
|
+
return {
|
|
293
|
+
episode: folder,
|
|
294
|
+
closing: report.closing,
|
|
295
|
+
drift: report.drift,
|
|
296
|
+
owedActions: report.owedActions,
|
|
297
|
+
};
|
|
228
298
|
},
|
|
229
299
|
};
|
|
300
|
+
return api;
|
|
230
301
|
}
|
|
231
302
|
//# sourceMappingURL=handlers.js.map
|
package/dist/handlers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handlers.js","sourceRoot":"","sources":["../src/handlers.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"handlers.js","sourceRoot":"","sources":["../src/handlers.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
File without changes
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@miadi/voice-mcp",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "MCP server fronting the Miadi voice layer with episode addressing
|
|
3
|
+
"version": "0.4.0",
|
|
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",
|
|
7
7
|
"type": "module",
|
|
@@ -22,17 +22,11 @@
|
|
|
22
22
|
"README.md",
|
|
23
23
|
"SPEC-LINKS.md"
|
|
24
24
|
],
|
|
25
|
-
"scripts": {
|
|
26
|
-
"build": "../../node_modules/.bin/tsc -p tsconfig.build.json",
|
|
27
|
-
"type-check": "../../node_modules/.bin/tsc -p tsconfig.build.json --noEmit",
|
|
28
|
-
"start": "node dist/index.js",
|
|
29
|
-
"prepublishOnly": "npm run build"
|
|
30
|
-
},
|
|
31
25
|
"dependencies": {
|
|
32
|
-
"@miadi/voice": "workspace:*",
|
|
33
|
-
"@miadi/voice-client": "workspace:*",
|
|
34
26
|
"@modelcontextprotocol/sdk": "^1.30.0",
|
|
35
|
-
"zod": "^4.4.0"
|
|
27
|
+
"zod": "^4.4.0",
|
|
28
|
+
"@miadi/voice": "0.3.1",
|
|
29
|
+
"@miadi/voice-client": "0.2.2"
|
|
36
30
|
},
|
|
37
31
|
"devDependencies": {
|
|
38
32
|
"@types/node": "^22.0.0",
|
|
@@ -56,5 +50,10 @@
|
|
|
56
50
|
},
|
|
57
51
|
"engines": {
|
|
58
52
|
"node": ">=20"
|
|
53
|
+
},
|
|
54
|
+
"scripts": {
|
|
55
|
+
"build": "../../node_modules/.bin/tsc -p tsconfig.build.json",
|
|
56
|
+
"type-check": "../../node_modules/.bin/tsc -p tsconfig.build.json --noEmit",
|
|
57
|
+
"start": "node dist/index.js"
|
|
59
58
|
}
|
|
60
|
-
}
|
|
59
|
+
}
|