code-auditor-mcp 3.4.14 → 3.4.16
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 +83 -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 +1 -1
- package/dist/analyzers/ruleRegistry.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 +20 -9
- 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 +406 -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 +1 -1
- 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/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 +215 -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 +8 -0
- package/dist/styles/styleIndexer.d.ts.map +1 -1
- package/dist/styles/styleIndexer.js +103 -15
- package/dist/styles/styleIndexer.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 +133 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/utils/fileDiscovery.d.ts +98 -0
- package/dist/utils/fileDiscovery.d.ts.map +1 -1
- package/dist/utils/fileDiscovery.js +246 -29
- 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
|
@@ -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,20 +29,78 @@ 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
|
|
26
|
-
'docs',
|
|
27
|
-
'specs',
|
|
28
|
-
'backup',
|
|
29
|
-
'backups',
|
|
30
34
|
// The tool's own on-disk index (CodeIndexDB). A prior audit run writes
|
|
31
35
|
// `.code-index/index.db` into the project root; it must never be re-scanned
|
|
32
36
|
// as source on a subsequent run (Bug #3).
|
|
33
37
|
'.code-index',
|
|
34
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',
|
|
44
|
+
'docs',
|
|
45
|
+
'specs',
|
|
46
|
+
'backup',
|
|
47
|
+
'backups',
|
|
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
|
+
* Spec 45 R1 — the per-entry anchoring choice. Each directory basename in
|
|
56
|
+
* `DEFAULT_EXCLUDED_DIRS` is either *any-depth* or *root-anchored* depending on
|
|
57
|
+
* whether the name is an unambiguous toolchain/transient marker (never a source
|
|
58
|
+
* route) or an ambiguous one (could be user source when nested).
|
|
59
|
+
*
|
|
60
|
+
* ANY-DEPTH (13 entries) — toolchain artifacts wherever they appear; nested
|
|
61
|
+
* occurrences are never source, so they are excluded at every depth below the
|
|
62
|
+
* scan root:
|
|
63
|
+
*
|
|
64
|
+
* - `node_modules` — package deps; monorepo workspaces are still deps.
|
|
65
|
+
* - `.git` — VCS metadata; submodules are still VCS.
|
|
66
|
+
* - `.next` — Next.js build output (reserved name).
|
|
67
|
+
* - `dist`, `out` — build/export output.
|
|
68
|
+
* - `coverage` — test coverage report.
|
|
69
|
+
* - `.turbo` — Turborepo cache.
|
|
70
|
+
* - `.cache` — cache (recall's `scripts/.cache` holds generated build JSON).
|
|
71
|
+
* - `.vscode`, `.idea` — editor state.
|
|
72
|
+
* - `.code-index` — the tool's own SQLite index (Bug #3); a prior scoped run
|
|
73
|
+
* can leave `src/agents/.code-index` nested.
|
|
74
|
+
* - `tmp`, `temp` — transient (recall's `scripts/.wrangler/tmp` is Wrangler
|
|
75
|
+
* build cache; never source).
|
|
76
|
+
*
|
|
77
|
+
* ROOT-ANCHORED (5 entries) — ambiguous: they can be a real file-router route
|
|
78
|
+
* or user source when nested under `src/`, so they are excluded only as the
|
|
79
|
+
* first component below the scan root. File-based routers (Astro, Next,
|
|
80
|
+
* SvelteKit, Nuxt) make `src/pages/docs/…` and `src/pages/…/build/…` real
|
|
81
|
+
* routes:
|
|
82
|
+
*
|
|
83
|
+
* - `build` — a nested `src/pages/…/build/…` dir is a route; root `build` is
|
|
84
|
+
* build output.
|
|
85
|
+
* - `docs` — `src/pages/docs/…` is a route (recall's two R1 source files);
|
|
86
|
+
* root `docs` is documentation.
|
|
87
|
+
* - `specs`, `backup`, `backups` — can be in-repo source.
|
|
88
|
+
*/
|
|
89
|
+
export const DEFAULT_EXCLUDED_ANY_DEPTH_DIRS = new Set([
|
|
90
|
+
'node_modules',
|
|
91
|
+
'.git',
|
|
92
|
+
'.next',
|
|
93
|
+
'dist',
|
|
94
|
+
'out',
|
|
95
|
+
'coverage',
|
|
96
|
+
'.turbo',
|
|
97
|
+
'.cache',
|
|
98
|
+
'.vscode',
|
|
99
|
+
'.idea',
|
|
100
|
+
'.code-index',
|
|
101
|
+
'tmp',
|
|
102
|
+
'temp',
|
|
103
|
+
]);
|
|
35
104
|
/**
|
|
36
105
|
* Basenames the tool itself writes into the project, which must never be
|
|
37
106
|
* re-discovered as source on a subsequent run (Bug #3 — "exclude the tool's
|
|
@@ -47,31 +116,107 @@ export const DEFAULT_EXCLUDED_FILES = new Set([
|
|
|
47
116
|
'audit-report.sarif',
|
|
48
117
|
]);
|
|
49
118
|
// Supported file extensions
|
|
50
|
-
export const TYPESCRIPT_EXTENSIONS = ['.ts', '.tsx'];
|
|
51
|
-
export const JAVASCRIPT_EXTENSIONS = ['.js', '.jsx'];
|
|
119
|
+
export const TYPESCRIPT_EXTENSIONS = ['.ts', '.tsx', '.mts', '.cts'];
|
|
120
|
+
export const JAVASCRIPT_EXTENSIONS = ['.js', '.jsx', '.mjs', '.cjs'];
|
|
52
121
|
export const JSON_EXTENSIONS = ['.json'];
|
|
53
122
|
export const GO_EXTENSIONS = ['.go'];
|
|
54
123
|
export const CSS_EXTENSIONS = ['.css', '.scss'];
|
|
124
|
+
// Markup extensions that carry `<style>` blocks (Spec 42 R1). Discovered so the
|
|
125
|
+
// style indexer can extract their embedded stylesheets; the pipeline itself has
|
|
126
|
+
// no language adapter for them, so they are consumed only by syncStyleIndex.
|
|
127
|
+
export const MARKUP_EXTENSIONS = ['.astro', '.vue', '.svelte'];
|
|
128
|
+
// Markup/component extensions the style extractor reads (embedded <style> blocks
|
|
129
|
+
// and class attributes). This is the single source of truth for the extractor's
|
|
130
|
+
// markup dispatch — the gates in styleIndexer.ts and the dispatch in
|
|
131
|
+
// styleExtractor.ts derive from it so a newly supported dialect is handled
|
|
132
|
+
// everywhere at once instead of silently dropped from one list. `.html` is
|
|
133
|
+
// included because scoped runs may pass HTML files, even though `.html` is NOT
|
|
134
|
+
// discovered by default (recall-protocol's ~11,928 spec-dump `.html` files would
|
|
135
|
+
// blow up a full audit).
|
|
136
|
+
export const STYLE_MARKUP_EXTENSIONS = ['.html', ...MARKUP_EXTENSIONS];
|
|
137
|
+
// Dialects the style indexer cannot yet read (Sass/SCSS indented syntax, Less,
|
|
138
|
+
// Stylus). Not discovered as source — the indexer records them as *unread*
|
|
139
|
+
// stylesheet sources (Spec 42 R2) so undefined-class never asserts on a class
|
|
140
|
+
// that could be defined in one of these.
|
|
141
|
+
export const UNREAD_STYLE_EXTENSIONS = ['.less', '.styl', '.sass'];
|
|
55
142
|
// Raw-source extensions — no tree-sitter grammar, included for visitors that
|
|
56
143
|
// read sourceCode directly (e.g. SQL migrations, TOML config, Prisma schemas)
|
|
57
144
|
export const SQL_EXTENSIONS = ['.sql'];
|
|
58
145
|
export const TOML_EXTENSIONS = ['.toml'];
|
|
59
146
|
export const PRISMA_EXTENSIONS = ['.prisma'];
|
|
60
147
|
export const RAW_EXTENSIONS = [...SQL_EXTENSIONS, ...TOML_EXTENSIONS, ...PRISMA_EXTENSIONS];
|
|
61
|
-
|
|
148
|
+
// NOTE: .html is deliberately NOT here — recall-protocol has ~11,928 .html
|
|
149
|
+
// files (spec dumps) and reading them all would blow up the audit. Markup
|
|
150
|
+
// extensions are added because they are real component files with styles.
|
|
151
|
+
export const ALL_EXTENSIONS = [...TYPESCRIPT_EXTENSIONS, ...JAVASCRIPT_EXTENSIONS, ...JSON_EXTENSIONS, ...GO_EXTENSIONS, ...CSS_EXTENSIONS, ...RAW_EXTENSIONS, ...MARKUP_EXTENSIONS];
|
|
152
|
+
// Every extension the analysis layer understands as source — style-bearing
|
|
153
|
+
// (TS/JS/markup/CSS) plus non-style (JSON/Go/SQL/TOML/Prisma), with `.html`
|
|
154
|
+
// added since scoped runs may pass it even though it is not discovered by
|
|
155
|
+
// default. Single source of truth for the style extractor's "loud" default
|
|
156
|
+
// branch: an extension that reaches it unhandled is recorded as an unread
|
|
157
|
+
// source (Spec 42 R2) *only* when it is NOT in this set, so a genuinely unknown
|
|
158
|
+
// dialect (`.mdx`, `.md`, …) surfaces instead of a silent zero while legitimate
|
|
159
|
+
// non-style source and `.css`/`.scss` (handled by the AST pipeline) stay silent.
|
|
160
|
+
export const KNOWN_SOURCE_EXTENSIONS = [...ALL_EXTENSIONS, '.html'];
|
|
62
161
|
/**
|
|
63
|
-
*
|
|
64
|
-
*
|
|
65
|
-
*
|
|
162
|
+
* Classify a path against the excluded-directory split (Spec 44 + Spec 45 R1).
|
|
163
|
+
*
|
|
164
|
+
* Only checks directory components *below* the scan root to avoid false
|
|
165
|
+
* matches against filesystem roots like /tmp or /temp. A component that is a
|
|
166
|
+
* default *infra* dir prunes silently (aggregate); every other excluded
|
|
167
|
+
* component — default *content* dirs and any user-supplied dir — is enumerated
|
|
168
|
+
* per-file so nothing is silently dropped.
|
|
169
|
+
*
|
|
170
|
+
* Spec 45 R1: a basename matches only as the *first* component below the scan
|
|
171
|
+
* root, unless it is one of the `DEFAULT_EXCLUDED_ANY_DEPTH_DIRS` entries
|
|
172
|
+
* (unambiguous toolchain/transient names — see the per-entry list on that
|
|
173
|
+
* constant), which match at any depth. This keeps `src/pages/docs/…` and
|
|
174
|
+
* `src/pages/…/build/…` as source instead of silently pruning them, while still
|
|
175
|
+
* pruning nested `node_modules`, `.cache`, `.code-index`, and `tmp`.
|
|
66
176
|
*/
|
|
67
|
-
function
|
|
177
|
+
function classifyExcludedDir(filePath, excludeDirs, scanRoot) {
|
|
68
178
|
// Get the relative path below scanRoot
|
|
69
179
|
const relPath = path.relative(scanRoot, filePath);
|
|
70
180
|
// If the path is outside scanRoot (shouldn't happen), don't exclude
|
|
71
181
|
if (relPath.startsWith('..'))
|
|
72
|
-
return
|
|
182
|
+
return null;
|
|
73
183
|
const parts = relPath.split(path.sep);
|
|
74
|
-
|
|
184
|
+
for (let i = 0; i < parts.length; i++) {
|
|
185
|
+
const part = parts[i];
|
|
186
|
+
if (!excludeDirs.includes(part))
|
|
187
|
+
continue;
|
|
188
|
+
// Root-anchored entries match only at the first component; any-depth
|
|
189
|
+
// entries (`node_modules`, `.git`) match anywhere below the scan root.
|
|
190
|
+
if (i !== 0 && !DEFAULT_EXCLUDED_ANY_DEPTH_DIRS.has(part))
|
|
191
|
+
continue;
|
|
192
|
+
if (DEFAULT_EXCLUDED_INFRA_DIRS.includes(part))
|
|
193
|
+
return { kind: 'infra', dir: part };
|
|
194
|
+
return { kind: 'content', dir: part };
|
|
195
|
+
}
|
|
196
|
+
return null;
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Recursively list every file under a directory, any extension. Used only for
|
|
200
|
+
* *content* exclude dirs (small, enumerated per-file under accounting).
|
|
201
|
+
*/
|
|
202
|
+
async function enumerateAllFiles(dir) {
|
|
203
|
+
const out = [];
|
|
204
|
+
try {
|
|
205
|
+
const entries = await fs.readdir(dir, { withFileTypes: true });
|
|
206
|
+
for (const entry of entries) {
|
|
207
|
+
const fullPath = path.join(dir, entry.name);
|
|
208
|
+
if (entry.isDirectory()) {
|
|
209
|
+
out.push(...(await enumerateAllFiles(fullPath)));
|
|
210
|
+
}
|
|
211
|
+
else if (entry.isFile()) {
|
|
212
|
+
out.push(fullPath);
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
catch {
|
|
217
|
+
// Unreadable subtree — skip (mirrors the walk's EACCES tolerance).
|
|
218
|
+
}
|
|
219
|
+
return out;
|
|
75
220
|
}
|
|
76
221
|
/**
|
|
77
222
|
* Recursively find files matching criteria
|
|
@@ -82,7 +227,21 @@ async function findFilesRecursive(dir, options) {
|
|
|
82
227
|
const entries = await fs.readdir(dir, { withFileTypes: true });
|
|
83
228
|
for (const entry of entries) {
|
|
84
229
|
const fullPath = path.join(dir, entry.name);
|
|
85
|
-
|
|
230
|
+
const excl = classifyExcludedDir(fullPath, options.excludeDirs, options.scanRoot);
|
|
231
|
+
if (excl) {
|
|
232
|
+
const rule = DEFAULT_EXCLUDED_DIRS.includes(excl.dir) ? 'DEFAULT_EXCLUDED_DIRS' : 'excludeDirs';
|
|
233
|
+
if (excl.kind === 'infra') {
|
|
234
|
+
// Aggregate — never per-file (node_modules is not enumerable at scale).
|
|
235
|
+
options.fileAccounting?.recordInfraPruned(excl.dir, rule);
|
|
236
|
+
}
|
|
237
|
+
else if (entry.isDirectory() && options.fileAccounting) {
|
|
238
|
+
// Content dir — enumerated per-file, each dropped: directory pruned.
|
|
239
|
+
// This is what makes `.mdx` under `docs/` appear (Spec 44 acceptance 5).
|
|
240
|
+
const contentFiles = await enumerateAllFiles(fullPath);
|
|
241
|
+
for (const f of contentFiles) {
|
|
242
|
+
options.fileAccounting.recordDropped('directory pruned', f, { directory: excl.dir, rule });
|
|
243
|
+
}
|
|
244
|
+
}
|
|
86
245
|
continue;
|
|
87
246
|
}
|
|
88
247
|
if (entry.isDirectory()) {
|
|
@@ -99,6 +258,18 @@ async function findFilesRecursive(dir, options) {
|
|
|
99
258
|
results.push(fullPath);
|
|
100
259
|
}
|
|
101
260
|
}
|
|
261
|
+
else if (ext !== '') {
|
|
262
|
+
// Record the extension discovery skipped so the report can answer
|
|
263
|
+
// "what isn't being analyzed here" (Spec 43 R5 follow-up) rather than
|
|
264
|
+
// silently dropping the file at discovery.
|
|
265
|
+
options.onSkippedExtension?.(ext, fullPath);
|
|
266
|
+
// Spec 44 reason 2 — a file with a known (or unknown) extension that
|
|
267
|
+
// is simply not in the discovery set.
|
|
268
|
+
options.fileAccounting?.recordDropped('extension not known', fullPath, {
|
|
269
|
+
ext,
|
|
270
|
+
kind: KNOWN_SOURCE_EXTENSIONS.includes(ext) ? 'known-but-not-discovered' : 'unknown',
|
|
271
|
+
});
|
|
272
|
+
}
|
|
102
273
|
}
|
|
103
274
|
}
|
|
104
275
|
}
|
|
@@ -119,13 +290,24 @@ export async function findFiles(rootDir = process.cwd(), options = {}) {
|
|
|
119
290
|
const files = await findFilesRecursive(rootDir, {
|
|
120
291
|
extensions,
|
|
121
292
|
excludeDirs,
|
|
122
|
-
scanRoot: rootDir
|
|
293
|
+
scanRoot: rootDir,
|
|
294
|
+
...(options.onSkippedExtension ? { onSkippedExtension: options.onSkippedExtension } : {}),
|
|
295
|
+
...(options.fileAccounting ? { fileAccounting: options.fileAccounting } : {})
|
|
123
296
|
});
|
|
124
297
|
// Apply additional filtering
|
|
125
|
-
|
|
298
|
+
const filtered = filterFiles(files, {
|
|
126
299
|
includePaths: options.includePaths,
|
|
127
|
-
excludePaths: options.excludePaths
|
|
300
|
+
excludePaths: options.excludePaths,
|
|
301
|
+
fileAccounting: options.fileAccounting
|
|
128
302
|
});
|
|
303
|
+
// Spec 44 — every candidate that survives discovery filtering is "touched"
|
|
304
|
+
// (it will be classified analyzed/dropped in stage 2). Recording it here —
|
|
305
|
+
// after include/exclude filtering — means a positive-selection `includePaths`
|
|
306
|
+
// narrows the universe instead of producing touched-but-dropped entries.
|
|
307
|
+
if (options.fileAccounting) {
|
|
308
|
+
for (const f of filtered)
|
|
309
|
+
options.fileAccounting.recordTouched(f);
|
|
310
|
+
}
|
|
129
311
|
// Sort for consistent output
|
|
130
312
|
return filtered.sort();
|
|
131
313
|
}
|
|
@@ -170,13 +352,20 @@ export async function findFilesByPattern(rootDir = process.cwd(), pattern, optio
|
|
|
170
352
|
extensions,
|
|
171
353
|
excludeDirs,
|
|
172
354
|
pattern: regex,
|
|
173
|
-
scanRoot: rootDir
|
|
355
|
+
scanRoot: rootDir,
|
|
356
|
+
...(options.onSkippedExtension ? { onSkippedExtension: options.onSkippedExtension } : {}),
|
|
357
|
+
...(options.fileAccounting ? { fileAccounting: options.fileAccounting } : {})
|
|
174
358
|
});
|
|
175
359
|
// Apply additional filtering
|
|
176
|
-
|
|
360
|
+
const filtered = filterFiles(files, {
|
|
177
361
|
includePaths: options.includePaths,
|
|
178
|
-
excludePaths: options.excludePaths
|
|
362
|
+
excludePaths: options.excludePaths,
|
|
363
|
+
fileAccounting: options.fileAccounting
|
|
179
364
|
});
|
|
365
|
+
if (options.fileAccounting) {
|
|
366
|
+
for (const f of filtered)
|
|
367
|
+
options.fileAccounting.recordTouched(f);
|
|
368
|
+
}
|
|
180
369
|
return filtered.sort();
|
|
181
370
|
}
|
|
182
371
|
/**
|
|
@@ -184,7 +373,8 @@ export async function findFilesByPattern(rootDir = process.cwd(), pattern, optio
|
|
|
184
373
|
*/
|
|
185
374
|
export function filterFiles(files, options = {}) {
|
|
186
375
|
let filtered = [...files];
|
|
187
|
-
// Apply include patterns
|
|
376
|
+
// Apply include patterns (positive selection — narrows the universe; a file
|
|
377
|
+
// removed here is simply not "touched", not dropped).
|
|
188
378
|
if (options.includePaths && options.includePaths.length > 0) {
|
|
189
379
|
filtered = filtered.filter(file => {
|
|
190
380
|
return options.includePaths.some(pattern => {
|
|
@@ -196,13 +386,22 @@ export function filterFiles(files, options = {}) {
|
|
|
196
386
|
}
|
|
197
387
|
// Apply exclude patterns
|
|
198
388
|
if (options.excludePaths && options.excludePaths.length > 0) {
|
|
199
|
-
|
|
200
|
-
|
|
389
|
+
const kept = [];
|
|
390
|
+
for (const file of filtered) {
|
|
391
|
+
const matched = options.excludePaths.find(pattern => {
|
|
201
392
|
// Convert glob patterns to regex
|
|
202
393
|
const regex = globToRegex(pattern);
|
|
203
394
|
return regex.test(file);
|
|
204
395
|
});
|
|
205
|
-
|
|
396
|
+
if (matched) {
|
|
397
|
+
// Spec 44 reason 1 — a user `excludePaths` prune, rule = the glob.
|
|
398
|
+
options.fileAccounting?.recordDropped('directory pruned', file, { rule: matched });
|
|
399
|
+
}
|
|
400
|
+
else {
|
|
401
|
+
kept.push(file);
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
filtered = kept;
|
|
206
405
|
}
|
|
207
406
|
return filtered;
|
|
208
407
|
}
|
|
@@ -258,4 +457,22 @@ export async function isReadableFile(filePath) {
|
|
|
258
457
|
* Alias for findFiles to match expected import
|
|
259
458
|
*/
|
|
260
459
|
export const discoverFiles = findFiles;
|
|
460
|
+
/**
|
|
461
|
+
* Discover files and simultaneously record the extensions discovery skipped.
|
|
462
|
+
* Mirrors `findFiles` (same defaults and filtering), but the returned
|
|
463
|
+
* `skippedExtensions` is aggregated during the recursive walk — before
|
|
464
|
+
* `includePaths`/`excludePaths` filtering — so it reflects the full scan, not
|
|
465
|
+
* just the filtered subset. Sorted by count descending, then extension.
|
|
466
|
+
*/
|
|
467
|
+
export async function discoverFilesDetailed(rootDir = process.cwd(), options = {}) {
|
|
468
|
+
const counts = new Map();
|
|
469
|
+
const onSkippedExtension = (ext) => {
|
|
470
|
+
counts.set(ext, (counts.get(ext) ?? 0) + 1);
|
|
471
|
+
};
|
|
472
|
+
const files = await findFiles(rootDir, { ...options, onSkippedExtension });
|
|
473
|
+
const skippedExtensions = [...counts.entries()]
|
|
474
|
+
.map(([ext, count]) => ({ ext, count }))
|
|
475
|
+
.sort((a, b) => b.count - a.count || a.ext.localeCompare(b.ext));
|
|
476
|
+
return { files, skippedExtensions };
|
|
477
|
+
}
|
|
261
478
|
//# sourceMappingURL=fileDiscovery.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fileDiscovery.js","sourceRoot":"","sources":["../../src/utils/fileDiscovery.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,+CAA+C;AAC/C,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,cAAc;IACd,OAAO;IACP,MAAM;IACN,OAAO;IACP,MAAM;IACN,UAAU;IACV,QAAQ;IACR,KAAK;IACL,QAAQ;IACR,KAAK;IACL,MAAM;IACN,SAAS;IACT,OAAO;IACP,4EAA4E;IAC5E,MAAM;IACN,OAAO;IACP,QAAQ;IACR,SAAS;IACT,uEAAuE;IACvE,4EAA4E;IAC5E,0CAA0C;IAC1C,aAAa;CACd,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,GAAG,CAAC;IAC5C,mBAAmB;IACnB,mBAAmB;IACnB,kBAAkB;IAClB,oBAAoB;CACrB,CAAC,CAAC;AAEH,4BAA4B;AAC5B,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACrD,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACrD,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,OAAO,CAAC,CAAC;AACzC,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAK,CAAC,CAAC;AACrC,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAChD,6EAA6E;AAC7E,8EAA8E;AAC9E,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,MAAM,CAAC,CAAC;AACvC,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,OAAO,CAAC,CAAC;AACzC,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,SAAS,CAAC,CAAC;AAC7C,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,GAAG,cAAc,EAAE,GAAG,eAAe,EAAE,GAAG,iBAAiB,CAAC,CAAC;AAC5F,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,GAAG,qBAAqB,EAAE,GAAG,qBAAqB,EAAE,GAAG,eAAe,EAAE,GAAG,aAAa,EAAE,GAAG,cAAc,EAAE,GAAG,cAAc,CAAC,CAAC;AAU/J;;;;GAIG;AACH,SAAS,gBAAgB,CAAC,QAAgB,EAAE,WAAqB,EAAE,QAAgB;IACjF,uCAAuC;IACvC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAClD,oEAAoE;IACpE,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IAC3C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACtC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AACxD,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,kBAAkB,CAC/B,GAAW,EACX,OAKC;IAED,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAE/D,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YAE5C,IAAI,gBAAgB,CAAC,QAAQ,EAAE,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACtE,SAAS;YACX,CAAC;YAED,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;gBACxB,MAAM,UAAU,GAAG,MAAM,kBAAkB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;gBAC/D,OAAO,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC;YAC9B,CAAC;iBAAM,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;gBAC1B,0DAA0D;gBAC1D,IAAI,sBAAsB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;oBAAE,SAAS;gBACrD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACrC,IAAI,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;oBACrC,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;wBACzD,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oBACzB,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,0CAA0C;QAC1C,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACvD,OAAO,CAAC,KAAK,CAAC,2BAA2B,GAAG,GAAG,EAAE,KAAK,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,OAAO,GAAW,OAAO,CAAC,GAAG,EAAE,EAC/B,OAAO,GAAyB,EAAE;IAElC,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,cAAc,CAAC;IACxD,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,qBAAqB,CAAC;IAEjE,MAAM,KAAK,GAAG,MAAM,kBAAkB,CAAC,OAAO,EAAE;QAC9C,UAAU;QACV,WAAW;QACX,QAAQ,EAAE,OAAO;KAClB,CAAC,CAAC;IAEH,6BAA6B;IAC7B,IAAI,QAAQ,GAAG,WAAW,CAAC,KAAK,EAAE;QAChC,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,YAAY,EAAE,OAAO,CAAC,YAAY;KACnC,CAAC,CAAC;IAEH,6BAA6B;IAC7B,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;AACzB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,OAAO,GAAW,OAAO,CAAC,GAAG,EAAE,EAC/B,OAAO,GAA6C,EAAE;IAEtD,OAAO,SAAS,CAAC,OAAO,EAAE;QACxB,GAAG,OAAO;QACV,UAAU,EAAE,qBAAqB;KAClC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,OAAO,GAAW,OAAO,CAAC,GAAG,EAAE,EAC/B,OAAO,GAA6C,EAAE;IAEtD,OAAO,SAAS,CAAC,OAAO,EAAE;QACxB,GAAG,OAAO;QACV,UAAU,EAAE,qBAAqB;KAClC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,OAAO,GAAW,OAAO,CAAC,GAAG,EAAE,EAC/B,OAAO,GAA6C,EAAE;IAEtD,OAAO,SAAS,CAAC,OAAO,EAAE;QACxB,GAAG,OAAO;QACV,UAAU,EAAE,eAAe;KAC5B,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,OAAO,GAAW,OAAO,CAAC,GAAG,EAAE,EAC/B,OAAwB,EACxB,OAAO,GAAyB,EAAE;IAElC,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,cAAc,CAAC;IACxD,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,qBAAqB,CAAC;IAEjE,6CAA6C;IAC7C,MAAM,KAAK,GAAG,OAAO,OAAO,KAAK,QAAQ;QACvC,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC1C,CAAC,CAAC,OAAO,CAAC;IAEZ,MAAM,KAAK,GAAG,MAAM,kBAAkB,CAAC,OAAO,EAAE;QAC9C,UAAU;QACV,WAAW;QACX,OAAO,EAAE,KAAK;QACd,QAAQ,EAAE,OAAO;KAClB,CAAC,CAAC;IAEH,6BAA6B;IAC7B,IAAI,QAAQ,GAAG,WAAW,CAAC,KAAK,EAAE;QAChC,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,YAAY,EAAE,OAAO,CAAC,YAAY;KACnC,CAAC,CAAC;IAEH,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;AACzB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CACzB,KAAe,EACf,OAAO,GAGH,EAAE;IAEN,IAAI,QAAQ,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;IAE1B,yBAAyB;IACzB,IAAI,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5D,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;YAChC,OAAO,OAAO,CAAC,YAAa,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;gBAC1C,iCAAiC;gBACjC,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;gBACnC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1B,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED,yBAAyB;IACzB,IAAI,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5D,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;YAChC,OAAO,CAAC,OAAO,CAAC,YAAa,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;gBAC3C,iCAAiC;gBACjC,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;gBACnC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1B,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,SAAS,WAAW,CAAC,OAAe;IAClC,iDAAiD;IACjD,IAAI,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;IACzD,sEAAsE;IACtE,sEAAsE;IACtE,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IACzC,4CAA4C;IAC5C,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACvD,wDAAwD;IACxD,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACzC,OAAO,IAAI,MAAM,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC;AAClC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,QAAgB;IAKjD,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAEtC,6BAA6B;IAC7B,IAAI,KAAyB,CAAC;IAC9B,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACrD,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;IACrC,CAAC;IAAC,MAAM,CAAC;QACP,qCAAqC;IACvC,CAAC;IAED,OAAO;QACL,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,QAAQ,EAAE,KAAK,CAAC,KAAK;QACrB,KAAK;KACN,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,QAAgB;IACnD,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC7C,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACtC,OAAO,KAAK,CAAC,MAAM,EAAE,CAAC;IACxB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,SAAS,CAAC"}
|
|
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.16",
|
|
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",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "code-auditor",
|
|
3
3
|
"description": "Diff-scoped code quality auditing on every edit. Indexes your codebase, enforces invariants, and feeds violations back to the agent so fixes happen inline.",
|
|
4
|
-
"version": "3.4.
|
|
4
|
+
"version": "3.4.16",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Ben Hammond",
|
|
7
7
|
"email": "ben@benhammond.tech"
|