@shapeshift-labs/loom 0.1.16 → 0.1.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -34,6 +34,7 @@ Loom gives a repository a durable semantic workspace:
34
34
  - `.loom/index.json` records the current imported source graph.
35
35
  - `.loom/refs/` and `.loom/HEAD` track semantic graph snapshots.
36
36
  - `.loom/graph/current.json` is the current machine-readable source graph.
37
+ - `.loom/graph/runs/` stores durable swarm run graphs by run id.
37
38
  - `.loom/projections/` stores target-language projection plans.
38
39
  - `loom swarm ...` delegates to Frontier Swarm / Codex worker orchestration.
39
40
  - `loom ui ...` opens the dark Loom dashboard against a swarm run or collected
@@ -53,6 +54,9 @@ loom scan
53
54
  loom status --json
54
55
  loom snapshot -m "initial semantic graph"
55
56
  loom diff --json
57
+ loom run-graph status my-run --json
58
+ loom run-graph import-swarm agent-runs/my-run/collected/run-graph.json --run-id my-run
59
+ loom run-graph import-swarm agent-runs/my-run/live-run-graph-events.jsonl --run-id my-run
56
60
  loom project --to python
57
61
  loom capabilities
58
62
  loom version
@@ -119,6 +123,62 @@ Prints `.loom/graph/current.json`.
119
123
  loom graph [--json]
120
124
  ```
121
125
 
126
+ ### `loom run-graph`
127
+
128
+ Reads and writes durable run dependency graphs stored under
129
+ `.loom/graph/runs/`. Run ids are sanitized into stable filenames, so a run id
130
+ such as `agent-runs/my-run` is stored as
131
+ `.loom/graph/runs/agent-runs_my-run.json`.
132
+
133
+ ```sh
134
+ loom run-graph read [<run-id>] [--run-id <id>]
135
+ loom run-graph status [<run-id>] [--run-id <id>] [--json]
136
+ loom run-graph write-json <file|-> [--run-id <id>] [--json]
137
+ loom run-graph import-swarm <json-or-jsonl|-> [--run-id <id>] [--json]
138
+ ```
139
+
140
+ `read` prints the stored `loom.run-graph` JSON. `status` reports whether the
141
+ graph file is missing, present, or present but invalid without surfacing a raw
142
+ stack trace. `write-json` stores a JSON `loom.run-graph` document using the
143
+ existing Loom run graph writer; pass `-` to read from stdin. `import-swarm`
144
+ normalizes a `frontier.swarm-codex.run-graph` artifact, such as
145
+ `agent-runs/<run>/collected/run-graph.json`, or a live
146
+ `frontier.swarm-codex.live-run-graph-event` JSONL stream, such as
147
+ `agent-runs/<run>/live-run-graph-events.jsonl`, into Loom's durable
148
+ `.loom/graph/runs/` model. Imported graphs are stored as `loom.run-graph`
149
+ documents with `source: "frontier-swarm-codex"`, `sourceKind`, and
150
+ `sourceMetadata` pointing back to the original artifact path/run directory.
151
+ Live JSONL imports also record `sourceMetadata.eventCount` and
152
+ `sourceMetadata.eventTypes`. Native Loom graphs can use `source:
153
+ "loom-native"`; `status --json` includes `sourceKind` so tools can distinguish
154
+ native and imported graphs without parsing free-form metadata.
155
+
156
+ `loom.run-graph` also accepts an optional `decisionGraph` section for typed
157
+ durable decision graphs. The legacy `graph.nodes: string[]` and dependency
158
+ indexes stay compatible for older job graph readers, while `decisionGraph`
159
+ stores typed nodes, edges, events, snapshots, indexes, and records for evidence,
160
+ gates, semantic changes, merge candidates, tournaments, panels, replays, and
161
+ improvement loops. Built-in node kinds include `intent`, `task`, `worker`,
162
+ `candidate`, `evidence`, `gate`, `decision`, `merge`, `replay`, and `rsi`.
163
+ Swarm imports populate this section alongside the legacy graph.
164
+
165
+ Typed summaries include `summary.typedCounts` when imported data contains
166
+ recognizable intents, tasks, workers, candidates, gates, evidence, merges,
167
+ panels, tournaments, RSI loops, or semantic changes. `status` prints a compact
168
+ `typed graph:` line for non-JSON output. The JavaScript API also exports
169
+ projection and chunk helpers so UI/read-models can be derived from graph truth
170
+ instead of becoming separate sources of truth:
171
+
172
+ ```ts
173
+ const chain = buildRunGraphChainChunk(['intent:demo', 'task:demo', 'worker:demo']);
174
+ const mergeGate = buildRunGraphPatternChunk('merge-gate', [
175
+ 'candidate:demo',
176
+ 'gate:tests',
177
+ 'merge:demo'
178
+ ]);
179
+ const panels = createLoomRunGraphPanelRecords(runGraph.decisionGraph);
180
+ ```
181
+
122
182
  ### `loom diff`
123
183
 
124
184
  Compares the saved graph with the current source tree without mutating `.loom/`.
@@ -362,8 +422,17 @@ import {
362
422
  snapshotLoomProject,
363
423
  diffLoomProject,
364
424
  createLoomProjectionPlan,
425
+ importSwarmCodexRunGraph,
426
+ normalizeSwarmCodexLiveRunGraphEvents,
427
+ normalizeSwarmCodexRunGraph,
428
+ parseSwarmCodexRunGraphInput,
429
+ buildRunGraphChainChunk,
430
+ buildRunGraphPatternChunk,
431
+ createLoomRunGraphPanelRecords,
432
+ readLoomRunGraph,
365
433
  readLoomCapabilities,
366
- runDelegateCommand
434
+ runDelegateCommand,
435
+ writeLoomRunGraph
367
436
  } from '@shapeshift-labs/loom';
368
437
 
369
438
  await initLoomProject({ name: 'demo', include: ['src/**/*.ts'] });
@@ -371,6 +440,38 @@ const scan = await scanLoomProject();
371
440
  const snapshot = await snapshotLoomProject({ message: 'semantic checkpoint' });
372
441
  const diff = await diffLoomProject();
373
442
  const projection = await createLoomProjectionPlan({ target: 'python' });
443
+ await writeLoomRunGraph({
444
+ kind: 'loom.run-graph',
445
+ version: 1,
446
+ generatedAt: new Date().toISOString(),
447
+ root: process.cwd(),
448
+ runId: 'demo',
449
+ summary: { nodes: 1, edges: 0, roots: 1, leaves: 1, issues: 0 },
450
+ graph: {
451
+ nodes: ['task-1'],
452
+ edges: [],
453
+ dependentsByJobId: { 'task-1': [] },
454
+ dependenciesByJobId: { 'task-1': [] },
455
+ roots: ['task-1'],
456
+ leaves: ['task-1'],
457
+ issues: []
458
+ }
459
+ });
460
+ const runGraph = await readLoomRunGraph({ runId: 'demo' });
461
+ const imported = await importSwarmCodexRunGraph(swarmCodexRunGraphJson, {
462
+ runId: 'agent-runs/demo',
463
+ sourcePath: 'agent-runs/demo/collected/run-graph.json'
464
+ });
465
+ const normalized = normalizeSwarmCodexRunGraph(swarmCodexRunGraphJson, {
466
+ runId: 'agent-runs/demo'
467
+ });
468
+ const liveEvents = parseSwarmCodexRunGraphInput(liveRunGraphJsonl);
469
+ const liveGraph = Array.isArray(liveEvents)
470
+ ? normalizeSwarmCodexLiveRunGraphEvents(liveEvents, {
471
+ runId: 'agent-runs/demo',
472
+ sourcePath: 'agent-runs/demo/live-run-graph-events.jsonl'
473
+ })
474
+ : normalizeSwarmCodexRunGraph(liveEvents);
374
475
  const capabilities = await readLoomCapabilities();
375
476
  await runDelegateCommand('lang', ['import', 'src/app.ts', '--sidecar']);
376
477
  ```
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAmBA,wBAAsB,UAAU,CAAC,IAAI,WAAwB,GAAG,OAAO,CAAC,MAAM,CAAC,CAqD9E"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AA6BA,wBAAsB,UAAU,CAAC,IAAI,WAAwB,GAAG,OAAO,CAAC,MAAM,CAAC,CAuD9E"}
package/dist/cli.js CHANGED
@@ -2,14 +2,15 @@
2
2
  import fs from 'node:fs';
3
3
  import { pathToFileURL } from 'node:url';
4
4
  import { parseArgs, boolArg, listArg, stringArg } from './args.js';
5
- import { packageVersion } from './common.js';
5
+ import { abs, packageVersion, pathExists, readJson, resolveRoot } from './common.js';
6
6
  import { readLoomCapabilities } from './capabilities.js';
7
+ import { readLoomConfig } from './config.js';
7
8
  import { helpText } from './help.js';
8
9
  import { printResult } from './output.js';
9
10
  import { initLoomProject } from './init.js';
10
11
  import { scanLoomProject } from './scan.js';
11
12
  import { readLoomStatus, doctorLoomProject } from './status.js';
12
- import { readLoomGraph } from './graph.js';
13
+ import { importFrontierRunEvents, importSwarmCodexRunGraph, loomRunGraphSourceKind, parseFrontierRunEventsInput, parseSwarmCodexRunGraphInput, readLoomGraph, readLoomRunGraph, writeLoomRunGraph } from './graph.js';
13
14
  import { diffLoomProject } from './diff.js';
14
15
  import { createLoomProjectionPlan } from './project.js';
15
16
  import { catLoomObject, snapshotLoomProject } from './snapshot.js';
@@ -49,6 +50,9 @@ export async function runLoomCli(argv = process.argv.slice(2)) {
49
50
  else if (command === 'graph') {
50
51
  printResult(await readLoomGraph(), json);
51
52
  }
53
+ else if (command === 'run-graph') {
54
+ return await runLoomRunGraphCommand(args, json);
55
+ }
52
56
  else if (command === 'diff') {
53
57
  printResult(await diffLoomProject(), json);
54
58
  }
@@ -87,6 +91,160 @@ export async function runLoomCli(argv = process.argv.slice(2)) {
87
91
  return 1;
88
92
  }
89
93
  }
94
+ async function runLoomRunGraphCommand(args, json) {
95
+ const subcommand = args._[0] ?? 'status';
96
+ if (subcommand === 'help' || subcommand === '--help' || subcommand === '-h') {
97
+ process.stdout.write(runGraphHelpText());
98
+ return 0;
99
+ }
100
+ if (subcommand === 'read') {
101
+ const runId = runGraphRunId(args, 1);
102
+ printResult(await readLoomRunGraph({ root: stringArg(args.root), runId }), true);
103
+ return 0;
104
+ }
105
+ if (subcommand === 'status') {
106
+ printResult(await readLoomRunGraphStatus({ root: stringArg(args.root), runId: runGraphRunId(args, 1) }), json);
107
+ return 0;
108
+ }
109
+ if (subcommand === 'write-json') {
110
+ const input = args._[1] ?? stringArg(args.input);
111
+ if (!input)
112
+ throw new Error('run-graph write-json requires <file|->');
113
+ const graph = await readRunGraphJson(input);
114
+ const targetRunId = runGraphRunId(args, 2) ?? graph.runId ?? 'current';
115
+ const path = await writeLoomRunGraph(graph, { root: stringArg(args.root), runId: targetRunId });
116
+ printResult({
117
+ ok: true,
118
+ message: `wrote loom run graph ${targetRunId}`,
119
+ path,
120
+ runId: targetRunId,
121
+ present: true,
122
+ graphSummary: graph.summary
123
+ }, json);
124
+ return 0;
125
+ }
126
+ if (subcommand === 'import-swarm' || subcommand === 'import-swarm-codex') {
127
+ const input = args._[1] ?? stringArg(args.input);
128
+ if (!input)
129
+ throw new Error('run-graph import-swarm requires <file|->');
130
+ const graph = parseSwarmCodexRunGraphInput(readTextInput(input));
131
+ const targetRunId = runGraphRunId(args, 2);
132
+ printResult(await importSwarmCodexRunGraph(graph, {
133
+ root: stringArg(args.root),
134
+ runId: targetRunId,
135
+ sourcePath: input === '-' ? 'stdin' : input
136
+ }), json);
137
+ return 0;
138
+ }
139
+ if (subcommand === 'import-frontier-run' || subcommand === 'import-run') {
140
+ const input = args._[1] ?? stringArg(args.input);
141
+ if (!input)
142
+ throw new Error('run-graph import-frontier-run requires <run-events.jsonl|->');
143
+ const events = parseFrontierRunEventsInput(readTextInput(input));
144
+ const targetRunId = runGraphRunId(args, 2);
145
+ printResult(await importFrontierRunEvents(events, {
146
+ root: stringArg(args.root),
147
+ runId: targetRunId,
148
+ sourcePath: input === '-' ? 'stdin' : input
149
+ }), json);
150
+ return 0;
151
+ }
152
+ throw new Error(`unknown run-graph command: ${subcommand}`);
153
+ }
154
+ async function readLoomRunGraphStatus(options) {
155
+ const root = resolveRoot(options.root);
156
+ const runId = options.runId ?? 'current';
157
+ const label = options.runId ?? 'current';
158
+ let path;
159
+ try {
160
+ const config = await readLoomConfig(root);
161
+ path = abs(root, `${config.generated.graph}/runs/${loomRunGraphFileName(options.runId)}.json`);
162
+ }
163
+ catch (error) {
164
+ return {
165
+ ok: false,
166
+ message: errorMessage(error),
167
+ runId: label,
168
+ present: false
169
+ };
170
+ }
171
+ if (!(await pathExists(path))) {
172
+ return {
173
+ ok: false,
174
+ message: `missing loom run graph for ${label}`,
175
+ path,
176
+ runId: label,
177
+ present: false
178
+ };
179
+ }
180
+ try {
181
+ const graph = await readLoomRunGraph(options);
182
+ const sourceKind = loomRunGraphSourceKind(graph);
183
+ return {
184
+ ok: true,
185
+ message: `found loom run graph ${graph.runId ?? runId}`,
186
+ path,
187
+ runId: graph.runId ?? runId,
188
+ present: true,
189
+ planId: graph.planId,
190
+ source: graph.source ?? sourceKind,
191
+ sourceKind,
192
+ sourceMetadata: graph.sourceMetadata,
193
+ graphSummary: graph.summary
194
+ };
195
+ }
196
+ catch (error) {
197
+ return {
198
+ ok: false,
199
+ message: `invalid loom run graph for ${label}: ${errorMessage(error)}`,
200
+ path,
201
+ runId: label,
202
+ present: true
203
+ };
204
+ }
205
+ }
206
+ function runGraphRunId(args, positionalIndex) {
207
+ return stringArg(args['run-id'] ?? args.runId ?? args.run ?? args.id) ?? args._[positionalIndex];
208
+ }
209
+ async function readRunGraphJson(input) {
210
+ return readJsonInput(input);
211
+ }
212
+ async function readJsonInput(input) {
213
+ if (input === '-')
214
+ return JSON.parse(readTextInput(input));
215
+ return readJson(input);
216
+ }
217
+ function readTextInput(input) {
218
+ if (input === '-')
219
+ return fs.readFileSync(0, 'utf8');
220
+ return fs.readFileSync(input, 'utf8');
221
+ }
222
+ function loomRunGraphFileName(runId = 'current') {
223
+ const cleaned = runId.trim().replace(/[^A-Za-z0-9._-]+/g, '_').replace(/^_+|_+$/g, '');
224
+ return cleaned || 'current';
225
+ }
226
+ function runGraphHelpText() {
227
+ return `loom run-graph - durable swarm run dependency graph helpers
228
+
229
+ Usage:
230
+ loom run-graph read [<run-id>] [--run-id <id>]
231
+ loom run-graph status [<run-id>] [--run-id <id>] [--json]
232
+ loom run-graph write-json <file|-> [--run-id <id>] [--json]
233
+ loom run-graph import-swarm <json-or-jsonl|-> [--run-id <id>] [--json]
234
+ loom run-graph import-frontier-run <run-events.jsonl|-> [--run-id <id>] [--json]
235
+
236
+ Examples:
237
+ loom run-graph status agent-run-2026 --json
238
+ loom run-graph read agent-run-2026
239
+ loom run-graph write-json run-graph.json --run-id agent-run-2026
240
+ loom run-graph import-swarm agent-runs/my-run/collected/run-graph.json --run-id agent-runs/my-run
241
+ loom run-graph import-swarm agent-runs/my-run/live-run-graph-events.jsonl --run-id agent-runs/my-run
242
+ loom run-graph import-frontier-run agent-runs/my-run/run-events.jsonl --run-id agent-runs/my-run
243
+ `;
244
+ }
245
+ function errorMessage(error) {
246
+ return error instanceof Error ? error.message : String(error);
247
+ }
90
248
  function isCliEntrypoint() {
91
249
  if (!process.argv[1])
92
250
  return false;
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAGtE,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3D,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC;IAClC,IAAI,OAAO,KAAK,OAAO;QAAE,OAAO,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/D,IAAI,iBAAiB,CAAC,OAAO,CAAC;QAAE,OAAO,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAClF,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACtC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACvC,IAAI,CAAC;QACH,IAAI,OAAO,KAAK,MAAM,IAAI,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACnE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;QACnC,CAAC;aAAM,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,WAAW,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YAChF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,cAAc,CAAC,uBAAuB,CAAC,IAAI,SAAS,IAAI,CAAC,CAAC;QAC1F,CAAC;aAAM,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;YAC9B,WAAW,CAAC,MAAM,eAAe,CAAC;gBAChC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;gBAC1B,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC;gBAC7C,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;gBAC9B,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAA+B;gBAC/D,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC;aAClC,CAAC,EAAE,IAAI,CAAC,CAAC;QACZ,CAAC;aAAM,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;YAC9B,MAAM,MAAM,GAAG,MAAM,eAAe,EAAE,CAAC;YACvC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAClD,CAAC;aAAM,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;YAChC,WAAW,CAAC,MAAM,cAAc,EAAE,EAAE,IAAI,CAAC,CAAC;QAC5C,CAAC;aAAM,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;YAC/B,WAAW,CAAC,MAAM,aAAa,EAAE,EAAE,IAAI,CAAC,CAAC;QAC3C,CAAC;aAAM,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;YAC9B,WAAW,CAAC,MAAM,eAAe,EAAE,EAAE,IAAI,CAAC,CAAC;QAC7C,CAAC;aAAM,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC;YAClC,WAAW,CAAC,MAAM,mBAAmB,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;QAC/F,CAAC;aAAM,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC;YAClC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACrB,IAAI,CAAC,EAAE;gBAAE,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;YAC1D,WAAW,CAAC,MAAM,aAAa,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;QACjD,CAAC;aAAM,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YACjC,WAAW,CAAC,MAAM,wBAAwB,CAAC;gBACzC,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE;gBAChC,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC;aAC3C,CAAC,EAAE,IAAI,CAAC,CAAC;QACZ,CAAC;aAAM,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;YAChC,WAAW,CAAC,MAAM,iBAAiB,EAAE,EAAE,IAAI,CAAC,CAAC;QAC/C,CAAC;aAAM,IAAI,OAAO,KAAK,cAAc,EAAE,CAAC;YACtC,WAAW,CAAC,MAAM,oBAAoB,EAAE,EAAE,IAAI,CAAC,CAAC;QAClD,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;QACjD,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,IAAI,IAAI;YAAE,WAAW,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,IAAI,CAAC,CAAC;;YAC/C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,IAAI,CAAC,CAAC;QAC1C,OAAO,CAAC,CAAC;IACX,CAAC;AACH,CAAC;AAED,SAAS,eAAe;IACtB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACnC,OAAO,aAAa,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;AAClF,CAAC;AAED,IAAI,eAAe,EAAE,EAAE,CAAC;IACtB,UAAU,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;QACzB,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAC1B,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { FrontierRun, FrontierRunProjection } from '@shapeshift-labs/frontier-run';
2
+ import type { LoomDecisionGraph, LoomRunGraphSourceKind, LoomRunJobGraph } from './types.js';
3
+ export declare const FRONTIER_RUN_GRAPH_SOURCE: LoomRunGraphSourceKind;
4
+ export declare function normalizeFrontierRunJobGraph(input: FrontierRun['graph']): LoomRunJobGraph;
5
+ export declare function normalizeFrontierRunDecisionGraph(projection: FrontierRunProjection): LoomDecisionGraph;
6
+ //# sourceMappingURL=graph-frontier-run-convert.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph-frontier-run-convert.d.ts","sourceRoot":"","sources":["../src/graph-frontier-run-convert.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EAIX,qBAAqB,EACtB,MAAM,+BAA+B,CAAC;AAOvC,OAAO,KAAK,EACV,iBAAiB,EAWjB,sBAAsB,EACtB,eAAe,EAChB,MAAM,YAAY,CAAC;AAEpB,eAAO,MAAM,yBAAyB,EAAE,sBAAuC,CAAC;AAEhF,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,GAAG,eAAe,CA6CzF;AAED,wBAAgB,iCAAiC,CAAC,UAAU,EAAE,qBAAqB,GAAG,iBAAiB,CAuBtG"}
@@ -0,0 +1,219 @@
1
+ import { nowIso } from './common.js';
2
+ import { frontierRunStringFromData, normalizeFrontierRunDecisionRecords, toFrontierRunJsonRecord } from './graph-frontier-run-records.js';
3
+ export const FRONTIER_RUN_GRAPH_SOURCE = 'frontier-run';
4
+ export function normalizeFrontierRunJobGraph(input) {
5
+ const nodeIds = new Set(Object.keys(input.nodes));
6
+ const edges = [];
7
+ const issues = [];
8
+ const seenEdges = new Set();
9
+ for (const edge of Object.values(input.edges)) {
10
+ const from = edge.from;
11
+ const to = edge.to;
12
+ if (!from || !to) {
13
+ issues.push({ code: 'invalid-edge', severity: 'warning', message: `frontier-run edge ${edge.id || '<unknown>'} is missing from/to` });
14
+ continue;
15
+ }
16
+ if (!nodeIds.has(from)) {
17
+ issues.push({ code: 'missing-edge-node', severity: 'warning', message: `frontier-run edge ${edge.id || '<unknown>'} references missing source node ${from}`, path: `/graph/edges/${edge.id || edges.length}/from` });
18
+ nodeIds.add(from);
19
+ }
20
+ if (!nodeIds.has(to)) {
21
+ issues.push({ code: 'missing-edge-node', severity: 'warning', message: `frontier-run edge ${edge.id || '<unknown>'} references missing target node ${to}`, path: `/graph/edges/${edge.id || edges.length}/to` });
22
+ nodeIds.add(to);
23
+ }
24
+ const normalized = { from, to, type: normalizeFrontierRunEdgeKind(edge.type) };
25
+ const key = `${normalized.type}\0${normalized.from}\0${normalized.to}`;
26
+ if (seenEdges.has(key))
27
+ continue;
28
+ seenEdges.add(key);
29
+ edges.push(normalized);
30
+ }
31
+ const nodes = Array.from(nodeIds).sort();
32
+ edges.sort((left, right) => left.from.localeCompare(right.from) || left.to.localeCompare(right.to) || left.type.localeCompare(right.type));
33
+ const dependentsByJobId = emptyGraphIndex(nodes);
34
+ const dependenciesByJobId = emptyGraphIndex(nodes);
35
+ for (const edge of edges) {
36
+ dependentsByJobId[edge.from]?.push(edge.to);
37
+ dependenciesByJobId[edge.to]?.push(edge.from);
38
+ }
39
+ sortGraphIndex(dependentsByJobId);
40
+ sortGraphIndex(dependenciesByJobId);
41
+ return {
42
+ nodes,
43
+ edges,
44
+ dependentsByJobId,
45
+ dependenciesByJobId,
46
+ roots: nodes.filter((node) => dependenciesByJobId[node]?.length === 0),
47
+ leaves: nodes.filter((node) => dependentsByJobId[node]?.length === 0),
48
+ issues
49
+ };
50
+ }
51
+ export function normalizeFrontierRunDecisionGraph(projection) {
52
+ const nodes = Object.values(projection.run.graph.nodes).map((node) => normalizeFrontierRunDecisionNode(node)).sort((left, right) => left.id.localeCompare(right.id));
53
+ const edges = Object.values(projection.run.graph.edges).map((edge) => normalizeFrontierRunDecisionEdge(edge)).sort((left, right) => left.id.localeCompare(right.id));
54
+ const events = projection.events.map((event, index) => normalizeFrontierRunDecisionEvent(event, index)).sort((left, right) => left.generatedAt.localeCompare(right.generatedAt) || left.id.localeCompare(right.id));
55
+ const records = normalizeFrontierRunDecisionRecords(nodes);
56
+ return {
57
+ kind: 'loom.decision-graph',
58
+ version: 1,
59
+ generatedAt: projection.run.updatedAt || nowIso(),
60
+ nodes,
61
+ edges,
62
+ events,
63
+ snapshots: [normalizeFrontierRunDecisionSnapshot(projection.run, nodes, edges, events, records)],
64
+ indexes: createDecisionGraphIndexes(nodes, edges),
65
+ records,
66
+ metadata: toFrontierRunJsonRecord({
67
+ sourceKind: FRONTIER_RUN_GRAPH_SOURCE,
68
+ runId: projection.run.id,
69
+ goal: projection.run.goal,
70
+ eventCount: projection.events.length,
71
+ heads: projection.run.heads
72
+ })
73
+ };
74
+ }
75
+ function normalizeFrontierRunDecisionNode(node) {
76
+ const kind = normalizeFrontierRunNodeKind(node.kind);
77
+ const data = toFrontierRunJsonRecord(node);
78
+ const metadata = toFrontierRunJsonRecord('metadata' in node ? node.metadata : undefined);
79
+ const taskId = node.kind === 'task' ? node.id : frontierRunStringFromData(data, 'taskId') ?? frontierRunStringFromData(metadata, 'taskId');
80
+ const jobId = frontierRunStringFromData(data, 'jobId') ?? frontierRunStringFromData(metadata, 'jobId');
81
+ const lane = node.kind === 'lane' ? node.id : frontierRunStringFromData(data, 'laneId') ?? frontierRunStringFromData(data, 'lane') ?? frontierRunStringFromData(metadata, 'lane');
82
+ const pathValue = frontierRunStringFromData(data, 'path') ?? frontierRunStringFromData(data, 'uri');
83
+ const status = frontierRunStringFromData(data, 'status');
84
+ const outcome = node.kind === 'decision' ? node.decision : node.kind === 'evidence' ? node.result : node.kind === 'verification' ? node.status : undefined;
85
+ return {
86
+ id: node.id,
87
+ kind,
88
+ ...(kind !== node.kind ? { sourceKind: node.kind } : {}),
89
+ ...(node.title ? { label: node.title } : {}),
90
+ ...(taskId ? { taskId } : {}),
91
+ ...(jobId ? { jobId } : {}),
92
+ ...(lane ? { lane } : {}),
93
+ ...(status ? { status } : {}),
94
+ ...(outcome ? { outcome } : {}),
95
+ ...(pathValue ? { path: pathValue } : {}),
96
+ ...(node.createdAt ? { createdAt: node.createdAt } : {}),
97
+ ...(node.updatedAt ? { updatedAt: node.updatedAt } : {}),
98
+ ...(node.kind === 'attempt' ? { workerId: node.actorId ?? node.runnerId ?? node.id } : {}),
99
+ ...(node.kind === 'patch' ? { candidateId: node.id } : {}),
100
+ ...(data ? { data } : {})
101
+ };
102
+ }
103
+ function normalizeFrontierRunDecisionEdge(edge) {
104
+ const kind = normalizeFrontierRunEdgeKind(edge.type);
105
+ const data = toFrontierRunJsonRecord(edge.metadata);
106
+ return {
107
+ id: edge.id || `${kind}:${edge.from}->${edge.to}`,
108
+ kind,
109
+ from: edge.from,
110
+ to: edge.to,
111
+ ...(kind !== edge.type ? { sourceKind: edge.type } : {}),
112
+ ...(edge.createdAt ? { createdAt: edge.createdAt } : {}),
113
+ ...(data ? { data } : {})
114
+ };
115
+ }
116
+ function normalizeFrontierRunDecisionEvent(event, index) {
117
+ const nodes = frontierRunEventNodes(event).map((node) => normalizeFrontierRunDecisionNode(node)).sort((left, right) => left.id.localeCompare(right.id));
118
+ const edges = frontierRunEventEdges(event).map((edge) => normalizeFrontierRunDecisionEdge(edge)).sort((left, right) => left.id.localeCompare(right.id));
119
+ const data = toFrontierRunJsonRecord({ id: event.id, actorId: event.actorId, actorSeq: event.actorSeq, parents: event.parents, previousActorEventId: event.previousActorEventId, payload: event.payload, hash: event.hash });
120
+ return {
121
+ kind: 'loom.decision-graph.event',
122
+ version: 1,
123
+ id: event.id || `frontier-run-event:${index}`,
124
+ type: event.type,
125
+ generatedAt: event.time,
126
+ runId: event.runId,
127
+ ...(nodes.length ? { nodeIds: nodes.map((node) => node.id), nodes } : {}),
128
+ ...(edges.length ? { edgeIds: edges.map((edge) => edge.id), edges } : {}),
129
+ ...(data ? { data } : {})
130
+ };
131
+ }
132
+ function normalizeFrontierRunDecisionSnapshot(run, nodes, edges, events, records) {
133
+ return {
134
+ kind: 'loom.decision-graph.snapshot',
135
+ version: 1,
136
+ id: `snapshot:${run.id}`,
137
+ generatedAt: run.updatedAt || nowIso(),
138
+ label: 'current',
139
+ nodeIds: nodes.map((node) => node.id),
140
+ edgeIds: edges.map((edge) => edge.id),
141
+ eventIds: events.map((event) => event.id),
142
+ summary: { nodes: nodes.length, edges: edges.length, events: events.length, records: records.length },
143
+ data: toFrontierRunJsonRecord({ sourceKind: FRONTIER_RUN_GRAPH_SOURCE, runId: run.id, goal: run.goal })
144
+ };
145
+ }
146
+ function createDecisionGraphIndexes(nodes, edges) {
147
+ const indexes = { byNodeKind: {}, byEdgeKind: {}, byTaskId: {}, byJobId: {}, byLane: {} };
148
+ for (const node of nodes) {
149
+ addIndexValue(indexes.byNodeKind, node.kind, node.id);
150
+ if (node.taskId)
151
+ addIndexValue(indexes.byTaskId, node.taskId, node.id);
152
+ if (node.jobId)
153
+ addIndexValue(indexes.byJobId, node.jobId, node.id);
154
+ if (node.lane)
155
+ addIndexValue(indexes.byLane, node.lane, node.id);
156
+ }
157
+ for (const edge of edges)
158
+ addIndexValue(indexes.byEdgeKind, edge.kind, edge.id);
159
+ sortGraphIndex(indexes.byNodeKind);
160
+ sortGraphIndex(indexes.byEdgeKind);
161
+ sortGraphIndex(indexes.byTaskId);
162
+ sortGraphIndex(indexes.byJobId);
163
+ sortGraphIndex(indexes.byLane);
164
+ return indexes;
165
+ }
166
+ function addIndexValue(index, key, value) {
167
+ const values = index[key] ?? [];
168
+ if (!values.includes(value))
169
+ values.push(value);
170
+ index[key] = values;
171
+ }
172
+ function normalizeFrontierRunNodeKind(kind) {
173
+ if (kind === 'goal')
174
+ return 'intent';
175
+ if (kind === 'attempt')
176
+ return 'worker';
177
+ if (kind === 'patch')
178
+ return 'candidate';
179
+ if (kind === 'artifact')
180
+ return 'evidence';
181
+ if (kind === 'verification')
182
+ return 'gate';
183
+ if (kind === 'human-question' || kind === 'lease')
184
+ return 'decision';
185
+ return kind;
186
+ }
187
+ function normalizeFrontierRunEdgeKind(kind) {
188
+ if (kind === 'belongs-to-lane' || kind === 'contains-task' || kind === 'attempts-task')
189
+ return 'parent-task';
190
+ if (kind === 'produces-artifact' || kind === 'produces-evidence' || kind === 'produces-patch')
191
+ return 'produces';
192
+ if (kind === 'verified-by')
193
+ return 'verifies';
194
+ if (kind === 'decided-by')
195
+ return 'approves';
196
+ return kind;
197
+ }
198
+ function frontierRunEventNodes(event) {
199
+ const payload = event.payload;
200
+ return ['node', 'artifact', 'decision', 'lease'].map((key) => payload[key]).filter(isFrontierRunNode);
201
+ }
202
+ function frontierRunEventEdges(event) {
203
+ const payload = event.payload;
204
+ return isFrontierRunEdge(payload.edge) ? [payload.edge] : [];
205
+ }
206
+ function isFrontierRunNode(value) {
207
+ return !!value && typeof value === 'object' && !Array.isArray(value) && typeof value.id === 'string' && typeof value.kind === 'string';
208
+ }
209
+ function isFrontierRunEdge(value) {
210
+ return !!value && typeof value === 'object' && !Array.isArray(value) && typeof value.id === 'string' && typeof value.from === 'string' && typeof value.to === 'string' && typeof value.type === 'string';
211
+ }
212
+ function emptyGraphIndex(nodes) {
213
+ return Object.fromEntries(nodes.map((node) => [node, []]));
214
+ }
215
+ function sortGraphIndex(index) {
216
+ for (const values of Object.values(index))
217
+ values.sort();
218
+ }
219
+ //# sourceMappingURL=graph-frontier-run-convert.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph-frontier-run-convert.js","sourceRoot":"","sources":["../src/graph-frontier-run-convert.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { JsonValue, LoomDecisionGraph, LoomDecisionGraphNode, LoomDecisionGraphRecord, LoomPanelProjectionRecord, LoomRunGraphTypedCounts } from './types.js';
2
+ export declare function createFrontierRunPanelRecords(graph: LoomDecisionGraph): LoomPanelProjectionRecord[];
3
+ export declare function normalizeFrontierRunDecisionRecords(nodes: readonly LoomDecisionGraphNode[]): LoomDecisionGraphRecord[];
4
+ export declare function summarizeFrontierRunTypedCounts(graph: LoomDecisionGraph): LoomRunGraphTypedCounts;
5
+ export declare function toFrontierRunJsonValue(value: unknown): JsonValue;
6
+ export declare function toFrontierRunJsonRecord(value: unknown): Record<string, JsonValue> | undefined;
7
+ export declare function frontierRunStringFromData(data: Record<string, JsonValue> | undefined, key: string): string | undefined;
8
+ export declare function uniqueFrontierRunStrings(values: readonly string[]): string[];
9
+ //# sourceMappingURL=graph-frontier-run-records.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph-frontier-run-records.d.ts","sourceRoot":"","sources":["../src/graph-frontier-run-records.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EACT,iBAAiB,EACjB,qBAAqB,EACrB,uBAAuB,EAGvB,yBAAyB,EACzB,uBAAuB,EACxB,MAAM,YAAY,CAAC;AAEpB,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,iBAAiB,GAAG,yBAAyB,EAAE,CAUnG;AAED,wBAAgB,mCAAmC,CAAC,KAAK,EAAE,SAAS,qBAAqB,EAAE,GAAG,uBAAuB,EAAE,CA4BtH;AAED,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,iBAAiB,GAAG,uBAAuB,CAYjG;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,SAAS,CAchE;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,SAAS,CAI7F;AAED,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,SAAS,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAGtH;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAE5E"}