ts-knowledge-graph 0.1.2 → 0.1.4

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 (255) hide show
  1. package/README.md +74 -34
  2. package/contribs/web_visualisation/README.md +28 -0
  3. package/contribs/web_visualisation/web/css/style.css +104 -0
  4. package/contribs/web_visualisation/web/data/.gitignore +1 -0
  5. package/contribs/web_visualisation/web/data/kind_descriptions.js +38 -0
  6. package/contribs/web_visualisation/web/index.html +20 -4
  7. package/contribs/web_visualisation/web/js/app.js +581 -35
  8. package/contribs/web_visualisation/web/tsconfig.json +18 -0
  9. package/contribs/web_visualisation/web/types/app_globals.d.ts +146 -0
  10. package/dist/benchmark/benchmark_stats.d.ts +41 -0
  11. package/dist/benchmark/benchmark_stats.d.ts.map +1 -0
  12. package/dist/benchmark/benchmark_stats.js +61 -0
  13. package/dist/benchmark/benchmark_stats.js.map +1 -0
  14. package/dist/benchmark/node_benchmark.d.ts +78 -0
  15. package/dist/benchmark/node_benchmark.d.ts.map +1 -0
  16. package/dist/benchmark/node_benchmark.js +112 -0
  17. package/dist/benchmark/node_benchmark.js.map +1 -0
  18. package/dist/cli.d.ts.map +1 -1
  19. package/dist/cli.js +10 -2
  20. package/dist/cli.js.map +1 -1
  21. package/dist/commands/benchmark_command.d.ts +11 -0
  22. package/dist/commands/benchmark_command.d.ts.map +1 -0
  23. package/dist/commands/benchmark_command.js +91 -0
  24. package/dist/commands/benchmark_command.js.map +1 -0
  25. package/dist/commands/blast_radius_command.js +1 -1
  26. package/dist/commands/blast_radius_command.js.map +1 -1
  27. package/dist/commands/cost_command.d.ts +13 -0
  28. package/dist/commands/cost_command.d.ts.map +1 -0
  29. package/dist/commands/cost_command.js +122 -0
  30. package/dist/commands/cost_command.js.map +1 -0
  31. package/dist/commands/{load.d.ts → enrich_command.d.ts} +3 -2
  32. package/dist/commands/enrich_command.d.ts.map +1 -0
  33. package/dist/commands/enrich_command.js +62 -0
  34. package/dist/commands/enrich_command.js.map +1 -0
  35. package/dist/commands/hotspots_command.d.ts +7 -0
  36. package/dist/commands/hotspots_command.d.ts.map +1 -0
  37. package/dist/commands/hotspots_command.js +67 -0
  38. package/dist/commands/hotspots_command.js.map +1 -0
  39. package/dist/commands/install_command.d.ts +2 -3
  40. package/dist/commands/install_command.d.ts.map +1 -1
  41. package/dist/commands/install_command.js +7 -8
  42. package/dist/commands/install_command.js.map +1 -1
  43. package/dist/commands/load_command.d.ts.map +1 -1
  44. package/dist/commands/load_command.js +2 -0
  45. package/dist/commands/load_command.js.map +1 -1
  46. package/dist/commands/verify_command.d.ts +8 -0
  47. package/dist/commands/verify_command.d.ts.map +1 -0
  48. package/dist/commands/verify_command.js +57 -0
  49. package/dist/commands/verify_command.js.map +1 -0
  50. package/dist/commands/web_command.d.ts +27 -0
  51. package/dist/commands/web_command.d.ts.map +1 -1
  52. package/dist/commands/web_command.js +109 -3
  53. package/dist/commands/web_command.js.map +1 -1
  54. package/dist/enrich/cpu_profile.d.ts +127 -0
  55. package/dist/enrich/cpu_profile.d.ts.map +1 -0
  56. package/dist/enrich/cpu_profile.js +97 -0
  57. package/dist/enrich/cpu_profile.js.map +1 -0
  58. package/dist/enrich/runtime_enricher.d.ts +56 -0
  59. package/dist/enrich/runtime_enricher.d.ts.map +1 -0
  60. package/dist/enrich/runtime_enricher.js +80 -0
  61. package/dist/enrich/runtime_enricher.js.map +1 -0
  62. package/dist/enrich/runtime_join.d.ts +100 -0
  63. package/dist/enrich/runtime_join.d.ts.map +1 -0
  64. package/dist/enrich/runtime_join.js +227 -0
  65. package/dist/enrich/runtime_join.js.map +1 -0
  66. package/dist/extract/api_extractor.d.ts +24 -0
  67. package/dist/extract/api_extractor.d.ts.map +1 -0
  68. package/dist/extract/api_extractor.js +71 -0
  69. package/dist/extract/api_extractor.js.map +1 -0
  70. package/dist/extract/config_extractor.d.ts +22 -0
  71. package/dist/extract/config_extractor.d.ts.map +1 -0
  72. package/dist/extract/config_extractor.js +61 -0
  73. package/dist/extract/config_extractor.js.map +1 -0
  74. package/dist/extract/endpoint_extractor.d.ts +36 -0
  75. package/dist/extract/endpoint_extractor.d.ts.map +1 -0
  76. package/dist/extract/endpoint_extractor.js +117 -0
  77. package/dist/extract/endpoint_extractor.js.map +1 -0
  78. package/dist/extract/graph_builder.d.ts +8 -0
  79. package/dist/extract/graph_builder.d.ts.map +1 -1
  80. package/dist/extract/graph_builder.js +23 -1
  81. package/dist/extract/graph_builder.js.map +1 -1
  82. package/dist/extract/node_id.d.ts +16 -0
  83. package/dist/extract/node_id.d.ts.map +1 -1
  84. package/dist/extract/node_id.js +22 -0
  85. package/dist/extract/node_id.js.map +1 -1
  86. package/dist/extract/scope_resolver.d.ts +22 -0
  87. package/dist/extract/scope_resolver.d.ts.map +1 -0
  88. package/dist/extract/scope_resolver.js +53 -0
  89. package/dist/extract/scope_resolver.js.map +1 -0
  90. package/dist/extract/semantic_extractor.d.ts +25 -0
  91. package/dist/extract/semantic_extractor.d.ts.map +1 -1
  92. package/dist/extract/semantic_extractor.js +96 -2
  93. package/dist/extract/semantic_extractor.js.map +1 -1
  94. package/dist/extract/structural_extractor.d.ts +6 -0
  95. package/dist/extract/structural_extractor.d.ts.map +1 -1
  96. package/dist/extract/structural_extractor.js +22 -12
  97. package/dist/extract/structural_extractor.js.map +1 -1
  98. package/dist/project_root.d.ts +7 -0
  99. package/dist/project_root.d.ts.map +1 -0
  100. package/dist/project_root.js +9 -0
  101. package/dist/project_root.js.map +1 -0
  102. package/dist/query/graph_query.d.ts +234 -0
  103. package/dist/query/graph_query.d.ts.map +1 -1
  104. package/dist/query/graph_query.js +522 -11
  105. package/dist/query/graph_query.js.map +1 -1
  106. package/dist/schema/edge.d.ts +40 -5
  107. package/dist/schema/edge.d.ts.map +1 -1
  108. package/dist/schema/edge.js +70 -0
  109. package/dist/schema/edge.js.map +1 -1
  110. package/dist/schema/node.d.ts +20 -5
  111. package/dist/schema/node.d.ts.map +1 -1
  112. package/dist/schema/node.js +36 -0
  113. package/dist/schema/node.js.map +1 -1
  114. package/dist/schema/runtime_manifest.d.ts +36 -0
  115. package/dist/schema/runtime_manifest.d.ts.map +1 -0
  116. package/dist/schema/runtime_manifest.js +23 -0
  117. package/dist/schema/runtime_manifest.js.map +1 -0
  118. package/dist/store/kuzu_store.d.ts +46 -0
  119. package/dist/store/kuzu_store.d.ts.map +1 -1
  120. package/dist/store/kuzu_store.js +95 -5
  121. package/dist/store/kuzu_store.js.map +1 -1
  122. package/dist/verify/project_verifier.d.ts +85 -0
  123. package/dist/verify/project_verifier.d.ts.map +1 -0
  124. package/dist/verify/project_verifier.js +138 -0
  125. package/dist/verify/project_verifier.js.map +1 -0
  126. package/{skills/ts-knowledge-graph → dotclaude_folder/skills/code-graph-query}/SKILL.md +2 -2
  127. package/package.json +86 -7
  128. package/.env-sample +0 -34
  129. package/dist/agent/agent-tools.d.ts +0 -13
  130. package/dist/agent/agent-tools.d.ts.map +0 -1
  131. package/dist/agent/agent-tools.js +0 -153
  132. package/dist/agent/agent-tools.js.map +0 -1
  133. package/dist/agent/agent_tools.d.ts +0 -13
  134. package/dist/agent/agent_tools.d.ts.map +0 -1
  135. package/dist/agent/agent_tools.js +0 -153
  136. package/dist/agent/agent_tools.js.map +0 -1
  137. package/dist/agent/code-editor.d.ts +0 -18
  138. package/dist/agent/code-editor.d.ts.map +0 -1
  139. package/dist/agent/code-editor.js +0 -43
  140. package/dist/agent/code-editor.js.map +0 -1
  141. package/dist/agent/code_editor.d.ts +0 -18
  142. package/dist/agent/code_editor.d.ts.map +0 -1
  143. package/dist/agent/code_editor.js +0 -43
  144. package/dist/agent/code_editor.js.map +0 -1
  145. package/dist/agent/optimizer-agent.d.ts +0 -30
  146. package/dist/agent/optimizer-agent.d.ts.map +0 -1
  147. package/dist/agent/optimizer-agent.js +0 -97
  148. package/dist/agent/optimizer-agent.js.map +0 -1
  149. package/dist/agent/optimizer_agent.d.ts +0 -30
  150. package/dist/agent/optimizer_agent.d.ts.map +0 -1
  151. package/dist/agent/optimizer_agent.js +0 -97
  152. package/dist/agent/optimizer_agent.js.map +0 -1
  153. package/dist/agent/verifier.d.ts +0 -9
  154. package/dist/agent/verifier.d.ts.map +0 -1
  155. package/dist/agent/verifier.js +0 -19
  156. package/dist/agent/verifier.js.map +0 -1
  157. package/dist/commands/blast-radius.d.ts +0 -5
  158. package/dist/commands/blast-radius.d.ts.map +0 -1
  159. package/dist/commands/blast-radius.js +0 -18
  160. package/dist/commands/blast-radius.js.map +0 -1
  161. package/dist/commands/blast_radius.d.ts +0 -5
  162. package/dist/commands/blast_radius.d.ts.map +0 -1
  163. package/dist/commands/blast_radius.js +0 -18
  164. package/dist/commands/blast_radius.js.map +0 -1
  165. package/dist/commands/calls.d.ts +0 -5
  166. package/dist/commands/calls.d.ts.map +0 -1
  167. package/dist/commands/calls.js +0 -7
  168. package/dist/commands/calls.js.map +0 -1
  169. package/dist/commands/command-helpers.d.ts +0 -15
  170. package/dist/commands/command-helpers.d.ts.map +0 -1
  171. package/dist/commands/command-helpers.js +0 -61
  172. package/dist/commands/command-helpers.js.map +0 -1
  173. package/dist/commands/dead-exports.d.ts +0 -5
  174. package/dist/commands/dead-exports.d.ts.map +0 -1
  175. package/dist/commands/dead-exports.js +0 -7
  176. package/dist/commands/dead-exports.js.map +0 -1
  177. package/dist/commands/dead_exports.d.ts +0 -5
  178. package/dist/commands/dead_exports.d.ts.map +0 -1
  179. package/dist/commands/dead_exports.js +0 -7
  180. package/dist/commands/dead_exports.js.map +0 -1
  181. package/dist/commands/extract.d.ts +0 -8
  182. package/dist/commands/extract.d.ts.map +0 -1
  183. package/dist/commands/extract.js +0 -49
  184. package/dist/commands/extract.js.map +0 -1
  185. package/dist/commands/find.d.ts +0 -5
  186. package/dist/commands/find.d.ts.map +0 -1
  187. package/dist/commands/find.js +0 -7
  188. package/dist/commands/find.js.map +0 -1
  189. package/dist/commands/load.d.ts.map +0 -1
  190. package/dist/commands/load.js +0 -28
  191. package/dist/commands/load.js.map +0 -1
  192. package/dist/commands/neighbors.d.ts +0 -5
  193. package/dist/commands/neighbors.d.ts.map +0 -1
  194. package/dist/commands/neighbors.js +0 -17
  195. package/dist/commands/neighbors.js.map +0 -1
  196. package/dist/commands/optimize.d.ts +0 -6
  197. package/dist/commands/optimize.d.ts.map +0 -1
  198. package/dist/commands/optimize.js +0 -59
  199. package/dist/commands/optimize.js.map +0 -1
  200. package/dist/commands/optimize_command.d.ts +0 -6
  201. package/dist/commands/optimize_command.d.ts.map +0 -1
  202. package/dist/commands/optimize_command.js +0 -59
  203. package/dist/commands/optimize_command.js.map +0 -1
  204. package/dist/commands/references.d.ts +0 -5
  205. package/dist/commands/references.d.ts.map +0 -1
  206. package/dist/commands/references.js +0 -17
  207. package/dist/commands/references.js.map +0 -1
  208. package/dist/commands/web.d.ts +0 -19
  209. package/dist/commands/web.d.ts.map +0 -1
  210. package/dist/commands/web.js +0 -120
  211. package/dist/commands/web.js.map +0 -1
  212. package/dist/commands/who-calls.d.ts +0 -5
  213. package/dist/commands/who-calls.d.ts.map +0 -1
  214. package/dist/commands/who-calls.js +0 -7
  215. package/dist/commands/who-calls.js.map +0 -1
  216. package/dist/commands/who_calls.d.ts +0 -5
  217. package/dist/commands/who_calls.d.ts.map +0 -1
  218. package/dist/commands/who_calls.js +0 -7
  219. package/dist/commands/who_calls.js.map +0 -1
  220. package/dist/extract/graph-builder.d.ts +0 -16
  221. package/dist/extract/graph-builder.d.ts.map +0 -1
  222. package/dist/extract/graph-builder.js +0 -39
  223. package/dist/extract/graph-builder.js.map +0 -1
  224. package/dist/extract/node-id.d.ts +0 -8
  225. package/dist/extract/node-id.d.ts.map +0 -1
  226. package/dist/extract/node-id.js +0 -22
  227. package/dist/extract/node-id.js.map +0 -1
  228. package/dist/extract/project-loader.d.ts +0 -5
  229. package/dist/extract/project-loader.d.ts.map +0 -1
  230. package/dist/extract/project-loader.js +0 -19
  231. package/dist/extract/project-loader.js.map +0 -1
  232. package/dist/extract/semantic-extractor.d.ts +0 -22
  233. package/dist/extract/semantic-extractor.d.ts.map +0 -1
  234. package/dist/extract/semantic-extractor.js +0 -254
  235. package/dist/extract/semantic-extractor.js.map +0 -1
  236. package/dist/extract/structural-extractor.d.ts +0 -18
  237. package/dist/extract/structural-extractor.d.ts.map +0 -1
  238. package/dist/extract/structural-extractor.js +0 -97
  239. package/dist/extract/structural-extractor.js.map +0 -1
  240. package/dist/query/graph-query.d.ts +0 -28
  241. package/dist/query/graph-query.d.ts.map +0 -1
  242. package/dist/query/graph-query.js +0 -93
  243. package/dist/query/graph-query.js.map +0 -1
  244. package/dist/store/jsonl-reader.d.ts +0 -11
  245. package/dist/store/jsonl-reader.d.ts.map +0 -1
  246. package/dist/store/jsonl-reader.js +0 -19
  247. package/dist/store/jsonl-reader.js.map +0 -1
  248. package/dist/store/jsonl-store.d.ts +0 -7
  249. package/dist/store/jsonl-store.d.ts.map +0 -1
  250. package/dist/store/jsonl-store.js +0 -13
  251. package/dist/store/jsonl-store.js.map +0 -1
  252. package/dist/store/kuzu-store.d.ts +0 -14
  253. package/dist/store/kuzu-store.d.ts.map +0 -1
  254. package/dist/store/kuzu-store.js +0 -52
  255. package/dist/store/kuzu-store.js.map +0 -1
@@ -1,22 +1,57 @@
1
1
  import { z } from 'zod';
2
- export declare const EDGE_KINDS: readonly ["CONTAINS", "IMPORTS", "EXPORTS", "EXTENDS", "IMPLEMENTS", "USES_TYPE", "RETURNS", "PARAM_TYPE", "CALLS", "INSTANTIATES", "OVERRIDES", "READS", "WRITES"];
3
- export declare const EdgeKindSchema: z.ZodEnum<["CONTAINS", "IMPORTS", "EXPORTS", "EXTENDS", "IMPLEMENTS", "USES_TYPE", "RETURNS", "PARAM_TYPE", "CALLS", "INSTANTIATES", "OVERRIDES", "READS", "WRITES"]>;
2
+ /**
3
+ * The closed edge vocabulary, grouped by layer (mirrors the README graph-model
4
+ * table).
5
+ *
6
+ * Decision (#31 Part 0): keep a closed `z.enum` rather than an extensible kind
7
+ * registry — simple and explicit. Kùzu stores `kind` as a `STRING`, so a new kind
8
+ * needs no schema migration; its only real costs are this enum, the extractor that
9
+ * emits it, and — for edges — whether it joins {@link REFERENCE_EDGE_KINDS}.
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"]>;
4
13
  export type EdgeKind = z.infer<typeof EdgeKindSchema>;
14
+ /**
15
+ * One-line, onboarding-oriented descriptions for every {@link EdgeKind}, keyed by
16
+ * kind. This is the single source of truth surfaced as hover tooltips in the web
17
+ * visualisation; the `Record<EdgeKind, string>` type makes adding an edge kind
18
+ * without describing it a compile error.
19
+ */
20
+ export declare const EDGE_KIND_DESCRIPTIONS: Record<EdgeKind, string>;
21
+ /**
22
+ * The edge kinds that count as a *reference* to their target — the single source
23
+ * of truth for {@link GraphQuery.references} and the {@link GraphQuery.deadExports}
24
+ * liveness check (the query layer derives its Cypher list from this array).
25
+ *
26
+ * An edge kind is a reference when its presence means the target symbol is *used*:
27
+ * a call, a heritage link, a type mention, an instantiation, a value read, a method
28
+ * override (an override uses the base member it replaces), or an endpoint→handler
29
+ * link (`HANDLES` — a route uses the function that handles it). Deliberately
30
+ * excluded:
31
+ * - `CONTAINS` / `IMPORTS` — containment and module wiring, not use;
32
+ * - `EXPORTS` — marks a symbol as exported; counting it would give every export an
33
+ * inbound edge from its module and defeat dead-export detection;
34
+ * - `WRITES` — mutating a binding is not using its value;
35
+ * - `READS_CONFIG` / `CALLS_EXTERNAL` — their targets are synthesized system-level
36
+ * nodes (a `ConfigFlag`, an `ExternalAPI`), not code symbols subject to
37
+ * dead-export analysis.
38
+ */
39
+ export declare const REFERENCE_EDGE_KINDS: readonly ["CALLS", "EXTENDS", "IMPLEMENTS", "USES_TYPE", "RETURNS", "PARAM_TYPE", "INSTANTIATES", "READS", "OVERRIDES", "HANDLES"];
5
40
  export declare const GraphEdgeSchema: z.ZodObject<{
6
41
  id: z.ZodString;
7
- kind: z.ZodEnum<["CONTAINS", "IMPORTS", "EXPORTS", "EXTENDS", "IMPLEMENTS", "USES_TYPE", "RETURNS", "PARAM_TYPE", "CALLS", "INSTANTIATES", "OVERRIDES", "READS", "WRITES"]>;
42
+ kind: z.ZodEnum<["CONTAINS", "IMPORTS", "EXPORTS", "EXTENDS", "IMPLEMENTS", "USES_TYPE", "RETURNS", "PARAM_TYPE", "CALLS", "INSTANTIATES", "OVERRIDES", "READS", "WRITES", "READS_CONFIG", "CALLS_EXTERNAL", "HANDLES"]>;
8
43
  from: z.ZodString;
9
44
  to: z.ZodString;
10
45
  metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
11
46
  }, "strip", z.ZodTypeAny, {
12
47
  id: string;
13
- kind: "CONTAINS" | "IMPORTS" | "EXPORTS" | "EXTENDS" | "IMPLEMENTS" | "USES_TYPE" | "RETURNS" | "PARAM_TYPE" | "CALLS" | "INSTANTIATES" | "OVERRIDES" | "READS" | "WRITES";
48
+ kind: "CONTAINS" | "IMPORTS" | "EXPORTS" | "EXTENDS" | "IMPLEMENTS" | "USES_TYPE" | "RETURNS" | "PARAM_TYPE" | "CALLS" | "INSTANTIATES" | "OVERRIDES" | "READS" | "WRITES" | "READS_CONFIG" | "CALLS_EXTERNAL" | "HANDLES";
14
49
  from: string;
15
50
  to: string;
16
51
  metadata?: Record<string, unknown> | undefined;
17
52
  }, {
18
53
  id: string;
19
- kind: "CONTAINS" | "IMPORTS" | "EXPORTS" | "EXTENDS" | "IMPLEMENTS" | "USES_TYPE" | "RETURNS" | "PARAM_TYPE" | "CALLS" | "INSTANTIATES" | "OVERRIDES" | "READS" | "WRITES";
54
+ kind: "CONTAINS" | "IMPORTS" | "EXPORTS" | "EXTENDS" | "IMPLEMENTS" | "USES_TYPE" | "RETURNS" | "PARAM_TYPE" | "CALLS" | "INSTANTIATES" | "OVERRIDES" | "READS" | "WRITES" | "READS_CONFIG" | "CALLS_EXTERNAL" | "HANDLES";
20
55
  from: string;
21
56
  to: string;
22
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,eAAO,MAAM,UAAU,qKAcb,CAAC;AAEX,eAAO,MAAM,cAAc,uKAAqB,CAAC;AACjD,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAEtD,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,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,20 +1,90 @@
1
1
  import { z } from 'zod';
2
+ /**
3
+ * The closed edge vocabulary, grouped by layer (mirrors the README graph-model
4
+ * table).
5
+ *
6
+ * Decision (#31 Part 0): keep a closed `z.enum` rather than an extensible kind
7
+ * registry — simple and explicit. Kùzu stores `kind` as a `STRING`, so a new kind
8
+ * needs no schema migration; its only real costs are this enum, the extractor that
9
+ * emits it, and — for edges — whether it joins {@link REFERENCE_EDGE_KINDS}.
10
+ */
2
11
  export const EDGE_KINDS = [
12
+ // Structural — cheap, always emitted (no symbol resolution).
3
13
  'CONTAINS',
4
14
  'IMPORTS',
5
15
  'EXPORTS',
16
+ // Type — require symbol resolution, emitted with `--semantic`.
6
17
  'EXTENDS',
7
18
  'IMPLEMENTS',
8
19
  'USES_TYPE',
9
20
  'RETURNS',
10
21
  'PARAM_TYPE',
22
+ // Behavioral — require symbol resolution, emitted with `--semantic`.
11
23
  'CALLS',
12
24
  'INSTANTIATES',
13
25
  'OVERRIDES',
14
26
  'READS',
15
27
  'WRITES',
28
+ // System-level — detection-gated entities (#31 Part 2+).
29
+ 'READS_CONFIG',
30
+ 'CALLS_EXTERNAL',
31
+ 'HANDLES',
16
32
  ];
17
33
  export const EdgeKindSchema = z.enum(EDGE_KINDS);
34
+ /**
35
+ * One-line, onboarding-oriented descriptions for every {@link EdgeKind}, keyed by
36
+ * kind. This is the single source of truth surfaced as hover tooltips in the web
37
+ * visualisation; the `Record<EdgeKind, string>` type makes adding an edge kind
38
+ * without describing it a compile error.
39
+ */
40
+ export const EDGE_KIND_DESCRIPTIONS = {
41
+ CONTAINS: 'Structural nesting: the source declares or encloses the target (a module contains a class, which contains a method).',
42
+ IMPORTS: 'The source module imports the target.',
43
+ EXPORTS: 'The source module exports the target symbol.',
44
+ EXTENDS: 'The source class or interface extends the target (inheritance).',
45
+ IMPLEMENTS: 'The source class implements the target interface.',
46
+ USES_TYPE: 'The source references the target in a type position.',
47
+ RETURNS: 'The target type appears in the source function or method return type.',
48
+ PARAM_TYPE: 'The target type appears in one of the source parameter types.',
49
+ CALLS: 'The source function or method calls the target.',
50
+ INSTANTIATES: 'The source constructs the target class with new.',
51
+ OVERRIDES: 'The source method overrides the base-class member it replaces.',
52
+ READS: 'The source reads the value of the target variable or property.',
53
+ WRITES: 'The source assigns to the target variable or property.',
54
+ READS_CONFIG: 'The source reads the target configuration flag (an environment variable).',
55
+ CALLS_EXTERNAL: 'The source makes an outbound HTTP call to the target external API.',
56
+ HANDLES: 'Links an HTTP endpoint to the function that handles it (route to handler).',
57
+ };
58
+ /**
59
+ * The edge kinds that count as a *reference* to their target — the single source
60
+ * of truth for {@link GraphQuery.references} and the {@link GraphQuery.deadExports}
61
+ * liveness check (the query layer derives its Cypher list from this array).
62
+ *
63
+ * An edge kind is a reference when its presence means the target symbol is *used*:
64
+ * a call, a heritage link, a type mention, an instantiation, a value read, a method
65
+ * override (an override uses the base member it replaces), or an endpoint→handler
66
+ * link (`HANDLES` — a route uses the function that handles it). Deliberately
67
+ * excluded:
68
+ * - `CONTAINS` / `IMPORTS` — containment and module wiring, not use;
69
+ * - `EXPORTS` — marks a symbol as exported; counting it would give every export an
70
+ * inbound edge from its module and defeat dead-export detection;
71
+ * - `WRITES` — mutating a binding is not using its value;
72
+ * - `READS_CONFIG` / `CALLS_EXTERNAL` — their targets are synthesized system-level
73
+ * nodes (a `ConfigFlag`, an `ExternalAPI`), not code symbols subject to
74
+ * dead-export analysis.
75
+ */
76
+ export const REFERENCE_EDGE_KINDS = [
77
+ 'CALLS',
78
+ 'EXTENDS',
79
+ 'IMPLEMENTS',
80
+ 'USES_TYPE',
81
+ 'RETURNS',
82
+ 'PARAM_TYPE',
83
+ 'INSTANTIATES',
84
+ 'READS',
85
+ 'OVERRIDES',
86
+ 'HANDLES',
87
+ ];
18
88
  export const GraphEdgeSchema = z.object({
19
89
  id: z.string(),
20
90
  kind: EdgeKindSchema,
@@ -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,MAAM,CAAC,MAAM,UAAU,GAAG;IACzB,UAAU;IACV,SAAS;IACT,SAAS;IACT,SAAS;IACT,YAAY;IACZ,WAAW;IACX,SAAS;IACT,YAAY;IACZ,OAAO;IACP,cAAc;IACd,WAAW;IACX,OAAO;IACP,QAAQ;CACC,CAAC;AAEX,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAGjD,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;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,7 +1,22 @@
1
1
  import { z } from 'zod';
2
- export declare const NODE_KINDS: readonly ["Module", "Class", "Interface", "TypeAlias", "Enum", "Function", "Method", "Property", "Parameter", "Variable", "ExternalModule"];
3
- export declare const NodeKindSchema: z.ZodEnum<["Module", "Class", "Interface", "TypeAlias", "Enum", "Function", "Method", "Property", "Parameter", "Variable", "ExternalModule"]>;
2
+ /**
3
+ * The closed node vocabulary. See {@link EDGE_KINDS} in `edge.ts` for the
4
+ * closed-enum-vs-registry decision (#31 Part 0); the same reasoning applies here.
5
+ *
6
+ * The system-level group grows one detection-gated extractor at a time (#31).
7
+ * `ConfigFlag` (environment variables) is the first; `Endpoint`, `DatabaseTable`,
8
+ * `QueueTopic`, and `ExternalAPI` arrive in later slices.
9
+ */
10
+ export declare const NODE_KINDS: readonly ["Module", "Class", "Interface", "TypeAlias", "Enum", "Function", "Method", "Property", "Parameter", "Variable", "ExternalModule", "ConfigFlag", "ExternalAPI", "Endpoint"];
11
+ export declare const NodeKindSchema: z.ZodEnum<["Module", "Class", "Interface", "TypeAlias", "Enum", "Function", "Method", "Property", "Parameter", "Variable", "ExternalModule", "ConfigFlag", "ExternalAPI", "Endpoint"]>;
4
12
  export type NodeKind = z.infer<typeof NodeKindSchema>;
13
+ /**
14
+ * One-line, onboarding-oriented descriptions for every {@link NodeKind}, keyed by
15
+ * kind. This is the single source of truth surfaced as hover tooltips in the web
16
+ * visualisation; the `Record<NodeKind, string>` type makes adding a node kind
17
+ * without describing it a compile error.
18
+ */
19
+ export declare const NODE_KIND_DESCRIPTIONS: Record<NodeKind, string>;
5
20
  export declare const RangeSchema: z.ZodObject<{
6
21
  startLine: z.ZodNumber;
7
22
  startColumn: z.ZodNumber;
@@ -21,7 +36,7 @@ export declare const RangeSchema: z.ZodObject<{
21
36
  export type Range = z.infer<typeof RangeSchema>;
22
37
  export declare const GraphNodeSchema: z.ZodObject<{
23
38
  id: z.ZodString;
24
- kind: z.ZodEnum<["Module", "Class", "Interface", "TypeAlias", "Enum", "Function", "Method", "Property", "Parameter", "Variable", "ExternalModule"]>;
39
+ kind: z.ZodEnum<["Module", "Class", "Interface", "TypeAlias", "Enum", "Function", "Method", "Property", "Parameter", "Variable", "ExternalModule", "ConfigFlag", "ExternalAPI", "Endpoint"]>;
25
40
  name: z.ZodString;
26
41
  filePath: z.ZodString;
27
42
  range: z.ZodOptional<z.ZodObject<{
@@ -44,7 +59,7 @@ export declare const GraphNodeSchema: z.ZodObject<{
44
59
  metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
45
60
  }, "strip", z.ZodTypeAny, {
46
61
  id: string;
47
- kind: "Module" | "Class" | "Interface" | "TypeAlias" | "Enum" | "Function" | "Method" | "Property" | "Parameter" | "Variable" | "ExternalModule";
62
+ kind: "Module" | "Class" | "Interface" | "TypeAlias" | "Enum" | "Function" | "Method" | "Property" | "Parameter" | "Variable" | "ExternalModule" | "ConfigFlag" | "ExternalAPI" | "Endpoint";
48
63
  name: string;
49
64
  filePath: string;
50
65
  metadata?: Record<string, unknown> | undefined;
@@ -57,7 +72,7 @@ export declare const GraphNodeSchema: z.ZodObject<{
57
72
  exported?: boolean | undefined;
58
73
  }, {
59
74
  id: string;
60
- kind: "Module" | "Class" | "Interface" | "TypeAlias" | "Enum" | "Function" | "Method" | "Property" | "Parameter" | "Variable" | "ExternalModule";
75
+ kind: "Module" | "Class" | "Interface" | "TypeAlias" | "Enum" | "Function" | "Method" | "Property" | "Parameter" | "Variable" | "ExternalModule" | "ConfigFlag" | "ExternalAPI" | "Endpoint";
61
76
  name: string;
62
77
  filePath: string;
63
78
  metadata?: Record<string, unknown> | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../src/schema/node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,UAAU,6IAYb,CAAC;AAEX,eAAO,MAAM,cAAc,+IAAqB,CAAC;AACjD,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAEtD,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;EAKtB,CAAC;AACH,MAAM,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEhD,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAQ1B,CAAC;AACH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC"}
1
+ {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../src/schema/node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;;GAOG;AACH,eAAO,MAAM,UAAU,sLAkBb,CAAC;AAEX,eAAO,MAAM,cAAc,wLAAqB,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,CAe3D,CAAC;AAEF,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;EAKtB,CAAC;AACH,MAAM,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEhD,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAQ1B,CAAC;AACH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC"}
@@ -1,5 +1,14 @@
1
1
  import { z } from 'zod';
2
+ /**
3
+ * The closed node vocabulary. See {@link EDGE_KINDS} in `edge.ts` for the
4
+ * closed-enum-vs-registry decision (#31 Part 0); the same reasoning applies here.
5
+ *
6
+ * The system-level group grows one detection-gated extractor at a time (#31).
7
+ * `ConfigFlag` (environment variables) is the first; `Endpoint`, `DatabaseTable`,
8
+ * `QueueTopic`, and `ExternalAPI` arrive in later slices.
9
+ */
2
10
  export const NODE_KINDS = [
11
+ // Code structure.
3
12
  'Module',
4
13
  'Class',
5
14
  'Interface',
@@ -10,9 +19,36 @@ export const NODE_KINDS = [
10
19
  'Property',
11
20
  'Parameter',
12
21
  'Variable',
22
+ // External dependencies, as one opaque node per import specifier.
13
23
  'ExternalModule',
24
+ // System-level entities — detection-gated (#31 Part 2+).
25
+ 'ConfigFlag',
26
+ 'ExternalAPI',
27
+ 'Endpoint',
14
28
  ];
15
29
  export const NodeKindSchema = z.enum(NODE_KINDS);
30
+ /**
31
+ * One-line, onboarding-oriented descriptions for every {@link NodeKind}, keyed by
32
+ * kind. This is the single source of truth surfaced as hover tooltips in the web
33
+ * visualisation; the `Record<NodeKind, string>` type makes adding a node kind
34
+ * without describing it a compile error.
35
+ */
36
+ export const NODE_KIND_DESCRIPTIONS = {
37
+ Module: 'A source file in the codebase.',
38
+ Class: 'A class declaration.',
39
+ Interface: 'An interface declaration.',
40
+ TypeAlias: 'A type alias declaration.',
41
+ Enum: 'An enum declaration.',
42
+ Function: 'A standalone, module-level function.',
43
+ Method: 'A function that belongs to a class or interface.',
44
+ Property: 'A field declared on a class or interface.',
45
+ Parameter: 'A parameter of a function or method.',
46
+ Variable: 'A module- or block-level variable binding.',
47
+ ExternalModule: 'An imported third-party or Node.js module, recorded as one opaque node per import specifier.',
48
+ ConfigFlag: 'An environment-variable configuration flag, detected from process.env reads.',
49
+ ExternalAPI: 'An outbound HTTP host called through fetch(), with one node per host.',
50
+ Endpoint: 'An HTTP route registered by the app, such as app.get("/users", handler).',
51
+ };
16
52
  export const RangeSchema = z.object({
17
53
  startLine: z.number().int(),
18
54
  startColumn: z.number().int(),
@@ -1 +1 @@
1
- {"version":3,"file":"node.js","sourceRoot":"","sources":["../../src/schema/node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,UAAU,GAAG;IACzB,QAAQ;IACR,OAAO;IACP,WAAW;IACX,WAAW;IACX,MAAM;IACN,UAAU;IACV,QAAQ;IACR,UAAU;IACV,WAAW;IACX,UAAU;IACV,gBAAgB;CACP,CAAC;AAEX,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAGjD,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IAC3B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IAC7B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IACzB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;CAC3B,CAAC,CAAC;AAGH,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,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,KAAK,EAAE,WAAW,CAAC,QAAQ,EAAE;IAC7B,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAChC,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;CAC1C,CAAC,CAAC"}
1
+ {"version":3,"file":"node.js","sourceRoot":"","sources":["../../src/schema/node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG;IACzB,kBAAkB;IAClB,QAAQ;IACR,OAAO;IACP,WAAW;IACX,WAAW;IACX,MAAM;IACN,UAAU;IACV,QAAQ;IACR,UAAU;IACV,WAAW;IACX,UAAU;IACV,kEAAkE;IAClE,gBAAgB;IAChB,yDAAyD;IACzD,YAAY;IACZ,aAAa;IACb,UAAU;CACD,CAAC;AAEX,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAGjD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAA6B;IAC/D,MAAM,EAAE,gCAAgC;IACxC,KAAK,EAAE,sBAAsB;IAC7B,SAAS,EAAE,2BAA2B;IACtC,SAAS,EAAE,2BAA2B;IACtC,IAAI,EAAE,sBAAsB;IAC5B,QAAQ,EAAE,sCAAsC;IAChD,MAAM,EAAE,kDAAkD;IAC1D,QAAQ,EAAE,2CAA2C;IACrD,SAAS,EAAE,sCAAsC;IACjD,QAAQ,EAAE,4CAA4C;IACtD,cAAc,EAAE,8FAA8F;IAC9G,UAAU,EAAE,8EAA8E;IAC1F,WAAW,EAAE,uEAAuE;IACpF,QAAQ,EAAE,0EAA0E;CACpF,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IAC3B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IAC7B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IACzB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;CAC3B,CAAC,CAAC;AAGH,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,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,KAAK,EAAE,WAAW,CAAC,QAAQ,EAAE;IAC7B,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAChC,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;CAC1C,CAAC,CAAC"}
@@ -0,0 +1,36 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * The `GraphMeta` key under which the runtime ingest manifest is stored. It lives
4
+ * at the graph level — one record for the whole graph — rather than on a node,
5
+ * which is why it does not collide with the per-node `metadata.runtime`.
6
+ */
7
+ export declare const RUNTIME_MANIFEST_KEY = "runtime";
8
+ /**
9
+ * Graph-level coverage facts recorded by `enrich`: how much of the profiled cost
10
+ * was attributed to graph nodes versus dropped by the join. Persisted so a later
11
+ * query — `cost` in particular — can report **coverage** (the fraction of total
12
+ * measured cost the attribution actually accounts for) instead of silently
13
+ * presenting a partial picture. `total*` are profile-wide; `matched*` are the part
14
+ * attached to nodes; the difference is what the join dropped.
15
+ */
16
+ export declare const RuntimeManifestSchema: z.ZodObject<{
17
+ source: z.ZodString;
18
+ totalSamples: z.ZodNumber;
19
+ matchedSamples: z.ZodNumber;
20
+ totalSelfMicros: z.ZodNumber;
21
+ matchedSelfMicros: z.ZodNumber;
22
+ }, "strip", z.ZodTypeAny, {
23
+ source: string;
24
+ totalSamples: number;
25
+ matchedSamples: number;
26
+ totalSelfMicros: number;
27
+ matchedSelfMicros: number;
28
+ }, {
29
+ source: string;
30
+ totalSamples: number;
31
+ matchedSamples: number;
32
+ totalSelfMicros: number;
33
+ matchedSelfMicros: number;
34
+ }>;
35
+ export type RuntimeManifest = z.infer<typeof RuntimeManifestSchema>;
36
+ //# sourceMappingURL=runtime_manifest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime_manifest.d.ts","sourceRoot":"","sources":["../../src/schema/runtime_manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,YAAY,CAAC;AAE9C;;;;;;;GAOG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;EAMhC,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * The `GraphMeta` key under which the runtime ingest manifest is stored. It lives
4
+ * at the graph level — one record for the whole graph — rather than on a node,
5
+ * which is why it does not collide with the per-node `metadata.runtime`.
6
+ */
7
+ export const RUNTIME_MANIFEST_KEY = 'runtime';
8
+ /**
9
+ * Graph-level coverage facts recorded by `enrich`: how much of the profiled cost
10
+ * was attributed to graph nodes versus dropped by the join. Persisted so a later
11
+ * query — `cost` in particular — can report **coverage** (the fraction of total
12
+ * measured cost the attribution actually accounts for) instead of silently
13
+ * presenting a partial picture. `total*` are profile-wide; `matched*` are the part
14
+ * attached to nodes; the difference is what the join dropped.
15
+ */
16
+ export const RuntimeManifestSchema = z.object({
17
+ source: z.string(),
18
+ totalSamples: z.number(),
19
+ matchedSamples: z.number(),
20
+ totalSelfMicros: z.number(),
21
+ matchedSelfMicros: z.number(),
22
+ });
23
+ //# sourceMappingURL=runtime_manifest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime_manifest.js","sourceRoot":"","sources":["../../src/schema/runtime_manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;GAIG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,SAAS,CAAC;AAE9C;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;IACxB,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE;IAC1B,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE;IAC3B,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE;CAC7B,CAAC,CAAC"}
@@ -1,12 +1,58 @@
1
1
  import type { KuzuValue } from 'kuzu';
2
2
  import { GraphEdge } from '../schema/edge.js';
3
3
  import { GraphNode } from '../schema/node.js';
4
+ /** A stored node read back from Kùzu, with its metadata decoded to a record. */
5
+ export type StoredNode = {
6
+ id: string;
7
+ kind: string;
8
+ name: string;
9
+ filePath: string;
10
+ startLine: number;
11
+ endLine: number;
12
+ metadata: Record<string, unknown>;
13
+ };
4
14
  export declare class KuzuStore {
5
15
  private readonly db;
6
16
  private readonly conn;
7
17
  constructor(dbPath: string);
8
18
  initSchema(): Promise<void>;
9
19
  load(nodes: GraphNode[], edges: GraphEdge[]): Promise<void>;
20
+ /**
21
+ * Reads every node back from the store, decoding the `metadata` column. Used
22
+ * by enrichment to resolve profile frames against the loaded graph's ranges
23
+ * and to merge new metadata onto existing records.
24
+ */
25
+ readNodes(): Promise<StoredNode[]>;
26
+ /**
27
+ * Overwrites the `metadata` column for the given nodes. The caller is
28
+ * responsible for merging so that only the intended keys change; passing the
29
+ * full record keeps the write idempotent for unchanged keys.
30
+ */
31
+ writeNodeMetadata(entries: {
32
+ id: string;
33
+ metadata: Record<string, unknown>;
34
+ }[]): Promise<void>;
35
+ /**
36
+ * Writes a graph-level metadata record under `key` (a `GraphMeta` row), encoding
37
+ * the value as JSON. Used for facts about the whole graph rather than one node —
38
+ * e.g. the runtime ingest manifest `enrich` records for coverage reporting.
39
+ */
40
+ writeGraphMeta(key: string, value: Record<string, unknown>): Promise<void>;
41
+ /** Reads the graph-level metadata record stored under `key`, decoded, or null when absent. */
42
+ readGraphMeta(key: string): Promise<Record<string, unknown> | null>;
43
+ /** Removes the graph-level metadata record stored under `key`, if any. */
44
+ clearGraphMeta(key: string): Promise<void>;
45
+ /**
46
+ * Serializes an optional metadata record to a JSON string for storage in the
47
+ * `metadata` column. Absent metadata is stored as an empty object so the
48
+ * column is never null.
49
+ */
50
+ private static encodeMetadata;
51
+ /**
52
+ * Decodes the JSON `metadata` column back into a record. A missing, empty, or
53
+ * malformed value decodes to an empty object so callers always receive a record.
54
+ */
55
+ private static decodeMetadata;
10
56
  run(cypher: string, params?: Record<string, KuzuValue>): Promise<Record<string, KuzuValue>[]>;
11
57
  close(): Promise<void>;
12
58
  private static first;
@@ -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;AAO9C,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;IAuB3D,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;;;;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"}
@@ -2,8 +2,9 @@ import { mkdirSync } from 'node:fs';
2
2
  import { dirname } from 'node:path';
3
3
  import { Connection, Database } from 'kuzu';
4
4
  const SCHEMA = [
5
- 'CREATE NODE TABLE IF NOT EXISTS GraphNode (id STRING, kind STRING, name STRING, filePath STRING, exported BOOLEAN, startLine INT64, endLine INT64, PRIMARY KEY (id))',
6
- 'CREATE REL TABLE IF NOT EXISTS Edge (FROM GraphNode TO GraphNode, kind STRING)',
5
+ 'CREATE NODE TABLE IF NOT EXISTS GraphNode (id STRING, kind STRING, name STRING, filePath STRING, exported BOOLEAN, startLine INT64, endLine INT64, metadata STRING, PRIMARY KEY (id))',
6
+ 'CREATE REL TABLE IF NOT EXISTS Edge (FROM GraphNode TO GraphNode, kind STRING, metadata STRING)',
7
+ 'CREATE NODE TABLE IF NOT EXISTS GraphMeta (key STRING, value STRING, PRIMARY KEY (key))',
7
8
  ];
8
9
  export class KuzuStore {
9
10
  constructor(dbPath) {
@@ -17,7 +18,7 @@ export class KuzuStore {
17
18
  }
18
19
  }
19
20
  async load(nodes, edges) {
20
- const nodeStmt = await this.conn.prepare('MERGE (n:GraphNode {id: $id}) SET n.kind = $kind, n.name = $name, n.filePath = $filePath, n.exported = $exported, n.startLine = $startLine, n.endLine = $endLine');
21
+ const nodeStmt = await this.conn.prepare('MERGE (n:GraphNode {id: $id}) SET n.kind = $kind, n.name = $name, n.filePath = $filePath, n.exported = $exported, n.startLine = $startLine, n.endLine = $endLine, n.metadata = $metadata');
21
22
  for (const node of nodes) {
22
23
  KuzuStore.closeResults(await this.conn.execute(nodeStmt, {
23
24
  id: node.id,
@@ -27,11 +28,100 @@ export class KuzuStore {
27
28
  exported: node.exported ?? false,
28
29
  startLine: node.range?.startLine ?? 0,
29
30
  endLine: node.range?.endLine ?? 0,
31
+ metadata: KuzuStore.encodeMetadata(node.metadata),
30
32
  }));
31
33
  }
32
- const edgeStmt = await this.conn.prepare('MATCH (f:GraphNode {id: $from}), (t:GraphNode {id: $to}) MERGE (f)-[:Edge {kind: $kind}]->(t)');
34
+ const edgeStmt = await this.conn.prepare('MATCH (f:GraphNode {id: $from}), (t:GraphNode {id: $to}) MERGE (f)-[e:Edge {kind: $kind}]->(t) SET e.metadata = $metadata');
33
35
  for (const edge of edges) {
34
- KuzuStore.closeResults(await this.conn.execute(edgeStmt, { from: edge.from, to: edge.to, kind: edge.kind }));
36
+ KuzuStore.closeResults(await this.conn.execute(edgeStmt, {
37
+ from: edge.from,
38
+ to: edge.to,
39
+ kind: edge.kind,
40
+ metadata: KuzuStore.encodeMetadata(edge.metadata),
41
+ }));
42
+ }
43
+ }
44
+ /**
45
+ * Reads every node back from the store, decoding the `metadata` column. Used
46
+ * by enrichment to resolve profile frames against the loaded graph's ranges
47
+ * and to merge new metadata onto existing records.
48
+ */
49
+ async readNodes() {
50
+ const rows = await this.run('MATCH (n:GraphNode) RETURN n.id AS id, n.kind AS kind, n.name AS name, n.filePath AS filePath, n.startLine AS startLine, n.endLine AS endLine, n.metadata AS metadata');
51
+ return rows.map((row) => ({
52
+ id: String(row.id),
53
+ kind: String(row.kind),
54
+ name: String(row.name),
55
+ filePath: String(row.filePath),
56
+ startLine: Number(row.startLine),
57
+ endLine: Number(row.endLine),
58
+ metadata: KuzuStore.decodeMetadata(row.metadata),
59
+ }));
60
+ }
61
+ /**
62
+ * Overwrites the `metadata` column for the given nodes. The caller is
63
+ * responsible for merging so that only the intended keys change; passing the
64
+ * full record keeps the write idempotent for unchanged keys.
65
+ */
66
+ async writeNodeMetadata(entries) {
67
+ if (entries.length === 0) {
68
+ return;
69
+ }
70
+ const stmt = await this.conn.prepare('MATCH (n:GraphNode {id: $id}) SET n.metadata = $metadata');
71
+ for (const entry of entries) {
72
+ KuzuStore.closeResults(await this.conn.execute(stmt, {
73
+ id: entry.id,
74
+ metadata: KuzuStore.encodeMetadata(entry.metadata),
75
+ }));
76
+ }
77
+ }
78
+ /**
79
+ * Writes a graph-level metadata record under `key` (a `GraphMeta` row), encoding
80
+ * the value as JSON. Used for facts about the whole graph rather than one node —
81
+ * e.g. the runtime ingest manifest `enrich` records for coverage reporting.
82
+ */
83
+ async writeGraphMeta(key, value) {
84
+ const stmt = await this.conn.prepare('MERGE (m:GraphMeta {key: $key}) SET m.value = $value');
85
+ KuzuStore.closeResults(await this.conn.execute(stmt, { key, value: KuzuStore.encodeMetadata(value) }));
86
+ }
87
+ /** Reads the graph-level metadata record stored under `key`, decoded, or null when absent. */
88
+ async readGraphMeta(key) {
89
+ const rows = await this.run('MATCH (m:GraphMeta {key: $key}) RETURN m.value AS value', { key });
90
+ if (rows.length === 0) {
91
+ return null;
92
+ }
93
+ return KuzuStore.decodeMetadata(rows[0].value);
94
+ }
95
+ /** Removes the graph-level metadata record stored under `key`, if any. */
96
+ async clearGraphMeta(key) {
97
+ const stmt = await this.conn.prepare('MATCH (m:GraphMeta {key: $key}) DELETE m');
98
+ KuzuStore.closeResults(await this.conn.execute(stmt, { key }));
99
+ }
100
+ /**
101
+ * Serializes an optional metadata record to a JSON string for storage in the
102
+ * `metadata` column. Absent metadata is stored as an empty object so the
103
+ * column is never null.
104
+ */
105
+ static encodeMetadata(metadata) {
106
+ return JSON.stringify(metadata ?? {});
107
+ }
108
+ /**
109
+ * Decodes the JSON `metadata` column back into a record. A missing, empty, or
110
+ * malformed value decodes to an empty object so callers always receive a record.
111
+ */
112
+ static decodeMetadata(value) {
113
+ if (typeof value !== 'string' || value.length === 0) {
114
+ return {};
115
+ }
116
+ try {
117
+ const parsed = JSON.parse(value);
118
+ if (typeof parsed === 'object' && parsed !== null) {
119
+ return parsed;
120
+ }
121
+ return {};
122
+ }
123
+ catch {
124
+ return {};
35
125
  }
36
126
  }
37
127
  async run(cypher, params) {
@@ -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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"}