@miadi/voice-mcp 0.3.2 → 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/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, re-verified at the close of this authoring pass.
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 | **not yet written** |
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
- ### What the missing document blocks
30
+ ### The four cited verdicts, now rulable
29
31
 
30
- Four verdicts are cited by this package and cannot be implemented until
31
- `voice-episode-binding` lands. The tools have their shape; they do not yet have
32
- their rulings.
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 | Needed by |
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"}
@@ -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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"}
@@ -19,6 +19,14 @@ export interface VoiceMcpConfig {
19
19
  apiToken?: string;
20
20
  /** Which grade the resolved token is, so a 401 can say so. */
21
21
  tokenTier: TokenTier;
22
+ /**
23
+ * WHERE the credential came from — `env`, the path of the `.env` that supplied
24
+ * it, or `none`. A server that can only say "token=none" tells an operator that
25
+ * something is wrong and nothing about where to put the fix; saying which file
26
+ * was read, and which files were looked at and missed, turns a dead tool into a
27
+ * one-line repair. Never carries the value itself.
28
+ */
29
+ tokenSource: string;
22
30
  /**
23
31
  * The Chronicle wheel. `http://127.0.0.1:8040` is the only correct value for
24
32
  * chronicle work; `mw.tail3b11eb.ts.net` is Gaia's ceremony wheel and is
@@ -1 +1 @@
1
- {"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAMA,OAAO,EAAqB,KAAK,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAExE,OAAO,KAAK,EACV,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,sBAAsB,EACtB,uBAAuB,EACvB,iBAAiB,EACjB,qBAAqB,EACrB,sBAAsB,EACvB,MAAM,YAAY,CAAC;AAEpB;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,oEAAoE;IACpE,MAAM,EAAE,MAAM,CAAC;IACf;;;;;;;;OAQG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8DAA8D;IAC9D,SAAS,EAAE,SAAS,CAAC;IACrB;;;;OAIG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB,8DAA8D;IAC9D,aAAa,EAAE,MAAM,CAAC;IACtB;8CAC0C;IAC1C,gBAAgB,EAAE,MAAM,CAAC;IACzB,wCAAwC;IACxC,aAAa,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,UAAU,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,cAAc,CAgB/E;AAED;;;;GAIG;AACH,qBAAa,mBAAoB,SAAQ,KAAK;IAE1C,QAAQ,CAAC,IAAI,EAAE,MAAM;IACrB,QAAQ,CAAC,WAAW,EAAE,MAAM;gBADnB,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM;CAQ/B;AAED;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B,iFAAiF;IACjF,WAAW,CAAC,KAAK,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAErF,4DAA4D;IAC5D,cAAc,CAAC,KAAK,EAAE;QACpB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAE/B,qDAAqD;IACrD,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC;IAEhF,8EAA8E;IAC9E,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAEvE,0DAA0D;IAC1D,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAC;IAEnF,uDAAuD;IACvD,oBAAoB,CAAC,KAAK,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;CAChF;AAED;kFACkF;AAClF,wBAAgB,sBAAsB,IAAI,gBAAgB,CA2CzD"}
1
+ {"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAQA,OAAO,EAAqB,KAAK,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAExE,OAAO,KAAK,EACV,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,sBAAsB,EACtB,uBAAuB,EACvB,iBAAiB,EACjB,qBAAqB,EACrB,sBAAsB,EACvB,MAAM,YAAY,CAAC;AAEpB;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,oEAAoE;IACpE,MAAM,EAAE,MAAM,CAAC;IACf;;;;;;;;OAQG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8DAA8D;IAC9D,SAAS,EAAE,SAAS,CAAC;IACrB;;;;;;OAMG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB,8DAA8D;IAC9D,aAAa,EAAE,MAAM,CAAC;IACtB;8CAC0C;IAC1C,gBAAgB,EAAE,MAAM,CAAC;IACzB,wCAAwC;IACxC,aAAa,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA8CD,wBAAgB,UAAU,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,cAAc,CAuC/E;AAED;;;;GAIG;AACH,qBAAa,mBAAoB,SAAQ,KAAK;IAE1C,QAAQ,CAAC,IAAI,EAAE,MAAM;IACrB,QAAQ,CAAC,WAAW,EAAE,MAAM;gBADnB,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM;CAQ/B;AAED;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B,iFAAiF;IACjF,WAAW,CAAC,KAAK,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAErF,4DAA4D;IAC5D,cAAc,CAAC,KAAK,EAAE;QACpB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAE/B,qDAAqD;IACrD,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC;IAEhF,8EAA8E;IAC9E,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAEvE,0DAA0D;IAC1D,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAC;IAEnF,uDAAuD;IACvD,oBAAoB,CAAC,KAAK,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;CAChF;AAED;kFACkF;AAClF,wBAAgB,sBAAsB,IAAI,gBAAgB,CA2CzD"}
package/dist/contract.js CHANGED
@@ -3,14 +3,84 @@
3
3
  //
4
4
  // Separate from index.ts so that `handlers.ts` (which implements this surface)
5
5
  // and `index.ts` (which registers it) do not import each other.
6
+ import { readFileSync } from "node:fs";
6
7
  import { resolveVoiceToken } from "@miadi/voice-client";
8
+ /**
9
+ * The `.env` files consulted when the process environment carries no token,
10
+ * in order. A stdio MCP server inherits whatever environment its host chose to
11
+ * hand it, and an unexpanded `${MIADI_API_TOKEN_WRITER}` in a `.mcp.json`
12
+ * arrives as an empty string — indistinguishable, from inside, from a host that
13
+ * never had the value. The repo's own `.env` is where the token actually lives
14
+ * on this host, so the server reads it rather than being silently degraded to
15
+ * reads by a config-file typo.
16
+ */
17
+ function envFileCandidates(env) {
18
+ const explicit = env.MIADI_ENV_FILE?.trim();
19
+ if (explicit)
20
+ return [explicit];
21
+ const src = env.MIADI_SRC?.trim();
22
+ return [...(src ? [`${src}/.env`] : []), "/a/src/Miadi/.env"];
23
+ }
24
+ /**
25
+ * Reads ONLY the two tier-named token keys out of a `.env`. Deliberately not a
26
+ * dotenv implementation and deliberately not exported: this is a fallback for
27
+ * one credential, not a second configuration mechanism competing with the
28
+ * process environment. Never throws — an unreadable file is simply not a source.
29
+ */
30
+ function tokensFromEnvFile(path) {
31
+ const wanted = new Set(["MIADI_API_TOKEN_WRITER", "MIADI_API_TOKEN_READER"]);
32
+ const found = {};
33
+ let text;
34
+ try {
35
+ text = readFileSync(path, "utf8");
36
+ }
37
+ catch {
38
+ return found;
39
+ }
40
+ for (const line of text.split("\n")) {
41
+ const match = /^\s*(?:export\s+)?([A-Z0-9_]+)\s*=\s*(.*)$/.exec(line);
42
+ if (!match)
43
+ continue;
44
+ const [, key, rawValue] = match;
45
+ if (!wanted.has(key))
46
+ continue;
47
+ const value = rawValue.trim().replace(/^["']|["']$/g, "");
48
+ // An unexpanded placeholder is absence wearing a value's clothes.
49
+ if (!value || value.startsWith("${"))
50
+ continue;
51
+ found[key] = value;
52
+ }
53
+ return found;
54
+ }
7
55
  export function loadConfig(env = process.env) {
8
56
  const chronicleRoot = env.MIADI_CHRONICLE_ROOT || "/srv/miadi/episodes/miadi-chronicle";
9
- const token = resolveVoiceToken(env);
57
+ let token = resolveVoiceToken(env);
58
+ let tokenSource = token.token ? "env" : "none";
59
+ if (!token.token) {
60
+ const looked = [];
61
+ for (const path of envFileCandidates(env)) {
62
+ looked.push(path);
63
+ const fromFile = tokensFromEnvFile(path);
64
+ if (!Object.keys(fromFile).length)
65
+ continue;
66
+ const merged = resolveVoiceToken({
67
+ ...env,
68
+ ...fromFile,
69
+ });
70
+ if (merged.token) {
71
+ token = merged;
72
+ tokenSource = path;
73
+ break;
74
+ }
75
+ }
76
+ if (!token.token)
77
+ tokenSource = `none (looked: ${looked.join(", ")})`;
78
+ }
10
79
  return {
11
80
  apiUrl: env.MIADI_API_URL || "http://127.0.0.1:3335",
12
81
  apiToken: token.token ?? undefined,
13
82
  tokenTier: token.tier,
83
+ tokenSource,
14
84
  wheelUrl: env.MW_API_URL || "http://127.0.0.1:8040",
15
85
  chronicleRoot,
16
86
  chronicleGitRoot: env.MIADI_CHRONICLE_GIT_ROOT || "/srv/miadi/episodes",
@@ -1 +1 @@
1
- {"version":3,"file":"contract.js","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,yCAAyC;AACzC,EAAE;AACF,+EAA+E;AAC/E,gEAAgE;AAEhE,OAAO,EAAE,iBAAiB,EAAkB,MAAM,qBAAqB,CAAC;AAsDxE,MAAM,UAAU,UAAU,CAAC,MAAyB,OAAO,CAAC,GAAG;IAC7D,MAAM,aAAa,GACjB,GAAG,CAAC,oBAAoB,IAAI,qCAAqC,CAAC;IACpE,MAAM,KAAK,GAAG,iBAAiB,CAAC,GAAyC,CAAC,CAAC;IAC3E,OAAO;QACL,MAAM,EAAE,GAAG,CAAC,aAAa,IAAI,uBAAuB;QACpD,QAAQ,EAAE,KAAK,CAAC,KAAK,IAAI,SAAS;QAClC,SAAS,EAAE,KAAK,CAAC,IAAI;QACrB,QAAQ,EAAE,GAAG,CAAC,UAAU,IAAI,uBAAuB;QACnD,aAAa;QACb,gBAAgB,EAAE,GAAG,CAAC,wBAAwB,IAAI,qBAAqB;QACvE,aAAa,EACX,GAAG,CAAC,oBAAoB;YACxB,8DAA8D;QAChE,SAAS,EAAE,GAAG,CAAC,wBAAwB,IAAI,wBAAwB;KACpE,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IAEjC;IACA;IAFX,YACW,IAAY,EACZ,WAAmB;QAE5B,KAAK,CACH,oBAAoB,IAAI,mCAAmC,WAAW,IAAI;YACxE,oBAAoB,CACvB,CAAC;QANO,SAAI,GAAJ,IAAI,CAAQ;QACZ,gBAAW,GAAX,WAAW,CAAQ;QAM5B,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF;AAiCD;kFACkF;AAClF,MAAM,UAAU,sBAAsB;IACpC,OAAO;QACL,KAAK,CAAC,WAAW;YACf,MAAM,IAAI,mBAAmB,CAC3B,oBAAoB,EACpB,uDAAuD;gBACrD,8CAA8C,CACjD,CAAC;QACJ,CAAC;QACD,KAAK,CAAC,cAAc;YAClB,MAAM,IAAI,mBAAmB,CAC3B,uBAAuB,EACvB,0DAA0D;gBACxD,2DAA2D,CAC9D,CAAC;QACJ,CAAC;QACD,KAAK,CAAC,gBAAgB;YACpB,MAAM,IAAI,mBAAmB,CAC3B,0BAA0B,EAC1B,6DAA6D;gBAC3D,2DAA2D,CAC9D,CAAC;QACJ,CAAC;QACD,KAAK,CAAC,aAAa;YACjB,MAAM,IAAI,mBAAmB,CAC3B,sBAAsB,EACtB,wDAAwD;gBACtD,sDAAsD,CACzD,CAAC;QACJ,CAAC;QACD,KAAK,CAAC,iBAAiB;YACrB,MAAM,IAAI,mBAAmB,CAC3B,2BAA2B,EAC3B,wDAAwD,CACzD,CAAC;QACJ,CAAC;QACD,KAAK,CAAC,oBAAoB;YACxB,MAAM,IAAI,mBAAmB,CAC3B,8BAA8B,EAC9B,2DAA2D,CAC5D,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"contract.js","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,yCAAyC;AACzC,EAAE;AACF,+EAA+E;AAC/E,gEAAgE;AAEhE,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,OAAO,EAAE,iBAAiB,EAAkB,MAAM,qBAAqB,CAAC;AA8DxE;;;;;;;;GAQG;AACH,SAAS,iBAAiB,CAAC,GAAsB;IAC/C,MAAM,QAAQ,GAAG,GAAG,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC;IAC5C,IAAI,QAAQ;QAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAChC,MAAM,GAAG,GAAG,GAAG,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC;IAClC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,mBAAmB,CAAC,CAAC;AAChE,CAAC;AAED;;;;;GAKG;AACH,SAAS,iBAAiB,CAAC,IAAY;IACrC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,CAAC,wBAAwB,EAAE,wBAAwB,CAAC,CAAC,CAAC;IAC7E,MAAM,KAAK,GAA2B,EAAE,CAAC;IACzC,IAAI,IAAY,CAAC;IACjB,IAAI,CAAC;QACH,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACpC,MAAM,KAAK,GAAG,4CAA4C,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtE,IAAI,CAAC,KAAK;YAAE,SAAS;QACrB,MAAM,CAAC,EAAE,GAAG,EAAE,QAAQ,CAAC,GAAG,KAAK,CAAC;QAChC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,SAAS;QAC/B,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;QAC1D,kEAAkE;QAClE,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,SAAS;QAC/C,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACrB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,MAAyB,OAAO,CAAC,GAAG;IAC7D,MAAM,aAAa,GACjB,GAAG,CAAC,oBAAoB,IAAI,qCAAqC,CAAC;IAEpE,IAAI,KAAK,GAAG,iBAAiB,CAAC,GAAyC,CAAC,CAAC;IACzE,IAAI,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;IAE/C,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACjB,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,KAAK,MAAM,IAAI,IAAI,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClB,MAAM,QAAQ,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;YACzC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM;gBAAE,SAAS;YAC5C,MAAM,MAAM,GAAG,iBAAiB,CAAC;gBAC/B,GAAI,GAA0C;gBAC9C,GAAG,QAAQ;aACZ,CAAC,CAAC;YACH,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;gBACjB,KAAK,GAAG,MAAM,CAAC;gBACf,WAAW,GAAG,IAAI,CAAC;gBACnB,MAAM;YACR,CAAC;QACH,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,KAAK;YAAE,WAAW,GAAG,iBAAiB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;IACxE,CAAC;IAED,OAAO;QACL,MAAM,EAAE,GAAG,CAAC,aAAa,IAAI,uBAAuB;QACpD,QAAQ,EAAE,KAAK,CAAC,KAAK,IAAI,SAAS;QAClC,SAAS,EAAE,KAAK,CAAC,IAAI;QACrB,WAAW;QACX,QAAQ,EAAE,GAAG,CAAC,UAAU,IAAI,uBAAuB;QACnD,aAAa;QACb,gBAAgB,EAAE,GAAG,CAAC,wBAAwB,IAAI,qBAAqB;QACvE,aAAa,EACX,GAAG,CAAC,oBAAoB;YACxB,8DAA8D;QAChE,SAAS,EAAE,GAAG,CAAC,wBAAwB,IAAI,wBAAwB;KACpE,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IAEjC;IACA;IAFX,YACW,IAAY,EACZ,WAAmB;QAE5B,KAAK,CACH,oBAAoB,IAAI,mCAAmC,WAAW,IAAI;YACxE,oBAAoB,CACvB,CAAC;QANO,SAAI,GAAJ,IAAI,CAAQ;QACZ,gBAAW,GAAX,WAAW,CAAQ;QAM5B,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF;AAiCD;kFACkF;AAClF,MAAM,UAAU,sBAAsB;IACpC,OAAO;QACL,KAAK,CAAC,WAAW;YACf,MAAM,IAAI,mBAAmB,CAC3B,oBAAoB,EACpB,uDAAuD;gBACrD,8CAA8C,CACjD,CAAC;QACJ,CAAC;QACD,KAAK,CAAC,cAAc;YAClB,MAAM,IAAI,mBAAmB,CAC3B,uBAAuB,EACvB,0DAA0D;gBACxD,2DAA2D,CAC9D,CAAC;QACJ,CAAC;QACD,KAAK,CAAC,gBAAgB;YACpB,MAAM,IAAI,mBAAmB,CAC3B,0BAA0B,EAC1B,6DAA6D;gBAC3D,2DAA2D,CAC9D,CAAC;QACJ,CAAC;QACD,KAAK,CAAC,aAAa;YACjB,MAAM,IAAI,mBAAmB,CAC3B,sBAAsB,EACtB,wDAAwD;gBACtD,sDAAsD,CACzD,CAAC;QACJ,CAAC;QACD,KAAK,CAAC,iBAAiB;YACrB,MAAM,IAAI,mBAAmB,CAC3B,2BAA2B,EAC3B,wDAAwD,CACzD,CAAC;QACJ,CAAC;QACD,KAAK,CAAC,oBAAoB;YACxB,MAAM,IAAI,mBAAmB,CAC3B,8BAA8B,EAC9B,2DAA2D,CAC5D,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -1,4 +1,4 @@
1
1
  import { type VoiceApiClient } from "@miadi/voice-client";
2
- import { type VoiceMcpConfig, type VoiceMcpHandlers } from "./contract.js";
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
@@ -1 +1 @@
1
- {"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../src/handlers.ts"],"names":[],"mappings":"AAuBA,OAAO,EAML,KAAK,cAAc,EAEpB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EAAuB,KAAK,cAAc,EAAE,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAqBhG,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,cAAc,EACtB,MAAM,GAAE,cAIN,GACD,gBAAgB,CA0OlB"}
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
- // Two are not: `voice_create_episode` and `voice_episode_closing_status` mint
10
- // and prove a chronicle vessel, which means `mkepisode`, a wheel registration
11
- // and the five-stage closing gate. Those keep throwing `NotImplementedError`
12
- // naming their contract, because a tool that reports a stage it did not prove is
13
- // worse than a tool that refuses.
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 { NotImplementedError } from "./contract.js";
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
- return {
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
- throw new NotImplementedError("voice_create_episode", "voice-mcp.spec.md § Tool 4 · voice_create_episode and " +
224
- "§ The closing gate is part of the tool, not after it");
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
- throw new NotImplementedError("voice_episode_closing_status", "voice-mcp.spec.md § Tool 6 · voice_episode_closing_status");
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
@@ -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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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAMH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIpE,OAAO,EAKL,KAAK,gBAAgB,EACtB,MAAM,eAAe,CAAC;AAIvB,cAAc,YAAY,CAAC;AAC3B,OAAO,EACL,sBAAsB,EACtB,UAAU,EACV,mBAAmB,EACnB,KAAK,cAAc,EACnB,KAAK,gBAAgB,GACtB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAsJ5F;;;;;GAKG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,GAAE,gBAAmD,GAC5D,SAAS,CAgLX;AAID,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAiB1C"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIpE,OAAO,EAKL,KAAK,gBAAgB,EACtB,MAAM,eAAe,CAAC;AAIvB,cAAc,YAAY,CAAC;AAC3B,OAAO,EACL,sBAAsB,EACtB,UAAU,EACV,mBAAmB,EACnB,KAAK,cAAc,EACnB,KAAK,gBAAgB,GACtB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AA2I5F;;;;;GAKG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,GAAE,gBAAmD,GAC5D,SAAS,CAgLX;AAID,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAiB1C"}
package/dist/index.js CHANGED
@@ -21,9 +21,6 @@
21
21
  *
22
22
  * Specifications: see `SPEC-LINKS.md` beside this package.
23
23
  */
24
- import { realpathSync } from "node:fs";
25
- import { createRequire } from "node:module";
26
- import { pathToFileURL } from "node:url";
27
24
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
28
25
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
29
26
  import { z } from "zod";
@@ -34,20 +31,11 @@ export { createScaffoldHandlers, loadConfig, NotImplementedError, } from "./cont
34
31
  export { createHttpHandlers } from "./handlers.js";
35
32
  export { listEpisodeFolders, matchRef, episodePath, isEpisodeFolder } from "./chronicle.js";
36
33
  const NAME = "@miadi/voice-mcp";
37
- // Read from the manifest rather than retyped here: a hand-kept literal drifts
38
- // the moment a version bumps, and it drifted — 0.3.1 shipped announcing 0.1.0
39
- // in both the banner and MCP `serverInfo`, leaving no way to tell from a
40
- // running server which build answered you. `../package.json` is one level up
41
- // from this module whether it runs as `src/index.ts` or as `dist/index.js`.
42
- const VERSION = (() => {
43
- try {
44
- return (createRequire(import.meta.url)("../package.json")
45
- .version ?? "0.0.0-unknown");
46
- }
47
- catch {
48
- return "0.0.0-unknown";
49
- }
50
- })();
34
+ // Kept in step with package.json BY HAND, and it drifted: this read 0.1.0 while
35
+ // the package was 0.3.1 and the registry held 0.3.2, so every banner and every
36
+ // MCP handshake announced a version that had not existed for weeks. A server
37
+ // that misreports its own identity makes every downstream bug report wrong.
38
+ const VERSION = "0.3.3";
51
39
  // ── Shared schema fragments ─────────────────────────────────────────────────
52
40
  const episodeRefSchema = z
53
41
  .string()
@@ -312,39 +300,17 @@ export async function main() {
312
300
  // answer 401 while every read keeps working — the failure that looks like a
313
301
  // broken tool and is a one-variable fix.
314
302
  console.error(`${NAME} ${VERSION} — api=${config.apiUrl} token=${config.tokenTier} ` +
315
- `chronicle=${config.chronicleRoot}` +
303
+ `from=${config.tokenSource} chronicle=${config.chronicleRoot}` +
316
304
  (config.tokenTier === "writer"
317
305
  ? ""
318
306
  : ` ⚠ publishing needs MIADI_API_TOKEN_WRITER; reads work without it`));
319
307
  const server = createServer();
320
308
  await server.connect(new StdioServerTransport());
321
309
  }
322
- // Identity, not spelling. The previous guard regexed `process.argv[1]` for
323
- // `voice-mcp/dist/index.js` — but `package.json` declares
324
- // `bin: {"miadi-voice-mcp": "dist/index.js"}`, so every installer writes a
325
- // symlink named `miadi-voice-mcp` and every MCP client executes THAT path.
326
- // argv[1] was then `.../.bin/miadi-voice-mcp`, the regex refused it, `main()`
327
- // never ran, and the process exited 0 without writing a byte — a server that
328
- // answers `-32000` on every registration while `node dist/index.js`, the one
329
- // invocation no client performs, worked perfectly.
330
- //
331
- // Resolving argv[1] through realpath collapses the symlink onto this module's
332
- // own URL. The unresolved path is compared too, for `--preserve-symlinks-main`,
333
- // where `import.meta.url` stays the link.
334
- const invokedDirectly = (() => {
335
- const argv1 = process.argv?.[1];
336
- if (typeof argv1 !== "string" || argv1 === "")
337
- return false;
338
- const candidates = new Set();
339
- try {
340
- candidates.add(pathToFileURL(argv1).href);
341
- candidates.add(pathToFileURL(realpathSync(argv1)).href);
342
- }
343
- catch {
344
- // A non-path argv[1] (a REPL eval, a deleted file) is not this module.
345
- }
346
- return candidates.has(import.meta.url);
347
- })();
310
+ const invokedDirectly = typeof process !== "undefined" &&
311
+ Array.isArray(process.argv) &&
312
+ process.argv[1] !== undefined &&
313
+ /voice-mcp[\\/](?:dist|src)[\\/]index\.(?:js|ts)$/.test(process.argv[1]);
348
314
  if (invokedDirectly) {
349
315
  main().catch((e) => {
350
316
  console.error(e);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@miadi/voice-mcp",
3
- "version": "0.3.2",
3
+ "version": "0.4.0",
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",