@jeger-ai/opengantry 2.3.0 → 2.4.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 (261) hide show
  1. package/README.md +61 -59
  2. package/dist/cli/commands/arch.d.ts +9 -0
  3. package/dist/cli/commands/arch.d.ts.map +1 -1
  4. package/dist/cli/commands/arch.js +65 -0
  5. package/dist/cli/commands/arch.js.map +1 -1
  6. package/dist/cli/commands/context-request.d.ts +2 -2
  7. package/dist/cli/commands/context-request.d.ts.map +1 -1
  8. package/dist/cli/commands/context-request.js +13 -13
  9. package/dist/cli/commands/context-request.js.map +1 -1
  10. package/dist/cli/commands/init.js +2 -2
  11. package/dist/cli/commands/onboarding.js +4 -4
  12. package/dist/cli/commands/onboarding.js.map +1 -1
  13. package/dist/cli/commands/planner.d.ts +11 -0
  14. package/dist/cli/commands/{teacher.d.ts.map → planner.d.ts.map} +1 -1
  15. package/dist/cli/commands/{teacher.js → planner.js} +11 -11
  16. package/dist/cli/commands/{teacher.js.map → planner.js.map} +1 -1
  17. package/dist/cli/commands/runtime.d.ts +1 -1
  18. package/dist/cli/commands/runtime.d.ts.map +1 -1
  19. package/dist/cli/commands/runtime.js +4 -4
  20. package/dist/cli/commands/runtime.js.map +1 -1
  21. package/dist/cli/lib/arch-override.d.ts +4 -0
  22. package/dist/cli/lib/arch-override.d.ts.map +1 -0
  23. package/dist/cli/lib/arch-override.js +8 -0
  24. package/dist/cli/lib/arch-override.js.map +1 -0
  25. package/dist/cli/lib/architecture-fetch.d.ts +24 -0
  26. package/dist/cli/lib/architecture-fetch.d.ts.map +1 -0
  27. package/dist/cli/lib/architecture-fetch.js +88 -0
  28. package/dist/cli/lib/architecture-fetch.js.map +1 -0
  29. package/dist/cli/lib/audience-output.d.ts +1 -1
  30. package/dist/cli/lib/audience-output.d.ts.map +1 -1
  31. package/dist/cli/lib/audience-output.js +16 -16
  32. package/dist/cli/lib/audience-output.js.map +1 -1
  33. package/dist/cli/lib/break-glass.js +1 -1
  34. package/dist/cli/lib/command-reporter.d.ts +1 -0
  35. package/dist/cli/lib/command-reporter.d.ts.map +1 -1
  36. package/dist/cli/lib/command-reporter.js +10 -5
  37. package/dist/cli/lib/command-reporter.js.map +1 -1
  38. package/dist/cli/lib/config-namespace.d.ts +2 -2
  39. package/dist/cli/lib/config-namespace.js +2 -2
  40. package/dist/cli/lib/constants.d.ts +8 -8
  41. package/dist/cli/lib/constants.d.ts.map +1 -1
  42. package/dist/cli/lib/constants.js +8 -8
  43. package/dist/cli/lib/constants.js.map +1 -1
  44. package/dist/cli/lib/context-request.d.ts +4 -4
  45. package/dist/cli/lib/context-request.d.ts.map +1 -1
  46. package/dist/cli/lib/context-request.js +11 -11
  47. package/dist/cli/lib/context-request.js.map +1 -1
  48. package/dist/cli/lib/doctor-core.d.ts.map +1 -1
  49. package/dist/cli/lib/doctor-core.js +49 -22
  50. package/dist/cli/lib/doctor-core.js.map +1 -1
  51. package/dist/cli/lib/doctor-types.d.ts +2 -2
  52. package/dist/cli/lib/errors.js +6 -6
  53. package/dist/cli/lib/errors.js.map +1 -1
  54. package/dist/cli/lib/executor-log-integrity.d.ts +4 -0
  55. package/dist/cli/lib/executor-log-integrity.d.ts.map +1 -0
  56. package/dist/cli/lib/{worker-log-integrity.js → executor-log-integrity.js} +8 -8
  57. package/dist/cli/lib/executor-log-integrity.js.map +1 -0
  58. package/dist/cli/lib/{worker-log-line-map.d.ts → executor-log-line-map.d.ts} +4 -4
  59. package/dist/cli/lib/executor-log-line-map.d.ts.map +1 -0
  60. package/dist/cli/lib/{worker-log-line-map.js → executor-log-line-map.js} +4 -4
  61. package/dist/cli/lib/executor-log-line-map.js.map +1 -0
  62. package/dist/cli/lib/file-merge-gxt.js +1 -1
  63. package/dist/cli/lib/file-merge-gxt.js.map +1 -1
  64. package/dist/cli/lib/fix-hints.d.ts +6 -6
  65. package/dist/cli/lib/fix-hints.d.ts.map +1 -1
  66. package/dist/cli/lib/fix-hints.js +36 -30
  67. package/dist/cli/lib/fix-hints.js.map +1 -1
  68. package/dist/cli/lib/git-metrics.js +10 -10
  69. package/dist/cli/lib/git-metrics.js.map +1 -1
  70. package/dist/cli/lib/git-proof.d.ts +7 -5
  71. package/dist/cli/lib/git-proof.d.ts.map +1 -1
  72. package/dist/cli/lib/git-proof.js +48 -19
  73. package/dist/cli/lib/git-proof.js.map +1 -1
  74. package/dist/cli/lib/gxt-config.d.ts +9 -0
  75. package/dist/cli/lib/gxt-config.d.ts.map +1 -0
  76. package/dist/cli/lib/gxt-config.js +20 -0
  77. package/dist/cli/lib/gxt-config.js.map +1 -0
  78. package/dist/cli/lib/gxt-error-codes.d.ts +3 -0
  79. package/dist/cli/lib/gxt-error-codes.d.ts.map +1 -1
  80. package/dist/cli/lib/gxt-error-codes.js +8 -3
  81. package/dist/cli/lib/gxt-error-codes.js.map +1 -1
  82. package/dist/cli/lib/init-compose.js +1 -1
  83. package/dist/cli/lib/init-interactive.js +1 -1
  84. package/dist/cli/lib/init-interactive.js.map +1 -1
  85. package/dist/cli/lib/init-tutorial.js +14 -14
  86. package/dist/cli/lib/init-tutorial.js.map +1 -1
  87. package/dist/cli/lib/kpi-engine.d.ts +1 -1
  88. package/dist/cli/lib/kpi-engine.d.ts.map +1 -1
  89. package/dist/cli/lib/kpi-engine.js +17 -11
  90. package/dist/cli/lib/kpi-engine.js.map +1 -1
  91. package/dist/cli/lib/legislate-forbidden-zone.d.ts +1 -1
  92. package/dist/cli/lib/legislate-forbidden-zone.js +1 -1
  93. package/dist/cli/lib/legislate.js +4 -4
  94. package/dist/cli/lib/mcp-governance.d.ts +2 -2
  95. package/dist/cli/lib/mcp-governance.d.ts.map +1 -1
  96. package/dist/cli/lib/mcp-governance.js +40 -10
  97. package/dist/cli/lib/mcp-governance.js.map +1 -1
  98. package/dist/cli/lib/mcp-tools-register.js +3 -3
  99. package/dist/cli/lib/mcp-tools-register.js.map +1 -1
  100. package/dist/cli/lib/mcp-upgrade.d.ts.map +1 -1
  101. package/dist/cli/lib/mcp-upgrade.js +8 -0
  102. package/dist/cli/lib/mcp-upgrade.js.map +1 -1
  103. package/dist/cli/lib/mcp-write-guard.d.ts +20 -0
  104. package/dist/cli/lib/mcp-write-guard.d.ts.map +1 -0
  105. package/dist/cli/lib/mcp-write-guard.js +82 -0
  106. package/dist/cli/lib/mcp-write-guard.js.map +1 -0
  107. package/dist/cli/lib/missions/formatter.d.ts +1 -1
  108. package/dist/cli/lib/missions/formatter.js +1 -1
  109. package/dist/cli/lib/onboarding-flow.js +1 -1
  110. package/dist/cli/lib/out-of-scope-hint.js +1 -1
  111. package/dist/cli/lib/perimeter.d.ts +1 -1
  112. package/dist/cli/lib/perimeter.js +10 -10
  113. package/dist/cli/lib/planner-identity.d.ts +23 -0
  114. package/dist/cli/lib/{teacher-identity.d.ts.map → planner-identity.d.ts.map} +1 -1
  115. package/dist/cli/lib/{teacher-identity.js → planner-identity.js} +34 -34
  116. package/dist/cli/lib/{teacher-identity.js.map → planner-identity.js.map} +1 -1
  117. package/dist/cli/lib/planner-signature.d.ts +11 -0
  118. package/dist/cli/lib/planner-signature.d.ts.map +1 -0
  119. package/dist/cli/lib/planner-signature.js +17 -0
  120. package/dist/cli/lib/planner-signature.js.map +1 -0
  121. package/dist/cli/lib/program-audience-hook.js +1 -1
  122. package/dist/cli/lib/program-audience-hook.js.map +1 -1
  123. package/dist/cli/lib/register-proposals.js +1 -1
  124. package/dist/cli/lib/runtime-env.d.ts +3 -3
  125. package/dist/cli/lib/runtime-env.d.ts.map +1 -1
  126. package/dist/cli/lib/runtime-env.js +4 -4
  127. package/dist/cli/lib/runtime-env.js.map +1 -1
  128. package/dist/cli/lib/runtime-exec.d.ts +4 -4
  129. package/dist/cli/lib/runtime-exec.d.ts.map +1 -1
  130. package/dist/cli/lib/runtime-exec.js +14 -14
  131. package/dist/cli/lib/runtime-exec.js.map +1 -1
  132. package/dist/cli/lib/staged-tmvc-guard.js +1 -1
  133. package/dist/cli/lib/staged-tmvc-guard.js.map +1 -1
  134. package/dist/cli/lib/start-orchestration.js +7 -7
  135. package/dist/cli/lib/start-orchestration.js.map +1 -1
  136. package/dist/cli/lib/status-report.d.ts +1 -1
  137. package/dist/cli/lib/status-report.js +7 -7
  138. package/dist/cli/lib/status-report.js.map +1 -1
  139. package/dist/cli/lib/surgeon.d.ts +3 -3
  140. package/dist/cli/lib/surgeon.d.ts.map +1 -1
  141. package/dist/cli/lib/surgeon.js +7 -7
  142. package/dist/cli/lib/surgeon.js.map +1 -1
  143. package/dist/cli/lib/surgeons/registry.d.ts +1 -1
  144. package/dist/cli/lib/surgeons/registry.d.ts.map +1 -1
  145. package/dist/cli/lib/target-architecture.d.ts +37 -0
  146. package/dist/cli/lib/target-architecture.d.ts.map +1 -0
  147. package/dist/cli/lib/target-architecture.js +155 -0
  148. package/dist/cli/lib/target-architecture.js.map +1 -0
  149. package/dist/cli/lib/telemetry-log.d.ts +1 -1
  150. package/dist/cli/lib/telemetry-log.d.ts.map +1 -1
  151. package/dist/cli/lib/telemetry-log.js +4 -4
  152. package/dist/cli/lib/telemetry-log.js.map +1 -1
  153. package/dist/cli/lib/tmvc-path.d.ts +1 -1
  154. package/dist/cli/lib/tmvc-path.d.ts.map +1 -1
  155. package/dist/cli/lib/tmvc-path.js +1 -1
  156. package/dist/cli/lib/tmvc-path.js.map +1 -1
  157. package/dist/cli/lib/trace.d.ts +8 -8
  158. package/dist/cli/lib/trace.d.ts.map +1 -1
  159. package/dist/cli/lib/trace.js +21 -21
  160. package/dist/cli/lib/trace.js.map +1 -1
  161. package/dist/cli/lib/triage-logic.js +1 -1
  162. package/dist/cli/lib/types.d.ts +2 -1
  163. package/dist/cli/lib/types.d.ts.map +1 -1
  164. package/dist/cli/lib/upgrade-apply.d.ts.map +1 -1
  165. package/dist/cli/lib/upgrade-apply.js +14 -2
  166. package/dist/cli/lib/upgrade-apply.js.map +1 -1
  167. package/dist/cli/lib/upgrade-plan.js +3 -3
  168. package/dist/cli/lib/verify-engine.d.ts +11 -5
  169. package/dist/cli/lib/verify-engine.d.ts.map +1 -1
  170. package/dist/cli/lib/verify-engine.js +47 -30
  171. package/dist/cli/lib/verify-engine.js.map +1 -1
  172. package/dist/cli/lib/verify-export.d.ts +6 -0
  173. package/dist/cli/lib/verify-export.d.ts.map +1 -0
  174. package/dist/cli/lib/verify-export.js +106 -0
  175. package/dist/cli/lib/verify-export.js.map +1 -0
  176. package/dist/cli/lib/verify-failure-normalize-phases.js +1 -1
  177. package/dist/cli/lib/verify-failure-normalize-phases.js.map +1 -1
  178. package/dist/cli/lib/verify-hints.d.ts +1 -1
  179. package/dist/cli/lib/verify-hints.d.ts.map +1 -1
  180. package/dist/cli/lib/verify-hints.js +16 -16
  181. package/dist/cli/lib/verify-hints.js.map +1 -1
  182. package/dist/cli/lib/verify-payload-types.d.ts +1 -0
  183. package/dist/cli/lib/verify-payload-types.d.ts.map +1 -1
  184. package/dist/cli/lib/verify-payload.d.ts.map +1 -1
  185. package/dist/cli/lib/verify-payload.js +3 -0
  186. package/dist/cli/lib/verify-payload.js.map +1 -1
  187. package/dist/cli/lib/verify-presenters.d.ts.map +1 -1
  188. package/dist/cli/lib/verify-presenters.js +12 -6
  189. package/dist/cli/lib/verify-presenters.js.map +1 -1
  190. package/dist/cli/lib/verify-sinks.d.ts.map +1 -1
  191. package/dist/cli/lib/verify-sinks.js +3 -2
  192. package/dist/cli/lib/verify-sinks.js.map +1 -1
  193. package/dist/cli/lib/version.gen.d.ts +1 -1
  194. package/dist/cli/lib/version.gen.js +1 -1
  195. package/dist/cli/program-arch.d.ts.map +1 -1
  196. package/dist/cli/program-arch.js +16 -1
  197. package/dist/cli/program-arch.js.map +1 -1
  198. package/dist/cli/program-core.js +4 -4
  199. package/dist/cli/program-core.js.map +1 -1
  200. package/dist/cli/program-mission.js +15 -15
  201. package/dist/cli/program-mission.js.map +1 -1
  202. package/dist/cli/program-planner.d.ts +3 -0
  203. package/dist/cli/program-planner.d.ts.map +1 -0
  204. package/dist/cli/program-planner.js +19 -0
  205. package/dist/cli/{program-teacher.js.map → program-planner.js.map} +1 -1
  206. package/dist/cli/program-workflow.d.ts.map +1 -1
  207. package/dist/cli/program-workflow.js +19 -8
  208. package/dist/cli/program-workflow.js.map +1 -1
  209. package/dist/cli/program.js +3 -3
  210. package/dist/cli/program.js.map +1 -1
  211. package/package.json +1 -1
  212. package/templates/.cursor/hooks/gxt-before-shell.sh +4 -4
  213. package/templates/.cursor/hooks/gxt-session-start.sh +2 -2
  214. package/templates/.cursor/rules/opengantry-gxt-substrate.mdc +4 -4
  215. package/templates/.gitagent/ARCHITECTURE.pointer.json +2 -2
  216. package/templates/.gitagent/foreman/MANIFEST.json +3 -3
  217. package/templates/.gitagent/foreman/PLANNER.allowlist.example +4 -0
  218. package/templates/.gitagent/missions/README.md +1 -1
  219. package/templates/.gitagent/{teacher → planner}/ARCHITECTURE-ACCESS.md +3 -3
  220. package/templates/.gitagent/{teacher → planner}/ARCHITECTURE-DISCOVERY.md +2 -2
  221. package/templates/.gitagent/planner/ARCHITECTURE_RUBRIC.template.md +25 -0
  222. package/templates/.gitagent/{teacher/WORKER_LOG.template.md → planner/EXECUTOR_LOG.template.md} +2 -2
  223. package/templates/.gitagent/{teacher → planner}/MISSION-ARCHITECT.md +11 -11
  224. package/templates/.gitagent/{teacher → planner}/RULES.md +4 -4
  225. package/templates/.githooks/post-checkout +4 -4
  226. package/templates/.githooks/pre-push +1 -1
  227. package/templates/.github/workflows/gxt-validate.yml +1 -1
  228. package/templates/.gitignore.gxt +1 -1
  229. package/templates/.prettierignore.gxt +1 -1
  230. package/templates/AGENTS.md +6 -6
  231. package/templates/docs/ARCHITECTURE.md +2 -2
  232. package/templates/integrations/aider/.aider.conf.yml +1 -1
  233. package/templates/integrations/antigravity/.agent/rules/gxt.md +1 -1
  234. package/templates/integrations/asset-catalog.json +7 -7
  235. package/templates/integrations/claude-code/CLAUDE.md +1 -1
  236. package/templates/integrations/cline/.clinerules/gxt.md +1 -1
  237. package/templates/integrations/compatibility.json +1 -1
  238. package/templates/integrations/junie/.junie/guidelines.md +1 -1
  239. package/templates/integrations/opencode/opencode.json +1 -1
  240. package/templates/integrations/openhands/.openhands/microagents/gxt.md +1 -1
  241. package/templates/integrations/recipes/_footer.md +7 -7
  242. package/templates/integrations/recipes/_preamble.md +7 -7
  243. package/templates/integrations/recipes/claude-code.md +1 -1
  244. package/templates/integrations/recipes/cursor.md +2 -2
  245. package/templates/scripts/gxt-manifest-lib.mjs +1 -1
  246. package/templates/scripts/gxt-runtime-env.sh +1 -1
  247. package/templates/skills/gantry.md +1 -1
  248. package/templates/skills/substrate.md +1 -1
  249. package/dist/cli/commands/teacher.d.ts +0 -11
  250. package/dist/cli/lib/teacher-identity.d.ts +0 -23
  251. package/dist/cli/lib/worker-log-integrity.d.ts +0 -4
  252. package/dist/cli/lib/worker-log-integrity.d.ts.map +0 -1
  253. package/dist/cli/lib/worker-log-integrity.js.map +0 -1
  254. package/dist/cli/lib/worker-log-line-map.d.ts.map +0 -1
  255. package/dist/cli/lib/worker-log-line-map.js.map +0 -1
  256. package/dist/cli/program-teacher.d.ts +0 -3
  257. package/dist/cli/program-teacher.d.ts.map +0 -1
  258. package/dist/cli/program-teacher.js +0 -19
  259. package/templates/.gitagent/foreman/TEACHER.allowlist.example +0 -4
  260. /package/templates/.gitagent/{teacher → planner}/KPI-REPORT.schema.yaml +0 -0
  261. /package/templates/.gitagent/{teacher → planner}/MISSION.schema.yaml +0 -0
@@ -1,10 +1,18 @@
1
1
  import { errorMessage } from "./cli-io.js";
2
2
  import { getRepoRoot } from "./git.js";
3
+ import { GXT_ERROR } from "./gxt-error-codes.js";
4
+ import { McpWriteDeniedError } from "./mcp-write-guard.js";
3
5
  import { assertStableUpgradePlanPayloadV1, toStableUpgradePlanPayloadV1, } from "./upgrade-plan-payload.js";
4
6
  import { runUpgradeApply } from "./upgrade-apply.js";
5
7
  import { runUpgradePlan } from "./upgrade-plan.js";
6
8
  import { GapmanUserError } from "./errors.js";
7
9
  function mcpErrorBody(e) {
10
+ if (e instanceof McpWriteDeniedError) {
11
+ return {
12
+ status: "error",
13
+ error: { code: GXT_ERROR.MCP_WRITE_DENIED, message: e.message, retryable: false },
14
+ };
15
+ }
8
16
  if (e instanceof GapmanUserError) {
9
17
  return {
10
18
  status: "error",
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-upgrade.js","sourceRoot":"","sources":["../../../src/cli/lib/mcp-upgrade.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAGvC,OAAO,EACL,gCAAgC,EAChC,4BAA4B,GAE7B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAa9C,SAAS,YAAY,CAAC,CAAU;IAC9B,IAAI,CAAC,YAAY,eAAe,EAAE,CAAC;QACjC,OAAO;YACL,MAAM,EAAE,OAAO;YACf,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE;SAC9D,CAAC;IACJ,CAAC;IACD,OAAO;QACL,MAAM,EAAE,OAAO;QACf,KAAK,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE;KAC7E,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,QAA6B,EAAE;IAC/D,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,cAAc,CAAC;YAC5B,QAAQ;YACR,GAAG,EAAE,KAAK,CAAC,MAAM;YACjB,MAAM,EAAE,KAAK,CAAC,OAAO,KAAK,IAAI;YAC9B,IAAI,EAAE,IAAI;SACX,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,4BAA4B,CAAC,MAAM,CAAC,CAAC;QACrD,gCAAgC,CAAC,OAAO,CAAC,CAAC;QAC1C,OAAO,OAAO,CAAC;IACjB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC;IACzB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,eAAwB;IAC/D,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,IAAI,CAAC;QACH,OAAO,MAAM,eAAe,CAAC;YAC3B,QAAQ;YACR,OAAO,EAAE,eAAe;YACxB,IAAI,EAAE,IAAI;SACX,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC;IACzB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"mcp-upgrade.js","sourceRoot":"","sources":["../../../src/cli/lib/mcp-upgrade.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAE3D,OAAO,EACL,gCAAgC,EAChC,4BAA4B,GAE7B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAa9C,SAAS,YAAY,CAAC,CAAU;IAC9B,IAAI,CAAC,YAAY,mBAAmB,EAAE,CAAC;QACrC,OAAO;YACL,MAAM,EAAE,OAAO;YACf,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,CAAC,gBAAgB,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE;SAClF,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,YAAY,eAAe,EAAE,CAAC;QACjC,OAAO;YACL,MAAM,EAAE,OAAO;YACf,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE;SAC9D,CAAC;IACJ,CAAC;IACD,OAAO;QACL,MAAM,EAAE,OAAO;QACf,KAAK,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE;KAC7E,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,QAA6B,EAAE;IAC/D,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,cAAc,CAAC;YAC5B,QAAQ;YACR,GAAG,EAAE,KAAK,CAAC,MAAM;YACjB,MAAM,EAAE,KAAK,CAAC,OAAO,KAAK,IAAI;YAC9B,IAAI,EAAE,IAAI;SACX,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,4BAA4B,CAAC,MAAM,CAAC,CAAC;QACrD,gCAAgC,CAAC,OAAO,CAAC,CAAC;QAC1C,OAAO,OAAO,CAAC;IACjB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC;IACzB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,eAAwB;IAC/D,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,IAAI,CAAC;QACH,OAAO,MAAM,eAAe,CAAC;YAC3B,QAAQ;YACR,OAAO,EAAE,eAAe;YACxB,IAAI,EAAE,IAAI;SACX,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC;IACzB,CAAC;AACH,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { GapmanUserError } from "./errors.js";
2
+ import type { Manifest } from "./types.js";
3
+ export declare const MCP_WRITE_DENIED: "MCP_WRITE_DENIED";
4
+ export declare class McpWriteDeniedError extends GapmanUserError {
5
+ readonly repoRelPath: string;
6
+ constructor(repoRelPath: string, reason: string);
7
+ }
8
+ /** Mission file writes via MCP must stay under `.gitagent/missions/`. */
9
+ export declare function assertMcpMissionWritePath(repoRelPath: string): void;
10
+ /**
11
+ * Validate a repo-relative write target for a skill-scoped MCP mutation.
12
+ * Governance transport paths (EXECUTOR_LOG, active-mission pin) are always allowed.
13
+ */
14
+ export declare function assertMcpSkillWritePath(manifest: Manifest, skillKey: string, repoRelPath: string): void;
15
+ /**
16
+ * Tier-3 substrate upgrade: each `planned_writes` entry is Planner-authorized via signed mission.
17
+ * Deny forbidden-zone targets not explicitly listed in `planned_writes`.
18
+ */
19
+ export declare function assertMcpSubstrateUpgradeWritePaths(manifest: Manifest, plannedWrites: readonly string[]): void;
20
+ //# sourceMappingURL=mcp-write-guard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-write-guard.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/mcp-write-guard.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAG3C,eAAO,MAAM,gBAAgB,EAAG,kBAA2B,CAAC;AAE5D,qBAAa,mBAAoB,SAAQ,eAAe;IACtD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;gBAEjB,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAKhD;AASD,yEAAyE;AACzE,wBAAgB,yBAAyB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CASnE;AAoBD;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,GAClB,IAAI,CAiBN;AAED;;;GAGG;AACH,wBAAgB,mCAAmC,CACjD,QAAQ,EAAE,QAAQ,EAClB,aAAa,EAAE,SAAS,MAAM,EAAE,GAC/B,IAAI,CAYN"}
@@ -0,0 +1,82 @@
1
+ import { REL_MISSIONS_PREFIX } from "./git-proof.js";
2
+ import { classifyRepoRelativePath, forbiddenZonesForSkill, isGovernanceTransportPath, isPathUnderRoot, normalizeRepoRelativePath, tmvcRootsForSkill, } from "./tmvc-path.js";
3
+ import { GapmanUserError } from "./errors.js";
4
+ import { resolveManifestSkillKey } from "./skill-key.js";
5
+ export const MCP_WRITE_DENIED = "MCP_WRITE_DENIED";
6
+ export class McpWriteDeniedError extends GapmanUserError {
7
+ repoRelPath;
8
+ constructor(repoRelPath, reason) {
9
+ const norm = normalizeRepoRelativePath(repoRelPath);
10
+ super(MCP_WRITE_DENIED, `MCP write denied: ${reason} (${norm})`);
11
+ this.repoRelPath = norm;
12
+ }
13
+ }
14
+ function assertNoPathTraversal(repoRel) {
15
+ const norm = normalizeRepoRelativePath(repoRel);
16
+ if (norm.includes("..") || norm.startsWith("/")) {
17
+ throw new McpWriteDeniedError(norm, "path must be repo-relative without traversal");
18
+ }
19
+ }
20
+ /** Mission file writes via MCP must stay under `.gitagent/missions/`. */
21
+ export function assertMcpMissionWritePath(repoRelPath) {
22
+ assertNoPathTraversal(repoRelPath);
23
+ const norm = normalizeRepoRelativePath(repoRelPath);
24
+ if (!norm.startsWith(REL_MISSIONS_PREFIX)) {
25
+ throw new McpWriteDeniedError(norm, `mission writes must stay under ${REL_MISSIONS_PREFIX}`);
26
+ }
27
+ }
28
+ function allManifestForbiddenZones(manifest) {
29
+ const zones = new Set();
30
+ for (const skill of Object.values(manifest.skills)) {
31
+ for (const fz of skill.forbidden_zones ?? []) {
32
+ zones.add(fz);
33
+ }
34
+ }
35
+ return [...zones];
36
+ }
37
+ function pathHitsForbiddenZone(repoRel, forbiddenZones) {
38
+ const norm = normalizeRepoRelativePath(repoRel);
39
+ for (const fz of forbiddenZones) {
40
+ if (isPathUnderRoot(norm, fz))
41
+ return fz;
42
+ }
43
+ return null;
44
+ }
45
+ /**
46
+ * Validate a repo-relative write target for a skill-scoped MCP mutation.
47
+ * Governance transport paths (EXECUTOR_LOG, active-mission pin) are always allowed.
48
+ */
49
+ export function assertMcpSkillWritePath(manifest, skillKey, repoRelPath) {
50
+ assertNoPathTraversal(repoRelPath);
51
+ const norm = normalizeRepoRelativePath(repoRelPath);
52
+ if (isGovernanceTransportPath(norm))
53
+ return;
54
+ const resolvedSkill = resolveManifestSkillKey(manifest, skillKey);
55
+ const forbidden = forbiddenZonesForSkill(manifest, resolvedSkill);
56
+ const hit = pathHitsForbiddenZone(norm, forbidden);
57
+ if (hit) {
58
+ throw new McpWriteDeniedError(norm, `path in forbidden zone ${hit}`);
59
+ }
60
+ const tmvc = tmvcRootsForSkill(manifest, resolvedSkill);
61
+ const classification = classifyRepoRelativePath(norm, tmvc, forbidden);
62
+ if (classification === "inside_tmvc" || classification === "governance_transport")
63
+ return;
64
+ throw new McpWriteDeniedError(norm, `path outside TMVC roots for skill ${resolvedSkill}`);
65
+ }
66
+ /**
67
+ * Tier-3 substrate upgrade: each `planned_writes` entry is Planner-authorized via signed mission.
68
+ * Deny forbidden-zone targets not explicitly listed in `planned_writes`.
69
+ */
70
+ export function assertMcpSubstrateUpgradeWritePaths(manifest, plannedWrites) {
71
+ const authorized = new Set(plannedWrites.map((p) => normalizeRepoRelativePath(p)));
72
+ const allForbidden = allManifestForbiddenZones(manifest);
73
+ for (const relPath of plannedWrites) {
74
+ assertNoPathTraversal(relPath);
75
+ const norm = normalizeRepoRelativePath(relPath);
76
+ const hit = pathHitsForbiddenZone(norm, allForbidden);
77
+ if (hit && !authorized.has(norm)) {
78
+ throw new McpWriteDeniedError(norm, `forbidden zone ${hit} not authorized by upgrade mission`);
79
+ }
80
+ }
81
+ }
82
+ //# sourceMappingURL=mcp-write-guard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-write-guard.js","sourceRoot":"","sources":["../../../src/cli/lib/mcp-write-guard.ts"],"names":[],"mappings":"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"}
@@ -10,7 +10,7 @@ export interface EmitMissionOptions {
10
10
  }
11
11
  export declare function emitActiveMissionFromTemplate(repoRoot: string, options: EmitMissionOptions): string;
12
12
  /**
13
- * True when the mission file represents Teacher legislation only — no worker
13
+ * True when the mission file represents Planner legislation only — no worker
14
14
  * execution evidence claimed yet. Pre-push may pass after git-proof alone.
15
15
  */
16
16
  export declare function isLegislativeStub(mission: ParsedMission): boolean;
@@ -118,7 +118,7 @@ function isPlaceholderQuote(quote) {
118
118
  return quote.trim() === LEGISLATE_TRACE_PLACEHOLDER;
119
119
  }
120
120
  /**
121
- * True when the mission file represents Teacher legislation only — no worker
121
+ * True when the mission file represents Planner legislation only — no worker
122
122
  * execution evidence claimed yet. Pre-push may pass after git-proof alone.
123
123
  */
124
124
  export function isLegislativeStub(mission) {
@@ -7,7 +7,7 @@ export function tutorialTeacherStampBlock(missionPath, msnId) {
7
7
  return [
8
8
  `git add ${missionPath}`,
9
9
  `git commit -m "[${msnId}] legislate mission"`,
10
- "gantry teacher set \"$(git config user.email)\" # if not already configured",
10
+ "gantry planner set \"$(git config user.email)\" # if not already configured",
11
11
  ].join("\n ");
12
12
  }
13
13
  export function onboardingRuntimeEnvHint(missionPath) {
@@ -71,7 +71,7 @@ export function collectOutOfScopeAdrHints(root, intentNorm) {
71
71
  hints.push({
72
72
  id: meta.id,
73
73
  title: meta.title,
74
- note: `Intent may relate to ADR ${meta.id} (match_terms overlap); Teacher must confirm or reject during legislation.`,
74
+ note: `Intent may relate to ADR ${meta.id} (match_terms overlap); Planner must confirm or reject during legislation.`,
75
75
  });
76
76
  }
77
77
  return hints;
@@ -1,5 +1,5 @@
1
1
  import type { Manifest } from "./types.js";
2
- export declare const DEFAULT_PERIMETER_PROTECTED: readonly ["**/.gxt-skill.yaml", ".gitagent/foreman/MANIFEST.json", ".gitagent/teacher/RULES.md"];
2
+ export declare const DEFAULT_PERIMETER_PROTECTED: readonly ["**/.gxt-skill.yaml", ".gitagent/foreman/MANIFEST.json", ".gitagent/planner/RULES.md"];
3
3
  export interface PerimeterViolation {
4
4
  path: string;
5
5
  commit: string;
@@ -3,11 +3,11 @@ import { GXT_ERROR } from "./gxt-error-codes.js";
3
3
  import { toPosixRel } from "./cli-io.js";
4
4
  import { gitRevParse, gitRun, gitRunOk } from "./git.js";
5
5
  import { commitSubjectHasMsnPrefix, listCommitChangedPaths, listMsnSubjectCommits, } from "./git-proof.js";
6
- import { resolveTeacherEmails } from "./teacher-identity.js";
6
+ import { resolvePlannerEmails } from "./planner-identity.js";
7
7
  export const DEFAULT_PERIMETER_PROTECTED = [
8
8
  "**/.gxt-skill.yaml",
9
9
  ".gitagent/foreman/MANIFEST.json",
10
- ".gitagent/teacher/RULES.md",
10
+ ".gitagent/planner/RULES.md",
11
11
  ];
12
12
  const SHALLOW_HISTORY_HINT = "Configure CI checkout with fetch-depth: 0 or fetch the base ref explicitly before running gantry perimeter --ci.";
13
13
  function perimeterGlobs(manifest) {
@@ -103,10 +103,10 @@ function signatureStatus(repoRoot, hash) {
103
103
  function isGoodSignature(status) {
104
104
  return status === "G" || status === "U";
105
105
  }
106
- function findTeacherStampForPath(repoRoot, msnId, repoRelPath, teacherEmails) {
106
+ function findTeacherStampForPath(repoRoot, msnId, repoRelPath, plannerEmails) {
107
107
  const rows = listMsnSubjectCommits(repoRoot, msnId);
108
108
  for (const row of rows) {
109
- if (!teacherEmails.includes(row.authorEmail.trim().toLowerCase()))
109
+ if (!plannerEmails.includes(row.authorEmail.trim().toLowerCase()))
110
110
  continue;
111
111
  const changed = listCommitChangedPaths(repoRoot, row.hash);
112
112
  if (changed.some((p) => p.replace(/\\/g, "/") === repoRelPath.replace(/\\/g, "/"))) {
@@ -159,7 +159,7 @@ function checkProtectedPathCi(repoRoot, baseRef, filePath, violations, advisorie
159
159
  advisories.push(`perimeter: ${filePath} — all ${String(range.commits.length)} commit(s) in range are signed`);
160
160
  }
161
161
  }
162
- function checkProtectedPathLocal(repoRoot, filePath, teacherEmails, violations, advisories) {
162
+ function checkProtectedPathLocal(repoRoot, filePath, plannerEmails, violations, advisories) {
163
163
  const commit = lastCommitTouchingPath(repoRoot, filePath);
164
164
  if (!commit) {
165
165
  violations.push({
@@ -182,11 +182,11 @@ function checkProtectedPathLocal(repoRoot, filePath, teacherEmails, violations,
182
182
  }
183
183
  const msnId = extractMsnFromRecentCommits(repoRoot, commit);
184
184
  const emailMatch = row.authorEmail.trim().toLowerCase() &&
185
- teacherEmails.includes(row.authorEmail.trim().toLowerCase());
185
+ plannerEmails.includes(row.authorEmail.trim().toLowerCase());
186
186
  const subjectMatch = msnId !== null && commitSubjectHasMsnPrefix(row.subject, msnId);
187
- const stamp = msnId !== null ? findTeacherStampForPath(repoRoot, msnId, filePath, teacherEmails) : null;
187
+ const stamp = msnId !== null ? findTeacherStampForPath(repoRoot, msnId, filePath, plannerEmails) : null;
188
188
  if (stamp) {
189
- advisories.push(`perimeter (advisory): ${filePath} — Teacher email + MSN stamp hint matched ${stamp.hash.slice(0, 7)} (forgeable locally; CI verifies signature)`);
189
+ advisories.push(`perimeter (advisory): ${filePath} — Planner email + MSN stamp hint matched ${stamp.hash.slice(0, 7)} (forgeable locally; CI verifies signature)`);
190
190
  return;
191
191
  }
192
192
  advisories.push(`perimeter (advisory): ${filePath} modified in ${commit.slice(0, 7)} — ` +
@@ -216,7 +216,7 @@ export function checkPerimeter(repoRoot, manifest, options) {
216
216
  if (protectedChanged.length === 0) {
217
217
  return { ok: true, violations: [], advisories: [] };
218
218
  }
219
- const teacherEmails = resolveTeacherEmails(repoRoot).emails;
219
+ const plannerEmails = resolvePlannerEmails(repoRoot).emails;
220
220
  const violations = [];
221
221
  const advisories = [];
222
222
  for (const filePath of protectedChanged) {
@@ -224,7 +224,7 @@ export function checkPerimeter(repoRoot, manifest, options) {
224
224
  checkProtectedPathCi(repoRoot, options.baseRef, filePath, violations, advisories);
225
225
  }
226
226
  else {
227
- checkProtectedPathLocal(repoRoot, filePath, teacherEmails, violations, advisories);
227
+ checkProtectedPathLocal(repoRoot, filePath, plannerEmails, violations, advisories);
228
228
  }
229
229
  }
230
230
  const hardFailures = violations.filter((v) => !v.advisoryOnly);
@@ -0,0 +1,23 @@
1
+ export { ENV_PLANNER_EMAILS } from "./config-namespace.js";
2
+ export declare const REL_PLANNER_ALLOWLIST: ".gitagent/foreman/PLANNER.allowlist";
3
+ export declare const REL_PLANNER_ALLOWLIST_LOCAL: ".gitagent/foreman/PLANNER.allowlist.local";
4
+ export type PlannerIdentitySource = "allowlist_file" | "allowlist_local" | "git_config" | "env" | "git_user_email" | "unset";
5
+ export interface ResolvedPlannerIdentity {
6
+ emails: string[];
7
+ source: PlannerIdentitySource;
8
+ /** Human-readable detail for doctor / errors */
9
+ detail: string;
10
+ }
11
+ /** Legacy env-only parser (tests / explicit CI override). */
12
+ export declare function parsePlannerEmailsFromEnv(): string[];
13
+ /**
14
+ * Resolve Planner legislation allowlist for a repository.
15
+ * Repo-local sources win over shell env so multi-project developers are not cross-contaminated.
16
+ */
17
+ export declare function resolvePlannerEmails(repoRoot: string): ResolvedPlannerIdentity;
18
+ export declare function serializePlannerAllowlist(emails: string[]): string;
19
+ export declare function writePlannerAllowlistLocal(repoRoot: string, emails: string[]): void;
20
+ /** Create gitignored local allowlist from repo git user.email when missing. */
21
+ export declare function ensurePlannerAllowlistOnInit(repoRoot: string): boolean;
22
+ export declare function plannerIdentitySetupHint(_repoRoot: string): string;
23
+ //# sourceMappingURL=planner-identity.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"teacher-identity.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/teacher-identity.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAE3D,eAAO,MAAM,qBAAqB,EAAG,qCAA8C,CAAC;AACpF,eAAO,MAAM,2BAA2B,EAAG,2CAAoD,CAAC;AAEhG,MAAM,MAAM,qBAAqB,GAC7B,gBAAgB,GAChB,iBAAiB,GACjB,YAAY,GACZ,KAAK,GACL,gBAAgB,GAChB,OAAO,CAAC;AAEZ,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,EAAE,qBAAqB,CAAC;IAC9B,gDAAgD;IAChD,MAAM,EAAE,MAAM,CAAC;CAChB;AA8BD,6DAA6D;AAC7D,wBAAgB,yBAAyB,IAAI,MAAM,EAAE,CAIpD;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,uBAAuB,CA2C9E;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAGlE;AAED,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAInF;AAED,+EAA+E;AAC/E,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAStE;AAED,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAOlE"}
1
+ {"version":3,"file":"planner-identity.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/planner-identity.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAE3D,eAAO,MAAM,qBAAqB,EAAG,qCAA8C,CAAC;AACpF,eAAO,MAAM,2BAA2B,EAAG,2CAAoD,CAAC;AAEhG,MAAM,MAAM,qBAAqB,GAC7B,gBAAgB,GAChB,iBAAiB,GACjB,YAAY,GACZ,KAAK,GACL,gBAAgB,GAChB,OAAO,CAAC;AAEZ,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,EAAE,qBAAqB,CAAC;IAC9B,gDAAgD;IAChD,MAAM,EAAE,MAAM,CAAC;CAChB;AA8BD,6DAA6D;AAC7D,wBAAgB,yBAAyB,IAAI,MAAM,EAAE,CAIpD;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,uBAAuB,CA2C9E;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAGlE;AAED,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAInF;AAED,+EAA+E;AAC/E,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAStE;AAED,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAOlE"}
@@ -2,11 +2,11 @@ import fs from "node:fs";
2
2
  import path from "node:path";
3
3
  import { fromPosix } from "./cli-io.js";
4
4
  import { CLI_NAME } from "./constants.js";
5
- import { ENV_TEACHER_EMAILS, GIT_CONFIG_TEACHER_EMAILS, readEnvWithLegacy, readGitConfigWithLegacy, } from "./config-namespace.js";
5
+ import { ENV_PLANNER_EMAILS, GIT_CONFIG_PLANNER_EMAILS, readEnvWithLegacy, readGitConfigWithLegacy, } from "./config-namespace.js";
6
6
  import { gitRunOk } from "./git.js";
7
- export { ENV_TEACHER_EMAILS } from "./config-namespace.js";
8
- export const REL_TEACHER_ALLOWLIST = ".gitagent/foreman/TEACHER.allowlist";
9
- export const REL_TEACHER_ALLOWLIST_LOCAL = ".gitagent/foreman/TEACHER.allowlist.local";
7
+ export { ENV_PLANNER_EMAILS } from "./config-namespace.js";
8
+ export const REL_PLANNER_ALLOWLIST = ".gitagent/foreman/PLANNER.allowlist";
9
+ export const REL_PLANNER_ALLOWLIST_LOCAL = ".gitagent/foreman/PLANNER.allowlist.local";
10
10
  function normalizeEmailList(raw) {
11
11
  const parts = raw
12
12
  .split(/[\n,]+/)
@@ -20,8 +20,8 @@ function readAllowlistFile(repoRoot, relPath) {
20
20
  return [];
21
21
  return normalizeEmailList(fs.readFileSync(abs, "utf8"));
22
22
  }
23
- function readGitConfigTeacherEmails(repoRoot) {
24
- const raw = readGitConfigWithLegacy(repoRoot, "teacherEmails");
23
+ function readGitConfigPlannerEmails(repoRoot) {
24
+ const raw = readGitConfigWithLegacy(repoRoot, "plannerEmails");
25
25
  if (!raw)
26
26
  return [];
27
27
  return normalizeEmailList(raw);
@@ -34,46 +34,46 @@ function readGitUserEmail(repoRoot) {
34
34
  return null;
35
35
  }
36
36
  /** Legacy env-only parser (tests / explicit CI override). */
37
- export function parseTeacherEmailsFromEnv() {
38
- const raw = readEnvWithLegacy("TEACHER_EMAILS");
37
+ export function parsePlannerEmailsFromEnv() {
38
+ const raw = readEnvWithLegacy("PLANNER_EMAILS");
39
39
  if (!raw)
40
40
  return [];
41
41
  return normalizeEmailList(raw);
42
42
  }
43
43
  /**
44
- * Resolve Teacher legislation allowlist for a repository.
44
+ * Resolve Planner legislation allowlist for a repository.
45
45
  * Repo-local sources win over shell env so multi-project developers are not cross-contaminated.
46
46
  */
47
- export function resolveTeacherEmails(repoRoot) {
48
- const team = readAllowlistFile(repoRoot, REL_TEACHER_ALLOWLIST);
49
- const local = readAllowlistFile(repoRoot, REL_TEACHER_ALLOWLIST_LOCAL);
47
+ export function resolvePlannerEmails(repoRoot) {
48
+ const team = readAllowlistFile(repoRoot, REL_PLANNER_ALLOWLIST);
49
+ const local = readAllowlistFile(repoRoot, REL_PLANNER_ALLOWLIST_LOCAL);
50
50
  const mergedFile = [...new Set([...team, ...local])];
51
51
  if (mergedFile.length > 0) {
52
52
  const sources = [];
53
53
  if (team.length > 0)
54
- sources.push(REL_TEACHER_ALLOWLIST);
54
+ sources.push(REL_PLANNER_ALLOWLIST);
55
55
  if (local.length > 0)
56
- sources.push(REL_TEACHER_ALLOWLIST_LOCAL);
56
+ sources.push(REL_PLANNER_ALLOWLIST_LOCAL);
57
57
  return {
58
58
  emails: mergedFile,
59
59
  source: local.length > 0 && team.length === 0 ? "allowlist_local" : "allowlist_file",
60
60
  detail: sources.join(" + "),
61
61
  };
62
62
  }
63
- const fromGitConfig = readGitConfigTeacherEmails(repoRoot);
63
+ const fromGitConfig = readGitConfigPlannerEmails(repoRoot);
64
64
  if (fromGitConfig.length > 0) {
65
65
  return {
66
66
  emails: fromGitConfig,
67
67
  source: "git_config",
68
- detail: `git config ${GIT_CONFIG_TEACHER_EMAILS}`,
68
+ detail: `git config ${GIT_CONFIG_PLANNER_EMAILS}`,
69
69
  };
70
70
  }
71
- const fromEnv = parseTeacherEmailsFromEnv();
71
+ const fromEnv = parsePlannerEmailsFromEnv();
72
72
  if (fromEnv.length > 0) {
73
73
  return {
74
74
  emails: fromEnv,
75
75
  source: "env",
76
- detail: ENV_TEACHER_EMAILS,
76
+ detail: ENV_PLANNER_EMAILS,
77
77
  };
78
78
  }
79
79
  const gitEmail = readGitUserEmail(repoRoot);
@@ -81,40 +81,40 @@ export function resolveTeacherEmails(repoRoot) {
81
81
  return {
82
82
  emails: [gitEmail],
83
83
  source: "git_user_email",
84
- detail: "git config user.email (implicit single Teacher)",
84
+ detail: "git config user.email (implicit single Planner)",
85
85
  };
86
86
  }
87
- return { emails: [], source: "unset", detail: "no Teacher identity configured" };
87
+ return { emails: [], source: "unset", detail: "no Planner identity configured" };
88
88
  }
89
- export function serializeTeacherAllowlist(emails) {
89
+ export function serializePlannerAllowlist(emails) {
90
90
  const unique = [...new Set(emails.map((e) => e.trim().toLowerCase()).filter((e) => e.includes("@")))];
91
91
  return `${unique.join("\n")}\n`;
92
92
  }
93
- export function writeTeacherAllowlistLocal(repoRoot, emails) {
94
- const abs = path.join(repoRoot, fromPosix(REL_TEACHER_ALLOWLIST_LOCAL));
93
+ export function writePlannerAllowlistLocal(repoRoot, emails) {
94
+ const abs = path.join(repoRoot, fromPosix(REL_PLANNER_ALLOWLIST_LOCAL));
95
95
  fs.mkdirSync(path.dirname(abs), { recursive: true });
96
- fs.writeFileSync(abs, serializeTeacherAllowlist(emails), "utf8");
96
+ fs.writeFileSync(abs, serializePlannerAllowlist(emails), "utf8");
97
97
  }
98
98
  /** Create gitignored local allowlist from repo git user.email when missing. */
99
- export function ensureTeacherAllowlistOnInit(repoRoot) {
100
- const abs = path.join(repoRoot, fromPosix(REL_TEACHER_ALLOWLIST_LOCAL));
99
+ export function ensurePlannerAllowlistOnInit(repoRoot) {
100
+ const abs = path.join(repoRoot, fromPosix(REL_PLANNER_ALLOWLIST_LOCAL));
101
101
  if (fs.existsSync(abs))
102
102
  return false;
103
- const team = readAllowlistFile(repoRoot, REL_TEACHER_ALLOWLIST);
103
+ const team = readAllowlistFile(repoRoot, REL_PLANNER_ALLOWLIST);
104
104
  if (team.length > 0)
105
105
  return false;
106
106
  const gitEmail = readGitUserEmail(repoRoot);
107
107
  if (!gitEmail)
108
108
  return false;
109
- writeTeacherAllowlistLocal(repoRoot, [gitEmail]);
109
+ writePlannerAllowlistLocal(repoRoot, [gitEmail]);
110
110
  return true;
111
111
  }
112
- export function teacherIdentitySetupHint(_repoRoot) {
112
+ export function plannerIdentitySetupHint(_repoRoot) {
113
113
  return [
114
- `echo "$(git config user.email)" >> ${REL_TEACHER_ALLOWLIST_LOCAL}`,
115
- `or: git config ${GIT_CONFIG_TEACHER_EMAILS} "$(git config user.email)"`,
116
- `or: ${CLI_NAME} teacher set "$(git config user.email)"`,
117
- `# env ${ENV_TEACHER_EMAILS} is CI-only fallback; prefer repo-local config`,
114
+ `echo "$(git config user.email)" >> ${REL_PLANNER_ALLOWLIST_LOCAL}`,
115
+ `or: git config ${GIT_CONFIG_PLANNER_EMAILS} "$(git config user.email)"`,
116
+ `or: ${CLI_NAME} planner set "$(git config user.email)"`,
117
+ `# env ${ENV_PLANNER_EMAILS} is CI-only fallback; prefer repo-local config`,
118
118
  ].join("\n ");
119
119
  }
120
- //# sourceMappingURL=teacher-identity.js.map
120
+ //# sourceMappingURL=planner-identity.js.map
@@ -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":"planner-identity.js","sourceRoot":"","sources":["../../../src/cli/lib/planner-identity.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /** `git log --format=%G?` signature letter for a commit. */
2
+ export type GitSignatureStatus = "G" | "U" | "B" | "X" | "Y" | "R" | "E" | "N" | string;
3
+ export declare function gitCommitSignatureStatus(repoRoot: string, commitRef: string): GitSignatureStatus;
4
+ /** Good signature per git (%G? = G or U). */
5
+ export declare function isGoodGitSignatureStatus(status: GitSignatureStatus): boolean;
6
+ export interface PlannerStampSignatureCheck {
7
+ ok: boolean;
8
+ status: GitSignatureStatus;
9
+ }
10
+ export declare function checkPlannerStampSignature(repoRoot: string, commitHash: string): PlannerStampSignatureCheck;
11
+ //# sourceMappingURL=planner-signature.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"planner-signature.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/planner-signature.ts"],"names":[],"mappings":"AAEA,4DAA4D;AAC5D,MAAM,MAAM,kBAAkB,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,MAAM,CAAC;AAExF,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,kBAAkB,CAKhG;AAED,6CAA6C;AAC7C,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAE5E;AAED,MAAM,WAAW,0BAA0B;IACzC,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,kBAAkB,CAAC;CAC5B;AAED,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,GACjB,0BAA0B,CAG5B"}
@@ -0,0 +1,17 @@
1
+ import { gitRunOk } from "./git.js";
2
+ export function gitCommitSignatureStatus(repoRoot, commitRef) {
3
+ const result = gitRunOk(repoRoot, ["log", "-1", `--format=%G?`, commitRef]);
4
+ if (!result.ok)
5
+ return "N";
6
+ const status = result.stdout.trim();
7
+ return status.length > 0 ? status.charAt(0) : "N";
8
+ }
9
+ /** Good signature per git (%G? = G or U). */
10
+ export function isGoodGitSignatureStatus(status) {
11
+ return status === "G" || status === "U";
12
+ }
13
+ export function checkPlannerStampSignature(repoRoot, commitHash) {
14
+ const status = gitCommitSignatureStatus(repoRoot, commitHash);
15
+ return { ok: isGoodGitSignatureStatus(status), status };
16
+ }
17
+ //# sourceMappingURL=planner-signature.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"planner-signature.js","sourceRoot":"","sources":["../../../src/cli/lib/planner-signature.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAKpC,MAAM,UAAU,wBAAwB,CAAC,QAAgB,EAAE,SAAiB;IAC1E,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,SAAS,CAAC,CAAC,CAAC;IAC5E,IAAI,CAAC,MAAM,CAAC,EAAE;QAAE,OAAO,GAAG,CAAC;IAC3B,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IACpC,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AACpD,CAAC;AAED,6CAA6C;AAC7C,MAAM,UAAU,wBAAwB,CAAC,MAA0B;IACjE,OAAO,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,GAAG,CAAC;AAC1C,CAAC;AAOD,MAAM,UAAU,0BAA0B,CACxC,QAAgB,EAChB,UAAkB;IAElB,MAAM,MAAM,GAAG,wBAAwB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IAC9D,OAAO,EAAE,EAAE,EAAE,wBAAwB,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;AAC1D,CAAC"}
@@ -25,7 +25,7 @@ export function registerAudiencePreActionHook(program) {
25
25
  const raw = audienceRawFromArgv(actionCommand);
26
26
  const applied = applyAudienceFromArgv(raw);
27
27
  if (!applied.ok) {
28
- logError(`invalid --audience "${applied.invalidValue}" (expected worker|teacher|verifier|platform)`);
28
+ logError(`invalid --audience "${applied.invalidValue}" (expected executor|planner|verifier|platform)`);
29
29
  setExitCode(2);
30
30
  throw new Error(`${CLI_NAME}: invalid audience`);
31
31
  }
@@ -1 +1 @@
1
- {"version":3,"file":"program-audience-hook.js","sourceRoot":"","sources":["../../../src/cli/lib/program-audience-hook.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC/E,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAEpD,SAAS,WAAW,CAAC,GAAY;IAC/B,IAAI,OAAO,GAAY,GAAG,CAAC;IAC3B,OAAO,OAAO,CAAC,MAAM;QAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAChD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,mBAAmB,CAAC,aAAsB;IACjD,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI,EAA2B,CAAC;IACjE,MAAM,QAAQ,GAAG,WAAW,CAAC,aAAa,CAAC,CAAC,IAAI,EAA2B,CAAC;IAC5E,OAAO,UAAU,CAAC,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC;AAClD,CAAC;AAED,SAAS,gBAAgB,CAAC,aAAsB;IAC9C,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI,EAAwB,CAAC;IAC9D,IAAI,UAAU,CAAC,IAAI,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC1C,MAAM,QAAQ,GAAG,WAAW,CAAC,aAAa,CAAC,CAAC,IAAI,EAAwB,CAAC;IACzE,OAAO,QAAQ,CAAC,IAAI,KAAK,IAAI,CAAC;AAChC,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,6BAA6B,CAAC,OAAgB;IAC5D,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,YAAY,EAAE,aAAa,EAAE,EAAE;QACxD,MAAM,GAAG,GAAG,mBAAmB,CAAC,aAAa,CAAC,CAAC;QAC/C,MAAM,OAAO,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC;QAC3C,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;YAChB,QAAQ,CACN,uBAAuB,OAAO,CAAC,YAAY,+CAA+C,CAC3F,CAAC;YACF,WAAW,CAAC,CAAC,CAAC,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,GAAG,QAAQ,oBAAoB,CAAC,CAAC;QACnD,CAAC;QACD,iBAAiB,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"program-audience-hook.js","sourceRoot":"","sources":["../../../src/cli/lib/program-audience-hook.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC/E,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAEpD,SAAS,WAAW,CAAC,GAAY;IAC/B,IAAI,OAAO,GAAY,GAAG,CAAC;IAC3B,OAAO,OAAO,CAAC,MAAM;QAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAChD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,mBAAmB,CAAC,aAAsB;IACjD,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI,EAA2B,CAAC;IACjE,MAAM,QAAQ,GAAG,WAAW,CAAC,aAAa,CAAC,CAAC,IAAI,EAA2B,CAAC;IAC5E,OAAO,UAAU,CAAC,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC;AAClD,CAAC;AAED,SAAS,gBAAgB,CAAC,aAAsB;IAC9C,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI,EAAwB,CAAC;IAC9D,IAAI,UAAU,CAAC,IAAI,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC1C,MAAM,QAAQ,GAAG,WAAW,CAAC,aAAa,CAAC,CAAC,IAAI,EAAwB,CAAC;IACzE,OAAO,QAAQ,CAAC,IAAI,KAAK,IAAI,CAAC;AAChC,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,6BAA6B,CAAC,OAAgB;IAC5D,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,YAAY,EAAE,aAAa,EAAE,EAAE;QACxD,MAAM,GAAG,GAAG,mBAAmB,CAAC,aAAa,CAAC,CAAC;QAC/C,MAAM,OAAO,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC;QAC3C,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;YAChB,QAAQ,CACN,uBAAuB,OAAO,CAAC,YAAY,iDAAiD,CAC7F,CAAC;YACF,WAAW,CAAC,CAAC,CAAC,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,GAAG,QAAQ,oBAAoB,CAAC,CAAC;QACnD,CAAC;QACD,iBAAiB,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -32,7 +32,7 @@ export function formatProposalHuman(proposal) {
32
32
  lines.push(` suggested forbidden imports: ${proposal.suggested_forbidden_imports.join(", ")}`);
33
33
  }
34
34
  lines.push("");
35
- lines.push("Teacher: review proposal, add skill to MANIFEST.json (Rule 4.4), then gantry legislate with --skill-key.");
35
+ lines.push("Planner: review proposal, add skill to MANIFEST.json (Rule 4.4), then gantry legislate with --skill-key.");
36
36
  return lines.join("\n");
37
37
  }
38
38
  //# sourceMappingURL=register-proposals.js.map
@@ -12,11 +12,11 @@ export interface ResolvedRuntimeEnv {
12
12
  /** Absolute TMVC roots, newline-delimited string for shells */
13
13
  tmvc_roots_joined: string;
14
14
  forbidden_zones_joined: string;
15
- /** Absolute WORKER_LOG path */
16
- worker_log: string;
15
+ /** Absolute EXECUTOR_LOG path */
16
+ executor_log: string;
17
17
  }
18
18
  /**
19
- * Resolve worker runtime variables for a mission (manifest-aligned TMVC/forbidden zones).
19
+ * Resolve executor runtime variables for a mission (manifest-aligned TMVC/forbidden zones).
20
20
  */
21
21
  export declare function resolveRuntimeEnv(workspace: Workspace, missionRepoOrAbsPath: string): ResolvedRuntimeEnv;
22
22
  export declare function resolvedRuntimeEnvToJsonPayload(r: ResolvedRuntimeEnv): Record<string, string>;
@@ -1 +1 @@
1
- {"version":3,"file":"runtime-env.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/runtime-env.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAGhD,MAAM,WAAW,kBAAkB;IACjC,6BAA6B;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,uDAAuD;IACvD,YAAY,EAAE,MAAM,CAAC;IACrB,+CAA+C;IAC/C,qBAAqB,EAAE,MAAM,CAAC;IAC9B,gDAAgD;IAChD,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,+DAA+D;IAC/D,iBAAiB,EAAE,MAAM,CAAC;IAC1B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,+BAA+B;IAC/B,UAAU,EAAE,MAAM,CAAC;CACpB;AAgBD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,GAAG,kBAAkB,CAoCxG;AAOD,wBAAgB,+BAA+B,CAAC,CAAC,EAAE,kBAAkB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAW7F"}
1
+ {"version":3,"file":"runtime-env.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/runtime-env.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAGhD,MAAM,WAAW,kBAAkB;IACjC,6BAA6B;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,uDAAuD;IACvD,YAAY,EAAE,MAAM,CAAC;IACrB,+CAA+C;IAC/C,qBAAqB,EAAE,MAAM,CAAC;IAC9B,gDAAgD;IAChD,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,+DAA+D;IAC/D,iBAAiB,EAAE,MAAM,CAAC;IAC1B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,iCAAiC;IACjC,YAAY,EAAE,MAAM,CAAC;CACtB;AAgBD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,GAAG,kBAAkB,CAoCxG;AAOD,wBAAgB,+BAA+B,CAAC,CAAC,EAAE,kBAAkB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAW7F"}
@@ -5,7 +5,7 @@ import { CLI_NAME } from "./constants.js";
5
5
  import { agentErrorAbsolutePath } from "./errors.js";
6
6
  import { parseMissionFile } from "./missions/parser.js";
7
7
  import { resolveManifestSkillKey } from "./skill-key.js";
8
- import { defaultWorkerLogPath } from "./trace.js";
8
+ import { defaultExecutorLogPath } from "./trace.js";
9
9
  function toRepoRelativePosix(repoRoot, absolutePath) {
10
10
  const rel = toPosixRel(repoRoot, path.resolve(absolutePath));
11
11
  if (rel.startsWith("..") || path.isAbsolute(rel)) {
@@ -17,7 +17,7 @@ function resolvePaths(repoRoot, rootsOrZones) {
17
17
  return rootsOrZones.map((r) => path.resolve(repoRoot, r.replace(/\\/g, path.sep)));
18
18
  }
19
19
  /**
20
- * Resolve worker runtime variables for a mission (manifest-aligned TMVC/forbidden zones).
20
+ * Resolve executor runtime variables for a mission (manifest-aligned TMVC/forbidden zones).
21
21
  */
22
22
  export function resolveRuntimeEnv(workspace, missionRepoOrAbsPath) {
23
23
  const { root, manifest } = workspace;
@@ -46,7 +46,7 @@ export function resolveRuntimeEnv(workspace, missionRepoOrAbsPath) {
46
46
  skill_key: skillKey,
47
47
  tmvc_roots_joined: tmvcAbs.join("\n"),
48
48
  forbidden_zones_joined: fzAbs.join("\n"),
49
- worker_log: defaultWorkerLogPath(root),
49
+ executor_log: defaultExecutorLogPath(root),
50
50
  };
51
51
  }
52
52
  function lastErrorFileForRepo(repoRoot) {
@@ -61,7 +61,7 @@ export function resolvedRuntimeEnvToJsonPayload(r) {
61
61
  GXT_SKILL_KEY: r.skill_key,
62
62
  GXT_TMVC_ROOTS: r.tmvc_roots_joined,
63
63
  GXT_FORBIDDEN_ZONES: r.forbidden_zones_joined,
64
- GXT_WORKER_LOG: r.worker_log,
64
+ GXT_EXECUTOR_LOG: r.executor_log,
65
65
  GXT_LAST_ERROR_FILE: lastErrorFileForRepo(r.repo_root),
66
66
  };
67
67
  }
@@ -1 +1 @@
1
- {"version":3,"file":"runtime-env.js","sourceRoot":"","sources":["../../../src/cli/lib/runtime-env.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime-env.js","sourceRoot":"","sources":["../../../src/cli/lib/runtime-env.ts"],"names":[],"mappings":"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"}