@codeledger/selector 0.2.1 → 0.5.1
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/dist/bundle-invalidation.d.ts +33 -0
- package/dist/bundle-invalidation.d.ts.map +1 -0
- package/dist/bundle-invalidation.js +98 -0
- package/dist/bundle-invalidation.js.map +1 -0
- package/dist/bundle.d.ts.map +1 -1
- package/dist/bundle.js +16 -4
- package/dist/bundle.js.map +1 -1
- package/dist/candidates.d.ts +18 -0
- package/dist/candidates.d.ts.map +1 -1
- package/dist/candidates.js +76 -2
- package/dist/candidates.js.map +1 -1
- package/dist/confidence.d.ts +2 -2
- package/dist/confidence.d.ts.map +1 -1
- package/dist/confidence.js +118 -2
- package/dist/confidence.js.map +1 -1
- package/dist/conflict-zones.d.ts +18 -0
- package/dist/conflict-zones.d.ts.map +1 -0
- package/dist/conflict-zones.js +66 -0
- package/dist/conflict-zones.js.map +1 -0
- package/dist/debt-detection.d.ts +15 -0
- package/dist/debt-detection.d.ts.map +1 -0
- package/dist/debt-detection.js +80 -0
- package/dist/debt-detection.js.map +1 -0
- package/dist/index.d.ts +13 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -1
- package/dist/index.js.map +1 -1
- package/dist/intent/drift.d.ts +31 -0
- package/dist/intent/drift.d.ts.map +1 -0
- package/dist/intent/drift.js +120 -0
- package/dist/intent/drift.js.map +1 -0
- package/dist/intent/hash.d.ts +19 -0
- package/dist/intent/hash.d.ts.map +1 -0
- package/dist/intent/hash.js +38 -0
- package/dist/intent/hash.js.map +1 -0
- package/dist/intent/index.d.ts +5 -0
- package/dist/intent/index.d.ts.map +1 -0
- package/dist/intent/index.js +4 -0
- package/dist/intent/index.js.map +1 -0
- package/dist/intent/normalize.d.ts +23 -0
- package/dist/intent/normalize.d.ts.map +1 -0
- package/dist/intent/normalize.js +35 -0
- package/dist/intent/normalize.js.map +1 -0
- package/dist/intent/types.d.ts +37 -0
- package/dist/intent/types.d.ts.map +1 -0
- package/dist/intent/types.js +2 -0
- package/dist/intent/types.js.map +1 -0
- package/dist/loop-detection.d.ts +28 -0
- package/dist/loop-detection.d.ts.map +1 -0
- package/dist/loop-detection.js +124 -0
- package/dist/loop-detection.js.map +1 -0
- package/dist/review-candidates.d.ts +23 -0
- package/dist/review-candidates.d.ts.map +1 -0
- package/dist/review-candidates.js +230 -0
- package/dist/review-candidates.js.map +1 -0
- package/dist/review-coverage.d.ts +33 -0
- package/dist/review-coverage.d.ts.map +1 -0
- package/dist/review-coverage.js +110 -0
- package/dist/review-coverage.js.map +1 -0
- package/dist/scope-contract.d.ts +26 -0
- package/dist/scope-contract.d.ts.map +1 -0
- package/dist/scope-contract.js +79 -0
- package/dist/scope-contract.js.map +1 -0
- package/dist/scorer.d.ts.map +1 -1
- package/dist/scorer.js +21 -2
- package/dist/scorer.js.map +1 -1
- package/dist/security-surface.d.ts +13 -0
- package/dist/security-surface.d.ts.map +1 -0
- package/dist/security-surface.js +45 -0
- package/dist/security-surface.js.map +1 -0
- package/dist/task-type.d.ts.map +1 -1
- package/dist/task-type.js +4 -2
- package/dist/task-type.js.map +1 -1
- package/package.json +3 -3
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compute review coverage by comparing the review bundle's required files
|
|
3
|
+
* against the session's actual read data.
|
|
4
|
+
*
|
|
5
|
+
* Three metrics:
|
|
6
|
+
* 1. File Coverage — did the agent open the file at all?
|
|
7
|
+
* 2. Depth-Weighted Coverage — how much of each file was actually read?
|
|
8
|
+
* 3. Temporal Alignment — did reads happen BEFORE claims, or after?
|
|
9
|
+
*/
|
|
10
|
+
export function computeReviewCoverage(requiredFiles, readDepths, readPaths, repoIndex, firstClaimTs) {
|
|
11
|
+
const requiredSet = new Set(requiredFiles);
|
|
12
|
+
const readPathSet = readPaths;
|
|
13
|
+
// Files actually read (intersection with required)
|
|
14
|
+
const filesRead = [];
|
|
15
|
+
const filesSkipped = [];
|
|
16
|
+
for (const rf of requiredFiles) {
|
|
17
|
+
if (readPathSet.has(rf)) {
|
|
18
|
+
filesRead.push(rf);
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
filesSkipped.push(rf);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
// File-level coverage
|
|
25
|
+
const fileCoverage = requiredFiles.length > 0
|
|
26
|
+
? filesRead.length / requiredFiles.length
|
|
27
|
+
: 1.0;
|
|
28
|
+
// Build file depth entries for required files
|
|
29
|
+
const depthMap = new Map();
|
|
30
|
+
for (const d of readDepths) {
|
|
31
|
+
depthMap.set(d.path, d);
|
|
32
|
+
}
|
|
33
|
+
// Build FileReadDepth entries for all required files (including unread ones)
|
|
34
|
+
const fileDepths = [];
|
|
35
|
+
const repoFileMap = new Map();
|
|
36
|
+
for (const f of repoIndex.files) {
|
|
37
|
+
repoFileMap.set(f.path, f.lines);
|
|
38
|
+
}
|
|
39
|
+
for (const rf of requiredFiles) {
|
|
40
|
+
const depthInfo = depthMap.get(rf);
|
|
41
|
+
if (depthInfo) {
|
|
42
|
+
fileDepths.push({
|
|
43
|
+
path: depthInfo.path,
|
|
44
|
+
total_lines: depthInfo.total_lines,
|
|
45
|
+
lines_read: depthInfo.lines_read,
|
|
46
|
+
read_depth: depthInfo.read_depth,
|
|
47
|
+
first_read_at: depthInfo.first_read_at,
|
|
48
|
+
read_count: depthInfo.read_count,
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
// Unread file
|
|
53
|
+
const totalLines = repoFileMap.get(rf) ?? 0;
|
|
54
|
+
fileDepths.push({
|
|
55
|
+
path: rf,
|
|
56
|
+
total_lines: totalLines,
|
|
57
|
+
lines_read: 0,
|
|
58
|
+
read_depth: 0,
|
|
59
|
+
first_read_at: '',
|
|
60
|
+
read_count: 0,
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
// Depth-weighted coverage: average read_depth across required files
|
|
65
|
+
let depthSum = 0;
|
|
66
|
+
for (const fd of fileDepths) {
|
|
67
|
+
depthSum += fd.read_depth;
|
|
68
|
+
}
|
|
69
|
+
const depthWeightedCoverage = requiredFiles.length > 0
|
|
70
|
+
? depthSum / requiredFiles.length
|
|
71
|
+
: 1.0;
|
|
72
|
+
// Post-hoc reads: files first read AFTER the first claim timestamp
|
|
73
|
+
let postHocReads = [];
|
|
74
|
+
if (firstClaimTs) {
|
|
75
|
+
for (const fd of fileDepths) {
|
|
76
|
+
if (fd.read_count > 0 &&
|
|
77
|
+
fd.first_read_at &&
|
|
78
|
+
fd.first_read_at > firstClaimTs &&
|
|
79
|
+
requiredSet.has(fd.path)) {
|
|
80
|
+
postHocReads.push(fd.path);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
postHocReads.sort();
|
|
84
|
+
}
|
|
85
|
+
return {
|
|
86
|
+
required_files: requiredFiles,
|
|
87
|
+
files_read: filesRead,
|
|
88
|
+
files_skipped: filesSkipped,
|
|
89
|
+
file_coverage: fileCoverage,
|
|
90
|
+
depth_weighted_coverage: depthWeightedCoverage,
|
|
91
|
+
file_depths: fileDepths,
|
|
92
|
+
post_hoc_reads: postHocReads,
|
|
93
|
+
analyzed_at: new Date().toISOString(),
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Evaluate whether coverage meets a threshold.
|
|
98
|
+
* Returns true if both file coverage and depth coverage meet their thresholds.
|
|
99
|
+
*/
|
|
100
|
+
export function meetsCoverageThreshold(report, fileCoverageThreshold, depthCoverageThreshold) {
|
|
101
|
+
return (report.file_coverage >= fileCoverageThreshold &&
|
|
102
|
+
report.depth_weighted_coverage >= depthCoverageThreshold);
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Get files that were only shallowly read (below a depth threshold).
|
|
106
|
+
*/
|
|
107
|
+
export function getShallowReads(report, shallowThreshold) {
|
|
108
|
+
return report.file_depths.filter((fd) => fd.read_count > 0 && fd.read_depth < shallowThreshold);
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=review-coverage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"review-coverage.js","sourceRoot":"","sources":["../src/review-coverage.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { ContextBundle, DepGraph, ScopeContract } from '@codeledger/types';
|
|
2
|
+
/**
|
|
3
|
+
* Derive a deterministic scope contract from a bundle.
|
|
4
|
+
*
|
|
5
|
+
* The scope contract defines which files are "in scope" for an agent session:
|
|
6
|
+
* - bundle_files: files directly selected by the scoring algorithm
|
|
7
|
+
* - neighbor_files: direct dependency neighbors (imports + dependents) of bundle files
|
|
8
|
+
*
|
|
9
|
+
* Any file edit outside this contract is considered "scope drift."
|
|
10
|
+
*/
|
|
11
|
+
export declare function deriveScopeContract(bundle: ContextBundle, depGraph: DepGraph, enforcement?: 'warn' | 'strict' | 'off'): ScopeContract;
|
|
12
|
+
/**
|
|
13
|
+
* Check whether a file path is within the scope contract.
|
|
14
|
+
* Returns true if the file is in-scope (either bundle file or neighbor).
|
|
15
|
+
*/
|
|
16
|
+
export declare function isInScope(filePath: string, contract: ScopeContract): boolean;
|
|
17
|
+
/**
|
|
18
|
+
* Check a list of changed files against the scope contract.
|
|
19
|
+
* Returns files that are outside the contract.
|
|
20
|
+
*/
|
|
21
|
+
export declare function detectScopeDrift(changedFiles: string[], contract: ScopeContract): string[];
|
|
22
|
+
/**
|
|
23
|
+
* Format the scope contract for inclusion in active-bundle.md.
|
|
24
|
+
*/
|
|
25
|
+
export declare function renderScopeContractMarkdown(contract: ScopeContract): string;
|
|
26
|
+
//# sourceMappingURL=scope-contract.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scope-contract.d.ts","sourceRoot":"","sources":["../src/scope-contract.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEhF;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,QAAQ,EAClB,WAAW,GAAE,MAAM,GAAG,QAAQ,GAAG,KAAc,GAC9C,aAAa,CAoBf;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,GAAG,OAAO,CAK5E;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,YAAY,EAAE,MAAM,EAAE,EACtB,QAAQ,EAAE,aAAa,GACtB,MAAM,EAAE,CAGV;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,aAAa,GAAG,MAAM,CAgC3E"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Derive a deterministic scope contract from a bundle.
|
|
3
|
+
*
|
|
4
|
+
* The scope contract defines which files are "in scope" for an agent session:
|
|
5
|
+
* - bundle_files: files directly selected by the scoring algorithm
|
|
6
|
+
* - neighbor_files: direct dependency neighbors (imports + dependents) of bundle files
|
|
7
|
+
*
|
|
8
|
+
* Any file edit outside this contract is considered "scope drift."
|
|
9
|
+
*/
|
|
10
|
+
export function deriveScopeContract(bundle, depGraph, enforcement = 'warn') {
|
|
11
|
+
const bundlePaths = new Set(bundle.files.map((f) => f.path));
|
|
12
|
+
// Collect dependency neighbors (one hop) of bundle files
|
|
13
|
+
const neighborPaths = new Set();
|
|
14
|
+
for (const filePath of bundlePaths) {
|
|
15
|
+
const imports = depGraph.imports[filePath] ?? [];
|
|
16
|
+
const dependents = depGraph.dependents[filePath] ?? [];
|
|
17
|
+
for (const dep of [...imports, ...dependents]) {
|
|
18
|
+
if (!bundlePaths.has(dep)) {
|
|
19
|
+
neighborPaths.add(dep);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
return {
|
|
24
|
+
bundle_files: [...bundlePaths],
|
|
25
|
+
neighbor_files: [...neighborPaths],
|
|
26
|
+
enforcement,
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Check whether a file path is within the scope contract.
|
|
31
|
+
* Returns true if the file is in-scope (either bundle file or neighbor).
|
|
32
|
+
*/
|
|
33
|
+
export function isInScope(filePath, contract) {
|
|
34
|
+
return (contract.bundle_files.includes(filePath)
|
|
35
|
+
|| contract.neighbor_files.includes(filePath));
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Check a list of changed files against the scope contract.
|
|
39
|
+
* Returns files that are outside the contract.
|
|
40
|
+
*/
|
|
41
|
+
export function detectScopeDrift(changedFiles, contract) {
|
|
42
|
+
const scopeSet = new Set([...contract.bundle_files, ...contract.neighbor_files]);
|
|
43
|
+
return changedFiles.filter((f) => !scopeSet.has(f));
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Format the scope contract for inclusion in active-bundle.md.
|
|
47
|
+
*/
|
|
48
|
+
export function renderScopeContractMarkdown(contract) {
|
|
49
|
+
if (contract.enforcement === 'off')
|
|
50
|
+
return '';
|
|
51
|
+
const lines = [];
|
|
52
|
+
lines.push('## Scope Contract');
|
|
53
|
+
lines.push('');
|
|
54
|
+
lines.push(`*Enforcement: ${contract.enforcement}*`);
|
|
55
|
+
lines.push('');
|
|
56
|
+
lines.push(`Files in scope: ${contract.bundle_files.length} bundle + ${contract.neighbor_files.length} neighbors`);
|
|
57
|
+
lines.push('');
|
|
58
|
+
if (contract.enforcement === 'strict') {
|
|
59
|
+
lines.push('> **Strict mode:** Edits to files outside this scope will be flagged.');
|
|
60
|
+
lines.push('');
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
lines.push('> **Warn mode:** Edits to files outside this scope generate a warning.');
|
|
64
|
+
lines.push('');
|
|
65
|
+
}
|
|
66
|
+
// List neighbor files (bundle files are already listed in the main section)
|
|
67
|
+
if (contract.neighbor_files.length > 0) {
|
|
68
|
+
lines.push('**Dependency neighbors (extended scope):**');
|
|
69
|
+
for (const f of contract.neighbor_files.slice(0, 20)) {
|
|
70
|
+
lines.push(`- \`${f}\``);
|
|
71
|
+
}
|
|
72
|
+
if (contract.neighbor_files.length > 20) {
|
|
73
|
+
lines.push(`- ... and ${contract.neighbor_files.length - 20} more`);
|
|
74
|
+
}
|
|
75
|
+
lines.push('');
|
|
76
|
+
}
|
|
77
|
+
return lines.join('\n');
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=scope-contract.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scope-contract.js","sourceRoot":"","sources":["../src/scope-contract.ts"],"names":[],"mappings":"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"}
|
package/dist/scorer.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scorer.d.ts","sourceRoot":"","sources":["../src/scorer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,QAAQ,EACR,YAAY,EACZ,SAAS,EACT,UAAU,EACV,eAAe,EACf,UAAU,EACX,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"scorer.d.ts","sourceRoot":"","sources":["../src/scorer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,QAAQ,EACR,YAAY,EACZ,SAAS,EACT,UAAU,EACV,eAAe,EACf,UAAU,EACX,MAAM,mBAAmB,CAAC;AAG3B,MAAM,WAAW,WAAW;IAC1B,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC3B,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACzB;AAkCD,wBAAgB,eAAe,CAC7B,IAAI,EAAE,QAAQ,EACd,YAAY,EAAE,MAAM,EAAE,EACtB,SAAS,EAAE,SAAS,EACpB,WAAW,CAAC,EAAE,WAAW,EACzB,YAAY,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAClC,kBAAkB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,GAC/B,YAAY,CA+Hd;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,YAAY,GAAG,YAAY,CAoBzE;AAED,wBAAgB,SAAS,CACvB,QAAQ,EAAE,YAAY,EACtB,OAAO,EAAE,eAAe,GACvB,MAAM,CAcR;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,YAAY,GAAG,UAAU,EAAE,CAiBlE;AAED,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,EACvB,YAAY,EAAE,MAAM,EAAE,EACtB,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,eAAe,EACxB,WAAW,CAAC,EAAE,WAAW,EACzB,YAAY,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAClC,WAAW,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,EACzB,kBAAkB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,EAChC,YAAY,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,GACzB,UAAU,EAAE,CA2Cd"}
|
package/dist/scorer.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { detectSecuritySurface } from './security-surface.js';
|
|
1
2
|
/** Path/name patterns that indicate error infrastructure files */
|
|
2
3
|
const ERROR_INFRA_PATTERNS = [
|
|
3
4
|
'error', 'exception', 'validation', 'validator', 'schema',
|
|
@@ -86,7 +87,14 @@ export function computeFeatures(file, taskKeywords, repoIndex, ledgerStats, toke
|
|
|
86
87
|
// TEST_RELEV: graduated test relevance based on test file richness.
|
|
87
88
|
// Instead of binary 0/1, tests with more assertions, describe blocks, and
|
|
88
89
|
// error handling patterns score higher — they're more valuable context.
|
|
90
|
+
//
|
|
91
|
+
// Two signals:
|
|
92
|
+
// 1. test_map presence: file has known test mappings (source↔test pairs)
|
|
93
|
+
// 2. Path-based detection: file IS a test file (.test., .spec., __tests__/)
|
|
94
|
+
// This catches test files that weren't discovered by test_map scanning.
|
|
89
95
|
const testMappings = repoIndex.test_map.filter((m) => m.source_file === file.path || m.test_file === file.path);
|
|
96
|
+
const isTestFile = /[./](?:test|spec)\.[^/]+$/.test(pathLower) ||
|
|
97
|
+
pathLower.includes('__tests__/');
|
|
90
98
|
let test_relevance = 0;
|
|
91
99
|
if (testMappings.length > 0) {
|
|
92
100
|
// Base score for having a test mapping
|
|
@@ -94,6 +102,10 @@ export function computeFeatures(file, taskKeywords, repoIndex, ledgerStats, toke
|
|
|
94
102
|
// Bonus based on number of test mappings (more coverage = higher relevance)
|
|
95
103
|
test_relevance += Math.min(0.5, testMappings.length * 0.25);
|
|
96
104
|
}
|
|
105
|
+
else if (isTestFile) {
|
|
106
|
+
// Path-based fallback: file looks like a test file but has no test_map entry
|
|
107
|
+
test_relevance = 0.4;
|
|
108
|
+
}
|
|
97
109
|
// SIZE_PEN: penalty for large files
|
|
98
110
|
const size_penalty = Math.max(0, Math.min(1, file.lines / 1000));
|
|
99
111
|
// SUCCESS_PRIOR / FAIL_PRIOR from ledger
|
|
@@ -103,6 +115,8 @@ export function computeFeatures(file, taskKeywords, repoIndex, ledgerStats, toke
|
|
|
103
115
|
const error_infrastructure = detectErrorInfrastructure(file);
|
|
104
116
|
// BRANCH_CHANGED: work-in-progress awareness — boost files on the current branch
|
|
105
117
|
const branch_changed = branchChangedFiles?.has(file.path) ? 1.0 : 0;
|
|
118
|
+
// SECURITY_SURFACE: detect security-sensitive files (auth, crypto, validation, routes)
|
|
119
|
+
const security_surface = detectSecuritySurface(file);
|
|
106
120
|
return {
|
|
107
121
|
keyword,
|
|
108
122
|
centrality,
|
|
@@ -114,6 +128,7 @@ export function computeFeatures(file, taskKeywords, repoIndex, ledgerStats, toke
|
|
|
114
128
|
fail_prior,
|
|
115
129
|
error_infrastructure,
|
|
116
130
|
branch_changed,
|
|
131
|
+
security_surface,
|
|
117
132
|
_hasContentMatch,
|
|
118
133
|
};
|
|
119
134
|
}
|
|
@@ -162,7 +177,8 @@ export function scoreFile(features, weights) {
|
|
|
162
177
|
features.success_prior * weights.success_prior -
|
|
163
178
|
features.fail_prior * weights.fail_prior +
|
|
164
179
|
features.error_infrastructure * (weights.error_infrastructure ?? 0.08) +
|
|
165
|
-
features.branch_changed * (weights.branch_changed ?? 0)
|
|
180
|
+
features.branch_changed * (weights.branch_changed ?? 0) +
|
|
181
|
+
(features.security_surface ?? 0) * (weights.security_surface ?? 0));
|
|
166
182
|
}
|
|
167
183
|
export function deriveReasons(features) {
|
|
168
184
|
const reasons = [];
|
|
@@ -188,6 +204,8 @@ export function deriveReasons(features) {
|
|
|
188
204
|
reasons.push('error_infrastructure');
|
|
189
205
|
if (features.branch_changed > 0)
|
|
190
206
|
reasons.push('branch_changed');
|
|
207
|
+
if ((features.security_surface ?? 0) > 0)
|
|
208
|
+
reasons.push('security_surface');
|
|
191
209
|
return reasons;
|
|
192
210
|
}
|
|
193
211
|
export function scoreAllCandidates(candidates, taskKeywords, repoIndex, weights, ledgerStats, tokenWeights, fanoutFiles, branchChangedFiles, surfaceFiles) {
|
|
@@ -199,11 +217,12 @@ export function scoreAllCandidates(candidates, taskKeywords, repoIndex, weights,
|
|
|
199
217
|
continue;
|
|
200
218
|
const rawFeatures = computeFeatures(file, taskKeywords, repoIndex, ledgerStats, tokenWeights, branchChangedFiles);
|
|
201
219
|
const gated = gateTemporalFeatures(rawFeatures);
|
|
202
|
-
// Preserve _hasContentMatch and
|
|
220
|
+
// Preserve _hasContentMatch, branch_changed, and security_surface through gating for reason derivation
|
|
203
221
|
const features = {
|
|
204
222
|
...gated,
|
|
205
223
|
_hasContentMatch: rawFeatures._hasContentMatch,
|
|
206
224
|
branch_changed: rawFeatures.branch_changed,
|
|
225
|
+
security_surface: rawFeatures.security_surface,
|
|
207
226
|
};
|
|
208
227
|
let score = scoreFile(features, weights);
|
|
209
228
|
const reasons = deriveReasons(features);
|
package/dist/scorer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scorer.js","sourceRoot":"","sources":["../src/scorer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"scorer.js","sourceRoot":"","sources":["../src/scorer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { FileInfo } from '@codeledger/types';
|
|
2
|
+
/**
|
|
3
|
+
* Detect whether a file is security-sensitive based on naming patterns.
|
|
4
|
+
* Checks both directory segments and basename stems in the file path.
|
|
5
|
+
* Returns 1.0 for security-relevant files, 0 otherwise.
|
|
6
|
+
*/
|
|
7
|
+
export declare function detectSecuritySurface(file: FileInfo): number;
|
|
8
|
+
/**
|
|
9
|
+
* Check whether the task description mentions security-related concerns.
|
|
10
|
+
* When true, the security_surface weight should be boosted.
|
|
11
|
+
*/
|
|
12
|
+
export declare function isSecurityTask(taskKeywords: string[]): boolean;
|
|
13
|
+
//# sourceMappingURL=security-surface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"security-surface.d.ts","sourceRoot":"","sources":["../src/security-surface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAqBlD;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAoB5D;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,OAAO,CAE9D"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/** Filename/path patterns indicating security-sensitive files */
|
|
2
|
+
const SECURITY_PATH_PATTERNS = [
|
|
3
|
+
'auth', 'login', 'logout', 'session', 'oauth', 'jwt', 'token',
|
|
4
|
+
'crypt', 'hash', 'secret', 'password', 'credential',
|
|
5
|
+
'validat', 'sanitiz', 'escap',
|
|
6
|
+
'query', 'sql', 'database', 'migration',
|
|
7
|
+
'route', 'controller', 'endpoint', 'middleware',
|
|
8
|
+
'permission', 'rbac', 'acl', 'role',
|
|
9
|
+
'csrf', 'cors', 'helmet', 'rate-limit',
|
|
10
|
+
];
|
|
11
|
+
/** Task keywords that should boost security_surface weight */
|
|
12
|
+
const SECURITY_TASK_KEYWORDS = new Set([
|
|
13
|
+
'security', 'secure', 'audit', 'vulnerability', 'vulnerabilities',
|
|
14
|
+
'injection', 'xss', 'csrf', 'auth', 'authentication', 'authorization',
|
|
15
|
+
'encrypt', 'decrypt', 'hash', 'password', 'credential', 'token',
|
|
16
|
+
'sanitize', 'escape', 'validate', 'permission', 'privilege',
|
|
17
|
+
]);
|
|
18
|
+
/**
|
|
19
|
+
* Detect whether a file is security-sensitive based on naming patterns.
|
|
20
|
+
* Checks both directory segments and basename stems in the file path.
|
|
21
|
+
* Returns 1.0 for security-relevant files, 0 otherwise.
|
|
22
|
+
*/
|
|
23
|
+
export function detectSecuritySurface(file) {
|
|
24
|
+
const pathLower = file.path.toLowerCase();
|
|
25
|
+
const segments = pathLower.split('/');
|
|
26
|
+
// Extract all stems: directory names + basename stems (split on - and _)
|
|
27
|
+
const allStems = [];
|
|
28
|
+
for (const segment of segments) {
|
|
29
|
+
const clean = segment.replace(/\.\w+$/, '');
|
|
30
|
+
for (const stem of clean.split(/[-_]/)) {
|
|
31
|
+
if (stem.length > 0)
|
|
32
|
+
allStems.push(stem);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
const isSecurityRelevant = allStems.some((stem) => SECURITY_PATH_PATTERNS.some((pat) => stem === pat || stem === pat + 's' || stem.startsWith(pat)));
|
|
36
|
+
return isSecurityRelevant ? 1.0 : 0;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Check whether the task description mentions security-related concerns.
|
|
40
|
+
* When true, the security_surface weight should be boosted.
|
|
41
|
+
*/
|
|
42
|
+
export function isSecurityTask(taskKeywords) {
|
|
43
|
+
return taskKeywords.some((kw) => SECURITY_TASK_KEYWORDS.has(kw));
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=security-surface.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"security-surface.js","sourceRoot":"","sources":["../src/security-surface.ts"],"names":[],"mappings":"AAEA,iEAAiE;AACjE,MAAM,sBAAsB,GAAG;IAC7B,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO;IAC7D,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAY;IACnD,SAAS,EAAE,SAAS,EAAE,OAAO;IAC7B,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW;IACvC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY;IAC/C,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IACnC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY;CACvC,CAAC;AAEF,8DAA8D;AAC9D,MAAM,sBAAsB,GAAG,IAAI,GAAG,CAAC;IACrC,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,eAAe,EAAE,iBAAiB;IACjE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,eAAe;IACrE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,OAAO;IAC/D,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW;CAC5D,CAAC,CAAC;AAEH;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAAc;IAClD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;IAC1C,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAEtC,yEAAyE;IACzE,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAC5C,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;YACvC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;gBAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IAED,MAAM,kBAAkB,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAChD,sBAAsB,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAClC,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,GAAG,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAC3D,CACF,CAAC;IAEF,OAAO,kBAAkB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACtC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,YAAsB;IACnD,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,sBAAsB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AACnE,CAAC"}
|
package/dist/task-type.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task-type.d.ts","sourceRoot":"","sources":["../src/task-type.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD;;;;;;;;;;;;;;GAcG;AAEH,MAAM,MAAM,QAAQ,GAChB,SAAS,GACT,aAAa,GACb,UAAU,GACV,aAAa,GACb,QAAQ,GACR,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"task-type.d.ts","sourceRoot":"","sources":["../src/task-type.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD;;;;;;;;;;;;;;GAcG;AAEH,MAAM,MAAM,QAAQ,GAChB,SAAS,GACT,aAAa,GACb,UAAU,GACV,aAAa,GACb,QAAQ,GACR,SAAS,CAAC;AA+Bd;;;GAGG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,CAmCxD;AAqCD;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,eAAe,EAC5B,QAAQ,EAAE,QAAQ,GACjB,eAAe,CAYjB"}
|
package/dist/task-type.js
CHANGED
|
@@ -15,6 +15,7 @@ const REFACTOR_PATTERNS = [
|
|
|
15
15
|
const TEST_UPDATE_PATTERNS = [
|
|
16
16
|
'test', 'tests', 'testing', 'spec', 'specs', 'coverage', 'assertion',
|
|
17
17
|
'mock', 'stub', 'fixture', 'jest', 'vitest', 'mocha', 'e2e',
|
|
18
|
+
'run', 'execute', 'validate', 'verify',
|
|
18
19
|
];
|
|
19
20
|
const CONFIG_PATTERNS = [
|
|
20
21
|
'config', 'configuration', 'settings', 'setup', 'env', 'environment',
|
|
@@ -84,9 +85,10 @@ const WEIGHT_ADJUSTMENTS = {
|
|
|
84
85
|
size_penalty: 0.7,
|
|
85
86
|
},
|
|
86
87
|
test_update: {
|
|
87
|
-
test_relevance:
|
|
88
|
+
test_relevance: 2.5,
|
|
88
89
|
keyword: 1.2,
|
|
89
|
-
|
|
90
|
+
centrality: 0.5,
|
|
91
|
+
churn: 0.5,
|
|
90
92
|
},
|
|
91
93
|
config: {
|
|
92
94
|
keyword: 1.3,
|
package/dist/task-type.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task-type.js","sourceRoot":"","sources":["../src/task-type.ts"],"names":[],"mappings":"AA0BA,MAAM,gBAAgB,GAAG;IACvB,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM;IAClE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY;IACtE,OAAO,EAAE,QAAQ;CAClB,CAAC;AAEF,MAAM,oBAAoB,GAAG;IAC3B,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,UAAU;IACrE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS;CAC/D,CAAC;AAEF,MAAM,iBAAiB,GAAG;IACxB,UAAU,EAAE,aAAa,EAAE,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS;IACvE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,UAAU;IAC7D,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS;CACxD,CAAC;AAEF,MAAM,oBAAoB,GAAG;IAC3B,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW;IACpE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK;
|
|
1
|
+
{"version":3,"file":"task-type.js","sourceRoot":"","sources":["../src/task-type.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@codeledger/selector",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Deterministic context selection algorithm for CodeLedger",
|
|
6
|
-
"license": "
|
|
6
|
+
"license": "MIT",
|
|
7
7
|
"repository": {
|
|
8
8
|
"type": "git",
|
|
9
9
|
"url": "https://github.com/codeledgerECF/codeledger-blackbox.git",
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
}
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"@codeledger/types": "0.
|
|
27
|
+
"@codeledger/types": "0.5.1"
|
|
28
28
|
},
|
|
29
29
|
"devDependencies": {
|
|
30
30
|
"typescript": "^5.4.0"
|