@codeledger/cli 0.6.7 → 0.6.8
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/architecture-graph/dependency-scanner.d.ts +16 -0
- package/dist/architecture-graph/dependency-scanner.d.ts.map +1 -0
- package/dist/architecture-graph/dependency-scanner.js +96 -0
- package/dist/architecture-graph/dependency-scanner.js.map +1 -0
- package/dist/architecture-graph/graph-builder.d.ts +70 -0
- package/dist/architecture-graph/graph-builder.d.ts.map +1 -0
- package/dist/architecture-graph/graph-builder.js +231 -0
- package/dist/architecture-graph/graph-builder.js.map +1 -0
- package/dist/architecture-graph/index.d.ts +4 -0
- package/dist/architecture-graph/index.d.ts.map +1 -0
- package/dist/architecture-graph/index.js +7 -0
- package/dist/architecture-graph/index.js.map +1 -0
- package/dist/architecture-graph/service-scanner.d.ts +22 -0
- package/dist/architecture-graph/service-scanner.d.ts.map +1 -0
- package/dist/architecture-graph/service-scanner.js +181 -0
- package/dist/architecture-graph/service-scanner.js.map +1 -0
- package/dist/commands/audit-export.d.ts +8 -0
- package/dist/commands/audit-export.d.ts.map +1 -0
- package/dist/commands/audit-export.js +190 -0
- package/dist/commands/audit-export.js.map +1 -0
- package/dist/commands/fix.d.ts +7 -0
- package/dist/commands/fix.d.ts.map +1 -0
- package/dist/commands/fix.js +107 -0
- package/dist/commands/fix.js.map +1 -0
- package/dist/commands/graph.d.ts +8 -0
- package/dist/commands/graph.d.ts.map +1 -0
- package/dist/commands/graph.js +29 -0
- package/dist/commands/graph.js.map +1 -0
- package/dist/commands/learn.d.ts +8 -0
- package/dist/commands/learn.d.ts.map +1 -0
- package/dist/commands/learn.js +33 -0
- package/dist/commands/learn.js.map +1 -0
- package/dist/commands/pack.d.ts +12 -0
- package/dist/commands/pack.d.ts.map +1 -0
- package/dist/commands/pack.js +75 -0
- package/dist/commands/pack.js.map +1 -0
- package/dist/commands/serve.d.ts +13 -0
- package/dist/commands/serve.d.ts.map +1 -0
- package/dist/commands/serve.js +179 -0
- package/dist/commands/serve.js.map +1 -0
- package/dist/commands/setup-ci.d.ts +6 -4
- package/dist/commands/setup-ci.d.ts.map +1 -1
- package/dist/commands/setup-ci.js +216 -23
- package/dist/commands/setup-ci.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +82 -3
- package/dist/index.js.map +1 -1
- package/dist/review-intelligence/detectors/cjs-named-import.d.ts +13 -0
- package/dist/review-intelligence/detectors/cjs-named-import.d.ts.map +1 -0
- package/dist/review-intelligence/detectors/cjs-named-import.js +134 -0
- package/dist/review-intelligence/detectors/cjs-named-import.js.map +1 -0
- package/dist/review-intelligence/detectors/exact-count-assertion.d.ts +17 -0
- package/dist/review-intelligence/detectors/exact-count-assertion.d.ts.map +1 -0
- package/dist/review-intelligence/detectors/exact-count-assertion.js +93 -0
- package/dist/review-intelligence/detectors/exact-count-assertion.js.map +1 -0
- package/dist/review-intelligence/detectors/exports-map-missing.d.ts +14 -0
- package/dist/review-intelligence/detectors/exports-map-missing.d.ts.map +1 -0
- package/dist/review-intelligence/detectors/exports-map-missing.js +131 -0
- package/dist/review-intelligence/detectors/exports-map-missing.js.map +1 -0
- package/dist/review-intelligence/detectors/fixture-keyword-drift.d.ts +12 -0
- package/dist/review-intelligence/detectors/fixture-keyword-drift.d.ts.map +1 -0
- package/dist/review-intelligence/detectors/fixture-keyword-drift.js +82 -0
- package/dist/review-intelligence/detectors/fixture-keyword-drift.js.map +1 -0
- package/dist/review-intelligence/detectors/optional-infra-crash.d.ts +12 -0
- package/dist/review-intelligence/detectors/optional-infra-crash.d.ts.map +1 -0
- package/dist/review-intelligence/detectors/optional-infra-crash.js +97 -0
- package/dist/review-intelligence/detectors/optional-infra-crash.js.map +1 -0
- package/dist/review-intelligence/detectors/undeclared-dependency.d.ts +11 -0
- package/dist/review-intelligence/detectors/undeclared-dependency.d.ts.map +1 -0
- package/dist/review-intelligence/detectors/undeclared-dependency.js +100 -0
- package/dist/review-intelligence/detectors/undeclared-dependency.js.map +1 -0
- package/dist/review-intelligence/engine/ast-parser.d.ts +90 -0
- package/dist/review-intelligence/engine/ast-parser.d.ts.map +1 -0
- package/dist/review-intelligence/engine/ast-parser.js +266 -0
- package/dist/review-intelligence/engine/ast-parser.js.map +1 -0
- package/dist/review-intelligence/engine/dataflow.d.ts +34 -0
- package/dist/review-intelligence/engine/dataflow.d.ts.map +1 -0
- package/dist/review-intelligence/engine/dataflow.js +115 -0
- package/dist/review-intelligence/engine/dataflow.js.map +1 -0
- package/dist/review-intelligence/engine/index.d.ts +7 -0
- package/dist/review-intelligence/engine/index.d.ts.map +1 -0
- package/dist/review-intelligence/engine/index.js +7 -0
- package/dist/review-intelligence/engine/index.js.map +1 -0
- package/dist/review-intelligence/engine/symbol-resolver.d.ts +34 -0
- package/dist/review-intelligence/engine/symbol-resolver.d.ts.map +1 -0
- package/dist/review-intelligence/engine/symbol-resolver.js +106 -0
- package/dist/review-intelligence/engine/symbol-resolver.js.map +1 -0
- package/dist/review-intelligence/fixes/index.d.ts +36 -0
- package/dist/review-intelligence/fixes/index.d.ts.map +1 -0
- package/dist/review-intelligence/fixes/index.js +157 -0
- package/dist/review-intelligence/fixes/index.js.map +1 -0
- package/dist/review-intelligence/index.d.ts.map +1 -1
- package/dist/review-intelligence/index.js +2 -0
- package/dist/review-intelligence/index.js.map +1 -1
- package/dist/review-intelligence/invariants.d.ts.map +1 -1
- package/dist/review-intelligence/invariants.js +14 -1
- package/dist/review-intelligence/invariants.js.map +1 -1
- package/dist/review-intelligence/learning/index.d.ts +39 -0
- package/dist/review-intelligence/learning/index.d.ts.map +1 -0
- package/dist/review-intelligence/learning/index.js +265 -0
- package/dist/review-intelligence/learning/index.js.map +1 -0
- package/dist/review-intelligence/packs/index.d.ts +69 -0
- package/dist/review-intelligence/packs/index.d.ts.map +1 -0
- package/dist/review-intelligence/packs/index.js +168 -0
- package/dist/review-intelligence/packs/index.js.map +1 -0
- package/dist/review-intelligence/repair-guidance.d.ts.map +1 -1
- package/dist/review-intelligence/repair-guidance.js +46 -0
- package/dist/review-intelligence/repair-guidance.js.map +1 -1
- package/dist/review-intelligence/types.d.ts +6 -1
- package/dist/review-intelligence/types.d.ts.map +1 -1
- package/package.json +9 -9
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { ReviewFinding } from '../types.js';
|
|
2
|
+
/** Result of applying an auto-fix */
|
|
3
|
+
export interface FixResult {
|
|
4
|
+
/** The rule ID that was fixed */
|
|
5
|
+
rule_id: string;
|
|
6
|
+
/** File that was modified */
|
|
7
|
+
file: string;
|
|
8
|
+
/** New file content after fix */
|
|
9
|
+
newContent: string;
|
|
10
|
+
/** Human-readable description of what was changed */
|
|
11
|
+
description: string;
|
|
12
|
+
}
|
|
13
|
+
/** A fixer function */
|
|
14
|
+
export type Fixer = (finding: ReviewFinding, content: string) => FixResult | undefined;
|
|
15
|
+
/**
|
|
16
|
+
* Check if a finding has an auto-fix available.
|
|
17
|
+
*/
|
|
18
|
+
export declare function isFixable(finding: ReviewFinding): boolean;
|
|
19
|
+
/**
|
|
20
|
+
* Apply an auto-fix to a finding.
|
|
21
|
+
* Returns undefined if no fix is available or the fix cannot be applied safely.
|
|
22
|
+
*/
|
|
23
|
+
export declare function applyFix(finding: ReviewFinding, content: string): FixResult | undefined;
|
|
24
|
+
/**
|
|
25
|
+
* Apply all available fixes to a file's findings.
|
|
26
|
+
* Applies fixes in reverse line order to preserve line numbers.
|
|
27
|
+
*/
|
|
28
|
+
export declare function applyAllFixes(findings: ReviewFinding[], content: string): {
|
|
29
|
+
newContent: string;
|
|
30
|
+
applied: FixResult[];
|
|
31
|
+
};
|
|
32
|
+
/**
|
|
33
|
+
* Get all fixable rule IDs.
|
|
34
|
+
*/
|
|
35
|
+
export declare function getFixableRuleIds(): string[];
|
|
36
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/review-intelligence/fixes/index.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,qCAAqC;AACrC,MAAM,WAAW,SAAS;IACxB,iCAAiC;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,6BAA6B;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,iCAAiC;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,qDAAqD;IACrD,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,uBAAuB;AACvB,MAAM,MAAM,KAAK,GAAG,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,KAAK,SAAS,GAAG,SAAS,CAAC;AAUvF;;GAEG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAEzD;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAIvF;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,aAAa,EAAE,EACzB,OAAO,EAAE,MAAM,GACd;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,SAAS,EAAE,CAAA;CAAE,CAiB9C;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,EAAE,CAE5C"}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
// ─── Auto-Fix Engine ────────────────────────────────────────────────────────
|
|
2
|
+
//
|
|
3
|
+
// Each fixer takes a ReviewFinding and file content, and returns a patched
|
|
4
|
+
// version of the content (or undefined if no fix can be applied).
|
|
5
|
+
/** Registry of fixers by rule_id */
|
|
6
|
+
const FIXERS = {
|
|
7
|
+
'RI-RV-001': fixRuntimeValidationMissing,
|
|
8
|
+
'RI-PH-001': fixHelperDriftErrorResponse,
|
|
9
|
+
'RI-CJS-001': fixCjsNamedImport,
|
|
10
|
+
'RI-UD-001': fixUndeclaredDependency,
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* Check if a finding has an auto-fix available.
|
|
14
|
+
*/
|
|
15
|
+
export function isFixable(finding) {
|
|
16
|
+
return finding.rule_id in FIXERS;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Apply an auto-fix to a finding.
|
|
20
|
+
* Returns undefined if no fix is available or the fix cannot be applied safely.
|
|
21
|
+
*/
|
|
22
|
+
export function applyFix(finding, content) {
|
|
23
|
+
const fixer = FIXERS[finding.rule_id];
|
|
24
|
+
if (!fixer)
|
|
25
|
+
return undefined;
|
|
26
|
+
return fixer(finding, content);
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Apply all available fixes to a file's findings.
|
|
30
|
+
* Applies fixes in reverse line order to preserve line numbers.
|
|
31
|
+
*/
|
|
32
|
+
export function applyAllFixes(findings, content) {
|
|
33
|
+
const fixable = findings.filter(isFixable);
|
|
34
|
+
// Sort by line descending to apply from bottom to top
|
|
35
|
+
const sorted = [...fixable].sort((a, b) => b.line - a.line);
|
|
36
|
+
let currentContent = content;
|
|
37
|
+
const applied = [];
|
|
38
|
+
for (const finding of sorted) {
|
|
39
|
+
const result = applyFix(finding, currentContent);
|
|
40
|
+
if (result) {
|
|
41
|
+
currentContent = result.newContent;
|
|
42
|
+
applied.push(result);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
return { newContent: currentContent, applied };
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Get all fixable rule IDs.
|
|
49
|
+
*/
|
|
50
|
+
export function getFixableRuleIds() {
|
|
51
|
+
return Object.keys(FIXERS);
|
|
52
|
+
}
|
|
53
|
+
// ─── Individual Fixers ──────────────────────────────────────────────────────
|
|
54
|
+
function fixRuntimeValidationMissing(finding, content) {
|
|
55
|
+
const lines = content.split('\n');
|
|
56
|
+
const targetLine = finding.line - 1;
|
|
57
|
+
if (targetLine < 0 || targetLine >= lines.length)
|
|
58
|
+
return undefined;
|
|
59
|
+
// Find the route handler opening brace
|
|
60
|
+
let handlerStart = -1;
|
|
61
|
+
for (let i = targetLine; i < Math.min(targetLine + 10, lines.length); i++) {
|
|
62
|
+
if (lines[i].includes('{')) {
|
|
63
|
+
handlerStart = i;
|
|
64
|
+
break;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
if (handlerStart === -1)
|
|
68
|
+
return undefined;
|
|
69
|
+
const validationSnippet = [
|
|
70
|
+
' // TODO: Add runtime validation for request body',
|
|
71
|
+
' // const parsed = YourSchema.safeParse(request.body);',
|
|
72
|
+
' // if (!parsed.success) return reply.status(400).send({ error: parsed.error });',
|
|
73
|
+
].join('\n');
|
|
74
|
+
const newLines = [...lines];
|
|
75
|
+
newLines.splice(handlerStart + 1, 0, validationSnippet);
|
|
76
|
+
return {
|
|
77
|
+
rule_id: finding.rule_id,
|
|
78
|
+
file: finding.file,
|
|
79
|
+
newContent: newLines.join('\n'),
|
|
80
|
+
description: 'Added runtime validation scaffold (requires completion)',
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
function fixHelperDriftErrorResponse(finding, content) {
|
|
84
|
+
if (!finding.repo_standard)
|
|
85
|
+
return undefined;
|
|
86
|
+
const helperName = finding.repo_standard.helper_name;
|
|
87
|
+
const lines = content.split('\n');
|
|
88
|
+
const targetLine = finding.line - 1;
|
|
89
|
+
if (targetLine < 0 || targetLine >= lines.length)
|
|
90
|
+
return undefined;
|
|
91
|
+
const line = lines[targetLine];
|
|
92
|
+
// Match reply.status(4xx).send(...) or res.status(4xx).send(...)
|
|
93
|
+
const errorPattern = /(\b(?:reply|res|response))\s*\.\s*(?:status|code)\s*\(\s*(4\d{2}|5\d{2})\s*\)\s*\.\s*send\s*\(([^)]*)\)/;
|
|
94
|
+
const match = errorPattern.exec(line);
|
|
95
|
+
if (!match)
|
|
96
|
+
return undefined;
|
|
97
|
+
const replyVar = match[1];
|
|
98
|
+
const statusCode = match[2];
|
|
99
|
+
// Replace with helper call
|
|
100
|
+
const replacement = line.replace(errorPattern, `${helperName}(${replyVar}, ${statusCode})`);
|
|
101
|
+
const newLines = [...lines];
|
|
102
|
+
newLines[targetLine] = replacement;
|
|
103
|
+
// Check if we need to add an import for the helper
|
|
104
|
+
const hasImport = content.includes(helperName);
|
|
105
|
+
let newContent = newLines.join('\n');
|
|
106
|
+
if (!hasImport && finding.repo_standard.example_paths.length > 0) {
|
|
107
|
+
newContent = `import { ${helperName} } from '${finding.repo_standard.example_paths[0]}';\n` + newContent;
|
|
108
|
+
}
|
|
109
|
+
return {
|
|
110
|
+
rule_id: finding.rule_id,
|
|
111
|
+
file: finding.file,
|
|
112
|
+
newContent,
|
|
113
|
+
description: `Replaced raw error response with ${helperName}`,
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
function fixCjsNamedImport(finding, content) {
|
|
117
|
+
const lines = content.split('\n');
|
|
118
|
+
const targetLine = finding.line - 1;
|
|
119
|
+
if (targetLine < 0 || targetLine >= lines.length)
|
|
120
|
+
return undefined;
|
|
121
|
+
const line = lines[targetLine];
|
|
122
|
+
// Match: import { a, b } from 'package'
|
|
123
|
+
const namedImportPattern = /^(import\s+)\{([^}]+)\}\s+(from\s+['"][^'"]+['"])/;
|
|
124
|
+
const match = namedImportPattern.exec(line.trim());
|
|
125
|
+
if (!match)
|
|
126
|
+
return undefined;
|
|
127
|
+
const namedImports = match[2].split(',').map((n) => n.trim());
|
|
128
|
+
const fromClause = match[3];
|
|
129
|
+
// Extract package name for the default import variable
|
|
130
|
+
const pkgMatch = /from\s+['"]([^'"]+)['"]/.exec(fromClause);
|
|
131
|
+
if (!pkgMatch)
|
|
132
|
+
return undefined;
|
|
133
|
+
const pkgName = pkgMatch[1]
|
|
134
|
+
.split('/')
|
|
135
|
+
.pop()
|
|
136
|
+
.replace(/[^a-zA-Z0-9]/g, '');
|
|
137
|
+
const defaultVarName = pkgName || 'mod';
|
|
138
|
+
// Rewrite: import pkg from 'package'; const { a, b } = pkg;
|
|
139
|
+
const indent = line.match(/^(\s*)/)?.[1] ?? '';
|
|
140
|
+
const newImport = `${indent}import ${defaultVarName} ${fromClause};`;
|
|
141
|
+
const destructure = `${indent}const { ${namedImports.join(', ')} } = ${defaultVarName};`;
|
|
142
|
+
const newLines = [...lines];
|
|
143
|
+
newLines[targetLine] = newImport + '\n' + destructure;
|
|
144
|
+
return {
|
|
145
|
+
rule_id: finding.rule_id,
|
|
146
|
+
file: finding.file,
|
|
147
|
+
newContent: newLines.join('\n'),
|
|
148
|
+
description: `Rewrote named CJS import to default import with destructure`,
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
function fixUndeclaredDependency(_finding, _content) {
|
|
152
|
+
// For undeclared dependencies, we return a scaffold — the actual
|
|
153
|
+
// package.json edit should be done by the CLI command, not inline.
|
|
154
|
+
// This fixer returns undefined to signal manual intervention needed.
|
|
155
|
+
return undefined;
|
|
156
|
+
}
|
|
157
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/review-intelligence/fixes/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/review-intelligence/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,wBAAwB,EACxB,yBAAyB,EACzB,wBAAwB,EAIzB,MAAM,YAAY,CAAC;AAcpB,YAAY,EACV,wBAAwB,EACxB,yBAAyB,EACzB,wBAAwB,EACxB,aAAa,GACd,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAC9G,OAAO,EACL,YAAY,EACZ,0BAA0B,IAAI,cAAc,EAC5C,YAAY,EACZ,eAAe,IAAI,iBAAiB,EACpC,cAAc,IAAI,iBAAiB,EACnC,qBAAqB,GACtB,MAAM,eAAe,CAAC;AAEvB,mEAAmE;AACnE,eAAO,MAAM,kCAAkC,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/review-intelligence/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,wBAAwB,EACxB,yBAAyB,EACzB,wBAAwB,EAIzB,MAAM,YAAY,CAAC;AAcpB,YAAY,EACV,wBAAwB,EACxB,yBAAyB,EACzB,wBAAwB,EACxB,aAAa,GACd,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAC9G,OAAO,EACL,YAAY,EACZ,0BAA0B,IAAI,cAAc,EAC5C,YAAY,EACZ,eAAe,IAAI,iBAAiB,EACpC,cAAc,IAAI,iBAAiB,EACnC,qBAAqB,GACtB,MAAM,eAAe,CAAC;AAEvB,mEAAmE;AACnE,eAAO,MAAM,kCAAkC,EAAE,wBAUhD,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,yBAAyB,GACjC,wBAAwB,CAsH1B"}
|
|
@@ -16,6 +16,8 @@ export const DEFAULT_REVIEW_INTELLIGENCE_POLICY = {
|
|
|
16
16
|
runtime_validation: { enabled: true },
|
|
17
17
|
outbound_io: { enabled: true },
|
|
18
18
|
platform_helpers: { enabled: true },
|
|
19
|
+
build_runtime: { enabled: true },
|
|
20
|
+
test_integrity: { enabled: true },
|
|
19
21
|
},
|
|
20
22
|
};
|
|
21
23
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/review-intelligence/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AASjC,OAAO,EAAE,mBAAmB,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAClF,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EACL,YAAY,EACZ,eAAe,EACf,0BAA0B,EAC1B,cAAc,EACd,YAAY,EACZ,qBAAqB,GACtB,MAAM,eAAe,CAAC;AASvB,OAAO,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAC9G,OAAO,EACL,YAAY,EACZ,0BAA0B,IAAI,cAAc,EAC5C,YAAY,EACZ,eAAe,IAAI,iBAAiB,EACpC,cAAc,IAAI,iBAAiB,EACnC,qBAAqB,GACtB,MAAM,eAAe,CAAC;AAEvB,mEAAmE;AACnE,MAAM,CAAC,MAAM,kCAAkC,GAA6B;IAC1E,OAAO,EAAE,IAAI;IACb,kBAAkB,EAAE,IAAI;IACxB,UAAU,EAAE;QACV,kBAAkB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;QACrC,WAAW,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;QAC9B,gBAAgB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/review-intelligence/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"invariants.d.ts","sourceRoot":"","sources":["../../src/review-intelligence/invariants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"invariants.d.ts","sourceRoot":"","sources":["../../src/review-intelligence/invariants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAwB9E;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,wBAAwB,EAChC,eAAe,CAAC,EAAE,MAAM,GACvB,iBAAiB,EAAE,CAWrB;AAED;;GAEG;AACH,wBAAgB,0BAA0B,IAAI,MAAM,EAAE,CAGrD"}
|
|
@@ -1,11 +1,23 @@
|
|
|
1
1
|
import { runtimeValidationDetector } from './detectors/runtime-validation.js';
|
|
2
2
|
import { outboundIODetector } from './detectors/outbound-io.js';
|
|
3
3
|
import { platformHelpersDetector } from './detectors/platform-helpers.js';
|
|
4
|
+
import { undeclaredDependencyDetector } from './detectors/undeclared-dependency.js';
|
|
5
|
+
import { exportsMapMissingDetector } from './detectors/exports-map-missing.js';
|
|
6
|
+
import { cjsNamedImportDetector } from './detectors/cjs-named-import.js';
|
|
7
|
+
import { optionalInfraCrashDetector } from './detectors/optional-infra-crash.js';
|
|
8
|
+
import { fixtureKeywordDriftDetector } from './detectors/fixture-keyword-drift.js';
|
|
9
|
+
import { exactCountAssertionDetector } from './detectors/exact-count-assertion.js';
|
|
4
10
|
/** Registry of all invariant detector modules */
|
|
5
11
|
const ALL_DETECTORS = [
|
|
6
12
|
runtimeValidationDetector,
|
|
7
13
|
outboundIODetector,
|
|
8
14
|
platformHelpersDetector,
|
|
15
|
+
undeclaredDependencyDetector,
|
|
16
|
+
exportsMapMissingDetector,
|
|
17
|
+
cjsNamedImportDetector,
|
|
18
|
+
optionalInfraCrashDetector,
|
|
19
|
+
fixtureKeywordDriftDetector,
|
|
20
|
+
exactCountAssertionDetector,
|
|
9
21
|
];
|
|
10
22
|
/**
|
|
11
23
|
* Get enabled detectors based on policy configuration and optional filter.
|
|
@@ -24,6 +36,7 @@ export function getEnabledDetectors(policy, invariantFilter) {
|
|
|
24
36
|
* Get all available detector names (for --invariant flag validation).
|
|
25
37
|
*/
|
|
26
38
|
export function getAvailableInvariantNames() {
|
|
27
|
-
|
|
39
|
+
const unique = new Set(ALL_DETECTORS.map((d) => d.name));
|
|
40
|
+
return [...unique];
|
|
28
41
|
}
|
|
29
42
|
//# sourceMappingURL=invariants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"invariants.js","sourceRoot":"","sources":["../../src/review-intelligence/invariants.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"invariants.js","sourceRoot":"","sources":["../../src/review-intelligence/invariants.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,4BAA4B,EAAE,MAAM,sCAAsC,CAAC;AACpF,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAC/E,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,0BAA0B,EAAE,MAAM,qCAAqC,CAAC;AACjF,OAAO,EAAE,2BAA2B,EAAE,MAAM,sCAAsC,CAAC;AACnF,OAAO,EAAE,2BAA2B,EAAE,MAAM,sCAAsC,CAAC;AAEnF,iDAAiD;AACjD,MAAM,aAAa,GAAwB;IACzC,yBAAyB;IACzB,kBAAkB;IAClB,uBAAuB;IACvB,4BAA4B;IAC5B,yBAAyB;IACzB,sBAAsB;IACtB,0BAA0B;IAC1B,2BAA2B;IAC3B,2BAA2B;CAC5B,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,mBAAmB,CACjC,MAAgC,EAChC,eAAwB;IAExB,IAAI,SAAS,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;QACzC,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACzC,OAAO,MAAM,EAAE,OAAO,KAAK,KAAK,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,IAAI,eAAe,EAAE,CAAC;QACpB,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,eAAe,CAAC,CAAC;IAClE,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,0BAA0B;IACxC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACzD,OAAO,CAAC,GAAG,MAAM,CAAC,CAAC;AACrB,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { InvariantPack } from '../packs/index.js';
|
|
2
|
+
/** A discovered convention */
|
|
3
|
+
export interface DiscoveredConvention {
|
|
4
|
+
/** Category of convention */
|
|
5
|
+
category: ConventionCategory;
|
|
6
|
+
/** The helper/wrapper/pattern name */
|
|
7
|
+
name: string;
|
|
8
|
+
/** Usage count across the codebase */
|
|
9
|
+
usageCount: number;
|
|
10
|
+
/** Total callsites checked for this category */
|
|
11
|
+
totalInCategory: number;
|
|
12
|
+
/** Usage percentage */
|
|
13
|
+
percentage: number;
|
|
14
|
+
/** Files where this is defined */
|
|
15
|
+
definedIn: string[];
|
|
16
|
+
/** Sample usage locations */
|
|
17
|
+
sampleUsages: string[];
|
|
18
|
+
}
|
|
19
|
+
export type ConventionCategory = 'outbound_http' | 'cache_key' | 'error_response' | 'database_query' | 'logging' | 'validation';
|
|
20
|
+
/** Result of repository learning */
|
|
21
|
+
export interface LearnResult {
|
|
22
|
+
/** All discovered conventions */
|
|
23
|
+
conventions: DiscoveredConvention[];
|
|
24
|
+
/** Files scanned */
|
|
25
|
+
filesScanned: number;
|
|
26
|
+
/** Duration in milliseconds */
|
|
27
|
+
durationMs: number;
|
|
28
|
+
/** Generated pack suggestion (if conventions found) */
|
|
29
|
+
suggestedPack?: InvariantPack;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Scan the repository and discover conventions.
|
|
33
|
+
*/
|
|
34
|
+
export declare function learnConventions(cwd: string): LearnResult;
|
|
35
|
+
/**
|
|
36
|
+
* Format learn results for human-readable console output.
|
|
37
|
+
*/
|
|
38
|
+
export declare function formatLearnOutput(result: LearnResult): string;
|
|
39
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/review-intelligence/learning/index.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,aAAa,EAAY,MAAM,mBAAmB,CAAC;AAEjE,8BAA8B;AAC9B,MAAM,WAAW,oBAAoB;IACnC,6BAA6B;IAC7B,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,sCAAsC;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,sCAAsC;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,gDAAgD;IAChD,eAAe,EAAE,MAAM,CAAC;IACxB,uBAAuB;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,kCAAkC;IAClC,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,6BAA6B;IAC7B,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,MAAM,MAAM,kBAAkB,GAC1B,eAAe,GACf,WAAW,GACX,gBAAgB,GAChB,gBAAgB,GAChB,SAAS,GACT,YAAY,CAAC;AAEjB,oCAAoC;AACpC,MAAM,WAAW,WAAW;IAC1B,iCAAiC;IACjC,WAAW,EAAE,oBAAoB,EAAE,CAAC;IACpC,oBAAoB;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,+BAA+B;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,uDAAuD;IACvD,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B;AA4DD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAsCzD;AAuGD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAuC7D"}
|
|
@@ -0,0 +1,265 @@
|
|
|
1
|
+
// ─── Repository Convention Learning ─────────────────────────────────────────
|
|
2
|
+
//
|
|
3
|
+
// Analyzes repository usage patterns to discover canonical helpers,
|
|
4
|
+
// wrappers, and conventions. Generates invariant pack suggestions.
|
|
5
|
+
import { readFileSync, readdirSync, existsSync, statSync } from 'node:fs';
|
|
6
|
+
import { join, extname, relative } from 'node:path';
|
|
7
|
+
const CONVENTION_PATTERNS = [
|
|
8
|
+
{
|
|
9
|
+
category: 'outbound_http',
|
|
10
|
+
callsitePattern: /\b(?:fetch|axios|http\.request|https\.request|got|needle|superagent|request)\s*[.(]/g,
|
|
11
|
+
wrapperPatterns: [
|
|
12
|
+
/\b(\w*(?:safe|wrapped|internal|platform|sanctioned)\w*(?:Fetch|Http|Request|Api|Call))\s*\(/gi,
|
|
13
|
+
/\b(\w*(?:fetch|http|request|api|call)\w*(?:Safe|Wrapped|Internal|Platform))\s*\(/gi,
|
|
14
|
+
],
|
|
15
|
+
ruleDescription: 'Outbound HTTP calls must use sanctioned wrapper',
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
category: 'cache_key',
|
|
19
|
+
callsitePattern: /\b(?:redis|cache|client)\s*\.\s*(?:get|set|del|hget|hset|expire)\s*\(/g,
|
|
20
|
+
wrapperPatterns: [
|
|
21
|
+
/\b(build\w*(?:Cache|Redis|Tenant)\w*Key)\s*\(/gi,
|
|
22
|
+
/\b(\w*(?:cache|redis)Key(?:Builder|Factory|Helper)?)\s*\(/gi,
|
|
23
|
+
],
|
|
24
|
+
ruleDescription: 'Cache keys must use shared cache key builder',
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
category: 'error_response',
|
|
28
|
+
callsitePattern: /\b(?:reply|res|response)\s*\.\s*(?:status|code)\s*\(\s*(?:4|5)\d{2}\s*\)/g,
|
|
29
|
+
wrapperPatterns: [
|
|
30
|
+
/\b(send(?:Invalid|Bad|NotFound|Unauthorized|Forbidden|Error)\w*)\s*\(/gi,
|
|
31
|
+
/\b(\w*(?:error|err)(?:Response|Reply|Handler|Helper))\s*\(/gi,
|
|
32
|
+
],
|
|
33
|
+
ruleDescription: 'Error responses must use shared error helper',
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
category: 'database_query',
|
|
37
|
+
callsitePattern: /\b(?:db|knex|prisma|sequelize|pool|client)\s*\.\s*(?:query|raw|execute|\$queryRaw)\s*[(`]/g,
|
|
38
|
+
wrapperPatterns: [
|
|
39
|
+
/\b(\w*(?:safe|wrapped|platform)\w*(?:Query|Exec|Db))\s*\(/gi,
|
|
40
|
+
],
|
|
41
|
+
ruleDescription: 'Database queries should use sanctioned query helpers',
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
category: 'logging',
|
|
45
|
+
callsitePattern: /\bconsole\s*\.\s*(?:log|warn|error|info|debug)\s*\(/g,
|
|
46
|
+
wrapperPatterns: [
|
|
47
|
+
/\b(logger|log)\s*\.\s*(?:info|warn|error|debug)\s*\(/gi,
|
|
48
|
+
/\b(\w*(?:Logger|Logging|Log)\w*)\s*\.\s*\w+\s*\(/gi,
|
|
49
|
+
],
|
|
50
|
+
ruleDescription: 'Use structured logger instead of console',
|
|
51
|
+
},
|
|
52
|
+
];
|
|
53
|
+
/**
|
|
54
|
+
* Scan the repository and discover conventions.
|
|
55
|
+
*/
|
|
56
|
+
export function learnConventions(cwd) {
|
|
57
|
+
const startTime = Date.now();
|
|
58
|
+
const files = collectSourceFiles(cwd);
|
|
59
|
+
const fileContents = new Map();
|
|
60
|
+
for (const file of files) {
|
|
61
|
+
try {
|
|
62
|
+
fileContents.set(file, readFileSync(join(cwd, file), 'utf-8'));
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
// Skip unreadable files
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
const conventions = [];
|
|
69
|
+
for (const pattern of CONVENTION_PATTERNS) {
|
|
70
|
+
const result = analyzeConventionPattern(cwd, fileContents, pattern);
|
|
71
|
+
if (result) {
|
|
72
|
+
conventions.push(result);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
// Sort by percentage descending
|
|
76
|
+
conventions.sort((a, b) => b.percentage - a.percentage);
|
|
77
|
+
// Generate pack suggestion if we found conventions
|
|
78
|
+
let suggestedPack;
|
|
79
|
+
const significantConventions = conventions.filter((c) => c.percentage >= 60);
|
|
80
|
+
if (significantConventions.length > 0) {
|
|
81
|
+
suggestedPack = generatePackFromConventions(significantConventions);
|
|
82
|
+
}
|
|
83
|
+
return {
|
|
84
|
+
conventions,
|
|
85
|
+
filesScanned: files.length,
|
|
86
|
+
durationMs: Date.now() - startTime,
|
|
87
|
+
suggestedPack,
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Analyze a single convention pattern across all files.
|
|
92
|
+
*/
|
|
93
|
+
function analyzeConventionPattern(_cwd, fileContents, pattern) {
|
|
94
|
+
// Count total raw callsites
|
|
95
|
+
let totalCallsites = 0;
|
|
96
|
+
const wrapperUsage = new Map();
|
|
97
|
+
for (const [filePath, content] of fileContents) {
|
|
98
|
+
// Skip test files for convention mining
|
|
99
|
+
if (isTestFile(filePath))
|
|
100
|
+
continue;
|
|
101
|
+
// Skip definition files (helpers directory)
|
|
102
|
+
if (isHelperFile(filePath))
|
|
103
|
+
continue;
|
|
104
|
+
// Count raw callsites
|
|
105
|
+
const rawMatches = content.match(pattern.callsitePattern);
|
|
106
|
+
if (rawMatches) {
|
|
107
|
+
totalCallsites += rawMatches.length;
|
|
108
|
+
}
|
|
109
|
+
// Find wrapper usages
|
|
110
|
+
for (const wrapperPattern of pattern.wrapperPatterns) {
|
|
111
|
+
// Reset lastIndex since we're reusing the regex
|
|
112
|
+
wrapperPattern.lastIndex = 0;
|
|
113
|
+
let match;
|
|
114
|
+
while ((match = wrapperPattern.exec(content)) !== null) {
|
|
115
|
+
const wrapperName = match[1];
|
|
116
|
+
const existing = wrapperUsage.get(wrapperName);
|
|
117
|
+
if (existing) {
|
|
118
|
+
existing.count++;
|
|
119
|
+
if (!existing.files.includes(filePath)) {
|
|
120
|
+
existing.files.push(filePath);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
wrapperUsage.set(wrapperName, { count: 1, files: [filePath] });
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
if (totalCallsites === 0)
|
|
130
|
+
return undefined;
|
|
131
|
+
// Find the most common wrapper
|
|
132
|
+
let bestWrapper;
|
|
133
|
+
let bestCount = 0;
|
|
134
|
+
let bestFiles = [];
|
|
135
|
+
for (const [name, info] of wrapperUsage) {
|
|
136
|
+
if (info.count > bestCount) {
|
|
137
|
+
bestWrapper = name;
|
|
138
|
+
bestCount = info.count;
|
|
139
|
+
bestFiles = info.files;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
if (!bestWrapper || bestCount < 2)
|
|
143
|
+
return undefined;
|
|
144
|
+
const percentage = Math.round((bestCount / totalCallsites) * 100);
|
|
145
|
+
return {
|
|
146
|
+
category: pattern.category,
|
|
147
|
+
name: bestWrapper,
|
|
148
|
+
usageCount: bestCount,
|
|
149
|
+
totalInCategory: totalCallsites,
|
|
150
|
+
percentage,
|
|
151
|
+
definedIn: bestFiles.slice(0, 3),
|
|
152
|
+
sampleUsages: bestFiles.slice(0, 5),
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Generate an invariant pack from discovered conventions.
|
|
157
|
+
*/
|
|
158
|
+
function generatePackFromConventions(conventions) {
|
|
159
|
+
const rules = [];
|
|
160
|
+
for (const conv of conventions) {
|
|
161
|
+
const matchingPattern = CONVENTION_PATTERNS.find((p) => p.category === conv.category);
|
|
162
|
+
rules.push({
|
|
163
|
+
rule_id: `LEARNED-${conv.category.toUpperCase().replace(/_/g, '-')}-001`,
|
|
164
|
+
description: `${matchingPattern?.ruleDescription ?? conv.category}: use ${conv.name} (${conv.percentage}% adoption)`,
|
|
165
|
+
kind: 'required_wrapper',
|
|
166
|
+
helper: conv.name,
|
|
167
|
+
severity: conv.percentage >= 80 ? 'P1' : 'P2',
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
return {
|
|
171
|
+
name: 'learned-conventions',
|
|
172
|
+
description: 'Auto-generated invariant pack from repository convention analysis',
|
|
173
|
+
version: '1.0.0',
|
|
174
|
+
enabled: false,
|
|
175
|
+
rules,
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Format learn results for human-readable console output.
|
|
180
|
+
*/
|
|
181
|
+
export function formatLearnOutput(result) {
|
|
182
|
+
const lines = [];
|
|
183
|
+
lines.push('');
|
|
184
|
+
lines.push('Detected Repository Conventions');
|
|
185
|
+
lines.push('───────────────────────────────');
|
|
186
|
+
lines.push(` Files scanned: ${result.filesScanned}`);
|
|
187
|
+
lines.push(` Duration: ${result.durationMs}ms`);
|
|
188
|
+
lines.push('');
|
|
189
|
+
if (result.conventions.length === 0) {
|
|
190
|
+
lines.push(' No strong conventions detected.');
|
|
191
|
+
lines.push(' Tip: Conventions are detected when a wrapper/helper is used in >50% of callsites.');
|
|
192
|
+
lines.push('');
|
|
193
|
+
return lines.join('\n');
|
|
194
|
+
}
|
|
195
|
+
for (const conv of result.conventions) {
|
|
196
|
+
const bar = '█'.repeat(Math.round(conv.percentage / 5)) + '░'.repeat(20 - Math.round(conv.percentage / 5));
|
|
197
|
+
lines.push(` ${conv.name}`);
|
|
198
|
+
lines.push(` ${bar} ${conv.percentage}% of ${conv.category.replace(/_/g, ' ')} calls`);
|
|
199
|
+
lines.push(` (${conv.usageCount}/${conv.totalInCategory} callsites)`);
|
|
200
|
+
lines.push('');
|
|
201
|
+
}
|
|
202
|
+
if (result.suggestedPack) {
|
|
203
|
+
lines.push(' Suggested Invariant Pack');
|
|
204
|
+
lines.push(' ───────────────────────');
|
|
205
|
+
lines.push(` Name: ${result.suggestedPack.name}`);
|
|
206
|
+
lines.push(` Rules: ${result.suggestedPack.rules.length}`);
|
|
207
|
+
for (const rule of result.suggestedPack.rules) {
|
|
208
|
+
lines.push(` [${rule.severity}] ${rule.description}`);
|
|
209
|
+
}
|
|
210
|
+
lines.push('');
|
|
211
|
+
lines.push(' Run `codeledger pack enable learned-conventions` to activate.');
|
|
212
|
+
}
|
|
213
|
+
lines.push('');
|
|
214
|
+
return lines.join('\n');
|
|
215
|
+
}
|
|
216
|
+
// ─── File Collection ─────────────────────────────────────────────────────────
|
|
217
|
+
const MAX_FILES = 500;
|
|
218
|
+
const ANALYZABLE_EXTS = new Set(['.ts', '.tsx', '.js', '.jsx', '.mts', '.mjs']);
|
|
219
|
+
function collectSourceFiles(cwd) {
|
|
220
|
+
const files = [];
|
|
221
|
+
const scanDirs = ['src', 'lib', 'packages'];
|
|
222
|
+
for (const scanDir of scanDirs) {
|
|
223
|
+
const fullDir = join(cwd, scanDir);
|
|
224
|
+
if (existsSync(fullDir)) {
|
|
225
|
+
collectFilesRecursive(fullDir, cwd, files);
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
return files.slice(0, MAX_FILES);
|
|
229
|
+
}
|
|
230
|
+
function collectFilesRecursive(dir, cwd, files) {
|
|
231
|
+
if (files.length >= MAX_FILES)
|
|
232
|
+
return;
|
|
233
|
+
try {
|
|
234
|
+
const entries = readdirSync(dir);
|
|
235
|
+
for (const entry of entries) {
|
|
236
|
+
if (files.length >= MAX_FILES)
|
|
237
|
+
return;
|
|
238
|
+
if (entry.startsWith('.') || entry === 'node_modules' || entry === 'dist' || entry === 'build')
|
|
239
|
+
continue;
|
|
240
|
+
const fullPath = join(dir, entry);
|
|
241
|
+
try {
|
|
242
|
+
const stat = statSync(fullPath);
|
|
243
|
+
if (stat.isDirectory()) {
|
|
244
|
+
collectFilesRecursive(fullPath, cwd, files);
|
|
245
|
+
}
|
|
246
|
+
else if (ANALYZABLE_EXTS.has(extname(entry))) {
|
|
247
|
+
files.push(relative(cwd, fullPath));
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
catch {
|
|
251
|
+
// Skip inaccessible
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
catch {
|
|
256
|
+
// Skip unreadable directories
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
function isTestFile(filePath) {
|
|
260
|
+
return /\.(?:test|spec|e2e)\./.test(filePath) || /[/\\](?:__tests__|test|tests)[/\\]/.test(filePath);
|
|
261
|
+
}
|
|
262
|
+
function isHelperFile(filePath) {
|
|
263
|
+
return /[/\\](?:utils|helpers|lib|shared|common)[/\\]/.test(filePath);
|
|
264
|
+
}
|
|
265
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/review-intelligence/learning/index.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,EAAE;AACF,oEAAoE;AACpE,mEAAmE;AAEnE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC1E,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAoDpD,MAAM,mBAAmB,GAAwB;IAC/C;QACE,QAAQ,EAAE,eAAe;QACzB,eAAe,EAAE,sFAAsF;QACvG,eAAe,EAAE;YACf,+FAA+F;YAC/F,oFAAoF;SACrF;QACD,eAAe,EAAE,iDAAiD;KACnE;IACD;QACE,QAAQ,EAAE,WAAW;QACrB,eAAe,EAAE,wEAAwE;QACzF,eAAe,EAAE;YACf,iDAAiD;YACjD,6DAA6D;SAC9D;QACD,eAAe,EAAE,8CAA8C;KAChE;IACD;QACE,QAAQ,EAAE,gBAAgB;QAC1B,eAAe,EAAE,2EAA2E;QAC5F,eAAe,EAAE;YACf,yEAAyE;YACzE,8DAA8D;SAC/D;QACD,eAAe,EAAE,8CAA8C;KAChE;IACD;QACE,QAAQ,EAAE,gBAAgB;QAC1B,eAAe,EAAE,4FAA4F;QAC7G,eAAe,EAAE;YACf,6DAA6D;SAC9D;QACD,eAAe,EAAE,sDAAsD;KACxE;IACD;QACE,QAAQ,EAAE,SAAS;QACnB,eAAe,EAAE,sDAAsD;QACvE,eAAe,EAAE;YACf,wDAAwD;YACxD,oDAAoD;SACrD;QACD,eAAe,EAAE,0CAA0C;KAC5D;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAW;IAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,KAAK,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,YAAY,GAAG,IAAI,GAAG,EAAkB,CAAC;IAE/C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;QACjE,CAAC;QAAC,MAAM,CAAC;YACP,wBAAwB;QAC1B,CAAC;IACH,CAAC;IAED,MAAM,WAAW,GAA2B,EAAE,CAAC;IAE/C,KAAK,MAAM,OAAO,IAAI,mBAAmB,EAAE,CAAC;QAC1C,MAAM,MAAM,GAAG,wBAAwB,CAAC,GAAG,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;QACpE,IAAI,MAAM,EAAE,CAAC;YACX,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,gCAAgC;IAChC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC;IAExD,mDAAmD;IACnD,IAAI,aAAwC,CAAC;IAC7C,MAAM,sBAAsB,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;IAC7E,IAAI,sBAAsB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtC,aAAa,GAAG,2BAA2B,CAAC,sBAAsB,CAAC,CAAC;IACtE,CAAC;IAED,OAAO;QACL,WAAW;QACX,YAAY,EAAE,KAAK,CAAC,MAAM;QAC1B,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;QAClC,aAAa;KACd,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,wBAAwB,CAC/B,IAAY,EACZ,YAAiC,EACjC,OAA0B;IAE1B,4BAA4B;IAC5B,IAAI,cAAc,GAAG,CAAC,CAAC;IACvB,MAAM,YAAY,GAAG,IAAI,GAAG,EAA8C,CAAC;IAE3E,KAAK,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,YAAY,EAAE,CAAC;QAC/C,wCAAwC;QACxC,IAAI,UAAU,CAAC,QAAQ,CAAC;YAAE,SAAS;QACnC,4CAA4C;QAC5C,IAAI,YAAY,CAAC,QAAQ,CAAC;YAAE,SAAS;QAErC,sBAAsB;QACtB,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QAC1D,IAAI,UAAU,EAAE,CAAC;YACf,cAAc,IAAI,UAAU,CAAC,MAAM,CAAC;QACtC,CAAC;QAED,sBAAsB;QACtB,KAAK,MAAM,cAAc,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;YACrD,gDAAgD;YAChD,cAAc,CAAC,SAAS,GAAG,CAAC,CAAC;YAC7B,IAAI,KAA6B,CAAC;YAClC,OAAO,CAAC,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;gBACvD,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;gBAC9B,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;gBAC/C,IAAI,QAAQ,EAAE,CAAC;oBACb,QAAQ,CAAC,KAAK,EAAE,CAAC;oBACjB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;wBACvC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oBAChC,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;gBACjE,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,cAAc,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAE3C,+BAA+B;IAC/B,IAAI,WAA+B,CAAC;IACpC,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,IAAI,SAAS,GAAa,EAAE,CAAC;IAE7B,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,YAAY,EAAE,CAAC;QACxC,IAAI,IAAI,CAAC,KAAK,GAAG,SAAS,EAAE,CAAC;YAC3B,WAAW,GAAG,IAAI,CAAC;YACnB,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC;YACvB,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,CAAC;IACH,CAAC;IAED,IAAI,CAAC,WAAW,IAAI,SAAS,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC;IAEpD,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,GAAG,cAAc,CAAC,GAAG,GAAG,CAAC,CAAC;IAElE,OAAO;QACL,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,IAAI,EAAE,WAAW;QACjB,UAAU,EAAE,SAAS;QACrB,eAAe,EAAE,cAAc;QAC/B,UAAU;QACV,SAAS,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;QAChC,YAAY,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;KACpC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,2BAA2B,CAAC,WAAmC;IACtE,MAAM,KAAK,GAAe,EAAE,CAAC;IAE7B,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;QAC/B,MAAM,eAAe,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEtF,KAAK,CAAC,IAAI,CAAC;YACT,OAAO,EAAE,WAAW,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM;YACxE,WAAW,EAAE,GAAG,eAAe,EAAE,eAAe,IAAI,IAAI,CAAC,QAAQ,SAAS,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,UAAU,aAAa;YACpH,IAAI,EAAE,kBAAkB;YACxB,MAAM,EAAE,IAAI,CAAC,IAAI;YACjB,QAAQ,EAAE,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI;SAC9C,CAAC,CAAC;IACL,CAAC;IAED,OAAO;QACL,IAAI,EAAE,qBAAqB;QAC3B,WAAW,EAAE,mEAAmE;QAChF,OAAO,EAAE,OAAO;QAChB,OAAO,EAAE,KAAK;QACd,KAAK;KACN,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAmB;IACnD,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;IAC9C,KAAK,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;IAC9C,KAAK,CAAC,IAAI,CAAC,oBAAoB,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;IACtD,KAAK,CAAC,IAAI,CAAC,eAAe,MAAM,CAAC,UAAU,IAAI,CAAC,CAAC;IACjD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpC,KAAK,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;QAChD,KAAK,CAAC,IAAI,CAAC,qFAAqF,CAAC,CAAC;QAClG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;QACtC,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC;QAC3G,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAC7B,KAAK,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,IAAI,CAAC,UAAU,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC1F,KAAK,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,eAAe,aAAa,CAAC,CAAC;QACzE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;QACzB,KAAK,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;QACzC,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QACxC,KAAK,CAAC,IAAI,CAAC,WAAW,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC;QACnD,KAAK,CAAC,IAAI,CAAC,YAAY,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QAC5D,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;YAC9C,KAAK,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QAC3D,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,iEAAiE,CAAC,CAAC;IAChF,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,gFAAgF;AAEhF,MAAM,SAAS,GAAG,GAAG,CAAC;AACtB,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AAEhF,SAAS,kBAAkB,CAAC,GAAW;IACrC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,QAAQ,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;IAE5C,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACnC,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YACxB,qBAAqB,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;AACnC,CAAC;AAED,SAAS,qBAAqB,CAAC,GAAW,EAAE,GAAW,EAAE,KAAe;IACtE,IAAI,KAAK,CAAC,MAAM,IAAI,SAAS;QAAE,OAAO;IAEtC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;QACjC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,IAAI,KAAK,CAAC,MAAM,IAAI,SAAS;gBAAE,OAAO;YACtC,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,KAAK,cAAc,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,OAAO;gBAAE,SAAS;YAEzG,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAClC,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBAChC,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;oBACvB,qBAAqB,CAAC,QAAQ,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;gBAC9C,CAAC;qBAAM,IAAI,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;oBAC/C,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC;gBACtC,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,oBAAoB;YACtB,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,8BAA8B;IAChC,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,QAAgB;IAClC,OAAO,uBAAuB,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,oCAAoC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACvG,CAAC;AAED,SAAS,YAAY,CAAC,QAAgB;IACpC,OAAO,+CAA+C,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACxE,CAAC"}
|