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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handoff.d.ts","sourceRoot":"","sources":["../../src/commands/handoff.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,qBAAqB;IACpC,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,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AA2DD,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,oBAAoB,CAAC,CAgC/B"}
@@ -0,0 +1,286 @@
1
+ import { pathExists, writeTextFileSafe } from "../core/fs-safe.js";
2
+ import { compactCommandInText, formatVerificationCountLine } from "../core/output.js";
3
+ import { formatRepoRelativePath, resolveAgentFlightPaths } from "../core/paths.js";
4
+ import { runReplayCommand } from "./replay.js";
5
+ import { runReportCommand } from "./report.js";
6
+ import { runResumeCommand } from "./resume.js";
7
+ import { runStatusCommand } from "./status.js";
8
+ export async function runHandoffCommand(options) {
9
+ const status = await readHandoffStatus(options);
10
+ const paths = resolveAgentFlightPaths(options.repoRoot);
11
+ const artifactPaths = buildHandoffArtifactPaths(paths, status.sessionId);
12
+ const preserveExistingArtifacts = await shouldPreserveExistingArtifacts(status, artifactPaths);
13
+ const artifacts = preserveExistingArtifacts
14
+ ? artifactPaths
15
+ : await generateReviewArtifacts(options, artifactPaths);
16
+ const output = renderHandoff({
17
+ status,
18
+ handoffPath: formatRepoRelativePath(options.repoRoot, artifacts.sessionHandoffPath),
19
+ currentHandoffPath: formatRepoRelativePath(options.repoRoot, artifacts.handoffPath),
20
+ reportPath: formatRepoRelativePath(options.repoRoot, artifacts.reportPath),
21
+ replayPath: formatRepoRelativePath(options.repoRoot, artifacts.replayPath),
22
+ resumePath: formatRepoRelativePath(options.repoRoot, artifacts.sessionResumePath),
23
+ currentResumePath: formatRepoRelativePath(options.repoRoot, artifacts.resumePath)
24
+ });
25
+ await writeTextFileSafe(artifactPaths.handoffPath, output, { overwrite: true });
26
+ if (!preserveExistingArtifacts) {
27
+ await writeTextFileSafe(artifactPaths.sessionHandoffPath, output, { overwrite: true });
28
+ }
29
+ return {
30
+ output,
31
+ exitCode: exitsSuccessfully(status.review.readiness) ? 0 : 1,
32
+ handoffPath: artifactPaths.handoffPath,
33
+ sessionHandoffPath: artifactPaths.sessionHandoffPath,
34
+ reportPath: artifacts.reportPath,
35
+ replayPath: artifacts.replayPath,
36
+ resumePath: artifacts.resumePath,
37
+ sessionResumePath: artifacts.sessionResumePath
38
+ };
39
+ }
40
+ function buildHandoffArtifactPaths(paths, sessionId) {
41
+ return {
42
+ handoffPath: paths.currentHandoff,
43
+ sessionHandoffPath: `${paths.reports}/${sessionId}-handoff.md`,
44
+ reportPath: `${paths.reports}/${sessionId}-proof.md`,
45
+ replayPath: `${paths.reports}/${sessionId}-replay.html`,
46
+ resumePath: paths.currentResumePrompt,
47
+ sessionResumePath: `${paths.reports}/${sessionId}-resume.md`
48
+ };
49
+ }
50
+ async function shouldPreserveExistingArtifacts(status, paths) {
51
+ if (status.review.readiness.state !== "clean_worktree")
52
+ return false;
53
+ const checks = await Promise.all([
54
+ pathExists(paths.sessionHandoffPath),
55
+ pathExists(paths.reportPath),
56
+ pathExists(paths.replayPath),
57
+ pathExists(paths.resumePath),
58
+ pathExists(paths.sessionResumePath)
59
+ ]);
60
+ return checks.every(Boolean);
61
+ }
62
+ async function generateReviewArtifacts(options, artifactPaths) {
63
+ const report = await runReportCommand({
64
+ repoRoot: options.repoRoot,
65
+ changedFiles: options.changedFiles,
66
+ now: options.now
67
+ });
68
+ const replay = await runReplayCommand({
69
+ repoRoot: options.repoRoot,
70
+ changedFiles: options.changedFiles,
71
+ now: options.now
72
+ });
73
+ const resume = await runResumeCommand({
74
+ repoRoot: options.repoRoot,
75
+ changedFiles: options.changedFiles,
76
+ now: options.now
77
+ });
78
+ return {
79
+ handoffPath: artifactPaths.handoffPath,
80
+ sessionHandoffPath: artifactPaths.sessionHandoffPath,
81
+ reportPath: report.reportPath,
82
+ replayPath: replay.replayPath,
83
+ resumePath: resume.resumePath,
84
+ sessionResumePath: resume.sessionResumePath
85
+ };
86
+ }
87
+ async function readHandoffStatus(options) {
88
+ const status = await runStatusCommand({
89
+ repoRoot: options.repoRoot,
90
+ changedFiles: options.changedFiles,
91
+ now: options.now,
92
+ format: "json"
93
+ });
94
+ return parseHandoffStatus(JSON.parse(status.output));
95
+ }
96
+ function renderHandoff(input) {
97
+ const readiness = input.status.review.readiness;
98
+ const ready = isReadyForSharing(readiness);
99
+ const needsFix = needsFixBeforeSharing(readiness);
100
+ return `AgentFlight handoff
101
+
102
+ Task:
103
+ ${input.status.taskTitle}
104
+
105
+ Session:
106
+ ${input.status.sessionId}
107
+
108
+ Changed files: ${input.status.changedFileCount}
109
+ Risk: ${input.status.riskLevel}
110
+
111
+ Readiness: ${readiness.label}
112
+ Reason: ${formatReadinessReason(readiness, input.status.reason)}
113
+
114
+ Verification:
115
+ ${formatVerificationCountLine(input.status.verification)}
116
+ ${formatVerificationDetails(input.status.verification.runs, hasUnresolvedFailedVerification(input.status.review.proofGaps))}
117
+
118
+ Review first:
119
+ ${formatReviewFocus(input.status.review.focus.slice(0, 3))}
120
+
121
+ Proof gaps:
122
+ ${formatProofGaps(input.status.review.proofGaps)}
123
+
124
+ ${needsFix ? "Fix before sharing" : "Next action"}:
125
+ ${formatNextAction(readiness, input.status.nextAction)}
126
+
127
+ Open first: ${formatOpenFirstArtifact(ready, input.handoffPath, input.reportPath)}
128
+
129
+ Artifacts:
130
+ - Handoff: ${input.handoffPath}
131
+ - Current handoff: ${input.currentHandoffPath}
132
+ - Report: ${input.reportPath}
133
+ - Replay: ${input.replayPath}
134
+ - Resume: ${input.resumePath}
135
+ - Current resume: ${input.currentResumePath}
136
+
137
+ Local only: no upload, no telemetry, no automatic PR comment.
138
+ `;
139
+ }
140
+ function isReadyForSharing(readiness) {
141
+ return readiness.state === "ready_for_review";
142
+ }
143
+ function exitsSuccessfully(readiness) {
144
+ return readiness.state === "ready_for_review" || readiness.state === "clean_worktree";
145
+ }
146
+ function formatOpenFirstArtifact(ready, handoffPath, reportPath) {
147
+ return ready ? `handoff ${handoffPath}` : `report ${reportPath}`;
148
+ }
149
+ function needsFixBeforeSharing(readiness) {
150
+ return (readiness.state === "blocked_by_failed_verification" ||
151
+ readiness.state === "needs_verification" ||
152
+ readiness.state === "not_ready_for_review");
153
+ }
154
+ function hasUnresolvedFailedVerification(gaps) {
155
+ return gaps.some((gap) => gap.id === "failed-verification");
156
+ }
157
+ function formatReadinessReason(readiness, fallback) {
158
+ if (readiness.state === "blocked_by_failed_verification") {
159
+ return "A verification command failed and must be fixed or rerun successfully.";
160
+ }
161
+ return compactCommandInText(readiness.reason || fallback, readiness.suggestedCommand);
162
+ }
163
+ function formatNextAction(readiness, fallback) {
164
+ if (readiness.state === "blocked_by_failed_verification") {
165
+ return "Fix the failed command, rerun verification, then regenerate this handoff.";
166
+ }
167
+ if (readiness.state === "ready_for_review") {
168
+ return "Share the local handoff packet for scoped review; use report/replay for details.";
169
+ }
170
+ return compactCommandInText(readiness.nextAction || fallback, readiness.suggestedCommand);
171
+ }
172
+ function formatVerificationDetails(runs, showFailedExcerpts) {
173
+ if (runs.length === 0)
174
+ return "- No verification runs recorded.";
175
+ const failedExcerpts = runs
176
+ .filter((run) => run.status === "failed" && run.outputExcerpt)
177
+ .map((run) => run.outputExcerpt.trim())
178
+ .filter(Boolean);
179
+ if (!showFailedExcerpts && failedExcerpts.length > 0) {
180
+ return "- Historical failed verification excerpts remain in report/replay; no unresolved failed verification remains.";
181
+ }
182
+ if (failedExcerpts.length === 0)
183
+ return "- No failed verification excerpts recorded.";
184
+ return failedExcerpts
185
+ .map((excerpt, index) => `Failed verification excerpt${failedExcerpts.length > 1 ? ` ${index + 1}` : ""}:
186
+ ${excerpt}`)
187
+ .join("\n\n");
188
+ }
189
+ function formatReviewFocus(items) {
190
+ if (items.length === 0)
191
+ return "- No changed files to review.";
192
+ return items
193
+ .map((item) => `${item.rank}. ${item.file}\n Why: ${item.reasons.join("; ")}\n Focus: ${item.suggestedReviewerFocus}`)
194
+ .join("\n");
195
+ }
196
+ function formatProofGaps(gaps) {
197
+ if (gaps.length === 0)
198
+ return "- none";
199
+ return gaps.map(formatProofGap).join("\n");
200
+ }
201
+ function formatProofGap(gap) {
202
+ if (gap.id === "failed-verification") {
203
+ return `- ${gap.severity}: A verification command failed and must be fixed or rerun successfully.`;
204
+ }
205
+ const message = compactCommandInText(gap.message, gap.suggestedCommand);
206
+ return `- ${gap.severity}: ${message}`;
207
+ }
208
+ function parseHandoffStatus(payload) {
209
+ const task = readObject(payload.task);
210
+ const session = readObject(payload.session);
211
+ const risk = readObject(payload.risk);
212
+ const verification = readObject(payload.verification);
213
+ const review = readObject(payload.review);
214
+ const readiness = parseReadiness(readObject(review.readiness));
215
+ return {
216
+ taskTitle: readString(task.title, "Untitled task"),
217
+ sessionId: readString(session.id, "unknown"),
218
+ riskLevel: readString(risk.level, "unknown"),
219
+ changedFileCount: readNumber(payload.changedFileCount, 0),
220
+ verification: {
221
+ passed: readNumber(verification.passed, 0),
222
+ failed: readNumber(verification.failed, 0),
223
+ unresolvedFailed: readNumber(verification.unresolvedFailed, readNumber(verification.failed, 0)),
224
+ resolvedFailed: readNumber(verification.resolvedFailed, 0),
225
+ runs: readArray(verification.runs).map(parseVerificationRun)
226
+ },
227
+ review: {
228
+ focus: readArray(review.focus).map(parseFocusItem),
229
+ proofGaps: readArray(review.proofGaps).map(parseProofGap),
230
+ readiness
231
+ },
232
+ reason: readString(payload.reason, readiness.reason),
233
+ nextAction: readString(payload.nextAction, readiness.nextAction)
234
+ };
235
+ }
236
+ function parseReadiness(value) {
237
+ return {
238
+ state: readString(value.state, "unknown"),
239
+ label: readString(value.label, "Unknown"),
240
+ reason: readString(value.reason, "No readiness reason recorded."),
241
+ nextAction: readString(value.nextAction, "Review the generated AgentFlight artifacts."),
242
+ ...(typeof value.suggestedCommand === "string"
243
+ ? { suggestedCommand: value.suggestedCommand }
244
+ : {})
245
+ };
246
+ }
247
+ function parseVerificationRun(value) {
248
+ const run = readObject(value);
249
+ return {
250
+ status: readString(run.status, "unknown"),
251
+ ...(typeof run.outputExcerpt === "string" ? { outputExcerpt: run.outputExcerpt } : {})
252
+ };
253
+ }
254
+ function parseFocusItem(value) {
255
+ const item = readObject(value);
256
+ return {
257
+ rank: readNumber(item.rank, 0),
258
+ file: readString(item.file, "unknown"),
259
+ reasons: readArray(item.reasons).map((reason) => readString(reason, "unknown")),
260
+ suggestedReviewerFocus: readString(item.suggestedReviewerFocus, "Inspect manually.")
261
+ };
262
+ }
263
+ function parseProofGap(value) {
264
+ const gap = readObject(value);
265
+ return {
266
+ id: readString(gap.id, "proof-gap"),
267
+ severity: readString(gap.severity, "info"),
268
+ message: readString(gap.message, "Proof gap recorded."),
269
+ ...(typeof gap.suggestedCommand === "string" ? { suggestedCommand: gap.suggestedCommand } : {})
270
+ };
271
+ }
272
+ function readObject(value) {
273
+ return typeof value === "object" && value !== null && !Array.isArray(value)
274
+ ? value
275
+ : {};
276
+ }
277
+ function readArray(value) {
278
+ return Array.isArray(value) ? value : [];
279
+ }
280
+ function readString(value, fallback) {
281
+ return typeof value === "string" && value.length > 0 ? value : fallback;
282
+ }
283
+ function readNumber(value, fallback) {
284
+ return typeof value === "number" && Number.isFinite(value) ? value : fallback;
285
+ }
286
+ //# sourceMappingURL=handoff.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handoff.js","sourceRoot":"","sources":["../../src/commands/handoff.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export interface HistoryCommandOptions {
2
+ repoRoot: string;
3
+ limit?: number | undefined;
4
+ task?: string | undefined;
5
+ state?: string | undefined;
6
+ }
7
+ export interface HistoryCommandResult {
8
+ output: string;
9
+ }
10
+ export declare function runHistoryCommand(options: HistoryCommandOptions): Promise<HistoryCommandResult>;
11
+ //# sourceMappingURL=history.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../../src/commands/history.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC5B;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,oBAAoB,CAAC,CAc/B"}
@@ -0,0 +1,251 @@
1
+ import { chooseOpenFirstArtifact, readReviewArtifacts } from "../core/artifacts.js";
2
+ import { formatVerificationCountLine } from "../core/output.js";
3
+ import { formatRepoRelativePath } from "../core/paths.js";
4
+ import { listSessionSummaries } from "../core/session.js";
5
+ import { readCurrentSession } from "./status.js";
6
+ export async function runHistoryCommand(options) {
7
+ const limit = normalizeLimit(options.limit);
8
+ const filters = normalizeHistoryFilters(options);
9
+ const history = await listSessionSummaries(options.repoRoot);
10
+ const currentSessionId = await readCurrentSessionId(options.repoRoot);
11
+ const sessions = applyHistoryFilters(history.sessions, filters, currentSessionId).slice(0, limit);
12
+ return {
13
+ output: `AgentFlight history
14
+
15
+ ${await formatSessions(options.repoRoot, sessions, currentSessionId, filters)}
16
+ ${formatSkipped(options.repoRoot, history.skipped)}
17
+ `
18
+ };
19
+ }
20
+ function normalizeLimit(limit) {
21
+ if (limit === undefined)
22
+ return 10;
23
+ if (!Number.isInteger(limit) || limit < 1) {
24
+ throw new Error("History limit must be a positive integer.");
25
+ }
26
+ return limit;
27
+ }
28
+ const historyStateFilterLabels = [
29
+ "ready",
30
+ "blocked",
31
+ "needs_verification",
32
+ "unknown",
33
+ "current"
34
+ ];
35
+ const historyStateAliases = new Map([
36
+ ["ready", "ready"],
37
+ ["ready_for_review", "ready"],
38
+ ["blocked", "blocked"],
39
+ ["blocked_by_failed_verification", "blocked"],
40
+ ["failed", "blocked"],
41
+ ["not_ready", "blocked"],
42
+ ["not_ready_for_review", "blocked"],
43
+ ["needs", "needs_verification"],
44
+ ["needs-verification", "needs_verification"],
45
+ ["needs_verification", "needs_verification"],
46
+ ["unknown", "unknown"],
47
+ ["current", "current"]
48
+ ]);
49
+ function normalizeHistoryFilters(options) {
50
+ const rawTask = normalizeOptionalText(options.task);
51
+ const rawState = normalizeOptionalText(options.state);
52
+ return {
53
+ task: rawTask ? rawTask.toLocaleLowerCase() : null,
54
+ state: rawState ? normalizeHistoryState(rawState) : null,
55
+ rawTask,
56
+ rawState
57
+ };
58
+ }
59
+ function normalizeOptionalText(value) {
60
+ if (value === undefined)
61
+ return null;
62
+ const trimmed = value.trim();
63
+ return trimmed.length > 0 ? trimmed : null;
64
+ }
65
+ function normalizeHistoryState(value) {
66
+ const normalized = value
67
+ .trim()
68
+ .toLocaleLowerCase()
69
+ .replace(/[\s-]+/g, "_");
70
+ const state = historyStateAliases.get(normalized);
71
+ if (state)
72
+ return state;
73
+ throw new Error(`History state filter must be one of: ${historyStateFilterLabels.join(", ")}.`);
74
+ }
75
+ async function readCurrentSessionId(repoRoot) {
76
+ try {
77
+ return (await readCurrentSession(repoRoot)).id;
78
+ }
79
+ catch {
80
+ return null;
81
+ }
82
+ }
83
+ async function formatSessions(repoRoot, sessions, currentSessionId, filters) {
84
+ if (sessions.length === 0) {
85
+ return hasHistoryFilters(filters) ? formatEmptyFilteredHistory(filters) : formatEmptyHistory();
86
+ }
87
+ const latestSession = sessions[0];
88
+ if (!latestSession) {
89
+ return formatEmptyHistory();
90
+ }
91
+ const latestAction = await formatLatestAction(repoRoot, latestSession, latestSession.id === currentSessionId, await findPreviousOpenFirstArtifact(repoRoot, sessions.slice(1)));
92
+ const lines = await Promise.all(sessions.map(async (session) => formatSession(repoRoot, session, session.id === currentSessionId)));
93
+ return `${formatFilters(filters)}${latestAction}
94
+
95
+ Recent sessions:
96
+ ${lines.join("\n")}`;
97
+ }
98
+ function formatEmptyHistory() {
99
+ return `No AgentFlight sessions recorded yet.
100
+
101
+ Next action:
102
+ Run agentflight start --task "Describe the task" to begin a local session.`;
103
+ }
104
+ function formatEmptyFilteredHistory(filters) {
105
+ return `No AgentFlight sessions matched the history filters.
106
+
107
+ ${formatFilters(filters)}Next action:
108
+ Run agentflight history without filters to list recent local sessions.`;
109
+ }
110
+ async function formatLatestAction(repoRoot, session, isCurrent, previousOpenFirst) {
111
+ const artifacts = await readReviewArtifacts(repoRoot, session.id);
112
+ const openFirst = chooseOpenFirstArtifact(session.latestReview?.state, artifacts);
113
+ const nextAction = isCurrent && openFirst === "none yet" ? formatMissingArtifactNextAction(session) : "";
114
+ const previousArtifact = isCurrent && openFirst === "none yet" && previousOpenFirst
115
+ ? `\nPrevious artifact: ${previousOpenFirst}`
116
+ : "";
117
+ return `Latest action:
118
+ Open first: ${openFirst}${nextAction}${previousArtifact}
119
+ Recorded readiness: ${formatReadiness(session)}
120
+ Task: ${session.taskTitle}`;
121
+ }
122
+ function formatMissingArtifactNextAction(session) {
123
+ return hasVerificationEvidence(session)
124
+ ? "\nNext: run agentflight handoff"
125
+ : "\nNext: run agentflight verify, then agentflight handoff";
126
+ }
127
+ async function formatSession(repoRoot, session, isCurrent) {
128
+ const marker = isCurrent ? " [current]" : "";
129
+ const branch = session.branch ?? "unknown";
130
+ const artifacts = await readReviewArtifacts(repoRoot, session.id);
131
+ const header = `- ${formatStartedAt(session.startedAt)}${marker} ${session.taskTitle}
132
+ ID: ${session.id}
133
+ Branch: ${branch}${session.dirty ? " (dirty at start)" : ""}`;
134
+ if (isStartOnlySession(session, isCurrent, artifacts)) {
135
+ return `${header}
136
+ Start only: no verification or review artifacts recorded.`;
137
+ }
138
+ return `${header}
139
+ Verification: ${formatVerificationCountLine({
140
+ passed: session.verificationPassed,
141
+ failed: session.verificationFailed,
142
+ unresolvedFailed: session.verificationUnresolvedFailed,
143
+ resolvedFailed: session.verificationResolvedFailed
144
+ })}
145
+ Recorded readiness: ${formatReadiness(session)}
146
+ Open first: ${chooseOpenFirstArtifact(session.latestReview?.state, artifacts)}
147
+ Handoff: ${artifacts.handoff}
148
+ Report: ${artifacts.report}
149
+ Replay: ${artifacts.replay}
150
+ Resume: ${artifacts.resume}`;
151
+ }
152
+ function isStartOnlySession(session, isCurrent, artifacts) {
153
+ if (isCurrent)
154
+ return false;
155
+ if (session.latestReview)
156
+ return false;
157
+ if (hasVerificationEvidence(session))
158
+ return false;
159
+ return !hasReviewArtifact(artifacts);
160
+ }
161
+ function hasVerificationEvidence(session) {
162
+ const counts = [
163
+ session.verificationPassed,
164
+ session.verificationFailed,
165
+ session.verificationUnresolvedFailed,
166
+ session.verificationResolvedFailed
167
+ ];
168
+ return counts.some((count) => count > 0);
169
+ }
170
+ function hasReviewArtifact(artifacts) {
171
+ return Object.values(artifacts).some((artifact) => artifact !== "missing");
172
+ }
173
+ function applyHistoryFilters(sessions, filters, currentSessionId) {
174
+ return sessions
175
+ .filter((session) => matchesTaskFilter(session, filters.task))
176
+ .filter((session) => matchesStateFilter(session, filters.state, currentSessionId));
177
+ }
178
+ function matchesTaskFilter(session, taskFilter) {
179
+ if (!taskFilter)
180
+ return true;
181
+ return session.taskTitle.toLocaleLowerCase().includes(taskFilter);
182
+ }
183
+ function matchesStateFilter(session, stateFilter, currentSessionId) {
184
+ if (!stateFilter)
185
+ return true;
186
+ if (stateFilter === "current")
187
+ return session.id === currentSessionId;
188
+ if (stateFilter === "unknown")
189
+ return !session.latestReview || session.latestReview.state === "unknown";
190
+ if (!session.latestReview)
191
+ return false;
192
+ if (stateFilter === "ready")
193
+ return session.latestReview.state === "ready_for_review";
194
+ if (stateFilter === "blocked") {
195
+ return (session.latestReview.state === "blocked_by_failed_verification" ||
196
+ session.latestReview.state === "not_ready_for_review");
197
+ }
198
+ return session.latestReview.state === "needs_verification";
199
+ }
200
+ function hasHistoryFilters(filters) {
201
+ return Boolean(filters.rawTask || filters.rawState);
202
+ }
203
+ function formatFilters(filters) {
204
+ if (!hasHistoryFilters(filters))
205
+ return "";
206
+ const lines = ["Filters:"];
207
+ if (filters.rawTask)
208
+ lines.push(`- Task contains: ${filters.rawTask}`);
209
+ if (filters.rawState)
210
+ lines.push(`- State: ${filters.rawState}`);
211
+ return `${lines.join("\n")}\n\n`;
212
+ }
213
+ function formatReadiness(session) {
214
+ const review = session.latestReview;
215
+ if (!review)
216
+ return "not recorded";
217
+ return `${review.label} (risk ${review.riskLevel}, ${formatChangedFiles(review.changedFiles)})`;
218
+ }
219
+ async function findPreviousOpenFirstArtifact(repoRoot, sessions) {
220
+ for (const session of sessions) {
221
+ const artifacts = await readReviewArtifacts(repoRoot, session.id);
222
+ const openFirst = chooseOpenFirstArtifact(session.latestReview?.state, artifacts);
223
+ if (openFirst !== "none yet")
224
+ return openFirst;
225
+ }
226
+ return null;
227
+ }
228
+ function formatChangedFiles(count) {
229
+ return `${count} changed ${count === 1 ? "file" : "files"}`;
230
+ }
231
+ function formatStartedAt(startedAt) {
232
+ const date = new Date(startedAt);
233
+ if (Number.isNaN(date.getTime()))
234
+ return startedAt;
235
+ return date.toISOString().replace("T", " ").slice(0, 16);
236
+ }
237
+ function formatSkipped(repoRoot, skipped) {
238
+ if (skipped.length === 0)
239
+ return "";
240
+ const visiblePaths = skipped
241
+ .map((file) => formatRepoRelativePath(repoRoot, file.path))
242
+ .sort((left, right) => left.localeCompare(right))
243
+ .slice(0, 3);
244
+ const omitted = skipped.length - visiblePaths.length;
245
+ const omittedLine = omitted > 0
246
+ ? `\n... ${omitted} more malformed session ${omitted === 1 ? "file" : "files"} omitted.`
247
+ : "";
248
+ return `\nSkipped malformed sessions:
249
+ ${visiblePaths.map((path) => `- ${path}`).join("\n")}${omittedLine}`;
250
+ }
251
+ //# sourceMappingURL=history.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"history.js","sourceRoot":"","sources":["../../src/commands/history.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,11 @@
1
+ import type { ToolAdapterResult } from "../types/index.js";
1
2
  export interface InitCommandOptions {
2
3
  repoRoot: string;
3
4
  now?: Date | undefined;
5
+ tools?: {
6
+ projscan: ToolAdapterResult;
7
+ agentloopkit: ToolAdapterResult;
8
+ } | undefined;
4
9
  }
5
10
  export interface InitCommandResult {
6
11
  output: string;
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;CACxB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,cAAc,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAyB5F"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAE3D,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;IACvB,KAAK,CAAC,EACF;QACE,QAAQ,EAAE,iBAAiB,CAAC;QAC5B,YAAY,EAAE,iBAAiB,CAAC;KACjC,GACD,SAAS,CAAC;CACf;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,cAAc,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAwC5F"}