@opensip-cli/graph 0.1.6 → 0.1.8
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 +2 -2
- package/dist/__tests__/cli/graph-execute.test.js +7 -5
- package/dist/__tests__/cli/graph-execute.test.js.map +1 -1
- package/dist/__tests__/cli/graph.test.js +18 -12
- package/dist/__tests__/cli/graph.test.js.map +1 -1
- package/dist/__tests__/internal-surface.test.js +3 -0
- package/dist/__tests__/internal-surface.test.js.map +1 -1
- package/dist/__tests__/persistence/session-replay.test.js +7 -4
- package/dist/__tests__/persistence/session-replay.test.js.map +1 -1
- package/dist/__tests__/rules/registry.test.js +2 -2
- package/dist/__tests__/rules/registry.test.js.map +1 -1
- package/dist/__tests__/test-utils/with-graph-scope.d.ts.map +1 -1
- package/dist/__tests__/test-utils/with-graph-scope.js +2 -2
- package/dist/__tests__/test-utils/with-graph-scope.js.map +1 -1
- package/dist/__tests__/tool-branches.test.d.ts +3 -3
- package/dist/__tests__/tool-branches.test.js +25 -14
- package/dist/__tests__/tool-branches.test.js.map +1 -1
- package/dist/__tests__/tool-register.test.js +61 -77
- package/dist/__tests__/tool-register.test.js.map +1 -1
- package/dist/__tests__/tool.test.d.ts +4 -4
- package/dist/__tests__/tool.test.js +31 -16
- package/dist/__tests__/tool.test.js.map +1 -1
- package/dist/cli/__tests__/build-envelope.test.js +77 -0
- package/dist/cli/__tests__/build-envelope.test.js.map +1 -1
- package/dist/cli/__tests__/graph-envelope-view.test.d.ts +2 -0
- package/dist/cli/__tests__/graph-envelope-view.test.d.ts.map +1 -0
- package/dist/cli/__tests__/graph-envelope-view.test.js +97 -0
- package/dist/cli/__tests__/graph-envelope-view.test.js.map +1 -0
- package/dist/cli/__tests__/graph-list.test.d.ts +2 -0
- package/dist/cli/__tests__/graph-list.test.d.ts.map +1 -0
- package/dist/cli/__tests__/graph-list.test.js +20 -0
- package/dist/cli/__tests__/graph-list.test.js.map +1 -0
- package/dist/cli/__tests__/shard-worker.test.js +22 -0
- package/dist/cli/__tests__/shard-worker.test.js.map +1 -1
- package/dist/cli/equivalence-check-command.d.ts.map +1 -1
- package/dist/cli/equivalence-check-command.js +0 -2
- package/dist/cli/equivalence-check-command.js.map +1 -1
- package/dist/cli/graph/graph-aux-command-specs.d.ts +54 -27
- package/dist/cli/graph/graph-aux-command-specs.d.ts.map +1 -1
- package/dist/cli/graph/graph-aux-command-specs.js +359 -265
- package/dist/cli/graph/graph-aux-command-specs.js.map +1 -1
- package/dist/cli/graph-envelope-view.d.ts +41 -0
- package/dist/cli/graph-envelope-view.d.ts.map +1 -0
- package/dist/cli/graph-envelope-view.js +133 -0
- package/dist/cli/graph-envelope-view.js.map +1 -0
- package/dist/cli/graph-list.d.ts +29 -0
- package/dist/cli/graph-list.d.ts.map +1 -0
- package/dist/cli/graph-list.js +44 -0
- package/dist/cli/graph-list.js.map +1 -0
- package/dist/cli/graph-report.d.ts +16 -6
- package/dist/cli/graph-report.d.ts.map +1 -1
- package/dist/cli/graph-report.js +10 -6
- package/dist/cli/graph-report.js.map +1 -1
- package/dist/cli/graph-runner.d.ts.map +1 -1
- package/dist/cli/graph-runner.js +23 -10
- package/dist/cli/graph-runner.js.map +1 -1
- package/dist/cli/graph-worker.d.ts.map +1 -1
- package/dist/cli/graph-worker.js +1 -0
- package/dist/cli/graph-worker.js.map +1 -1
- package/dist/cli/graph.d.ts.map +1 -1
- package/dist/cli/graph.js +30 -25
- package/dist/cli/graph.js.map +1 -1
- package/dist/cli/lookup.d.ts.map +1 -1
- package/dist/cli/lookup.js +0 -2
- package/dist/cli/lookup.js.map +1 -1
- package/dist/cli/orchestrate/__tests__/shard-runner-correlation.test.d.ts +22 -0
- package/dist/cli/orchestrate/__tests__/shard-runner-correlation.test.d.ts.map +1 -0
- package/dist/cli/orchestrate/__tests__/shard-runner-correlation.test.js +208 -0
- package/dist/cli/orchestrate/__tests__/shard-runner-correlation.test.js.map +1 -0
- package/dist/cli/orchestrate/shard-model.d.ts +17 -0
- package/dist/cli/orchestrate/shard-model.d.ts.map +1 -1
- package/dist/cli/orchestrate/shard-runner.d.ts +31 -1
- package/dist/cli/orchestrate/shard-runner.d.ts.map +1 -1
- package/dist/cli/orchestrate/shard-runner.js +215 -11
- package/dist/cli/orchestrate/shard-runner.js.map +1 -1
- package/dist/cli/orchestrate/sharded-graph.d.ts.map +1 -1
- package/dist/cli/orchestrate/sharded-graph.js +32 -3
- package/dist/cli/orchestrate/sharded-graph.js.map +1 -1
- package/dist/cli/shard-worker.d.ts.map +1 -1
- package/dist/cli/shard-worker.js +127 -11
- package/dist/cli/shard-worker.js.map +1 -1
- package/dist/cli/symbol-index.d.ts.map +1 -1
- package/dist/cli/symbol-index.js +0 -2
- package/dist/cli/symbol-index.js.map +1 -1
- package/dist/internal.d.ts +1 -0
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.js +5 -0
- package/dist/internal.js.map +1 -1
- package/dist/persistence/schema.d.ts.map +1 -1
- package/dist/persistence/schema.js +18 -0
- package/dist/persistence/schema.js.map +1 -1
- package/dist/persistence/session-replay.d.ts +9 -4
- package/dist/persistence/session-replay.d.ts.map +1 -1
- package/dist/persistence/session-replay.js +8 -12
- package/dist/persistence/session-replay.js.map +1 -1
- package/dist/tool.d.ts.map +1 -1
- package/dist/tool.js +37 -118
- package/dist/tool.js.map +1 -1
- package/package.json +22 -26
package/dist/cli/shard-worker.js
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
// @fitness-ignore-file no-direct-stdout-in-tool-engine -- subprocess IPC protocol: the worker serializes its ShardBuildResult to stdout and the parent (shard runner) reads stdout to EOF. This is not run output through the render seam; it is the wire format between two CLI processes.
|
|
2
|
-
// @fitness-ignore-file only-documented-toolcli-seams -- same rationale as above: this stdout write is the worker↔parent IPC wire, not user-facing run output through a ToolCliContext seam.
|
|
3
1
|
/**
|
|
4
2
|
* `graph-shard-worker <specPath>` — the per-shard build subprocess.
|
|
5
3
|
*
|
|
@@ -18,38 +16,153 @@
|
|
|
18
16
|
* The boundary is JSON only: no `ts.Node` / `ts.Program` ever crosses it.
|
|
19
17
|
*/
|
|
20
18
|
import { readFileSync } from 'node:fs';
|
|
21
|
-
import {
|
|
19
|
+
import { correlationFromEnv, currentLogger, currentScope, currentTraceparent, REPO_OTEL_ATTR, TENANT_OTEL_ATTR, } from '@opensip-cli/core';
|
|
22
20
|
import { computeFilesFingerprint } from '../cache/invalidate.js';
|
|
23
21
|
import { pickAdapter } from '../lang-adapter/registry.js';
|
|
24
22
|
import { spanRunStage } from './graph-tracer.js';
|
|
25
23
|
import { buildAndResolveCatalog } from './orchestrate/catalog-builder.js';
|
|
24
|
+
/**
|
|
25
|
+
* The flat structured-log fields stamped on every `graph.shard.worker.*` event:
|
|
26
|
+
* the full correlation bag (incl. `runId`/`traceId`) so an operator can pivot
|
|
27
|
+
* from any worker line to the parent run and its trace. Absent optionals are
|
|
28
|
+
* omitted (no empty sentinels).
|
|
29
|
+
*/
|
|
30
|
+
function workerLogFields(c) {
|
|
31
|
+
const fields = {
|
|
32
|
+
runId: c.runId,
|
|
33
|
+
tool: c.tool,
|
|
34
|
+
parentCommand: c.parentCommand,
|
|
35
|
+
};
|
|
36
|
+
if (c.traceId !== undefined)
|
|
37
|
+
fields.traceId = c.traceId;
|
|
38
|
+
if (c.repo !== undefined)
|
|
39
|
+
fields.repo = c.repo;
|
|
40
|
+
if (c.repoId !== undefined)
|
|
41
|
+
fields.repoId = c.repoId;
|
|
42
|
+
if (c.tenantId !== undefined)
|
|
43
|
+
fields.tenantId = c.tenantId;
|
|
44
|
+
if (c.shardId !== undefined)
|
|
45
|
+
fields.shardId = c.shardId;
|
|
46
|
+
return fields;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Resolve the worker's correlation bag for stamping on spans + logs.
|
|
50
|
+
*
|
|
51
|
+
* `runId` comes from `currentScope()?.runId` — already inherited from
|
|
52
|
+
* `OPENSIP_RUN_ID` at the worker's pre-action hook (B1), the env-first read.
|
|
53
|
+
* The remaining fields (`tool`/`parentCommand`/`traceId`/`repo`/…) come from the
|
|
54
|
+
* spec's `correlation` (Task 1.2 wrote them, sans runId); `shardId` is anchored
|
|
55
|
+
* to this shard; `traceId` falls back to the live `currentTraceparent()` so the
|
|
56
|
+
* worker's own trace context is captured even if the spec omitted it.
|
|
57
|
+
*
|
|
58
|
+
* Missing-correlation degradation (M2): when BOTH the spec's `correlation` and
|
|
59
|
+
* `correlationFromEnv()` are absent the worker still runs (with the
|
|
60
|
+
* fresh/inherited `runId`) but emits a `cli.subprocess.correlation_missing`
|
|
61
|
+
* WARN so the gap is observable, not silent.
|
|
62
|
+
*/
|
|
63
|
+
function resolveWorkerCorrelation(spec) {
|
|
64
|
+
const runId = currentScope()?.runId ?? '';
|
|
65
|
+
const fromEnv = correlationFromEnv();
|
|
66
|
+
if (spec.correlation === undefined && fromEnv === undefined) {
|
|
67
|
+
currentLogger().warn({
|
|
68
|
+
evt: 'cli.subprocess.correlation_missing',
|
|
69
|
+
module: 'graph:shard-worker',
|
|
70
|
+
runId,
|
|
71
|
+
workerKind: 'shard',
|
|
72
|
+
reason: 'no correlation env or spec',
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
return {
|
|
76
|
+
runId,
|
|
77
|
+
tool: spec.correlation?.tool ?? fromEnv?.tool ?? '',
|
|
78
|
+
parentCommand: spec.correlation?.parentCommand ?? fromEnv?.parentCommand ?? '',
|
|
79
|
+
workerKind: 'shard',
|
|
80
|
+
shardId: spec.shard.id,
|
|
81
|
+
...spec.correlation,
|
|
82
|
+
// traceId: prefer the spec/env value, else the worker's live trace context.
|
|
83
|
+
traceId: spec.correlation?.traceId ?? fromEnv?.traceId ?? currentTraceparent(),
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Build the OTel span base attrs for a shard worker — the shard id plus the
|
|
88
|
+
* correlation join keys, referencing the single attr-name source ({@link
|
|
89
|
+
* REPO_OTEL_ATTR}/{@link TENANT_OTEL_ATTR}, Q4). Undefined values are OMITTED so
|
|
90
|
+
* no span carries an empty attribute.
|
|
91
|
+
*/
|
|
92
|
+
function shardSpanAttrs(corr) {
|
|
93
|
+
const attrs = { 'opensip_cli.graph.shard_id': corr.shardId ?? '' };
|
|
94
|
+
if (corr.runId)
|
|
95
|
+
attrs['opensip.run_id'] = corr.runId;
|
|
96
|
+
if (corr.parentCommand)
|
|
97
|
+
attrs['opensip.parent_command'] = corr.parentCommand;
|
|
98
|
+
if (corr.repo !== undefined)
|
|
99
|
+
attrs[REPO_OTEL_ATTR] = corr.repo;
|
|
100
|
+
if (corr.tenantId !== undefined)
|
|
101
|
+
attrs[TENANT_OTEL_ATTR] = corr.tenantId;
|
|
102
|
+
return attrs;
|
|
103
|
+
}
|
|
26
104
|
/**
|
|
27
105
|
* Build one shard and emit its `ShardBuildResult` as JSON on stdout.
|
|
28
106
|
* Exits non-zero (via setExitCode) on failure so the parent can attribute
|
|
29
107
|
* the error to this shard.
|
|
30
108
|
*/
|
|
31
109
|
export async function executeShardWorker(specPath, cli) {
|
|
110
|
+
// Per-run logger (ADR-0053): the worker's own bootstrap stamped the daily-logs
|
|
111
|
+
// file sink onto `currentScope().logger`. The module singleton has no file sink,
|
|
112
|
+
// so `graph.shard.worker.*` lines must go through `currentLogger()` to land in
|
|
113
|
+
// the JSONL file the 2am playbook filters by `runId`/`shardId`.
|
|
114
|
+
const workerLogger = currentLogger();
|
|
32
115
|
let shardId = '<unknown>';
|
|
116
|
+
// The full correlation for failure logging. Resolved lazily once the spec
|
|
117
|
+
// parses; until then a bare bag carries the env-inherited runId (B1) so even a
|
|
118
|
+
// spec-parse failure logs an attributable line.
|
|
119
|
+
let correlation = {
|
|
120
|
+
runId: currentScope()?.runId ?? '',
|
|
121
|
+
tool: correlationFromEnv()?.tool ?? '',
|
|
122
|
+
parentCommand: correlationFromEnv()?.parentCommand ?? '',
|
|
123
|
+
workerKind: 'shard',
|
|
124
|
+
};
|
|
125
|
+
// Worker-internal diagnostic timing — tool-owned (NOT a generic StoredSession
|
|
126
|
+
// column; host-owned-run-timing). Drives `durationMs` on `worker.complete`.
|
|
127
|
+
const startedAt = Date.now();
|
|
33
128
|
try {
|
|
34
129
|
const spec = JSON.parse(readFileSync(specPath, 'utf8'));
|
|
35
130
|
shardId = spec.shard.id;
|
|
36
|
-
|
|
131
|
+
correlation = resolveWorkerCorrelation(spec);
|
|
132
|
+
workerLogger.info({
|
|
133
|
+
evt: 'graph.shard.worker.start',
|
|
134
|
+
module: 'graph:shard-worker',
|
|
135
|
+
...workerLogFields(correlation),
|
|
136
|
+
});
|
|
137
|
+
const result = await buildShard(spec, correlation);
|
|
37
138
|
// Single write of the whole JSON document — the parent reads stdout to EOF.
|
|
38
139
|
process.stdout.write(JSON.stringify(result));
|
|
140
|
+
workerLogger.info({
|
|
141
|
+
evt: 'graph.shard.worker.complete',
|
|
142
|
+
module: 'graph:shard-worker',
|
|
143
|
+
...workerLogFields(correlation),
|
|
144
|
+
durationMs: Date.now() - startedAt,
|
|
145
|
+
});
|
|
39
146
|
cli.setExitCode(0);
|
|
40
147
|
}
|
|
41
148
|
catch (error) {
|
|
42
|
-
|
|
149
|
+
workerLogger.error({
|
|
43
150
|
evt: 'graph.shard.worker.error',
|
|
44
151
|
module: 'graph:shard-worker',
|
|
152
|
+
...workerLogFields(correlation),
|
|
45
153
|
shardId,
|
|
46
154
|
err: error instanceof Error ? error.message : String(error),
|
|
155
|
+
// The child's own view of the failure class. The parent re-derives this
|
|
156
|
+
// from the exit/parse channel for the runner event; this is the worker's
|
|
157
|
+
// local attribution — a build throw is a non-zero exit from the parent's
|
|
158
|
+
// perspective.
|
|
159
|
+
failureClass: 'exit_nonzero',
|
|
47
160
|
});
|
|
48
161
|
process.stderr.write(`graph-shard-worker [${shardId}]: ${error instanceof Error ? error.message : String(error)}\n`);
|
|
49
162
|
cli.setExitCode(1);
|
|
50
163
|
}
|
|
51
164
|
}
|
|
52
|
-
async function buildShard(spec) {
|
|
165
|
+
async function buildShard(spec, correlation) {
|
|
53
166
|
const { shard, projectRoot, resolutionMode } = spec;
|
|
54
167
|
const adapter = pickAdapter(shard.rootDir, spec.language);
|
|
55
168
|
// Anchor compiler options to the shard's own config, but compute
|
|
@@ -72,12 +185,15 @@ async function buildShard(spec) {
|
|
|
72
185
|
configPathAbs: shard.configPathAbs ?? discovered.configPathAbs,
|
|
73
186
|
compilerOptions: discovered.compilerOptions,
|
|
74
187
|
};
|
|
75
|
-
// Emit per-stage spans tagged with this shard's id
|
|
76
|
-
// parent
|
|
77
|
-
//
|
|
78
|
-
//
|
|
188
|
+
// Emit per-stage spans tagged with this shard's id AND the correlation join
|
|
189
|
+
// keys (run id, parent command, repo/tenant via the single attr-name source —
|
|
190
|
+
// Q4) so a sharded-build trace is attributable to its parent run. They nest
|
|
191
|
+
// under the parent build's sharded span via the TRACEPARENT the runner
|
|
192
|
+
// propagates into this worker's env (extracted at the CLI boundary by
|
|
193
|
+
// initTelemetry). No live view here — the worker is headless — so no
|
|
194
|
+
// progress/monitor plumbing.
|
|
79
195
|
const built = await buildAndResolveCatalog({
|
|
80
|
-
runStage: spanRunStage(
|
|
196
|
+
runStage: spanRunStage(shardSpanAttrs(correlation)),
|
|
81
197
|
adapter,
|
|
82
198
|
discovery,
|
|
83
199
|
resolutionMode,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shard-worker.js","sourceRoot":"","sources":["../../src/cli/shard-worker.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"shard-worker.js","sourceRoot":"","sources":["../../src/cli/shard-worker.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"symbol-index.d.ts","sourceRoot":"","sources":["../../src/cli/symbol-index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"symbol-index.d.ts","sourceRoot":"","sources":["../../src/cli/symbol-index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAUH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGxD,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAED,UAAU,WAAW;IACnB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,UAAU,mBAAmB;IAC3B,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,WAAW,EAAE,CAAC,CAAC;IACzD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC;CACzD;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,yBAAyB,EAAE,GAAG,EAAE,cAAc,GAAG,IAAI,CA+C7F;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,mBAAmB,CAgBnE"}
|
package/dist/cli/symbol-index.js
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
// @fitness-ignore-file no-direct-stdout-in-tool-engine -- auxiliary subcommand status line: `graph symbol-index` writes its artifact to a file and prints a one-line "wrote N symbols to <path>" confirmation. This is not the signal-envelope run output (ADR-0011), which routes through the composition root.
|
|
2
|
-
// @fitness-ignore-file only-documented-toolcli-seams -- same rationale as above: this is the one-line "wrote N symbols to <path>" status confirmation after a file write, not user-facing run output through a ToolCliContext seam.
|
|
3
1
|
/**
|
|
4
2
|
* `opensip graph symbol-index --out <path>` — emit a symbol-index
|
|
5
3
|
* JSON artifact suitable for agent consumption (e.g., feeding into a
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"symbol-index.js","sourceRoot":"","sources":["../../src/cli/symbol-index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"symbol-index.js","sourceRoot":"","sources":["../../src/cli/symbol-index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE7C,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE/D,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AA6B7D,MAAM,UAAU,kBAAkB,CAAC,IAA+B,EAAE,GAAmB;IACrF,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,8BAA8B,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;IAC1E,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,SAAS,EAA2B,CAAC;QACjE,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,kBAAkB,CAAC,4DAA4D,CAAC,CAAC;QAC7F,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,SAAS,CAAC,CAAC,eAAe,EAAE,CAAC;QAC7D,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,kBAAkB,CAC1B,yEAAyE,CAC1E,CAAC;QACJ,CAAC;QACD,MAAM,QAAQ,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;QACxC,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QAC5C,yDAAyD;QACzD,iEAAiE;QACjE,qEAAqE;QACrE,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACjD,aAAa,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACzE,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC1F,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC;QAC3D,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,SAAS,MAAM,CAAC,WAAW,CAAC,qBAAqB,MAAM,CAAC,SAAS,CAAC,eAAe,OAAO,IAAI,CAC7F,CAAC;QACF,GAAG,CAAC,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QACpC,MAAM,CAAC,IAAI,CAAC;YACV,GAAG,EAAE,iCAAiC;YACtC,MAAM,EAAE,WAAW;YACnB,OAAO,EAAE,WAAW;YACpB,KAAK,EAAE,SAAS;SACjB,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC;YACX,GAAG,EAAE,8BAA8B;YACnC,MAAM,EAAE,WAAW;YACnB,GAAG,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;SAC5D,CAAC,CAAC;QACH,GAAG,CAAC,WAAW,CACb,KAAK,YAAY,kBAAkB;YACjC,CAAC,CAAC,UAAU,CAAC,mBAAmB;YAChC,CAAC,CAAC,UAAU,CAAC,aAAa,CAC7B,CAAC;QACF,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,uBAAuB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAClF,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,OAAgB;IAC5C,MAAM,OAAO,GAAkC,EAAE,CAAC;IAClD,MAAM,WAAW,GAA6B,EAAE,CAAC;IACjD,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QAClD,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,MAAM;YAAE,SAAS;QACtB,MAAM,OAAO,GAAG,qBAAqB,CAAC,MAAM,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;QACjE,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;IAClD,CAAC;IACD,OAAO;QACL,OAAO,EAAE,KAAK;QACd,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACrC,OAAO;QACP,WAAW;KACZ,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAC5B,MAQG,EACH,IAAY,EACZ,WAAqC;IAErC,MAAM,OAAO,GAAkB,EAAE,CAAC;IAClC,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;QACzB,IAAI,GAAG,CAAC,IAAI,KAAK,aAAa;YAAE,SAAS;QACzC,OAAO,CAAC,IAAI,CAAC;YACX,aAAa,EAAE,GAAG,CAAC,aAAa;YAChC,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,UAAU,EAAE,GAAG,CAAC,UAAU;YAC1B,QAAQ,EAAE,GAAG,CAAC,QAAQ;SACvB,CAAC,CAAC;QACH,mBAAmB,CAAC,WAAW,EAAE,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IACvD,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,mBAAmB,CAC1B,WAAqC,EACrC,QAAgB,EAChB,IAAY;IAEZ,IAAI,MAAM,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;IACnC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,GAAG,EAAE,CAAC;QACZ,WAAW,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC;IACjC,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChD,CAAC"}
|
package/dist/internal.d.ts
CHANGED
|
@@ -18,6 +18,7 @@ export { runGraph, GRAPH_STAGES } from './cli/orchestrate.js';
|
|
|
18
18
|
export type { GraphStage, GraphProgressEvent, GraphProgressCallback, RunGraphInput, RunGraphResult, } from './cli/orchestrate.js';
|
|
19
19
|
export { executeGraph, buildUnifiedReportLines } from './cli/graph.js';
|
|
20
20
|
export type { UnifiedReportInput } from './cli/graph.js';
|
|
21
|
+
export { graphDoneTableNode } from './cli/graph-envelope-view.js';
|
|
21
22
|
export { CatalogRepo } from './persistence/catalog-repo.js';
|
|
22
23
|
export { MemoryPressureError } from './cli/pressure-monitor.js';
|
|
23
24
|
export { HEAP_TARGETS, decideHeapTargetMb, systemHasMemoryFor, runHeapPreflight, totalSystemMemoryMb, } from './cli/heap-preflight.js';
|
package/dist/internal.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAKrD,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,0BAA0B,EAAE,MAAM,qCAAqC,CAAC;AACjF,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAU9D,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC9D,YAAY,EACV,UAAU,EACV,kBAAkB,EAClB,qBAAqB,EACrB,aAAa,EACb,cAAc,GACf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AACvE,YAAY,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAKrD,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,0BAA0B,EAAE,MAAM,qCAAqC,CAAC;AACjF,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAU9D,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC9D,YAAY,EACV,UAAU,EACV,kBAAkB,EAClB,qBAAqB,EACrB,aAAa,EACb,cAAc,GACf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AACvE,YAAY,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAMzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAQlE,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,yBAAyB,CAAC;AACjC,YAAY,EAAE,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC"}
|
package/dist/internal.js
CHANGED
|
@@ -26,6 +26,11 @@ export { orphanSubtreeRule } from './rules/orphan-subtree.js';
|
|
|
26
26
|
// end without going through Commander.
|
|
27
27
|
export { runGraph, GRAPH_STAGES } from './cli/orchestrate.js';
|
|
28
28
|
export { executeGraph, buildUnifiedReportLines } from './cli/graph.js';
|
|
29
|
+
// The graph live verbose/detail per-unit table node. Internal — exported only
|
|
30
|
+
// so the host-side live/static parity proof
|
|
31
|
+
// (`packages/cli/src/ui/__tests__/graph-live-static-parity.test.tsx`) can assert
|
|
32
|
+
// it renders byte-identically to the static `envelopeToTableView` table.
|
|
33
|
+
export { graphDoneTableNode } from './cli/graph-envelope-view.js';
|
|
29
34
|
// `CatalogRepo` — the engine's SQLite/Drizzle catalog persistence repo. Used
|
|
30
35
|
// internally by graph (orchestrator cache, `tool.ts` report contribution,
|
|
31
36
|
// `lookup`/`catalog-export`). It was briefly on the public barrel for fitness's
|
package/dist/internal.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"internal.js","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,yEAAyE;AACzE,+EAA+E;AAC/E,8DAA8D;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAOrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,0BAA0B,EAAE,MAAM,qCAAqC,CAAC;AACjF,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAE9D,sEAAsE;AACtE,EAAE;AACF,sEAAsE;AACtE,2EAA2E;AAC3E,qFAAqF;AACrF,wEAAwE;AACxE,wEAAwE;AACxE,uCAAuC;AACvC,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAQ9D,OAAO,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAGvE,6EAA6E;AAC7E,0EAA0E;AAC1E,gFAAgF;AAChF,0EAA0E;AAC1E,8EAA8E;AAC9E,kFAAkF;AAClF,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,yBAAyB,CAAC"}
|
|
1
|
+
{"version":3,"file":"internal.js","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,yEAAyE;AACzE,+EAA+E;AAC/E,8DAA8D;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAOrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,0BAA0B,EAAE,MAAM,qCAAqC,CAAC;AACjF,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAE9D,sEAAsE;AACtE,EAAE;AACF,sEAAsE;AACtE,2EAA2E;AAC3E,qFAAqF;AACrF,wEAAwE;AACxE,wEAAwE;AACxE,uCAAuC;AACvC,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAQ9D,OAAO,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAGvE,8EAA8E;AAC9E,4CAA4C;AAC5C,iFAAiF;AACjF,yEAAyE;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAElE,6EAA6E;AAC7E,0EAA0E;AAC1E,gFAAgF;AAChF,0EAA0E;AAC1E,8EAA8E;AAC9E,kFAAkF;AAClF,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,yBAAyB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/persistence/schema.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/persistence/schema.ts"],"names":[],"mappings":"AA0BA;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAOvB,CAAC;AAEH;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAM7B,CAAC"}
|
|
@@ -1,3 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Graph tool's Drizzle table definitions (catalog + shard fragment).
|
|
3
|
+
*
|
|
4
|
+
* ⚠️ MIGRATIONS LIVE IN `@opensip-cli/datastore`, NOT HERE. The platform uses one
|
|
5
|
+
* SQLite database with a single centralized migrations folder; this tool's tables
|
|
6
|
+
* are migrated alongside everyone else's. `datastore/drizzle.config.ts` imports
|
|
7
|
+
* THIS file as a schema source. Therefore, after editing the tables below you MUST:
|
|
8
|
+
*
|
|
9
|
+
* 1. `pnpm --filter @opensip-cli/datastore db:generate` (regenerate the migration)
|
|
10
|
+
* 2. commit the generated `packages/datastore/migrations/*` files
|
|
11
|
+
* 3. bump `LOGICAL_SCHEMA_VERSION` in `datastore/src/schema-version.ts` in lockstep
|
|
12
|
+
* with the new journal entry count (so existing DBs migrate forward).
|
|
13
|
+
*
|
|
14
|
+
* `datastore`'s `migration-integrity` + `version-guard` test suites fail loudly if
|
|
15
|
+
* the journal and schema drift, but they can't tell you to run db:generate — this
|
|
16
|
+
* note is the signpost. (Owning the schema here but the migration there is a known
|
|
17
|
+
* inversion; centralizing migrations is the deliberate trade — see ADR-0036.)
|
|
18
|
+
*/
|
|
1
19
|
import { integer, sqliteTable, text } from 'drizzle-orm/sqlite-core';
|
|
2
20
|
// ADR-0036: the graph baseline tables (`graph_baseline_signals` /
|
|
3
21
|
// `graph_baseline_meta`) moved to the generic host-owned `tool_baseline_entries`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/persistence/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAErE,kEAAkE;AAClE,iFAAiF;AACjF,8EAA8E;AAC9E,mFAAmF;AACnF,mEAAmE;AAEnE;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,WAAW,CAAC,eAAe,EAAE;IACvD,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE;IAC9B,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE;IACpC,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE;IACrC,gBAAgB,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC,OAAO,EAAE;IACrD,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE;IACnC,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE;CACrD,CAAC,CAAC;AAEH;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,WAAW,CAAC,sBAAsB,EAAE;IACpE,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,UAAU,EAAE;IACtC,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE;IACpC,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE;IACrC,gBAAgB,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC,OAAO,EAAE;IACrD,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE;CACrD,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/persistence/schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAErE,kEAAkE;AAClE,iFAAiF;AACjF,8EAA8E;AAC9E,mFAAmF;AACnF,mEAAmE;AAEnE;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,WAAW,CAAC,eAAe,EAAE;IACvD,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE;IAC9B,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE;IACpC,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE;IACrC,gBAAgB,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC,OAAO,EAAE;IACrD,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE;IACnC,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE;CACrD,CAAC,CAAC;AAEH;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,WAAW,CAAC,sBAAsB,EAAE;IACpE,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,UAAU,EAAE;IACtC,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE;IACpC,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE;IACrC,gBAAgB,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC,OAAO,EAAE;IACrD,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE;CACrD,CAAC,CAAC"}
|
|
@@ -1,15 +1,20 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { RunPresentation, StoredSession, ToolSessionReplay } from '@opensip-cli/contracts';
|
|
2
2
|
/**
|
|
3
|
-
* Project a stored graph session back into a {@link SignalEnvelope}/{@link
|
|
3
|
+
* Project a stored graph session back into a {@link SignalEnvelope}/{@link RunPresentation}.
|
|
4
4
|
*
|
|
5
5
|
* The structural decode of the opaque payload is shared across tools
|
|
6
6
|
* (`decodeSessionPayload`, here with `requireFilePath`/`requireViolationCount`/
|
|
7
7
|
* `allowMetadata` — graph findings always carry those); this function owns only
|
|
8
8
|
* graph's projection (`tool: 'graph'`, `category: 'architecture'`, signal id
|
|
9
|
-
* prefix
|
|
9
|
+
* prefix).
|
|
10
|
+
*
|
|
11
|
+
* The replay RENDER path reads only `replay.envelope` + `replay.fidelity` —
|
|
12
|
+
* `graph-command-spec.ts` builds the host `SessionReplayResult` from those
|
|
13
|
+
* (`sessionReplayResult`/`sessionShowJson`). The inner `RunPresentation` `result`
|
|
14
|
+
* is a uniform, render-only carrier and is not on the replay render path.
|
|
10
15
|
*
|
|
11
16
|
* @throws {Error | TypeError} when the stored payload is not the expected shape
|
|
12
17
|
* (propagated from `decodeSessionPayload`).
|
|
13
18
|
*/
|
|
14
|
-
export declare function graphReplayFromSession(stored: StoredSession): ToolSessionReplay<
|
|
19
|
+
export declare function graphReplayFromSession(stored: StoredSession): ToolSessionReplay<RunPresentation>;
|
|
15
20
|
//# sourceMappingURL=session-replay.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-replay.d.ts","sourceRoot":"","sources":["../../src/persistence/session-replay.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,eAAe,EAEf,aAAa,EACb,iBAAiB,EAElB,MAAM,wBAAwB,CAAC;AAGhC
|
|
1
|
+
{"version":3,"file":"session-replay.d.ts","sourceRoot":"","sources":["../../src/persistence/session-replay.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,eAAe,EAEf,aAAa,EACb,iBAAiB,EAElB,MAAM,wBAAwB,CAAC;AAGhC;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,aAAa,GAAG,iBAAiB,CAAC,eAAe,CAAC,CAqChG"}
|
|
@@ -1,12 +1,17 @@
|
|
|
1
1
|
import { decodeSessionPayload } from '@opensip-cli/session-store';
|
|
2
2
|
/**
|
|
3
|
-
* Project a stored graph session back into a {@link SignalEnvelope}/{@link
|
|
3
|
+
* Project a stored graph session back into a {@link SignalEnvelope}/{@link RunPresentation}.
|
|
4
4
|
*
|
|
5
5
|
* The structural decode of the opaque payload is shared across tools
|
|
6
6
|
* (`decodeSessionPayload`, here with `requireFilePath`/`requireViolationCount`/
|
|
7
7
|
* `allowMetadata` — graph findings always carry those); this function owns only
|
|
8
8
|
* graph's projection (`tool: 'graph'`, `category: 'architecture'`, signal id
|
|
9
|
-
* prefix
|
|
9
|
+
* prefix).
|
|
10
|
+
*
|
|
11
|
+
* The replay RENDER path reads only `replay.envelope` + `replay.fidelity` —
|
|
12
|
+
* `graph-command-spec.ts` builds the host `SessionReplayResult` from those
|
|
13
|
+
* (`sessionReplayResult`/`sessionShowJson`). The inner `RunPresentation` `result`
|
|
14
|
+
* is a uniform, render-only carrier and is not on the replay render path.
|
|
10
15
|
*
|
|
11
16
|
* @throws {Error | TypeError} when the stored payload is not the expected shape
|
|
12
17
|
* (propagated from `decodeSessionPayload`).
|
|
@@ -42,16 +47,7 @@ export function graphReplayFromSession(stored) {
|
|
|
42
47
|
return {
|
|
43
48
|
fidelity: 'projection',
|
|
44
49
|
envelope,
|
|
45
|
-
result: {
|
|
46
|
-
type: 'graph-done',
|
|
47
|
-
summary: {
|
|
48
|
-
passed: payload.summary.passed,
|
|
49
|
-
failed: payload.summary.failed,
|
|
50
|
-
errors: payload.summary.errors,
|
|
51
|
-
warnings: payload.summary.warnings,
|
|
52
|
-
},
|
|
53
|
-
durationMs: stored.durationMs,
|
|
54
|
-
},
|
|
50
|
+
result: { type: 'run-presentation', tool: 'graph', envelope },
|
|
55
51
|
};
|
|
56
52
|
}
|
|
57
53
|
function replaySignal(stored, source, finding, checkIndex, findingIndex) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-replay.js","sourceRoot":"","sources":["../../src/persistence/session-replay.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAA8B,MAAM,4BAA4B,CAAC;AAW9F
|
|
1
|
+
{"version":3,"file":"session-replay.js","sourceRoot":"","sources":["../../src/persistence/session-replay.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAA8B,MAAM,4BAA4B,CAAC;AAW9F;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,sBAAsB,CAAC,MAAqB;IAC1D,MAAM,OAAO,GAAG,oBAAoB,CAAC,MAAM,CAAC,OAAO,EAAE;QACnD,IAAI,EAAE,OAAO;QACb,eAAe,EAAE,IAAI;QACrB,qBAAqB,EAAE,IAAI;QAC3B,aAAa,EAAE,IAAI;KACpB,CAAC,CAAC;IACH,MAAM,KAAK,GAAiB,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACzD,IAAI,EAAE,KAAK,CAAC,SAAS;QACrB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,GAAG,CAAC,KAAK,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,KAAK,CAAC,cAAc,EAAE,CAAC;QACvF,UAAU,EAAE,KAAK,CAAC,UAAU;KAC7B,CAAC,CAAC,CAAC;IACJ,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,CAC3D,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,CAC3C,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,YAAY,CAAC,CACzE,CACF,CAAC;IACF,MAAM,QAAQ,GAAmB;QAC/B,aAAa,EAAE,CAAC;QAChB,IAAI,EAAE,OAAO;QACb,KAAK,EAAE,MAAM,CAAC,EAAE;QAChB,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,GAAG,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;QACjE,OAAO,EAAE;YACP,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,OAAO,EAAE,OAAO,CAAC,OAAO;SACzB;QACD,KAAK;QACL,OAAO;KACR,CAAC;IACF,OAAO;QACL,QAAQ,EAAE,YAAY;QACtB,QAAQ;QACR,MAAM,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE;KAC9D,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CACnB,MAAqB,EACrB,MAAc,EACd,OAA8B,EAC9B,UAAkB,EAClB,YAAoB;IAEpB,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC;IACxC,OAAO;QACL,EAAE,EAAE,GAAG,MAAM,CAAC,EAAE,UAAU,UAAU,IAAI,YAAY,EAAE;QACtD,MAAM;QACN,QAAQ,EAAE,aAAa;QACvB,QAAQ,EAAE,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ;QAC1D,QAAQ,EAAE,cAAc;QACxB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,GAAG,CAAC,OAAO,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC;QAC/E,QAAQ;QACR,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;QAC7D,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;QACnE,IAAI,EAAE;YACJ,IAAI,EAAE,QAAQ;YACd,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;YAC7D,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;SACpE;QACD,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,EAAE;QAChC,SAAS,EAAE,MAAM,CAAC,SAAS;KAC5B,CAAC;AACJ,CAAC"}
|
package/dist/tool.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../src/tool.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;;;;;;;;;GAmBG;
|
|
1
|
+
{"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../src/tool.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;;;;;;;;;GAmBG;AA8BH,OAAO,yBAAyB,CAAC;AAGjC,OAAO,KAAK,EAGV,IAAI,EAGL,MAAM,mBAAmB,CAAC;AAmG3B;;GAEG;AACH,eAAO,MAAM,sBAAsB,UAAU,CAAC;AAE9C,eAAO,MAAM,eAAe,yCAAyC,CAAC;AAEtE,eAAO,MAAM,SAAS,EAAE,IAoBtB,CAAC"}
|
package/dist/tool.js
CHANGED
|
@@ -19,14 +19,14 @@
|
|
|
19
19
|
* (rules, entry points, catalog summary) are reachable via the single `graph`
|
|
20
20
|
* invocation.
|
|
21
21
|
*/
|
|
22
|
-
import { logger, readPackageVersion } from '@opensip-cli/core';
|
|
22
|
+
import { createToolScope, defineTool, logger, readPackageVersion } from '@opensip-cli/core';
|
|
23
23
|
// PR 3 of plan 2026-05-23-plan-graph-adapter-package-split.md: the
|
|
24
24
|
// engine no longer hosts adapter source. First-party adapters live in
|
|
25
25
|
// their own packages and register via the CLI's discovery walker
|
|
26
26
|
// (register-graph-adapters.ts). The historical engine-side bootstrap is
|
|
27
27
|
// gone.
|
|
28
28
|
import { graphFingerprintStrategy } from './baseline-strategy.js';
|
|
29
|
-
import {
|
|
29
|
+
import { graphEquivalenceCheckCommandSpec, graphExportCommandSpec, graphIndexGroupedCommandSpec, graphListCommandSpec, graphLookupGroupedCommandSpec, graphRecipesGroupedCommandSpec, graphShardWorkerCommandSpec, } from './cli/graph/graph-aux-command-specs.js';
|
|
30
30
|
import { graphCommandSpec } from './cli/graph/graph-command-spec.js';
|
|
31
31
|
import { graphConfigDeclaration } from './cli/graph-config-schema.js';
|
|
32
32
|
import { graphRunWorkerCommandSpec } from './cli/graph-worker.js';
|
|
@@ -40,70 +40,30 @@ import { createRulesRegistry } from './rules/registry.js';
|
|
|
40
40
|
// loaded so `scope.graph` is correctly-typed here.
|
|
41
41
|
import './scope-augmentation.js';
|
|
42
42
|
// =============================================================================
|
|
43
|
-
// COMMAND DESCRIPTORS — used by --help listings and conflict detection.
|
|
44
|
-
// =============================================================================
|
|
45
|
-
const GRAPH = {
|
|
46
|
-
name: 'graph',
|
|
47
|
-
description: 'Run static call-graph analysis (rules, entry points, catalog summary in one report)',
|
|
48
|
-
};
|
|
49
|
-
const GRAPH_LOOKUP = {
|
|
50
|
-
name: 'graph-lookup',
|
|
51
|
-
description: 'Look up function occurrences by simple name from the persisted catalog',
|
|
52
|
-
};
|
|
53
|
-
const GRAPH_SYMBOL_INDEX = {
|
|
54
|
-
name: 'graph-symbol-index',
|
|
55
|
-
description: 'Emit a symbolindex.json artifact (name→file:line and file→names) from the persisted catalog',
|
|
56
|
-
};
|
|
57
|
-
const GRAPH_BASELINE_EXPORT = {
|
|
58
|
-
name: 'graph-baseline-export',
|
|
59
|
-
description: 'Export the graph gate baseline (JSON) from the datastore to a file',
|
|
60
|
-
};
|
|
61
|
-
const GRAPH_SHARD_WORKER = {
|
|
62
|
-
name: 'graph-shard-worker',
|
|
63
|
-
description: '[internal] Build one shard from a spec file and emit a ShardBuildResult JSON (spawned by the sharded build)',
|
|
64
|
-
};
|
|
65
|
-
const GRAPH_EQUIVALENCE_CHECK = {
|
|
66
|
-
name: 'graph-equivalence-check',
|
|
67
|
-
description: '[internal] Verify the sharded build is byte-equivalent to the exact build on a real repo (gates production edge divergence against a committed budget)',
|
|
68
|
-
};
|
|
69
|
-
const GRAPH_RUN_WORKER = {
|
|
70
|
-
name: 'graph-run-worker',
|
|
71
|
-
description: '[internal] Run the graph build headless and stream progress + result over IPC (forked by the live view)',
|
|
72
|
-
};
|
|
73
|
-
const GRAPH_CATALOG_EXPORT = {
|
|
74
|
-
name: 'catalog-export',
|
|
75
|
-
description: 'Run graph analysis and write the CatalogExport JSON document (symbols + edges + provenance) to a file',
|
|
76
|
-
};
|
|
77
|
-
const GRAPH_SARIF_EXPORT = {
|
|
78
|
-
name: 'sarif-export',
|
|
79
|
-
description: 'Run graph analysis and write OpenSIP-convention SARIF v2.1.0 findings to a file',
|
|
80
|
-
};
|
|
81
|
-
const GRAPH_RECIPES = {
|
|
82
|
-
name: 'graph-recipes',
|
|
83
|
-
description: 'List available graph recipes',
|
|
84
|
-
};
|
|
85
|
-
// =============================================================================
|
|
86
43
|
// COMMAND-SPEC ASSEMBLY
|
|
87
44
|
// =============================================================================
|
|
88
45
|
/**
|
|
89
|
-
* graph's declarative command surface
|
|
90
|
-
*
|
|
91
|
-
*
|
|
92
|
-
*
|
|
93
|
-
*
|
|
94
|
-
*
|
|
95
|
-
*
|
|
46
|
+
* graph's declarative command surface. The host mounts each spec via
|
|
47
|
+
* `mountCommandSpec`; graph no longer touches Commander. The primary `graph`
|
|
48
|
+
* spec sets its own live-view renderer up lazily inside its handler's
|
|
49
|
+
* interactive branch (no mount-time `register()` hook in the spec-mounted
|
|
50
|
+
* world). The canonical surface is the nested `<tool> <verb>` grammar — `graph
|
|
51
|
+
* export` / `graph recipes` / `graph lookup` / `graph index` / `graph list` —
|
|
52
|
+
* the legacy flat-root aliases were removed.
|
|
96
53
|
*/
|
|
97
54
|
const graphCommandSpecs = [
|
|
98
55
|
graphCommandSpec,
|
|
99
|
-
graphLookupCommandSpec,
|
|
100
56
|
graphShardWorkerCommandSpec,
|
|
101
57
|
graphRunWorkerCommandSpec,
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
58
|
+
// Canonical nested export — mounts as `graph export` under the `graph` primary
|
|
59
|
+
// via the nested-mount capability.
|
|
60
|
+
graphExportCommandSpec,
|
|
61
|
+
// Grouped Tier-2 children — `graph recipes` / `graph lookup` / `graph index` /
|
|
62
|
+
// `graph list` nest under the `graph` primary via the nested-mount capability.
|
|
63
|
+
graphRecipesGroupedCommandSpec,
|
|
64
|
+
graphLookupGroupedCommandSpec,
|
|
65
|
+
graphIndexGroupedCommandSpec,
|
|
66
|
+
graphListCommandSpec,
|
|
107
67
|
graphEquivalenceCheckCommandSpec,
|
|
108
68
|
];
|
|
109
69
|
/**
|
|
@@ -118,27 +78,14 @@ const graphCommandSpecs = [
|
|
|
118
78
|
const registerGraphAdapter = (contribution) => {
|
|
119
79
|
currentAdapterRegistry().register(contribution);
|
|
120
80
|
};
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
* routes each through {@link registerGraphAdapter} into this scope's registry
|
|
130
|
-
* (driven by the CLI pre-action hook), so `pickAdapter` resolves them — no
|
|
131
|
-
* process-global discovered-adapters holder.
|
|
132
|
-
*/
|
|
133
|
-
function contributeScope() {
|
|
134
|
-
return {
|
|
135
|
-
graph: {
|
|
136
|
-
adapters: createAdapterRegistry(),
|
|
137
|
-
rules: createRulesRegistry(),
|
|
138
|
-
recipes: createRecipeRegistry(),
|
|
139
|
-
},
|
|
140
|
-
};
|
|
141
|
-
}
|
|
81
|
+
const graphScope = createToolScope({
|
|
82
|
+
slot: 'graph',
|
|
83
|
+
create: () => ({
|
|
84
|
+
adapters: createAdapterRegistry(),
|
|
85
|
+
rules: createRulesRegistry(),
|
|
86
|
+
recipes: createRecipeRegistry(),
|
|
87
|
+
}),
|
|
88
|
+
});
|
|
142
89
|
/**
|
|
143
90
|
* Dashboard-data contribution (audit 2026-05-29, L2). Graph owns its
|
|
144
91
|
* Code Paths panel data: it returns the graph catalog (via its own
|
|
@@ -189,53 +136,25 @@ function collectReportData(scope) {
|
|
|
189
136
|
*/
|
|
190
137
|
export const GRAPH_CONTRACT_VERSION = '1.0.0';
|
|
191
138
|
export const GRAPH_STABLE_ID = '3873f1c2-02a9-4719-930a-bca74b62b706';
|
|
192
|
-
export const graphTool = {
|
|
139
|
+
export const graphTool = defineTool({
|
|
193
140
|
metadata: {
|
|
194
141
|
id: GRAPH_STABLE_ID, // stable UUID (per ADR-0048; matches Checks `id` naming)
|
|
195
142
|
name: 'graph', // human key (previously the value in `id`)
|
|
196
143
|
version: readPackageVersion(import.meta.url),
|
|
197
144
|
description: 'Static call-graph + dead-end analysis',
|
|
198
145
|
},
|
|
199
|
-
commands: [
|
|
200
|
-
GRAPH,
|
|
201
|
-
GRAPH_LOOKUP,
|
|
202
|
-
GRAPH_SYMBOL_INDEX,
|
|
203
|
-
GRAPH_BASELINE_EXPORT,
|
|
204
|
-
GRAPH_SHARD_WORKER,
|
|
205
|
-
GRAPH_EQUIVALENCE_CHECK,
|
|
206
|
-
GRAPH_RUN_WORKER,
|
|
207
|
-
GRAPH_CATALOG_EXPORT,
|
|
208
|
-
GRAPH_SARIF_EXPORT,
|
|
209
|
-
GRAPH_RECIPES,
|
|
210
|
-
],
|
|
211
|
-
// Launch Phase 5: graph declares its command surface; the host mounts
|
|
212
|
-
// each spec via mountCommandSpec. The deprecated `register()` fallback is gone
|
|
213
|
-
// — graph no longer touches Commander.
|
|
214
146
|
commandSpecs: graphCommandSpecs,
|
|
215
|
-
contributeScope,
|
|
216
|
-
collectReportData,
|
|
217
|
-
sessionReplay: {
|
|
218
|
-
tool: 'graph',
|
|
219
|
-
replaySession: graphReplayFromSession,
|
|
220
|
-
},
|
|
221
|
-
// ADR-0023 Phase 4: graph contributes its namespaced `graph:` Zod schema so
|
|
222
|
-
// the host composes + strict-validates the whole config document before
|
|
223
|
-
// dispatch. The schema-bearing `ToolConfigDeclaration` narrows to the
|
|
224
|
-
// kernel-side `ToolConfigContribution` carrier (core carries no Zod).
|
|
225
|
-
config: graphConfigDeclaration,
|
|
226
|
-
// §5.3 Phase 4: graph owns the `graph-adapter` capability domain (declared in
|
|
227
|
-
// its manifest). It supplies the REAL registrar so the host can replace the
|
|
228
|
-
// manifest-time deferred placeholder once graph's module loads.
|
|
229
|
-
capabilityRegistrars: { 'graph-adapter': registerGraphAdapter },
|
|
230
|
-
// ADR-0036: graph's byte-preserved baseline identity (ruleId|filePath|line|col),
|
|
231
|
-
// read by the host baseline/ratchet seams when graph stamps its gate envelope.
|
|
232
|
-
fingerprintStrategy: graphFingerprintStrategy,
|
|
233
|
-
// ADR-0047: per-tool contract version for graph's domain surface (rules, catalog,
|
|
234
|
-
// execution model, adapter contract, etc.). Independent of core
|
|
235
|
-
// TOOL_CONTRACT_VERSION. Declared under extensionPoints for discoverability
|
|
236
|
-
// by hosts, agent-catalog, and third-party graph packs.
|
|
237
147
|
extensionPoints: {
|
|
238
148
|
graphContractVersion: GRAPH_CONTRACT_VERSION,
|
|
149
|
+
contributeScope: graphScope.contributeScope,
|
|
150
|
+
collectReportData,
|
|
151
|
+
sessionReplay: {
|
|
152
|
+
tool: 'graph',
|
|
153
|
+
replaySession: graphReplayFromSession,
|
|
154
|
+
},
|
|
155
|
+
config: graphConfigDeclaration,
|
|
156
|
+
capabilityRegistrars: { 'graph-adapter': registerGraphAdapter },
|
|
157
|
+
fingerprintStrategy: graphFingerprintStrategy,
|
|
239
158
|
},
|
|
240
|
-
};
|
|
159
|
+
});
|
|
241
160
|
//# sourceMappingURL=tool.js.map
|