agentflight 0.4.1 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +44 -0
- package/README.md +6 -3
- package/dist/core/verification.d.ts +12 -0
- package/dist/core/verification.d.ts.map +1 -1
- package/dist/core/verification.js +29 -1
- package/dist/core/verification.js.map +1 -1
- package/dist/renderers/html-replay.d.ts.map +1 -1
- package/dist/renderers/html-replay.js +424 -159
- package/dist/renderers/html-replay.js.map +1 -1
- package/dist/renderers/markdown-report.js +12 -1
- package/dist/renderers/markdown-report.js.map +1 -1
- package/dist/types/index.d.ts +6 -0
- package/dist/types/index.d.ts.map +1 -1
- package/docs/assets/agentflight-replay-scroll.gif +0 -0
- package/docs/assets/agentflight-replay-timeline.png +0 -0
- package/docs/assets/agentflight-terminal-demo.gif +0 -0
- package/package.json +9 -3
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,50 @@
|
|
|
2
2
|
|
|
3
3
|
All notable AgentFlight changes are documented here.
|
|
4
4
|
|
|
5
|
+
## [0.5.0] - 2026-06-16
|
|
6
|
+
|
|
7
|
+
Inline verification evidence and replay accessibility.
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
|
|
11
|
+
- `agentflight verify` captures a short output excerpt (stderr preferred, otherwise stdout) at run time and stores it on the verification run.
|
|
12
|
+
- The replay shows the excerpt inline for failed runs, so a reviewer can see what broke without opening the evidence file. Passing runs keep the excerpt tucked inside the evidence details to stay calm.
|
|
13
|
+
- The Markdown proof report includes the failure excerpt as a fenced block for failed runs.
|
|
14
|
+
|
|
15
|
+
### Changed
|
|
16
|
+
|
|
17
|
+
- Replay readout band now sticks to the top so risk and readiness stay visible while scrolling long records.
|
|
18
|
+
- Raised contrast on muted replay text and risk colors to meet WCAG AA for small text.
|
|
19
|
+
|
|
20
|
+
### Added (replay)
|
|
21
|
+
|
|
22
|
+
- Print stylesheet for clean PDF handoffs and incident reconstruction: expands evidence, avoids mid-record page breaks, and preserves risk and readiness color.
|
|
23
|
+
|
|
24
|
+
### Verification
|
|
25
|
+
|
|
26
|
+
- `npm run verify` passed.
|
|
27
|
+
- `npm run format:check` passed.
|
|
28
|
+
|
|
29
|
+
## [0.4.2] - 2026-06-16
|
|
30
|
+
|
|
31
|
+
Replay UI redesign and refreshed product demos.
|
|
32
|
+
|
|
33
|
+
### Changed
|
|
34
|
+
|
|
35
|
+
- Redesigned the HTML replay artifact as a flight-record evidence ledger: a verdict-led masthead where review readiness is the lead signal, an instrument-style readout band in place of the metric-card grid, a log-spine timeline whose event nodes encode type by shape and fill, and a verification ledger with explicit `PASS`/`FAIL` stamps.
|
|
36
|
+
- The replay now stays calm by default and applies semantic color only when risk is elevated or proof is failing, and never relies on color alone.
|
|
37
|
+
- Updated ProjScan to 4.5.0 and AgentLoopKit to 0.35.2.
|
|
38
|
+
|
|
39
|
+
### Added
|
|
40
|
+
|
|
41
|
+
- Reproducible demo-asset pipeline: `npm run demo:assets` regenerates the replay screenshot and scroll GIF (Playwright) and the terminal workflow GIF (VHS) from `scripts/demo/` and `docs/marketing/`.
|
|
42
|
+
- Refreshed README with the new terminal workflow GIF and an animated replay walkthrough.
|
|
43
|
+
|
|
44
|
+
### Verification
|
|
45
|
+
|
|
46
|
+
- `npm run verify` passed.
|
|
47
|
+
- `npm run format:check` passed.
|
|
48
|
+
|
|
5
49
|
## [0.4.1] - 2026-06-15
|
|
6
50
|
|
|
7
51
|
Review Intelligence trust patch focused on v0.4.0 dogfood findings.
|
package/README.md
CHANGED
|
@@ -22,7 +22,7 @@ AgentFlight helps you:
|
|
|
22
22
|
- generate a local replay timeline
|
|
23
23
|
- create a resume prompt for the next agent or reviewer
|
|
24
24
|
|
|
25
|
-

|
|
26
26
|
|
|
27
27
|
## 60-Second Workflow
|
|
28
28
|
|
|
@@ -61,9 +61,11 @@ AgentFlight turns a loose AI-agent session into a local proof trail:
|
|
|
61
61
|
4. Read `status` to see changed files, risk, proof, gaps, and next action.
|
|
62
62
|
5. Generate `report`, `replay`, and `resume` when the work is ready to review or hand off.
|
|
63
63
|
|
|
64
|
-
The replay artifact is a self-contained local HTML file:
|
|
64
|
+
The replay artifact is a self-contained local HTML file. It leads with the review verdict, then lays out risk, review focus, proof gaps, the session timeline, and verification evidence (with inline failure excerpts, so you can see what broke without opening a log file) as a readable flight record:
|
|
65
65
|
|
|
66
|
-

|
|
67
|
+
|
|
68
|
+
A high-resolution still is also available at [`docs/assets/agentflight-replay-timeline.png`](docs/assets/agentflight-replay-timeline.png).
|
|
67
69
|
|
|
68
70
|
## Why This Exists
|
|
69
71
|
|
|
@@ -178,6 +180,7 @@ The current AgentFlight release supports:
|
|
|
178
180
|
- proof gap detection and review readiness recommendations
|
|
179
181
|
- configurable generated/internal changed-file filters
|
|
180
182
|
- verification evidence capture with `agentflight verify`
|
|
183
|
+
- inline failure excerpts in the replay and report, so failures are visible without opening evidence files
|
|
181
184
|
- session events
|
|
182
185
|
- snapshots with `agentflight snapshot --note "..."`
|
|
183
186
|
- Markdown proof reports
|
|
@@ -27,6 +27,18 @@ export interface BuildVerificationSummaryOptions {
|
|
|
27
27
|
export declare function detectVerificationCommands(packageJson: PackageJsonLike): string[];
|
|
28
28
|
export declare function parseCommandLine(command: string): string[];
|
|
29
29
|
export declare function runVerificationCommand(options: RunVerificationCommandOptions): Promise<VerificationRun>;
|
|
30
|
+
export interface OutputExcerptOptions {
|
|
31
|
+
maxLines?: number;
|
|
32
|
+
maxLineLength?: number;
|
|
33
|
+
maxChars?: number;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Build a compact tail of command output for inline display. Prefers stderr when it
|
|
37
|
+
* carries content (crashes, stack traces), otherwise falls back to stdout (most test
|
|
38
|
+
* runners, type checkers, and linters report failures there). Returns undefined when
|
|
39
|
+
* there is nothing meaningful to show.
|
|
40
|
+
*/
|
|
41
|
+
export declare function buildOutputExcerpt(stdout: string, stderr: string, options?: OutputExcerptOptions): string | undefined;
|
|
30
42
|
export declare function readVerificationStdout(repoRoot: string, run: VerificationRun): Promise<string>;
|
|
31
43
|
export declare function buildVerificationSummary(session: AgentFlightSession, options?: BuildVerificationSummaryOptions): VerificationSummary;
|
|
32
44
|
export declare function normalizeCommandString(command: string): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verification.d.ts","sourceRoot":"","sources":["../../src/core/verification.ts"],"names":[],"mappings":"AAGA,OAAO,EAAc,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AAG9D,OAAO,KAAK,EAAE,kBAAkB,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAExF,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,kBAAkB,CAAC;IAC5B,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,GAAG,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;IAC/B,aAAa,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;CAC3C;AAED,MAAM,MAAM,eAAe,GAAG,kBAAkB,GAAG,sBAAsB,GAAG,SAAS,GAAG,SAAS,CAAC;AAElG,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,eAAe,EAAE,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,SAAS,EAAE,eAAe,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,+BAA+B;IAC9C,iBAAiB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,SAAS,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;CACnC;AAED,wBAAgB,0BAA0B,CAAC,WAAW,EAAE,eAAe,GAAG,MAAM,EAAE,CAUjF;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CA+C1D;AAED,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,6BAA6B,GACrC,OAAO,CAAC,eAAe,CAAC,
|
|
1
|
+
{"version":3,"file":"verification.d.ts","sourceRoot":"","sources":["../../src/core/verification.ts"],"names":[],"mappings":"AAGA,OAAO,EAAc,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AAG9D,OAAO,KAAK,EAAE,kBAAkB,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAExF,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,kBAAkB,CAAC;IAC5B,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,GAAG,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;IAC/B,aAAa,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;CAC3C;AAED,MAAM,MAAM,eAAe,GAAG,kBAAkB,GAAG,sBAAsB,GAAG,SAAS,GAAG,SAAS,CAAC;AAElG,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,eAAe,EAAE,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,SAAS,EAAE,eAAe,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,+BAA+B;IAC9C,iBAAiB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,SAAS,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;CACnC;AAED,wBAAgB,0BAA0B,CAAC,WAAW,EAAE,eAAe,GAAG,MAAM,EAAE,CAUjF;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CA+C1D;AAED,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,6BAA6B,GACrC,OAAO,CAAC,eAAe,CAAC,CAyC1B;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,oBAAyB,GACjC,MAAM,GAAG,SAAS,CAoBpB;AAED,wBAAsB,sBAAsB,CAC1C,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,eAAe,GACnB,OAAO,CAAC,MAAM,CAAC,CAEjB;AAED,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,kBAAkB,EAC3B,OAAO,GAAE,+BAAoC,GAC5C,mBAAmB,CAyBrB;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAG9D;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAEpD"}
|
|
@@ -81,7 +81,8 @@ export async function runVerificationCommand(options) {
|
|
|
81
81
|
const finishedAt = now();
|
|
82
82
|
await writeTextFileSafe(join(options.repoRoot, stdoutPath), result.stdout, { overwrite: true });
|
|
83
83
|
await writeTextFileSafe(join(options.repoRoot, stderrPath), result.stderr, { overwrite: true });
|
|
84
|
-
|
|
84
|
+
const outputExcerpt = buildOutputExcerpt(result.stdout, result.stderr);
|
|
85
|
+
const run = {
|
|
85
86
|
command: formatCommand(options.commandArgs),
|
|
86
87
|
startedAt: startedAt.toISOString(),
|
|
87
88
|
finishedAt: finishedAt.toISOString(),
|
|
@@ -91,6 +92,33 @@ export async function runVerificationCommand(options) {
|
|
|
91
92
|
stdoutPath,
|
|
92
93
|
stderrPath
|
|
93
94
|
};
|
|
95
|
+
if (outputExcerpt !== undefined)
|
|
96
|
+
run.outputExcerpt = outputExcerpt;
|
|
97
|
+
return run;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Build a compact tail of command output for inline display. Prefers stderr when it
|
|
101
|
+
* carries content (crashes, stack traces), otherwise falls back to stdout (most test
|
|
102
|
+
* runners, type checkers, and linters report failures there). Returns undefined when
|
|
103
|
+
* there is nothing meaningful to show.
|
|
104
|
+
*/
|
|
105
|
+
export function buildOutputExcerpt(stdout, stderr, options = {}) {
|
|
106
|
+
const maxLines = options.maxLines ?? 14;
|
|
107
|
+
const maxLineLength = options.maxLineLength ?? 200;
|
|
108
|
+
const maxChars = options.maxChars ?? 1400;
|
|
109
|
+
const source = stderr.trim().length > 0 ? stderr : stdout;
|
|
110
|
+
const trimmed = source.replace(/\s+$/u, "");
|
|
111
|
+
if (trimmed.length === 0)
|
|
112
|
+
return undefined;
|
|
113
|
+
const lines = trimmed
|
|
114
|
+
.split("\n")
|
|
115
|
+
.slice(-maxLines)
|
|
116
|
+
.map((line) => (line.length > maxLineLength ? `${line.slice(0, maxLineLength)}…` : line));
|
|
117
|
+
let excerpt = lines.join("\n");
|
|
118
|
+
if (excerpt.length > maxChars) {
|
|
119
|
+
excerpt = `…${excerpt.slice(excerpt.length - maxChars)}`;
|
|
120
|
+
}
|
|
121
|
+
return excerpt;
|
|
94
122
|
}
|
|
95
123
|
export async function readVerificationStdout(repoRoot, run) {
|
|
96
124
|
return readFile(join(repoRoot, run.stdoutPath), "utf8");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verification.js","sourceRoot":"","sources":["../../src/core/verification.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"verification.js","sourceRoot":"","sources":["../../src/core/verification.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
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,
|
|
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,CAyY/D"}
|
|
@@ -1,111 +1,355 @@
|
|
|
1
1
|
export function renderHtmlReplay(input) {
|
|
2
|
-
const risk = input.riskBadges[0] ?? "unknown";
|
|
3
2
|
const readiness = input.reviewReadiness ?? "Unknown";
|
|
3
|
+
const verdict = classifyReadiness(readiness);
|
|
4
4
|
return `<!doctype html>
|
|
5
5
|
<html lang="en">
|
|
6
6
|
<head>
|
|
7
7
|
<meta charset="utf-8">
|
|
8
8
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
9
|
-
<title>AgentFlight
|
|
9
|
+
<title>AgentFlight Record ${escapeHtml(input.sessionId)}</title>
|
|
10
10
|
<style>
|
|
11
11
|
:root {
|
|
12
12
|
color-scheme: light;
|
|
13
|
-
|
|
14
|
-
--
|
|
15
|
-
|
|
16
|
-
--
|
|
17
|
-
--
|
|
18
|
-
--
|
|
19
|
-
--
|
|
20
|
-
--
|
|
21
|
-
--
|
|
22
|
-
--
|
|
23
|
-
--
|
|
24
|
-
--
|
|
25
|
-
|
|
26
|
-
--
|
|
27
|
-
--
|
|
28
|
-
--
|
|
29
|
-
--
|
|
13
|
+
--sans: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
|
|
14
|
+
--mono: ui-monospace, SFMono-Regular, "SF Mono", "JetBrains Mono", Consolas, "Liberation Mono", monospace;
|
|
15
|
+
|
|
16
|
+
--bg: oklch(0.984 0.004 255);
|
|
17
|
+
--paper: oklch(0.997 0.002 255);
|
|
18
|
+
--ink: oklch(0.265 0.018 258);
|
|
19
|
+
--chrome: oklch(0.505 0.022 258);
|
|
20
|
+
--faint: oklch(0.585 0.02 258);
|
|
21
|
+
--rule: oklch(0.905 0.008 258);
|
|
22
|
+
--rule-strong: oklch(0.81 0.014 258);
|
|
23
|
+
--soft: oklch(0.957 0.006 258);
|
|
24
|
+
--accent: oklch(0.5 0.092 262);
|
|
25
|
+
|
|
26
|
+
--ok: oklch(0.5 0.088 152);
|
|
27
|
+
--ok-bg: oklch(0.965 0.022 152);
|
|
28
|
+
--warn: oklch(0.49 0.1 74);
|
|
29
|
+
--warn-bg: oklch(0.964 0.034 78);
|
|
30
|
+
--danger: oklch(0.515 0.158 27);
|
|
31
|
+
--danger-bg: oklch(0.962 0.026 27);
|
|
30
32
|
}
|
|
31
33
|
|
|
32
34
|
* { box-sizing: border-box; }
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
.
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
.
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
.
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
.
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
.
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
35
|
+
html { -webkit-text-size-adjust: 100%; }
|
|
36
|
+
body {
|
|
37
|
+
margin: 0;
|
|
38
|
+
background: var(--bg);
|
|
39
|
+
color: var(--ink);
|
|
40
|
+
font-family: var(--sans);
|
|
41
|
+
font-size: 15px;
|
|
42
|
+
line-height: 1.6;
|
|
43
|
+
-webkit-font-smoothing: antialiased;
|
|
44
|
+
text-rendering: optimizeLegibility;
|
|
45
|
+
}
|
|
46
|
+
main { max-width: 1040px; margin: 0 auto; padding: 56px 32px 64px; }
|
|
47
|
+
p { max-width: 70ch; margin: 0; }
|
|
48
|
+
a { color: var(--accent); }
|
|
49
|
+
|
|
50
|
+
/* technical chrome: mono labels, section markers, metadata */
|
|
51
|
+
.label {
|
|
52
|
+
font-family: var(--mono);
|
|
53
|
+
font-size: 11px;
|
|
54
|
+
font-weight: 600;
|
|
55
|
+
letter-spacing: 0.13em;
|
|
56
|
+
text-transform: uppercase;
|
|
57
|
+
color: var(--chrome);
|
|
58
|
+
}
|
|
59
|
+
.mono { font-family: var(--mono); font-variant-numeric: tabular-nums; }
|
|
60
|
+
|
|
61
|
+
/* masthead */
|
|
62
|
+
.masthead {
|
|
63
|
+
display: grid;
|
|
64
|
+
grid-template-columns: minmax(0, 1fr) auto;
|
|
65
|
+
gap: 40px;
|
|
66
|
+
align-items: end;
|
|
67
|
+
padding-bottom: 26px;
|
|
68
|
+
border-bottom: 2px solid var(--ink);
|
|
69
|
+
}
|
|
70
|
+
.masthead-id .label { display: block; margin-bottom: 14px; }
|
|
71
|
+
h1 {
|
|
72
|
+
font-size: clamp(26px, 3.2vw, 33px);
|
|
73
|
+
line-height: 1.12;
|
|
74
|
+
letter-spacing: -0.014em;
|
|
75
|
+
font-weight: 640;
|
|
76
|
+
margin: 0 0 14px;
|
|
77
|
+
max-width: 24ch;
|
|
78
|
+
text-wrap: balance;
|
|
79
|
+
}
|
|
80
|
+
.ident {
|
|
81
|
+
font-family: var(--mono);
|
|
82
|
+
font-size: 12.5px;
|
|
83
|
+
color: var(--chrome);
|
|
84
|
+
display: flex;
|
|
85
|
+
flex-wrap: wrap;
|
|
86
|
+
gap: 4px 14px;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/* verdict: the single most important signal, calm unless attention is due */
|
|
90
|
+
.verdict { text-align: right; max-width: 340px; }
|
|
91
|
+
.verdict .label { display: block; margin-bottom: 8px; }
|
|
92
|
+
.verdict-line { display: inline-flex; align-items: center; gap: 9px; font-size: 17px; font-weight: 620; letter-spacing: -0.01em; }
|
|
93
|
+
.verdict-mark { width: 9px; height: 9px; border-radius: 2px; flex: none; background: var(--rule-strong); }
|
|
94
|
+
.verdict--ok .verdict-mark { background: var(--ok); }
|
|
95
|
+
.verdict--attention { color: var(--warn); }
|
|
96
|
+
.verdict--attention .verdict-mark { background: var(--warn); }
|
|
97
|
+
.verdict--blocked { color: var(--danger); }
|
|
98
|
+
.verdict--blocked .verdict-mark { background: var(--danger); }
|
|
99
|
+
.flags { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 6px; margin-top: 12px; }
|
|
100
|
+
.flag {
|
|
101
|
+
font-family: var(--mono);
|
|
102
|
+
font-size: 11.5px;
|
|
103
|
+
letter-spacing: 0.02em;
|
|
104
|
+
padding: 3px 8px;
|
|
105
|
+
border: 1px solid var(--rule-strong);
|
|
106
|
+
border-radius: 3px;
|
|
107
|
+
color: var(--chrome);
|
|
108
|
+
background: var(--paper);
|
|
109
|
+
}
|
|
110
|
+
.flag.tone-high { border-color: var(--danger); color: var(--danger); background: var(--danger-bg); }
|
|
111
|
+
.flag.tone-medium { border-color: var(--warn); color: var(--warn); background: var(--warn-bg); }
|
|
112
|
+
|
|
113
|
+
/* readout band: instrument readings, not metric cards.
|
|
114
|
+
Sticks to the top so risk and readiness stay visible on long records. */
|
|
115
|
+
.summary-grid {
|
|
116
|
+
display: flex;
|
|
117
|
+
flex-wrap: wrap;
|
|
118
|
+
gap: 0;
|
|
119
|
+
margin: 0 0 8px;
|
|
120
|
+
border-bottom: 1px solid var(--rule);
|
|
121
|
+
position: sticky;
|
|
122
|
+
top: 0;
|
|
123
|
+
z-index: 5;
|
|
124
|
+
background: var(--bg);
|
|
125
|
+
}
|
|
126
|
+
.reading {
|
|
127
|
+
display: flex;
|
|
128
|
+
flex-direction: column;
|
|
129
|
+
gap: 5px;
|
|
130
|
+
padding: 18px 30px 18px 0;
|
|
131
|
+
margin-right: 30px;
|
|
132
|
+
border-right: 1px solid var(--rule);
|
|
133
|
+
min-width: 0;
|
|
134
|
+
}
|
|
135
|
+
.reading:last-child { border-right: 0; margin-right: 0; }
|
|
136
|
+
.reading-value { font-size: 19px; font-weight: 600; letter-spacing: -0.01em; overflow-wrap: anywhere; }
|
|
137
|
+
.reading-value.tone-high { color: var(--danger); }
|
|
138
|
+
.reading-value.tone-medium { color: var(--warn); }
|
|
139
|
+
|
|
140
|
+
/* sections */
|
|
141
|
+
.section { padding-top: 38px; }
|
|
142
|
+
.section-head {
|
|
143
|
+
display: flex;
|
|
144
|
+
align-items: baseline;
|
|
145
|
+
justify-content: space-between;
|
|
146
|
+
gap: 16px;
|
|
147
|
+
padding-bottom: 12px;
|
|
148
|
+
margin-bottom: 18px;
|
|
149
|
+
border-bottom: 1px solid var(--rule);
|
|
150
|
+
}
|
|
151
|
+
.section-head h2 { all: unset; }
|
|
152
|
+
.section-head .label { display: block; }
|
|
153
|
+
.count { font-family: var(--mono); font-size: 12px; color: var(--faint); font-variant-numeric: tabular-nums; }
|
|
154
|
+
.empty { color: var(--faint); font-size: 14px; }
|
|
155
|
+
|
|
156
|
+
/* timeline as a log spine */
|
|
157
|
+
.timeline { display: grid; }
|
|
158
|
+
.timeline-item {
|
|
159
|
+
display: grid;
|
|
160
|
+
grid-template-columns: minmax(132px, 0.28fr) 18px minmax(0, 1fr);
|
|
161
|
+
gap: 16px;
|
|
162
|
+
padding: 4px 0 18px;
|
|
163
|
+
}
|
|
164
|
+
.timeline-time { font-family: var(--mono); font-variant-numeric: tabular-nums; font-size: 12px; color: var(--faint); line-height: 1.7; overflow-wrap: anywhere; }
|
|
165
|
+
.timeline-rail { position: relative; }
|
|
166
|
+
.timeline-rail::before {
|
|
167
|
+
content: "";
|
|
168
|
+
position: absolute;
|
|
169
|
+
left: 50%;
|
|
170
|
+
top: 0;
|
|
171
|
+
bottom: 0;
|
|
172
|
+
width: 1px;
|
|
173
|
+
transform: translateX(-50%);
|
|
174
|
+
background: var(--rule-strong);
|
|
175
|
+
}
|
|
176
|
+
.timeline-item:first-child .timeline-rail::before { top: 11px; }
|
|
177
|
+
.timeline-item:last-child .timeline-rail::before { bottom: auto; height: 11px; }
|
|
178
|
+
.timeline-node {
|
|
179
|
+
position: absolute;
|
|
180
|
+
left: 50%;
|
|
181
|
+
top: 11px;
|
|
182
|
+
width: 9px;
|
|
183
|
+
height: 9px;
|
|
184
|
+
border-radius: 999px;
|
|
185
|
+
transform: translate(-50%, -50%);
|
|
186
|
+
background: var(--paper);
|
|
187
|
+
border: 1.5px solid var(--rule-strong);
|
|
188
|
+
}
|
|
189
|
+
.node--start { background: var(--ink); border-color: var(--ink); }
|
|
190
|
+
.node--ok { background: var(--ok); border-color: var(--ok); }
|
|
191
|
+
.node--fail { background: var(--danger-bg); border-color: var(--danger); border-width: 2px; }
|
|
192
|
+
.node--snapshot { background: var(--paper); border-color: var(--accent); }
|
|
193
|
+
.node--report { background: var(--accent); border-color: var(--accent); }
|
|
194
|
+
.timeline-title { font-size: 14.5px; font-weight: 600; line-height: 1.4; }
|
|
195
|
+
.timeline-type { font-family: var(--mono); font-size: 11.5px; color: var(--faint); margin-top: 3px; letter-spacing: 0.01em; }
|
|
196
|
+
.timeline-message { margin-top: 7px; font-size: 14px; color: var(--ink); }
|
|
197
|
+
|
|
198
|
+
/* records: review focus + file groups */
|
|
199
|
+
.records { display: grid; }
|
|
200
|
+
.record {
|
|
201
|
+
display: grid;
|
|
202
|
+
grid-template-columns: 168px minmax(0, 1fr);
|
|
203
|
+
gap: 18px;
|
|
204
|
+
padding: 14px 0;
|
|
205
|
+
border-top: 1px solid var(--rule);
|
|
206
|
+
}
|
|
207
|
+
.record:first-child { border-top: 0; }
|
|
208
|
+
.record-key { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
|
|
209
|
+
.record-rank { font-family: var(--mono); font-size: 12px; color: var(--faint); }
|
|
210
|
+
.record-cat { font-size: 13.5px; font-weight: 650; }
|
|
211
|
+
.record-body { min-width: 0; display: flex; flex-direction: column; gap: 6px; }
|
|
212
|
+
.reason { color: var(--chrome); font-size: 13.5px; line-height: 1.55; }
|
|
213
|
+
.reason-strong { color: var(--ink); }
|
|
214
|
+
.tags { display: flex; flex-wrap: wrap; gap: 6px; }
|
|
215
|
+
|
|
216
|
+
/* verification evidence ledger */
|
|
217
|
+
.ledger { display: grid; }
|
|
218
|
+
.entry {
|
|
219
|
+
display: grid;
|
|
220
|
+
grid-template-columns: 78px minmax(0, 1fr);
|
|
221
|
+
gap: 18px;
|
|
222
|
+
align-items: start;
|
|
223
|
+
padding: 15px 0;
|
|
224
|
+
border-top: 1px solid var(--rule);
|
|
225
|
+
}
|
|
226
|
+
.entry:first-child { border-top: 0; }
|
|
227
|
+
.stamp {
|
|
228
|
+
font-family: var(--mono);
|
|
229
|
+
font-size: 12px;
|
|
230
|
+
font-weight: 700;
|
|
231
|
+
letter-spacing: 0.08em;
|
|
232
|
+
padding-top: 1px;
|
|
233
|
+
}
|
|
234
|
+
.stamp--passed { color: var(--ok); }
|
|
235
|
+
.stamp--failed { color: var(--danger); }
|
|
236
|
+
.entry-body { min-width: 0; display: flex; flex-direction: column; gap: 7px; }
|
|
237
|
+
.entry-cmd { font-family: var(--mono); font-size: 13.5px; color: var(--ink); overflow-wrap: anywhere; }
|
|
238
|
+
.entry-meta { font-family: var(--mono); font-variant-numeric: tabular-nums; font-size: 12px; color: var(--faint); }
|
|
239
|
+
details { font-size: 12.5px; }
|
|
240
|
+
summary { color: var(--chrome); cursor: pointer; font-family: var(--mono); font-size: 12px; letter-spacing: 0.02em; width: max-content; }
|
|
241
|
+
summary:hover { color: var(--ink); }
|
|
242
|
+
.paths { font-family: var(--mono); font-size: 12px; color: var(--faint); line-height: 1.7; margin-top: 7px; overflow-wrap: anywhere; }
|
|
243
|
+
.excerpt {
|
|
244
|
+
font-family: var(--mono);
|
|
245
|
+
font-size: 12px;
|
|
246
|
+
line-height: 1.55;
|
|
247
|
+
margin: 2px 0 0;
|
|
248
|
+
padding: 11px 13px;
|
|
249
|
+
background: var(--soft);
|
|
250
|
+
border: 1px solid var(--rule);
|
|
251
|
+
border-radius: 5px;
|
|
252
|
+
color: var(--ink);
|
|
253
|
+
white-space: pre-wrap;
|
|
254
|
+
overflow-wrap: anywhere;
|
|
255
|
+
max-height: 220px;
|
|
256
|
+
overflow: auto;
|
|
257
|
+
}
|
|
258
|
+
.excerpt--failed { background: var(--danger-bg); border-color: var(--danger); color: oklch(0.4 0.1 27); }
|
|
259
|
+
|
|
260
|
+
/* changed file list */
|
|
261
|
+
.files { columns: 2; column-gap: 36px; margin: 0; padding: 0; list-style: none; }
|
|
262
|
+
.files li { break-inside: avoid; margin: 0 0 8px; }
|
|
263
|
+
|
|
264
|
+
/* gaps + recommendation callout */
|
|
265
|
+
.gaps { list-style: none; margin: 0; padding: 0; display: grid; gap: 10px; }
|
|
266
|
+
.gaps li { display: grid; grid-template-columns: 84px minmax(0, 1fr); gap: 14px; align-items: baseline; font-size: 14px; }
|
|
267
|
+
.gap-sev { font-family: var(--mono); font-size: 11px; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; color: var(--chrome); }
|
|
268
|
+
.gap-sev.sev-blocking { color: var(--danger); }
|
|
269
|
+
.gap-sev.sev-warning { color: var(--warn); }
|
|
270
|
+
|
|
271
|
+
.callout {
|
|
272
|
+
margin-top: 22px;
|
|
273
|
+
padding: 18px 20px;
|
|
274
|
+
background: var(--soft);
|
|
275
|
+
border: 1px solid var(--rule);
|
|
276
|
+
border-radius: 6px;
|
|
277
|
+
}
|
|
278
|
+
.callout-state { font-weight: 650; font-size: 15px; }
|
|
279
|
+
.callout-reason { color: var(--chrome); font-size: 14px; margin-top: 4px; line-height: 1.55; }
|
|
280
|
+
.callout-next { margin-top: 10px; font-family: var(--mono); font-size: 13px; }
|
|
281
|
+
.callout-next .label { display: inline; margin-right: 8px; }
|
|
282
|
+
|
|
283
|
+
code {
|
|
284
|
+
font-family: var(--mono);
|
|
285
|
+
font-size: 0.92em;
|
|
286
|
+
background: var(--soft);
|
|
287
|
+
border: 1px solid var(--rule);
|
|
288
|
+
border-radius: 4px;
|
|
289
|
+
padding: 1px 5px;
|
|
290
|
+
overflow-wrap: anywhere;
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
footer {
|
|
294
|
+
margin-top: 52px;
|
|
295
|
+
padding-top: 18px;
|
|
296
|
+
border-top: 1px solid var(--rule);
|
|
297
|
+
font-family: var(--mono);
|
|
298
|
+
font-size: 11.5px;
|
|
299
|
+
letter-spacing: 0.04em;
|
|
300
|
+
color: var(--faint);
|
|
301
|
+
display: flex;
|
|
302
|
+
justify-content: space-between;
|
|
303
|
+
gap: 16px;
|
|
304
|
+
flex-wrap: wrap;
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
@media (max-width: 820px) {
|
|
308
|
+
main { padding: 36px 20px 48px; }
|
|
309
|
+
.masthead { grid-template-columns: 1fr; gap: 24px; align-items: start; }
|
|
310
|
+
.verdict { text-align: left; max-width: none; }
|
|
311
|
+
.verdict .flags { justify-content: flex-start; }
|
|
312
|
+
.reading { padding-right: 22px; margin-right: 22px; }
|
|
313
|
+
.timeline-item, .record, .entry { grid-template-columns: 1fr; gap: 6px; }
|
|
314
|
+
.timeline-rail { display: none; }
|
|
315
|
+
.files { columns: 1; }
|
|
316
|
+
.gaps li { grid-template-columns: 1fr; gap: 2px; }
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
@media (prefers-reduced-motion: reduce) {
|
|
320
|
+
* { scroll-behavior: auto; }
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
/* Print: a clean evidence record for PDF handoffs and incident reconstruction. */
|
|
324
|
+
@media print {
|
|
325
|
+
:root { --bg: #fff; --paper: #fff; }
|
|
326
|
+
body { font-size: 11pt; }
|
|
327
|
+
main { max-width: none; padding: 0; }
|
|
328
|
+
.summary-grid { position: static; }
|
|
329
|
+
.section { padding-top: 20px; }
|
|
330
|
+
.section, .record, .entry, .timeline-item, .callout, .excerpt { break-inside: avoid; }
|
|
331
|
+
details { display: none; }
|
|
332
|
+
.excerpt { max-height: none; overflow: visible; }
|
|
333
|
+
a { color: inherit; text-decoration: none; }
|
|
334
|
+
* { -webkit-print-color-adjust: exact; print-color-adjust: exact; }
|
|
94
335
|
}
|
|
95
336
|
</style>
|
|
96
337
|
</head>
|
|
97
338
|
<body>
|
|
98
339
|
<main>
|
|
99
|
-
<header>
|
|
100
|
-
<div>
|
|
101
|
-
<
|
|
340
|
+
<header class="masthead">
|
|
341
|
+
<div class="masthead-id">
|
|
342
|
+
<span class="label">AgentFlight · Flight Record</span>
|
|
102
343
|
<h1>${escapeHtml(input.task)}</h1>
|
|
103
|
-
<div class="
|
|
104
|
-
|
|
344
|
+
<div class="ident">
|
|
345
|
+
<span>${escapeHtml(input.sessionId)}</span>
|
|
346
|
+
<span>started ${escapeHtml(input.startedAt)}</span>
|
|
347
|
+
</div>
|
|
105
348
|
</div>
|
|
106
|
-
<div class="
|
|
107
|
-
|
|
108
|
-
|
|
349
|
+
<div class="verdict verdict--${verdict.tone}">
|
|
350
|
+
<span class="label">Review readiness</span>
|
|
351
|
+
<span class="verdict-line"><span class="verdict-mark" aria-hidden="true"></span>${escapeHtml(readiness)}</span>
|
|
352
|
+
<div class="flags">${input.riskBadges.map((badge) => renderFlag(badge)).join("")}</div>
|
|
109
353
|
</div>
|
|
110
354
|
</header>
|
|
111
355
|
|
|
@@ -114,42 +358,34 @@ export function renderHtmlReplay(input) {
|
|
|
114
358
|
${renderReview(input.review)}
|
|
115
359
|
|
|
116
360
|
<section class="section">
|
|
117
|
-
<div class="section-
|
|
118
|
-
<h2>Timeline</h2>
|
|
119
|
-
<div class="meta">${escapeHtml(String(input.timeline.length))} events</div>
|
|
120
|
-
</div>
|
|
361
|
+
<div class="section-head"><h2 class="label">Timeline</h2><span class="count">${escapeHtml(String(input.timeline.length))} events</span></div>
|
|
121
362
|
${renderTimeline(input.timeline)}
|
|
122
363
|
</section>
|
|
123
364
|
|
|
124
365
|
<section class="section">
|
|
125
|
-
<div class="section-
|
|
126
|
-
<h2>Changed File Groups</h2>
|
|
127
|
-
<div class="meta">${escapeHtml(String(input.changedFileGroups?.length ?? 0))} groups</div>
|
|
128
|
-
</div>
|
|
366
|
+
<div class="section-head"><h2 class="label">Changed File Groups</h2><span class="count">${escapeHtml(String(input.changedFileGroups?.length ?? 0))} groups</span></div>
|
|
129
367
|
${renderFileGroups(input.changedFileGroups ?? [])}
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
</div>
|
|
368
|
+
</section>
|
|
369
|
+
|
|
370
|
+
<section class="section">
|
|
371
|
+
<div class="section-head"><h2 class="label">Changed Files</h2><span class="count">${escapeHtml(String(input.changedFiles.length))} files</span></div>
|
|
134
372
|
${renderFileList(input.changedFiles)}
|
|
135
373
|
</section>
|
|
136
374
|
|
|
137
375
|
<section class="section">
|
|
138
|
-
<div class="section-
|
|
139
|
-
<h2>Verification Evidence</h2>
|
|
140
|
-
<div class="meta">${escapeHtml(String(input.verificationEvidence.length))} runs</div>
|
|
141
|
-
</div>
|
|
376
|
+
<div class="section-head"><h2 class="label">Verification Evidence</h2><span class="count">${escapeHtml(String(input.verificationEvidence.length))} runs</span></div>
|
|
142
377
|
${renderVerification(input.verificationEvidence)}
|
|
143
378
|
</section>
|
|
144
379
|
|
|
145
380
|
<section class="section">
|
|
146
|
-
<div class="section-
|
|
147
|
-
|
|
148
|
-
</div>
|
|
149
|
-
<div class="recommendation">${escapeHtml(input.recommendation)}</div>
|
|
381
|
+
<div class="section-head"><h2 class="label">Recommendation</h2></div>
|
|
382
|
+
<p>${escapeHtml(input.recommendation)}</p>
|
|
150
383
|
</section>
|
|
151
384
|
|
|
152
|
-
<footer>
|
|
385
|
+
<footer>
|
|
386
|
+
<span>Generated by AgentFlight</span>
|
|
387
|
+
<span>${escapeHtml(input.sessionId)}</span>
|
|
388
|
+
</footer>
|
|
153
389
|
</main>
|
|
154
390
|
</body>
|
|
155
391
|
</html>
|
|
@@ -161,24 +397,25 @@ function renderSummary(input) {
|
|
|
161
397
|
const risk = input.riskBadges[0] ?? "unknown";
|
|
162
398
|
const readiness = input.reviewReadiness ?? "Unknown";
|
|
163
399
|
return `<section class="summary-grid" aria-label="Session summary">
|
|
164
|
-
${
|
|
165
|
-
${
|
|
166
|
-
${
|
|
167
|
-
${
|
|
400
|
+
${renderReading("Risk", risk, riskTone(risk))}
|
|
401
|
+
${renderReading("Changed Files", String(input.changedFiles.length))}
|
|
402
|
+
${renderReading("Proof", `${passed} passed / ${failed} failed`)}
|
|
403
|
+
${renderReading("Readiness", readiness)}
|
|
168
404
|
</section>`;
|
|
169
405
|
}
|
|
170
|
-
function
|
|
171
|
-
|
|
406
|
+
function renderReading(label, value, tone = "") {
|
|
407
|
+
const toneClass = tone ? ` tone-${tone}` : "";
|
|
408
|
+
return `<div class="reading"><span class="label">${escapeHtml(label)}</span><span class="reading-value${toneClass}">${escapeHtml(value)}</span></div>`;
|
|
172
409
|
}
|
|
173
410
|
function renderTimeline(items) {
|
|
174
411
|
if (items.length === 0)
|
|
175
|
-
return "
|
|
412
|
+
return `<p class="empty">No timeline events recorded.</p>`;
|
|
176
413
|
return `<div class="timeline">${items
|
|
177
414
|
.map((item) => `<div class="timeline-item">
|
|
178
415
|
<div class="timeline-time">${escapeHtml(item.timestamp)}</div>
|
|
179
|
-
<div class="timeline-
|
|
416
|
+
<div class="timeline-rail"><span class="timeline-node ${nodeClass(item.type)}" aria-hidden="true"></span></div>
|
|
180
417
|
<div class="timeline-body">
|
|
181
|
-
<
|
|
418
|
+
<div class="timeline-title">${escapeHtml(item.title)}</div>
|
|
182
419
|
<div class="timeline-type">${escapeHtml(item.type)}</div>
|
|
183
420
|
${item.message ? `<div class="timeline-message">${escapeHtml(item.message)}</div>` : ""}
|
|
184
421
|
</div>
|
|
@@ -189,79 +426,107 @@ function renderReview(review) {
|
|
|
189
426
|
if (!review)
|
|
190
427
|
return "";
|
|
191
428
|
return `<section class="section">
|
|
192
|
-
<div class="section-
|
|
193
|
-
<h2>Review Focus</h2>
|
|
194
|
-
<div class="meta">${escapeHtml(String(review.focus.length))} files</div>
|
|
195
|
-
</div>
|
|
429
|
+
<div class="section-head"><h2 class="label">Review Focus</h2><span class="count">${escapeHtml(String(review.focus.length))} files</span></div>
|
|
196
430
|
${renderReviewFocus(review.focus)}
|
|
197
|
-
<div class="section-
|
|
198
|
-
<h2>Proof Gaps</h2>
|
|
199
|
-
<div class="meta">${escapeHtml(String(review.proofGaps.length))} gaps</div>
|
|
200
|
-
</div>
|
|
431
|
+
<div class="section-head" style="margin-top: 32px;"><h2 class="label">Proof Gaps</h2><span class="count">${escapeHtml(String(review.proofGaps.length))} gaps</span></div>
|
|
201
432
|
${renderProofGaps(review.proofGaps)}
|
|
202
|
-
<div class="
|
|
203
|
-
<
|
|
204
|
-
|
|
205
|
-
Next
|
|
433
|
+
<div class="callout">
|
|
434
|
+
<div class="callout-state">${escapeHtml(review.readiness.label)}</div>
|
|
435
|
+
<div class="callout-reason">${escapeHtml(review.readiness.reason)}</div>
|
|
436
|
+
<div class="callout-next"><span class="label">Next</span>${escapeHtml(review.readiness.nextAction)}</div>
|
|
206
437
|
</div>
|
|
207
438
|
</section>`;
|
|
208
439
|
}
|
|
209
440
|
function renderReviewFocus(items) {
|
|
210
441
|
if (items.length === 0)
|
|
211
|
-
return "
|
|
212
|
-
return `<div class="
|
|
213
|
-
.map((item) => `<div class="
|
|
442
|
+
return `<p class="empty">No changed files to review.</p>`;
|
|
443
|
+
return `<div class="records">${items
|
|
444
|
+
.map((item) => `<div class="record"><div class="record-key"><span class="record-rank">#${escapeHtml(String(item.rank))}</span><span class="record-cat">${escapeHtml(item.category)}</span></div><div class="record-body"><code>${escapeHtml(item.file)}</code><div class="reason"><span class="reason-strong">Why:</span> ${escapeHtml(item.reasons.join("; "))}</div><div class="reason">${escapeHtml(item.suggestedReviewerFocus)}</div>${item.suggestedCommand ? `<div class="reason">Suggested proof: <code>${escapeHtml(item.suggestedCommand)}</code></div>` : ""}</div></div>`)
|
|
214
445
|
.join("")}</div>`;
|
|
215
446
|
}
|
|
216
447
|
function renderProofGaps(gaps) {
|
|
217
448
|
if (gaps.length === 0)
|
|
218
|
-
return "
|
|
219
|
-
return `<ul>${gaps
|
|
220
|
-
.map((gap) => `<li><
|
|
449
|
+
return `<p class="empty">No proof gaps detected.</p>`;
|
|
450
|
+
return `<ul class="gaps">${gaps
|
|
451
|
+
.map((gap) => `<li><span class="gap-sev sev-${escapeHtml(gap.severity.toLowerCase())}">${escapeHtml(gap.severity)}</span><span>${escapeHtml(gap.message)}${gap.suggestedCommand ? ` <code>agentflight verify -- ${escapeHtml(gap.suggestedCommand)}</code>` : ""}</span></li>`)
|
|
221
452
|
.join("")}</ul>`;
|
|
222
453
|
}
|
|
223
454
|
function renderFileGroups(groups) {
|
|
224
455
|
if (groups.length === 0)
|
|
225
|
-
return "
|
|
226
|
-
return `<div class="
|
|
227
|
-
.map((group) => `<div class="
|
|
456
|
+
return `<p class="empty">No changed file groups detected.</p>`;
|
|
457
|
+
return `<div class="records">${groups
|
|
458
|
+
.map((group) => `<div class="record"><div class="record-key"><span class="record-cat">${escapeHtml(group.category)}</span></div><div class="record-body"><div class="tags">${group.files.map((file) => `<code>${escapeHtml(file)}</code>`).join("")}</div></div></div>`)
|
|
228
459
|
.join("")}</div>`;
|
|
229
460
|
}
|
|
230
461
|
function renderFileList(files) {
|
|
231
462
|
if (files.length === 0)
|
|
232
|
-
return "
|
|
233
|
-
return `<ul class="
|
|
463
|
+
return `<p class="empty">No changed files detected.</p>`;
|
|
464
|
+
return `<ul class="files">${files.map((file) => `<li><code>${escapeHtml(file)}</code></li>`).join("")}</ul>`;
|
|
234
465
|
}
|
|
235
466
|
function renderVerification(evidence) {
|
|
236
467
|
if (evidence.length === 0)
|
|
237
|
-
return "
|
|
238
|
-
return `<div class="
|
|
239
|
-
.map((item) => `<div class="
|
|
240
|
-
<div class="
|
|
241
|
-
<div class="
|
|
242
|
-
<
|
|
243
|
-
<div class="meta">
|
|
468
|
+
return `<p class="empty">No verification evidence recorded.</p>`;
|
|
469
|
+
return `<div class="ledger">${evidence
|
|
470
|
+
.map((item) => `<div class="entry">
|
|
471
|
+
<div class="stamp stamp--${escapeHtml(item.status)}">${escapeHtml(stampText(item.status))}</div>
|
|
472
|
+
<div class="entry-body">
|
|
473
|
+
<div class="entry-cmd">${escapeHtml(item.command)}</div>
|
|
474
|
+
<div class="entry-meta">exit ${escapeHtml(String(item.exitCode ?? "unknown"))} · ${escapeHtml(String(item.durationMs))}ms</div>
|
|
475
|
+
${item.status === "failed" && item.outputExcerpt ? `<pre class="excerpt excerpt--failed" aria-label="Output excerpt">${escapeHtml(item.outputExcerpt)}</pre>` : ""}
|
|
244
476
|
<details>
|
|
245
477
|
<summary>Evidence files</summary>
|
|
246
|
-
<div class="
|
|
478
|
+
<div class="paths">
|
|
247
479
|
<div>stdout: ${escapeHtml(item.stdoutPath)}</div>
|
|
248
480
|
<div>stderr: ${escapeHtml(item.stderrPath)}</div>
|
|
249
481
|
</div>
|
|
482
|
+
${item.status === "passed" && item.outputExcerpt ? `<pre class="excerpt">${escapeHtml(item.outputExcerpt)}</pre>` : ""}
|
|
250
483
|
</details>
|
|
251
484
|
</div>
|
|
252
485
|
</div>`)
|
|
253
486
|
.join("")}</div>`;
|
|
254
487
|
}
|
|
255
|
-
function
|
|
256
|
-
const normalized = value.toLowerCase()
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
488
|
+
function classifyReadiness(value) {
|
|
489
|
+
const normalized = value.toLowerCase();
|
|
490
|
+
if (normalized.startsWith("ready"))
|
|
491
|
+
return { tone: "ok" };
|
|
492
|
+
if (normalized.includes("not ready") || normalized.includes("block"))
|
|
493
|
+
return { tone: "blocked" };
|
|
494
|
+
if (normalized.includes("needs") || normalized.includes("verif"))
|
|
495
|
+
return { tone: "attention" };
|
|
496
|
+
return { tone: "neutral" };
|
|
497
|
+
}
|
|
498
|
+
function riskTone(value) {
|
|
499
|
+
const normalized = value.toLowerCase();
|
|
500
|
+
if (normalized === "high")
|
|
501
|
+
return "high";
|
|
502
|
+
if (normalized === "medium")
|
|
503
|
+
return "medium";
|
|
504
|
+
return "";
|
|
505
|
+
}
|
|
506
|
+
function renderFlag(value) {
|
|
507
|
+
const tone = riskTone(value);
|
|
508
|
+
const toneClass = tone ? ` tone-${tone}` : "";
|
|
509
|
+
return `<span class="flag${toneClass}">${escapeHtml(value)}</span>`;
|
|
510
|
+
}
|
|
511
|
+
function nodeClass(type) {
|
|
512
|
+
if (type.includes("passed"))
|
|
513
|
+
return "node--ok";
|
|
514
|
+
if (type.includes("failed"))
|
|
515
|
+
return "node--fail";
|
|
516
|
+
if (type.includes("snapshot"))
|
|
517
|
+
return "node--snapshot";
|
|
518
|
+
if (type.includes("session_started"))
|
|
519
|
+
return "node--start";
|
|
520
|
+
if (type.includes("replay") || type.includes("report") || type.includes("resume"))
|
|
521
|
+
return "node--report";
|
|
522
|
+
return "node--default";
|
|
523
|
+
}
|
|
524
|
+
function stampText(status) {
|
|
525
|
+
if (status === "passed")
|
|
526
|
+
return "PASS";
|
|
527
|
+
if (status === "failed")
|
|
528
|
+
return "FAIL";
|
|
529
|
+
return status.toUpperCase();
|
|
265
530
|
}
|
|
266
531
|
function escapeHtml(value) {
|
|
267
532
|
return value
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"html-replay.js","sourceRoot":"","sources":["../../src/renderers/html-replay.ts"],"names":[],"mappings":"AA4BA,MAAM,UAAU,gBAAgB,CAAC,KAAsB;IACrD,MAAM,
|
|
1
|
+
{"version":3,"file":"html-replay.js","sourceRoot":"","sources":["../../src/renderers/html-replay.ts"],"names":[],"mappings":"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"}
|
|
@@ -58,13 +58,24 @@ function renderVerification(input) {
|
|
|
58
58
|
return `No verification evidence recorded.${gaps}${commands}`;
|
|
59
59
|
}
|
|
60
60
|
const evidence = input.verificationEvidence
|
|
61
|
-
.map((run) =>
|
|
61
|
+
.map((run) => {
|
|
62
|
+
const base = `- ${run.command}: ${run.status} (exit ${run.exitCode ?? "unknown"}, ${run.durationMs}ms)\n - stdout: ${run.stdoutPath}\n - stderr: ${run.stderrPath}`;
|
|
63
|
+
if (run.status === "failed" && run.outputExcerpt) {
|
|
64
|
+
return `${base}\n - Output excerpt:\n\n${renderExcerptFence(run.outputExcerpt)}`;
|
|
65
|
+
}
|
|
66
|
+
return base;
|
|
67
|
+
})
|
|
62
68
|
.join("\n");
|
|
63
69
|
const gaps = !input.review && input.verificationGaps?.length
|
|
64
70
|
? `\n\nGaps:\n${renderList(input.verificationGaps)}`
|
|
65
71
|
: "";
|
|
66
72
|
return `${evidence}${gaps}`;
|
|
67
73
|
}
|
|
74
|
+
function renderExcerptFence(excerpt) {
|
|
75
|
+
// Use a longer fence if the excerpt itself contains a triple backtick.
|
|
76
|
+
const fence = excerpt.includes("```") ? "````" : "```";
|
|
77
|
+
return `${fence}text\n${excerpt}\n${fence}`;
|
|
78
|
+
}
|
|
68
79
|
function renderTimeline(events) {
|
|
69
80
|
if (events.length === 0)
|
|
70
81
|
return "No timeline events recorded.";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markdown-report.js","sourceRoot":"","sources":["../../src/renderers/markdown-report.ts"],"names":[],"mappings":"AA2BA,MAAM,UAAU,oBAAoB,CAAC,KAA0B;IAC7D,OAAO;;;EAGP,KAAK,CAAC,IAAI;;;gBAGI,KAAK,CAAC,SAAS;aAClB,KAAK,CAAC,SAAS;;;EAG1B,cAAc,CAAC,KAAK,CAAC,cAAc,IAAI,EAAE,CAAC;;;EAG1C,UAAU,CAAC,KAAK,CAAC,YAAY,EAAE,4BAA4B,CAAC;;;WAGnD,KAAK,CAAC,IAAI,CAAC,KAAK;mBACR,KAAK,CAAC,IAAI,CAAC,YAAY;EACxC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;;;EAG9B,kBAAkB,CAAC,KAAK,CAAC;;;EAGzB,iBAAiB,CAAC,KAAK,CAAC;;;EAGxB,eAAe,CAAC,KAAK,CAAC;;;EAGtB,qBAAqB,CAAC,KAAK,CAAC;;;EAG5B,oBAAoB,CAAC,KAAK,CAAC;;;EAG3B,gBAAgB,CAAC,KAAK,CAAC;;;cAGX,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;kBAC9B,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC;;;CAGvD,CAAC;AACF,CAAC;AAED,SAAS,UAAU,CAAC,KAAe,EAAE,KAAK,GAAG,OAAO;IAClD,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,kBAAkB,CAAC,KAA0B;IACpD,IAAI,KAAK,CAAC,oBAAoB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5C,MAAM,QAAQ,GAAG,KAAK,CAAC,oBAAoB,CAAC,MAAM;YAChD,CAAC,CAAC,4BAA4B,UAAU,CAAC,KAAK,CAAC,oBAAoB,CAAC,EAAE;YACtE,CAAC,CAAC,EAAE,CAAC;QACP,MAAM,IAAI,GACR,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,gBAAgB,EAAE,MAAM;YAC7C,CAAC,CAAC,cAAc,UAAU,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE;YACpD,CAAC,CAAC,EAAE,CAAC;QACT,OAAO,qCAAqC,IAAI,GAAG,QAAQ,EAAE,CAAC;IAChE,CAAC;IAED,MAAM,QAAQ,GAAG,KAAK,CAAC,oBAAoB;SACxC,GAAG,
|
|
1
|
+
{"version":3,"file":"markdown-report.js","sourceRoot":"","sources":["../../src/renderers/markdown-report.ts"],"names":[],"mappings":"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"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -97,6 +97,12 @@ export interface VerificationRun {
|
|
|
97
97
|
status: "passed" | "failed";
|
|
98
98
|
stdoutPath: string;
|
|
99
99
|
stderrPath: string;
|
|
100
|
+
/**
|
|
101
|
+
* Short tail of the command output (stderr preferred, else stdout), captured at
|
|
102
|
+
* run time so a reviewer can see what happened without opening the evidence file.
|
|
103
|
+
* Local-only, never uploaded. Omitted when there is no output.
|
|
104
|
+
*/
|
|
105
|
+
outputExcerpt?: string;
|
|
100
106
|
}
|
|
101
107
|
export type VerificationProofKind = "test" | "build" | "typecheck" | "lint" | "install" | "unknown";
|
|
102
108
|
export type ReviewReadinessState = "ready_for_review" | "not_ready_for_review" | "needs_verification" | "blocked_by_failed_verification" | "unknown";
|
|
@@ -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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"}
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agentflight",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"description": "Local-first flight recorder for AI coding agents.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/cli.js",
|
|
@@ -15,6 +15,8 @@
|
|
|
15
15
|
"docs/agentflight_logo/icon.svg",
|
|
16
16
|
"docs/assets/agentflight-cli-demo.svg",
|
|
17
17
|
"docs/assets/agentflight-replay-timeline.png",
|
|
18
|
+
"docs/assets/agentflight-replay-scroll.gif",
|
|
19
|
+
"docs/assets/agentflight-terminal-demo.gif",
|
|
18
20
|
"docs/development/dogfooding.md",
|
|
19
21
|
"docs/development/changed-file-filters.md",
|
|
20
22
|
"docs/development/release.md",
|
|
@@ -35,6 +37,9 @@
|
|
|
35
37
|
"agentflight": "tsx src/cli.ts",
|
|
36
38
|
"projscan": "projscan start --intent \"Build AgentFlight, a local-first flight recorder for AI coding agents\"",
|
|
37
39
|
"agentloopkit:doctor": "agentloopkit doctor",
|
|
40
|
+
"demo:replay": "npm run build && node scripts/demo/capture-replay.mjs",
|
|
41
|
+
"demo:terminal": "vhs docs/marketing/agentflight-terminal-demo.tape",
|
|
42
|
+
"demo:assets": "npm run demo:replay && npm run demo:terminal",
|
|
38
43
|
"verify": "npm run typecheck && npm run lint && npm test && npm run build"
|
|
39
44
|
},
|
|
40
45
|
"repository": {
|
|
@@ -66,10 +71,11 @@
|
|
|
66
71
|
"devDependencies": {
|
|
67
72
|
"@eslint/js": "^10.0.1",
|
|
68
73
|
"@types/node": "^25.9.3",
|
|
69
|
-
"agentloopkit": "^0.
|
|
74
|
+
"agentloopkit": "^0.35.2",
|
|
70
75
|
"eslint": "^10.5.0",
|
|
76
|
+
"playwright": "^1.61.0",
|
|
71
77
|
"prettier": "^3.8.4",
|
|
72
|
-
"projscan": "^4.
|
|
78
|
+
"projscan": "^4.5.0",
|
|
73
79
|
"tsx": "^4.22.4",
|
|
74
80
|
"typescript": "^6.0.3",
|
|
75
81
|
"typescript-eslint": "^8.61.0",
|