agentflight 0.3.2 → 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 (50) hide show
  1. package/CHANGELOG.md +63 -0
  2. package/README.md +41 -9
  3. package/dist/commands/replay.d.ts.map +1 -1
  4. package/dist/commands/replay.js +9 -3
  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 -3
  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 -2
  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 +19 -1
  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 -5
  17. package/dist/commands/status.js.map +1 -1
  18. package/dist/core/changed-files.d.ts +7 -0
  19. package/dist/core/changed-files.d.ts.map +1 -0
  20. package/dist/core/changed-files.js +73 -0
  21. package/dist/core/changed-files.js.map +1 -0
  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/git.d.ts.map +1 -1
  26. package/dist/core/git.js +5 -2
  27. package/dist/core/git.js.map +1 -1
  28. package/dist/core/review-intelligence.d.ts +9 -0
  29. package/dist/core/review-intelligence.d.ts.map +1 -0
  30. package/dist/core/review-intelligence.js +340 -0
  31. package/dist/core/review-intelligence.js.map +1 -0
  32. package/dist/renderers/html-replay.d.ts +2 -1
  33. package/dist/renderers/html-replay.d.ts.map +1 -1
  34. package/dist/renderers/html-replay.js +188 -50
  35. package/dist/renderers/html-replay.js.map +1 -1
  36. package/dist/renderers/markdown-report.d.ts +3 -3
  37. package/dist/renderers/markdown-report.d.ts.map +1 -1
  38. package/dist/renderers/markdown-report.js +35 -5
  39. package/dist/renderers/markdown-report.js.map +1 -1
  40. package/dist/renderers/resume-prompt.d.ts +4 -1
  41. package/dist/renderers/resume-prompt.d.ts.map +1 -1
  42. package/dist/renderers/resume-prompt.js +32 -2
  43. package/dist/renderers/resume-prompt.js.map +1 -1
  44. package/dist/types/index.d.ts +39 -0
  45. package/dist/types/index.d.ts.map +1 -1
  46. package/docs/assets/agentflight-replay-timeline.png +0 -0
  47. package/docs/development/changed-file-filters.md +58 -0
  48. package/docs/{roadmap.md → roadmap/index.md} +5 -0
  49. package/docs/roadmap/v0.4.0-review-intelligence-plan.md +882 -0
  50. package/package.json +4 -2
@@ -1,4 +1,6 @@
1
1
  export function renderHtmlReplay(input) {
2
+ const risk = input.riskBadges[0] ?? "unknown";
3
+ const readiness = input.reviewReadiness ?? "Unknown";
2
4
  return `<!doctype html>
3
5
  <html lang="en">
4
6
  <head>
@@ -6,66 +8,145 @@ export function renderHtmlReplay(input) {
6
8
  <meta name="viewport" content="width=device-width, initial-scale=1">
7
9
  <title>AgentFlight Replay ${escapeHtml(input.sessionId)}</title>
8
10
  <style>
9
- :root { color-scheme: light; font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; }
10
- body { margin: 0; background: #f7f8fa; color: #1b1f24; }
11
- main { max-width: 960px; margin: 0 auto; padding: 40px 24px; }
12
- header { border-bottom: 1px solid #d8dee4; padding-bottom: 24px; margin-bottom: 28px; }
13
- h1 { font-size: 32px; line-height: 1.1; margin: 0 0 12px; letter-spacing: 0; }
14
- h2 { font-size: 18px; margin: 28px 0 12px; }
15
- .meta { color: #57606a; font-size: 14px; }
11
+ :root {
12
+ color-scheme: light;
13
+ font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
14
+ --bg: oklch(0.982 0.006 248);
15
+ --paper: oklch(0.996 0.003 248);
16
+ --text: oklch(0.245 0.022 252);
17
+ --muted: oklch(0.49 0.028 252);
18
+ --faint: oklch(0.66 0.024 252);
19
+ --line: oklch(0.865 0.014 252);
20
+ --line-strong: oklch(0.74 0.026 252);
21
+ --soft: oklch(0.955 0.008 248);
22
+ --accent: oklch(0.47 0.105 252);
23
+ --success: oklch(0.49 0.13 148);
24
+ --success-bg: oklch(0.955 0.035 148);
25
+ --danger: oklch(0.52 0.165 28);
26
+ --danger-bg: oklch(0.955 0.032 28);
27
+ --warning: oklch(0.57 0.115 78);
28
+ --warning-bg: oklch(0.955 0.035 78);
29
+ --mono: ui-monospace, SFMono-Regular, "SF Mono", Consolas, "Liberation Mono", monospace;
30
+ }
31
+
32
+ * { box-sizing: border-box; }
33
+ body { margin: 0; background: var(--bg); color: var(--text); }
34
+ main { max-width: 1120px; margin: 0 auto; padding: 40px 28px 48px; }
35
+ header { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 24px; align-items: start; border-bottom: 1px solid var(--line); padding-bottom: 28px; margin-bottom: 24px; }
36
+ h1 { font-size: 30px; line-height: 1.15; margin: 8px 0 12px; letter-spacing: 0; max-width: 26ch; }
37
+ h2 { font-size: 17px; line-height: 1.25; margin: 0 0 14px; letter-spacing: 0; }
38
+ p { max-width: 72ch; }
39
+ .eyebrow { color: var(--muted); font-size: 12px; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; }
40
+ .meta { color: var(--muted); font-size: 13px; line-height: 1.45; }
41
+ .header-status { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 8px; max-width: 360px; }
16
42
  .badges { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 16px; }
17
- .badge { border: 1px solid #d0d7de; border-radius: 999px; padding: 4px 10px; background: #ffffff; font-size: 13px; }
18
- .summary-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; margin: 0 0 28px; }
19
- .summary-card { background: #ffffff; border: 1px solid #d0d7de; border-radius: 8px; padding: 14px; min-width: 0; }
20
- .summary-card span { color: #57606a; display: block; font-size: 12px; font-weight: 600; text-transform: uppercase; }
21
- .summary-card strong { display: block; font-size: 18px; margin-top: 4px; overflow-wrap: anywhere; }
22
- .panel { background: #ffffff; border: 1px solid #d0d7de; border-radius: 8px; padding: 18px; margin: 16px 0; }
23
- .timeline { border-left: 3px solid #d0d7de; padding-left: 16px; }
24
- .timeline-item { margin: 0 0 14px; }
25
- .timeline-item strong { display: block; }
26
- .verification-grid { display: grid; gap: 12px; }
27
- .verification-card { border: 1px solid #d0d7de; border-radius: 8px; padding: 14px; background: #fbfcfe; }
28
- .verification-card.passed { border-color: #2da44e; }
29
- .verification-card.failed { border-color: #cf222e; }
30
- .verification-card strong { display: inline-block; margin-bottom: 6px; }
31
- footer { color: #57606a; font-size: 13px; margin-top: 28px; }
43
+ .badge { border: 1px solid var(--line); border-radius: 999px; padding: 4px 10px; background: var(--paper); color: var(--text); font-size: 12px; font-weight: 650; line-height: 1.35; }
44
+ .badge.risk-high, .badge.status-failed { background: var(--danger-bg); border-color: var(--danger); color: var(--danger); }
45
+ .badge.risk-medium { background: var(--warning-bg); border-color: var(--warning); color: oklch(0.39 0.095 78); }
46
+ .badge.risk-low, .badge.status-passed, .badge.ready { background: var(--success-bg); border-color: var(--success); color: var(--success); }
47
+ .badge.unknown { background: var(--soft); color: var(--muted); }
48
+ .summary-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); border: 1px solid var(--line); border-radius: 8px; overflow: hidden; background: var(--paper); margin: 0 0 28px; }
49
+ .summary-card { min-width: 0; padding: 15px 16px; border-right: 1px solid var(--line); }
50
+ .summary-card:last-child { border-right: 0; }
51
+ .summary-card span { color: var(--muted); display: block; font-size: 11px; font-weight: 700; letter-spacing: 0.05em; text-transform: uppercase; }
52
+ .summary-card strong { display: block; font-size: 17px; line-height: 1.25; margin-top: 5px; overflow-wrap: anywhere; }
53
+ .section { border-top: 1px solid var(--line); padding: 26px 0 4px; margin-top: 24px; }
54
+ .section-header { display: flex; align-items: baseline; justify-content: space-between; gap: 16px; margin-bottom: 12px; }
55
+ .section-header .meta { flex: 0 0 auto; }
56
+ .timeline { display: grid; gap: 8px; }
57
+ .timeline-item { display: grid; grid-template-columns: minmax(145px, 0.34fr) 14px minmax(0, 1fr); gap: 12px; align-items: start; padding: 10px 0; border-bottom: 1px solid var(--line); }
58
+ .timeline-item:last-child { border-bottom: 0; }
59
+ .timeline-time { color: var(--muted); font-family: var(--mono); font-size: 12px; line-height: 1.5; overflow-wrap: anywhere; }
60
+ .timeline-dot { width: 9px; height: 9px; margin-top: 5px; border-radius: 999px; background: var(--line-strong); }
61
+ .timeline-body strong { display: block; font-size: 14px; line-height: 1.35; }
62
+ .timeline-type { color: var(--muted); font-family: var(--mono); font-size: 12px; margin-top: 2px; }
63
+ .timeline-message { color: var(--text); margin-top: 6px; }
64
+ .file-groups { display: grid; gap: 8px; }
65
+ .file-group { display: grid; grid-template-columns: 150px minmax(0, 1fr); gap: 14px; padding: 10px 0; border-bottom: 1px solid var(--line); }
66
+ .file-group:last-child { border-bottom: 0; }
67
+ .file-category { color: var(--text); font-size: 13px; font-weight: 700; }
68
+ .file-list-inline { display: flex; flex-wrap: wrap; gap: 6px; }
69
+ .changed-files { columns: 2; column-gap: 28px; margin: 0; padding: 0; list-style: none; }
70
+ .changed-files li { break-inside: avoid; margin: 0 0 7px; }
71
+ .verification-grid { border: 1px solid var(--line); border-radius: 8px; overflow: hidden; background: var(--paper); }
72
+ .verification-card { display: grid; grid-template-columns: 104px minmax(0, 1fr); gap: 14px; align-items: start; padding: 13px 16px; border-bottom: 1px solid var(--line); }
73
+ .verification-card:last-child { border-bottom: 0; }
74
+ .verification-status { align-self: start; justify-self: start; }
75
+ .verification-command { min-width: 0; }
76
+ details { margin-top: 8px; }
77
+ summary { color: var(--muted); cursor: pointer; font-size: 12px; font-weight: 650; }
78
+ .verification-paths { color: var(--muted); font-size: 12px; line-height: 1.55; margin-top: 6px; overflow-wrap: anywhere; }
79
+ .recommendation { background: var(--paper); border: 1px solid var(--line); border-radius: 8px; padding: 16px 18px; }
80
+ footer { color: var(--muted); font-size: 12px; margin-top: 30px; border-top: 1px solid var(--line); padding-top: 16px; }
32
81
  ul { margin: 0; padding-left: 22px; }
33
82
  li { margin: 6px 0; }
34
- code { background: #f0f3f6; border-radius: 4px; padding: 2px 5px; }
35
- @media (max-width: 760px) { .summary-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
83
+ code { background: var(--soft); border: 1px solid var(--line); border-radius: 5px; color: var(--text); font-family: var(--mono); font-size: 0.93em; padding: 2px 5px; overflow-wrap: anywhere; }
84
+ @media (max-width: 860px) {
85
+ main { padding: 28px 18px 40px; }
86
+ header { grid-template-columns: 1fr; }
87
+ .header-status { justify-content: flex-start; }
88
+ .summary-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
89
+ .summary-card:nth-child(2) { border-right: 0; }
90
+ .summary-card:nth-child(-n + 2) { border-bottom: 1px solid var(--line); }
91
+ .timeline-item, .file-group, .verification-card { grid-template-columns: 1fr; gap: 6px; }
92
+ .timeline-dot { display: none; }
93
+ .changed-files { columns: 1; }
94
+ }
36
95
  </style>
37
96
  </head>
38
97
  <body>
39
98
  <main>
40
99
  <header>
41
- <div class="meta">AgentFlight replay · ${escapeHtml(input.sessionId)}</div>
42
- <h1>${escapeHtml(input.task)}</h1>
43
- <div class="meta">Started ${escapeHtml(input.startedAt)}</div>
44
- <div class="badges">${input.riskBadges.map((badge) => `<span class="badge">${escapeHtml(badge)}</span>`).join("")}</div>
100
+ <div>
101
+ <div class="eyebrow">AgentFlight Replay</div>
102
+ <h1>${escapeHtml(input.task)}</h1>
103
+ <div class="meta">Session ${escapeHtml(input.sessionId)} &middot; Started ${escapeHtml(input.startedAt)}</div>
104
+ <div class="badges">${input.riskBadges.map((badge) => renderBadge(badge, "risk")).join("")}</div>
105
+ </div>
106
+ <div class="header-status">
107
+ ${renderBadge(readiness, "readiness")}
108
+ ${renderBadge(risk, "risk")}
109
+ </div>
45
110
  </header>
46
111
 
47
112
  ${renderSummary(input)}
48
113
 
49
- <section class="panel">
50
- <h2>Timeline</h2>
114
+ ${renderReview(input.review)}
115
+
116
+ <section class="section">
117
+ <div class="section-header">
118
+ <h2>Timeline</h2>
119
+ <div class="meta">${escapeHtml(String(input.timeline.length))} events</div>
120
+ </div>
51
121
  ${renderTimeline(input.timeline)}
52
122
  </section>
53
123
 
54
- <section class="panel">
55
- <h2>Changed File Groups</h2>
124
+ <section class="section">
125
+ <div class="section-header">
126
+ <h2>Changed File Groups</h2>
127
+ <div class="meta">${escapeHtml(String(input.changedFileGroups?.length ?? 0))} groups</div>
128
+ </div>
56
129
  ${renderFileGroups(input.changedFileGroups ?? [])}
57
- <h2>Changed Files</h2>
130
+ <div class="section-header" style="margin-top: 22px;">
131
+ <h2>Changed Files</h2>
132
+ <div class="meta">${escapeHtml(String(input.changedFiles.length))} files</div>
133
+ </div>
58
134
  ${renderFileList(input.changedFiles)}
59
135
  </section>
60
136
 
61
- <section class="panel">
62
- <h2>Verification Evidence</h2>
137
+ <section class="section">
138
+ <div class="section-header">
139
+ <h2>Verification Evidence</h2>
140
+ <div class="meta">${escapeHtml(String(input.verificationEvidence.length))} runs</div>
141
+ </div>
63
142
  ${renderVerification(input.verificationEvidence)}
64
143
  </section>
65
144
 
66
- <section class="panel">
67
- <h2>Recommendation</h2>
68
- <p>${escapeHtml(input.recommendation)}</p>
145
+ <section class="section">
146
+ <div class="section-header">
147
+ <h2>Recommendation</h2>
148
+ </div>
149
+ <div class="recommendation">${escapeHtml(input.recommendation)}</div>
69
150
  </section>
70
151
 
71
152
  <footer>Generated by AgentFlight</footer>
@@ -94,37 +175,94 @@ function renderTimeline(items) {
94
175
  return "<p>No timeline events recorded.</p>";
95
176
  return `<div class="timeline">${items
96
177
  .map((item) => `<div class="timeline-item">
97
- <strong>${escapeHtml(item.title)}</strong>
98
- <div class="meta">${escapeHtml(item.timestamp)} · ${escapeHtml(item.type)}</div>
99
- ${item.message ? `<div>${escapeHtml(item.message)}</div>` : ""}
178
+ <div class="timeline-time">${escapeHtml(item.timestamp)}</div>
179
+ <div class="timeline-dot" aria-hidden="true"></div>
180
+ <div class="timeline-body">
181
+ <strong>${escapeHtml(item.title)}</strong>
182
+ <div class="timeline-type">${escapeHtml(item.type)}</div>
183
+ ${item.message ? `<div class="timeline-message">${escapeHtml(item.message)}</div>` : ""}
184
+ </div>
100
185
  </div>`)
101
186
  .join("")}</div>`;
102
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
+ }
103
223
  function renderFileGroups(groups) {
104
224
  if (groups.length === 0)
105
225
  return "<p>No changed file groups detected.</p>";
106
- return `<ul>${groups
107
- .map((group) => `<li><strong>${escapeHtml(group.category)}</strong>: ${group.files.map((file) => `<code>${escapeHtml(file)}</code>`).join(", ")}</li>`)
108
- .join("")}</ul>`;
226
+ return `<div class="file-groups">${groups
227
+ .map((group) => `<div class="file-group"><div class="file-category">${escapeHtml(group.category)}</div><div class="file-list-inline">${group.files.map((file) => `<code>${escapeHtml(file)}</code>`).join("")}</div></div>`)
228
+ .join("")}</div>`;
109
229
  }
110
230
  function renderFileList(files) {
111
231
  if (files.length === 0)
112
232
  return "<p>No changed files detected.</p>";
113
- return `<ul>${files.map((file) => `<li><code>${escapeHtml(file)}</code></li>`).join("")}</ul>`;
233
+ return `<ul class="changed-files">${files.map((file) => `<li><code>${escapeHtml(file)}</code></li>`).join("")}</ul>`;
114
234
  }
115
235
  function renderVerification(evidence) {
116
236
  if (evidence.length === 0)
117
237
  return "<p>No verification evidence recorded.</p>";
118
238
  return `<div class="verification-grid">${evidence
119
239
  .map((item) => `<div class="verification-card ${escapeHtml(item.status)}">
120
- <strong>${escapeHtml(item.status)}</strong>
121
- <div><code>${escapeHtml(item.command)}</code></div>
122
- <div class="meta">Exit ${escapeHtml(String(item.exitCode ?? "unknown"))} · ${escapeHtml(String(item.durationMs))}ms</div>
123
- <div class="meta">stdout: ${escapeHtml(item.stdoutPath)}</div>
124
- <div class="meta">stderr: ${escapeHtml(item.stderrPath)}</div>
240
+ <div class="verification-status">${renderBadge(item.status, "status")}</div>
241
+ <div class="verification-command">
242
+ <code>${escapeHtml(item.command)}</code>
243
+ <div class="meta">Exit ${escapeHtml(String(item.exitCode ?? "unknown"))} &middot; ${escapeHtml(String(item.durationMs))}ms</div>
244
+ <details>
245
+ <summary>Evidence files</summary>
246
+ <div class="verification-paths">
247
+ <div>stdout: ${escapeHtml(item.stdoutPath)}</div>
248
+ <div>stderr: ${escapeHtml(item.stderrPath)}</div>
249
+ </div>
250
+ </details>
251
+ </div>
125
252
  </div>`)
126
253
  .join("")}</div>`;
127
254
  }
255
+ function renderBadge(value, kind) {
256
+ const normalized = value.toLowerCase().replaceAll(/\s+/g, "-");
257
+ const className = kind === "readiness"
258
+ ? normalized.startsWith("ready")
259
+ ? "ready"
260
+ : "unknown"
261
+ : kind === "status"
262
+ ? `status-${normalized}`
263
+ : `risk-${normalized}`;
264
+ return `<span class="badge ${escapeHtml(className)}">${escapeHtml(value)}</span>`;
265
+ }
128
266
  function escapeHtml(value) {
129
267
  return value
130
268
  .replaceAll("&", "&amp;")
@@ -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
@@ -1 +1 @@
1
- {"version":3,"file":"resume-prompt.js","sourceRoot":"","sources":["../../src/renderers/resume-prompt.ts"],"names":[],"mappings":"AAeA,MAAM,UAAU,kBAAkB,CAAC,KAAwB;IACzD,OAAO;;;EAGP,KAAK,CAAC,IAAI;;;aAGC,KAAK,CAAC,SAAS;gBACZ,KAAK,CAAC,MAAM,IAAI,SAAS;gBACzB,KAAK,CAAC,SAAS;;;EAG7B,UAAU,CAAC,KAAK,CAAC,YAAY,EAAE,4BAA4B,CAAC;;;EAG5D,UAAU,CAAC,KAAK,CAAC,WAAW,EAAE,iCAAiC,CAAC;;;EAGhE,KAAK,CAAC,kBAAkB,IAAI,uBAAuB;;;EAGnD,KAAK,CAAC,iBAAiB,IAAI,iCAAiC;;;EAG5D,UAAU,CAAC,KAAK,CAAC,gBAAgB,EAAE,gCAAgC,CAAC;;;EAGpE,KAAK,CAAC,UAAU;;;;;;;;CAQjB,CAAC;AACF,CAAC;AAED,SAAS,UAAU,CAAC,KAAe,EAAE,KAAa;IAChD,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAC5E,CAAC"}
1
+ {"version":3,"file":"resume-prompt.js","sourceRoot":"","sources":["../../src/renderers/resume-prompt.ts"],"names":[],"mappings":"AAuBA,MAAM,UAAU,kBAAkB,CAAC,KAAwB;IACzD,OAAO;;;EAGP,KAAK,CAAC,IAAI;;;aAGC,KAAK,CAAC,SAAS;gBACZ,KAAK,CAAC,MAAM,IAAI,SAAS;gBACzB,KAAK,CAAC,SAAS;;;EAG7B,UAAU,CAAC,KAAK,CAAC,YAAY,EAAE,4BAA4B,CAAC;;;EAG5D,UAAU,CAAC,KAAK,CAAC,WAAW,EAAE,iCAAiC,CAAC;;;EAGhE,KAAK,CAAC,kBAAkB,IAAI,uBAAuB;;;EAGnD,KAAK,CAAC,iBAAiB,IAAI,iCAAiC;;;EAG5D,iBAAiB,CAAC,KAAK,CAAC,WAAW,IAAI,EAAE,CAAC;;;EAG1C,eAAe,CAAC,KAAK,CAAC;;;EAGtB,eAAe,CAAC,KAAK,CAAC,SAAS,CAAC;;;EAGhC,KAAK,CAAC,UAAU;;;;;;;;CAQjB,CAAC;AACF,CAAC;AAED,SAAS,UAAU,CAAC,KAAe,EAAE,KAAa;IAChD,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAC5E,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAwB;IACjD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,2BAA2B,CAAC;IAC3D,OAAO,KAAK;SACT,GAAG,CACF,CAAC,IAAI,EAAE,EAAE,CACP,GAAG,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,eAAe,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,2BAA2B,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CACnM;SACA,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED,SAAS,eAAe,CAAC,KAAwB;IAC/C,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;QACpB,OAAO,KAAK,CAAC,SAAS,CAAC,MAAM;YAC3B,CAAC,CAAC,KAAK,CAAC,SAAS;iBACZ,GAAG,CACF,CAAC,GAAG,EAAE,EAAE,CACN,KAAK,GAAG,CAAC,QAAQ,KAAK,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,8CAA8C,GAAG,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CACzI;iBACA,IAAI,CAAC,IAAI,CAAC;YACf,CAAC,CAAC,yBAAyB,CAAC;IAChC,CAAC;IAED,OAAO,UAAU,CAAC,KAAK,CAAC,gBAAgB,EAAE,gCAAgC,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,eAAe,CAAC,SAA8C;IACrE,IAAI,CAAC,SAAS;QAAE,OAAO,+BAA+B,CAAC;IACvD,OAAO,GAAG,SAAS,CAAC,KAAK;YACf,SAAS,CAAC,MAAM;iBACX,SAAS,CAAC,UAAU,EAAE,CAAC;AACxC,CAAC"}
@@ -16,6 +16,9 @@ export interface AgentFlightConfig {
16
16
  verification: {
17
17
  commands: string[];
18
18
  };
19
+ changedFileFilters?: {
20
+ ignore: string[];
21
+ };
19
22
  privacy: {
20
23
  localOnly: true;
21
24
  telemetry: false;
@@ -95,6 +98,42 @@ export interface VerificationRun {
95
98
  stdoutPath: string;
96
99
  stderrPath: string;
97
100
  }
101
+ export type VerificationProofKind = "test" | "build" | "typecheck" | "lint" | "install" | "unknown";
102
+ export type ReviewReadinessState = "ready_for_review" | "not_ready_for_review" | "needs_verification" | "blocked_by_failed_verification" | "unknown";
103
+ export type ReviewProofStatus = "covered" | "missing" | "failed" | "not_required" | "unknown";
104
+ export interface ReviewFocusItem {
105
+ rank: number;
106
+ file: string;
107
+ category: RiskCategory;
108
+ riskLevel: RiskLevel;
109
+ score: number;
110
+ reasons: string[];
111
+ suggestedReviewerFocus: string;
112
+ proofStatus: ReviewProofStatus;
113
+ suggestedCommand?: string;
114
+ relatedProofGapIds: string[];
115
+ }
116
+ export interface ProofGap {
117
+ id: string;
118
+ severity: "info" | "warning" | "blocking";
119
+ message: string;
120
+ suggestedCommand?: string;
121
+ relatedFiles: string[];
122
+ }
123
+ export interface ReviewReadinessDecision {
124
+ state: ReviewReadinessState;
125
+ label: string;
126
+ reason: string;
127
+ nextAction: string;
128
+ suggestedCommand?: string;
129
+ proofGaps: ProofGap[];
130
+ failedVerificationSummary?: string;
131
+ }
132
+ export interface ReviewIntelligence {
133
+ focus: ReviewFocusItem[];
134
+ proofGaps: ProofGap[];
135
+ readiness: ReviewReadinessDecision;
136
+ }
98
137
  export interface VerificationEvidence {
99
138
  command: string;
100
139
  status: "pass" | "fail" | "not-run";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}