@nanonets/graft 0.1.0 → 0.2.1
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 +37 -29
- package/dist/ask/ask.d.ts +28 -0
- package/dist/ask/ask.d.ts.map +1 -0
- package/dist/ask/ask.js +239 -0
- package/dist/ask/ask.js.map +1 -0
- package/dist/cli.js +60 -34
- package/dist/cli.js.map +1 -1
- package/dist/context/check.js +3 -3
- package/dist/context/check.js.map +1 -1
- package/dist/context/node-file.d.ts +3 -1
- package/dist/context/node-file.d.ts.map +1 -1
- package/dist/context/node-file.js +6 -4
- package/dist/context/node-file.js.map +1 -1
- package/dist/engine.d.ts +10 -1
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +9 -0
- package/dist/engine.js.map +1 -1
- package/dist/graph/build.d.ts +2 -2
- package/dist/graph/build.d.ts.map +1 -1
- package/dist/graph/build.js +12 -4
- package/dist/graph/build.js.map +1 -1
- package/dist/graph/cards.d.ts +45 -0
- package/dist/graph/cards.d.ts.map +1 -0
- package/dist/graph/cards.js +238 -0
- package/dist/graph/cards.js.map +1 -0
- package/dist/graph/check.js +9 -9
- package/dist/graph/check.js.map +1 -1
- package/dist/graph/write.d.ts +6 -2
- package/dist/graph/write.d.ts.map +1 -1
- package/dist/graph/write.js +16 -7
- package/dist/graph/write.js.map +1 -1
- package/dist/viz/serve.js +4 -4
- package/dist/viz/serve.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tier-2 "wiring cards" — the passive-channel surface of the wiring graph.
|
|
3
|
+
*
|
|
4
|
+
* The wiring graph itself lives as machine-only JSON in `graft/.graph/wiring.json`
|
|
5
|
+
* (nodes + edges), which an agent never greps or reads. This module projects its
|
|
6
|
+
* NODES up into markdown: one small card per source file, mirroring the source
|
|
7
|
+
* tree under `graft/` (e.g. `graft/src/ai/providers.md`). Each card lists the
|
|
8
|
+
* file's symbols with their `L<start>-L<end>` spans and a one-line description, so
|
|
9
|
+
* a `grep <symbol>` / `find <name>` / `cat` lands on the card and the agent reads
|
|
10
|
+
* ~150 tokens instead of the whole source file. Edges stay in the JSON — you can't
|
|
11
|
+
* grep a traversal — and are reached through `graft ask`.
|
|
12
|
+
*
|
|
13
|
+
* Cards are a pure projection: no LLM work here. The one-liner is the node's LLM
|
|
14
|
+
* `summary` when present (after `graft build --deep`), else its deterministic
|
|
15
|
+
* `signature`, so cards are useful even in a $0 structure-only build.
|
|
16
|
+
*/
|
|
17
|
+
import { mkdirSync, writeFileSync, readFileSync, existsSync, readdirSync, rmSync } from "node:fs";
|
|
18
|
+
import { dirname, join, relative } from "node:path";
|
|
19
|
+
import matter from "gray-matter";
|
|
20
|
+
import { CACHE_DIR, readNodes } from "../context/node-file.js";
|
|
21
|
+
import { GRAPH_DIR } from "./write.js";
|
|
22
|
+
const INDEX_FILE = "INDEX.md";
|
|
23
|
+
/** The card path for a source path: mirror the tree, swap the extension for .md. */
|
|
24
|
+
function cardPathFor(outDir, sourcePath) {
|
|
25
|
+
const md = sourcePath.replace(/\.[^./]+$/, "") + ".md";
|
|
26
|
+
return join(outDir, md);
|
|
27
|
+
}
|
|
28
|
+
/** Starting line of an "L43-L55" span, for stable ordering (0 if unparseable). */
|
|
29
|
+
function spanStart(span) {
|
|
30
|
+
const m = /^L(\d+)/.exec(span);
|
|
31
|
+
return m ? Number(m[1]) : 0;
|
|
32
|
+
}
|
|
33
|
+
/** First line of a node's meaning: LLM summary if ready, else its signature. */
|
|
34
|
+
function oneLiner(node) {
|
|
35
|
+
const s = node.summary?.trim();
|
|
36
|
+
if (s)
|
|
37
|
+
return s.split("\n")[0].trim();
|
|
38
|
+
return node.signature?.trim() ?? "";
|
|
39
|
+
}
|
|
40
|
+
/** path → concept-node slugs that cite it as a source (for the up-links). */
|
|
41
|
+
function conceptsByPath(outDir) {
|
|
42
|
+
const map = new Map();
|
|
43
|
+
for (const node of readNodes(outDir)) {
|
|
44
|
+
for (const src of node.sources) {
|
|
45
|
+
const list = map.get(src.path) ?? [];
|
|
46
|
+
list.push(node.slug);
|
|
47
|
+
map.set(src.path, list);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return map;
|
|
51
|
+
}
|
|
52
|
+
/** Render one file's card. `fileNode` may be absent for parse-only fragments. */
|
|
53
|
+
function renderCard(sourcePath, fileNode, symbols, conceptSlugs) {
|
|
54
|
+
const uplinks = conceptSlugs
|
|
55
|
+
.sort()
|
|
56
|
+
.map((s) => `[[${s}]]`)
|
|
57
|
+
.join(" ");
|
|
58
|
+
const head = uplinks ? `# ${sourcePath} · ${uplinks}` : `# ${sourcePath}`;
|
|
59
|
+
const lines = [head, ""];
|
|
60
|
+
const fileSummary = fileNode ? oneLiner(fileNode) : "";
|
|
61
|
+
if (fileSummary)
|
|
62
|
+
lines.push(fileSummary, "");
|
|
63
|
+
const sorted = [...symbols].sort((a, b) => spanStart(a.span) - spanStart(b.span) || a.name.localeCompare(b.name));
|
|
64
|
+
for (const n of sorted) {
|
|
65
|
+
const desc = oneLiner(n);
|
|
66
|
+
const tail = desc ? ` — ${desc}` : "";
|
|
67
|
+
lines.push(`- ${n.name} · ${n.kind} · ${n.span}${tail}`);
|
|
68
|
+
}
|
|
69
|
+
if (sorted.length === 0)
|
|
70
|
+
lines.push("_No extracted symbols in this file._");
|
|
71
|
+
return lines.join("\n") + "\n";
|
|
72
|
+
}
|
|
73
|
+
/** Every existing card file (`.md` inside subdirs of outDir; not concept nodes). */
|
|
74
|
+
function listExistingCards(outDir) {
|
|
75
|
+
const out = [];
|
|
76
|
+
const walk = (dir) => {
|
|
77
|
+
for (const e of readdirSync(dir, { withFileTypes: true })) {
|
|
78
|
+
if (e.isDirectory()) {
|
|
79
|
+
if (dir === outDir && (e.name === CACHE_DIR || e.name === GRAPH_DIR))
|
|
80
|
+
continue;
|
|
81
|
+
walk(join(dir, e.name));
|
|
82
|
+
}
|
|
83
|
+
else if (e.isFile() && e.name.endsWith(".md")) {
|
|
84
|
+
out.push(join(dir, e.name));
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
};
|
|
88
|
+
for (const e of readdirSync(outDir, { withFileTypes: true })) {
|
|
89
|
+
// Concept nodes and INDEX.md are top-level files — skip. Cards are in subdirs.
|
|
90
|
+
if (e.isDirectory() && e.name !== CACHE_DIR && e.name !== GRAPH_DIR) {
|
|
91
|
+
walk(join(outDir, e.name));
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
return out;
|
|
95
|
+
}
|
|
96
|
+
/** Remove now-empty directories under outDir (bottom-up), skipping .cache/.graph. */
|
|
97
|
+
function pruneEmptyDirs(outDir) {
|
|
98
|
+
const visit = (dir) => {
|
|
99
|
+
// returns true if dir is empty after visiting children
|
|
100
|
+
let empty = true;
|
|
101
|
+
for (const e of readdirSync(dir, { withFileTypes: true })) {
|
|
102
|
+
if (dir === outDir && (e.name === CACHE_DIR || e.name === GRAPH_DIR)) {
|
|
103
|
+
empty = false;
|
|
104
|
+
continue;
|
|
105
|
+
}
|
|
106
|
+
const child = join(dir, e.name);
|
|
107
|
+
if (e.isDirectory()) {
|
|
108
|
+
if (visit(child))
|
|
109
|
+
rmSync(child, { recursive: true, force: true });
|
|
110
|
+
else
|
|
111
|
+
empty = false;
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
empty = false;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
return empty;
|
|
118
|
+
};
|
|
119
|
+
if (existsSync(outDir))
|
|
120
|
+
visit(outDir);
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Write one wiring card per source file into `outDir`, mirroring the source tree,
|
|
124
|
+
* and prune cards whose source no longer exists. Returns what changed.
|
|
125
|
+
*/
|
|
126
|
+
export function writeCards(graph, outDir) {
|
|
127
|
+
const byPath = new Map();
|
|
128
|
+
for (const n of graph.nodes) {
|
|
129
|
+
const list = byPath.get(n.path) ?? [];
|
|
130
|
+
list.push(n);
|
|
131
|
+
byPath.set(n.path, list);
|
|
132
|
+
}
|
|
133
|
+
const concepts = conceptsByPath(outDir);
|
|
134
|
+
const written = new Set();
|
|
135
|
+
const files = [];
|
|
136
|
+
for (const [sourcePath, group] of byPath) {
|
|
137
|
+
const fileNode = group.find((n) => n.kind === "file");
|
|
138
|
+
const symbols = group.filter((n) => n.kind !== "file");
|
|
139
|
+
const cardPath = cardPathFor(outDir, sourcePath);
|
|
140
|
+
mkdirSync(dirname(cardPath), { recursive: true });
|
|
141
|
+
writeFileSync(cardPath, renderCard(sourcePath, fileNode, symbols, concepts.get(sourcePath) ?? []));
|
|
142
|
+
written.add(cardPath);
|
|
143
|
+
files.push({ card: relative(outDir, cardPath), path: sourcePath, symbols: symbols.length });
|
|
144
|
+
}
|
|
145
|
+
let pruned = 0;
|
|
146
|
+
for (const existing of listExistingCards(outDir)) {
|
|
147
|
+
if (!written.has(existing)) {
|
|
148
|
+
rmSync(existing);
|
|
149
|
+
pruned++;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
pruneEmptyDirs(outDir);
|
|
153
|
+
files.sort((a, b) => a.card.localeCompare(b.card));
|
|
154
|
+
return { written: written.size, pruned, files };
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Write `graft/INDEX.md` — the roster an agent `cat`s to orient. Lists the concept
|
|
158
|
+
* nodes on disk and the per-file cards. Deterministic order; no timestamps.
|
|
159
|
+
*/
|
|
160
|
+
export function writeIndex(outDir, files) {
|
|
161
|
+
const lines = [
|
|
162
|
+
"# graft — repo map",
|
|
163
|
+
"",
|
|
164
|
+
"Small markdown nodes summarising this repo. `grep` any term, symbol, or",
|
|
165
|
+
'filename here, or run `graft ask "<task>"`. Each node carries prose plus exact',
|
|
166
|
+
"`file:line`; open a source file only to edit the named span.",
|
|
167
|
+
"",
|
|
168
|
+
];
|
|
169
|
+
const concepts = readNodes(outDir).sort((a, b) => a.slug.localeCompare(b.slug));
|
|
170
|
+
if (concepts.length) {
|
|
171
|
+
lines.push("## Concepts", "");
|
|
172
|
+
for (const c of concepts) {
|
|
173
|
+
const srcs = c.sources.map((s) => s.path).join(", ");
|
|
174
|
+
const tail = srcs ? ` · ${srcs}` : "";
|
|
175
|
+
lines.push(`- [${c.slug}](${c.slug}.md) — ${c.name || c.slug}${tail}`);
|
|
176
|
+
}
|
|
177
|
+
lines.push("");
|
|
178
|
+
}
|
|
179
|
+
if (files.length) {
|
|
180
|
+
lines.push("## Files", "");
|
|
181
|
+
lines.push("Per-file wiring cards mirror the source tree. `grep` a symbol or `find` a", "filename to land on its card.", "");
|
|
182
|
+
for (const f of files) {
|
|
183
|
+
lines.push(`- [${f.card}](${f.card}) — ${f.symbols} symbol${f.symbols === 1 ? "" : "s"}`);
|
|
184
|
+
}
|
|
185
|
+
lines.push("");
|
|
186
|
+
}
|
|
187
|
+
writeFileSync(join(outDir, INDEX_FILE), lines.join("\n"));
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Backfill each concept node's frontmatter with a `covers:` list — the symbols
|
|
191
|
+
* (and their exact `file:line`) it spans, read from the wiring graph. This is the
|
|
192
|
+
* explicit OKF↔Wiring link: it doubles as grep bait (a `grep <symbol>` lands on
|
|
193
|
+
* the prose node, not just its card) and lets an agent read the span straight
|
|
194
|
+
* from the node without ever opening `wiring.json`.
|
|
195
|
+
*
|
|
196
|
+
* A surgical frontmatter patch: the generated body and every other key are
|
|
197
|
+
* preserved verbatim; only `covers` is added/replaced. Concept nodes are the
|
|
198
|
+
* top-level `.md` files (cards live in subdirs; INDEX.md is skipped). On a $0
|
|
199
|
+
* structure-only build there are no concept nodes, so this is a no-op. Returns
|
|
200
|
+
* the number of nodes enriched.
|
|
201
|
+
*/
|
|
202
|
+
export function writeCovers(graph, outDir) {
|
|
203
|
+
if (!existsSync(outDir))
|
|
204
|
+
return 0;
|
|
205
|
+
const symbolsByPath = new Map();
|
|
206
|
+
for (const n of graph.nodes) {
|
|
207
|
+
if (n.kind === "file")
|
|
208
|
+
continue;
|
|
209
|
+
const list = symbolsByPath.get(n.path) ?? [];
|
|
210
|
+
list.push(n);
|
|
211
|
+
symbolsByPath.set(n.path, list);
|
|
212
|
+
}
|
|
213
|
+
for (const list of symbolsByPath.values()) {
|
|
214
|
+
list.sort((a, b) => spanStart(a.span) - spanStart(b.span) || a.name.localeCompare(b.name));
|
|
215
|
+
}
|
|
216
|
+
let enriched = 0;
|
|
217
|
+
for (const entry of readdirSync(outDir)) {
|
|
218
|
+
if (!entry.endsWith(".md") || entry === INDEX_FILE)
|
|
219
|
+
continue;
|
|
220
|
+
const full = join(outDir, entry);
|
|
221
|
+
const parsed = matter(readFileSync(full, "utf8"));
|
|
222
|
+
const sources = Array.isArray(parsed.data.sources)
|
|
223
|
+
? parsed.data.sources
|
|
224
|
+
: [];
|
|
225
|
+
const covers = [];
|
|
226
|
+
for (const path of [...new Set(sources.map((s) => s.path ?? ""))].sort()) {
|
|
227
|
+
for (const n of symbolsByPath.get(path) ?? []) {
|
|
228
|
+
covers.push({ symbol: n.name, kind: n.kind, at: `${n.path}:${n.span}` });
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
// Re-stringify with covers appended last, so re-runs produce a stable diff.
|
|
232
|
+
const { covers: _prev, ...rest } = parsed.data;
|
|
233
|
+
writeFileSync(full, matter.stringify(parsed.content, { ...rest, covers }));
|
|
234
|
+
enriched++;
|
|
235
|
+
}
|
|
236
|
+
return enriched;
|
|
237
|
+
}
|
|
238
|
+
//# sourceMappingURL=cards.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cards.js","sourceRoot":"","sources":["../../src/graph/cards.ts"],"names":[],"mappings":"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"}
|
package/dist/graph/check.js
CHANGED
|
@@ -11,18 +11,18 @@
|
|
|
11
11
|
* removed a node in graph.json no longer exists in code (run `graph`)
|
|
12
12
|
* changed a node's body_hash differs from the committed one (run `graph`)
|
|
13
13
|
* stale a committed node's summary is flagged stale — its body changed
|
|
14
|
-
* since it was last summarized (run `
|
|
14
|
+
* since it was last summarized (run `graft build --deep`)
|
|
15
15
|
*
|
|
16
16
|
* `added`/`removed`/`changed` are structural: the graph no longer describes the
|
|
17
17
|
* code. `stale` is a meaning-layer signal the last build already recorded.
|
|
18
18
|
* `pending` (never summarized) is not drift — it's a deliberate Tier-1-only build.
|
|
19
19
|
*/
|
|
20
20
|
import { readFileSync } from "node:fs";
|
|
21
|
-
import {
|
|
21
|
+
import { relative, resolve } from "node:path";
|
|
22
22
|
import { contextDirFor } from "../context/node-file.js";
|
|
23
23
|
import { extractFile, languageOf } from "./extract.js";
|
|
24
24
|
import { listSourceFiles } from "./build.js";
|
|
25
|
-
import {
|
|
25
|
+
import { readGraph, wiringPath } from "./write.js";
|
|
26
26
|
export function checkGraph(dir, opts = {}) {
|
|
27
27
|
const root = resolve(dir);
|
|
28
28
|
const outDir = contextDirFor(root, opts.contextDir);
|
|
@@ -35,7 +35,7 @@ export function checkGraph(dir, opts = {}) {
|
|
|
35
35
|
stale: [],
|
|
36
36
|
pending: 0,
|
|
37
37
|
};
|
|
38
|
-
const committed = readGraph(
|
|
38
|
+
const committed = readGraph(wiringPath(outDir));
|
|
39
39
|
if (!committed) {
|
|
40
40
|
result.missing = true;
|
|
41
41
|
return result;
|
|
@@ -88,11 +88,11 @@ export function checkGraph(dir, opts = {}) {
|
|
|
88
88
|
/** Render a graph-check result as a human-readable report. */
|
|
89
89
|
export function formatGraphCheckReport(r) {
|
|
90
90
|
if (r.missing) {
|
|
91
|
-
return "graph check: NO GRAPH\n\nNo
|
|
91
|
+
return "graph check: NO GRAPH\n\nNo graft/.graph/wiring.json found. Run `graft build` first.";
|
|
92
92
|
}
|
|
93
93
|
if (r.ok) {
|
|
94
|
-
const note = r.pending ? ` (${r.pending} node(s) not yet summarized — run \`
|
|
95
|
-
return `graph check: OK — graph
|
|
94
|
+
const note = r.pending ? ` (${r.pending} node(s) not yet summarized — run \`graft build --deep\`)` : "";
|
|
95
|
+
return `graph check: OK — the wiring graph is in sync with the code.${note}`;
|
|
96
96
|
}
|
|
97
97
|
const lines = ["graph check: STALE", ""];
|
|
98
98
|
const structural = r.added.length + r.removed.length + r.changed.length;
|
|
@@ -118,9 +118,9 @@ export function formatGraphCheckReport(r) {
|
|
|
118
118
|
}
|
|
119
119
|
lines.push("");
|
|
120
120
|
if (structural)
|
|
121
|
-
lines.push("Run `graft
|
|
121
|
+
lines.push("Run `graft build` to rebuild the structure, then commit graft/.");
|
|
122
122
|
if (r.stale.length)
|
|
123
|
-
lines.push("Run `graft
|
|
123
|
+
lines.push("Run `graft build --deep` to refresh stale summaries.");
|
|
124
124
|
return lines.join("\n");
|
|
125
125
|
}
|
|
126
126
|
//# sourceMappingURL=check.js.map
|
package/dist/graph/check.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check.js","sourceRoot":"","sources":["../../src/graph/check.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"check.js","sourceRoot":"","sources":["../../src/graph/check.ts"],"names":[],"mappings":"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"}
|
package/dist/graph/write.d.ts
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
import type { GraphV1 } from "./types.js";
|
|
2
|
-
|
|
2
|
+
/** Hidden subdir under the context dir that holds machine-only graph artifacts. */
|
|
3
|
+
export declare const GRAPH_DIR = ".graph";
|
|
4
|
+
export declare const GRAPH_FILE = "wiring.json";
|
|
5
|
+
/** Absolute path to the wiring graph for a context dir: `<dir>/.graph/wiring.json`. */
|
|
6
|
+
export declare function wiringPath(outDir: string): string;
|
|
3
7
|
/**
|
|
4
|
-
* Read an existing graph
|
|
8
|
+
* Read an existing wiring graph for use as the Tier-2 cache. Returns null when the
|
|
5
9
|
* file is absent or unparseable (a fresh build, or a corrupt file we'll replace).
|
|
6
10
|
*/
|
|
7
11
|
export declare function readGraph(path: string): GraphV1 | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"write.d.ts","sourceRoot":"","sources":["../../src/graph/write.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"write.d.ts","sourceRoot":"","sources":["../../src/graph/write.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAU,OAAO,EAAE,MAAM,YAAY,CAAC;AAElD,mFAAmF;AACnF,eAAO,MAAM,SAAS,WAAW,CAAC;AAClC,eAAO,MAAM,UAAU,gBAAgB,CAAC;AAExC,uFAAuF;AACvF,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAMtD;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAUjE"}
|
package/dist/graph/write.js
CHANGED
|
@@ -1,15 +1,24 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Serialize a {@link GraphV1} to `<contextDir
|
|
2
|
+
* Serialize a {@link GraphV1} to `<contextDir>/.graph/wiring.json`.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* The wiring graph lives in a hidden `.graph/` subdir because it is machine-only:
|
|
5
|
+
* the agent never greps or reads it — it reaches the wiring data through the
|
|
6
|
+
* per-file markdown cards (grep) and the `ask` tool (edge traversal). Output is
|
|
7
|
+
* sorted (nodes by id, edges by source/relation/target) and carries no
|
|
5
8
|
* timestamps, so rebuilding an unchanged repo produces a byte-identical file and
|
|
6
9
|
* git diffs stay minimal.
|
|
7
10
|
*/
|
|
8
11
|
import { mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
9
|
-
import { join } from "node:path";
|
|
10
|
-
|
|
12
|
+
import { dirname, join } from "node:path";
|
|
13
|
+
/** Hidden subdir under the context dir that holds machine-only graph artifacts. */
|
|
14
|
+
export const GRAPH_DIR = ".graph";
|
|
15
|
+
export const GRAPH_FILE = "wiring.json";
|
|
16
|
+
/** Absolute path to the wiring graph for a context dir: `<dir>/.graph/wiring.json`. */
|
|
17
|
+
export function wiringPath(outDir) {
|
|
18
|
+
return join(outDir, GRAPH_DIR, GRAPH_FILE);
|
|
19
|
+
}
|
|
11
20
|
/**
|
|
12
|
-
* Read an existing graph
|
|
21
|
+
* Read an existing wiring graph for use as the Tier-2 cache. Returns null when the
|
|
13
22
|
* file is absent or unparseable (a fresh build, or a corrupt file we'll replace).
|
|
14
23
|
*/
|
|
15
24
|
export function readGraph(path) {
|
|
@@ -26,8 +35,8 @@ export function writeGraph(graph, outDir) {
|
|
|
26
35
|
nodes: [...graph.nodes].sort((a, b) => a.id.localeCompare(b.id)),
|
|
27
36
|
edges: [...graph.edges].sort(edgeOrder),
|
|
28
37
|
};
|
|
29
|
-
|
|
30
|
-
|
|
38
|
+
const path = wiringPath(outDir);
|
|
39
|
+
mkdirSync(dirname(path), { recursive: true });
|
|
31
40
|
writeFileSync(path, JSON.stringify(sorted, null, 2) + "\n");
|
|
32
41
|
return path;
|
|
33
42
|
}
|
package/dist/graph/write.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"write.js","sourceRoot":"","sources":["../../src/graph/write.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"write.js","sourceRoot":"","sources":["../../src/graph/write.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACjE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAG1C,mFAAmF;AACnF,MAAM,CAAC,MAAM,SAAS,GAAG,QAAQ,CAAC;AAClC,MAAM,CAAC,MAAM,UAAU,GAAG,aAAa,CAAC;AAExC,uFAAuF;AACvF,MAAM,UAAU,UAAU,CAAC,MAAc;IACvC,OAAO,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;AAC7C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,IAAY;IACpC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAY,CAAC;IAC3D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAc,EAAE,MAAc;IACvD,MAAM,MAAM,GAAY;QACtB,GAAG,KAAK;QACR,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAChE,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;KACxC,CAAC;IACF,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;IAChC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAC5D,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,SAAS,CAAC,CAAS,EAAE,CAAS;IACrC,OAAO,CACL,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC;QAChC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC;QACpC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CACjC,CAAC;AACJ,CAAC"}
|
package/dist/viz/serve.js
CHANGED
|
@@ -61,21 +61,21 @@ export async function startVizServer(opts) {
|
|
|
61
61
|
return;
|
|
62
62
|
}
|
|
63
63
|
if (path === "/api/code-graph") {
|
|
64
|
-
const file = join(opts.contextDir, "graph.json");
|
|
64
|
+
const file = join(opts.contextDir, ".graph", "wiring.json");
|
|
65
65
|
if (!existsSync(file)) {
|
|
66
|
-
sendJson(res, 404, { error: "no graph
|
|
66
|
+
sendJson(res, 404, { error: "no wiring graph in this context dir — run `graft build` first" });
|
|
67
67
|
return;
|
|
68
68
|
}
|
|
69
69
|
try {
|
|
70
70
|
const parsed = JSON.parse(readFileSync(file, "utf8"));
|
|
71
71
|
if (parsed?.meta?.version !== 1) {
|
|
72
|
-
sendJson(res, 404, { error: "
|
|
72
|
+
sendJson(res, 404, { error: "wiring.json has an unsupported version — regenerate with `graft build`" });
|
|
73
73
|
return;
|
|
74
74
|
}
|
|
75
75
|
sendJson(res, 200, parsed);
|
|
76
76
|
}
|
|
77
77
|
catch {
|
|
78
|
-
sendJson(res, 404, { error: "
|
|
78
|
+
sendJson(res, 404, { error: "wiring.json is unreadable — regenerate with `graft build`" });
|
|
79
79
|
}
|
|
80
80
|
return;
|
|
81
81
|
}
|
package/dist/viz/serve.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serve.js","sourceRoot":"","sources":["../../src/viz/serve.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"serve.js","sourceRoot":"","sources":["../../src/viz/serve.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED