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.
- package/.claude-plugin/marketplace.json +1 -1
- package/CHANGELOG.md +96 -0
- package/dist/analyzers/applicability.d.ts +41 -0
- package/dist/analyzers/applicability.d.ts.map +1 -0
- package/dist/analyzers/applicability.js +96 -0
- package/dist/analyzers/applicability.js.map +1 -0
- package/dist/analyzers/ruleRegistry.js +11 -11
- package/dist/analyzers/ruleRegistry.js.map +1 -1
- package/dist/analyzers/universal/UniversalSOLIDAnalyzer.js +8 -8
- package/dist/analyzers/universal/UniversalSOLIDAnalyzer.js.map +1 -1
- package/dist/analyzers/universal/UniversalSchemaAnalyzer.d.ts +2 -2
- package/dist/analyzers/universal/UniversalSchemaAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/universal/UniversalSchemaAnalyzer.js +2 -2
- package/dist/analyzers/universal/UniversalSchemaAnalyzer.js.map +1 -1
- package/dist/analyzers/universal/UniversalStylesAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/universal/UniversalStylesAnalyzer.js +9 -1
- package/dist/analyzers/universal/UniversalStylesAnalyzer.js.map +1 -1
- package/dist/analyzers/universal/schema/migrations.d.ts +11 -0
- package/dist/analyzers/universal/schema/migrations.d.ts.map +1 -1
- package/dist/analyzers/universal/schema/migrations.js +127 -4
- package/dist/analyzers/universal/schema/migrations.js.map +1 -1
- package/dist/auditRunner.d.ts.map +1 -1
- package/dist/auditRunner.js +62 -23
- package/dist/auditRunner.js.map +1 -1
- package/dist/cli.js +393 -1
- package/dist/cli.js.map +1 -1
- package/dist/codeIndexDB.d.ts +40 -1
- package/dist/codeIndexDB.d.ts.map +1 -1
- package/dist/codeIndexDB.js +222 -50
- package/dist/codeIndexDB.js.map +1 -1
- package/dist/config/defaults.js +2 -2
- package/dist/config/defaults.js.map +1 -1
- package/dist/config/pathProfiles.d.ts +7 -0
- package/dist/config/pathProfiles.d.ts.map +1 -1
- package/dist/config/pathProfiles.js +7 -1
- package/dist/config/pathProfiles.js.map +1 -1
- package/dist/languages/typescript/TreeSitterTypeScriptAdapter.d.ts.map +1 -1
- package/dist/languages/typescript/TreeSitterTypeScriptAdapter.js +1 -1
- package/dist/languages/typescript/TreeSitterTypeScriptAdapter.js.map +1 -1
- package/dist/ledger.d.ts +163 -2
- package/dist/ledger.d.ts.map +1 -1
- package/dist/ledger.js +528 -7
- package/dist/ledger.js.map +1 -1
- package/dist/mcp.js +3 -3
- package/dist/mcp.js.map +1 -1
- package/dist/mcpAuditJobs.d.ts +24 -2
- package/dist/mcpAuditJobs.d.ts.map +1 -1
- package/dist/mcpAuditJobs.js +364 -58
- package/dist/mcpAuditJobs.js.map +1 -1
- package/dist/pipeline.d.ts +9 -2
- package/dist/pipeline.d.ts.map +1 -1
- package/dist/pipeline.js +165 -18
- package/dist/pipeline.js.map +1 -1
- package/dist/pipelineAdapters.d.ts.map +1 -1
- package/dist/pipelineAdapters.js +45 -10
- package/dist/pipelineAdapters.js.map +1 -1
- package/dist/reporting/sarifReportGenerator.d.ts.map +1 -1
- package/dist/reporting/sarifReportGenerator.js +6 -1
- package/dist/reporting/sarifReportGenerator.js.map +1 -1
- package/dist/ruleAliases.d.ts.map +1 -1
- package/dist/ruleAliases.js +23 -0
- package/dist/ruleAliases.js.map +1 -1
- package/dist/scripts/benchmarkWorkers.js +1 -1
- package/dist/scripts/benchmarkWorkers.js.map +1 -1
- package/dist/services/auditJobService.d.ts +22 -5
- package/dist/services/auditJobService.d.ts.map +1 -1
- package/dist/services/auditJobService.js +67 -26
- package/dist/services/auditJobService.js.map +1 -1
- package/dist/services/fileAccounting.d.ts +83 -0
- package/dist/services/fileAccounting.d.ts.map +1 -0
- package/dist/services/fileAccounting.js +0 -0
- package/dist/services/fileAccounting.js.map +1 -0
- package/dist/styles/styleExtractor.d.ts +2 -2
- package/dist/styles/styleExtractor.d.ts.map +1 -1
- package/dist/styles/styleExtractor.js +83 -11
- package/dist/styles/styleExtractor.js.map +1 -1
- package/dist/styles/styleIndexer.d.ts +14 -0
- package/dist/styles/styleIndexer.d.ts.map +1 -1
- package/dist/styles/styleIndexer.js +117 -16
- package/dist/styles/styleIndexer.js.map +1 -1
- package/dist/styles/tailwindProbe.d.ts +31 -0
- package/dist/styles/tailwindProbe.d.ts.map +1 -1
- package/dist/styles/tailwindProbe.js +145 -4
- package/dist/styles/tailwindProbe.js.map +1 -1
- package/dist/styles/tailwindUtilityExpander.d.ts +3 -0
- package/dist/styles/tailwindUtilityExpander.d.ts.map +1 -1
- package/dist/styles/tailwindUtilityExpander.js +35 -1
- package/dist/styles/tailwindUtilityExpander.js.map +1 -1
- package/dist/styles/types.d.ts +11 -0
- package/dist/styles/types.d.ts.map +1 -1
- package/dist/types.d.ts +130 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/utils/fileDiscovery.d.ts +71 -0
- package/dist/utils/fileDiscovery.d.ts.map +1 -1
- package/dist/utils/fileDiscovery.js +201 -25
- package/dist/utils/fileDiscovery.js.map +1 -1
- package/dist/workers/auditJobRunner.d.ts +2 -0
- package/dist/workers/auditJobRunner.d.ts.map +1 -0
- package/dist/workers/auditJobRunner.js +37 -0
- package/dist/workers/auditJobRunner.js.map +1 -0
- package/dist/workers/auditWorker.js +26 -0
- package/dist/workers/auditWorker.js.map +1 -1
- package/package.json +2 -2
- 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;
|
|
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
|
-
|
|
11
|
-
|
|
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
|
-
//
|
|
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
|
-
|
|
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
|
-
*
|
|
46
|
-
*
|
|
47
|
-
*
|
|
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
|
|
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
|
|
125
|
+
return null;
|
|
55
126
|
const parts = relPath.split(path.sep);
|
|
56
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
179
|
-
|
|
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 @@
|
|
|
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.
|
|
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:
|
|
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",
|