codebase-context 1.6.1 → 1.7.0
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/README.md +142 -46
- package/dist/analyzers/angular/index.d.ts +4 -0
- package/dist/analyzers/angular/index.d.ts.map +1 -1
- package/dist/analyzers/angular/index.js +51 -10
- package/dist/analyzers/angular/index.js.map +1 -1
- package/dist/analyzers/generic/index.d.ts +1 -0
- package/dist/analyzers/generic/index.d.ts.map +1 -1
- package/dist/analyzers/generic/index.js +89 -10
- package/dist/analyzers/generic/index.js.map +1 -1
- package/dist/cli.d.ts +8 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +352 -0
- package/dist/cli.js.map +1 -0
- package/dist/constants/codebase-context.d.ts +13 -0
- package/dist/constants/codebase-context.d.ts.map +1 -1
- package/dist/constants/codebase-context.js +13 -0
- package/dist/constants/codebase-context.js.map +1 -1
- package/dist/core/index-meta.d.ts +24 -0
- package/dist/core/index-meta.d.ts.map +1 -0
- package/dist/core/index-meta.js +204 -0
- package/dist/core/index-meta.js.map +1 -0
- package/dist/core/indexer.d.ts +0 -5
- package/dist/core/indexer.d.ts.map +1 -1
- package/dist/core/indexer.js +265 -60
- package/dist/core/indexer.js.map +1 -1
- package/dist/core/search.d.ts +1 -0
- package/dist/core/search.d.ts.map +1 -1
- package/dist/core/search.js +60 -5
- package/dist/core/search.js.map +1 -1
- package/dist/core/symbol-references.d.ts +21 -0
- package/dist/core/symbol-references.d.ts.map +1 -0
- package/dist/core/symbol-references.js +91 -0
- package/dist/core/symbol-references.js.map +1 -0
- package/dist/eval/harness.d.ts +5 -0
- package/dist/eval/harness.d.ts.map +1 -0
- package/dist/eval/harness.js +153 -0
- package/dist/eval/harness.js.map +1 -0
- package/dist/eval/types.d.ts +59 -0
- package/dist/eval/types.d.ts.map +1 -0
- package/dist/eval/types.js +2 -0
- package/dist/eval/types.js.map +1 -0
- package/dist/grammars/manifest.d.ts +26 -0
- package/dist/grammars/manifest.d.ts.map +1 -0
- package/dist/grammars/manifest.js +63 -0
- package/dist/grammars/manifest.js.map +1 -0
- package/dist/index.d.ts +12 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +146 -1231
- package/dist/index.js.map +1 -1
- package/dist/memory/store.d.ts +3 -0
- package/dist/memory/store.d.ts.map +1 -1
- package/dist/memory/store.js +9 -0
- package/dist/memory/store.js.map +1 -1
- package/dist/patterns/semantics.d.ts +6 -0
- package/dist/patterns/semantics.d.ts.map +1 -1
- package/dist/patterns/semantics.js +22 -6
- package/dist/patterns/semantics.js.map +1 -1
- package/dist/preflight/evidence-lock.d.ts +8 -0
- package/dist/preflight/evidence-lock.d.ts.map +1 -1
- package/dist/preflight/evidence-lock.js +49 -3
- package/dist/preflight/evidence-lock.js.map +1 -1
- package/dist/storage/lancedb.d.ts +9 -1
- package/dist/storage/lancedb.d.ts.map +1 -1
- package/dist/storage/lancedb.js +26 -8
- package/dist/storage/lancedb.js.map +1 -1
- package/dist/tools/detect-circular-dependencies.d.ts +5 -0
- package/dist/tools/detect-circular-dependencies.d.ts.map +1 -0
- package/dist/tools/detect-circular-dependencies.js +117 -0
- package/dist/tools/detect-circular-dependencies.js.map +1 -0
- package/dist/tools/get-codebase-metadata.d.ts +5 -0
- package/dist/tools/get-codebase-metadata.d.ts.map +1 -0
- package/dist/tools/get-codebase-metadata.js +53 -0
- package/dist/tools/get-codebase-metadata.js.map +1 -0
- package/dist/tools/get-component-usage.d.ts +5 -0
- package/dist/tools/get-component-usage.d.ts.map +1 -0
- package/dist/tools/get-component-usage.js +83 -0
- package/dist/tools/get-component-usage.js.map +1 -0
- package/dist/tools/get-indexing-status.d.ts +5 -0
- package/dist/tools/get-indexing-status.d.ts.map +1 -0
- package/dist/tools/get-indexing-status.js +44 -0
- package/dist/tools/get-indexing-status.js.map +1 -0
- package/dist/tools/get-memory.d.ts +5 -0
- package/dist/tools/get-memory.d.ts.map +1 -0
- package/dist/tools/get-memory.js +89 -0
- package/dist/tools/get-memory.js.map +1 -0
- package/dist/tools/get-style-guide.d.ts +5 -0
- package/dist/tools/get-style-guide.d.ts.map +1 -0
- package/dist/tools/get-style-guide.js +151 -0
- package/dist/tools/get-style-guide.js.map +1 -0
- package/dist/tools/get-symbol-references.d.ts +5 -0
- package/dist/tools/get-symbol-references.d.ts.map +1 -0
- package/dist/tools/get-symbol-references.js +70 -0
- package/dist/tools/get-symbol-references.js.map +1 -0
- package/dist/tools/get-team-patterns.d.ts +5 -0
- package/dist/tools/get-team-patterns.d.ts.map +1 -0
- package/dist/tools/get-team-patterns.js +131 -0
- package/dist/tools/get-team-patterns.js.map +1 -0
- package/dist/tools/index.d.ts +6 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +41 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/refresh-index.d.ts +5 -0
- package/dist/tools/refresh-index.d.ts.map +1 -0
- package/dist/tools/refresh-index.js +40 -0
- package/dist/tools/refresh-index.js.map +1 -0
- package/dist/tools/remember.d.ts +5 -0
- package/dist/tools/remember.d.ts.map +1 -0
- package/dist/tools/remember.js +101 -0
- package/dist/tools/remember.js.map +1 -0
- package/dist/tools/search-codebase.d.ts +5 -0
- package/dist/tools/search-codebase.d.ts.map +1 -0
- package/dist/tools/search-codebase.js +638 -0
- package/dist/tools/search-codebase.js.map +1 -0
- package/dist/tools/types.d.ts +31 -0
- package/dist/tools/types.d.ts.map +1 -0
- package/dist/tools/types.js +2 -0
- package/dist/tools/types.js.map +1 -0
- package/dist/types/index.d.ts +8 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/utils/ast-chunker.d.ts +71 -0
- package/dist/utils/ast-chunker.d.ts.map +1 -0
- package/dist/utils/ast-chunker.js +453 -0
- package/dist/utils/ast-chunker.js.map +1 -0
- package/dist/utils/chunking.d.ts.map +1 -1
- package/dist/utils/chunking.js +10 -3
- package/dist/utils/chunking.js.map +1 -1
- package/dist/utils/dependency-detection.d.ts +2 -1
- package/dist/utils/dependency-detection.d.ts.map +1 -1
- package/dist/utils/dependency-detection.js.map +1 -1
- package/dist/utils/language-detection.d.ts.map +1 -1
- package/dist/utils/language-detection.js +20 -0
- package/dist/utils/language-detection.js.map +1 -1
- package/dist/utils/tree-sitter.d.ts +17 -0
- package/dist/utils/tree-sitter.d.ts.map +1 -0
- package/dist/utils/tree-sitter.js +311 -0
- package/dist/utils/tree-sitter.js.map +1 -0
- package/docs/capabilities.md +131 -37
- package/grammars/.gitkeep +0 -0
- package/grammars/tree-sitter-c.wasm +0 -0
- package/grammars/tree-sitter-c_sharp.wasm +0 -0
- package/grammars/tree-sitter-cpp.wasm +0 -0
- package/grammars/tree-sitter-go.wasm +0 -0
- package/grammars/tree-sitter-java.wasm +0 -0
- package/grammars/tree-sitter-javascript.wasm +0 -0
- package/grammars/tree-sitter-python.wasm +0 -0
- package/grammars/tree-sitter-rust.wasm +0 -0
- package/grammars/tree-sitter-tsx.wasm +0 -0
- package/grammars/tree-sitter-typescript.wasm +0 -0
- package/package.json +12 -5
package/dist/core/search.js
CHANGED
|
@@ -12,6 +12,7 @@ import { IndexCorruptedError } from '../errors/index.js';
|
|
|
12
12
|
import { isTestingRelatedQuery } from '../preflight/query-scope.js';
|
|
13
13
|
import { assessSearchQuality } from './search-quality.js';
|
|
14
14
|
import { rerank } from './reranker.js';
|
|
15
|
+
import { readIndexMeta, validateIndexArtifacts } from './index-meta.js';
|
|
15
16
|
import { CODEBASE_CONTEXT_DIRNAME, INTELLIGENCE_FILENAME, KEYWORD_INDEX_FILENAME, VECTOR_DB_DIRNAME } from '../constants/codebase-context.js';
|
|
16
17
|
const DEFAULT_SEARCH_OPTIONS = {
|
|
17
18
|
useSemanticSearch: true,
|
|
@@ -73,6 +74,7 @@ const QUERY_STOP_WORDS = new Set([
|
|
|
73
74
|
export class CodebaseSearcher {
|
|
74
75
|
rootPath;
|
|
75
76
|
storagePath;
|
|
77
|
+
indexMeta = null;
|
|
76
78
|
fuseIndex = null;
|
|
77
79
|
chunks = [];
|
|
78
80
|
embeddingProvider = null;
|
|
@@ -89,6 +91,9 @@ export class CodebaseSearcher {
|
|
|
89
91
|
if (this.initialized)
|
|
90
92
|
return;
|
|
91
93
|
try {
|
|
94
|
+
// Fail closed on version mismatch/corruption before serving any results.
|
|
95
|
+
this.indexMeta = await readIndexMeta(this.rootPath);
|
|
96
|
+
await validateIndexArtifacts(this.rootPath, this.indexMeta);
|
|
92
97
|
await this.loadKeywordIndex();
|
|
93
98
|
await this.loadPatternIntelligence();
|
|
94
99
|
this.embeddingProvider = await getEmbeddingProvider();
|
|
@@ -109,7 +114,15 @@ export class CodebaseSearcher {
|
|
|
109
114
|
try {
|
|
110
115
|
const indexPath = path.join(this.rootPath, CODEBASE_CONTEXT_DIRNAME, KEYWORD_INDEX_FILENAME);
|
|
111
116
|
const content = await fs.readFile(indexPath, 'utf-8');
|
|
112
|
-
|
|
117
|
+
const parsed = JSON.parse(content);
|
|
118
|
+
if (Array.isArray(parsed)) {
|
|
119
|
+
throw new IndexCorruptedError('Legacy keyword index format detected (missing header). Rebuild required.');
|
|
120
|
+
}
|
|
121
|
+
const chunks = parsed && Array.isArray(parsed.chunks) ? parsed.chunks : null;
|
|
122
|
+
if (!chunks) {
|
|
123
|
+
throw new IndexCorruptedError('Keyword index corrupted: expected { header, chunks }');
|
|
124
|
+
}
|
|
125
|
+
this.chunks = chunks;
|
|
113
126
|
this.fuseIndex = new Fuse(this.chunks, {
|
|
114
127
|
keys: [
|
|
115
128
|
{ name: 'content', weight: 0.4 },
|
|
@@ -127,9 +140,10 @@ export class CodebaseSearcher {
|
|
|
127
140
|
});
|
|
128
141
|
}
|
|
129
142
|
catch (error) {
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
143
|
+
if (error instanceof IndexCorruptedError) {
|
|
144
|
+
throw error;
|
|
145
|
+
}
|
|
146
|
+
throw new IndexCorruptedError(`Keyword index load failed (rebuild required): ${error instanceof Error ? error.message : String(error)}`);
|
|
133
147
|
}
|
|
134
148
|
}
|
|
135
149
|
/**
|
|
@@ -513,6 +527,20 @@ export class CodebaseSearcher {
|
|
|
513
527
|
};
|
|
514
528
|
})
|
|
515
529
|
.sort((a, b) => b.score - a.score);
|
|
530
|
+
// SEARCH-01: Definition-first boost for EXACT_NAME intent
|
|
531
|
+
// Boost results where symbolName matches query (case-insensitive)
|
|
532
|
+
if (intent === 'EXACT_NAME') {
|
|
533
|
+
const queryNormalized = query.toLowerCase();
|
|
534
|
+
for (const result of scoredResults) {
|
|
535
|
+
const symbolName = result.metadata?.symbolName;
|
|
536
|
+
if (symbolName && symbolName.toLowerCase() === queryNormalized) {
|
|
537
|
+
result.score *= 1.15; // +15% boost for definition
|
|
538
|
+
}
|
|
539
|
+
}
|
|
540
|
+
// Re-sort after boost
|
|
541
|
+
scoredResults.sort((a, b) => b.score - a.score);
|
|
542
|
+
}
|
|
543
|
+
// File-level deduplication
|
|
516
544
|
const seenFiles = new Set();
|
|
517
545
|
const deduped = [];
|
|
518
546
|
for (const result of scoredResults) {
|
|
@@ -524,7 +552,34 @@ export class CodebaseSearcher {
|
|
|
524
552
|
if (deduped.length >= limit)
|
|
525
553
|
break;
|
|
526
554
|
}
|
|
527
|
-
|
|
555
|
+
// SEARCH-01: Symbol-level deduplication
|
|
556
|
+
// Within each symbol group (symbolPath), keep only the highest-scoring chunk
|
|
557
|
+
const seenSymbols = new Map();
|
|
558
|
+
const symbolDeduped = [];
|
|
559
|
+
for (const result of deduped) {
|
|
560
|
+
const symbolPath = result.metadata?.symbolPath;
|
|
561
|
+
if (!symbolPath) {
|
|
562
|
+
// No symbol info, keep as-is
|
|
563
|
+
symbolDeduped.push(result);
|
|
564
|
+
continue;
|
|
565
|
+
}
|
|
566
|
+
const symbolPathKey = Array.isArray(symbolPath) ? symbolPath.join('.') : String(symbolPath);
|
|
567
|
+
const existing = seenSymbols.get(symbolPathKey);
|
|
568
|
+
if (!existing || result.score > existing.score) {
|
|
569
|
+
if (existing) {
|
|
570
|
+
// Replace lower-scoring version
|
|
571
|
+
const idx = symbolDeduped.indexOf(existing);
|
|
572
|
+
if (idx >= 0) {
|
|
573
|
+
symbolDeduped[idx] = result;
|
|
574
|
+
}
|
|
575
|
+
}
|
|
576
|
+
else {
|
|
577
|
+
symbolDeduped.push(result);
|
|
578
|
+
}
|
|
579
|
+
seenSymbols.set(symbolPathKey, result);
|
|
580
|
+
}
|
|
581
|
+
}
|
|
582
|
+
const finalResults = symbolDeduped;
|
|
528
583
|
if (isNonTestQuery &&
|
|
529
584
|
finalResults.length < 3 &&
|
|
530
585
|
finalResults.length < limit &&
|
package/dist/core/search.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/core/search.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/core/search.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export interface SymbolUsage {
|
|
2
|
+
file: string;
|
|
3
|
+
line: number;
|
|
4
|
+
preview: string;
|
|
5
|
+
}
|
|
6
|
+
interface SymbolReferencesSuccess {
|
|
7
|
+
status: 'success';
|
|
8
|
+
symbol: string;
|
|
9
|
+
usageCount: number;
|
|
10
|
+
usages: SymbolUsage[];
|
|
11
|
+
confidence: 'syntactic';
|
|
12
|
+
isComplete: boolean;
|
|
13
|
+
}
|
|
14
|
+
interface SymbolReferencesError {
|
|
15
|
+
status: 'error';
|
|
16
|
+
message: string;
|
|
17
|
+
}
|
|
18
|
+
export type SymbolReferencesResult = SymbolReferencesSuccess | SymbolReferencesError;
|
|
19
|
+
export declare function findSymbolReferences(rootPath: string, symbol: string, limit?: number): Promise<SymbolReferencesResult>;
|
|
20
|
+
export {};
|
|
21
|
+
//# sourceMappingURL=symbol-references.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"symbol-references.d.ts","sourceRoot":"","sources":["../../src/core/symbol-references.ts"],"names":[],"mappings":"AAYA,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,uBAAuB;IAC/B,MAAM,EAAE,SAAS,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,UAAU,EAAE,WAAW,CAAC;IACxB,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,UAAU,qBAAqB;IAC7B,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,sBAAsB,GAAG,uBAAuB,GAAG,qBAAqB,CAAC;AA8BrF,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,KAAK,SAAK,GACT,OAAO,CAAC,sBAAsB,CAAC,CAmFjC"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { promises as fs } from 'fs';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import { CODEBASE_CONTEXT_DIRNAME, KEYWORD_INDEX_FILENAME } from '../constants/codebase-context.js';
|
|
4
|
+
import { IndexCorruptedError } from '../errors/index.js';
|
|
5
|
+
function escapeRegex(value) {
|
|
6
|
+
return value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
7
|
+
}
|
|
8
|
+
function getUsageFile(rootPath, chunk) {
|
|
9
|
+
if (typeof chunk.relativePath === 'string' && chunk.relativePath.trim()) {
|
|
10
|
+
return chunk.relativePath.replace(/\\/g, '/');
|
|
11
|
+
}
|
|
12
|
+
if (typeof chunk.filePath === 'string' && chunk.filePath.trim()) {
|
|
13
|
+
const relativePath = path.relative(rootPath, chunk.filePath);
|
|
14
|
+
if (!relativePath || relativePath.startsWith('..')) {
|
|
15
|
+
return path.basename(chunk.filePath);
|
|
16
|
+
}
|
|
17
|
+
return relativePath.replace(/\\/g, '/');
|
|
18
|
+
}
|
|
19
|
+
return 'unknown';
|
|
20
|
+
}
|
|
21
|
+
function buildPreview(content, lineOffset) {
|
|
22
|
+
const lines = content.split('\n');
|
|
23
|
+
const start = Math.max(0, lineOffset - 1);
|
|
24
|
+
const end = Math.min(lines.length, lineOffset + 2);
|
|
25
|
+
const previewLines = lines.slice(start, end);
|
|
26
|
+
return previewLines.join('\n').trim();
|
|
27
|
+
}
|
|
28
|
+
export async function findSymbolReferences(rootPath, symbol, limit = 10) {
|
|
29
|
+
const normalizedSymbol = symbol.trim();
|
|
30
|
+
const normalizedLimit = Number.isFinite(limit) && limit > 0 ? Math.floor(limit) : 10;
|
|
31
|
+
if (!normalizedSymbol) {
|
|
32
|
+
return {
|
|
33
|
+
status: 'error',
|
|
34
|
+
message: 'Symbol is required'
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
const indexPath = path.join(rootPath, CODEBASE_CONTEXT_DIRNAME, KEYWORD_INDEX_FILENAME);
|
|
38
|
+
let chunksRaw;
|
|
39
|
+
try {
|
|
40
|
+
const content = await fs.readFile(indexPath, 'utf-8');
|
|
41
|
+
chunksRaw = JSON.parse(content);
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
throw new IndexCorruptedError(`Keyword index missing or unreadable (rebuild required): ${error instanceof Error ? error.message : String(error)}`);
|
|
45
|
+
}
|
|
46
|
+
if (Array.isArray(chunksRaw)) {
|
|
47
|
+
throw new IndexCorruptedError('Legacy keyword index format detected (missing header). Rebuild required.');
|
|
48
|
+
}
|
|
49
|
+
const chunks = chunksRaw && typeof chunksRaw === 'object' && Array.isArray(chunksRaw.chunks)
|
|
50
|
+
? chunksRaw.chunks
|
|
51
|
+
: null;
|
|
52
|
+
if (!chunks) {
|
|
53
|
+
throw new IndexCorruptedError('Keyword index corrupted: expected { header, chunks }');
|
|
54
|
+
}
|
|
55
|
+
const usages = [];
|
|
56
|
+
let usageCount = 0;
|
|
57
|
+
const escapedSymbol = escapeRegex(normalizedSymbol);
|
|
58
|
+
const matcher = new RegExp(`\\b${escapedSymbol}\\b`, 'g');
|
|
59
|
+
for (const chunkRaw of chunks) {
|
|
60
|
+
const chunk = chunkRaw;
|
|
61
|
+
if (typeof chunk.content !== 'string') {
|
|
62
|
+
continue;
|
|
63
|
+
}
|
|
64
|
+
const chunkContent = chunk.content;
|
|
65
|
+
const startLine = typeof chunk.startLine === 'number' ? chunk.startLine : 1;
|
|
66
|
+
matcher.lastIndex = 0;
|
|
67
|
+
let match;
|
|
68
|
+
while ((match = matcher.exec(chunkContent)) !== null) {
|
|
69
|
+
usageCount += 1;
|
|
70
|
+
if (usages.length >= normalizedLimit) {
|
|
71
|
+
continue;
|
|
72
|
+
}
|
|
73
|
+
const prefix = chunkContent.slice(0, match.index);
|
|
74
|
+
const lineOffset = prefix.split('\n').length - 1;
|
|
75
|
+
usages.push({
|
|
76
|
+
file: getUsageFile(rootPath, chunk),
|
|
77
|
+
line: startLine + lineOffset,
|
|
78
|
+
preview: buildPreview(chunkContent, lineOffset)
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
return {
|
|
83
|
+
status: 'success',
|
|
84
|
+
symbol: normalizedSymbol,
|
|
85
|
+
usageCount,
|
|
86
|
+
usages,
|
|
87
|
+
confidence: 'syntactic',
|
|
88
|
+
isComplete: usageCount < normalizedLimit
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=symbol-references.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"symbol-references.js","sourceRoot":"","sources":["../../src/core/symbol-references.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { EvalGate, EvalResult, EvalSummary, EvaluateFixtureParams, FormatEvalReportParams } from './types.js';
|
|
2
|
+
export declare function evaluateFixture({ fixture, searcher, limit, searchOptions }: EvaluateFixtureParams): Promise<EvalSummary>;
|
|
3
|
+
export declare function summarizeEvaluation(results: EvalResult[], gate?: EvalGate): EvalSummary;
|
|
4
|
+
export declare function formatEvalReport({ codebaseLabel, fixturePath, summary, redactPaths }: FormatEvalReportParams): string;
|
|
5
|
+
//# sourceMappingURL=harness.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"harness.d.ts","sourceRoot":"","sources":["../../src/eval/harness.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,QAAQ,EAER,UAAU,EACV,WAAW,EACX,qBAAqB,EACrB,sBAAsB,EACvB,MAAM,YAAY,CAAC;AA4GpB,wBAAsB,eAAe,CAAC,EACpC,OAAO,EACP,QAAQ,EACR,KAAS,EACT,aAAa,EACd,EAAE,qBAAqB,GAAG,OAAO,CAAC,WAAW,CAAC,CAS9C;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE,IAAI,GAAE,QAAc,GAAG,WAAW,CAsB5F;AAED,wBAAgB,gBAAgB,CAAC,EAC/B,aAAa,EACb,WAAW,EACX,OAAO,EACP,WAAkB,EACnB,EAAE,sBAAsB,GAAG,MAAM,CAuDjC"}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import crypto from 'crypto';
|
|
2
|
+
function normalizePath(filePath) {
|
|
3
|
+
return filePath.toLowerCase().replace(/\\/g, '/');
|
|
4
|
+
}
|
|
5
|
+
function isTestFile(filePath) {
|
|
6
|
+
const normalized = normalizePath(filePath);
|
|
7
|
+
return (normalized.includes('.spec.') ||
|
|
8
|
+
normalized.includes('.test.') ||
|
|
9
|
+
normalized.includes('/e2e/') ||
|
|
10
|
+
normalized.includes('/__tests__/'));
|
|
11
|
+
}
|
|
12
|
+
function matchesPattern(filePath, patterns) {
|
|
13
|
+
const normalized = normalizePath(filePath);
|
|
14
|
+
return patterns.some((pattern) => normalized.includes(pattern.toLowerCase()));
|
|
15
|
+
}
|
|
16
|
+
function dedupeByFile(results) {
|
|
17
|
+
const seen = new Set();
|
|
18
|
+
const deduped = [];
|
|
19
|
+
for (const result of results) {
|
|
20
|
+
const key = normalizePath(result.filePath);
|
|
21
|
+
if (seen.has(key)) {
|
|
22
|
+
continue;
|
|
23
|
+
}
|
|
24
|
+
seen.add(key);
|
|
25
|
+
deduped.push(result);
|
|
26
|
+
}
|
|
27
|
+
return deduped;
|
|
28
|
+
}
|
|
29
|
+
function getExpectedPatterns(query) {
|
|
30
|
+
return query.expectedPatterns ?? query.expectedTopFiles ?? [];
|
|
31
|
+
}
|
|
32
|
+
function getExpectedNotPatterns(query) {
|
|
33
|
+
return query.expectedNotPatterns ?? query.expectedNotTopFiles ?? [];
|
|
34
|
+
}
|
|
35
|
+
function evaluateQuery(query, results) {
|
|
36
|
+
const uniqueResults = dedupeByFile(results);
|
|
37
|
+
const topFile = uniqueResults.length > 0 ? uniqueResults[0].filePath : null;
|
|
38
|
+
const top3Files = uniqueResults.slice(0, 3).map((result) => result.filePath);
|
|
39
|
+
const expectedPatterns = getExpectedPatterns(query);
|
|
40
|
+
const expectedNotPatterns = getExpectedNotPatterns(query);
|
|
41
|
+
const top1Correct = topFile !== null &&
|
|
42
|
+
matchesPattern(topFile, expectedPatterns) &&
|
|
43
|
+
!matchesPattern(topFile, expectedNotPatterns);
|
|
44
|
+
const top3Recall = top3Files.some((filePath) => matchesPattern(filePath, expectedPatterns) && !matchesPattern(filePath, expectedNotPatterns));
|
|
45
|
+
const specCount = top3Files.filter((filePath) => isTestFile(filePath)).length;
|
|
46
|
+
const specContaminated = specCount >= 2;
|
|
47
|
+
return {
|
|
48
|
+
queryId: query.id,
|
|
49
|
+
query: query.query,
|
|
50
|
+
category: query.category,
|
|
51
|
+
expectedPatterns,
|
|
52
|
+
expectedNotPatterns,
|
|
53
|
+
topFile,
|
|
54
|
+
top3Files,
|
|
55
|
+
top1Correct,
|
|
56
|
+
top3Recall,
|
|
57
|
+
specContaminated,
|
|
58
|
+
score: uniqueResults.length > 0 ? uniqueResults[0].score : 0
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
function resolveGateThreshold(total, gate) {
|
|
62
|
+
if (gate <= 1) {
|
|
63
|
+
return Math.ceil(total * gate);
|
|
64
|
+
}
|
|
65
|
+
return Math.ceil(gate);
|
|
66
|
+
}
|
|
67
|
+
function hashPath(filePath) {
|
|
68
|
+
return crypto.createHash('sha1').update(normalizePath(filePath)).digest('hex').slice(0, 8);
|
|
69
|
+
}
|
|
70
|
+
function formatPath(filePath, redactPaths) {
|
|
71
|
+
if (!filePath) {
|
|
72
|
+
return 'none';
|
|
73
|
+
}
|
|
74
|
+
const normalized = filePath.replace(/\\/g, '/');
|
|
75
|
+
if (!redactPaths) {
|
|
76
|
+
return normalized;
|
|
77
|
+
}
|
|
78
|
+
const base = normalized.split('/').pop() || normalized;
|
|
79
|
+
return `path#${hashPath(normalized)}/${base}`;
|
|
80
|
+
}
|
|
81
|
+
export async function evaluateFixture({ fixture, searcher, limit = 5, searchOptions }) {
|
|
82
|
+
const results = [];
|
|
83
|
+
for (const query of fixture.queries) {
|
|
84
|
+
const searchResults = await searcher.search(query.query, limit, undefined, searchOptions);
|
|
85
|
+
results.push(evaluateQuery(query, searchResults));
|
|
86
|
+
}
|
|
87
|
+
return summarizeEvaluation(results);
|
|
88
|
+
}
|
|
89
|
+
export function summarizeEvaluation(results, gate = 0.7) {
|
|
90
|
+
const total = results.length;
|
|
91
|
+
const top1Correct = results.filter((result) => result.top1Correct).length;
|
|
92
|
+
const top3RecallCount = results.filter((result) => result.top3Recall).length;
|
|
93
|
+
const specContaminatedCount = results.filter((result) => result.specContaminated).length;
|
|
94
|
+
const avgTopScore = total > 0 ? results.reduce((sum, result) => sum + result.score, 0) / total : 0;
|
|
95
|
+
const gateThreshold = resolveGateThreshold(total, gate);
|
|
96
|
+
return {
|
|
97
|
+
total,
|
|
98
|
+
top1Correct,
|
|
99
|
+
top1Accuracy: total > 0 ? top1Correct / total : 0,
|
|
100
|
+
top3RecallCount,
|
|
101
|
+
top3Recall: total > 0 ? top3RecallCount / total : 0,
|
|
102
|
+
specContaminatedCount,
|
|
103
|
+
specContaminationRate: total > 0 ? specContaminatedCount / total : 0,
|
|
104
|
+
avgTopScore,
|
|
105
|
+
gateThreshold,
|
|
106
|
+
passesGate: total > 0 && top1Correct >= gateThreshold,
|
|
107
|
+
results
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
export function formatEvalReport({ codebaseLabel, fixturePath, summary, redactPaths = true }) {
|
|
111
|
+
const lines = [];
|
|
112
|
+
const wins = summary.results.filter((result) => result.top1Correct);
|
|
113
|
+
const failures = summary.results.filter((result) => !result.top1Correct);
|
|
114
|
+
lines.push(`\n=== Eval Report: ${codebaseLabel} ===`);
|
|
115
|
+
lines.push(`Fixture: ${fixturePath}`);
|
|
116
|
+
lines.push(`Top-1 Accuracy: ${summary.top1Correct}/${summary.total} (${(summary.top1Accuracy * 100).toFixed(0)}%)`);
|
|
117
|
+
lines.push(`Top-3 Recall: ${summary.top3RecallCount}/${summary.total} (${(summary.top3Recall * 100).toFixed(0)}%)`);
|
|
118
|
+
lines.push(`Spec Contamination: ${summary.specContaminatedCount}/${summary.total} (${(summary.specContaminationRate * 100).toFixed(0)}%)`);
|
|
119
|
+
lines.push(`Gate (${summary.gateThreshold}/${summary.total}): ${summary.passesGate ? 'PASS' : 'FAIL'}`);
|
|
120
|
+
lines.push(`Wins: ${wins.length} | Failures: ${failures.length}`);
|
|
121
|
+
lines.push('\nWins:');
|
|
122
|
+
if (wins.length === 0) {
|
|
123
|
+
lines.push(' (none)');
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
for (const result of wins) {
|
|
127
|
+
lines.push(` PASS #${result.queryId} [${result.category}] "${result.query}" -> ${formatPath(result.topFile, redactPaths)} (${result.score.toFixed(3)})`);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
lines.push('\nFailures:');
|
|
131
|
+
if (failures.length === 0) {
|
|
132
|
+
lines.push(' (none)');
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
for (const result of failures) {
|
|
136
|
+
lines.push(` FAIL #${result.queryId} [${result.category}] "${result.query}" -> ${formatPath(result.topFile, redactPaths)} (${result.score.toFixed(3)})`);
|
|
137
|
+
lines.push(` expected: ${result.expectedPatterns.join(' | ') || '(none)'}`);
|
|
138
|
+
lines.push(` expected-not: ${result.expectedNotPatterns.join(' | ') || '(none)'}`);
|
|
139
|
+
lines.push(' top-3 actual:');
|
|
140
|
+
if (result.top3Files.length === 0) {
|
|
141
|
+
lines.push(' 1. none');
|
|
142
|
+
}
|
|
143
|
+
else {
|
|
144
|
+
for (let index = 0; index < result.top3Files.length; index++) {
|
|
145
|
+
lines.push(` ${index + 1}. ${formatPath(result.top3Files[index], redactPaths)}`);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
lines.push('\n================================');
|
|
151
|
+
return lines.join('\n');
|
|
152
|
+
}
|
|
153
|
+
//# sourceMappingURL=harness.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"harness.js","sourceRoot":"","sources":["../../src/eval/harness.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import type { SearchOptions, CodebaseSearcher } from '../core/search.js';
|
|
2
|
+
export interface EvalQuery {
|
|
3
|
+
id: number;
|
|
4
|
+
query: string;
|
|
5
|
+
category: string;
|
|
6
|
+
expectedPatterns?: string[];
|
|
7
|
+
expectedNotPatterns?: string[];
|
|
8
|
+
expectedTopFiles?: string[];
|
|
9
|
+
expectedNotTopFiles?: string[];
|
|
10
|
+
notes?: string;
|
|
11
|
+
}
|
|
12
|
+
export interface EvalFixture {
|
|
13
|
+
description?: string;
|
|
14
|
+
codebase?: string;
|
|
15
|
+
repository?: string;
|
|
16
|
+
frozenDate?: string;
|
|
17
|
+
notes?: string;
|
|
18
|
+
queries: EvalQuery[];
|
|
19
|
+
}
|
|
20
|
+
export interface EvalResult {
|
|
21
|
+
queryId: number;
|
|
22
|
+
query: string;
|
|
23
|
+
category: string;
|
|
24
|
+
expectedPatterns: string[];
|
|
25
|
+
expectedNotPatterns: string[];
|
|
26
|
+
topFile: string | null;
|
|
27
|
+
top3Files: string[];
|
|
28
|
+
top1Correct: boolean;
|
|
29
|
+
top3Recall: boolean;
|
|
30
|
+
specContaminated: boolean;
|
|
31
|
+
score: number;
|
|
32
|
+
}
|
|
33
|
+
export interface EvalSummary {
|
|
34
|
+
total: number;
|
|
35
|
+
top1Correct: number;
|
|
36
|
+
top1Accuracy: number;
|
|
37
|
+
top3RecallCount: number;
|
|
38
|
+
top3Recall: number;
|
|
39
|
+
specContaminatedCount: number;
|
|
40
|
+
specContaminationRate: number;
|
|
41
|
+
avgTopScore: number;
|
|
42
|
+
gateThreshold: number;
|
|
43
|
+
passesGate: boolean;
|
|
44
|
+
results: EvalResult[];
|
|
45
|
+
}
|
|
46
|
+
export interface EvaluateFixtureParams {
|
|
47
|
+
fixture: EvalFixture;
|
|
48
|
+
searcher: CodebaseSearcher;
|
|
49
|
+
limit?: number;
|
|
50
|
+
searchOptions?: SearchOptions;
|
|
51
|
+
}
|
|
52
|
+
export type EvalGate = number;
|
|
53
|
+
export interface FormatEvalReportParams {
|
|
54
|
+
codebaseLabel: string;
|
|
55
|
+
fixturePath: string;
|
|
56
|
+
summary: EvalSummary;
|
|
57
|
+
redactPaths?: boolean;
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/eval/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAEzE,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,SAAS,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;IACrB,UAAU,EAAE,OAAO,CAAC;IACpB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,EAAE,UAAU,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,WAAW,CAAC;IACrB,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B;AAED,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC;AAE9B,MAAM,WAAW,sBAAsB;IACrC,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,WAAW,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/eval/types.ts"],"names":[],"mappings":""}
|