code-auditor-mcp 3.4.14 → 3.4.15

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 (93) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/CHANGELOG.md +68 -0
  3. package/dist/analyzers/applicability.d.ts +41 -0
  4. package/dist/analyzers/applicability.d.ts.map +1 -0
  5. package/dist/analyzers/applicability.js +96 -0
  6. package/dist/analyzers/applicability.js.map +1 -0
  7. package/dist/analyzers/ruleRegistry.js +1 -1
  8. package/dist/analyzers/ruleRegistry.js.map +1 -1
  9. package/dist/analyzers/universal/UniversalSchemaAnalyzer.d.ts +2 -2
  10. package/dist/analyzers/universal/UniversalSchemaAnalyzer.d.ts.map +1 -1
  11. package/dist/analyzers/universal/UniversalSchemaAnalyzer.js +2 -2
  12. package/dist/analyzers/universal/UniversalSchemaAnalyzer.js.map +1 -1
  13. package/dist/analyzers/universal/UniversalStylesAnalyzer.d.ts.map +1 -1
  14. package/dist/analyzers/universal/UniversalStylesAnalyzer.js +9 -1
  15. package/dist/analyzers/universal/UniversalStylesAnalyzer.js.map +1 -1
  16. package/dist/analyzers/universal/schema/migrations.d.ts +11 -0
  17. package/dist/analyzers/universal/schema/migrations.d.ts.map +1 -1
  18. package/dist/analyzers/universal/schema/migrations.js +127 -4
  19. package/dist/analyzers/universal/schema/migrations.js.map +1 -1
  20. package/dist/auditRunner.d.ts.map +1 -1
  21. package/dist/auditRunner.js +62 -23
  22. package/dist/auditRunner.js.map +1 -1
  23. package/dist/cli.js +393 -1
  24. package/dist/cli.js.map +1 -1
  25. package/dist/codeIndexDB.d.ts +40 -1
  26. package/dist/codeIndexDB.d.ts.map +1 -1
  27. package/dist/codeIndexDB.js +222 -50
  28. package/dist/codeIndexDB.js.map +1 -1
  29. package/dist/config/defaults.js +1 -1
  30. package/dist/config/defaults.js.map +1 -1
  31. package/dist/config/pathProfiles.d.ts +7 -0
  32. package/dist/config/pathProfiles.d.ts.map +1 -1
  33. package/dist/config/pathProfiles.js +7 -1
  34. package/dist/config/pathProfiles.js.map +1 -1
  35. package/dist/languages/typescript/TreeSitterTypeScriptAdapter.d.ts.map +1 -1
  36. package/dist/languages/typescript/TreeSitterTypeScriptAdapter.js +1 -1
  37. package/dist/languages/typescript/TreeSitterTypeScriptAdapter.js.map +1 -1
  38. package/dist/ledger.d.ts +163 -2
  39. package/dist/ledger.d.ts.map +1 -1
  40. package/dist/ledger.js +528 -7
  41. package/dist/ledger.js.map +1 -1
  42. package/dist/mcp.js +3 -3
  43. package/dist/mcp.js.map +1 -1
  44. package/dist/mcpAuditJobs.d.ts +24 -2
  45. package/dist/mcpAuditJobs.d.ts.map +1 -1
  46. package/dist/mcpAuditJobs.js +364 -58
  47. package/dist/mcpAuditJobs.js.map +1 -1
  48. package/dist/pipeline.d.ts +9 -2
  49. package/dist/pipeline.d.ts.map +1 -1
  50. package/dist/pipeline.js +165 -18
  51. package/dist/pipeline.js.map +1 -1
  52. package/dist/pipelineAdapters.d.ts.map +1 -1
  53. package/dist/pipelineAdapters.js +45 -10
  54. package/dist/pipelineAdapters.js.map +1 -1
  55. package/dist/scripts/benchmarkWorkers.js +1 -1
  56. package/dist/scripts/benchmarkWorkers.js.map +1 -1
  57. package/dist/services/auditJobService.d.ts +22 -5
  58. package/dist/services/auditJobService.d.ts.map +1 -1
  59. package/dist/services/auditJobService.js +67 -26
  60. package/dist/services/auditJobService.js.map +1 -1
  61. package/dist/services/fileAccounting.d.ts +83 -0
  62. package/dist/services/fileAccounting.d.ts.map +1 -0
  63. package/dist/services/fileAccounting.js +0 -0
  64. package/dist/services/fileAccounting.js.map +1 -0
  65. package/dist/styles/styleExtractor.d.ts +2 -2
  66. package/dist/styles/styleExtractor.d.ts.map +1 -1
  67. package/dist/styles/styleExtractor.js +83 -11
  68. package/dist/styles/styleExtractor.js.map +1 -1
  69. package/dist/styles/styleIndexer.d.ts +8 -0
  70. package/dist/styles/styleIndexer.d.ts.map +1 -1
  71. package/dist/styles/styleIndexer.js +103 -15
  72. package/dist/styles/styleIndexer.js.map +1 -1
  73. package/dist/styles/tailwindUtilityExpander.d.ts +3 -0
  74. package/dist/styles/tailwindUtilityExpander.d.ts.map +1 -1
  75. package/dist/styles/tailwindUtilityExpander.js +35 -1
  76. package/dist/styles/tailwindUtilityExpander.js.map +1 -1
  77. package/dist/styles/types.d.ts +11 -0
  78. package/dist/styles/types.d.ts.map +1 -1
  79. package/dist/types.d.ts +130 -0
  80. package/dist/types.d.ts.map +1 -1
  81. package/dist/types.js.map +1 -1
  82. package/dist/utils/fileDiscovery.d.ts +62 -0
  83. package/dist/utils/fileDiscovery.d.ts.map +1 -1
  84. package/dist/utils/fileDiscovery.js +184 -29
  85. package/dist/utils/fileDiscovery.js.map +1 -1
  86. package/dist/workers/auditJobRunner.d.ts +2 -0
  87. package/dist/workers/auditJobRunner.d.ts.map +1 -0
  88. package/dist/workers/auditJobRunner.js +37 -0
  89. package/dist/workers/auditJobRunner.js.map +1 -0
  90. package/dist/workers/auditWorker.js +26 -0
  91. package/dist/workers/auditWorker.js.map +1 -1
  92. package/package.json +2 -2
  93. package/plugin/.claude-plugin/plugin.json +1 -1
@@ -13,6 +13,7 @@ import { readFileSync } from 'node:fs';
13
13
  import { LanguageRegistry } from '../languages/LanguageRegistry.js';
14
14
  import { extractDeclarations, extractTokens } from './styleExtractor.js';
15
15
  import { loadTailwindConfig, tokensToStyleTokens } from './tailwindConfigLoader.js';
16
+ import { findFiles, UNREAD_STYLE_EXTENSIONS, STYLE_MARKUP_EXTENSIONS, KNOWN_SOURCE_EXTENSIONS, TYPESCRIPT_EXTENSIONS, JAVASCRIPT_EXTENSIONS, } from '../utils/fileDiscovery.js';
16
17
  // ---------------------------------------------------------------------------
17
18
  // Public API
18
19
  // ---------------------------------------------------------------------------
@@ -25,8 +26,12 @@ import { loadTailwindConfig, tokensToStyleTokens } from './tailwindConfigLoader.
25
26
  * - For full runs: also removes stale entries for files no longer on disk.
26
27
  */
27
28
  export async function syncStyleIndex(rawDb, files, projectRoot, options = {}) {
28
- const result = { changed: 0, skipped: 0, removed: 0, errors: 0 };
29
+ const result = { changed: 0, skipped: 0, removed: 0, errors: 0, consumedFiles: [] };
29
30
  const scoped = options.scoped ?? false;
31
+ // Unread stylesheet sources (Spec 42 R2). When any exist, the
32
+ // styles/undefined-class detector reports notApplicable rather than
33
+ // asserting a class is undefined (it may live in the unread source).
34
+ const unreadSources = [];
30
35
  // Load Tailwind config once for the project
31
36
  const tailwindResult = loadTailwindConfig(projectRoot);
32
37
  const tailwindTokens = tailwindResult.tokens;
@@ -44,8 +49,23 @@ export async function syncStyleIndex(rawDb, files, projectRoot, options = {}) {
44
49
  // .scss is parsed by tree-sitter-scss which extends the CSS grammar.
45
50
  if (filePath.endsWith('.css') || filePath.endsWith('.scss'))
46
51
  continue;
52
+ let content;
53
+ try {
54
+ content = readFileSync(filePath, 'utf-8');
55
+ // Reading the file is itself consumption (Spec 44) — record it regardless
56
+ // of whether extraction later finds declarations. A finding-free file the
57
+ // indexer read is still "partially analyzed", not "not analyzed".
58
+ result.consumedFiles.push(filePath);
59
+ }
60
+ catch (err) {
61
+ result.errors++;
62
+ unreadSources.push({
63
+ filePath,
64
+ reason: `read failed: ${err instanceof Error ? err.message : String(err)}`,
65
+ });
66
+ continue;
67
+ }
47
68
  try {
48
- const content = readFileSync(filePath, 'utf-8');
49
69
  const contentHash = computeFileHash(content);
50
70
  // Check if file is already indexed and unchanged
51
71
  if (!scoped) {
@@ -58,7 +78,7 @@ export async function syncStyleIndex(rawDb, files, projectRoot, options = {}) {
58
78
  // Delete old entries for this file (both scoped and full)
59
79
  deleteFileEntries(rawDb, filePath);
60
80
  // Extract declarations
61
- const declarations = await extractForFile(filePath, content, registry, tailwindTokens);
81
+ const declarations = await extractForFile(filePath, content, registry, tailwindTokens, unreadSources);
62
82
  // Insert declarations
63
83
  if (declarations.length > 0) {
64
84
  insertDeclarations(rawDb, filePath, declarations, contentHash);
@@ -79,6 +99,15 @@ export async function syncStyleIndex(rawDb, files, projectRoot, options = {}) {
79
99
  result.errors++;
80
100
  }
81
101
  }
102
+ // Full runs: also record stylesheet dialects the indexer cannot read
103
+ // (Sass indented syntax, Less, Stylus) — a class may be defined there.
104
+ if (!scoped) {
105
+ unreadSources.push(...(await findUnreadStyleFiles(projectRoot)));
106
+ }
107
+ // Persist unread sources. Full runs rebuild the table wholesale; scoped runs
108
+ // only upsert the read-failures they encountered (leaving prior full-run rows
109
+ // for the rest of the project intact).
110
+ persistUnreadSources(rawDb, unreadSources, scoped);
82
111
  // For full runs: remove stale entries for files not in the current set
83
112
  if (!scoped) {
84
113
  result.removed = removeStaleEntries(rawDb, files);
@@ -100,14 +129,14 @@ export async function syncStyleIndex(rawDb, files, projectRoot, options = {}) {
100
129
  * Extract declarations for a single file, dispatching to the appropriate
101
130
  * extractor based on file extension.
102
131
  */
103
- async function extractForFile(filePath, sourceCode, registry, tailwindTokens) {
132
+ async function extractForFile(filePath, sourceCode, registry, tailwindTokens, unreadSources) {
104
133
  const ext = filePath.includes('.') ? filePath.slice(filePath.lastIndexOf('.')) : '';
105
134
  // CSS/SCSS can be extracted without an adapter
106
135
  if (ext === '.css' || ext === '.scss') {
107
- return extractDeclarations(filePath, null, sourceCode, undefined, tailwindTokens);
136
+ return extractDeclarations(filePath, null, sourceCode, undefined, tailwindTokens, unreadSources);
108
137
  }
109
- // TS/JS/TSX/JSX need a language adapter
110
- if (['.ts', '.tsx', '.js', '.jsx'].includes(ext)) {
138
+ // TS/JS/TSX/JSX need a language adapter (derived from the discovery constants)
139
+ if ([...TYPESCRIPT_EXTENSIONS, ...JAVASCRIPT_EXTENSIONS].includes(ext)) {
111
140
  let adapter = null;
112
141
  try {
113
142
  if (registry) {
@@ -121,7 +150,7 @@ async function extractForFile(filePath, sourceCode, registry, tailwindTokens) {
121
150
  try {
122
151
  const ast = await adapter.parse(filePath, sourceCode);
123
152
  try {
124
- return extractDeclarations(filePath, adapter, sourceCode, ast, tailwindTokens);
153
+ return extractDeclarations(filePath, adapter, sourceCode, ast, tailwindTokens, unreadSources);
125
154
  }
126
155
  finally {
127
156
  // Free the WASM tree. The style index parses every TS/JS file to pull
@@ -136,11 +165,21 @@ async function extractForFile(filePath, sourceCode, registry, tailwindTokens) {
136
165
  }
137
166
  }
138
167
  // Try extraction without AST (regex-only for class attributes)
139
- return extractDeclarations(filePath, null, sourceCode, undefined, tailwindTokens);
168
+ return extractDeclarations(filePath, null, sourceCode, undefined, tailwindTokens, unreadSources);
140
169
  }
141
- // HTML/Vue/Svelte — extractor handles these with regex
142
- if (['.html', '.vue', '.svelte'].includes(ext)) {
143
- return extractDeclarations(filePath, null, sourceCode, undefined, tailwindTokens);
170
+ // Markup/component files — extractor handles these with regex. Derived from
171
+ // the shared STYLE_MARKUP_EXTENSIONS so it can't drift from extractDeclarations
172
+ // (the `.astro` silent-drop bug).
173
+ if (STYLE_MARKUP_EXTENSIONS.includes(ext)) {
174
+ return extractDeclarations(filePath, null, sourceCode, undefined, tailwindTokens, unreadSources);
175
+ }
176
+ // Not a style-bearing extension. Known source (`.css`/`.scss` — handled by the
177
+ // AST pipeline — plus JSON/Go/SQL/TOML/Prisma owned by other analyzers) is
178
+ // skipped silently; any *other* extension is unhandled — record it so
179
+ // undefined-class surfaces the gap instead of silently dropping the file type
180
+ // (Spec 42 R2 backstop).
181
+ if (ext && !KNOWN_SOURCE_EXTENSIONS.includes(ext)) {
182
+ unreadSources?.push({ filePath, reason: `unsupported source extension: ${ext}` });
144
183
  }
145
184
  return [];
146
185
  }
@@ -156,13 +195,15 @@ export function extractClassUsage(filePath, sourceCode) {
156
195
  // `class`/`className` substrings inside string literals (Bug #3 — e.g. an
157
196
  // audit-report.json embedding a raw source snippet with `error_class =
158
197
  // 'zombie-capped'`). Those must never reach the class-usage table, so gate
159
- // extraction to the extensions that actually carry class attributes.
160
- const CLASS_USAGE_EXTENSIONS = ['.tsx', '.jsx', '.ts', '.js', '.html', '.vue', '.svelte'];
198
+ // extraction to the extensions that actually carry class attributes. Derived
199
+ // from the shared discovery constants so this list can't drift from the
200
+ // declaration extractor (the `.astro` silent-drop bug).
201
+ const CLASS_USAGE_EXTENSIONS = [...TYPESCRIPT_EXTENSIONS, ...JAVASCRIPT_EXTENSIONS, ...STYLE_MARKUP_EXTENSIONS];
161
202
  if (!CLASS_USAGE_EXTENSIONS.includes(ext))
162
203
  return [];
163
204
  // Determine mechanism by file type
164
205
  let mechanism = 'class';
165
- if (['.tsx', '.jsx', '.ts', '.js'].includes(ext)) {
206
+ if ([...TYPESCRIPT_EXTENSIONS, ...JAVASCRIPT_EXTENSIONS].includes(ext)) {
166
207
  mechanism = 'className';
167
208
  }
168
209
  // Match className="..." or class="..." as an attribute. The leading \b word
@@ -201,6 +242,52 @@ export function extractClassUsage(filePath, sourceCode) {
201
242
  return usage;
202
243
  }
203
244
  // ---------------------------------------------------------------------------
245
+ // Unread stylesheet sources (Spec 42 R2)
246
+ // ---------------------------------------------------------------------------
247
+ /**
248
+ * Discover stylesheet files whose dialect the indexer cannot read (Sass indented
249
+ * syntax, Less, Stylus). Each is recorded as an unread source so that
250
+ * `styles/undefined-class` reports `notApplicable` instead of asserting a class
251
+ * is undefined when it could be defined in one of these files.
252
+ */
253
+ async function findUnreadStyleFiles(projectRoot) {
254
+ const files = await findFiles(projectRoot, { extensions: UNREAD_STYLE_EXTENSIONS });
255
+ return files.map((filePath) => {
256
+ const ext = filePath.slice(filePath.lastIndexOf('.') + 1);
257
+ return { filePath, reason: `unsupported style dialect: ${ext}` };
258
+ });
259
+ }
260
+ /**
261
+ * Persist unread stylesheet sources.
262
+ *
263
+ * Full runs rebuild the table wholesale so dialects/read-failures that no longer
264
+ * exist are dropped. Scoped runs only upsert the read-failures they encountered,
265
+ * leaving prior full-run rows for the rest of the project intact.
266
+ */
267
+ function persistUnreadSources(rawDb, unreadSources, scoped) {
268
+ if (scoped) {
269
+ if (unreadSources.length === 0)
270
+ return;
271
+ const upsert = rawDb.prepare(`INSERT INTO style_unread_sources (file_path, reason) VALUES (@filePath, @reason)
272
+ ON CONFLICT(file_path) DO UPDATE SET reason = excluded.reason`);
273
+ const txn = rawDb.transaction(() => {
274
+ for (const s of unreadSources)
275
+ upsert.run({ filePath: s.filePath, reason: s.reason });
276
+ });
277
+ txn();
278
+ return;
279
+ }
280
+ rawDb.prepare('DELETE FROM style_unread_sources').run();
281
+ if (unreadSources.length === 0)
282
+ return;
283
+ const insert = rawDb.prepare('INSERT INTO style_unread_sources (file_path, reason) VALUES (@filePath, @reason)');
284
+ const txn = rawDb.transaction(() => {
285
+ for (const s of unreadSources)
286
+ insert.run({ filePath: s.filePath, reason: s.reason });
287
+ });
288
+ txn();
289
+ }
290
+ // ---------------------------------------------------------------------------
204
291
  // Database helpers
205
292
  // ---------------------------------------------------------------------------
206
293
  function computeFileHash(content) {
@@ -214,6 +301,7 @@ function deleteFileEntries(rawDb, filePath) {
214
301
  rawDb.prepare('DELETE FROM style_declarations WHERE file_path = ?').run(filePath);
215
302
  rawDb.prepare('DELETE FROM style_class_usage WHERE file_path = ?').run(filePath);
216
303
  rawDb.prepare('DELETE FROM style_tokens WHERE file_path = ?').run(filePath);
304
+ rawDb.prepare('DELETE FROM style_unread_sources WHERE file_path = ?').run(filePath);
217
305
  }
218
306
  function removeStaleEntries(rawDb, currentFiles) {
219
307
  const filesSet = new Set(currentFiles);
@@ -1 +1 @@
1
- {"version":3,"file":"styleIndexer.js","sourceRoot":"","sources":["../../src/styles/styleIndexer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"styleIndexer.js","sourceRoot":"","sources":["../../src/styles/styleIndexer.ts"],"names":[],"mappings":"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"}
@@ -67,6 +67,7 @@ export declare class TailwindUtilityExpander {
67
67
  private _configFailed;
68
68
  private _configFailureReason;
69
69
  private _hasTailwindConfig;
70
+ private _tailwindConfigPath;
70
71
  /**
71
72
  * Initialize the expander with optional project config.
72
73
  * Call once per audit. Async because it may compile-probe Tailwind.
@@ -86,6 +87,8 @@ export declare class TailwindUtilityExpander {
86
87
  get configFailureReason(): string | null;
87
88
  /** Whether tailwindcss was found on disk (even if the probe failed to load it). */
88
89
  get hasTailwindConfig(): boolean;
90
+ /** Resolved path to the project's Tailwind config (v3 JS or v4 theme CSS), if any. */
91
+ get tailwindConfigPath(): string | null;
89
92
  /** Whether the probe is ready (initialized successfully). */
90
93
  get probeReady(): boolean;
91
94
  /** Human-readable source of validation data. */
@@ -1 +1 @@
1
- {"version":3,"file":"tailwindUtilityExpander.d.ts","sourceRoot":"","sources":["../../src/styles/tailwindUtilityExpander.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAkEH;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,2CAA2C;IAC3C,KAAK,EAAE,OAAO,CAAC;IACf;;;;;OAKG;IACH,IAAI,EAAE,OAAO,GAAG,iBAAiB,GAAG,MAAM,CAAC;CAC5C;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,wEAAwE;IACxE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gEAAgE;IAChE,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;uDACmD;IACnD,aAAa,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC5B;;;qEAGiE;IACjE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAMD;;;;;;;;;;;;;;GAcG;AACH,qBAAa,uBAAuB;IAClC,OAAO,CAAC,KAAK,CAA8B;IAC3C,OAAO,CAAC,aAAa,CAA4B;IACjD,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,oBAAoB,CAAuB;IACnD,OAAO,CAAC,kBAAkB,CAAS;IAEnC;;;OAGG;IACG,IAAI,CAAC,MAAM,GAAE,sBAA2B,GAAG,OAAO,CAAC,IAAI,CAAC,CAuC7D;IAED;;;;;;OAMG;IACH,OAAO,CAAC,kBAAkB;IAiB1B,yCAAyC;IACzC,IAAI,YAAY,IAAI,OAAO,CAE1B;IAED,yCAAyC;IACzC,IAAI,mBAAmB,IAAI,MAAM,GAAG,IAAI,CAEvC;IAED,mFAAmF;IACnF,IAAI,iBAAiB,IAAI,OAAO,CAE/B;IAED,6DAA6D;IAC7D,IAAI,UAAU,IAAI,OAAO,CAExB;IAED,gDAAgD;IAChD,IAAI,WAAW,IAAI,MAAM,GAAG,IAAI,CAE/B;IAED;;;;;;;;;OASG;IACG,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAM9D;IAED;;;;OAIG;IACH,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,sBAAsB,CAyCjD;IAED;;;;;;;;OAQG;IACH,OAAO,CAAC,qBAAqB;IAI7B;;;;;;OAMG;IACH,OAAO,CAAC,oBAAoB;IA0B5B;;;;;OAKG;IACH,OAAO,CAAC,oBAAoB;IAe5B;;;;;;;;;;OAUG;IACH,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAM5C;IAED;;OAEG;IACH,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAE3C;IAED,wCAAwC;IACxC,KAAK,IAAI,IAAI,CAMZ;CACF;AAQD,wBAAgB,mBAAmB,IAAI,uBAAuB,CAK7D;AAED,wBAAgB,qBAAqB,IAAI,IAAI,CAE5C"}
1
+ {"version":3,"file":"tailwindUtilityExpander.d.ts","sourceRoot":"","sources":["../../src/styles/tailwindUtilityExpander.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAmEH;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,2CAA2C;IAC3C,KAAK,EAAE,OAAO,CAAC;IACf;;;;;OAKG;IACH,IAAI,EAAE,OAAO,GAAG,iBAAiB,GAAG,MAAM,CAAC;CAC5C;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,wEAAwE;IACxE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gEAAgE;IAChE,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;uDACmD;IACnD,aAAa,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC5B;;;qEAGiE;IACjE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAMD;;;;;;;;;;;;;;GAcG;AACH,qBAAa,uBAAuB;IAClC,OAAO,CAAC,KAAK,CAA8B;IAC3C,OAAO,CAAC,aAAa,CAA4B;IACjD,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,oBAAoB,CAAuB;IACnD,OAAO,CAAC,kBAAkB,CAAS;IACnC,OAAO,CAAC,mBAAmB,CAAuB;IAElD;;;OAGG;IACG,IAAI,CAAC,MAAM,GAAE,sBAA2B,GAAG,OAAO,CAAC,IAAI,CAAC,CA8C7D;IAED;;;;;;OAMG;IACH,OAAO,CAAC,kBAAkB;IAuB1B,yCAAyC;IACzC,IAAI,YAAY,IAAI,OAAO,CAE1B;IAED,yCAAyC;IACzC,IAAI,mBAAmB,IAAI,MAAM,GAAG,IAAI,CAEvC;IAED,mFAAmF;IACnF,IAAI,iBAAiB,IAAI,OAAO,CAE/B;IAED,sFAAsF;IACtF,IAAI,kBAAkB,IAAI,MAAM,GAAG,IAAI,CAEtC;IAED,6DAA6D;IAC7D,IAAI,UAAU,IAAI,OAAO,CAExB;IAED,gDAAgD;IAChD,IAAI,WAAW,IAAI,MAAM,GAAG,IAAI,CAE/B;IAED;;;;;;;;;OASG;IACG,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAM9D;IAED;;;;OAIG;IACH,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,sBAAsB,CAyCjD;IAED;;;;;;;;OAQG;IACH,OAAO,CAAC,qBAAqB;IAI7B;;;;;;OAMG;IACH,OAAO,CAAC,oBAAoB;IA0B5B;;;;;OAKG;IACH,OAAO,CAAC,oBAAoB;IAe5B;;;;;;;;;;OAUG;IACH,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAM5C;IAED;;OAEG;IACH,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAE3C;IAED,wCAAwC;IACxC,KAAK,IAAI,IAAI,CAOZ;CACF;AAuBD,wBAAgB,mBAAmB,IAAI,uBAAuB,CAK7D;AAED,wBAAgB,qBAAqB,IAAI,IAAI,CAE5C"}
@@ -15,7 +15,8 @@
15
15
  * compile fails), `configFailed` is true. The caller MUST emit a visible
16
16
  * warning and disable the undefined-class detector.
17
17
  */
18
- import { readFileSync } from 'node:fs';
18
+ import { existsSync, readFileSync } from 'node:fs';
19
+ import { join } from 'node:path';
19
20
  import { TailwindProbe } from './tailwindProbe.js';
20
21
  import { findThemeCssFiles } from './tailwindConfigLoader.js';
21
22
  // ---------------------------------------------------------------------------
@@ -91,6 +92,7 @@ export class TailwindUtilityExpander {
91
92
  _configFailed = false;
92
93
  _configFailureReason = null;
93
94
  _hasTailwindConfig = false;
95
+ _tailwindConfigPath = null;
94
96
  /**
95
97
  * Initialize the expander with optional project config.
96
98
  * Call once per audit. Async because it may compile-probe Tailwind.
@@ -122,6 +124,12 @@ export class TailwindUtilityExpander {
122
124
  }
123
125
  const result = await this.probe.init(config.projectRoot);
124
126
  this._hasTailwindConfig = this._hasTailwindConfig || result.tailwindFound;
127
+ // For a v3 project (tailwind.config.*, no @theme CSS) the theme-file
128
+ // anchor above never fired; fall back to the v3 config file so the
129
+ // fail-open notice still gets a real file+line.
130
+ if (!this._tailwindConfigPath && result.tailwindFound) {
131
+ this._tailwindConfigPath = findV3ConfigPath(config.projectRoot);
132
+ }
125
133
  if (!result.ok) {
126
134
  this._configFailed = true;
127
135
  this._configFailureReason = result.error ?? 'Unknown probe init failure';
@@ -140,6 +148,12 @@ export class TailwindUtilityExpander {
140
148
  const themeFiles = findThemeCssFiles(projectRoot);
141
149
  if (themeFiles.length === 0)
142
150
  return null;
151
+ // Remember the first theme CSS file as the anchor for the fail-open
152
+ // notice: when the compile-probe fails, the `undefined-class-disabled`
153
+ // violation must carry a real file+line so the hook-contract guard does
154
+ // not strip it (Spec 39 coverage-vs-violations drift).
155
+ if (!this._tailwindConfigPath)
156
+ this._tailwindConfigPath = themeFiles[0];
143
157
  const parts = [];
144
158
  for (const cssPath of themeFiles) {
145
159
  try {
@@ -164,6 +178,10 @@ export class TailwindUtilityExpander {
164
178
  get hasTailwindConfig() {
165
179
  return this._hasTailwindConfig;
166
180
  }
181
+ /** Resolved path to the project's Tailwind config (v3 JS or v4 theme CSS), if any. */
182
+ get tailwindConfigPath() {
183
+ return this._tailwindConfigPath;
184
+ }
167
185
  /** Whether the probe is ready (initialized successfully). */
168
186
  get probeReady() {
169
187
  return this.probe?.ready ?? false;
@@ -322,7 +340,23 @@ export class TailwindUtilityExpander {
322
340
  this._configFailed = false;
323
341
  this._configFailureReason = null;
324
342
  this._hasTailwindConfig = false;
343
+ this._tailwindConfigPath = null;
344
+ }
345
+ }
346
+ /** Locate a Tailwind v3 JS/TS config file, if present. */
347
+ function findV3ConfigPath(projectRoot) {
348
+ const candidates = [
349
+ 'tailwind.config.js',
350
+ 'tailwind.config.ts',
351
+ 'tailwind.config.cjs',
352
+ 'tailwind.config.mjs',
353
+ ];
354
+ for (const candidate of candidates) {
355
+ const configPath = join(projectRoot, candidate);
356
+ if (existsSync(configPath))
357
+ return configPath;
325
358
  }
359
+ return null;
326
360
  }
327
361
  // ---------------------------------------------------------------------------
328
362
  // Singleton
@@ -1 +1 @@
1
- {"version":3,"file":"tailwindUtilityExpander.js","sourceRoot":"","sources":["../../src/styles/tailwindUtilityExpander.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tailwindUtilityExpander.js","sourceRoot":"","sources":["../../src/styles/tailwindUtilityExpander.ts"],"names":[],"mappings":"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"}
@@ -89,4 +89,15 @@ export interface StyleClassUsage {
89
89
  /** True when the class value is dynamic (template literal, clsx call) and can't be fully resolved. */
90
90
  unresolvable: boolean;
91
91
  }
92
+ /**
93
+ * A stylesheet source the indexer could not read. When any exist, the
94
+ * `styles/undefined-class` detector reports `notApplicable` rather than
95
+ * asserting a class is undefined (the class may live in the unread source).
96
+ */
97
+ export interface UnreadStyleSource {
98
+ /** File path (project-relative or absolute, as recorded). */
99
+ filePath: string;
100
+ /** Why the stylesheet could not be read (e.g. "read failed: <msg>", "unsupported dialect: sass"). */
101
+ reason: string;
102
+ }
92
103
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/styles/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH;;;;;;;GAOG;AACH,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,MAAM,GAAG,UAAU,GAAG,QAAQ,GAAG,WAAW,GAAG,cAAc,CAAC;AAMnG,oEAAoE;AACpE,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,OAAO,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf;AAED,2EAA2E;AAC3E,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED,gFAAgF;AAChF,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,eAAe,GAAG,eAAe,GAAG,gBAAgB,GAAG,iBAAiB,CAAC;AAMrF;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,yEAAyE;IACzE,QAAQ,EAAE,MAAM,CAAC;IAEjB,iEAAiE;IACjE,QAAQ,EAAE,MAAM,CAAC;IAEjB,8EAA8E;IAC9E,eAAe,EAAE,eAAe,GAAG,IAAI,CAAC;IAExC,oDAAoD;IACpD,SAAS,EAAE,cAAc,CAAC;IAE1B,oCAAoC;IACpC,QAAQ,EAAE,MAAM,CAAC;IAEjB,6BAA6B;IAC7B,IAAI,EAAE,MAAM,CAAC;IAEb;;;;;OAKG;IACH,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAEvB;;;;OAIG;IACH,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAE9B;;;;;OAKG;IACH,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAMD,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,uFAAuF;IACvF,SAAS,EAAE,qBAAqB,GAAG,gBAAgB,CAAC;IACpD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAMD,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,uDAAuD;IACvD,SAAS,EAAE,WAAW,GAAG,OAAO,CAAC;IACjC,sGAAsG;IACtG,YAAY,EAAE,OAAO,CAAC;CACvB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/styles/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH;;;;;;;GAOG;AACH,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,MAAM,GAAG,UAAU,GAAG,QAAQ,GAAG,WAAW,GAAG,cAAc,CAAC;AAMnG,oEAAoE;AACpE,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,OAAO,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf;AAED,2EAA2E;AAC3E,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED,gFAAgF;AAChF,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,eAAe,GAAG,eAAe,GAAG,gBAAgB,GAAG,iBAAiB,CAAC;AAMrF;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,yEAAyE;IACzE,QAAQ,EAAE,MAAM,CAAC;IAEjB,iEAAiE;IACjE,QAAQ,EAAE,MAAM,CAAC;IAEjB,8EAA8E;IAC9E,eAAe,EAAE,eAAe,GAAG,IAAI,CAAC;IAExC,oDAAoD;IACpD,SAAS,EAAE,cAAc,CAAC;IAE1B,oCAAoC;IACpC,QAAQ,EAAE,MAAM,CAAC;IAEjB,6BAA6B;IAC7B,IAAI,EAAE,MAAM,CAAC;IAEb;;;;;OAKG;IACH,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAEvB;;;;OAIG;IACH,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAE9B;;;;;OAKG;IACH,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAMD,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,uFAAuF;IACvF,SAAS,EAAE,qBAAqB,GAAG,gBAAgB,CAAC;IACpD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAMD,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,uDAAuD;IACvD,SAAS,EAAE,WAAW,GAAG,OAAO,CAAC;IACjC,sGAAsG;IACtG,YAAY,EAAE,OAAO,CAAC;CACvB;AAMD;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,6DAA6D;IAC7D,QAAQ,EAAE,MAAM,CAAC;IACjB,qGAAqG;IACrG,MAAM,EAAE,MAAM,CAAC;CAChB"}
package/dist/types.d.ts CHANGED
@@ -2,6 +2,7 @@
2
2
  * Type definitions for the code auditor
3
3
  * Generic types that work with any TypeScript/JavaScript project
4
4
  */
5
+ import type { FileAccounting } from './services/fileAccounting.js';
5
6
  export type Severity = 'critical' | 'warning' | 'suggestion' | 'off';
6
7
  export type ReportFormat = 'html' | 'json' | 'csv' | 'sarif';
7
8
  export type RenderType = 'client' | 'server' | 'unknown';
@@ -248,6 +249,13 @@ export interface ReducerResult {
248
249
  * instead of reducer-ran. Used for runtime auto-disable (e.g. invariants
249
250
  * with no rules configured). */
250
251
  notRunReason?: string;
252
+ /**
253
+ * File paths this reducer read *directly* (not via the `readSource` closure,
254
+ * which the pipeline already instruments). The pipeline unions these into the
255
+ * run's consumed set for Spec 44 reclassification. Reducers that read through
256
+ * `context.readSource` do not need to report here.
257
+ */
258
+ consumedFiles?: string[];
251
259
  }
252
260
  /** Per-file visitor — runs on every AST in stage 2. */
253
261
  export interface Stage2Visitor {
@@ -334,6 +342,16 @@ export interface PipelineConfig {
334
342
  abortSignal?: AbortSignal;
335
343
  progressCallback?: (progress: AuditProgress) => void;
336
344
  isScoped?: boolean;
345
+ /** Spec 44: file accounting accumulator owned by the run. */
346
+ fileAccounting?: FileAccounting;
347
+ /**
348
+ * Spec 44: file paths consumed by layers that run *before* the pipeline
349
+ * (e.g. the style indexer, which readFileSyncs every discovered file). The
350
+ * pipeline unions these with the paths it observed `readSource` consume, then
351
+ * reclassifies any stage-2 `no adapter`/`no visitor matched` drop in the union
352
+ * as `partially analyzed`.
353
+ */
354
+ consumedFilePaths?: string[];
337
355
  }
338
356
  /**
339
357
  * Spec 31 — orphan files (no language adapter, e.g. `.sql` data dumps) larger
@@ -343,6 +361,67 @@ export interface PipelineConfig {
343
361
  * below this; only data dumps cross it.
344
362
  */
345
363
  export declare const MAX_ORPHAN_SOURCE_BYTES: number;
364
+ /**
365
+ * Spec 44 — File Accounting. The eight named reasons a file can be dropped from
366
+ * analysis. Every touched file lands in exactly one terminal state: `analyzed`
367
+ * (reached >= 1 stage-2 visitor), `partially analyzed` (dropped at stage 2 as
368
+ * `no adapter` / `no visitor matched` but still reached by a stage-3/4 layer),
369
+ * or `dropped` (with one of these reasons). Reason 8 (`unsupported dialect`) is
370
+ * a sub-layer: a style-level unread source that does NOT affect the file-level
371
+ * `analyzed + partiallyAnalyzed + dropped === touched` balance.
372
+ */
373
+ export type FileDropReason = 'directory pruned' | 'extension not known' | 'no adapter' | 'parse failed' | 'no visitor matched' | 'size threshold' | 'path profile excluded' | 'unsupported dialect';
374
+ /** One dropped file in the per-reason lists (everything except the filePath). */
375
+ export interface FileAccountingFileEntry {
376
+ filePath: string;
377
+ /** True when the file was dropped at stage 2 (`no adapter` / `no visitor
378
+ * matched`) yet still *consumed* (read) by a later layer — the style indexer
379
+ * readFileSyncs every discovered file, stage-3 reducers pull source via
380
+ * `readSource`. Such a file is "partially analyzed": reached by some layer,
381
+ * not others, regardless of whether it happened to produce findings. The drop
382
+ * reason still explains why it wasn't *fully* analyzed. */
383
+ partial?: boolean;
384
+ /** Reason 1: the matched directory name (e.g. `docs`) and the rule that
385
+ * pruned it (e.g. `DEFAULT_EXCLUDED_DIRS` or a user glob). */
386
+ directory?: string;
387
+ rule?: string;
388
+ /** Reason 2: the extension that was skipped (e.g. `.mdx`). */
389
+ ext?: string;
390
+ /** Reason 2 sub-classification: a known source extension that was not in the
391
+ * discovery set, vs. an entirely unknown extension. */
392
+ kind?: 'known-but-not-discovered' | 'unknown';
393
+ /** Reason 7: the matched path profile name. */
394
+ profile?: string;
395
+ /** Reason 8: why the embedded style dialect could not be read. */
396
+ reason?: string;
397
+ /** Reason 6: the size of the oversized file in bytes. */
398
+ bytes?: number;
399
+ }
400
+ /** Spec 44 — per-run file accounting summary (surfaced in metadata). */
401
+ export interface FileAccountingSummary {
402
+ /** Every candidate file the discovery walk enumerated plus every dropped file. */
403
+ touched: number;
404
+ /** Files whose tuple reached >= 1 stage-2 visitor. */
405
+ analyzed: number;
406
+ /** Files dropped at stage 2 (`no adapter` / `no visitor matched`) that still
407
+ * produced findings at a later layer — "partially analyzed". Included in
408
+ * `reasons` under their drop reason with `partial: true` on each file entry. */
409
+ partiallyAnalyzed: number;
410
+ /** Files dropped with one of the eight reasons (never reached any layer). */
411
+ dropped: number;
412
+ /** Aggregate infrastructure-directory prunes (not per-file — node_modules is
413
+ * not enumerable at scale). Sorted by count desc, then directory asc. */
414
+ infraPruned: Array<{
415
+ directory: string;
416
+ rule: string;
417
+ count: number;
418
+ }>;
419
+ /** Per-reason file lists (complete in the JSON report). */
420
+ reasons: Partial<Record<FileDropReason, {
421
+ count: number;
422
+ files: FileAccountingFileEntry[];
423
+ }>>;
424
+ }
346
425
  /** Pipeline output — merged results from all four stages. */
347
426
  export interface PipelineResult {
348
427
  analyzerResults: Record<string, AnalyzerResult>;
@@ -382,6 +461,14 @@ export interface PipelineResult {
382
461
  filePath: string;
383
462
  reason: string;
384
463
  }>;
464
+ /** Spec 43 R5 follow-up: extensions present on disk that discovery skipped
465
+ * (not in the discovery extension set). Informational — surfaces "what isn't
466
+ * being analyzed here" rather than silently dropping unlisted extensions at
467
+ * discovery. Sorted by count descending. */
468
+ skippedExtensions?: Array<{
469
+ ext: string;
470
+ count: number;
471
+ }>;
385
472
  /** Spec 33 Item 14: per-rule input presence snapshot consumed by
386
473
  * buildCoverageReport to promote zero-violation rules from `unassessed` to
387
474
  * `clean` (input present) or `notApplicable` (all inputs absent). */
@@ -393,6 +480,16 @@ export interface PipelineResult {
393
480
  totalMs: number;
394
481
  calls: number;
395
482
  }>;
483
+ /** Spec 39: per-rule derived applicability evaluated over the pipeline's
484
+ * computed inputs. Consumed by buildCoverageReport to report inapplicable
485
+ * rules as `notApplicable` with a reason. */
486
+ ruleApplicability?: Array<{
487
+ ruleId: string;
488
+ applicable: boolean;
489
+ reason?: string;
490
+ }>;
491
+ /** Spec 44: per-file accounting (analyzed vs. dropped, with reasons). */
492
+ fileAccounting?: FileAccountingSummary;
396
493
  };
397
494
  indexFacts?: IndexFactsEntry[];
398
495
  }
@@ -501,6 +598,13 @@ export interface AuditResult {
501
598
  filePath: string;
502
599
  reason: string;
503
600
  }>;
601
+ /** Spec 43 R5 follow-up: extensions present on disk that discovery skipped.
602
+ * Informational — surfaces "what isn't being analyzed here" rather than
603
+ * silently dropping unlisted extensions at discovery. */
604
+ skippedExtensions?: Array<{
605
+ ext: string;
606
+ count: number;
607
+ }>;
504
608
  /** Spec 33 Item 14: per-rule input presence snapshot consumed by
505
609
  * buildCoverageReport to promote zero-violation rules from `unassessed` to
506
610
  * `clean` (input present) or `notApplicable` (all inputs absent). */
@@ -522,6 +626,8 @@ export interface AuditResult {
522
626
  rule: string;
523
627
  }>;
524
628
  };
629
+ /** Spec 44: per-file accounting (analyzed vs. dropped, with reasons). */
630
+ fileAccounting?: FileAccountingSummary;
525
631
  };
526
632
  }
527
633
  /** Thrown when an in-process audit is stopped via AbortSignal (parent cancel or soft budget). */
@@ -773,6 +879,14 @@ export interface AuditRunnerOptions extends AuditOptions {
773
879
  scope?: AuditScope;
774
880
  /** Path profiles from config (Spec-20). */
775
881
  pathProfiles?: PathProfile[];
882
+ /**
883
+ * Write the run to the findings ledger on completion (Spec 41). Defaults to
884
+ * true. Forked shard workers set this false: the parent run is the single
885
+ * ledger writer — a worker writing the ledger concurrently contends with the
886
+ * parent's `syncFileIndex` (SQLITE_BUSY) and pollutes `listRuns` with stray
887
+ * `completed` rows.
888
+ */
889
+ writeToLedger?: boolean;
776
890
  }
777
891
  export interface FunctionMetadata {
778
892
  name: string;
@@ -786,6 +900,22 @@ export interface FunctionMetadata {
786
900
  context: string;
787
901
  metadata?: Record<string, any>;
788
902
  }
903
+ /**
904
+ * Minimal function index entry for the scoped-DRY gate path (Spec 43 R4).
905
+ *
906
+ * `UniversalDRYAnalyzer.buildFullFunctionHashmap` reads only `name`, `filePath`,
907
+ * `startLine ?? lineNumber`, and `body` from each indexed function. The narrow
908
+ * query selects exactly those columns, avoiding the wide JSON fields
909
+ * (`parameters`, `hooks`, `props`, `signature`, `metadata_json`, `content_hash`)
910
+ * and the per-row `JSON.parse` cost they incur on the hot `changed` path.
911
+ */
912
+ export interface DryFunctionIndexEntry {
913
+ name: string;
914
+ filePath: string;
915
+ lineNumber?: number;
916
+ startLine?: number;
917
+ body?: string;
918
+ }
789
919
  export interface EnhancedFunctionMetadata extends FunctionMetadata {
790
920
  signature: string;
791
921
  parameters: Array<{