agentflight 0.5.1 → 0.6.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/CHANGELOG.md +43 -0
- package/README.md +9 -4
- package/dist/adapters/projscan.js +1 -1
- package/dist/adapters/projscan.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +13 -6
- package/dist/cli.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +5 -0
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/report.d.ts +1 -0
- package/dist/commands/report.d.ts.map +1 -1
- package/dist/commands/report.js +21 -2
- package/dist/commands/report.js.map +1 -1
- package/dist/commands/status.d.ts +1 -0
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +65 -2
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/verify.d.ts +1 -0
- package/dist/commands/verify.d.ts.map +1 -1
- package/dist/commands/verify.js +173 -57
- package/dist/commands/verify.js.map +1 -1
- package/dist/core/changed-files.d.ts +3 -0
- package/dist/core/changed-files.d.ts.map +1 -1
- package/dist/core/changed-files.js +18 -1
- package/dist/core/changed-files.js.map +1 -1
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +2 -1
- package/dist/core/config.js.map +1 -1
- package/dist/core/git.d.ts.map +1 -1
- package/dist/core/git.js +3 -5
- package/dist/core/git.js.map +1 -1
- package/dist/core/review-intelligence.d.ts +2 -1
- package/dist/core/review-intelligence.d.ts.map +1 -1
- package/dist/core/review-intelligence.js +68 -4
- package/dist/core/review-intelligence.js.map +1 -1
- package/dist/renderers/html-replay.d.ts.map +1 -1
- package/dist/renderers/html-replay.js +71 -11
- package/dist/renderers/html-replay.js.map +1 -1
- package/dist/renderers/markdown-report.d.ts +5 -1
- package/dist/renderers/markdown-report.d.ts.map +1 -1
- package/dist/renderers/markdown-report.js +65 -1
- package/dist/renderers/markdown-report.js.map +1 -1
- package/dist/types/index.d.ts +10 -0
- package/dist/types/index.d.ts.map +1 -1
- package/docs/development/changed-file-filters.md +17 -0
- package/package.json +3 -3
package/dist/commands/verify.js
CHANGED
|
@@ -3,63 +3,108 @@ import { appendSessionEvent, appendVerificationRun } from "../core/session.js";
|
|
|
3
3
|
import { formatCommand, parseCommandLine, runVerificationCommand } from "../core/verification.js";
|
|
4
4
|
import { readCurrentSession } from "./status.js";
|
|
5
5
|
export async function runVerifyCommand(options) {
|
|
6
|
-
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
6
|
+
const session = await readCurrentSession(options.repoRoot);
|
|
7
|
+
const commandResolution = await resolveCommandSets(options);
|
|
8
|
+
const resolutionError = buildResolutionErrorResult(commandResolution.error);
|
|
9
|
+
if (resolutionError)
|
|
10
|
+
return resolutionError;
|
|
11
|
+
const commandSets = commandResolution.commandSets;
|
|
12
|
+
const missingCommand = buildMissingCommandResult(commandSets);
|
|
13
|
+
if (missingCommand)
|
|
14
|
+
return missingCommand;
|
|
15
|
+
const { output, runs } = await runResolvedVerificationCommands(options, session, commandResolution);
|
|
16
|
+
return {
|
|
17
|
+
output: `${output.join("\n")}\n`,
|
|
18
|
+
exitCode: allRunsPassed(runs) ? 0 : 1,
|
|
19
|
+
runs
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
async function runResolvedVerificationCommands(options, initialSession, commandResolution) {
|
|
23
|
+
let session = initialSession;
|
|
24
|
+
const output = buildVerificationOutputHeader(commandResolution.profileName);
|
|
25
|
+
const runs = [];
|
|
26
|
+
for (const commandArgs of commandResolution.commandSets) {
|
|
27
|
+
const result = await runSingleVerificationCommand(options, session, commandArgs);
|
|
28
|
+
session = result.session;
|
|
29
|
+
runs.push(result.run);
|
|
30
|
+
appendVerificationOutput(output, result.run);
|
|
17
31
|
}
|
|
32
|
+
return { output, runs };
|
|
33
|
+
}
|
|
34
|
+
function buildVerificationOutputHeader(profileName) {
|
|
18
35
|
const output = ["AgentFlight verification", ""];
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
session
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
output.push(`- stdout: ${run.stdoutPath}`);
|
|
51
|
-
output.push(`- stderr: ${run.stderrPath}`);
|
|
52
|
-
if (run.outputExcerpt) {
|
|
53
|
-
output.push(run.outputExcerpt);
|
|
54
|
-
}
|
|
55
|
-
if (run.status === "failed") {
|
|
56
|
-
output.push(`Next action: fix the command, then rerun agentflight verify -- ${run.command}`);
|
|
36
|
+
if (profileName) {
|
|
37
|
+
output.push(`Profile: ${profileName}`);
|
|
38
|
+
output.push("");
|
|
39
|
+
}
|
|
40
|
+
return output;
|
|
41
|
+
}
|
|
42
|
+
async function runSingleVerificationCommand(options, session, commandArgs) {
|
|
43
|
+
const command = formatCommand(commandArgs);
|
|
44
|
+
let updatedSession = await appendSessionEvent(options.repoRoot, session, {
|
|
45
|
+
type: "verification_started",
|
|
46
|
+
timestamp: options.now?.() ?? new Date(),
|
|
47
|
+
title: "Verification started",
|
|
48
|
+
metadata: { command }
|
|
49
|
+
});
|
|
50
|
+
const run = await runWithHeartbeat(runVerificationCommand({
|
|
51
|
+
repoRoot: options.repoRoot,
|
|
52
|
+
session: updatedSession,
|
|
53
|
+
commandArgs,
|
|
54
|
+
now: options.now,
|
|
55
|
+
commandRunner: options.commandRunner
|
|
56
|
+
}), options);
|
|
57
|
+
updatedSession = await appendVerificationRun(options.repoRoot, updatedSession, run);
|
|
58
|
+
updatedSession = await appendSessionEvent(options.repoRoot, updatedSession, {
|
|
59
|
+
type: run.status === "passed" ? "verification_passed" : "verification_failed",
|
|
60
|
+
timestamp: run.finishedAt,
|
|
61
|
+
title: run.status === "passed" ? "Verification passed" : "Verification failed",
|
|
62
|
+
metadata: {
|
|
63
|
+
command: run.command,
|
|
64
|
+
exitCode: run.exitCode,
|
|
65
|
+
stdoutPath: run.stdoutPath,
|
|
66
|
+
stderrPath: run.stderrPath
|
|
57
67
|
}
|
|
68
|
+
});
|
|
69
|
+
return { session: updatedSession, run };
|
|
70
|
+
}
|
|
71
|
+
function appendVerificationOutput(output, run) {
|
|
72
|
+
output.push(`${run.status}: ${run.command}`);
|
|
73
|
+
output.push("Evidence saved:");
|
|
74
|
+
output.push(`- stdout: ${run.stdoutPath}`);
|
|
75
|
+
output.push(`- stderr: ${run.stderrPath}`);
|
|
76
|
+
if (run.outputExcerpt) {
|
|
77
|
+
output.push(run.outputExcerpt);
|
|
58
78
|
}
|
|
79
|
+
if (run.status === "failed") {
|
|
80
|
+
output.push(`Next action: fix the command, then rerun agentflight verify -- ${run.command}`);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
function allRunsPassed(runs) {
|
|
84
|
+
return runs.every((run) => run.status === "passed");
|
|
85
|
+
}
|
|
86
|
+
function buildResolutionErrorResult(error) {
|
|
87
|
+
if (!error)
|
|
88
|
+
return null;
|
|
59
89
|
return {
|
|
60
|
-
output:
|
|
61
|
-
|
|
62
|
-
|
|
90
|
+
output: `AgentFlight verify
|
|
91
|
+
|
|
92
|
+
${error}
|
|
93
|
+
`,
|
|
94
|
+
exitCode: 1,
|
|
95
|
+
runs: []
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
function buildMissingCommandResult(commandSets) {
|
|
99
|
+
if (commandSets.length > 0)
|
|
100
|
+
return null;
|
|
101
|
+
return {
|
|
102
|
+
output: `AgentFlight verify
|
|
103
|
+
|
|
104
|
+
No verification command was provided and no commands are configured in .agentflight/config.json.
|
|
105
|
+
`,
|
|
106
|
+
exitCode: 1,
|
|
107
|
+
runs: []
|
|
63
108
|
};
|
|
64
109
|
}
|
|
65
110
|
async function runWithHeartbeat(promise, options) {
|
|
@@ -83,12 +128,83 @@ async function runWithHeartbeat(promise, options) {
|
|
|
83
128
|
}
|
|
84
129
|
}
|
|
85
130
|
async function resolveCommandSets(options) {
|
|
86
|
-
|
|
87
|
-
|
|
131
|
+
const profile = normalizeProfileOption(options.profile);
|
|
132
|
+
if (profile.error)
|
|
133
|
+
return { commandSets: [], error: profile.error };
|
|
134
|
+
if (profile.name && hasExplicitCommandArgs(options)) {
|
|
135
|
+
return {
|
|
136
|
+
commandSets: [],
|
|
137
|
+
error: "Cannot combine --profile with an explicit verification command."
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
if (hasExplicitCommandArgs(options)) {
|
|
141
|
+
return { commandSets: [options.commandArgs] };
|
|
88
142
|
}
|
|
89
143
|
const config = await loadConfig(options.repoRoot);
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
144
|
+
if (profile.name) {
|
|
145
|
+
return resolveProfileCommandSets(config?.verification, profile.name);
|
|
146
|
+
}
|
|
147
|
+
return resolveConfiguredCommandSets(config?.verification.commands);
|
|
148
|
+
}
|
|
149
|
+
function hasExplicitCommandArgs(options) {
|
|
150
|
+
return Array.isArray(options.commandArgs) && options.commandArgs.length > 0;
|
|
151
|
+
}
|
|
152
|
+
function normalizeProfileOption(profile) {
|
|
153
|
+
const name = profile?.trim();
|
|
154
|
+
if (profile !== undefined && !name)
|
|
155
|
+
return { error: "Verification profile name cannot be empty." };
|
|
156
|
+
return name ? { name } : {};
|
|
157
|
+
}
|
|
158
|
+
function resolveConfiguredCommandSets(commands) {
|
|
159
|
+
return {
|
|
160
|
+
commandSets: parseConfiguredCommands(commands ?? [])
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
function resolveProfileCommandSets(verification, profileName) {
|
|
164
|
+
const profile = readProfileCommands(verification, profileName);
|
|
165
|
+
if (profile.status === "unknown")
|
|
166
|
+
return unknownProfile(profileName);
|
|
167
|
+
if (profile.status === "invalid") {
|
|
168
|
+
return {
|
|
169
|
+
commandSets: [],
|
|
170
|
+
error: `Verification profile ${profileName} is invalid. Expected an array of command strings in .agentflight/config.json.`
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
const commandSets = parseConfiguredCommands(profile.commands);
|
|
174
|
+
if (commandSets.length === 0) {
|
|
175
|
+
return {
|
|
176
|
+
commandSets: [],
|
|
177
|
+
error: `Verification profile ${profileName} is empty. Add at least one command string in .agentflight/config.json.`
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
return { commandSets, profileName };
|
|
181
|
+
}
|
|
182
|
+
function readProfileCommands(verification, profileName) {
|
|
183
|
+
if (!verification || typeof verification !== "object")
|
|
184
|
+
return { status: "unknown" };
|
|
185
|
+
const profiles = verification.profiles;
|
|
186
|
+
if (!isProfileRecord(profiles))
|
|
187
|
+
return { status: "unknown" };
|
|
188
|
+
const profile = profiles[profileName];
|
|
189
|
+
if (profile === undefined)
|
|
190
|
+
return { status: "unknown" };
|
|
191
|
+
if (!isStringArray(profile))
|
|
192
|
+
return { status: "invalid" };
|
|
193
|
+
return { status: "found", commands: profile };
|
|
194
|
+
}
|
|
195
|
+
function isProfileRecord(value) {
|
|
196
|
+
return !!value && typeof value === "object" && !Array.isArray(value);
|
|
197
|
+
}
|
|
198
|
+
function isStringArray(value) {
|
|
199
|
+
return Array.isArray(value) && value.every((command) => typeof command === "string");
|
|
200
|
+
}
|
|
201
|
+
function parseConfiguredCommands(commands) {
|
|
202
|
+
return commands.map((command) => parseCommandLine(command)).filter((args) => args.length > 0);
|
|
203
|
+
}
|
|
204
|
+
function unknownProfile(profileName) {
|
|
205
|
+
return {
|
|
206
|
+
commandSets: [],
|
|
207
|
+
error: `Verification profile ${profileName} was not found in .agentflight/config.json.`
|
|
208
|
+
};
|
|
93
209
|
}
|
|
94
210
|
//# sourceMappingURL=verify.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify.js","sourceRoot":"","sources":["../../src/commands/verify.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAClG,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"verify.js","sourceRoot":"","sources":["../../src/commands/verify.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,5 +3,8 @@ export interface ChangedFileFilterOptions {
|
|
|
3
3
|
}
|
|
4
4
|
export declare function filterChangedFiles(files: string[], options?: ChangedFileFilterOptions): string[];
|
|
5
5
|
export declare function filterAgentFlightRuntimePaths(files: string[]): string[];
|
|
6
|
+
export declare function filterBuiltInRuntimePaths(files: string[]): string[];
|
|
6
7
|
export declare function isAgentFlightRuntimePath(file: string): boolean;
|
|
8
|
+
export declare function isAgentLoopKitEvidencePath(file: string): boolean;
|
|
9
|
+
export declare function isBuiltInRuntimePath(file: string): boolean;
|
|
7
10
|
//# sourceMappingURL=changed-files.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"changed-files.d.ts","sourceRoot":"","sources":["../../src/core/changed-files.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"changed-files.d.ts","sourceRoot":"","sources":["../../src/core/changed-files.ts"],"names":[],"mappings":"AAeA,MAAM,WAAW,wBAAwB;IACvC,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;CAC/B;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,MAAM,EAAE,EACf,OAAO,GAAE,wBAA6B,GACrC,MAAM,EAAE,CAaV;AAED,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAEvE;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAEnE;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAK9D;AAED,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAQhE;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE1D"}
|
|
@@ -4,8 +4,14 @@ const agentFlightRuntimePrefixes = [
|
|
|
4
4
|
".agentflight/current/",
|
|
5
5
|
".agentflight/evidence/"
|
|
6
6
|
];
|
|
7
|
+
const agentLoopKitEvidencePrefixes = [
|
|
8
|
+
".agentloop/reports/",
|
|
9
|
+
".agentloop/handoffs/",
|
|
10
|
+
".agentloop/runs/"
|
|
11
|
+
];
|
|
12
|
+
const agentLoopKitEvidencePaths = [".agentloop/state.json"];
|
|
7
13
|
export function filterChangedFiles(files, options = {}) {
|
|
8
|
-
const runtimeFiltered =
|
|
14
|
+
const runtimeFiltered = filterBuiltInRuntimePaths(files);
|
|
9
15
|
const ignore = Array.isArray(options.ignore) ? options.ignore : [];
|
|
10
16
|
const patterns = ignore
|
|
11
17
|
.map(normalizeIgnorePattern)
|
|
@@ -20,10 +26,21 @@ export function filterChangedFiles(files, options = {}) {
|
|
|
20
26
|
export function filterAgentFlightRuntimePaths(files) {
|
|
21
27
|
return files.filter((file) => !isAgentFlightRuntimePath(file));
|
|
22
28
|
}
|
|
29
|
+
export function filterBuiltInRuntimePaths(files) {
|
|
30
|
+
return files.filter((file) => !isBuiltInRuntimePath(file));
|
|
31
|
+
}
|
|
23
32
|
export function isAgentFlightRuntimePath(file) {
|
|
24
33
|
const normalized = normalizeChangedFilePath(file);
|
|
25
34
|
return agentFlightRuntimePrefixes.some((prefix) => normalized === prefix.slice(0, -1) || normalized.startsWith(prefix));
|
|
26
35
|
}
|
|
36
|
+
export function isAgentLoopKitEvidencePath(file) {
|
|
37
|
+
const normalized = normalizeChangedFilePath(file);
|
|
38
|
+
return (agentLoopKitEvidencePaths.includes(normalized) ||
|
|
39
|
+
agentLoopKitEvidencePrefixes.some((prefix) => normalized === prefix.slice(0, -1) || normalized.startsWith(prefix)));
|
|
40
|
+
}
|
|
41
|
+
export function isBuiltInRuntimePath(file) {
|
|
42
|
+
return isAgentFlightRuntimePath(file) || isAgentLoopKitEvidencePath(file);
|
|
43
|
+
}
|
|
27
44
|
function normalizeChangedFilePath(file) {
|
|
28
45
|
return file.replaceAll("\\", "/").replace(/^\.\//, "");
|
|
29
46
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"changed-files.js","sourceRoot":"","sources":["../../src/core/changed-files.ts"],"names":[],"mappings":"AAAA,MAAM,0BAA0B,GAAG;IACjC,wBAAwB;IACxB,uBAAuB;IACvB,uBAAuB;IACvB,wBAAwB;CACzB,CAAC;
|
|
1
|
+
{"version":3,"file":"changed-files.js","sourceRoot":"","sources":["../../src/core/changed-files.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAE7E,MAAM,WAAW,0BAA0B;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;CACxB;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;CACxB;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,gBAAgB,CAAC;IACxB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,EAAE;QACV,YAAY,EAAE,OAAO,CAAC;QACtB,QAAQ,EAAE,OAAO,CAAC;KACnB,CAAC;CACH;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,0BAA0B,GAAG,iBAAiB,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAE7E,MAAM,WAAW,0BAA0B;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;CACxB;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;CACxB;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,gBAAgB,CAAC;IACxB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,EAAE;QACV,YAAY,EAAE,OAAO,CAAC;QACtB,QAAQ,EAAE,OAAO,CAAC;KACnB,CAAC;CACH;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,0BAA0B,GAAG,iBAAiB,CA6B1F;AAED,wBAAsB,eAAe,CACnC,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,qBAAqB,CAAC,CA0ChC;AAED,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAIpF"}
|
package/dist/core/config.js
CHANGED
package/dist/core/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"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"}
|
package/dist/core/git.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../src/core/git.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAElD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAGjD,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,MAAM,EACX,GAAG,GAAE,aAA0B,GAC9B,OAAO,CAAC,MAAM,CAAC,CAGjB;AAED,wBAAsB,UAAU,CAC9B,QAAQ,EAAE,MAAM,EAChB,GAAG,GAAE,aAA0B,GAC9B,OAAO,CAAC,OAAO,CAAC,CAgBlB;AAED,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,MAAM,EAChB,GAAG,GAAE,aAA0B,GAC9B,OAAO,CAAC,MAAM,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../src/core/git.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAElD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAGjD,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,MAAM,EACX,GAAG,GAAE,aAA0B,GAC9B,OAAO,CAAC,MAAM,CAAC,CAGjB;AAED,wBAAsB,UAAU,CAC9B,QAAQ,EAAE,MAAM,EAChB,GAAG,GAAE,aAA0B,GAC9B,OAAO,CAAC,OAAO,CAAC,CAgBlB;AAED,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,MAAM,EAChB,GAAG,GAAE,aAA0B,GAC9B,OAAO,CAAC,MAAM,EAAE,CAAC,CAMnB;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAW5D"}
|
package/dist/core/git.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { runCommand } from "./process.js";
|
|
2
|
-
import {
|
|
2
|
+
import { filterBuiltInRuntimePaths } from "./changed-files.js";
|
|
3
3
|
export async function getRepositoryRoot(cwd, run = runCommand) {
|
|
4
4
|
const result = await run("git", ["rev-parse", "--show-toplevel"], { cwd, timeoutMs: 10_000 });
|
|
5
5
|
return result.exitCode === 0 && result.stdout.trim() ? result.stdout.trim() : cwd;
|
|
@@ -10,7 +10,7 @@ export async function getGitInfo(repoRoot, run = runCommand) {
|
|
|
10
10
|
run("git", ["rev-parse", "--short", "HEAD"], { cwd: repoRoot, timeoutMs: 10_000 }),
|
|
11
11
|
run("git", ["status", "--porcelain", "-uall"], { cwd: repoRoot, timeoutMs: 10_000 })
|
|
12
12
|
]);
|
|
13
|
-
const changedFiles = status.exitCode === 0 ?
|
|
13
|
+
const changedFiles = status.exitCode === 0 ? filterBuiltInRuntimePaths(parseGitStatusFiles(status.stdout)) : [];
|
|
14
14
|
return {
|
|
15
15
|
branch: branch.exitCode === 0 && branch.stdout.trim() ? branch.stdout.trim() : null,
|
|
16
16
|
commit: commit.exitCode === 0 && commit.stdout.trim() ? commit.stdout.trim() : null,
|
|
@@ -23,9 +23,7 @@ export async function listChangedFiles(repoRoot, run = runCommand) {
|
|
|
23
23
|
cwd: repoRoot,
|
|
24
24
|
timeoutMs: 10_000
|
|
25
25
|
});
|
|
26
|
-
return result.exitCode === 0
|
|
27
|
-
? filterAgentFlightRuntimePaths(parseGitStatusFiles(result.stdout))
|
|
28
|
-
: [];
|
|
26
|
+
return result.exitCode === 0 ? filterBuiltInRuntimePaths(parseGitStatusFiles(result.stdout)) : [];
|
|
29
27
|
}
|
|
30
28
|
export function parseGitStatusFiles(output) {
|
|
31
29
|
return output
|
package/dist/core/git.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/core/git.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/core/git.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import type { AgentFlightSession, ReviewIntelligence, RiskAnalysis, VerificationProofKind } from "../types/index.js";
|
|
1
|
+
import type { AgentFlightSession, ReviewIntelligence, ProjScanReviewHint, RiskAnalysis, VerificationProofKind } from "../types/index.js";
|
|
2
2
|
export interface BuildReviewIntelligenceOptions {
|
|
3
3
|
changedFiles: string[];
|
|
4
4
|
risk: RiskAnalysis;
|
|
5
5
|
session: AgentFlightSession;
|
|
6
|
+
projscanHints?: ProjScanReviewHint[] | undefined;
|
|
6
7
|
}
|
|
7
8
|
export declare function buildReviewIntelligence(options: BuildReviewIntelligenceOptions): ReviewIntelligence;
|
|
8
9
|
export declare function classifyVerificationProofKind(command: string): VerificationProofKind;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"review-intelligence.d.ts","sourceRoot":"","sources":["../../src/core/review-intelligence.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,kBAAkB,EAGlB,kBAAkB,EAIlB,YAAY,EAGZ,qBAAqB,EAEtB,MAAM,mBAAmB,CAAC;AAE3B,MAAM,WAAW,8BAA8B;IAC7C,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,IAAI,EAAE,YAAY,CAAC;IACnB,OAAO,EAAE,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"review-intelligence.d.ts","sourceRoot":"","sources":["../../src/core/review-intelligence.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,kBAAkB,EAGlB,kBAAkB,EAIlB,kBAAkB,EAClB,YAAY,EAGZ,qBAAqB,EAEtB,MAAM,mBAAmB,CAAC;AAE3B,MAAM,WAAW,8BAA8B;IAC7C,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,IAAI,EAAE,YAAY,CAAC;IACnB,OAAO,EAAE,kBAAkB,CAAC;IAC5B,aAAa,CAAC,EAAE,kBAAkB,EAAE,GAAG,SAAS,CAAC;CAClD;AA2CD,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,8BAA8B,GACtC,kBAAkB,CA8BpB;AAED,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,MAAM,GAAG,qBAAqB,CAUpF"}
|
|
@@ -53,7 +53,8 @@ export function buildReviewIntelligence(options) {
|
|
|
53
53
|
changedFiles: options.changedFiles,
|
|
54
54
|
proofGaps,
|
|
55
55
|
proofKinds,
|
|
56
|
-
runs
|
|
56
|
+
runs,
|
|
57
|
+
projscanHints: options.projscanHints
|
|
57
58
|
});
|
|
58
59
|
const readiness = buildReadinessDecision({
|
|
59
60
|
changedFiles: options.changedFiles,
|
|
@@ -185,17 +186,20 @@ function addCategoryGap(gaps, input, filesByCategory, rule) {
|
|
|
185
186
|
}
|
|
186
187
|
function buildReviewFocus(input) {
|
|
187
188
|
const hasFailedVerification = input.runs.some((run) => run.status === "failed");
|
|
189
|
+
const projscanHints = normalizeProjScanHints(input.projscanHints, input.changedFiles);
|
|
188
190
|
const items = input.changedFiles.map((file) => {
|
|
189
191
|
const category = categorizeFile(file);
|
|
190
192
|
const relatedGaps = input.proofGaps.filter((gap) => gap.relatedFiles.includes(file));
|
|
193
|
+
const projscanHint = projscanHints.get(normalizeFilePath(file));
|
|
191
194
|
const proofStatus = determineProofStatus({
|
|
192
195
|
category,
|
|
193
196
|
relatedGaps,
|
|
194
197
|
hasFailedVerification,
|
|
195
198
|
proofKinds: input.proofKinds
|
|
196
199
|
});
|
|
197
|
-
const reasons = buildFocusReasons(category, proofStatus, relatedGaps);
|
|
198
|
-
const score = scoreFocusItem(category, proofStatus, relatedGaps, hasFailedVerification)
|
|
200
|
+
const reasons = buildFocusReasons(category, proofStatus, relatedGaps, projscanHint);
|
|
201
|
+
const score = scoreFocusItem(category, proofStatus, relatedGaps, hasFailedVerification) +
|
|
202
|
+
scoreProjScanHint(projscanHint);
|
|
199
203
|
const suggestedCommand = relatedGaps.find((gap) => gap.suggestedCommand)?.suggestedCommand;
|
|
200
204
|
return {
|
|
201
205
|
rank: 0,
|
|
@@ -298,7 +302,12 @@ function scoreFocusItem(category, proofStatus, relatedGaps, hasFailedVerificatio
|
|
|
298
302
|
score += 10;
|
|
299
303
|
return score;
|
|
300
304
|
}
|
|
301
|
-
function
|
|
305
|
+
function scoreProjScanHint(hint) {
|
|
306
|
+
if (!hint)
|
|
307
|
+
return 0;
|
|
308
|
+
return Math.round(hint.riskScore * 0.6);
|
|
309
|
+
}
|
|
310
|
+
function buildFocusReasons(category, proofStatus, relatedGaps, projscanHint) {
|
|
302
311
|
const reasons = [categoryLabel(category)];
|
|
303
312
|
if (proofStatus === "failed")
|
|
304
313
|
reasons.push("verification failed");
|
|
@@ -308,8 +317,63 @@ function buildFocusReasons(category, proofStatus, relatedGaps) {
|
|
|
308
317
|
else if (relatedGaps.length > 0) {
|
|
309
318
|
reasons.push("matching proof missing");
|
|
310
319
|
}
|
|
320
|
+
if (projscanHint?.reason)
|
|
321
|
+
reasons.push(`ProjScan: ${projscanHint.reason}`);
|
|
311
322
|
return reasons;
|
|
312
323
|
}
|
|
324
|
+
function normalizeProjScanHints(hints, changedFiles) {
|
|
325
|
+
const changedFileSet = new Set(changedFiles.map(normalizeFilePath));
|
|
326
|
+
const normalized = new Map();
|
|
327
|
+
if (!Array.isArray(hints))
|
|
328
|
+
return normalized;
|
|
329
|
+
for (const hint of hints) {
|
|
330
|
+
const parsed = parseProjScanHint(hint, changedFileSet);
|
|
331
|
+
if (!parsed)
|
|
332
|
+
continue;
|
|
333
|
+
normalized.set(parsed.file, mergeProjScanHint(normalized.get(parsed.file), parsed.hint));
|
|
334
|
+
}
|
|
335
|
+
return normalized;
|
|
336
|
+
}
|
|
337
|
+
function parseProjScanHint(hint, changedFileSet) {
|
|
338
|
+
const file = readProjScanHintFile(hint, changedFileSet);
|
|
339
|
+
if (!file)
|
|
340
|
+
return null;
|
|
341
|
+
const riskScore = readProjScanHintRiskScore(hint);
|
|
342
|
+
const reason = readProjScanHintReason(hint);
|
|
343
|
+
if (riskScore === null && !reason)
|
|
344
|
+
return null;
|
|
345
|
+
return {
|
|
346
|
+
file,
|
|
347
|
+
hint: {
|
|
348
|
+
riskScore: riskScore ?? 0,
|
|
349
|
+
...(reason ? { reason } : {})
|
|
350
|
+
}
|
|
351
|
+
};
|
|
352
|
+
}
|
|
353
|
+
function readProjScanHintFile(hint, changedFileSet) {
|
|
354
|
+
const file = typeof hint.file === "string" ? normalizeFilePath(hint.file) : "";
|
|
355
|
+
return file && changedFileSet.has(file) ? file : null;
|
|
356
|
+
}
|
|
357
|
+
function readProjScanHintRiskScore(hint) {
|
|
358
|
+
if (typeof hint.riskScore !== "number" || !Number.isFinite(hint.riskScore))
|
|
359
|
+
return null;
|
|
360
|
+
return clamp(hint.riskScore, 0, 100);
|
|
361
|
+
}
|
|
362
|
+
function readProjScanHintReason(hint) {
|
|
363
|
+
return typeof hint.reason === "string" ? hint.reason.trim() : "";
|
|
364
|
+
}
|
|
365
|
+
function mergeProjScanHint(previous, next) {
|
|
366
|
+
return {
|
|
367
|
+
riskScore: Math.max(next.riskScore, previous?.riskScore ?? 0),
|
|
368
|
+
...(next.reason ? { reason: next.reason } : previous?.reason ? { reason: previous.reason } : {})
|
|
369
|
+
};
|
|
370
|
+
}
|
|
371
|
+
function normalizeFilePath(file) {
|
|
372
|
+
return file.replaceAll("\\", "/").replace(/^\.\//, "");
|
|
373
|
+
}
|
|
374
|
+
function clamp(value, min, max) {
|
|
375
|
+
return Math.min(max, Math.max(min, value));
|
|
376
|
+
}
|
|
313
377
|
function categoryLabel(category) {
|
|
314
378
|
if (category === "auth")
|
|
315
379
|
return "identity/session path";
|