@shapeshift-labs/loom 0.1.16 → 0.1.18

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.
@@ -0,0 +1,105 @@
1
+ export function createFrontierRunPanelRecords(graph) {
2
+ const kinds = ['intent', 'decomposition', 'tournament', 'performance', 'evidence', 'merge', 'rsi'];
3
+ return kinds.map((panelKind) => ({
4
+ kind: 'loom.decision-graph.panel-projection',
5
+ id: `panel:${panelKind}`,
6
+ panelKind,
7
+ label: panelKind,
8
+ sourceNodeIds: panelSourceNodeIds(graph, panelKind),
9
+ sourceEdgeIds: panelSourceEdgeIds(graph, panelKind)
10
+ }));
11
+ }
12
+ export function normalizeFrontierRunDecisionRecords(nodes) {
13
+ const records = [];
14
+ for (const node of nodes) {
15
+ if (node.kind === 'candidate') {
16
+ records.push({
17
+ kind: 'loom.decision-graph.merge-candidate',
18
+ id: `record:merge-candidate:${node.id}`,
19
+ nodeId: node.id,
20
+ taskId: node.taskId,
21
+ jobId: node.jobId,
22
+ lane: node.lane,
23
+ label: node.label,
24
+ status: node.status,
25
+ createdAt: node.createdAt,
26
+ updatedAt: node.updatedAt,
27
+ candidateId: node.candidateId ?? node.id,
28
+ sourceNodeId: node.id,
29
+ admissionStatus: frontierRunStringFromData(node.data, 'mergeReadiness'),
30
+ disposition: node.outcome,
31
+ data: node.data
32
+ });
33
+ }
34
+ else if (node.kind === 'evidence') {
35
+ records.push({ kind: 'loom.decision-graph.evidence', id: `record:evidence:${node.id}`, nodeId: node.id, taskId: node.taskId, jobId: node.jobId, lane: node.lane, label: node.label, status: node.status, createdAt: node.createdAt, updatedAt: node.updatedAt, evidenceKind: frontierRunStringFromData(node.data, 'evidenceType'), path: node.path, producerNodeId: node.id, data: node.data });
36
+ }
37
+ else if (node.kind === 'gate') {
38
+ records.push({ kind: 'loom.decision-graph.gate', id: `record:gate:${node.id}`, nodeId: node.id, taskId: node.taskId, jobId: node.jobId, lane: node.lane, label: node.label, status: node.status, createdAt: node.createdAt, updatedAt: node.updatedAt, gateId: node.id, data: node.data });
39
+ }
40
+ }
41
+ return records;
42
+ }
43
+ export function summarizeFrontierRunTypedCounts(graph) {
44
+ const out = {};
45
+ for (const node of graph.nodes) {
46
+ if (node.kind === 'intent')
47
+ out.intents = (out.intents ?? 0) + 1;
48
+ else if (node.kind === 'task')
49
+ out.tasks = (out.tasks ?? 0) + 1;
50
+ else if (node.kind === 'worker')
51
+ out.workers = (out.workers ?? 0) + 1;
52
+ else if (node.kind === 'candidate')
53
+ out.candidates = (out.candidates ?? 0) + 1;
54
+ else if (node.kind === 'evidence')
55
+ out.evidence = (out.evidence ?? 0) + 1;
56
+ else if (node.kind === 'gate')
57
+ out.gates = (out.gates ?? 0) + 1;
58
+ else if (node.kind === 'decision')
59
+ out.decisions = (out.decisions ?? 0) + 1;
60
+ }
61
+ return out;
62
+ }
63
+ export function toFrontierRunJsonValue(value) {
64
+ if (value === null)
65
+ return null;
66
+ if (typeof value === 'boolean' || typeof value === 'string')
67
+ return value;
68
+ if (typeof value === 'number')
69
+ return Number.isFinite(value) ? value : null;
70
+ if (Array.isArray(value))
71
+ return value.map((item) => toFrontierRunJsonValue(item));
72
+ if (typeof value === 'object') {
73
+ const out = {};
74
+ for (const [key, item] of Object.entries(value)) {
75
+ if (item === undefined || typeof item === 'function' || typeof item === 'symbol')
76
+ continue;
77
+ out[key] = toFrontierRunJsonValue(item);
78
+ }
79
+ return out;
80
+ }
81
+ return String(value);
82
+ }
83
+ export function toFrontierRunJsonRecord(value) {
84
+ const json = toFrontierRunJsonValue(value);
85
+ if (!json || typeof json !== 'object' || Array.isArray(json))
86
+ return undefined;
87
+ return Object.keys(json).length > 0 ? json : undefined;
88
+ }
89
+ export function frontierRunStringFromData(data, key) {
90
+ const value = data?.[key];
91
+ return typeof value === 'string' && value ? value : undefined;
92
+ }
93
+ export function uniqueFrontierRunStrings(values) {
94
+ return Array.from(new Set(values.filter((value) => typeof value === 'string' && value.length > 0))).sort();
95
+ }
96
+ function panelSourceNodeIds(graph, panelKind) {
97
+ const byPanel = { intent: ['intent', 'task'], decomposition: ['task', 'worker'], tournament: ['tournament', 'candidate'], performance: ['worker', 'gate', 'evidence'], evidence: ['evidence', 'gate'], merge: ['candidate', 'merge', 'decision', 'semantic-change'], rsi: ['rsi'] };
98
+ const wanted = new Set(byPanel[panelKind] ?? []);
99
+ return graph.nodes.filter((node) => wanted.has(node.kind)).map((node) => node.id);
100
+ }
101
+ function panelSourceEdgeIds(graph, panelKind) {
102
+ const nodes = new Set(panelSourceNodeIds(graph, panelKind));
103
+ return graph.edges.filter((edge) => nodes.has(edge.from) || nodes.has(edge.to)).map((edge) => edge.id);
104
+ }
105
+ //# sourceMappingURL=graph-frontier-run-records.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph-frontier-run-records.js","sourceRoot":"","sources":["../src/graph-frontier-run-records.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { type FrontierRunEvent } from '@shapeshift-labs/frontier-run';
2
+ import type { LoomFrontierRunImportOptions, LoomRunGraph } from './types.js';
3
+ export { FRONTIER_RUN_GRAPH_SOURCE } from './graph-frontier-run-convert.js';
4
+ export declare function parseFrontierRunEventsInput(text: string): FrontierRunEvent[];
5
+ export declare function normalizeFrontierRunEvents(input: readonly FrontierRunEvent[], options?: LoomFrontierRunImportOptions): LoomRunGraph;
6
+ //# sourceMappingURL=graph-frontier-run.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph-frontier-run.d.ts","sourceRoot":"","sources":["../src/graph-frontier-run.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,gBAAgB,EACtB,MAAM,+BAA+B,CAAC;AAavC,OAAO,KAAK,EACV,4BAA4B,EAC5B,YAAY,EACb,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAE5E,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAE5E;AAED,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,SAAS,gBAAgB,EAAE,EAClC,OAAO,GAAE,4BAAiC,GACzC,YAAY,CAqDd"}
@@ -0,0 +1,63 @@
1
+ import { parseRunEventsJsonl, replayRunEvents } from '@shapeshift-labs/frontier-run';
2
+ import { nowIso, resolveRoot } from './common.js';
3
+ import { FRONTIER_RUN_GRAPH_SOURCE, normalizeFrontierRunDecisionGraph, normalizeFrontierRunJobGraph } from './graph-frontier-run-convert.js';
4
+ import { createFrontierRunPanelRecords, summarizeFrontierRunTypedCounts, toFrontierRunJsonValue, uniqueFrontierRunStrings } from './graph-frontier-run-records.js';
5
+ export { FRONTIER_RUN_GRAPH_SOURCE } from './graph-frontier-run-convert.js';
6
+ export function parseFrontierRunEventsInput(text) {
7
+ return parseRunEventsJsonl(text);
8
+ }
9
+ export function normalizeFrontierRunEvents(input, options = {}) {
10
+ const projection = replayRunEvents(input);
11
+ const root = resolveRoot(options.root);
12
+ const run = projection.run;
13
+ const outputRunId = options.runId ?? run.id;
14
+ const graph = normalizeFrontierRunJobGraph(run.graph);
15
+ const decisionGraph = normalizeFrontierRunDecisionGraph(projection);
16
+ const typedCounts = summarizeFrontierRunTypedCounts(decisionGraph);
17
+ const panels = createFrontierRunPanelRecords(decisionGraph);
18
+ const eventTypes = uniqueFrontierRunStrings(projection.events.map((event) => event.type));
19
+ return {
20
+ kind: 'loom.run-graph',
21
+ version: 1,
22
+ generatedAt: run.updatedAt || nowIso(),
23
+ root,
24
+ runId: outputRunId,
25
+ source: FRONTIER_RUN_GRAPH_SOURCE,
26
+ sourceKind: FRONTIER_RUN_GRAPH_SOURCE,
27
+ sourceMetadata: {
28
+ kind: FRONTIER_RUN_GRAPH_SOURCE,
29
+ artifactKind: 'frontier.run.events',
30
+ artifactId: run.id,
31
+ ...(options.sourcePath ? { path: options.sourcePath } : {}),
32
+ importedAt: nowIso(),
33
+ eventCount: projection.events.length,
34
+ eventTypes
35
+ },
36
+ summary: {
37
+ nodes: graph.nodes.length,
38
+ edges: graph.edges.length,
39
+ roots: graph.roots.length,
40
+ leaves: graph.leaves.length,
41
+ issues: graph.issues.length,
42
+ ...(Object.keys(typedCounts).length ? { typedCounts } : {})
43
+ },
44
+ graph,
45
+ decisionGraph,
46
+ ...(panels.length ? { projections: { panels } } : {}),
47
+ metadata: {
48
+ frontierRun: toFrontierRunJsonValue({
49
+ id: run.id,
50
+ goal: run.goal,
51
+ createdAt: run.createdAt,
52
+ updatedAt: run.updatedAt,
53
+ refs: run.refs,
54
+ heads: run.heads,
55
+ eventCount: projection.events.length,
56
+ nodeCount: Object.keys(run.graph.nodes).length,
57
+ edgeCount: Object.keys(run.graph.edges).length,
58
+ metadata: run.metadata
59
+ })
60
+ }
61
+ };
62
+ }
63
+ //# sourceMappingURL=graph-frontier-run.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph-frontier-run.js","sourceRoot":"","sources":["../src/graph-frontier-run.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,eAAe,EAEhB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EACL,yBAAyB,EACzB,iCAAiC,EACjC,4BAA4B,EAC7B,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,6BAA6B,EAC7B,+BAA+B,EAC/B,sBAAsB,EACtB,wBAAwB,EACzB,MAAM,iCAAiC,CAAC;AAMzC,OAAO,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAE5E,MAAM,UAAU,2BAA2B,CAAC,IAAY;IACtD,OAAO,mBAAmB,CAAC,IAAI,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,KAAkC,EAClC,UAAwC,EAAE;IAE1C,MAAM,UAAU,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;IAC1C,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC;IAC3B,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,IAAI,GAAG,CAAC,EAAE,CAAC;IAC5C,MAAM,KAAK,GAAG,4BAA4B,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACtD,MAAM,aAAa,GAAG,iCAAiC,CAAC,UAAU,CAAC,CAAC;IACpE,MAAM,WAAW,GAAG,+BAA+B,CAAC,aAAa,CAAC,CAAC;IACnE,MAAM,MAAM,GAAG,6BAA6B,CAAC,aAAa,CAAC,CAAC;IAC5D,MAAM,UAAU,GAAG,wBAAwB,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1F,OAAO;QACL,IAAI,EAAE,gBAAgB;QACtB,OAAO,EAAE,CAAC;QACV,WAAW,EAAE,GAAG,CAAC,SAAS,IAAI,MAAM,EAAE;QACtC,IAAI;QACJ,KAAK,EAAE,WAAW;QAClB,MAAM,EAAE,yBAAyB;QACjC,UAAU,EAAE,yBAAyB;QACrC,cAAc,EAAE;YACd,IAAI,EAAE,yBAAyB;YAC/B,YAAY,EAAE,qBAAqB;YACnC,UAAU,EAAE,GAAG,CAAC,EAAE;YAClB,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3D,UAAU,EAAE,MAAM,EAAE;YACpB,UAAU,EAAE,UAAU,CAAC,MAAM,CAAC,MAAM;YACpC,UAAU;SACX;QACD,OAAO,EAAE;YACP,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM;YACzB,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM;YACzB,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM;YACzB,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM;YAC3B,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM;YAC3B,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC5D;QACD,KAAK;QACL,aAAa;QACb,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrD,QAAQ,EAAE;YACR,WAAW,EAAE,sBAAsB,CAAC;gBAClC,EAAE,EAAE,GAAG,CAAC,EAAE;gBACV,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,SAAS,EAAE,GAAG,CAAC,SAAS;gBACxB,SAAS,EAAE,GAAG,CAAC,SAAS;gBACxB,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,KAAK,EAAE,GAAG,CAAC,KAAK;gBAChB,UAAU,EAAE,UAAU,CAAC,MAAM,CAAC,MAAM;gBACpC,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM;gBAC9C,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM;gBAC9C,QAAQ,EAAE,GAAG,CAAC,QAAQ;aACvB,CAAC;SACH;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { LoomSwarmCodexLiveRunGraphEvent, LoomSwarmCodexRunGraph, LoomSwarmCodexRunGraphImportOptions, LoomSwarmCodexRunGraphInput } from './types.js';
2
+ export declare const FRONTIER_SWARM_CODEX_LIVE_RUN_GRAPH_EVENT_KIND = "frontier.swarm-codex.live-run-graph-event";
3
+ export declare const FRONTIER_SWARM_CODEX_LIVE_RUN_GRAPH_EVENTS_ARTIFACT = "frontier.swarm-codex.live-run-graph-events";
4
+ export declare function parseSwarmCodexRunGraphInput(input: string): LoomSwarmCodexRunGraphInput;
5
+ export declare function materializeSwarmCodexLiveRunGraphEvents(input: readonly LoomSwarmCodexLiveRunGraphEvent[], options?: LoomSwarmCodexRunGraphImportOptions): LoomSwarmCodexRunGraph;
6
+ //# sourceMappingURL=graph-live.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph-live.d.ts","sourceRoot":"","sources":["../src/graph-live.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,+BAA+B,EAC/B,sBAAsB,EACtB,mCAAmC,EACnC,2BAA2B,EAC5B,MAAM,YAAY,CAAC;AAEpB,eAAO,MAAM,8CAA8C,8CAA8C,CAAC;AAC1G,eAAO,MAAM,mDAAmD,+CAA+C,CAAC;AAEhH,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,MAAM,GAAG,2BAA2B,CAuBvF;AAED,wBAAgB,uCAAuC,CACrD,KAAK,EAAE,SAAS,+BAA+B,EAAE,EACjD,OAAO,GAAE,mCAAwC,GAChD,sBAAsB,CAyExB"}
@@ -0,0 +1,251 @@
1
+ import path from 'node:path';
2
+ export const FRONTIER_SWARM_CODEX_LIVE_RUN_GRAPH_EVENT_KIND = 'frontier.swarm-codex.live-run-graph-event';
3
+ export const FRONTIER_SWARM_CODEX_LIVE_RUN_GRAPH_EVENTS_ARTIFACT = 'frontier.swarm-codex.live-run-graph-events';
4
+ export function parseSwarmCodexRunGraphInput(input) {
5
+ const trimmed = input.trim();
6
+ if (!trimmed)
7
+ throw new Error('invalid swarm run graph input: empty input');
8
+ let parsed;
9
+ try {
10
+ parsed = JSON.parse(trimmed);
11
+ }
12
+ catch (parseError) {
13
+ const lines = input.split(/\r?\n/).map((line) => line.trim()).filter(Boolean);
14
+ const events = lines.map((line, index) => {
15
+ try {
16
+ return JSON.parse(line);
17
+ }
18
+ catch (lineError) {
19
+ throw new Error(`invalid swarm live run graph JSONL at line ${index + 1}: ${errorMessage(lineError)}`);
20
+ }
21
+ });
22
+ try {
23
+ return normalizeParsedSwarmCodexInput(events);
24
+ }
25
+ catch (jsonlError) {
26
+ throw new Error(`invalid swarm run graph input: ${errorMessage(jsonlError)}; JSON parse failed with ${errorMessage(parseError)}`);
27
+ }
28
+ }
29
+ return normalizeParsedSwarmCodexInput(parsed);
30
+ }
31
+ export function materializeSwarmCodexLiveRunGraphEvents(input, options = {}) {
32
+ if (!Array.isArray(input) || input.length === 0) {
33
+ throw new Error('invalid swarm live run graph events: expected at least one event');
34
+ }
35
+ const nodes = new Map();
36
+ const edges = new Map();
37
+ let runId;
38
+ let outDir;
39
+ let generatedAt = 0;
40
+ for (const event of input) {
41
+ assertSwarmCodexLiveRunGraphEvent(event);
42
+ if (!runId && event.runId)
43
+ runId = event.runId;
44
+ generatedAt = Math.max(generatedAt, event.generatedAt);
45
+ const eventOutDir = stringRecordValue(event.data, 'outDir');
46
+ if (!outDir && eventOutDir)
47
+ outDir = eventOutDir;
48
+ for (const node of event.nodes ?? []) {
49
+ if (!node || typeof node.id !== 'string' || !node.id)
50
+ continue;
51
+ if (!outDir && node.kind === 'run' && typeof node.path === 'string' && node.path)
52
+ outDir = node.path;
53
+ if (!runId && node.kind === 'run' && typeof node.label === 'string' && node.label)
54
+ runId = node.label;
55
+ const existing = nodes.get(node.id);
56
+ nodes.set(node.id, existing ? mergeSwarmCodexRunGraphNode(existing, node) : node);
57
+ }
58
+ for (const edge of event.edges ?? []) {
59
+ if (!edge || typeof edge.from !== 'string' || typeof edge.to !== 'string')
60
+ continue;
61
+ if (!edge.from || !edge.to || edge.from === edge.to)
62
+ continue;
63
+ const edgeId = typeof edge.id === 'string' && edge.id ? edge.id : `${edge.kind}:${edge.from}->${edge.to}`;
64
+ const next = { ...edge, id: edgeId };
65
+ const existing = edges.get(edgeId);
66
+ edges.set(edgeId, existing ? mergeSwarmCodexRunGraphEdge(existing, next) : next);
67
+ }
68
+ }
69
+ if (!generatedAt)
70
+ generatedAt = Date.now();
71
+ const fallbackDir = options.sourcePath && options.sourcePath !== 'stdin' ? path.dirname(options.sourcePath) : '';
72
+ outDir = outDir ?? fallbackDir;
73
+ const runDir = inferRunDirFromOutDir(outDir);
74
+ const fallbackRunId = path.basename(runDir || outDir || '') || 'current';
75
+ runId = options.runId ?? runId ?? fallbackRunId;
76
+ const nodeList = Array.from(nodes.values()).sort((left, right) => left.id.localeCompare(right.id));
77
+ const edgeList = Array.from(edges.values()).sort((left, right) => left.id.localeCompare(right.id));
78
+ const indexes = createSwarmCodexRunGraphIndexes(nodeList);
79
+ const nodeKinds = countStrings(nodeList.map((node) => node.kind));
80
+ const edgeKinds = countStrings(edgeList.map((edge) => edge.kind));
81
+ return {
82
+ kind: 'frontier.swarm-codex.run-graph',
83
+ version: 1,
84
+ id: `frontier-swarm-codex.live-run-graph:${runId}`,
85
+ generatedAt,
86
+ runDir,
87
+ outDir,
88
+ nodes: nodeList,
89
+ edges: edgeList,
90
+ indexes,
91
+ summary: {
92
+ nodeCount: nodeList.length,
93
+ edgeCount: edgeList.length,
94
+ nodeKinds,
95
+ edgeKinds,
96
+ taskCount: nodeKinds.task ?? 0,
97
+ jobCount: nodeKinds.job ?? 0,
98
+ candidateCount: nodeKinds.candidate ?? 0,
99
+ evidenceCount: nodeKinds.evidence ?? 0,
100
+ decisionCount: nodeKinds.decision ?? 0,
101
+ gateCount: nodeKinds.gate ?? 0
102
+ }
103
+ };
104
+ }
105
+ function normalizeParsedSwarmCodexInput(value) {
106
+ if (Array.isArray(value)) {
107
+ for (const event of value)
108
+ assertSwarmCodexLiveRunGraphEvent(event);
109
+ return value;
110
+ }
111
+ if (!value || typeof value !== 'object') {
112
+ throw new Error('invalid swarm run graph input: expected JSON object or JSONL live events');
113
+ }
114
+ const kind = value.kind;
115
+ if (kind === 'frontier.swarm-codex.run-graph') {
116
+ assertSwarmCodexRunGraph(value);
117
+ return value;
118
+ }
119
+ if (kind === FRONTIER_SWARM_CODEX_LIVE_RUN_GRAPH_EVENT_KIND) {
120
+ assertSwarmCodexLiveRunGraphEvent(value);
121
+ return [value];
122
+ }
123
+ throw new Error('invalid swarm run graph input: expected frontier-swarm-codex run graph or live run graph events');
124
+ }
125
+ function assertSwarmCodexRunGraph(value) {
126
+ if (!value || typeof value !== 'object')
127
+ throw new Error('invalid swarm run graph: expected object');
128
+ if (value.kind !== 'frontier.swarm-codex.run-graph') {
129
+ throw new Error('invalid swarm run graph: expected kind "frontier.swarm-codex.run-graph"');
130
+ }
131
+ if (value.version !== 1)
132
+ throw new Error('invalid swarm run graph: expected version 1');
133
+ if (!Array.isArray(value.nodes))
134
+ throw new Error('invalid swarm run graph: expected nodes array');
135
+ if (!Array.isArray(value.edges))
136
+ throw new Error('invalid swarm run graph: expected edges array');
137
+ }
138
+ function assertSwarmCodexLiveRunGraphEvent(value) {
139
+ if (!value || typeof value !== 'object')
140
+ throw new Error('invalid swarm live run graph event: expected object');
141
+ if (value.kind !== FRONTIER_SWARM_CODEX_LIVE_RUN_GRAPH_EVENT_KIND) {
142
+ throw new Error(`invalid swarm live run graph event: expected kind "${FRONTIER_SWARM_CODEX_LIVE_RUN_GRAPH_EVENT_KIND}"`);
143
+ }
144
+ if (value.version !== 1)
145
+ throw new Error('invalid swarm live run graph event: expected version 1');
146
+ if (typeof value.type !== 'string' || !value.type)
147
+ throw new Error('invalid swarm live run graph event: expected type');
148
+ if (typeof value.generatedAt !== 'number' || !Number.isFinite(value.generatedAt)) {
149
+ throw new Error('invalid swarm live run graph event: expected numeric generatedAt');
150
+ }
151
+ if (value.nodes !== undefined && !Array.isArray(value.nodes)) {
152
+ throw new Error('invalid swarm live run graph event: expected nodes array');
153
+ }
154
+ if (value.edges !== undefined && !Array.isArray(value.edges)) {
155
+ throw new Error('invalid swarm live run graph event: expected edges array');
156
+ }
157
+ }
158
+ function mergeSwarmCodexRunGraphNode(left, right) {
159
+ const leftTime = typeof left.generatedAt === 'number' ? left.generatedAt : -Infinity;
160
+ const rightTime = typeof right.generatedAt === 'number' ? right.generatedAt : -Infinity;
161
+ const older = rightTime >= leftTime ? left : right;
162
+ const newer = rightTime >= leftTime ? right : left;
163
+ const merged = {
164
+ ...definedObject(older),
165
+ ...definedObject(newer)
166
+ };
167
+ const refs = mergeRecordValues(older.refs, newer.refs);
168
+ if (Object.keys(refs).length > 0)
169
+ merged.refs = refs;
170
+ const data = mergeRecordValues(older.data, newer.data);
171
+ if (Object.keys(data).length > 0)
172
+ merged.data = data;
173
+ return merged;
174
+ }
175
+ function mergeSwarmCodexRunGraphEdge(left, right) {
176
+ const merged = {
177
+ ...definedObject(left),
178
+ ...definedObject(right)
179
+ };
180
+ const data = mergeRecordValues(left.data, right.data);
181
+ if (Object.keys(data).length > 0)
182
+ merged.data = data;
183
+ return merged;
184
+ }
185
+ function createSwarmCodexRunGraphIndexes(nodes) {
186
+ const indexes = {
187
+ byKind: {},
188
+ byJobId: {},
189
+ byTaskId: {}
190
+ };
191
+ for (const node of nodes) {
192
+ addGraphIndexValue(indexes.byKind, node.kind, node.id);
193
+ if (node.jobId)
194
+ addGraphIndexValue(indexes.byJobId, node.jobId, node.id);
195
+ if (node.taskId)
196
+ addGraphIndexValue(indexes.byTaskId, node.taskId, node.id);
197
+ }
198
+ for (const index of Object.values(indexes))
199
+ sortGraphIndex(index);
200
+ return indexes;
201
+ }
202
+ function addGraphIndexValue(index, key, value) {
203
+ const list = index[key] ?? [];
204
+ list.push(value);
205
+ index[key] = list;
206
+ }
207
+ function sortGraphIndex(index) {
208
+ for (const values of Object.values(index))
209
+ values.sort();
210
+ }
211
+ function countStrings(values) {
212
+ const out = {};
213
+ for (const value of values)
214
+ out[value] = (out[value] ?? 0) + 1;
215
+ return out;
216
+ }
217
+ function definedObject(value) {
218
+ const out = {};
219
+ for (const [key, item] of Object.entries(value)) {
220
+ if (item !== undefined)
221
+ out[key] = item;
222
+ }
223
+ return out;
224
+ }
225
+ function mergeRecordValues(left, right) {
226
+ const out = {};
227
+ for (const record of [left, right]) {
228
+ if (!record || typeof record !== 'object' || Array.isArray(record))
229
+ continue;
230
+ for (const [key, value] of Object.entries(record)) {
231
+ if (value !== undefined)
232
+ out[key] = value;
233
+ }
234
+ }
235
+ return out;
236
+ }
237
+ function inferRunDirFromOutDir(outDir) {
238
+ if (!outDir)
239
+ return '';
240
+ return path.basename(outDir) === 'collected' ? path.dirname(outDir) : outDir;
241
+ }
242
+ function stringRecordValue(record, key) {
243
+ if (!record || typeof record !== 'object' || Array.isArray(record))
244
+ return undefined;
245
+ const value = record[key];
246
+ return typeof value === 'string' && value ? value : undefined;
247
+ }
248
+ function errorMessage(error) {
249
+ return error instanceof Error ? error.message : String(error);
250
+ }
251
+ //# sourceMappingURL=graph-live.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph-live.js","sourceRoot":"","sources":["../src/graph-live.ts"],"names":[],"mappings":"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"}
package/dist/graph.d.ts CHANGED
@@ -1,5 +1,46 @@
1
- import type { LoomGraph } from './types.js';
1
+ import type { FrontierRunEvent } from '@shapeshift-labs/frontier-run';
2
+ import type { JsonValue, LoomDecisionGraph, LoomFrontierRunImportOptions, LoomGraph, LoomPanelProjectionRecord, LoomRunGraph, LoomRunGraphChunkKind, LoomRunGraphChunkTemplate, LoomRunGraphEdge, LoomRunGraphImportResult, LoomRunGraphOptions, LoomRunGraphSourceKind, LoomSwarmCodexLiveRunGraphEvent, LoomSwarmCodexRunGraphInput, LoomSwarmCodexRunGraph, LoomSwarmCodexRunGraphImportOptions } from './types.js';
3
+ export declare const LOOM_NATIVE_RUN_GRAPH_SOURCE: LoomRunGraphSourceKind;
4
+ export declare const FRONTIER_SWARM_CODEX_RUN_GRAPH_SOURCE: LoomRunGraphSourceKind;
5
+ export declare const LOOM_RUN_GRAPH_CHUNK_TEMPLATE_KIND = "loom.run-graph.chunk-template";
6
+ export { FRONTIER_SWARM_CODEX_LIVE_RUN_GRAPH_EVENTS_ARTIFACT, FRONTIER_SWARM_CODEX_LIVE_RUN_GRAPH_EVENT_KIND, materializeSwarmCodexLiveRunGraphEvents, parseSwarmCodexRunGraphInput } from './graph-live.js';
7
+ export { FRONTIER_RUN_GRAPH_SOURCE, normalizeFrontierRunEvents, parseFrontierRunEventsInput } from './graph-frontier-run.js';
8
+ export declare function buildRunGraphChunkTemplate(options: {
9
+ id?: string;
10
+ chunkKind: LoomRunGraphChunkKind;
11
+ nodes: readonly string[];
12
+ edges: readonly LoomRunGraphEdge[];
13
+ entryNodes: readonly string[];
14
+ exitNodes: readonly string[];
15
+ roles?: Record<string, readonly string[]>;
16
+ metadata?: Record<string, JsonValue>;
17
+ }): LoomRunGraphChunkTemplate;
18
+ export declare function buildRunGraphChainChunk(nodes: readonly string[], options?: {
19
+ id?: string;
20
+ edgeType?: string;
21
+ }): LoomRunGraphChunkTemplate;
22
+ export declare function buildRunGraphForkChunk(source: string, branches: readonly string[], options?: {
23
+ id?: string;
24
+ edgeType?: string;
25
+ }): LoomRunGraphChunkTemplate;
26
+ export declare function buildRunGraphJoinChunk(branches: readonly string[], target: string, options?: {
27
+ id?: string;
28
+ edgeType?: string;
29
+ }): LoomRunGraphChunkTemplate;
30
+ export declare function buildRunGraphPatternChunk(chunkKind: Exclude<LoomRunGraphChunkKind, 'chain' | 'fork' | 'join'>, nodes: readonly string[], options?: {
31
+ id?: string;
32
+ edgeType?: string;
33
+ metadata?: Record<string, JsonValue>;
34
+ }): LoomRunGraphChunkTemplate;
2
35
  export declare function readLoomGraph(options?: {
3
36
  root?: string;
4
37
  }): Promise<LoomGraph>;
38
+ export declare function readLoomRunGraph(options?: LoomRunGraphOptions): Promise<LoomRunGraph>;
39
+ export declare function writeLoomRunGraph(graph: LoomRunGraph, options?: LoomRunGraphOptions): Promise<string>;
40
+ export declare function normalizeSwarmCodexRunGraph(input: LoomSwarmCodexRunGraph, options?: LoomSwarmCodexRunGraphImportOptions): LoomRunGraph;
41
+ export declare function normalizeSwarmCodexLiveRunGraphEvents(input: readonly LoomSwarmCodexLiveRunGraphEvent[], options?: LoomSwarmCodexRunGraphImportOptions): LoomRunGraph;
42
+ export declare function importSwarmCodexRunGraph(input: LoomSwarmCodexRunGraphInput, options?: LoomSwarmCodexRunGraphImportOptions): Promise<LoomRunGraphImportResult>;
43
+ export declare function importFrontierRunEvents(input: readonly FrontierRunEvent[] | string, options?: LoomFrontierRunImportOptions): Promise<LoomRunGraphImportResult>;
44
+ export declare function loomRunGraphSourceKind(graph: LoomRunGraph): LoomRunGraphSourceKind;
45
+ export declare function createLoomRunGraphPanelRecords(graph: LoomDecisionGraph): LoomPanelProjectionRecord[];
5
46
  //# sourceMappingURL=graph.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../src/graph.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,wBAAsB,aAAa,CAAC,OAAO,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,OAAO,CAAC,SAAS,CAAC,CAMvF"}
1
+ {"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../src/graph.ts"],"names":[],"mappings":"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"}