agentflight 0.3.3 → 0.4.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.
Files changed (47) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/README.md +41 -9
  3. package/dist/commands/replay.d.ts.map +1 -1
  4. package/dist/commands/replay.js +9 -4
  5. package/dist/commands/replay.js.map +1 -1
  6. package/dist/commands/report.d.ts.map +1 -1
  7. package/dist/commands/report.js +9 -4
  8. package/dist/commands/report.js.map +1 -1
  9. package/dist/commands/resume.d.ts.map +1 -1
  10. package/dist/commands/resume.js +10 -3
  11. package/dist/commands/resume.js.map +1 -1
  12. package/dist/commands/snapshot.d.ts.map +1 -1
  13. package/dist/commands/snapshot.js +13 -2
  14. package/dist/commands/snapshot.js.map +1 -1
  15. package/dist/commands/status.d.ts.map +1 -1
  16. package/dist/commands/status.js +28 -6
  17. package/dist/commands/status.js.map +1 -1
  18. package/dist/core/changed-files.d.ts +4 -0
  19. package/dist/core/changed-files.d.ts.map +1 -1
  20. package/dist/core/changed-files.js +56 -0
  21. package/dist/core/changed-files.js.map +1 -1
  22. package/dist/core/config.d.ts.map +1 -1
  23. package/dist/core/config.js +3 -0
  24. package/dist/core/config.js.map +1 -1
  25. package/dist/core/review-intelligence.d.ts +9 -0
  26. package/dist/core/review-intelligence.d.ts.map +1 -0
  27. package/dist/core/review-intelligence.js +340 -0
  28. package/dist/core/review-intelligence.js.map +1 -0
  29. package/dist/renderers/html-replay.d.ts +2 -1
  30. package/dist/renderers/html-replay.d.ts.map +1 -1
  31. package/dist/renderers/html-replay.js +37 -0
  32. package/dist/renderers/html-replay.js.map +1 -1
  33. package/dist/renderers/markdown-report.d.ts +3 -3
  34. package/dist/renderers/markdown-report.d.ts.map +1 -1
  35. package/dist/renderers/markdown-report.js +35 -5
  36. package/dist/renderers/markdown-report.js.map +1 -1
  37. package/dist/renderers/resume-prompt.d.ts +4 -1
  38. package/dist/renderers/resume-prompt.d.ts.map +1 -1
  39. package/dist/renderers/resume-prompt.js +32 -2
  40. package/dist/renderers/resume-prompt.js.map +1 -1
  41. package/dist/types/index.d.ts +39 -0
  42. package/dist/types/index.d.ts.map +1 -1
  43. package/docs/assets/agentflight-replay-timeline.png +0 -0
  44. package/docs/development/changed-file-filters.md +58 -0
  45. package/docs/{roadmap.md → roadmap/index.md} +5 -0
  46. package/docs/roadmap/v0.4.0-review-intelligence-plan.md +882 -0
  47. package/package.json +4 -2
@@ -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;AAsCD,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,8BAA8B,GACtC,kBAAkB,CA2BpB;AAED,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,MAAM,GAAG,qBAAqB,CAUpF"}
@@ -0,0 +1,340 @@
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
+ frontend: 35,
13
+ tests: 20,
14
+ docs: 10
15
+ };
16
+ const reviewerFocusByCategory = new Map([
17
+ ["auth", "Check session, permission, and identity boundaries first."],
18
+ ["billing/payments", "Check payment state, idempotency, and webhook handling first."],
19
+ ["security/secrets", "Check credential handling and accidental exposure first."],
20
+ ["database/migrations", "Check data model, migration safety, and rollback assumptions first."],
21
+ ["config", "Check build, CI, and runtime configuration impact first."],
22
+ ["backend/api", "Check request handling, validation, and error paths first."],
23
+ ["dependencies", "Check install/build impact and dependency risk first."],
24
+ ["frontend", "Check user-facing behavior and build evidence first."],
25
+ ["tests", "Check whether tests cover the changed behavior."],
26
+ ["docs", "Check accuracy and scope of documentation changes."],
27
+ ["unknown", "Inspect manually because AgentFlight could not classify this file."]
28
+ ]);
29
+ const readinessLabels = {
30
+ ready_for_review: "Ready for review",
31
+ not_ready_for_review: "Not ready for review",
32
+ needs_verification: "Needs verification",
33
+ blocked_by_failed_verification: "Blocked by failed verification",
34
+ unknown: "Unknown"
35
+ };
36
+ export function buildReviewIntelligence(options) {
37
+ const runs = getVerificationRuns(options.session);
38
+ const proofKinds = summarizeProofKinds(runs);
39
+ const proofGaps = buildProofGaps({
40
+ changedFiles: options.changedFiles,
41
+ verificationCommands: options.session.verificationCommands,
42
+ proofKinds,
43
+ runs
44
+ });
45
+ const focus = buildReviewFocus({
46
+ changedFiles: options.changedFiles,
47
+ proofGaps,
48
+ proofKinds,
49
+ runs
50
+ });
51
+ const readiness = buildReadinessDecision({
52
+ changedFiles: options.changedFiles,
53
+ proofGaps,
54
+ focus,
55
+ runs
56
+ });
57
+ return {
58
+ focus,
59
+ proofGaps,
60
+ readiness
61
+ };
62
+ }
63
+ export function classifyVerificationProofKind(command) {
64
+ const normalized = command.toLowerCase();
65
+ if (/\b(npm|pnpm|yarn|bun)\s+(ci|install)\b/.test(normalized))
66
+ return "install";
67
+ if (/\b(vitest|jest|mocha|playwright|cypress|test)\b/.test(normalized))
68
+ return "test";
69
+ if (/\bbuild\b/.test(normalized))
70
+ return "build";
71
+ if (/\b(typecheck|tsc)\b/.test(normalized))
72
+ return "typecheck";
73
+ if (/\b(lint|eslint)\b/.test(normalized))
74
+ return "lint";
75
+ return "unknown";
76
+ }
77
+ function summarizeProofKinds(runs) {
78
+ const passed = new Set();
79
+ const failed = new Set();
80
+ for (const run of runs) {
81
+ const kind = classifyVerificationProofKind(run.command);
82
+ if (run.status === "passed")
83
+ passed.add(kind);
84
+ if (run.status === "failed")
85
+ failed.add(kind);
86
+ }
87
+ return { passed, failed };
88
+ }
89
+ function buildProofGaps(input) {
90
+ const gaps = [];
91
+ const failedRuns = input.runs.filter((run) => run.status === "failed");
92
+ if (failedRuns.length > 0) {
93
+ const failedCommand = failedRuns[0].command;
94
+ gaps.push({
95
+ id: "failed-verification",
96
+ severity: "blocking",
97
+ message: `A verification command failed and must be fixed or rerun successfully: ${failedCommand}`,
98
+ suggestedCommand: failedCommand,
99
+ relatedFiles: input.changedFiles
100
+ });
101
+ }
102
+ const filesByCategory = groupFilesByCategory(input.changedFiles);
103
+ addCategoryGap(gaps, input, filesByCategory, {
104
+ categories: ["auth", "billing/payments", "security/secrets"],
105
+ id: "missing-auth-test-proof",
106
+ severity: "blocking",
107
+ proofKinds: ["test"],
108
+ message: "Sensitive auth, payment, or security files changed without passing test evidence."
109
+ });
110
+ addCategoryGap(gaps, input, filesByCategory, {
111
+ categories: ["database/migrations"],
112
+ id: "missing-database-test-proof",
113
+ severity: "blocking",
114
+ proofKinds: ["test", "build"],
115
+ message: "Database schema or migration files changed without passing test or build evidence."
116
+ });
117
+ addCategoryGap(gaps, input, filesByCategory, {
118
+ categories: ["backend/api"],
119
+ id: "missing-backend-proof",
120
+ severity: "warning",
121
+ proofKinds: ["test", "build"],
122
+ message: "Backend/API files changed without passing test or build evidence."
123
+ });
124
+ addCategoryGap(gaps, input, filesByCategory, {
125
+ categories: ["dependencies"],
126
+ id: "missing-dependency-proof",
127
+ severity: "warning",
128
+ proofKinds: ["install", "build", "typecheck", "test"],
129
+ message: "Dependency files changed without install, build, typecheck, or test evidence."
130
+ });
131
+ addCategoryGap(gaps, input, filesByCategory, {
132
+ categories: ["config"],
133
+ id: "missing-config-proof",
134
+ severity: "warning",
135
+ proofKinds: ["lint", "typecheck", "build"],
136
+ message: "Config or CI files changed without lint, typecheck, or build evidence."
137
+ });
138
+ addCategoryGap(gaps, input, filesByCategory, {
139
+ categories: ["frontend"],
140
+ id: "missing-frontend-build-proof",
141
+ severity: "warning",
142
+ proofKinds: ["build", "test"],
143
+ message: "Frontend files changed without passing build or test evidence."
144
+ });
145
+ addCategoryGap(gaps, input, filesByCategory, {
146
+ categories: ["tests"],
147
+ id: "missing-test-suite-proof",
148
+ severity: "warning",
149
+ proofKinds: ["test"],
150
+ message: "Test files changed without passing test evidence."
151
+ });
152
+ return gaps;
153
+ }
154
+ function addCategoryGap(gaps, input, filesByCategory, rule) {
155
+ const relatedFiles = rule.categories.flatMap((category) => filesByCategory.get(category) ?? []);
156
+ if (relatedFiles.length === 0)
157
+ return;
158
+ if (rule.proofKinds.some((kind) => input.proofKinds.passed.has(kind)))
159
+ return;
160
+ const suggestedCommand = findSuggestedCommand(input.verificationCommands, rule.proofKinds);
161
+ gaps.push({
162
+ id: rule.id,
163
+ severity: rule.severity,
164
+ message: rule.message,
165
+ ...(suggestedCommand ? { suggestedCommand } : {}),
166
+ relatedFiles
167
+ });
168
+ }
169
+ function buildReviewFocus(input) {
170
+ const hasFailedVerification = input.runs.some((run) => run.status === "failed");
171
+ const items = input.changedFiles.map((file) => {
172
+ const category = categorizeFile(file);
173
+ const relatedGaps = input.proofGaps.filter((gap) => gap.relatedFiles.includes(file));
174
+ const proofStatus = determineProofStatus({
175
+ category,
176
+ relatedGaps,
177
+ hasFailedVerification,
178
+ proofKinds: input.proofKinds
179
+ });
180
+ const reasons = buildFocusReasons(category, proofStatus, relatedGaps);
181
+ const score = scoreFocusItem(category, proofStatus, relatedGaps, hasFailedVerification);
182
+ const suggestedCommand = relatedGaps.find((gap) => gap.suggestedCommand)?.suggestedCommand;
183
+ return {
184
+ rank: 0,
185
+ file,
186
+ category,
187
+ riskLevel: riskLevelForCategory(category),
188
+ score,
189
+ reasons,
190
+ suggestedReviewerFocus: suggestedReviewerFocus(category),
191
+ proofStatus,
192
+ ...(suggestedCommand ? { suggestedCommand } : {}),
193
+ relatedProofGapIds: relatedGaps.map((gap) => gap.id)
194
+ };
195
+ });
196
+ return items
197
+ .sort((left, right) => right.score - left.score || left.file.localeCompare(right.file))
198
+ .map((item, index) => ({ ...item, rank: index + 1 }));
199
+ }
200
+ function determineProofStatus(input) {
201
+ if (input.hasFailedVerification && input.category !== "docs")
202
+ return "failed";
203
+ if (input.relatedGaps.length > 0)
204
+ return "missing";
205
+ if (input.category === "docs")
206
+ return "not_required";
207
+ if (input.proofKinds.passed.size > 0)
208
+ return "covered";
209
+ return input.category === "unknown" ? "unknown" : "not_required";
210
+ }
211
+ function buildReadinessDecision(input) {
212
+ const failedRuns = input.runs.filter((run) => run.status === "failed");
213
+ if (failedRuns.length > 0) {
214
+ const failedCommand = failedRuns[0].command;
215
+ return readinessDecision({
216
+ state: "blocked_by_failed_verification",
217
+ reason: `A verification command failed and must be fixed or rerun successfully: ${failedCommand}`,
218
+ nextAction: `Fix the failed command, then rerun agentflight verify -- ${failedCommand}`,
219
+ suggestedCommand: failedCommand,
220
+ proofGaps: input.proofGaps,
221
+ failedVerificationSummary: failedRuns.map((run) => `${run.command} failed`).join("; ")
222
+ });
223
+ }
224
+ if (input.changedFiles.length === 0) {
225
+ return readinessDecision({
226
+ state: "unknown",
227
+ reason: "No changed files were detected for review.",
228
+ nextAction: "Make changes or inspect git status before requesting review.",
229
+ proofGaps: input.proofGaps
230
+ });
231
+ }
232
+ const blockingGap = input.proofGaps.find((gap) => gap.severity === "blocking");
233
+ const firstGap = blockingGap ?? input.proofGaps[0];
234
+ if (firstGap) {
235
+ const state = blockingGap ? "needs_verification" : "needs_verification";
236
+ const suggestedCommand = firstGap.suggestedCommand;
237
+ return readinessDecision({
238
+ state,
239
+ reason: firstGap.message,
240
+ nextAction: suggestedCommand
241
+ ? `Run agentflight verify -- ${suggestedCommand}`
242
+ : "Run relevant verification before requesting review.",
243
+ suggestedCommand,
244
+ proofGaps: input.proofGaps
245
+ });
246
+ }
247
+ return readinessDecision({
248
+ state: "ready_for_review",
249
+ reason: "Verification evidence matches the observed review risk.",
250
+ nextAction: "Generate or share the AgentFlight report/replay and request scoped human review.",
251
+ proofGaps: []
252
+ });
253
+ }
254
+ function readinessDecision(input) {
255
+ return {
256
+ state: input.state,
257
+ label: labelReadiness(input.state),
258
+ reason: input.reason,
259
+ nextAction: input.nextAction,
260
+ ...(input.suggestedCommand ? { suggestedCommand: input.suggestedCommand } : {}),
261
+ proofGaps: input.proofGaps,
262
+ ...(input.failedVerificationSummary
263
+ ? { failedVerificationSummary: input.failedVerificationSummary }
264
+ : {})
265
+ };
266
+ }
267
+ function scoreFocusItem(category, proofStatus, relatedGaps, hasFailedVerification) {
268
+ let score = baseScores[category];
269
+ if (proofStatus === "missing")
270
+ score += 30;
271
+ if (hasFailedVerification && category !== "docs")
272
+ score += 40;
273
+ if (category === "dependencies" && relatedGaps.length > 0)
274
+ score += 20;
275
+ if (category === "config" && relatedGaps.length > 0)
276
+ score += 15;
277
+ if (category === "unknown")
278
+ score += 10;
279
+ return score;
280
+ }
281
+ function buildFocusReasons(category, proofStatus, relatedGaps) {
282
+ const reasons = [categoryLabel(category)];
283
+ if (proofStatus === "failed")
284
+ reasons.push("verification failed");
285
+ if (relatedGaps.some((gap) => gap.message.toLowerCase().includes("test"))) {
286
+ reasons.push("no passing test evidence");
287
+ }
288
+ else if (relatedGaps.length > 0) {
289
+ reasons.push("matching proof missing");
290
+ }
291
+ return reasons;
292
+ }
293
+ function categoryLabel(category) {
294
+ if (category === "auth")
295
+ return "identity/session path";
296
+ if (category === "billing/payments")
297
+ return "payment-sensitive path";
298
+ if (category === "security/secrets")
299
+ return "credential-handling path";
300
+ if (category === "database/migrations")
301
+ return "database schema or migration path";
302
+ if (category === "backend/api")
303
+ return "backend/API file";
304
+ if (category === "dependencies")
305
+ return "dependency metadata changed";
306
+ if (category === "config")
307
+ return "configuration or CI path";
308
+ return `${category} file`;
309
+ }
310
+ function groupFilesByCategory(files) {
311
+ const grouped = new Map();
312
+ for (const file of files) {
313
+ const category = categorizeFile(file);
314
+ grouped.set(category, [...(grouped.get(category) ?? []), file]);
315
+ }
316
+ return grouped;
317
+ }
318
+ function findSuggestedCommand(verificationCommands, proofKinds) {
319
+ return verificationCommands.find((command) => proofKinds.includes(classifyVerificationProofKind(command)));
320
+ }
321
+ function riskLevelForCategory(category) {
322
+ if (category === "auth" ||
323
+ category === "billing/payments" ||
324
+ category === "security/secrets" ||
325
+ category === "database/migrations" ||
326
+ category === "config") {
327
+ return "high";
328
+ }
329
+ if (category === "backend/api" || category === "dependencies" || category === "unknown") {
330
+ return "medium";
331
+ }
332
+ return "low";
333
+ }
334
+ function suggestedReviewerFocus(category) {
335
+ return reviewerFocusByCategory.get(category) ?? "Inspect this file manually.";
336
+ }
337
+ function labelReadiness(state) {
338
+ return readinessLabels[state];
339
+ }
340
+ //# 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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"}
@@ -1,4 +1,4 @@
1
- import type { RiskCategorySummary, SessionEvent, VerificationRun } from "../types/index.js";
1
+ import type { ReviewIntelligence, RiskCategorySummary, SessionEvent, VerificationRun } from "../types/index.js";
2
2
  export type ReplayTimelineItem = Pick<SessionEvent, "type" | "timestamp" | "title" | "message" | "metadata">;
3
3
  export interface HtmlReplayInput {
4
4
  task: string;
@@ -10,6 +10,7 @@ export interface HtmlReplayInput {
10
10
  riskBadges: string[];
11
11
  verificationEvidence: VerificationRun[];
12
12
  reviewReadiness?: string | undefined;
13
+ review?: ReviewIntelligence | undefined;
13
14
  recommendation: string;
14
15
  }
15
16
  export declare function renderHtmlReplay(input: HtmlReplayInput): string;
@@ -1 +1 @@
1
- {"version":3,"file":"html-replay.d.ts","sourceRoot":"","sources":["../../src/renderers/html-replay.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAE5F,MAAM,MAAM,kBAAkB,GAAG,IAAI,CACnC,YAAY,EACZ,MAAM,GAAG,WAAW,GAAG,OAAO,GAAG,SAAS,GAAG,UAAU,CACxD,CAAC;AAEF,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,kBAAkB,EAAE,CAAC;IAC/B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,iBAAiB,CAAC,EAAE,mBAAmB,EAAE,GAAG,SAAS,CAAC;IACtD,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,oBAAoB,EAAE,eAAe,EAAE,CAAC;IACxC,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,CA2J/D"}
1
+ {"version":3,"file":"html-replay.d.ts","sourceRoot":"","sources":["../../src/renderers/html-replay.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,kBAAkB,EAClB,mBAAmB,EACnB,YAAY,EACZ,eAAe,EAChB,MAAM,mBAAmB,CAAC;AAE3B,MAAM,MAAM,kBAAkB,GAAG,IAAI,CACnC,YAAY,EACZ,MAAM,GAAG,WAAW,GAAG,OAAO,GAAG,SAAS,GAAG,UAAU,CACxD,CAAC;AAEF,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,kBAAkB,EAAE,CAAC;IAC/B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,iBAAiB,CAAC,EAAE,mBAAmB,EAAE,GAAG,SAAS,CAAC;IACtD,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,oBAAoB,EAAE,eAAe,EAAE,CAAC;IACxC,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,MAAM,CAAC,EAAE,kBAAkB,GAAG,SAAS,CAAC;IACxC,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,CA6J/D"}
@@ -111,6 +111,8 @@ export function renderHtmlReplay(input) {
111
111
 
112
112
  ${renderSummary(input)}
113
113
 
114
+ ${renderReview(input.review)}
115
+
114
116
  <section class="section">
115
117
  <div class="section-header">
116
118
  <h2>Timeline</h2>
@@ -183,6 +185,41 @@ function renderTimeline(items) {
183
185
  </div>`)
184
186
  .join("")}</div>`;
185
187
  }
188
+ function renderReview(review) {
189
+ if (!review)
190
+ return "";
191
+ return `<section class="section">
192
+ <div class="section-header">
193
+ <h2>Review Focus</h2>
194
+ <div class="meta">${escapeHtml(String(review.focus.length))} files</div>
195
+ </div>
196
+ ${renderReviewFocus(review.focus)}
197
+ <div class="section-header" style="margin-top: 22px;">
198
+ <h2>Proof Gaps</h2>
199
+ <div class="meta">${escapeHtml(String(review.proofGaps.length))} gaps</div>
200
+ </div>
201
+ ${renderProofGaps(review.proofGaps)}
202
+ <div class="recommendation" style="margin-top: 16px;">
203
+ <strong>${escapeHtml(review.readiness.label)}</strong><br>
204
+ ${escapeHtml(review.readiness.reason)}<br>
205
+ Next: ${escapeHtml(review.readiness.nextAction)}
206
+ </div>
207
+ </section>`;
208
+ }
209
+ function renderReviewFocus(items) {
210
+ if (items.length === 0)
211
+ return "<p>No changed files to review.</p>";
212
+ return `<div class="file-groups">${items
213
+ .map((item) => `<div class="file-group"><div class="file-category">#${escapeHtml(String(item.rank))} ${escapeHtml(item.category)}</div><div><code>${escapeHtml(item.file)}</code><div class="meta">${escapeHtml(item.reasons.join("; "))}</div><div class="meta">${escapeHtml(item.suggestedReviewerFocus)}</div>${item.suggestedCommand ? `<div class="meta">Suggested proof: <code>${escapeHtml(item.suggestedCommand)}</code></div>` : ""}</div></div>`)
214
+ .join("")}</div>`;
215
+ }
216
+ function renderProofGaps(gaps) {
217
+ if (gaps.length === 0)
218
+ return "<p>No proof gaps detected.</p>";
219
+ return `<ul>${gaps
220
+ .map((gap) => `<li><strong>${escapeHtml(gap.severity)}</strong>: ${escapeHtml(gap.message)}${gap.suggestedCommand ? ` <code>agentflight verify -- ${escapeHtml(gap.suggestedCommand)}</code>` : ""}</li>`)
221
+ .join("")}</ul>`;
222
+ }
186
223
  function renderFileGroups(groups) {
187
224
  if (groups.length === 0)
188
225
  return "<p>No changed file groups detected.</p>";
@@ -1 +1 @@
1
- {"version":3,"file":"html-replay.js","sourceRoot":"","sources":["../../src/renderers/html-replay.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"html-replay.js","sourceRoot":"","sources":["../../src/renderers/html-replay.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,4 @@
1
- import type { RiskAnalysis, SessionEvent, ToolAdapterResult, VerificationRun } from "../types/index.js";
2
- import type { ReviewReadiness } from "../core/verification.js";
1
+ import type { ReviewIntelligence, RiskAnalysis, SessionEvent, ToolAdapterResult, VerificationRun } from "../types/index.js";
3
2
  export interface MarkdownReportInput {
4
3
  task: string;
5
4
  sessionId: string;
@@ -10,8 +9,9 @@ export interface MarkdownReportInput {
10
9
  verificationCommands: string[];
11
10
  verificationEvidence: VerificationRun[];
12
11
  verificationGaps?: string[] | undefined;
13
- recommendation?: ReviewReadiness | undefined;
12
+ recommendation?: string | undefined;
14
13
  nextAction?: string | undefined;
14
+ review?: ReviewIntelligence | undefined;
15
15
  tooling: {
16
16
  projscan: ToolAdapterResult;
17
17
  agentloopkit: ToolAdapterResult;
@@ -1 +1 @@
1
- {"version":3,"file":"markdown-report.d.ts","sourceRoot":"","sources":["../../src/renderers/markdown-report.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,YAAY,EACZ,iBAAiB,EACjB,eAAe,EAChB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE/D,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,cAAc,CAAC,EAAE,YAAY,EAAE,GAAG,SAAS,CAAC;IAC5C,IAAI,EAAE,YAAY,CAAC;IACnB,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAC/B,oBAAoB,EAAE,eAAe,EAAE,CAAC;IACxC,gBAAgB,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IACxC,cAAc,CAAC,EAAE,eAAe,GAAG,SAAS,CAAC;IAC7C,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,OAAO,EAAE;QACP,QAAQ,EAAE,iBAAiB,CAAC;QAC5B,YAAY,EAAE,iBAAiB,CAAC;KACjC,CAAC;CACH;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,mBAAmB,GAAG,MAAM,CAuCvE"}
1
+ {"version":3,"file":"markdown-report.d.ts","sourceRoot":"","sources":["../../src/renderers/markdown-report.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,YAAY,EACZ,YAAY,EACZ,iBAAiB,EACjB,eAAe,EAChB,MAAM,mBAAmB,CAAC;AAE3B,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,cAAc,CAAC,EAAE,YAAY,EAAE,GAAG,SAAS,CAAC;IAC5C,IAAI,EAAE,YAAY,CAAC;IACnB,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAC/B,oBAAoB,EAAE,eAAe,EAAE,CAAC;IACxC,gBAAgB,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IACxC,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,MAAM,CAAC,EAAE,kBAAkB,GAAG,SAAS,CAAC;IACxC,OAAO,EAAE;QACP,QAAQ,EAAE,iBAAiB,CAAC;QAC5B,YAAY,EAAE,iBAAiB,CAAC;KACjC,CAAC;CACH;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,mBAAmB,GAAG,MAAM,CA6CvE"}
@@ -22,8 +22,14 @@ ${renderList(input.risk.reasons)}
22
22
  ## Verification Evidence
23
23
  ${renderVerification(input)}
24
24
 
25
- ## Review Focus
26
- ${renderReviewFocus(input.risk)}
25
+ ## Review First
26
+ ${renderReviewFirst(input)}
27
+
28
+ ## Proof Gaps
29
+ ${renderProofGaps(input)}
30
+
31
+ ## Review Readiness
32
+ ${renderReviewReadiness(input)}
27
33
 
28
34
  ## Recommendation
29
35
  ${renderRecommendation(input)}
@@ -69,13 +75,37 @@ function renderTimeline(events) {
69
75
  })
70
76
  .join("\n");
71
77
  }
72
- function renderReviewFocus(risk) {
73
- return risk.categories.length
74
- ? risk.categories
78
+ function renderReviewFirst(input) {
79
+ const focus = input.review?.focus;
80
+ if (focus && focus.length > 0) {
81
+ return focus
82
+ .map((item) => `${item.rank}. ${item.file}\n - Why: ${item.reasons.join("; ")}\n - Focus: ${item.suggestedReviewerFocus}${item.suggestedCommand ? `\n - Suggested proof: ${item.suggestedCommand}` : ""}`)
83
+ .join("\n");
84
+ }
85
+ return input.risk.categories.length
86
+ ? input.risk.categories
75
87
  .map((summary) => `- ${summary.category}: ${summary.files.join(", ")}`)
76
88
  .join("\n")
77
89
  : "- Confirm the session has meaningful changes before review.";
78
90
  }
91
+ function renderProofGaps(input) {
92
+ if (input.review) {
93
+ return input.review.proofGaps.length
94
+ ? input.review.proofGaps
95
+ .map((gap) => `- ${gap.severity}: ${gap.message}${gap.suggestedCommand ? `\n - Suggested proof: agentflight verify -- ${gap.suggestedCommand}` : ""}`)
96
+ .join("\n")
97
+ : "- none";
98
+ }
99
+ return input.verificationGaps?.length ? renderList(input.verificationGaps) : "- none";
100
+ }
101
+ function renderReviewReadiness(input) {
102
+ if (!input.review)
103
+ return input.recommendation ?? "Unknown";
104
+ return `${input.review.readiness.label}
105
+
106
+ Reason: ${input.review.readiness.reason}
107
+ Next action: ${input.review.readiness.nextAction}`;
108
+ }
79
109
  function renderRecommendation(input) {
80
110
  if (input.recommendation) {
81
111
  return `${input.recommendation}.`;
@@ -1 +1 @@
1
- {"version":3,"file":"markdown-report.js","sourceRoot":"","sources":["../../src/renderers/markdown-report.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"markdown-report.js","sourceRoot":"","sources":["../../src/renderers/markdown-report.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { RiskLevel } from "../types/index.js";
1
+ import type { ProofGap, ReviewFocusItem, ReviewReadinessDecision, RiskLevel } from "../types/index.js";
2
2
  export interface ResumePromptInput {
3
3
  task: string;
4
4
  sessionId: string;
@@ -7,6 +7,9 @@ export interface ResumePromptInput {
7
7
  riskLevel: RiskLevel;
8
8
  riskReasons: string[];
9
9
  verificationGaps: string[];
10
+ reviewFocus?: ReviewFocusItem[] | undefined;
11
+ proofGaps?: ProofGap[] | undefined;
12
+ readiness?: ReviewReadinessDecision | undefined;
10
13
  latestSnapshotNote?: string | undefined;
11
14
  verificationState?: string | undefined;
12
15
  nextAction: string;
@@ -1 +1 @@
1
- {"version":3,"file":"resume-prompt.d.ts","sourceRoot":"","sources":["../../src/renderers/resume-prompt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,EAAE,SAAS,CAAC;IACrB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,kBAAkB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,iBAAiB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM,CAoCnE"}
1
+ {"version":3,"file":"resume-prompt.d.ts","sourceRoot":"","sources":["../../src/renderers/resume-prompt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,QAAQ,EACR,eAAe,EACf,uBAAuB,EACvB,SAAS,EACV,MAAM,mBAAmB,CAAC;AAE3B,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,EAAE,SAAS,CAAC;IACrB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,WAAW,CAAC,EAAE,eAAe,EAAE,GAAG,SAAS,CAAC;IAC5C,SAAS,CAAC,EAAE,QAAQ,EAAE,GAAG,SAAS,CAAC;IACnC,SAAS,CAAC,EAAE,uBAAuB,GAAG,SAAS,CAAC;IAChD,kBAAkB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,iBAAiB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM,CA0CnE"}
@@ -21,8 +21,14 @@ ${input.latestSnapshotNote ?? "No snapshot recorded."}
21
21
  ## Verification State
22
22
  ${input.verificationState ?? "No verification state recorded."}
23
23
 
24
- ## Verification Gaps
25
- ${renderList(input.verificationGaps, "No verification gaps recorded.")}
24
+ ## Review Focus
25
+ ${renderReviewFocus(input.reviewFocus ?? [])}
26
+
27
+ ## Proof Gaps
28
+ ${renderProofGaps(input)}
29
+
30
+ ## Review Readiness
31
+ ${renderReadiness(input.readiness)}
26
32
 
27
33
  ## Next Recommended Action
28
34
  ${input.nextAction}
@@ -38,4 +44,28 @@ ${input.nextAction}
38
44
  function renderList(items, empty) {
39
45
  return items.length ? items.map((item) => `- ${item}`).join("\n") : empty;
40
46
  }
47
+ function renderReviewFocus(items) {
48
+ if (items.length === 0)
49
+ return "No review focus recorded.";
50
+ return items
51
+ .map((item) => `${item.rank}. ${item.file}\n - Why: ${item.reasons.join("; ")}\n - Focus: ${item.suggestedReviewerFocus}${item.suggestedCommand ? `\n - Suggested proof: ${item.suggestedCommand}` : ""}`)
52
+ .join("\n");
53
+ }
54
+ function renderProofGaps(input) {
55
+ if (input.proofGaps) {
56
+ return input.proofGaps.length
57
+ ? input.proofGaps
58
+ .map((gap) => `- ${gap.severity}: ${gap.message}${gap.suggestedCommand ? `\n Suggested proof: agentflight verify -- ${gap.suggestedCommand}` : ""}`)
59
+ .join("\n")
60
+ : "No proof gaps recorded.";
61
+ }
62
+ return renderList(input.verificationGaps, "No verification gaps recorded.");
63
+ }
64
+ function renderReadiness(readiness) {
65
+ if (!readiness)
66
+ return "No review readiness recorded.";
67
+ return `${readiness.label}
68
+ - Reason: ${readiness.reason}
69
+ - Next action: ${readiness.nextAction}`;
70
+ }
41
71
  //# sourceMappingURL=resume-prompt.js.map