@miadi/inquiry-weave 0.17.2 → 0.17.4

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 CHANGED
@@ -326,6 +326,14 @@ and lands. `source: "episode"` holds the episode's own packet, which must alread
326
326
  packet lookup is the caller's (`foundationLookup` on the door context); without one the door reads
327
327
  `MIADI_FOUNDATIONS_ROOT`, else `GET <MIADI_WEB_URL>/api/foundations/<slug>`.
328
328
 
329
+ `listEpisodeFoundations` also answers every packet the episode wrote under `foundations/<topic>/`
330
+ (a folder with a README.md) that its manifest does not record (`declared: "folder"`, relation
331
+ `grounded-by`): an episode holds its own packets without anyone holding them by hand.
332
+ `attachEpisodeFoundation` with `replaceRelation` (HTTP `PATCH`) sets what the episode uses a packet
333
+ for, in the manifest and on the edge. `removeEpisodeFoundation` (HTTP `DELETE`) takes the entry and
334
+ the edge away. The packet's folder and its `references:` citations stay; `foundations_not_held:`
335
+ names the packet (`<topic>` or `miadi-foundation:<slug>`) until it is held again.
336
+
329
337
  ## The address layer alone
330
338
 
331
339
  `@miadi/inquiry-weave/references` exports the parsers, the text scanner and the markdown
@@ -15,7 +15,14 @@
15
15
  * Rules kept from the review seam: the manifest entry is written once and
16
16
  * never overwritten (a later call fills missing keys only), one ordered node
17
17
  * pair is one edge so a hand-made edge keeps its relation, and the wheel
18
- * projection never throws — a wheel that is down answers `pending`.
18
+ * projection never throws — a wheel that is down answers `pending`. A person
19
+ * changing the relation is the one exception to "never overwritten": the
20
+ * relation they set replaces the recorded one and the edge's.
21
+ *
22
+ * Removing a packet takes its entry out of the manifest and its edge off the
23
+ * wheel. What still points at it stays: an episode's own folder, a
24
+ * `miadi-foundation:` citation in `references:`. The packet is listed under
25
+ * `foundations_not_held:` so neither holds it again.
19
26
  */
20
27
  import { DEFAULT_FOUNDATION_RELATION, type EpisodeFoundationEntry, type FoundationSource } from "@miadi/episodic-memory-schema";
21
28
  export type FoundationErrorCode = "invalid_foundation" | "foundation_not_found" | "foundation_manifest_conflict";
@@ -75,10 +82,19 @@ export declare function foundationLookupFromFront(base: string, options?: {
75
82
  export declare function requireFoundationSlug(raw: unknown): string;
76
83
  /** An episode's own packet: `foundations/<topic>/` with a README, read for its title. */
77
84
  export declare function readEpisodePacket(episodeDir: string, slug: string): Promise<FoundationPacket>;
85
+ /**
86
+ * Every packet the episode wrote: the directories under `foundations/` with a
87
+ * packet name and a README.md, titled by it, in name order. A folder without a
88
+ * README holds files, not a packet. Nothing behind a symlink is read: the
89
+ * listing is public and must not name what lies outside the vessel.
90
+ */
91
+ export declare function listEpisodePacketTopics(episodeDir: string): Promise<FoundationPacket[]>;
78
92
  export interface UpsertEpisodeFoundationResult {
79
93
  entry: EpisodeFoundationEntry;
80
94
  created: boolean;
81
95
  filled: string[];
96
+ /** Keys a person's value replaced (`relation`). */
97
+ replaced: string[];
82
98
  wrote: boolean;
83
99
  dryRun: boolean;
84
100
  }
@@ -90,8 +106,33 @@ export interface UpsertEpisodeFoundationResult {
90
106
  export declare function upsertEpisodeFoundation(input: {
91
107
  episodeYamlPath: string;
92
108
  entry: EpisodeFoundationEntry;
109
+ /** A person set the relation: it replaces the recorded one. */
110
+ replaceRelation?: boolean;
93
111
  dryRun?: boolean;
94
112
  }): Promise<UpsertEpisodeFoundationResult>;
113
+ export interface RemoveEpisodeFoundationEntryResult {
114
+ /** The entries taken out of `foundations:`. */
115
+ removed: EpisodeFoundationEntry[];
116
+ /** True when the packet was put on `foundations_not_held:`. */
117
+ notHeld: boolean;
118
+ wrote: boolean;
119
+ dryRun: boolean;
120
+ }
121
+ /**
122
+ * Take a packet out of `episode.yaml`: its `foundations:` entry. When
123
+ * something else would still hold it (an episode's own folder,
124
+ * `keepFolderOut`; a `miadi-foundation:<slug>` citation in `references:`),
125
+ * the packet goes on `foundations_not_held:` and that pointer stays as
126
+ * written. An emptied `foundations:` key is dropped. Comments and every other
127
+ * field survive. Removing what is not held changes nothing.
128
+ */
129
+ export declare function removeEpisodeFoundationEntry(input: {
130
+ episodeYamlPath: string;
131
+ slug: string;
132
+ source: FoundationSource;
133
+ keepFolderOut?: boolean;
134
+ dryRun?: boolean;
135
+ }): Promise<RemoveEpisodeFoundationEntryResult>;
95
136
  export type FoundationProjectionState = "created" | "refreshed" | "already-present" | "skipped" | "pending";
96
137
  export interface FoundationProjection {
97
138
  node: {
@@ -126,9 +167,29 @@ export declare function projectEpisodeFoundation(mwUrl: string, input: {
126
167
  packet: FoundationPacket;
127
168
  source: FoundationSource;
128
169
  relation: string;
129
- }, options?: {
170
+ },
171
+ /** `relationWins`: a person set the relation, so an edge holding another one is changed to it. */
172
+ options?: {
130
173
  fetchImpl?: typeof fetch;
131
174
  dryRun?: boolean;
175
+ relationWins?: boolean;
132
176
  }): Promise<FoundationProjection>;
177
+ export interface FoundationEdgeRemoval {
178
+ id: string;
179
+ /** `deleted`; `absent` when the wheel held no such edge; `pending` when the wheel did not answer. */
180
+ state: "deleted" | "absent" | "skipped" | "pending";
181
+ error?: string;
182
+ }
183
+ /**
184
+ * Take the episode→foundation edge off the wheel. The packet node stays: it is
185
+ * the packet's record, and a distributed packet's node is shared. Never throws.
186
+ */
187
+ export declare function removeEpisodeFoundationEdge(mwUrl: string, input: {
188
+ episodeNodeId: string;
189
+ nodeId: string;
190
+ }, options?: {
191
+ fetchImpl?: typeof fetch;
192
+ dryRun?: boolean;
193
+ }): Promise<FoundationEdgeRemoval>;
133
194
  export { DEFAULT_FOUNDATION_RELATION };
134
195
  //# sourceMappingURL=foundation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"foundation.d.ts","sourceRoot":"","sources":["../src/foundation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"foundation.d.ts","sourceRoot":"","sources":["../src/foundation.ts"],"names":[],"mappings":"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"}
@@ -15,13 +15,20 @@
15
15
  * Rules kept from the review seam: the manifest entry is written once and
16
16
  * never overwritten (a later call fills missing keys only), one ordered node
17
17
  * pair is one edge so a hand-made edge keeps its relation, and the wheel
18
- * projection never throws — a wheel that is down answers `pending`.
18
+ * projection never throws — a wheel that is down answers `pending`. A person
19
+ * changing the relation is the one exception to "never overwritten": the
20
+ * relation they set replaces the recorded one and the edge's.
21
+ *
22
+ * Removing a packet takes its entry out of the manifest and its edge off the
23
+ * wheel. What still points at it stays: an episode's own folder, a
24
+ * `miadi-foundation:` citation in `references:`. The packet is listed under
25
+ * `foundations_not_held:` so neither holds it again.
19
26
  */
20
- import { readFile, writeFile, stat } from "node:fs/promises";
27
+ import { lstat, readFile, readdir, writeFile, stat } from "node:fs/promises";
21
28
  import { existsSync } from "node:fs";
22
29
  import { dirname, join } from "node:path";
23
30
  import { Scalar, isMap, isScalar, isSeq, parseDocument } from "yaml";
24
- import { DEFAULT_FOUNDATION_RELATION, FOUNDATION_ENTRY_KEYS, FOUNDATION_NODE_KIND, episodeFoundationPath, foundationNodeId, isFoundationSlug, toEpisodeFoundationEntry, } from "@miadi/episodic-memory-schema";
31
+ import { DEFAULT_FOUNDATION_RELATION, EPISODE_FOUNDATIONS_DIR, FOUNDATION_ENTRY_KEYS, FOUNDATION_NODE_KIND, FOUNDATIONS_NOT_HELD_KEY, episodeFoundationPath, foundationNodeId, foundationNotHeldMark, foundationSlugOf, isFoundationSlug, toEpisodeFoundationEntry, } from "@miadi/episodic-memory-schema";
25
32
  import { missingManifestRemedy } from "./episode.js";
26
33
  import { parseFoundationUri, foundationRoute } from "./foundation-dsl.js";
27
34
  import { edgesFrom, failure, wheelJson } from "./review.js";
@@ -172,6 +179,38 @@ export async function readEpisodePacket(episodeDir, slug) {
172
179
  }
173
180
  return { slug, title: title ?? slug };
174
181
  }
182
+ /**
183
+ * Every packet the episode wrote: the directories under `foundations/` with a
184
+ * packet name and a README.md, titled by it, in name order. A folder without a
185
+ * README holds files, not a packet. Nothing behind a symlink is read: the
186
+ * listing is public and must not name what lies outside the vessel.
187
+ */
188
+ export async function listEpisodePacketTopics(episodeDir) {
189
+ const root = join(episodeDir, EPISODE_FOUNDATIONS_DIR);
190
+ let entries;
191
+ try {
192
+ if (!(await lstat(root)).isDirectory())
193
+ return [];
194
+ entries = await readdir(root, { withFileTypes: true });
195
+ }
196
+ catch {
197
+ return [];
198
+ }
199
+ const slugs = entries.filter((entry) => entry.isDirectory() && isFoundationSlug(entry.name)).map((entry) => entry.name).sort();
200
+ const packets = await Promise.all(slugs.map(async (slug) => {
201
+ const readme = join(root, slug, "README.md");
202
+ try {
203
+ // A folder can go between the listing and the read; it is then not listed.
204
+ if (!(await lstat(readme)).isFile())
205
+ return null;
206
+ return { slug, title: readmeTitle(await readFile(readme, "utf8")) ?? slug };
207
+ }
208
+ catch {
209
+ return null;
210
+ }
211
+ }));
212
+ return packets.filter((packet) => packet !== null);
213
+ }
175
214
  /**
176
215
  * The entry as a YAML map. Every value is a quoted string: an ISO `added` or a
177
216
  * version like `0.1` left plain is a timestamp or a number to a YAML 1.1
@@ -192,27 +231,62 @@ function quoted(doc, value) {
192
231
  return node;
193
232
  }
194
233
  const sameEntry = (a, b) => a !== null && a.slug === b.slug && a.source === b.source;
234
+ const itemEntry = (item) => toEpisodeFoundationEntry(isMap(item) ? item.toJSON() : item?.value ?? item);
235
+ const emptyValue = (node) => node === undefined || node === null || (isScalar(node) && (node.value === null || node.value === undefined));
236
+ async function readManifestDocument(episodeYamlPath) {
237
+ if (!existsSync(episodeYamlPath)) {
238
+ throw new FoundationError("foundation_manifest_conflict", missingManifestRemedy(dirname(episodeYamlPath)));
239
+ }
240
+ const doc = parseDocument(await readFile(episodeYamlPath, "utf8"));
241
+ if (doc.errors.length > 0) {
242
+ throw new FoundationError("foundation_manifest_conflict", `unreadable episode.yaml ${episodeYamlPath}: ${doc.errors[0].message}`);
243
+ }
244
+ if (!isMap(doc.contents)) {
245
+ throw new FoundationError("foundation_manifest_conflict", `episode.yaml ${episodeYamlPath} is not a mapping`);
246
+ }
247
+ return doc;
248
+ }
249
+ const namesMark = (item, mark) => isScalar(item) && typeof item.value === "string" && item.value.trim() === mark;
250
+ /** Take a packet off `foundations_not_held:`. An emptied list is dropped. True when the list changed. */
251
+ function takeOffNotHeld(doc, mark) {
252
+ const list = doc.get(FOUNDATIONS_NOT_HELD_KEY, true);
253
+ if (!isSeq(list) || !list.items.some((item) => namesMark(item, mark)))
254
+ return false;
255
+ list.items = list.items.filter((item) => !namesMark(item, mark));
256
+ if (list.items.length === 0)
257
+ doc.delete(FOUNDATIONS_NOT_HELD_KEY);
258
+ return true;
259
+ }
260
+ /** Put a packet on `foundations_not_held:`. True when the list changed. */
261
+ function putOnNotHeld(doc, mark, episodeYamlPath) {
262
+ const list = doc.get(FOUNDATIONS_NOT_HELD_KEY, true);
263
+ if (isSeq(list)) {
264
+ if (list.items.some((item) => namesMark(item, mark)))
265
+ return false;
266
+ list.items.push(quoted(doc, mark));
267
+ return true;
268
+ }
269
+ if (!emptyValue(list)) {
270
+ throw new FoundationError("foundation_manifest_conflict", `${FOUNDATIONS_NOT_HELD_KEY} in ${episodeYamlPath} is not a list — refusing to overwrite`);
271
+ }
272
+ const seq = doc.createNode([]);
273
+ seq.items.push(quoted(doc, mark));
274
+ doc.set(FOUNDATIONS_NOT_HELD_KEY, seq);
275
+ return true;
276
+ }
195
277
  /**
196
278
  * Add a packet to `episode.yaml`'s `foundations:` list, or fill the keys an
197
279
  * existing entry lacks. Comments, key order and every other field survive.
198
280
  * Refuses a `foundations` key that is not a list.
199
281
  */
200
282
  export async function upsertEpisodeFoundation(input) {
201
- if (!existsSync(input.episodeYamlPath)) {
202
- throw new FoundationError("foundation_manifest_conflict", missingManifestRemedy(dirname(input.episodeYamlPath)));
203
- }
204
- const doc = parseDocument(await readFile(input.episodeYamlPath, "utf8"));
205
- if (doc.errors.length > 0) {
206
- throw new FoundationError("foundation_manifest_conflict", `unreadable episode.yaml ${input.episodeYamlPath}: ${doc.errors[0].message}`);
207
- }
208
- if (!isMap(doc.contents)) {
209
- throw new FoundationError("foundation_manifest_conflict", `episode.yaml ${input.episodeYamlPath} is not a mapping`);
210
- }
283
+ const doc = await readManifestDocument(input.episodeYamlPath);
211
284
  const list = doc.get("foundations", true);
212
285
  let created = false;
213
286
  const filled = [];
287
+ const replaced = [];
214
288
  let entry;
215
- if (list === undefined || list === null || (isScalar(list) && (list.value === null || list.value === undefined))) {
289
+ if (emptyValue(list)) {
216
290
  created = true;
217
291
  entry = input.entry;
218
292
  const seq = doc.createNode([]);
@@ -226,7 +300,7 @@ export async function upsertEpisodeFoundation(input) {
226
300
  throw new FoundationError("foundation_manifest_conflict", `foundations in ${input.episodeYamlPath} is not a list — refusing to overwrite`);
227
301
  }
228
302
  else {
229
- const index = list.items.findIndex((item) => sameEntry(toEpisodeFoundationEntry(isMap(item) ? item.toJSON() : item?.value ?? item), input.entry));
303
+ const index = list.items.findIndex((item) => sameEntry(itemEntry(item), input.entry));
230
304
  if (index < 0) {
231
305
  created = true;
232
306
  entry = input.entry;
@@ -234,7 +308,20 @@ export async function upsertEpisodeFoundation(input) {
234
308
  }
235
309
  else {
236
310
  const item = list.items[index];
237
- if (!isMap(item)) {
311
+ const relation = input.replaceRelation ? input.entry.relation : undefined;
312
+ if (!isMap(item) && relation) {
313
+ // A person's relation needs a map: `- lattice` becomes a full entry.
314
+ // Its `added` is unknown, so none is written.
315
+ const kept = itemEntry(item) ?? { slug: input.entry.slug, source: input.entry.source };
316
+ const { added: _added, ...read } = input.entry;
317
+ entry = { ...read, ...kept, relation };
318
+ for (const key of FOUNDATION_ENTRY_KEYS)
319
+ if (key !== "relation" && entry[key] !== undefined && kept[key] === undefined)
320
+ filled.push(key);
321
+ list.items[index] = entryNode(doc, entry);
322
+ replaced.push("relation");
323
+ }
324
+ else if (!isMap(item)) {
238
325
  // `- lattice` written by hand already holds the packet. It is left
239
326
  // as written: held, nothing to fill (#713 review, F7).
240
327
  entry = toEpisodeFoundationEntry(isScalar(item) ? item.value : item) ?? input.entry;
@@ -249,15 +336,55 @@ export async function upsertEpisodeFoundation(input) {
249
336
  item.set(key, quoted(doc, value));
250
337
  filled.push(key);
251
338
  }
339
+ else if (key === "relation" && relation && String(present) !== relation) {
340
+ item.set(key, quoted(doc, relation));
341
+ replaced.push(key);
342
+ }
252
343
  }
253
344
  entry = toEpisodeFoundationEntry(item.toJSON()) ?? input.entry;
254
345
  }
255
346
  }
256
347
  }
257
- const wrote = (created || filled.length > 0) && !input.dryRun;
348
+ // Holding a packet again takes it off foundations_not_held.
349
+ const unmarked = takeOffNotHeld(doc, foundationNotHeldMark(input.entry.slug, input.entry.source));
350
+ const wrote = (created || filled.length > 0 || replaced.length > 0 || unmarked) && !input.dryRun;
258
351
  if (wrote)
259
352
  await writeFile(input.episodeYamlPath, doc.toString(), "utf8");
260
- return { entry, created, filled, wrote, dryRun: input.dryRun === true };
353
+ return { entry, created, filled, replaced, wrote, dryRun: input.dryRun === true };
354
+ }
355
+ /**
356
+ * Take a packet out of `episode.yaml`: its `foundations:` entry. When
357
+ * something else would still hold it (an episode's own folder,
358
+ * `keepFolderOut`; a `miadi-foundation:<slug>` citation in `references:`),
359
+ * the packet goes on `foundations_not_held:` and that pointer stays as
360
+ * written. An emptied `foundations:` key is dropped. Comments and every other
361
+ * field survive. Removing what is not held changes nothing.
362
+ */
363
+ export async function removeEpisodeFoundationEntry(input) {
364
+ const doc = await readManifestDocument(input.episodeYamlPath);
365
+ const target = { slug: input.slug, source: input.source };
366
+ const removed = [];
367
+ const list = doc.get("foundations", true);
368
+ if (isSeq(list)) {
369
+ list.items = list.items.filter((item) => {
370
+ const entry = itemEntry(item);
371
+ if (!sameEntry(entry, target))
372
+ return true;
373
+ removed.push(entry);
374
+ return false;
375
+ });
376
+ if (list.items.length === 0)
377
+ doc.delete("foundations");
378
+ }
379
+ const cited = doc.get("references", true);
380
+ const stillPointed = input.source === "episode"
381
+ ? input.keepFolderOut === true
382
+ : isSeq(cited) && cited.items.some((item) => foundationSlugOf(isScalar(item) ? item.value : item) === input.slug);
383
+ const notHeld = stillPointed && putOnNotHeld(doc, foundationNotHeldMark(input.slug, input.source), input.episodeYamlPath);
384
+ const wrote = (removed.length > 0 || notHeld) && !input.dryRun;
385
+ if (wrote)
386
+ await writeFile(input.episodeYamlPath, doc.toString(), "utf8");
387
+ return { removed, notHeld, wrote, dryRun: input.dryRun === true };
261
388
  }
262
389
  /**
263
390
  * The relationship type of an episode→foundation edge already on the wheel.
@@ -276,7 +403,9 @@ export async function existingFoundationRelation(mwUrl, episodeNodeId, nodeId, o
276
403
  * When the node exists, only `metadata.version` is refreshed, so a
277
404
  * hand-written name and description stay.
278
405
  */
279
- export async function projectEpisodeFoundation(mwUrl, input, options = {}) {
406
+ export async function projectEpisodeFoundation(mwUrl, input,
407
+ /** `relationWins`: a person set the relation, so an edge holding another one is changed to it. */
408
+ options = {}) {
280
409
  const fetchImpl = options.fetchImpl ?? fetch;
281
410
  const base = mwUrl.replace(/\/+$/, "");
282
411
  const nodeId = foundationNodeId(input.packet.slug, input.source === "episode" ? input.episodeFolder : undefined);
@@ -353,7 +482,24 @@ export async function projectEpisodeFoundation(mwUrl, input, options = {}) {
353
482
  }
354
483
  const existing = edgesFrom(listing.body).find((edge) => String(edge.from_id) === input.episodeNodeId && String(edge.to_id) === nodeId);
355
484
  if (existing) {
356
- projection.edge = { id: edgeId, state: "already-present", relationship_type: String(existing.relationship_type ?? input.relation) };
485
+ const current = String(existing.relationship_type ?? input.relation);
486
+ if (!options.relationWins || current === input.relation) {
487
+ projection.edge = { id: edgeId, state: "already-present", relationship_type: current };
488
+ }
489
+ else if (options.dryRun) {
490
+ projection.edge.state = "skipped";
491
+ }
492
+ else {
493
+ const patched = await wheelJson(fetchImpl, `${edgesUrl}?${pairQuery(input.episodeNodeId, nodeId)}`, {
494
+ method: "PATCH",
495
+ headers: { "content-type": "application/json" },
496
+ body: JSON.stringify({ relationship_type: input.relation }),
497
+ });
498
+ if (patched.ok)
499
+ projection.edge.state = "refreshed";
500
+ else
501
+ projection.edge = { id: edgeId, state: "pending", relationship_type: current, error: failure("PATCH", edgesUrl, patched) };
502
+ }
357
503
  return projection;
358
504
  }
359
505
  if (options.dryRun) {
@@ -376,5 +522,25 @@ export async function projectEpisodeFoundation(mwUrl, input, options = {}) {
376
522
  projection.edge.error = failure("POST", edgesUrl, posted);
377
523
  return projection;
378
524
  }
525
+ /** The wheel names one edge by its ordered pair. */
526
+ const pairQuery = (from, to) => new URLSearchParams({ from, to }).toString();
527
+ /**
528
+ * Take the episode→foundation edge off the wheel. The packet node stays: it is
529
+ * the packet's record, and a distributed packet's node is shared. Never throws.
530
+ */
531
+ export async function removeEpisodeFoundationEdge(mwUrl, input, options = {}) {
532
+ const id = `${input.episodeNodeId}:${input.nodeId}`;
533
+ const edgesUrl = `${mwUrl.replace(/\/+$/, "")}/api/edges`;
534
+ if (options.dryRun)
535
+ return { id, state: "skipped" };
536
+ const deleted = await wheelJson(options.fetchImpl ?? fetch, `${edgesUrl}?${pairQuery(input.episodeNodeId, input.nodeId)}`, { method: "DELETE" });
537
+ if (deleted.ok)
538
+ return { id, state: "deleted" };
539
+ // The wheel answers a missing edge with a JSON error; any other 404 is a wheel without the door.
540
+ const said = deleted.body?.error;
541
+ if (deleted.status === 404 && typeof said === "string")
542
+ return { id, state: "absent" };
543
+ return { id, state: "pending", error: failure("DELETE", edgesUrl, deleted) };
544
+ }
379
545
  export { DEFAULT_FOUNDATION_RELATION };
380
546
  //# sourceMappingURL=foundation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"foundation.js","sourceRoot":"","sources":["../src/foundation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"foundation.js","sourceRoot":"","sources":["../src/foundation.ts"],"names":[],"mappings":"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"}
@@ -39,6 +39,7 @@
39
39
  * Zero new dependencies: raw newline-delimited JSON-RPC over stdio.
40
40
  */
41
41
  import { readdirSync, readFileSync, existsSync } from "node:fs";
42
+ import { TRACING_DOMAINS } from "@miadi/episodic-memory-schema";
42
43
  import { join } from "node:path";
43
44
  import { createInterface } from "node:readline";
44
45
  import { mwUrlFromEnv } from "./env.js";
@@ -396,13 +397,13 @@ const TOOLS = [
396
397
  },
397
398
  {
398
399
  name: "chronicle_episode_tracing",
399
- description: "Hold a tracing resource (trace, prompt, session, dataset, score-config) in an episode: record it under tracing: in episode.yaml by domain (ceremony, story, eng) and resource, never by provider; put the tracing node (knowledge, kind tracing_resource with the provider in its metadata) and the episode→resource edge on the wheel, with the provider's page in the node only (never in episode.yaml); and land. Give a miadi-tracing:<domain>/<resource>/<id>[@version] reference, or domain, resource and id. Repeating the call adds nothing.",
400
+ description: "Hold a tracing resource (trace, prompt, session, dataset, score-config) in an episode: record it under tracing: in episode.yaml by domain (ceremony, creative, eng) and resource, never by provider; put the tracing node (knowledge, kind tracing_resource with the provider in its metadata) and the episode→resource edge on the wheel, with the provider's page in the node only (never in episode.yaml); and land. Give a miadi-tracing:<domain>/<resource>/<id>[@version] reference, or domain, resource and id. Repeating the call adds nothing.",
400
401
  inputSchema: {
401
402
  type: "object",
402
403
  properties: {
403
404
  episode: { type: "string", description: "Episode number, epNNN, or folder name." },
404
405
  reference: { type: "string", description: "miadi-tracing:<domain>/<resource>/<id>[@<version>]" },
405
- domain: { type: "string", enum: ["ceremony", "story", "eng"] },
406
+ domain: { type: "string", enum: [...TRACING_DOMAINS] },
406
407
  resource: { type: "string", enum: ["trace", "prompt", "session", "dataset", "score-config"] },
407
408
  id: { type: "string", description: "The provider's id; a prompt's id is its name." },
408
409
  name: { type: "string", description: "The resource's name at the provider, so the room can show it without a key." },