@galileodev/verify 0.1.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/dist/guide/composer.d.ts +10 -0
- package/dist/guide/composer.d.ts.map +1 -0
- package/dist/guide/composer.js +48 -0
- package/dist/guide/composer.js.map +1 -0
- package/dist/guide/constraints.d.ts +3 -0
- package/dist/guide/constraints.d.ts.map +1 -0
- package/dist/guide/constraints.js +12 -0
- package/dist/guide/constraints.js.map +1 -0
- package/dist/guide/file-tree.d.ts +2 -0
- package/dist/guide/file-tree.d.ts.map +1 -0
- package/dist/guide/file-tree.js +24 -0
- package/dist/guide/file-tree.js.map +1 -0
- package/dist/index.d.ts +22 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +25 -0
- package/dist/index.js.map +1 -0
- package/dist/karpathy/loop.d.ts +6 -0
- package/dist/karpathy/loop.d.ts.map +1 -0
- package/dist/karpathy/loop.js +169 -0
- package/dist/karpathy/loop.js.map +1 -0
- package/dist/orchestrator/acdc.d.ts +14 -0
- package/dist/orchestrator/acdc.d.ts.map +1 -0
- package/dist/orchestrator/acdc.js +91 -0
- package/dist/orchestrator/acdc.js.map +1 -0
- package/dist/solve/agent.d.ts +8 -0
- package/dist/solve/agent.d.ts.map +1 -0
- package/dist/solve/agent.js +151 -0
- package/dist/solve/agent.js.map +1 -0
- package/dist/solve/hint-matcher.d.ts +8 -0
- package/dist/solve/hint-matcher.d.ts.map +1 -0
- package/dist/solve/hint-matcher.js +36 -0
- package/dist/solve/hint-matcher.js.map +1 -0
- package/dist/solve/staged-pipeline.d.ts +12 -0
- package/dist/solve/staged-pipeline.d.ts.map +1 -0
- package/dist/solve/staged-pipeline.js +51 -0
- package/dist/solve/staged-pipeline.js.map +1 -0
- package/dist/trust/trust-evaluator.d.ts +9 -0
- package/dist/trust/trust-evaluator.d.ts.map +1 -0
- package/dist/trust/trust-evaluator.js +30 -0
- package/dist/trust/trust-evaluator.js.map +1 -0
- package/dist/trust/trust-store.d.ts +16 -0
- package/dist/trust/trust-store.d.ts.map +1 -0
- package/dist/trust/trust-store.js +86 -0
- package/dist/trust/trust-store.js.map +1 -0
- package/dist/trust/types.d.ts +15 -0
- package/dist/trust/types.d.ts.map +1 -0
- package/dist/trust/types.js +2 -0
- package/dist/trust/types.js.map +1 -0
- package/dist/types.d.ts +132 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/secret-strip.d.ts +6 -0
- package/dist/utils/secret-strip.d.ts.map +1 -0
- package/dist/utils/secret-strip.js +34 -0
- package/dist/utils/secret-strip.js.map +1 -0
- package/dist/verifier/plugins/eslint.d.ts +9 -0
- package/dist/verifier/plugins/eslint.d.ts.map +1 -0
- package/dist/verifier/plugins/eslint.js +59 -0
- package/dist/verifier/plugins/eslint.js.map +1 -0
- package/dist/verifier/plugins/semgrep.d.ts +9 -0
- package/dist/verifier/plugins/semgrep.d.ts.map +1 -0
- package/dist/verifier/plugins/semgrep.js +46 -0
- package/dist/verifier/plugins/semgrep.js.map +1 -0
- package/dist/verifier/plugins/test-runner.d.ts +11 -0
- package/dist/verifier/plugins/test-runner.d.ts.map +1 -0
- package/dist/verifier/plugins/test-runner.js +46 -0
- package/dist/verifier/plugins/test-runner.js.map +1 -0
- package/dist/verifier/plugins/tsc.d.ts +9 -0
- package/dist/verifier/plugins/tsc.d.ts.map +1 -0
- package/dist/verifier/plugins/tsc.js +41 -0
- package/dist/verifier/plugins/tsc.js.map +1 -0
- package/dist/verifier/runner.d.ts +14 -0
- package/dist/verifier/runner.d.ts.map +1 -0
- package/dist/verifier/runner.js +45 -0
- package/dist/verifier/runner.js.map +1 -0
- package/package.json +28 -0
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import { readFile, writeFile } from 'node:fs/promises';
|
|
2
|
+
import { resolve, relative, isAbsolute, sep } from 'node:path';
|
|
3
|
+
import { execFileSync } from 'node:child_process';
|
|
4
|
+
import { StagedPipeline } from './staged-pipeline.js';
|
|
5
|
+
export class SolveAgent {
|
|
6
|
+
async remediate(report, context) {
|
|
7
|
+
const resolved = [];
|
|
8
|
+
const unresolved = [];
|
|
9
|
+
const attempts = [];
|
|
10
|
+
let tokensUsed = 0;
|
|
11
|
+
if (!Number.isFinite(context.maxRetriesPerFinding) || context.maxRetriesPerFinding < 1) {
|
|
12
|
+
throw new Error('maxRetriesPerFinding must be a finite number >= 1.');
|
|
13
|
+
}
|
|
14
|
+
// Group findings by file
|
|
15
|
+
const groups = this.groupByFile(report.findings.filter((f) => f.severity === 'error'));
|
|
16
|
+
for (const [rawFile, findings] of groups) {
|
|
17
|
+
if (context.budget.exhausted()) {
|
|
18
|
+
unresolved.push(...findings);
|
|
19
|
+
continue;
|
|
20
|
+
}
|
|
21
|
+
// Sanitize path: ensure it's within workingDir
|
|
22
|
+
const file = this.safePath(context.workingDir, rawFile);
|
|
23
|
+
if (!file) {
|
|
24
|
+
unresolved.push(...findings);
|
|
25
|
+
continue;
|
|
26
|
+
}
|
|
27
|
+
const findingId = `${findings[0].ruleId}:${file}:${findings[0].line}`;
|
|
28
|
+
const history = [];
|
|
29
|
+
let retries = 0;
|
|
30
|
+
let fixed = false;
|
|
31
|
+
while (retries < context.maxRetriesPerFinding && !context.budget.exhausted()) {
|
|
32
|
+
retries++;
|
|
33
|
+
// Read current file content
|
|
34
|
+
let fileContent;
|
|
35
|
+
try {
|
|
36
|
+
fileContent = await readFile(resolve(context.workingDir, file), 'utf-8');
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
fileContent = '';
|
|
40
|
+
}
|
|
41
|
+
// Build prompt
|
|
42
|
+
const prompt = this.buildPrompt(findings, fileContent, context);
|
|
43
|
+
// Get LLM response
|
|
44
|
+
let response;
|
|
45
|
+
try {
|
|
46
|
+
response = await context.llm.complete(prompt, undefined, history.length > 0 ? history : undefined);
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
break;
|
|
50
|
+
}
|
|
51
|
+
const responseTokens = response.length; // approximate
|
|
52
|
+
try {
|
|
53
|
+
context.budget.consume(responseTokens);
|
|
54
|
+
}
|
|
55
|
+
catch {
|
|
56
|
+
unresolved.push(...findings);
|
|
57
|
+
break;
|
|
58
|
+
}
|
|
59
|
+
tokensUsed += responseTokens;
|
|
60
|
+
// Parse response
|
|
61
|
+
let hypothesis;
|
|
62
|
+
let patch;
|
|
63
|
+
try {
|
|
64
|
+
const parsed = JSON.parse(response);
|
|
65
|
+
hypothesis = parsed.hypothesis ?? 'No hypothesis provided';
|
|
66
|
+
patch = parsed.patch ?? '';
|
|
67
|
+
}
|
|
68
|
+
catch {
|
|
69
|
+
hypothesis = 'Failed to parse LLM response';
|
|
70
|
+
patch = '';
|
|
71
|
+
}
|
|
72
|
+
// Apply patch
|
|
73
|
+
if (patch) {
|
|
74
|
+
try {
|
|
75
|
+
await writeFile(resolve(context.workingDir, file), patch, 'utf-8');
|
|
76
|
+
}
|
|
77
|
+
catch {
|
|
78
|
+
// Can't write file
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
// Re-verify with relevant verifier
|
|
82
|
+
const reFindings = await context.verifier.runSingle(findings[0].verifierId, {
|
|
83
|
+
workingDir: context.workingDir,
|
|
84
|
+
files: [file],
|
|
85
|
+
sandbox: context.sandbox,
|
|
86
|
+
});
|
|
87
|
+
const stillFailing = reFindings.some((f) => f.severity === 'error' && f.file === file);
|
|
88
|
+
attempts.push({
|
|
89
|
+
findingId,
|
|
90
|
+
attempt: retries,
|
|
91
|
+
hypothesis,
|
|
92
|
+
patch,
|
|
93
|
+
verificationPassed: !stillFailing,
|
|
94
|
+
tokensUsed: responseTokens,
|
|
95
|
+
});
|
|
96
|
+
if (!stillFailing) {
|
|
97
|
+
fixed = true;
|
|
98
|
+
resolved.push(...findings);
|
|
99
|
+
break;
|
|
100
|
+
}
|
|
101
|
+
// Add to history for multi-turn
|
|
102
|
+
history.push({ role: 'user', content: prompt }, { role: 'assistant', content: response }, { role: 'user', content: `Fix attempt ${retries} failed. Remaining errors: ${reFindings.map((f) => f.message).join('; ')}` });
|
|
103
|
+
}
|
|
104
|
+
if (!fixed && !unresolved.includes(findings[0])) {
|
|
105
|
+
unresolved.push(...findings);
|
|
106
|
+
// Revert this file to original
|
|
107
|
+
try {
|
|
108
|
+
execFileSync('git', ['checkout', '--', file], { cwd: context.workingDir });
|
|
109
|
+
}
|
|
110
|
+
catch {
|
|
111
|
+
// Best effort revert
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
return {
|
|
116
|
+
resolved,
|
|
117
|
+
unresolved,
|
|
118
|
+
attempts,
|
|
119
|
+
reverted: unresolved.length > 0 && resolved.length === 0,
|
|
120
|
+
tokensUsed,
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
safePath(workingDir, file) {
|
|
124
|
+
// Convert absolute paths to relative, then verify containment
|
|
125
|
+
const relFile = isAbsolute(file) ? relative(workingDir, file) : file;
|
|
126
|
+
const resolved = resolve(workingDir, relFile);
|
|
127
|
+
const resolvedDir = resolve(workingDir);
|
|
128
|
+
if (!resolved.startsWith(resolvedDir + sep) && resolved !== resolvedDir) {
|
|
129
|
+
return null; // Path escapes workingDir
|
|
130
|
+
}
|
|
131
|
+
return relFile;
|
|
132
|
+
}
|
|
133
|
+
groupByFile(findings) {
|
|
134
|
+
const groups = new Map();
|
|
135
|
+
for (const finding of findings) {
|
|
136
|
+
const group = groups.get(finding.file) ?? [];
|
|
137
|
+
group.push(finding);
|
|
138
|
+
groups.set(finding.file, group);
|
|
139
|
+
}
|
|
140
|
+
return groups;
|
|
141
|
+
}
|
|
142
|
+
buildPrompt(findings, fileContent, context) {
|
|
143
|
+
const pipeline = new StagedPipeline({
|
|
144
|
+
staged: context.staged ?? true,
|
|
145
|
+
autoFixTrivial: context.autoFixTrivial ?? false,
|
|
146
|
+
certificates: context.certificates ?? true,
|
|
147
|
+
});
|
|
148
|
+
return pipeline.buildEnrichedPrompt(findings, fileContent);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
//# sourceMappingURL=agent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/solve/agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAStD,MAAM,OAAO,UAAU;IACrB,KAAK,CAAC,SAAS,CACb,MAA0B,EAC1B,OAAqB;QAErB,MAAM,QAAQ,GAA0B,EAAE,CAAC;QAC3C,MAAM,UAAU,GAA0B,EAAE,CAAC;QAC7C,MAAM,QAAQ,GAAyB,EAAE,CAAC;QAC1C,IAAI,UAAU,GAAG,CAAC,CAAC;QAEnB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,oBAAoB,CAAC,IAAI,OAAO,CAAC,oBAAoB,GAAG,CAAC,EAAE,CAAC;YACvF,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;QACxE,CAAC;QAED,yBAAyB;QACzB,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC;QAEvF,KAAK,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,MAAM,EAAE,CAAC;YACzC,IAAI,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,CAAC;gBAC/B,UAAU,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC;gBAC7B,SAAS;YACX,CAAC;YAED,+CAA+C;YAC/C,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YACxD,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,UAAU,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC;gBAC7B,SAAS;YACX,CAAC;YAED,MAAM,SAAS,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,IAAI,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACtE,MAAM,OAAO,GAAkB,EAAE,CAAC;YAClC,IAAI,OAAO,GAAG,CAAC,CAAC;YAChB,IAAI,KAAK,GAAG,KAAK,CAAC;YAElB,OAAO,OAAO,GAAG,OAAO,CAAC,oBAAoB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,CAAC;gBAC7E,OAAO,EAAE,CAAC;gBAEV,4BAA4B;gBAC5B,IAAI,WAAmB,CAAC;gBACxB,IAAI,CAAC;oBACH,WAAW,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;gBAC3E,CAAC;gBAAC,MAAM,CAAC;oBACP,WAAW,GAAG,EAAE,CAAC;gBACnB,CAAC;gBAED,eAAe;gBACf,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;gBAEhE,mBAAmB;gBACnB,IAAI,QAAgB,CAAC;gBACrB,IAAI,CAAC;oBACH,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;gBACrG,CAAC;gBAAC,MAAM,CAAC;oBACP,MAAM;gBACR,CAAC;gBAED,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,cAAc;gBACtD,IAAI,CAAC;oBACH,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;gBACzC,CAAC;gBAAC,MAAM,CAAC;oBACP,UAAU,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC;oBAC7B,MAAM;gBACR,CAAC;gBACD,UAAU,IAAI,cAAc,CAAC;gBAE7B,iBAAiB;gBACjB,IAAI,UAAkB,CAAC;gBACvB,IAAI,KAAa,CAAC;gBAClB,IAAI,CAAC;oBACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;oBACpC,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,wBAAwB,CAAC;oBAC3D,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;gBAC7B,CAAC;gBAAC,MAAM,CAAC;oBACP,UAAU,GAAG,8BAA8B,CAAC;oBAC5C,KAAK,GAAG,EAAE,CAAC;gBACb,CAAC;gBAED,cAAc;gBACd,IAAI,KAAK,EAAE,CAAC;oBACV,IAAI,CAAC;wBACH,MAAM,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;oBACrE,CAAC;oBAAC,MAAM,CAAC;wBACP,mBAAmB;oBACrB,CAAC;gBACH,CAAC;gBAED,mCAAmC;gBACnC,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE;oBAC1E,UAAU,EAAE,OAAO,CAAC,UAAU;oBAC9B,KAAK,EAAE,CAAC,IAAI,CAAC;oBACb,OAAO,EAAE,OAAO,CAAC,OAAO;iBACzB,CAAC,CAAC;gBAEH,MAAM,YAAY,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CACzC,CAAC,CAAC,QAAQ,KAAK,OAAO,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAC1C,CAAC;gBAEF,QAAQ,CAAC,IAAI,CAAC;oBACZ,SAAS;oBACT,OAAO,EAAE,OAAO;oBAChB,UAAU;oBACV,KAAK;oBACL,kBAAkB,EAAE,CAAC,YAAY;oBACjC,UAAU,EAAE,cAAc;iBAC3B,CAAC,CAAC;gBAEH,IAAI,CAAC,YAAY,EAAE,CAAC;oBAClB,KAAK,GAAG,IAAI,CAAC;oBACb,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC;oBAC3B,MAAM;gBACR,CAAC;gBAED,gCAAgC;gBAChC,OAAO,CAAC,IAAI,CACV,EAAE,IAAI,EAAE,MAAe,EAAE,OAAO,EAAE,MAAM,EAAE,EAC1C,EAAE,IAAI,EAAE,WAAoB,EAAE,OAAO,EAAE,QAAQ,EAAE,EACjD,EAAE,IAAI,EAAE,MAAe,EAAE,OAAO,EAAE,eAAe,OAAO,8BAA8B,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CACtI,CAAC;YACJ,CAAC;YAED,IAAI,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAChD,UAAU,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC;gBAC7B,+BAA+B;gBAC/B,IAAI,CAAC;oBACH,YAAY,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;gBAC7E,CAAC;gBAAC,MAAM,CAAC;oBACP,qBAAqB;gBACvB,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO;YACL,QAAQ;YACR,UAAU;YACV,QAAQ;YACR,QAAQ,EAAE,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YACxD,UAAU;SACX,CAAC;IACJ,CAAC;IAEO,QAAQ,CAAC,UAAkB,EAAE,IAAY;QAC/C,8DAA8D;QAC9D,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACrE,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAC9C,MAAM,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;QACxC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,WAAW,GAAG,GAAG,CAAC,IAAI,QAAQ,KAAK,WAAW,EAAE,CAAC;YACxE,OAAO,IAAI,CAAC,CAAC,0BAA0B;QACzC,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,WAAW,CAAC,QAA+B;QACjD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAiC,CAAC;QACxD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YAC7C,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACpB,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAClC,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,WAAW,CACjB,QAA+B,EAC/B,WAAmB,EACnB,OAAqB;QAErB,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC;YAClC,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,IAAI;YAC9B,cAAc,EAAE,OAAO,CAAC,cAAc,IAAI,KAAK;YAC/C,YAAY,EAAE,OAAO,CAAC,YAAY,IAAI,IAAI;SAC3C,CAAC,CAAC;QACH,OAAO,QAAQ,CAAC,mBAAmB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IAC7D,CAAC;CACF"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { VerificationFinding } from '../types.js';
|
|
2
|
+
export interface FixHint {
|
|
3
|
+
type: 'ADD_IMPORT' | 'TYPE_MISMATCH' | 'REMOVE_UNUSED' | 'ARITY_MISMATCH';
|
|
4
|
+
finding: VerificationFinding;
|
|
5
|
+
details: Record<string, string | number>;
|
|
6
|
+
}
|
|
7
|
+
export declare function matchHints(findings: VerificationFinding[]): FixHint[];
|
|
8
|
+
//# sourceMappingURL=hint-matcher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hint-matcher.d.ts","sourceRoot":"","sources":["../../src/solve/hint-matcher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAEvD,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,YAAY,GAAG,eAAe,GAAG,eAAe,GAAG,gBAAgB,CAAC;IAC1E,OAAO,EAAE,mBAAmB,CAAC;IAC7B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;CAC1C;AA+BD,wBAAgB,UAAU,CAAC,QAAQ,EAAE,mBAAmB,EAAE,GAAG,OAAO,EAAE,CAYrE"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
const PATTERNS = [
|
|
2
|
+
{
|
|
3
|
+
regex: /Cannot find module '([^']+)'/,
|
|
4
|
+
type: 'ADD_IMPORT',
|
|
5
|
+
extract: (m) => ({ module: m[1] }),
|
|
6
|
+
},
|
|
7
|
+
{
|
|
8
|
+
regex: /Property '([^']+)' does not exist on type '([^']+)'/,
|
|
9
|
+
type: 'TYPE_MISMATCH',
|
|
10
|
+
extract: (m) => ({ property: m[1], expectedType: m[2] }),
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
regex: /'([^']+)' is declared but (?:its value is )?never (?:read|used)/,
|
|
14
|
+
type: 'REMOVE_UNUSED',
|
|
15
|
+
extract: (m) => ({ identifier: m[1] }),
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
regex: /Expected (\d+) arguments?, but got (\d+)/,
|
|
19
|
+
type: 'ARITY_MISMATCH',
|
|
20
|
+
extract: (m) => ({ expected: parseInt(m[1], 10), got: parseInt(m[2], 10) }),
|
|
21
|
+
},
|
|
22
|
+
];
|
|
23
|
+
export function matchHints(findings) {
|
|
24
|
+
const hints = [];
|
|
25
|
+
for (const finding of findings) {
|
|
26
|
+
for (const pattern of PATTERNS) {
|
|
27
|
+
const match = finding.message.match(pattern.regex);
|
|
28
|
+
if (match) {
|
|
29
|
+
hints.push({ type: pattern.type, finding, details: pattern.extract(match) });
|
|
30
|
+
break;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return hints;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=hint-matcher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hint-matcher.js","sourceRoot":"","sources":["../../src/solve/hint-matcher.ts"],"names":[],"mappings":"AAcA,MAAM,QAAQ,GAAkB;IAC9B;QACE,KAAK,EAAE,8BAA8B;QACrC,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KACnC;IACD;QACE,KAAK,EAAE,qDAAqD;QAC5D,IAAI,EAAE,eAAe;QACrB,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KACzD;IACD;QACE,KAAK,EAAE,iEAAiE;QACxE,IAAI,EAAE,eAAe;QACrB,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KACvC;IACD;QACE,KAAK,EAAE,0CAA0C;QACjD,IAAI,EAAE,gBAAgB;QACtB,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;KAC5E;CACF,CAAC;AAEF,MAAM,UAAU,UAAU,CAAC,QAA+B;IACxD,MAAM,KAAK,GAAc,EAAE,CAAC;IAC5B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACnD,IAAI,KAAK,EAAE,CAAC;gBACV,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBAC7E,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { VerificationFinding } from '../types.js';
|
|
2
|
+
export interface StagedPipelineConfig {
|
|
3
|
+
staged: boolean;
|
|
4
|
+
autoFixTrivial: boolean;
|
|
5
|
+
certificates: boolean;
|
|
6
|
+
}
|
|
7
|
+
export declare class StagedPipeline {
|
|
8
|
+
private readonly config;
|
|
9
|
+
constructor(config: StagedPipelineConfig);
|
|
10
|
+
buildEnrichedPrompt(findings: VerificationFinding[], fileContent: string): string;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=staged-pipeline.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"staged-pipeline.d.ts","sourceRoot":"","sources":["../../src/solve/staged-pipeline.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAGvD,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,OAAO,CAAC;IAChB,cAAc,EAAE,OAAO,CAAC;IACxB,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,qBAAa,cAAc;IACb,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,oBAAoB;IAEzD,mBAAmB,CACjB,QAAQ,EAAE,mBAAmB,EAAE,EAC/B,WAAW,EAAE,MAAM,GAClB,MAAM;CA8CV"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { matchHints } from './hint-matcher.js';
|
|
2
|
+
export class StagedPipeline {
|
|
3
|
+
config;
|
|
4
|
+
constructor(config) {
|
|
5
|
+
this.config = config;
|
|
6
|
+
}
|
|
7
|
+
buildEnrichedPrompt(findings, fileContent) {
|
|
8
|
+
const parts = [
|
|
9
|
+
'You are a code repair agent. Fix the following verification errors.',
|
|
10
|
+
'',
|
|
11
|
+
'## File Content',
|
|
12
|
+
'```',
|
|
13
|
+
fileContent,
|
|
14
|
+
'```',
|
|
15
|
+
'',
|
|
16
|
+
];
|
|
17
|
+
if (this.config.staged) {
|
|
18
|
+
const hints = matchHints(findings);
|
|
19
|
+
const hintMap = new Map();
|
|
20
|
+
for (const hint of hints) {
|
|
21
|
+
hintMap.set(hint.finding, hint);
|
|
22
|
+
}
|
|
23
|
+
parts.push('## Errors to Fix');
|
|
24
|
+
for (const finding of findings) {
|
|
25
|
+
const hint = hintMap.get(finding);
|
|
26
|
+
if (hint) {
|
|
27
|
+
parts.push(`- [${finding.ruleId}] Line ${finding.line}: ${finding.message}`);
|
|
28
|
+
parts.push(` HINT: ${hint.type} — ${JSON.stringify(hint.details)}`);
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
parts.push(`- [${finding.ruleId}] Line ${finding.line}: ${finding.message}`);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
parts.push('## Errors to Fix');
|
|
37
|
+
for (const finding of findings) {
|
|
38
|
+
parts.push(`- [${finding.ruleId}] Line ${finding.line}: ${finding.message}`);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
parts.push('', '## Instructions');
|
|
42
|
+
parts.push('Respond with a JSON object: { "hypothesis": "what you think is wrong", "patch": "the complete fixed file content" }');
|
|
43
|
+
parts.push('The patch must be the ENTIRE file content, not a diff.');
|
|
44
|
+
if (this.config.certificates) {
|
|
45
|
+
parts.push('');
|
|
46
|
+
parts.push('IMPORTANT: For each change you make, include a `// CERT: <reason>` comment explaining WHY this change fixes the specific error. Changes without certificates will be flagged for human review.');
|
|
47
|
+
}
|
|
48
|
+
return parts.join('\n');
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=staged-pipeline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"staged-pipeline.js","sourceRoot":"","sources":["../../src/solve/staged-pipeline.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAQ/C,MAAM,OAAO,cAAc;IACI;IAA7B,YAA6B,MAA4B;QAA5B,WAAM,GAAN,MAAM,CAAsB;IAAG,CAAC;IAE7D,mBAAmB,CACjB,QAA+B,EAC/B,WAAmB;QAEnB,MAAM,KAAK,GAAa;YACtB,qEAAqE;YACrE,EAAE;YACF,iBAAiB;YACjB,KAAK;YACL,WAAW;YACX,KAAK;YACL,EAAE;SACH,CAAC;QAEF,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACvB,MAAM,KAAK,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;YACnC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAwC,CAAC;YAChE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YAClC,CAAC;YAED,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YAC/B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;gBAC/B,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAClC,IAAI,IAAI,EAAE,CAAC;oBACT,KAAK,CAAC,IAAI,CAAC,MAAM,OAAO,CAAC,MAAM,UAAU,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;oBAC7E,KAAK,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBACvE,CAAC;qBAAM,CAAC;oBACN,KAAK,CAAC,IAAI,CAAC,MAAM,OAAO,CAAC,MAAM,UAAU,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC/E,CAAC;YACH,CAAC;QACH,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YAC/B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;gBAC/B,KAAK,CAAC,IAAI,CAAC,MAAM,OAAO,CAAC,MAAM,UAAU,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;YAC/E,CAAC;QACH,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,iBAAiB,CAAC,CAAC;QAClC,KAAK,CAAC,IAAI,CAAC,qHAAqH,CAAC,CAAC;QAClI,KAAK,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;QAErE,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;YAC7B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACf,KAAK,CAAC,IAAI,CAAC,gMAAgM,CAAC,CAAC;QAC/M,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;CACF"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { TrustEntry } from './types.js';
|
|
2
|
+
import type { VerificationFinding } from '../types.js';
|
|
3
|
+
export declare class TrustEvaluator {
|
|
4
|
+
findingSeverity(finding: VerificationFinding): number;
|
|
5
|
+
remediationPriority(finding: VerificationFinding, trust: TrustEntry): number;
|
|
6
|
+
shouldSkipVerification(trust: TrustEntry, fileChanged: boolean): boolean;
|
|
7
|
+
prioritize(findings: VerificationFinding[], trustMap: Map<string, TrustEntry>): VerificationFinding[];
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=trust-evaluator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trust-evaluator.d.ts","sourceRoot":"","sources":["../../src/trust/trust-evaluator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAQvD,qBAAa,cAAc;IACzB,eAAe,CAAC,OAAO,EAAE,mBAAmB,GAAG,MAAM;IAIrD,mBAAmB,CAAC,OAAO,EAAE,mBAAmB,EAAE,KAAK,EAAE,UAAU,GAAG,MAAM;IAI5E,sBAAsB,CAAC,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,OAAO,GAAG,OAAO;IAKxE,UAAU,CACR,QAAQ,EAAE,mBAAmB,EAAE,EAC/B,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,GAChC,mBAAmB,EAAE;CAYzB"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
const SEVERITY_MAP = {
|
|
2
|
+
error: 1.0,
|
|
3
|
+
warning: 0.5,
|
|
4
|
+
info: 0.1,
|
|
5
|
+
};
|
|
6
|
+
export class TrustEvaluator {
|
|
7
|
+
findingSeverity(finding) {
|
|
8
|
+
return SEVERITY_MAP[finding.severity] ?? 0.0;
|
|
9
|
+
}
|
|
10
|
+
remediationPriority(finding, trust) {
|
|
11
|
+
return this.findingSeverity(finding) * (1 - trust.trustScore);
|
|
12
|
+
}
|
|
13
|
+
shouldSkipVerification(trust, fileChanged) {
|
|
14
|
+
if (fileChanged)
|
|
15
|
+
return false;
|
|
16
|
+
return trust.tier === 'senior' || trust.tier === 'principal';
|
|
17
|
+
}
|
|
18
|
+
prioritize(findings, trustMap) {
|
|
19
|
+
const defaultTrust = {
|
|
20
|
+
passCount: 0, failCount: 0, trustScore: 0,
|
|
21
|
+
tier: 'intern', consecutivePasses: 0, lastVerified: 0,
|
|
22
|
+
};
|
|
23
|
+
return [...findings].sort((a, b) => {
|
|
24
|
+
const trustA = trustMap.get(a.file) ?? defaultTrust;
|
|
25
|
+
const trustB = trustMap.get(b.file) ?? defaultTrust;
|
|
26
|
+
return this.remediationPriority(b, trustB) - this.remediationPriority(a, trustA);
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=trust-evaluator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trust-evaluator.js","sourceRoot":"","sources":["../../src/trust/trust-evaluator.ts"],"names":[],"mappings":"AAGA,MAAM,YAAY,GAA2B;IAC3C,KAAK,EAAE,GAAG;IACV,OAAO,EAAE,GAAG;IACZ,IAAI,EAAE,GAAG;CACV,CAAC;AAEF,MAAM,OAAO,cAAc;IACzB,eAAe,CAAC,OAA4B;QAC1C,OAAO,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC;IAC/C,CAAC;IAED,mBAAmB,CAAC,OAA4B,EAAE,KAAiB;QACjE,OAAO,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC;IAChE,CAAC;IAED,sBAAsB,CAAC,KAAiB,EAAE,WAAoB;QAC5D,IAAI,WAAW;YAAE,OAAO,KAAK,CAAC;QAC9B,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,CAAC;IAC/D,CAAC;IAED,UAAU,CACR,QAA+B,EAC/B,QAAiC;QAEjC,MAAM,YAAY,GAAe;YAC/B,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC;YACzC,IAAI,EAAE,QAAQ,EAAE,iBAAiB,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC;SACtD,CAAC;QAEF,OAAO,CAAC,GAAG,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACjC,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC;YACpD,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC;YACpD,OAAO,IAAI,CAAC,mBAAmB,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QACnF,CAAC,CAAC,CAAC;IACL,CAAC;CACF"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { TrustEntry, TrustStoreConfig } from './types.js';
|
|
2
|
+
export declare class TrustStore {
|
|
3
|
+
private entries;
|
|
4
|
+
private readonly filePath;
|
|
5
|
+
private readonly promotionThreshold;
|
|
6
|
+
private readonly promotionBonus;
|
|
7
|
+
private readonly demotionPenalty;
|
|
8
|
+
constructor(dir: string, config?: TrustStoreConfig);
|
|
9
|
+
get(file: string): TrustEntry;
|
|
10
|
+
recordPass(file: string): void;
|
|
11
|
+
recordFail(file: string): void;
|
|
12
|
+
getAll(): Map<string, TrustEntry>;
|
|
13
|
+
save(): Promise<void>;
|
|
14
|
+
load(): Promise<void>;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=trust-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trust-store.d.ts","sourceRoot":"","sources":["../../src/trust/trust-store.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAa,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAS1E,qBAAa,UAAU;IACrB,OAAO,CAAC,OAAO,CAAiC;IAChD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAS;IAC5C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;gBAE7B,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,gBAAgB;IAOlD,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU;IAW7B,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAc9B,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAW9B,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC;IAI3B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAYrB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAW5B"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { readFile, writeFile, mkdir } from 'node:fs/promises';
|
|
2
|
+
import { existsSync } from 'node:fs';
|
|
3
|
+
import { join } from 'node:path';
|
|
4
|
+
function tierFromScore(score) {
|
|
5
|
+
if (score >= 0.75)
|
|
6
|
+
return 'principal';
|
|
7
|
+
if (score >= 0.50)
|
|
8
|
+
return 'senior';
|
|
9
|
+
if (score >= 0.25)
|
|
10
|
+
return 'junior';
|
|
11
|
+
return 'intern';
|
|
12
|
+
}
|
|
13
|
+
export class TrustStore {
|
|
14
|
+
entries = new Map();
|
|
15
|
+
filePath;
|
|
16
|
+
promotionThreshold;
|
|
17
|
+
promotionBonus;
|
|
18
|
+
demotionPenalty;
|
|
19
|
+
constructor(dir, config) {
|
|
20
|
+
this.filePath = join(dir, 'trust.json');
|
|
21
|
+
this.promotionThreshold = config?.promotionThreshold ?? 5;
|
|
22
|
+
this.promotionBonus = config?.promotionBonus ?? 0.1;
|
|
23
|
+
this.demotionPenalty = config?.demotionPenalty ?? 0.2;
|
|
24
|
+
}
|
|
25
|
+
get(file) {
|
|
26
|
+
const entry = this.entries.get(file);
|
|
27
|
+
if (entry) {
|
|
28
|
+
return { ...entry };
|
|
29
|
+
}
|
|
30
|
+
return {
|
|
31
|
+
passCount: 0, failCount: 0, trustScore: 0,
|
|
32
|
+
tier: 'intern', consecutivePasses: 0, lastVerified: 0,
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
recordPass(file) {
|
|
36
|
+
const entry = this.get(file);
|
|
37
|
+
entry.passCount++;
|
|
38
|
+
entry.consecutivePasses++;
|
|
39
|
+
entry.lastVerified = Date.now();
|
|
40
|
+
entry.trustScore = entry.passCount / (entry.passCount + entry.failCount + 1);
|
|
41
|
+
if (entry.consecutivePasses >= this.promotionThreshold) {
|
|
42
|
+
entry.trustScore = Math.min(1.0, entry.trustScore + this.promotionBonus);
|
|
43
|
+
entry.consecutivePasses = 0;
|
|
44
|
+
}
|
|
45
|
+
entry.tier = tierFromScore(entry.trustScore);
|
|
46
|
+
this.entries.set(file, entry);
|
|
47
|
+
}
|
|
48
|
+
recordFail(file) {
|
|
49
|
+
const entry = this.get(file);
|
|
50
|
+
entry.failCount++;
|
|
51
|
+
entry.consecutivePasses = 0;
|
|
52
|
+
entry.lastVerified = Date.now();
|
|
53
|
+
entry.trustScore = entry.passCount / (entry.passCount + entry.failCount + 1);
|
|
54
|
+
entry.trustScore = Math.max(0.0, entry.trustScore - this.demotionPenalty);
|
|
55
|
+
entry.tier = tierFromScore(entry.trustScore);
|
|
56
|
+
this.entries.set(file, entry);
|
|
57
|
+
}
|
|
58
|
+
getAll() {
|
|
59
|
+
return new Map(this.entries);
|
|
60
|
+
}
|
|
61
|
+
async save() {
|
|
62
|
+
const dir = join(this.filePath, '..');
|
|
63
|
+
if (!existsSync(dir)) {
|
|
64
|
+
await mkdir(dir, { recursive: true });
|
|
65
|
+
}
|
|
66
|
+
const obj = {};
|
|
67
|
+
for (const [key, val] of this.entries) {
|
|
68
|
+
obj[key] = val;
|
|
69
|
+
}
|
|
70
|
+
await writeFile(this.filePath, JSON.stringify(obj, null, 2), 'utf-8');
|
|
71
|
+
}
|
|
72
|
+
async load() {
|
|
73
|
+
if (!existsSync(this.filePath))
|
|
74
|
+
return;
|
|
75
|
+
try {
|
|
76
|
+
const raw = await readFile(this.filePath, 'utf-8');
|
|
77
|
+
const obj = JSON.parse(raw);
|
|
78
|
+
this.entries = new Map(Object.entries(obj));
|
|
79
|
+
}
|
|
80
|
+
catch {
|
|
81
|
+
// Corrupted/partially-written trust file — start fresh rather than crash
|
|
82
|
+
this.entries = new Map();
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=trust-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trust-store.js","sourceRoot":"","sources":["../../src/trust/trust-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export type TrustTier = 'intern' | 'junior' | 'senior' | 'principal';
|
|
2
|
+
export interface TrustEntry {
|
|
3
|
+
passCount: number;
|
|
4
|
+
failCount: number;
|
|
5
|
+
trustScore: number;
|
|
6
|
+
tier: TrustTier;
|
|
7
|
+
consecutivePasses: number;
|
|
8
|
+
lastVerified: number;
|
|
9
|
+
}
|
|
10
|
+
export interface TrustStoreConfig {
|
|
11
|
+
promotionThreshold?: number;
|
|
12
|
+
promotionBonus?: number;
|
|
13
|
+
demotionPenalty?: number;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/trust/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,WAAW,CAAC;AAErE,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,SAAS,CAAC;IAChB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/trust/types.ts"],"names":[],"mappings":""}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import type { PlaybookSnapshot } from '@galileodev/core';
|
|
2
|
+
export type RenderedTemplate = string;
|
|
3
|
+
export interface GuideContext {
|
|
4
|
+
playbook: PlaybookSnapshot;
|
|
5
|
+
template: RenderedTemplate;
|
|
6
|
+
verificationHistory: VerificationFinding[];
|
|
7
|
+
projectConstraints: ProjectConstraint[];
|
|
8
|
+
fileTree?: string[];
|
|
9
|
+
}
|
|
10
|
+
export interface ProjectConstraint {
|
|
11
|
+
id: string;
|
|
12
|
+
rule: string;
|
|
13
|
+
severity: 'error' | 'warning';
|
|
14
|
+
scope?: string;
|
|
15
|
+
}
|
|
16
|
+
export interface GuideOptions {
|
|
17
|
+
maxPlaybookEntries?: number;
|
|
18
|
+
includeFileTree?: boolean;
|
|
19
|
+
fileTreeDepth?: number;
|
|
20
|
+
}
|
|
21
|
+
export interface VerificationFinding {
|
|
22
|
+
verifierId: string;
|
|
23
|
+
severity: 'error' | 'warning' | 'info';
|
|
24
|
+
ruleId: string;
|
|
25
|
+
message: string;
|
|
26
|
+
file: string;
|
|
27
|
+
line: number;
|
|
28
|
+
column?: number;
|
|
29
|
+
suggestedFix?: string;
|
|
30
|
+
risk?: number;
|
|
31
|
+
}
|
|
32
|
+
export interface VerificationReport {
|
|
33
|
+
passed: boolean;
|
|
34
|
+
findings: VerificationFinding[];
|
|
35
|
+
summary: {
|
|
36
|
+
errors: number;
|
|
37
|
+
warnings: number;
|
|
38
|
+
info: number;
|
|
39
|
+
};
|
|
40
|
+
duration: number;
|
|
41
|
+
overallRisk?: number;
|
|
42
|
+
trustSnapshot?: Record<string, import('./trust/types.js').TrustEntry>;
|
|
43
|
+
}
|
|
44
|
+
export interface VerifyTarget {
|
|
45
|
+
workingDir: string;
|
|
46
|
+
files?: string[];
|
|
47
|
+
sandbox: import('@galileodev/core').ExecutionSandbox;
|
|
48
|
+
}
|
|
49
|
+
export interface VerifierPlugin {
|
|
50
|
+
id: string;
|
|
51
|
+
name: string;
|
|
52
|
+
available(): Promise<boolean>;
|
|
53
|
+
run(target: VerifyTarget): Promise<VerificationFinding[]>;
|
|
54
|
+
}
|
|
55
|
+
export interface SolveContext {
|
|
56
|
+
workingDir: string;
|
|
57
|
+
guideContext: GuideContext;
|
|
58
|
+
llm: import('@galileodev/core').LLMProvider;
|
|
59
|
+
sandbox: import('@galileodev/core').ExecutionSandbox;
|
|
60
|
+
verifier: import('./verifier/runner.js').VerifierRunner;
|
|
61
|
+
budget: import('@galileodev/core').TokenBudget;
|
|
62
|
+
maxRetriesPerFinding: number;
|
|
63
|
+
staged?: boolean;
|
|
64
|
+
autoFixTrivial?: boolean;
|
|
65
|
+
certificates?: boolean;
|
|
66
|
+
}
|
|
67
|
+
export interface SolveResult {
|
|
68
|
+
resolved: VerificationFinding[];
|
|
69
|
+
unresolved: VerificationFinding[];
|
|
70
|
+
attempts: RemediationAttempt[];
|
|
71
|
+
reverted: boolean;
|
|
72
|
+
tokensUsed: number;
|
|
73
|
+
}
|
|
74
|
+
export interface RemediationAttempt {
|
|
75
|
+
findingId: string;
|
|
76
|
+
attempt: number;
|
|
77
|
+
hypothesis: string;
|
|
78
|
+
patch: string;
|
|
79
|
+
verificationPassed: boolean;
|
|
80
|
+
tokensUsed: number;
|
|
81
|
+
}
|
|
82
|
+
export interface KarpathyMetric {
|
|
83
|
+
name: string;
|
|
84
|
+
command: string;
|
|
85
|
+
parseOutput(stdout: string): number;
|
|
86
|
+
direction: 'minimize' | 'maximize';
|
|
87
|
+
}
|
|
88
|
+
export interface KarpathyConfig {
|
|
89
|
+
workingDir: string;
|
|
90
|
+
targetFiles: string[];
|
|
91
|
+
metric: KarpathyMetric;
|
|
92
|
+
llm: import('@galileodev/core').LLMProvider;
|
|
93
|
+
sandbox: import('@galileodev/core').ExecutionSandbox;
|
|
94
|
+
verifier: import('./verifier/runner.js').VerifierRunner;
|
|
95
|
+
budget: import('@galileodev/core').TokenBudget;
|
|
96
|
+
maxExperiments: number;
|
|
97
|
+
timeBudgetMs?: number;
|
|
98
|
+
}
|
|
99
|
+
export interface KarpathyResult {
|
|
100
|
+
experiments: KarpathyExperiment[];
|
|
101
|
+
bestScore: number;
|
|
102
|
+
baselineScore: number;
|
|
103
|
+
improved: boolean;
|
|
104
|
+
tokensUsed: number;
|
|
105
|
+
}
|
|
106
|
+
export interface KarpathyExperiment {
|
|
107
|
+
id: number;
|
|
108
|
+
hypothesis: string;
|
|
109
|
+
patch: string;
|
|
110
|
+
score: number;
|
|
111
|
+
verificationPassed: boolean;
|
|
112
|
+
kept: boolean;
|
|
113
|
+
tokensUsed: number;
|
|
114
|
+
}
|
|
115
|
+
export interface ACDCInput {
|
|
116
|
+
taskId: string;
|
|
117
|
+
instruction: string;
|
|
118
|
+
projectDir: string;
|
|
119
|
+
llm: import('@galileodev/core').LLMProvider;
|
|
120
|
+
maxCycles: number;
|
|
121
|
+
budget: import('@galileodev/core').TokenBudget;
|
|
122
|
+
}
|
|
123
|
+
export interface ACDCResult {
|
|
124
|
+
taskId: string;
|
|
125
|
+
generation: import('@galileodev/core').GenerationResult;
|
|
126
|
+
verification: VerificationReport;
|
|
127
|
+
remediation?: SolveResult;
|
|
128
|
+
cycles: number;
|
|
129
|
+
passed: boolean;
|
|
130
|
+
tokensUsed: number;
|
|
131
|
+
}
|
|
132
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secret-strip.d.ts","sourceRoot":"","sources":["../../src/utils/secret-strip.ts"],"names":[],"mappings":"AAYA,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACzC;AAED,wBAAgB,YAAY,CAC1B,OAAO,EAAE,MAAM,EACf,IAAI,GAAE,SAAS,GAAG,aAA6B,GAC9C,WAAW,CA8Bb"}
|