agentflight 0.3.1 → 0.3.3

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 CHANGED
@@ -2,6 +2,55 @@
2
2
 
3
3
  All notable AgentFlight changes are documented here.
4
4
 
5
+ ## [0.3.3] - 2026-06-14
6
+
7
+ Patch candidate focused on dogfood findings from published `agentflight@latest` v0.3.2.
8
+
9
+ ### Changed
10
+
11
+ - Improved HTML replay readability with a calmer developer-review layout, clearer timeline rows, cleaner file grouping, and denser verification evidence rows.
12
+ - Moved replay stdout/stderr evidence paths into collapsed native details so proof stays available without dominating the page.
13
+
14
+ ### Fixed
15
+
16
+ - Excluded AgentFlight runtime artifacts from changed-file analysis by default:
17
+ - `.agentflight/sessions/**`
18
+ - `.agentflight/reports/**`
19
+ - `.agentflight/current/**`
20
+ - `.agentflight/evidence/**`
21
+ - Kept `.agentflight/config.json` visible in changed-file analysis because it is user-controlled project configuration, not runtime evidence.
22
+
23
+ ### Documentation
24
+
25
+ - Added `PRODUCT.md` with the confirmed product UI direction: precise, calm, trustworthy.
26
+ - Added `docs/development/v0.3.2-dogfood-findings.md` with dogfood results from AgentFlight, ProjScan, and fifa-predictor.
27
+ - Updated the development log with dogfood, UI polish, and patch verification evidence.
28
+
29
+ ## [0.3.2] - 2026-06-13
30
+
31
+ ### Changed
32
+
33
+ - Added the official AgentFlight logo to the README.
34
+ - Added the Baseframe Labs AgentFlight website link near the top of the README.
35
+ - Added an animated CLI workflow preview before the 60-second workflow.
36
+ - Added a "Watch The Flow" section explaining start -> verify -> snapshot -> status -> report/replay/resume.
37
+ - Updated package homepage to the AgentFlight website page.
38
+ - Expanded packaged assets so npm README logo and animation references resolve.
39
+
40
+ ### Documentation
41
+
42
+ - Updated launch notes with the AgentFlight logo reference.
43
+ - Updated development log with branding and README animation verification.
44
+
45
+ ### Verification
46
+
47
+ - `npm run verify` passed.
48
+ - `npm run format:check` passed.
49
+ - `npm pack --dry-run` passed.
50
+ - `npm audit --audit-level=moderate` found `0 vulnerabilities`.
51
+ - ProjScan preflight passed.
52
+ - AgentLoopKit verification passed.
53
+
5
54
  ## [0.3.1] - 2026-06-13
6
55
 
7
56
  ### Changed
package/README.md CHANGED
@@ -1,9 +1,17 @@
1
1
  # AgentFlight
2
2
 
3
+ <p align="center">
4
+ <a href="https://www.baseframelabs.com/apps/agentflight">
5
+ <img src="docs/agentflight_logo/icon.svg" alt="AgentFlight logo" width="112" />
6
+ </a>
7
+ </p>
8
+
3
9
  See what your coding agent did. Prove it works. Know what to do next.
4
10
 
5
11
  AgentFlight is a local-first flight recorder for AI coding agents from Baseframe Labs. It sits around Codex, Claude Code, Cursor, Windsurf, Gemini CLI, Aider, OpenCode, and similar tools so you can review the session instead of guessing what happened.
6
12
 
13
+ Website: [baseframelabs.com/apps/agentflight](https://www.baseframelabs.com/apps/agentflight)
14
+
7
15
  AgentFlight helps you:
8
16
 
9
17
  - start an AI coding session
@@ -14,7 +22,7 @@ AgentFlight helps you:
14
22
  - generate a local replay timeline
15
23
  - create a resume prompt for the next agent or reviewer
16
24
 
17
- ![AgentFlight replay timeline](docs/assets/agentflight-replay-timeline.png)
25
+ ![Animated AgentFlight CLI workflow](docs/assets/agentflight-cli-demo.svg)
18
26
 
19
27
  ## 60-Second Workflow
20
28
 
@@ -43,6 +51,20 @@ What you get:
43
51
  - `replay` writes a local HTML timeline you can open in a browser.
44
52
  - `resume` writes a Codex/Claude-ready prompt for the next safe step.
45
53
 
54
+ ## Watch The Flow
55
+
56
+ AgentFlight turns a loose AI-agent session into a local proof trail:
57
+
58
+ 1. Start a session before you ask the coding agent to work.
59
+ 2. Capture real verification output with `agentflight verify`.
60
+ 3. Snapshot meaningful checkpoints.
61
+ 4. Read `status` to see changed files, risk, proof, gaps, and next action.
62
+ 5. Generate `report`, `replay`, and `resume` when the work is ready to review or hand off.
63
+
64
+ The replay artifact is a self-contained local HTML file:
65
+
66
+ ![AgentFlight replay timeline](docs/assets/agentflight-replay-timeline.png)
67
+
46
68
  ## Why This Exists
47
69
 
48
70
  AI coding agents move fast. After a few prompts, you can lose track of:
@@ -1 +1 @@
1
- {"version":3,"file":"replay.d.ts","sourceRoot":"","sources":["../../src/commands/replay.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IACpC,GAAG,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;CACxB;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,mBAAmB,CAAC,CAuC9B"}
1
+ {"version":3,"file":"replay.d.ts","sourceRoot":"","sources":["../../src/commands/replay.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IACpC,GAAG,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;CACxB;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,mBAAmB,CAAC,CAyC9B"}
@@ -1,4 +1,5 @@
1
1
  import { writeTextFileSafe } from "../core/fs-safe.js";
2
+ import { filterAgentFlightRuntimePaths } from "../core/changed-files.js";
2
3
  import { listChangedFiles } from "../core/git.js";
3
4
  import { resolveAgentFlightPaths } from "../core/paths.js";
4
5
  import { analyzeRisk } from "../core/risk.js";
@@ -8,7 +9,7 @@ import { renderHtmlReplay } from "../renderers/html-replay.js";
8
9
  import { readCurrentSession } from "./status.js";
9
10
  export async function runReplayCommand(options) {
10
11
  const session = await readCurrentSession(options.repoRoot);
11
- const changedFiles = options.changedFiles ?? (await listChangedFiles(options.repoRoot));
12
+ const changedFiles = filterAgentFlightRuntimePaths(options.changedFiles ?? (await listChangedFiles(options.repoRoot)));
12
13
  const risk = analyzeRisk(changedFiles);
13
14
  const verification = buildVerificationSummary(session, {
14
15
  changedFilesCount: changedFiles.length,
@@ -1 +1 @@
1
- {"version":3,"file":"replay.js","sourceRoot":"","sources":["../../src/commands/replay.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,wBAAwB,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC5F,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAajD,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,OAA6B;IAE7B,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3D,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,CAAC,MAAM,gBAAgB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;IACxF,MAAM,IAAI,GAAG,WAAW,CAAC,YAAY,CAAC,CAAC;IACvC,MAAM,YAAY,GAAG,wBAAwB,CAAC,OAAO,EAAE;QACrD,iBAAiB,EAAE,YAAY,CAAC,MAAM;QACtC,SAAS,EAAE,IAAI,CAAC,KAAK;KACtB,CAAC,CAAC;IACH,MAAM,UAAU,GAAG,GAAG,uBAAuB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC,EAAE,cAAc,CAAC;IACpG,MAAM,cAAc,GAAG,eAAe,CAAC,OAAO,EAAE;QAC9C,IAAI,EAAE,kBAAkB;QACxB,SAAS,EAAE,OAAO,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE;QACpC,KAAK,EAAE,kBAAkB;QACzB,QAAQ,EAAE;YACR,IAAI,EAAE,wBAAwB,OAAO,CAAC,EAAE,cAAc;SACvD;KACF,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,gBAAgB,CAAC;QAC5B,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK;QACxB,SAAS,EAAE,OAAO,CAAC,EAAE;QACrB,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,QAAQ,EAAE,wBAAwB,CAAC,cAAc,CAAC;QAClD,YAAY;QACZ,iBAAiB,EAAE,IAAI,CAAC,UAAU;QAClC,UAAU,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC/E,oBAAoB,EAAE,YAAY,CAAC,IAAI;QACvC,eAAe,EAAE,YAAY,CAAC,SAAS;QACvC,cAAc,EAAE,GAAG,YAAY,CAAC,SAAS,KAAK,qBAAqB,CAAC,YAAY,CAAC,SAAS,EAAE,YAAY,CAAC,UAAU,CAAC,EAAE;KACvH,CAAC,CAAC;IAEH,MAAM,iBAAiB,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/D,MAAM,WAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;IAEpD,OAAO;QACL,MAAM,EAAE;EACV,UAAU;CACX;QACG,UAAU;KACX,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAAC,SAAiB,EAAE,QAAgB;IAChE,IAAI,SAAS,KAAK,kBAAkB,EAAE,CAAC;QACrC,OAAO,8EAA8E,CAAC;IACxF,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"replay.js","sourceRoot":"","sources":["../../src/commands/replay.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,6BAA6B,EAAE,MAAM,0BAA0B,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,wBAAwB,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC5F,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAajD,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,OAA6B;IAE7B,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3D,MAAM,YAAY,GAAG,6BAA6B,CAChD,OAAO,CAAC,YAAY,IAAI,CAAC,MAAM,gBAAgB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CACnE,CAAC;IACF,MAAM,IAAI,GAAG,WAAW,CAAC,YAAY,CAAC,CAAC;IACvC,MAAM,YAAY,GAAG,wBAAwB,CAAC,OAAO,EAAE;QACrD,iBAAiB,EAAE,YAAY,CAAC,MAAM;QACtC,SAAS,EAAE,IAAI,CAAC,KAAK;KACtB,CAAC,CAAC;IACH,MAAM,UAAU,GAAG,GAAG,uBAAuB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC,EAAE,cAAc,CAAC;IACpG,MAAM,cAAc,GAAG,eAAe,CAAC,OAAO,EAAE;QAC9C,IAAI,EAAE,kBAAkB;QACxB,SAAS,EAAE,OAAO,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE;QACpC,KAAK,EAAE,kBAAkB;QACzB,QAAQ,EAAE;YACR,IAAI,EAAE,wBAAwB,OAAO,CAAC,EAAE,cAAc;SACvD;KACF,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,gBAAgB,CAAC;QAC5B,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK;QACxB,SAAS,EAAE,OAAO,CAAC,EAAE;QACrB,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,QAAQ,EAAE,wBAAwB,CAAC,cAAc,CAAC;QAClD,YAAY;QACZ,iBAAiB,EAAE,IAAI,CAAC,UAAU;QAClC,UAAU,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC/E,oBAAoB,EAAE,YAAY,CAAC,IAAI;QACvC,eAAe,EAAE,YAAY,CAAC,SAAS;QACvC,cAAc,EAAE,GAAG,YAAY,CAAC,SAAS,KAAK,qBAAqB,CAAC,YAAY,CAAC,SAAS,EAAE,YAAY,CAAC,UAAU,CAAC,EAAE;KACvH,CAAC,CAAC;IAEH,MAAM,iBAAiB,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/D,MAAM,WAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;IAEpD,OAAO;QACL,MAAM,EAAE;EACV,UAAU;CACX;QACG,UAAU;KACX,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAAC,SAAiB,EAAE,QAAgB;IAChE,IAAI,SAAS,KAAK,kBAAkB,EAAE,CAAC;QACrC,OAAO,8EAA8E,CAAC;IACxF,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../src/commands/report.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IACpC,GAAG,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;CACxB;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,mBAAmB,CAAC,CAyC9B"}
1
+ {"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../src/commands/report.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IACpC,GAAG,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;CACxB;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,mBAAmB,CAAC,CA2C9B"}
@@ -1,4 +1,5 @@
1
1
  import { writeTextFileSafe } from "../core/fs-safe.js";
2
+ import { filterAgentFlightRuntimePaths } from "../core/changed-files.js";
2
3
  import { listChangedFiles } from "../core/git.js";
3
4
  import { resolveAgentFlightPaths } from "../core/paths.js";
4
5
  import { analyzeRisk } from "../core/risk.js";
@@ -8,7 +9,7 @@ import { renderMarkdownReport } from "../renderers/markdown-report.js";
8
9
  import { readCurrentSession } from "./status.js";
9
10
  export async function runReportCommand(options) {
10
11
  const session = await readCurrentSession(options.repoRoot);
11
- const changedFiles = options.changedFiles ?? (await listChangedFiles(options.repoRoot));
12
+ const changedFiles = filterAgentFlightRuntimePaths(options.changedFiles ?? (await listChangedFiles(options.repoRoot)));
12
13
  const risk = analyzeRisk(changedFiles);
13
14
  const verification = buildVerificationSummary(session, {
14
15
  changedFilesCount: changedFiles.length,
@@ -1 +1 @@
1
- {"version":3,"file":"report.js","sourceRoot":"","sources":["../../src/commands/report.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,wBAAwB,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC5F,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAajD,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,OAA6B;IAE7B,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3D,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,CAAC,MAAM,gBAAgB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;IACxF,MAAM,IAAI,GAAG,WAAW,CAAC,YAAY,CAAC,CAAC;IACvC,MAAM,YAAY,GAAG,wBAAwB,CAAC,OAAO,EAAE;QACrD,iBAAiB,EAAE,YAAY,CAAC,MAAM;QACtC,SAAS,EAAE,IAAI,CAAC,KAAK;KACtB,CAAC,CAAC;IACH,MAAM,UAAU,GAAG,GAAG,uBAAuB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC,EAAE,WAAW,CAAC;IACjG,MAAM,cAAc,GAAG,eAAe,CAAC,OAAO,EAAE;QAC9C,IAAI,EAAE,kBAAkB;QACxB,SAAS,EAAE,OAAO,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE;QACpC,KAAK,EAAE,kBAAkB;QACzB,QAAQ,EAAE;YACR,IAAI,EAAE,wBAAwB,OAAO,CAAC,EAAE,WAAW;SACpD;KACF,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,oBAAoB,CAAC;QAClC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK;QACxB,SAAS,EAAE,OAAO,CAAC,EAAE;QACrB,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,YAAY;QACZ,cAAc,EAAE,wBAAwB,CAAC,cAAc,CAAC;QACxD,IAAI;QACJ,oBAAoB,EAAE,OAAO,CAAC,oBAAoB;QAClD,oBAAoB,EAAE,YAAY,CAAC,IAAI;QACvC,gBAAgB,EAAE,YAAY,CAAC,IAAI;QACnC,cAAc,EAAE,YAAY,CAAC,SAAS;QACtC,UAAU,EAAE,qBAAqB,CAAC,YAAY,CAAC,SAAS,EAAE,YAAY,CAAC,UAAU,CAAC;QAClF,OAAO,EAAE,OAAO,CAAC,KAAK;KACvB,CAAC,CAAC;IAEH,MAAM,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACjE,MAAM,WAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;IAEpD,OAAO;QACL,MAAM,EAAE;EACV,UAAU;CACX;QACG,UAAU;KACX,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAAC,SAAiB,EAAE,QAAgB;IAChE,IAAI,SAAS,KAAK,kBAAkB,EAAE,CAAC;QACrC,OAAO,wFAAwF,CAAC;IAClG,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"report.js","sourceRoot":"","sources":["../../src/commands/report.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,6BAA6B,EAAE,MAAM,0BAA0B,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,wBAAwB,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC5F,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAajD,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,OAA6B;IAE7B,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3D,MAAM,YAAY,GAAG,6BAA6B,CAChD,OAAO,CAAC,YAAY,IAAI,CAAC,MAAM,gBAAgB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CACnE,CAAC;IACF,MAAM,IAAI,GAAG,WAAW,CAAC,YAAY,CAAC,CAAC;IACvC,MAAM,YAAY,GAAG,wBAAwB,CAAC,OAAO,EAAE;QACrD,iBAAiB,EAAE,YAAY,CAAC,MAAM;QACtC,SAAS,EAAE,IAAI,CAAC,KAAK;KACtB,CAAC,CAAC;IACH,MAAM,UAAU,GAAG,GAAG,uBAAuB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC,EAAE,WAAW,CAAC;IACjG,MAAM,cAAc,GAAG,eAAe,CAAC,OAAO,EAAE;QAC9C,IAAI,EAAE,kBAAkB;QACxB,SAAS,EAAE,OAAO,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE;QACpC,KAAK,EAAE,kBAAkB;QACzB,QAAQ,EAAE;YACR,IAAI,EAAE,wBAAwB,OAAO,CAAC,EAAE,WAAW;SACpD;KACF,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,oBAAoB,CAAC;QAClC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK;QACxB,SAAS,EAAE,OAAO,CAAC,EAAE;QACrB,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,YAAY;QACZ,cAAc,EAAE,wBAAwB,CAAC,cAAc,CAAC;QACxD,IAAI;QACJ,oBAAoB,EAAE,OAAO,CAAC,oBAAoB;QAClD,oBAAoB,EAAE,YAAY,CAAC,IAAI;QACvC,gBAAgB,EAAE,YAAY,CAAC,IAAI;QACnC,cAAc,EAAE,YAAY,CAAC,SAAS;QACtC,UAAU,EAAE,qBAAqB,CAAC,YAAY,CAAC,SAAS,EAAE,YAAY,CAAC,UAAU,CAAC;QAClF,OAAO,EAAE,OAAO,CAAC,KAAK;KACvB,CAAC,CAAC;IAEH,MAAM,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACjE,MAAM,WAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;IAEpD,OAAO;QACL,MAAM,EAAE;EACV,UAAU;CACX;QACG,UAAU;KACX,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAAC,SAAiB,EAAE,QAAgB;IAChE,IAAI,SAAS,KAAK,kBAAkB,EAAE,CAAC;QACrC,OAAO,wFAAwF,CAAC;IAClG,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"resume.d.ts","sourceRoot":"","sources":["../../src/commands/resume.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IACpC,GAAG,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;CACxB;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,mBAAmB,CAAC,CAsC9B"}
1
+ {"version":3,"file":"resume.d.ts","sourceRoot":"","sources":["../../src/commands/resume.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IACpC,GAAG,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;CACxB;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,mBAAmB,CAAC,CAwC9B"}
@@ -1,4 +1,5 @@
1
1
  import { writeTextFileSafe } from "../core/fs-safe.js";
2
+ import { filterAgentFlightRuntimePaths } from "../core/changed-files.js";
2
3
  import { listChangedFiles } from "../core/git.js";
3
4
  import { resolveAgentFlightPaths } from "../core/paths.js";
4
5
  import { analyzeRisk } from "../core/risk.js";
@@ -8,7 +9,7 @@ import { renderResumePrompt } from "../renderers/resume-prompt.js";
8
9
  import { readCurrentSession } from "./status.js";
9
10
  export async function runResumeCommand(options) {
10
11
  const session = await readCurrentSession(options.repoRoot);
11
- const changedFiles = options.changedFiles ?? (await listChangedFiles(options.repoRoot));
12
+ const changedFiles = filterAgentFlightRuntimePaths(options.changedFiles ?? (await listChangedFiles(options.repoRoot)));
12
13
  const risk = analyzeRisk(changedFiles);
13
14
  const verification = buildVerificationSummary(session, {
14
15
  changedFilesCount: changedFiles.length,
@@ -1 +1 @@
1
- {"version":3,"file":"resume.js","sourceRoot":"","sources":["../../src/commands/resume.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACzF,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAajD,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,OAA6B;IAE7B,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3D,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,CAAC,MAAM,gBAAgB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;IACxF,MAAM,IAAI,GAAG,WAAW,CAAC,YAAY,CAAC,CAAC;IACvC,MAAM,YAAY,GAAG,wBAAwB,CAAC,OAAO,EAAE;QACrD,iBAAiB,EAAE,YAAY,CAAC,MAAM;QACtC,SAAS,EAAE,IAAI,CAAC,KAAK;KACtB,CAAC,CAAC;IACH,MAAM,cAAc,GAAG,qBAAqB,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;IAC1E,MAAM,cAAc,GAAG,eAAe,CAAC,OAAO,EAAE;QAC9C,IAAI,EAAE,kBAAkB;QACxB,SAAS,EAAE,OAAO,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE;QACpC,KAAK,EAAE,yBAAyB;QAChC,QAAQ,EAAE;YACR,IAAI,EAAE,uCAAuC;SAC9C;KACF,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,kBAAkB,CAAC;QAChC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK;QACxB,SAAS,EAAE,OAAO,CAAC,EAAE;QACrB,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,MAAM;QAC1B,YAAY;QACZ,SAAS,EAAE,IAAI,CAAC,KAAK;QACrB,WAAW,EAAE,IAAI,CAAC,OAAO;QACzB,gBAAgB,EAAE,YAAY,CAAC,IAAI;QACnC,kBAAkB,EAAE,cAAc,EAAE,OAAO;QAC3C,iBAAiB,EAAE,GAAG,YAAY,CAAC,MAAM,YAAY,YAAY,CAAC,MAAM,SAAS;QACjF,UAAU,EAAE,qBAAqB,CAAC,YAAY,CAAC,SAAS,EAAE,YAAY,CAAC,UAAU,CAAC;KACnF,CAAC,CAAC;IACH,MAAM,UAAU,GAAG,uBAAuB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,mBAAmB,CAAC;IAEjF,MAAM,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACjE,MAAM,WAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;IAEpD,OAAO;QACL,MAAM,EAAE,MAAM;QACd,UAAU;KACX,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAAC,SAAiB,EAAE,QAAgB;IAChE,IAAI,SAAS,KAAK,kBAAkB,EAAE,CAAC;QACrC,OAAO,mHAAmH,CAAC;IAC7H,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"resume.js","sourceRoot":"","sources":["../../src/commands/resume.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,6BAA6B,EAAE,MAAM,0BAA0B,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACzF,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAajD,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,OAA6B;IAE7B,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3D,MAAM,YAAY,GAAG,6BAA6B,CAChD,OAAO,CAAC,YAAY,IAAI,CAAC,MAAM,gBAAgB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CACnE,CAAC;IACF,MAAM,IAAI,GAAG,WAAW,CAAC,YAAY,CAAC,CAAC;IACvC,MAAM,YAAY,GAAG,wBAAwB,CAAC,OAAO,EAAE;QACrD,iBAAiB,EAAE,YAAY,CAAC,MAAM;QACtC,SAAS,EAAE,IAAI,CAAC,KAAK;KACtB,CAAC,CAAC;IACH,MAAM,cAAc,GAAG,qBAAqB,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;IAC1E,MAAM,cAAc,GAAG,eAAe,CAAC,OAAO,EAAE;QAC9C,IAAI,EAAE,kBAAkB;QACxB,SAAS,EAAE,OAAO,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE;QACpC,KAAK,EAAE,yBAAyB;QAChC,QAAQ,EAAE;YACR,IAAI,EAAE,uCAAuC;SAC9C;KACF,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,kBAAkB,CAAC;QAChC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK;QACxB,SAAS,EAAE,OAAO,CAAC,EAAE;QACrB,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,MAAM;QAC1B,YAAY;QACZ,SAAS,EAAE,IAAI,CAAC,KAAK;QACrB,WAAW,EAAE,IAAI,CAAC,OAAO;QACzB,gBAAgB,EAAE,YAAY,CAAC,IAAI;QACnC,kBAAkB,EAAE,cAAc,EAAE,OAAO;QAC3C,iBAAiB,EAAE,GAAG,YAAY,CAAC,MAAM,YAAY,YAAY,CAAC,MAAM,SAAS;QACjF,UAAU,EAAE,qBAAqB,CAAC,YAAY,CAAC,SAAS,EAAE,YAAY,CAAC,UAAU,CAAC;KACnF,CAAC,CAAC;IACH,MAAM,UAAU,GAAG,uBAAuB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,mBAAmB,CAAC;IAEjF,MAAM,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACjE,MAAM,WAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;IAEpD,OAAO;QACL,MAAM,EAAE,MAAM;QACd,UAAU;KACX,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAAC,SAAiB,EAAE,QAAgB;IAChE,IAAI,SAAS,KAAK,kBAAkB,EAAE,CAAC;QACrC,OAAO,mHAAmH,CAAC;IAC7H,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"snapshot.d.ts","sourceRoot":"","sources":["../../src/commands/snapshot.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAE/D,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,GAAG,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;IACvB,GAAG,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAC3B;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,YAAY,CAAC;CACrB;AAED,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,qBAAqB,CAAC,CAyChC"}
1
+ {"version":3,"file":"snapshot.d.ts","sourceRoot":"","sources":["../../src/commands/snapshot.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAE/D,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,GAAG,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;IACvB,GAAG,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAC3B;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,YAAY,CAAC;CACrB;AAED,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,qBAAqB,CAAC,CA+ChC"}
@@ -1,3 +1,4 @@
1
+ import { filterAgentFlightRuntimePaths } from "../core/changed-files.js";
1
2
  import { getGitInfo } from "../core/git.js";
2
3
  import { analyzeRisk } from "../core/risk.js";
3
4
  import { appendSessionEvent } from "../core/session.js";
@@ -5,7 +6,13 @@ import { buildVerificationSummary } from "../core/verification.js";
5
6
  import { readCurrentSession } from "./status.js";
6
7
  export async function runSnapshotCommand(options) {
7
8
  const session = await readCurrentSession(options.repoRoot);
8
- const git = options.git ?? (await getGitInfo(options.repoRoot));
9
+ const rawGit = options.git ?? (await getGitInfo(options.repoRoot));
10
+ const changedFiles = filterAgentFlightRuntimePaths(rawGit.changedFiles);
11
+ const git = {
12
+ ...rawGit,
13
+ dirty: changedFiles.length > 0,
14
+ changedFiles
15
+ };
9
16
  const risk = analyzeRisk(git.changedFiles);
10
17
  const verification = buildVerificationSummary(session, {
11
18
  changedFilesCount: git.changedFiles.length,
@@ -1 +1 @@
1
- {"version":3,"file":"snapshot.js","sourceRoot":"","sources":["../../src/commands/snapshot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAejD,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,OAA+B;IAE/B,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3D,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;IAChE,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAC3C,MAAM,YAAY,GAAG,wBAAwB,CAAC,OAAO,EAAE;QACrD,iBAAiB,EAAE,GAAG,CAAC,YAAY,CAAC,MAAM;QAC1C,SAAS,EAAE,IAAI,CAAC,KAAK;KACtB,CAAC,CAAC;IAEH,MAAM,cAAc,GAAG,MAAM,kBAAkB,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,EAAE;QACzE,IAAI,EAAE,kBAAkB;QACxB,SAAS,EAAE,OAAO,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE;QACpC,KAAK,EAAE,kBAAkB;QACzB,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClD,QAAQ,EAAE;YACR,GAAG;YACH,IAAI;YACJ,YAAY,EAAE;gBACZ,MAAM,EAAE,YAAY,CAAC,MAAM;gBAC3B,MAAM,EAAE,YAAY,CAAC,MAAM;gBAC3B,SAAS,EAAE,YAAY,CAAC,SAAS;gBACjC,IAAI,EAAE,YAAY,CAAC,IAAI;gBACvB,eAAe,EAAE,YAAY,CAAC,eAAe;aAC9C;SACF;KACF,CAAC,CAAC;IACH,MAAM,KAAK,GAAG,cAAc,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAE5C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACtD,CAAC;IAED,OAAO;QACL,MAAM,EAAE;;EAEV,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,kBAAkB,GAAG,CAAC,YAAY,CAAC,MAAM;QAChF,IAAI,CAAC,KAAK;gBACF,YAAY,CAAC,MAAM,YAAY,YAAY,CAAC,MAAM;CACjE;QACG,KAAK;KACN,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"snapshot.js","sourceRoot":"","sources":["../../src/commands/snapshot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,0BAA0B,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAejD,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,OAA+B;IAE/B,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3D,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;IACnE,MAAM,YAAY,GAAG,6BAA6B,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IACxE,MAAM,GAAG,GAAG;QACV,GAAG,MAAM;QACT,KAAK,EAAE,YAAY,CAAC,MAAM,GAAG,CAAC;QAC9B,YAAY;KACb,CAAC;IACF,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAC3C,MAAM,YAAY,GAAG,wBAAwB,CAAC,OAAO,EAAE;QACrD,iBAAiB,EAAE,GAAG,CAAC,YAAY,CAAC,MAAM;QAC1C,SAAS,EAAE,IAAI,CAAC,KAAK;KACtB,CAAC,CAAC;IAEH,MAAM,cAAc,GAAG,MAAM,kBAAkB,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,EAAE;QACzE,IAAI,EAAE,kBAAkB;QACxB,SAAS,EAAE,OAAO,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE;QACpC,KAAK,EAAE,kBAAkB;QACzB,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClD,QAAQ,EAAE;YACR,GAAG;YACH,IAAI;YACJ,YAAY,EAAE;gBACZ,MAAM,EAAE,YAAY,CAAC,MAAM;gBAC3B,MAAM,EAAE,YAAY,CAAC,MAAM;gBAC3B,SAAS,EAAE,YAAY,CAAC,SAAS;gBACjC,IAAI,EAAE,YAAY,CAAC,IAAI;gBACvB,eAAe,EAAE,YAAY,CAAC,eAAe;aAC9C;SACF;KACF,CAAC,CAAC;IACH,MAAM,KAAK,GAAG,cAAc,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAE5C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACtD,CAAC;IAED,OAAO;QACL,MAAM,EAAE;;EAEV,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,kBAAkB,GAAG,CAAC,YAAY,CAAC,MAAM;QAChF,IAAI,CAAC,KAAK;gBACF,YAAY,CAAC,MAAM,YAAY,YAAY,CAAC,MAAM;CACjE;QACG,KAAK;KACN,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,kBAAkB,EAInB,MAAM,mBAAmB,CAAC;AAE3B,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;CACrC;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,mBAAmB,CAAC,CA6C9B;AAsBD,wBAAsB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAUtF"}
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,kBAAkB,EAInB,MAAM,mBAAmB,CAAC;AAE3B,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;CACrC;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,mBAAmB,CAAC,CA+C9B;AAsBD,wBAAsB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAUtF"}
@@ -1,4 +1,5 @@
1
1
  import { listChangedFiles } from "../core/git.js";
2
+ import { filterAgentFlightRuntimePaths } from "../core/changed-files.js";
2
3
  import { pathExists, readJsonFile } from "../core/fs-safe.js";
3
4
  import { resolveAgentFlightPaths } from "../core/paths.js";
4
5
  import { analyzeRisk } from "../core/risk.js";
@@ -6,7 +7,7 @@ import { getLatestSessionEvent } from "../core/session.js";
6
7
  import { buildVerificationSummary } from "../core/verification.js";
7
8
  export async function runStatusCommand(options) {
8
9
  const session = await readCurrentSession(options.repoRoot);
9
- const changedFiles = options.changedFiles ?? (await listChangedFiles(options.repoRoot));
10
+ const changedFiles = filterAgentFlightRuntimePaths(options.changedFiles ?? (await listChangedFiles(options.repoRoot)));
10
11
  const risk = analyzeRisk(changedFiles);
11
12
  const duration = formatDuration(session.startedAt, options.now ?? new Date());
12
13
  const verification = buildVerificationSummary(session, {
@@ -1 +1 @@
1
- {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare function filterAgentFlightRuntimePaths(files: string[]): string[];
2
+ export declare function isAgentFlightRuntimePath(file: string): boolean;
3
+ //# sourceMappingURL=changed-files.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"changed-files.d.ts","sourceRoot":"","sources":["../../src/core/changed-files.ts"],"names":[],"mappings":"AAOA,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAEvE;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAK9D"}
@@ -0,0 +1,17 @@
1
+ const agentFlightRuntimePrefixes = [
2
+ ".agentflight/sessions/",
3
+ ".agentflight/reports/",
4
+ ".agentflight/current/",
5
+ ".agentflight/evidence/"
6
+ ];
7
+ export function filterAgentFlightRuntimePaths(files) {
8
+ return files.filter((file) => !isAgentFlightRuntimePath(file));
9
+ }
10
+ export function isAgentFlightRuntimePath(file) {
11
+ const normalized = normalizeChangedFilePath(file);
12
+ return agentFlightRuntimePrefixes.some((prefix) => normalized === prefix.slice(0, -1) || normalized.startsWith(prefix));
13
+ }
14
+ function normalizeChangedFilePath(file) {
15
+ return file.replaceAll("\\", "/").replace(/^\.\//, "");
16
+ }
17
+ //# sourceMappingURL=changed-files.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"changed-files.js","sourceRoot":"","sources":["../../src/core/changed-files.ts"],"names":[],"mappings":"AAAA,MAAM,0BAA0B,GAAG;IACjC,wBAAwB;IACxB,uBAAuB;IACvB,uBAAuB;IACvB,wBAAwB;CACzB,CAAC;AAEF,MAAM,UAAU,6BAA6B,CAAC,KAAe;IAC3D,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC;AACjE,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,IAAY;IACnD,MAAM,UAAU,GAAG,wBAAwB,CAAC,IAAI,CAAC,CAAC;IAClD,OAAO,0BAA0B,CAAC,IAAI,CACpC,CAAC,MAAM,EAAE,EAAE,CAAC,UAAU,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,CAChF,CAAC;AACJ,CAAC;AAED,SAAS,wBAAwB,CAAC,IAAY;IAC5C,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AACzD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../src/core/git.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAElD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAEjD,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,MAAM,EACX,GAAG,GAAE,aAA0B,GAC9B,OAAO,CAAC,MAAM,CAAC,CAGjB;AAED,wBAAsB,UAAU,CAC9B,QAAQ,EAAE,MAAM,EAChB,GAAG,GAAE,aAA0B,GAC9B,OAAO,CAAC,OAAO,CAAC,CAelB;AAED,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,MAAM,EAChB,GAAG,GAAE,aAA0B,GAC9B,OAAO,CAAC,MAAM,EAAE,CAAC,CAMnB;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAW5D"}
1
+ {"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../src/core/git.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAElD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAGjD,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,MAAM,EACX,GAAG,GAAE,aAA0B,GAC9B,OAAO,CAAC,MAAM,CAAC,CAGjB;AAED,wBAAsB,UAAU,CAC9B,QAAQ,EAAE,MAAM,EAChB,GAAG,GAAE,aAA0B,GAC9B,OAAO,CAAC,OAAO,CAAC,CAgBlB;AAED,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,MAAM,EAChB,GAAG,GAAE,aAA0B,GAC9B,OAAO,CAAC,MAAM,EAAE,CAAC,CAQnB;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAW5D"}
package/dist/core/git.js CHANGED
@@ -1,4 +1,5 @@
1
1
  import { runCommand } from "./process.js";
2
+ import { filterAgentFlightRuntimePaths } from "./changed-files.js";
2
3
  export async function getRepositoryRoot(cwd, run = runCommand) {
3
4
  const result = await run("git", ["rev-parse", "--show-toplevel"], { cwd, timeoutMs: 10_000 });
4
5
  return result.exitCode === 0 && result.stdout.trim() ? result.stdout.trim() : cwd;
@@ -9,7 +10,7 @@ export async function getGitInfo(repoRoot, run = runCommand) {
9
10
  run("git", ["rev-parse", "--short", "HEAD"], { cwd: repoRoot, timeoutMs: 10_000 }),
10
11
  run("git", ["status", "--porcelain", "-uall"], { cwd: repoRoot, timeoutMs: 10_000 })
11
12
  ]);
12
- const changedFiles = status.exitCode === 0 ? parseGitStatusFiles(status.stdout) : [];
13
+ const changedFiles = status.exitCode === 0 ? filterAgentFlightRuntimePaths(parseGitStatusFiles(status.stdout)) : [];
13
14
  return {
14
15
  branch: branch.exitCode === 0 && branch.stdout.trim() ? branch.stdout.trim() : null,
15
16
  commit: commit.exitCode === 0 && commit.stdout.trim() ? commit.stdout.trim() : null,
@@ -22,7 +23,9 @@ export async function listChangedFiles(repoRoot, run = runCommand) {
22
23
  cwd: repoRoot,
23
24
  timeoutMs: 10_000
24
25
  });
25
- return result.exitCode === 0 ? parseGitStatusFiles(result.stdout) : [];
26
+ return result.exitCode === 0
27
+ ? filterAgentFlightRuntimePaths(parseGitStatusFiles(result.stdout))
28
+ : [];
26
29
  }
27
30
  export function parseGitStatusFiles(output) {
28
31
  return output
@@ -1 +1 @@
1
- {"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/core/git.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/core/git.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,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,CA2E/D"}
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,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,143 @@ 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
+ <section class="section">
115
+ <div class="section-header">
116
+ <h2>Timeline</h2>
117
+ <div class="meta">${escapeHtml(String(input.timeline.length))} events</div>
118
+ </div>
51
119
  ${renderTimeline(input.timeline)}
52
120
  </section>
53
121
 
54
- <section class="panel">
55
- <h2>Changed File Groups</h2>
122
+ <section class="section">
123
+ <div class="section-header">
124
+ <h2>Changed File Groups</h2>
125
+ <div class="meta">${escapeHtml(String(input.changedFileGroups?.length ?? 0))} groups</div>
126
+ </div>
56
127
  ${renderFileGroups(input.changedFileGroups ?? [])}
57
- <h2>Changed Files</h2>
128
+ <div class="section-header" style="margin-top: 22px;">
129
+ <h2>Changed Files</h2>
130
+ <div class="meta">${escapeHtml(String(input.changedFiles.length))} files</div>
131
+ </div>
58
132
  ${renderFileList(input.changedFiles)}
59
133
  </section>
60
134
 
61
- <section class="panel">
62
- <h2>Verification Evidence</h2>
135
+ <section class="section">
136
+ <div class="section-header">
137
+ <h2>Verification Evidence</h2>
138
+ <div class="meta">${escapeHtml(String(input.verificationEvidence.length))} runs</div>
139
+ </div>
63
140
  ${renderVerification(input.verificationEvidence)}
64
141
  </section>
65
142
 
66
- <section class="panel">
67
- <h2>Recommendation</h2>
68
- <p>${escapeHtml(input.recommendation)}</p>
143
+ <section class="section">
144
+ <div class="section-header">
145
+ <h2>Recommendation</h2>
146
+ </div>
147
+ <div class="recommendation">${escapeHtml(input.recommendation)}</div>
69
148
  </section>
70
149
 
71
150
  <footer>Generated by AgentFlight</footer>
@@ -94,37 +173,59 @@ function renderTimeline(items) {
94
173
  return "<p>No timeline events recorded.</p>";
95
174
  return `<div class="timeline">${items
96
175
  .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>` : ""}
176
+ <div class="timeline-time">${escapeHtml(item.timestamp)}</div>
177
+ <div class="timeline-dot" aria-hidden="true"></div>
178
+ <div class="timeline-body">
179
+ <strong>${escapeHtml(item.title)}</strong>
180
+ <div class="timeline-type">${escapeHtml(item.type)}</div>
181
+ ${item.message ? `<div class="timeline-message">${escapeHtml(item.message)}</div>` : ""}
182
+ </div>
100
183
  </div>`)
101
184
  .join("")}</div>`;
102
185
  }
103
186
  function renderFileGroups(groups) {
104
187
  if (groups.length === 0)
105
188
  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>`;
189
+ return `<div class="file-groups">${groups
190
+ .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>`)
191
+ .join("")}</div>`;
109
192
  }
110
193
  function renderFileList(files) {
111
194
  if (files.length === 0)
112
195
  return "<p>No changed files detected.</p>";
113
- return `<ul>${files.map((file) => `<li><code>${escapeHtml(file)}</code></li>`).join("")}</ul>`;
196
+ return `<ul class="changed-files">${files.map((file) => `<li><code>${escapeHtml(file)}</code></li>`).join("")}</ul>`;
114
197
  }
115
198
  function renderVerification(evidence) {
116
199
  if (evidence.length === 0)
117
200
  return "<p>No verification evidence recorded.</p>";
118
201
  return `<div class="verification-grid">${evidence
119
202
  .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>
203
+ <div class="verification-status">${renderBadge(item.status, "status")}</div>
204
+ <div class="verification-command">
205
+ <code>${escapeHtml(item.command)}</code>
206
+ <div class="meta">Exit ${escapeHtml(String(item.exitCode ?? "unknown"))} &middot; ${escapeHtml(String(item.durationMs))}ms</div>
207
+ <details>
208
+ <summary>Evidence files</summary>
209
+ <div class="verification-paths">
210
+ <div>stdout: ${escapeHtml(item.stdoutPath)}</div>
211
+ <div>stderr: ${escapeHtml(item.stderrPath)}</div>
212
+ </div>
213
+ </details>
214
+ </div>
125
215
  </div>`)
126
216
  .join("")}</div>`;
127
217
  }
218
+ function renderBadge(value, kind) {
219
+ const normalized = value.toLowerCase().replaceAll(/\s+/g, "-");
220
+ const className = kind === "readiness"
221
+ ? normalized.startsWith("ready")
222
+ ? "ready"
223
+ : "unknown"
224
+ : kind === "status"
225
+ ? `status-${normalized}`
226
+ : `risk-${normalized}`;
227
+ return `<span class="badge ${escapeHtml(className)}">${escapeHtml(value)}</span>`;
228
+ }
128
229
  function escapeHtml(value) {
129
230
  return value
130
231
  .replaceAll("&", "&amp;")
@@ -1 +1 @@
1
- {"version":3,"file":"html-replay.js","sourceRoot":"","sources":["../../src/renderers/html-replay.ts"],"names":[],"mappings":"AAoBA,MAAM,UAAU,gBAAgB,CAAC,KAAsB;IACrD,OAAO;;;;;8BAKqB,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+CAkCV,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC;YAC9D,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC;kCACA,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC;4BACjC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,uBAAuB,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;;;MAGjH,aAAa,CAAC,KAAK,CAAC;;;;QAIlB,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC;;;;;QAK9B,gBAAgB,CAAC,KAAK,CAAC,iBAAiB,IAAI,EAAE,CAAC;;QAE/C,cAAc,CAAC,KAAK,CAAC,YAAY,CAAC;;;;;QAKlC,kBAAkB,CAAC,KAAK,CAAC,oBAAoB,CAAC;;;;;WAK3C,UAAU,CAAC,KAAK,CAAC,cAAc,CAAC;;;;;;;CAO1C,CAAC;AACF,CAAC;AAED,SAAS,aAAa,CAAC,KAAsB;IAC3C,MAAM,MAAM,GAAG,KAAK,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,MAAM,CAAC;IAC5F,MAAM,MAAM,GAAG,KAAK,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,MAAM,CAAC;IAC5F,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC;IAC9C,MAAM,SAAS,GAAG,KAAK,CAAC,eAAe,IAAI,SAAS,CAAC;IAErD,OAAO;QACD,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC;QAC/B,iBAAiB,CAAC,eAAe,EAAE,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QACrE,iBAAiB,CAAC,OAAO,EAAE,GAAG,MAAM,aAAa,MAAM,SAAS,CAAC;QACjE,iBAAiB,CAAC,WAAW,EAAE,SAAS,CAAC;eAClC,CAAC;AAChB,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAa,EAAE,KAAa;IACrD,OAAO,mCAAmC,UAAU,CAAC,KAAK,CAAC,kBAAkB,UAAU,CAAC,KAAK,CAAC,iBAAiB,CAAC;AAClH,CAAC;AAED,SAAS,cAAc,CAAC,KAA2B;IACjD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,qCAAqC,CAAC;IACrE,OAAO,yBAAyB,KAAK;SAClC,GAAG,CACF,CAAC,IAAI,EAAE,EAAE,CAAC;kBACE,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;4BACZ,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;UACvE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;aACzD,CACR;SACA,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC;AACtB,CAAC;AAED,SAAS,gBAAgB,CAAC,MAA6B;IACrD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,yCAAyC,CAAC;IAC1E,OAAO,OAAO,MAAM;SACjB,GAAG,CACF,CAAC,KAAK,EAAE,EAAE,CACR,eAAe,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,cAAc,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CACzI;SACA,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;AACrB,CAAC;AAED,SAAS,cAAc,CAAC,KAAe;IACrC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,mCAAmC,CAAC;IACnE,OAAO,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;AACjG,CAAC;AAED,SAAS,kBAAkB,CAAC,QAA2B;IACrD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,2CAA2C,CAAC;IAC9E,OAAO,kCAAkC,QAAQ;SAC9C,GAAG,CACF,CAAC,IAAI,EAAE,EAAE,CAAC,iCAAiC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC;kBACtD,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC;qBACpB,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;iCACZ,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,SAAS,CAAC,CAAC,MAAM,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;oCACpF,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC;oCAC3B,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC;aAClD,CACR;SACA,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC;AACtB,CAAC;AAED,SAAS,UAAU,CAAC,KAAa;IAC/B,OAAO,KAAK;SACT,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC;SACxB,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC;SACvB,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC;SACvB,UAAU,CAAC,GAAG,EAAE,QAAQ,CAAC;SACzB,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AAC9B,CAAC"}
1
+ {"version":3,"file":"html-replay.js","sourceRoot":"","sources":["../../src/renderers/html-replay.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" width="512" height="512" role="img" aria-label="AgentFlight logo">
2
+ <title>AgentFlight logo</title>
3
+ <defs>
4
+ <linearGradient id="af-bg" x1="0" y1="0" x2="0" y2="1">
5
+ <stop offset="0" stop-color="#1B2042"/>
6
+ <stop offset="1" stop-color="#0C0F22"/>
7
+ </linearGradient>
8
+ <linearGradient id="af-rec" x1="0" y1="0" x2="1" y2="1">
9
+ <stop offset="0" stop-color="#8E8DF8"/>
10
+ <stop offset="1" stop-color="#5B5BEF"/>
11
+ </linearGradient>
12
+ </defs>
13
+ <rect x="0" y="0" width="512" height="512" rx="114" ry="114" fill="url(#af-bg)"/>
14
+ <!-- Flight recorder body: a rounded "black box" module -->
15
+ <rect x="108" y="156" width="296" height="200" rx="50" ry="50"
16
+ fill="none" stroke="url(#af-rec)" stroke-width="26"/>
17
+ <!-- Recorded session timeline that lifts into a proof check -->
18
+ <path d="M 156 286 H 270 L 292 312 L 360 232"
19
+ fill="none" stroke="#FFFFFF" stroke-width="24"
20
+ stroke-linecap="round" stroke-linejoin="round"/>
21
+ <!-- Event markers along the timeline -->
22
+ <circle cx="180" cy="286" r="14" fill="#8E8DF8"/>
23
+ <circle cx="216" cy="286" r="14" fill="#7A79F4"/>
24
+ <circle cx="252" cy="286" r="14" fill="#5B5BEF"/>
25
+ </svg>
@@ -0,0 +1,101 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="1200" height="680" viewBox="0 0 1200 680" role="img" aria-labelledby="title desc">
2
+ <title id="title">AgentFlight CLI workflow animation</title>
3
+ <desc id="desc">Animated terminal-style demo showing AgentFlight start, verify, snapshot, and status output for an AI coding session.</desc>
4
+ <style>
5
+ .bg { fill: #0f111a; }
6
+ .bar { fill: #171a24; }
7
+ .red { fill: #ff5f57; }
8
+ .yellow { fill: #ffbd2e; }
9
+ .green { fill: #28c840; }
10
+ .text { fill: #e8ecf3; font: 22px ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace; }
11
+ .muted { fill: #9aa4b2; font: 20px ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace; }
12
+ .cmd { fill: #7dd3fc; font: 22px ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace; }
13
+ .ok { fill: #86efac; font: 22px ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace; }
14
+ .warn { fill: #fbbf24; font: 22px ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace; }
15
+ .panel {
16
+ opacity: 0;
17
+ animation-duration: 12s;
18
+ animation-iteration-count: infinite;
19
+ animation-timing-function: ease-in-out;
20
+ }
21
+ .p1 { animation-name: panel1; }
22
+ .p2 { animation-name: panel2; }
23
+ .p3 { animation-name: panel3; }
24
+ @keyframes panel1 {
25
+ 0%, 27% { opacity: 1; }
26
+ 33%, 100% { opacity: 0; }
27
+ }
28
+ @keyframes panel2 {
29
+ 0%, 30% { opacity: 0; }
30
+ 36%, 60% { opacity: 1; }
31
+ 66%, 100% { opacity: 0; }
32
+ }
33
+ @keyframes panel3 {
34
+ 0%, 63% { opacity: 0; }
35
+ 69%, 94% { opacity: 1; }
36
+ 100% { opacity: 0; }
37
+ }
38
+ .cursor {
39
+ animation: blink 1s steps(2, start) infinite;
40
+ }
41
+ @keyframes blink {
42
+ 0%, 45% { opacity: 1; }
43
+ 46%, 100% { opacity: 0; }
44
+ }
45
+ </style>
46
+
47
+ <rect class="bg" x="0" y="0" width="1200" height="680" rx="18" />
48
+ <rect class="bar" x="0" y="0" width="1200" height="54" rx="18" />
49
+ <circle class="red" cx="32" cy="27" r="9" />
50
+ <circle class="yellow" cx="62" cy="27" r="9" />
51
+ <circle class="green" cx="92" cy="27" r="9" />
52
+ <text class="muted" x="130" y="35">AgentFlight local flight recorder</text>
53
+
54
+ <g class="panel p1">
55
+ <text class="cmd" x="44" y="96">$ npx agentflight@latest start --task "Add password reset flow"</text>
56
+ <text class="text" x="44" y="146">AgentFlight started</text>
57
+ <text class="muted" x="44" y="196">Task:</text>
58
+ <text class="text" x="160" y="196">Add password reset flow</text>
59
+ <text class="muted" x="44" y="246">Session:</text>
60
+ <text class="text" x="160" y="246">af-20260613-add-password-reset-flow</text>
61
+ <text class="muted" x="44" y="296">Detected:</text>
62
+ <text class="text" x="70" y="342">Git branch: main</text>
63
+ <text class="text" x="70" y="386">Package manager: npm</text>
64
+ <text class="ok" x="70" y="430">ProjScan: available</text>
65
+ <text class="ok" x="70" y="474">AgentLoopKit: available</text>
66
+ <text class="warn" x="44" y="542">Suggested proof: npm test</text>
67
+ <text class="muted" x="44" y="600">Now run Codex, Claude Code, Cursor, or your coding agent normally.</text>
68
+ </g>
69
+
70
+ <g class="panel p2">
71
+ <text class="cmd" x="44" y="96">$ npx agentflight@latest verify -- npm test</text>
72
+ <text class="text" x="44" y="146">Verification recorded</text>
73
+ <text class="muted" x="44" y="196">Command:</text>
74
+ <text class="text" x="160" y="196">npm test</text>
75
+ <text class="muted" x="44" y="246">Status:</text>
76
+ <text class="ok" x="160" y="246">passed</text>
77
+ <text class="muted" x="44" y="296">Evidence:</text>
78
+ <text class="text" x="70" y="342">stdout: .agentflight/evidence/.../verification-1.stdout.txt</text>
79
+ <text class="text" x="70" y="386">stderr: .agentflight/evidence/.../verification-1.stderr.txt</text>
80
+ <text class="cmd" x="44" y="474">$ npx agentflight@latest snapshot --note "Initial implementation verified"</text>
81
+ <text class="text" x="44" y="524">Snapshot recorded</text>
82
+ <text class="text" x="70" y="570">Changed files: 3 Risk: medium Verification: 1 passed, 0 failed</text>
83
+ </g>
84
+
85
+ <g class="panel p3">
86
+ <text class="cmd" x="44" y="96">$ npx agentflight@latest status</text>
87
+ <text class="text" x="44" y="146">AgentFlight status</text>
88
+ <text class="muted" x="44" y="196">Task:</text>
89
+ <text class="text" x="160" y="196">Add password reset flow</text>
90
+ <text class="muted" x="44" y="246">Changed files:</text>
91
+ <text class="text" x="230" y="246">3</text>
92
+ <text class="muted" x="44" y="296">Changed areas:</text>
93
+ <text class="text" x="70" y="342">docs: docs/password-reset.md</text>
94
+ <text class="text" x="70" y="386">tests: tests/password-reset.test.js</text>
95
+ <text class="text" x="70" y="430">unknown: src/password-reset.ts</text>
96
+ <text class="warn" x="44" y="498">Risk: medium</text>
97
+ <text class="ok" x="44" y="548">Verification Evidence: 1 passed, 0 failed</text>
98
+ <text class="ok" x="44" y="598">Review readiness: Ready for review</text>
99
+ <text class="cmd cursor" x="44" y="642">Next action: agentflight report</text>
100
+ </g>
101
+ </svg>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agentflight",
3
- "version": "0.3.1",
3
+ "version": "0.3.3",
4
4
  "description": "Local-first flight recorder for AI coding agents.",
5
5
  "type": "module",
6
6
  "main": "./dist/cli.js",
@@ -12,6 +12,8 @@
12
12
  "dist",
13
13
  "README.md",
14
14
  "CHANGELOG.md",
15
+ "docs/agentflight_logo/icon.svg",
16
+ "docs/assets/agentflight-cli-demo.svg",
15
17
  "docs/assets/agentflight-replay-timeline.png",
16
18
  "docs/development/dogfooding.md",
17
19
  "docs/development/release.md",
@@ -58,7 +60,7 @@
58
60
  "bugs": {
59
61
  "url": "https://github.com/abhiyoheswaran1/AgentFlight/issues"
60
62
  },
61
- "homepage": "https://github.com/abhiyoheswaran1/AgentFlight#readme",
63
+ "homepage": "https://www.baseframelabs.com/apps/agentflight",
62
64
  "devDependencies": {
63
65
  "@eslint/js": "^10.0.1",
64
66
  "@types/node": "^25.9.3",