agentflight 0.3.3 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +71 -0
- package/README.md +42 -10
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +2 -1
- package/dist/cli.js.map +1 -1
- package/dist/commands/replay.d.ts.map +1 -1
- package/dist/commands/replay.js +9 -4
- package/dist/commands/replay.js.map +1 -1
- package/dist/commands/report.d.ts.map +1 -1
- package/dist/commands/report.js +9 -4
- package/dist/commands/report.js.map +1 -1
- package/dist/commands/resume.d.ts.map +1 -1
- package/dist/commands/resume.js +10 -3
- package/dist/commands/resume.js.map +1 -1
- package/dist/commands/snapshot.d.ts.map +1 -1
- package/dist/commands/snapshot.js +13 -2
- package/dist/commands/snapshot.js.map +1 -1
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +28 -6
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/verify.d.ts +4 -0
- package/dist/commands/verify.d.ts.map +1 -1
- package/dist/commands/verify.js +24 -3
- package/dist/commands/verify.js.map +1 -1
- package/dist/core/changed-files.d.ts +4 -0
- package/dist/core/changed-files.d.ts.map +1 -1
- package/dist/core/changed-files.js +56 -0
- package/dist/core/changed-files.js.map +1 -1
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +3 -0
- package/dist/core/config.js.map +1 -1
- package/dist/core/review-intelligence.d.ts +9 -0
- package/dist/core/review-intelligence.d.ts.map +1 -0
- package/dist/core/review-intelligence.js +413 -0
- package/dist/core/review-intelligence.js.map +1 -0
- package/dist/core/risk.d.ts.map +1 -1
- package/dist/core/risk.js +5 -0
- package/dist/core/risk.js.map +1 -1
- package/dist/renderers/html-replay.d.ts +2 -1
- package/dist/renderers/html-replay.d.ts.map +1 -1
- package/dist/renderers/html-replay.js +37 -0
- package/dist/renderers/html-replay.js.map +1 -1
- package/dist/renderers/markdown-report.d.ts +3 -3
- package/dist/renderers/markdown-report.d.ts.map +1 -1
- package/dist/renderers/markdown-report.js +37 -7
- package/dist/renderers/markdown-report.js.map +1 -1
- package/dist/renderers/resume-prompt.d.ts +4 -1
- package/dist/renderers/resume-prompt.d.ts.map +1 -1
- package/dist/renderers/resume-prompt.js +32 -2
- package/dist/renderers/resume-prompt.js.map +1 -1
- package/dist/types/index.d.ts +40 -1
- package/dist/types/index.d.ts.map +1 -1
- package/docs/assets/agentflight-replay-timeline.png +0 -0
- package/docs/development/changed-file-filters.md +62 -0
- package/docs/{roadmap.md → roadmap/index.md} +5 -0
- package/docs/roadmap/v0.4.0-review-intelligence-plan.md +882 -0
- package/package.json +4 -2
package/dist/commands/verify.js
CHANGED
|
@@ -25,12 +25,13 @@ No verification command was provided and no commands are configured in .agentfli
|
|
|
25
25
|
title: "Verification started",
|
|
26
26
|
metadata: { command }
|
|
27
27
|
});
|
|
28
|
-
const run = await runVerificationCommand({
|
|
28
|
+
const run = await runWithHeartbeat(runVerificationCommand({
|
|
29
29
|
repoRoot: options.repoRoot,
|
|
30
30
|
session,
|
|
31
31
|
commandArgs,
|
|
32
|
-
now: options.now
|
|
33
|
-
|
|
32
|
+
now: options.now,
|
|
33
|
+
commandRunner: options.commandRunner
|
|
34
|
+
}), options);
|
|
34
35
|
session = await appendVerificationRun(options.repoRoot, session, run);
|
|
35
36
|
session = await appendSessionEvent(options.repoRoot, session, {
|
|
36
37
|
type: run.status === "passed" ? "verification_passed" : "verification_failed",
|
|
@@ -62,6 +63,26 @@ No verification command was provided and no commands are configured in .agentfli
|
|
|
62
63
|
runs
|
|
63
64
|
};
|
|
64
65
|
}
|
|
66
|
+
async function runWithHeartbeat(promise, options) {
|
|
67
|
+
const onHeartbeat = options.onHeartbeat;
|
|
68
|
+
if (!onHeartbeat)
|
|
69
|
+
return promise;
|
|
70
|
+
const intervalMs = options.heartbeatIntervalMs ?? 30_000;
|
|
71
|
+
if (intervalMs <= 0)
|
|
72
|
+
return promise;
|
|
73
|
+
const startedAt = Date.now();
|
|
74
|
+
const timer = setInterval(() => {
|
|
75
|
+
const elapsedSeconds = Math.max(1, Math.round((Date.now() - startedAt) / 1000));
|
|
76
|
+
onHeartbeat(`AgentFlight verify still running after ${elapsedSeconds}s...`);
|
|
77
|
+
}, intervalMs);
|
|
78
|
+
timer.unref?.();
|
|
79
|
+
try {
|
|
80
|
+
return await promise;
|
|
81
|
+
}
|
|
82
|
+
finally {
|
|
83
|
+
clearInterval(timer);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
65
86
|
async function resolveCommandSets(options) {
|
|
66
87
|
if (options.commandArgs && options.commandArgs.length > 0) {
|
|
67
88
|
return [options.commandArgs];
|
|
@@ -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,EACL,aAAa,EACb,gBAAgB,EAChB,sBAAsB,EACtB,sBAAsB,EACvB,MAAM,yBAAyB,CAAC;AACjC,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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"}
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
export interface ChangedFileFilterOptions {
|
|
2
|
+
ignore?: string[] | undefined;
|
|
3
|
+
}
|
|
4
|
+
export declare function filterChangedFiles(files: string[], options?: ChangedFileFilterOptions): string[];
|
|
1
5
|
export declare function filterAgentFlightRuntimePaths(files: string[]): string[];
|
|
2
6
|
export declare function isAgentFlightRuntimePath(file: string): boolean;
|
|
3
7
|
//# 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":"AAOA,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAEvE;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAK9D"}
|
|
1
|
+
{"version":3,"file":"changed-files.d.ts","sourceRoot":"","sources":["../../src/core/changed-files.ts"],"names":[],"mappings":"AAOA,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,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAK9D"}
|
|
@@ -4,6 +4,19 @@ const agentFlightRuntimePrefixes = [
|
|
|
4
4
|
".agentflight/current/",
|
|
5
5
|
".agentflight/evidence/"
|
|
6
6
|
];
|
|
7
|
+
export function filterChangedFiles(files, options = {}) {
|
|
8
|
+
const runtimeFiltered = filterAgentFlightRuntimePaths(files);
|
|
9
|
+
const ignore = Array.isArray(options.ignore) ? options.ignore : [];
|
|
10
|
+
const patterns = ignore
|
|
11
|
+
.map(normalizeIgnorePattern)
|
|
12
|
+
.filter((pattern) => pattern !== null);
|
|
13
|
+
if (patterns.length === 0)
|
|
14
|
+
return runtimeFiltered;
|
|
15
|
+
return runtimeFiltered.filter((file) => {
|
|
16
|
+
const normalized = normalizeChangedFilePath(file);
|
|
17
|
+
return !patterns.some((pattern) => matchesIgnorePattern(normalized, pattern));
|
|
18
|
+
});
|
|
19
|
+
}
|
|
7
20
|
export function filterAgentFlightRuntimePaths(files) {
|
|
8
21
|
return files.filter((file) => !isAgentFlightRuntimePath(file));
|
|
9
22
|
}
|
|
@@ -14,4 +27,47 @@ export function isAgentFlightRuntimePath(file) {
|
|
|
14
27
|
function normalizeChangedFilePath(file) {
|
|
15
28
|
return file.replaceAll("\\", "/").replace(/^\.\//, "");
|
|
16
29
|
}
|
|
30
|
+
function normalizeIgnorePattern(pattern) {
|
|
31
|
+
const normalized = normalizeChangedFilePath(pattern.trim());
|
|
32
|
+
if (normalized.length === 0)
|
|
33
|
+
return null;
|
|
34
|
+
if (normalized.startsWith("../") || normalized === "..")
|
|
35
|
+
return null;
|
|
36
|
+
return normalized;
|
|
37
|
+
}
|
|
38
|
+
function matchesIgnorePattern(file, pattern) {
|
|
39
|
+
if (pattern.endsWith("/**")) {
|
|
40
|
+
const prefix = pattern.slice(0, -2);
|
|
41
|
+
return file === prefix.slice(0, -1) || file.startsWith(prefix);
|
|
42
|
+
}
|
|
43
|
+
if (!pattern.includes("*")) {
|
|
44
|
+
return file === pattern;
|
|
45
|
+
}
|
|
46
|
+
if (!pattern.includes("/")) {
|
|
47
|
+
return globToRegExp(pattern).test(file.split("/").at(-1) ?? file);
|
|
48
|
+
}
|
|
49
|
+
return globToRegExp(pattern).test(file);
|
|
50
|
+
}
|
|
51
|
+
function globToRegExp(pattern) {
|
|
52
|
+
let source = "^";
|
|
53
|
+
for (let index = 0; index < pattern.length; index += 1) {
|
|
54
|
+
const char = pattern[index];
|
|
55
|
+
if (char === "*") {
|
|
56
|
+
const next = pattern[index + 1];
|
|
57
|
+
if (next === "*") {
|
|
58
|
+
source += ".*";
|
|
59
|
+
index += 1;
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
source += "[^/]*";
|
|
63
|
+
}
|
|
64
|
+
continue;
|
|
65
|
+
}
|
|
66
|
+
source += escapeRegExp(char);
|
|
67
|
+
}
|
|
68
|
+
return new RegExp(`${source}$`);
|
|
69
|
+
}
|
|
70
|
+
function escapeRegExp(value) {
|
|
71
|
+
return value.replace(/[\\^$+?.()|[\]{}]/g, "\\$&");
|
|
72
|
+
}
|
|
17
73
|
//# sourceMappingURL=changed-files.js.map
|
|
@@ -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,CA4B1F;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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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { AgentFlightSession, ReviewIntelligence, RiskAnalysis, VerificationProofKind } from "../types/index.js";
|
|
2
|
+
export interface BuildReviewIntelligenceOptions {
|
|
3
|
+
changedFiles: string[];
|
|
4
|
+
risk: RiskAnalysis;
|
|
5
|
+
session: AgentFlightSession;
|
|
6
|
+
}
|
|
7
|
+
export declare function buildReviewIntelligence(options: BuildReviewIntelligenceOptions): ReviewIntelligence;
|
|
8
|
+
export declare function classifyVerificationProofKind(command: string): VerificationProofKind;
|
|
9
|
+
//# sourceMappingURL=review-intelligence.d.ts.map
|
|
@@ -0,0 +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;CAC7B;AA2CD,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,8BAA8B,GACtC,kBAAkB,CA6BpB;AAED,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,MAAM,GAAG,qBAAqB,CAUpF"}
|
|
@@ -0,0 +1,413 @@
|
|
|
1
|
+
import { categorizeFile } from "./risk.js";
|
|
2
|
+
import { getVerificationRuns } from "./session.js";
|
|
3
|
+
const baseScores = {
|
|
4
|
+
auth: 100,
|
|
5
|
+
"billing/payments": 95,
|
|
6
|
+
"security/secrets": 95,
|
|
7
|
+
"database/migrations": 90,
|
|
8
|
+
config: 75,
|
|
9
|
+
"backend/api": 70,
|
|
10
|
+
dependencies: 65,
|
|
11
|
+
unknown: 50,
|
|
12
|
+
"agentflight/config": 35,
|
|
13
|
+
frontend: 35,
|
|
14
|
+
tests: 20,
|
|
15
|
+
docs: 10
|
|
16
|
+
};
|
|
17
|
+
const reviewerFocusByCategory = new Map([
|
|
18
|
+
["auth", "Check session, permission, and identity boundaries first."],
|
|
19
|
+
["billing/payments", "Check payment state, idempotency, and webhook handling first."],
|
|
20
|
+
["security/secrets", "Check credential handling and accidental exposure first."],
|
|
21
|
+
["database/migrations", "Check data model, migration safety, and rollback assumptions first."],
|
|
22
|
+
[
|
|
23
|
+
"agentflight/config",
|
|
24
|
+
"Check AgentFlight session defaults, verification commands, and changed-file filters."
|
|
25
|
+
],
|
|
26
|
+
["config", "Check build, CI, and runtime configuration impact first."],
|
|
27
|
+
["backend/api", "Check request handling, validation, and error paths first."],
|
|
28
|
+
["dependencies", "Check install/build impact and dependency risk first."],
|
|
29
|
+
["frontend", "Check user-facing behavior and build evidence first."],
|
|
30
|
+
["tests", "Check whether tests cover the changed behavior."],
|
|
31
|
+
["docs", "Check accuracy and scope of documentation changes."],
|
|
32
|
+
["unknown", "Inspect manually because AgentFlight could not classify this file."]
|
|
33
|
+
]);
|
|
34
|
+
const readinessLabels = {
|
|
35
|
+
ready_for_review: "Ready for review",
|
|
36
|
+
not_ready_for_review: "Not ready for review",
|
|
37
|
+
needs_verification: "Needs verification",
|
|
38
|
+
blocked_by_failed_verification: "Blocked by failed verification",
|
|
39
|
+
unknown: "Unknown"
|
|
40
|
+
};
|
|
41
|
+
export function buildReviewIntelligence(options) {
|
|
42
|
+
const runs = getVerificationRuns(options.session);
|
|
43
|
+
const proofKinds = summarizeProofKinds(runs);
|
|
44
|
+
const incompleteVerifications = detectIncompleteVerificationAttempts(options.session);
|
|
45
|
+
const proofGaps = buildProofGaps({
|
|
46
|
+
changedFiles: options.changedFiles,
|
|
47
|
+
verificationCommands: options.session.verificationCommands,
|
|
48
|
+
proofKinds,
|
|
49
|
+
runs,
|
|
50
|
+
incompleteVerifications
|
|
51
|
+
});
|
|
52
|
+
const focus = buildReviewFocus({
|
|
53
|
+
changedFiles: options.changedFiles,
|
|
54
|
+
proofGaps,
|
|
55
|
+
proofKinds,
|
|
56
|
+
runs
|
|
57
|
+
});
|
|
58
|
+
const readiness = buildReadinessDecision({
|
|
59
|
+
changedFiles: options.changedFiles,
|
|
60
|
+
proofGaps,
|
|
61
|
+
focus,
|
|
62
|
+
runs
|
|
63
|
+
});
|
|
64
|
+
return {
|
|
65
|
+
focus,
|
|
66
|
+
proofGaps,
|
|
67
|
+
readiness
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
export function classifyVerificationProofKind(command) {
|
|
71
|
+
const normalized = command.toLowerCase();
|
|
72
|
+
if (/\b(npm|pnpm|yarn|bun)\s+(ci|install)\b/.test(normalized))
|
|
73
|
+
return "install";
|
|
74
|
+
if (/\b(vitest|jest|mocha|playwright|cypress|test)\b/.test(normalized))
|
|
75
|
+
return "test";
|
|
76
|
+
if (/\bbuild\b/.test(normalized))
|
|
77
|
+
return "build";
|
|
78
|
+
if (/\b(typecheck|tsc)\b/.test(normalized))
|
|
79
|
+
return "typecheck";
|
|
80
|
+
if (/\b(lint|eslint)\b/.test(normalized))
|
|
81
|
+
return "lint";
|
|
82
|
+
return "unknown";
|
|
83
|
+
}
|
|
84
|
+
function summarizeProofKinds(runs) {
|
|
85
|
+
const passed = new Set();
|
|
86
|
+
const failed = new Set();
|
|
87
|
+
for (const run of runs) {
|
|
88
|
+
const kind = classifyVerificationProofKind(run.command);
|
|
89
|
+
if (run.status === "passed")
|
|
90
|
+
passed.add(kind);
|
|
91
|
+
if (run.status === "failed")
|
|
92
|
+
failed.add(kind);
|
|
93
|
+
}
|
|
94
|
+
return { passed, failed };
|
|
95
|
+
}
|
|
96
|
+
function buildProofGaps(input) {
|
|
97
|
+
const gaps = [];
|
|
98
|
+
const failedRuns = input.runs.filter((run) => run.status === "failed");
|
|
99
|
+
if (failedRuns.length > 0) {
|
|
100
|
+
const failedCommand = failedRuns[0].command;
|
|
101
|
+
gaps.push({
|
|
102
|
+
id: "failed-verification",
|
|
103
|
+
severity: "blocking",
|
|
104
|
+
message: `A verification command failed and must be fixed or rerun successfully: ${failedCommand}`,
|
|
105
|
+
suggestedCommand: failedCommand,
|
|
106
|
+
relatedFiles: input.changedFiles
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
for (const attempt of input.incompleteVerifications) {
|
|
110
|
+
gaps.push({
|
|
111
|
+
id: "incomplete-verification",
|
|
112
|
+
severity: "blocking",
|
|
113
|
+
message: `Verification was started but no completed result was recorded: ${attempt.command}`,
|
|
114
|
+
suggestedCommand: attempt.command,
|
|
115
|
+
relatedFiles: input.changedFiles
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
const filesByCategory = groupFilesByCategory(input.changedFiles);
|
|
119
|
+
addCategoryGap(gaps, input, filesByCategory, {
|
|
120
|
+
categories: ["auth", "billing/payments", "security/secrets"],
|
|
121
|
+
id: "missing-auth-test-proof",
|
|
122
|
+
severity: "blocking",
|
|
123
|
+
proofKinds: ["test"],
|
|
124
|
+
message: "Sensitive auth, payment, or security files changed without passing test evidence."
|
|
125
|
+
});
|
|
126
|
+
addCategoryGap(gaps, input, filesByCategory, {
|
|
127
|
+
categories: ["database/migrations"],
|
|
128
|
+
id: "missing-database-test-proof",
|
|
129
|
+
severity: "blocking",
|
|
130
|
+
proofKinds: ["test", "build"],
|
|
131
|
+
message: "Database schema or migration files changed without passing test or build evidence."
|
|
132
|
+
});
|
|
133
|
+
addCategoryGap(gaps, input, filesByCategory, {
|
|
134
|
+
categories: ["backend/api"],
|
|
135
|
+
id: "missing-backend-proof",
|
|
136
|
+
severity: "warning",
|
|
137
|
+
proofKinds: ["test", "build"],
|
|
138
|
+
message: "Backend/API files changed without passing test or build evidence."
|
|
139
|
+
});
|
|
140
|
+
addCategoryGap(gaps, input, filesByCategory, {
|
|
141
|
+
categories: ["dependencies"],
|
|
142
|
+
id: "missing-dependency-proof",
|
|
143
|
+
severity: "warning",
|
|
144
|
+
proofKinds: ["install", "build", "typecheck", "test"],
|
|
145
|
+
message: "Dependency files changed without install, build, typecheck, or test evidence."
|
|
146
|
+
});
|
|
147
|
+
addCategoryGap(gaps, input, filesByCategory, {
|
|
148
|
+
categories: ["config"],
|
|
149
|
+
id: "missing-config-proof",
|
|
150
|
+
severity: "warning",
|
|
151
|
+
proofKinds: ["lint", "typecheck", "build"],
|
|
152
|
+
message: "Config or CI files changed without lint, typecheck, or build evidence."
|
|
153
|
+
});
|
|
154
|
+
addCategoryGap(gaps, input, filesByCategory, {
|
|
155
|
+
categories: ["frontend"],
|
|
156
|
+
id: "missing-frontend-build-proof",
|
|
157
|
+
severity: "warning",
|
|
158
|
+
proofKinds: ["build", "test"],
|
|
159
|
+
message: "Frontend files changed without passing build or test evidence."
|
|
160
|
+
});
|
|
161
|
+
addCategoryGap(gaps, input, filesByCategory, {
|
|
162
|
+
categories: ["tests"],
|
|
163
|
+
id: "missing-test-suite-proof",
|
|
164
|
+
severity: "warning",
|
|
165
|
+
proofKinds: ["test"],
|
|
166
|
+
message: "Test files changed without passing test evidence."
|
|
167
|
+
});
|
|
168
|
+
addGeneratedFileGuidance(gaps, input.changedFiles);
|
|
169
|
+
return gaps;
|
|
170
|
+
}
|
|
171
|
+
function addCategoryGap(gaps, input, filesByCategory, rule) {
|
|
172
|
+
const relatedFiles = rule.categories.flatMap((category) => filesByCategory.get(category) ?? []);
|
|
173
|
+
if (relatedFiles.length === 0)
|
|
174
|
+
return;
|
|
175
|
+
if (rule.proofKinds.some((kind) => input.proofKinds.passed.has(kind)))
|
|
176
|
+
return;
|
|
177
|
+
const suggestedCommand = findSuggestedCommand(input.verificationCommands, rule.proofKinds);
|
|
178
|
+
gaps.push({
|
|
179
|
+
id: rule.id,
|
|
180
|
+
severity: rule.severity,
|
|
181
|
+
message: rule.message,
|
|
182
|
+
...(suggestedCommand ? { suggestedCommand } : {}),
|
|
183
|
+
relatedFiles
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
function buildReviewFocus(input) {
|
|
187
|
+
const hasFailedVerification = input.runs.some((run) => run.status === "failed");
|
|
188
|
+
const items = input.changedFiles.map((file) => {
|
|
189
|
+
const category = categorizeFile(file);
|
|
190
|
+
const relatedGaps = input.proofGaps.filter((gap) => gap.relatedFiles.includes(file));
|
|
191
|
+
const proofStatus = determineProofStatus({
|
|
192
|
+
category,
|
|
193
|
+
relatedGaps,
|
|
194
|
+
hasFailedVerification,
|
|
195
|
+
proofKinds: input.proofKinds
|
|
196
|
+
});
|
|
197
|
+
const reasons = buildFocusReasons(category, proofStatus, relatedGaps);
|
|
198
|
+
const score = scoreFocusItem(category, proofStatus, relatedGaps, hasFailedVerification);
|
|
199
|
+
const suggestedCommand = relatedGaps.find((gap) => gap.suggestedCommand)?.suggestedCommand;
|
|
200
|
+
return {
|
|
201
|
+
rank: 0,
|
|
202
|
+
file,
|
|
203
|
+
category,
|
|
204
|
+
riskLevel: riskLevelForCategory(category),
|
|
205
|
+
score,
|
|
206
|
+
reasons,
|
|
207
|
+
suggestedReviewerFocus: suggestedReviewerFocus(category),
|
|
208
|
+
proofStatus,
|
|
209
|
+
...(suggestedCommand ? { suggestedCommand } : {}),
|
|
210
|
+
relatedProofGapIds: relatedGaps.map((gap) => gap.id)
|
|
211
|
+
};
|
|
212
|
+
});
|
|
213
|
+
return items
|
|
214
|
+
.sort((left, right) => right.score - left.score || left.file.localeCompare(right.file))
|
|
215
|
+
.map((item, index) => ({ ...item, rank: index + 1 }));
|
|
216
|
+
}
|
|
217
|
+
function determineProofStatus(input) {
|
|
218
|
+
if (input.hasFailedVerification && input.category !== "docs")
|
|
219
|
+
return "failed";
|
|
220
|
+
const actionableGaps = input.relatedGaps.filter((gap) => gap.severity !== "info");
|
|
221
|
+
if (actionableGaps.length > 0)
|
|
222
|
+
return "missing";
|
|
223
|
+
if (input.category === "docs" || input.category === "agentflight/config")
|
|
224
|
+
return "not_required";
|
|
225
|
+
if (input.proofKinds.passed.size > 0)
|
|
226
|
+
return "covered";
|
|
227
|
+
return input.category === "unknown" ? "unknown" : "not_required";
|
|
228
|
+
}
|
|
229
|
+
function buildReadinessDecision(input) {
|
|
230
|
+
const failedRuns = input.runs.filter((run) => run.status === "failed");
|
|
231
|
+
if (failedRuns.length > 0) {
|
|
232
|
+
const failedCommand = failedRuns[0].command;
|
|
233
|
+
return readinessDecision({
|
|
234
|
+
state: "blocked_by_failed_verification",
|
|
235
|
+
reason: `A verification command failed and must be fixed or rerun successfully: ${failedCommand}`,
|
|
236
|
+
nextAction: `Fix the failed command, then rerun agentflight verify -- ${failedCommand}`,
|
|
237
|
+
suggestedCommand: failedCommand,
|
|
238
|
+
proofGaps: input.proofGaps,
|
|
239
|
+
failedVerificationSummary: failedRuns.map((run) => `${run.command} failed`).join("; ")
|
|
240
|
+
});
|
|
241
|
+
}
|
|
242
|
+
if (input.changedFiles.length === 0) {
|
|
243
|
+
return readinessDecision({
|
|
244
|
+
state: "unknown",
|
|
245
|
+
reason: "No changed files were detected for review.",
|
|
246
|
+
nextAction: "Make changes or inspect git status before requesting review.",
|
|
247
|
+
proofGaps: input.proofGaps
|
|
248
|
+
});
|
|
249
|
+
}
|
|
250
|
+
const actionableGaps = input.proofGaps.filter((gap) => gap.severity !== "info");
|
|
251
|
+
const incompleteGap = actionableGaps.find((gap) => gap.id === "incomplete-verification");
|
|
252
|
+
const blockingGap = actionableGaps.find((gap) => gap.severity === "blocking");
|
|
253
|
+
const firstGap = incompleteGap ?? blockingGap ?? actionableGaps[0];
|
|
254
|
+
if (firstGap) {
|
|
255
|
+
const state = blockingGap ? "needs_verification" : "needs_verification";
|
|
256
|
+
const suggestedCommand = firstGap.suggestedCommand;
|
|
257
|
+
return readinessDecision({
|
|
258
|
+
state,
|
|
259
|
+
reason: firstGap.message,
|
|
260
|
+
nextAction: suggestedCommand
|
|
261
|
+
? `Run agentflight verify -- ${suggestedCommand}`
|
|
262
|
+
: "Run relevant verification before requesting review.",
|
|
263
|
+
suggestedCommand,
|
|
264
|
+
proofGaps: input.proofGaps
|
|
265
|
+
});
|
|
266
|
+
}
|
|
267
|
+
return readinessDecision({
|
|
268
|
+
state: "ready_for_review",
|
|
269
|
+
reason: "Verification evidence matches the observed review risk.",
|
|
270
|
+
nextAction: "Generate or share the AgentFlight report/replay and request scoped human review.",
|
|
271
|
+
proofGaps: []
|
|
272
|
+
});
|
|
273
|
+
}
|
|
274
|
+
function readinessDecision(input) {
|
|
275
|
+
return {
|
|
276
|
+
state: input.state,
|
|
277
|
+
label: labelReadiness(input.state),
|
|
278
|
+
reason: input.reason,
|
|
279
|
+
nextAction: input.nextAction,
|
|
280
|
+
...(input.suggestedCommand ? { suggestedCommand: input.suggestedCommand } : {}),
|
|
281
|
+
proofGaps: input.proofGaps,
|
|
282
|
+
...(input.failedVerificationSummary
|
|
283
|
+
? { failedVerificationSummary: input.failedVerificationSummary }
|
|
284
|
+
: {})
|
|
285
|
+
};
|
|
286
|
+
}
|
|
287
|
+
function scoreFocusItem(category, proofStatus, relatedGaps, hasFailedVerification) {
|
|
288
|
+
let score = baseScores[category];
|
|
289
|
+
if (proofStatus === "missing")
|
|
290
|
+
score += 30;
|
|
291
|
+
if (hasFailedVerification && category !== "docs")
|
|
292
|
+
score += 40;
|
|
293
|
+
if (category === "dependencies" && relatedGaps.length > 0)
|
|
294
|
+
score += 20;
|
|
295
|
+
if (category === "config" && relatedGaps.length > 0)
|
|
296
|
+
score += 15;
|
|
297
|
+
if (category === "unknown")
|
|
298
|
+
score += 10;
|
|
299
|
+
return score;
|
|
300
|
+
}
|
|
301
|
+
function buildFocusReasons(category, proofStatus, relatedGaps) {
|
|
302
|
+
const reasons = [categoryLabel(category)];
|
|
303
|
+
if (proofStatus === "failed")
|
|
304
|
+
reasons.push("verification failed");
|
|
305
|
+
if (relatedGaps.some((gap) => gap.message.toLowerCase().includes("test"))) {
|
|
306
|
+
reasons.push("no passing test evidence");
|
|
307
|
+
}
|
|
308
|
+
else if (relatedGaps.length > 0) {
|
|
309
|
+
reasons.push("matching proof missing");
|
|
310
|
+
}
|
|
311
|
+
return reasons;
|
|
312
|
+
}
|
|
313
|
+
function categoryLabel(category) {
|
|
314
|
+
if (category === "auth")
|
|
315
|
+
return "identity/session path";
|
|
316
|
+
if (category === "billing/payments")
|
|
317
|
+
return "payment-sensitive path";
|
|
318
|
+
if (category === "security/secrets")
|
|
319
|
+
return "credential-handling path";
|
|
320
|
+
if (category === "database/migrations")
|
|
321
|
+
return "database schema or migration path";
|
|
322
|
+
if (category === "backend/api")
|
|
323
|
+
return "backend/API file";
|
|
324
|
+
if (category === "dependencies")
|
|
325
|
+
return "dependency metadata changed";
|
|
326
|
+
if (category === "agentflight/config")
|
|
327
|
+
return "AgentFlight project config";
|
|
328
|
+
if (category === "config")
|
|
329
|
+
return "configuration or CI path";
|
|
330
|
+
return `${category} file`;
|
|
331
|
+
}
|
|
332
|
+
function groupFilesByCategory(files) {
|
|
333
|
+
const grouped = new Map();
|
|
334
|
+
for (const file of files) {
|
|
335
|
+
const category = categorizeFile(file);
|
|
336
|
+
grouped.set(category, [...(grouped.get(category) ?? []), file]);
|
|
337
|
+
}
|
|
338
|
+
return grouped;
|
|
339
|
+
}
|
|
340
|
+
function findSuggestedCommand(verificationCommands, proofKinds) {
|
|
341
|
+
return verificationCommands.find((command) => proofKinds.includes(classifyVerificationProofKind(command)));
|
|
342
|
+
}
|
|
343
|
+
function riskLevelForCategory(category) {
|
|
344
|
+
if (category === "auth" ||
|
|
345
|
+
category === "billing/payments" ||
|
|
346
|
+
category === "security/secrets" ||
|
|
347
|
+
category === "database/migrations" ||
|
|
348
|
+
category === "config") {
|
|
349
|
+
return "high";
|
|
350
|
+
}
|
|
351
|
+
if (category === "backend/api" ||
|
|
352
|
+
category === "dependencies" ||
|
|
353
|
+
category === "unknown" ||
|
|
354
|
+
category === "agentflight/config") {
|
|
355
|
+
return "medium";
|
|
356
|
+
}
|
|
357
|
+
return "low";
|
|
358
|
+
}
|
|
359
|
+
function suggestedReviewerFocus(category) {
|
|
360
|
+
return reviewerFocusByCategory.get(category) ?? "Inspect this file manually.";
|
|
361
|
+
}
|
|
362
|
+
function labelReadiness(state) {
|
|
363
|
+
return readinessLabels[state];
|
|
364
|
+
}
|
|
365
|
+
function detectIncompleteVerificationAttempts(session) {
|
|
366
|
+
const events = session.events ?? [];
|
|
367
|
+
const runs = getVerificationRuns(session);
|
|
368
|
+
const startedEvents = events.filter((event) => event.type === "verification_started");
|
|
369
|
+
return startedEvents
|
|
370
|
+
.map((event) => ({
|
|
371
|
+
command: readEventCommand(event.metadata) ?? "unknown verification command",
|
|
372
|
+
startedAt: event.timestamp
|
|
373
|
+
}))
|
|
374
|
+
.filter((attempt) => !hasLaterCompletion(attempt, events, runs));
|
|
375
|
+
}
|
|
376
|
+
function hasLaterCompletion(attempt, events, runs) {
|
|
377
|
+
const command = normalizeCommand(attempt.command);
|
|
378
|
+
return (events.some((event) => {
|
|
379
|
+
if (event.type !== "verification_passed" && event.type !== "verification_failed") {
|
|
380
|
+
return false;
|
|
381
|
+
}
|
|
382
|
+
return (normalizeCommand(readEventCommand(event.metadata) ?? "") === command &&
|
|
383
|
+
timestampAtOrAfter(event.timestamp, attempt.startedAt));
|
|
384
|
+
}) ||
|
|
385
|
+
runs.some((run) => normalizeCommand(run.command) === command &&
|
|
386
|
+
timestampAtOrAfter(run.finishedAt, attempt.startedAt)));
|
|
387
|
+
}
|
|
388
|
+
function addGeneratedFileGuidance(gaps, changedFiles) {
|
|
389
|
+
if (!changedFiles.includes(".projscan-memory/memory.json"))
|
|
390
|
+
return;
|
|
391
|
+
gaps.push({
|
|
392
|
+
id: "suggest-projscan-memory-filter",
|
|
393
|
+
severity: "info",
|
|
394
|
+
message: 'Generated ProjScan memory is present. If this file is not meant for review, add ".projscan-memory/**" to changedFileFilters.ignore in .agentflight/config.json.',
|
|
395
|
+
relatedFiles: [".projscan-memory/memory.json"]
|
|
396
|
+
});
|
|
397
|
+
}
|
|
398
|
+
function readEventCommand(metadata) {
|
|
399
|
+
const command = metadata?.command;
|
|
400
|
+
return typeof command === "string" && command.trim().length > 0 ? command : null;
|
|
401
|
+
}
|
|
402
|
+
function normalizeCommand(command) {
|
|
403
|
+
return command.trim().replace(/\s+/g, " ");
|
|
404
|
+
}
|
|
405
|
+
function timestampAtOrAfter(candidate, reference) {
|
|
406
|
+
const candidateTime = Date.parse(candidate);
|
|
407
|
+
const referenceTime = Date.parse(reference);
|
|
408
|
+
if (Number.isNaN(candidateTime) || Number.isNaN(referenceTime)) {
|
|
409
|
+
return candidate >= reference;
|
|
410
|
+
}
|
|
411
|
+
return candidateTime >= referenceTime;
|
|
412
|
+
}
|
|
413
|
+
//# sourceMappingURL=review-intelligence.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"review-intelligence.js","sourceRoot":"","sources":["../../src/core/review-intelligence.ts"],"names":[],"mappings":"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"}
|
package/dist/core/risk.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"risk.d.ts","sourceRoot":"","sources":["../../src/core/risk.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAkC,MAAM,mBAAmB,CAAC;AAYpG,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,
|
|
1
|
+
{"version":3,"file":"risk.d.ts","sourceRoot":"","sources":["../../src/core/risk.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAkC,MAAM,mBAAmB,CAAC;AAYpG,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAkDzD;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,YAAY,CA8BzD"}
|