@spikedpunch/mast 0.1.0

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 (257) hide show
  1. package/LICENSE +21 -0
  2. package/MAST_SPEC.md +2926 -0
  3. package/README.md +842 -0
  4. package/assets/skill.md +45 -0
  5. package/dist/ast/extract.d.ts +65 -0
  6. package/dist/ast/extract.d.ts.map +1 -0
  7. package/dist/ast/extract.js +147 -0
  8. package/dist/ast/extract.js.map +1 -0
  9. package/dist/ast/extractor.d.ts +85 -0
  10. package/dist/ast/extractor.d.ts.map +1 -0
  11. package/dist/ast/extractor.js +2 -0
  12. package/dist/ast/extractor.js.map +1 -0
  13. package/dist/ast/extractors/markdown.d.ts +40 -0
  14. package/dist/ast/extractors/markdown.d.ts.map +1 -0
  15. package/dist/ast/extractors/markdown.js +175 -0
  16. package/dist/ast/extractors/markdown.js.map +1 -0
  17. package/dist/ast/extractors/typescript.d.ts +179 -0
  18. package/dist/ast/extractors/typescript.d.ts.map +1 -0
  19. package/dist/ast/extractors/typescript.js +1439 -0
  20. package/dist/ast/extractors/typescript.js.map +1 -0
  21. package/dist/ast/parser.d.ts +5 -0
  22. package/dist/ast/parser.d.ts.map +1 -0
  23. package/dist/ast/parser.js +21 -0
  24. package/dist/ast/parser.js.map +1 -0
  25. package/dist/ast/types.d.ts +586 -0
  26. package/dist/ast/types.d.ts.map +1 -0
  27. package/dist/ast/types.js +3 -0
  28. package/dist/ast/types.js.map +1 -0
  29. package/dist/cli/docs-cmd.d.ts +22 -0
  30. package/dist/cli/docs-cmd.d.ts.map +1 -0
  31. package/dist/cli/docs-cmd.js +100 -0
  32. package/dist/cli/docs-cmd.js.map +1 -0
  33. package/dist/cli/index-cmd.d.ts +72 -0
  34. package/dist/cli/index-cmd.d.ts.map +1 -0
  35. package/dist/cli/index-cmd.js +263 -0
  36. package/dist/cli/index-cmd.js.map +1 -0
  37. package/dist/cli/index.d.ts +3 -0
  38. package/dist/cli/index.d.ts.map +1 -0
  39. package/dist/cli/index.js +4 -0
  40. package/dist/cli/index.js.map +1 -0
  41. package/dist/cli/init.d.ts +14 -0
  42. package/dist/cli/init.d.ts.map +1 -0
  43. package/dist/cli/init.js +64 -0
  44. package/dist/cli/init.js.map +1 -0
  45. package/dist/cli/install-hooks.d.ts +3 -0
  46. package/dist/cli/install-hooks.d.ts.map +1 -0
  47. package/dist/cli/install-hooks.js +34 -0
  48. package/dist/cli/install-hooks.js.map +1 -0
  49. package/dist/cli/metrics-cmd.d.ts +3 -0
  50. package/dist/cli/metrics-cmd.d.ts.map +1 -0
  51. package/dist/cli/metrics-cmd.js +164 -0
  52. package/dist/cli/metrics-cmd.js.map +1 -0
  53. package/dist/cli/program.d.ts +14 -0
  54. package/dist/cli/program.d.ts.map +1 -0
  55. package/dist/cli/program.js +44 -0
  56. package/dist/cli/program.js.map +1 -0
  57. package/dist/cli/query.d.ts +46 -0
  58. package/dist/cli/query.d.ts.map +1 -0
  59. package/dist/cli/query.js +153 -0
  60. package/dist/cli/query.js.map +1 -0
  61. package/dist/cli/search-cmd.d.ts +33 -0
  62. package/dist/cli/search-cmd.d.ts.map +1 -0
  63. package/dist/cli/search-cmd.js +114 -0
  64. package/dist/cli/search-cmd.js.map +1 -0
  65. package/dist/cli/serve.d.ts +3 -0
  66. package/dist/cli/serve.d.ts.map +1 -0
  67. package/dist/cli/serve.js +19 -0
  68. package/dist/cli/serve.js.map +1 -0
  69. package/dist/cli/skill-install.d.ts +39 -0
  70. package/dist/cli/skill-install.d.ts.map +1 -0
  71. package/dist/cli/skill-install.js +57 -0
  72. package/dist/cli/skill-install.js.map +1 -0
  73. package/dist/cli/status.d.ts +35 -0
  74. package/dist/cli/status.d.ts.map +1 -0
  75. package/dist/cli/status.js +117 -0
  76. package/dist/cli/status.js.map +1 -0
  77. package/dist/cli/upgrade-cmd.d.ts +48 -0
  78. package/dist/cli/upgrade-cmd.d.ts.map +1 -0
  79. package/dist/cli/upgrade-cmd.js +129 -0
  80. package/dist/cli/upgrade-cmd.js.map +1 -0
  81. package/dist/cli/version.d.ts +3 -0
  82. package/dist/cli/version.d.ts.map +1 -0
  83. package/dist/cli/version.js +19 -0
  84. package/dist/cli/version.js.map +1 -0
  85. package/dist/env.d.ts +17 -0
  86. package/dist/env.d.ts.map +1 -0
  87. package/dist/env.js +17 -0
  88. package/dist/env.js.map +1 -0
  89. package/dist/graph/checker-resolver.d.ts +156 -0
  90. package/dist/graph/checker-resolver.d.ts.map +1 -0
  91. package/dist/graph/checker-resolver.js +458 -0
  92. package/dist/graph/checker-resolver.js.map +1 -0
  93. package/dist/graph/db.d.ts +318 -0
  94. package/dist/graph/db.d.ts.map +1 -0
  95. package/dist/graph/db.js +266 -0
  96. package/dist/graph/db.js.map +1 -0
  97. package/dist/graph/index.d.ts +4 -0
  98. package/dist/graph/index.d.ts.map +1 -0
  99. package/dist/graph/index.js +5 -0
  100. package/dist/graph/index.js.map +1 -0
  101. package/dist/graph/local-type-env.d.ts +45 -0
  102. package/dist/graph/local-type-env.d.ts.map +1 -0
  103. package/dist/graph/local-type-env.js +59 -0
  104. package/dist/graph/local-type-env.js.map +1 -0
  105. package/dist/graph/path-range.d.ts +40 -0
  106. package/dist/graph/path-range.d.ts.map +1 -0
  107. package/dist/graph/path-range.js +42 -0
  108. package/dist/graph/path-range.js.map +1 -0
  109. package/dist/graph/populate.d.ts +263 -0
  110. package/dist/graph/populate.d.ts.map +1 -0
  111. package/dist/graph/populate.js +984 -0
  112. package/dist/graph/populate.js.map +1 -0
  113. package/dist/graph/queries.d.ts +114 -0
  114. package/dist/graph/queries.d.ts.map +1 -0
  115. package/dist/graph/queries.js +415 -0
  116. package/dist/graph/queries.js.map +1 -0
  117. package/dist/graph/sqliteBatch.d.ts +48 -0
  118. package/dist/graph/sqliteBatch.d.ts.map +1 -0
  119. package/dist/graph/sqliteBatch.js +93 -0
  120. package/dist/graph/sqliteBatch.js.map +1 -0
  121. package/dist/indexer/freshness.d.ts +48 -0
  122. package/dist/indexer/freshness.d.ts.map +1 -0
  123. package/dist/indexer/freshness.js +72 -0
  124. package/dist/indexer/freshness.js.map +1 -0
  125. package/dist/indexer/import-resolver.d.ts +50 -0
  126. package/dist/indexer/import-resolver.d.ts.map +1 -0
  127. package/dist/indexer/import-resolver.js +318 -0
  128. package/dist/indexer/import-resolver.js.map +1 -0
  129. package/dist/indexer/index.d.ts +249 -0
  130. package/dist/indexer/index.d.ts.map +1 -0
  131. package/dist/indexer/index.js +560 -0
  132. package/dist/indexer/index.js.map +1 -0
  133. package/dist/indexer/walker.d.ts +60 -0
  134. package/dist/indexer/walker.d.ts.map +1 -0
  135. package/dist/indexer/walker.js +128 -0
  136. package/dist/indexer/walker.js.map +1 -0
  137. package/dist/indexer/watcher.d.ts +80 -0
  138. package/dist/indexer/watcher.d.ts.map +1 -0
  139. package/dist/indexer/watcher.js +151 -0
  140. package/dist/indexer/watcher.js.map +1 -0
  141. package/dist/mcp/context.d.ts +23 -0
  142. package/dist/mcp/context.d.ts.map +1 -0
  143. package/dist/mcp/context.js +2 -0
  144. package/dist/mcp/context.js.map +1 -0
  145. package/dist/mcp/register-tools.d.ts +21 -0
  146. package/dist/mcp/register-tools.d.ts.map +1 -0
  147. package/dist/mcp/register-tools.js +42 -0
  148. package/dist/mcp/register-tools.js.map +1 -0
  149. package/dist/mcp/server.d.ts +58 -0
  150. package/dist/mcp/server.d.ts.map +1 -0
  151. package/dist/mcp/server.js +177 -0
  152. package/dist/mcp/server.js.map +1 -0
  153. package/dist/mcp/staleness.d.ts +72 -0
  154. package/dist/mcp/staleness.d.ts.map +1 -0
  155. package/dist/mcp/staleness.js +213 -0
  156. package/dist/mcp/staleness.js.map +1 -0
  157. package/dist/mcp/startup.d.ts +40 -0
  158. package/dist/mcp/startup.d.ts.map +1 -0
  159. package/dist/mcp/startup.js +114 -0
  160. package/dist/mcp/startup.js.map +1 -0
  161. package/dist/mcp/tools/_helpers.d.ts +26 -0
  162. package/dist/mcp/tools/_helpers.d.ts.map +1 -0
  163. package/dist/mcp/tools/_helpers.js +54 -0
  164. package/dist/mcp/tools/_helpers.js.map +1 -0
  165. package/dist/mcp/tools/callers.d.ts +4 -0
  166. package/dist/mcp/tools/callers.d.ts.map +1 -0
  167. package/dist/mcp/tools/callers.js +112 -0
  168. package/dist/mcp/tools/callers.js.map +1 -0
  169. package/dist/mcp/tools/dependencies.d.ts +4 -0
  170. package/dist/mcp/tools/dependencies.d.ts.map +1 -0
  171. package/dist/mcp/tools/dependencies.js +36 -0
  172. package/dist/mcp/tools/dependencies.js.map +1 -0
  173. package/dist/mcp/tools/efficiency.d.ts +4 -0
  174. package/dist/mcp/tools/efficiency.d.ts.map +1 -0
  175. package/dist/mcp/tools/efficiency.js +39 -0
  176. package/dist/mcp/tools/efficiency.js.map +1 -0
  177. package/dist/mcp/tools/exports.d.ts +4 -0
  178. package/dist/mcp/tools/exports.d.ts.map +1 -0
  179. package/dist/mcp/tools/exports.js +56 -0
  180. package/dist/mcp/tools/exports.js.map +1 -0
  181. package/dist/mcp/tools/implementors.d.ts +4 -0
  182. package/dist/mcp/tools/implementors.d.ts.map +1 -0
  183. package/dist/mcp/tools/implementors.js +47 -0
  184. package/dist/mcp/tools/implementors.js.map +1 -0
  185. package/dist/mcp/tools/project-skeleton.d.ts +4 -0
  186. package/dist/mcp/tools/project-skeleton.d.ts.map +1 -0
  187. package/dist/mcp/tools/project-skeleton.js +61 -0
  188. package/dist/mcp/tools/project-skeleton.js.map +1 -0
  189. package/dist/mcp/tools/reindex.d.ts +14 -0
  190. package/dist/mcp/tools/reindex.d.ts.map +1 -0
  191. package/dist/mcp/tools/reindex.js +32 -0
  192. package/dist/mcp/tools/reindex.js.map +1 -0
  193. package/dist/mcp/tools/rename-impact.d.ts +4 -0
  194. package/dist/mcp/tools/rename-impact.d.ts.map +1 -0
  195. package/dist/mcp/tools/rename-impact.js +124 -0
  196. package/dist/mcp/tools/rename-impact.js.map +1 -0
  197. package/dist/mcp/tools/search.d.ts +4 -0
  198. package/dist/mcp/tools/search.d.ts.map +1 -0
  199. package/dist/mcp/tools/search.js +69 -0
  200. package/dist/mcp/tools/search.js.map +1 -0
  201. package/dist/mcp/tools/signature.d.ts +4 -0
  202. package/dist/mcp/tools/signature.d.ts.map +1 -0
  203. package/dist/mcp/tools/signature.js +127 -0
  204. package/dist/mcp/tools/signature.js.map +1 -0
  205. package/dist/mcp/tools/status.d.ts +4 -0
  206. package/dist/mcp/tools/status.d.ts.map +1 -0
  207. package/dist/mcp/tools/status.js +30 -0
  208. package/dist/mcp/tools/status.js.map +1 -0
  209. package/dist/search/declex.d.ts +109 -0
  210. package/dist/search/declex.d.ts.map +1 -0
  211. package/dist/search/declex.js +242 -0
  212. package/dist/search/declex.js.map +1 -0
  213. package/dist/search/fts.d.ts +77 -0
  214. package/dist/search/fts.d.ts.map +1 -0
  215. package/dist/search/fts.js +223 -0
  216. package/dist/search/fts.js.map +1 -0
  217. package/dist/search/fused.d.ts +110 -0
  218. package/dist/search/fused.d.ts.map +1 -0
  219. package/dist/search/fused.js +323 -0
  220. package/dist/search/fused.js.map +1 -0
  221. package/dist/search/potential-matches.d.ts +88 -0
  222. package/dist/search/potential-matches.d.ts.map +1 -0
  223. package/dist/search/potential-matches.js +83 -0
  224. package/dist/search/potential-matches.js.map +1 -0
  225. package/dist/search/scope.d.ts +66 -0
  226. package/dist/search/scope.d.ts.map +1 -0
  227. package/dist/search/scope.js +71 -0
  228. package/dist/search/scope.js.map +1 -0
  229. package/dist/store/config.d.ts +57 -0
  230. package/dist/store/config.d.ts.map +1 -0
  231. package/dist/store/config.js +208 -0
  232. package/dist/store/config.js.map +1 -0
  233. package/dist/store/lock.d.ts +101 -0
  234. package/dist/store/lock.d.ts.map +1 -0
  235. package/dist/store/lock.js +182 -0
  236. package/dist/store/lock.js.map +1 -0
  237. package/dist/store/lockMetrics.d.ts +52 -0
  238. package/dist/store/lockMetrics.d.ts.map +1 -0
  239. package/dist/store/lockMetrics.js +29 -0
  240. package/dist/store/lockMetrics.js.map +1 -0
  241. package/dist/store/sqliteChunkStore.d.ts +44 -0
  242. package/dist/store/sqliteChunkStore.d.ts.map +1 -0
  243. package/dist/store/sqliteChunkStore.js +135 -0
  244. package/dist/store/sqliteChunkStore.js.map +1 -0
  245. package/dist/telemetry/lockMetricsSummary.d.ts +42 -0
  246. package/dist/telemetry/lockMetricsSummary.d.ts.map +1 -0
  247. package/dist/telemetry/lockMetricsSummary.js +139 -0
  248. package/dist/telemetry/lockMetricsSummary.js.map +1 -0
  249. package/dist/telemetry/metrics.d.ts +140 -0
  250. package/dist/telemetry/metrics.d.ts.map +1 -0
  251. package/dist/telemetry/metrics.js +312 -0
  252. package/dist/telemetry/metrics.js.map +1 -0
  253. package/dist/telemetry/tokenizer.d.ts +125 -0
  254. package/dist/telemetry/tokenizer.d.ts.map +1 -0
  255. package/dist/telemetry/tokenizer.js +174 -0
  256. package/dist/telemetry/tokenizer.js.map +1 -0
  257. package/package.json +81 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"populate.js","sourceRoot":"","sources":["../../src/graph/populate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,114 @@
1
+ import type { Db } from './db.js';
2
+ import type { DependencyEntry, ImplementorResult, TypeContextEntry } from '../ast/types.js';
3
+ export interface VerifiedCallerRow {
4
+ file_path: string;
5
+ line: number;
6
+ caller_symbol: string;
7
+ context: string;
8
+ resolution: string;
9
+ }
10
+ /**
11
+ * Returns direct or transitive verified callers of `symbolId` using a
12
+ * recursive CTE over `POTENTIAL_CALL` edges. Only the verified set; the
13
+ * `potential_matches` (identifier_fts) set is computed in `search/fts.ts`.
14
+ */
15
+ export declare function queryVerifiedCallers(db: Db, symbolId: number, transitive: boolean): Promise<VerifiedCallerRow[]>;
16
+ export interface CheckerVerdictRow {
17
+ readonly file_path: string;
18
+ readonly call_site_line: number;
19
+ readonly verdict: string;
20
+ }
21
+ /**
22
+ * Checker-pass classifications recorded against `symbolId`'s potential-match
23
+ * pool, restricted to rows whose stored mtime still matches the file's
24
+ * CURRENT mtime.
25
+ *
26
+ * That `whereRef` is a defense-in-depth staleness guard alongside the
27
+ * `checker_verdicts.call_site_file_id REFERENCES files(id) ON DELETE CASCADE`
28
+ * FK (`populateFile`'s delete-and-replace already wipes verdicts for any file
29
+ * whose content changed — this query protects against a hypothetical future
30
+ * write path that updates `files.mtime` without going through that cascade).
31
+ * A verdict outliving the file content it was computed for is this feature's
32
+ * severity-zero failure mode (IMPLEMENTATION_PLAN_VEXP.md Stage 1.2 brief):
33
+ * it would silently suppress a real new call site from `potential_matches`.
34
+ */
35
+ export declare function queryCheckerVerdicts(db: Db, symbolId: number): Promise<CheckerVerdictRow[]>;
36
+ export interface SymbolRow {
37
+ id: number;
38
+ name: string;
39
+ kind: string;
40
+ file_id: number;
41
+ line: number;
42
+ is_exported: number;
43
+ declaration_hash: string | null;
44
+ body_hash: string | null;
45
+ file_path: string;
46
+ }
47
+ /** Find all symbols with the given name, optionally restricted to one file. */
48
+ export declare function querySymbolByName(db: Db, name: string, filePath?: string): Promise<SymbolRow[]>;
49
+ export interface BarrelExportRow {
50
+ readonly file_path: string;
51
+ /** Line of the re-export specifier; null for star barrels (file-level rows). */
52
+ readonly line: number | null;
53
+ /** Name the barrel exposes (differs from the symbol name when aliased). */
54
+ readonly exported_as: string;
55
+ readonly via: 'named' | 'star';
56
+ }
57
+ /**
58
+ * Files that re-export `symbolId` and therefore need attention when it is
59
+ * renamed (§9 mast_rename_impact):
60
+ *
61
+ * - **named** — RE_EXPORTS edges into the symbol; the barrel's export
62
+ * statement names the symbol and must be edited.
63
+ * - **star** — a recursive walk of `re_export_files` from the declaring file;
64
+ * `export *` statements need no edit but every downstream consumer imports
65
+ * the symbol through them, so they are surfaced for awareness.
66
+ */
67
+ export declare function queryBarrelExports(db: Db, symbolId: number, symbolName: string, declaringFileId: number): Promise<BarrelExportRow[]>;
68
+ /**
69
+ * Dice-coefficient trigram similarity in [0, 1], mirroring Postgres `pg_trgm`.
70
+ *
71
+ * Returns 0 when either string is shorter than a trigram (no shared basis to
72
+ * compare). This is a pure helper because SQLite ships no `pg_trgm` /
73
+ * `spellfix` — the ranking is computed in JS over the fetched symbol set.
74
+ */
75
+ export declare function trigramSimilarity(a: string, b: string): number;
76
+ export interface SymbolSuggestionRow {
77
+ readonly name: string;
78
+ readonly file_path: string;
79
+ readonly line: number;
80
+ readonly score: number;
81
+ }
82
+ /**
83
+ * Return symbols whose name is trigram-similar to `query`, best first.
84
+ *
85
+ * Only invoked on the zero-result assist path (§9 mast_search), so scanning the
86
+ * full symbol set and scoring in JS is acceptable — this is not a hot path.
87
+ * `minScore` filters out coincidental low-overlap matches so the suggestions
88
+ * stay high-signal.
89
+ */
90
+ export declare function querySymbolsBySimilarity(db: Db, query: string, limit: number, minScore?: number): Promise<SymbolSuggestionRow[]>;
91
+ /** Return all imports recorded for `filePath`. */
92
+ export declare function queryDependencies(db: Db, filePath: string): Promise<DependencyEntry[]>;
93
+ /** Find concrete classes that implement `interfaceName`. */
94
+ export declare function queryImplementors(db: Db, interfaceName: string): Promise<ImplementorResult[]>;
95
+ /**
96
+ * Resolve type context entries for a list of type names.
97
+ *
98
+ * Priority order (one level deep only):
99
+ * 1. Same file — symbol defined in `containingFilePath`
100
+ * 2. Named imports — symbol explicitly imported in the file's import list
101
+ * 3. Global fallback — any exported interface/type/class in the index
102
+ *
103
+ * External types (no resolved_path in the imports table) are omitted.
104
+ * The signature is taken from `chunk_fts.content`; long content is truncated
105
+ * to `SIGNATURE_LIMIT` characters to keep responses compact.
106
+ */
107
+ export declare function resolveTypeContext(db: Db, typeNames: readonly string[], containingFilePath: string): Promise<TypeContextEntry[]>;
108
+ export interface SkeletonRow {
109
+ file_path: string;
110
+ symbol_name: string;
111
+ }
112
+ /** Return all exported top-level symbols, optionally within a directory prefix. */
113
+ export declare function queryProjectSkeleton(db: Db, directoryPrefix?: string): Promise<SkeletonRow[]>;
114
+ //# sourceMappingURL=queries.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queries.d.ts","sourceRoot":"","sources":["../../src/graph/queries.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,415 @@
1
+ import { sql } from 'kysely';
2
+ import { EdgeType } from './db.js';
3
+ import { pathPrefixUpperBound } from './path-range.js';
4
+ /**
5
+ * Returns direct or transitive verified callers of `symbolId` using a
6
+ * recursive CTE over `POTENTIAL_CALL` edges. Only the verified set; the
7
+ * `potential_matches` (identifier_fts) set is computed in `search/fts.ts`.
8
+ */
9
+ export async function queryVerifiedCallers(db, symbolId, transitive) {
10
+ // `line` is the call-site line where available, falling back to the caller
11
+ // symbol's declaration line. `resolution` defaults to 'same_file' only for
12
+ // legacy rows written before the resolution column existed.
13
+ const lineExpr = sql `COALESCE(e.call_line, s.line)`.as('line');
14
+ const contextExpr = sql `COALESCE(e.context, '')`.as('context');
15
+ const resolutionExpr = sql `COALESCE(e.resolution, 'same_file')`.as('resolution');
16
+ // Direct callers: no CTE needed — simple edge join.
17
+ if (!transitive) {
18
+ return db
19
+ .selectFrom('edges as e')
20
+ .innerJoin('symbols as s', 's.id', 'e.from_id')
21
+ .innerJoin('files as f', 'f.id', 's.file_id')
22
+ .select([
23
+ 'f.path as file_path',
24
+ lineExpr,
25
+ 's.name as caller_symbol',
26
+ contextExpr,
27
+ resolutionExpr,
28
+ ])
29
+ .where('e.to_id', '=', symbolId)
30
+ .where('e.edge_type', '=', EdgeType.POTENTIAL_CALL)
31
+ .execute();
32
+ }
33
+ // Transitive callers: recursive CTE walking POTENTIAL_CALL edges. Each hop
34
+ // carries its own call-site metadata so intermediate callers report the line
35
+ // and context of the call they make.
36
+ return db
37
+ .withRecursive('callers', (qb) =>
38
+ // Anchor: direct callers of `symbolId`.
39
+ qb
40
+ .selectFrom('edges')
41
+ .select(['from_id as id', 'call_line', 'context', 'resolution'])
42
+ .where('to_id', '=', symbolId)
43
+ .where('edge_type', '=', EdgeType.POTENTIAL_CALL)
44
+ .union(
45
+ // Recursive step: callers of callers.
46
+ qb
47
+ .selectFrom('edges as e')
48
+ .innerJoin('callers', 'callers.id', 'e.to_id')
49
+ .select(['e.from_id as id', 'e.call_line', 'e.context', 'e.resolution'])
50
+ .where('e.edge_type', '=', EdgeType.POTENTIAL_CALL)))
51
+ .selectFrom('symbols as s')
52
+ .innerJoin('files as f', 'f.id', 's.file_id')
53
+ .innerJoin('callers as c', 's.id', 'c.id')
54
+ .select([
55
+ 'f.path as file_path',
56
+ sql `COALESCE(c.call_line, s.line)`.as('line'),
57
+ 's.name as caller_symbol',
58
+ sql `COALESCE(c.context, '')`.as('context'),
59
+ sql `COALESCE(c.resolution, 'same_file')`.as('resolution'),
60
+ ])
61
+ .execute();
62
+ }
63
+ /**
64
+ * Checker-pass classifications recorded against `symbolId`'s potential-match
65
+ * pool, restricted to rows whose stored mtime still matches the file's
66
+ * CURRENT mtime.
67
+ *
68
+ * That `whereRef` is a defense-in-depth staleness guard alongside the
69
+ * `checker_verdicts.call_site_file_id REFERENCES files(id) ON DELETE CASCADE`
70
+ * FK (`populateFile`'s delete-and-replace already wipes verdicts for any file
71
+ * whose content changed — this query protects against a hypothetical future
72
+ * write path that updates `files.mtime` without going through that cascade).
73
+ * A verdict outliving the file content it was computed for is this feature's
74
+ * severity-zero failure mode (IMPLEMENTATION_PLAN_VEXP.md Stage 1.2 brief):
75
+ * it would silently suppress a real new call site from `potential_matches`.
76
+ */
77
+ export async function queryCheckerVerdicts(db, symbolId) {
78
+ return db
79
+ .selectFrom('checker_verdicts as cv')
80
+ .innerJoin('files as f', 'f.id', 'cv.call_site_file_id')
81
+ .select(['f.path as file_path', 'cv.call_site_line', 'cv.verdict'])
82
+ .where('cv.queried_symbol_id', '=', symbolId)
83
+ .whereRef('cv.call_site_mtime', '=', 'f.mtime')
84
+ .execute();
85
+ }
86
+ /** Find all symbols with the given name, optionally restricted to one file. */
87
+ export async function querySymbolByName(db, name, filePath) {
88
+ let q = db
89
+ .selectFrom('symbols as s')
90
+ .innerJoin('files as f', 'f.id', 's.file_id')
91
+ .select([
92
+ 's.id',
93
+ 's.name',
94
+ 's.kind',
95
+ 's.file_id',
96
+ 's.line',
97
+ 's.is_exported',
98
+ 's.declaration_hash',
99
+ 's.body_hash',
100
+ 'f.path as file_path',
101
+ ])
102
+ .where('s.name', '=', name)
103
+ // Re-export marker rows (kind 'export', §10.1) exist only to anchor
104
+ // RE_EXPORTS edges. Excluding them keeps signature/caller lookups
105
+ // resolving to the real declaration — a barrel marker has no source body.
106
+ .where('s.kind', '!=', 'export');
107
+ if (filePath !== undefined) {
108
+ q = q.where('f.path', '=', filePath);
109
+ }
110
+ return q.orderBy('s.is_exported', 'desc').orderBy('f.path', 'asc').execute();
111
+ }
112
+ /**
113
+ * Files that re-export `symbolId` and therefore need attention when it is
114
+ * renamed (§9 mast_rename_impact):
115
+ *
116
+ * - **named** — RE_EXPORTS edges into the symbol; the barrel's export
117
+ * statement names the symbol and must be edited.
118
+ * - **star** — a recursive walk of `re_export_files` from the declaring file;
119
+ * `export *` statements need no edit but every downstream consumer imports
120
+ * the symbol through them, so they are surfaced for awareness.
121
+ */
122
+ export async function queryBarrelExports(db, symbolId, symbolName, declaringFileId) {
123
+ const named = await db
124
+ .selectFrom('edges as e')
125
+ .innerJoin('symbols as s', 's.id', 'e.from_id')
126
+ .innerJoin('files as f', 'f.id', 's.file_id')
127
+ .select(['f.path as file_path', 's.line', 's.name'])
128
+ .where('e.to_id', '=', symbolId)
129
+ .where('e.edge_type', '=', EdgeType.RE_EXPORTS)
130
+ .execute();
131
+ const rows = named.map((r) => ({
132
+ file_path: r.file_path,
133
+ line: r.line,
134
+ exported_as: r.name,
135
+ via: 'named',
136
+ }));
137
+ // Star chain: every file that (transitively) `export *`s the declaring file.
138
+ const starRows = await db
139
+ .withRecursive('star_chain', (qb) => qb
140
+ .selectFrom('re_export_files')
141
+ .select('from_file_id as id')
142
+ .where('to_file_id', '=', declaringFileId)
143
+ .union(qb
144
+ .selectFrom('re_export_files as rf')
145
+ .innerJoin('star_chain', 'star_chain.id', 'rf.to_file_id')
146
+ .select('rf.from_file_id as id')))
147
+ .selectFrom('files as f')
148
+ .innerJoin('star_chain as c', 'c.id', 'f.id')
149
+ .select('f.path as file_path')
150
+ .execute();
151
+ const seen = new Set(rows.map((r) => r.file_path));
152
+ for (const r of starRows) {
153
+ // Named rows win when a file both names the symbol and stars the module.
154
+ if (seen.has(r.file_path))
155
+ continue;
156
+ seen.add(r.file_path);
157
+ rows.push({ file_path: r.file_path, line: null, exported_as: symbolName, via: 'star' });
158
+ }
159
+ return rows;
160
+ }
161
+ // ---------------------------------------------------------------------------
162
+ // Trigram symbol-name similarity ("did you mean" candidates)
163
+ // ---------------------------------------------------------------------------
164
+ /** Character trigrams of a lowercased string. */
165
+ function trigrams(value) {
166
+ const set = new Set();
167
+ const lower = value.toLowerCase();
168
+ for (let i = 0; i + 3 <= lower.length; i++) {
169
+ set.add(lower.slice(i, i + 3));
170
+ }
171
+ return set;
172
+ }
173
+ /**
174
+ * Dice-coefficient trigram similarity in [0, 1], mirroring Postgres `pg_trgm`.
175
+ *
176
+ * Returns 0 when either string is shorter than a trigram (no shared basis to
177
+ * compare). This is a pure helper because SQLite ships no `pg_trgm` /
178
+ * `spellfix` — the ranking is computed in JS over the fetched symbol set.
179
+ */
180
+ export function trigramSimilarity(a, b) {
181
+ const ta = trigrams(a);
182
+ const tb = trigrams(b);
183
+ if (ta.size === 0 || tb.size === 0)
184
+ return 0;
185
+ let shared = 0;
186
+ for (const g of ta)
187
+ if (tb.has(g))
188
+ shared++;
189
+ return (2 * shared) / (ta.size + tb.size);
190
+ }
191
+ /**
192
+ * Return symbols whose name is trigram-similar to `query`, best first.
193
+ *
194
+ * Only invoked on the zero-result assist path (§9 mast_search), so scanning the
195
+ * full symbol set and scoring in JS is acceptable — this is not a hot path.
196
+ * `minScore` filters out coincidental low-overlap matches so the suggestions
197
+ * stay high-signal.
198
+ */
199
+ export async function querySymbolsBySimilarity(db, query, limit, minScore = 0.3) {
200
+ const rows = await db
201
+ .selectFrom('symbols as s')
202
+ .innerJoin('files as f', 'f.id', 's.file_id')
203
+ .select(['s.name', 'f.path as file_path', 's.line'])
204
+ .where('s.kind', '!=', 'method') // methods surface via their class shell
205
+ .execute();
206
+ const scored = [];
207
+ for (const r of rows) {
208
+ const score = trigramSimilarity(query, r.name);
209
+ if (score >= minScore) {
210
+ scored.push({ name: r.name, file_path: r.file_path, line: r.line, score });
211
+ }
212
+ }
213
+ scored.sort((a, b) => b.score - a.score);
214
+ return scored.slice(0, limit);
215
+ }
216
+ // ---------------------------------------------------------------------------
217
+ // Dependencies (imports table)
218
+ // ---------------------------------------------------------------------------
219
+ /** Return all imports recorded for `filePath`. */
220
+ export async function queryDependencies(db, filePath) {
221
+ const rows = await db
222
+ .selectFrom('imports as i')
223
+ .innerJoin('files as f', 'f.id', 'i.file_id')
224
+ .select([
225
+ 'i.module',
226
+ 'i.symbols',
227
+ 'i.is_external',
228
+ 'i.resolved_path',
229
+ ])
230
+ .where('f.path', '=', filePath)
231
+ .execute();
232
+ return rows.map((r) => ({
233
+ module: r.module,
234
+ symbols: JSON.parse(r.symbols),
235
+ is_external: r.is_external === 1,
236
+ resolved_path: r.resolved_path ?? undefined,
237
+ }));
238
+ }
239
+ // ---------------------------------------------------------------------------
240
+ // Implementors (IMPLEMENTS edges)
241
+ // ---------------------------------------------------------------------------
242
+ /** Find concrete classes that implement `interfaceName`. */
243
+ export async function queryImplementors(db, interfaceName) {
244
+ // Find the interface symbol(s) first.
245
+ const ifaces = await db
246
+ .selectFrom('symbols')
247
+ .select(['id'])
248
+ .where('name', '=', interfaceName)
249
+ .where('kind', '=', 'interface')
250
+ .execute();
251
+ if (ifaces.length === 0)
252
+ return [];
253
+ const ifaceIds = ifaces.map((r) => r.id);
254
+ const rows = await db
255
+ .selectFrom('edges as e')
256
+ .innerJoin('symbols as s', 's.id', 'e.from_id')
257
+ .innerJoin('files as f', 'f.id', 's.file_id')
258
+ .select(['s.name as class_name', 'f.path as file_path', 's.line'])
259
+ .where('e.to_id', 'in', ifaceIds)
260
+ .where('e.edge_type', '=', EdgeType.IMPLEMENTS)
261
+ .execute();
262
+ // For each implementing class, collect its methods via PARENT_OF edges.
263
+ const results = [];
264
+ for (const row of rows) {
265
+ const classSymbol = await db
266
+ .selectFrom('symbols')
267
+ .select(['id'])
268
+ .where('name', '=', row.class_name)
269
+ .where('kind', '=', 'class')
270
+ .executeTakeFirst();
271
+ const methods = [];
272
+ if (classSymbol !== undefined) {
273
+ const methodRows = await db
274
+ .selectFrom('edges as e')
275
+ .innerJoin('symbols as s', 's.id', 'e.to_id')
276
+ .select(['s.name'])
277
+ .where('e.from_id', '=', classSymbol.id)
278
+ .where('e.edge_type', '=', EdgeType.PARENT_OF)
279
+ .execute();
280
+ methods.push(...methodRows.map((m) => m.name));
281
+ }
282
+ results.push({
283
+ class_name: row.class_name,
284
+ file_path: row.file_path,
285
+ line: row.line,
286
+ methods,
287
+ });
288
+ }
289
+ return results;
290
+ }
291
+ // ---------------------------------------------------------------------------
292
+ // Type context resolution (used by mast_signature)
293
+ // ---------------------------------------------------------------------------
294
+ /**
295
+ * Resolve type context entries for a list of type names.
296
+ *
297
+ * Priority order (one level deep only):
298
+ * 1. Same file — symbol defined in `containingFilePath`
299
+ * 2. Named imports — symbol explicitly imported in the file's import list
300
+ * 3. Global fallback — any exported interface/type/class in the index
301
+ *
302
+ * External types (no resolved_path in the imports table) are omitted.
303
+ * The signature is taken from `chunk_fts.content`; long content is truncated
304
+ * to `SIGNATURE_LIMIT` characters to keep responses compact.
305
+ */
306
+ export async function resolveTypeContext(db, typeNames, containingFilePath) {
307
+ if (typeNames.length === 0)
308
+ return [];
309
+ const SIGNATURE_LIMIT = 500;
310
+ const results = [];
311
+ for (const typeName of typeNames) {
312
+ const entry = await resolveOneType(db, typeName, containingFilePath, SIGNATURE_LIMIT);
313
+ if (entry !== null)
314
+ results.push(entry);
315
+ }
316
+ return results;
317
+ }
318
+ async function resolveOneType(db, typeName, containingFilePath, signatureLimit) {
319
+ // 1. Same-file lookup.
320
+ const sameFile = await db
321
+ .selectFrom('symbols as s')
322
+ .innerJoin('files as f', 'f.id', 's.file_id')
323
+ .select(['s.name', 'f.path as file_path', 's.line'])
324
+ .where('s.name', '=', typeName)
325
+ .where('f.path', '=', containingFilePath)
326
+ .executeTakeFirst();
327
+ if (sameFile !== undefined) {
328
+ return buildEntry(db, typeName, sameFile.file_path, sameFile.line, signatureLimit);
329
+ }
330
+ // 2. Named imports — walk each internal import for the file and check if the
331
+ // type is in the imported symbols list.
332
+ const imports = await db
333
+ .selectFrom('imports as i')
334
+ .innerJoin('files as f', 'f.id', 'i.file_id')
335
+ .select(['i.symbols', 'i.resolved_path'])
336
+ .where('f.path', '=', containingFilePath)
337
+ .where('i.is_external', '=', 0)
338
+ .execute();
339
+ for (const imp of imports) {
340
+ if (imp.resolved_path === null)
341
+ continue;
342
+ const importedSymbols = JSON.parse(imp.symbols);
343
+ if (!importedSymbols.includes(typeName))
344
+ continue;
345
+ // The resolved_path may lack an extension — use a prefix range to match
346
+ // `resolved/path.ts`, `resolved/path/index.ts`, etc.
347
+ const importedRow = await db
348
+ .selectFrom('symbols as s')
349
+ .innerJoin('files as f', 'f.id', 's.file_id')
350
+ .select(['s.name', 'f.path as file_path', 's.line'])
351
+ .where('s.name', '=', typeName)
352
+ .where('f.path', '>=', imp.resolved_path)
353
+ .where('f.path', '<', pathPrefixUpperBound(imp.resolved_path))
354
+ .executeTakeFirst();
355
+ if (importedRow !== undefined) {
356
+ return buildEntry(db, typeName, importedRow.file_path, importedRow.line, signatureLimit);
357
+ }
358
+ }
359
+ // 3. Global fallback — any exported interface, type alias, or class.
360
+ const globalRow = await db
361
+ .selectFrom('symbols as s')
362
+ .innerJoin('files as f', 'f.id', 's.file_id')
363
+ .select(['s.name', 'f.path as file_path', 's.line'])
364
+ .where('s.name', '=', typeName)
365
+ .where('s.kind', 'in', ['interface', 'type', 'class'])
366
+ .where('s.is_exported', '=', 1)
367
+ .orderBy('f.path', 'asc')
368
+ .executeTakeFirst();
369
+ if (globalRow !== undefined) {
370
+ return buildEntry(db, typeName, globalRow.file_path, globalRow.line, signatureLimit);
371
+ }
372
+ return null;
373
+ }
374
+ /**
375
+ * Fetch chunk content from `chunk_fts` and build a `TypeContextEntry`.
376
+ *
377
+ * FTS5 UNINDEXED columns support equality predicates in queries that do not
378
+ * use MATCH — this is a plain predicate scan, not a full-text search.
379
+ */
380
+ async function buildEntry(db, name, filePath, line, signatureLimit) {
381
+ const rows = await db
382
+ .selectFrom('chunk_fts')
383
+ .select('content')
384
+ .where('symbol_name', '=', name)
385
+ .where('file_path', '=', filePath)
386
+ .limit(1)
387
+ .execute();
388
+ const raw = rows[0]?.content ?? name;
389
+ const truncated = raw.length > signatureLimit;
390
+ return {
391
+ name,
392
+ signature: truncated ? raw.slice(0, signatureLimit) + '…' : raw,
393
+ file_path: filePath,
394
+ line,
395
+ truncated,
396
+ };
397
+ }
398
+ /** Return all exported top-level symbols, optionally within a directory prefix. */
399
+ export async function queryProjectSkeleton(db, directoryPrefix) {
400
+ let q = db
401
+ .selectFrom('symbols as s')
402
+ .innerJoin('files as f', 'f.id', 's.file_id')
403
+ .select(['f.path as file_path', 's.name as symbol_name'])
404
+ .where('s.is_exported', '=', 1)
405
+ .where('s.kind', '!=', 'method'); // methods surface via class_shell
406
+ if (directoryPrefix !== undefined) {
407
+ // The prefix is caller-supplied, so LIKE here also meant a `_` or `%` in a
408
+ // directory name silently widened the filter.
409
+ q = q
410
+ .where('f.path', '>=', directoryPrefix)
411
+ .where('f.path', '<', pathPrefixUpperBound(directoryPrefix));
412
+ }
413
+ return q.orderBy('f.path', 'asc').orderBy('s.line', 'asc').execute();
414
+ }
415
+ //# sourceMappingURL=queries.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queries.js","sourceRoot":"","sources":["../../src/graph/queries.ts"],"names":[],"mappings":"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"}