@rsaglobaltech/specgate 0.8.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 (494) hide show
  1. package/CHANGELOG.md +1016 -0
  2. package/README.md +148 -0
  3. package/bin/specgate.js +2 -0
  4. package/bin/specgate.ts +383 -0
  5. package/dist/bin/specgate.js +342 -0
  6. package/dist/bin/specgate.js.map +1 -0
  7. package/dist/packages/core/src/application/AddRequirementUseCase.js +24 -0
  8. package/dist/packages/core/src/application/AddRequirementUseCase.js.map +1 -0
  9. package/dist/packages/core/src/application/ArchiveChangeUseCase.js +185 -0
  10. package/dist/packages/core/src/application/ArchiveChangeUseCase.js.map +1 -0
  11. package/dist/packages/core/src/application/CheckAgainstLockUseCase.js +134 -0
  12. package/dist/packages/core/src/application/CheckAgainstLockUseCase.js.map +1 -0
  13. package/dist/packages/core/src/application/GenerateAgentPromptUseCase.js +25 -0
  14. package/dist/packages/core/src/application/GenerateAgentPromptUseCase.js.map +1 -0
  15. package/dist/packages/core/src/application/GeneratePlanUseCase.js +135 -0
  16. package/dist/packages/core/src/application/GeneratePlanUseCase.js.map +1 -0
  17. package/dist/packages/core/src/application/LinkRequirementUseCase.js +25 -0
  18. package/dist/packages/core/src/application/LinkRequirementUseCase.js.map +1 -0
  19. package/dist/packages/core/src/application/RemovePackUseCase.js +28 -0
  20. package/dist/packages/core/src/application/RemovePackUseCase.js.map +1 -0
  21. package/dist/packages/core/src/application/UpdateRequirementStatusUseCase.js +37 -0
  22. package/dist/packages/core/src/application/UpdateRequirementStatusUseCase.js.map +1 -0
  23. package/dist/packages/core/src/application/ValidateChangeUseCase.js +86 -0
  24. package/dist/packages/core/src/application/ValidateChangeUseCase.js.map +1 -0
  25. package/dist/packages/core/src/application/ValidateProjectUseCase.js +101 -0
  26. package/dist/packages/core/src/application/ValidateProjectUseCase.js.map +1 -0
  27. package/dist/packages/core/src/application/ports/IDomainPackRepository.js +3 -0
  28. package/dist/packages/core/src/application/ports/IDomainPackRepository.js.map +1 -0
  29. package/dist/packages/core/src/application/ports/IHarnessConfigRepository.js +3 -0
  30. package/dist/packages/core/src/application/ports/IHarnessConfigRepository.js.map +1 -0
  31. package/dist/packages/core/src/application/ports/ILockfileRepository.js +3 -0
  32. package/dist/packages/core/src/application/ports/ILockfileRepository.js.map +1 -0
  33. package/dist/packages/core/src/application/ports/IManifestRepository.js +3 -0
  34. package/dist/packages/core/src/application/ports/IManifestRepository.js.map +1 -0
  35. package/dist/packages/core/src/application/ports/IProjectRepository.js +3 -0
  36. package/dist/packages/core/src/application/ports/IProjectRepository.js.map +1 -0
  37. package/dist/packages/core/src/application/ports/IRequirementGraphRepository.js +3 -0
  38. package/dist/packages/core/src/application/ports/IRequirementGraphRepository.js.map +1 -0
  39. package/dist/packages/core/src/application/ports/ITraceabilityRepository.js +3 -0
  40. package/dist/packages/core/src/application/ports/ITraceabilityRepository.js.map +1 -0
  41. package/dist/packages/core/src/domain/AgentPrompt.js +79 -0
  42. package/dist/packages/core/src/domain/AgentPrompt.js.map +1 -0
  43. package/dist/packages/core/src/domain/ArchivePlan.js +26 -0
  44. package/dist/packages/core/src/domain/ArchivePlan.js.map +1 -0
  45. package/dist/packages/core/src/domain/AuthoringScope.js +48 -0
  46. package/dist/packages/core/src/domain/AuthoringScope.js.map +1 -0
  47. package/dist/packages/core/src/domain/ChangeTemplates.js +133 -0
  48. package/dist/packages/core/src/domain/ChangeTemplates.js.map +1 -0
  49. package/dist/packages/core/src/domain/CucumberMessages.js +256 -0
  50. package/dist/packages/core/src/domain/CucumberMessages.js.map +1 -0
  51. package/dist/packages/core/src/domain/DeclaredArtifacts.js +117 -0
  52. package/dist/packages/core/src/domain/DeclaredArtifacts.js.map +1 -0
  53. package/dist/packages/core/src/domain/DeltaSpec.js +219 -0
  54. package/dist/packages/core/src/domain/DeltaSpec.js.map +1 -0
  55. package/dist/packages/core/src/domain/Diagnostic.js +75 -0
  56. package/dist/packages/core/src/domain/Diagnostic.js.map +1 -0
  57. package/dist/packages/core/src/domain/DomainPack.js +62 -0
  58. package/dist/packages/core/src/domain/DomainPack.js.map +1 -0
  59. package/dist/packages/core/src/domain/EmptyAttempt.js +60 -0
  60. package/dist/packages/core/src/domain/EmptyAttempt.js.map +1 -0
  61. package/dist/packages/core/src/domain/FileChangeSet.js +37 -0
  62. package/dist/packages/core/src/domain/FileChangeSet.js.map +1 -0
  63. package/dist/packages/core/src/domain/Gherkin.js +272 -0
  64. package/dist/packages/core/src/domain/Gherkin.js.map +1 -0
  65. package/dist/packages/core/src/domain/GherkinDialects.js +97 -0
  66. package/dist/packages/core/src/domain/GherkinDialects.js.map +1 -0
  67. package/dist/packages/core/src/domain/GherkinQuality.js +160 -0
  68. package/dist/packages/core/src/domain/GherkinQuality.js.map +1 -0
  69. package/dist/packages/core/src/domain/GherkinTags.js +119 -0
  70. package/dist/packages/core/src/domain/GherkinTags.js.map +1 -0
  71. package/dist/packages/core/src/domain/GitSafety.js +77 -0
  72. package/dist/packages/core/src/domain/GitSafety.js.map +1 -0
  73. package/dist/packages/core/src/domain/HarnessConfig.js +58 -0
  74. package/dist/packages/core/src/domain/HarnessConfig.js.map +1 -0
  75. package/dist/packages/core/src/domain/HarnessReport.js +162 -0
  76. package/dist/packages/core/src/domain/HarnessReport.js.map +1 -0
  77. package/dist/packages/core/src/domain/HarnessRun.js +154 -0
  78. package/dist/packages/core/src/domain/HarnessRun.js.map +1 -0
  79. package/dist/packages/core/src/domain/InboundChange.js +127 -0
  80. package/dist/packages/core/src/domain/InboundChange.js.map +1 -0
  81. package/dist/packages/core/src/domain/Language.js +112 -0
  82. package/dist/packages/core/src/domain/Language.js.map +1 -0
  83. package/dist/packages/core/src/domain/Lockfile.js +64 -0
  84. package/dist/packages/core/src/domain/Lockfile.js.map +1 -0
  85. package/dist/packages/core/src/domain/PackContribution.js +106 -0
  86. package/dist/packages/core/src/domain/PackContribution.js.map +1 -0
  87. package/dist/packages/core/src/domain/PackDelta.js +298 -0
  88. package/dist/packages/core/src/domain/PackDelta.js.map +1 -0
  89. package/dist/packages/core/src/domain/PackSpec.js +481 -0
  90. package/dist/packages/core/src/domain/PackSpec.js.map +1 -0
  91. package/dist/packages/core/src/domain/ProfileMatch.js +87 -0
  92. package/dist/packages/core/src/domain/ProfileMatch.js.map +1 -0
  93. package/dist/packages/core/src/domain/Reconciliation.js +72 -0
  94. package/dist/packages/core/src/domain/Reconciliation.js.map +1 -0
  95. package/dist/packages/core/src/domain/RequirementGraph.js +197 -0
  96. package/dist/packages/core/src/domain/RequirementGraph.js.map +1 -0
  97. package/dist/packages/core/src/domain/RequirementPlan.js +85 -0
  98. package/dist/packages/core/src/domain/RequirementPlan.js.map +1 -0
  99. package/dist/packages/core/src/domain/RequirementReadiness.js +115 -0
  100. package/dist/packages/core/src/domain/RequirementReadiness.js.map +1 -0
  101. package/dist/packages/core/src/domain/RequirementSyntax.js +91 -0
  102. package/dist/packages/core/src/domain/RequirementSyntax.js.map +1 -0
  103. package/dist/packages/core/src/domain/ResumeState.js +115 -0
  104. package/dist/packages/core/src/domain/ResumeState.js.map +1 -0
  105. package/dist/packages/core/src/domain/RunBudget.js +103 -0
  106. package/dist/packages/core/src/domain/RunBudget.js.map +1 -0
  107. package/dist/packages/core/src/domain/SpecDiff.js +48 -0
  108. package/dist/packages/core/src/domain/SpecDiff.js.map +1 -0
  109. package/dist/packages/core/src/domain/SpecParser.js +406 -0
  110. package/dist/packages/core/src/domain/SpecParser.js.map +1 -0
  111. package/dist/packages/core/src/domain/SpecopsManifest.js +90 -0
  112. package/dist/packages/core/src/domain/SpecopsManifest.js.map +1 -0
  113. package/dist/packages/core/src/domain/TraceabilityFormat.js +317 -0
  114. package/dist/packages/core/src/domain/TraceabilityFormat.js.map +1 -0
  115. package/dist/packages/core/src/domain/TraceabilityMatrix.js +200 -0
  116. package/dist/packages/core/src/domain/TraceabilityMatrix.js.map +1 -0
  117. package/dist/packages/core/src/domain/TraceabilityMerge.js +180 -0
  118. package/dist/packages/core/src/domain/TraceabilityMerge.js.map +1 -0
  119. package/dist/packages/core/src/domain/ValidationReport.js +53 -0
  120. package/dist/packages/core/src/domain/ValidationReport.js.map +1 -0
  121. package/dist/packages/core/src/domain/ValueAnnotations.js +138 -0
  122. package/dist/packages/core/src/domain/ValueAnnotations.js.map +1 -0
  123. package/dist/packages/core/src/domain/WriteScope.js +155 -0
  124. package/dist/packages/core/src/domain/WriteScope.js.map +1 -0
  125. package/dist/packages/core/src/domain/YamlLite.js +226 -0
  126. package/dist/packages/core/src/domain/YamlLite.js.map +1 -0
  127. package/dist/packages/core/src/index.js +120 -0
  128. package/dist/packages/core/src/index.js.map +1 -0
  129. package/dist/packages/core/src/infrastructure/ChangeWorkspace.js +276 -0
  130. package/dist/packages/core/src/infrastructure/ChangeWorkspace.js.map +1 -0
  131. package/dist/packages/core/src/infrastructure/ConsoleReporter.js +19 -0
  132. package/dist/packages/core/src/infrastructure/ConsoleReporter.js.map +1 -0
  133. package/dist/packages/core/src/infrastructure/DirectorySnapshot.js +106 -0
  134. package/dist/packages/core/src/infrastructure/DirectorySnapshot.js.map +1 -0
  135. package/dist/packages/core/src/infrastructure/DiskDomainPackRepository.js +57 -0
  136. package/dist/packages/core/src/infrastructure/DiskDomainPackRepository.js.map +1 -0
  137. package/dist/packages/core/src/infrastructure/DiskHarnessConfigRepository.js +58 -0
  138. package/dist/packages/core/src/infrastructure/DiskHarnessConfigRepository.js.map +1 -0
  139. package/dist/packages/core/src/infrastructure/DiskLanguageRepository.js +69 -0
  140. package/dist/packages/core/src/infrastructure/DiskLanguageRepository.js.map +1 -0
  141. package/dist/packages/core/src/infrastructure/DiskLockfileRepository.js +64 -0
  142. package/dist/packages/core/src/infrastructure/DiskLockfileRepository.js.map +1 -0
  143. package/dist/packages/core/src/infrastructure/DiskManifestRepository.js +88 -0
  144. package/dist/packages/core/src/infrastructure/DiskManifestRepository.js.map +1 -0
  145. package/dist/packages/core/src/infrastructure/DiskPackDeltaRepository.js +138 -0
  146. package/dist/packages/core/src/infrastructure/DiskPackDeltaRepository.js.map +1 -0
  147. package/dist/packages/core/src/infrastructure/DiskPackRepository.js +130 -0
  148. package/dist/packages/core/src/infrastructure/DiskPackRepository.js.map +1 -0
  149. package/dist/packages/core/src/infrastructure/DiskProjectRepository.js +127 -0
  150. package/dist/packages/core/src/infrastructure/DiskProjectRepository.js.map +1 -0
  151. package/dist/packages/core/src/infrastructure/DiskRequirementGraphRepository.js +124 -0
  152. package/dist/packages/core/src/infrastructure/DiskRequirementGraphRepository.js.map +1 -0
  153. package/dist/packages/core/src/infrastructure/DiskTraceabilityRepository.js +53 -0
  154. package/dist/packages/core/src/infrastructure/DiskTraceabilityRepository.js.map +1 -0
  155. package/dist/packages/core/src/infrastructure/GitContributionStager.js +99 -0
  156. package/dist/packages/core/src/infrastructure/GitContributionStager.js.map +1 -0
  157. package/dist/packages/core/src/infrastructure/GitMergeDriver.js +103 -0
  158. package/dist/packages/core/src/infrastructure/GitMergeDriver.js.map +1 -0
  159. package/dist/packages/core/src/infrastructure/HarnessConfigFile.js +348 -0
  160. package/dist/packages/core/src/infrastructure/HarnessConfigFile.js.map +1 -0
  161. package/dist/packages/core/src/infrastructure/PackChangeDeposit.js +106 -0
  162. package/dist/packages/core/src/infrastructure/PackChangeDeposit.js.map +1 -0
  163. package/dist/packages/core/src/infrastructure/RemotePackResolver.js +181 -0
  164. package/dist/packages/core/src/infrastructure/RemotePackResolver.js.map +1 -0
  165. package/dist/packages/core/src/infrastructure/SpecopsConfigFile.js +94 -0
  166. package/dist/packages/core/src/infrastructure/SpecopsConfigFile.js.map +1 -0
  167. package/dist/packages/core/test/unit/authoring-scope.test.js +102 -0
  168. package/dist/packages/core/test/unit/authoring-scope.test.js.map +1 -0
  169. package/dist/packages/core/test/unit/change-templates.test.js +96 -0
  170. package/dist/packages/core/test/unit/change-templates.test.js.map +1 -0
  171. package/dist/packages/core/test/unit/cucumber-messages.test.js +232 -0
  172. package/dist/packages/core/test/unit/cucumber-messages.test.js.map +1 -0
  173. package/dist/packages/core/test/unit/declared-artifacts.test.js +124 -0
  174. package/dist/packages/core/test/unit/declared-artifacts.test.js.map +1 -0
  175. package/dist/packages/core/test/unit/empty-attempt.test.js +79 -0
  176. package/dist/packages/core/test/unit/empty-attempt.test.js.map +1 -0
  177. package/dist/packages/core/test/unit/gherkin-dialects.test.js +115 -0
  178. package/dist/packages/core/test/unit/gherkin-dialects.test.js.map +1 -0
  179. package/dist/packages/core/test/unit/gherkin-keyword-case.test.js +110 -0
  180. package/dist/packages/core/test/unit/gherkin-keyword-case.test.js.map +1 -0
  181. package/dist/packages/core/test/unit/gherkin-quality.test.js +151 -0
  182. package/dist/packages/core/test/unit/gherkin-quality.test.js.map +1 -0
  183. package/dist/packages/core/test/unit/gherkin-tags.test.js +127 -0
  184. package/dist/packages/core/test/unit/gherkin-tags.test.js.map +1 -0
  185. package/dist/packages/core/test/unit/git-safety.test.js +104 -0
  186. package/dist/packages/core/test/unit/git-safety.test.js.map +1 -0
  187. package/dist/packages/core/test/unit/harness-report.test.js +192 -0
  188. package/dist/packages/core/test/unit/harness-report.test.js.map +1 -0
  189. package/dist/packages/core/test/unit/harness-roles.test.js +86 -0
  190. package/dist/packages/core/test/unit/harness-roles.test.js.map +1 -0
  191. package/dist/packages/core/test/unit/inbound-change.test.js +145 -0
  192. package/dist/packages/core/test/unit/inbound-change.test.js.map +1 -0
  193. package/dist/packages/core/test/unit/matrix-dependencies.test.js +100 -0
  194. package/dist/packages/core/test/unit/matrix-dependencies.test.js.map +1 -0
  195. package/dist/packages/core/test/unit/profile-match.test.js +115 -0
  196. package/dist/packages/core/test/unit/profile-match.test.js.map +1 -0
  197. package/dist/packages/core/test/unit/reconciliation.test.js +112 -0
  198. package/dist/packages/core/test/unit/reconciliation.test.js.map +1 -0
  199. package/dist/packages/core/test/unit/requirement-readiness.test.js +161 -0
  200. package/dist/packages/core/test/unit/requirement-readiness.test.js.map +1 -0
  201. package/dist/packages/core/test/unit/resume-state.test.js +124 -0
  202. package/dist/packages/core/test/unit/resume-state.test.js.map +1 -0
  203. package/dist/packages/core/test/unit/run-budget.test.js +113 -0
  204. package/dist/packages/core/test/unit/run-budget.test.js.map +1 -0
  205. package/dist/packages/core/test/unit/traceability-merge.test.js +159 -0
  206. package/dist/packages/core/test/unit/traceability-merge.test.js.map +1 -0
  207. package/dist/packages/core/test/unit/validate-project.test.js +156 -0
  208. package/dist/packages/core/test/unit/validate-project.test.js.map +1 -0
  209. package/dist/packages/core/test/unit/value-annotations.test.js +149 -0
  210. package/dist/packages/core/test/unit/value-annotations.test.js.map +1 -0
  211. package/dist/packages/core/test/unit/write-scope.test.js +165 -0
  212. package/dist/packages/core/test/unit/write-scope.test.js.map +1 -0
  213. package/dist/packages/core/test/unit/yaml-lite.test.js +78 -0
  214. package/dist/packages/core/test/unit/yaml-lite.test.js.map +1 -0
  215. package/dist/scripts/adopt_project.js +11 -0
  216. package/dist/scripts/adopt_project.js.map +1 -0
  217. package/dist/scripts/agents/commands.js +100 -0
  218. package/dist/scripts/agents/commands.js.map +1 -0
  219. package/dist/scripts/agents/init.js +482 -0
  220. package/dist/scripts/agents/init.js.map +1 -0
  221. package/dist/scripts/alm/cli.js +154 -0
  222. package/dist/scripts/alm/cli.js.map +1 -0
  223. package/dist/scripts/alm/clients.js +30 -0
  224. package/dist/scripts/alm/clients.js.map +1 -0
  225. package/dist/scripts/alm/core.js +258 -0
  226. package/dist/scripts/alm/core.js.map +1 -0
  227. package/dist/scripts/alm/port.js +116 -0
  228. package/dist/scripts/alm/port.js.map +1 -0
  229. package/dist/scripts/alm/providers/azure.js +79 -0
  230. package/dist/scripts/alm/providers/azure.js.map +1 -0
  231. package/dist/scripts/alm/providers/github.js +124 -0
  232. package/dist/scripts/alm/providers/github.js.map +1 -0
  233. package/dist/scripts/alm/providers/http-client.js +47 -0
  234. package/dist/scripts/alm/providers/http-client.js.map +1 -0
  235. package/dist/scripts/alm/providers/index.js +107 -0
  236. package/dist/scripts/alm/providers/index.js.map +1 -0
  237. package/dist/scripts/alm/providers/jira.js +129 -0
  238. package/dist/scripts/alm/providers/jira.js.map +1 -0
  239. package/dist/scripts/bundle_pack.js +10 -0
  240. package/dist/scripts/bundle_pack.js.map +1 -0
  241. package/dist/scripts/change/archive.js +68 -0
  242. package/dist/scripts/change/archive.js.map +1 -0
  243. package/dist/scripts/change/artifacts.js +143 -0
  244. package/dist/scripts/change/artifacts.js.map +1 -0
  245. package/dist/scripts/change/cli.js +39 -0
  246. package/dist/scripts/change/cli.js.map +1 -0
  247. package/dist/scripts/change/delta.js +20 -0
  248. package/dist/scripts/change/delta.js.map +1 -0
  249. package/dist/scripts/change/instructions.js +339 -0
  250. package/dist/scripts/change/instructions.js.map +1 -0
  251. package/dist/scripts/ci_init.js +12 -0
  252. package/dist/scripts/ci_init.js.map +1 -0
  253. package/dist/scripts/cli/commands/alm/PullCommand.js +238 -0
  254. package/dist/scripts/cli/commands/alm/PullCommand.js.map +1 -0
  255. package/dist/scripts/cli/commands/change/ChangeCommand.js +867 -0
  256. package/dist/scripts/cli/commands/change/ChangeCommand.js.map +1 -0
  257. package/dist/scripts/cli/commands/config/CiInitCommand.js +144 -0
  258. package/dist/scripts/cli/commands/config/CiInitCommand.js.map +1 -0
  259. package/dist/scripts/cli/commands/config/CompletionCommand.js +160 -0
  260. package/dist/scripts/cli/commands/config/CompletionCommand.js.map +1 -0
  261. package/dist/scripts/cli/commands/config/ConfigInitCommand.js +108 -0
  262. package/dist/scripts/cli/commands/config/ConfigInitCommand.js.map +1 -0
  263. package/dist/scripts/cli/commands/config/ConfigSetCommand.js +166 -0
  264. package/dist/scripts/cli/commands/config/ConfigSetCommand.js.map +1 -0
  265. package/dist/scripts/cli/commands/config/GenAgentContractCommand.js +212 -0
  266. package/dist/scripts/cli/commands/config/GenAgentContractCommand.js.map +1 -0
  267. package/dist/scripts/cli/commands/harness/RunCommand.js +1922 -0
  268. package/dist/scripts/cli/commands/harness/RunCommand.js.map +1 -0
  269. package/dist/scripts/cli/commands/mcp/McpInstallCommand.js +114 -0
  270. package/dist/scripts/cli/commands/mcp/McpInstallCommand.js.map +1 -0
  271. package/dist/scripts/cli/commands/mcp/index.js +29 -0
  272. package/dist/scripts/cli/commands/mcp/index.js.map +1 -0
  273. package/dist/scripts/cli/commands/pack/BundlePackCommand.js +59 -0
  274. package/dist/scripts/cli/commands/pack/BundlePackCommand.js.map +1 -0
  275. package/dist/scripts/cli/commands/pack/ExpandDomainPackCommand.js +559 -0
  276. package/dist/scripts/cli/commands/pack/ExpandDomainPackCommand.js.map +1 -0
  277. package/dist/scripts/cli/commands/pack/InferPackCommand.js +304 -0
  278. package/dist/scripts/cli/commands/pack/InferPackCommand.js.map +1 -0
  279. package/dist/scripts/cli/commands/pack/InitPackCommand.js +368 -0
  280. package/dist/scripts/cli/commands/pack/InitPackCommand.js.map +1 -0
  281. package/dist/scripts/cli/commands/pack/LintPackCommand.js +631 -0
  282. package/dist/scripts/cli/commands/pack/LintPackCommand.js.map +1 -0
  283. package/dist/scripts/cli/commands/pack/pack-args.js +83 -0
  284. package/dist/scripts/cli/commands/pack/pack-args.js.map +1 -0
  285. package/dist/scripts/cli/commands/project/AdoptCommand.js +414 -0
  286. package/dist/scripts/cli/commands/project/AdoptCommand.js.map +1 -0
  287. package/dist/scripts/cli/commands/project/InitFromPackCommand.js +188 -0
  288. package/dist/scripts/cli/commands/project/InitFromPackCommand.js.map +1 -0
  289. package/dist/scripts/cli/commands/project/InitProjectCommand.js +791 -0
  290. package/dist/scripts/cli/commands/project/InitProjectCommand.js.map +1 -0
  291. package/dist/scripts/cli/commands/project/OnboardCommand.js +655 -0
  292. package/dist/scripts/cli/commands/project/OnboardCommand.js.map +1 -0
  293. package/dist/scripts/cli/commands/project/UpdateCommand.js +206 -0
  294. package/dist/scripts/cli/commands/project/UpdateCommand.js.map +1 -0
  295. package/dist/scripts/cli/commands/project/WizardCommand.js +166 -0
  296. package/dist/scripts/cli/commands/project/WizardCommand.js.map +1 -0
  297. package/dist/scripts/cli/commands/quality/DoctorCommand.js +553 -0
  298. package/dist/scripts/cli/commands/quality/DoctorCommand.js.map +1 -0
  299. package/dist/scripts/cli/commands/quality/FixCommand.js +201 -0
  300. package/dist/scripts/cli/commands/quality/FixCommand.js.map +1 -0
  301. package/dist/scripts/cli/commands/quality/LicenseCheckCommand.js +187 -0
  302. package/dist/scripts/cli/commands/quality/LicenseCheckCommand.js.map +1 -0
  303. package/dist/scripts/cli/commands/quality/ReportCommand.js +557 -0
  304. package/dist/scripts/cli/commands/quality/ReportCommand.js.map +1 -0
  305. package/dist/scripts/cli/commands/quality/ValidateSpecsCommand.js +764 -0
  306. package/dist/scripts/cli/commands/quality/ValidateSpecsCommand.js.map +1 -0
  307. package/dist/scripts/cli/commands/spec/DoneCommand.js +116 -0
  308. package/dist/scripts/cli/commands/spec/DoneCommand.js.map +1 -0
  309. package/dist/scripts/cli/commands/spec/PlanCommand.js +397 -0
  310. package/dist/scripts/cli/commands/spec/PlanCommand.js.map +1 -0
  311. package/dist/scripts/cli/commands/spec/ReqCommand.js +303 -0
  312. package/dist/scripts/cli/commands/spec/ReqCommand.js.map +1 -0
  313. package/dist/scripts/cli/commands/spec/StatusCommand.js +206 -0
  314. package/dist/scripts/cli/commands/spec/StatusCommand.js.map +1 -0
  315. package/dist/scripts/cli/commands/spec/StudioCommand.js +241 -0
  316. package/dist/scripts/cli/commands/spec/StudioCommand.js.map +1 -0
  317. package/dist/scripts/cli/commands/specops/ContributeCommand.js +313 -0
  318. package/dist/scripts/cli/commands/specops/ContributeCommand.js.map +1 -0
  319. package/dist/scripts/cli/commands/specops/DiffCommand.js +394 -0
  320. package/dist/scripts/cli/commands/specops/DiffCommand.js.map +1 -0
  321. package/dist/scripts/cli/commands/specops/SyncCommand.js +380 -0
  322. package/dist/scripts/cli/commands/specops/SyncCommand.js.map +1 -0
  323. package/dist/scripts/completion.js +24 -0
  324. package/dist/scripts/completion.js.map +1 -0
  325. package/dist/scripts/config_init.js +12 -0
  326. package/dist/scripts/config_init.js.map +1 -0
  327. package/dist/scripts/config_set.js +20 -0
  328. package/dist/scripts/config_set.js.map +1 -0
  329. package/dist/scripts/docs/blocks.js +137 -0
  330. package/dist/scripts/docs/blocks.js.map +1 -0
  331. package/dist/scripts/docs/build-site.js +425 -0
  332. package/dist/scripts/docs/build-site.js.map +1 -0
  333. package/dist/scripts/docs/nav.js +198 -0
  334. package/dist/scripts/docs/nav.js.map +1 -0
  335. package/dist/scripts/docs/record-terminal.js +477 -0
  336. package/dist/scripts/docs/record-terminal.js.map +1 -0
  337. package/dist/scripts/docs/terminal-storyboard.js +121 -0
  338. package/dist/scripts/docs/terminal-storyboard.js.map +1 -0
  339. package/dist/scripts/doctor.js +14 -0
  340. package/dist/scripts/doctor.js.map +1 -0
  341. package/dist/scripts/done.js +17 -0
  342. package/dist/scripts/done.js.map +1 -0
  343. package/dist/scripts/expand_domain_pack.js +18 -0
  344. package/dist/scripts/expand_domain_pack.js.map +1 -0
  345. package/dist/scripts/fix.js +12 -0
  346. package/dist/scripts/fix.js.map +1 -0
  347. package/dist/scripts/gen_agent_contract.js +14 -0
  348. package/dist/scripts/gen_agent_contract.js.map +1 -0
  349. package/dist/scripts/gen_mcp_tools.js +264 -0
  350. package/dist/scripts/gen_mcp_tools.js.map +1 -0
  351. package/dist/scripts/harness/init.js +358 -0
  352. package/dist/scripts/harness/init.js.map +1 -0
  353. package/dist/scripts/harness/prompt.js +18 -0
  354. package/dist/scripts/harness/prompt.js.map +1 -0
  355. package/dist/scripts/harness/report.js +323 -0
  356. package/dist/scripts/harness/report.js.map +1 -0
  357. package/dist/scripts/harness/run.js +33 -0
  358. package/dist/scripts/harness/run.js.map +1 -0
  359. package/dist/scripts/infer_pack.js +17 -0
  360. package/dist/scripts/infer_pack.js.map +1 -0
  361. package/dist/scripts/init_from_pack.js +16 -0
  362. package/dist/scripts/init_from_pack.js.map +1 -0
  363. package/dist/scripts/init_pack.js +16 -0
  364. package/dist/scripts/init_pack.js.map +1 -0
  365. package/dist/scripts/init_project.js +17 -0
  366. package/dist/scripts/init_project.js.map +1 -0
  367. package/dist/scripts/lib/agent.js +99 -0
  368. package/dist/scripts/lib/agent.js.map +1 -0
  369. package/dist/scripts/lib/capability-specs.js +80 -0
  370. package/dist/scripts/lib/capability-specs.js.map +1 -0
  371. package/dist/scripts/lib/command.js +17 -0
  372. package/dist/scripts/lib/command.js.map +1 -0
  373. package/dist/scripts/lib/diagnostics.js +62 -0
  374. package/dist/scripts/lib/diagnostics.js.map +1 -0
  375. package/dist/scripts/lib/monorepo-fanout.js +118 -0
  376. package/dist/scripts/lib/monorepo-fanout.js.map +1 -0
  377. package/dist/scripts/lib/placeholders.js +190 -0
  378. package/dist/scripts/lib/placeholders.js.map +1 -0
  379. package/dist/scripts/lib/project-root.js +124 -0
  380. package/dist/scripts/lib/project-root.js.map +1 -0
  381. package/dist/scripts/lib/requirement-graph.js +31 -0
  382. package/dist/scripts/lib/requirement-graph.js.map +1 -0
  383. package/dist/scripts/lib/surface.js +609 -0
  384. package/dist/scripts/lib/surface.js.map +1 -0
  385. package/dist/scripts/license_check.js +15 -0
  386. package/dist/scripts/license_check.js.map +1 -0
  387. package/dist/scripts/lint_pack.js +18 -0
  388. package/dist/scripts/lint_pack.js.map +1 -0
  389. package/dist/scripts/merge-traceability.js +106 -0
  390. package/dist/scripts/merge-traceability.js.map +1 -0
  391. package/dist/scripts/onboard.js +22 -0
  392. package/dist/scripts/onboard.js.map +1 -0
  393. package/dist/scripts/plan.js +17 -0
  394. package/dist/scripts/plan.js.map +1 -0
  395. package/dist/scripts/plugin/gate-hook.js +171 -0
  396. package/dist/scripts/plugin/gate-hook.js.map +1 -0
  397. package/dist/scripts/report.js +17 -0
  398. package/dist/scripts/report.js.map +1 -0
  399. package/dist/scripts/req.js +22 -0
  400. package/dist/scripts/req.js.map +1 -0
  401. package/dist/scripts/schema/cli.js +215 -0
  402. package/dist/scripts/schema/cli.js.map +1 -0
  403. package/dist/scripts/schema/registry.js +264 -0
  404. package/dist/scripts/schema/registry.js.map +1 -0
  405. package/dist/scripts/specops/add.js +180 -0
  406. package/dist/scripts/specops/add.js.map +1 -0
  407. package/dist/scripts/specops/against_lock.js +100 -0
  408. package/dist/scripts/specops/against_lock.js.map +1 -0
  409. package/dist/scripts/specops/as_change.js +49 -0
  410. package/dist/scripts/specops/as_change.js.map +1 -0
  411. package/dist/scripts/specops/contribute.js +24 -0
  412. package/dist/scripts/specops/contribute.js.map +1 -0
  413. package/dist/scripts/specops/diff.js +32 -0
  414. package/dist/scripts/specops/diff.js.map +1 -0
  415. package/dist/scripts/specops/lock.js +39 -0
  416. package/dist/scripts/specops/lock.js.map +1 -0
  417. package/dist/scripts/specops/manifest.js +90 -0
  418. package/dist/scripts/specops/manifest.js.map +1 -0
  419. package/dist/scripts/specops/remove.js +102 -0
  420. package/dist/scripts/specops/remove.js.map +1 -0
  421. package/dist/scripts/specops/sync.js +27 -0
  422. package/dist/scripts/specops/sync.js.map +1 -0
  423. package/dist/scripts/specops/verify.js +149 -0
  424. package/dist/scripts/specops/verify.js.map +1 -0
  425. package/dist/scripts/status.js +17 -0
  426. package/dist/scripts/status.js.map +1 -0
  427. package/dist/scripts/studio.js +14 -0
  428. package/dist/scripts/studio.js.map +1 -0
  429. package/dist/scripts/update.js +17 -0
  430. package/dist/scripts/update.js.map +1 -0
  431. package/dist/scripts/validate_specs.js +10 -0
  432. package/dist/scripts/validate_specs.js.map +1 -0
  433. package/examples/project.config.example +19 -0
  434. package/examples/project.yaml.example +17 -0
  435. package/package.json +105 -0
  436. package/templates/adopt/AI_RULES.md.tpl +27 -0
  437. package/templates/adopt/adr-readme.md.tpl +5 -0
  438. package/templates/adopt/baseline.feature.tpl +9 -0
  439. package/templates/adopt/spec.md.tpl +25 -0
  440. package/templates/adopt/traceability.md.tpl +11 -0
  441. package/templates/backend/AI_RULES.md.tpl +35 -0
  442. package/templates/backend/features/core/health.feature.tpl +7 -0
  443. package/templates/base/.devcontainer/devcontainer.json.tpl +18 -0
  444. package/templates/base/.dockerignore.tpl +11 -0
  445. package/templates/base/.env.dev.app.tpl +13 -0
  446. package/templates/base/.env.dev.infra.tpl +6 -0
  447. package/templates/base/.env.dev.tpl +16 -0
  448. package/templates/base/.env.example.tpl +17 -0
  449. package/templates/base/.env.feature.app.tpl +11 -0
  450. package/templates/base/.env.feature.infra.tpl +4 -0
  451. package/templates/base/.env.feature.tpl +16 -0
  452. package/templates/base/.env.prod.app.tpl +13 -0
  453. package/templates/base/.env.prod.infra.tpl +6 -0
  454. package/templates/base/.env.prod.tpl +16 -0
  455. package/templates/base/.github/workflows/specs.yml.tpl +26 -0
  456. package/templates/base/.gitignore.tpl +9 -0
  457. package/templates/base/.pre-commit-config.yaml.tpl +10 -0
  458. package/templates/base/AGENTS.md.tpl +32 -0
  459. package/templates/base/README.md.tpl +32 -0
  460. package/templates/base/docker-compose.yml.tpl +13 -0
  461. package/templates/base/docs/specs/adr/README.md.tpl +10 -0
  462. package/templates/base/docs/specs/aggregates.md.tpl +5 -0
  463. package/templates/base/docs/specs/commands.md.tpl +13 -0
  464. package/templates/base/docs/specs/domain-model.md.tpl +30 -0
  465. package/templates/base/docs/specs/events.md.tpl +5 -0
  466. package/templates/base/docs/specs/review-checklist.md.tpl +18 -0
  467. package/templates/base/docs/specs/runtime-environments.md.tpl +26 -0
  468. package/templates/base/docs/specs/status-model.md.tpl +16 -0
  469. package/templates/base/docs/specs/traceability.md.tpl +7 -0
  470. package/templates/base/docs/specs/use-cases.md.tpl +5 -0
  471. package/templates/base/spec.md.tpl +63 -0
  472. package/templates/ci/azure.yml.tpl +40 -0
  473. package/templates/ci/github.yml.tpl +40 -0
  474. package/templates/ci/gitlab.yml.tpl +21 -0
  475. package/templates/ci/jenkins.tpl +35 -0
  476. package/templates/contracts/AI_RULES.md.tpl +55 -0
  477. package/templates/contracts/asyncapi-stub.yaml.tpl +24 -0
  478. package/templates/contracts/contract-traceability.md.tpl +10 -0
  479. package/templates/contracts/openapi-stub.yaml.tpl +29 -0
  480. package/templates/contracts/pacts-gitkeep.tpl +0 -0
  481. package/templates/contracts/test-strategy.md.tpl +94 -0
  482. package/templates/frontend/AI_RULES.md.tpl +34 -0
  483. package/templates/frontend/features/core/health.feature.tpl +6 -0
  484. package/templates/harness/harness.config.yaml.tpl +74 -0
  485. package/templates/harness/prompt-prefix.md.tpl +60 -0
  486. package/templates/mobile/AI_RULES.md.tpl +56 -0
  487. package/templates/mobile/features/core/health.feature.tpl +7 -0
  488. package/templates/modules/auth/backend/registration_and_login.feature.tpl +10 -0
  489. package/templates/modules/auth/frontend/login.feature.tpl +5 -0
  490. package/templates/modules/billing/backend/billing_settlement.feature.tpl +5 -0
  491. package/templates/modules/billing/frontend/billing_summary.feature.tpl +5 -0
  492. package/templates/modules/dashboard/backend/dashboard_kpi.feature.tpl +5 -0
  493. package/templates/modules/dashboard/frontend/dashboard.feature.tpl +5 -0
  494. package/vendor/mermaid.min.js +3636 -0
@@ -0,0 +1,559 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.ExpandDomainPackCommand = void 0;
37
+ exports.renderStaticFiles = renderStaticFiles;
38
+ exports.renderScenarios = renderScenarios;
39
+ exports.renderDomainDocs = renderDomainDocs;
40
+ exports.renderTraceability = renderTraceability;
41
+ exports.resolvePackSource = resolvePackSource;
42
+ exports.enforcePackSecurity = enforcePackSecurity;
43
+ exports.updateLockfile = updateLockfile;
44
+ exports.updateBaseline = updateBaseline;
45
+ const fs = __importStar(require("node:fs"));
46
+ const path = __importStar(require("node:path"));
47
+ const PackSpec_1 = require("../../../../packages/core/src/domain/PackSpec");
48
+ const TraceabilityFormat_1 = require("../../../../packages/core/src/domain/TraceabilityFormat");
49
+ const DiskPackRepository_1 = require("../../../../packages/core/src/infrastructure/DiskPackRepository");
50
+ const ConsoleReporter_1 = require("../../../../packages/core/src/infrastructure/ConsoleReporter");
51
+ const GherkinTags_1 = require("../../../../packages/core/src/domain/GherkinTags");
52
+ const pack_args_1 = require("./pack-args");
53
+ const RemotePackResolver_1 = require("../../../../packages/core/src/infrastructure/RemotePackResolver");
54
+ const lock_1 = require("../../../specops/lock");
55
+ const verify_1 = require("../../../specops/verify");
56
+ const manifest_1 = require("../../../specops/manifest");
57
+ const command_1 = require("../../../lib/command");
58
+ const project_root_1 = require("../../../lib/project-root");
59
+ const PACKAGE_VERSION = (() => {
60
+ try {
61
+ return require(path.join((0, project_root_1.findCliRoot)(__dirname), "package.json")).version || "0.0.0";
62
+ }
63
+ catch {
64
+ return "0.0.0";
65
+ }
66
+ })();
67
+ function usage() {
68
+ process.stdout.write("Usage:\n" +
69
+ " specgate expand --pack-root <path> --pack <domain/type> --project-dir <path> [--var KEY=VALUE]... [--dry-run] [--no-examples]\n" +
70
+ " specgate expand --pack-repo <git-url> --pack-version <tag> --pack <pack-id> --project-dir <path> [--var KEY=VALUE]... [--cache-dir <path>] [--dry-run]\n\n" +
71
+ "Examples:\n" +
72
+ ' specgate expand --pack-root ./domain-packs --pack parking-management/backend --project-dir ./projects/smart-parking --var PROJECT_NAME="Smart Parking" --var PROJECT_SLUG=smart-parking --var DOMAIN="parking operations"\n' +
73
+ ' specgate expand --pack-repo https://github.com/rsaglobaltech/parking-management-specops.git --pack-version v0.1.0 --pack backend --project-dir ./smart-parking --var PROJECT_NAME="Smart Parking" --var PROJECT_SLUG=smart-parking --var DOMAIN="parking operations"\n');
74
+ }
75
+ function renderStaticFiles(pack, packRoot, projectDir, vars, dryRun) {
76
+ for (const fileDef of pack.outputs.files) {
77
+ const template = (0, DiskPackRepository_1.readTemplate)(packRoot, fileDef.template);
78
+ const rendered = (0, PackSpec_1.renderTemplate)(template, vars);
79
+ const target = (0, DiskPackRepository_1.safeResolve)(projectDir, fileDef.target);
80
+ (0, DiskPackRepository_1.writeFile)(target, `${rendered.trimEnd()}\n`, dryRun);
81
+ }
82
+ }
83
+ function renderScenarios(pack, packRoot, projectDir, vars, dryRun, noExamples) {
84
+ const generated = [];
85
+ for (const scenario of pack.scenarios || []) {
86
+ const isSeed = scenario.seed !== false;
87
+ if (noExamples && isSeed) {
88
+ (0, ConsoleReporter_1.logInfo)(`[skip] seeded scenario '${scenario.id}' due to --no-examples`);
89
+ continue;
90
+ }
91
+ const template = (0, DiskPackRepository_1.readTemplate)(packRoot, scenario.template);
92
+ const rendered = (0, PackSpec_1.renderTemplate)(template, vars);
93
+ // F4: link the matrix row to the scenario the way Cucumber understands.
94
+ // Nobody writes these by hand — and a tag survives a rename, which is what
95
+ // makes `--tags "@REQ-001"` a filter an agent cannot defeat by rewording a
96
+ // title. Idempotent: `expand` runs more than once on the same project.
97
+ const tags = [scenario.requirement_id, scenario.id].filter(Boolean).map((id) => `@${id}`);
98
+ const tagged = (0, GherkinTags_1.tagScenario)(rendered, scenario.scenario, tags);
99
+ if (tags.length > 0 && tagged === rendered) {
100
+ (0, ConsoleReporter_1.logError)(`Scenario '${scenario.id}' declares "${scenario.scenario}", which is not in ` +
101
+ `${scenario.template} — it goes out untagged, and the matrix will point at ` +
102
+ `a scenario that is not there.`);
103
+ }
104
+ const target = (0, DiskPackRepository_1.safeResolve)(projectDir, scenario.target);
105
+ (0, DiskPackRepository_1.writeFile)(target, `${tagged.trimEnd()}\n`, dryRun);
106
+ generated.push(scenario);
107
+ }
108
+ return generated;
109
+ }
110
+ function indexDomainItems(pack, key) {
111
+ const map = new Map();
112
+ for (const item of Array.isArray(pack[key]) ? pack[key] : []) {
113
+ if (item.id)
114
+ map.set(item.id, item);
115
+ if (item.name)
116
+ map.set(item.name, item);
117
+ }
118
+ return map;
119
+ }
120
+ function firstRef(...values) {
121
+ for (const value of values) {
122
+ if (value !== undefined && value !== null && value !== "")
123
+ return value;
124
+ }
125
+ return "";
126
+ }
127
+ function resolveLabel(map, ref, fallback = "-") {
128
+ if (!ref)
129
+ return fallback;
130
+ return (0, PackSpec_1.entityLabel)(map.get(String(ref)), String(ref));
131
+ }
132
+ function renderMarkdownTable(headers, rows) {
133
+ return [
134
+ `| ${headers.join(" | ")} |`,
135
+ `| ${headers.map(() => "---").join(" | ")} |`,
136
+ ...rows.map((row) => `| ${row.join(" | ")} |`),
137
+ ].join("\n");
138
+ }
139
+ function renderDomainDocs(pack, projectDir, dryRun) {
140
+ if (!(0, PackSpec_1.hasStructuredDomainModel)(pack)) {
141
+ return;
142
+ }
143
+ const boundedContexts = Array.isArray(pack.bounded_contexts) ? pack.bounded_contexts : [];
144
+ const aggregates = Array.isArray(pack.aggregates) ? pack.aggregates : [];
145
+ const valueObjects = Array.isArray(pack.value_objects) ? pack.value_objects : [];
146
+ const events = Array.isArray(pack.events) ? pack.events : [];
147
+ const useCases = Array.isArray(pack.use_cases) ? pack.use_cases : [];
148
+ const commands = Array.isArray(pack.commands) ? pack.commands : [];
149
+ const queries = Array.isArray(pack.queries) ? pack.queries : [];
150
+ const aggregateIndex = indexDomainItems(pack, "aggregates");
151
+ const commandIndex = indexDomainItems(pack, "commands");
152
+ const queryIndex = indexDomainItems(pack, "queries");
153
+ const eventIndex = indexDomainItems(pack, "events");
154
+ const boundedContextRows = boundedContexts.map((context) => [
155
+ context.id || "-",
156
+ context.name || "-",
157
+ context.type || "-",
158
+ context.responsibility || "-",
159
+ (0, PackSpec_1.formatList)((0, PackSpec_1.asArray)(context.aggregates).map((ref) => resolveLabel(aggregateIndex, ref, ref))),
160
+ ]);
161
+ // `bounded_context` first, then `context`: the eleven curated packs write the
162
+ // former and the schema used to say the latter, so reading only `context`
163
+ // rendered an empty column for every one of them. Measured — installing the
164
+ // billing pack produced `| AGG-001 | Invoice | - | - |` while the pack
165
+ // declared both fields under their real names (E1 / H13).
166
+ //
167
+ // Responsibilities and invariants are different things and get their own
168
+ // columns: what an aggregate owns is not the same as the rules it must keep,
169
+ // and showing one under the other's heading would be a mislabelled fact
170
+ // rather than a missing one.
171
+ const aggregateRows = aggregates.map((aggregate) => [
172
+ aggregate.id || "-",
173
+ aggregate.name || "-",
174
+ aggregate.bounded_context || aggregate.context || "-",
175
+ (0, PackSpec_1.formatList)(aggregate.responsibilities),
176
+ (0, PackSpec_1.formatList)(aggregate.invariants),
177
+ ]);
178
+ const valueObjectRows = valueObjects.map((valueObject) => [
179
+ valueObject.id || "-",
180
+ valueObject.name || "-",
181
+ (0, PackSpec_1.formatList)(valueObject.fields),
182
+ (0, PackSpec_1.formatList)(valueObject.invariants),
183
+ ]);
184
+ // The aggregate that emits an event is its producer. The packs say
185
+ // `aggregate:`, the schema said `producer:`, and the renderer read only the
186
+ // latter — so every event in every curated pack rendered `Producer: -`.
187
+ const eventRows = events.map((event) => [
188
+ event.id || "-",
189
+ event.name || "-",
190
+ event.producer || event.aggregate || "-",
191
+ (0, PackSpec_1.formatList)(event.consumers),
192
+ (0, PackSpec_1.formatList)(event.payload),
193
+ ]);
194
+ const useCaseRows = useCases.map((useCase) => {
195
+ const commandOrQuery = firstRef(useCase.command, useCase.query);
196
+ const commandOrQueryLabel = useCase.command
197
+ ? resolveLabel(commandIndex, useCase.command, useCase.command)
198
+ : resolveLabel(queryIndex, useCase.query, commandOrQuery || "-");
199
+ return [
200
+ useCase.id || "-",
201
+ useCase.name || "-",
202
+ useCase.actor || "-",
203
+ useCase.requirement || "-",
204
+ commandOrQueryLabel,
205
+ useCase.aggregate || "-",
206
+ (0, PackSpec_1.formatList)((0, PackSpec_1.asArray)(useCase.emits).map((ref) => resolveLabel(eventIndex, ref, ref))),
207
+ useCase.status || "Draft",
208
+ ];
209
+ });
210
+ const commandRows = commands.map((command) => [
211
+ command.id || "-",
212
+ command.name || "-",
213
+ command.use_case || command.useCase || "-",
214
+ (0, PackSpec_1.formatList)(command.fields),
215
+ ]);
216
+ const queryRows = queries.map((query) => [
217
+ query.id || "-",
218
+ query.name || "-",
219
+ query.use_case || query.useCase || "-",
220
+ (0, PackSpec_1.formatList)(query.returns || query.fields),
221
+ ]);
222
+ const docs = new Map([
223
+ [
224
+ "docs/specs/domain-model.md",
225
+ [
226
+ "# Domain Model",
227
+ "",
228
+ "## Bounded Contexts",
229
+ "",
230
+ renderMarkdownTable(["ID", "Name", "Type", "Responsibility", "Aggregates"], boundedContextRows),
231
+ "",
232
+ "## Aggregates",
233
+ "",
234
+ renderMarkdownTable(["ID", "Aggregate", "Context", "Responsibilities", "Invariants"], aggregateRows),
235
+ "",
236
+ "## Value Objects",
237
+ "",
238
+ renderMarkdownTable(["ID", "Value Object", "Fields", "Invariants"], valueObjectRows),
239
+ "",
240
+ "## Domain Events",
241
+ "",
242
+ renderMarkdownTable(["ID", "Event", "Producer", "Consumers", "Payload"], eventRows),
243
+ "",
244
+ ].join("\n"),
245
+ ],
246
+ [
247
+ "docs/specs/use-cases.md",
248
+ [
249
+ "# Use Cases",
250
+ "",
251
+ renderMarkdownTable([
252
+ "ID",
253
+ "Use Case",
254
+ "Actor",
255
+ "Requirement",
256
+ "Command/Query",
257
+ "Aggregate",
258
+ "Emits",
259
+ "Status",
260
+ ], useCaseRows),
261
+ "",
262
+ ].join("\n"),
263
+ ],
264
+ [
265
+ "docs/specs/commands.md",
266
+ [
267
+ "# Commands and Queries",
268
+ "",
269
+ "## Commands",
270
+ "",
271
+ renderMarkdownTable(["ID", "Command", "Use Case", "Fields"], commandRows),
272
+ "",
273
+ "## Queries",
274
+ "",
275
+ renderMarkdownTable(["ID", "Query", "Use Case", "Returns"], queryRows),
276
+ "",
277
+ ].join("\n"),
278
+ ],
279
+ [
280
+ "docs/specs/events.md",
281
+ [
282
+ "# Domain Events",
283
+ "",
284
+ renderMarkdownTable(["ID", "Event", "Producer", "Consumers", "Payload"], eventRows),
285
+ "",
286
+ ].join("\n"),
287
+ ],
288
+ [
289
+ "docs/specs/aggregates.md",
290
+ [
291
+ "# Aggregates",
292
+ "",
293
+ renderMarkdownTable(["ID", "Aggregate", "Context", "Responsibilities", "Invariants"], aggregateRows),
294
+ "",
295
+ ].join("\n"),
296
+ ],
297
+ ]);
298
+ for (const [target, content] of docs.entries()) {
299
+ (0, DiskPackRepository_1.writeFile)((0, DiskPackRepository_1.safeResolve)(projectDir, target), content, dryRun);
300
+ }
301
+ }
302
+ /**
303
+ * The bounded context a scenario belongs to, worked out from the pack model.
304
+ *
305
+ * A scenario rarely names an aggregate — none of the twenty-seven across the
306
+ * curated packs does — but it names a use case, the use case names a command,
307
+ * and an aggregate lists the commands it owns. That chain resolves for all of
308
+ * them, which is what makes matching an agent profile on bounded context (D1)
309
+ * useful rather than a rule that never fires.
310
+ *
311
+ * Returns "" when the pack does not carry enough to place it, which is a fact
312
+ * about the pack rather than an error.
313
+ */
314
+ function boundedContextOf(pack, aggregateRef, commandRef, queryRef) {
315
+ const aggregates = (0, PackSpec_1.asArray)(pack.aggregates);
316
+ const contexts = (0, PackSpec_1.asArray)(pack.bounded_contexts);
317
+ // The **name**, not the id. `match: { bounded_context: Invoicing }` is what a
318
+ // person writes; `BC-001` is an identifier they never chose and would have to
319
+ // look up. Falls back to whatever the aggregate points at when the context is
320
+ // not declared.
321
+ const contextOf = (aggregate) => {
322
+ const ref = String((aggregate && (aggregate.bounded_context || aggregate.context)) || "");
323
+ if (!ref)
324
+ return "";
325
+ const declared = contexts.find((c) => c && (c.id === ref || c.name === ref));
326
+ return String((declared && declared.name) || ref);
327
+ };
328
+ const named = aggregates.find((a) => a && (a.id === aggregateRef || a.name === aggregateRef));
329
+ if (named)
330
+ return contextOf(named);
331
+ for (const ref of [commandRef, queryRef]) {
332
+ if (!ref)
333
+ continue;
334
+ const owner = aggregates.find((a) => (0, PackSpec_1.asArray)(a && a.commands)
335
+ .concat((0, PackSpec_1.asArray)(a && a.queries))
336
+ .some((c) => String(c) === String(ref)));
337
+ if (owner)
338
+ return contextOf(owner);
339
+ }
340
+ return "";
341
+ }
342
+ function renderTraceability(pack, projectDir, generatedScenarios, dryRun) {
343
+ const traceTarget = (0, DiskPackRepository_1.safeResolve)(projectDir, pack.rules.traceability.target);
344
+ let rows = [];
345
+ let mode = (0, PackSpec_1.hasStructuredDomainModel)(pack) ? "rich" : "legacy";
346
+ const includeExisting = pack.rules.traceability.include_existing_rows !== false;
347
+ if (includeExisting && fs.existsSync(traceTarget)) {
348
+ const parsed = (0, TraceabilityFormat_1.parseTraceabilityRows)(fs.readFileSync(traceTarget, "utf8"));
349
+ rows = parsed.rows;
350
+ if (parsed.mode === "rich") {
351
+ mode = "rich";
352
+ }
353
+ }
354
+ if (mode === "rich") {
355
+ rows = rows.map((row) => {
356
+ if (!row.feature)
357
+ return row;
358
+ return {
359
+ requirement: "-",
360
+ scenarioId: "-",
361
+ featureFile: row.feature,
362
+ useCase: "-",
363
+ commandOrQuery: "-",
364
+ aggregate: "-",
365
+ event: "-",
366
+ technicalArtifact: row.technicalArtifact,
367
+ testArtifact: "-",
368
+ status: row.status || "Draft",
369
+ };
370
+ });
371
+ }
372
+ const requirements = indexDomainItems(pack, "requirements");
373
+ const useCases = indexDomainItems(pack, "use_cases");
374
+ const commands = indexDomainItems(pack, "commands");
375
+ const queries = indexDomainItems(pack, "queries");
376
+ const aggregates = indexDomainItems(pack, "aggregates");
377
+ const events = indexDomainItems(pack, "events");
378
+ const rowKeys = new Set(rows.map((row) => {
379
+ if (mode === "rich")
380
+ return `${row.featureFile}::${row.scenarioId}`;
381
+ return `${row.feature}::${row.scenario}`;
382
+ }));
383
+ for (const scenario of generatedScenarios) {
384
+ const featureCell = `\`${scenario.target}\``;
385
+ const statusCell = scenario.status || pack.rules.traceability.default_status || "Draft";
386
+ if (mode === "rich") {
387
+ const useCase = useCases.get(scenario.use_case);
388
+ const commandRef = firstRef(scenario.command, useCase && useCase.command);
389
+ const queryRef = firstRef(scenario.query, useCase && useCase.query);
390
+ const aggregateRef = firstRef(scenario.aggregate, useCase && useCase.aggregate);
391
+ const requirementRef = firstRef(scenario.requirement_id, useCase && useCase.requirement);
392
+ const eventRefs = (0, PackSpec_1.asArray)(scenario.events).length > 0
393
+ ? (0, PackSpec_1.asArray)(scenario.events)
394
+ : (0, PackSpec_1.asArray)(useCase && useCase.emits);
395
+ // B1: the requirement's `depends_on`, carried to the matrix so `plan` and
396
+ // the harness can see it. The pack is where a pack author declares it;
397
+ // the matrix is where the project reads it back.
398
+ const requirementItem = requirements.get(requirementRef);
399
+ // D1: which bounded context this requirement belongs to, so a per-context
400
+ // agent profile can match it. Derived rather than declared — measured
401
+ // across the curated packs, no scenario links to an aggregate directly
402
+ // (0 of 27), but use case → command → aggregate → bounded context
403
+ // resolves for every one of them.
404
+ const contextRef = boundedContextOf(pack, aggregateRef, commandRef, queryRef);
405
+ const row = {
406
+ dependsOn: (0, PackSpec_1.asArray)(requirementItem && requirementItem.depends_on).map((d) => String(d)),
407
+ context: contextRef,
408
+ requirement: resolveLabel(requirements, requirementRef, requirementRef || "-"),
409
+ scenarioId: scenario.id,
410
+ featureFile: featureCell,
411
+ useCase: (0, PackSpec_1.entityLabel)(useCase, scenario.use_case || "-"),
412
+ commandOrQuery: commandRef
413
+ ? resolveLabel(commands, commandRef, commandRef)
414
+ : resolveLabel(queries, queryRef, queryRef || "-"),
415
+ aggregate: resolveLabel(aggregates, aggregateRef, aggregateRef || "-"),
416
+ event: (0, PackSpec_1.formatList)(eventRefs.map((ref) => resolveLabel(events, ref, ref))),
417
+ technicalArtifact: (0, PackSpec_1.formatList)(scenario.technical_artifacts || scenario.technical_artifact),
418
+ testArtifact: (0, PackSpec_1.formatList)(scenario.test_artifacts || scenario.test_artifact, "TBD"),
419
+ status: statusCell,
420
+ };
421
+ const key = `${row.featureFile}::${row.scenarioId}`;
422
+ if (!rowKeys.has(key)) {
423
+ rows.push(row);
424
+ rowKeys.add(key);
425
+ }
426
+ continue;
427
+ }
428
+ const row = {
429
+ feature: featureCell,
430
+ scenario: scenario.scenario,
431
+ technicalArtifact: (0, PackSpec_1.formatList)(scenario.technical_artifact || scenario.technical_artifacts),
432
+ status: statusCell,
433
+ };
434
+ const key = `${row.feature}::${row.scenario}`;
435
+ if (!rowKeys.has(key)) {
436
+ rows.push(row);
437
+ rowKeys.add(key);
438
+ }
439
+ }
440
+ const markdown = (0, TraceabilityFormat_1.buildTraceabilityMarkdown)(rows, mode);
441
+ (0, DiskPackRepository_1.writeFile)(traceTarget, markdown, dryRun);
442
+ }
443
+ function resolvePackSource(args) {
444
+ const hasRemote = Boolean(args.packRepo);
445
+ const hasLocal = Boolean(args.packRoot);
446
+ if (hasRemote && hasLocal) {
447
+ throw new Error("Specify either --pack-root or --pack-repo, not both.");
448
+ }
449
+ if (hasRemote) {
450
+ if (!args.packVersion) {
451
+ throw new Error("--pack-repo requires --pack-version <tag-or-sha> for reproducibility.");
452
+ }
453
+ (0, ConsoleReporter_1.logInfo)(`Resolving remote pack ${args.packRepo}@${args.packVersion}…`);
454
+ const resolved = (0, RemotePackResolver_1.resolveRemotePack)({
455
+ repo: args.packRepo,
456
+ version: args.packVersion,
457
+ cacheDir: args.cacheDir || undefined,
458
+ });
459
+ (0, ConsoleReporter_1.logInfo)(`${resolved.cached ? "Reused cached" : "Cloned"} pack at ${resolved.packRoot} ` +
460
+ `(commit ${resolved.commit.slice(0, 7)})`);
461
+ return {
462
+ packRoot: resolved.packRoot,
463
+ remote: {
464
+ repo: args.packRepo,
465
+ version: args.packVersion,
466
+ commit: resolved.commit,
467
+ },
468
+ };
469
+ }
470
+ return { packRoot: args.packRoot, remote: null };
471
+ }
472
+ function enforcePackSecurity(projectDir, packId, packDir, source) {
473
+ const digest = (0, verify_1.computePackDigest)(packDir);
474
+ if (!source.remote)
475
+ return digest;
476
+ const lock = (0, lock_1.readLock)(projectDir);
477
+ const prev = lock && lock.packs.find((p) => p.repo === source.remote.repo && p.pack_id === packId);
478
+ (0, verify_1.assertDigestUnchanged)(prev, packId, source.remote.version, digest);
479
+ const policy = (0, verify_1.readSecurityPolicy)(projectDir);
480
+ if (policy.requireSignedPacks) {
481
+ const sig = (0, verify_1.verifyTagSignature)(source.packRoot, source.remote.version);
482
+ if (!sig.verified) {
483
+ throw new Error(`require_signed_packs is enabled but ${source.remote.repo}@${source.remote.version} ` +
484
+ "has no valid GPG signature (checked the tag, then the commit).\n" +
485
+ "Fix: have the pack maintainer publish signed tags (git tag -s) and import " +
486
+ "their public key, or disable require_signed_packs in specops.config.yaml.");
487
+ }
488
+ (0, ConsoleReporter_1.logInfo)(`Signature verified via git verify-${sig.method} for ${source.remote.version}.`);
489
+ }
490
+ return digest;
491
+ }
492
+ function updateLockfile(projectDir, packId, remote, vars, dryRun, digest) {
493
+ if (!remote)
494
+ return;
495
+ const existing = (0, lock_1.readLock)(projectDir) || (0, lock_1.newLock)(PACKAGE_VERSION);
496
+ existing.csda_version = PACKAGE_VERSION;
497
+ const updated = (0, lock_1.upsertPackEntry)(existing, {
498
+ repo: remote.repo,
499
+ version: remote.version,
500
+ commit: remote.commit,
501
+ digest,
502
+ pack_id: packId,
503
+ expanded_at: new Date().toISOString(),
504
+ vars: { ...(vars || {}) },
505
+ });
506
+ const result = (0, lock_1.writeLock)(projectDir, updated, { dryRun });
507
+ (0, ConsoleReporter_1.logInfo)(`${dryRun ? "[dry-run] would write" : "Wrote"} ${result.path}`);
508
+ }
509
+ function updateBaseline(projectDir, packId, remote, dryRun) {
510
+ if (!remote)
511
+ return;
512
+ const entries = (0, DiskPackRepository_1.getWrittenFiles)().map((written) => ({
513
+ rel: path.relative(projectDir, written.file).split(path.sep).join("/"),
514
+ content: written.content,
515
+ }));
516
+ const result = (0, manifest_1.snapshotBaseline)(projectDir, packId, entries, { version: remote.version }, { dryRun });
517
+ if (result.written) {
518
+ (0, ConsoleReporter_1.logInfo)(`Recorded baseline for ${result.count} file(s) under .specops/baseline/${packId}`);
519
+ }
520
+ }
521
+ class ExpandDomainPackCommand extends command_1.BaseCommand {
522
+ execute() {
523
+ try {
524
+ const rawArgs = this.args[0] === "expand" ? this.args.slice(1) : this.args;
525
+ const args = (0, pack_args_1.parseArgs)(rawArgs);
526
+ if (!args.pack || !args.projectDir) {
527
+ usage();
528
+ process.exit(2);
529
+ }
530
+ if (!args.packRoot && !args.packRepo) {
531
+ usage();
532
+ process.exit(2);
533
+ }
534
+ const source = resolvePackSource(args);
535
+ const { pack, packRoot, packFile } = (0, DiskPackRepository_1.loadPack)(source.packRoot, args.pack);
536
+ const { requiredVars } = (0, DiskPackRepository_1.validatePackModel)(pack, packRoot);
537
+ const vars = (0, PackSpec_1.normalizeVars)(requiredVars, args.vars);
538
+ (0, DiskPackRepository_1.ensureProjectDir)(args.projectDir, args.dryRun);
539
+ const digest = enforcePackSecurity(args.projectDir, args.pack, packRoot, source);
540
+ (0, ConsoleReporter_1.logInfo)(`Using pack: ${packFile}`);
541
+ (0, DiskPackRepository_1.resetWrittenFiles)();
542
+ renderStaticFiles(pack, packRoot, args.projectDir, vars, args.dryRun);
543
+ const generated = renderScenarios(pack, packRoot, args.projectDir, vars, args.dryRun, args.noExamples);
544
+ renderDomainDocs(pack, args.projectDir, args.dryRun);
545
+ renderTraceability(pack, args.projectDir, generated, args.dryRun);
546
+ updateLockfile(args.projectDir, args.pack, source.remote, vars, args.dryRun, digest);
547
+ updateBaseline(args.projectDir, args.pack, source.remote, args.dryRun);
548
+ (0, ConsoleReporter_1.logInfo)(`Generated ${generated.length} scenario file(s).`);
549
+ (0, ConsoleReporter_1.logInfo)("Domain pack expansion completed.");
550
+ process.exit(0);
551
+ }
552
+ catch (error) {
553
+ (0, ConsoleReporter_1.logError)(error.message);
554
+ process.exit(1);
555
+ }
556
+ }
557
+ }
558
+ exports.ExpandDomainPackCommand = ExpandDomainPackCommand;
559
+ //# sourceMappingURL=ExpandDomainPackCommand.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExpandDomainPackCommand.js","sourceRoot":"","sources":["../../../../../scripts/cli/commands/pack/ExpandDomainPackCommand.ts"],"names":[],"mappings":"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"}