@miadi/episodic-memory-schema 0.7.1 → 0.9.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/dist/adapters/episode-capture.d.ts +131 -0
- package/dist/adapters/episode-capture.d.ts.map +1 -0
- package/dist/adapters/episode-capture.js +259 -0
- package/dist/adapters/episode-capture.js.map +1 -0
- package/dist/attention.d.ts +55 -0
- package/dist/attention.d.ts.map +1 -0
- package/dist/attention.js +73 -0
- package/dist/attention.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/observation.d.ts +8 -1
- package/dist/observation.d.ts.map +1 -1
- package/dist/observation.js.map +1 -1
- package/dist/story-library-manifest.d.ts +22 -1
- package/dist/story-library-manifest.d.ts.map +1 -1
- package/dist/story-library-manifest.js +40 -2
- package/dist/story-library-manifest.js.map +1 -1
- package/package.json +8 -9
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Observing an episode capture bundle — `capture.json`, schema
|
|
3
|
+
* `miadi.episode-capture.v1`.
|
|
4
|
+
*
|
|
5
|
+
* A capture bundle is a folder inside an episode vessel holding one take and
|
|
6
|
+
* everything derived from it:
|
|
7
|
+
*
|
|
8
|
+
* captures/260825114010/
|
|
9
|
+
* capture.json this file's subject
|
|
10
|
+
* transcription.json the sidecar
|
|
11
|
+
* transcription_260825114010_FR.txt
|
|
12
|
+
* transcription_260825114010_EN.txt
|
|
13
|
+
*
|
|
14
|
+
* It is the shape that carries every capture the chronicle actually holds, and
|
|
15
|
+
* until now it was declared nowhere: `@miadi/transcription` typed it
|
|
16
|
+
* structurally to read it, and gmtermux typed it structurally to write it. Two
|
|
17
|
+
* private copies of one contract is how `TranscriptionSidecar` came to exist
|
|
18
|
+
* twice. This module is the single declaration both of them import.
|
|
19
|
+
*
|
|
20
|
+
* As everywhere in this package, the observation is **compatibility-first**:
|
|
21
|
+
* nothing here reads a filesystem, nothing rewrites the descriptor, and a
|
|
22
|
+
* field that is missing is reported as missing rather than invented.
|
|
23
|
+
*
|
|
24
|
+
* The lineage the bundle states is the reason it earns an observer rather than
|
|
25
|
+
* a bare interface. The audio is `origin: "captured"` — made from a moment.
|
|
26
|
+
* Each transcript is `origin: "derived"` with `sourceArtifact` pointing at that
|
|
27
|
+
* audio, which is the same edge `observeCompositionManifest` draws between a
|
|
28
|
+
* clip and its text. A reader that only had the JSON would have to re-derive
|
|
29
|
+
* that edge, and each one would derive it slightly differently.
|
|
30
|
+
*
|
|
31
|
+
* **`sha256` travels in `metadata`, deliberately.** Putting it on
|
|
32
|
+
* `ArtifactReference` itself would be an adjustment to the episodic-memory
|
|
33
|
+
* schema, and those are held for the human by `capture-vocabulary.spec.md`
|
|
34
|
+
* §11.3. Nothing here is blocked by carrying it in metadata, and the day the
|
|
35
|
+
* field is named the move is mechanical.
|
|
36
|
+
*/
|
|
37
|
+
import type { ArtifactReference, EpisodeObservation, ObserveEpisodeCaptureOptions } from "../observation.js";
|
|
38
|
+
/** The schema every capture bundle in the chronicle declares. */
|
|
39
|
+
export declare const EPISODE_CAPTURE_SCHEMA = "miadi.episode-capture.v1";
|
|
40
|
+
/** The manifest filename inside a bundle folder. */
|
|
41
|
+
export declare const EPISODE_CAPTURE_MANIFEST_FILENAME = "capture.json";
|
|
42
|
+
/** The transcription sidecar filename inside a bundle folder. */
|
|
43
|
+
export declare const EPISODE_CAPTURE_SIDECAR_FILENAME = "transcription.json";
|
|
44
|
+
/** Which episode a bundle belongs to, as the descriptor states it. */
|
|
45
|
+
export interface EpisodeCaptureEpisodeRef {
|
|
46
|
+
path?: string;
|
|
47
|
+
number?: number;
|
|
48
|
+
title?: string;
|
|
49
|
+
}
|
|
50
|
+
/** Where the take came from before it was bound to this episode. */
|
|
51
|
+
export interface EpisodeCaptureSourceRef {
|
|
52
|
+
filename?: string;
|
|
53
|
+
/** The inbox it was drawn from, when one was named. */
|
|
54
|
+
inbox?: string;
|
|
55
|
+
}
|
|
56
|
+
/** The audio the bundle is built around. */
|
|
57
|
+
export interface EpisodeCaptureAudio {
|
|
58
|
+
filename?: string;
|
|
59
|
+
/** Relative to the episode directory, never absolute (jgwill/Miadi#622). */
|
|
60
|
+
relativePath?: string;
|
|
61
|
+
bytes?: number;
|
|
62
|
+
sha256?: string;
|
|
63
|
+
mimetype?: string;
|
|
64
|
+
}
|
|
65
|
+
/** One language rendering produced from the audio. */
|
|
66
|
+
export interface EpisodeCaptureOutput {
|
|
67
|
+
/** As written by the recorder: `"fr"`, `"en"`. */
|
|
68
|
+
language?: string;
|
|
69
|
+
label?: string;
|
|
70
|
+
filename?: string;
|
|
71
|
+
relativePath?: string;
|
|
72
|
+
bytes?: number;
|
|
73
|
+
sha256?: string;
|
|
74
|
+
}
|
|
75
|
+
/** What the bundle says about its transcription. */
|
|
76
|
+
export interface EpisodeCaptureTranscription {
|
|
77
|
+
sourceFilename?: string;
|
|
78
|
+
/** Relative path to the sidecar. */
|
|
79
|
+
sidecar?: string;
|
|
80
|
+
timestamp?: string;
|
|
81
|
+
outputs?: EpisodeCaptureOutput[];
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* The registration receipt. A descriptor is both a declaration and a mutable
|
|
85
|
+
* receipt: the wheel answers after the bytes are already durable, and that
|
|
86
|
+
* answer is written back here. `status` absent means never attempted, which is
|
|
87
|
+
* not the same as failed.
|
|
88
|
+
*/
|
|
89
|
+
export interface EpisodeCaptureRegistration {
|
|
90
|
+
status?: string;
|
|
91
|
+
registeredAt?: string;
|
|
92
|
+
error?: string;
|
|
93
|
+
records?: EpisodeCaptureRecord[];
|
|
94
|
+
}
|
|
95
|
+
/** One artifact as the medicine wheel knows it. */
|
|
96
|
+
export interface EpisodeCaptureRecord {
|
|
97
|
+
id?: string;
|
|
98
|
+
filename?: string;
|
|
99
|
+
/** `audio` | `transcript` — the wheel's own role vocabulary. */
|
|
100
|
+
role?: string;
|
|
101
|
+
language?: string;
|
|
102
|
+
}
|
|
103
|
+
/** `capture.json`, typed. Every field optional: absence is reported, not invented. */
|
|
104
|
+
export interface EpisodeCaptureDescriptor {
|
|
105
|
+
schema?: string;
|
|
106
|
+
episode?: EpisodeCaptureEpisodeRef;
|
|
107
|
+
source?: EpisodeCaptureSourceRef;
|
|
108
|
+
audio?: EpisodeCaptureAudio;
|
|
109
|
+
transcription?: EpisodeCaptureTranscription;
|
|
110
|
+
storedAt?: string;
|
|
111
|
+
updatedAt?: string;
|
|
112
|
+
medicineWheel?: EpisodeCaptureRegistration;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Observe a capture bundle descriptor.
|
|
116
|
+
*
|
|
117
|
+
* `relativePath` is the descriptor's path within the episode directory
|
|
118
|
+
* (`captures/<tlid>/capture.json`), so observation ids stay stable no matter
|
|
119
|
+
* where the vessel is mounted — the same bundle observed from a phone and from
|
|
120
|
+
* a workstation observes identically.
|
|
121
|
+
*/
|
|
122
|
+
export declare function observeEpisodeCapture(input: unknown, options: ObserveEpisodeCaptureOptions): EpisodeObservation;
|
|
123
|
+
/**
|
|
124
|
+
* The wheel records a descriptor carries, or an empty list. A bundle whose
|
|
125
|
+
* registration never ran has no records — an absence, not a failure.
|
|
126
|
+
*/
|
|
127
|
+
export declare function episodeCaptureRecords(input: unknown): EpisodeCaptureRecord[];
|
|
128
|
+
/** Whether a parsed value looks like a capture bundle descriptor. */
|
|
129
|
+
export declare function isEpisodeCaptureDescriptor(value: unknown): boolean;
|
|
130
|
+
export type { ArtifactReference };
|
|
131
|
+
//# sourceMappingURL=episode-capture.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"episode-capture.d.ts","sourceRoot":"","sources":["../../src/adapters/episode-capture.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Observing an episode capture bundle — `capture.json`, schema
|
|
3
|
+
* `miadi.episode-capture.v1`.
|
|
4
|
+
*
|
|
5
|
+
* A capture bundle is a folder inside an episode vessel holding one take and
|
|
6
|
+
* everything derived from it:
|
|
7
|
+
*
|
|
8
|
+
* captures/260825114010/
|
|
9
|
+
* capture.json this file's subject
|
|
10
|
+
* transcription.json the sidecar
|
|
11
|
+
* transcription_260825114010_FR.txt
|
|
12
|
+
* transcription_260825114010_EN.txt
|
|
13
|
+
*
|
|
14
|
+
* It is the shape that carries every capture the chronicle actually holds, and
|
|
15
|
+
* until now it was declared nowhere: `@miadi/transcription` typed it
|
|
16
|
+
* structurally to read it, and gmtermux typed it structurally to write it. Two
|
|
17
|
+
* private copies of one contract is how `TranscriptionSidecar` came to exist
|
|
18
|
+
* twice. This module is the single declaration both of them import.
|
|
19
|
+
*
|
|
20
|
+
* As everywhere in this package, the observation is **compatibility-first**:
|
|
21
|
+
* nothing here reads a filesystem, nothing rewrites the descriptor, and a
|
|
22
|
+
* field that is missing is reported as missing rather than invented.
|
|
23
|
+
*
|
|
24
|
+
* The lineage the bundle states is the reason it earns an observer rather than
|
|
25
|
+
* a bare interface. The audio is `origin: "captured"` — made from a moment.
|
|
26
|
+
* Each transcript is `origin: "derived"` with `sourceArtifact` pointing at that
|
|
27
|
+
* audio, which is the same edge `observeCompositionManifest` draws between a
|
|
28
|
+
* clip and its text. A reader that only had the JSON would have to re-derive
|
|
29
|
+
* that edge, and each one would derive it slightly differently.
|
|
30
|
+
*
|
|
31
|
+
* **`sha256` travels in `metadata`, deliberately.** Putting it on
|
|
32
|
+
* `ArtifactReference` itself would be an adjustment to the episodic-memory
|
|
33
|
+
* schema, and those are held for the human by `capture-vocabulary.spec.md`
|
|
34
|
+
* §11.3. Nothing here is blocked by carrying it in metadata, and the day the
|
|
35
|
+
* field is named the move is mechanical.
|
|
36
|
+
*/
|
|
37
|
+
import { cloneValue, inferArtifactKind, isRecord, observationId, validateRelativePath, } from "./common.js";
|
|
38
|
+
/** The schema every capture bundle in the chronicle declares. */
|
|
39
|
+
export const EPISODE_CAPTURE_SCHEMA = "miadi.episode-capture.v1";
|
|
40
|
+
/** The manifest filename inside a bundle folder. */
|
|
41
|
+
export const EPISODE_CAPTURE_MANIFEST_FILENAME = "capture.json";
|
|
42
|
+
/** The transcription sidecar filename inside a bundle folder. */
|
|
43
|
+
export const EPISODE_CAPTURE_SIDECAR_FILENAME = "transcription.json";
|
|
44
|
+
/**
|
|
45
|
+
* Observe a capture bundle descriptor.
|
|
46
|
+
*
|
|
47
|
+
* `relativePath` is the descriptor's path within the episode directory
|
|
48
|
+
* (`captures/<tlid>/capture.json`), so observation ids stay stable no matter
|
|
49
|
+
* where the vessel is mounted — the same bundle observed from a phone and from
|
|
50
|
+
* a workstation observes identically.
|
|
51
|
+
*/
|
|
52
|
+
export function observeEpisodeCapture(input, options) {
|
|
53
|
+
const relativePath = validateRelativePath(options.relativePath);
|
|
54
|
+
const diagnostics = [];
|
|
55
|
+
const observation = {
|
|
56
|
+
id: observationId("episode-capture", relativePath),
|
|
57
|
+
zone: options.zone ?? "chronicle",
|
|
58
|
+
sourceDocuments: [{ format: "episode-capture", relativePath }],
|
|
59
|
+
identityCandidates: [{ kind: "path", value: relativePath }],
|
|
60
|
+
sourceMetadata: {},
|
|
61
|
+
artifacts: [],
|
|
62
|
+
relations: [],
|
|
63
|
+
diagnostics,
|
|
64
|
+
unmappedFields: {},
|
|
65
|
+
};
|
|
66
|
+
if (!isRecord(input)) {
|
|
67
|
+
diagnostics.push({
|
|
68
|
+
level: "error",
|
|
69
|
+
code: "episode-capture.invalid-object",
|
|
70
|
+
message: "A capture descriptor must be a non-array object.",
|
|
71
|
+
path: relativePath,
|
|
72
|
+
});
|
|
73
|
+
return observation;
|
|
74
|
+
}
|
|
75
|
+
const record = input;
|
|
76
|
+
const descriptor = record;
|
|
77
|
+
const schema = asString(record.schema);
|
|
78
|
+
if (schema === undefined) {
|
|
79
|
+
diagnostics.push(diagnostic("schema-absent", "info", "No schema declared. Read as a capture bundle on the strength of its shape."));
|
|
80
|
+
}
|
|
81
|
+
else if (schema !== EPISODE_CAPTURE_SCHEMA) {
|
|
82
|
+
diagnostics.push(diagnostic("schema-unrecognized", "warning", `Declared schema '${schema}' is not ${EPISODE_CAPTURE_SCHEMA}; fields are read as best they can be.`));
|
|
83
|
+
}
|
|
84
|
+
const bundleDir = parentOf(relativePath);
|
|
85
|
+
const episode = isRecord(record.episode) ? record.episode : undefined;
|
|
86
|
+
const sourceMetadata = {};
|
|
87
|
+
const title = asString(episode?.title);
|
|
88
|
+
if (title !== undefined)
|
|
89
|
+
sourceMetadata.title = title;
|
|
90
|
+
const storedAt = asString(record.storedAt);
|
|
91
|
+
if (storedAt !== undefined)
|
|
92
|
+
sourceMetadata.created = storedAt;
|
|
93
|
+
const updatedAt = asString(record.updatedAt);
|
|
94
|
+
if (updatedAt !== undefined)
|
|
95
|
+
sourceMetadata.updated = updatedAt;
|
|
96
|
+
observation.sourceMetadata = sourceMetadata;
|
|
97
|
+
const episodePath = asString(episode?.path);
|
|
98
|
+
if (episodePath !== undefined) {
|
|
99
|
+
observation.identityCandidates.push({ kind: "path", value: episodePath });
|
|
100
|
+
}
|
|
101
|
+
const episodeNumber = episode?.number;
|
|
102
|
+
if (typeof episodeNumber === "number" && Number.isFinite(episodeNumber)) {
|
|
103
|
+
observation.identityCandidates.push({
|
|
104
|
+
kind: "episode-number",
|
|
105
|
+
value: String(episodeNumber),
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
// ── the audio: made from a moment, not from another artifact ──────────────
|
|
109
|
+
const audio = isRecord(record.audio) ? record.audio : undefined;
|
|
110
|
+
const audioFilename = asString(audio?.filename);
|
|
111
|
+
let audioId;
|
|
112
|
+
if (audio !== undefined && audioFilename !== undefined) {
|
|
113
|
+
const audioPath = bundleRelative(bundleDir, audio.relativePath, audioFilename, diagnostics);
|
|
114
|
+
audioId = `capture:${audioFilename}`;
|
|
115
|
+
observation.artifacts.push({
|
|
116
|
+
id: audioId,
|
|
117
|
+
kind: inferArtifactKind(audioFilename, "audio"),
|
|
118
|
+
relativePath: audioPath,
|
|
119
|
+
origin: "captured",
|
|
120
|
+
metadata: pruned({
|
|
121
|
+
sha256: audio.sha256,
|
|
122
|
+
bytes: audio.bytes,
|
|
123
|
+
mimetype: audio.mimetype,
|
|
124
|
+
sourceFilename: asString(isRecord(record.source) ? record.source.filename : undefined),
|
|
125
|
+
inbox: asString(isRecord(record.source) ? record.source.inbox : undefined),
|
|
126
|
+
}),
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
diagnostics.push(diagnostic("audio-absent", "warning", "The descriptor names no audio; its transcripts have nothing to point at."));
|
|
131
|
+
}
|
|
132
|
+
// ── the transcripts: derived, each pointing at the audio ──────────────────
|
|
133
|
+
const transcription = isRecord(record.transcription)
|
|
134
|
+
? record.transcription
|
|
135
|
+
: undefined;
|
|
136
|
+
const transcribedAt = asString(transcription?.timestamp);
|
|
137
|
+
const outputs = Array.isArray(transcription?.outputs) ? transcription.outputs : [];
|
|
138
|
+
for (const raw of outputs) {
|
|
139
|
+
if (!isRecord(raw))
|
|
140
|
+
continue;
|
|
141
|
+
const output = raw;
|
|
142
|
+
const filename = asString(output.filename);
|
|
143
|
+
if (filename === undefined) {
|
|
144
|
+
diagnostics.push(diagnostic("output-unnamed", "warning", "A transcription output carries no filename and was not projected."));
|
|
145
|
+
continue;
|
|
146
|
+
}
|
|
147
|
+
observation.artifacts.push({
|
|
148
|
+
id: `capture:${filename}`,
|
|
149
|
+
kind: inferArtifactKind(filename, "transcript"),
|
|
150
|
+
relativePath: bundleRelative(bundleDir, output.relativePath, filename, diagnostics),
|
|
151
|
+
label: asString(output.label),
|
|
152
|
+
origin: "derived",
|
|
153
|
+
...(audioId === undefined ? {} : { sourceArtifact: audioId }),
|
|
154
|
+
metadata: pruned({
|
|
155
|
+
language: output.language,
|
|
156
|
+
sha256: output.sha256,
|
|
157
|
+
bytes: output.bytes,
|
|
158
|
+
transcribedAt,
|
|
159
|
+
}),
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
const sidecar = asString(transcription?.sidecar);
|
|
163
|
+
if (sidecar !== undefined) {
|
|
164
|
+
observation.artifacts.push({
|
|
165
|
+
id: `capture:${EPISODE_CAPTURE_SIDECAR_FILENAME}`,
|
|
166
|
+
kind: "text",
|
|
167
|
+
relativePath: bundleRelative(bundleDir, sidecar, EPISODE_CAPTURE_SIDECAR_FILENAME, diagnostics),
|
|
168
|
+
label: "Transcription sidecar",
|
|
169
|
+
origin: "derived",
|
|
170
|
+
...(audioId === undefined ? {} : { sourceArtifact: audioId }),
|
|
171
|
+
metadata: pruned({ transcribedAt }),
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
// ── everything the projection did not consume, kept verbatim ──────────────
|
|
175
|
+
for (const [key, value] of Object.entries(record)) {
|
|
176
|
+
if (PROJECTED_FIELDS.has(key))
|
|
177
|
+
continue;
|
|
178
|
+
observation.unmappedFields[key] = cloneValue(value);
|
|
179
|
+
}
|
|
180
|
+
void descriptor;
|
|
181
|
+
return observation;
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* The wheel records a descriptor carries, or an empty list. A bundle whose
|
|
185
|
+
* registration never ran has no records — an absence, not a failure.
|
|
186
|
+
*/
|
|
187
|
+
export function episodeCaptureRecords(input) {
|
|
188
|
+
if (!isRecord(input))
|
|
189
|
+
return [];
|
|
190
|
+
const wheel = input.medicineWheel;
|
|
191
|
+
if (!isRecord(wheel))
|
|
192
|
+
return [];
|
|
193
|
+
const records = wheel.records;
|
|
194
|
+
if (!Array.isArray(records))
|
|
195
|
+
return [];
|
|
196
|
+
return records.filter(isRecord).map((r) => pruned({
|
|
197
|
+
id: asString(r.id),
|
|
198
|
+
filename: asString(r.filename),
|
|
199
|
+
role: asString(r.role),
|
|
200
|
+
language: asString(r.language),
|
|
201
|
+
}));
|
|
202
|
+
}
|
|
203
|
+
/** Whether a parsed value looks like a capture bundle descriptor. */
|
|
204
|
+
export function isEpisodeCaptureDescriptor(value) {
|
|
205
|
+
if (!isRecord(value))
|
|
206
|
+
return false;
|
|
207
|
+
if (value.schema === EPISODE_CAPTURE_SCHEMA)
|
|
208
|
+
return true;
|
|
209
|
+
// Shape-based fallback: the schema key postdates some bundles.
|
|
210
|
+
return isRecord(value.audio) && isRecord(value.transcription);
|
|
211
|
+
}
|
|
212
|
+
const PROJECTED_FIELDS = new Set([
|
|
213
|
+
"schema",
|
|
214
|
+
"episode",
|
|
215
|
+
"source",
|
|
216
|
+
"audio",
|
|
217
|
+
"transcription",
|
|
218
|
+
"storedAt",
|
|
219
|
+
"updatedAt",
|
|
220
|
+
]);
|
|
221
|
+
function diagnostic(code, level, message, path) {
|
|
222
|
+
return { level, code: `episode-capture.${code}`, message, ...(path === undefined ? {} : { path }) };
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* A path inside the bundle, expressed relative to the episode directory.
|
|
226
|
+
*
|
|
227
|
+
* The descriptor's own `relativePath` is preferred when it is genuinely
|
|
228
|
+
* relative. An absolute one is refused and rebuilt from the bundle directory:
|
|
229
|
+
* three episodes already carry `/data/data/com.termux/...` as provenance,
|
|
230
|
+
* true on one device and resolvable on no other host (jgwill/Miadi#622).
|
|
231
|
+
*/
|
|
232
|
+
function bundleRelative(bundleDir, stated, filename, diagnostics) {
|
|
233
|
+
const value = asString(stated);
|
|
234
|
+
if (value !== undefined && !isAbsoluteish(value))
|
|
235
|
+
return value;
|
|
236
|
+
if (value !== undefined) {
|
|
237
|
+
diagnostics.push(diagnostic("absolute-path-refused", "warning", `'${value}' is an absolute path and was replaced with one relative to the episode.`));
|
|
238
|
+
}
|
|
239
|
+
return bundleDir === "" ? filename : `${bundleDir}/${filename}`;
|
|
240
|
+
}
|
|
241
|
+
function isAbsoluteish(value) {
|
|
242
|
+
return value.startsWith("/") || /^[A-Za-z]:[\\/]/.test(value) || value.includes("..");
|
|
243
|
+
}
|
|
244
|
+
function parentOf(relativePath) {
|
|
245
|
+
const index = relativePath.lastIndexOf("/");
|
|
246
|
+
return index === -1 ? "" : relativePath.slice(0, index);
|
|
247
|
+
}
|
|
248
|
+
function pruned(value) {
|
|
249
|
+
const out = {};
|
|
250
|
+
for (const [key, item] of Object.entries(value)) {
|
|
251
|
+
if (item !== undefined)
|
|
252
|
+
out[key] = item;
|
|
253
|
+
}
|
|
254
|
+
return out;
|
|
255
|
+
}
|
|
256
|
+
function asString(value) {
|
|
257
|
+
return typeof value === "string" ? value : undefined;
|
|
258
|
+
}
|
|
259
|
+
//# sourceMappingURL=episode-capture.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"episode-capture.js","sourceRoot":"","sources":["../../src/adapters/episode-capture.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The chronicle ATTENTION contract — what needs a human, as data.
|
|
3
|
+
*
|
|
4
|
+
* William's requirement (2026-08-15, ep332): agents store "what needs
|
|
5
|
+
* attention from a human" WITHIN the chronicle, and surfaces render it — he
|
|
6
|
+
* opens no terminal and no markdown file. The store is `attention.json` at an
|
|
7
|
+
* episode folder's root; every consumer (the Miadi /chronicle app, the
|
|
8
|
+
* passages CLI verbs, inquiry-weave's wheel projection, forgewright's
|
|
9
|
+
* chronicle view) types against THIS module, so the shape has one owner and
|
|
10
|
+
* cannot fork into drifting copies.
|
|
11
|
+
*
|
|
12
|
+
* This module is pure — no fs, no fetch — so browser bundles and CJS CLIs can
|
|
13
|
+
* both consume it. Reading files and walking folders stays with the consumer.
|
|
14
|
+
*/
|
|
15
|
+
/** The filename, at an episode folder's root. */
|
|
16
|
+
export declare const ATTENTION_FILE = "attention.json";
|
|
17
|
+
/** Stamped into wheel projections so a reader knows which shape it holds. */
|
|
18
|
+
export declare const ATTENTION_SCHEMA_VERSION = "chronicle.attention.v1";
|
|
19
|
+
export interface AttentionItem {
|
|
20
|
+
/** Stable per-episode identity, e.g. "d1-consent-render". */
|
|
21
|
+
id: string;
|
|
22
|
+
/** One line: what is asked of the human. */
|
|
23
|
+
question: string;
|
|
24
|
+
/** What answering it releases. */
|
|
25
|
+
unlocks?: string;
|
|
26
|
+
/** ISO date the question was raised. */
|
|
27
|
+
asked?: string;
|
|
28
|
+
state: "open" | "answered";
|
|
29
|
+
answer?: string | null;
|
|
30
|
+
answered_at?: string | null;
|
|
31
|
+
/** Where the full record lives — paths, owner/repo#n refs, chart ids. */
|
|
32
|
+
depth?: string[];
|
|
33
|
+
}
|
|
34
|
+
export interface AttentionStore {
|
|
35
|
+
attention: 1;
|
|
36
|
+
items: AttentionItem[];
|
|
37
|
+
}
|
|
38
|
+
export interface ParsedAttentionStore {
|
|
39
|
+
items: AttentionItem[];
|
|
40
|
+
/** Set when the raw value could not be read as a store — surfaced, never
|
|
41
|
+
* swallowed, so an empty answer stays distinguishable from a failed look. */
|
|
42
|
+
parseError?: string;
|
|
43
|
+
}
|
|
44
|
+
/** Tolerant per-item reader: id + question are required, the rest optional. */
|
|
45
|
+
export declare function toAttentionItem(raw: unknown): AttentionItem | null;
|
|
46
|
+
/**
|
|
47
|
+
* Parse a raw `attention.json` payload (string or already-parsed value).
|
|
48
|
+
* Malformed input yields `{ items: [], parseError }` — the error travels with
|
|
49
|
+
* the result instead of throwing, matching the render-path tolerance the
|
|
50
|
+
* Miadi app shipped in jgwill/Miadi#615.
|
|
51
|
+
*/
|
|
52
|
+
export declare function parseAttentionStore(raw: unknown): ParsedAttentionStore;
|
|
53
|
+
/** Serialize a store canonically (stable field order, trailing newline). */
|
|
54
|
+
export declare function serializeAttentionStore(items: AttentionItem[]): string;
|
|
55
|
+
//# sourceMappingURL=attention.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attention.d.ts","sourceRoot":"","sources":["../src/attention.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,iDAAiD;AACjD,eAAO,MAAM,cAAc,mBAAmB,CAAA;AAE9C,6EAA6E;AAC7E,eAAO,MAAM,wBAAwB,2BAA2B,CAAA;AAEhE,MAAM,WAAW,aAAa;IAC5B,6DAA6D;IAC7D,EAAE,EAAE,MAAM,CAAA;IACV,4CAA4C;IAC5C,QAAQ,EAAE,MAAM,CAAA;IAChB,kCAAkC;IAClC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,wCAAwC;IACxC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,GAAG,UAAU,CAAA;IAC1B,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,yEAAyE;IACzE,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,CAAC,CAAA;IACZ,KAAK,EAAE,aAAa,EAAE,CAAA;CACvB;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,aAAa,EAAE,CAAA;IACtB;kFAC8E;IAC9E,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAMD,+EAA+E;AAC/E,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,GAAG,IAAI,CAkBlE;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,oBAAoB,CAetE;AAED,4EAA4E;AAC5E,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,aAAa,EAAE,GAAG,MAAM,CAGtE"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The chronicle ATTENTION contract — what needs a human, as data.
|
|
3
|
+
*
|
|
4
|
+
* William's requirement (2026-08-15, ep332): agents store "what needs
|
|
5
|
+
* attention from a human" WITHIN the chronicle, and surfaces render it — he
|
|
6
|
+
* opens no terminal and no markdown file. The store is `attention.json` at an
|
|
7
|
+
* episode folder's root; every consumer (the Miadi /chronicle app, the
|
|
8
|
+
* passages CLI verbs, inquiry-weave's wheel projection, forgewright's
|
|
9
|
+
* chronicle view) types against THIS module, so the shape has one owner and
|
|
10
|
+
* cannot fork into drifting copies.
|
|
11
|
+
*
|
|
12
|
+
* This module is pure — no fs, no fetch — so browser bundles and CJS CLIs can
|
|
13
|
+
* both consume it. Reading files and walking folders stays with the consumer.
|
|
14
|
+
*/
|
|
15
|
+
/** The filename, at an episode folder's root. */
|
|
16
|
+
export const ATTENTION_FILE = "attention.json";
|
|
17
|
+
/** Stamped into wheel projections so a reader knows which shape it holds. */
|
|
18
|
+
export const ATTENTION_SCHEMA_VERSION = "chronicle.attention.v1";
|
|
19
|
+
function str(v) {
|
|
20
|
+
return typeof v === "string" && v.trim() ? v : undefined;
|
|
21
|
+
}
|
|
22
|
+
/** Tolerant per-item reader: id + question are required, the rest optional. */
|
|
23
|
+
export function toAttentionItem(raw) {
|
|
24
|
+
if (typeof raw !== "object" || raw === null)
|
|
25
|
+
return null;
|
|
26
|
+
const r = raw;
|
|
27
|
+
const id = str(r.id);
|
|
28
|
+
const question = str(r.question);
|
|
29
|
+
if (!id || !question)
|
|
30
|
+
return null;
|
|
31
|
+
return {
|
|
32
|
+
id,
|
|
33
|
+
question,
|
|
34
|
+
unlocks: str(r.unlocks),
|
|
35
|
+
asked: str(r.asked),
|
|
36
|
+
state: r.state === "answered" ? "answered" : "open",
|
|
37
|
+
answer: str(r.answer) ?? null,
|
|
38
|
+
answered_at: str(r.answered_at) ?? null,
|
|
39
|
+
depth: Array.isArray(r.depth)
|
|
40
|
+
? r.depth.filter((d) => typeof d === "string")
|
|
41
|
+
: undefined,
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Parse a raw `attention.json` payload (string or already-parsed value).
|
|
46
|
+
* Malformed input yields `{ items: [], parseError }` — the error travels with
|
|
47
|
+
* the result instead of throwing, matching the render-path tolerance the
|
|
48
|
+
* Miadi app shipped in jgwill/Miadi#615.
|
|
49
|
+
*/
|
|
50
|
+
export function parseAttentionStore(raw) {
|
|
51
|
+
let value = raw;
|
|
52
|
+
if (typeof raw === "string") {
|
|
53
|
+
try {
|
|
54
|
+
value = JSON.parse(raw);
|
|
55
|
+
}
|
|
56
|
+
catch (e) {
|
|
57
|
+
return { items: [], parseError: e instanceof Error ? e.message : String(e) };
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
if (typeof value !== "object" || value === null) {
|
|
61
|
+
return { items: [], parseError: "attention store is not an object" };
|
|
62
|
+
}
|
|
63
|
+
const items = value.items;
|
|
64
|
+
if (!Array.isArray(items))
|
|
65
|
+
return { items: [] };
|
|
66
|
+
return { items: items.map(toAttentionItem).filter((i) => i !== null) };
|
|
67
|
+
}
|
|
68
|
+
/** Serialize a store canonically (stable field order, trailing newline). */
|
|
69
|
+
export function serializeAttentionStore(items) {
|
|
70
|
+
const store = { attention: 1, items };
|
|
71
|
+
return JSON.stringify(store, null, 2) + "\n";
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=attention.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attention.js","sourceRoot":"","sources":["../src/attention.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ export * from "./observation.js";
|
|
|
4
4
|
export * from "./chronicle-manifest.js";
|
|
5
5
|
export * from "./story-library-manifest.js";
|
|
6
6
|
export * from "./adapters/composition.js";
|
|
7
|
+
export * from "./adapters/episode-capture.js";
|
|
7
8
|
export * from "./adapters/episode-yaml.js";
|
|
8
9
|
export * from "./adapters/directory.js";
|
|
9
10
|
export * from "./adapters/segment-grammar.js";
|
|
@@ -19,4 +20,10 @@ export { inferArtifactKind, extractEpisodeNumber, validateRelativePath, tryValid
|
|
|
19
20
|
*/
|
|
20
21
|
export { stableArtifactId, tryStableArtifactId, isStableArtifactId, captureStableKey, } from "./adapters/common.js";
|
|
21
22
|
export type { StableArtifactIdInput } from "./adapters/common.js";
|
|
23
|
+
/**
|
|
24
|
+
* The ATTENTION contract — what needs a human, as data (ep332,
|
|
25
|
+
* jgwill/Miadi#615). One owner for the shape every surface renders.
|
|
26
|
+
*/
|
|
27
|
+
export { ATTENTION_FILE, ATTENTION_SCHEMA_VERSION, toAttentionItem, parseAttentionStore, serializeAttentionStore, } from "./attention.js";
|
|
28
|
+
export type { AttentionItem, AttentionStore, ParsedAttentionStore, } from "./attention.js";
|
|
22
29
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,kBAAkB,CAAA;AAChC,cAAc,yBAAyB,CAAA;AACvC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,2BAA2B,CAAA;AACzC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,yBAAyB,CAAA;AACvC,cAAc,+BAA+B,CAAA;AAE7C;;;;GAIG;AACH,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,oBAAoB,EACpB,uBAAuB,EACvB,kBAAkB,EAClB,gBAAgB,EAChB,aAAa,EACb,YAAY,GACb,MAAM,sBAAsB,CAAA;AAE7B;;;GAGG;AACH,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,sBAAsB,CAAA;AAC7B,YAAY,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,kBAAkB,CAAA;AAChC,cAAc,yBAAyB,CAAA;AACvC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,2BAA2B,CAAA;AACzC,cAAc,+BAA+B,CAAA;AAC7C,cAAc,4BAA4B,CAAA;AAC1C,cAAc,yBAAyB,CAAA;AACvC,cAAc,+BAA+B,CAAA;AAE7C;;;;GAIG;AACH,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,oBAAoB,EACpB,uBAAuB,EACvB,kBAAkB,EAClB,gBAAgB,EAChB,aAAa,EACb,YAAY,GACb,MAAM,sBAAsB,CAAA;AAE7B;;;GAGG;AACH,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,sBAAsB,CAAA;AAC7B,YAAY,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAEjE;;;GAGG;AACH,OAAO,EACL,cAAc,EACd,wBAAwB,EACxB,eAAe,EACf,mBAAmB,EACnB,uBAAuB,GACxB,MAAM,gBAAgB,CAAA;AACvB,YAAY,EACV,aAAa,EACb,cAAc,EACd,oBAAoB,GACrB,MAAM,gBAAgB,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -4,6 +4,7 @@ export * from "./observation.js";
|
|
|
4
4
|
export * from "./chronicle-manifest.js";
|
|
5
5
|
export * from "./story-library-manifest.js";
|
|
6
6
|
export * from "./adapters/composition.js";
|
|
7
|
+
export * from "./adapters/episode-capture.js";
|
|
7
8
|
export * from "./adapters/episode-yaml.js";
|
|
8
9
|
export * from "./adapters/directory.js";
|
|
9
10
|
export * from "./adapters/segment-grammar.js";
|
|
@@ -18,4 +19,9 @@ export { inferArtifactKind, extractEpisodeNumber, validateRelativePath, tryValid
|
|
|
18
19
|
* before any manifest gives it one. Document-derived ids are unchanged.
|
|
19
20
|
*/
|
|
20
21
|
export { stableArtifactId, tryStableArtifactId, isStableArtifactId, captureStableKey, } from "./adapters/common.js";
|
|
22
|
+
/**
|
|
23
|
+
* The ATTENTION contract — what needs a human, as data (ep332,
|
|
24
|
+
* jgwill/Miadi#615). One owner for the shape every surface renders.
|
|
25
|
+
*/
|
|
26
|
+
export { ATTENTION_FILE, ATTENTION_SCHEMA_VERSION, toAttentionItem, parseAttentionStore, serializeAttentionStore, } from "./attention.js";
|
|
21
27
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,kBAAkB,CAAA;AAChC,cAAc,yBAAyB,CAAA;AACvC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,2BAA2B,CAAA;AACzC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,yBAAyB,CAAA;AACvC,cAAc,+BAA+B,CAAA;AAE7C;;;;GAIG;AACH,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,oBAAoB,EACpB,uBAAuB,EACvB,kBAAkB,EAClB,gBAAgB,EAChB,aAAa,EACb,YAAY,GACb,MAAM,sBAAsB,CAAA;AAE7B;;;GAGG;AACH,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,sBAAsB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,kBAAkB,CAAA;AAChC,cAAc,yBAAyB,CAAA;AACvC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,2BAA2B,CAAA;AACzC,cAAc,+BAA+B,CAAA;AAC7C,cAAc,4BAA4B,CAAA;AAC1C,cAAc,yBAAyB,CAAA;AACvC,cAAc,+BAA+B,CAAA;AAE7C;;;;GAIG;AACH,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,oBAAoB,EACpB,uBAAuB,EACvB,kBAAkB,EAClB,gBAAgB,EAChB,aAAa,EACb,YAAY,GACb,MAAM,sBAAsB,CAAA;AAE7B;;;GAGG;AACH,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,sBAAsB,CAAA;AAG7B;;;GAGG;AACH,OAAO,EACL,cAAc,EACd,wBAAwB,EACxB,eAAe,EACf,mBAAmB,EACnB,uBAAuB,GACxB,MAAM,gBAAgB,CAAA"}
|
package/dist/observation.d.ts
CHANGED
|
@@ -6,7 +6,9 @@
|
|
|
6
6
|
* decide whether a later, explicit projection is appropriate.
|
|
7
7
|
*/
|
|
8
8
|
export type EpisodeSourceZone = "composition-intake" | "chronicle" | "runtime-projection";
|
|
9
|
-
export type EpisodeSourceFormat = "composition-json" | "episode-yaml" | "directory-inferred" | "episodic-memory"
|
|
9
|
+
export type EpisodeSourceFormat = "composition-json" | "episode-yaml" | "directory-inferred" | "episodic-memory"
|
|
10
|
+
/** `capture.json` — one capture bundle inside an episode vessel. */
|
|
11
|
+
| "episode-capture";
|
|
10
12
|
export interface SourceDocumentRef {
|
|
11
13
|
format: EpisodeSourceFormat;
|
|
12
14
|
relativePath: string;
|
|
@@ -402,6 +404,11 @@ export interface ObserveCompositionManifestOptions {
|
|
|
402
404
|
relativePath: string;
|
|
403
405
|
zone?: "composition-intake";
|
|
404
406
|
}
|
|
407
|
+
export interface ObserveEpisodeCaptureOptions {
|
|
408
|
+
/** Path to the `capture.json`, relative to the episode directory. */
|
|
409
|
+
relativePath: string;
|
|
410
|
+
zone?: "chronicle";
|
|
411
|
+
}
|
|
405
412
|
export interface ObserveEpisodeYamlManifestOptions {
|
|
406
413
|
relativePath: string;
|
|
407
414
|
zone?: "chronicle";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"observation.d.ts","sourceRoot":"","sources":["../src/observation.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"observation.d.ts","sourceRoot":"","sources":["../src/observation.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,MAAM,iBAAiB,GACzB,oBAAoB,GACpB,WAAW,GACX,oBAAoB,CAAA;AAExB,MAAM,MAAM,mBAAmB,GAC3B,kBAAkB,GAClB,cAAc,GACd,oBAAoB,GACpB,iBAAiB;AACnB,oEAAoE;GAClE,iBAAiB,CAAA;AAErB,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,mBAAmB,CAAA;IAC3B,YAAY,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,gBAAgB,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAA;IAClD,KAAK,EAAE,MAAM,CAAA;CACd;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,cAAc,6EAQhB,CAAA;AAEX,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAA;AAE1D,6DAA6D;AAC7D,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,YAAY,CAEpE;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,gBAAgB,8CAA8D,CAAA;AAE3F,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAA;AAE9D;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,cAAc,CAExE;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,iBAAiB;IAChC,4DAA4D;IAC5D,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,0CAA0C;IAC1C,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,6CAA6C;IAC7C,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,kFAAkF;IAClF,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,0CAA0C;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,uBAAuB,sDAIzB,CAAA;AAEX,MAAM,MAAM,sBAAsB,GAAG,CAAC,OAAO,uBAAuB,CAAC,CAAC,MAAM,CAAC,CAAA;AAE7E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,IAAI,CAAC,iBAAiB,EAAE,MAAM,GAAG,QAAQ,GAAG,gBAAgB,CAAC,GAAG;IACxE,OAAO,CAAC,EAAE,KAAK,CAAA;CAChB,GACA,sBAAsB,CAexB;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,YAAY,CAAA;IAClB,YAAY,EAAE,MAAM,CAAA;IACpB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;;;;OAKG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB;;;;OAIG;IACH,MAAM,CAAC,EAAE,cAAc,CAAA;IACvB;;;;OAIG;IACH,OAAO,CAAC,EAAE,iBAAiB,CAAA;IAC3B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAClC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,kBAAkB,oFAQpB,CAAA;AAEX,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAA;AAEjE,gEAAgE;AAChE,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,eAAe,CAE1E;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAA;IACV,4EAA4E;IAC5E,IAAI,EAAE,MAAM,CAAA;IACZ,mEAAmE;IACnE,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,4DAA4D;IAC5D,YAAY,EAAE,MAAM,CAAA;IACpB,IAAI,CAAC,EAAE,eAAe,CAAA;IACtB,kFAAkF;IAClF,MAAM,CAAC,EAAE,cAAc,CAAA;IACvB;;;;;;;;;;;;;;;OAeG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;;;;;;;;;OAUG;IACH,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAClC;AAED,MAAM,MAAM,mBAAmB,GAAG,YAAY,GAAG,WAAW,GAAG,gBAAgB,CAAA;AAE/E,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,mBAAmB,CAAA;IACzB,MAAM,EAAE,wBAAwB,CAAA;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACnC;AAED;;;GAGG;AACH,eAAO,MAAM,uBAAuB,mCAAmD,CAAA;AAEvF,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,uBAAuB,CAAC,CAAC,MAAM,CAAC,CAAA;AAE3E,qEAAqE;AACrE,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,oBAAoB,CAEpF;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,8BAA8B,4FAQhC,CAAA;AAEX,MAAM,MAAM,0BAA0B,GAAG,CAAC,OAAO,8BAA8B,CAAC,CAAC,MAAM,CAAC,CAAA;AAExF,2EAA2E;AAC3E,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,OAAO,GACb,KAAK,IAAI,0BAA0B,CAKrC;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,0BAA0B,CAAA;IAChC,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,QAAQ,CAAC,EAAE,wBAAwB,CAAA;CACpC;AAED;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,oBAAoB,CAAA;IAC1B,iEAAiE;IACjE,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,sBAAsB,CAAA;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACnC;AAED,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAA;IACnC,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;IACrB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAAA;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,kFAAkF;IAClF,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IACjE,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACxC;AAED;;;;;;GAMG;AACH,MAAM,WAAW,0BAA0B;IACzC,yEAAyE;IACzE,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,QAAQ,CAAC,EAAE,kBAAkB,EAAE,CAAA;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,iBAAiB,CAAA;IACvB,eAAe,EAAE,iBAAiB,EAAE,CAAA;IACpC,kBAAkB,EAAE,wBAAwB,EAAE,CAAA;IAC9C,cAAc,EAAE,qBAAqB,CAAA;IACrC,SAAS,EAAE,iBAAiB,EAAE,CAAA;IAC9B,SAAS,EAAE,eAAe,EAAE,CAAA;IAC5B;;;;OAIG;IACH,YAAY,CAAC,EAAE,WAAW,EAAE,CAAA;IAC5B;;;OAGG;IACH,iBAAiB,CAAC,EAAE,gBAAgB,EAAE,CAAA;IACtC,WAAW,EAAE,uBAAuB,EAAE,CAAA;IACtC,0DAA0D;IAC1D,OAAO,CAAC,EAAE,0BAA0B,CAAA;IACpC,wEAAwE;IACxE,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACxC;AAED,MAAM,WAAW,iCAAiC;IAChD,YAAY,EAAE,MAAM,CAAA;IACpB,IAAI,CAAC,EAAE,oBAAoB,CAAA;CAC5B;AAED,MAAM,WAAW,4BAA4B;IAC3C,qEAAqE;IACrE,YAAY,EAAE,MAAM,CAAA;IACpB,IAAI,CAAC,EAAE,WAAW,CAAA;CACnB;AAED,MAAM,WAAW,iCAAiC;IAChD,YAAY,EAAE,MAAM,CAAA;IACpB,IAAI,CAAC,EAAE,WAAW,CAAA;CACnB;AAED,MAAM,WAAW,qBAAqB;IACpC,YAAY,EAAE,MAAM,CAAA;IACpB,IAAI,CAAC,EAAE,MAAM,GAAG,WAAW,CAAA;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,SAAS,CAAC,MAAM,GAAG,qBAAqB,CAAC,EAAE,CAAA;CACrD;AAED,MAAM,WAAW,8BAA8B;IAC7C,YAAY,EAAE,MAAM,CAAA;IACpB,IAAI,CAAC,EAAE,WAAW,CAAA;CACnB"}
|
package/dist/observation.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"observation.js","sourceRoot":"","sources":["../src/observation.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"observation.js","sourceRoot":"","sources":["../src/observation.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAyBH;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC;IAC1C,OAAO;IACP,YAAY;IACZ,OAAO;IACP,MAAM;IACN,MAAM;IACN,OAAO;IACP,OAAO;CACC,CAAC,CAAA;AAIX,6DAA6D;AAC7D,MAAM,UAAU,cAAc,CAAC,KAAc;IAC3C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAK,cAAoC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;AAC3F,CAAC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,SAAS,EAAE,UAAU,CAAU,CAAC,CAAA;AAI3F;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAK,gBAAsC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;AAC7F,CAAC;AA4BD;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,MAAM,CAAC,MAAM,CAAC;IACnD,eAAe;IACf,aAAa;IACb,SAAS;CACD,CAAC,CAAA;AAIX;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AACH,MAAM,UAAU,sBAAsB,CACpC,QAEC;IAED,4EAA4E;IAC5E,mEAAmE;IACnE,IAAI,KAAK,CAAC,OAAO,CAAE,QAAkC,CAAC,OAAO,CAAC;QAAE,OAAO,SAAS,CAAA;IAEhF,QAAQ,QAAQ,CAAC,MAAM,EAAE,CAAC;QACxB,KAAK,UAAU;YACb,OAAO,eAAe,CAAA;QACxB,KAAK,SAAS;YACZ,OAAO,aAAa,CAAA;QACtB,KAAK,UAAU;YACb,OAAO,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,eAAe,CAAA;QAClE;YACE,OAAO,SAAS,CAAA;IACpB,CAAC;AACH,CAAC;AA6BD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,CAAC;IAC9C,SAAS;IACT,aAAa;IACb,OAAO;IACP,SAAS;IACT,QAAQ;IACR,MAAM;IACN,OAAO;CACC,CAAC,CAAA;AAIX,gEAAgE;AAChE,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAK,kBAAwC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;AAC/F,CAAC;AAsED;;;GAGG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,SAAS,CAAU,CAAC,CAAA;AAIvF,qEAAqE;AACrE,MAAM,UAAU,sBAAsB,CAAC,KAAc;IACnD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAK,uBAA6C,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;AACpG,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,MAAM,CAAC,MAAM,CAAC;IAC1D,SAAS;IACT,aAAa;IACb,OAAO;IACP,QAAQ;IACR,MAAM;IACN,cAAc;IACd,UAAU;CACF,CAAC,CAAA;AAIX,2EAA2E;AAC3E,MAAM,UAAU,4BAA4B,CAC1C,KAAc;IAEd,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACxB,8BAAoD,CAAC,QAAQ,CAAC,KAAK,CAAC,CACtE,CAAA;AACH,CAAC"}
|
|
@@ -10,6 +10,12 @@
|
|
|
10
10
|
* and validates what it is handed so the app and forgewright never fork the
|
|
11
11
|
* read-side.
|
|
12
12
|
*
|
|
13
|
+
* OWNERSHIP (jgwill/Miadi#592, packages/CLAUDE.md): this module is the *declaration*
|
|
14
|
+
* of the chronicle→book edge. `@miadi/inquiry-weave` owns its *enumeration* and never
|
|
15
|
+
* authors a story; `packages/passages` owns the *derivation* of a book from a vessel,
|
|
16
|
+
* as a read-only projection of the chronicle; `app/chronicle` renders and serves.
|
|
17
|
+
* No new package is created for this edge.
|
|
18
|
+
*
|
|
13
19
|
* A story maps to an episode by the episode number parsed from its name
|
|
14
20
|
* (`Episode_040___…`, `Episode-044-…`). Stories with no parseable episode number
|
|
15
21
|
* (a pilot title like `The_Room_Lent_It_Ears.html`, or `dummy1.html`) are still
|
|
@@ -64,6 +70,14 @@ export interface ObserveStoryLibraryOptions {
|
|
|
64
70
|
export declare function observeStoryLibrary(inputs: ReadonlyArray<string | StoryLibraryEntryInput>, options?: ObserveStoryLibraryOptions): StoryLibraryManifest;
|
|
65
71
|
/** Index the library's stories by the episode number they declare. */
|
|
66
72
|
export declare function indexStoriesByEpisode(manifest: StoryLibraryManifest): Map<number, StoryManifestEntry[]>;
|
|
73
|
+
export interface LinkStoryFormsOptions {
|
|
74
|
+
/**
|
|
75
|
+
* Sink for link-time diagnostics (`story-library.episode-link-ambiguous`).
|
|
76
|
+
* Linking stays fail-open either way — the shelf is a garnish, never a gate —
|
|
77
|
+
* so an ambiguity refuses the link and reports; it never throws.
|
|
78
|
+
*/
|
|
79
|
+
diagnostics?: CompatibilityDiagnostic[];
|
|
80
|
+
}
|
|
67
81
|
/**
|
|
68
82
|
* Non-destructively attach each episode's book form(s) to its chronicle entry.
|
|
69
83
|
*
|
|
@@ -71,6 +85,13 @@ export declare function indexStoriesByEpisode(manifest: StoryLibraryManifest): M
|
|
|
71
85
|
* published story gains a `stories` array — the seam the `/chronicle` surface
|
|
72
86
|
* uses to link an episode to its interactive-book form. Episodes without a
|
|
73
87
|
* published story are returned unchanged (no `stories` field).
|
|
88
|
+
*
|
|
89
|
+
* Episode numbers collide in the chronicle — the folder name is the true key
|
|
90
|
+
* (011, 016, 043, 078, 083, 098, 120 each name two folders today). A story
|
|
91
|
+
* number owned by MORE THAN ONE episode folder is therefore ambiguous: the
|
|
92
|
+
* story is linked to NONE of them — never a silent first match — and a
|
|
93
|
+
* `story-library.episode-link-ambiguous` warning naming every candidate folder
|
|
94
|
+
* is pushed to `options.diagnostics` when a sink is supplied.
|
|
74
95
|
*/
|
|
75
|
-
export declare function linkStoryForms(episodes: readonly EpisodeManifestEntry[], library: StoryLibraryManifest): EpisodeManifestEntry[];
|
|
96
|
+
export declare function linkStoryForms(episodes: readonly EpisodeManifestEntry[], library: StoryLibraryManifest, options?: LinkStoryFormsOptions): EpisodeManifestEntry[];
|
|
76
97
|
//# sourceMappingURL=story-library-manifest.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"story-library-manifest.d.ts","sourceRoot":"","sources":["../src/story-library-manifest.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"story-library-manifest.d.ts","sourceRoot":"","sources":["../src/story-library-manifest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAA;AAEzF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAEnE,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,WAAW,GAAG,OAAO,CAAA;AAEtD,kEAAkE;AAClE,MAAM,WAAW,kBAAkB;IACjC,iDAAiD;IACjD,IAAI,EAAE,MAAM,CAAA;IACZ,iCAAiC;IACjC,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,SAAS,CAAA;IACf,yCAAyC;IACzC,YAAY,EAAE,MAAM,CAAA;IACpB,yDAAyD;IACzD,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,6EAA6E;IAC7E,kBAAkB,EAAE,wBAAwB,EAAE,CAAA;IAC9C,6CAA6C;IAC7C,KAAK,EAAE,MAAM,CAAA;CACd;AAED,uEAAuE;AACvE,MAAM,WAAW,sBAAsB;IACrC,8EAA8E;IAC9E,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,GAAG,WAAW,CAAA;CAC5B;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,eAAe,CAAA;IACrB,6EAA6E;IAC7E,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,OAAO,EAAE,kBAAkB,EAAE,CAAA;IAC7B,WAAW,EAAE,uBAAuB,EAAE,CAAA;CACvC;AAED,MAAM,WAAW,0BAA0B;IACzC,iEAAiE;IACjE,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,8EAA8E;IAC9E,GAAG,CAAC,EAAE,MAAM,IAAI,CAAA;CACjB;AAgCD;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,aAAa,CAAC,MAAM,GAAG,sBAAsB,CAAC,EACtD,OAAO,GAAE,0BAA+B,GACvC,oBAAoB,CA6DtB;AAED,sEAAsE;AACtE,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,oBAAoB,GAC7B,GAAG,CAAC,MAAM,EAAE,kBAAkB,EAAE,CAAC,CASnC;AAED,MAAM,WAAW,qBAAqB;IACpC;;;;OAIG;IACH,WAAW,CAAC,EAAE,uBAAuB,EAAE,CAAA;CACxC;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,SAAS,oBAAoB,EAAE,EACzC,OAAO,EAAE,oBAAoB,EAC7B,OAAO,GAAE,qBAA0B,GAClC,oBAAoB,EAAE,CAkCxB"}
|
|
@@ -10,6 +10,12 @@
|
|
|
10
10
|
* and validates what it is handed so the app and forgewright never fork the
|
|
11
11
|
* read-side.
|
|
12
12
|
*
|
|
13
|
+
* OWNERSHIP (jgwill/Miadi#592, packages/CLAUDE.md): this module is the *declaration*
|
|
14
|
+
* of the chronicle→book edge. `@miadi/inquiry-weave` owns its *enumeration* and never
|
|
15
|
+
* authors a story; `packages/passages` owns the *derivation* of a book from a vessel,
|
|
16
|
+
* as a read-only projection of the chronicle; `app/chronicle` renders and serves.
|
|
17
|
+
* No new package is created for this edge.
|
|
18
|
+
*
|
|
13
19
|
* A story maps to an episode by the episode number parsed from its name
|
|
14
20
|
* (`Episode_040___…`, `Episode-044-…`). Stories with no parseable episode number
|
|
15
21
|
* (a pilot title like `The_Room_Lent_It_Ears.html`, or `dummy1.html`) are still
|
|
@@ -121,11 +127,43 @@ export function indexStoriesByEpisode(manifest) {
|
|
|
121
127
|
* published story gains a `stories` array — the seam the `/chronicle` surface
|
|
122
128
|
* uses to link an episode to its interactive-book form. Episodes without a
|
|
123
129
|
* published story are returned unchanged (no `stories` field).
|
|
130
|
+
*
|
|
131
|
+
* Episode numbers collide in the chronicle — the folder name is the true key
|
|
132
|
+
* (011, 016, 043, 078, 083, 098, 120 each name two folders today). A story
|
|
133
|
+
* number owned by MORE THAN ONE episode folder is therefore ambiguous: the
|
|
134
|
+
* story is linked to NONE of them — never a silent first match — and a
|
|
135
|
+
* `story-library.episode-link-ambiguous` warning naming every candidate folder
|
|
136
|
+
* is pushed to `options.diagnostics` when a sink is supplied.
|
|
124
137
|
*/
|
|
125
|
-
export function linkStoryForms(episodes, library) {
|
|
138
|
+
export function linkStoryForms(episodes, library, options = {}) {
|
|
126
139
|
const byEpisode = indexStoriesByEpisode(library);
|
|
127
|
-
|
|
140
|
+
const foldersByNumber = new Map();
|
|
141
|
+
for (const episode of episodes) {
|
|
128
142
|
if (episode.number === undefined)
|
|
143
|
+
continue;
|
|
144
|
+
const folders = foldersByNumber.get(episode.number) ?? [];
|
|
145
|
+
folders.push(episode.name);
|
|
146
|
+
foldersByNumber.set(episode.number, folders);
|
|
147
|
+
}
|
|
148
|
+
const ambiguous = new Set();
|
|
149
|
+
for (const [number, folders] of foldersByNumber) {
|
|
150
|
+
const stories = byEpisode.get(number);
|
|
151
|
+
if (folders.length < 2 || !stories || stories.length === 0)
|
|
152
|
+
continue;
|
|
153
|
+
ambiguous.add(number);
|
|
154
|
+
if (options.diagnostics) {
|
|
155
|
+
for (const story of stories) {
|
|
156
|
+
options.diagnostics.push({
|
|
157
|
+
level: "warning",
|
|
158
|
+
code: "story-library.episode-link-ambiguous",
|
|
159
|
+
message: `story carries episode number ${number}, which ${folders.length} episode folders share (${folders.join(", ")}); the story is linked to none of them — the folder name is the key, and a first match would be silent`,
|
|
160
|
+
path: story.relativePath,
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
return episodes.map((episode) => {
|
|
166
|
+
if (episode.number === undefined || ambiguous.has(episode.number))
|
|
129
167
|
return episode;
|
|
130
168
|
const matched = byEpisode.get(episode.number);
|
|
131
169
|
if (!matched || matched.length === 0)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"story-library-manifest.js","sourceRoot":"","sources":["../src/story-library-manifest.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"story-library-manifest.js","sourceRoot":"","sources":["../src/story-library-manifest.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@miadi/episodic-memory-schema",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "TypeScript types and JSON Schema for episodic memory
|
|
3
|
+
"version": "0.9.0",
|
|
4
|
+
"description": "TypeScript types and JSON Schema for episodic memory — the durable session-to-session memory layer in the Miadi orchestration kit. Narrative layer is NCP-aligned; provenance layer is W3C PROV-DM and OAIS-informed.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"miadi",
|
|
7
7
|
"storyweaver",
|
|
@@ -40,16 +40,15 @@
|
|
|
40
40
|
"README.md",
|
|
41
41
|
"LICENSE"
|
|
42
42
|
],
|
|
43
|
-
"scripts": {
|
|
44
|
-
"build": "tsc",
|
|
45
|
-
"type-check": "tsc --noEmit",
|
|
46
|
-
"test": "npm run build && node --test test/*.test.mjs",
|
|
47
|
-
"prepublishOnly": "npm run build"
|
|
48
|
-
},
|
|
49
43
|
"devDependencies": {
|
|
50
44
|
"typescript": "^5.4.0"
|
|
51
45
|
},
|
|
52
46
|
"publishConfig": {
|
|
53
47
|
"access": "public"
|
|
48
|
+
},
|
|
49
|
+
"scripts": {
|
|
50
|
+
"build": "tsc",
|
|
51
|
+
"type-check": "tsc --noEmit",
|
|
52
|
+
"test": "npm run build && node --test test/*.test.mjs"
|
|
54
53
|
}
|
|
55
|
-
}
|
|
54
|
+
}
|