@jeger-ai/opengantry 2.5.0 → 2.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 (153) hide show
  1. package/README.md +6 -4
  2. package/dist/cli/commands/arch.d.ts.map +1 -1
  3. package/dist/cli/commands/arch.js +39 -87
  4. package/dist/cli/commands/arch.js.map +1 -1
  5. package/dist/cli/commands/init.d.ts +2 -0
  6. package/dist/cli/commands/init.d.ts.map +1 -1
  7. package/dist/cli/commands/init.js +20 -27
  8. package/dist/cli/commands/init.js.map +1 -1
  9. package/dist/cli/commands/onboarding.js +1 -1
  10. package/dist/cli/commands/onboarding.js.map +1 -1
  11. package/dist/cli/commands/perimeter.d.ts.map +1 -1
  12. package/dist/cli/commands/perimeter.js +3 -6
  13. package/dist/cli/commands/perimeter.js.map +1 -1
  14. package/dist/cli/commands/planner.d.ts.map +1 -1
  15. package/dist/cli/commands/planner.js +5 -17
  16. package/dist/cli/commands/planner.js.map +1 -1
  17. package/dist/cli/commands/upgrade.d.ts.map +1 -1
  18. package/dist/cli/commands/upgrade.js +6 -14
  19. package/dist/cli/commands/upgrade.js.map +1 -1
  20. package/dist/cli/commands/verify.d.ts.map +1 -1
  21. package/dist/cli/commands/verify.js +19 -27
  22. package/dist/cli/commands/verify.js.map +1 -1
  23. package/dist/cli/lib/command-boundary.d.ts +16 -0
  24. package/dist/cli/lib/command-boundary.d.ts.map +1 -0
  25. package/dist/cli/lib/command-boundary.js +45 -0
  26. package/dist/cli/lib/command-boundary.js.map +1 -0
  27. package/dist/cli/lib/command-reporter.d.ts +3 -3
  28. package/dist/cli/lib/command-reporter.d.ts.map +1 -1
  29. package/dist/cli/lib/command-reporter.js +10 -0
  30. package/dist/cli/lib/command-reporter.js.map +1 -1
  31. package/dist/cli/lib/context-feed-remediation.d.ts +1 -1
  32. package/dist/cli/lib/context-feed-remediation.d.ts.map +1 -1
  33. package/dist/cli/lib/defensive-guard.d.ts +17 -2
  34. package/dist/cli/lib/defensive-guard.d.ts.map +1 -1
  35. package/dist/cli/lib/defensive-guard.js +240 -32
  36. package/dist/cli/lib/defensive-guard.js.map +1 -1
  37. package/dist/cli/lib/defensive-profile-presets.d.ts +10 -0
  38. package/dist/cli/lib/defensive-profile-presets.d.ts.map +1 -0
  39. package/dist/cli/lib/defensive-profile-presets.js +76 -0
  40. package/dist/cli/lib/defensive-profile-presets.js.map +1 -0
  41. package/dist/cli/lib/defensive-profile.d.ts +40 -4
  42. package/dist/cli/lib/defensive-profile.d.ts.map +1 -1
  43. package/dist/cli/lib/defensive-profile.js +136 -24
  44. package/dist/cli/lib/defensive-profile.js.map +1 -1
  45. package/dist/cli/lib/errors.d.ts +8 -2
  46. package/dist/cli/lib/errors.d.ts.map +1 -1
  47. package/dist/cli/lib/errors.js +12 -8
  48. package/dist/cli/lib/errors.js.map +1 -1
  49. package/dist/cli/lib/executor-log-line-map.d.ts +0 -2
  50. package/dist/cli/lib/executor-log-line-map.d.ts.map +1 -1
  51. package/dist/cli/lib/executor-log-line-map.js +0 -5
  52. package/dist/cli/lib/executor-log-line-map.js.map +1 -1
  53. package/dist/cli/lib/git-proof.js +2 -2
  54. package/dist/cli/lib/gxt-error-codes.d.ts +4 -2
  55. package/dist/cli/lib/gxt-error-codes.d.ts.map +1 -1
  56. package/dist/cli/lib/gxt-error-codes.js +9 -7
  57. package/dist/cli/lib/gxt-error-codes.js.map +1 -1
  58. package/dist/cli/lib/init-defensive-profile.d.ts +5 -0
  59. package/dist/cli/lib/init-defensive-profile.d.ts.map +1 -0
  60. package/dist/cli/lib/init-defensive-profile.js +14 -0
  61. package/dist/cli/lib/init-defensive-profile.js.map +1 -0
  62. package/dist/cli/lib/init-interactive.d.ts.map +1 -1
  63. package/dist/cli/lib/init-interactive.js +34 -0
  64. package/dist/cli/lib/init-interactive.js.map +1 -1
  65. package/dist/cli/lib/init-plan.d.ts +3 -1
  66. package/dist/cli/lib/init-plan.d.ts.map +1 -1
  67. package/dist/cli/lib/init-plan.js +3 -2
  68. package/dist/cli/lib/init-plan.js.map +1 -1
  69. package/dist/cli/lib/init-profile.d.ts +5 -0
  70. package/dist/cli/lib/init-profile.d.ts.map +1 -1
  71. package/dist/cli/lib/init-profile.js +9 -0
  72. package/dist/cli/lib/init-profile.js.map +1 -1
  73. package/dist/cli/lib/init-tutorial.js +1 -1
  74. package/dist/cli/lib/init-tutorial.js.map +1 -1
  75. package/dist/cli/lib/kpi-engine.d.ts +2 -2
  76. package/dist/cli/lib/kpi-engine.d.ts.map +1 -1
  77. package/dist/cli/lib/kpi-engine.js +3 -2
  78. package/dist/cli/lib/kpi-engine.js.map +1 -1
  79. package/dist/cli/lib/mcp-governance.d.ts.map +1 -1
  80. package/dist/cli/lib/mcp-governance.js +15 -15
  81. package/dist/cli/lib/mcp-governance.js.map +1 -1
  82. package/dist/cli/lib/mcp-runtime.d.ts +2 -2
  83. package/dist/cli/lib/mcp-runtime.d.ts.map +1 -1
  84. package/dist/cli/lib/mcp-runtime.js +1 -1
  85. package/dist/cli/lib/mcp-runtime.js.map +1 -1
  86. package/dist/cli/lib/mcp-upgrade.js +2 -2
  87. package/dist/cli/lib/mcp-write-guard.d.ts +2 -2
  88. package/dist/cli/lib/mcp-write-guard.js +2 -2
  89. package/dist/cli/lib/missions/parser.js +4 -4
  90. package/dist/cli/lib/surgeons/registry.d.ts +3 -2
  91. package/dist/cli/lib/surgeons/registry.d.ts.map +1 -1
  92. package/dist/cli/lib/surgeons/registry.js.map +1 -1
  93. package/dist/cli/lib/trace.d.ts +2 -1
  94. package/dist/cli/lib/trace.d.ts.map +1 -1
  95. package/dist/cli/lib/trace.js +21 -27
  96. package/dist/cli/lib/trace.js.map +1 -1
  97. package/dist/cli/lib/upgrade-apply.js +7 -7
  98. package/dist/cli/lib/verify-defensive-phase.d.ts +9 -0
  99. package/dist/cli/lib/verify-defensive-phase.d.ts.map +1 -0
  100. package/dist/cli/lib/verify-defensive-phase.js +44 -0
  101. package/dist/cli/lib/verify-defensive-phase.js.map +1 -0
  102. package/dist/cli/lib/verify-engine.d.ts +6 -34
  103. package/dist/cli/lib/verify-engine.d.ts.map +1 -1
  104. package/dist/cli/lib/verify-engine.js +63 -55
  105. package/dist/cli/lib/verify-engine.js.map +1 -1
  106. package/dist/cli/lib/verify-export.d.ts +1 -1
  107. package/dist/cli/lib/verify-export.d.ts.map +1 -1
  108. package/dist/cli/lib/verify-failure-normalize.d.ts +3 -9
  109. package/dist/cli/lib/verify-failure-normalize.d.ts.map +1 -1
  110. package/dist/cli/lib/verify-failure-normalize.js +91 -12
  111. package/dist/cli/lib/verify-failure-normalize.js.map +1 -1
  112. package/dist/cli/lib/verify-failure.d.ts +57 -0
  113. package/dist/cli/lib/verify-failure.d.ts.map +1 -0
  114. package/dist/cli/lib/verify-failure.js +2 -0
  115. package/dist/cli/lib/verify-failure.js.map +1 -0
  116. package/dist/cli/lib/verify-hints.d.ts +5 -18
  117. package/dist/cli/lib/verify-hints.d.ts.map +1 -1
  118. package/dist/cli/lib/verify-hints.js +40 -61
  119. package/dist/cli/lib/verify-hints.js.map +1 -1
  120. package/dist/cli/lib/verify-payload.d.ts +35 -2
  121. package/dist/cli/lib/verify-payload.d.ts.map +1 -1
  122. package/dist/cli/lib/verify-payload.js +6 -0
  123. package/dist/cli/lib/verify-payload.js.map +1 -1
  124. package/dist/cli/lib/verify-presenters.d.ts +3 -0
  125. package/dist/cli/lib/verify-presenters.d.ts.map +1 -1
  126. package/dist/cli/lib/verify-presenters.js +18 -5
  127. package/dist/cli/lib/verify-presenters.js.map +1 -1
  128. package/dist/cli/lib/verify-run.d.ts +0 -2
  129. package/dist/cli/lib/verify-run.d.ts.map +1 -1
  130. package/dist/cli/lib/verify-run.js +2 -2
  131. package/dist/cli/lib/version.gen.d.ts +1 -1
  132. package/dist/cli/lib/version.gen.js +1 -1
  133. package/dist/cli/program-core.d.ts.map +1 -1
  134. package/dist/cli/program-core.js +2 -0
  135. package/dist/cli/program-core.js.map +1 -1
  136. package/dist/cli/program-workflow.d.ts.map +1 -1
  137. package/dist/cli/program-workflow.js.map +1 -1
  138. package/package.json +1 -1
  139. package/templates/.gitagent/config.json +12 -0
  140. package/templates/.gitagent/foreman/SUBSTRATE.version.json +1 -1
  141. package/templates/integrations/compatibility.json +1 -1
  142. package/dist/cli/lib/verify-failure-normalize-phases.d.ts +0 -9
  143. package/dist/cli/lib/verify-failure-normalize-phases.d.ts.map +0 -1
  144. package/dist/cli/lib/verify-failure-normalize-phases.js +0 -84
  145. package/dist/cli/lib/verify-failure-normalize-phases.js.map +0 -1
  146. package/dist/cli/lib/verify-payload-types.d.ts +0 -34
  147. package/dist/cli/lib/verify-payload-types.d.ts.map +0 -1
  148. package/dist/cli/lib/verify-payload-types.js +0 -2
  149. package/dist/cli/lib/verify-payload-types.js.map +0 -1
  150. package/dist/cli/lib/verify-presentation.d.ts +0 -15
  151. package/dist/cli/lib/verify-presentation.d.ts.map +0 -1
  152. package/dist/cli/lib/verify-presentation.js +0 -12
  153. package/dist/cli/lib/verify-presentation.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"upgrade.js","sourceRoot":"","sources":["../../../src/cli/commands/upgrade.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"upgrade.js","sourceRoot":"","sources":["../../../src/cli/commands/upgrade.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChF,OAAO,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AAC3F,OAAO,EAAE,6BAA6B,EAAE,MAAM,8BAA8B,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AAC9E,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAWnD,MAAM,UAAU,UAAU,CAAC,UAA0B,EAAE;IACrD,MAAM,QAAQ,GAAG,yBAAyB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACxD,IAAI,QAAQ,KAAK,IAAI;QAAE,OAAO;IAE9B,IAAI,aAAqB,CAAC;IAC1B,IAAI,CAAC;QACH,aAAa,GAAG,6BAA6B,EAAE,CAAC;IAClD,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,kBAAkB,CAAC,CAAC,CAAC,CAAC;QACtB,OAAO;IACT,CAAC;IAED,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,KAAK,eAAe,CAAC;YACnB,QAAQ;YACR,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,aAAa;YACb,IAAI,EAAE,OAAO,CAAC,IAAI;SACnB,CAAC;aACC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;YACf,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC/C,CAAC;YACD,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBAChC,WAAW,CAAC,CAAC,CAAC,CAAC;YACjB,CAAC;QACH,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;YACX,kBAAkB,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;QACL,OAAO;IACT,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,cAAc,CAAC;YAC5B,QAAQ;YACR,aAAa;YACb,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,IAAI,EAAE,OAAO,CAAC,IAAI;SACnB,CAAC,CAAC;QAEH,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,4BAA4B,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7E,CAAC;QAED,IAAI,MAAM,CAAC,MAAM,KAAK,mBAAmB,EAAE,CAAC;YAC1C,QAAQ,CAAC,MAAM,CAAC,OAAO,IAAI,mBAAmB,CAAC,CAAC;YAChD,WAAW,CAAC,CAAC,CAAC,CAAC;YACf,OAAO;QACT,CAAC;QAED,IAAI,MAAM,CAAC,MAAM,KAAK,iBAAiB,EAAE,CAAC;YACxC,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,iBAAiB,CAAC,CAAC;YAC7C,OAAO;QACT,CAAC;QAED,IAAI,MAAM,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;YACnC,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,YAAY,CAAC,CAAC;YACxC,OAAO;QACT,CAAC;IACH,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,kBAAkB,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,CAAU,EAAE,IAAc;IACpD,IAAI,CAAC,YAAY,eAAe,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACpE,IAAI,IAAI;YAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;;YACnD,QAAQ,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9D,WAAW,CAAC,CAAC,CAAC,CAAC;QACf,OAAO;IACT,CAAC;IACD,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1B,WAAW,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/verify.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAM7D,YAAY,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAqD7D,wBAAsB,SAAS,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAiDrE"}
1
+ {"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/verify.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAM7D,YAAY,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAgE7D,wBAAsB,SAAS,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CA+BrE"}
@@ -1,20 +1,30 @@
1
1
  import { logError, logInfo, setExitCode } from "../lib/cli-io.js";
2
2
  import { gitRevParse } from "../lib/git.js";
3
- import { initFailurePayload } from "../lib/verify-presentation.js";
4
- import { emitVerifyJson } from "../lib/verify-presentation.js";
3
+ import { initFailurePayload } from "../lib/verify-payload.js";
4
+ import { emitVerifyJson } from "../lib/verify-presenters.js";
5
5
  import { discoverChangedMissionFiles } from "../lib/verify-engine.js";
6
6
  import { loadWorkspace } from "../lib/workspace.js";
7
- import { GapmanUserError, reportUserFacingError } from "../lib/errors.js";
8
- import { runVerifyCore } from "../lib/verify-presentation.js";
7
+ import { GantryUserError, reportUserFacingError } from "../lib/errors.js";
8
+ import { runVerifyCore } from "../lib/verify-run.js";
9
+ /** Single verify boundary reporter: JSON payload when --json, canonical human error otherwise. */
10
+ function reportVerifyBoundaryError(e, options) {
11
+ if (options.json) {
12
+ const payload = initFailurePayload(e);
13
+ emitVerifyJson(payload, options);
14
+ setExitCode(payload.exit_code);
15
+ return;
16
+ }
17
+ reportUserFacingError(e);
18
+ }
9
19
  function assertVerifyOptionsCompatible(options) {
10
20
  if (options.json === true && options.fix === true) {
11
- throw new GapmanUserError("INVALID_ARGUMENT", "The --fix flag cannot be used with --json. Automated repair is not supported in structured output mode.", undefined, 2);
21
+ throw new GantryUserError("INVALID_ARGUMENT", "The --fix flag cannot be used with --json. Automated repair is not supported in structured output mode.", undefined, 2);
12
22
  }
13
23
  if (options.changedMissions === true && !options.mission) {
14
24
  return;
15
25
  }
16
26
  if (options.changedMissions === true && options.mission) {
17
- throw new GapmanUserError("INVALID_ARGUMENT", "Use either --mission or --changed-missions, not both.", undefined, 2);
27
+ throw new GantryUserError("INVALID_ARGUMENT", "Use either --mission or --changed-missions, not both.", undefined, 2);
18
28
  }
19
29
  }
20
30
  function resolveChangedMissionsBaseRef(root, explicit) {
@@ -51,13 +61,7 @@ export async function runVerify(options) {
51
61
  assertVerifyOptionsCompatible(options);
52
62
  }
53
63
  catch (e) {
54
- if (options.json) {
55
- const payload = initFailurePayload(e);
56
- emitVerifyJson(payload, options);
57
- setExitCode(payload.exit_code);
58
- return;
59
- }
60
- reportUserFacingError(e);
64
+ reportVerifyBoundaryError(e, options);
61
65
  return;
62
66
  }
63
67
  if (options.changedMissions) {
@@ -65,13 +69,7 @@ export async function runVerify(options) {
65
69
  await runVerifyChangedMissions(options);
66
70
  }
67
71
  catch (e) {
68
- if (options.json) {
69
- const payload = initFailurePayload(e);
70
- emitVerifyJson(payload, options);
71
- setExitCode(payload.exit_code);
72
- return;
73
- }
74
- reportUserFacingError(e);
72
+ reportVerifyBoundaryError(e, options);
75
73
  }
76
74
  return;
77
75
  }
@@ -87,13 +85,7 @@ export async function runVerify(options) {
87
85
  }
88
86
  }
89
87
  catch (e) {
90
- if (options.json) {
91
- const payload = initFailurePayload(e);
92
- emitVerifyJson(payload, options);
93
- setExitCode(payload.exit_code);
94
- return;
95
- }
96
- reportUserFacingError(e);
88
+ reportVerifyBoundaryError(e, options);
97
89
  }
98
90
  }
99
91
  //# sourceMappingURL=verify.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"verify.js","sourceRoot":"","sources":["../../../src/cli/commands/verify.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"verify.js","sourceRoot":"","sources":["../../../src/cli/commands/verify.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Command-boundary error helpers: commands resolve their repo root and report
3
+ * boundary failures through one place instead of hand-rolled try/catch copies.
4
+ */
5
+ /** Report a command-boundary failure: log the message and set the exit code once. */
6
+ export declare function reportCommandError(e: unknown, exitCode?: number): void;
7
+ /**
8
+ * Resolve the git repo root at the command boundary.
9
+ * On failure logs the message (stripping the CLI prefix `logError` re-adds) and exits 2.
10
+ */
11
+ export declare function resolveRepoRootAtBoundary(cwd?: string): string | null;
12
+ /** Run a command body; any thrown error is reported once with the given exit code. */
13
+ export declare function runAtCommandBoundary(exitCode: number, fn: () => void): void;
14
+ /** Async variant of {@link runAtCommandBoundary}. */
15
+ export declare function runAtCommandBoundaryAsync(exitCode: number, fn: () => Promise<void>): Promise<void>;
16
+ //# sourceMappingURL=command-boundary.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-boundary.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/command-boundary.ts"],"names":[],"mappings":"AAIA;;;GAGG;AAEH,qFAAqF;AACrF,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,SAAI,GAAG,IAAI,CAGjE;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQrE;AAED,sFAAsF;AACtF,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,IAAI,GAAG,IAAI,CAM3E;AAED,qDAAqD;AACrD,wBAAsB,yBAAyB,CAC7C,QAAQ,EAAE,MAAM,EAChB,EAAE,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GACtB,OAAO,CAAC,IAAI,CAAC,CAMf"}
@@ -0,0 +1,45 @@
1
+ import { CLI_NAME } from "./constants.js";
2
+ import { errorMessage, logError, setExitCode } from "./cli-io.js";
3
+ import { getRepoRoot } from "./git.js";
4
+ /**
5
+ * Command-boundary error helpers: commands resolve their repo root and report
6
+ * boundary failures through one place instead of hand-rolled try/catch copies.
7
+ */
8
+ /** Report a command-boundary failure: log the message and set the exit code once. */
9
+ export function reportCommandError(e, exitCode = 2) {
10
+ logError(errorMessage(e));
11
+ setExitCode(exitCode);
12
+ }
13
+ /**
14
+ * Resolve the git repo root at the command boundary.
15
+ * On failure logs the message (stripping the CLI prefix `logError` re-adds) and exits 2.
16
+ */
17
+ export function resolveRepoRootAtBoundary(cwd) {
18
+ try {
19
+ return getRepoRoot(cwd);
20
+ }
21
+ catch (e) {
22
+ logError(e instanceof Error ? e.message.replace(`${CLI_NAME}: `, "") : String(e));
23
+ setExitCode(2);
24
+ return null;
25
+ }
26
+ }
27
+ /** Run a command body; any thrown error is reported once with the given exit code. */
28
+ export function runAtCommandBoundary(exitCode, fn) {
29
+ try {
30
+ fn();
31
+ }
32
+ catch (e) {
33
+ reportCommandError(e, exitCode);
34
+ }
35
+ }
36
+ /** Async variant of {@link runAtCommandBoundary}. */
37
+ export async function runAtCommandBoundaryAsync(exitCode, fn) {
38
+ try {
39
+ await fn();
40
+ }
41
+ catch (e) {
42
+ reportCommandError(e, exitCode);
43
+ }
44
+ }
45
+ //# sourceMappingURL=command-boundary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-boundary.js","sourceRoot":"","sources":["../../../src/cli/lib/command-boundary.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAEvC;;;GAGG;AAEH,qFAAqF;AACrF,MAAM,UAAU,kBAAkB,CAAC,CAAU,EAAE,QAAQ,GAAG,CAAC;IACzD,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1B,WAAW,CAAC,QAAQ,CAAC,CAAC;AACxB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,yBAAyB,CAAC,GAAY;IACpD,IAAI,CAAC;QACH,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,QAAQ,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,QAAQ,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAClF,WAAW,CAAC,CAAC,CAAC,CAAC;QACf,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,sFAAsF;AACtF,MAAM,UAAU,oBAAoB,CAAC,QAAgB,EAAE,EAAc;IACnE,IAAI,CAAC;QACH,EAAE,EAAE,CAAC;IACP,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,kBAAkB,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IAClC,CAAC;AACH,CAAC;AAED,qDAAqD;AACrD,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,QAAgB,EAChB,EAAuB;IAEvB,IAAI,CAAC;QACH,MAAM,EAAE,EAAE,CAAC;IACb,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,kBAAkB,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IAClC,CAAC;AACH,CAAC"}
@@ -1,8 +1,8 @@
1
1
  import { type OutputAudience } from "./audience-output.js";
2
2
  import type { VerifyPhaseSuccess } from "./verify-engine.js";
3
- import type { VerifyFailurePresentation } from "./verify-presentation.js";
4
- import type { VerifyResultPayload } from "./verify-presentation.js";
5
- import type { AudienceTaggedStep } from "./verify-presentation.js";
3
+ import type { VerifyFailurePresentation } from "./verify-failure-normalize.js";
4
+ import type { VerifyResultPayload } from "./verify-payload.js";
5
+ import type { AudienceTaggedStep } from "./verify-hints.js";
6
6
  export type CommandReporterChannel = "human" | "json" | "silent";
7
7
  export interface CommandReporterOptions {
8
8
  channel?: CommandReporterChannel;
@@ -1 +1 @@
1
- {"version":3,"file":"command-reporter.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/command-reporter.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,KAAK,cAAc,EACpB,MAAM,sBAAsB,CAAC;AAI9B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAC1E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAEnE,MAAM,MAAM,sBAAsB,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC;AAEjE,MAAM,WAAW,sBAAsB;IACrC,OAAO,CAAC,EAAE,sBAAsB,CAAC;IACjC,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B;AAED;;;GAGG;AACH,qBAAa,eAAe;IAC1B,QAAQ,CAAC,OAAO,EAAE,sBAAsB,CAAC;IACzC,QAAQ,CAAC,QAAQ,EAAE,cAAc,GAAG,SAAS,CAAC;gBAElC,OAAO,GAAE,sBAA2B;IAKhD,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE;QAAE,IAAI,CAAC,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,cAAc,CAAA;KAAE,GAAG,eAAe;IAU1G,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAK/B,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAKhC,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAK/B,eAAe,CAAC,OAAO,EAAE,mBAAmB,GAAG,IAAI;IAKnD,iBAAiB,CAAC,MAAM,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI;IAkCxE,uBAAuB,CAAC,YAAY,EAAE,yBAAyB,GAAG,IAAI;IAatE,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,MAAM,CAAC,EAAE,kBAAkB,EAAE,GAAG,IAAI;CAiBpE"}
1
+ {"version":3,"file":"command-reporter.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/command-reporter.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,KAAK,cAAc,EACpB,MAAM,sBAAsB,CAAC;AAI9B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAC/E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAE5D,MAAM,MAAM,sBAAsB,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC;AAEjE,MAAM,WAAW,sBAAsB;IACrC,OAAO,CAAC,EAAE,sBAAsB,CAAC;IACjC,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B;AAED;;;GAGG;AACH,qBAAa,eAAe;IAC1B,QAAQ,CAAC,OAAO,EAAE,sBAAsB,CAAC;IACzC,QAAQ,CAAC,QAAQ,EAAE,cAAc,GAAG,SAAS,CAAC;gBAElC,OAAO,GAAE,sBAA2B;IAKhD,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE;QAAE,IAAI,CAAC,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,cAAc,CAAA;KAAE,GAAG,eAAe;IAU1G,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAK/B,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAKhC,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAK/B,eAAe,CAAC,OAAO,EAAE,mBAAmB,GAAG,IAAI;IAKnD,iBAAiB,CAAC,MAAM,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI;IA4CxE,uBAAuB,CAAC,YAAY,EAAE,yBAAyB,GAAG,IAAI;IAatE,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,MAAM,CAAC,EAAE,kBAAkB,EAAE,GAAG,IAAI;CAiBpE"}
@@ -57,6 +57,16 @@ export class CommandReporter {
57
57
  return;
58
58
  }
59
59
  this.emitInfo(`${CLI_NAME} verify: gate passed`);
60
+ if (result.defensiveWarnings) {
61
+ for (const w of result.defensiveWarnings) {
62
+ logWarn(`defensive: ${w}`);
63
+ }
64
+ }
65
+ if (result.defensiveAudits) {
66
+ for (const w of result.defensiveAudits) {
67
+ this.emitInfo(`defensive audit: ${w}`);
68
+ }
69
+ }
60
70
  if (result.kpiWarnings) {
61
71
  for (const w of result.kpiWarnings) {
62
72
  this.emitInfo(` ${w}`);
@@ -1 +1 @@
1
- {"version":3,"file":"command-reporter.js","sourceRoot":"","sources":["../../../src/cli/lib/command-reporter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"command-reporter.js","sourceRoot":"","sources":["../../../src/cli/lib/command-reporter.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { VerifyFailedPayload } from "./verify-payload-types.js";
1
+ import type { VerifyFailedPayload } from "./verify-payload.js";
2
2
  import type { ParsedMission } from "./types.js";
3
3
  import type { VerifyPhaseFailure } from "./verify-engine.js";
4
4
  import type { VerifyOptions } from "./verify-engine.js";
@@ -1 +1 @@
1
- {"version":3,"file":"context-feed-remediation.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/context-feed-remediation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,OAAO,EACL,uBAAuB,EAGvB,KAAK,mBAAmB,EACzB,MAAM,yBAAyB,CAAC;AA6BjC,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,aAAa,GAAG,IAAI,EAC7B,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,OAAO,EAAE,mBAAmB,GAC3B,mBAAmB,CAUrB;AAED,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,aAAa,EACtB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,aAAa,EACtB,OAAO,EAAE,kBAAkB,GAC1B,mBAAmB,CAUrB;AAED,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,mBAAmB,GAAG,IAAI,CAM5F;AAED,wBAAgB,mCAAmC,CACjD,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,aAAa,GAAG,IAAI,EAC7B,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,OAAO,EAAE,mBAAmB,GAC3B,IAAI,CAEN;AAED,wBAAgB,kCAAkC,CAChD,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,aAAa,EACtB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,aAAa,EACtB,OAAO,EAAE,kBAAkB,GAC1B,IAAI,CAKN;AAED,OAAO,EAAE,uBAAuB,EAAE,CAAC"}
1
+ {"version":3,"file":"context-feed-remediation.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/context-feed-remediation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,OAAO,EACL,uBAAuB,EAGvB,KAAK,mBAAmB,EACzB,MAAM,yBAAyB,CAAC;AA6BjC,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,aAAa,GAAG,IAAI,EAC7B,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,OAAO,EAAE,mBAAmB,GAC3B,mBAAmB,CAUrB;AAED,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,aAAa,EACtB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,aAAa,EACtB,OAAO,EAAE,kBAAkB,GAC1B,mBAAmB,CAUrB;AAED,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,mBAAmB,GAAG,IAAI,CAM5F;AAED,wBAAgB,mCAAmC,CACjD,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,aAAa,GAAG,IAAI,EAC7B,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,OAAO,EAAE,mBAAmB,GAC3B,IAAI,CAEN;AAED,wBAAgB,kCAAkC,CAChD,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,aAAa,EACtB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,aAAa,EACtB,OAAO,EAAE,kBAAkB,GAC1B,IAAI,CAKN;AAED,OAAO,EAAE,uBAAuB,EAAE,CAAC"}
@@ -1,11 +1,26 @@
1
+ import { type GuardSeverity } from "./defensive-profile.js";
1
2
  import type { Manifest } from "./types.js";
3
+ export interface DefensiveFinding {
4
+ guard: string;
5
+ severity: GuardSeverity;
6
+ message: string;
7
+ detail?: Record<string, string | number>;
8
+ }
2
9
  export interface DefensiveGuardResult {
3
10
  ok: boolean;
11
+ findings: DefensiveFinding[];
12
+ blocked: DefensiveFinding[];
13
+ warnings: DefensiveFinding[];
14
+ audits: DefensiveFinding[];
4
15
  net_loc?: number;
5
16
  max_net_loc?: number;
6
- reason?: string;
17
+ /** Hard evaluation error (e.g. unknown skill) — never a guard finding message. */
18
+ error?: string;
7
19
  }
20
+ /** Changed files under TMVC roots (worktree + staged vs HEAD). */
21
+ export declare function listChangedFilesInTmvc(repoRoot: string, tmvcRoots: readonly string[]): string[];
8
22
  /** Net LOC across worktree + staged diffs for the given repo-relative paths. */
9
23
  export declare function computeNetLocForFiles(repoRoot: string, files: readonly string[]): number;
10
- export declare function evaluateNetLocBudgetGuard(repoRoot: string, manifest: Manifest, skillKey: string): DefensiveGuardResult;
24
+ export declare function countAssertionTokens(source: string): number;
25
+ export declare function evaluateDefensiveGuards(repoRoot: string, manifest: Manifest, skillKey: string): DefensiveGuardResult;
11
26
  //# sourceMappingURL=defensive-guard.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"defensive-guard.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/defensive-guard.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAG3C,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,OAAO,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AA+CD,gFAAgF;AAChF,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAIxF;AAED,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,MAAM,GACf,oBAAoB,CA2BtB"}
1
+ {"version":3,"file":"defensive-guard.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/defensive-guard.ts"],"names":[],"mappings":"AAKA,OAAO,EAEL,KAAK,aAAa,EAEnB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAG3C,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,aAAa,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;CAC1C;AAED,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,OAAO,CAAC;IACZ,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7B,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7B,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kFAAkF;IAClF,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAoCD,kEAAkE;AAClE,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAe/F;AAwBD,gFAAgF;AAChF,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAYxF;AAWD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAG3D;AA8JD,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,MAAM,GACf,oBAAoB,CAkDtB"}
@@ -1,22 +1,31 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
1
3
  import { gitRunOk } from "./git.js";
2
4
  import { normalizeRepoRelativePath } from "./tmvc-path.js";
3
5
  import { loadGxtConfig } from "./gxt-config.js";
4
- import { resolveDefensiveProfile } from "./defensive-profile.js";
6
+ import { resolveDefensiveProfile, } from "./defensive-profile.js";
5
7
  import { resolveManifestSkillKey } from "./skill-key.js";
6
- function gitNumstat(repoRoot, args) {
8
+ function gitNumstatLines(repoRoot, args) {
7
9
  const { ok, stdout } = gitRunOk(repoRoot, args);
8
10
  if (!ok)
9
- return 0;
10
- let total = 0;
11
+ return [];
12
+ const rows = [];
11
13
  for (const line of stdout.split("\n")) {
12
14
  const parts = line.split("\t");
13
- if (parts.length < 2)
15
+ if (parts.length < 3)
14
16
  continue;
15
17
  const add = parts[0] === "-" ? 0 : Number.parseInt(parts[0] ?? "0", 10);
16
18
  const del = parts[1] === "-" ? 0 : Number.parseInt(parts[1] ?? "0", 10);
17
- total += (Number.isFinite(add) ? add : 0) + (Number.isFinite(del) ? del : 0);
19
+ const filePath = parts[2]?.trim();
20
+ if (!filePath)
21
+ continue;
22
+ rows.push({
23
+ path: normalizeRepoRelativePath(filePath),
24
+ additions: Number.isFinite(add) ? add : 0,
25
+ deletions: Number.isFinite(del) ? del : 0,
26
+ });
18
27
  }
19
- return total;
28
+ return rows;
20
29
  }
21
30
  function pathMatchesTmvcRoot(filePath, roots) {
22
31
  const norm = normalizeRepoRelativePath(filePath);
@@ -25,7 +34,8 @@ function pathMatchesTmvcRoot(filePath, roots) {
25
34
  return norm === r || norm.startsWith(`${r.replace(/\/$/, "")}/`);
26
35
  });
27
36
  }
28
- function listChangedFilesInTmvc(repoRoot, tmvcRoots) {
37
+ /** Changed files under TMVC roots (worktree + staged vs HEAD). */
38
+ export function listChangedFilesInTmvc(repoRoot, tmvcRoots) {
29
39
  const { ok, stdout } = gitRunOk(repoRoot, ["diff", "--name-only", "HEAD"]);
30
40
  if (!ok)
31
41
  return [];
@@ -36,49 +46,247 @@ function listChangedFilesInTmvc(repoRoot, tmvcRoots) {
36
46
  const trimmed = line.trim();
37
47
  if (!trimmed)
38
48
  continue;
39
- if (pathMatchesTmvcRoot(trimmed, tmvcRoots))
40
- lines.add(trimmed);
49
+ if (pathMatchesTmvcRoot(trimmed, tmvcRoots)) {
50
+ lines.add(normalizeRepoRelativePath(trimmed));
51
+ }
41
52
  }
42
53
  }
43
54
  return [...lines];
44
55
  }
45
- function netLocForPaths(repoRoot, files) {
46
- if (files.length === 0)
47
- return 0;
48
- const pathArgs = files.flatMap((f) => ["--", f]);
49
- const worktree = gitNumstat(repoRoot, ["diff", "--numstat", "HEAD", ...pathArgs]);
50
- const staged = gitNumstat(repoRoot, ["diff", "--numstat", "--cached", ...pathArgs]);
51
- return worktree + staged;
56
+ function numstatForTmvcFiles(repoRoot, tmvcRoots) {
57
+ const changed = listChangedFilesInTmvc(repoRoot, tmvcRoots);
58
+ if (changed.length === 0)
59
+ return [];
60
+ const pathArgs = changed.flatMap((f) => ["--", f]);
61
+ const worktree = gitNumstatLines(repoRoot, ["diff", "--numstat", "HEAD", ...pathArgs]);
62
+ const staged = gitNumstatLines(repoRoot, ["diff", "--numstat", "--cached", ...pathArgs]);
63
+ const merged = new Map();
64
+ for (const row of [...worktree, ...staged]) {
65
+ const prev = merged.get(row.path);
66
+ if (prev) {
67
+ merged.set(row.path, {
68
+ path: row.path,
69
+ additions: prev.additions + row.additions,
70
+ deletions: prev.deletions + row.deletions,
71
+ });
72
+ }
73
+ else {
74
+ merged.set(row.path, row);
75
+ }
76
+ }
77
+ return [...merged.values()];
52
78
  }
53
79
  /** Net LOC across worktree + staged diffs for the given repo-relative paths. */
54
80
  export function computeNetLocForFiles(repoRoot, files) {
55
81
  if (files.length === 0)
56
82
  return 0;
57
83
  const relFiles = files.map((f) => normalizeRepoRelativePath(f));
58
- return netLocForPaths(repoRoot, relFiles);
84
+ const pathArgs = relFiles.flatMap((f) => ["--", f]);
85
+ let total = 0;
86
+ for (const row of gitNumstatLines(repoRoot, ["diff", "--numstat", "HEAD", ...pathArgs])) {
87
+ total += row.additions + row.deletions;
88
+ }
89
+ for (const row of gitNumstatLines(repoRoot, ["diff", "--numstat", "--cached", ...pathArgs])) {
90
+ total += row.additions + row.deletions;
91
+ }
92
+ return total;
93
+ }
94
+ function baselineLineCount(repoRoot, filePath) {
95
+ const { ok, stdout } = gitRunOk(repoRoot, ["show", `HEAD:${filePath}`]);
96
+ if (!ok || !stdout)
97
+ return 0;
98
+ return stdout.split("\n").length;
99
+ }
100
+ const ASSERTION_TOKEN_RE = /\bassert\.[a-zA-Z_][\w.]*|\bexpect\s*\(|\bassertEqual\b|\bassert\.strictEqual\b|\bassert\.deepStrictEqual\b/g;
101
+ export function countAssertionTokens(source) {
102
+ const matches = source.match(ASSERTION_TOKEN_RE);
103
+ return matches?.length ?? 0;
104
+ }
105
+ function isTestFilePath(filePath) {
106
+ const norm = normalizeRepoRelativePath(filePath);
107
+ return (/\.test\.[cm]?[jt]sx?$/.test(norm) ||
108
+ /\.spec\.[cm]?[jt]sx?$/.test(norm) ||
109
+ norm.includes("/__tests__/"));
110
+ }
111
+ function fileSourceAtHead(repoRoot, filePath) {
112
+ const { ok, stdout } = gitRunOk(repoRoot, ["show", `HEAD:${filePath}`]);
113
+ return ok ? stdout : "";
114
+ }
115
+ function fileSourceWorking(repoRoot, filePath) {
116
+ const { ok, stdout } = gitRunOk(repoRoot, ["show", `:${filePath}`]);
117
+ if (ok)
118
+ return stdout;
119
+ try {
120
+ const abs = path.join(repoRoot, filePath);
121
+ if (!fs.existsSync(abs))
122
+ return "";
123
+ return fs.readFileSync(abs, "utf8");
124
+ }
125
+ catch {
126
+ return "";
127
+ }
59
128
  }
60
- export function evaluateNetLocBudgetGuard(repoRoot, manifest, skillKey) {
129
+ function evaluateNetLocBudget(profile, netLoc) {
130
+ const guard = profile.net_loc_budget;
131
+ if (!guard)
132
+ return [];
133
+ const max = guard.config.max_net_loc;
134
+ if (netLoc <= max)
135
+ return [];
136
+ return [
137
+ {
138
+ guard: "net_loc_budget",
139
+ severity: guard.severity,
140
+ message: `net_loc ${netLoc} exceeds defensive_profile max_net_loc ${max}`,
141
+ detail: { net_loc: netLoc, max_net_loc: max },
142
+ },
143
+ ];
144
+ }
145
+ function evaluateFileScope(profile, fileCount) {
146
+ const guard = profile.file_scope;
147
+ if (!guard)
148
+ return [];
149
+ const max = guard.config.max_files;
150
+ if (fileCount <= max)
151
+ return [];
152
+ return [
153
+ {
154
+ guard: "file_scope",
155
+ severity: guard.severity,
156
+ message: `touched ${fileCount} TMVC files exceeds defensive_profile max_files ${max}`,
157
+ detail: { files_touched: fileCount, max_files: max },
158
+ },
159
+ ];
160
+ }
161
+ function evaluateChurnRatio(repoRoot, profile, rows) {
162
+ const guard = profile.churn_ratio;
163
+ if (!guard)
164
+ return [];
165
+ const maxRatio = guard.config.max_ratio;
166
+ const findings = [];
167
+ for (const row of rows) {
168
+ const changed = row.additions + row.deletions;
169
+ if (changed === 0)
170
+ continue;
171
+ const baseline = baselineLineCount(repoRoot, row.path);
172
+ const denom = Math.max(baseline, changed, 1);
173
+ const ratio = changed / denom;
174
+ if (ratio > maxRatio) {
175
+ findings.push({
176
+ guard: "churn_ratio",
177
+ severity: guard.severity,
178
+ message: `churn ratio ${ratio.toFixed(2)} for ${row.path} exceeds max_ratio ${maxRatio}`,
179
+ detail: {
180
+ path: row.path,
181
+ churn_ratio: Math.round(ratio * 1000) / 1000,
182
+ max_ratio: maxRatio,
183
+ },
184
+ });
185
+ }
186
+ }
187
+ if (rows.length === 0)
188
+ return findings;
189
+ const totalChanged = rows.reduce((s, r) => s + r.additions + r.deletions, 0);
190
+ if (totalChanged === 0)
191
+ return findings;
192
+ const totalBaseline = rows.reduce((s, r) => s + baselineLineCount(repoRoot, r.path), 0);
193
+ const aggregateRatio = totalChanged / Math.max(totalBaseline, totalChanged, 1);
194
+ if (aggregateRatio > maxRatio) {
195
+ findings.push({
196
+ guard: "churn_ratio",
197
+ severity: guard.severity,
198
+ message: `mission aggregate churn ratio ${aggregateRatio.toFixed(2)} exceeds max_ratio ${maxRatio}`,
199
+ detail: {
200
+ churn_ratio: Math.round(aggregateRatio * 1000) / 1000,
201
+ max_ratio: maxRatio,
202
+ },
203
+ });
204
+ }
205
+ return findings;
206
+ }
207
+ function evaluateTestToCode(repoRoot, profile, rows) {
208
+ const guard = profile.test_to_code;
209
+ if (!guard)
210
+ return [];
211
+ const minDelta = guard.config.min_assertion_delta;
212
+ let assertionDelta = 0;
213
+ for (const row of rows) {
214
+ if (!isTestFilePath(row.path))
215
+ continue;
216
+ const before = countAssertionTokens(fileSourceAtHead(repoRoot, row.path));
217
+ const after = countAssertionTokens(fileSourceWorking(repoRoot, row.path));
218
+ assertionDelta += after - before;
219
+ }
220
+ const nonTestNetLoc = rows
221
+ .filter((r) => !isTestFilePath(r.path))
222
+ .reduce((s, r) => s + r.additions + r.deletions, 0);
223
+ if (nonTestNetLoc > 0 && assertionDelta < minDelta) {
224
+ return [
225
+ {
226
+ guard: "test_to_code",
227
+ severity: guard.severity,
228
+ message: `assertion delta ${assertionDelta} below min_assertion_delta ${minDelta} while non-test LOC changed by ${nonTestNetLoc}`,
229
+ detail: {
230
+ assertion_delta: assertionDelta,
231
+ min_assertion_delta: minDelta,
232
+ non_test_net_loc: nonTestNetLoc,
233
+ },
234
+ },
235
+ ];
236
+ }
237
+ return [];
238
+ }
239
+ function hasActiveGuards(profile) {
240
+ return (profile.net_loc_budget != null ||
241
+ profile.file_scope != null ||
242
+ profile.churn_ratio != null ||
243
+ profile.test_to_code != null);
244
+ }
245
+ export function evaluateDefensiveGuards(repoRoot, manifest, skillKey) {
61
246
  const profile = resolveDefensiveProfile(loadGxtConfig(repoRoot));
62
- if (!profile.enabled || !profile.net_loc_budget) {
63
- return { ok: true };
247
+ const empty = {
248
+ ok: true,
249
+ findings: [],
250
+ blocked: [],
251
+ warnings: [],
252
+ audits: [],
253
+ };
254
+ if (!profile.enabled || !hasActiveGuards(profile)) {
255
+ return empty;
64
256
  }
65
257
  const resolvedKey = resolveManifestSkillKey(manifest, skillKey);
66
258
  const skill = manifest.skills[resolvedKey];
67
259
  if (!skill) {
68
- return { ok: false, reason: `defensive guard: unknown skill ${skillKey}` };
69
- }
70
- const tmvcRoots = skill.tmvc_roots ?? [];
71
- const changed = listChangedFilesInTmvc(repoRoot, tmvcRoots);
72
- const netLoc = computeNetLocForFiles(repoRoot, changed);
73
- const max = profile.net_loc_budget.max_net_loc;
74
- if (netLoc > max) {
75
260
  return {
76
261
  ok: false,
77
- net_loc: netLoc,
78
- max_net_loc: max,
79
- reason: `net_loc ${netLoc} exceeds defensive_profile max_net_loc ${max}`,
262
+ findings: [],
263
+ blocked: [],
264
+ warnings: [],
265
+ audits: [],
266
+ error: `defensive guard: unknown skill ${skillKey}`,
80
267
  };
81
268
  }
82
- return { ok: true, net_loc: netLoc, max_net_loc: max };
269
+ const tmvcRoots = skill.tmvc_roots ?? [];
270
+ const changed = listChangedFilesInTmvc(repoRoot, tmvcRoots);
271
+ const rows = numstatForTmvcFiles(repoRoot, tmvcRoots);
272
+ const netLoc = computeNetLocForFiles(repoRoot, changed);
273
+ const findings = [
274
+ ...evaluateNetLocBudget(profile, netLoc),
275
+ ...evaluateFileScope(profile, changed.length),
276
+ ...evaluateChurnRatio(repoRoot, profile, rows),
277
+ ...evaluateTestToCode(repoRoot, profile, rows),
278
+ ];
279
+ const blocked = findings.filter((f) => f.severity === "block");
280
+ const warnings = findings.filter((f) => f.severity === "warn");
281
+ const audits = findings.filter((f) => f.severity === "audit");
282
+ return {
283
+ ok: blocked.length === 0,
284
+ findings,
285
+ blocked,
286
+ warnings,
287
+ audits,
288
+ net_loc: netLoc,
289
+ ...(profile.net_loc_budget ? { max_net_loc: profile.net_loc_budget.config.max_net_loc } : {}),
290
+ };
83
291
  }
84
292
  //# sourceMappingURL=defensive-guard.js.map