agentflight 0.6.0 → 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 (118) hide show
  1. package/CHANGELOG.md +270 -2
  2. package/README.md +38 -19
  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 +24 -2
  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 +28 -10
  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.map +1 -1
  37. package/dist/commands/report.js +22 -16
  38. package/dist/commands/report.js.map +1 -1
  39. package/dist/commands/resume.d.ts +1 -0
  40. package/dist/commands/resume.d.ts.map +1 -1
  41. package/dist/commands/resume.js +24 -14
  42. package/dist/commands/resume.js.map +1 -1
  43. package/dist/commands/start.d.ts +12 -0
  44. package/dist/commands/start.d.ts.map +1 -1
  45. package/dist/commands/start.js +53 -33
  46. package/dist/commands/start.js.map +1 -1
  47. package/dist/commands/status.d.ts.map +1 -1
  48. package/dist/commands/status.js +74 -9
  49. package/dist/commands/status.js.map +1 -1
  50. package/dist/commands/verify.d.ts.map +1 -1
  51. package/dist/commands/verify.js +22 -9
  52. package/dist/commands/verify.js.map +1 -1
  53. package/dist/core/artifacts.d.ts +11 -0
  54. package/dist/core/artifacts.d.ts.map +1 -0
  55. package/dist/core/artifacts.js +39 -0
  56. package/dist/core/artifacts.js.map +1 -0
  57. package/dist/core/config.d.ts +2 -0
  58. package/dist/core/config.d.ts.map +1 -1
  59. package/dist/core/config.js +16 -14
  60. package/dist/core/config.js.map +1 -1
  61. package/dist/core/doctor.d.ts +4 -0
  62. package/dist/core/doctor.d.ts.map +1 -1
  63. package/dist/core/doctor.js +37 -2
  64. package/dist/core/doctor.js.map +1 -1
  65. package/dist/core/fs-safe.d.ts +6 -0
  66. package/dist/core/fs-safe.d.ts.map +1 -1
  67. package/dist/core/fs-safe.js +50 -4
  68. package/dist/core/fs-safe.js.map +1 -1
  69. package/dist/core/git.d.ts.map +1 -1
  70. package/dist/core/git.js +7 -1
  71. package/dist/core/git.js.map +1 -1
  72. package/dist/core/output.d.ts +14 -0
  73. package/dist/core/output.d.ts.map +1 -1
  74. package/dist/core/output.js +72 -4
  75. package/dist/core/output.js.map +1 -1
  76. package/dist/core/paths.d.ts +1 -0
  77. package/dist/core/paths.d.ts.map +1 -1
  78. package/dist/core/paths.js +9 -1
  79. package/dist/core/paths.js.map +1 -1
  80. package/dist/core/review-intelligence.d.ts.map +1 -1
  81. package/dist/core/review-intelligence.js +182 -104
  82. package/dist/core/review-intelligence.js.map +1 -1
  83. package/dist/core/risk.d.ts.map +1 -1
  84. package/dist/core/risk.js +9 -4
  85. package/dist/core/risk.js.map +1 -1
  86. package/dist/core/session.d.ts +47 -1
  87. package/dist/core/session.d.ts.map +1 -1
  88. package/dist/core/session.js +203 -10
  89. package/dist/core/session.js.map +1 -1
  90. package/dist/core/verification-runs.d.ts +6 -0
  91. package/dist/core/verification-runs.d.ts.map +1 -0
  92. package/dist/core/verification-runs.js +104 -0
  93. package/dist/core/verification-runs.js.map +1 -0
  94. package/dist/core/verification.d.ts +4 -3
  95. package/dist/core/verification.d.ts.map +1 -1
  96. package/dist/core/verification.js +33 -66
  97. package/dist/core/verification.js.map +1 -1
  98. package/dist/renderers/html-replay.d.ts +2 -0
  99. package/dist/renderers/html-replay.d.ts.map +1 -1
  100. package/dist/renderers/html-replay.js +169 -9
  101. package/dist/renderers/html-replay.js.map +1 -1
  102. package/dist/renderers/markdown-report.d.ts +2 -0
  103. package/dist/renderers/markdown-report.d.ts.map +1 -1
  104. package/dist/renderers/markdown-report.js +20 -6
  105. package/dist/renderers/markdown-report.js.map +1 -1
  106. package/dist/renderers/resume-prompt.d.ts +2 -0
  107. package/dist/renderers/resume-prompt.d.ts.map +1 -1
  108. package/dist/renderers/resume-prompt.js +47 -10
  109. package/dist/renderers/resume-prompt.js.map +1 -1
  110. package/dist/types/index.d.ts +3 -3
  111. package/dist/types/index.d.ts.map +1 -1
  112. package/docs/assets/agentflight-cli-demo.svg +3 -3
  113. package/docs/development/changed-file-filters.md +19 -7
  114. package/docs/development/dogfooding.md +1 -1
  115. package/docs/examples/basic-agentflight-session.md +21 -10
  116. package/docs/roadmap/index.md +11 -3
  117. package/docs/roadmap/v0.4.0-review-intelligence-plan.md +1 -1
  118. package/package.json +3 -3
@@ -1,4 +1,4 @@
1
- import type { AgentFlightSession, GitInfo, SessionEvent, SessionEventType, ToolAdapterResult, VerificationRun } from "../types/index.js";
1
+ import type { AgentFlightSession, GitInfo, ReviewReadinessDecision, ReviewReadinessState, RiskLevel, SessionEvent, SessionEventType, ToolAdapterResult, VerificationRun } from "../types/index.js";
2
2
  export interface BuildSessionRecordOptions {
3
3
  repoRoot: string;
4
4
  task: string;
@@ -19,6 +19,49 @@ export interface StartSessionResult {
19
19
  currentSessionPath: string;
20
20
  handoffPath: string;
21
21
  }
22
+ export interface SessionSummary {
23
+ id: string;
24
+ taskTitle: string;
25
+ startedAt: string;
26
+ branch: string | null;
27
+ commit: string | null;
28
+ dirty: boolean;
29
+ verificationPassed: number;
30
+ verificationFailed: number;
31
+ verificationUnresolvedFailed: number;
32
+ verificationResolvedFailed: number;
33
+ latestReview?: SessionReviewSummary;
34
+ sessionPath: string;
35
+ }
36
+ export interface SessionReviewSummary {
37
+ state: ReviewReadinessState;
38
+ label: string;
39
+ riskLevel: RiskLevel;
40
+ changedFiles: number;
41
+ verificationPassed: number;
42
+ verificationFailed: number;
43
+ artifactPath: string | null;
44
+ generatedAt: string;
45
+ }
46
+ export interface BuildArtifactReviewMetadataOptions {
47
+ path: string;
48
+ readiness: Pick<ReviewReadinessDecision, "state" | "label">;
49
+ riskLevel: RiskLevel;
50
+ changedFiles: number;
51
+ verificationPassed: number;
52
+ verificationFailed: number;
53
+ }
54
+ export interface SkippedSessionFile {
55
+ path: string;
56
+ reason: string;
57
+ }
58
+ export interface ListSessionSummariesOptions {
59
+ limit?: number | undefined;
60
+ }
61
+ export interface ListSessionSummariesResult {
62
+ sessions: SessionSummary[];
63
+ skipped: SkippedSessionFile[];
64
+ }
22
65
  export interface SessionEventInput {
23
66
  type: SessionEventType;
24
67
  timestamp?: Date | string | undefined;
@@ -29,9 +72,12 @@ export interface SessionEventInput {
29
72
  export declare function buildSessionRecord(options: BuildSessionRecordOptions): AgentFlightSession;
30
73
  export declare function startSession(options: StartSessionOptions): Promise<StartSessionResult>;
31
74
  export declare function getVerificationRuns(session: AgentFlightSession): VerificationRun[];
75
+ export declare function buildArtifactReviewMetadata(options: BuildArtifactReviewMetadataOptions): Record<string, unknown>;
76
+ export declare function listSessionSummaries(repoRoot: string, options?: ListSessionSummariesOptions): Promise<ListSessionSummariesResult>;
32
77
  export declare function getSessionEvents(session: AgentFlightSession): SessionEvent[];
33
78
  export declare function getSessionTimelineEvents(session: AgentFlightSession): SessionEvent[];
34
79
  export declare function getLatestSessionEvent(session: AgentFlightSession, type: SessionEventType): SessionEvent | null;
80
+ export declare function getLatestRecordedReviewSummary(session: AgentFlightSession): SessionReviewSummary | null;
35
81
  export declare function buildSessionEvent(input: SessionEventInput, ordinal: number): SessionEvent;
36
82
  export declare function addSessionEvent(session: AgentFlightSession, input: SessionEventInput): AgentFlightSession;
37
83
  export declare function saveSession(repoRoot: string, session: AgentFlightSession): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/core/session.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,kBAAkB,EAClB,OAAO,EACP,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EAChB,MAAM,mBAAmB,CAAC;AAE3B,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;IACvB,GAAG,EAAE,OAAO,CAAC;IACb,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,oBAAoB,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAC5C,KAAK,CAAC,EACF;QACE,QAAQ,EAAE,iBAAiB,CAAC;QAC5B,YAAY,EAAE,iBAAiB,CAAC;KACjC,GACD,SAAS,CAAC;CACf;AAED,MAAM,MAAM,mBAAmB,GAAG,yBAAyB,CAAC;AAE5D,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,kBAAkB,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,gBAAgB,CAAC;IACvB,SAAS,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,SAAS,CAAC;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;CAChD;AAOD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,yBAAyB,GAAG,kBAAkB,CAsCzF;AAED,wBAAsB,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAe5F;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,kBAAkB,GAAG,eAAe,EAAE,CAElF;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,kBAAkB,GAAG,YAAY,EAAE,CAE5E;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,kBAAkB,GAAG,YAAY,EAAE,CAmCpF;AAED,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,kBAAkB,EAC3B,IAAI,EAAE,gBAAgB,GACrB,YAAY,GAAG,IAAI,CAMrB;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,GAAG,YAAY,CAazF;AAED,wBAAgB,eAAe,CAC7B,OAAO,EAAE,kBAAkB,EAC3B,KAAK,EAAE,iBAAiB,GACvB,kBAAkB,CAMpB;AAED,wBAAsB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAK9F;AAED,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,kBAAkB,EAC3B,KAAK,EAAE,iBAAiB,GACvB,OAAO,CAAC,kBAAkB,CAAC,CAK7B;AAED,wBAAsB,qBAAqB,CACzC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,kBAAkB,EAC3B,GAAG,EAAE,eAAe,GACnB,OAAO,CAAC,kBAAkB,CAAC,CAQ7B;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAE/D;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAQ7C"}
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/core/session.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,8 @@
1
+ import { readdir, readFile } from "node:fs/promises";
1
2
  import { basename } from "node:path";
2
- import { writeJsonFileSafe, writeTextFileSafe } from "./fs-safe.js";
3
+ import { withFileLock, writeJsonFileSafe, writeTextFileSafe } from "./fs-safe.js";
3
4
  import { resolveAgentFlightPaths } from "./paths.js";
5
+ import { getUnresolvedFailedRuns } from "./verification-runs.js";
4
6
  const unavailableTool = {
5
7
  available: false,
6
8
  warnings: ["Not inspected for this session."]
@@ -56,6 +58,92 @@ export async function startSession(options) {
56
58
  export function getVerificationRuns(session) {
57
59
  return session.verificationRuns ?? [];
58
60
  }
61
+ export function buildArtifactReviewMetadata(options) {
62
+ return {
63
+ path: options.path,
64
+ readiness: {
65
+ state: options.readiness.state,
66
+ label: options.readiness.label,
67
+ riskLevel: options.riskLevel,
68
+ changedFiles: options.changedFiles,
69
+ verificationPassed: options.verificationPassed,
70
+ verificationFailed: options.verificationFailed
71
+ }
72
+ };
73
+ }
74
+ export async function listSessionSummaries(repoRoot, options = {}) {
75
+ const sessionFiles = await listSessionFiles(resolveAgentFlightPaths(repoRoot).sessions);
76
+ const loadedSessions = await Promise.all(sessionFiles.map(loadSessionSummary));
77
+ const sessions = loadedSessions
78
+ .flatMap((result) => (result.summary ? [result.summary] : []))
79
+ .sort(compareSessionSummaries);
80
+ const skipped = loadedSessions.flatMap((result) => (result.skipped ? [result.skipped] : []));
81
+ const limit = normalizeSessionLimit(options.limit, sessions.length);
82
+ return {
83
+ sessions: sessions.slice(0, limit),
84
+ skipped
85
+ };
86
+ }
87
+ async function listSessionFiles(sessionsPath) {
88
+ const entries = await readSessionDir(sessionsPath);
89
+ return entries
90
+ .filter((entry) => entry.isFile() && entry.name.endsWith(".json"))
91
+ .map((entry) => `${sessionsPath}/${entry.name}`);
92
+ }
93
+ async function readSessionDir(sessionsPath) {
94
+ try {
95
+ return await readdir(sessionsPath, { withFileTypes: true });
96
+ }
97
+ catch (error) {
98
+ if (isNodeError(error) && error.code === "ENOENT")
99
+ return [];
100
+ throw error;
101
+ }
102
+ }
103
+ async function loadSessionSummary(sessionPath) {
104
+ try {
105
+ const session = JSON.parse(await readFile(sessionPath, "utf8"));
106
+ return { summary: summarizeSession(session, sessionPath) };
107
+ }
108
+ catch (error) {
109
+ return {
110
+ skipped: {
111
+ path: sessionPath,
112
+ reason: error instanceof Error ? error.message : String(error)
113
+ }
114
+ };
115
+ }
116
+ }
117
+ function summarizeSession(session, sessionPath) {
118
+ const runs = getVerificationRuns(session);
119
+ const passed = runs.filter((run) => run.status === "passed").length;
120
+ const failed = runs.filter((run) => run.status === "failed").length;
121
+ const unresolvedFailed = getUnresolvedFailedRuns(runs).length;
122
+ const summary = {
123
+ id: session.id,
124
+ taskTitle: session.task.title,
125
+ startedAt: session.startedAt,
126
+ branch: session.git.branch ?? null,
127
+ commit: session.git.commit ?? null,
128
+ dirty: session.git.dirty,
129
+ verificationPassed: passed,
130
+ verificationFailed: failed,
131
+ verificationUnresolvedFailed: unresolvedFailed,
132
+ verificationResolvedFailed: failed - unresolvedFailed,
133
+ sessionPath
134
+ };
135
+ const latestReview = getLatestRecordedReviewSummary(session);
136
+ if (latestReview)
137
+ summary.latestReview = latestReview;
138
+ return summary;
139
+ }
140
+ function compareSessionSummaries(left, right) {
141
+ const timeDelta = Date.parse(right.startedAt) - Date.parse(left.startedAt);
142
+ return timeDelta !== 0 ? timeDelta : right.id.localeCompare(left.id);
143
+ }
144
+ function normalizeSessionLimit(limit, fallback) {
145
+ return limit !== undefined && Number.isFinite(limit) ? Math.max(0, Math.floor(limit)) : fallback;
146
+ }
59
147
  export function getSessionEvents(session) {
60
148
  return session.events ?? [];
61
149
  }
@@ -90,6 +178,89 @@ export function getLatestSessionEvent(session, type) {
90
178
  .filter((event) => event.type === type)
91
179
  .at(-1) ?? null);
92
180
  }
181
+ export function getLatestRecordedReviewSummary(session) {
182
+ const events = getSessionEvents(session);
183
+ let cleanFallback = null;
184
+ for (let index = events.length - 1; index >= 0; index -= 1) {
185
+ const event = events[index];
186
+ if (!event || !isArtifactGeneratedEvent(event))
187
+ continue;
188
+ const summary = readRecordedReviewSummary(event);
189
+ if (!summary)
190
+ continue;
191
+ if (summary.state !== "clean_worktree")
192
+ return summary;
193
+ cleanFallback ??= summary;
194
+ }
195
+ return cleanFallback;
196
+ }
197
+ function isArtifactGeneratedEvent(event) {
198
+ return event.type === "report_generated" || event.type === "replay_generated";
199
+ }
200
+ function readRecordedReviewSummary(event) {
201
+ const metadata = readObject(event.metadata);
202
+ const readiness = readObject(metadata?.readiness);
203
+ if (!readiness)
204
+ return null;
205
+ const state = readReviewReadinessState(readiness.state);
206
+ const label = readNonEmptyString(readiness.label);
207
+ const riskLevel = readRiskLevel(readiness.riskLevel);
208
+ const changedFiles = readNonNegativeInteger(readiness.changedFiles);
209
+ const verificationPassed = readNonNegativeInteger(readiness.verificationPassed);
210
+ const verificationFailed = readNonNegativeInteger(readiness.verificationFailed);
211
+ if (!state ||
212
+ !label ||
213
+ !riskLevel ||
214
+ changedFiles === null ||
215
+ verificationPassed === null ||
216
+ verificationFailed === null) {
217
+ return null;
218
+ }
219
+ return {
220
+ state,
221
+ label,
222
+ riskLevel,
223
+ changedFiles,
224
+ verificationPassed,
225
+ verificationFailed,
226
+ artifactPath: readString(metadata?.path),
227
+ generatedAt: event.timestamp
228
+ };
229
+ }
230
+ function readObject(value) {
231
+ if (typeof value !== "object" || value === null || Array.isArray(value))
232
+ return null;
233
+ return value;
234
+ }
235
+ function readString(value) {
236
+ return typeof value === "string" ? value : null;
237
+ }
238
+ function readNonEmptyString(value) {
239
+ const text = readString(value);
240
+ return text && text.trim().length > 0 ? text : null;
241
+ }
242
+ function readNonNegativeInteger(value) {
243
+ return typeof value === "number" && Number.isInteger(value) && value >= 0 ? value : null;
244
+ }
245
+ function readReviewReadinessState(value) {
246
+ const states = [
247
+ "ready_for_review",
248
+ "not_ready_for_review",
249
+ "needs_verification",
250
+ "blocked_by_failed_verification",
251
+ "clean_worktree",
252
+ "unknown"
253
+ ];
254
+ return typeof value === "string" && states.includes(value)
255
+ ? value
256
+ : null;
257
+ }
258
+ function readRiskLevel(value) {
259
+ const levels = ["none", "low", "medium", "high", "unknown"];
260
+ return typeof value === "string" && levels.includes(value)
261
+ ? value
262
+ : null;
263
+ }
93
264
  export function buildSessionEvent(input, ordinal) {
94
265
  const timestamp = normalizeEventTimestamp(input.timestamp);
95
266
  const event = {
@@ -117,17 +288,36 @@ export async function saveSession(repoRoot, session) {
117
288
  await writeJsonFileSafe(paths.currentSession, session, { overwrite: true });
118
289
  }
119
290
  export async function appendSessionEvent(repoRoot, session, input) {
120
- const updatedSession = addSessionEvent(session, input);
121
- await saveSession(repoRoot, updatedSession);
122
- return updatedSession;
291
+ return mutatePersistedSession(repoRoot, session, (latestSession) => addSessionEvent(latestSession, input));
123
292
  }
124
293
  export async function appendVerificationRun(repoRoot, session, run) {
125
- const updatedSession = {
126
- ...session,
127
- verificationRuns: [...getVerificationRuns(session), run]
128
- };
129
- await saveSession(repoRoot, updatedSession);
130
- return updatedSession;
294
+ return mutatePersistedSession(repoRoot, session, (latestSession) => ({
295
+ ...latestSession,
296
+ verificationRuns: [...getVerificationRuns(latestSession), run]
297
+ }));
298
+ }
299
+ async function mutatePersistedSession(repoRoot, session, mutate) {
300
+ const paths = resolveAgentFlightPaths(repoRoot);
301
+ const lockPath = `${paths.sessions}/${session.id}.lock`;
302
+ return withFileLock(lockPath, async () => {
303
+ const latestSession = await readPersistedSession(repoRoot, session);
304
+ const updatedSession = mutate(latestSession);
305
+ await saveSession(repoRoot, updatedSession);
306
+ return updatedSession;
307
+ });
308
+ }
309
+ async function readPersistedSession(repoRoot, fallback) {
310
+ const paths = resolveAgentFlightPaths(repoRoot);
311
+ const sessionPath = `${paths.sessions}/${fallback.id}.json`;
312
+ try {
313
+ const session = JSON.parse(await readFile(sessionPath, "utf8"));
314
+ return session.id === fallback.id ? session : fallback;
315
+ }
316
+ catch (error) {
317
+ if (isNodeError(error) && error.code === "ENOENT")
318
+ return fallback;
319
+ throw error;
320
+ }
131
321
  }
132
322
  export function createSessionId(now, task) {
133
323
  return `af-${formatDateForId(now)}-${slugify(task)}`;
@@ -151,6 +341,9 @@ function normalizeEventTimestamp(timestamp) {
151
341
  return timestamp;
152
342
  return new Date().toISOString();
153
343
  }
344
+ function isNodeError(error) {
345
+ return typeof error === "object" && error !== null && "code" in error;
346
+ }
154
347
  function renderInitialHandoff(session) {
155
348
  const proof = session.verificationCommands.length
156
349
  ? session.verificationCommands.map((command) => `- ${command}`).join("\n")
@@ -1 +1 @@
1
- {"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/core/session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/core/session.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { VerificationRun } from "../types/index.js";
2
+ export declare function parseCommandLine(command: string): string[];
3
+ export declare function normalizeCommandString(command: string): string;
4
+ export declare function getUnresolvedFailedRuns(runs: VerificationRun[]): VerificationRun[];
5
+ export declare function formatCommand(args: string[]): string;
6
+ //# sourceMappingURL=verification-runs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verification-runs.d.ts","sourceRoot":"","sources":["../../src/core/verification-runs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AASzD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAe1D;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAG9D;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,eAAe,EAAE,GAAG,eAAe,EAAE,CAoBlF;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAEpD"}
@@ -0,0 +1,104 @@
1
+ export function parseCommandLine(command) {
2
+ const state = {
3
+ args: [],
4
+ current: "",
5
+ quote: null,
6
+ escaping: false
7
+ };
8
+ for (const char of command) {
9
+ consumeCommandChar(state, char);
10
+ }
11
+ finishCommandParse(state);
12
+ return state.args;
13
+ }
14
+ export function normalizeCommandString(command) {
15
+ const parsed = parseCommandLine(command);
16
+ return parsed.length > 0 ? formatCommand(parsed) : command.trim();
17
+ }
18
+ export function getUnresolvedFailedRuns(runs) {
19
+ const laterPassedCommands = new Set();
20
+ const unresolved = [];
21
+ for (let index = runs.length - 1; index >= 0; index -= 1) {
22
+ const run = runs[index];
23
+ if (!run)
24
+ continue;
25
+ const command = normalizeCommandString(run.command);
26
+ if (run.status === "passed") {
27
+ laterPassedCommands.add(command);
28
+ continue;
29
+ }
30
+ if (!laterPassedCommands.has(command)) {
31
+ unresolved.unshift(run);
32
+ }
33
+ }
34
+ return unresolved;
35
+ }
36
+ export function formatCommand(args) {
37
+ return args.map(formatCommandArg).join(" ");
38
+ }
39
+ function formatCommandArg(arg) {
40
+ if (/^[A-Za-z0-9_./:=@+-]+$/.test(arg))
41
+ return arg;
42
+ return JSON.stringify(arg);
43
+ }
44
+ function consumeCommandChar(state, char) {
45
+ if (consumeEscapedChar(state, char))
46
+ return;
47
+ if (beginEscape(state, char))
48
+ return;
49
+ if (consumeQuotedChar(state, char))
50
+ return;
51
+ if (beginQuote(state, char))
52
+ return;
53
+ if (consumeWhitespace(state, char))
54
+ return;
55
+ state.current += char;
56
+ }
57
+ function consumeEscapedChar(state, char) {
58
+ if (!state.escaping)
59
+ return false;
60
+ state.current += char;
61
+ state.escaping = false;
62
+ return true;
63
+ }
64
+ function beginEscape(state, char) {
65
+ if (char !== "\\")
66
+ return false;
67
+ state.escaping = true;
68
+ return true;
69
+ }
70
+ function consumeQuotedChar(state, char) {
71
+ if (!state.quote)
72
+ return false;
73
+ if (char === state.quote) {
74
+ state.quote = null;
75
+ }
76
+ else {
77
+ state.current += char;
78
+ }
79
+ return true;
80
+ }
81
+ function beginQuote(state, char) {
82
+ if (char !== "'" && char !== '"')
83
+ return false;
84
+ state.quote = char;
85
+ return true;
86
+ }
87
+ function consumeWhitespace(state, char) {
88
+ if (!/\s/.test(char))
89
+ return false;
90
+ pushCurrentArg(state);
91
+ return true;
92
+ }
93
+ function finishCommandParse(state) {
94
+ if (state.escaping)
95
+ state.current += "\\";
96
+ pushCurrentArg(state);
97
+ }
98
+ function pushCurrentArg(state) {
99
+ if (state.current.length === 0)
100
+ return;
101
+ state.args.push(state.current);
102
+ state.current = "";
103
+ }
104
+ //# sourceMappingURL=verification-runs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verification-runs.js","sourceRoot":"","sources":["../../src/core/verification-runs.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { type CommandRunner } from "./process.js";
2
2
  import type { AgentFlightSession, RiskLevel, VerificationRun } from "../types/index.js";
3
+ export { formatCommand, getUnresolvedFailedRuns, normalizeCommandString, parseCommandLine } from "./verification-runs.js";
3
4
  export interface PackageJsonLike {
4
5
  scripts?: Record<string, string>;
5
6
  }
@@ -15,6 +16,9 @@ export interface VerificationSummary {
15
16
  runs: VerificationRun[];
16
17
  passed: number;
17
18
  failed: number;
19
+ unresolvedFailed: number;
20
+ resolvedFailed: number;
21
+ unresolvedFailedRuns: VerificationRun[];
18
22
  missingCommands: string[];
19
23
  gaps: string[];
20
24
  readiness: ReviewReadiness;
@@ -25,7 +29,6 @@ export interface BuildVerificationSummaryOptions {
25
29
  riskLevel?: RiskLevel | undefined;
26
30
  }
27
31
  export declare function detectVerificationCommands(packageJson: PackageJsonLike): string[];
28
- export declare function parseCommandLine(command: string): string[];
29
32
  export declare function runVerificationCommand(options: RunVerificationCommandOptions): Promise<VerificationRun>;
30
33
  export interface OutputExcerptOptions {
31
34
  maxLines?: number;
@@ -41,6 +44,4 @@ export interface OutputExcerptOptions {
41
44
  export declare function buildOutputExcerpt(stdout: string, stderr: string, options?: OutputExcerptOptions): string | undefined;
42
45
  export declare function readVerificationStdout(repoRoot: string, run: VerificationRun): Promise<string>;
43
46
  export declare function buildVerificationSummary(session: AgentFlightSession, options?: BuildVerificationSummaryOptions): VerificationSummary;
44
- export declare function normalizeCommandString(command: string): string;
45
- export declare function formatCommand(args: string[]): string;
46
47
  //# sourceMappingURL=verification.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"verification.d.ts","sourceRoot":"","sources":["../../src/core/verification.ts"],"names":[],"mappings":"AAGA,OAAO,EAAc,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AAG9D,OAAO,KAAK,EAAE,kBAAkB,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAExF,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,kBAAkB,CAAC;IAC5B,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,GAAG,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;IAC/B,aAAa,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;CAC3C;AAED,MAAM,MAAM,eAAe,GAAG,kBAAkB,GAAG,sBAAsB,GAAG,SAAS,GAAG,SAAS,CAAC;AAElG,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,eAAe,EAAE,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,SAAS,EAAE,eAAe,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,+BAA+B;IAC9C,iBAAiB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,SAAS,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;CACnC;AAED,wBAAgB,0BAA0B,CAAC,WAAW,EAAE,eAAe,GAAG,MAAM,EAAE,CAUjF;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CA+C1D;AAED,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,6BAA6B,GACrC,OAAO,CAAC,eAAe,CAAC,CAyC1B;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,oBAAyB,GACjC,MAAM,GAAG,SAAS,CAoBpB;AAED,wBAAsB,sBAAsB,CAC1C,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,eAAe,GACnB,OAAO,CAAC,MAAM,CAAC,CAEjB;AAED,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,kBAAkB,EAC3B,OAAO,GAAE,+BAAoC,GAC5C,mBAAmB,CAyBrB;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAG9D;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAEpD"}
1
+ {"version":3,"file":"verification.d.ts","sourceRoot":"","sources":["../../src/core/verification.ts"],"names":[],"mappings":"AAGA,OAAO,EAAc,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AAQ9D,OAAO,KAAK,EAAE,kBAAkB,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAExF,OAAO,EACL,aAAa,EACb,uBAAuB,EACvB,sBAAsB,EACtB,gBAAgB,EACjB,MAAM,wBAAwB,CAAC;AAEhC,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,kBAAkB,CAAC;IAC5B,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,GAAG,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;IAC/B,aAAa,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;CAC3C;AAED,MAAM,MAAM,eAAe,GAAG,kBAAkB,GAAG,sBAAsB,GAAG,SAAS,GAAG,SAAS,CAAC;AAElG,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,eAAe,EAAE,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,oBAAoB,EAAE,eAAe,EAAE,CAAC;IACxC,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,SAAS,EAAE,eAAe,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,+BAA+B;IAC9C,iBAAiB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,SAAS,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;CACnC;AAED,wBAAgB,0BAA0B,CAAC,WAAW,EAAE,eAAe,GAAG,MAAM,EAAE,CAUjF;AAED,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,6BAA6B,GACrC,OAAO,CAAC,eAAe,CAAC,CAuC1B;AAiCD,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,oBAAyB,GACjC,MAAM,GAAG,SAAS,CAoBpB;AAED,wBAAsB,sBAAsB,CAC1C,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,eAAe,GACnB,OAAO,CAAC,MAAM,CAAC,CAEjB;AAED,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,kBAAkB,EAC3B,OAAO,GAAE,+BAAoC,GAC5C,mBAAmB,CA6BrB"}