@miadi/inquiry-weave 0.16.6 → 0.17.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/artefact-dsl.d.ts +58 -0
- package/dist/artefact-dsl.d.ts.map +1 -0
- package/dist/artefact-dsl.js +129 -0
- package/dist/artefact-dsl.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/mcp-server.js +162 -1
- package/dist/mcp-server.js.map +1 -1
- package/dist/mint.d.ts +199 -1
- package/dist/mint.d.ts.map +1 -1
- package/dist/mint.js +451 -0
- package/dist/mint.js.map +1 -1
- package/dist/notebook.d.ts +88 -0
- package/dist/notebook.d.ts.map +1 -0
- package/dist/notebook.js +258 -0
- package/dist/notebook.js.map +1 -0
- package/dist/prototype.d.ts +90 -0
- package/dist/prototype.d.ts.map +1 -0
- package/dist/prototype.js +286 -0
- package/dist/prototype.js.map +1 -0
- package/dist/references.d.ts +2 -0
- package/dist/references.d.ts.map +1 -1
- package/dist/references.js +2 -0
- package/dist/references.js.map +1 -1
- package/dist/rise-dsl.d.ts +44 -0
- package/dist/rise-dsl.d.ts.map +1 -0
- package/dist/rise-dsl.js +99 -0
- package/dist/rise-dsl.js.map +1 -0
- package/dist/rise-workspaces.d.ts +34 -0
- package/dist/rise-workspaces.d.ts.map +1 -0
- package/dist/rise-workspaces.js +73 -0
- package/dist/rise-workspaces.js.map +1 -0
- package/dist/rispec.d.ts +72 -0
- package/dist/rispec.d.ts.map +1 -0
- package/dist/rispec.js +227 -0
- package/dist/rispec.js.map +1 -0
- package/dist/text-references.d.ts +1 -1
- package/dist/text-references.d.ts.map +1 -1
- package/dist/text-references.js +18 -2
- package/dist/text-references.js.map +1 -1
- package/dist/tracing.d.ts +95 -0
- package/dist/tracing.d.ts.map +1 -0
- package/dist/tracing.js +302 -0
- package/dist/tracing.js.map +1 -0
- package/package.json +2 -2
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The tracing seam — a trace, prompt, session, dataset or score configuration
|
|
3
|
+
* entering an episode, in the shape the review (jgwill/Miadi#630) and
|
|
4
|
+
* foundation (#713) seams set: one reusable `tracing:<domain>/<resource>/<id>`
|
|
5
|
+
* node on the wheel (kind `tracing_resource`, the provider in its metadata),
|
|
6
|
+
* one episode→resource edge whose relationship type names what the episode
|
|
7
|
+
* does with it, and an entry in `episode.yaml`'s `tracing:` list.
|
|
8
|
+
*
|
|
9
|
+
* The manifest and the node name the domain and the resource, never a key or
|
|
10
|
+
* a base URL. The provider's own page for the resource (`ui_url`) may be kept
|
|
11
|
+
* on the node and is handed out by the door to a viewer who may edit the
|
|
12
|
+
* episode, never written in `episode.yaml`. Rules kept from the other seams:
|
|
13
|
+
* the manifest entry is written once and never overwritten, one ordered node
|
|
14
|
+
* pair is one edge, and the wheel projection never throws.
|
|
15
|
+
* Ref: jgwill/Miadi#769 (A3), jgwill/miadi-orchestration-kit#80 (C1, D7).
|
|
16
|
+
*/
|
|
17
|
+
import { defaultTracingRelation, type EpisodeTracingEntry, type TracingRef } from "@miadi/episodic-memory-schema";
|
|
18
|
+
export type TracingErrorCode = "invalid_tracing" | "tracing_manifest_conflict";
|
|
19
|
+
export declare class TracingError extends Error {
|
|
20
|
+
readonly code: TracingErrorCode;
|
|
21
|
+
constructor(code: TracingErrorCode, message: string);
|
|
22
|
+
}
|
|
23
|
+
/** The provider the Factory traces with, named once at setup. Langfuse first. */
|
|
24
|
+
export declare function tracingProviderName(env?: NodeJS.ProcessEnv): string;
|
|
25
|
+
/**
|
|
26
|
+
* The resource an input names: a `miadi-tracing:` reference, or the three
|
|
27
|
+
* fields. A reference wins when both are given and agree; they must agree.
|
|
28
|
+
*/
|
|
29
|
+
export declare function requireTracingRef(input: {
|
|
30
|
+
reference?: unknown;
|
|
31
|
+
domain?: unknown;
|
|
32
|
+
resource?: unknown;
|
|
33
|
+
id?: unknown;
|
|
34
|
+
version?: unknown;
|
|
35
|
+
}): TracingRef;
|
|
36
|
+
/** The provider's page for the resource, when given: https only, kept off the manifest. */
|
|
37
|
+
export declare function optionalUiUrl(raw: unknown): string | undefined;
|
|
38
|
+
export interface UpsertEpisodeTracingResult {
|
|
39
|
+
entry: EpisodeTracingEntry;
|
|
40
|
+
created: boolean;
|
|
41
|
+
filled: string[];
|
|
42
|
+
wrote: boolean;
|
|
43
|
+
dryRun: boolean;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Add a resource to `episode.yaml`'s `tracing:` list, or fill the keys an
|
|
47
|
+
* existing entry lacks. Comments, key order and every other field survive.
|
|
48
|
+
* Refuses a `tracing` key that is not a list.
|
|
49
|
+
*/
|
|
50
|
+
export declare function upsertEpisodeTracing(input: {
|
|
51
|
+
episodeYamlPath: string;
|
|
52
|
+
entry: EpisodeTracingEntry;
|
|
53
|
+
dryRun?: boolean;
|
|
54
|
+
}): Promise<UpsertEpisodeTracingResult>;
|
|
55
|
+
export type TracingProjectionState = "created" | "refreshed" | "already-present" | "skipped" | "pending";
|
|
56
|
+
export interface TracingProjection {
|
|
57
|
+
node: {
|
|
58
|
+
id: string;
|
|
59
|
+
state: TracingProjectionState;
|
|
60
|
+
error?: string;
|
|
61
|
+
};
|
|
62
|
+
edge: {
|
|
63
|
+
id: string;
|
|
64
|
+
state: TracingProjectionState;
|
|
65
|
+
relationship_type: string;
|
|
66
|
+
error?: string;
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
/** The relationship type of an episode→resource edge already on the wheel. Never throws. */
|
|
70
|
+
export declare function existingTracingRelation(mwUrl: string, episodeNodeId: string, nodeId: string, options?: {
|
|
71
|
+
fetchImpl?: typeof fetch;
|
|
72
|
+
}): Promise<string | undefined>;
|
|
73
|
+
/** The provider page a resource node holds, for a viewer the door has already checked. Never throws. */
|
|
74
|
+
export declare function tracingUiUrl(mwUrl: string, ref: TracingRef, options?: {
|
|
75
|
+
fetchImpl?: typeof fetch;
|
|
76
|
+
}): Promise<string | undefined>;
|
|
77
|
+
/**
|
|
78
|
+
* Put the resource node and the episode→resource edge on the wheel. A
|
|
79
|
+
* resource is a `knowledge` node. When the node exists, only a provider page
|
|
80
|
+
* it lacks is added, so a hand-written name and description stay.
|
|
81
|
+
*/
|
|
82
|
+
export declare function projectEpisodeTracing(mwUrl: string, input: {
|
|
83
|
+
episodeNodeId: string;
|
|
84
|
+
episodeFolder: string;
|
|
85
|
+
entry: EpisodeTracingEntry;
|
|
86
|
+
provider: string;
|
|
87
|
+
/** Kept in the node's metadata only. */
|
|
88
|
+
uiUrl?: string;
|
|
89
|
+
relation: string;
|
|
90
|
+
}, options?: {
|
|
91
|
+
fetchImpl?: typeof fetch;
|
|
92
|
+
dryRun?: boolean;
|
|
93
|
+
}): Promise<TracingProjection>;
|
|
94
|
+
export { defaultTracingRelation };
|
|
95
|
+
//# sourceMappingURL=tracing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tracing.d.ts","sourceRoot":"","sources":["../src/tracing.ts"],"names":[],"mappings":"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"}
|
package/dist/tracing.js
ADDED
|
@@ -0,0 +1,302 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The tracing seam — a trace, prompt, session, dataset or score configuration
|
|
3
|
+
* entering an episode, in the shape the review (jgwill/Miadi#630) and
|
|
4
|
+
* foundation (#713) seams set: one reusable `tracing:<domain>/<resource>/<id>`
|
|
5
|
+
* node on the wheel (kind `tracing_resource`, the provider in its metadata),
|
|
6
|
+
* one episode→resource edge whose relationship type names what the episode
|
|
7
|
+
* does with it, and an entry in `episode.yaml`'s `tracing:` list.
|
|
8
|
+
*
|
|
9
|
+
* The manifest and the node name the domain and the resource, never a key or
|
|
10
|
+
* a base URL. The provider's own page for the resource (`ui_url`) may be kept
|
|
11
|
+
* on the node and is handed out by the door to a viewer who may edit the
|
|
12
|
+
* episode, never written in `episode.yaml`. Rules kept from the other seams:
|
|
13
|
+
* the manifest entry is written once and never overwritten, one ordered node
|
|
14
|
+
* pair is one edge, and the wheel projection never throws.
|
|
15
|
+
* Ref: jgwill/Miadi#769 (A3), jgwill/miadi-orchestration-kit#80 (C1, D7).
|
|
16
|
+
*/
|
|
17
|
+
import { readFile, writeFile } from "node:fs/promises";
|
|
18
|
+
import { existsSync } from "node:fs";
|
|
19
|
+
import { dirname } from "node:path";
|
|
20
|
+
import { Scalar, isMap, isScalar, isSeq, parseDocument } from "yaml";
|
|
21
|
+
import { TRACING_ENTRY_KEYS, TRACING_NODE_KIND, defaultTracingRelation, isTracingDomain, isTracingId, isTracingResource, parseTracingRef, toEpisodeTracingEntry, tracingKey, tracingNodeId, tracingReference, } from "@miadi/episodic-memory-schema";
|
|
22
|
+
import { missingManifestRemedy } from "./episode.js";
|
|
23
|
+
import { edgesFrom, failure, wheelJson } from "./review.js";
|
|
24
|
+
export class TracingError extends Error {
|
|
25
|
+
code;
|
|
26
|
+
constructor(code, message) {
|
|
27
|
+
super(message);
|
|
28
|
+
this.code = code;
|
|
29
|
+
this.name = "TracingError";
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
/** The provider the Factory traces with, named once at setup. Langfuse first. */
|
|
33
|
+
export function tracingProviderName(env = process.env) {
|
|
34
|
+
const name = env.MIADI_TRACING_PROVIDER?.trim();
|
|
35
|
+
return name || "langfuse";
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* The resource an input names: a `miadi-tracing:` reference, or the three
|
|
39
|
+
* fields. A reference wins when both are given and agree; they must agree.
|
|
40
|
+
*/
|
|
41
|
+
export function requireTracingRef(input) {
|
|
42
|
+
const parsed = parseTracingRef(input.reference);
|
|
43
|
+
if (parsed) {
|
|
44
|
+
for (const [key, given] of [["domain", input.domain], ["resource", input.resource], ["id", input.id]]) {
|
|
45
|
+
if (typeof given === "string" && given.trim() && given.trim() !== parsed[key]) {
|
|
46
|
+
throw new TracingError("invalid_tracing", `${key} '${given}' disagrees with the reference '${input.reference}' (${parsed[key]})`);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
return parsed;
|
|
50
|
+
}
|
|
51
|
+
if (typeof input.reference === "string" && input.reference.trim()) {
|
|
52
|
+
throw new TracingError("invalid_tracing", `'${input.reference}' is not a miadi-tracing:<domain>/<resource>/<id> reference`);
|
|
53
|
+
}
|
|
54
|
+
const domain = typeof input.domain === "string" ? input.domain.trim() : "";
|
|
55
|
+
const resource = typeof input.resource === "string" ? input.resource.trim() : "";
|
|
56
|
+
const id = typeof input.id === "string" ? input.id.trim() : "";
|
|
57
|
+
if (!isTracingDomain(domain))
|
|
58
|
+
throw new TracingError("invalid_tracing", `domain '${domain}' is not one of ceremony, story, eng`);
|
|
59
|
+
if (!isTracingResource(resource))
|
|
60
|
+
throw new TracingError("invalid_tracing", `resource '${resource}' is not one of trace, prompt, session, dataset, score-config`);
|
|
61
|
+
if (!isTracingId(id))
|
|
62
|
+
throw new TracingError("invalid_tracing", `id '${id}' is not a resource id (a trace id, a prompt name, a session id)`);
|
|
63
|
+
const ref = { domain, resource, id };
|
|
64
|
+
const version = typeof input.version === "number" ? input.version : typeof input.version === "string" && /^\d+$/.test(input.version.trim()) ? Number(input.version.trim()) : undefined;
|
|
65
|
+
if (version !== undefined && version > 0)
|
|
66
|
+
ref.version = version;
|
|
67
|
+
return ref;
|
|
68
|
+
}
|
|
69
|
+
/** The provider's page for the resource, when given: https only, kept off the manifest. */
|
|
70
|
+
export function optionalUiUrl(raw) {
|
|
71
|
+
if (raw === undefined || raw === null || raw === "")
|
|
72
|
+
return undefined;
|
|
73
|
+
if (typeof raw !== "string")
|
|
74
|
+
throw new TracingError("invalid_tracing", "ui_url must be a string");
|
|
75
|
+
let url;
|
|
76
|
+
try {
|
|
77
|
+
url = new URL(raw.trim());
|
|
78
|
+
}
|
|
79
|
+
catch {
|
|
80
|
+
throw new TracingError("invalid_tracing", `ui_url '${raw}' is not a URL`);
|
|
81
|
+
}
|
|
82
|
+
if (url.protocol !== "https:" || url.username || url.password)
|
|
83
|
+
throw new TracingError("invalid_tracing", `ui_url '${raw}' must be https without credentials`);
|
|
84
|
+
return url.toString();
|
|
85
|
+
}
|
|
86
|
+
function quoted(doc, value) {
|
|
87
|
+
const node = doc.createNode(value);
|
|
88
|
+
node.type = Scalar.QUOTE_SINGLE;
|
|
89
|
+
return node;
|
|
90
|
+
}
|
|
91
|
+
function valueNode(doc, value) {
|
|
92
|
+
if (Array.isArray(value)) {
|
|
93
|
+
const seq = doc.createNode([]);
|
|
94
|
+
for (const item of value)
|
|
95
|
+
seq.items.push(quoted(doc, item));
|
|
96
|
+
return seq;
|
|
97
|
+
}
|
|
98
|
+
if (typeof value === "number")
|
|
99
|
+
return doc.createNode(value);
|
|
100
|
+
return quoted(doc, value);
|
|
101
|
+
}
|
|
102
|
+
function entryNode(doc, entry) {
|
|
103
|
+
const map = doc.createNode({});
|
|
104
|
+
for (const key of TRACING_ENTRY_KEYS) {
|
|
105
|
+
const value = entry[key];
|
|
106
|
+
if (value === undefined || value === "" || (Array.isArray(value) && value.length === 0))
|
|
107
|
+
continue;
|
|
108
|
+
map.set(key, valueNode(doc, value));
|
|
109
|
+
}
|
|
110
|
+
return map;
|
|
111
|
+
}
|
|
112
|
+
const sameEntry = (a, b) => a !== null && tracingKey(a.domain, a.resource, a.id) === tracingKey(b.domain, b.resource, b.id);
|
|
113
|
+
/**
|
|
114
|
+
* Add a resource to `episode.yaml`'s `tracing:` list, or fill the keys an
|
|
115
|
+
* existing entry lacks. Comments, key order and every other field survive.
|
|
116
|
+
* Refuses a `tracing` key that is not a list.
|
|
117
|
+
*/
|
|
118
|
+
export async function upsertEpisodeTracing(input) {
|
|
119
|
+
if (!existsSync(input.episodeYamlPath)) {
|
|
120
|
+
throw new TracingError("tracing_manifest_conflict", missingManifestRemedy(dirname(input.episodeYamlPath)));
|
|
121
|
+
}
|
|
122
|
+
const doc = parseDocument(await readFile(input.episodeYamlPath, "utf8"));
|
|
123
|
+
if (doc.errors.length > 0) {
|
|
124
|
+
throw new TracingError("tracing_manifest_conflict", `unreadable episode.yaml ${input.episodeYamlPath}: ${doc.errors[0].message}`);
|
|
125
|
+
}
|
|
126
|
+
if (!isMap(doc.contents)) {
|
|
127
|
+
throw new TracingError("tracing_manifest_conflict", `episode.yaml ${input.episodeYamlPath} is not a mapping`);
|
|
128
|
+
}
|
|
129
|
+
const list = doc.get("tracing", true);
|
|
130
|
+
let created = false;
|
|
131
|
+
const filled = [];
|
|
132
|
+
let entry;
|
|
133
|
+
if (list === undefined || list === null || (isScalar(list) && (list.value === null || list.value === undefined))) {
|
|
134
|
+
created = true;
|
|
135
|
+
entry = input.entry;
|
|
136
|
+
const seq = doc.createNode([]);
|
|
137
|
+
seq.items.push(entryNode(doc, entry));
|
|
138
|
+
if (isScalar(list) && list.comment)
|
|
139
|
+
seq.comment = list.comment;
|
|
140
|
+
doc.set("tracing", seq);
|
|
141
|
+
}
|
|
142
|
+
else if (!isSeq(list)) {
|
|
143
|
+
throw new TracingError("tracing_manifest_conflict", `tracing in ${input.episodeYamlPath} is not a list — refusing to overwrite`);
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
const index = list.items.findIndex((item) => sameEntry(toEpisodeTracingEntry(isMap(item) ? item.toJSON() : isScalar(item) ? item.value : item), input.entry));
|
|
147
|
+
if (index < 0) {
|
|
148
|
+
created = true;
|
|
149
|
+
entry = input.entry;
|
|
150
|
+
list.items.push(entryNode(doc, entry));
|
|
151
|
+
}
|
|
152
|
+
else {
|
|
153
|
+
const item = list.items[index];
|
|
154
|
+
if (!isMap(item)) {
|
|
155
|
+
// A bare reference written by hand already holds the resource. Left as written.
|
|
156
|
+
entry = toEpisodeTracingEntry(isScalar(item) ? item.value : item) ?? input.entry;
|
|
157
|
+
}
|
|
158
|
+
else {
|
|
159
|
+
for (const key of TRACING_ENTRY_KEYS) {
|
|
160
|
+
const value = input.entry[key];
|
|
161
|
+
if (value === undefined || value === "" || (Array.isArray(value) && value.length === 0))
|
|
162
|
+
continue;
|
|
163
|
+
const present = item.get(key);
|
|
164
|
+
if (present === undefined || present === null || present === "") {
|
|
165
|
+
item.set(key, valueNode(doc, value));
|
|
166
|
+
filled.push(key);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
entry = toEpisodeTracingEntry(item.toJSON()) ?? input.entry;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
const wrote = (created || filled.length > 0) && !input.dryRun;
|
|
174
|
+
if (wrote)
|
|
175
|
+
await writeFile(input.episodeYamlPath, doc.toString(), "utf8");
|
|
176
|
+
return { entry, created, filled, wrote, dryRun: input.dryRun === true };
|
|
177
|
+
}
|
|
178
|
+
/** The relationship type of an episode→resource edge already on the wheel. Never throws. */
|
|
179
|
+
export async function existingTracingRelation(mwUrl, episodeNodeId, nodeId, options = {}) {
|
|
180
|
+
const listing = await wheelJson(options.fetchImpl ?? fetch, `${mwUrl.replace(/\/+$/, "")}/api/edges?limit=all`);
|
|
181
|
+
if (!listing.ok)
|
|
182
|
+
return undefined;
|
|
183
|
+
const edge = edgesFrom(listing.body).find((e) => String(e.from_id) === episodeNodeId && String(e.to_id) === nodeId);
|
|
184
|
+
return typeof edge?.relationship_type === "string" && edge.relationship_type ? edge.relationship_type : undefined;
|
|
185
|
+
}
|
|
186
|
+
/** The provider page a resource node holds, for a viewer the door has already checked. Never throws. */
|
|
187
|
+
export async function tracingUiUrl(mwUrl, ref, options = {}) {
|
|
188
|
+
const read = await wheelJson(options.fetchImpl ?? fetch, `${mwUrl.replace(/\/+$/, "")}/api/nodes/${encodeURIComponent(tracingNodeId(ref.domain, ref.resource, ref.id))}`);
|
|
189
|
+
if (!read.ok)
|
|
190
|
+
return undefined;
|
|
191
|
+
const url = read.body?.node?.metadata?.ui_url;
|
|
192
|
+
return typeof url === "string" && url ? url : undefined;
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Put the resource node and the episode→resource edge on the wheel. A
|
|
196
|
+
* resource is a `knowledge` node. When the node exists, only a provider page
|
|
197
|
+
* it lacks is added, so a hand-written name and description stay.
|
|
198
|
+
*/
|
|
199
|
+
export async function projectEpisodeTracing(mwUrl, input, options = {}) {
|
|
200
|
+
const fetchImpl = options.fetchImpl ?? fetch;
|
|
201
|
+
const base = mwUrl.replace(/\/+$/, "");
|
|
202
|
+
const { domain, resource, id } = input.entry;
|
|
203
|
+
const nodeId = tracingNodeId(domain, resource, id);
|
|
204
|
+
const edgeId = `${input.episodeNodeId}:${nodeId}`;
|
|
205
|
+
const projection = {
|
|
206
|
+
node: { id: nodeId, state: "pending" },
|
|
207
|
+
edge: { id: edgeId, state: "pending", relationship_type: input.relation },
|
|
208
|
+
};
|
|
209
|
+
const nodeUrl = `${base}/api/nodes/${encodeURIComponent(nodeId)}`;
|
|
210
|
+
const read = await wheelJson(fetchImpl, nodeUrl);
|
|
211
|
+
if (read.ok) {
|
|
212
|
+
const node = read.body?.node;
|
|
213
|
+
if (!input.uiUrl || node?.metadata?.ui_url) {
|
|
214
|
+
projection.node.state = "already-present";
|
|
215
|
+
}
|
|
216
|
+
else if (options.dryRun) {
|
|
217
|
+
projection.node.state = "skipped";
|
|
218
|
+
}
|
|
219
|
+
else {
|
|
220
|
+
const patched = await wheelJson(fetchImpl, nodeUrl, {
|
|
221
|
+
method: "PATCH",
|
|
222
|
+
headers: { "content-type": "application/json" },
|
|
223
|
+
body: JSON.stringify({ metadata: { ui_url: input.uiUrl } }),
|
|
224
|
+
});
|
|
225
|
+
projection.node = patched.ok ? { id: nodeId, state: "refreshed" } : { id: nodeId, state: "pending", error: failure("PATCH", nodeUrl, patched) };
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
else if (read.status === 404) {
|
|
229
|
+
if (options.dryRun) {
|
|
230
|
+
projection.node.state = "skipped";
|
|
231
|
+
}
|
|
232
|
+
else {
|
|
233
|
+
const label = input.entry.name ?? (resource === "prompt" ? id : `${resource} ${id.slice(0, 8)}`);
|
|
234
|
+
const created = await wheelJson(fetchImpl, `${base}/api/nodes`, {
|
|
235
|
+
method: "POST",
|
|
236
|
+
headers: { "content-type": "application/json" },
|
|
237
|
+
body: JSON.stringify({
|
|
238
|
+
id: nodeId,
|
|
239
|
+
type: "knowledge",
|
|
240
|
+
name: `${resource === "prompt" ? "Prompt" : resource === "trace" ? "Trace" : resource === "session" ? "Session" : resource === "dataset" ? "Dataset" : "Score config"} — ${label}`,
|
|
241
|
+
description: `A ${resource} in the ${domain} tracing domain, held by episode ${input.episodeFolder}: ${label}.`,
|
|
242
|
+
direction: "west",
|
|
243
|
+
metadata: {
|
|
244
|
+
kind: TRACING_NODE_KIND,
|
|
245
|
+
provider: input.provider,
|
|
246
|
+
domain,
|
|
247
|
+
resource,
|
|
248
|
+
resource_id: id,
|
|
249
|
+
address: tracingReference(domain, resource, id, input.entry.version),
|
|
250
|
+
episode_path: input.episodeFolder,
|
|
251
|
+
...(input.entry.name ? { name: input.entry.name } : {}),
|
|
252
|
+
...(input.entry.version !== undefined ? { version: input.entry.version } : {}),
|
|
253
|
+
...(input.entry.label ? { label: input.entry.label } : {}),
|
|
254
|
+
...(input.entry.session ? { session: input.entry.session } : {}),
|
|
255
|
+
...(input.entry.backstage?.length ? { backstage: input.entry.backstage } : {}),
|
|
256
|
+
...(input.uiUrl ? { ui_url: input.uiUrl } : {}),
|
|
257
|
+
},
|
|
258
|
+
}),
|
|
259
|
+
});
|
|
260
|
+
projection.node = created.ok ? { id: nodeId, state: "created" } : { id: nodeId, state: "pending", error: failure("POST", `${base}/api/nodes`, created) };
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
else {
|
|
264
|
+
projection.node = { id: nodeId, state: "pending", error: failure("GET", nodeUrl, read) };
|
|
265
|
+
}
|
|
266
|
+
if (projection.node.state === "pending") {
|
|
267
|
+
projection.edge.error = "the tracing node is not on the wheel yet";
|
|
268
|
+
return projection;
|
|
269
|
+
}
|
|
270
|
+
const edgesUrl = `${base}/api/edges`;
|
|
271
|
+
const listing = await wheelJson(fetchImpl, `${edgesUrl}?limit=all`);
|
|
272
|
+
if (!listing.ok) {
|
|
273
|
+
projection.edge.error = failure("GET", edgesUrl, listing);
|
|
274
|
+
return projection;
|
|
275
|
+
}
|
|
276
|
+
const existing = edgesFrom(listing.body).find((edge) => String(edge.from_id) === input.episodeNodeId && String(edge.to_id) === nodeId);
|
|
277
|
+
if (existing) {
|
|
278
|
+
projection.edge = { id: edgeId, state: "already-present", relationship_type: String(existing.relationship_type ?? input.relation) };
|
|
279
|
+
return projection;
|
|
280
|
+
}
|
|
281
|
+
if (options.dryRun) {
|
|
282
|
+
projection.edge.state = "skipped";
|
|
283
|
+
return projection;
|
|
284
|
+
}
|
|
285
|
+
const posted = await wheelJson(fetchImpl, edgesUrl, {
|
|
286
|
+
method: "POST",
|
|
287
|
+
headers: { "content-type": "application/json" },
|
|
288
|
+
body: JSON.stringify({ from_id: input.episodeNodeId, to_id: nodeId, relationship_type: input.relation, strength: 1, obligations: [] }),
|
|
289
|
+
});
|
|
290
|
+
if (posted.ok && posted.body?.replaced === true) {
|
|
291
|
+
projection.edge = { id: edgeId, state: "pending", relationship_type: input.relation, error: "the wheel replaced an edge the listing did not show; check the edge by hand" };
|
|
292
|
+
}
|
|
293
|
+
else if (posted.ok)
|
|
294
|
+
projection.edge.state = "created";
|
|
295
|
+
else if (posted.status === 409)
|
|
296
|
+
projection.edge.state = "already-present";
|
|
297
|
+
else
|
|
298
|
+
projection.edge.error = failure("POST", edgesUrl, posted);
|
|
299
|
+
return projection;
|
|
300
|
+
}
|
|
301
|
+
export { defaultTracingRelation };
|
|
302
|
+
//# sourceMappingURL=tracing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tracing.js","sourceRoot":"","sources":["../src/tracing.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@miadi/inquiry-weave",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.17.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"
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
"README.md"
|
|
36
36
|
],
|
|
37
37
|
"dependencies": {
|
|
38
|
-
"@miadi/episodic-memory-schema": "^0.
|
|
38
|
+
"@miadi/episodic-memory-schema": "^0.15.0",
|
|
39
39
|
"yaml": "^2.5.0"
|
|
40
40
|
},
|
|
41
41
|
"devDependencies": {
|