@evolith/smart-cli 0.0.2-beta → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (432) hide show
  1. package/ARCHITECTURE.md +1 -1
  2. package/LICENSE +21 -0
  3. package/README.es.md +1024 -171
  4. package/README.md +1018 -166
  5. package/dist/.tsbuildinfo +1 -0
  6. package/dist/CoreApiClient.d.ts +5 -0
  7. package/dist/CoreApiClient.js +25 -0
  8. package/dist/CoreApiClient.js.map +1 -0
  9. package/dist/app.module.js +97 -12
  10. package/dist/app.module.js.map +1 -1
  11. package/dist/commands/adr/adr.command.d.ts +9 -3
  12. package/dist/commands/adr/adr.command.js +82 -88
  13. package/dist/commands/adr/adr.command.js.map +1 -1
  14. package/dist/commands/agents/agents.command.d.ts +27 -0
  15. package/dist/commands/agents/agents.command.js +373 -0
  16. package/dist/commands/agents/agents.command.js.map +1 -0
  17. package/dist/commands/agents/index.d.ts +1 -0
  18. package/dist/commands/agents/index.js +6 -0
  19. package/dist/commands/agents/index.js.map +1 -0
  20. package/dist/commands/alias/alias.command.d.ts +16 -0
  21. package/dist/commands/alias/alias.command.js +95 -0
  22. package/dist/commands/alias/alias.command.js.map +1 -0
  23. package/dist/commands/api/api.catalog.d.ts +38 -0
  24. package/dist/commands/api/api.catalog.js +167 -0
  25. package/dist/commands/api/api.catalog.js.map +1 -0
  26. package/dist/commands/api/api.command.d.ts +21 -0
  27. package/dist/commands/api/api.command.js +162 -0
  28. package/dist/commands/api/api.command.js.map +1 -0
  29. package/dist/commands/architecture/scaffold/index.d.ts +2 -0
  30. package/dist/commands/architecture/scaffold/index.js +6 -0
  31. package/dist/commands/architecture/scaffold/index.js.map +1 -0
  32. package/dist/commands/architecture/scaffold/scaffold-strategy.d.ts +15 -0
  33. package/dist/commands/architecture/scaffold/scaffold-strategy.js +20 -0
  34. package/dist/commands/architecture/scaffold/scaffold-strategy.js.map +1 -0
  35. package/dist/commands/architecture/scaffold.command.d.ts +12 -3
  36. package/dist/commands/architecture/scaffold.command.js +222 -56
  37. package/dist/commands/architecture/scaffold.command.js.map +1 -1
  38. package/dist/commands/chat/chat.command.d.ts +7 -0
  39. package/dist/commands/chat/chat.command.js +64 -0
  40. package/dist/commands/chat/chat.command.js.map +1 -0
  41. package/dist/commands/completion/completion.command.d.ts +12 -4
  42. package/dist/commands/completion/completion.command.js +159 -53
  43. package/dist/commands/completion/completion.command.js.map +1 -1
  44. package/dist/commands/docs/docs.command.d.ts +6 -3
  45. package/dist/commands/docs/docs.command.js +75 -16
  46. package/dist/commands/docs/docs.command.js.map +1 -1
  47. package/dist/commands/drift/drift.command.d.ts +7 -3
  48. package/dist/commands/drift/drift.command.js +94 -52
  49. package/dist/commands/drift/drift.command.js.map +1 -1
  50. package/dist/commands/evaluate/evaluate.command.d.ts +28 -0
  51. package/dist/commands/evaluate/evaluate.command.js +197 -0
  52. package/dist/commands/evaluate/evaluate.command.js.map +1 -0
  53. package/dist/commands/fixtures/fixtures.command.d.ts +21 -0
  54. package/dist/commands/fixtures/fixtures.command.js +310 -0
  55. package/dist/commands/fixtures/fixtures.command.js.map +1 -0
  56. package/dist/commands/gate/gate.command.d.ts +29 -0
  57. package/dist/commands/gate/gate.command.js +193 -0
  58. package/dist/commands/gate/gate.command.js.map +1 -0
  59. package/dist/commands/history/history.command.d.ts +3 -3
  60. package/dist/commands/history/history.command.js +24 -55
  61. package/dist/commands/history/history.command.js.map +1 -1
  62. package/dist/commands/init/init.command.d.ts +9 -3
  63. package/dist/commands/init/init.command.js +39 -198
  64. package/dist/commands/init/init.command.js.map +1 -1
  65. package/dist/commands/init/init.wizard.d.ts +19 -0
  66. package/dist/commands/init/init.wizard.js +181 -0
  67. package/dist/commands/init/init.wizard.js.map +1 -0
  68. package/dist/commands/phase/phase-advance.command.d.ts +30 -0
  69. package/dist/commands/phase/phase-advance.command.js +206 -0
  70. package/dist/commands/phase/phase-advance.command.js.map +1 -0
  71. package/dist/commands/plan/index.d.ts +1 -0
  72. package/dist/commands/plan/index.js +133 -0
  73. package/dist/commands/plan/index.js.map +1 -0
  74. package/dist/commands/profile/profile.command.d.ts +18 -0
  75. package/dist/commands/profile/profile.command.js +198 -0
  76. package/dist/commands/profile/profile.command.js.map +1 -0
  77. package/dist/commands/satellite/index.d.ts +2 -0
  78. package/dist/commands/satellite/index.js +8 -0
  79. package/dist/commands/satellite/index.js.map +1 -0
  80. package/dist/commands/satellite/satellite-adopt.command.d.ts +21 -0
  81. package/dist/commands/satellite/satellite-adopt.command.js +193 -0
  82. package/dist/commands/satellite/satellite-adopt.command.js.map +1 -0
  83. package/dist/commands/satellite/satellite-create.command.d.ts +26 -0
  84. package/dist/commands/satellite/satellite-create.command.js +192 -0
  85. package/dist/commands/satellite/satellite-create.command.js.map +1 -0
  86. package/dist/commands/sdlc/gate-status.command.d.ts +8 -3
  87. package/dist/commands/sdlc/gate-status.command.js +114 -66
  88. package/dist/commands/sdlc/gate-status.command.js.map +1 -1
  89. package/dist/commands/sdlc/generate-domain.command.d.ts +6 -3
  90. package/dist/commands/sdlc/generate-domain.command.js +126 -16
  91. package/dist/commands/sdlc/generate-domain.command.js.map +1 -1
  92. package/dist/commands/sdlc/handoff.command.d.ts +9 -4
  93. package/dist/commands/sdlc/handoff.command.js +106 -104
  94. package/dist/commands/sdlc/handoff.command.js.map +1 -1
  95. package/dist/commands/sdlc/sdlc.command.d.ts +4 -3
  96. package/dist/commands/sdlc/sdlc.command.js +17 -9
  97. package/dist/commands/sdlc/sdlc.command.js.map +1 -1
  98. package/dist/commands/standards/standards.command.d.ts +6 -3
  99. package/dist/commands/standards/standards.command.js +52 -77
  100. package/dist/commands/standards/standards.command.js.map +1 -1
  101. package/dist/commands/topology/phase-artifacts.command.d.ts +23 -0
  102. package/dist/commands/topology/phase-artifacts.command.js +167 -0
  103. package/dist/commands/topology/phase-artifacts.command.js.map +1 -0
  104. package/dist/commands/topology/recommend.command.d.ts +36 -0
  105. package/dist/commands/topology/recommend.command.js +236 -0
  106. package/dist/commands/topology/recommend.command.js.map +1 -0
  107. package/dist/commands/topology/topology.command.d.ts +5 -0
  108. package/dist/commands/topology/topology.command.js +41 -0
  109. package/dist/commands/topology/topology.command.js.map +1 -0
  110. package/dist/commands/update/update.command.d.ts +21 -0
  111. package/dist/commands/update/update.command.js +214 -0
  112. package/dist/commands/update/update.command.js.map +1 -0
  113. package/dist/commands/upgrade/upgrade.command.d.ts +22 -0
  114. package/dist/commands/{init → upgrade}/upgrade.command.js +34 -66
  115. package/dist/commands/upgrade/upgrade.command.js.map +1 -0
  116. package/dist/commands/validate/validate.command.d.ts +24 -6
  117. package/dist/commands/validate/validate.command.js +301 -63
  118. package/dist/commands/validate/validate.command.js.map +1 -1
  119. package/dist/config/alias.service.d.ts +14 -0
  120. package/dist/{core/sync/sync.service.js → config/alias.service.js} +54 -32
  121. package/dist/config/alias.service.js.map +1 -0
  122. package/dist/contributions/contribution-validator.d.ts +16 -0
  123. package/dist/contributions/contribution-validator.js +34 -0
  124. package/dist/contributions/contribution-validator.js.map +1 -0
  125. package/dist/contributions/index.d.ts +1 -0
  126. package/dist/contributions/index.js +6 -0
  127. package/dist/contributions/index.js.map +1 -0
  128. package/dist/{domain/services → infrastructure/adapters}/agent-registry.service.d.ts +6 -2
  129. package/dist/{domain/services → infrastructure/adapters}/agent-registry.service.js +33 -10
  130. package/dist/infrastructure/adapters/agent-registry.service.js.map +1 -0
  131. package/dist/infrastructure/agent/agent-runtime.factory.d.ts +9 -0
  132. package/dist/infrastructure/agent/agent-runtime.factory.js +47 -0
  133. package/dist/infrastructure/agent/agent-runtime.factory.js.map +1 -0
  134. package/dist/{core → infrastructure}/architecture/nx-workspace.strategy.d.ts +9 -1
  135. package/dist/infrastructure/architecture/nx-workspace.strategy.js +125 -0
  136. package/dist/infrastructure/architecture/nx-workspace.strategy.js.map +1 -0
  137. package/dist/infrastructure/architecture/topology-catalog.d.ts +15 -0
  138. package/dist/infrastructure/architecture/topology-catalog.js +50 -0
  139. package/dist/infrastructure/architecture/topology-catalog.js.map +1 -0
  140. package/dist/infrastructure/catalog/catalog-loader.d.ts +1 -2
  141. package/dist/infrastructure/catalog/catalog-loader.js +14 -5
  142. package/dist/infrastructure/catalog/catalog-loader.js.map +1 -1
  143. package/dist/infrastructure/cli/base-command.d.ts +14 -0
  144. package/dist/infrastructure/cli/base-command.js +41 -0
  145. package/dist/infrastructure/cli/base-command.js.map +1 -0
  146. package/dist/infrastructure/cli/command-executor.d.ts +2 -1
  147. package/dist/infrastructure/cli/command-executor.js +20 -3
  148. package/dist/infrastructure/cli/command-executor.js.map +1 -1
  149. package/dist/infrastructure/cli/providers/index.js +32 -29
  150. package/dist/infrastructure/cli/providers/index.js.map +1 -1
  151. package/dist/infrastructure/config/config.service.d.ts +34 -0
  152. package/dist/infrastructure/config/config.service.js +126 -0
  153. package/dist/infrastructure/config/config.service.js.map +1 -0
  154. package/dist/infrastructure/filesystem/file-manager.service.d.ts +12 -0
  155. package/dist/{core → infrastructure}/filesystem/file-manager.service.js +8 -25
  156. package/dist/infrastructure/filesystem/file-manager.service.js.map +1 -0
  157. package/dist/infrastructure/formatters/output-formatter.service.js +2 -1
  158. package/dist/infrastructure/formatters/output-formatter.service.js.map +1 -1
  159. package/dist/{core → infrastructure}/observability/command-watcher.js +31 -0
  160. package/dist/infrastructure/observability/command-watcher.js.map +1 -0
  161. package/dist/{core → infrastructure}/observability/error-reporter.js +5 -5
  162. package/dist/infrastructure/observability/error-reporter.js.map +1 -0
  163. package/dist/infrastructure/observability/index.d.ts +11 -0
  164. package/dist/{core → infrastructure}/observability/index.js +8 -1
  165. package/dist/infrastructure/observability/index.js.map +1 -0
  166. package/dist/infrastructure/observability/otel-tracing.d.ts +4 -0
  167. package/dist/infrastructure/observability/otel-tracing.js +34 -0
  168. package/dist/infrastructure/observability/otel-tracing.js.map +1 -0
  169. package/dist/infrastructure/observability/structured-logger.js.map +1 -0
  170. package/dist/infrastructure/observability/timing.js.map +1 -0
  171. package/dist/infrastructure/observability/tool-usage-telemetry.service.js.map +1 -0
  172. package/dist/infrastructure/plugins/plugin-loader.d.ts +10 -0
  173. package/dist/infrastructure/plugins/plugin-loader.js +145 -0
  174. package/dist/infrastructure/plugins/plugin-loader.js.map +1 -0
  175. package/dist/infrastructure/plugins/plugin.module.d.ts +4 -0
  176. package/dist/infrastructure/plugins/plugin.module.js +28 -0
  177. package/dist/infrastructure/plugins/plugin.module.js.map +1 -0
  178. package/dist/infrastructure/prompts/init-prompt-group.d.ts +3 -0
  179. package/dist/infrastructure/prompts/init-prompt-group.js +115 -0
  180. package/dist/infrastructure/prompts/init-prompt-group.js.map +1 -0
  181. package/dist/infrastructure/prompts/init-prompt-options.d.ts +10 -0
  182. package/dist/infrastructure/prompts/init-prompt-options.js +40 -0
  183. package/dist/infrastructure/prompts/init-prompt-options.js.map +1 -0
  184. package/dist/infrastructure/prompts/progress.service.d.ts +24 -0
  185. package/dist/infrastructure/prompts/progress.service.js +180 -0
  186. package/dist/infrastructure/prompts/progress.service.js.map +1 -0
  187. package/dist/infrastructure/prompts/prompt.service.d.ts +42 -0
  188. package/dist/infrastructure/prompts/prompt.service.js +142 -0
  189. package/dist/infrastructure/prompts/prompt.service.js.map +1 -0
  190. package/dist/infrastructure/prompts/wizard.service.d.ts +27 -0
  191. package/dist/infrastructure/prompts/wizard.service.js +163 -0
  192. package/dist/infrastructure/prompts/wizard.service.js.map +1 -0
  193. package/dist/{core/abstractions → infrastructure}/providers/config-parser.provider.d.ts +1 -1
  194. package/dist/infrastructure/providers/config-parser.provider.js.map +1 -0
  195. package/dist/{core/abstractions → infrastructure}/providers/logger.provider.d.ts +1 -1
  196. package/dist/infrastructure/providers/logger.provider.js.map +1 -0
  197. package/dist/{core/abstractions → infrastructure}/providers/mock-filesystem.provider.d.ts +6 -2
  198. package/dist/{core/abstractions → infrastructure}/providers/mock-filesystem.provider.js +8 -1
  199. package/dist/infrastructure/providers/mock-filesystem.provider.js.map +1 -0
  200. package/dist/{core/abstractions → infrastructure}/providers/node-filesystem.provider.d.ts +6 -2
  201. package/dist/{core/abstractions → infrastructure}/providers/node-filesystem.provider.js +13 -0
  202. package/dist/infrastructure/providers/node-filesystem.provider.js.map +1 -0
  203. package/dist/main.js +30 -2
  204. package/dist/main.js.map +1 -1
  205. package/dist/plugins/index.d.ts +1 -0
  206. package/dist/plugins/index.js +6 -0
  207. package/dist/plugins/index.js.map +1 -0
  208. package/dist/plugins/plugin-registry.d.ts +22 -0
  209. package/dist/plugins/plugin-registry.js +33 -0
  210. package/dist/plugins/plugin-registry.js.map +1 -0
  211. package/package.json +58 -27
  212. package/shell/hooks.bash +68 -0
  213. package/shell/hooks.fish +57 -0
  214. package/shell/hooks.zsh +68 -0
  215. package/dist/application/services/index.d.ts +0 -63
  216. package/dist/application/services/index.js +0 -345
  217. package/dist/application/services/index.js.map +0 -1
  218. package/dist/application/services/phase-transition.use-case.spec.d.ts +0 -1
  219. package/dist/application/services/phase-transition.use-case.spec.js +0 -297
  220. package/dist/application/services/phase-transition.use-case.spec.js.map +0 -1
  221. package/dist/application/services/services.test.d.ts +0 -1
  222. package/dist/application/services/services.test.js +0 -176
  223. package/dist/application/services/services.test.js.map +0 -1
  224. package/dist/application/use-cases/validate-satellite.use-case.d.ts +0 -18
  225. package/dist/application/use-cases/validate-satellite.use-case.js +0 -92
  226. package/dist/application/use-cases/validate-satellite.use-case.js.map +0 -1
  227. package/dist/application/use-cases/validate-satellite.use-case.spec.d.ts +0 -1
  228. package/dist/application/use-cases/validate-satellite.use-case.spec.js +0 -102
  229. package/dist/application/use-cases/validate-satellite.use-case.spec.js.map +0 -1
  230. package/dist/commands/commands.test.d.ts +0 -1
  231. package/dist/commands/commands.test.js +0 -131
  232. package/dist/commands/commands.test.js.map +0 -1
  233. package/dist/commands/init/agents.command.d.ts +0 -22
  234. package/dist/commands/init/agents.command.js +0 -502
  235. package/dist/commands/init/agents.command.js.map +0 -1
  236. package/dist/commands/init/agents.command.spec.d.ts +0 -1
  237. package/dist/commands/init/agents.command.spec.js +0 -152
  238. package/dist/commands/init/agents.command.spec.js.map +0 -1
  239. package/dist/commands/init/upgrade.command.d.ts +0 -19
  240. package/dist/commands/init/upgrade.command.js.map +0 -1
  241. package/dist/commands/mcp/mcp-serve.command.d.ts +0 -15
  242. package/dist/commands/mcp/mcp-serve.command.js +0 -106
  243. package/dist/commands/mcp/mcp-serve.command.js.map +0 -1
  244. package/dist/config/runtimes.json +0 -196
  245. package/dist/config/tool-catalog.json +0 -343
  246. package/dist/core/abstractions/index.d.ts +0 -6
  247. package/dist/core/abstractions/index.js +0 -23
  248. package/dist/core/abstractions/index.js.map +0 -1
  249. package/dist/core/abstractions/interfaces.d.ts +0 -60
  250. package/dist/core/abstractions/interfaces.js +0 -5
  251. package/dist/core/abstractions/interfaces.js.map +0 -1
  252. package/dist/core/abstractions/providers/config-parser.provider.js.map +0 -1
  253. package/dist/core/abstractions/providers/logger.provider.js.map +0 -1
  254. package/dist/core/abstractions/providers/mock-filesystem.provider.js.map +0 -1
  255. package/dist/core/abstractions/providers/node-filesystem.provider.js.map +0 -1
  256. package/dist/core/agents/agent-ruleset-builder.d.ts +0 -30
  257. package/dist/core/agents/agent-ruleset-builder.js +0 -75
  258. package/dist/core/agents/agent-ruleset-builder.js.map +0 -1
  259. package/dist/core/agents/agent-ruleset-builder.spec.d.ts +0 -1
  260. package/dist/core/agents/agent-ruleset-builder.spec.js +0 -135
  261. package/dist/core/agents/agent-ruleset-builder.spec.js.map +0 -1
  262. package/dist/core/architecture/nx-workspace.strategy.js +0 -107
  263. package/dist/core/architecture/nx-workspace.strategy.js.map +0 -1
  264. package/dist/core/architecture/workspace-manager.strategy.d.ts +0 -7
  265. package/dist/core/architecture/workspace-manager.strategy.js +0 -3
  266. package/dist/core/architecture/workspace-manager.strategy.js.map +0 -1
  267. package/dist/core/config/config.service.d.ts +0 -15
  268. package/dist/core/config/config.service.js +0 -55
  269. package/dist/core/config/config.service.js.map +0 -1
  270. package/dist/core/config/config.service.spec.d.ts +0 -1
  271. package/dist/core/config/config.service.spec.js +0 -43
  272. package/dist/core/config/config.service.spec.js.map +0 -1
  273. package/dist/core/di/container.d.ts +0 -25
  274. package/dist/core/di/container.js +0 -87
  275. package/dist/core/di/container.js.map +0 -1
  276. package/dist/core/di/container.spec.d.ts +0 -1
  277. package/dist/core/di/container.spec.js +0 -137
  278. package/dist/core/di/container.spec.js.map +0 -1
  279. package/dist/core/errors/index.d.ts +0 -26
  280. package/dist/core/errors/index.js +0 -67
  281. package/dist/core/errors/index.js.map +0 -1
  282. package/dist/core/filesystem/file-manager.service.d.ts +0 -4
  283. package/dist/core/filesystem/file-manager.service.js.map +0 -1
  284. package/dist/core/filesystem/file-manager.service.spec.d.ts +0 -1
  285. package/dist/core/filesystem/file-manager.service.spec.js +0 -103
  286. package/dist/core/filesystem/file-manager.service.spec.js.map +0 -1
  287. package/dist/core/mcp/mcp-server.service.d.ts +0 -7
  288. package/dist/core/mcp/mcp-server.service.js +0 -31
  289. package/dist/core/mcp/mcp-server.service.js.map +0 -1
  290. package/dist/core/mcp/metrics.service.d.ts +0 -37
  291. package/dist/core/mcp/metrics.service.js +0 -72
  292. package/dist/core/mcp/metrics.service.js.map +0 -1
  293. package/dist/core/mcp/prompts/index.d.ts +0 -22
  294. package/dist/core/mcp/prompts/index.js +0 -175
  295. package/dist/core/mcp/prompts/index.js.map +0 -1
  296. package/dist/core/mcp/resources/index.d.ts +0 -11
  297. package/dist/core/mcp/resources/index.js +0 -193
  298. package/dist/core/mcp/resources/index.js.map +0 -1
  299. package/dist/core/mcp/server.d.ts +0 -30
  300. package/dist/core/mcp/server.js +0 -468
  301. package/dist/core/mcp/server.js.map +0 -1
  302. package/dist/core/mcp/tools/agent.d.ts +0 -41
  303. package/dist/core/mcp/tools/agent.js +0 -195
  304. package/dist/core/mcp/tools/agent.js.map +0 -1
  305. package/dist/core/mcp/tools/architecture.d.ts +0 -27
  306. package/dist/core/mcp/tools/architecture.js +0 -166
  307. package/dist/core/mcp/tools/architecture.js.map +0 -1
  308. package/dist/core/mcp/tools/sdlc.d.ts +0 -32
  309. package/dist/core/mcp/tools/sdlc.js +0 -189
  310. package/dist/core/mcp/tools/sdlc.js.map +0 -1
  311. package/dist/core/mcp/tools/tool-utils.d.ts +0 -4
  312. package/dist/core/mcp/tools/tool-utils.js +0 -18
  313. package/dist/core/mcp/tools/tool-utils.js.map +0 -1
  314. package/dist/core/mcp/tools/validate.d.ts +0 -18
  315. package/dist/core/mcp/tools/validate.js +0 -56
  316. package/dist/core/mcp/tools/validate.js.map +0 -1
  317. package/dist/core/mcp/watcher.service.d.ts +0 -8
  318. package/dist/core/mcp/watcher.service.js +0 -82
  319. package/dist/core/mcp/watcher.service.js.map +0 -1
  320. package/dist/core/mcp/watcher.service.spec.d.ts +0 -1
  321. package/dist/core/mcp/watcher.service.spec.js +0 -70
  322. package/dist/core/mcp/watcher.service.spec.js.map +0 -1
  323. package/dist/core/observability/command-watcher.js.map +0 -1
  324. package/dist/core/observability/error-reporter.js.map +0 -1
  325. package/dist/core/observability/index.d.ts +0 -4
  326. package/dist/core/observability/index.js.map +0 -1
  327. package/dist/core/observability/observability.test.d.ts +0 -1
  328. package/dist/core/observability/observability.test.js +0 -224
  329. package/dist/core/observability/observability.test.js.map +0 -1
  330. package/dist/core/observability/structured-logger.js.map +0 -1
  331. package/dist/core/observability/timing.js.map +0 -1
  332. package/dist/core/services/command-executor.service.d.ts +0 -3
  333. package/dist/core/services/command-executor.service.js +0 -12
  334. package/dist/core/services/command-executor.service.js.map +0 -1
  335. package/dist/core/services/command-history.service.d.ts +0 -38
  336. package/dist/core/services/command-history.service.js +0 -146
  337. package/dist/core/services/command-history.service.js.map +0 -1
  338. package/dist/core/services/command-history.service.spec.d.ts +0 -1
  339. package/dist/core/services/command-history.service.spec.js +0 -166
  340. package/dist/core/services/command-history.service.spec.js.map +0 -1
  341. package/dist/core/services/command-providers.d.ts +0 -1
  342. package/dist/core/services/command-providers.js +0 -17
  343. package/dist/core/services/command-providers.js.map +0 -1
  344. package/dist/core/services/runtime-catalog.service.d.ts +0 -2
  345. package/dist/core/services/runtime-catalog.service.js +0 -7
  346. package/dist/core/services/runtime-catalog.service.js.map +0 -1
  347. package/dist/core/sync/sync.service.d.ts +0 -4
  348. package/dist/core/sync/sync.service.js.map +0 -1
  349. package/dist/core/sync/sync.service.spec.d.ts +0 -1
  350. package/dist/core/sync/sync.service.spec.js +0 -63
  351. package/dist/core/sync/sync.service.spec.js.map +0 -1
  352. package/dist/core/upgrade/satellite-upgrade.service.d.ts +0 -48
  353. package/dist/core/upgrade/satellite-upgrade.service.js +0 -358
  354. package/dist/core/upgrade/satellite-upgrade.service.js.map +0 -1
  355. package/dist/core/upgrade/satellite-upgrade.service.spec.d.ts +0 -1
  356. package/dist/core/upgrade/satellite-upgrade.service.spec.js +0 -143
  357. package/dist/core/upgrade/satellite-upgrade.service.spec.js.map +0 -1
  358. package/dist/core/validators/architecture-drift.service.d.ts +0 -68
  359. package/dist/core/validators/architecture-drift.service.js +0 -266
  360. package/dist/core/validators/architecture-drift.service.js.map +0 -1
  361. package/dist/core/validators/architecture-drift.service.spec.d.ts +0 -1
  362. package/dist/core/validators/architecture-drift.service.spec.js +0 -315
  363. package/dist/core/validators/architecture-drift.service.spec.js.map +0 -1
  364. package/dist/core/validators/phase-gate-validator.service.d.ts +0 -71
  365. package/dist/core/validators/phase-gate-validator.service.js +0 -271
  366. package/dist/core/validators/phase-gate-validator.service.js.map +0 -1
  367. package/dist/core/validators/phase-gate-validator.service.spec.d.ts +0 -1
  368. package/dist/core/validators/phase-gate-validator.service.spec.js +0 -326
  369. package/dist/core/validators/phase-gate-validator.service.spec.js.map +0 -1
  370. package/dist/core/validators/ruleset-validator-architecture.spec.d.ts +0 -1
  371. package/dist/core/validators/ruleset-validator-architecture.spec.js +0 -178
  372. package/dist/core/validators/ruleset-validator-architecture.spec.js.map +0 -1
  373. package/dist/core/validators/ruleset-validator.service.d.ts +0 -80
  374. package/dist/core/validators/ruleset-validator.service.js +0 -657
  375. package/dist/core/validators/ruleset-validator.service.js.map +0 -1
  376. package/dist/core/validators/ruleset-validator.service.spec.d.ts +0 -1
  377. package/dist/core/validators/ruleset-validator.service.spec.js +0 -122
  378. package/dist/core/validators/ruleset-validator.service.spec.js.map +0 -1
  379. package/dist/domain/entities/index.d.ts +0 -72
  380. package/dist/domain/entities/index.js +0 -119
  381. package/dist/domain/entities/index.js.map +0 -1
  382. package/dist/domain/interfaces.d.ts +0 -224
  383. package/dist/domain/interfaces.js +0 -3
  384. package/dist/domain/interfaces.js.map +0 -1
  385. package/dist/domain/services/adr.service.d.ts +0 -50
  386. package/dist/domain/services/adr.service.js +0 -125
  387. package/dist/domain/services/adr.service.js.map +0 -1
  388. package/dist/domain/services/adr.service.spec.d.ts +0 -1
  389. package/dist/domain/services/adr.service.spec.js +0 -141
  390. package/dist/domain/services/adr.service.spec.js.map +0 -1
  391. package/dist/domain/services/agent-registry.service.js.map +0 -1
  392. package/dist/domain/services/agent-registry.service.spec.d.ts +0 -1
  393. package/dist/domain/services/agent-registry.service.spec.js +0 -162
  394. package/dist/domain/services/agent-registry.service.spec.js.map +0 -1
  395. package/dist/domain/services/index.d.ts +0 -33
  396. package/dist/domain/services/index.js +0 -126
  397. package/dist/domain/services/index.js.map +0 -1
  398. package/dist/domain/services/services.test.d.ts +0 -1
  399. package/dist/domain/services/services.test.js +0 -236
  400. package/dist/domain/services/services.test.js.map +0 -1
  401. package/dist/domain/services/standards.service.d.ts +0 -47
  402. package/dist/domain/services/standards.service.js +0 -129
  403. package/dist/domain/services/standards.service.js.map +0 -1
  404. package/dist/domain/services/standards.service.spec.d.ts +0 -1
  405. package/dist/domain/services/standards.service.spec.js +0 -140
  406. package/dist/domain/services/standards.service.spec.js.map +0 -1
  407. package/dist/domain/services/tool-usage-telemetry.service.js.map +0 -1
  408. package/dist/domain/services/tool-usage-telemetry.service.spec.d.ts +0 -1
  409. package/dist/domain/services/tool-usage-telemetry.service.spec.js +0 -180
  410. package/dist/domain/services/tool-usage-telemetry.service.spec.js.map +0 -1
  411. package/dist/infrastructure/catalog/catalog-loader.test.d.ts +0 -1
  412. package/dist/infrastructure/catalog/catalog-loader.test.js +0 -184
  413. package/dist/infrastructure/catalog/catalog-loader.test.js.map +0 -1
  414. package/dist/infrastructure/cli/command-executor.test.d.ts +0 -1
  415. package/dist/infrastructure/cli/command-executor.test.js +0 -98
  416. package/dist/infrastructure/cli/command-executor.test.js.map +0 -1
  417. package/dist/infrastructure/formatters/output-formatter.service.spec.d.ts +0 -1
  418. package/dist/infrastructure/formatters/output-formatter.service.spec.js +0 -164
  419. package/dist/infrastructure/formatters/output-formatter.service.spec.js.map +0 -1
  420. package/dist/test/mocks/index.d.ts +0 -44
  421. package/dist/test/mocks/index.js +0 -135
  422. package/dist/test/mocks/index.js.map +0 -1
  423. /package/dist/{core → infrastructure}/observability/command-watcher.d.ts +0 -0
  424. /package/dist/{core → infrastructure}/observability/error-reporter.d.ts +0 -0
  425. /package/dist/{core → infrastructure}/observability/structured-logger.d.ts +0 -0
  426. /package/dist/{core → infrastructure}/observability/structured-logger.js +0 -0
  427. /package/dist/{core → infrastructure}/observability/timing.d.ts +0 -0
  428. /package/dist/{core → infrastructure}/observability/timing.js +0 -0
  429. /package/dist/{domain/services → infrastructure/observability}/tool-usage-telemetry.service.d.ts +0 -0
  430. /package/dist/{domain/services → infrastructure/observability}/tool-usage-telemetry.service.js +0 -0
  431. /package/dist/{core/abstractions → infrastructure}/providers/config-parser.provider.js +0 -0
  432. /package/dist/{core/abstractions → infrastructure}/providers/logger.provider.js +0 -0
@@ -1,345 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- var __metadata = (this && this.__metadata) || function (k, v) {
9
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.PhaseTransitionUseCase = exports.InitializeProjectUseCase = void 0;
13
- const services_1 = require("../../domain/services");
14
- const catalog_loader_1 = require("../../infrastructure/catalog/catalog-loader");
15
- const providers_1 = require("../../infrastructure/cli/providers");
16
- const observability_1 = require("../../core/observability");
17
- const phase_gate_validator_service_1 = require("../../core/validators/phase-gate-validator.service");
18
- class InitializeProjectUseCase {
19
- constructor(fs) {
20
- this.fs = fs;
21
- this.phaseService = new services_1.PhaseService();
22
- }
23
- async execute(input, cwd) {
24
- const warnings = [];
25
- const errors = [];
26
- const artifacts = [];
27
- try {
28
- const runtimes = catalog_loader_1.catalogLoader.loadRuntimeCatalog();
29
- const runtime = runtimes.find(r => r.id === input.runtime);
30
- if (!runtime) {
31
- errors.push(`Runtime ${input.runtime} not found`);
32
- return { success: false, artifacts, warnings, errors };
33
- }
34
- const monorepos = catalog_loader_1.catalogLoader.getMonorepoOptions();
35
- const monorepo = monorepos.find(m => m.id === input.monorepo);
36
- if (!monorepo) {
37
- errors.push(`Monorepo ${input.monorepo} not found`);
38
- return { success: false, artifacts, warnings, errors };
39
- }
40
- const architectures = catalog_loader_1.catalogLoader.getArchitecturePatterns();
41
- const architecture = architectures.find(a => a.id === input.architecture);
42
- if (!architecture) {
43
- errors.push(`Architecture ${input.architecture} not found`);
44
- return { success: false, artifacts, warnings, errors };
45
- }
46
- const projectDir = `${cwd}/${input.name}`;
47
- await this.fs.ensureDir(projectDir);
48
- await this.scaffoldEvolithYaml(input, projectDir);
49
- artifacts.push(`${input.name}/evolith.yaml`);
50
- await this.scaffoldReadme(input, projectDir);
51
- artifacts.push(`${input.name}/README.md`, `${input.name}/README.es.md`);
52
- await this.scaffoldByRuntime(input, projectDir);
53
- artifacts.push(`${input.name}/package.json`);
54
- if (input.features.includes('adr')) {
55
- await this.fs.ensureDir(`${projectDir}/reference/architecture/adrs`);
56
- await this.fs.writeJson(`${projectDir}/reference/architecture/adrs/adr-matrix.json`, { adrs: [] });
57
- artifacts.push(`${input.name}/reference/architecture/adrs/adr-matrix.json`);
58
- }
59
- if (input.features.includes('hooks')) {
60
- await this.fs.ensureDir(`${projectDir}/.husky`);
61
- await this.fs.writeFile(`${projectDir}/.husky/pre-commit`, '#!/bin/sh\nevolution validate --pre-commit\n');
62
- artifacts.push(`${input.name}/.husky/pre-commit`);
63
- }
64
- if (input.features.includes('acl')) {
65
- await this.fs.ensureDir(`${projectDir}/rulesets/acl`);
66
- await this.fs.writeJson(`${projectDir}/rulesets/acl/anti-corruption-layer.rules.json`, { version: '1.0.0', principles: [] });
67
- artifacts.push(`${input.name}/rulesets/acl/anti-corruption-layer.rules.json`);
68
- }
69
- const platformCheck = await this.checkRuntimePlatform(input.runtime);
70
- if (!platformCheck.available) {
71
- warnings.push(`Platform ${input.runtime} not detected. ${platformCheck.installHint || ''}`);
72
- }
73
- return { success: true, artifacts, warnings, errors };
74
- }
75
- catch (error) {
76
- const err = error;
77
- errors.push(err.message || 'Unknown error');
78
- return { success: false, artifacts, warnings, errors };
79
- }
80
- }
81
- async scaffoldEvolithYaml(input, projectDir) {
82
- const config = {
83
- coreRef: { version: '1.0.0', path: '../evolith' },
84
- governance: { version: '1.0.0' },
85
- product: { name: input.name, type: 'enterprise-application', phase: 'phase-0' },
86
- tools: {
87
- runtime: input.runtime,
88
- monorepo: input.monorepo,
89
- architecture: input.architecture,
90
- database: input.database,
91
- api: input.apiProtocol,
92
- ci: input.ciCd,
93
- observability: input.observability,
94
- },
95
- };
96
- await this.fs.writeJson(`${projectDir}/evolith.yaml`, config);
97
- }
98
- async scaffoldReadme(input, projectDir) {
99
- const readmeEn = `# ${input.name}
100
-
101
- > Bilingual navigation: [Español](./README.es.md)
102
-
103
- ## Overview
104
-
105
- This repository follows Evolith governance standards.
106
-
107
- ## Configuration
108
-
109
- | Component | Tool |
110
- |-----------|------|
111
- | Runtime | ${input.runtime} |
112
- | Monorepo | ${input.monorepo} |
113
- | Architecture | ${input.architecture} |
114
- | Database | ${input.database} |
115
- | API | ${input.apiProtocol} |
116
-
117
- ## Quick Start
118
-
119
- \`\`\`bash
120
- evolith validate
121
- evolith sdlc status
122
- \`\`\`
123
- `;
124
- const readmeEs = `# ${input.name}
125
-
126
- > Navegación bilingüe: [English](./README.md)
127
-
128
- ## Descripción General
129
-
130
- Este repositorio sigue los estándares de gobernanza de Evolith.
131
-
132
- ## Configuración
133
-
134
- | Componente | Herramienta |
135
- |------------|-------------|
136
- | Runtime | ${input.runtime} |
137
- | Monorepo | ${input.monorepo} |
138
- | Arquitectura | ${input.architecture} |
139
- | Base de Datos | ${input.database} |
140
- | API | ${input.apiProtocol} |
141
-
142
- ## Inicio Rápido
143
-
144
- \`\`\`bash
145
- evolith validate
146
- evolith sdlc status
147
- \`\`\`
148
- `;
149
- await this.fs.writeFile(`${projectDir}/README.md`, readmeEn);
150
- await this.fs.writeFile(`${projectDir}/README.es.md`, readmeEs);
151
- }
152
- async scaffoldByRuntime(input, projectDir) {
153
- switch (input.runtime) {
154
- case 'nodejs':
155
- case 'typescript':
156
- await this.scaffoldNodeJs(input, projectDir);
157
- break;
158
- case 'dotnet':
159
- await this.scaffoldDotnet(input, projectDir);
160
- break;
161
- case 'python':
162
- await this.scaffoldPython(input, projectDir);
163
- break;
164
- default:
165
- throw new Error(`Runtime ${input.runtime} scaffolding not implemented`);
166
- }
167
- }
168
- async scaffoldNodeJs(input, projectDir) {
169
- const isTs = input.runtime === 'typescript';
170
- const packageJson = {
171
- name: input.name,
172
- version: '0.1.0',
173
- scripts: {
174
- build: isTs ? 'tsc' : 'echo "No build"',
175
- start: isTs ? 'node dist/main.js' : 'node src/index.js',
176
- dev: isTs ? 'ts-node src/main.ts' : 'node src/index.js',
177
- test: 'jest',
178
- lint: 'eslint .',
179
- validate: 'evolith validate',
180
- },
181
- devDependencies: isTs
182
- ? { typescript: '^5.0.0', '@types/node': '^20.0.0', jest: '^29.0.0', eslint: '^8.0.0' }
183
- : { jest: '^29.0.0', eslint: '^8.0.0' },
184
- };
185
- await this.fs.writeJson(`${projectDir}/package.json`, packageJson);
186
- await this.fs.ensureDir(`${projectDir}/src`);
187
- if (isTs) {
188
- await this.fs.writeJson(`${projectDir}/tsconfig.json`, {
189
- compilerOptions: {
190
- target: 'ES2020',
191
- module: 'commonjs',
192
- outDir: './dist',
193
- rootDir: './src',
194
- strict: true,
195
- esModuleInterop: true,
196
- },
197
- include: ['src/**/*'],
198
- exclude: ['node_modules', 'dist'],
199
- });
200
- }
201
- }
202
- async scaffoldDotnet(input, projectDir) {
203
- const csproj = `<Project Sdk="Microsoft.NET.Sdk.Web">
204
- <PropertyGroup>
205
- <TargetFramework>net8.0</TargetFramework>
206
- <OutputType>Exe</OutputType>
207
- <Nullable>enable</Nullable>
208
- <ImplicitUsings>enable</ImplicitUsings>
209
- </PropertyGroup>
210
- </Project>
211
- `;
212
- await this.fs.writeFile(`${projectDir}/${input.name}.csproj`, csproj);
213
- await this.fs.ensureDir(`${projectDir}/src`);
214
- }
215
- async scaffoldPython(input, projectDir) {
216
- await this.fs.writeFile(`${projectDir}/requirements.txt`, `# ${input.name}\npytest>=8.0.0\nblack>=24.0.0\nruff>=0.2.0\n`);
217
- await this.fs.writeJson(`${projectDir}/pyproject.toml`, {
218
- project: { name: input.name, version: '0.1.0', requiresPython: '>=3.11' },
219
- tool: { black: { lineLength: 100 }, ruff: { lineLength: 100 } },
220
- });
221
- await this.fs.ensureDir(`${projectDir}/src`);
222
- await this.fs.writeFile(`${projectDir}/src/__init__.py`, '');
223
- await this.fs.writeFile(`${projectDir}/src/main.py`, `def main():\n print("${input.name} initialized")\n\nif __name__ == "__main__":\n main()\n`);
224
- }
225
- async checkRuntimePlatform(runtime) {
226
- switch (runtime) {
227
- case 'nodejs':
228
- case 'typescript':
229
- return { available: await providers_1.npmProvider.isAvailable() };
230
- case 'dotnet':
231
- return { available: await providers_1.dotnetProvider.isAvailable() };
232
- case 'python':
233
- return { available: await providers_1.pythonProvider.isAvailable() };
234
- default:
235
- return { available: false };
236
- }
237
- }
238
- }
239
- exports.InitializeProjectUseCase = InitializeProjectUseCase;
240
- __decorate([
241
- (0, observability_1.Timed)('InitializeProjectUseCase.execute'),
242
- __metadata("design:type", Function),
243
- __metadata("design:paramtypes", [Object, String]),
244
- __metadata("design:returntype", Promise)
245
- ], InitializeProjectUseCase.prototype, "execute", null);
246
- class PhaseTransitionUseCase {
247
- constructor(fs, corePath) {
248
- this.fs = fs;
249
- this.phaseService = new services_1.PhaseService();
250
- this.gateValidator = new phase_gate_validator_service_1.PhaseGateValidatorService(corePath);
251
- }
252
- async execute(from, to, tools, cwd) {
253
- observability_1.logger.info('Phase transition initiated', { from, to, toolCount: tools.length });
254
- const warnings = [];
255
- const errors = [];
256
- if (!this.phaseService.canTransition(from, to)) {
257
- errors.push(`Invalid phase transition: ${from} → ${to}. Must be consecutive phases.`);
258
- return { success: false, from, to, gateResults: [], executedTools: [], warnings, errors };
259
- }
260
- const targetPhaseNumber = this.phaseService.getPhaseIndex(to);
261
- const gateResults = targetPhaseNumber >= 0
262
- ? await this.validateGatesWithValidator(targetPhaseNumber, cwd)
263
- : await this.validateGatesLegacy(from, cwd);
264
- const failedRequiredGates = gateResults.filter(g => !g.passed && g.required);
265
- if (failedRequiredGates.length > 0) {
266
- errors.push(...failedRequiredGates.map(g => `Gate ${g.id} failed: ${g.description}`));
267
- }
268
- const executedTools = [];
269
- for (const tool of tools) {
270
- executedTools.push(tool);
271
- }
272
- return {
273
- success: errors.length === 0,
274
- from,
275
- to,
276
- gateResults,
277
- executedTools,
278
- warnings,
279
- errors,
280
- };
281
- }
282
- async getGateStatus(cwd) {
283
- return this.gateValidator.getGateStatus(cwd);
284
- }
285
- async validateGatesWithValidator(phaseNumber, cwd) {
286
- try {
287
- const result = await this.gateValidator.validateGate(phaseNumber, cwd);
288
- const gates = [];
289
- for (const evidence of result.evidenceResults) {
290
- gates.push({
291
- id: `${result.gateId}-${evidence.artifact.replace(/\s+/g, '-')}`,
292
- passed: evidence.passed,
293
- description: evidence.validationMessage,
294
- required: evidence.required,
295
- });
296
- }
297
- for (const blocking of result.blockingChecks) {
298
- if (blocking.triggered) {
299
- gates.push({
300
- id: `${result.gateId}-BLOCK-${blocking.criterion.replace(/\s+/g, '-').substring(0, 30)}`,
301
- passed: false,
302
- description: `Blocking: ${blocking.criterion} — ${blocking.action}`,
303
- required: true,
304
- });
305
- }
306
- }
307
- return gates;
308
- }
309
- catch (error) {
310
- const message = error instanceof Error ? error.message : String(error);
311
- observability_1.logger.warn(`Gate validator failed, falling back to legacy validation: ${message}`);
312
- return this.validateGatesLegacy(this.phaseService.getAllPhases()[phaseNumber]?.value || 'phase-0', cwd);
313
- }
314
- }
315
- async validateGatesLegacy(phase, cwd) {
316
- const gates = [];
317
- const evolithYamlPath = `${cwd}/evolith.yaml`;
318
- switch (phase) {
319
- case 'phase-0':
320
- gates.push({ id: 'PG0-01', passed: await this.fs.exists(evolithYamlPath), description: 'evolith.yaml exists', required: true });
321
- if (await this.fs.exists(evolithYamlPath)) {
322
- const config = await this.fs.readJson(evolithYamlPath);
323
- gates.push({ id: 'PG0-02', passed: !!config.coreRef?.version, description: 'coreRef.version pinned', required: true });
324
- }
325
- break;
326
- case 'phase-1':
327
- gates.push({ id: 'PG1-01', passed: await this.fs.exists(`${cwd}/package.json`), description: 'package.json exists', required: true });
328
- gates.push({ id: 'PG1-02', passed: await this.fs.exists(`${cwd}/src`), description: 'src/ directory exists', required: true });
329
- break;
330
- case 'phase-2':
331
- gates.push({ id: 'PG2-01', passed: await this.fs.exists(`${cwd}/rulesets`), description: 'rulesets/ exists', required: true });
332
- gates.push({ id: 'PG2-02', passed: await this.fs.exists(`${cwd}/.harness`), description: '.harness/ exists', required: true });
333
- break;
334
- }
335
- return gates;
336
- }
337
- }
338
- exports.PhaseTransitionUseCase = PhaseTransitionUseCase;
339
- __decorate([
340
- (0, observability_1.Timed)('PhaseTransitionUseCase.execute'),
341
- __metadata("design:type", Function),
342
- __metadata("design:paramtypes", [String, String, Array, String]),
343
- __metadata("design:returntype", Promise)
344
- ], PhaseTransitionUseCase.prototype, "execute", null);
345
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/application/services/index.ts"],"names":[],"mappings":"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"}
@@ -1,297 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const services_1 = require("../../application/services");
4
- const abstractions_1 = require("../../core/abstractions");
5
- const mockRulesetContent = JSON.stringify({
6
- gates: [
7
- {
8
- phase: 1,
9
- name: 'Business Sign-Off',
10
- description: 'Scope frozen; funding authorized.',
11
- mandatoryEvidence: [
12
- { artifact: 'PRD', schemaRef: '../schema/prd.schema.json', validation: 'PRD approved' },
13
- { artifact: 'Discovery Canvas', validation: 'Initiative registered' },
14
- { artifact: 'Business Case ROI', validation: 'Financial viability documented' },
15
- { artifact: 'Ballpark Estimation', validation: 'T-Shirt sizing completed' },
16
- ],
17
- blockingCriteria: [
18
- { criterion: 'Scope is ambiguous', action: 'BLOCK — return to Phase 1' },
19
- { criterion: 'Funding outcome is unclear', action: 'BLOCK — return to Phase 1' },
20
- ],
21
- accountableRole: 'Product Owner',
22
- waiverAuthority: 'Executive Sponsor',
23
- waiverRequiredFields: ['criterion', 'justification', 'risk', 'owner', 'expirationDate', 'mitigationPlan'],
24
- },
25
- {
26
- phase: 2,
27
- name: 'Design Baseline Approved',
28
- description: 'Architecture decisions documented.',
29
- mandatoryEvidence: [
30
- { artifact: 'ADR Registry', validation: 'All architecture decisions have ADR' },
31
- { artifact: 'Functional Stories', validation: 'All stories in Ready state' },
32
- { artifact: 'Bounded Context Map', validation: 'All contexts identified' },
33
- ],
34
- blockingCriteria: [
35
- { criterion: 'Significant architecture decisions are undocumented', action: 'BLOCK — require ADR' },
36
- { criterion: 'Functional stories Lack acceptance criteria', action: 'BLOCK — return to story writing' },
37
- ],
38
- accountableRole: 'Software Architect',
39
- waiverAuthority: 'Architecture Board',
40
- waiverRequiredFields: ['criterion', 'justification', 'risk', 'owner', 'expirationDate', 'mitigationPlan'],
41
- },
42
- ],
43
- });
44
- const createMockFileSystem = (overrides) => {
45
- const mock = {
46
- exists: jest.fn().mockResolvedValue(true),
47
- existsSync: jest.fn().mockReturnValue(true),
48
- readFile: jest.fn().mockImplementation((p) => {
49
- if (p.includes('phase-gates.rules.json'))
50
- return Promise.resolve(mockRulesetContent);
51
- return Promise.resolve('');
52
- }),
53
- readJson: jest.fn().mockResolvedValue({}),
54
- readdirNames: jest.fn().mockResolvedValue([]),
55
- writeFile: jest.fn().mockResolvedValue(undefined),
56
- writeJson: jest.fn().mockResolvedValue(undefined),
57
- ensureDir: jest.fn().mockResolvedValue(undefined),
58
- remove: jest.fn().mockResolvedValue(undefined),
59
- stat: jest.fn().mockResolvedValue({ isDirectory: () => true, isFile: () => false }),
60
- ...overrides,
61
- };
62
- return mock;
63
- };
64
- const mockRuleset = {
65
- gates: [
66
- {
67
- phase: 1,
68
- name: 'Business Sign-Off',
69
- description: 'Scope frozen; funding authorized.',
70
- mandatoryEvidence: [
71
- { artifact: 'PRD', schemaRef: '../schema/prd.schema.json', validation: 'PRD approved' },
72
- { artifact: 'Discovery Canvas', validation: 'Initiative registered' },
73
- { artifact: 'Business Case ROI', validation: 'Financial viability documented' },
74
- { artifact: 'Ballpark Estimation', validation: 'T-Shirt sizing completed' },
75
- ],
76
- blockingCriteria: [
77
- { criterion: 'Scope is ambiguous', action: 'BLOCK — return to Phase 1' },
78
- { criterion: 'Funding outcome is unclear', action: 'BLOCK — return to Phase 1' },
79
- ],
80
- accountableRole: 'Product Owner',
81
- waiverAuthority: 'Executive Sponsor',
82
- waiverRequiredFields: ['criterion', 'justification', 'risk', 'owner', 'expirationDate', 'mitigationPlan'],
83
- },
84
- {
85
- phase: 2,
86
- name: 'Design Baseline Approved',
87
- description: 'Architecture decisions documented.',
88
- mandatoryEvidence: [
89
- { artifact: 'ADR Registry', validation: 'All architecture decisions have ADR' },
90
- { artifact: 'Functional Stories', validation: 'All stories in Ready state' },
91
- { artifact: 'Bounded Context Map', validation: 'All contexts identified' },
92
- ],
93
- blockingCriteria: [
94
- { criterion: 'Significant architecture decisions are undocumented', action: 'BLOCK — require ADR' },
95
- { criterion: 'Functional stories Lack acceptance criteria', action: 'BLOCK — return to story writing' },
96
- ],
97
- accountableRole: 'Software Architect',
98
- waiverAuthority: 'Architecture Board',
99
- waiverRequiredFields: ['criterion', 'justification', 'risk', 'owner', 'expirationDate', 'mitigationPlan'],
100
- },
101
- ],
102
- };
103
- describe('PhaseTransitionUseCase', () => {
104
- let useCase;
105
- let mockFs;
106
- beforeEach(() => {
107
- (0, abstractions_1.resetContainer)();
108
- jest.clearAllMocks();
109
- mockFs = createMockFileSystem();
110
- const mockProvider = {
111
- createFileSystem: () => mockFs,
112
- };
113
- (0, abstractions_1.getContainer)().setFileSystemProvider(mockProvider);
114
- useCase = new services_1.PhaseTransitionUseCase(mockFs, '/core');
115
- });
116
- afterEach(() => {
117
- (0, abstractions_1.resetContainer)();
118
- });
119
- describe('execute', () => {
120
- it('should fail when transitioning between non-consecutive phases', async () => {
121
- const result = await useCase.execute('phase-0', 'phase-2', [], '/project');
122
- expect(result.success).toBe(false);
123
- expect(result.errors).toHaveLength(1);
124
- expect(result.errors[0]).toContain('Invalid phase transition');
125
- });
126
- it('should fail for invalid phase values', async () => {
127
- const result = await useCase.execute('invalid', 'phase-1', [], '/project');
128
- expect(result.success).toBe(false);
129
- expect(result.errors[0]).toContain('Invalid phase transition');
130
- });
131
- it('should track executed tools', async () => {
132
- const tools = ['package-json', 'typescript', 'eslint'];
133
- const result = await useCase.execute('phase-0', 'phase-1', tools, '/project');
134
- expect(result.executedTools).toEqual(tools);
135
- });
136
- it('should succeed with empty tools array', async () => {
137
- const result = await useCase.execute('phase-0', 'phase-1', [], '/project');
138
- expect(result.executedTools).toEqual([]);
139
- });
140
- it('should transition from phase-1 to phase-2', async () => {
141
- const result = await useCase.execute('phase-1', 'phase-2', [], '/project');
142
- expect(result.from).toBe('phase-1');
143
- expect(result.to).toBe('phase-2');
144
- });
145
- });
146
- describe('getGateStatus', () => {
147
- it('should return gate status summary', async () => {
148
- const status = await useCase.getGateStatus('/project');
149
- expect(status).toHaveProperty('currentPhase');
150
- expect(status).toHaveProperty('gatesPassed');
151
- expect(status).toHaveProperty('gatesFailed');
152
- expect(status).toHaveProperty('gatesPending');
153
- expect(status).toHaveProperty('results');
154
- });
155
- it('should return results array with gate details', async () => {
156
- const status = await useCase.getGateStatus('/project');
157
- expect(Array.isArray(status.results)).toBe(true);
158
- expect(status.results.length).toBeGreaterThan(0);
159
- });
160
- });
161
- describe('validateGatesWithValidator', () => {
162
- it('should return gate results with proper structure', async () => {
163
- const result = await useCase.execute('phase-0', 'phase-1', [], '/project');
164
- result.gateResults.forEach((gate) => {
165
- expect(gate).toHaveProperty('id');
166
- expect(gate).toHaveProperty('passed');
167
- expect(typeof gate.passed).toBe('boolean');
168
- expect(gate).toHaveProperty('description');
169
- expect(gate).toHaveProperty('required');
170
- expect(typeof gate.required).toBe('boolean');
171
- });
172
- });
173
- it('should mark gates as failed when evidence is missing', async () => {
174
- (0, abstractions_1.resetContainer)();
175
- const failingExistsMockFs = createMockFileSystem({
176
- exists: jest.fn().mockImplementation((p) => {
177
- if (p.includes('prd-template.md'))
178
- return Promise.resolve(false);
179
- if (p.includes('discovery-canvas-template.md'))
180
- return Promise.resolve(false);
181
- if (p.includes('phase-gates.rules.json'))
182
- return Promise.resolve(true);
183
- return Promise.resolve(true);
184
- }),
185
- readFile: jest.fn().mockImplementation((p) => {
186
- if (p.includes('phase-gates.rules.json'))
187
- return Promise.resolve(JSON.stringify({
188
- gates: [{
189
- phase: 1,
190
- name: 'Business Sign-Off',
191
- description: 'Scope frozen.',
192
- mandatoryEvidence: [
193
- { artifact: 'PRD', schemaRef: '../schema/prd.schema.json', validation: 'PRD approved' },
194
- { artifact: 'Discovery Canvas', validation: 'Initiative registered' },
195
- { artifact: 'Business Case ROI', validation: 'Financial viability documented' },
196
- { artifact: 'Ballpark Estimation', validation: 'T-Shirt sizing completed' },
197
- ],
198
- blockingCriteria: [],
199
- accountableRole: 'Product Owner',
200
- waiverAuthority: 'Executive Sponsor',
201
- waiverRequiredFields: [],
202
- }],
203
- }));
204
- return Promise.resolve('');
205
- }),
206
- });
207
- const failingExistsProvider = {
208
- createFileSystem: () => failingExistsMockFs,
209
- };
210
- (0, abstractions_1.getContainer)().setFileSystemProvider(failingExistsProvider);
211
- const failingExistsUseCase = new services_1.PhaseTransitionUseCase(failingExistsMockFs, '/core');
212
- const result = await failingExistsUseCase.execute('phase-0', 'phase-1', [], '/project');
213
- const failedGates = result.gateResults.filter((g) => !g.passed);
214
- expect(failedGates.length).toBeGreaterThan(0);
215
- });
216
- });
217
- describe('validateGatesLegacy fallback', () => {
218
- it('should fall back to legacy validation when validator fails', async () => {
219
- (0, abstractions_1.resetContainer)();
220
- const failingMockFs = createMockFileSystem({
221
- readFile: jest.fn().mockImplementation((p) => {
222
- if (p.includes('phase-gates.rules.json'))
223
- return Promise.reject(new Error('Ruleset not found'));
224
- return Promise.resolve('');
225
- }),
226
- });
227
- const failingProvider = {
228
- createFileSystem: () => failingMockFs,
229
- };
230
- (0, abstractions_1.getContainer)().setFileSystemProvider(failingProvider);
231
- const failingUseCase = new services_1.PhaseTransitionUseCase(failingMockFs, '/core');
232
- const result = await failingUseCase.execute('phase-0', 'phase-1', [], '/project');
233
- expect(result).toHaveProperty('gateResults');
234
- expect(Array.isArray(result.gateResults)).toBe(true);
235
- });
236
- it('legacy validation should check evolith.yaml for phase-0', async () => {
237
- (0, abstractions_1.resetContainer)();
238
- const failingMockFs = createMockFileSystem({
239
- readFile: jest.fn().mockImplementation((p) => {
240
- if (p.includes('phase-gates.rules.json'))
241
- return Promise.reject(new Error('Ruleset not found'));
242
- return Promise.resolve('');
243
- }),
244
- exists: jest.fn().mockResolvedValue(true),
245
- readJson: jest.fn().mockResolvedValue({ coreRef: { version: '1.0.0' } }),
246
- });
247
- const failingProvider = {
248
- createFileSystem: () => failingMockFs,
249
- };
250
- (0, abstractions_1.getContainer)().setFileSystemProvider(failingProvider);
251
- const failingUseCase = new services_1.PhaseTransitionUseCase(failingMockFs, '/core');
252
- const result = await failingUseCase.execute('phase-0', 'phase-1', [], '/project');
253
- expect(result.gateResults.length).toBeGreaterThan(0);
254
- expect(result.gateResults[0].id).toMatch(/PG1/);
255
- });
256
- it('legacy validation should check package.json and src for phase-1', async () => {
257
- (0, abstractions_1.resetContainer)();
258
- const failingMockFs = createMockFileSystem({
259
- readFile: jest.fn().mockImplementation((p) => {
260
- if (p.includes('phase-gates.rules.json'))
261
- return Promise.reject(new Error('Ruleset not found'));
262
- return Promise.resolve('');
263
- }),
264
- exists: jest.fn().mockResolvedValue(true),
265
- });
266
- const failingProvider = {
267
- createFileSystem: () => failingMockFs,
268
- };
269
- (0, abstractions_1.getContainer)().setFileSystemProvider(failingProvider);
270
- const failingUseCase = new services_1.PhaseTransitionUseCase(failingMockFs, '/core');
271
- const result = await failingUseCase.execute('phase-1', 'phase-2', [], '/project');
272
- expect(result.gateResults.length).toBeGreaterThan(0);
273
- expect(result.gateResults[0].id).toMatch(/PG2/);
274
- });
275
- });
276
- describe('PhaseTransitionResult', () => {
277
- it('should return complete result structure', async () => {
278
- const result = await useCase.execute('phase-0', 'phase-1', ['tool-1'], '/project');
279
- expect(result).toHaveProperty('success');
280
- expect(result).toHaveProperty('from');
281
- expect(result).toHaveProperty('to');
282
- expect(result).toHaveProperty('gateResults');
283
- expect(result).toHaveProperty('executedTools');
284
- expect(result).toHaveProperty('warnings');
285
- expect(result).toHaveProperty('errors');
286
- });
287
- it('should include warnings array', async () => {
288
- const result = await useCase.execute('phase-0', 'phase-1', [], '/project');
289
- expect(Array.isArray(result.warnings)).toBe(true);
290
- });
291
- it('should include errors array', async () => {
292
- const result = await useCase.execute('phase-0', 'phase-1', [], '/project');
293
- expect(Array.isArray(result.errors)).toBe(true);
294
- });
295
- });
296
- });
297
- //# sourceMappingURL=phase-transition.use-case.spec.js.map