code-auditor-mcp 3.4.13 → 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 (105) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/CHANGELOG.md +96 -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 +11 -11
  8. package/dist/analyzers/ruleRegistry.js.map +1 -1
  9. package/dist/analyzers/universal/UniversalSOLIDAnalyzer.js +8 -8
  10. package/dist/analyzers/universal/UniversalSOLIDAnalyzer.js.map +1 -1
  11. package/dist/analyzers/universal/UniversalSchemaAnalyzer.d.ts +2 -2
  12. package/dist/analyzers/universal/UniversalSchemaAnalyzer.d.ts.map +1 -1
  13. package/dist/analyzers/universal/UniversalSchemaAnalyzer.js +2 -2
  14. package/dist/analyzers/universal/UniversalSchemaAnalyzer.js.map +1 -1
  15. package/dist/analyzers/universal/UniversalStylesAnalyzer.d.ts.map +1 -1
  16. package/dist/analyzers/universal/UniversalStylesAnalyzer.js +9 -1
  17. package/dist/analyzers/universal/UniversalStylesAnalyzer.js.map +1 -1
  18. package/dist/analyzers/universal/schema/migrations.d.ts +11 -0
  19. package/dist/analyzers/universal/schema/migrations.d.ts.map +1 -1
  20. package/dist/analyzers/universal/schema/migrations.js +127 -4
  21. package/dist/analyzers/universal/schema/migrations.js.map +1 -1
  22. package/dist/auditRunner.d.ts.map +1 -1
  23. package/dist/auditRunner.js +62 -23
  24. package/dist/auditRunner.js.map +1 -1
  25. package/dist/cli.js +393 -1
  26. package/dist/cli.js.map +1 -1
  27. package/dist/codeIndexDB.d.ts +40 -1
  28. package/dist/codeIndexDB.d.ts.map +1 -1
  29. package/dist/codeIndexDB.js +222 -50
  30. package/dist/codeIndexDB.js.map +1 -1
  31. package/dist/config/defaults.js +2 -2
  32. package/dist/config/defaults.js.map +1 -1
  33. package/dist/config/pathProfiles.d.ts +7 -0
  34. package/dist/config/pathProfiles.d.ts.map +1 -1
  35. package/dist/config/pathProfiles.js +7 -1
  36. package/dist/config/pathProfiles.js.map +1 -1
  37. package/dist/languages/typescript/TreeSitterTypeScriptAdapter.d.ts.map +1 -1
  38. package/dist/languages/typescript/TreeSitterTypeScriptAdapter.js +1 -1
  39. package/dist/languages/typescript/TreeSitterTypeScriptAdapter.js.map +1 -1
  40. package/dist/ledger.d.ts +163 -2
  41. package/dist/ledger.d.ts.map +1 -1
  42. package/dist/ledger.js +528 -7
  43. package/dist/ledger.js.map +1 -1
  44. package/dist/mcp.js +3 -3
  45. package/dist/mcp.js.map +1 -1
  46. package/dist/mcpAuditJobs.d.ts +24 -2
  47. package/dist/mcpAuditJobs.d.ts.map +1 -1
  48. package/dist/mcpAuditJobs.js +364 -58
  49. package/dist/mcpAuditJobs.js.map +1 -1
  50. package/dist/pipeline.d.ts +9 -2
  51. package/dist/pipeline.d.ts.map +1 -1
  52. package/dist/pipeline.js +165 -18
  53. package/dist/pipeline.js.map +1 -1
  54. package/dist/pipelineAdapters.d.ts.map +1 -1
  55. package/dist/pipelineAdapters.js +45 -10
  56. package/dist/pipelineAdapters.js.map +1 -1
  57. package/dist/reporting/sarifReportGenerator.d.ts.map +1 -1
  58. package/dist/reporting/sarifReportGenerator.js +6 -1
  59. package/dist/reporting/sarifReportGenerator.js.map +1 -1
  60. package/dist/ruleAliases.d.ts.map +1 -1
  61. package/dist/ruleAliases.js +23 -0
  62. package/dist/ruleAliases.js.map +1 -1
  63. package/dist/scripts/benchmarkWorkers.js +1 -1
  64. package/dist/scripts/benchmarkWorkers.js.map +1 -1
  65. package/dist/services/auditJobService.d.ts +22 -5
  66. package/dist/services/auditJobService.d.ts.map +1 -1
  67. package/dist/services/auditJobService.js +67 -26
  68. package/dist/services/auditJobService.js.map +1 -1
  69. package/dist/services/fileAccounting.d.ts +83 -0
  70. package/dist/services/fileAccounting.d.ts.map +1 -0
  71. package/dist/services/fileAccounting.js +0 -0
  72. package/dist/services/fileAccounting.js.map +1 -0
  73. package/dist/styles/styleExtractor.d.ts +2 -2
  74. package/dist/styles/styleExtractor.d.ts.map +1 -1
  75. package/dist/styles/styleExtractor.js +83 -11
  76. package/dist/styles/styleExtractor.js.map +1 -1
  77. package/dist/styles/styleIndexer.d.ts +14 -0
  78. package/dist/styles/styleIndexer.d.ts.map +1 -1
  79. package/dist/styles/styleIndexer.js +117 -16
  80. package/dist/styles/styleIndexer.js.map +1 -1
  81. package/dist/styles/tailwindProbe.d.ts +31 -0
  82. package/dist/styles/tailwindProbe.d.ts.map +1 -1
  83. package/dist/styles/tailwindProbe.js +145 -4
  84. package/dist/styles/tailwindProbe.js.map +1 -1
  85. package/dist/styles/tailwindUtilityExpander.d.ts +3 -0
  86. package/dist/styles/tailwindUtilityExpander.d.ts.map +1 -1
  87. package/dist/styles/tailwindUtilityExpander.js +35 -1
  88. package/dist/styles/tailwindUtilityExpander.js.map +1 -1
  89. package/dist/styles/types.d.ts +11 -0
  90. package/dist/styles/types.d.ts.map +1 -1
  91. package/dist/types.d.ts +130 -0
  92. package/dist/types.d.ts.map +1 -1
  93. package/dist/types.js.map +1 -1
  94. package/dist/utils/fileDiscovery.d.ts +71 -0
  95. package/dist/utils/fileDiscovery.d.ts.map +1 -1
  96. package/dist/utils/fileDiscovery.js +201 -25
  97. package/dist/utils/fileDiscovery.js.map +1 -1
  98. package/dist/workers/auditJobRunner.d.ts +2 -0
  99. package/dist/workers/auditJobRunner.d.ts.map +1 -0
  100. package/dist/workers/auditJobRunner.js +37 -0
  101. package/dist/workers/auditJobRunner.js.map +1 -0
  102. package/dist/workers/auditWorker.js +26 -0
  103. package/dist/workers/auditWorker.js.map +1 -1
  104. package/package.json +2 -2
  105. package/plugin/.claude-plugin/plugin.json +1 -1
@@ -5,23 +5,71 @@
5
5
  * Supports TypeScript, JavaScript, and JSX/TSX files with configurable
6
6
  * include/exclude patterns
7
7
  */
8
+ import type { FileAccounting } from '../services/fileAccounting.js';
9
+ /**
10
+ * Spec 44 — the excluded-directory split. The two halves of the default
11
+ * exclusion set behave differently under file accounting:
12
+ *
13
+ * - **Infra** dirs are toolchain artifacts (never source). They are pruned
14
+ * silently and recorded only as an aggregate `infraPruned` line, because
15
+ * enumerating `node_modules` per-file is impossible at scale.
16
+ * - **Content** dirs (docs, specs, tmp, …) are small and genuinely "source the
17
+ * user might have meant to include". They are enumerated per-file and each
18
+ * file is recorded `dropped: directory pruned` — which is what makes an
19
+ * `.mdx` under `docs/` appear in the report instead of vanishing.
20
+ */
21
+ export declare const DEFAULT_EXCLUDED_INFRA_DIRS: string[];
22
+ export declare const DEFAULT_EXCLUDED_CONTENT_DIRS: string[];
8
23
  export declare const DEFAULT_EXCLUDED_DIRS: string[];
24
+ /**
25
+ * Basenames the tool itself writes into the project, which must never be
26
+ * re-discovered as source on a subsequent run (Bug #3 — "exclude the tool's
27
+ * own output from discovery"). The `audit` command writes `audit-report.<ext>`
28
+ * next to (or under) the project root; its content embeds raw source snippets
29
+ * (e.g. `error_class = 'zombie-capped'`) that would otherwise leak class-usage
30
+ * false positives back into the index.
31
+ */
32
+ export declare const DEFAULT_EXCLUDED_FILES: Set<string>;
9
33
  export declare const TYPESCRIPT_EXTENSIONS: string[];
10
34
  export declare const JAVASCRIPT_EXTENSIONS: string[];
11
35
  export declare const JSON_EXTENSIONS: string[];
12
36
  export declare const GO_EXTENSIONS: string[];
13
37
  export declare const CSS_EXTENSIONS: string[];
38
+ export declare const MARKUP_EXTENSIONS: string[];
39
+ export declare const STYLE_MARKUP_EXTENSIONS: string[];
40
+ export declare const UNREAD_STYLE_EXTENSIONS: string[];
14
41
  export declare const SQL_EXTENSIONS: string[];
15
42
  export declare const TOML_EXTENSIONS: string[];
16
43
  export declare const PRISMA_EXTENSIONS: string[];
17
44
  export declare const RAW_EXTENSIONS: string[];
18
45
  export declare const ALL_EXTENSIONS: string[];
46
+ export declare const KNOWN_SOURCE_EXTENSIONS: string[];
19
47
  export interface FileDiscoveryOptions {
20
48
  extensions?: string[];
21
49
  excludeDirs?: string[];
22
50
  includePaths?: string[];
23
51
  excludePaths?: string[];
24
52
  followSymlinks?: boolean;
53
+ /**
54
+ * Opt-in callback fired for every file whose extension is not in the
55
+ * discovery `extensions` set (Spec 43 R5 follow-up). Lets a caller aggregate
56
+ * the "what isn't being analyzed here" list so it can surface in the report
57
+ * instead of vanishing silently at discovery. Extensionless files (`''`) are
58
+ * not reported. Files inside `excludeDirs` are never walked, so they are never
59
+ * reported here — directory exclusion is a separate, documented concern from
60
+ * extension filtering.
61
+ */
62
+ onSkippedExtension?: (ext: string, filePath: string) => void;
63
+ /**
64
+ * Spec 44 — the file-accounting accumulator. When set, discovery records:
65
+ * `directory pruned` drops for every file under a *content* exclude dir,
66
+ * `extension not known` drops for skipped extensions, an aggregate
67
+ * `infraPruned` line per *infra* exclude dir, `directory pruned` drops for
68
+ * `excludePaths` matches (rule = the glob), and `recordTouched` for every
69
+ * candidate that survives filtering. Without it, discovery is a pure
70
+ * enumerator (unchanged behavior).
71
+ */
72
+ fileAccounting?: FileAccounting;
25
73
  }
26
74
  /**
27
75
  * Find all files matching the given options
@@ -49,6 +97,7 @@ export declare function findFilesByPattern(rootDir: string | undefined, pattern:
49
97
  export declare function filterFiles(files: string[], options?: {
50
98
  includePaths?: string[];
51
99
  excludePaths?: string[];
100
+ fileAccounting?: FileAccounting;
52
101
  }): string[];
53
102
  /**
54
103
  * Get file statistics
@@ -66,4 +115,26 @@ export declare function isReadableFile(filePath: string): Promise<boolean>;
66
115
  * Alias for findFiles to match expected import
67
116
  */
68
117
  export declare const discoverFiles: typeof findFiles;
118
+ /**
119
+ * Discovery result plus the extensions discovery skipped, aggregated with
120
+ * counts. Surfacing this list makes "what isn't being analyzed here" answerable
121
+ * from the report instead of from a grep (Spec 43 R5 follow-up — the same
122
+ * silent-fallthrough fix applied to `.astro`/`.vue`/`.svelte` at extraction,
123
+ * moved one layer earlier to discovery).
124
+ */
125
+ export interface DiscoverFilesDetailedResult {
126
+ files: string[];
127
+ skippedExtensions: Array<{
128
+ ext: string;
129
+ count: number;
130
+ }>;
131
+ }
132
+ /**
133
+ * Discover files and simultaneously record the extensions discovery skipped.
134
+ * Mirrors `findFiles` (same defaults and filtering), but the returned
135
+ * `skippedExtensions` is aggregated during the recursive walk — before
136
+ * `includePaths`/`excludePaths` filtering — so it reflects the full scan, not
137
+ * just the filtered subset. Sorted by count descending, then extension.
138
+ */
139
+ export declare function discoverFilesDetailed(rootDir?: string, options?: FileDiscoveryOptions): Promise<DiscoverFilesDetailedResult>;
69
140
  //# sourceMappingURL=fileDiscovery.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"fileDiscovery.d.ts","sourceRoot":"","sources":["../../src/utils/fileDiscovery.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,eAAO,MAAM,qBAAqB,UAmBjC,CAAC;AAGF,eAAO,MAAM,qBAAqB,UAAkB,CAAC;AACrD,eAAO,MAAM,qBAAqB,UAAkB,CAAC;AACrD,eAAO,MAAM,eAAe,UAAY,CAAC;AACzC,eAAO,MAAM,aAAa,UAAU,CAAC;AACrC,eAAO,MAAM,cAAc,UAAoB,CAAC;AAGhD,eAAO,MAAM,cAAc,UAAW,CAAC;AACvC,eAAO,MAAM,eAAe,UAAY,CAAC;AACzC,eAAO,MAAM,iBAAiB,UAAc,CAAC;AAC7C,eAAO,MAAM,cAAc,UAAgE,CAAC;AAC5F,eAAO,MAAM,cAAc,UAAmI,CAAC;AAE/J,MAAM,WAAW,oBAAoB;IACnC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AA8DD;;GAEG;AACH,wBAAsB,SAAS,CAC7B,OAAO,GAAE,MAAsB,EAC/B,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,MAAM,EAAE,CAAC,CAkBnB;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,OAAO,GAAE,MAAsB,EAC/B,OAAO,GAAE,IAAI,CAAC,oBAAoB,EAAE,YAAY,CAAM,GACrD,OAAO,CAAC,MAAM,EAAE,CAAC,CAKnB;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,OAAO,GAAE,MAAsB,EAC/B,OAAO,GAAE,IAAI,CAAC,oBAAoB,EAAE,YAAY,CAAM,GACrD,OAAO,CAAC,MAAM,EAAE,CAAC,CAKnB;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,OAAO,GAAE,MAAsB,EAC/B,OAAO,GAAE,IAAI,CAAC,oBAAoB,EAAE,YAAY,CAAM,GACrD,OAAO,CAAC,MAAM,EAAE,CAAC,CAKnB;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,MAAM,YAAgB,EAC/B,OAAO,EAAE,MAAM,GAAG,MAAM,EACxB,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,MAAM,EAAE,CAAC,CAuBnB;AAED;;GAEG;AACH,wBAAgB,WAAW,CACzB,KAAK,EAAE,MAAM,EAAE,EACf,OAAO,GAAE;IACP,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB,GACL,MAAM,EAAE,CA0BV;AAkBD;;GAEG;AACH,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;IAC5D,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,IAAI,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC,CAiBD;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAQvE;AAED;;GAEG;AACH,eAAO,MAAM,aAAa,kBAAY,CAAC"}
1
+ {"version":3,"file":"fileDiscovery.d.ts","sourceRoot":"","sources":["../../src/utils/fileDiscovery.ts"],"names":[],"mappings":"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"}
@@ -7,8 +7,19 @@
7
7
  */
8
8
  import { promises as fs } from 'fs';
9
9
  import path from 'path';
10
- // Default directories to exclude from analysis
11
- export const DEFAULT_EXCLUDED_DIRS = [
10
+ /**
11
+ * Spec 44 — the excluded-directory split. The two halves of the default
12
+ * exclusion set behave differently under file accounting:
13
+ *
14
+ * - **Infra** dirs are toolchain artifacts (never source). They are pruned
15
+ * silently and recorded only as an aggregate `infraPruned` line, because
16
+ * enumerating `node_modules` per-file is impossible at scale.
17
+ * - **Content** dirs (docs, specs, tmp, …) are small and genuinely "source the
18
+ * user might have meant to include". They are enumerated per-file and each
19
+ * file is recorded `dropped: directory pruned` — which is what makes an
20
+ * `.mdx` under `docs/` appear in the report instead of vanishing.
21
+ */
22
+ export const DEFAULT_EXCLUDED_INFRA_DIRS = [
12
23
  'node_modules',
13
24
  '.next',
14
25
  'dist',
@@ -18,42 +29,132 @@ export const DEFAULT_EXCLUDED_DIRS = [
18
29
  '.turbo',
19
30
  'out',
20
31
  '.cache',
21
- 'tmp',
22
- 'temp',
23
32
  '.vscode',
24
33
  '.idea',
25
- // Documentation, specs, and backups rarely contain production source code
34
+ // The tool's own on-disk index (CodeIndexDB). A prior audit run writes
35
+ // `.code-index/index.db` into the project root; it must never be re-scanned
36
+ // as source on a subsequent run (Bug #3).
37
+ '.code-index',
38
+ ];
39
+ // Documentation, specs, and backups — rarely contain production source code,
40
+ // but enumerated per-file under accounting so they are reported, not silent.
41
+ export const DEFAULT_EXCLUDED_CONTENT_DIRS = [
42
+ 'tmp',
43
+ 'temp',
26
44
  'docs',
27
45
  'specs',
28
46
  'backup',
29
47
  'backups',
30
48
  ];
49
+ // Backward-compatible union — still the default `excludeDirs` for discovery.
50
+ export const DEFAULT_EXCLUDED_DIRS = [
51
+ ...DEFAULT_EXCLUDED_INFRA_DIRS,
52
+ ...DEFAULT_EXCLUDED_CONTENT_DIRS,
53
+ ];
54
+ /**
55
+ * Basenames the tool itself writes into the project, which must never be
56
+ * re-discovered as source on a subsequent run (Bug #3 — "exclude the tool's
57
+ * own output from discovery"). The `audit` command writes `audit-report.<ext>`
58
+ * next to (or under) the project root; its content embeds raw source snippets
59
+ * (e.g. `error_class = 'zombie-capped'`) that would otherwise leak class-usage
60
+ * false positives back into the index.
61
+ */
62
+ export const DEFAULT_EXCLUDED_FILES = new Set([
63
+ 'audit-report.json',
64
+ 'audit-report.html',
65
+ 'audit-report.csv',
66
+ 'audit-report.sarif',
67
+ ]);
31
68
  // Supported file extensions
32
- export const TYPESCRIPT_EXTENSIONS = ['.ts', '.tsx'];
33
- export const JAVASCRIPT_EXTENSIONS = ['.js', '.jsx'];
69
+ export const TYPESCRIPT_EXTENSIONS = ['.ts', '.tsx', '.mts', '.cts'];
70
+ export const JAVASCRIPT_EXTENSIONS = ['.js', '.jsx', '.mjs', '.cjs'];
34
71
  export const JSON_EXTENSIONS = ['.json'];
35
72
  export const GO_EXTENSIONS = ['.go'];
36
73
  export const CSS_EXTENSIONS = ['.css', '.scss'];
74
+ // Markup extensions that carry `<style>` blocks (Spec 42 R1). Discovered so the
75
+ // style indexer can extract their embedded stylesheets; the pipeline itself has
76
+ // no language adapter for them, so they are consumed only by syncStyleIndex.
77
+ export const MARKUP_EXTENSIONS = ['.astro', '.vue', '.svelte'];
78
+ // Markup/component extensions the style extractor reads (embedded <style> blocks
79
+ // and class attributes). This is the single source of truth for the extractor's
80
+ // markup dispatch — the gates in styleIndexer.ts and the dispatch in
81
+ // styleExtractor.ts derive from it so a newly supported dialect is handled
82
+ // everywhere at once instead of silently dropped from one list. `.html` is
83
+ // included because scoped runs may pass HTML files, even though `.html` is NOT
84
+ // discovered by default (recall-protocol's ~11,928 spec-dump `.html` files would
85
+ // blow up a full audit).
86
+ export const STYLE_MARKUP_EXTENSIONS = ['.html', ...MARKUP_EXTENSIONS];
87
+ // Dialects the style indexer cannot yet read (Sass/SCSS indented syntax, Less,
88
+ // Stylus). Not discovered as source — the indexer records them as *unread*
89
+ // stylesheet sources (Spec 42 R2) so undefined-class never asserts on a class
90
+ // that could be defined in one of these.
91
+ export const UNREAD_STYLE_EXTENSIONS = ['.less', '.styl', '.sass'];
37
92
  // Raw-source extensions — no tree-sitter grammar, included for visitors that
38
93
  // read sourceCode directly (e.g. SQL migrations, TOML config, Prisma schemas)
39
94
  export const SQL_EXTENSIONS = ['.sql'];
40
95
  export const TOML_EXTENSIONS = ['.toml'];
41
96
  export const PRISMA_EXTENSIONS = ['.prisma'];
42
97
  export const RAW_EXTENSIONS = [...SQL_EXTENSIONS, ...TOML_EXTENSIONS, ...PRISMA_EXTENSIONS];
43
- export const ALL_EXTENSIONS = [...TYPESCRIPT_EXTENSIONS, ...JAVASCRIPT_EXTENSIONS, ...JSON_EXTENSIONS, ...GO_EXTENSIONS, ...CSS_EXTENSIONS, ...RAW_EXTENSIONS];
98
+ // NOTE: .html is deliberately NOT here recall-protocol has ~11,928 .html
99
+ // files (spec dumps) and reading them all would blow up the audit. Markup
100
+ // extensions are added because they are real component files with styles.
101
+ export const ALL_EXTENSIONS = [...TYPESCRIPT_EXTENSIONS, ...JAVASCRIPT_EXTENSIONS, ...JSON_EXTENSIONS, ...GO_EXTENSIONS, ...CSS_EXTENSIONS, ...RAW_EXTENSIONS, ...MARKUP_EXTENSIONS];
102
+ // Every extension the analysis layer understands as source — style-bearing
103
+ // (TS/JS/markup/CSS) plus non-style (JSON/Go/SQL/TOML/Prisma), with `.html`
104
+ // added since scoped runs may pass it even though it is not discovered by
105
+ // default. Single source of truth for the style extractor's "loud" default
106
+ // branch: an extension that reaches it unhandled is recorded as an unread
107
+ // source (Spec 42 R2) *only* when it is NOT in this set, so a genuinely unknown
108
+ // dialect (`.mdx`, `.md`, …) surfaces instead of a silent zero while legitimate
109
+ // non-style source and `.css`/`.scss` (handled by the AST pipeline) stay silent.
110
+ export const KNOWN_SOURCE_EXTENSIONS = [...ALL_EXTENSIONS, '.html'];
44
111
  /**
45
- * Check if a path should be excluded based on directory names.
46
- * Only checks directory components *below* the scan root to avoid
47
- * false matches against filesystem roots like /tmp or /temp.
112
+ * Classify a path against the excluded-directory split (Spec 44).
113
+ *
114
+ * Only checks directory components *below* the scan root to avoid false
115
+ * matches against filesystem roots like /tmp or /temp. A component that is a
116
+ * default *infra* dir prunes silently (aggregate); every other excluded
117
+ * component — default *content* dirs and any user-supplied dir — is enumerated
118
+ * per-file so nothing is silently dropped.
48
119
  */
49
- function shouldExcludeDir(filePath, excludeDirs, scanRoot) {
120
+ function classifyExcludedDir(filePath, excludeDirs, scanRoot) {
50
121
  // Get the relative path below scanRoot
51
122
  const relPath = path.relative(scanRoot, filePath);
52
123
  // If the path is outside scanRoot (shouldn't happen), don't exclude
53
124
  if (relPath.startsWith('..'))
54
- return false;
125
+ return null;
55
126
  const parts = relPath.split(path.sep);
56
- return parts.some(part => excludeDirs.includes(part));
127
+ for (const part of parts) {
128
+ if (!excludeDirs.includes(part))
129
+ continue;
130
+ if (DEFAULT_EXCLUDED_INFRA_DIRS.includes(part))
131
+ return { kind: 'infra', dir: part };
132
+ return { kind: 'content', dir: part };
133
+ }
134
+ return null;
135
+ }
136
+ /**
137
+ * Recursively list every file under a directory, any extension. Used only for
138
+ * *content* exclude dirs (small, enumerated per-file under accounting).
139
+ */
140
+ async function enumerateAllFiles(dir) {
141
+ const out = [];
142
+ try {
143
+ const entries = await fs.readdir(dir, { withFileTypes: true });
144
+ for (const entry of entries) {
145
+ const fullPath = path.join(dir, entry.name);
146
+ if (entry.isDirectory()) {
147
+ out.push(...(await enumerateAllFiles(fullPath)));
148
+ }
149
+ else if (entry.isFile()) {
150
+ out.push(fullPath);
151
+ }
152
+ }
153
+ }
154
+ catch {
155
+ // Unreadable subtree — skip (mirrors the walk's EACCES tolerance).
156
+ }
157
+ return out;
57
158
  }
58
159
  /**
59
160
  * Recursively find files matching criteria
@@ -64,7 +165,21 @@ async function findFilesRecursive(dir, options) {
64
165
  const entries = await fs.readdir(dir, { withFileTypes: true });
65
166
  for (const entry of entries) {
66
167
  const fullPath = path.join(dir, entry.name);
67
- if (shouldExcludeDir(fullPath, options.excludeDirs, options.scanRoot)) {
168
+ const excl = classifyExcludedDir(fullPath, options.excludeDirs, options.scanRoot);
169
+ if (excl) {
170
+ const rule = DEFAULT_EXCLUDED_DIRS.includes(excl.dir) ? 'DEFAULT_EXCLUDED_DIRS' : 'excludeDirs';
171
+ if (excl.kind === 'infra') {
172
+ // Aggregate — never per-file (node_modules is not enumerable at scale).
173
+ options.fileAccounting?.recordInfraPruned(excl.dir, rule);
174
+ }
175
+ else if (entry.isDirectory() && options.fileAccounting) {
176
+ // Content dir — enumerated per-file, each dropped: directory pruned.
177
+ // This is what makes `.mdx` under `docs/` appear (Spec 44 acceptance 5).
178
+ const contentFiles = await enumerateAllFiles(fullPath);
179
+ for (const f of contentFiles) {
180
+ options.fileAccounting.recordDropped('directory pruned', f, { directory: excl.dir, rule });
181
+ }
182
+ }
68
183
  continue;
69
184
  }
70
185
  if (entry.isDirectory()) {
@@ -72,12 +187,27 @@ async function findFilesRecursive(dir, options) {
72
187
  results.push(...subResults);
73
188
  }
74
189
  else if (entry.isFile()) {
190
+ // Skip the tool's own report output by basename (Bug #3).
191
+ if (DEFAULT_EXCLUDED_FILES.has(entry.name))
192
+ continue;
75
193
  const ext = path.extname(entry.name);
76
194
  if (options.extensions.includes(ext)) {
77
195
  if (!options.pattern || options.pattern.test(entry.name)) {
78
196
  results.push(fullPath);
79
197
  }
80
198
  }
199
+ else if (ext !== '') {
200
+ // Record the extension discovery skipped so the report can answer
201
+ // "what isn't being analyzed here" (Spec 43 R5 follow-up) rather than
202
+ // silently dropping the file at discovery.
203
+ options.onSkippedExtension?.(ext, fullPath);
204
+ // Spec 44 reason 2 — a file with a known (or unknown) extension that
205
+ // is simply not in the discovery set.
206
+ options.fileAccounting?.recordDropped('extension not known', fullPath, {
207
+ ext,
208
+ kind: KNOWN_SOURCE_EXTENSIONS.includes(ext) ? 'known-but-not-discovered' : 'unknown',
209
+ });
210
+ }
81
211
  }
82
212
  }
83
213
  }
@@ -98,13 +228,24 @@ export async function findFiles(rootDir = process.cwd(), options = {}) {
98
228
  const files = await findFilesRecursive(rootDir, {
99
229
  extensions,
100
230
  excludeDirs,
101
- scanRoot: rootDir
231
+ scanRoot: rootDir,
232
+ ...(options.onSkippedExtension ? { onSkippedExtension: options.onSkippedExtension } : {}),
233
+ ...(options.fileAccounting ? { fileAccounting: options.fileAccounting } : {})
102
234
  });
103
235
  // Apply additional filtering
104
- let filtered = filterFiles(files, {
236
+ const filtered = filterFiles(files, {
105
237
  includePaths: options.includePaths,
106
- excludePaths: options.excludePaths
238
+ excludePaths: options.excludePaths,
239
+ fileAccounting: options.fileAccounting
107
240
  });
241
+ // Spec 44 — every candidate that survives discovery filtering is "touched"
242
+ // (it will be classified analyzed/dropped in stage 2). Recording it here —
243
+ // after include/exclude filtering — means a positive-selection `includePaths`
244
+ // narrows the universe instead of producing touched-but-dropped entries.
245
+ if (options.fileAccounting) {
246
+ for (const f of filtered)
247
+ options.fileAccounting.recordTouched(f);
248
+ }
108
249
  // Sort for consistent output
109
250
  return filtered.sort();
110
251
  }
@@ -149,13 +290,20 @@ export async function findFilesByPattern(rootDir = process.cwd(), pattern, optio
149
290
  extensions,
150
291
  excludeDirs,
151
292
  pattern: regex,
152
- scanRoot: rootDir
293
+ scanRoot: rootDir,
294
+ ...(options.onSkippedExtension ? { onSkippedExtension: options.onSkippedExtension } : {}),
295
+ ...(options.fileAccounting ? { fileAccounting: options.fileAccounting } : {})
153
296
  });
154
297
  // Apply additional filtering
155
- let filtered = filterFiles(files, {
298
+ const filtered = filterFiles(files, {
156
299
  includePaths: options.includePaths,
157
- excludePaths: options.excludePaths
300
+ excludePaths: options.excludePaths,
301
+ fileAccounting: options.fileAccounting
158
302
  });
303
+ if (options.fileAccounting) {
304
+ for (const f of filtered)
305
+ options.fileAccounting.recordTouched(f);
306
+ }
159
307
  return filtered.sort();
160
308
  }
161
309
  /**
@@ -163,7 +311,8 @@ export async function findFilesByPattern(rootDir = process.cwd(), pattern, optio
163
311
  */
164
312
  export function filterFiles(files, options = {}) {
165
313
  let filtered = [...files];
166
- // Apply include patterns
314
+ // Apply include patterns (positive selection — narrows the universe; a file
315
+ // removed here is simply not "touched", not dropped).
167
316
  if (options.includePaths && options.includePaths.length > 0) {
168
317
  filtered = filtered.filter(file => {
169
318
  return options.includePaths.some(pattern => {
@@ -175,13 +324,22 @@ export function filterFiles(files, options = {}) {
175
324
  }
176
325
  // Apply exclude patterns
177
326
  if (options.excludePaths && options.excludePaths.length > 0) {
178
- filtered = filtered.filter(file => {
179
- return !options.excludePaths.some(pattern => {
327
+ const kept = [];
328
+ for (const file of filtered) {
329
+ const matched = options.excludePaths.find(pattern => {
180
330
  // Convert glob patterns to regex
181
331
  const regex = globToRegex(pattern);
182
332
  return regex.test(file);
183
333
  });
184
- });
334
+ if (matched) {
335
+ // Spec 44 reason 1 — a user `excludePaths` prune, rule = the glob.
336
+ options.fileAccounting?.recordDropped('directory pruned', file, { rule: matched });
337
+ }
338
+ else {
339
+ kept.push(file);
340
+ }
341
+ }
342
+ filtered = kept;
185
343
  }
186
344
  return filtered;
187
345
  }
@@ -237,4 +395,22 @@ export async function isReadableFile(filePath) {
237
395
  * Alias for findFiles to match expected import
238
396
  */
239
397
  export const discoverFiles = findFiles;
398
+ /**
399
+ * Discover files and simultaneously record the extensions discovery skipped.
400
+ * Mirrors `findFiles` (same defaults and filtering), but the returned
401
+ * `skippedExtensions` is aggregated during the recursive walk — before
402
+ * `includePaths`/`excludePaths` filtering — so it reflects the full scan, not
403
+ * just the filtered subset. Sorted by count descending, then extension.
404
+ */
405
+ export async function discoverFilesDetailed(rootDir = process.cwd(), options = {}) {
406
+ const counts = new Map();
407
+ const onSkippedExtension = (ext) => {
408
+ counts.set(ext, (counts.get(ext) ?? 0) + 1);
409
+ };
410
+ const files = await findFiles(rootDir, { ...options, onSkippedExtension });
411
+ const skippedExtensions = [...counts.entries()]
412
+ .map(([ext, count]) => ({ ext, count }))
413
+ .sort((a, b) => b.count - a.count || a.ext.localeCompare(b.ext));
414
+ return { files, skippedExtensions };
415
+ }
240
416
  //# sourceMappingURL=fileDiscovery.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fileDiscovery.js","sourceRoot":"","sources":["../../src/utils/fileDiscovery.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fileDiscovery.js","sourceRoot":"","sources":["../../src/utils/fileDiscovery.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=auditJobRunner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auditJobRunner.d.ts","sourceRoot":"","sources":["../../src/workers/auditJobRunner.ts"],"names":[],"mappings":""}
@@ -0,0 +1,37 @@
1
+ import { initParsers, initializeLanguages } from '../languages/index.js';
2
+ import { runAuditJob } from '../mcpAuditJobs.js';
3
+ import { CodeIndexDB } from '../codeIndexDB.js';
4
+ /**
5
+ * Forkable entrypoint for Spec 41 `--detach`.
6
+ *
7
+ * Reads jobId / args / defaults from argv, initializes parsers, and runs the
8
+ * shared `runAuditJob` path — the same path MCP's `audit.start` schedules via
9
+ * setTimeout. There is no second runner: the child exists only to give `--detach`
10
+ * a detached process whose stderr the parent captures to a per-run log.
11
+ *
12
+ * `runAuditJob` records lifecycle state (including failure) on the run row and
13
+ * resolves normally, so this process exits non-zero only when `runAuditJob`
14
+ * itself rejects before its own try/catch takes over (e.g. a broken argv).
15
+ */
16
+ async function main() {
17
+ const [, , jobId, argsJson, defaultsJson] = process.argv;
18
+ if (!jobId || !argsJson || !defaultsJson) {
19
+ console.error('usage: auditJobRunner <jobId> <argsJson> <defaultsJson>');
20
+ process.exitCode = 2;
21
+ return;
22
+ }
23
+ initializeLanguages();
24
+ await initParsers();
25
+ // This process is a fresh fork of a parent that already opened CodeIndexDB.
26
+ // fork() copies the singleton (including `isInitialized = true` and a native
27
+ // better-sqlite3 handle that does not survive the fork), so `getInstance`
28
+ // would short-circuit and hand back a dead connection. Reset the singleton so
29
+ // runAuditJob opens a fresh per-project connection.
30
+ CodeIndexDB.resetInstance();
31
+ await runAuditJob(jobId, JSON.parse(argsJson), JSON.parse(defaultsJson));
32
+ }
33
+ main().catch((err) => {
34
+ console.error(err instanceof Error ? (err.stack ?? err.message) : String(err));
35
+ process.exitCode = 1;
36
+ });
37
+ //# sourceMappingURL=auditJobRunner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auditJobRunner.js","sourceRoot":"","sources":["../../src/workers/auditJobRunner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACzE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD;;;;;;;;;;;GAWG;AACH,KAAK,UAAU,IAAI;IACjB,MAAM,CAAC,EAAE,AAAD,EAAG,KAAK,EAAE,QAAQ,EAAE,YAAY,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IACzD,IAAI,CAAC,KAAK,IAAI,CAAC,QAAQ,IAAI,CAAC,YAAY,EAAE,CAAC;QACzC,OAAO,CAAC,KAAK,CAAC,yDAAyD,CAAC,CAAC;QACzE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IAED,mBAAmB,EAAE,CAAC;IACtB,MAAM,WAAW,EAAE,CAAC;IAEpB,4EAA4E;IAC5E,6EAA6E;IAC7E,0EAA0E;IAC1E,8EAA8E;IAC9E,oDAAoD;IACpD,WAAW,CAAC,aAAa,EAAE,CAAC;IAE5B,MAAM,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAA4B,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,CAAU,CAAC,CAAC;AAC/G,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,OAAO,CAAC,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/E,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,CAAC,CAAC,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import { createAuditRunner } from '../auditRunner.js';
2
2
  import { AuditAbortedError, AuditHandoffError } from '../types.js';
3
3
  import { initParsers } from '../languages/index.js';
4
+ import { CodeIndexDB } from '../codeIndexDB.js';
4
5
  import { continuationConfigAfterHandoff, toAuditRunnerOptions, } from './auditWorkerProtocol.js';
5
6
  const abortControllers = new Map();
6
7
  /** One audit at a time per process so the parent can safely recycle workers on timeout. */
@@ -25,6 +26,10 @@ async function handleRun(message) {
25
26
  const base = toAuditRunnerOptions(message.config);
26
27
  const runner = createAuditRunner({
27
28
  ...base,
29
+ // The parent (runAuditJob) is the single ledger writer; a worker writing
30
+ // the ledger concurrently contends with the parent's syncFileIndex
31
+ // (SQLITE_BUSY) and pollutes listRuns with stray completed rows.
32
+ writeToLedger: false,
28
33
  abortSignal: ac.signal,
29
34
  progressCallback: (progress) => {
30
35
  send({
@@ -36,6 +41,15 @@ async function handleRun(message) {
36
41
  },
37
42
  });
38
43
  const result = await runner.run();
44
+ // Close this worker's DB connection before signaling the parent. The
45
+ // parent (runAuditJob) proceeds straight into syncFileIndex the moment it
46
+ // receives worker-result; if this worker is then SIGTERM'd by
47
+ // disposeAllWorkers while its syncStyleIndex-opened connection is still
48
+ // open, the abrupt exit leaves the shared WAL -shm in a state that makes
49
+ // the parent's next write fail with "database is locked". Closing here —
50
+ // before the send — guarantees the connection is gone by the time the
51
+ // parent reads the message.
52
+ CodeIndexDB.resetInstance();
39
53
  send({
40
54
  kind: 'worker-result',
41
55
  requestId,
@@ -44,6 +58,9 @@ async function handleRun(message) {
44
58
  });
45
59
  }
46
60
  catch (error) {
61
+ // Same rationale as the success path: never leave a DB connection open
62
+ // across the worker's (imminent) SIGTERM, whichever way this shard ends.
63
+ CodeIndexDB.resetInstance();
47
64
  if (error instanceof AuditHandoffError) {
48
65
  send({
49
66
  kind: 'worker-handoff',
@@ -118,6 +135,15 @@ process.on('message', (raw) => {
118
135
  });
119
136
  // ── Initialize parsers then signal readiness ──────────────────────────────
120
137
  async function main() {
138
+ // This process is a fresh exec of a forked parent (auditJobRunner) that may
139
+ // have left a module-level singleton on its stack before exec. The child does
140
+ // not inherit the parent's SQLite fd (better-sqlite3 opens it O_CLOEXEC), but
141
+ // the singleton module state — `isInitialized = true` and a stale native
142
+ // handle — does carry over if the parent initialized the parser before
143
+ // forking. Reset the singleton immediately so this worker drops any inherited
144
+ // module state and the worker's own audit-runner opens a fresh per-process
145
+ // connection.
146
+ CodeIndexDB.resetInstance();
121
147
  await initParsers();
122
148
  send({
123
149
  kind: 'worker-ready',
@@ -1 +1 @@
1
- {"version":3,"file":"auditWorker.js","sourceRoot":"","sources":["../../src/workers/auditWorker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auditWorker.js","sourceRoot":"","sources":["../../src/workers/auditWorker.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "code-auditor-mcp",
3
- "version": "3.4.13",
3
+ "version": "3.4.15",
4
4
  "description": "Architectural invariants and code quality analysis, enforced inside your AI agent's edit loop. MCP server + CLI + Claude Code plugin. TypeScript, JavaScript, Go.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -33,7 +33,7 @@
33
33
  "verify:dist": "npm pack --silent && bash scripts/verify-dist.sh && rm -f code-auditor-mcp-*.tgz",
34
34
  "verify:self": "node scripts/verify-self.mjs",
35
35
  "verify:gate-budget": "node scripts/verify-gate-budget.mjs",
36
- "verify:close": "npm run test && npm run test:integration && npm run verify:dist && npm run verify:self && npm run verify:gate-budget"
36
+ "verify:close": "npm run test && npm run test:integration && npm run verify:gate-budget && npm run verify:dist && npm run verify:self"
37
37
  },
38
38
  "keywords": [
39
39
  "mcp",