@jeger-ai/opengantry 1.1.2 → 2.1.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 (506) hide show
  1. package/README.md +24 -9
  2. package/dist/cli/commands/check-imports.d.ts +7 -0
  3. package/dist/cli/commands/check-imports.d.ts.map +1 -0
  4. package/dist/cli/commands/check-imports.js +33 -0
  5. package/dist/cli/commands/check-imports.js.map +1 -0
  6. package/dist/cli/commands/context-request.d.ts +11 -0
  7. package/dist/cli/commands/context-request.d.ts.map +1 -0
  8. package/dist/cli/commands/context-request.js +74 -0
  9. package/dist/cli/commands/context-request.js.map +1 -0
  10. package/dist/cli/commands/doctor.d.ts +1 -1
  11. package/dist/cli/commands/doctor.d.ts.map +1 -1
  12. package/dist/cli/commands/doctor.js +1 -2
  13. package/dist/cli/commands/doctor.js.map +1 -1
  14. package/dist/cli/commands/init.d.ts.map +1 -1
  15. package/dist/cli/commands/init.js +7 -3
  16. package/dist/cli/commands/init.js.map +1 -1
  17. package/dist/cli/commands/legislate.d.ts +1 -1
  18. package/dist/cli/commands/legislate.d.ts.map +1 -1
  19. package/dist/cli/commands/legislate.js +1 -1
  20. package/dist/cli/commands/legislate.js.map +1 -1
  21. package/dist/cli/commands/mission.js +3 -3
  22. package/dist/cli/commands/mission.js.map +1 -1
  23. package/dist/cli/commands/onboarding.d.ts +4 -1
  24. package/dist/cli/commands/onboarding.d.ts.map +1 -1
  25. package/dist/cli/commands/onboarding.js +73 -45
  26. package/dist/cli/commands/onboarding.js.map +1 -1
  27. package/dist/cli/commands/perimeter.d.ts +7 -0
  28. package/dist/cli/commands/perimeter.d.ts.map +1 -0
  29. package/dist/cli/commands/perimeter.js +50 -0
  30. package/dist/cli/commands/perimeter.js.map +1 -0
  31. package/dist/cli/commands/register.d.ts +7 -0
  32. package/dist/cli/commands/register.d.ts.map +1 -0
  33. package/dist/cli/commands/register.js +22 -0
  34. package/dist/cli/commands/register.js.map +1 -0
  35. package/dist/cli/commands/runtime.js +1 -1
  36. package/dist/cli/commands/runtime.js.map +1 -1
  37. package/dist/cli/commands/scan.d.ts +7 -0
  38. package/dist/cli/commands/scan.d.ts.map +1 -0
  39. package/dist/cli/commands/scan.js +27 -0
  40. package/dist/cli/commands/scan.js.map +1 -0
  41. package/dist/cli/commands/tmvc-guard.d.ts +7 -0
  42. package/dist/cli/commands/tmvc-guard.d.ts.map +1 -0
  43. package/dist/cli/commands/tmvc-guard.js +63 -0
  44. package/dist/cli/commands/tmvc-guard.js.map +1 -0
  45. package/dist/cli/commands/triage.d.ts +1 -1
  46. package/dist/cli/commands/triage.d.ts.map +1 -1
  47. package/dist/cli/commands/triage.js +3 -15
  48. package/dist/cli/commands/triage.js.map +1 -1
  49. package/dist/cli/commands/upgrade.js +1 -1
  50. package/dist/cli/commands/upgrade.js.map +1 -1
  51. package/dist/cli/commands/verify.d.ts +2 -2
  52. package/dist/cli/commands/verify.d.ts.map +1 -1
  53. package/dist/cli/commands/verify.js +63 -6
  54. package/dist/cli/commands/verify.js.map +1 -1
  55. package/dist/cli/index.js +1 -1
  56. package/dist/cli/index.js.map +1 -1
  57. package/dist/cli/lib/architecture-pointer.d.ts +33 -5
  58. package/dist/cli/lib/architecture-pointer.d.ts.map +1 -1
  59. package/dist/cli/lib/architecture-pointer.js +304 -5
  60. package/dist/cli/lib/architecture-pointer.js.map +1 -1
  61. package/dist/cli/lib/ast-discovery.d.ts +16 -0
  62. package/dist/cli/lib/ast-discovery.d.ts.map +1 -0
  63. package/dist/cli/lib/ast-discovery.js +88 -0
  64. package/dist/cli/lib/ast-discovery.js.map +1 -0
  65. package/dist/cli/lib/banned-import-violation.d.ts +8 -0
  66. package/dist/cli/lib/banned-import-violation.d.ts.map +1 -0
  67. package/dist/cli/lib/banned-import-violation.js +15 -0
  68. package/dist/cli/lib/banned-import-violation.js.map +1 -0
  69. package/dist/cli/lib/break-glass.d.ts +17 -0
  70. package/dist/cli/lib/break-glass.d.ts.map +1 -1
  71. package/dist/cli/lib/break-glass.js +28 -1
  72. package/dist/cli/lib/break-glass.js.map +1 -1
  73. package/dist/cli/lib/cli-io.d.ts +8 -0
  74. package/dist/cli/lib/cli-io.d.ts.map +1 -1
  75. package/dist/cli/lib/cli-io.js +16 -0
  76. package/dist/cli/lib/cli-io.js.map +1 -1
  77. package/dist/cli/lib/command-reporter.d.ts +3 -3
  78. package/dist/cli/lib/command-reporter.d.ts.map +1 -1
  79. package/dist/cli/lib/command-reporter.js +5 -0
  80. package/dist/cli/lib/command-reporter.js.map +1 -1
  81. package/dist/cli/lib/constants.d.ts +4 -0
  82. package/dist/cli/lib/constants.d.ts.map +1 -1
  83. package/dist/cli/lib/constants.js +4 -0
  84. package/dist/cli/lib/constants.js.map +1 -1
  85. package/dist/cli/lib/context-request.d.ts +22 -0
  86. package/dist/cli/lib/context-request.d.ts.map +1 -0
  87. package/dist/cli/lib/context-request.js +45 -0
  88. package/dist/cli/lib/context-request.js.map +1 -0
  89. package/dist/cli/lib/dirty-missions.js +1 -1
  90. package/dist/cli/lib/dirty-missions.js.map +1 -1
  91. package/dist/cli/lib/doctor.d.ts +31 -0
  92. package/dist/cli/lib/doctor.d.ts.map +1 -0
  93. package/dist/cli/lib/doctor.js +282 -0
  94. package/dist/cli/lib/doctor.js.map +1 -0
  95. package/dist/cli/lib/draft-token.js +1 -1
  96. package/dist/cli/lib/draft-token.js.map +1 -1
  97. package/dist/cli/lib/{user-error.d.ts → errors.d.ts} +20 -1
  98. package/dist/cli/lib/errors.d.ts.map +1 -0
  99. package/dist/cli/lib/{agent-error.js → errors.js} +64 -1
  100. package/dist/cli/lib/errors.js.map +1 -0
  101. package/dist/cli/lib/fix-hints.d.ts +1 -1
  102. package/dist/cli/lib/fix-hints.d.ts.map +1 -1
  103. package/dist/cli/lib/gate-work-dir.d.ts +6 -0
  104. package/dist/cli/lib/gate-work-dir.d.ts.map +1 -0
  105. package/dist/cli/lib/gate-work-dir.js +6 -0
  106. package/dist/cli/lib/gate-work-dir.js.map +1 -0
  107. package/dist/cli/lib/git-metrics.d.ts +34 -0
  108. package/dist/cli/lib/git-metrics.d.ts.map +1 -1
  109. package/dist/cli/lib/git-metrics.js +199 -3
  110. package/dist/cli/lib/git-metrics.js.map +1 -1
  111. package/dist/cli/lib/git-proof.d.ts +4 -0
  112. package/dist/cli/lib/git-proof.d.ts.map +1 -1
  113. package/dist/cli/lib/git-proof.js +26 -8
  114. package/dist/cli/lib/git-proof.js.map +1 -1
  115. package/dist/cli/lib/git-staged.d.ts +20 -0
  116. package/dist/cli/lib/git-staged.d.ts.map +1 -0
  117. package/dist/cli/lib/git-staged.js +37 -0
  118. package/dist/cli/lib/git-staged.js.map +1 -0
  119. package/dist/cli/lib/git.d.ts +25 -0
  120. package/dist/cli/lib/git.d.ts.map +1 -1
  121. package/dist/cli/lib/git.js +52 -0
  122. package/dist/cli/lib/git.js.map +1 -1
  123. package/dist/cli/lib/gxt-error-codes.d.ts +9 -0
  124. package/dist/cli/lib/gxt-error-codes.d.ts.map +1 -1
  125. package/dist/cli/lib/gxt-error-codes.js +9 -0
  126. package/dist/cli/lib/gxt-error-codes.js.map +1 -1
  127. package/dist/cli/lib/import-scanner.d.ts +14 -0
  128. package/dist/cli/lib/import-scanner.d.ts.map +1 -0
  129. package/dist/cli/lib/import-scanner.js +67 -0
  130. package/dist/cli/lib/import-scanner.js.map +1 -0
  131. package/dist/cli/lib/init-asset-catalog.d.ts +10 -5
  132. package/dist/cli/lib/init-asset-catalog.d.ts.map +1 -1
  133. package/dist/cli/lib/init-asset-catalog.js +26 -139
  134. package/dist/cli/lib/init-asset-catalog.js.map +1 -1
  135. package/dist/cli/lib/{init-compose-arch-pointer.d.ts → init-compose.d.ts} +4 -1
  136. package/dist/cli/lib/init-compose.d.ts.map +1 -0
  137. package/dist/cli/lib/{init-compose-arch-pointer.js → init-compose.js} +37 -1
  138. package/dist/cli/lib/init-compose.js.map +1 -0
  139. package/dist/cli/lib/init-interactive.js +2 -2
  140. package/dist/cli/lib/init-interactive.js.map +1 -1
  141. package/dist/cli/lib/init-plan.d.ts +1 -1
  142. package/dist/cli/lib/init-plan.d.ts.map +1 -1
  143. package/dist/cli/lib/init-tutorial.d.ts.map +1 -1
  144. package/dist/cli/lib/init-tutorial.js +10 -10
  145. package/dist/cli/lib/init-tutorial.js.map +1 -1
  146. package/dist/cli/lib/integration-compat.d.ts +2 -0
  147. package/dist/cli/lib/integration-compat.d.ts.map +1 -1
  148. package/dist/cli/lib/integration-compat.js.map +1 -1
  149. package/dist/cli/lib/kpi-engine.d.ts +34 -0
  150. package/dist/cli/lib/kpi-engine.d.ts.map +1 -0
  151. package/dist/cli/lib/kpi-engine.js +281 -0
  152. package/dist/cli/lib/kpi-engine.js.map +1 -0
  153. package/dist/cli/lib/kpi-report-stale.d.ts +18 -0
  154. package/dist/cli/lib/kpi-report-stale.d.ts.map +1 -0
  155. package/dist/cli/lib/kpi-report-stale.js +91 -0
  156. package/dist/cli/lib/kpi-report-stale.js.map +1 -0
  157. package/dist/cli/lib/kpi-scan.d.ts +18 -0
  158. package/dist/cli/lib/kpi-scan.d.ts.map +1 -0
  159. package/dist/cli/lib/kpi-scan.js +126 -0
  160. package/dist/cli/lib/kpi-scan.js.map +1 -0
  161. package/dist/cli/lib/legislate.d.ts +39 -0
  162. package/dist/cli/lib/legislate.d.ts.map +1 -0
  163. package/dist/cli/lib/{legislate-core.js → legislate.js} +31 -6
  164. package/dist/cli/lib/legislate.js.map +1 -0
  165. package/dist/cli/lib/manifest.d.ts.map +1 -1
  166. package/dist/cli/lib/manifest.js +30 -15
  167. package/dist/cli/lib/manifest.js.map +1 -1
  168. package/dist/cli/lib/mcp-governance.d.ts +124 -0
  169. package/dist/cli/lib/mcp-governance.d.ts.map +1 -0
  170. package/dist/cli/lib/mcp-governance.js +231 -0
  171. package/dist/cli/lib/mcp-governance.js.map +1 -0
  172. package/dist/cli/lib/mcp-runtime.d.ts +16 -6
  173. package/dist/cli/lib/mcp-runtime.d.ts.map +1 -1
  174. package/dist/cli/lib/mcp-runtime.js +24 -3
  175. package/dist/cli/lib/mcp-runtime.js.map +1 -1
  176. package/dist/cli/lib/mcp-tools-register.d.ts.map +1 -1
  177. package/dist/cli/lib/mcp-tools-register.js +8 -4
  178. package/dist/cli/lib/mcp-tools-register.js.map +1 -1
  179. package/dist/cli/lib/mcp-upgrade.d.ts +13 -2
  180. package/dist/cli/lib/mcp-upgrade.d.ts.map +1 -1
  181. package/dist/cli/lib/mcp-upgrade.js +24 -18
  182. package/dist/cli/lib/mcp-upgrade.js.map +1 -1
  183. package/dist/cli/lib/missions/formatter.d.ts +17 -0
  184. package/dist/cli/lib/missions/formatter.d.ts.map +1 -0
  185. package/dist/cli/lib/{mission-markdown.js → missions/formatter.js} +60 -2
  186. package/dist/cli/lib/missions/formatter.js.map +1 -0
  187. package/dist/cli/lib/missions/parser.d.ts +45 -0
  188. package/dist/cli/lib/missions/parser.d.ts.map +1 -0
  189. package/dist/cli/lib/missions/parser.js +270 -0
  190. package/dist/cli/lib/missions/parser.js.map +1 -0
  191. package/dist/cli/lib/missions/validator.d.ts +3 -0
  192. package/dist/cli/lib/missions/validator.d.ts.map +1 -0
  193. package/dist/cli/lib/missions/validator.js +41 -0
  194. package/dist/cli/lib/missions/validator.js.map +1 -0
  195. package/dist/cli/lib/msn-allocate.js +3 -3
  196. package/dist/cli/lib/msn-allocate.js.map +1 -1
  197. package/dist/cli/lib/perimeter.d.ts +44 -0
  198. package/dist/cli/lib/perimeter.d.ts.map +1 -0
  199. package/dist/cli/lib/perimeter.js +244 -0
  200. package/dist/cli/lib/perimeter.js.map +1 -0
  201. package/dist/cli/lib/program-stdin.d.ts +3 -0
  202. package/dist/cli/lib/program-stdin.d.ts.map +1 -0
  203. package/dist/cli/lib/program-stdin.js +15 -0
  204. package/dist/cli/lib/program-stdin.js.map +1 -0
  205. package/dist/cli/lib/register-proposals.d.ts +13 -0
  206. package/dist/cli/lib/register-proposals.d.ts.map +1 -0
  207. package/dist/cli/lib/register-proposals.js +38 -0
  208. package/dist/cli/lib/register-proposals.js.map +1 -0
  209. package/dist/cli/lib/runtime-env.js +2 -2
  210. package/dist/cli/lib/runtime-env.js.map +1 -1
  211. package/dist/cli/lib/runtime-exec.d.ts +48 -4
  212. package/dist/cli/lib/runtime-exec.d.ts.map +1 -1
  213. package/dist/cli/lib/runtime-exec.js +218 -4
  214. package/dist/cli/lib/runtime-exec.js.map +1 -1
  215. package/dist/cli/lib/staged-tmvc-guard.d.ts +26 -0
  216. package/dist/cli/lib/staged-tmvc-guard.d.ts.map +1 -0
  217. package/dist/cli/lib/staged-tmvc-guard.js +58 -0
  218. package/dist/cli/lib/staged-tmvc-guard.js.map +1 -0
  219. package/dist/cli/lib/start-orchestration.d.ts +11 -1
  220. package/dist/cli/lib/start-orchestration.d.ts.map +1 -1
  221. package/dist/cli/lib/start-orchestration.js +105 -42
  222. package/dist/cli/lib/start-orchestration.js.map +1 -1
  223. package/dist/cli/lib/status-report.d.ts +1 -1
  224. package/dist/cli/lib/status-report.d.ts.map +1 -1
  225. package/dist/cli/lib/status-report.js +2 -2
  226. package/dist/cli/lib/status-report.js.map +1 -1
  227. package/dist/cli/lib/surgeon.d.ts +23 -0
  228. package/dist/cli/lib/surgeon.d.ts.map +1 -0
  229. package/dist/cli/lib/surgeon.js +63 -0
  230. package/dist/cli/lib/surgeon.js.map +1 -0
  231. package/dist/cli/lib/surgeons/banned-import.d.ts +4 -0
  232. package/dist/cli/lib/surgeons/banned-import.d.ts.map +1 -0
  233. package/dist/cli/lib/surgeons/banned-import.js +37 -0
  234. package/dist/cli/lib/surgeons/banned-import.js.map +1 -0
  235. package/dist/cli/lib/surgeons/import-layer.d.ts +3 -0
  236. package/dist/cli/lib/surgeons/import-layer.d.ts.map +1 -0
  237. package/dist/cli/lib/surgeons/import-layer.js +74 -0
  238. package/dist/cli/lib/surgeons/import-layer.js.map +1 -0
  239. package/dist/cli/lib/surgeons/quarantine-import.d.ts +24 -0
  240. package/dist/cli/lib/surgeons/quarantine-import.d.ts.map +1 -0
  241. package/dist/cli/lib/surgeons/quarantine-import.js +128 -0
  242. package/dist/cli/lib/surgeons/quarantine-import.js.map +1 -0
  243. package/dist/cli/lib/surgeons/registry.d.ts +22 -0
  244. package/dist/cli/lib/surgeons/registry.d.ts.map +1 -0
  245. package/dist/cli/lib/surgeons/registry.js +27 -0
  246. package/dist/cli/lib/surgeons/registry.js.map +1 -0
  247. package/dist/cli/lib/surgeons/typescript-workspace.d.ts +7 -0
  248. package/dist/cli/lib/surgeons/typescript-workspace.d.ts.map +1 -0
  249. package/dist/cli/lib/surgeons/typescript-workspace.js +41 -0
  250. package/dist/cli/lib/surgeons/typescript-workspace.js.map +1 -0
  251. package/dist/cli/lib/teacher-identity.js +1 -1
  252. package/dist/cli/lib/teacher-identity.js.map +1 -1
  253. package/dist/cli/lib/tmvc-path.d.ts +12 -0
  254. package/dist/cli/lib/tmvc-path.d.ts.map +1 -0
  255. package/dist/cli/lib/tmvc-path.js +47 -0
  256. package/dist/cli/lib/tmvc-path.js.map +1 -0
  257. package/dist/cli/lib/trace-evidence.js +1 -1
  258. package/dist/cli/lib/trace-evidence.js.map +1 -1
  259. package/dist/cli/lib/trace.d.ts +28 -1
  260. package/dist/cli/lib/trace.d.ts.map +1 -1
  261. package/dist/cli/lib/trace.js +158 -3
  262. package/dist/cli/lib/trace.js.map +1 -1
  263. package/dist/cli/lib/triage-logic.d.ts.map +1 -1
  264. package/dist/cli/lib/triage-logic.js +23 -6
  265. package/dist/cli/lib/triage-logic.js.map +1 -1
  266. package/dist/cli/lib/types.d.ts +64 -1
  267. package/dist/cli/lib/types.d.ts.map +1 -1
  268. package/dist/cli/lib/upgrade-apply.d.ts.map +1 -1
  269. package/dist/cli/lib/upgrade-apply.js +6 -2
  270. package/dist/cli/lib/upgrade-apply.js.map +1 -1
  271. package/dist/cli/lib/upgrade-plan.d.ts +21 -0
  272. package/dist/cli/lib/upgrade-plan.d.ts.map +1 -1
  273. package/dist/cli/lib/upgrade-plan.js +92 -7
  274. package/dist/cli/lib/upgrade-plan.js.map +1 -1
  275. package/dist/cli/lib/verify-changed-missions.d.ts +3 -0
  276. package/dist/cli/lib/verify-changed-missions.d.ts.map +1 -0
  277. package/dist/cli/lib/verify-changed-missions.js +30 -0
  278. package/dist/cli/lib/verify-changed-missions.js.map +1 -0
  279. package/dist/cli/lib/verify-engine.d.ts +45 -6
  280. package/dist/cli/lib/verify-engine.d.ts.map +1 -1
  281. package/dist/cli/lib/verify-engine.js +46 -11
  282. package/dist/cli/lib/verify-engine.js.map +1 -1
  283. package/dist/cli/lib/{verify-result-payload.d.ts → verify-payload.d.ts} +3 -7
  284. package/dist/cli/lib/verify-payload.d.ts.map +1 -0
  285. package/dist/cli/lib/{verify-result-payload.js → verify-payload.js} +19 -11
  286. package/dist/cli/lib/verify-payload.js.map +1 -0
  287. package/dist/cli/lib/verify-present.d.ts +9 -5
  288. package/dist/cli/lib/verify-present.d.ts.map +1 -1
  289. package/dist/cli/lib/verify-present.js +101 -8
  290. package/dist/cli/lib/verify-present.js.map +1 -1
  291. package/dist/cli/lib/verify-presentation.d.ts +7 -0
  292. package/dist/cli/lib/verify-presentation.d.ts.map +1 -0
  293. package/dist/cli/lib/verify-presentation.js +4 -0
  294. package/dist/cli/lib/verify-presentation.js.map +1 -0
  295. package/dist/cli/lib/verify-remediation.d.ts +30 -3
  296. package/dist/cli/lib/verify-remediation.d.ts.map +1 -1
  297. package/dist/cli/lib/verify-remediation.js +106 -1
  298. package/dist/cli/lib/verify-remediation.js.map +1 -1
  299. package/dist/cli/lib/version.gen.d.ts +1 -1
  300. package/dist/cli/lib/version.gen.js +1 -1
  301. package/dist/cli/program-core.d.ts.map +1 -1
  302. package/dist/cli/program-core.js +15 -44
  303. package/dist/cli/program-core.js.map +1 -1
  304. package/dist/cli/program-mission.d.ts.map +1 -1
  305. package/dist/cli/program-mission.js +38 -1
  306. package/dist/cli/program-mission.js.map +1 -1
  307. package/dist/cli/program-workflow.d.ts.map +1 -1
  308. package/dist/cli/program-workflow.js +75 -32
  309. package/dist/cli/program-workflow.js.map +1 -1
  310. package/package.json +5 -2
  311. package/templates/.cursor/rules/opengantry-gxt-substrate.mdc +1 -0
  312. package/templates/.gitagent/foreman/MANIFEST.json +6 -1
  313. package/templates/.gitagent/teacher/KPI-REPORT.schema.yaml +48 -0
  314. package/templates/.gitagent/teacher/MISSION.schema.yaml +70 -0
  315. package/templates/.gitagent/teacher/WORKER_LOG.template.md +1 -0
  316. package/templates/.githooks/pre-commit +26 -0
  317. package/templates/.githooks/pre-push +5 -0
  318. package/templates/.github/workflows/gxt-validate.yml +11 -0
  319. package/templates/AGENTS.md +4 -0
  320. package/templates/integrations/asset-catalog.json +46 -0
  321. package/templates/integrations/compatibility.json +11 -10
  322. package/templates/integrations/recipes/_footer.md +4 -0
  323. package/dist/cli/lib/agent-error.d.ts +0 -20
  324. package/dist/cli/lib/agent-error.d.ts.map +0 -1
  325. package/dist/cli/lib/agent-error.js.map +0 -1
  326. package/dist/cli/lib/architecture-pointer-discovery.d.ts +0 -7
  327. package/dist/cli/lib/architecture-pointer-discovery.d.ts.map +0 -1
  328. package/dist/cli/lib/architecture-pointer-discovery.js +0 -60
  329. package/dist/cli/lib/architecture-pointer-discovery.js.map +0 -1
  330. package/dist/cli/lib/architecture-pointer-doctor.d.ts +0 -3
  331. package/dist/cli/lib/architecture-pointer-doctor.d.ts.map +0 -1
  332. package/dist/cli/lib/architecture-pointer-doctor.js +0 -115
  333. package/dist/cli/lib/architecture-pointer-doctor.js.map +0 -1
  334. package/dist/cli/lib/architecture-pointer-schema.d.ts +0 -5
  335. package/dist/cli/lib/architecture-pointer-schema.d.ts.map +0 -1
  336. package/dist/cli/lib/architecture-pointer-schema.js +0 -138
  337. package/dist/cli/lib/architecture-pointer-schema.js.map +0 -1
  338. package/dist/cli/lib/architecture-pointer-types.d.ts +0 -24
  339. package/dist/cli/lib/architecture-pointer-types.d.ts.map +0 -1
  340. package/dist/cli/lib/architecture-pointer-types.js +0 -7
  341. package/dist/cli/lib/architecture-pointer-types.js.map +0 -1
  342. package/dist/cli/lib/break-glass-flow.d.ts +0 -18
  343. package/dist/cli/lib/break-glass-flow.d.ts.map +0 -1
  344. package/dist/cli/lib/break-glass-flow.js +0 -29
  345. package/dist/cli/lib/break-glass-flow.js.map +0 -1
  346. package/dist/cli/lib/cli-timeout.d.ts +0 -9
  347. package/dist/cli/lib/cli-timeout.d.ts.map +0 -1
  348. package/dist/cli/lib/cli-timeout.js +0 -17
  349. package/dist/cli/lib/cli-timeout.js.map +0 -1
  350. package/dist/cli/lib/doctor-checks.d.ts +0 -16
  351. package/dist/cli/lib/doctor-checks.d.ts.map +0 -1
  352. package/dist/cli/lib/doctor-checks.js +0 -138
  353. package/dist/cli/lib/doctor-checks.js.map +0 -1
  354. package/dist/cli/lib/doctor-integration-checks.d.ts +0 -5
  355. package/dist/cli/lib/doctor-integration-checks.d.ts.map +0 -1
  356. package/dist/cli/lib/doctor-integration-checks.js +0 -89
  357. package/dist/cli/lib/doctor-integration-checks.js.map +0 -1
  358. package/dist/cli/lib/doctor-orchestration.d.ts +0 -10
  359. package/dist/cli/lib/doctor-orchestration.d.ts.map +0 -1
  360. package/dist/cli/lib/doctor-orchestration.js +0 -32
  361. package/dist/cli/lib/doctor-orchestration.js.map +0 -1
  362. package/dist/cli/lib/doctor-substrate-drift.d.ts +0 -7
  363. package/dist/cli/lib/doctor-substrate-drift.d.ts.map +0 -1
  364. package/dist/cli/lib/doctor-substrate-drift.js +0 -35
  365. package/dist/cli/lib/doctor-substrate-drift.js.map +0 -1
  366. package/dist/cli/lib/git-metrics-missions.d.ts +0 -3
  367. package/dist/cli/lib/git-metrics-missions.d.ts.map +0 -1
  368. package/dist/cli/lib/git-metrics-missions.js +0 -51
  369. package/dist/cli/lib/git-metrics-missions.js.map +0 -1
  370. package/dist/cli/lib/git-metrics-stream.d.ts +0 -24
  371. package/dist/cli/lib/git-metrics-stream.d.ts.map +0 -1
  372. package/dist/cli/lib/git-metrics-stream.js +0 -137
  373. package/dist/cli/lib/git-metrics-stream.js.map +0 -1
  374. package/dist/cli/lib/git-proof-errors.d.ts +0 -3
  375. package/dist/cli/lib/git-proof-errors.d.ts.map +0 -1
  376. package/dist/cli/lib/git-proof-errors.js +0 -7
  377. package/dist/cli/lib/git-proof-errors.js.map +0 -1
  378. package/dist/cli/lib/git-repo.d.ts +0 -26
  379. package/dist/cli/lib/git-repo.d.ts.map +0 -1
  380. package/dist/cli/lib/git-repo.js +0 -53
  381. package/dist/cli/lib/git-repo.js.map +0 -1
  382. package/dist/cli/lib/init-assets.d.ts +0 -8
  383. package/dist/cli/lib/init-assets.d.ts.map +0 -1
  384. package/dist/cli/lib/init-assets.js +0 -3
  385. package/dist/cli/lib/init-assets.js.map +0 -1
  386. package/dist/cli/lib/init-compose-arch-pointer.d.ts.map +0 -1
  387. package/dist/cli/lib/init-compose-arch-pointer.js.map +0 -1
  388. package/dist/cli/lib/init-compose-doc.d.ts +0 -5
  389. package/dist/cli/lib/init-compose-doc.d.ts.map +0 -1
  390. package/dist/cli/lib/init-compose-doc.js +0 -37
  391. package/dist/cli/lib/init-compose-doc.js.map +0 -1
  392. package/dist/cli/lib/legislate-core.d.ts +0 -21
  393. package/dist/cli/lib/legislate-core.d.ts.map +0 -1
  394. package/dist/cli/lib/legislate-core.js.map +0 -1
  395. package/dist/cli/lib/legislate-skill.d.ts +0 -20
  396. package/dist/cli/lib/legislate-skill.d.ts.map +0 -1
  397. package/dist/cli/lib/legislate-skill.js +0 -30
  398. package/dist/cli/lib/legislate-skill.js.map +0 -1
  399. package/dist/cli/lib/mcp-legislation-draft.d.ts +0 -6
  400. package/dist/cli/lib/mcp-legislation-draft.d.ts.map +0 -1
  401. package/dist/cli/lib/mcp-legislation-draft.js +0 -62
  402. package/dist/cli/lib/mcp-legislation-draft.js.map +0 -1
  403. package/dist/cli/lib/mcp-legislation-execute.d.ts +0 -6
  404. package/dist/cli/lib/mcp-legislation-execute.d.ts.map +0 -1
  405. package/dist/cli/lib/mcp-legislation-execute.js +0 -43
  406. package/dist/cli/lib/mcp-legislation-execute.js.map +0 -1
  407. package/dist/cli/lib/mcp-legislation-mission.d.ts +0 -12
  408. package/dist/cli/lib/mcp-legislation-mission.d.ts.map +0 -1
  409. package/dist/cli/lib/mcp-legislation-mission.js +0 -82
  410. package/dist/cli/lib/mcp-legislation-mission.js.map +0 -1
  411. package/dist/cli/lib/mcp-legislation-types.d.ts +0 -68
  412. package/dist/cli/lib/mcp-legislation-types.d.ts.map +0 -1
  413. package/dist/cli/lib/mcp-legislation-types.js +0 -4
  414. package/dist/cli/lib/mcp-legislation-types.js.map +0 -1
  415. package/dist/cli/lib/mcp-legislation.d.ts +0 -5
  416. package/dist/cli/lib/mcp-legislation.d.ts.map +0 -1
  417. package/dist/cli/lib/mcp-legislation.js +0 -4
  418. package/dist/cli/lib/mcp-legislation.js.map +0 -1
  419. package/dist/cli/lib/mcp-orchestration.d.ts +0 -12
  420. package/dist/cli/lib/mcp-orchestration.d.ts.map +0 -1
  421. package/dist/cli/lib/mcp-orchestration.js +0 -54
  422. package/dist/cli/lib/mcp-orchestration.js.map +0 -1
  423. package/dist/cli/lib/mission-emit.d.ts +0 -7
  424. package/dist/cli/lib/mission-emit.d.ts.map +0 -1
  425. package/dist/cli/lib/mission-emit.js +0 -23
  426. package/dist/cli/lib/mission-emit.js.map +0 -1
  427. package/dist/cli/lib/mission-legislative-stub.d.ts +0 -9
  428. package/dist/cli/lib/mission-legislative-stub.d.ts.map +0 -1
  429. package/dist/cli/lib/mission-legislative-stub.js +0 -37
  430. package/dist/cli/lib/mission-legislative-stub.js.map +0 -1
  431. package/dist/cli/lib/mission-markdown.d.ts +0 -6
  432. package/dist/cli/lib/mission-markdown.d.ts.map +0 -1
  433. package/dist/cli/lib/mission-markdown.js.map +0 -1
  434. package/dist/cli/lib/mission-msn.d.ts +0 -10
  435. package/dist/cli/lib/mission-msn.d.ts.map +0 -1
  436. package/dist/cli/lib/mission-msn.js +0 -85
  437. package/dist/cli/lib/mission-msn.js.map +0 -1
  438. package/dist/cli/lib/mission-parser.d.ts +0 -6
  439. package/dist/cli/lib/mission-parser.d.ts.map +0 -1
  440. package/dist/cli/lib/mission-parser.js +0 -29
  441. package/dist/cli/lib/mission-parser.js.map +0 -1
  442. package/dist/cli/lib/mission-path.d.ts +0 -4
  443. package/dist/cli/lib/mission-path.d.ts.map +0 -1
  444. package/dist/cli/lib/mission-path.js +0 -28
  445. package/dist/cli/lib/mission-path.js.map +0 -1
  446. package/dist/cli/lib/mission-resolution.d.ts +0 -14
  447. package/dist/cli/lib/mission-resolution.d.ts.map +0 -1
  448. package/dist/cli/lib/mission-resolution.js +0 -60
  449. package/dist/cli/lib/mission-resolution.js.map +0 -1
  450. package/dist/cli/lib/mission-yaml.d.ts +0 -18
  451. package/dist/cli/lib/mission-yaml.d.ts.map +0 -1
  452. package/dist/cli/lib/mission-yaml.js +0 -101
  453. package/dist/cli/lib/mission-yaml.js.map +0 -1
  454. package/dist/cli/lib/msn.d.ts +0 -2
  455. package/dist/cli/lib/msn.d.ts.map +0 -1
  456. package/dist/cli/lib/msn.js +0 -5
  457. package/dist/cli/lib/msn.js.map +0 -1
  458. package/dist/cli/lib/runtime-exec-orchestrator.d.ts +0 -14
  459. package/dist/cli/lib/runtime-exec-orchestrator.d.ts.map +0 -1
  460. package/dist/cli/lib/runtime-exec-orchestrator.js +0 -132
  461. package/dist/cli/lib/runtime-exec-orchestrator.js.map +0 -1
  462. package/dist/cli/lib/runtime-exec-result.d.ts +0 -21
  463. package/dist/cli/lib/runtime-exec-result.d.ts.map +0 -1
  464. package/dist/cli/lib/runtime-exec-result.js +0 -42
  465. package/dist/cli/lib/runtime-exec-result.js.map +0 -1
  466. package/dist/cli/lib/runtime-exec-worker.d.ts +0 -18
  467. package/dist/cli/lib/runtime-exec-worker.d.ts.map +0 -1
  468. package/dist/cli/lib/runtime-exec-worker.js +0 -49
  469. package/dist/cli/lib/runtime-exec-worker.js.map +0 -1
  470. package/dist/cli/lib/start-state.d.ts +0 -12
  471. package/dist/cli/lib/start-state.d.ts.map +0 -1
  472. package/dist/cli/lib/start-state.js +0 -86
  473. package/dist/cli/lib/start-state.js.map +0 -1
  474. package/dist/cli/lib/trace-failure-kind.d.ts +0 -4
  475. package/dist/cli/lib/trace-failure-kind.d.ts.map +0 -1
  476. package/dist/cli/lib/trace-failure-kind.js +0 -25
  477. package/dist/cli/lib/trace-failure-kind.js.map +0 -1
  478. package/dist/cli/lib/trace-status.d.ts +0 -7
  479. package/dist/cli/lib/trace-status.d.ts.map +0 -1
  480. package/dist/cli/lib/trace-status.js +0 -20
  481. package/dist/cli/lib/trace-status.js.map +0 -1
  482. package/dist/cli/lib/upgrade-eligible-assets.d.ts +0 -5
  483. package/dist/cli/lib/upgrade-eligible-assets.d.ts.map +0 -1
  484. package/dist/cli/lib/upgrade-eligible-assets.js +0 -9
  485. package/dist/cli/lib/upgrade-eligible-assets.js.map +0 -1
  486. package/dist/cli/lib/upgrade-profile.d.ts +0 -4
  487. package/dist/cli/lib/upgrade-profile.d.ts.map +0 -1
  488. package/dist/cli/lib/upgrade-profile.js +0 -27
  489. package/dist/cli/lib/upgrade-profile.js.map +0 -1
  490. package/dist/cli/lib/user-error.d.ts.map +0 -1
  491. package/dist/cli/lib/user-error.js +0 -64
  492. package/dist/cli/lib/user-error.js.map +0 -1
  493. package/dist/cli/lib/verify-failure-presentation.d.ts +0 -30
  494. package/dist/cli/lib/verify-failure-presentation.d.ts.map +0 -1
  495. package/dist/cli/lib/verify-failure-presentation.js +0 -56
  496. package/dist/cli/lib/verify-failure-presentation.js.map +0 -1
  497. package/dist/cli/lib/verify-result-payload.d.ts.map +0 -1
  498. package/dist/cli/lib/verify-result-payload.js.map +0 -1
  499. package/dist/cli/lib/verify-run.d.ts +0 -10
  500. package/dist/cli/lib/verify-run.d.ts.map +0 -1
  501. package/dist/cli/lib/verify-run.js +0 -52
  502. package/dist/cli/lib/verify-run.js.map +0 -1
  503. package/dist/cli/lib/verify-types.d.ts +0 -25
  504. package/dist/cli/lib/verify-types.d.ts.map +0 -1
  505. package/dist/cli/lib/verify-types.js +0 -2
  506. package/dist/cli/lib/verify-types.js.map +0 -1
@@ -0,0 +1,23 @@
1
+ /** Append immutable surgeon mutation line to WORKER_LOG (fail-closed if missing). */
2
+ export declare function appendSurgeonMutationLog(workerLogPath: string, summary: string): void;
3
+ export declare function ensureWorkerLogExists(workerLogPath: string): void;
4
+ /** Structured import-layer gate report (check-import-layers.mjs --json). */
5
+ export interface ImportLayerViolation {
6
+ file: string;
7
+ rule_id: string;
8
+ module_specifier: string;
9
+ bindings: string[];
10
+ line: number;
11
+ column: number;
12
+ }
13
+ export interface ImportLayerGateReport {
14
+ schema_version: number;
15
+ ok: boolean;
16
+ violations: ImportLayerViolation[];
17
+ }
18
+ /** Parse versioned JSON gate output; null when not a valid import-layer report. */
19
+ export declare function parseImportLayerGateJson(text: string): ImportLayerGateReport | null;
20
+ export declare function gateOutputIndicatesImportLayer(text: string): boolean;
21
+ /** Extract import-layer report from gate stdout/stderr (prefer stdout). */
22
+ export declare function extractImportLayerGateReport(gateStdout: string, gateStderr: string): ImportLayerGateReport | null;
23
+ //# sourceMappingURL=surgeon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"surgeon.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/surgeon.ts"],"names":[],"mappings":"AAIA,qFAAqF;AACrF,wBAAgB,wBAAwB,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAKrF;AAED,wBAAgB,qBAAqB,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAIjE;AAED,4EAA4E;AAC5E,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,qBAAqB;IACpC,cAAc,EAAE,MAAM,CAAC;IACvB,EAAE,EAAE,OAAO,CAAC;IACZ,UAAU,EAAE,oBAAoB,EAAE,CAAC;CACpC;AAeD,mFAAmF;AACnF,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,qBAAqB,GAAG,IAAI,CAoBnF;AAED,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAGpE;AAED,2EAA2E;AAC3E,wBAAgB,4BAA4B,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,qBAAqB,GAAG,IAAI,CAEjH"}
@@ -0,0 +1,63 @@
1
+ import fs from "node:fs";
2
+ const MUTATION_PREFIX = "[SURGEON-MUTATION]";
3
+ /** Append immutable surgeon mutation line to WORKER_LOG (fail-closed if missing). */
4
+ export function appendSurgeonMutationLog(workerLogPath, summary) {
5
+ ensureWorkerLogExists(workerLogPath);
6
+ const line = summary.startsWith(MUTATION_PREFIX) ? summary : `${MUTATION_PREFIX} ${summary}`;
7
+ const suffix = line.endsWith("\n") ? line : `${line}\n`;
8
+ fs.appendFileSync(workerLogPath, suffix, { encoding: "utf8" });
9
+ }
10
+ export function ensureWorkerLogExists(workerLogPath) {
11
+ if (!fs.existsSync(workerLogPath)) {
12
+ fs.writeFileSync(workerLogPath, "", "utf8");
13
+ }
14
+ }
15
+ function isViolationRecord(v) {
16
+ if (typeof v !== "object" || v === null)
17
+ return false;
18
+ const o = v;
19
+ return (typeof o.file === "string" &&
20
+ typeof o.rule_id === "string" &&
21
+ typeof o.module_specifier === "string" &&
22
+ Array.isArray(o.bindings) &&
23
+ typeof o.line === "number" &&
24
+ typeof o.column === "number");
25
+ }
26
+ /** Parse versioned JSON gate output; null when not a valid import-layer report. */
27
+ export function parseImportLayerGateJson(text) {
28
+ const trimmed = text.trim();
29
+ if (!trimmed.startsWith("{"))
30
+ return null;
31
+ let parsed;
32
+ try {
33
+ parsed = JSON.parse(trimmed);
34
+ }
35
+ catch {
36
+ return null;
37
+ }
38
+ if (typeof parsed !== "object" || parsed === null)
39
+ return null;
40
+ const o = parsed;
41
+ if (o.schema_version !== 1)
42
+ return null;
43
+ if (typeof o.ok !== "boolean")
44
+ return null;
45
+ if (!Array.isArray(o.violations))
46
+ return null;
47
+ if (!o.violations.every(isViolationRecord))
48
+ return null;
49
+ return {
50
+ schema_version: 1,
51
+ ok: o.ok,
52
+ violations: o.violations,
53
+ };
54
+ }
55
+ export function gateOutputIndicatesImportLayer(text) {
56
+ const report = parseImportLayerGateJson(text);
57
+ return report !== null && report.ok === false && report.violations.length > 0;
58
+ }
59
+ /** Extract import-layer report from gate stdout/stderr (prefer stdout). */
60
+ export function extractImportLayerGateReport(gateStdout, gateStderr) {
61
+ return parseImportLayerGateJson(gateStdout) ?? parseImportLayerGateJson(gateStderr);
62
+ }
63
+ //# sourceMappingURL=surgeon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"surgeon.js","sourceRoot":"","sources":["../../../src/cli/lib/surgeon.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { CodeSurgeon } from "./registry.js";
2
+ export { quarantineBannedImportInFile } from "./quarantine-import.js";
3
+ export declare const bannedImportSurgeon: CodeSurgeon;
4
+ //# sourceMappingURL=banned-import.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"banned-import.d.ts","sourceRoot":"","sources":["../../../../src/cli/lib/surgeons/banned-import.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAyC,MAAM,eAAe,CAAC;AAIxF,OAAO,EAAE,4BAA4B,EAAE,MAAM,wBAAwB,CAAC;AAEtE,eAAO,MAAM,mBAAmB,EAAE,WAmCjC,CAAC"}
@@ -0,0 +1,37 @@
1
+ import path from "node:path";
2
+ import { GXT_ERROR } from "../gxt-error-codes.js";
3
+ import { parseBannedImportGateOutput } from "../banned-import-violation.js";
4
+ import { quarantineImportDeclaration } from "./quarantine-import.js";
5
+ const QUARANTINE_RULE = "RULE-BANNED-IMPORT";
6
+ export { quarantineBannedImportInFile } from "./quarantine-import.js";
7
+ export const bannedImportSurgeon = {
8
+ errorCode: GXT_ERROR.BANNED_IMPORT_DETECTED,
9
+ async applyMutation(context) {
10
+ const combined = `${context.failure.gateStderr ?? ""}\n${context.failure.gateStdout ?? ""}`;
11
+ const violations = parseBannedImportGateOutput(combined);
12
+ if (violations.length === 0) {
13
+ return { mutated: false, summary: "no banned-import violations parsed from gate output" };
14
+ }
15
+ const summaries = [];
16
+ let anyMutated = false;
17
+ for (const v of violations) {
18
+ const absPath = path.isAbsolute(v.file) ? v.file : path.join(context.root, v.file);
19
+ const result = quarantineImportDeclaration({
20
+ absPath,
21
+ moduleSpecifier: v.specifier,
22
+ ruleId: QUARANTINE_RULE,
23
+ reason: "removed banned specifier",
24
+ root: context.root,
25
+ });
26
+ if (result.mutated) {
27
+ anyMutated = true;
28
+ summaries.push(`banned-import quarantined: ${v.file}:${String(result.line ?? "?")} -> ${QUARANTINE_RULE}`);
29
+ }
30
+ }
31
+ return {
32
+ mutated: anyMutated,
33
+ summary: summaries.join("; "),
34
+ };
35
+ },
36
+ };
37
+ //# sourceMappingURL=banned-import.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"banned-import.js","sourceRoot":"","sources":["../../../../src/cli/lib/surgeons/banned-import.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAGrE,MAAM,eAAe,GAAG,oBAAoB,CAAC;AAE7C,OAAO,EAAE,4BAA4B,EAAE,MAAM,wBAAwB,CAAC;AAEtE,MAAM,CAAC,MAAM,mBAAmB,GAAgB;IAC9C,SAAS,EAAE,SAAS,CAAC,sBAAsB;IAE3C,KAAK,CAAC,aAAa,CAAC,OAAuB;QACzC,MAAM,QAAQ,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE,EAAE,CAAC;QAC5F,MAAM,UAAU,GAAG,2BAA2B,CAAC,QAAQ,CAAC,CAAC;QACzD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,qDAAqD,EAAE,CAAC;QAC5F,CAAC;QAED,MAAM,SAAS,GAAa,EAAE,CAAC;QAC/B,IAAI,UAAU,GAAG,KAAK,CAAC;QAEvB,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;YAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;YACnF,MAAM,MAAM,GAAG,2BAA2B,CAAC;gBACzC,OAAO;gBACP,eAAe,EAAE,CAAC,CAAC,SAAS;gBAC5B,MAAM,EAAE,eAAe;gBACvB,MAAM,EAAE,0BAA0B;gBAClC,IAAI,EAAE,OAAO,CAAC,IAAI;aACnB,CAAC,CAAC;YACH,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,UAAU,GAAG,IAAI,CAAC;gBAClB,SAAS,CAAC,IAAI,CACZ,8BAA8B,CAAC,CAAC,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI,GAAG,CAAC,OAAO,eAAe,EAAE,CAC3F,CAAC;YACJ,CAAC;QACH,CAAC;QAED,OAAO;YACL,OAAO,EAAE,UAAU;YACnB,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;SAC9B,CAAC;IACJ,CAAC;CACF,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { CodeSurgeon } from "./registry.js";
2
+ export declare const importLayerSurgeon: CodeSurgeon;
3
+ //# sourceMappingURL=import-layer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"import-layer.d.ts","sourceRoot":"","sources":["../../../../src/cli/lib/surgeons/import-layer.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,WAAW,EAAyC,MAAM,eAAe,CAAC;AAgDxF,eAAO,MAAM,kBAAkB,EAAE,WAwChC,CAAC"}
@@ -0,0 +1,74 @@
1
+ import path from "node:path";
2
+ import { GXT_ERROR } from "../gxt-error-codes.js";
3
+ import { extractImportLayerGateReport } from "../surgeon.js";
4
+ import { quarantineImportDeclaration, resolveImportDeclarationOffset, } from "./quarantine-import.js";
5
+ const QUARANTINE_RULE = "RULE-IMPORT-LAYER";
6
+ function reasonForRule(ruleId) {
7
+ switch (ruleId) {
8
+ case "RULE-LIB-TO-COMMAND":
9
+ return "removed lib-to-command import";
10
+ case "RULE-LIB-COMMANDER":
11
+ return "removed commander import from lib layer";
12
+ case "RULE-COMMAND-RUNTIME-EXEC-PROCESS":
13
+ return "removed direct runtime-exec-process import";
14
+ default:
15
+ return "removed import layer violation";
16
+ }
17
+ }
18
+ function resolveTargets(root, violations) {
19
+ const targets = [];
20
+ for (const v of violations) {
21
+ const absPath = path.isAbsolute(v.file) ? v.file : path.join(root, v.file);
22
+ const offset = resolveImportDeclarationOffset(root, absPath, v.module_specifier);
23
+ if (offset === null)
24
+ continue;
25
+ targets.push({ violation: v, absPath, offset });
26
+ }
27
+ return targets;
28
+ }
29
+ function groupAndSortBottomToTop(targets) {
30
+ const byFile = new Map();
31
+ for (const t of targets) {
32
+ const list = byFile.get(t.absPath) ?? [];
33
+ list.push(t);
34
+ byFile.set(t.absPath, list);
35
+ }
36
+ for (const [file, list] of byFile) {
37
+ list.sort((a, b) => b.offset - a.offset);
38
+ byFile.set(file, list);
39
+ }
40
+ return byFile;
41
+ }
42
+ export const importLayerSurgeon = {
43
+ errorCode: GXT_ERROR.IMPORT_LAYER_VIOLATION,
44
+ async applyMutation(context) {
45
+ const report = extractImportLayerGateReport(context.failure.gateStdout ?? "", context.failure.gateStderr ?? "");
46
+ if (!report || report.violations.length === 0) {
47
+ return { mutated: false, summary: "no import-layer violations parsed from gate JSON" };
48
+ }
49
+ const grouped = groupAndSortBottomToTop(resolveTargets(context.root, report.violations));
50
+ const summaries = [];
51
+ let anyMutated = false;
52
+ for (const [, fileTargets] of grouped) {
53
+ for (const target of fileTargets) {
54
+ const v = target.violation;
55
+ const result = quarantineImportDeclaration({
56
+ absPath: target.absPath,
57
+ moduleSpecifier: v.module_specifier,
58
+ ruleId: QUARANTINE_RULE,
59
+ reason: reasonForRule(v.rule_id),
60
+ root: context.root,
61
+ });
62
+ if (result.mutated) {
63
+ anyMutated = true;
64
+ summaries.push(`import-layer quarantined: ${v.file}:${String(result.line ?? v.line)} -> ${QUARANTINE_RULE}`);
65
+ }
66
+ }
67
+ }
68
+ return {
69
+ mutated: anyMutated,
70
+ summary: summaries.join("; "),
71
+ };
72
+ },
73
+ };
74
+ //# sourceMappingURL=import-layer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"import-layer.js","sourceRoot":"","sources":["../../../../src/cli/lib/surgeons/import-layer.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,4BAA4B,EAA6B,MAAM,eAAe,CAAC;AACxF,OAAO,EACL,2BAA2B,EAC3B,8BAA8B,GAC/B,MAAM,wBAAwB,CAAC;AAGhC,MAAM,eAAe,GAAG,mBAAmB,CAAC;AAQ5C,SAAS,aAAa,CAAC,MAAc;IACnC,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,qBAAqB;YACxB,OAAO,+BAA+B,CAAC;QACzC,KAAK,oBAAoB;YACvB,OAAO,yCAAyC,CAAC;QACnD,KAAK,mCAAmC;YACtC,OAAO,4CAA4C,CAAC;QACtD;YACE,OAAO,gCAAgC,CAAC;IAC5C,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,IAAY,EAAE,UAAkC;IACtE,MAAM,OAAO,GAAqB,EAAE,CAAC;IACrC,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QAC3E,MAAM,MAAM,GAAG,8BAA8B,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,gBAAgB,CAAC,CAAC;QACjF,IAAI,MAAM,KAAK,IAAI;YAAE,SAAS;QAC9B,OAAO,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;IAClD,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,uBAAuB,CAAC,OAAyB;IACxD,MAAM,MAAM,GAAG,IAAI,GAAG,EAA4B,CAAC;IACnD,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QACzC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACb,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC9B,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,MAAM,EAAE,CAAC;QAClC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;QACzC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACzB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAgB;IAC7C,SAAS,EAAE,SAAS,CAAC,sBAAsB;IAE3C,KAAK,CAAC,aAAa,CAAC,OAAuB;QACzC,MAAM,MAAM,GAAG,4BAA4B,CACzC,OAAO,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE,EAChC,OAAO,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE,CACjC,CAAC;QACF,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9C,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,kDAAkD,EAAE,CAAC;QACzF,CAAC;QAED,MAAM,OAAO,GAAG,uBAAuB,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;QACzF,MAAM,SAAS,GAAa,EAAE,CAAC;QAC/B,IAAI,UAAU,GAAG,KAAK,CAAC;QAEvB,KAAK,MAAM,CAAC,EAAE,WAAW,CAAC,IAAI,OAAO,EAAE,CAAC;YACtC,KAAK,MAAM,MAAM,IAAI,WAAW,EAAE,CAAC;gBACjC,MAAM,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC;gBAC3B,MAAM,MAAM,GAAG,2BAA2B,CAAC;oBACzC,OAAO,EAAE,MAAM,CAAC,OAAO;oBACvB,eAAe,EAAE,CAAC,CAAC,gBAAgB;oBACnC,MAAM,EAAE,eAAe;oBACvB,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC;oBAChC,IAAI,EAAE,OAAO,CAAC,IAAI;iBACnB,CAAC,CAAC;gBACH,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;oBACnB,UAAU,GAAG,IAAI,CAAC;oBAClB,SAAS,CAAC,IAAI,CACZ,6BAA6B,CAAC,CAAC,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,eAAe,EAAE,CAC7F,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO;YACL,OAAO,EAAE,UAAU;YACnB,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;SAC9B,CAAC;IACJ,CAAC;CACF,CAAC"}
@@ -0,0 +1,24 @@
1
+ export interface QuarantineImportTarget {
2
+ absPath: string;
3
+ moduleSpecifier: string;
4
+ ruleId: string;
5
+ reason: string;
6
+ /** Repo root for workspace TypeScript resolution. */
7
+ root: string;
8
+ }
9
+ export interface QuarantineImportResult {
10
+ mutated: boolean;
11
+ line?: number;
12
+ bindings: string[];
13
+ startOffset?: number;
14
+ }
15
+ /** Resolve import declaration start offset for bottom-to-top sorting. */
16
+ export declare function resolveImportDeclarationOffset(root: string, absPath: string, moduleSpecifier: string): number | null;
17
+ /** Quarantine a matching import via TypeScript AST offsets (lazy Proxy roadblock). */
18
+ export declare function quarantineImportDeclaration(target: QuarantineImportTarget): QuarantineImportResult;
19
+ /** Back-compat alias used by banned-import surgeon tests. */
20
+ export declare function quarantineBannedImportInFile(absPath: string, specifier: string, ruleId?: string, root?: string): {
21
+ mutated: boolean;
22
+ lineNumber?: number;
23
+ };
24
+ //# sourceMappingURL=quarantine-import.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quarantine-import.d.ts","sourceRoot":"","sources":["../../../../src/cli/lib/surgeons/quarantine-import.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,qDAAqD;IACrD,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAyFD,yEAAyE;AACzE,wBAAgB,8BAA8B,CAC5C,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,eAAe,EAAE,MAAM,GACtB,MAAM,GAAG,IAAI,CAOf;AAED,sFAAsF;AACtF,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,sBAAsB,GAC7B,sBAAsB,CAuCxB;AAED,6DAA6D;AAC7D,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,MAAM,GAAE,MAA6B,EACrC,IAAI,GAAE,MAAsB,GAC3B;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,CAS3C"}
@@ -0,0 +1,128 @@
1
+ import fs from "node:fs";
2
+ import { getWorkspaceTypeScript } from "./typescript-workspace.js";
3
+ function specifierMatches(found, expected) {
4
+ if (found === expected)
5
+ return true;
6
+ const norm = (s) => s.replace(/\.js$/i, ".ts");
7
+ return norm(found) === norm(expected);
8
+ }
9
+ function extractBindingsFromClause(ts, clause) {
10
+ if (!clause) {
11
+ return { namedBindings: ["__gxtQuarantineImport"] };
12
+ }
13
+ const groups = { namedBindings: [] };
14
+ if (clause.name) {
15
+ groups.defaultBinding = clause.name.text;
16
+ }
17
+ const named = clause.namedBindings;
18
+ if (named) {
19
+ if (ts.isNamespaceImport(named)) {
20
+ groups.namespaceBinding = named.name.text;
21
+ }
22
+ else if (ts.isNamedImports(named)) {
23
+ for (const el of named.elements) {
24
+ if (el.isTypeOnly)
25
+ continue;
26
+ groups.namedBindings.push(el.name.text);
27
+ }
28
+ }
29
+ }
30
+ if (!groups.defaultBinding && !groups.namespaceBinding && groups.namedBindings.length === 0) {
31
+ groups.namedBindings.push("__gxtQuarantineImport");
32
+ }
33
+ return groups;
34
+ }
35
+ function flattenBindingGroups(groups) {
36
+ const out = [];
37
+ if (groups.defaultBinding)
38
+ out.push(groups.defaultBinding);
39
+ out.push(...groups.namedBindings);
40
+ if (groups.namespaceBinding)
41
+ out.push(groups.namespaceBinding);
42
+ return out;
43
+ }
44
+ function proxyConstLine(binding, specifier, ruleId, reason) {
45
+ return [
46
+ `const ${binding} = new Proxy(Object.create(null), {`,
47
+ ` get() { throw new Error("GXT Security Violation: Execution blocked. ${reason} Import '${specifier}' quarantined by Code Surgeon [${ruleId}]."); }`,
48
+ `});`,
49
+ ].join("\n");
50
+ }
51
+ function buildProxyBlock(groups, specifier, ruleId, reason) {
52
+ return flattenBindingGroups(groups)
53
+ .map((binding) => proxyConstLine(binding, specifier, ruleId, reason))
54
+ .join("\n");
55
+ }
56
+ function findImportDeclaration(ts, sourceFile, moduleSpecifier) {
57
+ let found = null;
58
+ const visit = (node) => {
59
+ if (found)
60
+ return;
61
+ if (ts.isImportDeclaration(node) && node.moduleSpecifier && ts.isStringLiteral(node.moduleSpecifier)) {
62
+ if (specifierMatches(node.moduleSpecifier.text, moduleSpecifier)) {
63
+ found = node;
64
+ return;
65
+ }
66
+ }
67
+ ts.forEachChild(node, visit);
68
+ };
69
+ visit(sourceFile);
70
+ return found;
71
+ }
72
+ /** Resolve import declaration start offset for bottom-to-top sorting. */
73
+ export function resolveImportDeclarationOffset(root, absPath, moduleSpecifier) {
74
+ const ts = getWorkspaceTypeScript(root);
75
+ if (!ts || !fs.existsSync(absPath))
76
+ return null;
77
+ const source = fs.readFileSync(absPath, "utf8");
78
+ const sourceFile = ts.createSourceFile(absPath, source, ts.ScriptTarget.Latest, true);
79
+ const decl = findImportDeclaration(ts, sourceFile, moduleSpecifier);
80
+ return decl ? decl.getStart(sourceFile) : null;
81
+ }
82
+ /** Quarantine a matching import via TypeScript AST offsets (lazy Proxy roadblock). */
83
+ export function quarantineImportDeclaration(target) {
84
+ const ts = getWorkspaceTypeScript(target.root);
85
+ if (!ts) {
86
+ return { mutated: false, bindings: [] };
87
+ }
88
+ if (!fs.existsSync(target.absPath)) {
89
+ return { mutated: false, bindings: [] };
90
+ }
91
+ const source = fs.readFileSync(target.absPath, "utf8");
92
+ const sourceFile = ts.createSourceFile(target.absPath, source, ts.ScriptTarget.Latest, true);
93
+ const decl = findImportDeclaration(ts, sourceFile, target.moduleSpecifier);
94
+ if (!decl || !decl.moduleSpecifier || !ts.isStringLiteral(decl.moduleSpecifier)) {
95
+ return { mutated: false, bindings: [] };
96
+ }
97
+ const isTypeOnly = decl.importClause?.isTypeOnly === true;
98
+ if (isTypeOnly) {
99
+ return { mutated: false, bindings: [] };
100
+ }
101
+ const bindingGroups = extractBindingsFromClause(ts, decl.importClause);
102
+ const bindings = flattenBindingGroups(bindingGroups);
103
+ const specifier = decl.moduleSpecifier.text;
104
+ const start = decl.getFullStart();
105
+ const end = decl.getEnd();
106
+ const line = sourceFile.getLineAndCharacterOfPosition(decl.getStart(sourceFile)).line + 1;
107
+ const quarantine = [
108
+ `// GXT-SURGEON-QUARANTINE-START [${target.ruleId}]`,
109
+ `// GXT-SURGEON-QUARANTINE: ${target.reason} ${specifier} (formerly line ${String(line)})`,
110
+ buildProxyBlock(bindingGroups, specifier, target.ruleId, target.reason),
111
+ "// GXT-SURGEON-QUARANTINE-END",
112
+ ].join("\n");
113
+ const updated = `${source.slice(0, start)}${quarantine}${source.slice(end)}`;
114
+ fs.writeFileSync(target.absPath, updated.endsWith("\n") ? updated : `${updated}\n`, "utf8");
115
+ return { mutated: true, line, bindings, startOffset: start };
116
+ }
117
+ /** Back-compat alias used by banned-import surgeon tests. */
118
+ export function quarantineBannedImportInFile(absPath, specifier, ruleId = "RULE-BANNED-IMPORT", root = process.cwd()) {
119
+ const result = quarantineImportDeclaration({
120
+ absPath,
121
+ moduleSpecifier: specifier,
122
+ ruleId,
123
+ reason: "removed banned specifier",
124
+ root,
125
+ });
126
+ return { mutated: result.mutated, lineNumber: result.line };
127
+ }
128
+ //# sourceMappingURL=quarantine-import.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quarantine-import.js","sourceRoot":"","sources":["../../../../src/cli/lib/surgeons/quarantine-import.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAwBnE,SAAS,gBAAgB,CAAC,KAAa,EAAE,QAAgB;IACvD,IAAI,KAAK,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACpC,MAAM,IAAI,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACvD,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,CAAC;AACxC,CAAC;AAED,SAAS,yBAAyB,CAChC,EAA+B,EAC/B,MAAqD;IAErD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,EAAE,aAAa,EAAE,CAAC,uBAAuB,CAAC,EAAE,CAAC;IACtD,CAAC;IACD,MAAM,MAAM,GAAwB,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC;IAC1D,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QAChB,MAAM,CAAC,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;IAC3C,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,CAAC,aAAa,CAAC;IACnC,IAAI,KAAK,EAAE,CAAC;QACV,IAAI,EAAE,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC;YAChC,MAAM,CAAC,gBAAgB,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;QAC5C,CAAC;aAAM,IAAI,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;YACpC,KAAK,MAAM,EAAE,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;gBAChC,IAAI,EAAE,CAAC,UAAU;oBAAE,SAAS;gBAC5B,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC;IACH,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,cAAc,IAAI,CAAC,MAAM,CAAC,gBAAgB,IAAI,MAAM,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5F,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IACrD,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,oBAAoB,CAAC,MAA2B;IACvD,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,IAAI,MAAM,CAAC,cAAc;QAAE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IAC3D,GAAG,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;IAClC,IAAI,MAAM,CAAC,gBAAgB;QAAE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAC/D,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,cAAc,CAAC,OAAe,EAAE,SAAiB,EAAE,MAAc,EAAE,MAAc;IACxF,OAAO;QACL,SAAS,OAAO,qCAAqC;QACrD,yEAAyE,MAAM,YAAY,SAAS,kCAAkC,MAAM,SAAS;QACrJ,KAAK;KACN,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,SAAS,eAAe,CACtB,MAA2B,EAC3B,SAAiB,EACjB,MAAc,EACd,MAAc;IAEd,OAAO,oBAAoB,CAAC,MAAM,CAAC;SAChC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,cAAc,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;SACpE,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED,SAAS,qBAAqB,CAC5B,EAA+B,EAC/B,UAA2C,EAC3C,eAAuB;IAEvB,IAAI,KAAK,GAAkD,IAAI,CAAC;IAChE,MAAM,KAAK,GAAG,CAAC,IAA+B,EAAQ,EAAE;QACtD,IAAI,KAAK;YAAE,OAAO;QAClB,IAAI,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,eAAe,IAAI,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;YACrG,IAAI,gBAAgB,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,eAAe,CAAC,EAAE,CAAC;gBACjE,KAAK,GAAG,IAAI,CAAC;gBACb,OAAO;YACT,CAAC;QACH,CAAC;QACD,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC/B,CAAC,CAAC;IACF,KAAK,CAAC,UAAU,CAAC,CAAC;IAClB,OAAO,KAAK,CAAC;AACf,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,8BAA8B,CAC5C,IAAY,EACZ,OAAe,EACf,eAAuB;IAEvB,MAAM,EAAE,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC;IACxC,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC;IAChD,MAAM,MAAM,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAChD,MAAM,UAAU,GAAG,EAAE,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACtF,MAAM,IAAI,GAAG,qBAAqB,CAAC,EAAE,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC;IACpE,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACjD,CAAC;AAED,sFAAsF;AACtF,MAAM,UAAU,2BAA2B,CACzC,MAA8B;IAE9B,MAAM,EAAE,GAAG,sBAAsB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC/C,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IAC1C,CAAC;IACD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;QACnC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IAC1C,CAAC;IAED,MAAM,MAAM,GAAG,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACvD,MAAM,UAAU,GAAG,EAAE,CAAC,gBAAgB,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC7F,MAAM,IAAI,GAAG,qBAAqB,CAAC,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC;IAC3E,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;QAChF,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IAC1C,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,EAAE,UAAU,KAAK,IAAI,CAAC;IAC1D,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IAC1C,CAAC;IAED,MAAM,aAAa,GAAG,yBAAyB,CAAC,EAAE,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;IACvE,MAAM,QAAQ,GAAG,oBAAoB,CAAC,aAAa,CAAC,CAAC;IACrD,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;IAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;IAClC,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;IAC1B,MAAM,IAAI,GAAG,UAAU,CAAC,6BAA6B,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;IAE1F,MAAM,UAAU,GAAG;QACjB,oCAAoC,MAAM,CAAC,MAAM,GAAG;QACpD,8BAA8B,MAAM,CAAC,MAAM,IAAI,SAAS,mBAAmB,MAAM,CAAC,IAAI,CAAC,GAAG;QAC1F,eAAe,CAAC,aAAa,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;QACvE,+BAA+B;KAChC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEb,MAAM,OAAO,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;IAC7E,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,IAAI,EAAE,MAAM,CAAC,CAAC;IAE5F,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;AAC/D,CAAC;AAED,6DAA6D;AAC7D,MAAM,UAAU,4BAA4B,CAC1C,OAAe,EACf,SAAiB,EACjB,SAAiB,oBAAoB,EACrC,OAAe,OAAO,CAAC,GAAG,EAAE;IAE5B,MAAM,MAAM,GAAG,2BAA2B,CAAC;QACzC,OAAO;QACP,eAAe,EAAE,SAAS;QAC1B,MAAM;QACN,MAAM,EAAE,0BAA0B;QAClC,IAAI;KACL,CAAC,CAAC;IACH,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;AAC9D,CAAC"}
@@ -0,0 +1,22 @@
1
+ import type { GxtErrorCode } from "../gxt-error-codes.js";
2
+ import type { VerifyPhaseFailure } from "../verify-engine.js";
3
+ import type { Manifest } from "../types.js";
4
+ export interface SurgeonMutationResult {
5
+ mutated: boolean;
6
+ summary: string;
7
+ }
8
+ export interface SurgeonContext {
9
+ root: string;
10
+ failure: VerifyPhaseFailure;
11
+ manifest: Manifest;
12
+ workerLogPath: string;
13
+ errorCode: GxtErrorCode;
14
+ }
15
+ export interface CodeSurgeon {
16
+ errorCode: GxtErrorCode;
17
+ applyMutation(context: SurgeonContext): Promise<SurgeonMutationResult>;
18
+ }
19
+ export declare function getSurgeonForErrorCode(code: GxtErrorCode): CodeSurgeon | undefined;
20
+ export declare function hasRegisteredSurgeon(code: GxtErrorCode): boolean;
21
+ export declare function resolveSurgeonErrorCode(failure: VerifyPhaseFailure): GxtErrorCode | null;
22
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../../src/cli/lib/surgeons/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAI1D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAI5C,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,kBAAkB,CAAC;IAC5B,QAAQ,EAAE,QAAQ,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,YAAY,CAAC;CACzB;AAED,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,YAAY,CAAC;IACxB,aAAa,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;CACxE;AAID,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,YAAY,GAAG,WAAW,GAAG,SAAS,CAElF;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAEhE;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,kBAAkB,GAAG,YAAY,GAAG,IAAI,CAaxF"}
@@ -0,0 +1,27 @@
1
+ import { GXT_ERROR } from "../gxt-error-codes.js";
2
+ import { gateOutputIndicatesBannedImport } from "../banned-import-violation.js";
3
+ import { gateOutputIndicatesImportLayer } from "../surgeon.js";
4
+ import { bannedImportSurgeon } from "./banned-import.js";
5
+ import { importLayerSurgeon } from "./import-layer.js";
6
+ const SURGEONS = [importLayerSurgeon, bannedImportSurgeon];
7
+ export function getSurgeonForErrorCode(code) {
8
+ return SURGEONS.find((s) => s.errorCode === code);
9
+ }
10
+ export function hasRegisteredSurgeon(code) {
11
+ return getSurgeonForErrorCode(code) !== undefined;
12
+ }
13
+ export function resolveSurgeonErrorCode(failure) {
14
+ if (failure.phase !== "gate")
15
+ return null;
16
+ const stdout = failure.gateStdout ?? "";
17
+ const stderr = failure.gateStderr ?? "";
18
+ const combined = `${stderr}\n${stdout}`;
19
+ if (gateOutputIndicatesImportLayer(stdout) || gateOutputIndicatesImportLayer(stderr)) {
20
+ return GXT_ERROR.IMPORT_LAYER_VIOLATION;
21
+ }
22
+ if (gateOutputIndicatesBannedImport(combined) || /: banned import "/.test(combined)) {
23
+ return GXT_ERROR.BANNED_IMPORT_DETECTED;
24
+ }
25
+ return null;
26
+ }
27
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../../src/cli/lib/surgeons/registry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,+BAA+B,EAAE,MAAM,+BAA+B,CAAC;AAChF,OAAO,EAAE,8BAA8B,EAAE,MAAM,eAAe,CAAC;AAG/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAoBvD,MAAM,QAAQ,GAAkB,CAAC,kBAAkB,EAAE,mBAAmB,CAAC,CAAC;AAE1E,MAAM,UAAU,sBAAsB,CAAC,IAAkB;IACvD,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,IAAkB;IACrD,OAAO,sBAAsB,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,OAA2B;IACjE,IAAI,OAAO,CAAC,KAAK,KAAK,MAAM;QAAE,OAAO,IAAI,CAAC;IAC1C,MAAM,MAAM,GAAG,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC;IACxC,MAAM,MAAM,GAAG,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC;IACxC,MAAM,QAAQ,GAAG,GAAG,MAAM,KAAK,MAAM,EAAE,CAAC;IAExC,IAAI,8BAA8B,CAAC,MAAM,CAAC,IAAI,8BAA8B,CAAC,MAAM,CAAC,EAAE,CAAC;QACrF,OAAO,SAAS,CAAC,sBAAsB,CAAC;IAC1C,CAAC;IACD,IAAI,+BAA+B,CAAC,QAAQ,CAAC,IAAI,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpF,OAAO,SAAS,CAAC,sBAAsB,CAAC;IAC1C,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,7 @@
1
+ type TsModule = typeof import("typescript");
2
+ /** Resolve TypeScript compiler API from adopter workspace or gapman package (lazy, fail-soft). */
3
+ export declare function getWorkspaceTypeScript(root: string): TsModule | null;
4
+ /** @internal Reset cache between tests. */
5
+ export declare function clearTypeScriptWorkspaceCache(): void;
6
+ export {};
7
+ //# sourceMappingURL=typescript-workspace.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typescript-workspace.d.ts","sourceRoot":"","sources":["../../../../src/cli/lib/surgeons/typescript-workspace.ts"],"names":[],"mappings":"AAIA,KAAK,QAAQ,GAAG,cAAc,YAAY,CAAC,CAAC;AAS5C,kGAAkG;AAClG,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAuBpE;AAED,2CAA2C;AAC3C,wBAAgB,6BAA6B,IAAI,IAAI,CAEpD"}
@@ -0,0 +1,41 @@
1
+ import { createRequire } from "node:module";
2
+ import path from "node:path";
3
+ import { fileURLToPath } from "node:url";
4
+ let cachedTs;
5
+ function gapmanPackageRoot() {
6
+ const here = path.dirname(fileURLToPath(import.meta.url));
7
+ return path.resolve(here, "..", "..", "..", "..");
8
+ }
9
+ /** Resolve TypeScript compiler API from adopter workspace or gapman package (lazy, fail-soft). */
10
+ export function getWorkspaceTypeScript(root) {
11
+ if (cachedTs !== undefined)
12
+ return cachedTs;
13
+ try {
14
+ const require = createRequire(import.meta.url);
15
+ const searchPaths = [root, gapmanPackageRoot()];
16
+ let tsPath;
17
+ for (const base of searchPaths) {
18
+ try {
19
+ tsPath = require.resolve("typescript", { paths: [base] });
20
+ break;
21
+ }
22
+ catch {
23
+ // try next base
24
+ }
25
+ }
26
+ if (!tsPath) {
27
+ cachedTs = null;
28
+ return null;
29
+ }
30
+ cachedTs = require(tsPath);
31
+ }
32
+ catch {
33
+ cachedTs = null;
34
+ }
35
+ return cachedTs;
36
+ }
37
+ /** @internal Reset cache between tests. */
38
+ export function clearTypeScriptWorkspaceCache() {
39
+ cachedTs = undefined;
40
+ }
41
+ //# sourceMappingURL=typescript-workspace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typescript-workspace.js","sourceRoot":"","sources":["../../../../src/cli/lib/surgeons/typescript-workspace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAIzC,IAAI,QAAqC,CAAC;AAE1C,SAAS,iBAAiB;IACxB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1D,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACpD,CAAC;AAED,kGAAkG;AAClG,MAAM,UAAU,sBAAsB,CAAC,IAAY;IACjD,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,QAAQ,CAAC;IAC5C,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC/C,MAAM,WAAW,GAAG,CAAC,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC;QAChD,IAAI,MAA0B,CAAC;QAC/B,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;YAC/B,IAAI,CAAC;gBACH,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC1D,MAAM;YACR,CAAC;YAAC,MAAM,CAAC;gBACP,gBAAgB;YAClB,CAAC;QACH,CAAC;QACD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,QAAQ,GAAG,IAAI,CAAC;YAChB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAa,CAAC;IACzC,CAAC;IAAC,MAAM,CAAC;QACP,QAAQ,GAAG,IAAI,CAAC;IAClB,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,2CAA2C;AAC3C,MAAM,UAAU,6BAA6B;IAC3C,QAAQ,GAAG,SAAS,CAAC;AACvB,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import fs from "node:fs";
2
2
  import path from "node:path";
3
3
  import { fromPosix } from "./cli-io.js";
4
- import { gitRunOk } from "./git-repo.js";
4
+ import { gitRunOk } from "./git.js";
5
5
  export const ENV_TEACHER_EMAILS = "GAPMAN_TEACHER_EMAILS";
6
6
  export const GIT_CONFIG_TEACHER_EMAILS = "gapman.teacherEmails";
7
7
  export const REL_TEACHER_ALLOWLIST = ".gitagent/foreman/TEACHER.allowlist";
@@ -1 +1 @@
1
- {"version":3,"file":"teacher-identity.js","sourceRoot":"","sources":["../../../src/cli/lib/teacher-identity.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"teacher-identity.js","sourceRoot":"","sources":["../../../src/cli/lib/teacher-identity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEpC,MAAM,CAAC,MAAM,kBAAkB,GAAG,uBAAgC,CAAC;AACnE,MAAM,CAAC,MAAM,yBAAyB,GAAG,sBAA+B,CAAC;AAEzE,MAAM,CAAC,MAAM,qBAAqB,GAAG,qCAA8C,CAAC;AACpF,MAAM,CAAC,MAAM,2BAA2B,GAAG,2CAAoD,CAAC;AAiBhG,SAAS,kBAAkB,CAAC,GAAW;IACrC,MAAM,KAAK,GAAG,GAAG;SACd,KAAK,CAAC,QAAQ,CAAC;SACf,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;SACtD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;IAClD,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AAC7B,CAAC;AAED,SAAS,iBAAiB,CAAC,QAAgB,EAAE,OAAe;IAC1D,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;IACpD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IACnC,OAAO,kBAAkB,CAAC,EAAE,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED,SAAS,0BAA0B,CAAC,QAAgB;IAClD,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,yBAAyB,CAAC,CAAC,CAAC;IAC5F,IAAI,KAAK,CAAC,EAAE,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;QACpC,OAAO,kBAAkB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC1C,CAAC;IACD,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,yBAAyB,CAAC,CAAC,CAAC;IAC9F,IAAI,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;QACtC,OAAO,kBAAkB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,gBAAgB,CAAC,QAAgB;IACxC,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC;IAC/E,IAAI,KAAK,CAAC,EAAE,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;QACpC,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC3C,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,6DAA6D;AAC7D,MAAM,UAAU,yBAAyB;IACvC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IAC5C,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE;QAAE,OAAO,EAAE,CAAC;IAC5B,OAAO,kBAAkB,CAAC,GAAG,CAAC,CAAC;AACjC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,QAAgB;IACnD,MAAM,IAAI,GAAG,iBAAiB,CAAC,QAAQ,EAAE,qBAAqB,CAAC,CAAC;IAChE,MAAM,KAAK,GAAG,iBAAiB,CAAC,QAAQ,EAAE,2BAA2B,CAAC,CAAC;IACvE,MAAM,UAAU,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACrD,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QACzD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QAChE,OAAO;YACL,MAAM,EAAE,UAAU;YAClB,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,gBAAgB;YACpF,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;SAC5B,CAAC;IACJ,CAAC;IAED,MAAM,aAAa,GAAG,0BAA0B,CAAC,QAAQ,CAAC,CAAC;IAC3D,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,OAAO;YACL,MAAM,EAAE,aAAa;YACrB,MAAM,EAAE,YAAY;YACpB,MAAM,EAAE,cAAc,yBAAyB,EAAE;SAClD,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,yBAAyB,EAAE,CAAC;IAC5C,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO;YACL,MAAM,EAAE,OAAO;YACf,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,kBAAkB;SAC3B,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAC5C,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO;YACL,MAAM,EAAE,CAAC,QAAQ,CAAC;YAClB,MAAM,EAAE,gBAAgB;YACxB,MAAM,EAAE,iDAAiD;SAC1D,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,gCAAgC,EAAE,CAAC;AACnF,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,MAAgB;IACxD,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACtG,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,QAAgB,EAAE,MAAgB;IAC3E,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,2BAA2B,CAAC,CAAC,CAAC;IACxE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACrD,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,yBAAyB,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;AACnE,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,4BAA4B,CAAC,QAAgB;IAC3D,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,2BAA2B,CAAC,CAAC,CAAC;IACxE,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IACrC,MAAM,IAAI,GAAG,iBAAiB,CAAC,QAAQ,EAAE,qBAAqB,CAAC,CAAC;IAChE,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IAClC,MAAM,QAAQ,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAC5C,IAAI,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5B,0BAA0B,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IACjD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,SAAiB;IACxD,OAAO;QACL,sCAAsC,2BAA2B,EAAE;QACnE,gEAAgE;QAChE,mDAAmD;QACnD,SAAS,kBAAkB,gDAAgD;KAC5E,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACtB,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { Manifest } from "./types.js";
2
+ /** Governance transport files — never TMVC drift violations during pre-commit scans. */
3
+ export declare const GOVERNANCE_TRANSPORT_PATHS: readonly ["WORKER_LOG.md", ".gitagent/missions/.active-mission"];
4
+ export type TmvcPathClassification = "governance_transport" | "inside_tmvc" | "outside_tmvc" | "forbidden_zone";
5
+ export declare function normalizeRepoRelativePath(repoRel: string): string;
6
+ export declare function isGovernanceTransportPath(repoRel: string): boolean;
7
+ export declare function tmvcRootsForSkill(manifest: Manifest, skillKey: string | null): string[];
8
+ export declare function forbiddenZonesForSkill(manifest: Manifest, skillKey: string | null): string[];
9
+ /** True when `repoRel` is exactly `root` or nested under `root/` (POSIX semantics). */
10
+ export declare function isPathUnderRoot(repoRel: string, root: string): boolean;
11
+ export declare function classifyRepoRelativePath(repoRel: string, tmvcRoots: readonly string[], forbiddenZones: readonly string[]): TmvcPathClassification;
12
+ //# sourceMappingURL=tmvc-path.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tmvc-path.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/tmvc-path.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,wFAAwF;AACxF,eAAO,MAAM,0BAA0B,kEAG7B,CAAC;AAEX,MAAM,MAAM,sBAAsB,GAC9B,sBAAsB,GACtB,aAAa,GACb,cAAc,GACd,gBAAgB,CAAC;AAErB,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEjE;AAED,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAGlE;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,EAAE,CAIvF;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,EAAE,CAI5F;AAED,uFAAuF;AACvF,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAKtE;AAED,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,SAAS,MAAM,EAAE,EAC5B,cAAc,EAAE,SAAS,MAAM,EAAE,GAChC,sBAAsB,CAWxB"}
@@ -0,0 +1,47 @@
1
+ /** Governance transport files — never TMVC drift violations during pre-commit scans. */
2
+ export const GOVERNANCE_TRANSPORT_PATHS = [
3
+ "WORKER_LOG.md",
4
+ ".gitagent/missions/.active-mission",
5
+ ];
6
+ export function normalizeRepoRelativePath(repoRel) {
7
+ return repoRel.replace(/\\/g, "/").replace(/^\.\//, "");
8
+ }
9
+ export function isGovernanceTransportPath(repoRel) {
10
+ const norm = normalizeRepoRelativePath(repoRel);
11
+ return GOVERNANCE_TRANSPORT_PATHS.includes(norm);
12
+ }
13
+ export function tmvcRootsForSkill(manifest, skillKey) {
14
+ if (!skillKey?.trim())
15
+ return [];
16
+ const skill = manifest.skills[skillKey];
17
+ return skill ? [...skill.tmvc_roots] : [];
18
+ }
19
+ export function forbiddenZonesForSkill(manifest, skillKey) {
20
+ if (!skillKey?.trim())
21
+ return [];
22
+ const skill = manifest.skills[skillKey];
23
+ return skill ? [...skill.forbidden_zones] : [];
24
+ }
25
+ /** True when `repoRel` is exactly `root` or nested under `root/` (POSIX semantics). */
26
+ export function isPathUnderRoot(repoRel, root) {
27
+ const normPath = normalizeRepoRelativePath(repoRel);
28
+ const normRoot = normalizeRepoRelativePath(root).replace(/\/$/, "");
29
+ if (normPath === normRoot)
30
+ return true;
31
+ return normPath.startsWith(`${normRoot}/`);
32
+ }
33
+ export function classifyRepoRelativePath(repoRel, tmvcRoots, forbiddenZones) {
34
+ const norm = normalizeRepoRelativePath(repoRel);
35
+ if (isGovernanceTransportPath(norm))
36
+ return "governance_transport";
37
+ for (const fz of forbiddenZones) {
38
+ if (isPathUnderRoot(norm, fz))
39
+ return "forbidden_zone";
40
+ }
41
+ for (const root of tmvcRoots) {
42
+ if (isPathUnderRoot(norm, root))
43
+ return "inside_tmvc";
44
+ }
45
+ return "outside_tmvc";
46
+ }
47
+ //# sourceMappingURL=tmvc-path.js.map