ts-knowledge-graph 0.1.4 → 0.1.6

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.
Files changed (136) hide show
  1. package/README.md +26 -8
  2. package/contribs/{web_visualisation → webview}/README.md +7 -7
  3. package/contribs/webview/web/css/style.css +310 -0
  4. package/contribs/{web_visualisation → webview}/web/index.html +40 -5
  5. package/contribs/{web_visualisation → webview}/web/js/app.js +378 -39
  6. package/contribs/{web_visualisation/web/data → webview/web/js_autogenerated}/kind_descriptions.js +2 -1
  7. package/contribs/{web_visualisation → webview}/web/types/app_globals.d.ts +11 -3
  8. package/dist/cli.d.ts.map +1 -1
  9. package/dist/cli.js +6 -2
  10. package/dist/cli.js.map +1 -1
  11. package/dist/cluster/cluster_weights.d.ts +20 -0
  12. package/dist/cluster/cluster_weights.d.ts.map +1 -0
  13. package/dist/cluster/cluster_weights.js +32 -0
  14. package/dist/cluster/cluster_weights.js.map +1 -0
  15. package/dist/cluster/community_detector.d.ts +61 -0
  16. package/dist/cluster/community_detector.d.ts.map +1 -0
  17. package/dist/cluster/community_detector.js +120 -0
  18. package/dist/cluster/community_detector.js.map +1 -0
  19. package/dist/cluster/community_labeler.d.ts +84 -0
  20. package/dist/cluster/community_labeler.d.ts.map +1 -0
  21. package/dist/cluster/community_labeler.js +194 -0
  22. package/dist/cluster/community_labeler.js.map +1 -0
  23. package/dist/cluster/graph_clusterer.d.ts +47 -0
  24. package/dist/cluster/graph_clusterer.d.ts.map +1 -0
  25. package/dist/cluster/graph_clusterer.js +126 -0
  26. package/dist/cluster/graph_clusterer.js.map +1 -0
  27. package/dist/commands/benchmark_command.d.ts.map +1 -1
  28. package/dist/commands/benchmark_command.js +13 -10
  29. package/dist/commands/benchmark_command.js.map +1 -1
  30. package/dist/commands/blast_radius_command.d.ts.map +1 -1
  31. package/dist/commands/blast_radius_command.js +6 -5
  32. package/dist/commands/blast_radius_command.js.map +1 -1
  33. package/dist/commands/cluster_command.d.ts +7 -0
  34. package/dist/commands/cluster_command.d.ts.map +1 -0
  35. package/dist/commands/cluster_command.js +55 -0
  36. package/dist/commands/cluster_command.js.map +1 -0
  37. package/dist/commands/command_helpers.d.ts +9 -4
  38. package/dist/commands/command_helpers.d.ts.map +1 -1
  39. package/dist/commands/command_helpers.js +13 -8
  40. package/dist/commands/command_helpers.js.map +1 -1
  41. package/dist/commands/cost_command.d.ts.map +1 -1
  42. package/dist/commands/cost_command.js +25 -8
  43. package/dist/commands/cost_command.js.map +1 -1
  44. package/dist/commands/enrich_command.d.ts.map +1 -1
  45. package/dist/commands/enrich_command.js +7 -5
  46. package/dist/commands/enrich_command.js.map +1 -1
  47. package/dist/commands/extract_command.d.ts.map +1 -1
  48. package/dist/commands/extract_command.js +12 -6
  49. package/dist/commands/extract_command.js.map +1 -1
  50. package/dist/commands/hotspots_command.d.ts.map +1 -1
  51. package/dist/commands/hotspots_command.js +6 -5
  52. package/dist/commands/hotspots_command.js.map +1 -1
  53. package/dist/commands/install_command.d.ts +15 -5
  54. package/dist/commands/install_command.d.ts.map +1 -1
  55. package/dist/commands/install_command.js +61 -23
  56. package/dist/commands/install_command.js.map +1 -1
  57. package/dist/commands/load_command.d.ts.map +1 -1
  58. package/dist/commands/load_command.js +18 -13
  59. package/dist/commands/load_command.js.map +1 -1
  60. package/dist/commands/neighbors_command.d.ts.map +1 -1
  61. package/dist/commands/neighbors_command.js +6 -5
  62. package/dist/commands/neighbors_command.js.map +1 -1
  63. package/dist/commands/references_command.d.ts.map +1 -1
  64. package/dist/commands/references_command.js +6 -5
  65. package/dist/commands/references_command.js.map +1 -1
  66. package/dist/commands/report_command.d.ts +16 -0
  67. package/dist/commands/report_command.d.ts.map +1 -0
  68. package/dist/commands/report_command.js +115 -0
  69. package/dist/commands/report_command.js.map +1 -0
  70. package/dist/commands/webview_command.d.ts +36 -0
  71. package/dist/commands/webview_command.d.ts.map +1 -0
  72. package/dist/commands/webview_command.js +186 -0
  73. package/dist/commands/webview_command.js.map +1 -0
  74. package/dist/enrich/cpu_profile.d.ts +33 -0
  75. package/dist/enrich/cpu_profile.d.ts.map +1 -1
  76. package/dist/enrich/cpu_profile.js +88 -0
  77. package/dist/enrich/cpu_profile.js.map +1 -1
  78. package/dist/enrich/runtime_enricher.d.ts +8 -0
  79. package/dist/enrich/runtime_enricher.d.ts.map +1 -1
  80. package/dist/enrich/runtime_enricher.js +18 -0
  81. package/dist/enrich/runtime_enricher.js.map +1 -1
  82. package/dist/enrich/runtime_join.d.ts +25 -1
  83. package/dist/enrich/runtime_join.d.ts.map +1 -1
  84. package/dist/enrich/runtime_join.js +43 -0
  85. package/dist/enrich/runtime_join.js.map +1 -1
  86. package/dist/extract/git_source.d.ts +23 -0
  87. package/dist/extract/git_source.d.ts.map +1 -0
  88. package/dist/extract/git_source.js +75 -0
  89. package/dist/extract/git_source.js.map +1 -0
  90. package/dist/query/graph_query.d.ts +36 -1
  91. package/dist/query/graph_query.d.ts.map +1 -1
  92. package/dist/query/graph_query.js +69 -6
  93. package/dist/query/graph_query.js.map +1 -1
  94. package/dist/report/graph_report.d.ts +51 -0
  95. package/dist/report/graph_report.d.ts.map +1 -0
  96. package/dist/report/graph_report.js +312 -0
  97. package/dist/report/graph_report.js.map +1 -0
  98. package/dist/report/pdf_renderer.d.ts +22 -0
  99. package/dist/report/pdf_renderer.d.ts.map +1 -0
  100. package/dist/report/pdf_renderer.js +54 -0
  101. package/dist/report/pdf_renderer.js.map +1 -0
  102. package/dist/report/report_data.d.ts +128 -0
  103. package/dist/report/report_data.d.ts.map +1 -0
  104. package/dist/report/report_data.js +191 -0
  105. package/dist/report/report_data.js.map +1 -0
  106. package/dist/schema/edge.d.ts +5 -5
  107. package/dist/schema/edge.d.ts.map +1 -1
  108. package/dist/schema/edge.js +3 -0
  109. package/dist/schema/edge.js.map +1 -1
  110. package/dist/schema/source_manifest.d.ts +30 -0
  111. package/dist/schema/source_manifest.d.ts.map +1 -0
  112. package/dist/schema/source_manifest.js +21 -0
  113. package/dist/schema/source_manifest.js.map +1 -0
  114. package/dist/store/jsonl_reader.d.ts +4 -0
  115. package/dist/store/jsonl_reader.d.ts.map +1 -1
  116. package/dist/store/jsonl_reader.js +13 -1
  117. package/dist/store/jsonl_reader.js.map +1 -1
  118. package/dist/store/jsonl_store.d.ts +2 -1
  119. package/dist/store/jsonl_store.d.ts.map +1 -1
  120. package/dist/store/jsonl_store.js +4 -1
  121. package/dist/store/jsonl_store.js.map +1 -1
  122. package/dist/store/kuzu_store.d.ts +13 -0
  123. package/dist/store/kuzu_store.d.ts.map +1 -1
  124. package/dist/store/kuzu_store.js +29 -0
  125. package/dist/store/kuzu_store.js.map +1 -1
  126. package/dist/store/output_folder.d.ts +43 -0
  127. package/dist/store/output_folder.d.ts.map +1 -0
  128. package/dist/store/output_folder.js +61 -0
  129. package/dist/store/output_folder.js.map +1 -0
  130. package/dotclaude_folder/commands/code-graph-interview.md +123 -0
  131. package/dotclaude_folder/commands/code-graph-optimize.md +65 -0
  132. package/dotclaude_folder/skills/code-graph-query/SKILL.md +4 -4
  133. package/package.json +72 -62
  134. package/contribs/web_visualisation/web/css/style.css +0 -219
  135. package/contribs/web_visualisation/web/tsconfig.json +0 -18
  136. /package/contribs/{web_visualisation/web/data → webview/web/js_autogenerated}/.gitignore +0 -0
@@ -0,0 +1,191 @@
1
+ import { CLUSTERING_MANIFEST_KEY, COMMUNITY_LABEL_METADATA_KEY, COMMUNITY_METADATA_KEY } from '../cluster/graph_clusterer.js';
2
+ import { SOURCE_MANIFEST_KEY, SourceManifestSchema } from '../schema/source_manifest.js';
3
+ /** How many callers a symbol may have and still count as a "hidden" hotspot. */
4
+ const HIDDEN_HOTSPOT_MAX_CALLERS = 1;
5
+ /** A large bound used to read whole rankings before slicing them to `limit`. */
6
+ const UNBOUNDED = 100000;
7
+ /**
8
+ * Gathers a {@link GraphReportData} from a loaded graph, reusing the existing
9
+ * query surface (`hotspots`, `costRanking`, `deadExports`, `strongCycles`) plus a
10
+ * few direct reads for composition and communities. Mirrors how the other
11
+ * commands lean on {@link GraphQuery}; the rendering is left entirely to
12
+ * {@link GraphReport}, so this stays presentation-free apart from the one-line
13
+ * verdict it synthesises.
14
+ */
15
+ export class ReportData {
16
+ static async gather(store, query, options) {
17
+ const nodes = await store.readNodes();
18
+ const edgeKinds = await ReportData.edgeKindCounts(store);
19
+ const provenance = await ReportData.readProvenance(store);
20
+ const communityQuality = await ReportData.readCommunityQuality(store);
21
+ const callers = await query.hotspots({ by: 'callers', limit: UNBOUNDED });
22
+ const blast = await query.hotspots({ by: 'blast-radius', limit: UNBOUNDED });
23
+ const selfTime = await query.hotspots({ by: 'self-time', limit: UNBOUNDED });
24
+ const costReport = await query.costRanking({ limit: UNBOUNDED });
25
+ const deadExports = await query.deadExports();
26
+ const cycles = await query.strongCycles();
27
+ const limit = options.limit;
28
+ const enriched = costReport.enriched;
29
+ const measured = enriched === true && selfTime.fellBack === false;
30
+ const semantic = edgeKinds.some((entry) => entry.kind === 'CALLS' && entry.count > 0);
31
+ const fanIn = new Map(callers.hotspots.map((hotspot) => [hotspot.id, hotspot.score]));
32
+ const communities = ReportData.communitiesOf(nodes);
33
+ const data = {
34
+ generatedAt: options.generatedAt,
35
+ project: ReportData.projectName(provenance, options.project),
36
+ outputFolder: options.outputFolder,
37
+ provenance,
38
+ semantic,
39
+ enriched,
40
+ coverage: costReport.coverage,
41
+ totalSelf: costReport.totalSelf,
42
+ limit,
43
+ totals: {
44
+ symbols: nodes.length,
45
+ files: new Set(nodes.map((node) => node.filePath)).size,
46
+ relationships: edgeKinds.reduce((sum, entry) => sum + entry.count, 0),
47
+ communities: communities.length,
48
+ deadExports: deadExports.length,
49
+ cycles: cycles.length,
50
+ },
51
+ verdict: '',
52
+ nodeKinds: ReportData.nodeKindCounts(nodes),
53
+ edgeKinds,
54
+ hubsByCallers: callers.hotspots.slice(0, limit).map(ReportData.toRanked),
55
+ hubsByBlastRadius: blast.hotspots.slice(0, limit).map(ReportData.toRanked),
56
+ communityQuality,
57
+ communities: communities.slice(0, limit),
58
+ hotspots: measured === true ? selfTime.hotspots.slice(0, limit).map(ReportData.toRanked) : [],
59
+ cost: costReport.nodes.slice(0, limit).map(ReportData.toCostNode),
60
+ structureVsRuntime: ReportData.synthesize(costReport.nodes, measured === true ? selfTime.hotspots : [], fanIn),
61
+ cycles: cycles.slice(0, limit).map((members) => ({ size: members.length, members: members.map(ReportData.toSymbol) })),
62
+ boundary: ReportData.boundaryOf(nodes),
63
+ deadExports: deadExports.map(ReportData.toSymbol),
64
+ };
65
+ data.verdict = ReportData.verdictOf(data);
66
+ return data;
67
+ }
68
+ static async edgeKindCounts(store) {
69
+ const rows = await store.run('MATCH (:GraphNode)-[e:Edge]->(:GraphNode) RETURN e.kind AS kind');
70
+ return ReportData.countBy(rows.map((row) => String(row.kind)));
71
+ }
72
+ static nodeKindCounts(nodes) {
73
+ return ReportData.countBy(nodes.map((node) => node.kind));
74
+ }
75
+ static countBy(values) {
76
+ const counts = new Map();
77
+ for (const value of values) {
78
+ counts.set(value, (counts.get(value) ?? 0) + 1);
79
+ }
80
+ return [...counts.entries()]
81
+ .map(([kind, count]) => ({ kind, count }))
82
+ .sort((a, b) => b.count - a.count || a.kind.localeCompare(b.kind));
83
+ }
84
+ /** Groups nodes by their assigned community index, labelled and sized, largest first. */
85
+ static communitiesOf(nodes) {
86
+ const sizes = new Map();
87
+ const labels = new Map();
88
+ for (const node of nodes) {
89
+ const index = node.metadata[COMMUNITY_METADATA_KEY];
90
+ if (typeof index !== 'number') {
91
+ continue;
92
+ }
93
+ sizes.set(index, (sizes.get(index) ?? 0) + 1);
94
+ const label = node.metadata[COMMUNITY_LABEL_METADATA_KEY];
95
+ if (typeof label === 'string' && labels.has(index) === false) {
96
+ labels.set(index, label);
97
+ }
98
+ }
99
+ return [...sizes.entries()]
100
+ .map(([index, size]) => ({ label: labels.get(index) ?? `community ${index}`, size }))
101
+ .sort((a, b) => b.size - a.size || a.label.localeCompare(b.label));
102
+ }
103
+ static boundaryOf(nodes) {
104
+ const of = (kind) => nodes.filter((node) => node.kind === kind).map(ReportData.toSymbol);
105
+ return { endpoints: of('Endpoint'), configFlags: of('ConfigFlag'), externalApis: of('ExternalAPI') };
106
+ }
107
+ /**
108
+ * Splits the measured graph into three reads of the same symbols: pure
109
+ * orchestrators (cost flows through, ~no self cost), hidden hotspots (hot, few
110
+ * callers), and the aligned core (central and hot).
111
+ */
112
+ static synthesize(cost, hottest, fanIn) {
113
+ const orchestrators = cost
114
+ .filter((node) => node.selfCost === 0 && node.inclusiveCost > 0)
115
+ .slice(0, 5)
116
+ .map(ReportData.toSymbol);
117
+ const hiddenHotspots = hottest
118
+ .filter((hotspot) => (fanIn.get(hotspot.id) ?? 0) <= HIDDEN_HOTSPOT_MAX_CALLERS)
119
+ .slice(0, 5)
120
+ .map(ReportData.toSymbol);
121
+ const alignedCore = hottest
122
+ .filter((hotspot) => (fanIn.get(hotspot.id) ?? 0) > HIDDEN_HOTSPOT_MAX_CALLERS)
123
+ .slice(0, 5)
124
+ .map(ReportData.toSymbol);
125
+ return { orchestrators, hiddenHotspots, alignedCore };
126
+ }
127
+ static async readProvenance(store) {
128
+ const raw = await store.readGraphMeta(SOURCE_MANIFEST_KEY);
129
+ if (raw === null) {
130
+ return null;
131
+ }
132
+ const parsed = SourceManifestSchema.safeParse(raw);
133
+ return parsed.success === true ? parsed.data : null;
134
+ }
135
+ static async readCommunityQuality(store) {
136
+ const raw = await store.readGraphMeta(CLUSTERING_MANIFEST_KEY);
137
+ if (raw === null) {
138
+ return null;
139
+ }
140
+ const quality = raw.quality;
141
+ return typeof quality === 'number' ? quality : null;
142
+ }
143
+ /** Derives `owner/repo` from the recorded GitHub base URL, falling back to the given label. */
144
+ static projectName(provenance, fallback) {
145
+ if (provenance === null) {
146
+ return fallback;
147
+ }
148
+ try {
149
+ const path = new URL(provenance.baseUrl).pathname.replace(/^\/+|\/+$/g, '');
150
+ return path.length > 0 ? path : fallback;
151
+ }
152
+ catch {
153
+ return fallback;
154
+ }
155
+ }
156
+ static verdictOf(data) {
157
+ const shape = data.semantic === true ? (data.enriched === true ? 'semantic, enriched' : 'semantic') : 'structural';
158
+ const cycles = data.totals.cycles === 0 ? 'acyclic' : `${data.totals.cycles} call cycle(s)`;
159
+ const sentences = [`${data.totals.symbols} symbols across ${data.totals.files} files — ${shape}, ${cycles}.`];
160
+ if (data.enriched === true && data.hotspots.length > 0) {
161
+ const hottest = data.hotspots[0];
162
+ const costNode = data.cost.find((node) => node.name === hottest.name && node.filePath === hottest.filePath);
163
+ const share = costNode === undefined ? '' : ` (${(costNode.shareOfTotal * 100).toFixed(1)}% of inclusive cost)`;
164
+ sentences.push(`\`${hottest.name}\` is the hottest function${share}.`);
165
+ }
166
+ if (data.totals.deadExports > 0) {
167
+ sentences.push(`${data.totals.deadExports} exported symbol(s) appear dead.`);
168
+ }
169
+ return sentences.join(' ');
170
+ }
171
+ static toRanked(ref) {
172
+ return { name: ref.name, kind: ref.kind, filePath: ref.filePath, startLine: ref.startLine, score: ref.score };
173
+ }
174
+ static toCostNode(ref) {
175
+ return {
176
+ name: ref.name,
177
+ kind: ref.kind,
178
+ filePath: ref.filePath,
179
+ startLine: ref.startLine,
180
+ selfCost: ref.selfCost,
181
+ inclusiveCost: ref.inclusiveCost,
182
+ shareOfTotal: ref.shareOfTotal,
183
+ cyclic: ref.cyclic,
184
+ cycleSize: ref.cycleSize,
185
+ };
186
+ }
187
+ static toSymbol(ref) {
188
+ return { name: ref.name, kind: ref.kind, filePath: ref.filePath, startLine: ref.startLine };
189
+ }
190
+ }
191
+ //# sourceMappingURL=report_data.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"report_data.js","sourceRoot":"","sources":["../../src/report/report_data.ts"],"names":[],"mappings":"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"}
@@ -8,8 +8,8 @@ import { z } from 'zod';
8
8
  * needs no schema migration; its only real costs are this enum, the extractor that
9
9
  * emits it, and — for edges — whether it joins {@link REFERENCE_EDGE_KINDS}.
10
10
  */
11
- export declare const EDGE_KINDS: readonly ["CONTAINS", "IMPORTS", "EXPORTS", "EXTENDS", "IMPLEMENTS", "USES_TYPE", "RETURNS", "PARAM_TYPE", "CALLS", "INSTANTIATES", "OVERRIDES", "READS", "WRITES", "READS_CONFIG", "CALLS_EXTERNAL", "HANDLES"];
12
- export declare const EdgeKindSchema: z.ZodEnum<["CONTAINS", "IMPORTS", "EXPORTS", "EXTENDS", "IMPLEMENTS", "USES_TYPE", "RETURNS", "PARAM_TYPE", "CALLS", "INSTANTIATES", "OVERRIDES", "READS", "WRITES", "READS_CONFIG", "CALLS_EXTERNAL", "HANDLES"]>;
11
+ export declare const EDGE_KINDS: readonly ["CONTAINS", "IMPORTS", "EXPORTS", "EXTENDS", "IMPLEMENTS", "USES_TYPE", "RETURNS", "PARAM_TYPE", "CALLS", "INSTANTIATES", "OVERRIDES", "READS", "WRITES", "READS_CONFIG", "CALLS_EXTERNAL", "HANDLES", "CALLS_RUNTIME"];
12
+ export declare const EdgeKindSchema: z.ZodEnum<["CONTAINS", "IMPORTS", "EXPORTS", "EXTENDS", "IMPLEMENTS", "USES_TYPE", "RETURNS", "PARAM_TYPE", "CALLS", "INSTANTIATES", "OVERRIDES", "READS", "WRITES", "READS_CONFIG", "CALLS_EXTERNAL", "HANDLES", "CALLS_RUNTIME"]>;
13
13
  export type EdgeKind = z.infer<typeof EdgeKindSchema>;
14
14
  /**
15
15
  * One-line, onboarding-oriented descriptions for every {@link EdgeKind}, keyed by
@@ -39,19 +39,19 @@ export declare const EDGE_KIND_DESCRIPTIONS: Record<EdgeKind, string>;
39
39
  export declare const REFERENCE_EDGE_KINDS: readonly ["CALLS", "EXTENDS", "IMPLEMENTS", "USES_TYPE", "RETURNS", "PARAM_TYPE", "INSTANTIATES", "READS", "OVERRIDES", "HANDLES"];
40
40
  export declare const GraphEdgeSchema: z.ZodObject<{
41
41
  id: z.ZodString;
42
- kind: z.ZodEnum<["CONTAINS", "IMPORTS", "EXPORTS", "EXTENDS", "IMPLEMENTS", "USES_TYPE", "RETURNS", "PARAM_TYPE", "CALLS", "INSTANTIATES", "OVERRIDES", "READS", "WRITES", "READS_CONFIG", "CALLS_EXTERNAL", "HANDLES"]>;
42
+ kind: z.ZodEnum<["CONTAINS", "IMPORTS", "EXPORTS", "EXTENDS", "IMPLEMENTS", "USES_TYPE", "RETURNS", "PARAM_TYPE", "CALLS", "INSTANTIATES", "OVERRIDES", "READS", "WRITES", "READS_CONFIG", "CALLS_EXTERNAL", "HANDLES", "CALLS_RUNTIME"]>;
43
43
  from: z.ZodString;
44
44
  to: z.ZodString;
45
45
  metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
46
46
  }, "strip", z.ZodTypeAny, {
47
47
  id: string;
48
- kind: "CONTAINS" | "IMPORTS" | "EXPORTS" | "EXTENDS" | "IMPLEMENTS" | "USES_TYPE" | "RETURNS" | "PARAM_TYPE" | "CALLS" | "INSTANTIATES" | "OVERRIDES" | "READS" | "WRITES" | "READS_CONFIG" | "CALLS_EXTERNAL" | "HANDLES";
48
+ kind: "CONTAINS" | "IMPORTS" | "EXPORTS" | "EXTENDS" | "IMPLEMENTS" | "USES_TYPE" | "RETURNS" | "PARAM_TYPE" | "CALLS" | "INSTANTIATES" | "OVERRIDES" | "READS" | "WRITES" | "READS_CONFIG" | "CALLS_EXTERNAL" | "HANDLES" | "CALLS_RUNTIME";
49
49
  from: string;
50
50
  to: string;
51
51
  metadata?: Record<string, unknown> | undefined;
52
52
  }, {
53
53
  id: string;
54
- kind: "CONTAINS" | "IMPORTS" | "EXPORTS" | "EXTENDS" | "IMPLEMENTS" | "USES_TYPE" | "RETURNS" | "PARAM_TYPE" | "CALLS" | "INSTANTIATES" | "OVERRIDES" | "READS" | "WRITES" | "READS_CONFIG" | "CALLS_EXTERNAL" | "HANDLES";
54
+ kind: "CONTAINS" | "IMPORTS" | "EXPORTS" | "EXTENDS" | "IMPLEMENTS" | "USES_TYPE" | "RETURNS" | "PARAM_TYPE" | "CALLS" | "INSTANTIATES" | "OVERRIDES" | "READS" | "WRITES" | "READS_CONFIG" | "CALLS_EXTERNAL" | "HANDLES" | "CALLS_RUNTIME";
55
55
  from: string;
56
56
  to: string;
57
57
  metadata?: Record<string, unknown> | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"edge.d.ts","sourceRoot":"","sources":["../../src/schema/edge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;;;GAQG;AACH,eAAO,MAAM,UAAU,kNAqBb,CAAC;AAEX,eAAO,MAAM,cAAc,oNAAqB,CAAC;AACjD,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAEtD;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAiB3D,CAAC;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,oBAAoB,oIAWO,CAAC;AAEzC,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;EAM1B,CAAC;AACH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC"}
1
+ {"version":3,"file":"edge.d.ts","sourceRoot":"","sources":["../../src/schema/edge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;;;GAQG;AACH,eAAO,MAAM,UAAU,mOAuBb,CAAC;AAEX,eAAO,MAAM,cAAc,qOAAqB,CAAC;AACjD,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAEtD;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAkB3D,CAAC;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,oBAAoB,oIAWO,CAAC;AAEzC,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;EAM1B,CAAC;AACH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC"}
@@ -29,6 +29,8 @@ export const EDGE_KINDS = [
29
29
  'READS_CONFIG',
30
30
  'CALLS_EXTERNAL',
31
31
  'HANDLES',
32
+ // Runtime — observed dynamically, emitted by `enrich` from a CPU profile.
33
+ 'CALLS_RUNTIME',
32
34
  ];
33
35
  export const EdgeKindSchema = z.enum(EDGE_KINDS);
34
36
  /**
@@ -54,6 +56,7 @@ export const EDGE_KIND_DESCRIPTIONS = {
54
56
  READS_CONFIG: 'The source reads the target configuration flag (an environment variable).',
55
57
  CALLS_EXTERNAL: 'The source makes an outbound HTTP call to the target external API.',
56
58
  HANDLES: 'Links an HTTP endpoint to the function that handles it (route to handler).',
59
+ CALLS_RUNTIME: 'A call observed at runtime in a CPU profile: the source function or method was on the stack directly above the target. Captures dynamic dispatch that static CALLS cannot see.',
57
60
  };
58
61
  /**
59
62
  * The edge kinds that count as a *reference* to their target — the single source
@@ -1 +1 @@
1
- {"version":3,"file":"edge.js","sourceRoot":"","sources":["../../src/schema/edge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG;IACzB,6DAA6D;IAC7D,UAAU;IACV,SAAS;IACT,SAAS;IACT,+DAA+D;IAC/D,SAAS;IACT,YAAY;IACZ,WAAW;IACX,SAAS;IACT,YAAY;IACZ,qEAAqE;IACrE,OAAO;IACP,cAAc;IACd,WAAW;IACX,OAAO;IACP,QAAQ;IACR,yDAAyD;IACzD,cAAc;IACd,gBAAgB;IAChB,SAAS;CACA,CAAC;AAEX,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAGjD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAA6B;IAC/D,QAAQ,EAAE,sHAAsH;IAChI,OAAO,EAAE,uCAAuC;IAChD,OAAO,EAAE,8CAA8C;IACvD,OAAO,EAAE,iEAAiE;IAC1E,UAAU,EAAE,mDAAmD;IAC/D,SAAS,EAAE,sDAAsD;IACjE,OAAO,EAAE,uEAAuE;IAChF,UAAU,EAAE,+DAA+D;IAC3E,KAAK,EAAE,iDAAiD;IACxD,YAAY,EAAE,kDAAkD;IAChE,SAAS,EAAE,gEAAgE;IAC3E,KAAK,EAAE,gEAAgE;IACvE,MAAM,EAAE,wDAAwD;IAChE,YAAY,EAAE,2EAA2E;IACzF,cAAc,EAAE,oEAAoE;IACpF,OAAO,EAAE,4EAA4E;CACrF,CAAC;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG;IACnC,OAAO;IACP,SAAS;IACT,YAAY;IACZ,WAAW;IACX,SAAS;IACT,YAAY;IACZ,cAAc;IACd,OAAO;IACP,WAAW;IACX,SAAS;CAC8B,CAAC;AAEzC,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,IAAI,EAAE,cAAc;IACpB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;CAC1C,CAAC,CAAC"}
1
+ {"version":3,"file":"edge.js","sourceRoot":"","sources":["../../src/schema/edge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG;IACzB,6DAA6D;IAC7D,UAAU;IACV,SAAS;IACT,SAAS;IACT,+DAA+D;IAC/D,SAAS;IACT,YAAY;IACZ,WAAW;IACX,SAAS;IACT,YAAY;IACZ,qEAAqE;IACrE,OAAO;IACP,cAAc;IACd,WAAW;IACX,OAAO;IACP,QAAQ;IACR,yDAAyD;IACzD,cAAc;IACd,gBAAgB;IAChB,SAAS;IACT,0EAA0E;IAC1E,eAAe;CACN,CAAC;AAEX,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAGjD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAA6B;IAC/D,QAAQ,EAAE,sHAAsH;IAChI,OAAO,EAAE,uCAAuC;IAChD,OAAO,EAAE,8CAA8C;IACvD,OAAO,EAAE,iEAAiE;IAC1E,UAAU,EAAE,mDAAmD;IAC/D,SAAS,EAAE,sDAAsD;IACjE,OAAO,EAAE,uEAAuE;IAChF,UAAU,EAAE,+DAA+D;IAC3E,KAAK,EAAE,iDAAiD;IACxD,YAAY,EAAE,kDAAkD;IAChE,SAAS,EAAE,gEAAgE;IAC3E,KAAK,EAAE,gEAAgE;IACvE,MAAM,EAAE,wDAAwD;IAChE,YAAY,EAAE,2EAA2E;IACzF,cAAc,EAAE,oEAAoE;IACpF,OAAO,EAAE,4EAA4E;IACrF,aAAa,EAAE,gLAAgL;CAC/L,CAAC;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG;IACnC,OAAO;IACP,SAAS;IACT,YAAY;IACZ,WAAW;IACX,SAAS;IACT,YAAY;IACZ,cAAc;IACd,OAAO;IACP,WAAW;IACX,SAAS;CAC8B,CAAC;AAEzC,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,IAAI,EAAE,cAAc;IACpB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;CAC1C,CAAC,CAAC"}
@@ -0,0 +1,30 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * The `GraphMeta` key under which the source-repository manifest is stored. Like
4
+ * {@link RUNTIME_MANIFEST_KEY}, it is a graph-level record — one per graph — and
5
+ * is written by `load` from the provenance `extract` captured at parse time.
6
+ */
7
+ export declare const SOURCE_MANIFEST_KEY = "source";
8
+ /**
9
+ * Git provenance of the analysed project, captured by `extract` at the exact
10
+ * commit and root it parsed so the `web` visualisation can turn each file path
11
+ * into a GitHub permalink. `prefix` is the analysed root's path within the
12
+ * repository — `''` at the repo root, otherwise `sub/dir/` with a trailing
13
+ * slash — and is prepended to each node's root-relative `filePath` to form the
14
+ * repository-relative path.
15
+ */
16
+ export declare const SourceManifestSchema: z.ZodObject<{
17
+ baseUrl: z.ZodString;
18
+ commit: z.ZodString;
19
+ prefix: z.ZodString;
20
+ }, "strip", z.ZodTypeAny, {
21
+ baseUrl: string;
22
+ commit: string;
23
+ prefix: string;
24
+ }, {
25
+ baseUrl: string;
26
+ commit: string;
27
+ prefix: string;
28
+ }>;
29
+ export type SourceManifest = z.infer<typeof SourceManifestSchema>;
30
+ //# sourceMappingURL=source_manifest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source_manifest.d.ts","sourceRoot":"","sources":["../../src/schema/source_manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,WAAW,CAAC;AAE5C;;;;;;;GAOG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;EAI/B,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC"}
@@ -0,0 +1,21 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * The `GraphMeta` key under which the source-repository manifest is stored. Like
4
+ * {@link RUNTIME_MANIFEST_KEY}, it is a graph-level record — one per graph — and
5
+ * is written by `load` from the provenance `extract` captured at parse time.
6
+ */
7
+ export const SOURCE_MANIFEST_KEY = 'source';
8
+ /**
9
+ * Git provenance of the analysed project, captured by `extract` at the exact
10
+ * commit and root it parsed so the `web` visualisation can turn each file path
11
+ * into a GitHub permalink. `prefix` is the analysed root's path within the
12
+ * repository — `''` at the repo root, otherwise `sub/dir/` with a trailing
13
+ * slash — and is prepended to each node's root-relative `filePath` to form the
14
+ * repository-relative path.
15
+ */
16
+ export const SourceManifestSchema = z.object({
17
+ baseUrl: z.string(),
18
+ commit: z.string(),
19
+ prefix: z.string(),
20
+ });
21
+ //# sourceMappingURL=source_manifest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source_manifest.js","sourceRoot":"","sources":["../../src/schema/source_manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;GAIG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,QAAQ,CAAC;AAE5C;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;CAClB,CAAC,CAAC"}
@@ -1,11 +1,15 @@
1
1
  import { GraphEdge } from '../schema/edge.js';
2
2
  import { GraphNode } from '../schema/node.js';
3
+ import { SourceManifest } from '../schema/source_manifest.js';
3
4
  export type GraphData = {
4
5
  nodes: GraphNode[];
5
6
  edges: GraphEdge[];
7
+ source?: SourceManifest;
6
8
  };
7
9
  export declare class JsonlReader {
8
10
  static read(dir: string): Promise<GraphData>;
11
+ /** Reads the optional `source.json` provenance manifest; an absent or malformed file yields `undefined`. */
12
+ private static readSource;
9
13
  private static readLines;
10
14
  }
11
15
  //# sourceMappingURL=jsonl_reader.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"jsonl_reader.d.ts","sourceRoot":"","sources":["../../src/store/jsonl_reader.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAmB,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAmB,MAAM,mBAAmB,CAAC;AAE/D,MAAM,MAAM,SAAS,GAAG;IACvB,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,KAAK,EAAE,SAAS,EAAE,CAAC;CACnB,CAAC;AAEF,qBAAa,WAAW;WACV,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;mBAM7B,SAAS;CAO9B"}
1
+ {"version":3,"file":"jsonl_reader.d.ts","sourceRoot":"","sources":["../../src/store/jsonl_reader.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAmB,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAmB,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAwB,MAAM,8BAA8B,CAAC;AAEpF,MAAM,MAAM,SAAS,GAAG;IACvB,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,MAAM,CAAC,EAAE,cAAc,CAAC;CACxB,CAAC;AAEF,qBAAa,WAAW;WACV,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAOlD,4GAA4G;mBACvF,UAAU;mBASV,SAAS;CAO9B"}
@@ -2,11 +2,23 @@ import { readFile } from 'node:fs/promises';
2
2
  import { join } from 'node:path';
3
3
  import { GraphEdgeSchema } from '../schema/edge.js';
4
4
  import { GraphNodeSchema } from '../schema/node.js';
5
+ import { SourceManifestSchema } from '../schema/source_manifest.js';
5
6
  export class JsonlReader {
6
7
  static async read(dir) {
7
8
  const nodes = await JsonlReader.readLines(join(dir, 'nodes.jsonl'), GraphNodeSchema);
8
9
  const edges = await JsonlReader.readLines(join(dir, 'edges.jsonl'), GraphEdgeSchema);
9
- return { nodes, edges };
10
+ const source = await JsonlReader.readSource(join(dir, 'source.json'));
11
+ return { nodes, edges, source };
12
+ }
13
+ /** Reads the optional `source.json` provenance manifest; an absent or malformed file yields `undefined`. */
14
+ static async readSource(path) {
15
+ try {
16
+ const parsed = SourceManifestSchema.safeParse(JSON.parse(await readFile(path, 'utf8')));
17
+ return parsed.success === true ? parsed.data : undefined;
18
+ }
19
+ catch {
20
+ return undefined;
21
+ }
10
22
  }
11
23
  static async readLines(path, schema) {
12
24
  const content = await readFile(path, 'utf8');
@@ -1 +1 @@
1
- {"version":3,"file":"jsonl_reader.js","sourceRoot":"","sources":["../../src/store/jsonl_reader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAa,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAa,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAO/D,MAAM,OAAO,WAAW;IACvB,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAW;QAC5B,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,EAAE,eAAe,CAAC,CAAC;QACrF,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,EAAE,eAAe,CAAC,CAAC;QACrF,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IACzB,CAAC;IAEO,MAAM,CAAC,KAAK,CAAC,SAAS,CAAI,IAAY,EAAE,MAAoB;QACnE,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC7C,OAAO,OAAO;aACZ,KAAK,CAAC,IAAI,CAAC;aACX,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;aACxC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjD,CAAC;CACD"}
1
+ {"version":3,"file":"jsonl_reader.js","sourceRoot":"","sources":["../../src/store/jsonl_reader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAa,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAa,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAkB,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAQpF,MAAM,OAAO,WAAW;IACvB,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAW;QAC5B,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,EAAE,eAAe,CAAC,CAAC;QACrF,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,EAAE,eAAe,CAAC,CAAC;QACrF,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC,CAAC;QACtE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IACjC,CAAC;IAED,4GAA4G;IACpG,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,IAAY;QAC3C,IAAI,CAAC;YACJ,MAAM,MAAM,GAAG,oBAAoB,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;YACxF,OAAO,MAAM,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;QAC1D,CAAC;QAAC,MAAM,CAAC;YACR,OAAO,SAAS,CAAC;QAClB,CAAC;IACF,CAAC;IAEO,MAAM,CAAC,KAAK,CAAC,SAAS,CAAI,IAAY,EAAE,MAAoB;QACnE,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC7C,OAAO,OAAO;aACZ,KAAK,CAAC,IAAI,CAAC;aACX,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;aACxC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjD,CAAC;CACD"}
@@ -1,7 +1,8 @@
1
1
  import { GraphEdge } from '../schema/edge.js';
2
2
  import { GraphNode } from '../schema/node.js';
3
+ import { SourceManifest } from '../schema/source_manifest.js';
3
4
  export declare class JsonlStore {
4
- static write(outDir: string, nodes: GraphNode[], edges: GraphEdge[]): Promise<void>;
5
+ static write(outDir: string, nodes: GraphNode[], edges: GraphEdge[], source?: SourceManifest): Promise<void>;
5
6
  private static serialize;
6
7
  }
7
8
  //# sourceMappingURL=jsonl_store.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"jsonl_store.d.ts","sourceRoot":"","sources":["../../src/store/jsonl_store.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9C,qBAAa,UAAU;WACT,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAMzF,OAAO,CAAC,MAAM,CAAC,SAAS;CAGxB"}
1
+ {"version":3,"file":"jsonl_store.d.ts","sourceRoot":"","sources":["../../src/store/jsonl_store.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAE9D,qBAAa,UAAU;WACT,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,MAAM,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IASlH,OAAO,CAAC,MAAM,CAAC,SAAS;CAGxB"}
@@ -1,10 +1,13 @@
1
1
  import { mkdir, writeFile } from 'node:fs/promises';
2
2
  import { join } from 'node:path';
3
3
  export class JsonlStore {
4
- static async write(outDir, nodes, edges) {
4
+ static async write(outDir, nodes, edges, source) {
5
5
  await mkdir(outDir, { recursive: true });
6
6
  await writeFile(join(outDir, 'nodes.jsonl'), JsonlStore.serialize(nodes), 'utf8');
7
7
  await writeFile(join(outDir, 'edges.jsonl'), JsonlStore.serialize(edges), 'utf8');
8
+ if (source !== undefined) {
9
+ await writeFile(join(outDir, 'source.json'), JSON.stringify(source) + '\n', 'utf8');
10
+ }
8
11
  }
9
12
  static serialize(rows) {
10
13
  return rows.map((row) => JSON.stringify(row)).join('\n') + '\n';
@@ -1 +1 @@
1
- {"version":3,"file":"jsonl_store.js","sourceRoot":"","sources":["../../src/store/jsonl_store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAIjC,MAAM,OAAO,UAAU;IACtB,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAc,EAAE,KAAkB,EAAE,KAAkB;QACxE,MAAM,KAAK,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACzC,MAAM,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,EAAE,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC;QAClF,MAAM,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,EAAE,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC;IACnF,CAAC;IAEO,MAAM,CAAC,SAAS,CAAC,IAAe;QACvC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACjE,CAAC;CACD"}
1
+ {"version":3,"file":"jsonl_store.js","sourceRoot":"","sources":["../../src/store/jsonl_store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAKjC,MAAM,OAAO,UAAU;IACtB,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAc,EAAE,KAAkB,EAAE,KAAkB,EAAE,MAAuB;QACjG,MAAM,KAAK,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACzC,MAAM,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,EAAE,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC;QAClF,MAAM,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,EAAE,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC;QAClF,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YAC1B,MAAM,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC;QACrF,CAAC;IACF,CAAC;IAEO,MAAM,CAAC,SAAS,CAAC,IAAe;QACvC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACjE,CAAC;CACD"}
@@ -17,6 +17,19 @@ export declare class KuzuStore {
17
17
  constructor(dbPath: string);
18
18
  initSchema(): Promise<void>;
19
19
  load(nodes: GraphNode[], edges: GraphEdge[]): Promise<void>;
20
+ /**
21
+ * Inserts or updates edges by (`from`, `to`, `kind`) — the same merge `load`
22
+ * uses for its edge pass — onto an already-loaded graph; both endpoint nodes
23
+ * must already exist. Used by `enrich` to attach the runtime call graph after
24
+ * the static graph is loaded.
25
+ */
26
+ writeEdges(edges: GraphEdge[]): Promise<void>;
27
+ /**
28
+ * Removes every edge of a given kind. Used by `enrich` to clear the prior
29
+ * runtime call graph before writing a fresh one, so a re-run never leaves stale
30
+ * edges behind.
31
+ */
32
+ clearEdgesByKind(kind: string): Promise<void>;
20
33
  /**
21
34
  * Reads every node back from the store, decoding the `metadata` column. Used
22
35
  * by enrichment to resolve profile frames against the loaded graph's ranges
@@ -1 +1 @@
1
- {"version":3,"file":"kuzu_store.d.ts","sourceRoot":"","sources":["../../src/store/kuzu_store.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9C,gFAAgF;AAChF,MAAM,MAAM,UAAU,GAAG;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC,CAAC;AAQF,qBAAa,SAAS;IACrB,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAW;IAC9B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAa;gBAEtB,MAAM,EAAE,MAAM;IAMpB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAM3B,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA6BjE;;;;OAIG;IACG,SAAS,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAexC;;;;OAIG;IACG,iBAAiB,CAAC,OAAO,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAapG;;;;OAIG;IACG,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAKhF,8FAA8F;IACxF,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAQzE,0EAA0E;IACpE,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKhD;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,cAAc;IAI7B;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,cAAc;IAevB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC;IAW7F,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAK5B,OAAO,CAAC,MAAM,CAAC,KAAK;IAIpB;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,YAAY;CAK3B"}
1
+ {"version":3,"file":"kuzu_store.d.ts","sourceRoot":"","sources":["../../src/store/kuzu_store.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9C,gFAAgF;AAChF,MAAM,MAAM,UAAU,GAAG;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC,CAAC;AAQF,qBAAa,SAAS;IACrB,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAW;IAC9B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAa;gBAEtB,MAAM,EAAE,MAAM;IAMpB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAM3B,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA6BjE;;;;;OAKG;IACG,UAAU,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBnD;;;;OAIG;IACG,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKnD;;;;OAIG;IACG,SAAS,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAexC;;;;OAIG;IACG,iBAAiB,CAAC,OAAO,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAapG;;;;OAIG;IACG,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAKhF,8FAA8F;IACxF,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAQzE,0EAA0E;IACpE,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKhD;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,cAAc;IAI7B;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,cAAc;IAevB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC;IAW7F,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAK5B,OAAO,CAAC,MAAM,CAAC,KAAK;IAIpB;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,YAAY;CAK3B"}
@@ -41,6 +41,35 @@ export class KuzuStore {
41
41
  }));
42
42
  }
43
43
  }
44
+ /**
45
+ * Inserts or updates edges by (`from`, `to`, `kind`) — the same merge `load`
46
+ * uses for its edge pass — onto an already-loaded graph; both endpoint nodes
47
+ * must already exist. Used by `enrich` to attach the runtime call graph after
48
+ * the static graph is loaded.
49
+ */
50
+ async writeEdges(edges) {
51
+ if (edges.length === 0) {
52
+ return;
53
+ }
54
+ const stmt = await this.conn.prepare('MATCH (f:GraphNode {id: $from}), (t:GraphNode {id: $to}) MERGE (f)-[e:Edge {kind: $kind}]->(t) SET e.metadata = $metadata');
55
+ for (const edge of edges) {
56
+ KuzuStore.closeResults(await this.conn.execute(stmt, {
57
+ from: edge.from,
58
+ to: edge.to,
59
+ kind: edge.kind,
60
+ metadata: KuzuStore.encodeMetadata(edge.metadata),
61
+ }));
62
+ }
63
+ }
64
+ /**
65
+ * Removes every edge of a given kind. Used by `enrich` to clear the prior
66
+ * runtime call graph before writing a fresh one, so a re-run never leaves stale
67
+ * edges behind.
68
+ */
69
+ async clearEdgesByKind(kind) {
70
+ const stmt = await this.conn.prepare('MATCH (:GraphNode)-[e:Edge {kind: $kind}]->(:GraphNode) DELETE e');
71
+ KuzuStore.closeResults(await this.conn.execute(stmt, { kind }));
72
+ }
44
73
  /**
45
74
  * Reads every node back from the store, decoding the `metadata` column. Used
46
75
  * by enrichment to resolve profile frames against the loaded graph's ranges
@@ -1 +1 @@
1
- {"version":3,"file":"kuzu_store.js","sourceRoot":"","sources":["../../src/store/kuzu_store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"kuzu_store.js","sourceRoot":"","sources":["../../src/store/kuzu_store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * The single source of truth for the output-folder layout. Every artifact a CLI
3
+ * command reads or writes under the output folder is derived from one root, so
4
+ * callers pass `--output-folder` and never an individual file path:
5
+ *
6
+ * <root>/graph/ nodes.jsonl, edges.jsonl, source.json (JsonlStore / JsonlReader)
7
+ * <root>/graph.kuzu embedded Kùzu database (KuzuStore)
8
+ * <root>/prof/ V8 .cpuprofile files (profile_and_enrich.sh)
9
+ * <root>/bench/ <target>.baseline.json benchmark baselines
10
+ *
11
+ * The directory segment names live only here. The store classes own the JSONL
12
+ * filenames (a format concern), and both `KuzuStore` and `JsonlStore` create
13
+ * their own parent directories, so this type never touches the filesystem.
14
+ */
15
+ export declare class OutputFolder {
16
+ private readonly root;
17
+ constructor(root: string);
18
+ /** The output folder root itself (absolute). */
19
+ get path(): string;
20
+ /** Directory holding nodes.jsonl, edges.jsonl, and source.json. */
21
+ get graphDir(): string;
22
+ /** Embedded Kùzu database path. */
23
+ get dbPath(): string;
24
+ /** Directory for V8 .cpuprofile files. */
25
+ get profDir(): string;
26
+ /** Directory for benchmark baselines. */
27
+ get benchDir(): string;
28
+ /** Baseline file for one benchmark target, e.g. `<root>/bench/titleCase.baseline.json`. */
29
+ baselinePath(target: string): string;
30
+ /**
31
+ * Path of the generated codebase brief for a given file extension (`md`, `pdf`,
32
+ * or `json`). Like {@link OutputFolder.dbPath}, the basename lives only here so
33
+ * every output path stays derived from the one root.
34
+ */
35
+ reportPath(extension: string): string;
36
+ /**
37
+ * Make a benchmark target name safe as a filename. Targets are symbol names
38
+ * (e.g. `titleCase`) but could contain path-like characters; collapse anything
39
+ * outside [A-Za-z0-9._-] to '_' so the baseline path stays inside benchDir.
40
+ */
41
+ private static sanitizeTarget;
42
+ }
43
+ //# sourceMappingURL=output_folder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output_folder.d.ts","sourceRoot":"","sources":["../../src/store/output_folder.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;GAaG;AACH,qBAAa,YAAY;IACxB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;gBAElB,IAAI,EAAE,MAAM;IAIxB,gDAAgD;IAChD,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,mEAAmE;IACnE,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,mCAAmC;IACnC,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,0CAA0C;IAC1C,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,yCAAyC;IACzC,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,2FAA2F;IAC3F,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAIpC;;;;OAIG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAIrC;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,cAAc;CAG7B"}