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
package/dist/codeIndexDB.d.ts
CHANGED
|
@@ -4,8 +4,9 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import Database from 'better-sqlite3';
|
|
6
6
|
import type { CompleteProjectTaskResult, CreateProjectTaskInput, ListProjectTasksOptions, ListProjectTasksTreeNode, ProjectTask, ProjectTaskDeleteMode } from './types/projectTask.js';
|
|
7
|
-
import { EnhancedFunctionMetadata, FunctionMetadata, SearchResult, SearchOptions, SchemaDefinition, SchemaIndexMetadata, SchemaUsage } from './types.js';
|
|
7
|
+
import { EnhancedFunctionMetadata, FunctionMetadata, DryFunctionIndexEntry, SearchResult, SearchOptions, SchemaDefinition, SchemaIndexMetadata, SchemaUsage } from './types.js';
|
|
8
8
|
import { WhitelistEntry, WhitelistType, WhitelistStatus, WhitelistSuggestion } from './types/whitelist.js';
|
|
9
|
+
export declare const DB_BUSY_TIMEOUT_MS = 30000;
|
|
9
10
|
export declare class CodeIndexDB {
|
|
10
11
|
private static instance;
|
|
11
12
|
/** Subclasses (e.g. EnhancedCodeIndexDB) need access for extra tables without `as any`. */
|
|
@@ -38,6 +39,12 @@ export declare class CodeIndexDB {
|
|
|
38
39
|
static getInstance(dbPath?: string, projectRoot?: string): CodeIndexDB;
|
|
39
40
|
/** Reset the singleton — used by tests that need a fresh in-memory instance. */
|
|
40
41
|
static resetInstance(): void;
|
|
42
|
+
/**
|
|
43
|
+
* The project root the current singleton was opened for (undefined when opened
|
|
44
|
+
* cwd-scoped). Detached-job readers use this to resolve the same DB the writer
|
|
45
|
+
* opened, without re-resolving against cwd and flipping the singleton away.
|
|
46
|
+
*/
|
|
47
|
+
static get currentProject(): string | undefined;
|
|
41
48
|
initialize(): Promise<void>;
|
|
42
49
|
private initializeInternal;
|
|
43
50
|
private runMigrations;
|
|
@@ -56,11 +63,33 @@ export declare class CodeIndexDB {
|
|
|
56
63
|
error: string;
|
|
57
64
|
}>;
|
|
58
65
|
}>;
|
|
66
|
+
/**
|
|
67
|
+
* Upsert/remove one file's function rows. Runs inside the caller's
|
|
68
|
+
* transaction (no nested `db.transaction` here) so a batch sync can wrap many
|
|
69
|
+
* files in a single write transaction.
|
|
70
|
+
*/
|
|
71
|
+
private syncFileIndexRow;
|
|
59
72
|
syncFileIndex(filePath: string, currentFunctions: (FunctionMetadata | EnhancedFunctionMetadata)[]): Promise<{
|
|
60
73
|
added: number;
|
|
61
74
|
updated: number;
|
|
62
75
|
removed: number;
|
|
63
76
|
}>;
|
|
77
|
+
/**
|
|
78
|
+
* Batch variant of {@link syncFileIndex}: upsert many files in a single write
|
|
79
|
+
* transaction, then rebuild the dependency graph once (unscoped). The
|
|
80
|
+
* detached-audit path previously called {@link syncFileIndex} once per file —
|
|
81
|
+
* one transaction plus one dependency-graph rebuild per file, and the
|
|
82
|
+
* rebuild's un-scoped `SELECT` made that O(files × functions). Collapsing it
|
|
83
|
+
* to one transaction is Amendment B2.
|
|
84
|
+
*/
|
|
85
|
+
syncFileIndexBatch(entries: Array<{
|
|
86
|
+
filePath: string;
|
|
87
|
+
currentFunctions: (FunctionMetadata | EnhancedFunctionMetadata)[];
|
|
88
|
+
}>): Promise<{
|
|
89
|
+
added: number;
|
|
90
|
+
updated: number;
|
|
91
|
+
removed: number;
|
|
92
|
+
}>;
|
|
64
93
|
updateDependencyGraph(filePath?: string): Promise<void>;
|
|
65
94
|
getTransitiveDependencies(functionName: string, maxDepth?: number): Promise<Array<{
|
|
66
95
|
name: string;
|
|
@@ -77,6 +106,16 @@ export declare class CodeIndexDB {
|
|
|
77
106
|
private rowToFunctionDoc;
|
|
78
107
|
findDefinition(name: string, filePath?: string): Promise<EnhancedFunctionMetadata | null>;
|
|
79
108
|
getAllFunctions(): Promise<EnhancedFunctionMetadata[]>;
|
|
109
|
+
/**
|
|
110
|
+
* Narrow variant for the scoped-DRY gate path (Spec 43 R4). Selects only the
|
|
111
|
+
* columns `buildFullFunctionHashmap` reads — name, file_path, start_line,
|
|
112
|
+
* line_number, body — so the hot `changed` path skips the wide JSON columns
|
|
113
|
+
* (`parameters`, `hooks`, `props`, `signature`, `metadata_json`,
|
|
114
|
+
* `content_hash`) and their per-row `JSON.parse` cost.
|
|
115
|
+
*/
|
|
116
|
+
getAllFunctionsForDry(): Promise<DryFunctionIndexEntry[]>;
|
|
117
|
+
/** Row count of the `functions` table — for callers that only need `.length`. */
|
|
118
|
+
getFunctionCount(): Promise<number>;
|
|
80
119
|
getStats(): Promise<{
|
|
81
120
|
totalFunctions: number;
|
|
82
121
|
languages: Record<string, number>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codeIndexDB.d.ts","sourceRoot":"","sources":["../src/codeIndexDB.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"codeIndexDB.d.ts","sourceRoot":"","sources":["../src/codeIndexDB.ts"],"names":[],"mappings":"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"}
|
package/dist/codeIndexDB.js
CHANGED
|
@@ -17,6 +17,14 @@ import { QueryParser, compileToSQL } from './search/QueryParser.js';
|
|
|
17
17
|
import { getPersistedStorageRoot, resolvePersistedIndexPath } from './dataPaths.js';
|
|
18
18
|
import { ContextualError, getErrnoCode } from './mcpToolErrors.js';
|
|
19
19
|
import { WhitelistType, WhitelistStatus } from './types/whitelist.js';
|
|
20
|
+
// ── SQLite busy timeout ─────────────────────────────────────────────────
|
|
21
|
+
// The database is shared across forked processes (a detached audit runner and
|
|
22
|
+
// its shard workers). better-sqlite3's default busy timeout (~5s) is too short
|
|
23
|
+
// for a running job's long completion transaction, so a queued job's lease
|
|
24
|
+
// `BEGIN IMMEDIATE` (or the runner's own writes) would throw SQLITE_BUSY
|
|
25
|
+
// ("database is locked") instead of waiting. A generous timeout makes
|
|
26
|
+
// contention block gracefully; the lease loop also retries SQLITE_BUSY.
|
|
27
|
+
export const DB_BUSY_TIMEOUT_MS = 30_000;
|
|
20
28
|
// ── Content hash ────────────────────────────────────────────────────────
|
|
21
29
|
function computeContentHash(body, signature) {
|
|
22
30
|
const normalized = (body ?? '').replace(/\s+/g, ' ').trim() + '|' + (signature ?? '').trim();
|
|
@@ -233,7 +241,7 @@ export class CodeIndexDB {
|
|
|
233
241
|
taskRepository = null;
|
|
234
242
|
stmts = new Map();
|
|
235
243
|
// ── Schema version ──────────────────────────────────────────────────
|
|
236
|
-
static SCHEMA_VERSION =
|
|
244
|
+
static SCHEMA_VERSION = 11;
|
|
237
245
|
constructor(dbPath = ':memory:') {
|
|
238
246
|
this.dbPath = dbPath === ':memory:' ? dbPath : path.resolve(dbPath);
|
|
239
247
|
}
|
|
@@ -279,6 +287,14 @@ export class CodeIndexDB {
|
|
|
279
287
|
}
|
|
280
288
|
CodeIndexDB.instance = null;
|
|
281
289
|
}
|
|
290
|
+
/**
|
|
291
|
+
* The project root the current singleton was opened for (undefined when opened
|
|
292
|
+
* cwd-scoped). Detached-job readers use this to resolve the same DB the writer
|
|
293
|
+
* opened, without re-resolving against cwd and flipping the singleton away.
|
|
294
|
+
*/
|
|
295
|
+
static get currentProject() {
|
|
296
|
+
return CodeIndexDB.currentProjectRoot;
|
|
297
|
+
}
|
|
282
298
|
// ── Lifecycle ───────────────────────────────────────────────────────
|
|
283
299
|
async initialize() {
|
|
284
300
|
if (this.isInitialized)
|
|
@@ -333,7 +349,7 @@ export class CodeIndexDB {
|
|
|
333
349
|
// Open SQLite database (with auto-recovery for corrupted files)
|
|
334
350
|
let retried = false;
|
|
335
351
|
try {
|
|
336
|
-
this.db = new Database(this.dbPath);
|
|
352
|
+
this.db = new Database(this.dbPath, { timeout: DB_BUSY_TIMEOUT_MS });
|
|
337
353
|
this.db.pragma('journal_mode = WAL');
|
|
338
354
|
this.db.pragma('foreign_keys = ON');
|
|
339
355
|
}
|
|
@@ -346,7 +362,7 @@ export class CodeIndexDB {
|
|
|
346
362
|
await fs.unlink(this.dbPath);
|
|
347
363
|
}
|
|
348
364
|
catch { /* ignore */ }
|
|
349
|
-
this.db = new Database(this.dbPath);
|
|
365
|
+
this.db = new Database(this.dbPath, { timeout: DB_BUSY_TIMEOUT_MS });
|
|
350
366
|
this.db.pragma('journal_mode = WAL');
|
|
351
367
|
this.db.pragma('foreign_keys = ON');
|
|
352
368
|
}
|
|
@@ -592,6 +608,85 @@ export class CodeIndexDB {
|
|
|
592
608
|
this.db.exec(`ALTER TABLE conventions ADD COLUMN export_kind TEXT`);
|
|
593
609
|
}
|
|
594
610
|
}
|
|
611
|
+
// Migration 8 → 9: Detached-run lifecycle + queryable coverage (Spec 41).
|
|
612
|
+
// `findings_ledger_runs` gains the job-lifecycle columns (status, timing,
|
|
613
|
+
// provenance, lease heartbeat, progress, stderr log); the one genuinely new
|
|
614
|
+
// table is `findings_ledger_coverage` (per-rule state + reason rows that
|
|
615
|
+
// `writeAuditToLedger` previously dropped).
|
|
616
|
+
if (currentVersion < 9) {
|
|
617
|
+
const runCols = this.db
|
|
618
|
+
.prepare(`PRAGMA table_info('findings_ledger_runs')`)
|
|
619
|
+
.all();
|
|
620
|
+
const hasRunCol = (name) => runCols.some((c) => c.name === name);
|
|
621
|
+
const newRunCols = [
|
|
622
|
+
['status', "TEXT NOT NULL DEFAULT 'completed'"],
|
|
623
|
+
['project_root', 'TEXT'],
|
|
624
|
+
['started_at', 'TEXT'],
|
|
625
|
+
['heartbeat_at', 'TEXT'],
|
|
626
|
+
['finished_at', 'TEXT'],
|
|
627
|
+
['error', 'TEXT'],
|
|
628
|
+
['progress_json', 'TEXT'],
|
|
629
|
+
['stderr_log', 'TEXT'],
|
|
630
|
+
['content_hash', 'TEXT'],
|
|
631
|
+
['files_count', 'INTEGER'],
|
|
632
|
+
['file_manifest_json', 'TEXT'],
|
|
633
|
+
];
|
|
634
|
+
for (const [name, decl] of newRunCols) {
|
|
635
|
+
if (!hasRunCol(name)) {
|
|
636
|
+
this.db.exec(`ALTER TABLE findings_ledger_runs ADD COLUMN ${name} ${decl}`);
|
|
637
|
+
}
|
|
638
|
+
}
|
|
639
|
+
this.db.exec(`
|
|
640
|
+
CREATE TABLE IF NOT EXISTS findings_ledger_coverage (
|
|
641
|
+
run_id TEXT NOT NULL REFERENCES findings_ledger_runs(run_id) ON DELETE CASCADE,
|
|
642
|
+
analyzer TEXT NOT NULL,
|
|
643
|
+
rule_id TEXT NOT NULL,
|
|
644
|
+
state TEXT NOT NULL,
|
|
645
|
+
count INTEGER NOT NULL DEFAULT 0,
|
|
646
|
+
reason TEXT,
|
|
647
|
+
PRIMARY KEY (run_id, analyzer, rule_id)
|
|
648
|
+
);
|
|
649
|
+
CREATE INDEX IF NOT EXISTS idx_ledger_coverage_run ON findings_ledger_coverage(run_id);
|
|
650
|
+
`);
|
|
651
|
+
}
|
|
652
|
+
// Migration 9 → 10: PID-based lease liveness (Spec 41 Amendment B).
|
|
653
|
+
// The heartbeat is no longer the primary liveness signal for the common
|
|
654
|
+
// case (a healthy child whose synchronous `syncFileIndex` phase starves the
|
|
655
|
+
// event loop, so its heartbeat interval cannot fire). The child records its
|
|
656
|
+
// PID + process start time + hostname at lease claim; `reclaimStaleRunning`
|
|
657
|
+
// then skips any `running` row whose PID is still the same live process, and
|
|
658
|
+
// only reclaims when the process is genuinely gone (or on a foreign host,
|
|
659
|
+
// where the PID means nothing and the heartbeat stays the fallback).
|
|
660
|
+
if (currentVersion < 10) {
|
|
661
|
+
const runCols = this.db
|
|
662
|
+
.prepare(`PRAGMA table_info('findings_ledger_runs')`)
|
|
663
|
+
.all();
|
|
664
|
+
const hasRunCol = (name) => runCols.some((c) => c.name === name);
|
|
665
|
+
const newRunCols = [
|
|
666
|
+
['runner_pid', 'INTEGER'],
|
|
667
|
+
['runner_pid_started_at', 'TEXT'],
|
|
668
|
+
['runner_host', 'TEXT'],
|
|
669
|
+
];
|
|
670
|
+
for (const [name, decl] of newRunCols) {
|
|
671
|
+
if (!hasRunCol(name)) {
|
|
672
|
+
this.db.exec(`ALTER TABLE findings_ledger_runs ADD COLUMN ${name} ${decl}`);
|
|
673
|
+
}
|
|
674
|
+
}
|
|
675
|
+
}
|
|
676
|
+
// Migration 10 → 11: unread stylesheet sources (Spec 42 R2).
|
|
677
|
+
// Records stylesheets whose dialect the style indexer cannot read, so
|
|
678
|
+
// styles/undefined-class can report notApplicable instead of asserting a
|
|
679
|
+
// class is undefined when it may live in one of these files.
|
|
680
|
+
if (currentVersion < 11) {
|
|
681
|
+
this.db.exec(`
|
|
682
|
+
CREATE TABLE IF NOT EXISTS style_unread_sources (
|
|
683
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
684
|
+
file_path TEXT NOT NULL UNIQUE,
|
|
685
|
+
reason TEXT NOT NULL,
|
|
686
|
+
created_at TEXT DEFAULT (datetime('now'))
|
|
687
|
+
);
|
|
688
|
+
`);
|
|
689
|
+
}
|
|
595
690
|
}
|
|
596
691
|
// ── SQLite schema ───────────────────────────────────────────────────
|
|
597
692
|
createSchema() {
|
|
@@ -817,7 +912,21 @@ export class CodeIndexDB {
|
|
|
817
912
|
target TEXT NOT NULL,
|
|
818
913
|
duration_ms INTEGER NOT NULL DEFAULT 0,
|
|
819
914
|
exit_status INTEGER NOT NULL DEFAULT 0,
|
|
820
|
-
metadata_json TEXT DEFAULT '{}'
|
|
915
|
+
metadata_json TEXT DEFAULT '{}',
|
|
916
|
+
status TEXT NOT NULL DEFAULT 'completed',
|
|
917
|
+
project_root TEXT,
|
|
918
|
+
started_at TEXT,
|
|
919
|
+
heartbeat_at TEXT,
|
|
920
|
+
finished_at TEXT,
|
|
921
|
+
error TEXT,
|
|
922
|
+
progress_json TEXT,
|
|
923
|
+
stderr_log TEXT,
|
|
924
|
+
content_hash TEXT,
|
|
925
|
+
files_count INTEGER,
|
|
926
|
+
file_manifest_json TEXT,
|
|
927
|
+
runner_pid INTEGER,
|
|
928
|
+
runner_pid_started_at TEXT,
|
|
929
|
+
runner_host TEXT
|
|
821
930
|
);
|
|
822
931
|
CREATE TABLE IF NOT EXISTS findings_ledger_findings (
|
|
823
932
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
@@ -831,8 +940,18 @@ export class CodeIndexDB {
|
|
|
831
940
|
symbol TEXT DEFAULT '',
|
|
832
941
|
fingerprint TEXT NOT NULL
|
|
833
942
|
);
|
|
943
|
+
CREATE TABLE IF NOT EXISTS findings_ledger_coverage (
|
|
944
|
+
run_id TEXT NOT NULL REFERENCES findings_ledger_runs(run_id) ON DELETE CASCADE,
|
|
945
|
+
analyzer TEXT NOT NULL,
|
|
946
|
+
rule_id TEXT NOT NULL,
|
|
947
|
+
state TEXT NOT NULL,
|
|
948
|
+
count INTEGER NOT NULL DEFAULT 0,
|
|
949
|
+
reason TEXT,
|
|
950
|
+
PRIMARY KEY (run_id, analyzer, rule_id)
|
|
951
|
+
);
|
|
834
952
|
CREATE INDEX IF NOT EXISTS idx_ledger_runs_surface ON findings_ledger_runs(surface);
|
|
835
953
|
CREATE INDEX IF NOT EXISTS idx_ledger_runs_timestamp ON findings_ledger_runs(timestamp);
|
|
954
|
+
CREATE INDEX IF NOT EXISTS idx_ledger_coverage_run ON findings_ledger_coverage(run_id);
|
|
836
955
|
CREATE INDEX IF NOT EXISTS idx_ledger_findings_run ON findings_ledger_findings(run_id);
|
|
837
956
|
CREATE INDEX IF NOT EXISTS idx_ledger_findings_fp ON findings_ledger_findings(fingerprint);
|
|
838
957
|
CREATE INDEX IF NOT EXISTS idx_ledger_findings_rule ON findings_ledger_findings(analyzer, rule);
|
|
@@ -887,6 +1006,16 @@ export class CodeIndexDB {
|
|
|
887
1006
|
CREATE INDEX IF NOT EXISTS idx_style_class_usage_file ON style_class_usage(file_path);
|
|
888
1007
|
CREATE INDEX IF NOT EXISTS idx_style_class_usage_unres ON style_class_usage(unresolvable);
|
|
889
1008
|
|
|
1009
|
+
-- Spec 42 R2: Stylesheet sources the style indexer could not read.
|
|
1010
|
+
-- When any rows exist, styles/undefined-class reports notApplicable
|
|
1011
|
+
-- instead of asserting a class is undefined (it may live in one of these).
|
|
1012
|
+
CREATE TABLE IF NOT EXISTS style_unread_sources (
|
|
1013
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
1014
|
+
file_path TEXT NOT NULL UNIQUE,
|
|
1015
|
+
reason TEXT NOT NULL,
|
|
1016
|
+
created_at TEXT DEFAULT (datetime('now'))
|
|
1017
|
+
);
|
|
1018
|
+
|
|
890
1019
|
-- Spec 12: Convention mining
|
|
891
1020
|
CREATE TABLE IF NOT EXISTS conventions (
|
|
892
1021
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
@@ -1020,7 +1149,7 @@ export class CodeIndexDB {
|
|
|
1020
1149
|
}
|
|
1021
1150
|
// Rename old LokiJS file FIRST, then create fresh SQLite DB
|
|
1022
1151
|
require('fs').renameSync(this.dbPath, bakPath);
|
|
1023
|
-
const migDb = new Database(this.dbPath);
|
|
1152
|
+
const migDb = new Database(this.dbPath, { timeout: DB_BUSY_TIMEOUT_MS });
|
|
1024
1153
|
migDb.pragma('journal_mode = WAL');
|
|
1025
1154
|
migDb.pragma('foreign_keys = ON');
|
|
1026
1155
|
// User-authored tables only (function index gets rebuilt by sync).
|
|
@@ -1309,52 +1438,72 @@ export class CodeIndexDB {
|
|
|
1309
1438
|
errors: errors
|
|
1310
1439
|
};
|
|
1311
1440
|
}
|
|
1441
|
+
/**
|
|
1442
|
+
* Upsert/remove one file's function rows. Runs inside the caller's
|
|
1443
|
+
* transaction (no nested `db.transaction` here) so a batch sync can wrap many
|
|
1444
|
+
* files in a single write transaction.
|
|
1445
|
+
*/
|
|
1446
|
+
syncFileIndexRow(filePath, currentFunctions, stats) {
|
|
1447
|
+
const existing = this.db.prepare('SELECT id, name, file_path, line_number FROM functions WHERE file_path = ?').all(filePath);
|
|
1448
|
+
const createKey = (f) => `${f.name ?? f.name}:${f.filePath ?? f.file_path}:${f.lineNumber ?? f.line_number}`;
|
|
1449
|
+
const currentMap = new Map(currentFunctions.map(f => [createKey(f), f]));
|
|
1450
|
+
// Insert/update current functions
|
|
1451
|
+
for (const func of currentFunctions) {
|
|
1452
|
+
const exists = existing.find(e => e.name === func.name && e.line_number === func.lineNumber);
|
|
1453
|
+
if (exists) {
|
|
1454
|
+
const row = this.functionToRow(func);
|
|
1455
|
+
const keys = Object.keys(row);
|
|
1456
|
+
const sets = keys.filter(k => k !== 'name' && k !== 'file_path').map(k => `"${k}" = @${k}`);
|
|
1457
|
+
const params = { ...row, _id: exists.id };
|
|
1458
|
+
this.db.prepare(`UPDATE functions SET ${sets.join(', ')} WHERE id = @_id`).run(params);
|
|
1459
|
+
stats.updated++;
|
|
1460
|
+
}
|
|
1461
|
+
else {
|
|
1462
|
+
const row = this.functionToRow(func);
|
|
1463
|
+
const keys = Object.keys(row);
|
|
1464
|
+
const sql = `INSERT INTO functions ("${keys.join('", "')}") VALUES (${keys.map(k => '@' + k).join(', ')})`;
|
|
1465
|
+
this.db.prepare(sql).run(row);
|
|
1466
|
+
stats.added++;
|
|
1467
|
+
}
|
|
1468
|
+
}
|
|
1469
|
+
// Remove stale functions
|
|
1470
|
+
for (const e of existing) {
|
|
1471
|
+
if (!currentMap.has(createKey(e))) {
|
|
1472
|
+
this.db.prepare('DELETE FROM functions WHERE id = ?').run(e.id);
|
|
1473
|
+
stats.removed++;
|
|
1474
|
+
}
|
|
1475
|
+
}
|
|
1476
|
+
}
|
|
1312
1477
|
async syncFileIndex(filePath, currentFunctions) {
|
|
1313
1478
|
this.ensureInitialized();
|
|
1314
1479
|
const stats = { added: 0, updated: 0, removed: 0 };
|
|
1315
|
-
|
|
1316
|
-
const existing = this.db.prepare('SELECT id, name, file_path, line_number FROM functions WHERE file_path = ?').all(filePath);
|
|
1317
|
-
const createKey = (f) => `${f.name ?? f.name}:${f.filePath ?? f.file_path}:${f.lineNumber ?? f.line_number}`;
|
|
1318
|
-
const currentMap = new Map(currentFunctions.map(f => [createKey(f), f]));
|
|
1319
|
-
// Insert/update current functions
|
|
1320
|
-
for (const func of currentFunctions) {
|
|
1321
|
-
const exists = existing.find(e => e.name === func.name && e.line_number === func.lineNumber);
|
|
1322
|
-
if (exists) {
|
|
1323
|
-
const row = this.functionToRow(func);
|
|
1324
|
-
const keys = Object.keys(row);
|
|
1325
|
-
const sets = keys.filter(k => k !== 'name' && k !== 'file_path').map(k => `"${k}" = @${k}`);
|
|
1326
|
-
const params = { ...row, _id: exists.id };
|
|
1327
|
-
this.db.prepare(`UPDATE functions SET ${sets.join(', ')} WHERE id = @_id`).run(params);
|
|
1328
|
-
stats.updated++;
|
|
1329
|
-
}
|
|
1330
|
-
else {
|
|
1331
|
-
const row = this.functionToRow(func);
|
|
1332
|
-
const keys = Object.keys(row);
|
|
1333
|
-
const sql = `INSERT INTO functions ("${keys.join('", "')}") VALUES (${keys.map(k => '@' + k).join(', ')})`;
|
|
1334
|
-
this.db.prepare(sql).run(row);
|
|
1335
|
-
stats.added++;
|
|
1336
|
-
}
|
|
1337
|
-
}
|
|
1338
|
-
// Remove stale functions
|
|
1339
|
-
for (const e of existing) {
|
|
1340
|
-
if (!currentMap.has(createKey(e))) {
|
|
1341
|
-
this.db.prepare('DELETE FROM functions WHERE id = ?').run(e.id);
|
|
1342
|
-
stats.removed++;
|
|
1343
|
-
}
|
|
1344
|
-
}
|
|
1345
|
-
});
|
|
1346
|
-
txn();
|
|
1480
|
+
this.db.transaction(() => this.syncFileIndexRow(filePath, currentFunctions, stats)).immediate();
|
|
1347
1481
|
await this.updateDependencyGraph(filePath);
|
|
1348
1482
|
return stats;
|
|
1349
1483
|
}
|
|
1484
|
+
/**
|
|
1485
|
+
* Batch variant of {@link syncFileIndex}: upsert many files in a single write
|
|
1486
|
+
* transaction, then rebuild the dependency graph once (unscoped). The
|
|
1487
|
+
* detached-audit path previously called {@link syncFileIndex} once per file —
|
|
1488
|
+
* one transaction plus one dependency-graph rebuild per file, and the
|
|
1489
|
+
* rebuild's un-scoped `SELECT` made that O(files × functions). Collapsing it
|
|
1490
|
+
* to one transaction is Amendment B2.
|
|
1491
|
+
*/
|
|
1492
|
+
async syncFileIndexBatch(entries) {
|
|
1493
|
+
this.ensureInitialized();
|
|
1494
|
+
const stats = { added: 0, updated: 0, removed: 0 };
|
|
1495
|
+
this.db.transaction(() => {
|
|
1496
|
+
for (const { filePath, currentFunctions } of entries) {
|
|
1497
|
+
this.syncFileIndexRow(filePath, currentFunctions, stats);
|
|
1498
|
+
}
|
|
1499
|
+
}).immediate();
|
|
1500
|
+
await this.updateDependencyGraph();
|
|
1501
|
+
return stats;
|
|
1502
|
+
}
|
|
1350
1503
|
// ── Dependency graph ────────────────────────────────────────────────
|
|
1351
1504
|
async updateDependencyGraph(filePath) {
|
|
1352
1505
|
this.ensureInitialized();
|
|
1353
1506
|
const txn = this.db.transaction(() => {
|
|
1354
|
-
// For functions in scope, rebuild their call edges
|
|
1355
|
-
const functions = filePath
|
|
1356
|
-
? this.db.prepare('SELECT id, name, file_path FROM functions WHERE file_path = ?').all(filePath)
|
|
1357
|
-
: this.db.prepare('SELECT id, name, file_path FROM functions').all();
|
|
1358
1507
|
// Clear existing call edges for scoped functions
|
|
1359
1508
|
if (filePath) {
|
|
1360
1509
|
this.db.prepare(`DELETE FROM function_calls WHERE caller_id IN (SELECT id FROM functions WHERE file_path = ?)`).run(filePath);
|
|
@@ -1369,12 +1518,14 @@ export class CodeIndexDB {
|
|
|
1369
1518
|
else {
|
|
1370
1519
|
this.db.prepare('DELETE FROM function_dependencies').run();
|
|
1371
1520
|
}
|
|
1372
|
-
// Rebuild from metadata
|
|
1521
|
+
// Rebuild edges from metadata. When scoped to one file, read only that
|
|
1522
|
+
// file's functions — a per-file call previously re-read every function
|
|
1523
|
+
// in the index, making the detached-audit loop O(files × functions).
|
|
1373
1524
|
const allFns = filePath
|
|
1374
|
-
? this.db.prepare('SELECT id, name, file_path, metadata_json FROM functions').all()
|
|
1525
|
+
? this.db.prepare('SELECT id, name, file_path, metadata_json FROM functions WHERE file_path = ?').all(filePath)
|
|
1375
1526
|
: this.db.prepare('SELECT id, name, file_path, metadata_json FROM functions').all();
|
|
1376
1527
|
const insertCall = this.db.prepare('INSERT OR IGNORE INTO function_calls (caller_id, callee_name) VALUES (?, ?)');
|
|
1377
|
-
const
|
|
1528
|
+
const insertFnDep = this.db.prepare('INSERT OR IGNORE INTO function_dependencies (function_id, dependency) VALUES (?, ?)');
|
|
1378
1529
|
for (const fn of allFns) {
|
|
1379
1530
|
const meta = tryParseJson(fn.metadata_json) ?? {};
|
|
1380
1531
|
if (meta.functionCalls) {
|
|
@@ -1382,11 +1533,6 @@ export class CodeIndexDB {
|
|
|
1382
1533
|
insertCall.run(fn.id, callee);
|
|
1383
1534
|
}
|
|
1384
1535
|
}
|
|
1385
|
-
}
|
|
1386
|
-
// Also rebuild dependency edges from the functions' import data
|
|
1387
|
-
const insertFnDep = this.db.prepare('INSERT OR IGNORE INTO function_dependencies (function_id, dependency) VALUES (?, ?)');
|
|
1388
|
-
for (const fn of allFns) {
|
|
1389
|
-
const meta = tryParseJson(fn.metadata_json) ?? {};
|
|
1390
1536
|
// Add specifier-level dependencies (e.g., useState, useEffect)
|
|
1391
1537
|
const usedImports = meta.usedImports ?? [];
|
|
1392
1538
|
for (const imp of usedImports) {
|
|
@@ -1400,7 +1546,7 @@ export class CodeIndexDB {
|
|
|
1400
1546
|
}
|
|
1401
1547
|
}
|
|
1402
1548
|
});
|
|
1403
|
-
txn();
|
|
1549
|
+
txn.immediate();
|
|
1404
1550
|
}
|
|
1405
1551
|
async getTransitiveDependencies(functionName, maxDepth = 10) {
|
|
1406
1552
|
this.ensureInitialized();
|
|
@@ -1641,6 +1787,32 @@ export class CodeIndexDB {
|
|
|
1641
1787
|
const rows = this.db.prepare('SELECT * FROM functions').all();
|
|
1642
1788
|
return rows.map((r) => this.rowToFunction(r));
|
|
1643
1789
|
}
|
|
1790
|
+
/**
|
|
1791
|
+
* Narrow variant for the scoped-DRY gate path (Spec 43 R4). Selects only the
|
|
1792
|
+
* columns `buildFullFunctionHashmap` reads — name, file_path, start_line,
|
|
1793
|
+
* line_number, body — so the hot `changed` path skips the wide JSON columns
|
|
1794
|
+
* (`parameters`, `hooks`, `props`, `signature`, `metadata_json`,
|
|
1795
|
+
* `content_hash`) and their per-row `JSON.parse` cost.
|
|
1796
|
+
*/
|
|
1797
|
+
async getAllFunctionsForDry() {
|
|
1798
|
+
this.ensureInitialized();
|
|
1799
|
+
const rows = this.db
|
|
1800
|
+
.prepare('SELECT name, file_path, start_line, line_number, body FROM functions')
|
|
1801
|
+
.all();
|
|
1802
|
+
return rows.map((r) => ({
|
|
1803
|
+
name: r.name,
|
|
1804
|
+
filePath: r.file_path,
|
|
1805
|
+
startLine: r.start_line ?? undefined,
|
|
1806
|
+
lineNumber: r.line_number ?? undefined,
|
|
1807
|
+
body: r.body ?? '',
|
|
1808
|
+
}));
|
|
1809
|
+
}
|
|
1810
|
+
/** Row count of the `functions` table — for callers that only need `.length`. */
|
|
1811
|
+
async getFunctionCount() {
|
|
1812
|
+
this.ensureInitialized();
|
|
1813
|
+
const row = this.db.prepare('SELECT COUNT(*) AS n FROM functions').get();
|
|
1814
|
+
return row?.n ?? 0;
|
|
1815
|
+
}
|
|
1644
1816
|
async getStats() {
|
|
1645
1817
|
this.ensureInitialized();
|
|
1646
1818
|
const totalFunctions = this.db.prepare('SELECT COUNT(*) as cnt FROM functions').get().cnt;
|