agentflight 0.5.1 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (126) hide show
  1. package/CHANGELOG.md +312 -1
  2. package/README.md +45 -21
  3. package/dist/adapters/agentloopkit.d.ts +2 -1
  4. package/dist/adapters/agentloopkit.d.ts.map +1 -1
  5. package/dist/adapters/agentloopkit.js +53 -58
  6. package/dist/adapters/agentloopkit.js.map +1 -1
  7. package/dist/adapters/projscan.d.ts +1 -0
  8. package/dist/adapters/projscan.d.ts.map +1 -1
  9. package/dist/adapters/projscan.js +36 -44
  10. package/dist/adapters/projscan.js.map +1 -1
  11. package/dist/adapters/tool-runner.d.ts +16 -0
  12. package/dist/adapters/tool-runner.d.ts.map +1 -0
  13. package/dist/adapters/tool-runner.js +43 -0
  14. package/dist/adapters/tool-runner.js.map +1 -0
  15. package/dist/cli.d.ts.map +1 -1
  16. package/dist/cli.js +36 -7
  17. package/dist/cli.js.map +1 -1
  18. package/dist/commands/doctor.d.ts.map +1 -1
  19. package/dist/commands/doctor.js +26 -2
  20. package/dist/commands/doctor.js.map +1 -1
  21. package/dist/commands/handoff.d.ts +17 -0
  22. package/dist/commands/handoff.d.ts.map +1 -0
  23. package/dist/commands/handoff.js +286 -0
  24. package/dist/commands/handoff.js.map +1 -0
  25. package/dist/commands/history.d.ts +11 -0
  26. package/dist/commands/history.d.ts.map +1 -0
  27. package/dist/commands/history.js +251 -0
  28. package/dist/commands/history.js.map +1 -0
  29. package/dist/commands/init.d.ts +5 -0
  30. package/dist/commands/init.d.ts.map +1 -1
  31. package/dist/commands/init.js +30 -7
  32. package/dist/commands/init.js.map +1 -1
  33. package/dist/commands/replay.d.ts.map +1 -1
  34. package/dist/commands/replay.js +23 -16
  35. package/dist/commands/replay.js.map +1 -1
  36. package/dist/commands/report.d.ts +1 -0
  37. package/dist/commands/report.d.ts.map +1 -1
  38. package/dist/commands/report.js +41 -16
  39. package/dist/commands/report.js.map +1 -1
  40. package/dist/commands/resume.d.ts +1 -0
  41. package/dist/commands/resume.d.ts.map +1 -1
  42. package/dist/commands/resume.js +24 -14
  43. package/dist/commands/resume.js.map +1 -1
  44. package/dist/commands/start.d.ts +12 -0
  45. package/dist/commands/start.d.ts.map +1 -1
  46. package/dist/commands/start.js +53 -33
  47. package/dist/commands/start.js.map +1 -1
  48. package/dist/commands/status.d.ts +1 -0
  49. package/dist/commands/status.d.ts.map +1 -1
  50. package/dist/commands/status.js +138 -10
  51. package/dist/commands/status.js.map +1 -1
  52. package/dist/commands/verify.d.ts +1 -0
  53. package/dist/commands/verify.d.ts.map +1 -1
  54. package/dist/commands/verify.js +187 -58
  55. package/dist/commands/verify.js.map +1 -1
  56. package/dist/core/artifacts.d.ts +11 -0
  57. package/dist/core/artifacts.d.ts.map +1 -0
  58. package/dist/core/artifacts.js +39 -0
  59. package/dist/core/artifacts.js.map +1 -0
  60. package/dist/core/changed-files.d.ts +3 -0
  61. package/dist/core/changed-files.d.ts.map +1 -1
  62. package/dist/core/changed-files.js +18 -1
  63. package/dist/core/changed-files.js.map +1 -1
  64. package/dist/core/config.d.ts +2 -0
  65. package/dist/core/config.d.ts.map +1 -1
  66. package/dist/core/config.js +17 -14
  67. package/dist/core/config.js.map +1 -1
  68. package/dist/core/doctor.d.ts +4 -0
  69. package/dist/core/doctor.d.ts.map +1 -1
  70. package/dist/core/doctor.js +37 -2
  71. package/dist/core/doctor.js.map +1 -1
  72. package/dist/core/fs-safe.d.ts +6 -0
  73. package/dist/core/fs-safe.d.ts.map +1 -1
  74. package/dist/core/fs-safe.js +50 -4
  75. package/dist/core/fs-safe.js.map +1 -1
  76. package/dist/core/git.d.ts.map +1 -1
  77. package/dist/core/git.js +9 -5
  78. package/dist/core/git.js.map +1 -1
  79. package/dist/core/output.d.ts +14 -0
  80. package/dist/core/output.d.ts.map +1 -1
  81. package/dist/core/output.js +72 -4
  82. package/dist/core/output.js.map +1 -1
  83. package/dist/core/paths.d.ts +1 -0
  84. package/dist/core/paths.d.ts.map +1 -1
  85. package/dist/core/paths.js +9 -1
  86. package/dist/core/paths.js.map +1 -1
  87. package/dist/core/review-intelligence.d.ts +2 -1
  88. package/dist/core/review-intelligence.d.ts.map +1 -1
  89. package/dist/core/review-intelligence.js +246 -104
  90. package/dist/core/review-intelligence.js.map +1 -1
  91. package/dist/core/risk.d.ts.map +1 -1
  92. package/dist/core/risk.js +9 -4
  93. package/dist/core/risk.js.map +1 -1
  94. package/dist/core/session.d.ts +47 -1
  95. package/dist/core/session.d.ts.map +1 -1
  96. package/dist/core/session.js +203 -10
  97. package/dist/core/session.js.map +1 -1
  98. package/dist/core/verification-runs.d.ts +6 -0
  99. package/dist/core/verification-runs.d.ts.map +1 -0
  100. package/dist/core/verification-runs.js +104 -0
  101. package/dist/core/verification-runs.js.map +1 -0
  102. package/dist/core/verification.d.ts +4 -3
  103. package/dist/core/verification.d.ts.map +1 -1
  104. package/dist/core/verification.js +33 -66
  105. package/dist/core/verification.js.map +1 -1
  106. package/dist/renderers/html-replay.d.ts +2 -0
  107. package/dist/renderers/html-replay.d.ts.map +1 -1
  108. package/dist/renderers/html-replay.js +237 -17
  109. package/dist/renderers/html-replay.js.map +1 -1
  110. package/dist/renderers/markdown-report.d.ts +7 -1
  111. package/dist/renderers/markdown-report.d.ts.map +1 -1
  112. package/dist/renderers/markdown-report.js +85 -7
  113. package/dist/renderers/markdown-report.js.map +1 -1
  114. package/dist/renderers/resume-prompt.d.ts +2 -0
  115. package/dist/renderers/resume-prompt.d.ts.map +1 -1
  116. package/dist/renderers/resume-prompt.js +47 -10
  117. package/dist/renderers/resume-prompt.js.map +1 -1
  118. package/dist/types/index.d.ts +13 -3
  119. package/dist/types/index.d.ts.map +1 -1
  120. package/docs/assets/agentflight-cli-demo.svg +3 -3
  121. package/docs/development/changed-file-filters.md +35 -6
  122. package/docs/development/dogfooding.md +1 -1
  123. package/docs/examples/basic-agentflight-session.md +21 -10
  124. package/docs/roadmap/index.md +11 -3
  125. package/docs/roadmap/v0.4.0-review-intelligence-plan.md +1 -1
  126. package/package.json +3 -3
@@ -1,87 +1,82 @@
1
+ import { readFile } from "node:fs/promises";
1
2
  import { join } from "node:path";
2
3
  import { runCommand } from "../core/process.js";
4
+ import { normalizeCliVersion, runToolWithFallback, summarizeToolFailure } from "./tool-runner.js";
3
5
  export async function inspectAgentLoopKit(options = {}) {
4
6
  const run = options.run ?? runCommand;
5
7
  const command = options.command ?? "agentloopkit";
6
- const version = await runWithFallback(run, command, "agentloopkit@latest", ["--version"], options.cwd);
8
+ const version = await runToolWithFallback({
9
+ run,
10
+ localCommand: command,
11
+ packageName: "agentloopkit@latest",
12
+ args: ["--version"],
13
+ cwd: options.cwd
14
+ });
7
15
  if (version.exitCode !== 0) {
8
16
  return {
9
17
  available: false,
10
- warnings: [`AgentLoopKit unavailable: ${summarizeFailure(version)}`]
18
+ warnings: [`AgentLoopKit unavailable: ${summarizeToolFailure(version)}`]
11
19
  };
12
20
  }
13
- const doctor = await runWithFallback(run, command, "agentloopkit@latest", ["doctor"], options.cwd, 20_000);
21
+ if (options.includeDoctor === false) {
22
+ return {
23
+ available: true,
24
+ version: normalizeCliVersion(version.stdout),
25
+ summary: "AgentLoopKit available for task discipline.",
26
+ warnings: []
27
+ };
28
+ }
29
+ const doctor = await runToolWithFallback({
30
+ run,
31
+ localCommand: command,
32
+ packageName: "agentloopkit@latest",
33
+ args: ["doctor"],
34
+ cwd: options.cwd,
35
+ timeoutMs: 20_000
36
+ });
14
37
  const result = {
15
38
  available: true,
16
- version: normalizeVersion(version.stdout),
39
+ version: normalizeCliVersion(version.stdout),
17
40
  summary: doctor.stdout.trim() || "AgentLoopKit available for task discipline.",
18
41
  warnings: []
19
42
  };
20
43
  if (doctor.exitCode !== 0) {
21
- result.warnings.push(`AgentLoopKit doctor reported issues: ${summarizeFailure(doctor)}`);
44
+ result.warnings.push(`AgentLoopKit doctor reported issues: ${summarizeToolFailure(doctor)}`);
22
45
  }
23
46
  return result;
24
47
  }
25
- export async function createAgentLoopTask(cwd, title, run = runCommand) {
26
- const result = await runWithFallback(run, "agentloopkit", "agentloopkit@latest", [
27
- "create-task",
28
- "--title",
29
- title,
30
- "--type",
31
- "feature",
32
- "--problem",
33
- `AgentFlight session task: ${title}`,
34
- "--outcome",
35
- "Task is implemented with local verification evidence.",
36
- "--constraint",
37
- "Keep changes scoped and do not claim completion without proof."
38
- ], cwd, 20_000);
39
- if (result.exitCode !== 0) {
40
- return {
41
- available: false,
42
- taskLinked: false,
43
- warnings: [`AgentLoopKit task creation failed: ${summarizeFailure(result)}`]
44
- };
45
- }
48
+ export async function linkAgentLoopTask(cwd) {
49
+ const activeTask = await readActiveAgentLoopTask(cwd);
50
+ if (activeTask)
51
+ return activeTask;
46
52
  return {
47
53
  available: true,
48
- taskLinked: true,
49
- summary: result.stdout.trim(),
54
+ taskLinked: false,
55
+ summary: "No active AgentLoopKit task linked.",
50
56
  warnings: []
51
57
  };
52
58
  }
53
- function summarizeFailure(result) {
54
- return (result.stderr || result.stdout || "no output").trim();
55
- }
56
- async function runWithFallback(run, localCommand, packageName, args, cwd, timeoutMs = 10_000) {
57
- const localFailures = [];
58
- for (const candidate of repoLocalCommandCandidates(localCommand, cwd)) {
59
- const local = await run(candidate, args, { cwd, timeoutMs });
60
- if (local.exitCode === 0)
61
- return local;
62
- localFailures.push(local);
63
- }
64
- const fallback = await run("npx", ["--yes", packageName, ...args], { cwd, timeoutMs });
65
- if (fallback.exitCode === 0)
66
- return fallback;
67
- const pathCommand = await run(localCommand, args, { cwd, timeoutMs });
68
- if (pathCommand.exitCode === 0)
69
- return pathCommand;
59
+ async function readActiveAgentLoopTask(cwd) {
60
+ const activeTaskPath = await readActiveTaskPath(cwd);
61
+ if (!activeTaskPath)
62
+ return null;
70
63
  return {
71
- exitCode: pathCommand.exitCode,
72
- stdout: pathCommand.stdout,
73
- stderr: `${localFailures.map(summarizeFailure).join("; ")}; npx fallback failed: ${summarizeFailure(fallback)}; PATH command failed: ${summarizeFailure(pathCommand)}`
64
+ available: true,
65
+ taskLinked: true,
66
+ summary: `Using active AgentLoopKit task. Active task: ${activeTaskPath}`,
67
+ warnings: []
74
68
  };
75
69
  }
76
- function repoLocalCommandCandidates(command, cwd) {
77
- if (!cwd || command.includes("/") || command.includes("\\"))
78
- return [];
79
- const executable = process.platform === "win32" ? `${command}.cmd` : command;
80
- return [join(cwd, "node_modules", ".bin", executable)];
81
- }
82
- function normalizeVersion(output) {
83
- const trimmed = output.trim();
84
- const match = trimmed.match(/\bv?(\d+\.\d+\.\d+(?:[-+][0-9A-Za-z.-]+)?)\b/);
85
- return match?.[1] ?? trimmed;
70
+ async function readActiveTaskPath(cwd) {
71
+ try {
72
+ const raw = await readFile(join(cwd, ".agentloop", "state.json"), "utf8");
73
+ const parsed = JSON.parse(raw);
74
+ return typeof parsed.activeTaskPath === "string" && parsed.activeTaskPath.trim()
75
+ ? parsed.activeTaskPath
76
+ : null;
77
+ }
78
+ catch {
79
+ return null;
80
+ }
86
81
  }
87
82
  //# sourceMappingURL=agentloopkit.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"agentloopkit.js","sourceRoot":"","sources":["../../src/adapters/agentloopkit.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agentloopkit.js","sourceRoot":"","sources":["../../src/adapters/agentloopkit.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ export interface InspectProjScanOptions {
4
4
  cwd?: string;
5
5
  run?: CommandRunner;
6
6
  command?: string;
7
+ includeHelp?: boolean | undefined;
7
8
  }
8
9
  export declare function inspectProjScan(options?: InspectProjScanOptions): Promise<ToolAdapterResult>;
9
10
  export declare function runProjScanBaseline(cwd: string, run?: CommandRunner): Promise<ToolAdapterResult>;
@@ -1 +1 @@
1
- {"version":3,"file":"projscan.d.ts","sourceRoot":"","sources":["../../src/adapters/projscan.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAE3D,MAAM,WAAW,sBAAsB;IACrC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,aAAa,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAsB,eAAe,CACnC,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,iBAAiB,CAAC,CA+B5B;AAED,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,MAAM,EACX,GAAG,GAAE,aAA0B,GAC9B,OAAO,CAAC,iBAAiB,CAAC,CAsB5B"}
1
+ {"version":3,"file":"projscan.d.ts","sourceRoot":"","sources":["../../src/adapters/projscan.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAK3D,MAAM,WAAW,sBAAsB;IACrC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,aAAa,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACnC;AAED,wBAAsB,eAAe,CACnC,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,iBAAiB,CAAC,CAwC5B;AAED,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,MAAM,EACX,GAAG,GAAE,aAA0B,GAC9B,OAAO,CAAC,iBAAiB,CAAC,CA0B5B"}
@@ -1,33 +1,59 @@
1
- import { join } from "node:path";
2
1
  import { runCommand } from "../core/process.js";
2
+ import { normalizeCliVersion, runToolWithFallback, summarizeToolFailure } from "./tool-runner.js";
3
+ const PROJSCAN_BASELINE_TIMEOUT_MS = 1_500;
3
4
  export async function inspectProjScan(options = {}) {
4
5
  const run = options.run ?? runCommand;
5
6
  const command = options.command ?? "projscan";
6
- const version = await runWithFallback(run, command, "projscan@latest", ["--version"], options.cwd);
7
+ const version = await runToolWithFallback({
8
+ run,
9
+ localCommand: command,
10
+ packageName: "projscan@latest",
11
+ args: ["--version"],
12
+ cwd: options.cwd
13
+ });
7
14
  if (version.exitCode !== 0) {
8
15
  return {
9
16
  available: false,
10
- warnings: [`ProjScan unavailable: ${summarizeFailure(version)}`]
17
+ warnings: [`ProjScan unavailable: ${summarizeToolFailure(version)}`]
11
18
  };
12
19
  }
13
- const help = await runWithFallback(run, command, "projscan@latest", ["--help"], options.cwd);
14
20
  const result = {
15
21
  available: true,
16
- version: normalizeVersion(version.stdout),
22
+ version: normalizeCliVersion(version.stdout),
17
23
  summary: "ProjScan available for repo intelligence and risk analysis.",
18
24
  warnings: []
19
25
  };
20
- if (help.exitCode !== 0) {
21
- result.warnings.push(`ProjScan help failed: ${summarizeFailure(help)}`);
26
+ if (options.includeHelp !== false) {
27
+ const help = await runToolWithFallback({
28
+ run,
29
+ localCommand: command,
30
+ packageName: "projscan@latest",
31
+ args: ["--help"],
32
+ cwd: options.cwd
33
+ });
34
+ if (help.exitCode !== 0) {
35
+ result.warnings.push(`ProjScan help failed: ${summarizeToolFailure(help)}`);
36
+ }
22
37
  }
23
38
  return result;
24
39
  }
25
40
  export async function runProjScanBaseline(cwd, run = runCommand) {
26
- const result = await runWithFallback(run, "projscan", "projscan@latest", ["start", "--intent", "Build AgentFlight, a local-first flight recorder for AI coding agents"], cwd, 20_000);
41
+ const result = await runToolWithFallback({
42
+ run,
43
+ localCommand: "projscan",
44
+ packageName: "projscan@latest",
45
+ args: [
46
+ "start",
47
+ "--intent",
48
+ "Build AgentFlight, a local-first review layer for coding agent sessions"
49
+ ],
50
+ cwd,
51
+ timeoutMs: PROJSCAN_BASELINE_TIMEOUT_MS
52
+ });
27
53
  if (result.exitCode !== 0) {
28
54
  return {
29
- available: false,
30
- warnings: [`ProjScan baseline failed: ${summarizeFailure(result)}`]
55
+ available: true,
56
+ warnings: [`ProjScan baseline skipped: ${summarizeToolFailure(result)}`]
31
57
  };
32
58
  }
33
59
  return {
@@ -36,38 +62,4 @@ export async function runProjScanBaseline(cwd, run = runCommand) {
36
62
  warnings: []
37
63
  };
38
64
  }
39
- function summarizeFailure(result) {
40
- return (result.stderr || result.stdout || "no output").trim();
41
- }
42
- async function runWithFallback(run, localCommand, packageName, args, cwd, timeoutMs = 10_000) {
43
- const localFailures = [];
44
- for (const candidate of repoLocalCommandCandidates(localCommand, cwd)) {
45
- const local = await run(candidate, args, { cwd, timeoutMs });
46
- if (local.exitCode === 0)
47
- return local;
48
- localFailures.push(local);
49
- }
50
- const fallback = await run("npx", ["--yes", packageName, ...args], { cwd, timeoutMs });
51
- if (fallback.exitCode === 0)
52
- return fallback;
53
- const pathCommand = await run(localCommand, args, { cwd, timeoutMs });
54
- if (pathCommand.exitCode === 0)
55
- return pathCommand;
56
- return {
57
- exitCode: pathCommand.exitCode,
58
- stdout: pathCommand.stdout,
59
- stderr: `${localFailures.map(summarizeFailure).join("; ")}; npx fallback failed: ${summarizeFailure(fallback)}; PATH command failed: ${summarizeFailure(pathCommand)}`
60
- };
61
- }
62
- function repoLocalCommandCandidates(command, cwd) {
63
- if (!cwd || command.includes("/") || command.includes("\\"))
64
- return [];
65
- const executable = process.platform === "win32" ? `${command}.cmd` : command;
66
- return [join(cwd, "node_modules", ".bin", executable)];
67
- }
68
- function normalizeVersion(output) {
69
- const trimmed = output.trim();
70
- const match = trimmed.match(/\bv?(\d+\.\d+\.\d+(?:[-+][0-9A-Za-z.-]+)?)\b/);
71
- return match?.[1] ?? trimmed;
72
- }
73
65
  //# sourceMappingURL=projscan.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"projscan.js","sourceRoot":"","sources":["../../src/adapters/projscan.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"projscan.js","sourceRoot":"","sources":["../../src/adapters/projscan.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAElG,MAAM,4BAA4B,GAAG,KAAK,CAAC;AAS3C,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,UAAkC,EAAE;IAEpC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,UAAU,CAAC;IACtC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,UAAU,CAAC;IAC9C,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC;QACxC,GAAG;QACH,YAAY,EAAE,OAAO;QACrB,WAAW,EAAE,iBAAiB;QAC9B,IAAI,EAAE,CAAC,WAAW,CAAC;QACnB,GAAG,EAAE,OAAO,CAAC,GAAG;KACjB,CAAC,CAAC;IAEH,IAAI,OAAO,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO;YACL,SAAS,EAAE,KAAK;YAChB,QAAQ,EAAE,CAAC,yBAAyB,oBAAoB,CAAC,OAAO,CAAC,EAAE,CAAC;SACrE,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAsB;QAChC,SAAS,EAAE,IAAI;QACf,OAAO,EAAE,mBAAmB,CAAC,OAAO,CAAC,MAAM,CAAC;QAC5C,OAAO,EAAE,6DAA6D;QACtE,QAAQ,EAAE,EAAE;KACb,CAAC;IAEF,IAAI,OAAO,CAAC,WAAW,KAAK,KAAK,EAAE,CAAC;QAClC,MAAM,IAAI,GAAG,MAAM,mBAAmB,CAAC;YACrC,GAAG;YACH,YAAY,EAAE,OAAO;YACrB,WAAW,EAAE,iBAAiB;YAC9B,IAAI,EAAE,CAAC,QAAQ,CAAC;YAChB,GAAG,EAAE,OAAO,CAAC,GAAG;SACjB,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;YACxB,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,yBAAyB,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC9E,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,GAAW,EACX,MAAqB,UAAU;IAE/B,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC;QACvC,GAAG;QACH,YAAY,EAAE,UAAU;QACxB,WAAW,EAAE,iBAAiB;QAC9B,IAAI,EAAE;YACJ,OAAO;YACP,UAAU;YACV,yEAAyE;SAC1E;QACD,GAAG;QACH,SAAS,EAAE,4BAA4B;KACxC,CAAC,CAAC;IAEH,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO;YACL,SAAS,EAAE,IAAI;YACf,QAAQ,EAAE,CAAC,8BAA8B,oBAAoB,CAAC,MAAM,CAAC,EAAE,CAAC;SACzE,CAAC;IACJ,CAAC;IAED,OAAO;QACL,SAAS,EAAE,IAAI;QACf,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE;QAChE,QAAQ,EAAE,EAAE;KACb,CAAC;AACJ,CAAC"}
@@ -0,0 +1,16 @@
1
+ import type { CommandResult, CommandRunner } from "../core/process.js";
2
+ export interface RunToolWithFallbackOptions {
3
+ run: CommandRunner;
4
+ localCommand: string;
5
+ packageName: string;
6
+ args: string[];
7
+ cwd?: string | undefined;
8
+ timeoutMs?: number | undefined;
9
+ }
10
+ export declare function runToolWithFallback(options: RunToolWithFallbackOptions): Promise<CommandResult>;
11
+ export declare function summarizeToolFailure(result: {
12
+ stdout: string;
13
+ stderr: string;
14
+ }): string;
15
+ export declare function normalizeCliVersion(output: string): string;
16
+ //# sourceMappingURL=tool-runner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-runner.d.ts","sourceRoot":"","sources":["../../src/adapters/tool-runner.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEvE,MAAM,WAAW,0BAA0B;IACzC,GAAG,EAAE,aAAa,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAChC;AAED,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,0BAA0B,GAClC,OAAO,CAAC,aAAa,CAAC,CA0BxB;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAEvF;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAI1D"}
@@ -0,0 +1,43 @@
1
+ import { join } from "node:path";
2
+ export async function runToolWithFallback(options) {
3
+ const timeoutMs = options.timeoutMs ?? 10_000;
4
+ const localFailures = [];
5
+ for (const candidate of repoLocalCommandCandidates(options.localCommand, options.cwd)) {
6
+ const local = await options.run(candidate, options.args, { cwd: options.cwd, timeoutMs });
7
+ if (local.exitCode === 0)
8
+ return local;
9
+ localFailures.push(local);
10
+ }
11
+ const fallback = await options.run("npx", ["--yes", options.packageName, ...options.args], {
12
+ cwd: options.cwd,
13
+ timeoutMs
14
+ });
15
+ if (fallback.exitCode === 0)
16
+ return fallback;
17
+ const pathCommand = await options.run(options.localCommand, options.args, {
18
+ cwd: options.cwd,
19
+ timeoutMs
20
+ });
21
+ if (pathCommand.exitCode === 0)
22
+ return pathCommand;
23
+ return {
24
+ exitCode: pathCommand.exitCode,
25
+ stdout: pathCommand.stdout,
26
+ stderr: `${localFailures.map(summarizeToolFailure).join("; ")}; npx fallback failed: ${summarizeToolFailure(fallback)}; PATH command failed: ${summarizeToolFailure(pathCommand)}`
27
+ };
28
+ }
29
+ export function summarizeToolFailure(result) {
30
+ return (result.stderr || result.stdout || "no output").trim();
31
+ }
32
+ export function normalizeCliVersion(output) {
33
+ const trimmed = output.trim();
34
+ const match = trimmed.match(/\bv?(\d+\.\d+\.\d+(?:[-+][0-9A-Za-z.-]+)?)\b/);
35
+ return match?.[1] ?? trimmed;
36
+ }
37
+ function repoLocalCommandCandidates(command, cwd) {
38
+ if (!cwd || command.includes("/") || command.includes("\\"))
39
+ return [];
40
+ const executable = process.platform === "win32" ? `${command}.cmd` : command;
41
+ return [join(cwd, "node_modules", ".bin", executable)];
42
+ }
43
+ //# sourceMappingURL=tool-runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-runner.js","sourceRoot":"","sources":["../../src/adapters/tool-runner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAYjC,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,OAAmC;IAEnC,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,MAAM,CAAC;IAC9C,MAAM,aAAa,GAAoB,EAAE,CAAC;IAC1C,KAAK,MAAM,SAAS,IAAI,0BAA0B,CAAC,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACtF,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC;QAC1F,IAAI,KAAK,CAAC,QAAQ,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QACvC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,WAAW,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE;QACzF,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,SAAS;KACV,CAAC,CAAC;IACH,IAAI,QAAQ,CAAC,QAAQ,KAAK,CAAC;QAAE,OAAO,QAAQ,CAAC;IAE7C,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC,IAAI,EAAE;QACxE,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,SAAS;KACV,CAAC,CAAC;IACH,IAAI,WAAW,CAAC,QAAQ,KAAK,CAAC;QAAE,OAAO,WAAW,CAAC;IAEnD,OAAO;QACL,QAAQ,EAAE,WAAW,CAAC,QAAQ;QAC9B,MAAM,EAAE,WAAW,CAAC,MAAM;QAC1B,MAAM,EAAE,GAAG,aAAa,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,0BAA0B,oBAAoB,CAAC,QAAQ,CAAC,0BAA0B,oBAAoB,CAAC,WAAW,CAAC,EAAE;KACnL,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,MAA0C;IAC7E,OAAO,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,IAAI,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC;AAChE,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,MAAc;IAChD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;IAC9B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAC;IAC5E,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC;AAC/B,CAAC;AAED,SAAS,0BAA0B,CAAC,OAAe,EAAE,GAAY;IAC/D,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IACvE,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;IAC7E,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;AACzD,CAAC"}
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAYpC,wBAAgB,SAAS,IAAI,OAAO,CAwGnC;AAeD,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAG5F"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAcpC,wBAAgB,SAAS,IAAI,OAAO,CA8InC;AAeD,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAG5F"}
package/dist/cli.js CHANGED
@@ -5,6 +5,8 @@ import { fileURLToPath } from "node:url";
5
5
  import { Command } from "commander";
6
6
  import { getRepositoryRoot } from "./core/git.js";
7
7
  import { runDoctorCommand } from "./commands/doctor.js";
8
+ import { runHandoffCommand } from "./commands/handoff.js";
9
+ import { runHistoryCommand } from "./commands/history.js";
8
10
  import { runInitCommand } from "./commands/init.js";
9
11
  import { runReplayCommand } from "./commands/replay.js";
10
12
  import { runReportCommand } from "./commands/report.js";
@@ -17,7 +19,7 @@ export function createCli() {
17
19
  const program = new Command();
18
20
  program
19
21
  .name("agentflight")
20
- .description("Local-first flight recorder for AI coding agents.")
22
+ .description("Local-first review layer for coding agent sessions.")
21
23
  .version(readPackageVersion());
22
24
  program
23
25
  .command("init")
@@ -27,7 +29,7 @@ export function createCli() {
27
29
  });
28
30
  program
29
31
  .command("start")
30
- .description("Start or resume an AI coding session.")
32
+ .description("Start or resume a coding agent session.")
31
33
  .requiredOption("--task <task>", "task title")
32
34
  .option("-y, --yes", "initialise safely if AgentFlight is missing")
33
35
  .action(async (options) => {
@@ -40,19 +42,25 @@ export function createCli() {
40
42
  program
41
43
  .command("status")
42
44
  .description("Show what changed since the session started.")
43
- .action(async () => {
44
- await printResult(runStatusCommand({ repoRoot: await getRepositoryRoot(process.cwd()) }));
45
+ .option("--format <format>", "status output format: text or json", "text")
46
+ .action(async (options) => {
47
+ await printResult(runStatusCommand({
48
+ repoRoot: await getRepositoryRoot(process.cwd()),
49
+ format: options.format
50
+ }));
45
51
  });
46
52
  program
47
53
  .command("verify")
48
54
  .description("Run verification and capture local evidence for the current session.")
55
+ .option("--profile <name>", "run a named verification profile from .agentflight/config.json")
49
56
  .allowUnknownOption(true)
50
57
  .allowExcessArguments(true)
51
58
  .argument("[command...]", "verification command to run after --")
52
- .action(async (commandArgs) => {
59
+ .action(async (commandArgs, options) => {
53
60
  await printResult(runVerifyCommand({
54
61
  repoRoot: await getRepositoryRoot(process.cwd()),
55
62
  commandArgs,
63
+ profile: options.profile,
56
64
  onHeartbeat: (message) => console.log(message)
57
65
  }));
58
66
  });
@@ -69,8 +77,9 @@ export function createCli() {
69
77
  program
70
78
  .command("report")
71
79
  .description("Generate a Markdown proof report for the current session.")
72
- .action(async () => {
73
- await printResult(runReportCommand({ repoRoot: await getRepositoryRoot(process.cwd()) }));
80
+ .option("--mode <mode>", "Markdown report mode: full, compact, or pr-comment", "full")
81
+ .action(async (options) => {
82
+ await printResult(runReportCommand({ repoRoot: await getRepositoryRoot(process.cwd()), mode: options.mode }));
74
83
  });
75
84
  program
76
85
  .command("replay")
@@ -84,6 +93,26 @@ export function createCli() {
84
93
  .action(async () => {
85
94
  await printResult(runResumeCommand({ repoRoot: await getRepositoryRoot(process.cwd()) }));
86
95
  });
96
+ program
97
+ .command("handoff")
98
+ .description("Generate a local review handoff for the current session.")
99
+ .action(async () => {
100
+ await printResult(runHandoffCommand({ repoRoot: await getRepositoryRoot(process.cwd()) }));
101
+ });
102
+ program
103
+ .command("history")
104
+ .description("List recent local AgentFlight sessions.")
105
+ .option("--limit <count>", "number of recent sessions to show")
106
+ .option("--task <text>", "filter sessions by task title text")
107
+ .option("--state <state>", "filter sessions by state: ready, blocked, needs_verification, unknown, current")
108
+ .action(async (options) => {
109
+ await printResult(runHistoryCommand({
110
+ repoRoot: await getRepositoryRoot(process.cwd()),
111
+ limit: options.limit === undefined ? undefined : Number(options.limit),
112
+ task: options.task,
113
+ state: options.state
114
+ }));
115
+ });
87
116
  program
88
117
  .command("doctor")
89
118
  .description("Check whether AgentFlight is correctly configured.")
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACvC,YAAY,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACnC,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAC3C,iBAAiB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACxC,qBAAqB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC5C,GAAG,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;CACxB;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,YAAY,CAAC;CACtB;AAED,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,mBAAmB,CAAC,CAgD9B"}
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACvC,YAAY,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACnC,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAC3C,iBAAiB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACxC,qBAAqB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC5C,GAAG,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;CACxB;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,YAAY,CAAC;CACtB;AAED,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,mBAAmB,CAAC,CAkE9B"}
@@ -2,12 +2,15 @@ import { readFile } from "node:fs/promises";
2
2
  import { join } from "node:path";
3
3
  import { inspectAgentLoopKit } from "../adapters/agentloopkit.js";
4
4
  import { inspectProjScan } from "../adapters/projscan.js";
5
+ import { filterChangedFiles } from "../core/changed-files.js";
6
+ import { loadConfig } from "../core/config.js";
5
7
  import { evaluateDoctorChecks } from "../core/doctor.js";
6
8
  import { isPathWritable, pathExists } from "../core/fs-safe.js";
7
9
  import { getRepositoryRoot } from "../core/git.js";
8
10
  import { renderStatus } from "../core/output.js";
9
11
  import { detectPackageManager, readPackageJson } from "../core/project.js";
10
12
  import { runCommand } from "../core/process.js";
13
+ import { detectVerificationCommands } from "../core/verification.js";
11
14
  import { resolveAgentFlightPaths } from "../core/paths.js";
12
15
  import { appendSessionEvent } from "../core/session.js";
13
16
  import { readCurrentSession } from "./status.js";
@@ -15,6 +18,7 @@ export async function runDoctorCommand(options) {
15
18
  const paths = resolveAgentFlightPaths(options.repoRoot);
16
19
  const packageJson = await readPackageJson(options.repoRoot);
17
20
  const scripts = packageJson.scripts ?? {};
21
+ const detectedVerificationCommands = detectVerificationCommands(packageJson);
18
22
  const [npmVersion, repoRoot, packageManager, projscan, agentloopkit] = await Promise.all([
19
23
  options.npmVersion !== undefined
20
24
  ? Promise.resolve(options.npmVersion)
@@ -30,6 +34,16 @@ export async function runDoctorCommand(options) {
30
34
  ? Promise.resolve({ available: options.agentloopkitAvailable })
31
35
  : inspectAgentLoopKit({ cwd: options.repoRoot })
32
36
  ]);
37
+ const configValid = await isConfigValid(paths.config);
38
+ const projscanMemoryPresent = await pathExists(join(options.repoRoot, ".projscan-memory", "memory.json"));
39
+ const config = configValid ? await loadConfig(options.repoRoot) : null;
40
+ const configuredVerificationCommands = Array.isArray(config?.verification?.commands)
41
+ ? config.verification.commands.length
42
+ : undefined;
43
+ const projscanMemoryIgnored = projscanMemoryPresent &&
44
+ filterChangedFiles([".projscan-memory/memory.json"], {
45
+ ignore: config?.changedFileFilters?.ignore
46
+ }).length === 0;
33
47
  const result = evaluateDoctorChecks({
34
48
  nodeVersion: options.nodeVersion ?? process.version,
35
49
  npmVersion,
@@ -38,11 +52,15 @@ export async function runDoctorCommand(options) {
38
52
  packageManager,
39
53
  repoRoot,
40
54
  agentFlightExists: await pathExists(paths.root),
41
- configValid: await isConfigValid(paths.config),
55
+ configValid,
42
56
  writable: await isPathWritable(paths.root),
43
57
  currentSessionExists: await pathExists(paths.currentSession),
44
58
  projscanAvailable: projscan.available,
45
59
  agentloopkitAvailable: agentloopkit.available,
60
+ configuredVerificationCommands,
61
+ detectedVerificationCommands,
62
+ projscanMemoryPresent,
63
+ projscanMemoryIgnored,
46
64
  scripts: {
47
65
  test: Boolean(scripts.test),
48
66
  build: Boolean(scripts.build),
@@ -90,10 +108,16 @@ Overall: ${renderStatus(result.status)}
90
108
 
91
109
  ${result.checks
92
110
  .map((check) => {
93
- const fix = check.suggestedFix ? `\n Suggested fix: ${check.suggestedFix}` : "";
111
+ const fix = check.suggestedFix ? `\n${renderSuggestedFix(check.suggestedFix)}` : "";
94
112
  return `- ${renderStatus(check.status)} ${check.name}: ${check.message}${fix}`;
95
113
  })
96
114
  .join("\n")}
97
115
  `;
98
116
  }
117
+ function renderSuggestedFix(suggestedFix) {
118
+ const lines = suggestedFix.split("\n");
119
+ if (lines.length === 1)
120
+ return ` Suggested fix: ${suggestedFix}`;
121
+ return [" Suggested fix:", ...lines.map((line) => ` ${line}`)].join("\n");
122
+ }
99
123
  //# sourceMappingURL=doctor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ export interface HandoffCommandOptions {
2
+ repoRoot: string;
3
+ changedFiles?: string[] | undefined;
4
+ now?: Date | undefined;
5
+ }
6
+ export interface HandoffCommandResult {
7
+ output: string;
8
+ exitCode: number;
9
+ handoffPath: string;
10
+ sessionHandoffPath: string;
11
+ reportPath: string;
12
+ replayPath: string;
13
+ resumePath: string;
14
+ sessionResumePath: string;
15
+ }
16
+ export declare function runHandoffCommand(options: HandoffCommandOptions): Promise<HandoffCommandResult>;
17
+ //# sourceMappingURL=handoff.d.ts.map