@miadi/inquiry-weave 0.6.9 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2024 Miadi
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Attention-node projection — make "what needs a human" visible on the wheel.
3
+ *
4
+ * Mirrors episode-node.ts: the vessel's `attention.json` stays authoritative;
5
+ * each item projects as ONE dedicated node (`attention:<episode>/<item-id>`),
6
+ * riding `knowledge` facing SOUTH — a decision ask is consent work. Per-item
7
+ * nodes are deliberate: medicine-wheel PATCH replaces the whole metadata
8
+ * object (storage-provider jsonl.ts `metadata: patch.metadata`, no merge), so
9
+ * items sharing a node would race every concurrent writer; one item, one
10
+ * writer, one node. forgewright's chronicle view is wheel-fed only, so this
11
+ * projection IS how attention reaches ilex.
12
+ *
13
+ * POST upserts by id on medicine-wheel ≥0.5.0, so registration preflights GET
14
+ * and UPDATES an existing node via PATCH instead of silently overwriting.
15
+ * Fail-open boundary exactly like registerEpisodeNode: network failure
16
+ * resolves to `pending`, never a throw — the file write upstream must never
17
+ * be lost to a wheel outage.
18
+ */
19
+ import type { AttentionItem } from "@miadi/episodic-memory-schema";
20
+ import { ATTENTION_SCHEMA_VERSION } from "@miadi/episodic-memory-schema";
21
+ export interface AttentionNodeRecord {
22
+ id: string;
23
+ type: "knowledge";
24
+ name: string;
25
+ description: string;
26
+ direction: "south";
27
+ metadata: {
28
+ contract: "miadi.artifact-ref.v1";
29
+ kind: "attention";
30
+ schema_version: typeof ATTENTION_SCHEMA_VERSION;
31
+ root: "MIADI_CHRONICLE_ROOT";
32
+ relative_path: string;
33
+ parent_id: string;
34
+ item_id: string;
35
+ state: "open" | "answered";
36
+ asked?: string;
37
+ unlocks?: string;
38
+ answer?: string;
39
+ answered_at?: string;
40
+ };
41
+ }
42
+ export type AttentionNodeState = "registered" | "updated" | "pending";
43
+ export interface AttentionNodeOutcome {
44
+ state: AttentionNodeState;
45
+ node_id: string;
46
+ /** True only when a read-back confirmed the stored state matches the item. */
47
+ verified: boolean;
48
+ error?: string;
49
+ }
50
+ export declare function attentionNodeId(episodeName: string, itemId: string): string;
51
+ export declare function projectAttentionNode(episodeName: string, item: AttentionItem): AttentionNodeRecord;
52
+ export interface RegisterAttentionNodeOptions {
53
+ fetchImpl?: typeof fetch;
54
+ }
55
+ /**
56
+ * Create or update the wheel node for one item, then read it back.
57
+ * `verified: true` means the wheel now SERVES the item's state — reached,
58
+ * not merely configured.
59
+ */
60
+ export declare function registerAttentionNode(mwUrl: string, episodeName: string, item: AttentionItem, options?: RegisterAttentionNodeOptions): Promise<AttentionNodeOutcome>;
61
+ export interface SyncAttentionOutcome {
62
+ outcomes: AttentionNodeOutcome[];
63
+ registered: number;
64
+ updated: number;
65
+ pending: number;
66
+ verified: number;
67
+ }
68
+ /** Project every item of one episode; never throws past its boundary. */
69
+ export declare function syncEpisodeAttention(mwUrl: string, episodeName: string, items: readonly AttentionItem[], options?: RegisterAttentionNodeOptions): Promise<SyncAttentionOutcome>;
70
+ //# sourceMappingURL=attention-node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attention-node.d.ts","sourceRoot":"","sources":["../src/attention-node.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAA;AAClE,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAA;AAExE,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,WAAW,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,OAAO,CAAA;IAClB,QAAQ,EAAE;QACR,QAAQ,EAAE,uBAAuB,CAAA;QACjC,IAAI,EAAE,WAAW,CAAA;QACjB,cAAc,EAAE,OAAO,wBAAwB,CAAA;QAC/C,IAAI,EAAE,sBAAsB,CAAA;QAC5B,aAAa,EAAE,MAAM,CAAA;QACrB,SAAS,EAAE,MAAM,CAAA;QACjB,OAAO,EAAE,MAAM,CAAA;QACf,KAAK,EAAE,MAAM,GAAG,UAAU,CAAA;QAC1B,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,WAAW,CAAC,EAAE,MAAM,CAAA;KACrB,CAAA;CACF;AAED,MAAM,MAAM,kBAAkB,GAAG,YAAY,GAAG,SAAS,GAAG,SAAS,CAAA;AAErE,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,kBAAkB,CAAA;IACzB,OAAO,EAAE,MAAM,CAAA;IACf,8EAA8E;IAC9E,QAAQ,EAAE,OAAO,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAE3E;AAED,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,aAAa,GAClB,mBAAmB,CAuBrB;AAED,MAAM,WAAW,4BAA4B;IAC3C,SAAS,CAAC,EAAE,OAAO,KAAK,CAAA;CACzB;AAgBD;;;;GAIG;AACH,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,aAAa,EACnB,OAAO,GAAE,4BAAiC,GACzC,OAAO,CAAC,oBAAoB,CAAC,CAwG/B;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,oBAAoB,EAAE,CAAA;IAChC,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,yEAAyE;AACzE,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,SAAS,aAAa,EAAE,EAC/B,OAAO,GAAE,4BAAiC,GACzC,OAAO,CAAC,oBAAoB,CAAC,CAY/B"}
@@ -0,0 +1,194 @@
1
+ /**
2
+ * Attention-node projection — make "what needs a human" visible on the wheel.
3
+ *
4
+ * Mirrors episode-node.ts: the vessel's `attention.json` stays authoritative;
5
+ * each item projects as ONE dedicated node (`attention:<episode>/<item-id>`),
6
+ * riding `knowledge` facing SOUTH — a decision ask is consent work. Per-item
7
+ * nodes are deliberate: medicine-wheel PATCH replaces the whole metadata
8
+ * object (storage-provider jsonl.ts `metadata: patch.metadata`, no merge), so
9
+ * items sharing a node would race every concurrent writer; one item, one
10
+ * writer, one node. forgewright's chronicle view is wheel-fed only, so this
11
+ * projection IS how attention reaches ilex.
12
+ *
13
+ * POST upserts by id on medicine-wheel ≥0.5.0, so registration preflights GET
14
+ * and UPDATES an existing node via PATCH instead of silently overwriting.
15
+ * Fail-open boundary exactly like registerEpisodeNode: network failure
16
+ * resolves to `pending`, never a throw — the file write upstream must never
17
+ * be lost to a wheel outage.
18
+ */
19
+ import { ATTENTION_SCHEMA_VERSION } from "@miadi/episodic-memory-schema";
20
+ export function attentionNodeId(episodeName, itemId) {
21
+ return `attention:${episodeName}/${itemId}`;
22
+ }
23
+ export function projectAttentionNode(episodeName, item) {
24
+ const metadata = {
25
+ contract: "miadi.artifact-ref.v1",
26
+ kind: "attention",
27
+ schema_version: ATTENTION_SCHEMA_VERSION,
28
+ root: "MIADI_CHRONICLE_ROOT",
29
+ relative_path: `${episodeName}/attention.json`,
30
+ parent_id: `chronicle:${episodeName}`,
31
+ item_id: item.id,
32
+ state: item.state,
33
+ };
34
+ if (item.asked)
35
+ metadata.asked = item.asked;
36
+ if (item.unlocks)
37
+ metadata.unlocks = item.unlocks;
38
+ if (item.answer)
39
+ metadata.answer = item.answer;
40
+ if (item.answered_at)
41
+ metadata.answered_at = item.answered_at;
42
+ return {
43
+ id: attentionNodeId(episodeName, item.id),
44
+ type: "knowledge",
45
+ name: item.question,
46
+ description: item.unlocks ? `unlocks: ${item.unlocks}` : "",
47
+ direction: "south",
48
+ metadata,
49
+ };
50
+ }
51
+ function describeFailure(error) {
52
+ return error instanceof Error ? error.message : String(error);
53
+ }
54
+ async function readErrorBody(response) {
55
+ try {
56
+ const body = (await response.json());
57
+ if (body && typeof body.error === "string")
58
+ return body.error;
59
+ }
60
+ catch {
61
+ // Non-JSON body — the status line is all we can report.
62
+ }
63
+ return "";
64
+ }
65
+ /**
66
+ * Create or update the wheel node for one item, then read it back.
67
+ * `verified: true` means the wheel now SERVES the item's state — reached,
68
+ * not merely configured.
69
+ */
70
+ export async function registerAttentionNode(mwUrl, episodeName, item, options = {}) {
71
+ const fetchImpl = options.fetchImpl ?? fetch;
72
+ const base = mwUrl.replace(/\/+$/, "");
73
+ const record = projectAttentionNode(episodeName, item);
74
+ const node_id = record.id;
75
+ const nodeUrl = `${base}/api/nodes/${encodeURIComponent(node_id)}`;
76
+ let existing;
77
+ try {
78
+ existing = await fetchImpl(nodeUrl);
79
+ }
80
+ catch (error) {
81
+ return {
82
+ state: "pending",
83
+ node_id,
84
+ verified: false,
85
+ error: `medicine-wheel unreachable at ${base}: ${describeFailure(error)}`,
86
+ };
87
+ }
88
+ let state;
89
+ if (existing.ok) {
90
+ // Full-metadata PATCH by design: the store replaces, so we always send the
91
+ // complete projection — never a partial that would erase sibling fields.
92
+ let patched;
93
+ try {
94
+ patched = await fetchImpl(nodeUrl, {
95
+ method: "PATCH",
96
+ headers: { "content-type": "application/json" },
97
+ body: JSON.stringify({
98
+ name: record.name,
99
+ description: record.description,
100
+ metadata: record.metadata,
101
+ }),
102
+ });
103
+ }
104
+ catch (error) {
105
+ return {
106
+ state: "pending",
107
+ node_id,
108
+ verified: false,
109
+ error: `PATCH ${nodeUrl}: ${describeFailure(error)}`,
110
+ };
111
+ }
112
+ if (!patched.ok) {
113
+ const detail = await readErrorBody(patched);
114
+ return {
115
+ state: "pending",
116
+ node_id,
117
+ verified: false,
118
+ error: `PATCH ${nodeUrl}: HTTP ${patched.status}${detail ? ` — ${detail}` : ""}`,
119
+ };
120
+ }
121
+ state = "updated";
122
+ }
123
+ else if (existing.status === 404) {
124
+ let created;
125
+ try {
126
+ created = await fetchImpl(`${base}/api/nodes`, {
127
+ method: "POST",
128
+ headers: { "content-type": "application/json" },
129
+ body: JSON.stringify(record),
130
+ });
131
+ }
132
+ catch (error) {
133
+ return {
134
+ state: "pending",
135
+ node_id,
136
+ verified: false,
137
+ error: `medicine-wheel unreachable at ${base}: ${describeFailure(error)}`,
138
+ };
139
+ }
140
+ if (!created.ok) {
141
+ const detail = await readErrorBody(created);
142
+ return {
143
+ state: "pending",
144
+ node_id,
145
+ verified: false,
146
+ error: `POST ${base}/api/nodes: HTTP ${created.status}${detail ? ` — ${detail}` : ""}`,
147
+ };
148
+ }
149
+ state = "registered";
150
+ }
151
+ else {
152
+ const detail = await readErrorBody(existing);
153
+ return {
154
+ state: "pending",
155
+ node_id,
156
+ verified: false,
157
+ error: `GET ${nodeUrl}: HTTP ${existing.status}${detail ? ` — ${detail}` : ""}`,
158
+ };
159
+ }
160
+ // The verify leg — the boot-law applied to the write path.
161
+ try {
162
+ const back = await fetchImpl(nodeUrl);
163
+ if (!back.ok)
164
+ return { state, node_id, verified: false, error: `verify GET: HTTP ${back.status}` };
165
+ const body = (await back.json());
166
+ const served = body.node?.metadata?.state ?? body.metadata?.state;
167
+ if (served === item.state)
168
+ return { state, node_id, verified: true };
169
+ return {
170
+ state,
171
+ node_id,
172
+ verified: false,
173
+ error: `verify: wheel serves state=${String(served)}, item is ${item.state}`,
174
+ };
175
+ }
176
+ catch (error) {
177
+ return { state, node_id, verified: false, error: `verify GET: ${describeFailure(error)}` };
178
+ }
179
+ }
180
+ /** Project every item of one episode; never throws past its boundary. */
181
+ export async function syncEpisodeAttention(mwUrl, episodeName, items, options = {}) {
182
+ const outcomes = [];
183
+ for (const item of items) {
184
+ outcomes.push(await registerAttentionNode(mwUrl, episodeName, item, options));
185
+ }
186
+ return {
187
+ outcomes,
188
+ registered: outcomes.filter((o) => o.state === "registered").length,
189
+ updated: outcomes.filter((o) => o.state === "updated").length,
190
+ pending: outcomes.filter((o) => o.state === "pending").length,
191
+ verified: outcomes.filter((o) => o.verified).length,
192
+ };
193
+ }
194
+ //# sourceMappingURL=attention-node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attention-node.js","sourceRoot":"","sources":["../src/attention-node.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"episode.d.ts","sourceRoot":"","sources":["../src/episode.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAOH,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;IACX,yEAAyE;IACzE,IAAI,EAAE,MAAM,CAAA;CACb;AAED,qBAAa,sBAAuB,SAAQ,KAAK;CAAG;AAEpD,qBAAa,qBAAsB,SAAQ,sBAAsB;aAG7C,UAAU,EAAE,MAAM,EAAE;gBADpC,GAAG,EAAE,MAAM,EACK,UAAU,EAAE,MAAM,EAAE;CAOvC;AAKD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC,eAAe,EAAE,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC,CAMhG;AAoCD;;GAEG;AACH,wBAAsB,cAAc,CAClC,aAAa,EAAE,MAAM,EACrB,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,eAAe,CAAC,CA0B1B;AAED,eAAO,MAAM,yBAAyB,iBAAiB,CAAA;AAEvD,uFAAuF;AACvF,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAE9D;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAE9D;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAQhE;AAED,kFAAkF;AAClF,wBAAsB,qBAAqB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAOlF;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AAED,4FAA4F;AAC5F,wBAAgB,cAAc,CAAC,IAAI,GAAE,IAAiB,GAAG,MAAM,CAI9D;AAED,wBAAsB,eAAe,CACnC,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,eAAe,CAAC,CA0B1B"}
1
+ {"version":3,"file":"episode.d.ts","sourceRoot":"","sources":["../src/episode.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAOH,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;IACX,yEAAyE;IACzE,IAAI,EAAE,MAAM,CAAA;CACb;AAED,qBAAa,sBAAuB,SAAQ,KAAK;CAAG;AAEpD,qBAAa,qBAAsB,SAAQ,sBAAsB;aAG7C,UAAU,EAAE,MAAM,EAAE;gBADpC,GAAG,EAAE,MAAM,EACK,UAAU,EAAE,MAAM,EAAE;CAOvC;AAKD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC,eAAe,EAAE,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC,CAMhG;AAoCD;;GAEG;AACH,wBAAsB,cAAc,CAClC,aAAa,EAAE,MAAM,EACrB,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,eAAe,CAAC,CAkC1B;AAED,eAAO,MAAM,yBAAyB,iBAAiB,CAAA;AAEvD,uFAAuF;AACvF,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAE9D;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAE9D;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAQhE;AAED,kFAAkF;AAClF,wBAAsB,qBAAqB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAOlF;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AAED,4FAA4F;AAC5F,wBAAgB,cAAc,CAAC,IAAI,GAAE,IAAiB,GAAG,MAAM,CAI9D;AAED,wBAAsB,eAAe,CACnC,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,eAAe,CAAC,CA0B1B"}
package/dist/episode.js CHANGED
@@ -71,15 +71,23 @@ async function listEpisodeDirs(chronicleRoot) {
71
71
  */
72
72
  export async function resolveEpisode(chronicleRoot, ref) {
73
73
  const trimmed = ref.trim();
74
- if (/^\d+$/.test(trimmed)) {
75
- const wanted = Number(trimmed);
74
+ // `ep<NNN>` is the form the episode-addressing spec owns, and the one
75
+ // `voice_resolve_episode` documents itself as accepting. This resolver took a bare
76
+ // number or a path and rejected it outright — so an agent holding the canonical
77
+ // address got `episode not found` from the verb and fell back to hand-rolling the
78
+ // git and curl the verb exists to replace. Measured 2026-08-14 (ep325):
79
+ // `status --episode ep325` failed while `--episode 325` resolved the same vessel.
80
+ // Two resolvers in one platform must not disagree about the address.
81
+ const numeric = /^ep(\d+)$/i.exec(trimmed)?.[1] ?? trimmed;
82
+ if (/^\d+$/.test(numeric)) {
83
+ const wanted = Number(numeric);
76
84
  const matches = (await listEpisodeDirs(chronicleRoot)).filter((name) => parseEpisodeName(name).number === wanted);
77
85
  if (matches.length === 1) {
78
86
  return identityFromDir(chronicleRoot, join(chronicleRoot, matches[0]));
79
87
  }
80
88
  if (matches.length > 1)
81
89
  throw new AmbiguousEpisodeError(trimmed, matches.sort());
82
- throw new EpisodeResolutionError(`no episode numbered ${trimmed} under ${chronicleRoot}`);
90
+ throw new EpisodeResolutionError(`no episode numbered ${numeric} under ${chronicleRoot}`);
83
91
  }
84
92
  const candidates = [
85
93
  isAbsolute(trimmed) ? trimmed : undefined,
@@ -1 +1 @@
1
- {"version":3,"file":"episode.js","sourceRoot":"","sources":["../src/episode.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"episode.js","sourceRoot":"","sources":["../src/episode.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -11,6 +11,7 @@ export * from "./lineage.js";
11
11
  export * from "./status.js";
12
12
  export * from "./register.js";
13
13
  export * from "./episode-node.js";
14
+ export * from "./attention-node.js";
14
15
  export * from "./catalog.js";
15
16
  export * from "./story-library.js";
16
17
  export { runCli, type RunCliOptions, type CliStreams } from "./cli.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,YAAY,CAAA;AAC1B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA;AAC7B,cAAc,mBAAmB,CAAA;AACjC,cAAc,cAAc,CAAA;AAC5B,cAAc,oBAAoB,CAAA;AAClC,OAAO,EAAE,MAAM,EAAE,KAAK,aAAa,EAAE,KAAK,UAAU,EAAE,MAAM,UAAU,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,YAAY,CAAA;AAC1B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA;AAC7B,cAAc,mBAAmB,CAAA;AACjC,cAAc,qBAAqB,CAAA;AACnC,cAAc,cAAc,CAAA;AAC5B,cAAc,oBAAoB,CAAA;AAClC,OAAO,EAAE,MAAM,EAAE,KAAK,aAAa,EAAE,KAAK,UAAU,EAAE,MAAM,UAAU,CAAA"}
package/dist/index.js CHANGED
@@ -11,6 +11,7 @@ export * from "./lineage.js";
11
11
  export * from "./status.js";
12
12
  export * from "./register.js";
13
13
  export * from "./episode-node.js";
14
+ export * from "./attention-node.js";
14
15
  export * from "./catalog.js";
15
16
  export * from "./story-library.js";
16
17
  export { runCli } from "./cli.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,YAAY,CAAA;AAC1B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA;AAC7B,cAAc,mBAAmB,CAAA;AACjC,cAAc,cAAc,CAAA;AAC5B,cAAc,oBAAoB,CAAA;AAClC,OAAO,EAAE,MAAM,EAAuC,MAAM,UAAU,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,YAAY,CAAA;AAC1B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA;AAC7B,cAAc,mBAAmB,CAAA;AACjC,cAAc,qBAAqB,CAAA;AACnC,cAAc,cAAc,CAAA;AAC5B,cAAc,oBAAoB,CAAA;AAClC,OAAO,EAAE,MAAM,EAAuC,MAAM,UAAU,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@miadi/inquiry-weave",
3
- "version": "0.6.9",
3
+ "version": "0.7.0",
4
4
  "description": "Relate and sync IAIP inquiry artefacts, their GitHub issues, and miadi-chronicle episodes. Creates vessels and relations only — never inquiry content.",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -25,14 +25,9 @@
25
25
  "README.md",
26
26
  "rispecs"
27
27
  ],
28
- "scripts": {
29
- "build": "../../node_modules/.bin/tsc -p tsconfig.build.json",
30
- "test": "npm run build && node --test test/*.test.mjs",
31
- "prepublishOnly": "npm run build"
32
- },
33
28
  "dependencies": {
34
- "@miadi/episodic-memory-schema": "^0.5.1 || ^0.6.0 || ^0.7.0",
35
- "yaml": "^2.5.0"
29
+ "yaml": "^2.5.0",
30
+ "@miadi/episodic-memory-schema": "^0.8.0"
36
31
  },
37
32
  "devDependencies": {
38
33
  "typescript": "^5.4.0"
@@ -50,5 +45,9 @@
50
45
  "url": "git+https://github.com/jgwill/Miadi.git",
51
46
  "directory": "packages/inquiry-weave"
52
47
  },
53
- "license": "MIT"
54
- }
48
+ "license": "MIT",
49
+ "scripts": {
50
+ "build": "../../node_modules/.bin/tsc -p tsconfig.build.json",
51
+ "test": "npm run build && node --test test/*.test.mjs"
52
+ }
53
+ }