@jeger-ai/opengantry 2.1.0 → 2.2.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 (157) hide show
  1. package/README.md +24 -7
  2. package/dist/cli/commands/audit-rigor.d.ts +8 -0
  3. package/dist/cli/commands/audit-rigor.d.ts.map +1 -0
  4. package/dist/cli/commands/audit-rigor.js +24 -0
  5. package/dist/cli/commands/audit-rigor.js.map +1 -0
  6. package/dist/cli/commands/context-feed.d.ts +6 -0
  7. package/dist/cli/commands/context-feed.d.ts.map +1 -0
  8. package/dist/cli/commands/context-feed.js +48 -0
  9. package/dist/cli/commands/context-feed.js.map +1 -0
  10. package/dist/cli/commands/mission.js +1 -1
  11. package/dist/cli/commands/mission.js.map +1 -1
  12. package/dist/cli/commands/onboarding.d.ts.map +1 -1
  13. package/dist/cli/commands/onboarding.js +9 -4
  14. package/dist/cli/commands/onboarding.js.map +1 -1
  15. package/dist/cli/commands/upgrade.d.ts.map +1 -1
  16. package/dist/cli/commands/upgrade.js +2 -1
  17. package/dist/cli/commands/upgrade.js.map +1 -1
  18. package/dist/cli/lib/architecture-pointer.d.ts +1 -1
  19. package/dist/cli/lib/architecture-pointer.d.ts.map +1 -1
  20. package/dist/cli/lib/audit-rigor.d.ts +18 -0
  21. package/dist/cli/lib/audit-rigor.d.ts.map +1 -0
  22. package/dist/cli/lib/audit-rigor.js +189 -0
  23. package/dist/cli/lib/audit-rigor.js.map +1 -0
  24. package/dist/cli/lib/constants.d.ts +4 -0
  25. package/dist/cli/lib/constants.d.ts.map +1 -1
  26. package/dist/cli/lib/constants.js +4 -0
  27. package/dist/cli/lib/constants.js.map +1 -1
  28. package/dist/cli/lib/context-feed-remediation.d.ts +12 -0
  29. package/dist/cli/lib/context-feed-remediation.d.ts.map +1 -0
  30. package/dist/cli/lib/context-feed-remediation.js +88 -0
  31. package/dist/cli/lib/context-feed-remediation.js.map +1 -0
  32. package/dist/cli/lib/context-feed-store.d.ts +33 -0
  33. package/dist/cli/lib/context-feed-store.d.ts.map +1 -0
  34. package/dist/cli/lib/context-feed-store.js +110 -0
  35. package/dist/cli/lib/context-feed-store.js.map +1 -0
  36. package/dist/cli/lib/doctor-core.d.ts +5 -0
  37. package/dist/cli/lib/doctor-core.d.ts.map +1 -0
  38. package/dist/cli/lib/doctor-core.js +163 -0
  39. package/dist/cli/lib/doctor-core.js.map +1 -0
  40. package/dist/cli/lib/doctor-integration.d.ts +13 -0
  41. package/dist/cli/lib/doctor-integration.d.ts.map +1 -0
  42. package/dist/cli/lib/doctor-integration.js +120 -0
  43. package/dist/cli/lib/doctor-integration.js.map +1 -0
  44. package/dist/cli/lib/doctor-substrate.d.ts +3 -0
  45. package/dist/cli/lib/doctor-substrate.d.ts.map +1 -0
  46. package/dist/cli/lib/doctor-substrate.js +35 -0
  47. package/dist/cli/lib/doctor-substrate.js.map +1 -0
  48. package/dist/cli/lib/doctor-types.d.ts +24 -0
  49. package/dist/cli/lib/doctor-types.d.ts.map +1 -0
  50. package/dist/cli/lib/doctor-types.js +7 -0
  51. package/dist/cli/lib/doctor-types.js.map +1 -0
  52. package/dist/cli/lib/doctor.d.ts +4 -30
  53. package/dist/cli/lib/doctor.d.ts.map +1 -1
  54. package/dist/cli/lib/doctor.js +4 -281
  55. package/dist/cli/lib/doctor.js.map +1 -1
  56. package/dist/cli/lib/integration-compat.d.ts +7 -0
  57. package/dist/cli/lib/integration-compat.d.ts.map +1 -1
  58. package/dist/cli/lib/integration-compat.js +14 -0
  59. package/dist/cli/lib/integration-compat.js.map +1 -1
  60. package/dist/cli/lib/kpi-engine.d.ts +0 -2
  61. package/dist/cli/lib/kpi-engine.d.ts.map +1 -1
  62. package/dist/cli/lib/kpi-engine.js +11 -13
  63. package/dist/cli/lib/kpi-engine.js.map +1 -1
  64. package/dist/cli/lib/mcp-tools-register.js +1 -1
  65. package/dist/cli/lib/mcp-tools-register.js.map +1 -1
  66. package/dist/cli/lib/mcp-upgrade.d.ts +2 -2
  67. package/dist/cli/lib/mcp-upgrade.d.ts.map +1 -1
  68. package/dist/cli/lib/mcp-upgrade.js +5 -1
  69. package/dist/cli/lib/mcp-upgrade.js.map +1 -1
  70. package/dist/cli/lib/missions/formatter.d.ts.map +1 -1
  71. package/dist/cli/lib/missions/formatter.js +1 -0
  72. package/dist/cli/lib/missions/formatter.js.map +1 -1
  73. package/dist/cli/lib/missions/parser.d.ts.map +1 -1
  74. package/dist/cli/lib/missions/parser.js +1 -0
  75. package/dist/cli/lib/missions/parser.js.map +1 -1
  76. package/dist/cli/lib/start-orchestration.d.ts +1 -11
  77. package/dist/cli/lib/start-orchestration.d.ts.map +1 -1
  78. package/dist/cli/lib/start-orchestration.js +1 -85
  79. package/dist/cli/lib/start-orchestration.js.map +1 -1
  80. package/dist/cli/lib/start-snapshot.d.ts +12 -0
  81. package/dist/cli/lib/start-snapshot.d.ts.map +1 -0
  82. package/dist/cli/lib/start-snapshot.js +81 -0
  83. package/dist/cli/lib/start-snapshot.js.map +1 -0
  84. package/dist/cli/lib/trace.d.ts.map +1 -1
  85. package/dist/cli/lib/trace.js +1 -6
  86. package/dist/cli/lib/trace.js.map +1 -1
  87. package/dist/cli/lib/types.d.ts +3 -0
  88. package/dist/cli/lib/types.d.ts.map +1 -1
  89. package/dist/cli/lib/upgrade-plan-payload.d.ts +31 -0
  90. package/dist/cli/lib/upgrade-plan-payload.d.ts.map +1 -0
  91. package/dist/cli/lib/upgrade-plan-payload.js +109 -0
  92. package/dist/cli/lib/upgrade-plan-payload.js.map +1 -0
  93. package/dist/cli/lib/verify-engine.d.ts.map +1 -1
  94. package/dist/cli/lib/verify-engine.js +39 -13
  95. package/dist/cli/lib/verify-engine.js.map +1 -1
  96. package/dist/cli/lib/verify-failure-format.d.ts +29 -0
  97. package/dist/cli/lib/verify-failure-format.d.ts.map +1 -0
  98. package/dist/cli/lib/verify-failure-format.js +68 -0
  99. package/dist/cli/lib/verify-failure-format.js.map +1 -0
  100. package/dist/cli/lib/verify-hints.d.ts +32 -0
  101. package/dist/cli/lib/verify-hints.d.ts.map +1 -0
  102. package/dist/cli/lib/verify-hints.js +161 -0
  103. package/dist/cli/lib/verify-hints.js.map +1 -0
  104. package/dist/cli/lib/verify-payload.d.ts +0 -1
  105. package/dist/cli/lib/verify-payload.d.ts.map +1 -1
  106. package/dist/cli/lib/verify-payload.js +6 -19
  107. package/dist/cli/lib/verify-payload.js.map +1 -1
  108. package/dist/cli/lib/verify-present.d.ts +6 -23
  109. package/dist/cli/lib/verify-present.d.ts.map +1 -1
  110. package/dist/cli/lib/verify-present.js +3 -215
  111. package/dist/cli/lib/verify-present.js.map +1 -1
  112. package/dist/cli/lib/verify-presentation.d.ts +2 -1
  113. package/dist/cli/lib/verify-presentation.d.ts.map +1 -1
  114. package/dist/cli/lib/verify-presentation.js +2 -1
  115. package/dist/cli/lib/verify-presentation.js.map +1 -1
  116. package/dist/cli/lib/verify-presenters.d.ts +19 -0
  117. package/dist/cli/lib/verify-presenters.d.ts.map +1 -0
  118. package/dist/cli/lib/verify-presenters.js +173 -0
  119. package/dist/cli/lib/verify-presenters.js.map +1 -0
  120. package/dist/cli/lib/verify-remediation.d.ts +4 -56
  121. package/dist/cli/lib/verify-remediation.d.ts.map +1 -1
  122. package/dist/cli/lib/verify-remediation.js +2 -226
  123. package/dist/cli/lib/verify-remediation.js.map +1 -1
  124. package/dist/cli/lib/verify-run.d.ts +12 -0
  125. package/dist/cli/lib/verify-run.d.ts.map +1 -0
  126. package/dist/cli/lib/verify-run.js +70 -0
  127. package/dist/cli/lib/verify-run.js.map +1 -0
  128. package/dist/cli/lib/verify-sinks.d.ts +4 -0
  129. package/dist/cli/lib/verify-sinks.d.ts.map +1 -0
  130. package/dist/cli/lib/verify-sinks.js +12 -0
  131. package/dist/cli/lib/verify-sinks.js.map +1 -0
  132. package/dist/cli/lib/version.gen.d.ts +1 -1
  133. package/dist/cli/lib/version.gen.js +1 -1
  134. package/dist/cli/lib/virtual-scratch-store.d.ts +37 -0
  135. package/dist/cli/lib/virtual-scratch-store.d.ts.map +1 -0
  136. package/dist/cli/lib/virtual-scratch-store.js +132 -0
  137. package/dist/cli/lib/virtual-scratch-store.js.map +1 -0
  138. package/dist/cli/program-core.d.ts.map +1 -1
  139. package/dist/cli/program-core.js +43 -3
  140. package/dist/cli/program-core.js.map +1 -1
  141. package/package.json +1 -1
  142. package/templates/.gitagent/teacher/MISSION.schema.yaml +6 -0
  143. package/templates/.gitignore.gxt +2 -0
  144. package/templates/integrations/asset-catalog.json +1 -0
  145. package/templates/integrations/compatibility.json +10 -1
  146. package/templates/integrations/recipes/claude-code.md +6 -4
  147. package/templates/integrations/recipes/codex-cli.md +6 -4
  148. package/templates/integrations/recipes/opencode.md +8 -2
  149. package/templates/scripts/gxt-shell-agent.sh +62 -0
  150. package/dist/cli/lib/kpi-report-stale.d.ts +0 -18
  151. package/dist/cli/lib/kpi-report-stale.d.ts.map +0 -1
  152. package/dist/cli/lib/kpi-report-stale.js +0 -91
  153. package/dist/cli/lib/kpi-report-stale.js.map +0 -1
  154. package/dist/cli/lib/trace-evidence.d.ts +0 -23
  155. package/dist/cli/lib/trace-evidence.d.ts.map +0 -1
  156. package/dist/cli/lib/trace-evidence.js +0 -118
  157. package/dist/cli/lib/trace-evidence.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"program-core.d.ts","sourceRoot":"","sources":["../../src/cli/program-core.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAuBzC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAgI3D"}
1
+ {"version":3,"file":"program-core.d.ts","sourceRoot":"","sources":["../../src/cli/program-core.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAyBzC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA2K3D"}
@@ -4,6 +4,8 @@ import { runUpgrade } from "./commands/upgrade.js";
4
4
  import { runStatus } from "./commands/status.js";
5
5
  import { runDoctor } from "./commands/doctor.js";
6
6
  import { runOnboarding } from "./commands/onboarding.js";
7
+ import { runContextFeed } from "./commands/context-feed.js";
8
+ import { runAuditRigorCommand } from "./commands/audit-rigor.js";
7
9
  import { runStart } from "./commands/start.js";
8
10
  import { runTriage } from "./commands/triage.js";
9
11
  import { readStdinIfEmpty } from "./lib/program-stdin.js";
@@ -56,9 +58,26 @@ export function registerCoreCommands(program) {
56
58
  .action(async (opts) => {
57
59
  await runInit(opts);
58
60
  });
59
- program
61
+ const upgradeCmd = program
60
62
  .command("upgrade")
61
- .description("Plan or apply substrate upgrades from the installed gapman package (Tier-3)")
63
+ .description("Plan or apply substrate upgrades from the installed gapman package (Tier-3)");
64
+ upgradeCmd
65
+ .command("plan")
66
+ .description("Preview upgrade file changes without writing staging dir or mission YAML")
67
+ .option("--json", "Emit stable structured JSON (schema_version 1)")
68
+ .option("--msn <id>", "Mission id for preview labels (default: next MSN in 9000-9099 band)")
69
+ .action((options) => {
70
+ runUpgrade({ ...options, dryRun: true });
71
+ });
72
+ upgradeCmd
73
+ .command("apply")
74
+ .description("Apply a Teacher-signed upgrade mission after hash verification")
75
+ .option("--json", "Emit structured JSON")
76
+ .option("--mission <path>", "Signed upgrade mission YAML (required unless pinned)")
77
+ .action((options) => {
78
+ runUpgrade({ ...options, apply: true });
79
+ });
80
+ upgradeCmd
62
81
  .option("--apply", "Apply a Teacher-signed upgrade mission after hash verification")
63
82
  .option("--dry-run", "Print upgrade plan without writing staging dir or mission YAML")
64
83
  .option("--json", "Emit structured JSON")
@@ -117,9 +136,30 @@ export function registerCoreCommands(program) {
117
136
  program
118
137
  .command("onboarding")
119
138
  .description("Interactive walkthrough of the strict GXT mission loop")
120
- .option("--force", "Continue despite integration doctor warnings")
139
+ .option("--force", "Continue despite integration health blockers on configured (broken) state")
121
140
  .action(async (opts) => {
122
141
  await runOnboarding({ force: opts.force });
123
142
  });
143
+ program
144
+ .command("context-feed")
145
+ .description("Read or clear the latest verify remediation snapshot for IDE/agent loops")
146
+ .option("--json", "Emit structured remediation payload")
147
+ .option("--clear", "Atomically clear remediation feed (tombstone swap)")
148
+ .action((opts) => {
149
+ runContextFeed({ json: opts.json, clear: opts.clear });
150
+ });
151
+ program
152
+ .command("audit-rigor")
153
+ .description("Meta-governance audit: compiler strictness, coverage artifacts, MANIFEST wildcards")
154
+ .option("--json", "Emit structured report")
155
+ .option("--strict", "Treat warnings as failures")
156
+ .option("--workspace <path>", "Workspace root override (tests; default: git repo root)")
157
+ .action((opts) => {
158
+ runAuditRigorCommand({
159
+ json: opts.json,
160
+ strict: opts.strict,
161
+ workspace: opts.workspace,
162
+ });
163
+ });
124
164
  }
125
165
  //# sourceMappingURL=program-core.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"program-core.js","sourceRoot":"","sources":["../../src/cli/program-core.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAuB,MAAM,uBAAuB,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAyB,MAAM,sBAAsB,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAG1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAUxD,MAAM,UAAU,oBAAoB,CAAC,OAAgB;IACnD,OAAO;SACJ,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,gDAAgD,CAAC;SAC7D,MAAM,CAAC,GAAG,EAAE;QACX,QAAQ,EAAE,CAAC;IACb,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,yCAAyC,CAAC;SACtD,MAAM,CAAC,QAAQ,EAAE,wBAAwB,CAAC;SAC1C,MAAM,CAAC,WAAW,EAAE,gCAAgC,CAAC;SACrD,MAAM,CAAC,mBAAmB,EAAE,qDAAqD,CAAC;SAClF,MAAM,CAAC,CAAC,IAA8D,EAAE,EAAE;QACzE,SAAS,CAAC;YACR,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,QAAQ,EAAE,iBAAiB,EAAE;SAC9B,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,wDAAwD,CAAC;SACrE,MAAM,CAAC,QAAQ,EAAE,wBAAwB,CAAC;SAC1C,MAAM,CAAC,mBAAmB,EAAE,qDAAqD,CAAC;SAClF,MAAM,CAAC,CAAC,IAA2C,EAAE,EAAE;QACtD,SAAS,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,iBAAiB,EAAE,EAAE,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,mEAAmE,CAAC;SAChF,MAAM,CAAC,SAAS,EAAE,wDAAwD,CAAC;SAC3E,MAAM,CAAC,OAAO,EAAE,gDAAgD,CAAC;SACjE,MAAM,CAAC,WAAW,EAAE,uCAAuC,CAAC;SAC5D,MAAM,CAAC,cAAc,EAAE,mDAAmD,CAAC;SAC3E,MAAM,CAAC,oBAAoB,EAAE,qCAAqC,CAAC;SACnE,MAAM,CAAC,mBAAmB,EAAE,mCAAmC,CAAC;SAChE,MAAM,CAAC,SAAS,EAAE,mBAAmB,CAAC;SACtC,MAAM,CAAC,YAAY,EAAE,gBAAgB,CAAC;SACtC,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC;SACrC,MAAM,CAAC,SAAS,EAAE,kBAAkB,CAAC;SACrC,MAAM,CAAC,sBAAsB,EAAE,0DAA0D,CAAC;SAC1F,MAAM,CAAC,wBAAwB,EAAE,iDAAiD,CAAC;SACnF,MAAM,CACL,YAAY,EACZ,gFAAgF,CACjF;SACA,MAAM,CAAC,KAAK,EAAE,IAAiB,EAAE,EAAE;QAClC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,6EAA6E,CAAC;SAC1F,MAAM,CAAC,SAAS,EAAE,gEAAgE,CAAC;SACnF,MAAM,CAAC,WAAW,EAAE,gEAAgE,CAAC;SACrF,MAAM,CAAC,QAAQ,EAAE,sBAAsB,CAAC;SACxC,MAAM,CAAC,YAAY,EAAE,mEAAmE,CAAC;SACzF,MAAM,CAAC,kBAAkB,EAAE,kEAAkE,CAAC;SAC9F,MAAM,CAAC,CAAC,OAAuB,EAAE,EAAE;QAClC,UAAU,CAAC,OAAO,CAAC,CAAC;IACtB,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,mDAAmD,CAAC;SAChE,QAAQ,CAAC,aAAa,EAAE,kBAAkB,CAAC;SAC3C,MAAM,CAAC,QAAQ,EAAE,iBAAiB,CAAC;SACnC,MAAM,CACL,gBAAgB,EAChB,kFAAkF,CACnF;SACA,MAAM,CAAC,YAAY,EAAE,+BAA+B,EAAE,UAAU,CAAC;SACjE,MAAM,CACL,cAAc,EACd,wIAAwI,CACzI;SACA,MAAM,CAAC,KAAK,EAAE,WAAqB,EAAE,OAAyB,EAAE,IAAa,EAAE,EAAE;QAChF,IAAI,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QACxC,IAAI,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,QAAQ,CAAC,2CAA2C,CAAC,CAAC;YACtD,WAAW,CAAC,CAAC,CAAC,CAAC;YACf,OAAO;QACT,CAAC;QACD,SAAS,CAAC,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,wEAAwE,CAAC;SACrF,QAAQ,CAAC,aAAa,EAAE,wBAAwB,CAAC;SACjD,MAAM,CAAC,YAAY,EAAE,0CAA0C,CAAC;SAChE,MAAM,CAAC,mBAAmB,EAAE,4BAA4B,CAAC;SACzD,MAAM,CAAC,sBAAsB,EAAE,4BAA4B,CAAC;SAC5D,MAAM,CAAC,iCAAiC,EAAE,wBAAwB,CAAC;SACnE,MAAM,CAAC,YAAY,EAAE,0CAA0C,CAAC;SAChE,MAAM,CAAC,mBAAmB,EAAE,gDAAgD,CAAC;SAC7E,MAAM,CAAC,QAAQ,EAAE,iCAAiC,CAAC;SACnD,MAAM,CAAC,mBAAmB,EAAE,qDAAqD,CAAC;SAClF,MAAM,CAAC,KAAK,EAAE,WAAqB,EAAE,OAAwB,EAAE,IAAa,EAAE,EAAE;QAC/E,IAAI,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QACxC,IAAI,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,QAAQ,CAAC,0CAA0C,CAAC,CAAC;YACrD,WAAW,CAAC,CAAC,CAAC,CAAC;YACf,OAAO;QACT,CAAC;QACD,MAAM,EAAE,KAAK,EAAE,GAAG,UAAU,EAAE,GAAG,OAAO,CAAC;QACzC,6FAA6F;QAC7F,QAAQ,CAAC;YACP,GAAG,UAAU;YACb,MAAM,EAAE,IAAI;YACZ,YAAY,EAAE,KAAK,KAAK,KAAK;YAC7B,QAAQ,EAAE,iBAAiB,EAAE;SAC9B,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,YAAY,CAAC;SACrB,WAAW,CAAC,wDAAwD,CAAC;SACrE,MAAM,CAAC,SAAS,EAAE,8CAA8C,CAAC;SACjE,MAAM,CAAC,KAAK,EAAE,IAAyB,EAAE,EAAE;QAC1C,MAAM,aAAa,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"program-core.js","sourceRoot":"","sources":["../../src/cli/program-core.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jeger-ai/opengantry",
3
- "version": "2.1.0",
3
+ "version": "2.2.0",
4
4
  "description": "OpenGantry GXT substrate + gapman CLI",
5
5
  "type": "module",
6
6
  "bin": {
@@ -27,6 +27,12 @@ properties:
27
27
  minLength: 1
28
28
  gate_success_substring:
29
29
  type: ["string", "null"]
30
+ virtual_capture:
31
+ type: boolean
32
+ default: false
33
+ description: >-
34
+ When true, gapman verify captures gate stdout/stderr under
35
+ .gitagent/virtual/<flight-id>/ (gitignored) and purges on success.
30
36
  upgrade_payload:
31
37
  type: object
32
38
  additionalProperties: false
@@ -5,3 +5,5 @@
5
5
  .gitagent/history/.ignored-last-error.json
6
6
  .gitagent/history/.draft-token-replay.json
7
7
  .gitagent/foreman/DRAFT_TOKEN.key
8
+ .gitagent/tmp/
9
+ .gitagent/virtual/
@@ -36,6 +36,7 @@
36
36
  { "targetPath": "scripts/gxt-pin-mission.sh", "mode": "managed_strict", "executable": true, "tags": ["runtime"] },
37
37
  { "targetPath": "scripts/gxt-resolve-mission.sh", "mode": "managed_strict", "executable": true, "tags": ["runtime"] },
38
38
  { "targetPath": "scripts/gxt-runtime-env.sh", "mode": "managed_strict", "executable": true, "tags": ["runtime"] },
39
+ { "targetPath": "scripts/gxt-shell-agent.sh", "mode": "managed_strict", "executable": true, "tags": ["runtime", "claude-code", "codex-cli", "opencode"] },
39
40
  { "targetPath": "scripts/validate-gxt.sh", "mode": "managed_strict", "executable": true, "tags": ["core"] },
40
41
  { "targetPath": "scripts/verify-pr-missions.sh", "mode": "managed_strict", "executable": true, "tags": ["ci"] },
41
42
  { "targetPath": "skills/gapman.md", "mode": "scaffold_only", "tags": ["skill-specimen"] },
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "schema_version": "1",
3
- "opengantry_version": "2.1.0",
3
+ "opengantry_version": "2.2.0",
4
4
  "asset_catalog": "integrations/asset-catalog.json",
5
5
  "integrations": {
6
6
  "cursor": {
@@ -8,6 +8,7 @@
8
8
  "verified_date": "2026-06-16",
9
9
  "docs_url": "https://cursor.com/docs/agent/hooks",
10
10
  "recipe_file": "cursor.md",
11
+ "bootstrap_mode": "hook",
11
12
  "canonical_paths": [
12
13
  ".cursor/rules/opengantry-gxt-substrate.mdc",
13
14
  ".cursor/hooks.json"
@@ -21,6 +22,7 @@
21
22
  "verified_date": "2026-06-16",
22
23
  "docs_url": "https://docs.anthropic.com/en/docs/claude-code",
23
24
  "recipe_file": "claude-code.md",
25
+ "bootstrap_mode": "shell_wrapper",
24
26
  "canonical_paths": ["CLAUDE.md"],
25
27
  "deprecated_paths": [],
26
28
  "cli_probe": ["claude", "--version"]
@@ -31,6 +33,7 @@
31
33
  "docs_url": "https://developers.openai.com/codex/config-basic",
32
34
  "disambiguation": "OpenAI Codex API (2021-2023) is NOT this product",
33
35
  "recipe_file": "codex-cli.md",
36
+ "bootstrap_mode": "shell_wrapper",
34
37
  "canonical_paths": ["AGENTS.md", ".codex/config.toml"],
35
38
  "deprecated_paths": [],
36
39
  "cli_probe": ["codex", "--version"]
@@ -40,6 +43,7 @@
40
43
  "verified_date": "2026-06-16",
41
44
  "docs_url": "https://opencode.ai/docs",
42
45
  "recipe_file": "opencode.md",
46
+ "bootstrap_mode": "shell_wrapper",
43
47
  "canonical_paths": ["opencode.json"],
44
48
  "deprecated_paths": [],
45
49
  "cli_probe": ["opencode", "--version"]
@@ -49,6 +53,7 @@
49
53
  "verified_date": "2026-06-16",
50
54
  "docs_url": "https://www.jetbrains.com/junie/",
51
55
  "recipe_file": "junie.md",
56
+ "bootstrap_mode": "manual_recipe",
52
57
  "canonical_paths": [".junie/guidelines.md"],
53
58
  "deprecated_paths": [],
54
59
  "cli_probe": null
@@ -58,6 +63,7 @@
58
63
  "verified_date": "2026-06-16",
59
64
  "docs_url": "https://antigravity.google/",
60
65
  "recipe_file": "antigravity.md",
66
+ "bootstrap_mode": "manual_recipe",
61
67
  "canonical_paths": [".agent/rules/gxt.md"],
62
68
  "deprecated_paths": [],
63
69
  "cli_probe": null
@@ -67,6 +73,7 @@
67
73
  "verified_date": "2026-06-16",
68
74
  "docs_url": "https://docs.cline.bot/",
69
75
  "recipe_file": "cline.md",
76
+ "bootstrap_mode": "manual_recipe",
70
77
  "canonical_paths": [".clinerules/gxt.md"],
71
78
  "deprecated_paths": [".cursorrules"],
72
79
  "cli_probe": null
@@ -76,6 +83,7 @@
76
83
  "verified_date": "2026-06-16",
77
84
  "docs_url": "https://aider.chat/docs/",
78
85
  "recipe_file": "aider.md",
86
+ "bootstrap_mode": "manual_recipe",
79
87
  "canonical_paths": [".aider.conf.yml"],
80
88
  "deprecated_paths": [],
81
89
  "cli_probe": ["aider", "--version"]
@@ -85,6 +93,7 @@
85
93
  "verified_date": "2026-06-16",
86
94
  "docs_url": "https://docs.all-hands.dev/",
87
95
  "recipe_file": "openhands.md",
96
+ "bootstrap_mode": "manual_recipe",
88
97
  "canonical_paths": [".openhands/microagents/gxt.md"],
89
98
  "deprecated_paths": [],
90
99
  "cli_probe": null
@@ -1,14 +1,16 @@
1
1
  ### Claude Code
2
2
 
3
3
  - **Context injection:** Minimal `CLAUDE.md` pointing at `AGENTS.md`, `.gitagent/teacher/RULES.md`, `.gitagent/foreman/MANIFEST.json`.
4
- - **Session bootstrap:**
4
+ - **Session bootstrap (shell wrapper — no project hooks):**
5
5
 
6
6
  ```bash
7
- source scripts/gxt-runtime-env.sh .gitagent/missions/MSN-0001.<slug>.yaml
7
+ scripts/gxt-pin-mission.sh .gitagent/missions/MSN-0001.<slug>.yaml
8
+ scripts/gxt-shell-agent.sh claude .gitagent/missions/MSN-0001.<slug>.yaml
9
+ # or with explicit task:
8
10
  gapman runtime exec --mission .gitagent/missions/MSN-0001.<slug>.yaml -- claude "<task>"
9
11
  ```
10
12
 
11
- - **Enforcement:** Advisory in interactive session; process-boundary when wrapped with `runtime exec`.
12
- - **Gotcha:** Link canonical filesdo not copy full RULES into `CLAUDE.md`.
13
+ - **Enforcement:** Advisory in interactive session; process-boundary when wrapped with `runtime exec` or `gxt-shell-agent.sh`.
14
+ - **Gotcha:** Claude Code does not execute project hook directories use the shell wrapper, not phantom hook files.
13
15
 
14
16
  Vendor docs: https://docs.anthropic.com/en/docs/claude-code
@@ -3,14 +3,16 @@
3
3
  > **Not** the deprecated OpenAI Codex API (2021–2023). This covers [OpenAI Codex CLI](https://github.com/openai/codex) (2025+ terminal/IDE agent).
4
4
 
5
5
  - **Context injection:** Root `AGENTS.md` (native after `gapman init`); optional `.codex/config.toml` for project defaults.
6
- - **Session bootstrap:**
6
+ - **Session bootstrap (shell wrapper — no project hooks):**
7
7
 
8
8
  ```bash
9
- source scripts/gxt-runtime-env.sh .gitagent/missions/MSN-0001.<slug>.yaml
9
+ scripts/gxt-pin-mission.sh .gitagent/missions/MSN-0001.<slug>.yaml
10
+ scripts/gxt-shell-agent.sh codex .gitagent/missions/MSN-0001.<slug>.yaml
11
+ # or headless:
10
12
  gapman runtime exec --mission .gitagent/missions/MSN-0001.<slug>.yaml -- codex exec "<task>"
11
13
  ```
12
14
 
13
- - **Enforcement:** Advisory in interactive TUI/IDE extension; process-boundary when wrapped with `runtime exec`.
14
- - **Gotcha:** Codex sandbox settings govern Codex — not GXT forbidden zones. Use `runtime exec` for manifest-enforced boundaries.
15
+ - **Enforcement:** Advisory in interactive TUI/IDE extension; process-boundary when wrapped with `runtime exec` or `gxt-shell-agent.sh`.
16
+ - **Gotcha:** Codex CLI does not scan project hook folders — use the shell wrapper. Codex sandbox settings govern Codex — not GXT forbidden zones.
15
17
 
16
18
  Vendor docs: https://developers.openai.com/codex/config-basic
@@ -1,8 +1,14 @@
1
1
  ### OpenCode
2
2
 
3
3
  - **Context injection:** Repo-root `AGENTS.md` (native); optional `opencode.json` `instructions` array.
4
- - **Session bootstrap:** `source scripts/gxt-runtime-env.sh <mission>` then OpenCode in same terminal.
4
+ - **Session bootstrap (shell wrapper no project hooks):**
5
+
6
+ ```bash
7
+ scripts/gxt-pin-mission.sh .gitagent/missions/MSN-0001.<slug>.yaml
8
+ scripts/gxt-shell-agent.sh opencode .gitagent/missions/MSN-0001.<slug>.yaml
9
+ ```
10
+
5
11
  - **Enforcement:** Advisory; OpenCode permissions are separate from GXT TMVC.
6
- - **Gotcha:** OpenCode prefers `AGENTS.md` over `CLAUDE.md` when both exist.
12
+ - **Gotcha:** OpenCode prefers `AGENTS.md` over `CLAUDE.md` when both exist. OpenCode does not execute project hook directories.
7
13
 
8
14
  Vendor docs: https://opencode.ai/docs
@@ -0,0 +1,62 @@
1
+ #!/usr/bin/env bash
2
+ # Shell-wrapper bootstrap for CLI-first agents (Claude Code, Codex CLI, OpenCode).
3
+ # These tools do not execute project hook directories — inject GXT runtime via this wrapper.
4
+ set -euo pipefail
5
+
6
+ AGENT="${1:-}"
7
+ if [ -z "$AGENT" ]; then
8
+ cat >&2 <<'EOF'
9
+ Usage: scripts/gxt-shell-agent.sh <claude|codex|opencode> [mission.yaml] [--] [agent args...]
10
+
11
+ Loads GXT mission runtime env, then execs the agent CLI. Prefer over phantom hook files.
12
+ EOF
13
+ exit 2
14
+ fi
15
+ shift
16
+
17
+ MISSION_ARG=""
18
+ if [ $# -gt 0 ] && [ "$1" != "--" ]; then
19
+ case "$1" in
20
+ *.yaml|*.yml|*.md)
21
+ MISSION_ARG="$1"
22
+ shift
23
+ ;;
24
+ esac
25
+ fi
26
+
27
+ if [ "${1:-}" = "--" ]; then
28
+ shift
29
+ fi
30
+
31
+ ROOT="$(git rev-parse --show-toplevel 2>/dev/null || true)"
32
+ if [ -z "$ROOT" ]; then
33
+ echo "gxt-shell-agent: not inside a git repository" >&2
34
+ exit 1
35
+ fi
36
+ cd "$ROOT"
37
+
38
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
39
+ # shellcheck source=scripts/gxt-runtime-env.sh
40
+ source "$SCRIPT_DIR/gxt-runtime-env.sh" ${MISSION_ARG:+"$MISSION_ARG"}
41
+
42
+ case "$AGENT" in
43
+ claude)
44
+ DEFAULT_CMD=(claude)
45
+ ;;
46
+ codex)
47
+ DEFAULT_CMD=(codex)
48
+ ;;
49
+ opencode)
50
+ DEFAULT_CMD=(opencode)
51
+ ;;
52
+ *)
53
+ echo "gxt-shell-agent: unsupported agent '$AGENT' (use claude, codex, or opencode)" >&2
54
+ exit 2
55
+ ;;
56
+ esac
57
+
58
+ if [ $# -eq 0 ]; then
59
+ exec "${DEFAULT_CMD[@]}"
60
+ else
61
+ exec "$@"
62
+ fi
@@ -1,18 +0,0 @@
1
- import type { Manifest } from "./types.js";
2
- export interface KpiReportStaleOptions {
3
- skipStaleEvidence?: boolean;
4
- /** When true, uncommitted TMVC drift is a hard failure (pre-push / CI). */
5
- strictStale?: boolean;
6
- }
7
- export interface KpiReportStaleResult {
8
- stale: boolean;
9
- advisoryOnly: boolean;
10
- stalePaths: string[];
11
- attestationCommit?: string;
12
- reason?: string;
13
- }
14
- /** Bind KPI report attestation to TMVC drift (mirrors trace-evidence committed/uncommitted split). */
15
- export declare function verifyKpiReportFreshness(repoRoot: string, manifest: Manifest, skillKey: string | null, reportPath: string, options?: KpiReportStaleOptions): KpiReportStaleResult;
16
- /** True when report file is tracked in git. */
17
- export declare function isKpiReportCommitted(repoRoot: string, reportPath: string): boolean;
18
- //# sourceMappingURL=kpi-report-stale.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"kpi-report-stale.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/kpi-report-stale.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,MAAM,WAAW,qBAAqB;IACpC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,2EAA2E;IAC3E,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,OAAO,CAAC;IACf,YAAY,EAAE,OAAO,CAAC;IACtB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AA4BD,sGAAsG;AACtG,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,MAAM,GAAG,IAAI,EACvB,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,qBAA0B,GAClC,oBAAoB,CAoEtB;AAED,+CAA+C;AAC/C,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAIlF"}
@@ -1,91 +0,0 @@
1
- import path from "node:path";
2
- import { toPosixRel } from "./cli-io.js";
3
- import { gitDiffNameOnlySinceCommit, gitRunOk } from "./git.js";
4
- import { readBlamePorcelainByLine, UNCOMMITTED_BLAME_COMMIT } from "./trace.js";
5
- function tmvcRootsForSkill(manifest, skillKey) {
6
- if (!skillKey?.trim())
7
- return [];
8
- const skill = manifest.skills[skillKey];
9
- return skill ? [...skill.tmvc_roots] : [];
10
- }
11
- function reportRelPath(reportPath, repoRoot) {
12
- const abs = path.isAbsolute(reportPath) ? reportPath : path.join(repoRoot, reportPath);
13
- return toPosixRel(repoRoot, abs);
14
- }
15
- function resolveKpiAttestationCommit(repoRoot, reportRel, blameByLine) {
16
- if ([...blameByLine.values()].some((hash) => hash === UNCOMMITTED_BLAME_COMMIT)) {
17
- return UNCOMMITTED_BLAME_COMMIT;
18
- }
19
- const log = gitRunOk(repoRoot, ["log", "-1", "--format=%H", "--", reportRel]);
20
- if (log.ok && log.stdout.trim().length > 0) {
21
- return log.stdout.trim();
22
- }
23
- return blameByLine.get(1);
24
- }
25
- /** Bind KPI report attestation to TMVC drift (mirrors trace-evidence committed/uncommitted split). */
26
- export function verifyKpiReportFreshness(repoRoot, manifest, skillKey, reportPath, options = {}) {
27
- if (options.skipStaleEvidence === true) {
28
- return { stale: false, advisoryOnly: false, stalePaths: [] };
29
- }
30
- const tmvcRoots = tmvcRootsForSkill(manifest, skillKey);
31
- if (tmvcRoots.length === 0) {
32
- return { stale: false, advisoryOnly: false, stalePaths: [] };
33
- }
34
- const reportRel = reportRelPath(reportPath, repoRoot);
35
- const blameByLine = readBlamePorcelainByLine(repoRoot, reportRel);
36
- const attestationCommit = resolveKpiAttestationCommit(repoRoot, reportRel, blameByLine);
37
- if (!attestationCommit) {
38
- return {
39
- stale: options.strictStale === true,
40
- advisoryOnly: options.strictStale !== true,
41
- stalePaths: [],
42
- reason: `cannot resolve git blame for KPI report ${reportRel}`,
43
- };
44
- }
45
- if (attestationCommit === UNCOMMITTED_BLAME_COMMIT) {
46
- return { stale: false, advisoryOnly: true, stalePaths: [], attestationCommit };
47
- }
48
- const diffResult = gitDiffNameOnlySinceCommit(repoRoot, attestationCommit, tmvcRoots);
49
- if (!diffResult.ok) {
50
- return {
51
- stale: options.strictStale === true,
52
- advisoryOnly: options.strictStale !== true,
53
- stalePaths: [],
54
- attestationCommit,
55
- reason: "cannot evaluate TMVC drift since KPI report attestation",
56
- };
57
- }
58
- if (diffResult.paths.length === 0) {
59
- return { stale: false, advisoryOnly: false, stalePaths: [], attestationCommit };
60
- }
61
- const shortCommit = attestationCommit.slice(0, 7);
62
- const shown = diffResult.paths.slice(0, 5);
63
- const suffix = diffResult.paths.length > shown.length
64
- ? ` (+${String(diffResult.paths.length - shown.length)} more)`
65
- : "";
66
- const reason = `KPI report STALE (attested at ${shortCommit}): TMVC drift since scan — ` +
67
- `${shown.join(", ")}${suffix}. Re-run gapman scan and commit the updated report.`;
68
- if (options.strictStale === true) {
69
- return {
70
- stale: true,
71
- advisoryOnly: false,
72
- stalePaths: diffResult.paths,
73
- attestationCommit,
74
- reason,
75
- };
76
- }
77
- return {
78
- stale: false,
79
- advisoryOnly: true,
80
- stalePaths: diffResult.paths,
81
- attestationCommit,
82
- reason,
83
- };
84
- }
85
- /** True when report file is tracked in git. */
86
- export function isKpiReportCommitted(repoRoot, reportPath) {
87
- const reportRel = reportRelPath(reportPath, repoRoot);
88
- const r = gitRunOk(repoRoot, ["ls-files", "--error-unmatch", reportRel]);
89
- return r.ok;
90
- }
91
- //# sourceMappingURL=kpi-report-stale.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"kpi-report-stale.js","sourceRoot":"","sources":["../../../src/cli/lib/kpi-report-stale.ts"],"names":[],"mappings":"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"}
@@ -1,23 +0,0 @@
1
- import type { Manifest } from "./types.js";
2
- import type { TraceRow } from "./types.js";
3
- import type { ResolvedQuoteLine } from "./trace.js";
4
- export type { ResolvedQuoteLine } from "./trace.js";
5
- export declare const UNCOMMITTED_BLAME_COMMIT = "0000000000000000000000000000000000000000";
6
- export interface TraceEvidenceFailure {
7
- row: TraceRow;
8
- attestationCommit: string;
9
- quoteLine: number;
10
- stalePaths: string[];
11
- reason: string;
12
- }
13
- export interface TraceEvidenceOptions {
14
- skipStaleEvidence?: boolean;
15
- }
16
- /** Parse `git blame --porcelain` into 1-based line number → commit hash. */
17
- export declare function parseBlamePorcelainByLine(blameOutput: string): Map<number, string>;
18
- export declare function readBlamePorcelainByLine(repoRoot: string, workerLogRelPath: string): Map<number, string>;
19
- export declare function verifyTraceEvidenceFreshness(repoRoot: string, manifest: Manifest, skillKey: string | null, workerLogPath: string, resolvedLines: ResolvedQuoteLine[], options?: TraceEvidenceOptions): {
20
- failures: TraceEvidenceFailure[];
21
- skippedUncommitted: number;
22
- };
23
- //# sourceMappingURL=trace-evidence.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"trace-evidence.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/trace-evidence.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD,YAAY,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD,eAAO,MAAM,wBAAwB,6CAA6C,CAAC;AAEnF,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,QAAQ,CAAC;IACd,iBAAiB,EAAE,MAAM,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,oBAAoB;IACnC,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAcD,4EAA4E;AAC5E,wBAAgB,yBAAyB,CAAC,WAAW,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAgClF;AAED,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAIxG;AAkBD,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,MAAM,GAAG,IAAI,EACvB,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,iBAAiB,EAAE,EAClC,OAAO,GAAE,oBAAyB,GACjC;IAAE,QAAQ,EAAE,oBAAoB,EAAE,CAAC;IAAC,kBAAkB,EAAE,MAAM,CAAA;CAAE,CA+DlE"}
@@ -1,118 +0,0 @@
1
- import path from "node:path";
2
- import { WORKER_LOG_FILENAME } from "./constants.js";
3
- import { toPosixRel } from "./cli-io.js";
4
- import { gitDiffNameOnlySinceCommit, gitRun } from "./git.js";
5
- export const UNCOMMITTED_BLAME_COMMIT = "0000000000000000000000000000000000000000";
6
- function tmvcRootsForSkill(manifest, skillKey) {
7
- if (!skillKey?.trim())
8
- return [];
9
- const skill = manifest.skills[skillKey];
10
- return skill ? [...skill.tmvc_roots] : [];
11
- }
12
- function workerLogRelPath(workerLogPath, repoRoot) {
13
- const abs = path.resolve(workerLogPath);
14
- const rel = toPosixRel(repoRoot, abs);
15
- return rel.length > 0 && !rel.startsWith("..") ? rel : WORKER_LOG_FILENAME;
16
- }
17
- /** Parse `git blame --porcelain` into 1-based line number → commit hash. */
18
- export function parseBlamePorcelainByLine(blameOutput) {
19
- const byLine = new Map();
20
- const lines = blameOutput.split(/\r?\n/);
21
- let i = 0;
22
- while (i < lines.length) {
23
- const header = lines[i];
24
- const full = /^([0-9a-f]{40})\s+\d+\s+(\d+)\s+(\d+)/.exec(header);
25
- const short = /^([0-9a-f]{40})\s+\d+\s+(\d+)\s*$/.exec(header);
26
- if (!full && !short) {
27
- i += 1;
28
- continue;
29
- }
30
- const commit = (full ?? short)[1];
31
- const finalLine = parseInt((full ?? short)[2], 10);
32
- i += 1;
33
- if (full) {
34
- while (i < lines.length && !lines[i].startsWith("\t")) {
35
- i += 1;
36
- }
37
- }
38
- if (i < lines.length && lines[i].startsWith("\t")) {
39
- byLine.set(finalLine, commit);
40
- i += 1;
41
- continue;
42
- }
43
- if (short) {
44
- byLine.set(finalLine, commit);
45
- }
46
- }
47
- return byLine;
48
- }
49
- export function readBlamePorcelainByLine(repoRoot, workerLogRelPath) {
50
- const r = gitRun(repoRoot, ["blame", "--porcelain", "--", workerLogRelPath]);
51
- if (!r.ok)
52
- return new Map();
53
- return parseBlamePorcelainByLine(r.stdout);
54
- }
55
- function formatStaleReason(row, quoteLine, attestationCommit, stalePaths) {
56
- const shortCommit = attestationCommit.slice(0, 7);
57
- const shown = stalePaths.slice(0, 5);
58
- const suffix = stalePaths.length > shown.length ? ` (+${String(stalePaths.length - shown.length)} more)` : "";
59
- return (`Trace STALE for DoD ${row.dodId} (WORKER_LOG.md line ${String(quoteLine)}, attested at ${shortCommit}): ` +
60
- `TMVC drift since attestation — ${shown.join(", ")}${suffix}. Re-run gate and append a fresh trace line.`);
61
- }
62
- export function verifyTraceEvidenceFreshness(repoRoot, manifest, skillKey, workerLogPath, resolvedLines, options = {}) {
63
- if (options.skipStaleEvidence === true) {
64
- return { failures: [], skippedUncommitted: 0 };
65
- }
66
- const tmvcRoots = tmvcRootsForSkill(manifest, skillKey);
67
- if (tmvcRoots.length === 0) {
68
- return { failures: [], skippedUncommitted: 0 };
69
- }
70
- const workerLogRel = workerLogRelPath(workerLogPath, repoRoot);
71
- const blameByLine = readBlamePorcelainByLine(repoRoot, workerLogRel);
72
- const diffCache = new Map();
73
- const failures = [];
74
- let skippedUncommitted = 0;
75
- for (const { row, lineNumber } of resolvedLines) {
76
- const attestationCommit = blameByLine.get(lineNumber);
77
- if (!attestationCommit) {
78
- failures.push({
79
- row,
80
- attestationCommit: "unknown",
81
- quoteLine: lineNumber,
82
- stalePaths: [],
83
- reason: `Trace STALE for DoD ${row.dodId}: cannot resolve git blame for WORKER_LOG.md line ${String(lineNumber)}`,
84
- });
85
- continue;
86
- }
87
- if (attestationCommit === UNCOMMITTED_BLAME_COMMIT) {
88
- skippedUncommitted += 1;
89
- continue;
90
- }
91
- let diffResult = diffCache.get(attestationCommit);
92
- if (diffResult === undefined) {
93
- diffResult = gitDiffNameOnlySinceCommit(repoRoot, attestationCommit, tmvcRoots);
94
- diffCache.set(attestationCommit, diffResult);
95
- }
96
- if (!diffResult.ok) {
97
- failures.push({
98
- row,
99
- attestationCommit,
100
- quoteLine: lineNumber,
101
- stalePaths: [],
102
- reason: `Trace STALE for DoD ${row.dodId}: cannot evaluate TMVC drift since attestation (git diff failed)`,
103
- });
104
- continue;
105
- }
106
- if (diffResult.paths.length > 0) {
107
- failures.push({
108
- row,
109
- attestationCommit,
110
- quoteLine: lineNumber,
111
- stalePaths: diffResult.paths,
112
- reason: formatStaleReason(row, lineNumber, attestationCommit, diffResult.paths),
113
- });
114
- }
115
- }
116
- return { failures, skippedUncommitted };
117
- }
118
- //# sourceMappingURL=trace-evidence.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"trace-evidence.js","sourceRoot":"","sources":["../../../src/cli/lib/trace-evidence.ts"],"names":[],"mappings":"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"}