@rsaglobaltech/specgate 0.18.0 → 0.19.1

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 (201) hide show
  1. package/CHANGELOG.md +77 -1
  2. package/bin/specgate.ts +47 -47
  3. package/dist/bin/specgate.js +47 -46
  4. package/dist/bin/specgate.js.map +1 -1
  5. package/dist/packages/core/src/application/ArchiveChangeUseCase.js +1 -1
  6. package/dist/packages/core/src/application/ArchiveChangeUseCase.js.map +1 -1
  7. package/dist/packages/core/src/application/ValidateProjectUseCase.js +1 -1
  8. package/dist/packages/core/src/application/ValidateProjectUseCase.js.map +1 -1
  9. package/dist/packages/core/src/domain/ChangeTemplates.js +1 -1
  10. package/dist/packages/core/src/domain/DeltaFeature.js +3 -3
  11. package/dist/packages/core/src/domain/DeltaFeature.js.map +1 -1
  12. package/dist/packages/core/src/domain/DerivedMatrix.js +9 -9
  13. package/dist/packages/core/src/domain/DerivedMatrix.js.map +1 -1
  14. package/dist/packages/core/src/domain/DoneVerification.js +1 -1
  15. package/dist/packages/core/src/domain/DoneVerification.js.map +1 -1
  16. package/dist/packages/core/src/domain/DraftChecklist.js +3 -3
  17. package/dist/packages/core/src/domain/DraftChecklist.js.map +1 -1
  18. package/dist/packages/core/src/domain/GherkinTags.js +12 -12
  19. package/dist/packages/core/src/domain/GherkinTags.js.map +1 -1
  20. package/dist/packages/core/src/domain/InboundChange.js +1 -1
  21. package/dist/packages/core/src/domain/InboundChange.js.map +1 -1
  22. package/dist/packages/core/src/domain/Language.js +2 -2
  23. package/dist/packages/core/src/domain/Language.js.map +1 -1
  24. package/dist/packages/core/src/domain/Lockfile.js +7 -7
  25. package/dist/packages/core/src/domain/Lockfile.js.map +1 -1
  26. package/dist/packages/core/src/domain/PackDelta.js +1 -1
  27. package/dist/packages/core/src/domain/PackDelta.js.map +1 -1
  28. package/dist/packages/core/src/domain/RequirementGraph.js +2 -2
  29. package/dist/packages/core/src/domain/SpecParser.js +6 -6
  30. package/dist/packages/core/src/domain/SpecParser.js.map +1 -1
  31. package/dist/packages/core/src/domain/TraceMerge.js +4 -4
  32. package/dist/packages/core/src/domain/TraceMerge.js.map +1 -1
  33. package/dist/packages/core/src/domain/TraceabilityFormat.js +4 -4
  34. package/dist/packages/core/src/domain/TraceabilityFormat.js.map +1 -1
  35. package/dist/packages/core/src/domain/ValueAnnotations.js +8 -8
  36. package/dist/packages/core/src/domain/ValueAnnotations.js.map +1 -1
  37. package/dist/packages/core/src/domain/WriteScope.js +3 -3
  38. package/dist/packages/core/src/domain/WriteScope.js.map +1 -1
  39. package/dist/packages/core/src/infrastructure/ChangeWorkspace.js +2 -2
  40. package/dist/packages/core/src/infrastructure/ChangeWorkspace.js.map +1 -1
  41. package/dist/packages/core/src/infrastructure/ConsoleReporter.js +2 -2
  42. package/dist/packages/core/src/infrastructure/ConsoleReporter.js.map +1 -1
  43. package/dist/packages/core/src/infrastructure/DerivedMatrixSources.js +2 -2
  44. package/dist/packages/core/src/infrastructure/DerivedMatrixSources.js.map +1 -1
  45. package/dist/packages/core/src/infrastructure/DiskLanguageRepository.js +4 -4
  46. package/dist/packages/core/src/infrastructure/DiskLanguageRepository.js.map +1 -1
  47. package/dist/packages/core/src/infrastructure/DiskPackDeltaRepository.js +1 -1
  48. package/dist/packages/core/src/infrastructure/DiskPackDeltaRepository.js.map +1 -1
  49. package/dist/packages/core/src/infrastructure/GitContributionStager.js +3 -3
  50. package/dist/packages/core/src/infrastructure/GitContributionStager.js.map +1 -1
  51. package/dist/packages/core/src/infrastructure/RemotePackResolver.js +5 -5
  52. package/dist/packages/core/src/infrastructure/RemotePackResolver.js.map +1 -1
  53. package/dist/packages/core/test/unit/delta-feature.test.js +3 -3
  54. package/dist/packages/core/test/unit/delta-feature.test.js.map +1 -1
  55. package/dist/packages/core/test/unit/derived-matrix.test.js +8 -8
  56. package/dist/packages/core/test/unit/derived-matrix.test.js.map +1 -1
  57. package/dist/packages/core/test/unit/gherkin-tags.test.js +8 -8
  58. package/dist/packages/core/test/unit/gherkin-tags.test.js.map +1 -1
  59. package/dist/packages/core/test/unit/inbound-change.test.js +1 -1
  60. package/dist/packages/core/test/unit/inbound-change.test.js.map +1 -1
  61. package/dist/packages/core/test/unit/matrix-dependencies.test.js +5 -5
  62. package/dist/packages/core/test/unit/matrix-dependencies.test.js.map +1 -1
  63. package/dist/packages/core/test/unit/new-requirement.test.js +1 -1
  64. package/dist/packages/core/test/unit/new-requirement.test.js.map +1 -1
  65. package/dist/packages/core/test/unit/value-annotations.test.js +5 -5
  66. package/dist/packages/core/test/unit/value-annotations.test.js.map +1 -1
  67. package/dist/packages/core/test/unit/write-scope-status.test.js +5 -5
  68. package/dist/packages/core/test/unit/write-scope-status.test.js.map +1 -1
  69. package/dist/packages/mcp-spec-driven/src/native-tools.js +3 -3
  70. package/dist/packages/mcp-spec-driven/src/native-tools.js.map +1 -1
  71. package/dist/packages/mcp-spec-driven/src/server.js +1 -7
  72. package/dist/packages/mcp-spec-driven/src/server.js.map +1 -1
  73. package/dist/packages/mcp-spec-driven/src/tools.js +4 -4
  74. package/dist/packages/mcp-spec-driven/src/tools.js.map +1 -1
  75. package/dist/scripts/agents/init.js +26 -47
  76. package/dist/scripts/agents/init.js.map +1 -1
  77. package/dist/scripts/alm/cli.js +37 -3
  78. package/dist/scripts/alm/cli.js.map +1 -1
  79. package/dist/scripts/alm/providers/index.js +1 -1
  80. package/dist/scripts/alm/providers/index.js.map +1 -1
  81. package/dist/scripts/change/instructions.js +2 -2
  82. package/dist/scripts/change/instructions.js.map +1 -1
  83. package/dist/scripts/cli/commands/alm/PullCommand.js +1 -1
  84. package/dist/scripts/cli/commands/alm/PullCommand.js.map +1 -1
  85. package/dist/scripts/cli/commands/change/ChangeCommand.js +99 -98
  86. package/dist/scripts/cli/commands/change/ChangeCommand.js.map +1 -1
  87. package/dist/scripts/cli/commands/config/CiInitCommand.js +6 -4
  88. package/dist/scripts/cli/commands/config/CiInitCommand.js.map +1 -1
  89. package/dist/scripts/cli/commands/config/CompletionCommand.js +10 -10
  90. package/dist/scripts/cli/commands/config/CompletionCommand.js.map +1 -1
  91. package/dist/scripts/cli/commands/config/ConfigInitCommand.js +11 -19
  92. package/dist/scripts/cli/commands/config/ConfigInitCommand.js.map +1 -1
  93. package/dist/scripts/cli/commands/config/ConfigSetCommand.js +5 -1
  94. package/dist/scripts/cli/commands/config/ConfigSetCommand.js.map +1 -1
  95. package/dist/scripts/cli/commands/harness/RunCommand.js +73 -38
  96. package/dist/scripts/cli/commands/harness/RunCommand.js.map +1 -1
  97. package/dist/scripts/cli/commands/pack/BundlePackCommand.js +36 -2
  98. package/dist/scripts/cli/commands/pack/BundlePackCommand.js.map +1 -1
  99. package/dist/scripts/cli/commands/pack/ExpandDomainPackCommand.js +2 -2
  100. package/dist/scripts/cli/commands/pack/ExpandDomainPackCommand.js.map +1 -1
  101. package/dist/scripts/cli/commands/pack/InferPackCommand.js +2 -1
  102. package/dist/scripts/cli/commands/pack/InferPackCommand.js.map +1 -1
  103. package/dist/scripts/cli/commands/pack/InitPackCommand.js +23 -32
  104. package/dist/scripts/cli/commands/pack/InitPackCommand.js.map +1 -1
  105. package/dist/scripts/cli/commands/pack/LintPackCommand.js +4 -3
  106. package/dist/scripts/cli/commands/pack/LintPackCommand.js.map +1 -1
  107. package/dist/scripts/cli/commands/project/AdoptCommand.js +9 -3
  108. package/dist/scripts/cli/commands/project/AdoptCommand.js.map +1 -1
  109. package/dist/scripts/cli/commands/project/InitProjectCommand.js +8 -5
  110. package/dist/scripts/cli/commands/project/InitProjectCommand.js.map +1 -1
  111. package/dist/scripts/cli/commands/project/OnboardCommand.js +17 -24
  112. package/dist/scripts/cli/commands/project/OnboardCommand.js.map +1 -1
  113. package/dist/scripts/cli/commands/project/UpdateCommand.js +23 -43
  114. package/dist/scripts/cli/commands/project/UpdateCommand.js.map +1 -1
  115. package/dist/scripts/cli/commands/quality/CheckCommand.js +30 -17
  116. package/dist/scripts/cli/commands/quality/CheckCommand.js.map +1 -1
  117. package/dist/scripts/cli/commands/quality/DoctorCommand.js +27 -10
  118. package/dist/scripts/cli/commands/quality/DoctorCommand.js.map +1 -1
  119. package/dist/scripts/cli/commands/quality/FixCommand.js +24 -29
  120. package/dist/scripts/cli/commands/quality/FixCommand.js.map +1 -1
  121. package/dist/scripts/cli/commands/quality/ReportCommand.js +8 -4
  122. package/dist/scripts/cli/commands/quality/ReportCommand.js.map +1 -1
  123. package/dist/scripts/cli/commands/quality/ValidateSpecsCommand.js +69 -16
  124. package/dist/scripts/cli/commands/quality/ValidateSpecsCommand.js.map +1 -1
  125. package/dist/scripts/cli/commands/spec/DoneCommand.js +37 -23
  126. package/dist/scripts/cli/commands/spec/DoneCommand.js.map +1 -1
  127. package/dist/scripts/cli/commands/spec/DraftCommand.js +166 -81
  128. package/dist/scripts/cli/commands/spec/DraftCommand.js.map +1 -1
  129. package/dist/scripts/cli/commands/spec/MatrixCommand.js +24 -27
  130. package/dist/scripts/cli/commands/spec/MatrixCommand.js.map +1 -1
  131. package/dist/scripts/cli/commands/spec/NewCommand.js +11 -14
  132. package/dist/scripts/cli/commands/spec/NewCommand.js.map +1 -1
  133. package/dist/scripts/cli/commands/spec/PetCommand.js +102 -0
  134. package/dist/scripts/cli/commands/spec/PetCommand.js.map +1 -0
  135. package/dist/scripts/cli/commands/spec/PlanCommand.js +34 -39
  136. package/dist/scripts/cli/commands/spec/PlanCommand.js.map +1 -1
  137. package/dist/scripts/cli/commands/spec/ReqCommand.js +51 -58
  138. package/dist/scripts/cli/commands/spec/ReqCommand.js.map +1 -1
  139. package/dist/scripts/cli/commands/spec/StatusCommand.js +59 -44
  140. package/dist/scripts/cli/commands/spec/StatusCommand.js.map +1 -1
  141. package/dist/scripts/cli/commands/spec/StudioCommand.js +16 -24
  142. package/dist/scripts/cli/commands/spec/StudioCommand.js.map +1 -1
  143. package/dist/scripts/cli/commands/specops/ContributeCommand.js +24 -32
  144. package/dist/scripts/cli/commands/specops/ContributeCommand.js.map +1 -1
  145. package/dist/scripts/cli/commands/specops/DiffCommand.js +3 -2
  146. package/dist/scripts/cli/commands/specops/DiffCommand.js.map +1 -1
  147. package/dist/scripts/cli/commands/specops/SyncCommand.js +4 -3
  148. package/dist/scripts/cli/commands/specops/SyncCommand.js.map +1 -1
  149. package/dist/scripts/docs/blocks.js +4 -4
  150. package/dist/scripts/docs/blocks.js.map +1 -1
  151. package/dist/scripts/docs/build-site.js +23 -8
  152. package/dist/scripts/docs/build-site.js.map +1 -1
  153. package/dist/scripts/docs/components.js +24 -24
  154. package/dist/scripts/docs/components.js.map +1 -1
  155. package/dist/scripts/docs/nav.js +8 -18
  156. package/dist/scripts/docs/nav.js.map +1 -1
  157. package/dist/scripts/docs/record-journey.js +2 -2
  158. package/dist/scripts/docs/record-journey.js.map +1 -1
  159. package/dist/scripts/docs/record-terminal.js +12 -12
  160. package/dist/scripts/docs/record-terminal.js.map +1 -1
  161. package/dist/scripts/draft/brief-setup.js +4 -0
  162. package/dist/scripts/draft/brief-setup.js.map +1 -1
  163. package/dist/scripts/draft/confined-agent.js +19 -0
  164. package/dist/scripts/draft/confined-agent.js.map +1 -1
  165. package/dist/scripts/draft/drafting-guide.js +3 -1
  166. package/dist/scripts/draft/drafting-guide.js.map +1 -1
  167. package/dist/scripts/gen_mcp_tools.js +4 -4
  168. package/dist/scripts/gen_mcp_tools.js.map +1 -1
  169. package/dist/scripts/harness/init.js +25 -16
  170. package/dist/scripts/harness/init.js.map +1 -1
  171. package/dist/scripts/harness/report.js +39 -40
  172. package/dist/scripts/harness/report.js.map +1 -1
  173. package/dist/scripts/harness/worktree-lock.js +2 -2
  174. package/dist/scripts/harness/worktree-lock.js.map +1 -1
  175. package/dist/scripts/lib/command.js +3 -2
  176. package/dist/scripts/lib/command.js.map +1 -1
  177. package/dist/scripts/lib/derived-writes.js +1 -1
  178. package/dist/scripts/lib/diagnostics.js +12 -16
  179. package/dist/scripts/lib/diagnostics.js.map +1 -1
  180. package/dist/scripts/lib/placeholders.js +4 -4
  181. package/dist/scripts/lib/placeholders.js.map +1 -1
  182. package/dist/scripts/lib/surface.js +25 -14
  183. package/dist/scripts/lib/surface.js.map +1 -1
  184. package/dist/scripts/lib/ui.js +356 -0
  185. package/dist/scripts/lib/ui.js.map +1 -0
  186. package/dist/scripts/merge-traceability.js +3 -3
  187. package/dist/scripts/pet/pet.js +331 -0
  188. package/dist/scripts/pet/pet.js.map +1 -0
  189. package/dist/scripts/pet.js +10 -0
  190. package/dist/scripts/pet.js.map +1 -0
  191. package/dist/scripts/plugin/gate-hook.js +1 -1
  192. package/dist/scripts/plugin/gate-hook.js.map +1 -1
  193. package/dist/scripts/schema/registry.js +2 -2
  194. package/dist/scripts/schema/registry.js.map +1 -1
  195. package/dist/scripts/specops/add.js +23 -32
  196. package/dist/scripts/specops/add.js.map +1 -1
  197. package/dist/scripts/specops/lock.js +4 -4
  198. package/dist/scripts/specops/lock.js.map +1 -1
  199. package/dist/scripts/specops/remove.js +15 -24
  200. package/dist/scripts/specops/remove.js.map +1 -1
  201. package/package.json +1 -2
@@ -65,7 +65,7 @@ ${subCases}
65
65
  esac
66
66
  fi
67
67
  }
68
- complete -F _specgate specgate csda create-spec-driven-app
68
+ complete -F _specgate specgate create-spec-driven-app
69
69
  `;
70
70
  }
71
71
  function zshScript() {
@@ -73,7 +73,7 @@ function zshScript() {
73
73
  const subCases = Object.entries(exports.SUBCOMMANDS)
74
74
  .map(([cmd, subs]) => ` ${cmd}) compadd ${subs.join(" ")} ;;`)
75
75
  .join("\n");
76
- return `#compdef specgate csda create-spec-driven-app
76
+ return `#compdef specgate create-spec-driven-app
77
77
  # specgate zsh completion
78
78
  _specgate() {
79
79
  if (( CURRENT == 2 )); then
@@ -86,7 +86,7 @@ ${subCases}
86
86
  esac
87
87
  fi
88
88
  }
89
- compdef _specgate specgate csda create-spec-driven-app
89
+ compdef _specgate specgate create-spec-driven-app
90
90
  `;
91
91
  }
92
92
  function fishScript() {
@@ -94,11 +94,11 @@ function fishScript() {
94
94
  "# specgate fish completion",
95
95
  "# Only complete the first word when no subcommand has been given yet.",
96
96
  `complete -c specgate -n __fish_use_subcommand -a "${exports.COMMANDS.join(" ")}"`,
97
- `complete -c csda -n __fish_use_subcommand -a "${exports.COMMANDS.join(" ")}"`,
97
+ `complete -c specgate -n __fish_use_subcommand -a "${exports.COMMANDS.join(" ")}"`,
98
98
  `complete -c create-spec-driven-app -n __fish_use_subcommand -a "${exports.COMMANDS.join(" ")}"`,
99
99
  ];
100
100
  for (const [cmd, subs] of Object.entries(exports.SUBCOMMANDS)) {
101
- lines.push(`complete -c specgate -n "__fish_seen_subcommand_from ${cmd}" -a "${subs.join(" ")}"`, `complete -c csda -n "__fish_seen_subcommand_from ${cmd}" -a "${subs.join(" ")}"`, `complete -c create-spec-driven-app -n "__fish_seen_subcommand_from ${cmd}" -a "${subs.join(" ")}"`);
101
+ lines.push(`complete -c specgate -n "__fish_seen_subcommand_from ${cmd}" -a "${subs.join(" ")}"`, `complete -c specgate -n "__fish_seen_subcommand_from ${cmd}" -a "${subs.join(" ")}"`, `complete -c create-spec-driven-app -n "__fish_seen_subcommand_from ${cmd}" -a "${subs.join(" ")}"`);
102
102
  }
103
103
  return `${lines.join("\n")}\n`;
104
104
  }
@@ -110,25 +110,25 @@ exports.GENERATORS = {
110
110
  function installTarget(shell) {
111
111
  const home = os.homedir();
112
112
  if (shell === "fish") {
113
- return { file: path.join(home, ".config/fish/completions/csda.fish"), autoloaded: true };
113
+ return { file: path.join(home, ".config/fish/completions/specgate.fish"), autoloaded: true };
114
114
  }
115
115
  if (shell === "zsh") {
116
116
  return {
117
- file: path.join(home, ".zsh/completions/_csda"),
117
+ file: path.join(home, ".zsh/completions/_specgate"),
118
118
  autoloaded: false,
119
119
  hint: "Add to ~/.zshrc: fpath=(~/.zsh/completions $fpath) && autoload -Uz compinit && compinit",
120
120
  };
121
121
  }
122
122
  return {
123
- file: path.join(home, ".csda-completion.bash"),
123
+ file: path.join(home, ".specgate-completion.bash"),
124
124
  autoloaded: false,
125
- hint: "Add to ~/.bashrc: source ~/.csda-completion.bash",
125
+ hint: "Add to ~/.bashrc: source ~/.specgate-completion.bash",
126
126
  };
127
127
  }
128
128
  function usage() {
129
129
  process.stderr.write("Usage: specgate completion <bash|zsh|fish> [--install]\n\n" +
130
130
  " specgate completion fish --install write it where fish already looks\n" +
131
- " specgate completion zsh > ~/.csda-completion.zsh\n" +
131
+ " specgate completion zsh > ~/.specgate-completion.zsh\n" +
132
132
  " specgate completion bash >> ~/.bashrc\n");
133
133
  }
134
134
  class CompletionCommand extends command_1.BaseCommand {
@@ -1 +1 @@
1
- {"version":3,"file":"CompletionCommand.js","sourceRoot":"","sources":["../../../../../scripts/cli/commands/config/CompletionCommand.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CompletionCommand.js","sourceRoot":"","sources":["../../../../../scripts/cli/commands/config/CompletionCommand.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASA,gCAwBC;AAED,8BAoBC;AAED,gCAgBC;AAQD,sCAiBC;AAlGD,4CAA8B;AAC9B,4CAA8B;AAC9B,gDAAkC;AAClC,kDAAqE;AACrE,kDAAmD;AAEtC,QAAA,QAAQ,GAAG,IAAA,sBAAY,GAAE,CAAC;AAC1B,QAAA,WAAW,GAA6B,IAAA,yBAAe,GAAE,CAAC;AAEvE,SAAgB,UAAU;IACxB,MAAM,IAAI,GAAG,gBAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChC,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,mBAAW,CAAC;SACzC,GAAG,CACF,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,SAAS,GAAG,+BAA+B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAC9F;SACA,IAAI,CAAC,IAAI,CAAC,CAAC;IACd,OAAO;;;;;;gCAMuB,IAAI;;;;;EAKlC,QAAQ;;;;;CAKT,CAAC;AACF,CAAC;AAED,SAAgB,SAAS;IACvB,MAAM,IAAI,GAAG,gBAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChC,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,mBAAW,CAAC;SACzC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,WAAW,GAAG,aAAa,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;SACpE,IAAI,CAAC,IAAI,CAAC,CAAC;IACd,OAAO;;;;cAIK,IAAI;;;;;EAKhB,QAAQ;;;;;CAKT,CAAC;AACF,CAAC;AAED,SAAgB,UAAU;IACxB,MAAM,KAAK,GAAG;QACZ,4BAA4B;QAC5B,uEAAuE;QACvE,qDAAqD,gBAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG;QAC1E,qDAAqD,gBAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG;QAC1E,mEAAmE,gBAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG;KACzF,CAAC;IACF,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,mBAAW,CAAC,EAAE,CAAC;QACtD,KAAK,CAAC,IAAI,CACR,wDAAwD,GAAG,SAAS,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EACrF,wDAAwD,GAAG,SAAS,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EACrF,sEAAsE,GAAG,SAAS,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CACpG,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACjC,CAAC;AAEY,QAAA,UAAU,GAAiC;IACtD,IAAI,EAAE,UAAU;IAChB,GAAG,EAAE,SAAS;IACd,IAAI,EAAE,UAAU;CACjB,CAAC;AAEF,SAAgB,aAAa,CAAC,KAAa;IACzC,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;IAC1B,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;QACrB,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,wCAAwC,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;IAC/F,CAAC;IACD,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;QACpB,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,4BAA4B,CAAC;YACnD,UAAU,EAAE,KAAK;YACjB,IAAI,EAAE,0FAA0F;SACjG,CAAC;IACJ,CAAC;IACD,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,2BAA2B,CAAC;QAClD,UAAU,EAAE,KAAK;QACjB,IAAI,EAAE,uDAAuD;KAC9D,CAAC;AACJ,CAAC;AAED,SAAS,KAAK;IACZ,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,4DAA4D;QAC1D,8EAA8E;QAC9E,0DAA0D;QAC1D,2CAA2C,CAC9C,CAAC;AACJ,CAAC;AAED,MAAa,iBAAkB,SAAQ,qBAAW;IACzC,OAAO;QACZ,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;QAEnD,IAAI,CAAC,KAAK,IAAI,CAAC,kBAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YACjC,KAAK,EAAE,CAAC;YACR,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9B,CAAC;QAED,MAAM,MAAM,GAAG,kBAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QAEnC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAC7B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;QACpC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7D,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QAE9C,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC,CAAC;QACrD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,KAAK,IAAI,CAAC,CAAC;QAC5C,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,MAAM,CAAC,UAAU;YACf,CAAC,CAAC,sDAAsD;YACxD,CAAC,CAAC,MAAM,MAAM,CAAC,IAAI,IAAI,CAC1B,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;CACF;AA/BD,8CA+BC"}
@@ -38,15 +38,7 @@ exports.parseArgs = parseArgs;
38
38
  const fs = __importStar(require("node:fs"));
39
39
  const path = __importStar(require("node:path"));
40
40
  const command_1 = require("../../../lib/command");
41
- const COLOR_ENABLED = process.stdout.isTTY && process.env.NO_COLOR === undefined && process.env.TERM !== "dumb";
42
- const c = {
43
- reset: COLOR_ENABLED ? "\x1b[0m" : "",
44
- bold: COLOR_ENABLED ? "\x1b[1m" : "",
45
- dim: COLOR_ENABLED ? "\x1b[2m" : "",
46
- red: COLOR_ENABLED ? "\x1b[31m" : "",
47
- green: COLOR_ENABLED ? "\x1b[32m" : "",
48
- cyan: COLOR_ENABLED ? "\x1b[36m" : "",
49
- };
41
+ const ui_1 = require("../../../lib/ui");
50
42
  exports.TEMPLATE = `# project.yaml — spec-driven project config
51
43
  # Fill these in, then: specgate init --config project.yaml --out .
52
44
  # Required keys:
@@ -63,13 +55,13 @@ TESTING: Vitest, Cucumber
63
55
  # MODULES: "auth,billing" # comma-separated feature modules
64
56
  `;
65
57
  function usage() {
66
- process.stdout.write(`\n ${c.bold}${c.cyan}⚙️ config init${c.reset} ${c.dim}— write a commented project.yaml starter${c.reset}\n\n` +
67
- ` ${c.bold}USAGE${c.reset}\n` +
68
- ` ${c.cyan}specgate config init${c.reset} [--out <path>] [--force]\n\n` +
69
- ` ${c.bold}OPTIONS${c.reset}\n` +
70
- ` ${c.green}--out <path>${c.reset} ${c.dim}Target file (default: ./project.yaml).${c.reset}\n` +
71
- ` ${c.green}--force${c.reset} ${c.dim}Overwrite if the file already exists.${c.reset}\n` +
72
- ` ${c.green}-h, --help${c.reset} ${c.dim}Show this help.${c.reset}\n\n`);
58
+ process.stdout.write(`\n ${ui_1.c.bold}${ui_1.c.cyan}⚙️ config init${ui_1.c.reset} ${ui_1.c.dim}— write a commented project.yaml starter${ui_1.c.reset}\n\n` +
59
+ ` ${ui_1.c.bold}USAGE${ui_1.c.reset}\n` +
60
+ ` ${ui_1.c.cyan}specgate config init${ui_1.c.reset} [--out <path>] [--force]\n\n` +
61
+ ` ${ui_1.c.bold}OPTIONS${ui_1.c.reset}\n` +
62
+ ` ${ui_1.c.green}--out <path>${ui_1.c.reset} ${ui_1.c.dim}Target file (default: ./project.yaml).${ui_1.c.reset}\n` +
63
+ ` ${ui_1.c.green}--force${ui_1.c.reset} ${ui_1.c.dim}Overwrite if the file already exists.${ui_1.c.reset}\n` +
64
+ ` ${ui_1.c.green}-h, --help${ui_1.c.reset} ${ui_1.c.dim}Show this help.${ui_1.c.reset}\n\n`);
73
65
  }
74
66
  function parseArgs(argv) {
75
67
  const opts = { out: "project.yaml", force: false };
@@ -95,12 +87,12 @@ class ConfigInitCommand extends command_1.BaseCommand {
95
87
  const opts = parseArgs(this.args);
96
88
  const dest = path.resolve(opts.out);
97
89
  if (fs.existsSync(dest) && !opts.force) {
98
- process.stderr.write(`${c.red}✖${c.reset} ${opts.out} already exists (use --force to overwrite).\n`);
90
+ process.stderr.write(`${ui_1.c.red}✖${ui_1.c.reset} ${opts.out} already exists (use --force to overwrite).\n`);
99
91
  process.exit(2);
100
92
  }
101
93
  fs.writeFileSync(dest, exports.TEMPLATE, "utf8");
102
- process.stdout.write(`${c.green}✔${c.reset} Wrote ${c.bold}${opts.out}${c.reset}\n` +
103
- ` ${c.dim}▶ next: edit the values, then \`specgate init --config ${opts.out} --out .\`${c.reset}\n`);
94
+ process.stdout.write(`${ui_1.c.green}✔${ui_1.c.reset} Wrote ${ui_1.c.bold}${opts.out}${ui_1.c.reset}\n` +
95
+ ` ${ui_1.c.dim}▶ next: edit the values, then \`specgate init --config ${opts.out} --out .\`${ui_1.c.reset}\n`);
104
96
  process.exit(0);
105
97
  }
106
98
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ConfigInitCommand.js","sourceRoot":"","sources":["../../../../../scripts/cli/commands/config/ConfigInitCommand.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgDA,8BAeC;AA/DD,4CAA8B;AAC9B,gDAAkC;AAClC,kDAAmD;AAEnD,MAAM,aAAa,GACjB,OAAO,CAAC,MAAM,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,KAAK,MAAM,CAAC;AAC5F,MAAM,CAAC,GAAG;IACR,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;IACrC,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;IACpC,GAAG,EAAE,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;IACnC,GAAG,EAAE,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;IACpC,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;IACtC,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;CACtC,CAAC;AAEW,QAAA,QAAQ,GAAG;;;;;;;;;;;;;;CAcvB,CAAC;AAEF,SAAS,KAAK;IACZ,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,OAAO,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,kBAAkB,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,GAAG,2CAA2C,CAAC,CAAC,KAAK,MAAM;QAC/G,KAAK,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,KAAK,IAAI;QAC9B,OAAO,CAAC,CAAC,IAAI,uBAAuB,CAAC,CAAC,KAAK,+BAA+B;QAC1E,KAAK,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,KAAK,IAAI;QAChC,OAAO,CAAC,CAAC,KAAK,eAAe,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,GAAG,yCAAyC,CAAC,CAAC,KAAK,IAAI;QAClG,OAAO,CAAC,CAAC,KAAK,UAAU,CAAC,CAAC,KAAK,UAAU,CAAC,CAAC,GAAG,wCAAwC,CAAC,CAAC,KAAK,IAAI;QACjG,OAAO,CAAC,CAAC,KAAK,aAAa,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,GAAG,kBAAkB,CAAC,CAAC,KAAK,MAAM,CAChF,CAAC;AACJ,CAAC;AAOD,SAAgB,SAAS,CAAC,IAAc;IACtC,MAAM,IAAI,GAAsB,EAAE,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IACtE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,IAAI,CAAC,KAAK,OAAO,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YAAE,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;aAClD,IAAI,CAAC,KAAK,SAAS;YAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;aACvC,IAAI,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;YACtC,KAAK,EAAE,CAAC;YACR,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;aAAM,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;YAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAa,iBAAkB,SAAQ,qBAAW;IACzC,OAAO;QACZ,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACpC,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YACvC,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,GAAG,+CAA+C,CAChF,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,gBAAQ,EAAE,MAAM,CAAC,CAAC;QACzC,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,WAAW,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,IAAI;YAC7D,MAAM,CAAC,CAAC,GAAG,0DAA0D,IAAI,CAAC,GAAG,aAAa,CAAC,CAAC,KAAK,IAAI,CACxG,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;CACF;AAjBD,8CAiBC"}
1
+ {"version":3,"file":"ConfigInitCommand.js","sourceRoot":"","sources":["../../../../../scripts/cli/commands/config/ConfigInitCommand.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuCA,8BAeC;AAtDD,4CAA8B;AAC9B,gDAAkC;AAClC,kDAAmD;AAEnD,wCAAoC;AAEvB,QAAA,QAAQ,GAAG;;;;;;;;;;;;;;CAcvB,CAAC;AAEF,SAAS,KAAK;IACZ,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,OAAO,MAAC,CAAC,IAAI,GAAG,MAAC,CAAC,IAAI,kBAAkB,MAAC,CAAC,KAAK,KAAK,MAAC,CAAC,GAAG,2CAA2C,MAAC,CAAC,KAAK,MAAM;QAC/G,KAAK,MAAC,CAAC,IAAI,QAAQ,MAAC,CAAC,KAAK,IAAI;QAC9B,OAAO,MAAC,CAAC,IAAI,uBAAuB,MAAC,CAAC,KAAK,+BAA+B;QAC1E,KAAK,MAAC,CAAC,IAAI,UAAU,MAAC,CAAC,KAAK,IAAI;QAChC,OAAO,MAAC,CAAC,KAAK,eAAe,MAAC,CAAC,KAAK,KAAK,MAAC,CAAC,GAAG,yCAAyC,MAAC,CAAC,KAAK,IAAI;QAClG,OAAO,MAAC,CAAC,KAAK,UAAU,MAAC,CAAC,KAAK,UAAU,MAAC,CAAC,GAAG,wCAAwC,MAAC,CAAC,KAAK,IAAI;QACjG,OAAO,MAAC,CAAC,KAAK,aAAa,MAAC,CAAC,KAAK,OAAO,MAAC,CAAC,GAAG,kBAAkB,MAAC,CAAC,KAAK,MAAM,CAChF,CAAC;AACJ,CAAC;AAOD,SAAgB,SAAS,CAAC,IAAc;IACtC,MAAM,IAAI,GAAsB,EAAE,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IACtE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,IAAI,CAAC,KAAK,OAAO,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YAAE,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;aAClD,IAAI,CAAC,KAAK,SAAS;YAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;aACvC,IAAI,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;YACtC,KAAK,EAAE,CAAC;YACR,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;aAAM,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;YAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAa,iBAAkB,SAAQ,qBAAW;IACzC,OAAO;QACZ,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACpC,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YACvC,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,GAAG,MAAC,CAAC,GAAG,IAAI,MAAC,CAAC,KAAK,KAAK,IAAI,CAAC,GAAG,+CAA+C,CAChF,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,gBAAQ,EAAE,MAAM,CAAC,CAAC;QACzC,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,GAAG,MAAC,CAAC,KAAK,IAAI,MAAC,CAAC,KAAK,WAAW,MAAC,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG,MAAC,CAAC,KAAK,IAAI;YAC7D,MAAM,MAAC,CAAC,GAAG,0DAA0D,IAAI,CAAC,GAAG,aAAa,MAAC,CAAC,KAAK,IAAI,CACxG,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;CACF;AAjBD,8CAiBC"}
@@ -43,7 +43,7 @@ const diagnostics_1 = require("../../../lib/diagnostics");
43
43
  const agent_1 = require("../../../lib/agent");
44
44
  const command_1 = require("../../../lib/command");
45
45
  const HarnessConfigFile_1 = require("../../../../packages/core/src/infrastructure/HarnessConfigFile");
46
- exports.CONFIG_DIR = ".csda";
46
+ exports.CONFIG_DIR = ".specgate";
47
47
  exports.CONFIG_FILE = "config.json";
48
48
  exports.KEYS = {
49
49
  profile: {
@@ -54,6 +54,10 @@ exports.KEYS = {
54
54
  values: null,
55
55
  describe: "Language for generated prose. Technical terms stay in English.",
56
56
  },
57
+ pet: {
58
+ values: ["on", "off"],
59
+ describe: "Whether Gato, the cat that keeps the gate, shows up at the end of `status`.",
60
+ },
57
61
  test_cmd: {
58
62
  values: null,
59
63
  describe: `The command \`check\` and \`done\` run as your tests. Kept in ${HarnessConfigFile_1.HARNESS_CONFIG_FILE}.`,
@@ -1 +1 @@
1
- {"version":3,"file":"ConfigSetCommand.js","sourceRoot":"","sources":["../../../../../scripts/cli/commands/config/ConfigSetCommand.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ConfigSetCommand.js","sourceRoot":"","sources":["../../../../../scripts/cli/commands/config/ConfigSetCommand.ts"],"names":[],"mappings":"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"}
@@ -66,6 +66,7 @@ exports.runLevels = runLevels;
66
66
  const run_with_deadline_1 = require("../../../lib/run-with-deadline");
67
67
  const MatrixCommand_1 = require("../spec/MatrixCommand");
68
68
  const derived_writes_1 = require("../../../lib/derived-writes");
69
+ const ui = __importStar(require("../../../lib/ui"));
69
70
  const fs = __importStar(require("node:fs"));
70
71
  const os = __importStar(require("node:os"));
71
72
  const path = __importStar(require("node:path"));
@@ -118,14 +119,27 @@ let jsonMode = false;
118
119
  function setJsonMode(on) {
119
120
  jsonMode = Boolean(on);
120
121
  }
122
+ /**
123
+ * A progress line. `REQ-001: attempt 1/3` is drawn with the requirement in its
124
+ * own column, so a run over many requirements reads down one edge; a line that
125
+ * starts with spaces continues the one above it.
126
+ */
127
+ function progressLine(mark, msg) {
128
+ const m = /^([A-Z][A-Z0-9]*-[\w.-]+): (.*)$/s.exec(msg);
129
+ if (m)
130
+ return ` ${mark} ${ui.c.accent}${ui.pad(m[1], 9)}${ui.c.reset} ${m[2]}\n`;
131
+ if (/^\s{2,}/.test(msg))
132
+ return ` ${ui.pad("", 9)} ${ui.muted(msg.trim())}\n`;
133
+ return ` ${mark} ${msg}\n`;
134
+ }
121
135
  function info(msg) {
122
- (jsonMode ? process.stderr : process.stdout).write(`ℹ️ [harness] ${msg}\n`);
136
+ (jsonMode ? process.stderr : process.stdout).write(progressLine(`${ui.c.brand}${ui.ASCII ? "*" : "◇"}${ui.c.reset}`, msg));
123
137
  }
124
138
  function warn(msg) {
125
- (jsonMode ? process.stderr : process.stdout).write(`⚠️ [harness] ${msg}\n`);
139
+ (jsonMode ? process.stderr : process.stdout).write(progressLine(`${ui.c.warn}${ui.sym.warn}${ui.c.reset}`, msg));
126
140
  }
127
141
  function error(msg) {
128
- process.stderr.write(`❌ [harness] ${msg}\n`);
142
+ process.stderr.write(ui.fail(msg));
129
143
  }
130
144
  function usage() {
131
145
  process.stdout.write("Usage:\n" +
@@ -534,7 +548,7 @@ function runAdversarialProbe(worktreeDir, req, settings, timeoutMs, promptFor) {
534
548
  `empty input, a boundary, a duplicate, a failure path. Write the test and ` +
535
549
  `nothing else. Do not modify the implementation, the specification or any ` +
536
550
  `existing test.`;
537
- const promptFile = path.join(os.tmpdir(), `csda-probe-${req.requirement}-${crypto.randomBytes(4).toString("hex")}.md`);
551
+ const promptFile = path.join(os.tmpdir(), `specgate-probe-${req.requirement}-${crypto.randomBytes(4).toString("hex")}.md`);
538
552
  try {
539
553
  fs.writeFileSync(promptFile, promptFor(instruction), "utf8");
540
554
  const agent = (0, node_child_process_1.spawnSync)((0, HarnessRun_1.substituteAgentCommand)(command, promptFile), {
@@ -848,7 +862,7 @@ function attemptRequirement(req, ctx) {
848
862
  // sibling requirement this same run happens to be writing.
849
863
  withPrecedents: settings.promptPrecedents === true,
850
864
  });
851
- const promptFile = path.join(os.tmpdir(), `csda-harness-prompt-${req.requirement}-${crypto.randomBytes(4).toString("hex")}.md`);
865
+ const promptFile = path.join(os.tmpdir(), `specgate-harness-prompt-${req.requirement}-${crypto.randomBytes(4).toString("hex")}.md`);
852
866
  fs.writeFileSync(promptFile, prompt, "utf8");
853
867
  archivePrompt(worktreeDir, req.requirement, attempt, step, prompt);
854
868
  // D1: a profile chosen by matching this requirement, when one matches.
@@ -1242,7 +1256,7 @@ function deriveBase(projectDir, reqId, deps, passed, ctx) {
1242
1256
  if (cut.status !== 0) {
1243
1257
  return { error: `could not create ${integration}: ${cut.stderr || cut.stdout}` };
1244
1258
  }
1245
- const worktree = path.join(os.tmpdir(), `csda-harness-base-${reqId}-${crypto.randomBytes(4).toString("hex")}`);
1259
+ const worktree = path.join(os.tmpdir(), `specgate-harness-base-${reqId}-${crypto.randomBytes(4).toString("hex")}`);
1246
1260
  const add = git(projectDir, ["worktree", "add", worktree, integration]);
1247
1261
  if (add.status !== 0) {
1248
1262
  return { error: `could not check out ${integration}: ${add.stderr || add.stdout}` };
@@ -1521,7 +1535,7 @@ function processRequirement(req, ctx) {
1521
1535
  .join(", ")}. Fix the blockers above, or drop --skip-not-ready to run it anyway.`,
1522
1536
  };
1523
1537
  }
1524
- const worktreeDir = path.join(os.tmpdir(), `csda-harness-${req.requirement}-${crypto.randomBytes(4).toString("hex")}`);
1538
+ const worktreeDir = path.join(os.tmpdir(), `specgate-harness-${req.requirement}-${crypto.randomBytes(4).toString("hex")}`);
1525
1539
  // Three ways to meet an existing branch, and until C3 there were only two:
1526
1540
  // skip it, or delete it with --force. After an interruption — a crash, a
1527
1541
  // Ctrl-C, a spend limit — neither is what anyone wants.
@@ -1700,7 +1714,7 @@ function publishBranch(projectDir, branch, req, settings) {
1700
1714
  * enough that ten failed requirements do not bury the summary.
1701
1715
  */
1702
1716
  const FAILURE_TAIL_LINES = 20;
1703
- function printReport(results, format) {
1717
+ function printReport(results, format, recorded) {
1704
1718
  if (format === "json") {
1705
1719
  const summary = results.reduce((acc, r) => {
1706
1720
  acc[r.result] = (acc[r.result] || 0) + 1;
@@ -1709,19 +1723,24 @@ function printReport(results, format) {
1709
1723
  process.stdout.write(JSON.stringify({ schemaVersion: 1, total: results.length, summary, results }, null, 2) + "\n");
1710
1724
  return;
1711
1725
  }
1712
- process.stdout.write("\n── harness report ──\n");
1726
+ const MARK = {
1727
+ pass: `${ui.c.ok}${ui.sym.ok}${ui.c.reset}`,
1728
+ fail: `${ui.c.bad}${ui.sym.fail}${ui.c.reset}`,
1729
+ blocked: `${ui.c.warn}${ui.sym.warn}${ui.c.reset}`,
1730
+ skipped: `${ui.c.muted}${ui.sym.empty}${ui.c.reset}`,
1731
+ };
1732
+ const COLOR = { pass: ui.c.ok, fail: ui.c.bad, blocked: ui.c.warn, skipped: ui.c.muted };
1733
+ const idWidth = Math.max(9, ...results.map((r) => String(r.requirement).length));
1734
+ process.stdout.write("\n" + ui.section("Harness report"));
1713
1735
  for (const r of results) {
1714
- const icon = r.result === "pass"
1715
- ? "✅"
1716
- : r.result === "skipped"
1717
- ? "⏭️ "
1718
- : r.result === "blocked"
1719
- ? "⛔"
1720
- : "❌";
1721
- process.stdout.write(` ${icon} ${r.requirement} ${r.result} (${r.attempts} attempt${r.attempts === 1 ? "" : "s"}) → ${r.branch}\n`);
1736
+ process.stdout.write(` ${MARK[r.result] || MARK.fail} ${ui.c.bold}${ui.pad(String(r.requirement), idWidth)}${ui.c.reset} ` +
1737
+ `${COLOR[r.result] || ""}${ui.pad(r.result, 8)}${ui.c.reset}` +
1738
+ ui.muted(`${r.attempts} attempt${r.attempts === 1 ? "" : "s"}`) +
1739
+ ` ${ui.c.accent}${ui.sym.arrow} ${r.branch}${ui.c.reset}\n`);
1740
+ const sub = (t) => process.stdout.write(` ${t}\n`);
1722
1741
  if (r.result === "blocked") {
1723
1742
  // Nothing ran, so there is no gate output to show — only the reason.
1724
- process.stdout.write(` ${r.error}\n`);
1743
+ sub(r.error);
1725
1744
  continue;
1726
1745
  }
1727
1746
  if (r.result !== "pass" && r.error) {
@@ -1736,24 +1755,24 @@ function printReport(results, format) {
1736
1755
  .slice(1)
1737
1756
  .filter((l) => l.trim() !== "")
1738
1757
  .slice(-FAILURE_TAIL_LINES);
1739
- process.stdout.write(` ${head}\n`);
1758
+ sub(head);
1740
1759
  for (const line of tail)
1741
- process.stdout.write(` │ ${line}\n`);
1760
+ sub(`${ui.muted(ui.sym.pipe)} ${line}`);
1742
1761
  if (tail.length > 0) {
1743
- process.stdout.write(" └ full output: --format json · reproduce: --keep-worktrees\n");
1762
+ sub(ui.muted(`${ui.sym.corner} full output: --format json · reproduce: --keep-worktrees`));
1744
1763
  }
1745
1764
  if (r.workPreserved) {
1746
- process.stdout.write(` ↳ the attempt is committed on ${r.branch} — review it\n`);
1765
+ sub(ui.muted(`↳ the attempt is committed on ${r.branch} — review it`));
1747
1766
  }
1748
1767
  else if (r.result === "fail") {
1749
- process.stdout.write(" ↳ the agent produced no files\n");
1768
+ sub(ui.muted("↳ the agent produced no files"));
1750
1769
  }
1751
1770
  }
1752
1771
  if (r.pushed) {
1753
- process.stdout.write(` pushed${r.prCreated ? ` · PR created${r.prOutput ? `: ${r.prOutput}` : ""}` : ""}\n`);
1772
+ sub(ui.muted(`pushed${r.prCreated ? ` · PR created${r.prOutput ? `: ${r.prOutput}` : ""}` : ""}`));
1754
1773
  }
1755
1774
  if (r.publishError) {
1756
- process.stdout.write(` publish issue: ${String(r.publishError).split("\n")[0]}\n`);
1775
+ sub(`${ui.c.warn}publish issue:${ui.c.reset} ${String(r.publishError).split("\n")[0]}`);
1757
1776
  }
1758
1777
  }
1759
1778
  const pass = results.filter((r) => r.result === "pass").length;
@@ -1764,9 +1783,18 @@ function printReport(results, format) {
1764
1783
  // used to produce N failures and N wasted agent invocations, which said
1765
1784
  // nothing about the N-1 requirements that were never attempted.
1766
1785
  const blockedNote = blocked > 0 ? ` · ${blocked} blocked` : "";
1767
- process.stdout.write(`\n ${pass} passed · ${fail} failed · ${skip} skipped${blockedNote}\n`);
1786
+ process.stdout.write(`\n ${ui.progress(pass, results.length, "passed")}` +
1787
+ ui.muted(` ${pass} passed · ${fail} failed · ${skip} skipped${blockedNote}`) +
1788
+ "\n");
1789
+ if (recorded) {
1790
+ process.stdout.write(` ${ui.muted(`Run recorded in ${recorded} — specgate harness report sums them up`)}\n`);
1791
+ }
1768
1792
  if (pass > 0) {
1769
- process.stdout.write(` Review and merge the harness/* branches you trust.\n`);
1793
+ const first = results.find((r) => r.result === "pass");
1794
+ process.stdout.write(ui.next(`git diff HEAD...${first.branch}`, "review and merge the harness/* branches you trust"));
1795
+ }
1796
+ else {
1797
+ process.stdout.write("\n");
1770
1798
  }
1771
1799
  }
1772
1800
  /**
@@ -1839,7 +1867,7 @@ function runWorkers(runnable, byId, ctx, concurrency) {
1839
1867
  continue;
1840
1868
  }
1841
1869
  const child = (0, node_child_process_1.spawn)(process.execPath, [WORKER_ENTRY, ...workerArgs(id, ctx)], {
1842
- env: { ...process.env, CSDA_HARNESS_WORKER: "1" },
1870
+ env: { ...process.env, SPECGATE_HARNESS_WORKER: "1" },
1843
1871
  });
1844
1872
  let stdout = "";
1845
1873
  let stderr = "";
@@ -2131,19 +2159,24 @@ class RunCommand extends command_1.BaseCommand {
2131
2159
  }
2132
2160
  }
2133
2161
  if (pending.length === 0) {
2134
- info("No pending requirements. Nothing to do.");
2162
+ if (jsonMode)
2163
+ info("No pending requirements. Nothing to do.");
2164
+ else
2165
+ process.stdout.write(ui.header("harness run") + ui.ok("No pending requirements. Nothing to do.") + "\n");
2135
2166
  process.exit(0);
2136
2167
  }
2137
2168
  const hintByReq = new Map((plan.next_steps || []).map((s) => [s.requirement, s.hint]));
2138
2169
  if (args.dryRun) {
2139
- info(`Dry run — ${pending.length} requirement(s) would be processed:`);
2170
+ process.stdout.write(ui.header("harness run", `dry run · ${pending.length} requirement(s) would be processed`));
2140
2171
  for (const req of pending) {
2141
2172
  const prompt = (0, prompt_1.buildPrompt)(req, projectDir, {
2142
2173
  promptPrefix: settings.promptPrefix,
2143
2174
  hint: hintByReq.get(req.requirement),
2144
2175
  withPrecedents: settings.promptPrecedents === true,
2145
2176
  });
2146
- process.stdout.write(`\n${"═".repeat(72)}\n${req.requirement} (${req.category}) → branch harness/${req.requirement}\n${"═".repeat(72)}\n`);
2177
+ process.stdout.write("\n" +
2178
+ ui.section(`${req.requirement} · ${req.category} → branch harness/${req.requirement}`) +
2179
+ "\n");
2147
2180
  process.stdout.write(prompt + "\n");
2148
2181
  }
2149
2182
  process.exit(0);
@@ -2162,12 +2195,17 @@ class RunCommand extends command_1.BaseCommand {
2162
2195
  throw new Error(identity);
2163
2196
  const baseRef = args.baseBranch || "HEAD";
2164
2197
  const concurrencyNote = settings.concurrency > 1 ? `, up to ${settings.concurrency} at a time` : "";
2165
- info(`Processing ${pending.length} requirement(s) from base ${baseRef}${concurrencyNote}.`);
2198
+ if (jsonMode || process.env.SPECGATE_HARNESS_WORKER) {
2199
+ info(`Processing ${pending.length} requirement(s) from base ${baseRef}${concurrencyNote}.`);
2200
+ }
2201
+ else {
2202
+ process.stdout.write(ui.header("harness run", `${pending.length} requirement(s) from ${baseRef}${concurrencyNote}`));
2203
+ }
2166
2204
  // One prune, in the parent, before anything is created. It used to run per
2167
2205
  // requirement, which is harmless in series and a race in parallel:
2168
2206
  // `git worktree prune` running while a sibling is inside
2169
2207
  // `git worktree add` can remove the record of the worktree being created.
2170
- if (!process.env.CSDA_HARNESS_WORKER) {
2208
+ if (!process.env.SPECGATE_HARNESS_WORKER) {
2171
2209
  git(projectDir, ["worktree", "prune"]);
2172
2210
  }
2173
2211
  const ctx = {
@@ -2195,7 +2233,7 @@ class RunCommand extends command_1.BaseCommand {
2195
2233
  // slice of that run, and its own record would be a second copy of the
2196
2234
  // same requirement — `harness report` reads every file in the directory,
2197
2235
  // so duplicates land straight in "cost per delivered REQ".
2198
- const recordPath = process.env.CSDA_HARNESS_WORKER
2236
+ const recordPath = process.env.SPECGATE_HARNESS_WORKER
2199
2237
  ? null
2200
2238
  : writeRunRecord(projectDir, {
2201
2239
  schemaVersion: 1,
@@ -2212,10 +2250,7 @@ class RunCommand extends command_1.BaseCommand {
2212
2250
  }),
2213
2251
  results,
2214
2252
  });
2215
- printReport(results, args.format);
2216
- if (recordPath && args.format !== "json") {
2217
- info(`Run recorded in ${path.relative(projectDir, recordPath)} — \`specgate harness report\``);
2218
- }
2253
+ printReport(results, args.format, recordPath ? path.relative(projectDir, recordPath) : undefined);
2219
2254
  // A blocked requirement was never attempted, so it is not a pass — but it
2220
2255
  // is also not evidence that anything is broken beyond the failure that
2221
2256
  // caused it. It still fails the run, because work was left undone.