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
@@ -4,8 +4,14 @@ const agentFlightRuntimePrefixes = [
4
4
  ".agentflight/current/",
5
5
  ".agentflight/evidence/"
6
6
  ];
7
+ const agentLoopKitEvidencePrefixes = [
8
+ ".agentloop/reports/",
9
+ ".agentloop/handoffs/",
10
+ ".agentloop/runs/"
11
+ ];
12
+ const agentLoopKitEvidencePaths = [".agentloop/state.json"];
7
13
  export function filterChangedFiles(files, options = {}) {
8
- const runtimeFiltered = filterAgentFlightRuntimePaths(files);
14
+ const runtimeFiltered = filterBuiltInRuntimePaths(files);
9
15
  const ignore = Array.isArray(options.ignore) ? options.ignore : [];
10
16
  const patterns = ignore
11
17
  .map(normalizeIgnorePattern)
@@ -20,10 +26,21 @@ export function filterChangedFiles(files, options = {}) {
20
26
  export function filterAgentFlightRuntimePaths(files) {
21
27
  return files.filter((file) => !isAgentFlightRuntimePath(file));
22
28
  }
29
+ export function filterBuiltInRuntimePaths(files) {
30
+ return files.filter((file) => !isBuiltInRuntimePath(file));
31
+ }
23
32
  export function isAgentFlightRuntimePath(file) {
24
33
  const normalized = normalizeChangedFilePath(file);
25
34
  return agentFlightRuntimePrefixes.some((prefix) => normalized === prefix.slice(0, -1) || normalized.startsWith(prefix));
26
35
  }
36
+ export function isAgentLoopKitEvidencePath(file) {
37
+ const normalized = normalizeChangedFilePath(file);
38
+ return (agentLoopKitEvidencePaths.includes(normalized) ||
39
+ agentLoopKitEvidencePrefixes.some((prefix) => normalized === prefix.slice(0, -1) || normalized.startsWith(prefix)));
40
+ }
41
+ export function isBuiltInRuntimePath(file) {
42
+ return isAgentFlightRuntimePath(file) || isAgentLoopKitEvidencePath(file);
43
+ }
27
44
  function normalizeChangedFilePath(file) {
28
45
  return file.replaceAll("\\", "/").replace(/^\.\//, "");
29
46
  }
@@ -1 +1 @@
1
- {"version":3,"file":"changed-files.js","sourceRoot":"","sources":["../../src/core/changed-files.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"changed-files.js","sourceRoot":"","sources":["../../src/core/changed-files.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@ import type { AgentFlightConfig, AgentFlightPaths } from "../types/index.js";
2
2
  export interface CreateDefaultConfigOptions {
3
3
  repoRoot: string;
4
4
  now?: Date | undefined;
5
+ verificationCommands?: string[] | undefined;
5
6
  }
6
7
  export interface InitAgentFlightOptions {
7
8
  repoRoot: string;
@@ -12,6 +13,7 @@ export interface InitAgentFlightResult {
12
13
  config: AgentFlightConfig;
13
14
  created: string[];
14
15
  skipped: string[];
16
+ detectedVerificationCommands: string[];
15
17
  detections: {
16
18
  agentloopkit: boolean;
17
19
  projscan: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAE7E,MAAM,WAAW,0BAA0B;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;CACxB;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;CACxB;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,gBAAgB,CAAC;IACxB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,EAAE;QACV,YAAY,EAAE,OAAO,CAAC;QACtB,QAAQ,EAAE,OAAO,CAAC;KACnB,CAAC;CACH;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,0BAA0B,GAAG,iBAAiB,CA4B1F;AAED,wBAAsB,eAAe,CACnC,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,qBAAqB,CAAC,CA0ChC;AAED,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAIpF"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAI7E,MAAM,WAAW,0BAA0B;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;IACvB,oBAAoB,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;CAC7C;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;CACxB;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,gBAAgB,CAAC;IACxB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,4BAA4B,EAAE,MAAM,EAAE,CAAC;IACvC,UAAU,EAAE;QACV,YAAY,EAAE,OAAO,CAAC;QACtB,QAAQ,EAAE,OAAO,CAAC;KACnB,CAAC;CACH;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,0BAA0B,GAAG,iBAAiB,CA6B1F;AAED,wBAAsB,eAAe,CACnC,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,qBAAqB,CAAC,CAyChC;AAED,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAIpF"}
@@ -1,6 +1,9 @@
1
1
  import { basename } from "node:path";
2
2
  import { ensureDir, pathExists, readJsonFile, writeJsonFileSafe, writeTextFileSafe } from "./fs-safe.js";
3
3
  import { resolveAgentFlightPaths } from "./paths.js";
4
+ import { readPackageJson } from "./project.js";
5
+ import { detectVerificationCommands } from "./verification.js";
6
+ const runtimeGitignore = ["/sessions/", "/reports/", "/evidence/", "/current/", ""].join("\n");
4
7
  export function createDefaultConfig(options) {
5
8
  const now = options.now ?? new Date();
6
9
  return {
@@ -18,7 +21,8 @@ export function createDefaultConfig(options) {
18
21
  }
19
22
  },
20
23
  verification: {
21
- commands: []
24
+ commands: options.verificationCommands ?? [],
25
+ profiles: {}
22
26
  },
23
27
  changedFileFilters: {
24
28
  ignore: []
@@ -38,19 +42,17 @@ export async function initAgentFlight(options) {
38
42
  await ensureDir(paths.reports);
39
43
  await ensureDir(paths.evidence);
40
44
  await ensureDir(paths.current);
41
- for (const gitkeepPath of [
42
- `${paths.sessions}/.gitkeep`,
43
- `${paths.reports}/.gitkeep`,
44
- `${paths.evidence}/.gitkeep`,
45
- `${paths.current}/.gitkeep`
46
- ]) {
47
- const result = await writeTextFileSafe(gitkeepPath, "");
48
- if (result.status === "created")
49
- created.push(result.path);
50
- if (result.status === "skipped")
51
- skipped.push(result.path);
52
- }
53
- const defaultConfig = createDefaultConfig({ repoRoot: options.repoRoot, now: options.now });
45
+ const runtimeIgnoreWrite = await writeTextFileSafe(`${paths.root}/.gitignore`, runtimeGitignore);
46
+ if (runtimeIgnoreWrite.status === "created")
47
+ created.push(runtimeIgnoreWrite.path);
48
+ if (runtimeIgnoreWrite.status === "skipped")
49
+ skipped.push(runtimeIgnoreWrite.path);
50
+ const verificationCommands = detectVerificationCommands(await readPackageJson(options.repoRoot));
51
+ const defaultConfig = createDefaultConfig({
52
+ repoRoot: options.repoRoot,
53
+ now: options.now,
54
+ verificationCommands
55
+ });
54
56
  const configWrite = await writeJsonFileSafe(paths.config, defaultConfig);
55
57
  if (configWrite.status === "created")
56
58
  created.push(configWrite.path);
@@ -64,6 +66,7 @@ export async function initAgentFlight(options) {
64
66
  config,
65
67
  created,
66
68
  skipped,
69
+ detectedVerificationCommands: verificationCommands,
67
70
  detections: {
68
71
  agentloopkit: await pathExists(`${options.repoRoot}/.agentloop`),
69
72
  projscan: await pathExists(`${options.repoRoot}/.projscanrc.json`)
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,10 @@ export interface DoctorEvaluationInput {
11
11
  currentSessionExists: boolean;
12
12
  projscanAvailable: boolean;
13
13
  agentloopkitAvailable: boolean;
14
+ configuredVerificationCommands?: number | undefined;
15
+ detectedVerificationCommands?: string[] | undefined;
16
+ projscanMemoryPresent?: boolean | undefined;
17
+ projscanMemoryIgnored?: boolean | undefined;
14
18
  scripts: {
15
19
  test: boolean;
16
20
  build: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/core/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAe,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEnE,MAAM,WAAW,qBAAqB;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,YAAY,EAAE,OAAO,CAAC;IACtB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,OAAO,CAAC;IAClB,oBAAoB,EAAE,OAAO,CAAC;IAC9B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,qBAAqB,EAAE,OAAO,CAAC;IAC/B,OAAO,EAAE;QACP,IAAI,EAAE,OAAO,CAAC;QACd,KAAK,EAAE,OAAO,CAAC;QACf,SAAS,EAAE,OAAO,CAAC;QACnB,IAAI,EAAE,OAAO,CAAC;KACf,CAAC;CACH;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,qBAAqB,GAAG,YAAY,CAkI/E"}
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/core/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAe,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEnE,MAAM,WAAW,qBAAqB;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,YAAY,EAAE,OAAO,CAAC;IACtB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,OAAO,CAAC;IAClB,oBAAoB,EAAE,OAAO,CAAC;IAC9B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,qBAAqB,EAAE,OAAO,CAAC;IAC/B,8BAA8B,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpD,4BAA4B,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IACpD,qBAAqB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC5C,qBAAqB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC5C,OAAO,EAAE;QACP,IAAI,EAAE,OAAO,CAAC;QACd,KAAK,EAAE,OAAO,CAAC;QACf,SAAS,EAAE,OAAO,CAAC;QACnB,IAAI,EAAE,OAAO,CAAC;KACf,CAAC;CACH;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,qBAAqB,GAAG,YAAY,CAoJ/E"}
@@ -11,7 +11,7 @@ export function evaluateDoctorChecks(input) {
11
11
  ? ok("git availability", "git is available.")
12
12
  : warning("git availability", "git is not available or this repo cannot run git commands.", "Install git or run AgentFlight inside a git repository."));
13
13
  checks.push(input.repoRoot
14
- ? ok("repository root", input.repoRoot)
14
+ ? ok("repository root", "Repository root detected.")
15
15
  : error("repository root", "Unable to determine repository root.", "Run AgentFlight from inside a git repository or project directory."));
16
16
  checks.push(input.packageManager
17
17
  ? ok("package manager", input.packageManager)
@@ -27,13 +27,21 @@ export function evaluateDoctorChecks(input) {
27
27
  : error(".agentflight writable", ".agentflight is not writable.", "Check filesystem permissions."));
28
28
  checks.push(input.currentSessionExists
29
29
  ? ok("current session", "A current session exists.")
30
- : warning("current session", "No current session exists.", 'Run agentflight start --task "...".'));
30
+ : ok("current session", 'No current session is active. Run agentflight start --task "..." when you begin work.'));
31
31
  checks.push(input.projscanAvailable
32
32
  ? ok("ProjScan availability", "ProjScan is available.")
33
33
  : warning("ProjScan availability", "ProjScan is not currently available.", "Install projscan locally or allow AgentFlight to use npx projscan@latest."));
34
34
  checks.push(input.agentloopkitAvailable
35
35
  ? ok("AgentLoopKit availability", "AgentLoopKit is available.")
36
36
  : warning("AgentLoopKit availability", "AgentLoopKit is not currently available.", "Install agentloopkit locally or allow AgentFlight to use npx agentloopkit@latest."));
37
+ if (input.configuredVerificationCommands !== undefined) {
38
+ checks.push(verificationCommandsCheck(input));
39
+ }
40
+ if (input.projscanMemoryPresent) {
41
+ checks.push(input.projscanMemoryIgnored
42
+ ? ok("generated tool state", ".projscan-memory/memory.json is filtered by changedFileFilters.ignore.")
43
+ : warning("generated tool state", ".projscan-memory/memory.json is present and remains reviewable.", 'If ProjScan memory is generated evidence in this repo, add ".projscan-memory/**" to changedFileFilters.ignore in .agentflight/config.json.'));
44
+ }
37
45
  for (const script of ["test", "build", "typecheck", "lint"]) {
38
46
  checks.push(input.scripts[script]
39
47
  ? ok(`${script} script`, `npm run ${script} is configured.`)
@@ -48,6 +56,33 @@ export function evaluateDoctorChecks(input) {
48
56
  checks
49
57
  };
50
58
  }
59
+ function verificationCommandsCheck(input) {
60
+ const count = Math.max(0, input.configuredVerificationCommands ?? 0);
61
+ if (count > 0) {
62
+ return ok("verification commands", `.agentflight/config.json has ${count} configured verification ${count === 1 ? "command" : "commands"}.`);
63
+ }
64
+ if (hasPackageProofScript(input.scripts)) {
65
+ return warning("verification commands", ".agentflight/config.json has no configured verification commands, but package proof scripts are available.", buildVerificationCommandsSuggestedFix(input.detectedVerificationCommands));
66
+ }
67
+ return ok("verification commands", "No configured verification commands and no package proof scripts detected.");
68
+ }
69
+ function hasPackageProofScript(input) {
70
+ return input.test || input.build || input.typecheck || input.lint;
71
+ }
72
+ function buildVerificationCommandsSuggestedFix(commands) {
73
+ const suggestions = (commands ?? [])
74
+ .filter((command) => command.trim().length > 0)
75
+ .slice(0, 4)
76
+ .map((command) => `agentflight verify -- ${command}`);
77
+ if (suggestions.length === 0) {
78
+ return "Add commands under verification.commands or run agentflight verify -- <command> explicitly.";
79
+ }
80
+ return [
81
+ "Try one of:",
82
+ ...suggestions.map((suggestion) => `- ${suggestion}`),
83
+ "To make one command the default, add it under verification.commands."
84
+ ].join("\n");
85
+ }
51
86
  function parseNodeMajor(version) {
52
87
  const match = /^v?(\d+)/.exec(version);
53
88
  return match ? Number(match[1]) : 0;
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/core/doctor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/core/doctor.ts"],"names":[],"mappings":"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"}
@@ -6,10 +6,16 @@ export interface SafeWriteResult {
6
6
  export interface SafeWriteOptions {
7
7
  overwrite?: boolean;
8
8
  }
9
+ export interface FileLockOptions {
10
+ timeoutMs?: number;
11
+ pollMs?: number;
12
+ }
9
13
  export declare function pathExists(path: string): Promise<boolean>;
10
14
  export declare function isPathWritable(path: string): Promise<boolean>;
11
15
  export declare function ensureDir(path: string): Promise<void>;
12
16
  export declare function readJsonFile<T>(path: string): Promise<T>;
13
17
  export declare function writeJsonFileSafe(path: string, value: unknown, options?: SafeWriteOptions): Promise<SafeWriteResult>;
14
18
  export declare function writeTextFileSafe(path: string, value: string, options?: SafeWriteOptions): Promise<SafeWriteResult>;
19
+ export declare function tryWriteTextFileExclusive(path: string, value: string): Promise<boolean>;
20
+ export declare function withFileLock<T>(lockPath: string, callback: () => Promise<T>, options?: FileLockOptions): Promise<T>;
15
21
  //# sourceMappingURL=fs-safe.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"fs-safe.d.ts","sourceRoot":"","sources":["../../src/core/fs-safe.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,aAAa,GAAG,SAAS,CAAC;AAEpE,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,eAAe,CAAC;CACzB;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAO/D;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOnE;AAED,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE3D;AAED,wBAAsB,YAAY,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAE9D;AAED,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,OAAO,EACd,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,eAAe,CAAC,CAE1B;AAED,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,eAAe,CAAC,CAU1B"}
1
+ {"version":3,"file":"fs-safe.d.ts","sourceRoot":"","sources":["../../src/core/fs-safe.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,aAAa,GAAG,SAAS,CAAC;AAEpE,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,eAAe,CAAC;CACzB;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAO/D;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOnE;AAED,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE3D;AAED,wBAAsB,YAAY,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAE9D;AAED,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,OAAO,EACd,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,eAAe,CAAC,CAE1B;AAED,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,eAAe,CAAC,CAmB1B;AAED,wBAAsB,yBAAyB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAW7F;AAED,wBAAsB,YAAY,CAAC,CAAC,EAClC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAC1B,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,CAAC,CAAC,CAkBZ"}
@@ -1,6 +1,7 @@
1
1
  import { constants } from "node:fs";
2
- import { access, mkdir, readFile, writeFile } from "node:fs/promises";
3
- import { dirname } from "node:path";
2
+ import { access, mkdir, readFile, rename, rm, writeFile } from "node:fs/promises";
3
+ import { randomUUID } from "node:crypto";
4
+ import { basename, dirname, join } from "node:path";
4
5
  export async function pathExists(path) {
5
6
  try {
6
7
  await access(path, constants.F_OK);
@@ -29,12 +30,57 @@ export async function writeJsonFileSafe(path, value, options = {}) {
29
30
  return writeTextFileSafe(path, `${JSON.stringify(value, null, 2)}\n`, options);
30
31
  }
31
32
  export async function writeTextFileSafe(path, value, options = {}) {
32
- await mkdir(dirname(path), { recursive: true });
33
+ const directory = dirname(path);
34
+ await mkdir(directory, { recursive: true });
33
35
  const exists = await pathExists(path);
34
36
  if (exists && options.overwrite !== true) {
35
37
  return { path, status: "skipped" };
36
38
  }
37
- await writeFile(path, value, "utf8");
39
+ const tempPath = join(directory, `.${basename(path)}.${process.pid}.${randomUUID()}.tmp`);
40
+ try {
41
+ await writeFile(tempPath, value, "utf8");
42
+ await rename(tempPath, path);
43
+ }
44
+ catch (error) {
45
+ await rm(tempPath, { force: true });
46
+ throw error;
47
+ }
38
48
  return { path, status: exists ? "overwritten" : "created" };
39
49
  }
50
+ export async function tryWriteTextFileExclusive(path, value) {
51
+ const directory = dirname(path);
52
+ await mkdir(directory, { recursive: true });
53
+ try {
54
+ await writeFile(path, value, { encoding: "utf8", flag: "wx" });
55
+ return true;
56
+ }
57
+ catch (error) {
58
+ if (isNodeError(error) && error.code === "EEXIST")
59
+ return false;
60
+ throw error;
61
+ }
62
+ }
63
+ export async function withFileLock(lockPath, callback, options = {}) {
64
+ const timeoutMs = options.timeoutMs ?? 5000;
65
+ const pollMs = options.pollMs ?? 10;
66
+ const startedAt = Date.now();
67
+ while (!(await tryWriteTextFileExclusive(lockPath, `${process.pid}\n`))) {
68
+ if (Date.now() - startedAt >= timeoutMs) {
69
+ throw new Error("Timed out waiting for AgentFlight local file lock.");
70
+ }
71
+ await sleep(pollMs);
72
+ }
73
+ try {
74
+ return await callback();
75
+ }
76
+ finally {
77
+ await rm(lockPath, { force: true });
78
+ }
79
+ }
80
+ function sleep(ms) {
81
+ return new Promise((resolve) => setTimeout(resolve, ms));
82
+ }
83
+ function isNodeError(error) {
84
+ return typeof error === "object" && error !== null && "code" in error;
85
+ }
40
86
  //# sourceMappingURL=fs-safe.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fs-safe.js","sourceRoot":"","sources":["../../src/core/fs-safe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAapC,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAY;IAC3C,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAAY;IAC/C,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAY;IAC1C,MAAM,KAAK,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAI,IAAY;IAChD,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAM,CAAC;AACvD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,IAAY,EACZ,KAAc,EACd,UAA4B,EAAE;IAE9B,OAAO,iBAAiB,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACjF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,IAAY,EACZ,KAAa,EACb,UAA4B,EAAE;IAE9B,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEhD,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;IACtC,IAAI,MAAM,IAAI,OAAO,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;QACzC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IACrC,CAAC;IAED,MAAM,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IACrC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;AAC9D,CAAC"}
1
+ {"version":3,"file":"fs-safe.js","sourceRoot":"","sources":["../../src/core/fs-safe.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../src/core/git.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAElD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAGjD,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,MAAM,EACX,GAAG,GAAE,aAA0B,GAC9B,OAAO,CAAC,MAAM,CAAC,CAGjB;AAED,wBAAsB,UAAU,CAC9B,QAAQ,EAAE,MAAM,EAChB,GAAG,GAAE,aAA0B,GAC9B,OAAO,CAAC,OAAO,CAAC,CAgBlB;AAED,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,MAAM,EAChB,GAAG,GAAE,aAA0B,GAC9B,OAAO,CAAC,MAAM,EAAE,CAAC,CAQnB;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAW5D"}
1
+ {"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../src/core/git.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAElD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAGjD,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,MAAM,EACX,GAAG,GAAE,aAA0B,GAC9B,OAAO,CAAC,MAAM,CAAC,CAGjB;AAED,wBAAsB,UAAU,CAC9B,QAAQ,EAAE,MAAM,EAChB,GAAG,GAAE,aAA0B,GAC9B,OAAO,CAAC,OAAO,CAAC,CAgBlB;AAED,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,MAAM,EAChB,GAAG,GAAE,aAA0B,GAC9B,OAAO,CAAC,MAAM,EAAE,CAAC,CAWnB;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAW5D"}
package/dist/core/git.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { runCommand } from "./process.js";
2
- import { filterAgentFlightRuntimePaths } from "./changed-files.js";
2
+ import { filterBuiltInRuntimePaths } from "./changed-files.js";
3
3
  export async function getRepositoryRoot(cwd, run = runCommand) {
4
4
  const result = await run("git", ["rev-parse", "--show-toplevel"], { cwd, timeoutMs: 10_000 });
5
5
  return result.exitCode === 0 && result.stdout.trim() ? result.stdout.trim() : cwd;
@@ -10,7 +10,7 @@ export async function getGitInfo(repoRoot, run = runCommand) {
10
10
  run("git", ["rev-parse", "--short", "HEAD"], { cwd: repoRoot, timeoutMs: 10_000 }),
11
11
  run("git", ["status", "--porcelain", "-uall"], { cwd: repoRoot, timeoutMs: 10_000 })
12
12
  ]);
13
- const changedFiles = status.exitCode === 0 ? filterAgentFlightRuntimePaths(parseGitStatusFiles(status.stdout)) : [];
13
+ const changedFiles = status.exitCode === 0 ? filterBuiltInRuntimePaths(parseGitStatusFiles(status.stdout)) : [];
14
14
  return {
15
15
  branch: branch.exitCode === 0 && branch.stdout.trim() ? branch.stdout.trim() : null,
16
16
  commit: commit.exitCode === 0 && commit.stdout.trim() ? commit.stdout.trim() : null,
@@ -23,9 +23,10 @@ export async function listChangedFiles(repoRoot, run = runCommand) {
23
23
  cwd: repoRoot,
24
24
  timeoutMs: 10_000
25
25
  });
26
- return result.exitCode === 0
27
- ? filterAgentFlightRuntimePaths(parseGitStatusFiles(result.stdout))
28
- : [];
26
+ if (result.exitCode !== 0) {
27
+ throw new Error(`Unable to inspect changed files with git status: ${formatGitStatusFailure(result)}`);
28
+ }
29
+ return filterBuiltInRuntimePaths(parseGitStatusFiles(result.stdout));
29
30
  }
30
31
  export function parseGitStatusFiles(output) {
31
32
  return output
@@ -40,4 +41,7 @@ export function parseGitStatusFiles(output) {
40
41
  })
41
42
  .filter(Boolean);
42
43
  }
44
+ function formatGitStatusFailure(result) {
45
+ return (result.stderr || result.stdout || "git status exited without output").trim();
46
+ }
43
47
  //# sourceMappingURL=git.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/core/git.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/core/git.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,16 @@ import type { ToolAdapterResult } from "../types/index.js";
2
2
  export interface CommandOutput {
3
3
  output: string;
4
4
  }
5
+ export interface VerificationFailureCounts {
6
+ passed: number;
7
+ failed: number;
8
+ unresolvedFailed: number;
9
+ resolvedFailed: number;
10
+ }
11
+ export declare const AGENTFLIGHT_PROJECT_CONFIG_GUIDANCE = ".agentflight/config.json is project config. Review or commit it when shared AgentFlight defaults are useful.";
12
+ export declare const AGENTFLIGHT_RUNTIME_EVIDENCE_GUIDANCE = ".agentflight/sessions/, reports/, evidence/, current/ are local runtime evidence and are excluded from AgentFlight changed-file analysis.";
13
+ export declare const AGENTFLIGHT_GITIGNORE_GUIDANCE = ".agentflight/.gitignore keeps runtime evidence out of git while leaving config.json visible.";
14
+ export declare const PROJSCAN_MEMORY_FILTER_GUIDANCE = "If .projscan-memory/memory.json appears as generated tool state, add \".projscan-memory/**\" to changedFileFilters.ignore in .agentflight/config.json.";
5
15
  export declare function formatToolAvailability(label: string, available: boolean): string;
6
16
  export declare function renderStatus(status: "ok" | "warning" | "error"): string;
7
17
  export declare function formatCommandForDisplay(command: string, options?: {
@@ -9,5 +19,9 @@ export declare function formatCommandForDisplay(command: string, options?: {
9
19
  }): string;
10
20
  export declare function formatVerifyCommandForDisplay(command: string): string;
11
21
  export declare function compactCommandInText(text: string, command: string | undefined): string;
22
+ export declare function formatVerificationCountLine(counts: VerificationFailureCounts): string;
23
+ export declare function formatVerificationFailureContext(counts: VerificationFailureCounts): string;
24
+ export declare function formatAgentFlightGeneratedFileList(repoRoot: string, files: string[]): string;
25
+ export declare function formatAgentFlightLocalFilesGuidance(): string;
12
26
  export declare function formatToolForReport(label: string, result: ToolAdapterResult): string;
13
27
  //# sourceMappingURL=output.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../src/core/output.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAE3D,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;CAChB;AAID,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,GAAG,MAAM,CAEhF;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,IAAI,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,CAIvE;AAED,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,MAAM,EACf,OAAO,GAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GACnC,MAAM,CAKR;AAED,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAErE;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAGtF;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,GAAG,MAAM,CAMpF"}
1
+ {"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../src/core/output.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAG3D,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;CACxB;AAGD,eAAO,MAAM,mCAAmC,iHACgE,CAAC;AACjH,eAAO,MAAM,qCAAqC,8IAC2F,CAAC;AAC9I,eAAO,MAAM,8BAA8B,iGACqD,CAAC;AACjG,eAAO,MAAM,+BAA+B,2JAC4G,CAAC;AAEzJ,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,GAAG,MAAM,CAEhF;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,IAAI,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,CAIvE;AAED,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,MAAM,EACf,OAAO,GAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GACnC,MAAM,CAKR;AAED,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAErE;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAGtF;AAED,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,yBAAyB,GAAG,MAAM,CAMrF;AAED,wBAAgB,gCAAgC,CAAC,MAAM,EAAE,yBAAyB,GAAG,MAAM,CAW1F;AAED,wBAAgB,kCAAkC,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAO5F;AAED,wBAAgB,mCAAmC,IAAI,MAAM,CAO5D;AAiBD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,GAAG,MAAM,CAQpF"}
@@ -1,4 +1,9 @@
1
+ import { formatRepoRelativePath } from "./paths.js";
1
2
  const DEFAULT_COMMAND_DISPLAY_LENGTH = 96;
3
+ export const AGENTFLIGHT_PROJECT_CONFIG_GUIDANCE = ".agentflight/config.json is project config. Review or commit it when shared AgentFlight defaults are useful.";
4
+ export const AGENTFLIGHT_RUNTIME_EVIDENCE_GUIDANCE = ".agentflight/sessions/, reports/, evidence/, current/ are local runtime evidence and are excluded from AgentFlight changed-file analysis.";
5
+ export const AGENTFLIGHT_GITIGNORE_GUIDANCE = ".agentflight/.gitignore keeps runtime evidence out of git while leaving config.json visible.";
6
+ export const PROJSCAN_MEMORY_FILTER_GUIDANCE = 'If .projscan-memory/memory.json appears as generated tool state, add ".projscan-memory/**" to changedFileFilters.ignore in .agentflight/config.json.';
2
7
  export function formatToolAvailability(label, available) {
3
8
  return `${label}: ${available ? "available" : "unavailable"}`;
4
9
  }
@@ -24,14 +29,76 @@ export function compactCommandInText(text, command) {
24
29
  return text;
25
30
  return text.split(command).join(formatCommandForDisplay(command));
26
31
  }
32
+ export function formatVerificationCountLine(counts) {
33
+ const context = counts.failed > 0
34
+ ? ` (${counts.unresolvedFailed} unresolved, ${counts.resolvedFailed} resolved)`
35
+ : "";
36
+ return `${counts.passed} passed, ${counts.failed} failed${context}`;
37
+ }
38
+ export function formatVerificationFailureContext(counts) {
39
+ if (counts.failed === 0)
40
+ return "";
41
+ const lines = [];
42
+ if (counts.unresolvedFailed > 0) {
43
+ lines.push(`Unresolved failed runs: ${counts.unresolvedFailed}.`);
44
+ }
45
+ if (counts.resolvedFailed > 0) {
46
+ lines.push(`Historical failed runs: ${counts.resolvedFailed} resolved by later passing runs.`);
47
+ }
48
+ return lines.join(" ");
49
+ }
50
+ export function formatAgentFlightGeneratedFileList(repoRoot, files) {
51
+ if (files.length === 0)
52
+ return "- none";
53
+ return files
54
+ .map((file) => formatRepoRelativePath(repoRoot, file))
55
+ .sort(compareAgentFlightGeneratedFilePaths)
56
+ .map((file) => `- ${file}`)
57
+ .join("\n");
58
+ }
59
+ export function formatAgentFlightLocalFilesGuidance() {
60
+ return [
61
+ AGENTFLIGHT_PROJECT_CONFIG_GUIDANCE,
62
+ AGENTFLIGHT_RUNTIME_EVIDENCE_GUIDANCE,
63
+ AGENTFLIGHT_GITIGNORE_GUIDANCE,
64
+ PROJSCAN_MEMORY_FILTER_GUIDANCE
65
+ ].join("\n");
66
+ }
67
+ function compareAgentFlightGeneratedFilePaths(left, right) {
68
+ return (agentFlightGeneratedFilePathPriority(left) - agentFlightGeneratedFilePathPriority(right) ||
69
+ left.localeCompare(right));
70
+ }
71
+ function agentFlightGeneratedFilePathPriority(file) {
72
+ const priorities = new Map([
73
+ [".agentflight/config.json", 0],
74
+ [".agentflight/.gitignore", 1]
75
+ ]);
76
+ return priorities.get(file) ?? 10;
77
+ }
27
78
  export function formatToolForReport(label, result) {
28
79
  const status = result.available ? "available" : "unavailable";
29
80
  const version = result.version ? ` ${result.version}` : "";
81
+ const stateDetails = summarizeToolState(label, result);
30
82
  const warnings = result.warnings.map((warning) => summarizeToolWarning(label, warning));
31
- const warningText = warnings.length ? ` (${warnings.join("; ")})` : "";
32
- return `${status}${version}${warningText}`;
83
+ const details = [...stateDetails, ...warnings];
84
+ const detailText = details.length ? ` (${details.join("; ")})` : "";
85
+ return `${status}${version}${detailText}`;
86
+ }
87
+ function summarizeToolState(label, result) {
88
+ if (label !== "AgentLoopKit" || !result.available || result.taskLinked === undefined) {
89
+ return [];
90
+ }
91
+ return [result.taskLinked ? "active task linked" : "no active task linked"];
33
92
  }
34
93
  function summarizeToolWarning(label, warning) {
94
+ if (label === "ProjScan") {
95
+ if (warning.startsWith("ProjScan baseline skipped:")) {
96
+ return "ProjScan baseline skipped; run projscan start for details.";
97
+ }
98
+ if (warning.startsWith("ProjScan unavailable:")) {
99
+ return "ProjScan unavailable; run npx projscan@latest doctor for details.";
100
+ }
101
+ }
35
102
  if (label === "AgentLoopKit") {
36
103
  if (warning.startsWith("AgentLoopKit doctor reported issues:")) {
37
104
  return "AgentLoopKit doctor reported issues; run agentloopkit doctor for details.";
@@ -39,8 +106,9 @@ function summarizeToolWarning(label, warning) {
39
106
  if (warning.startsWith("AgentLoopKit unavailable:")) {
40
107
  return "AgentLoopKit unavailable; run npx agentloopkit@latest doctor for details.";
41
108
  }
42
- if (warning.startsWith("AgentLoopKit task creation failed:")) {
43
- return "AgentLoopKit task creation failed; run agentloopkit status for details.";
109
+ if (warning.startsWith("AgentLoopKit task creation failed:") ||
110
+ warning.startsWith("AgentLoopKit task link check failed:")) {
111
+ return "AgentLoopKit task link check needs attention; run agentloopkit status for details.";
44
112
  }
45
113
  }
46
114
  return formatCommandForDisplay(warning, { maxLength: 180 });
@@ -1 +1 @@
1
- {"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/core/output.ts"],"names":[],"mappings":"AAMA,MAAM,8BAA8B,GAAG,EAAE,CAAC;AAE1C,MAAM,UAAU,sBAAsB,CAAC,KAAa,EAAE,SAAkB;IACtE,OAAO,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;AAChE,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,MAAkC;IAC7D,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACjC,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC3C,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,OAAe,EACf,UAAkC,EAAE;IAEpC,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,8BAA8B,CAAC;IACtE,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACvD,IAAI,UAAU,CAAC,MAAM,IAAI,SAAS;QAAE,OAAO,UAAU,CAAC;IACtD,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC;AACzE,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,OAAe;IAC3D,OAAO,yBAAyB,uBAAuB,CAAC,OAAO,CAAC,EAAE,CAAC;AACrE,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,IAAY,EAAE,OAA2B;IAC5E,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAC1B,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC,CAAC;AACpE,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,KAAa,EAAE,MAAyB;IAC1E,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC;IAC9D,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3D,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,oBAAoB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;IACxF,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IACvE,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,WAAW,EAAE,CAAC;AAC7C,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAa,EAAE,OAAe;IAC1D,IAAI,KAAK,KAAK,cAAc,EAAE,CAAC;QAC7B,IAAI,OAAO,CAAC,UAAU,CAAC,sCAAsC,CAAC,EAAE,CAAC;YAC/D,OAAO,2EAA2E,CAAC;QACrF,CAAC;QACD,IAAI,OAAO,CAAC,UAAU,CAAC,2BAA2B,CAAC,EAAE,CAAC;YACpD,OAAO,2EAA2E,CAAC;QACrF,CAAC;QACD,IAAI,OAAO,CAAC,UAAU,CAAC,oCAAoC,CAAC,EAAE,CAAC;YAC7D,OAAO,yEAAyE,CAAC;QACnF,CAAC;IACH,CAAC;IAED,OAAO,uBAAuB,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;AAC9D,CAAC"}
1
+ {"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/core/output.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
1
  import type { AgentFlightPaths } from "../types/index.js";
2
2
  export declare function resolveAgentFlightPaths(repoRoot: string): AgentFlightPaths;
3
+ export declare function formatRepoRelativePath(repoRoot: string, targetPath: string): string;
3
4
  //# sourceMappingURL=paths.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/core/paths.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAE1D,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,gBAAgB,CAc1E"}
1
+ {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/core/paths.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAE1D,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,gBAAgB,CAc1E;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAKnF"}
@@ -1,4 +1,4 @@
1
- import { join } from "node:path";
1
+ import { isAbsolute, join, relative, sep } from "node:path";
2
2
  export function resolveAgentFlightPaths(repoRoot) {
3
3
  const root = join(repoRoot, ".agentflight");
4
4
  return {
@@ -13,4 +13,12 @@ export function resolveAgentFlightPaths(repoRoot) {
13
13
  currentResumePrompt: join(root, "current", "resume-prompt.md")
14
14
  };
15
15
  }
16
+ export function formatRepoRelativePath(repoRoot, targetPath) {
17
+ const relativePath = relative(repoRoot, targetPath);
18
+ if (relativePath === "")
19
+ return ".";
20
+ if (relativePath.startsWith("..") || isAbsolute(relativePath))
21
+ return targetPath;
22
+ return relativePath.split(sep).join("/");
23
+ }
16
24
  //# sourceMappingURL=paths.js.map