@evolith/smart-cli 0.0.3-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 (531) 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 -10
  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/app.module.spec.d.ts +0 -1
  216. package/dist/app.module.spec.js +0 -305
  217. package/dist/app.module.spec.js.map +0 -1
  218. package/dist/application/services/index.d.ts +0 -63
  219. package/dist/application/services/index.js +0 -345
  220. package/dist/application/services/index.js.map +0 -1
  221. package/dist/application/services/phase-transition.use-case.spec.d.ts +0 -1
  222. package/dist/application/services/phase-transition.use-case.spec.js +0 -297
  223. package/dist/application/services/phase-transition.use-case.spec.js.map +0 -1
  224. package/dist/application/services/services.test.d.ts +0 -1
  225. package/dist/application/services/services.test.js +0 -176
  226. package/dist/application/services/services.test.js.map +0 -1
  227. package/dist/application/use-cases/validate-satellite.use-case.d.ts +0 -18
  228. package/dist/application/use-cases/validate-satellite.use-case.js +0 -92
  229. package/dist/application/use-cases/validate-satellite.use-case.js.map +0 -1
  230. package/dist/application/use-cases/validate-satellite.use-case.spec.d.ts +0 -1
  231. package/dist/application/use-cases/validate-satellite.use-case.spec.js +0 -102
  232. package/dist/application/use-cases/validate-satellite.use-case.spec.js.map +0 -1
  233. package/dist/commands/adr/adr.command.spec.d.ts +0 -1
  234. package/dist/commands/adr/adr.command.spec.js +0 -409
  235. package/dist/commands/adr/adr.command.spec.js.map +0 -1
  236. package/dist/commands/architecture/scaffold.command.spec.d.ts +0 -1
  237. package/dist/commands/architecture/scaffold.command.spec.js +0 -207
  238. package/dist/commands/architecture/scaffold.command.spec.js.map +0 -1
  239. package/dist/commands/commands.test.d.ts +0 -1
  240. package/dist/commands/commands.test.js +0 -131
  241. package/dist/commands/commands.test.js.map +0 -1
  242. package/dist/commands/completion/completion.command.spec.d.ts +0 -1
  243. package/dist/commands/completion/completion.command.spec.js +0 -240
  244. package/dist/commands/completion/completion.command.spec.js.map +0 -1
  245. package/dist/commands/docs/docs.command.spec.d.ts +0 -1
  246. package/dist/commands/docs/docs.command.spec.js +0 -87
  247. package/dist/commands/docs/docs.command.spec.js.map +0 -1
  248. package/dist/commands/drift/drift.command.spec.d.ts +0 -1
  249. package/dist/commands/drift/drift.command.spec.js +0 -327
  250. package/dist/commands/drift/drift.command.spec.js.map +0 -1
  251. package/dist/commands/history/history.command.spec.d.ts +0 -1
  252. package/dist/commands/history/history.command.spec.js +0 -392
  253. package/dist/commands/history/history.command.spec.js.map +0 -1
  254. package/dist/commands/init/agents.command.d.ts +0 -22
  255. package/dist/commands/init/agents.command.js +0 -502
  256. package/dist/commands/init/agents.command.js.map +0 -1
  257. package/dist/commands/init/agents.command.spec.d.ts +0 -1
  258. package/dist/commands/init/agents.command.spec.js +0 -550
  259. package/dist/commands/init/agents.command.spec.js.map +0 -1
  260. package/dist/commands/init/init.command.spec.d.ts +0 -1
  261. package/dist/commands/init/init.command.spec.js +0 -272
  262. package/dist/commands/init/init.command.spec.js.map +0 -1
  263. package/dist/commands/init/upgrade.command.d.ts +0 -19
  264. package/dist/commands/init/upgrade.command.js.map +0 -1
  265. package/dist/commands/init/upgrade.command.spec.d.ts +0 -1
  266. package/dist/commands/init/upgrade.command.spec.js +0 -378
  267. package/dist/commands/init/upgrade.command.spec.js.map +0 -1
  268. package/dist/commands/mcp/mcp-serve.command.d.ts +0 -15
  269. package/dist/commands/mcp/mcp-serve.command.js +0 -106
  270. package/dist/commands/mcp/mcp-serve.command.js.map +0 -1
  271. package/dist/commands/mcp/mcp-serve.command.spec.d.ts +0 -1
  272. package/dist/commands/mcp/mcp-serve.command.spec.js +0 -58
  273. package/dist/commands/mcp/mcp-serve.command.spec.js.map +0 -1
  274. package/dist/commands/sdlc/generate-domain.command.spec.d.ts +0 -1
  275. package/dist/commands/sdlc/generate-domain.command.spec.js +0 -47
  276. package/dist/commands/sdlc/generate-domain.command.spec.js.map +0 -1
  277. package/dist/commands/sdlc/handoff.command.spec.d.ts +0 -1
  278. package/dist/commands/sdlc/handoff.command.spec.js +0 -395
  279. package/dist/commands/sdlc/handoff.command.spec.js.map +0 -1
  280. package/dist/commands/sdlc/sdlc.command.spec.d.ts +0 -1
  281. package/dist/commands/sdlc/sdlc.command.spec.js +0 -45
  282. package/dist/commands/sdlc/sdlc.command.spec.js.map +0 -1
  283. package/dist/commands/standards/standards.command.spec.d.ts +0 -1
  284. package/dist/commands/standards/standards.command.spec.js +0 -311
  285. package/dist/commands/standards/standards.command.spec.js.map +0 -1
  286. package/dist/commands/validate/validate.command.spec.d.ts +0 -1
  287. package/dist/commands/validate/validate.command.spec.js +0 -368
  288. package/dist/commands/validate/validate.command.spec.js.map +0 -1
  289. package/dist/config/runtimes.json +0 -196
  290. package/dist/config/tool-catalog.json +0 -343
  291. package/dist/core/abstractions/index.d.ts +0 -6
  292. package/dist/core/abstractions/index.js +0 -23
  293. package/dist/core/abstractions/index.js.map +0 -1
  294. package/dist/core/abstractions/interfaces.d.ts +0 -60
  295. package/dist/core/abstractions/interfaces.js +0 -5
  296. package/dist/core/abstractions/interfaces.js.map +0 -1
  297. package/dist/core/abstractions/providers/config-parser.provider.js.map +0 -1
  298. package/dist/core/abstractions/providers/logger.provider.js.map +0 -1
  299. package/dist/core/abstractions/providers/logger.provider.spec.d.ts +0 -1
  300. package/dist/core/abstractions/providers/logger.provider.spec.js +0 -212
  301. package/dist/core/abstractions/providers/logger.provider.spec.js.map +0 -1
  302. package/dist/core/abstractions/providers/mock-filesystem.provider.js.map +0 -1
  303. package/dist/core/abstractions/providers/node-filesystem.provider.js.map +0 -1
  304. package/dist/core/agents/agent-ruleset-builder.d.ts +0 -30
  305. package/dist/core/agents/agent-ruleset-builder.js +0 -75
  306. package/dist/core/agents/agent-ruleset-builder.js.map +0 -1
  307. package/dist/core/agents/agent-ruleset-builder.spec.d.ts +0 -1
  308. package/dist/core/agents/agent-ruleset-builder.spec.js +0 -135
  309. package/dist/core/agents/agent-ruleset-builder.spec.js.map +0 -1
  310. package/dist/core/architecture/nx-workspace.strategy.js +0 -107
  311. package/dist/core/architecture/nx-workspace.strategy.js.map +0 -1
  312. package/dist/core/architecture/workspace-manager.strategy.d.ts +0 -7
  313. package/dist/core/architecture/workspace-manager.strategy.js +0 -3
  314. package/dist/core/architecture/workspace-manager.strategy.js.map +0 -1
  315. package/dist/core/config/config.service.d.ts +0 -15
  316. package/dist/core/config/config.service.js +0 -55
  317. package/dist/core/config/config.service.js.map +0 -1
  318. package/dist/core/config/config.service.spec.d.ts +0 -1
  319. package/dist/core/config/config.service.spec.js +0 -43
  320. package/dist/core/config/config.service.spec.js.map +0 -1
  321. package/dist/core/di/container.d.ts +0 -25
  322. package/dist/core/di/container.js +0 -87
  323. package/dist/core/di/container.js.map +0 -1
  324. package/dist/core/di/container.spec.d.ts +0 -1
  325. package/dist/core/di/container.spec.js +0 -301
  326. package/dist/core/di/container.spec.js.map +0 -1
  327. package/dist/core/errors/index.d.ts +0 -26
  328. package/dist/core/errors/index.js +0 -67
  329. package/dist/core/errors/index.js.map +0 -1
  330. package/dist/core/filesystem/file-manager.service.d.ts +0 -4
  331. package/dist/core/filesystem/file-manager.service.js.map +0 -1
  332. package/dist/core/filesystem/file-manager.service.spec.d.ts +0 -1
  333. package/dist/core/filesystem/file-manager.service.spec.js +0 -103
  334. package/dist/core/filesystem/file-manager.service.spec.js.map +0 -1
  335. package/dist/core/mcp/mcp-server.service.d.ts +0 -7
  336. package/dist/core/mcp/mcp-server.service.js +0 -31
  337. package/dist/core/mcp/mcp-server.service.js.map +0 -1
  338. package/dist/core/mcp/metrics.service.d.ts +0 -37
  339. package/dist/core/mcp/metrics.service.js +0 -72
  340. package/dist/core/mcp/metrics.service.js.map +0 -1
  341. package/dist/core/mcp/metrics.service.spec.d.ts +0 -1
  342. package/dist/core/mcp/metrics.service.spec.js +0 -159
  343. package/dist/core/mcp/metrics.service.spec.js.map +0 -1
  344. package/dist/core/mcp/prompts/index.d.ts +0 -22
  345. package/dist/core/mcp/prompts/index.js +0 -211
  346. package/dist/core/mcp/prompts/index.js.map +0 -1
  347. package/dist/core/mcp/prompts/index.spec.d.ts +0 -1
  348. package/dist/core/mcp/prompts/index.spec.js +0 -150
  349. package/dist/core/mcp/prompts/index.spec.js.map +0 -1
  350. package/dist/core/mcp/resources/index.d.ts +0 -11
  351. package/dist/core/mcp/resources/index.js +0 -209
  352. package/dist/core/mcp/resources/index.js.map +0 -1
  353. package/dist/core/mcp/resources/index.spec.d.ts +0 -1
  354. package/dist/core/mcp/resources/index.spec.js +0 -212
  355. package/dist/core/mcp/resources/index.spec.js.map +0 -1
  356. package/dist/core/mcp/server.d.ts +0 -31
  357. package/dist/core/mcp/server.js +0 -719
  358. package/dist/core/mcp/server.js.map +0 -1
  359. package/dist/core/mcp/server.spec.d.ts +0 -1
  360. package/dist/core/mcp/server.spec.js +0 -563
  361. package/dist/core/mcp/server.spec.js.map +0 -1
  362. package/dist/core/mcp/tools/agent.d.ts +0 -41
  363. package/dist/core/mcp/tools/agent.js +0 -195
  364. package/dist/core/mcp/tools/agent.js.map +0 -1
  365. package/dist/core/mcp/tools/agent.spec.d.ts +0 -1
  366. package/dist/core/mcp/tools/agent.spec.js +0 -171
  367. package/dist/core/mcp/tools/agent.spec.js.map +0 -1
  368. package/dist/core/mcp/tools/architecture.d.ts +0 -29
  369. package/dist/core/mcp/tools/architecture.js +0 -234
  370. package/dist/core/mcp/tools/architecture.js.map +0 -1
  371. package/dist/core/mcp/tools/architecture.spec.d.ts +0 -1
  372. package/dist/core/mcp/tools/architecture.spec.js +0 -145
  373. package/dist/core/mcp/tools/architecture.spec.js.map +0 -1
  374. package/dist/core/mcp/tools/moscow.d.ts +0 -30
  375. package/dist/core/mcp/tools/moscow.js +0 -113
  376. package/dist/core/mcp/tools/moscow.js.map +0 -1
  377. package/dist/core/mcp/tools/moscow.spec.d.ts +0 -1
  378. package/dist/core/mcp/tools/moscow.spec.js +0 -209
  379. package/dist/core/mcp/tools/moscow.spec.js.map +0 -1
  380. package/dist/core/mcp/tools/sdlc.d.ts +0 -32
  381. package/dist/core/mcp/tools/sdlc.js +0 -190
  382. package/dist/core/mcp/tools/sdlc.js.map +0 -1
  383. package/dist/core/mcp/tools/sdlc.spec.d.ts +0 -1
  384. package/dist/core/mcp/tools/sdlc.spec.js +0 -170
  385. package/dist/core/mcp/tools/sdlc.spec.js.map +0 -1
  386. package/dist/core/mcp/tools/tool-utils.d.ts +0 -4
  387. package/dist/core/mcp/tools/tool-utils.js +0 -18
  388. package/dist/core/mcp/tools/tool-utils.js.map +0 -1
  389. package/dist/core/mcp/tools/validate.d.ts +0 -18
  390. package/dist/core/mcp/tools/validate.js +0 -56
  391. package/dist/core/mcp/tools/validate.js.map +0 -1
  392. package/dist/core/mcp/tools/validate.spec.d.ts +0 -1
  393. package/dist/core/mcp/tools/validate.spec.js +0 -130
  394. package/dist/core/mcp/tools/validate.spec.js.map +0 -1
  395. package/dist/core/mcp/watcher.service.d.ts +0 -8
  396. package/dist/core/mcp/watcher.service.js +0 -82
  397. package/dist/core/mcp/watcher.service.js.map +0 -1
  398. package/dist/core/mcp/watcher.service.spec.d.ts +0 -1
  399. package/dist/core/mcp/watcher.service.spec.js +0 -171
  400. package/dist/core/mcp/watcher.service.spec.js.map +0 -1
  401. package/dist/core/observability/command-watcher.js.map +0 -1
  402. package/dist/core/observability/error-reporter.js.map +0 -1
  403. package/dist/core/observability/error-reporter.spec.d.ts +0 -1
  404. package/dist/core/observability/error-reporter.spec.js +0 -291
  405. package/dist/core/observability/error-reporter.spec.js.map +0 -1
  406. package/dist/core/observability/index.d.ts +0 -4
  407. package/dist/core/observability/index.js.map +0 -1
  408. package/dist/core/observability/observability.test.d.ts +0 -1
  409. package/dist/core/observability/observability.test.js +0 -224
  410. package/dist/core/observability/observability.test.js.map +0 -1
  411. package/dist/core/observability/structured-logger.js.map +0 -1
  412. package/dist/core/observability/structured-logger.spec.d.ts +0 -1
  413. package/dist/core/observability/structured-logger.spec.js +0 -197
  414. package/dist/core/observability/structured-logger.spec.js.map +0 -1
  415. package/dist/core/observability/timing.js.map +0 -1
  416. package/dist/core/observability/timing.spec.d.ts +0 -1
  417. package/dist/core/observability/timing.spec.js +0 -216
  418. package/dist/core/observability/timing.spec.js.map +0 -1
  419. package/dist/core/services/command-executor.service.d.ts +0 -3
  420. package/dist/core/services/command-executor.service.js +0 -12
  421. package/dist/core/services/command-executor.service.js.map +0 -1
  422. package/dist/core/services/command-history.service.d.ts +0 -38
  423. package/dist/core/services/command-history.service.js +0 -146
  424. package/dist/core/services/command-history.service.js.map +0 -1
  425. package/dist/core/services/command-history.service.spec.d.ts +0 -1
  426. package/dist/core/services/command-history.service.spec.js +0 -166
  427. package/dist/core/services/command-history.service.spec.js.map +0 -1
  428. package/dist/core/services/command-providers.d.ts +0 -1
  429. package/dist/core/services/command-providers.js +0 -17
  430. package/dist/core/services/command-providers.js.map +0 -1
  431. package/dist/core/services/runtime-catalog.service.d.ts +0 -2
  432. package/dist/core/services/runtime-catalog.service.js +0 -7
  433. package/dist/core/services/runtime-catalog.service.js.map +0 -1
  434. package/dist/core/sync/sync.service.d.ts +0 -4
  435. package/dist/core/sync/sync.service.js.map +0 -1
  436. package/dist/core/sync/sync.service.spec.d.ts +0 -1
  437. package/dist/core/sync/sync.service.spec.js +0 -63
  438. package/dist/core/sync/sync.service.spec.js.map +0 -1
  439. package/dist/core/upgrade/satellite-upgrade.service.d.ts +0 -48
  440. package/dist/core/upgrade/satellite-upgrade.service.js +0 -358
  441. package/dist/core/upgrade/satellite-upgrade.service.js.map +0 -1
  442. package/dist/core/upgrade/satellite-upgrade.service.spec.d.ts +0 -1
  443. package/dist/core/upgrade/satellite-upgrade.service.spec.js +0 -163
  444. package/dist/core/upgrade/satellite-upgrade.service.spec.js.map +0 -1
  445. package/dist/core/validators/architecture-drift.service.d.ts +0 -68
  446. package/dist/core/validators/architecture-drift.service.js +0 -266
  447. package/dist/core/validators/architecture-drift.service.js.map +0 -1
  448. package/dist/core/validators/architecture-drift.service.spec.d.ts +0 -1
  449. package/dist/core/validators/architecture-drift.service.spec.js +0 -315
  450. package/dist/core/validators/architecture-drift.service.spec.js.map +0 -1
  451. package/dist/core/validators/deep-architecture-analyzer.d.ts +0 -58
  452. package/dist/core/validators/deep-architecture-analyzer.js +0 -333
  453. package/dist/core/validators/deep-architecture-analyzer.js.map +0 -1
  454. package/dist/core/validators/deep-architecture-analyzer.spec.d.ts +0 -1
  455. package/dist/core/validators/deep-architecture-analyzer.spec.js +0 -216
  456. package/dist/core/validators/deep-architecture-analyzer.spec.js.map +0 -1
  457. package/dist/core/validators/phase-gate-validator.service.d.ts +0 -71
  458. package/dist/core/validators/phase-gate-validator.service.js +0 -273
  459. package/dist/core/validators/phase-gate-validator.service.js.map +0 -1
  460. package/dist/core/validators/phase-gate-validator.service.spec.d.ts +0 -1
  461. package/dist/core/validators/phase-gate-validator.service.spec.js +0 -326
  462. package/dist/core/validators/phase-gate-validator.service.spec.js.map +0 -1
  463. package/dist/core/validators/ruleset-validator-architecture.spec.d.ts +0 -1
  464. package/dist/core/validators/ruleset-validator-architecture.spec.js +0 -178
  465. package/dist/core/validators/ruleset-validator-architecture.spec.js.map +0 -1
  466. package/dist/core/validators/ruleset-validator.service.d.ts +0 -80
  467. package/dist/core/validators/ruleset-validator.service.js +0 -657
  468. package/dist/core/validators/ruleset-validator.service.js.map +0 -1
  469. package/dist/core/validators/ruleset-validator.service.spec.d.ts +0 -1
  470. package/dist/core/validators/ruleset-validator.service.spec.js +0 -469
  471. package/dist/core/validators/ruleset-validator.service.spec.js.map +0 -1
  472. package/dist/domain/entities/index.d.ts +0 -72
  473. package/dist/domain/entities/index.js +0 -119
  474. package/dist/domain/entities/index.js.map +0 -1
  475. package/dist/domain/interfaces.d.ts +0 -224
  476. package/dist/domain/interfaces.js +0 -3
  477. package/dist/domain/interfaces.js.map +0 -1
  478. package/dist/domain/services/adr.service.d.ts +0 -50
  479. package/dist/domain/services/adr.service.js +0 -125
  480. package/dist/domain/services/adr.service.js.map +0 -1
  481. package/dist/domain/services/adr.service.spec.d.ts +0 -1
  482. package/dist/domain/services/adr.service.spec.js +0 -141
  483. package/dist/domain/services/adr.service.spec.js.map +0 -1
  484. package/dist/domain/services/agent-registry.service.js.map +0 -1
  485. package/dist/domain/services/agent-registry.service.spec.d.ts +0 -1
  486. package/dist/domain/services/agent-registry.service.spec.js +0 -162
  487. package/dist/domain/services/agent-registry.service.spec.js.map +0 -1
  488. package/dist/domain/services/index.d.ts +0 -34
  489. package/dist/domain/services/index.js +0 -128
  490. package/dist/domain/services/index.js.map +0 -1
  491. package/dist/domain/services/moscow-prioritization.service.d.ts +0 -44
  492. package/dist/domain/services/moscow-prioritization.service.js +0 -213
  493. package/dist/domain/services/moscow-prioritization.service.js.map +0 -1
  494. package/dist/domain/services/moscow-prioritization.service.spec.d.ts +0 -1
  495. package/dist/domain/services/moscow-prioritization.service.spec.js +0 -285
  496. package/dist/domain/services/moscow-prioritization.service.spec.js.map +0 -1
  497. package/dist/domain/services/services.test.d.ts +0 -1
  498. package/dist/domain/services/services.test.js +0 -236
  499. package/dist/domain/services/services.test.js.map +0 -1
  500. package/dist/domain/services/standards.service.d.ts +0 -47
  501. package/dist/domain/services/standards.service.js +0 -129
  502. package/dist/domain/services/standards.service.js.map +0 -1
  503. package/dist/domain/services/standards.service.spec.d.ts +0 -1
  504. package/dist/domain/services/standards.service.spec.js +0 -600
  505. package/dist/domain/services/standards.service.spec.js.map +0 -1
  506. package/dist/domain/services/tool-usage-telemetry.service.js.map +0 -1
  507. package/dist/domain/services/tool-usage-telemetry.service.spec.d.ts +0 -1
  508. package/dist/domain/services/tool-usage-telemetry.service.spec.js +0 -180
  509. package/dist/domain/services/tool-usage-telemetry.service.spec.js.map +0 -1
  510. package/dist/infrastructure/catalog/catalog-loader.test.d.ts +0 -1
  511. package/dist/infrastructure/catalog/catalog-loader.test.js +0 -184
  512. package/dist/infrastructure/catalog/catalog-loader.test.js.map +0 -1
  513. package/dist/infrastructure/cli/command-executor.test.d.ts +0 -1
  514. package/dist/infrastructure/cli/command-executor.test.js +0 -98
  515. package/dist/infrastructure/cli/command-executor.test.js.map +0 -1
  516. package/dist/infrastructure/formatters/output-formatter.service.spec.d.ts +0 -1
  517. package/dist/infrastructure/formatters/output-formatter.service.spec.js +0 -164
  518. package/dist/infrastructure/formatters/output-formatter.service.spec.js.map +0 -1
  519. package/dist/test/mocks/index.d.ts +0 -44
  520. package/dist/test/mocks/index.js +0 -135
  521. package/dist/test/mocks/index.js.map +0 -1
  522. /package/dist/{core → infrastructure}/observability/command-watcher.d.ts +0 -0
  523. /package/dist/{core → infrastructure}/observability/error-reporter.d.ts +0 -0
  524. /package/dist/{core → infrastructure}/observability/structured-logger.d.ts +0 -0
  525. /package/dist/{core → infrastructure}/observability/structured-logger.js +0 -0
  526. /package/dist/{core → infrastructure}/observability/timing.d.ts +0 -0
  527. /package/dist/{core → infrastructure}/observability/timing.js +0 -0
  528. /package/dist/{domain/services → infrastructure/observability}/tool-usage-telemetry.service.d.ts +0 -0
  529. /package/dist/{domain/services → infrastructure/observability}/tool-usage-telemetry.service.js +0 -0
  530. /package/dist/{core/abstractions → infrastructure}/providers/config-parser.provider.js +0 -0
  531. /package/dist/{core/abstractions → infrastructure}/providers/logger.provider.js +0 -0
@@ -1,326 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const phase_gate_validator_service_1 = require("./phase-gate-validator.service");
4
- const abstractions_1 = require("../abstractions");
5
- const createMockFileSystem = (overrides) => {
6
- const mock = {
7
- exists: jest.fn().mockResolvedValue(true),
8
- existsSync: jest.fn().mockReturnValue(true),
9
- readFile: jest.fn().mockResolvedValue(''),
10
- readJson: jest.fn().mockResolvedValue({}),
11
- readdirNames: jest.fn().mockResolvedValue([]),
12
- writeFile: jest.fn().mockResolvedValue(undefined),
13
- writeJson: jest.fn().mockResolvedValue(undefined),
14
- ensureDir: jest.fn().mockResolvedValue(undefined),
15
- remove: jest.fn().mockResolvedValue(undefined),
16
- stat: jest.fn().mockResolvedValue({ isDirectory: () => true, isFile: () => false }),
17
- ...overrides,
18
- };
19
- return mock;
20
- };
21
- const mockRuleset = {
22
- gates: [
23
- {
24
- phase: 1,
25
- name: 'Business Sign-Off',
26
- description: 'Scope frozen; funding authorized; architectural constraints aligned.',
27
- mandatoryEvidence: [
28
- { artifact: 'PRD', schemaRef: '../schema/prd.schema.json', status: 'Approved', validation: 'PRD status = Approved' },
29
- { artifact: 'Discovery Canvas', validation: 'Initiative registered' },
30
- { artifact: 'Business Case ROI', validation: 'Financial viability documented' },
31
- { artifact: 'Ballpark Estimation', validation: 'T-Shirt sizing completed' },
32
- ],
33
- blockingCriteria: [
34
- { criterion: 'Scope is ambiguous', action: 'BLOCK — return to Phase 1' },
35
- { criterion: 'Funding outcome is unclear', action: 'BLOCK — return to Phase 1' },
36
- { criterion: 'Architecture constraints are ignored', action: 'BLOCK — return to Phase 1' },
37
- ],
38
- accountableRole: 'Product Owner',
39
- waiverAuthority: 'Executive Sponsor',
40
- waiverRequiredFields: ['criterion', 'justification', 'risk', 'owner', 'expirationDate', 'mitigationPlan'],
41
- },
42
- {
43
- phase: 2,
44
- name: 'Design Baseline Approved',
45
- description: 'Architecture decisions documented; bounded contexts defined.',
46
- mandatoryEvidence: [
47
- { artifact: 'ADR Registry', validation: 'All architecture decisions have ADR' },
48
- { artifact: 'Functional Stories', schemaRef: '../schema/functional-story.schema.json', validation: 'All stories in Ready state' },
49
- { artifact: 'Bounded Context Map', validation: 'All contexts identified' },
50
- ],
51
- blockingCriteria: [
52
- { criterion: 'Significant architecture decisions are undocumented', action: 'BLOCK — require ADR' },
53
- { criterion: 'Bounded context boundaries are contradictory', action: 'BLOCK — require context map resolution' },
54
- { criterion: 'Functional stories Lack acceptance criteria', action: 'BLOCK — return to story writing' },
55
- ],
56
- accountableRole: 'Software Architect',
57
- waiverAuthority: 'Architecture Board',
58
- waiverRequiredFields: ['criterion', 'justification', 'risk', 'owner', 'expirationDate', 'mitigationPlan'],
59
- },
60
- {
61
- phase: 3,
62
- name: 'Successful Build',
63
- description: 'All code merged to main; CI passes; quality gates green.',
64
- mandatoryEvidence: [
65
- { artifact: 'Technical Stories', schemaRef: '../schema/technical-story.schema.json', validation: 'All technical stories Done' },
66
- { artifact: 'CI Pipeline', validation: 'CI run green on main branch' },
67
- { artifact: 'Coverage Report', validation: 'Business logic coverage >= 80%' },
68
- ],
69
- blockingCriteria: [
70
- { criterion: 'CI fails on main branch', action: 'BLOCK merge — fix CI' },
71
- { criterion: 'Coverage below threshold (< 80%)', action: 'BLOCK merge — add tests' },
72
- { criterion: 'High or Critical CVEs detected', action: 'BLOCK merge — remediate CVEs' },
73
- { criterion: 'Missing code review approval', action: 'BLOCK merge — require review' },
74
- ],
75
- accountableRole: 'Tech Lead',
76
- waiverAuthority: 'Architecture Board (with exception for CVEs requires Executive Risk Acceptance)',
77
- waiverRequiredFields: ['criterion', 'justification', 'risk', 'owner', 'expirationDate', 'mitigationPlan', 'approvalAuthority'],
78
- },
79
- {
80
- phase: 4,
81
- name: 'RC Stamped',
82
- description: 'All quality thresholds verified; security scans clean; UAT passed.',
83
- mandatoryEvidence: [
84
- { artifact: 'Test Summary Report', schemaRef: '../schema/test-summary-report.schema.json', validation: 'All quality gates green' },
85
- { artifact: 'Acceptance Validation', validation: 'Product Owner signs off' },
86
- { artifact: 'Security Scan Report', validation: 'Zero High/Critical CVEs' },
87
- ],
88
- blockingCriteria: [
89
- { criterion: 'Any mandatory quality metric fails', action: 'BLOCK RC stamp — remediate or waiver' },
90
- { criterion: 'Acceptance criteria remain unverified', action: 'BLOCK RC stamp — return to validation' },
91
- { criterion: 'Technical debt ratio exceeds 5%', action: 'BLOCK RC stamp — remediation plan required' },
92
- ],
93
- accountableRole: 'QA Lead',
94
- waiverAuthority: 'Architecture Board',
95
- waiverRequiredFields: ['criterion', 'justification', 'risk', 'owner', 'expirationDate', 'mitigationPlan'],
96
- },
97
- {
98
- phase: 5,
99
- name: 'Production Live',
100
- description: 'Deployment executed; observability verified nominal; monitoring active.',
101
- mandatoryEvidence: [
102
- { artifact: 'Release Notes', schemaRef: '../schema/release-notes.schema.json', validation: 'Release scope, deployment steps, rollback procedure present' },
103
- { artifact: 'Observability Validation', validation: 'Metrics nominal, logs flowing, traces complete' },
104
- { artifact: 'Rollback Procedure', validation: 'Rollback steps documented and tested' },
105
- { artifact: 'Deployment Evidence', validation: 'Deployment artifacts traceable to RC' },
106
- ],
107
- blockingCriteria: [
108
- { criterion: 'Monitoring is not nominal', action: 'BLOCK Production Live — investigate' },
109
- { criterion: 'Rollback procedure is undefined', action: 'BLOCK Production Live — document rollback' },
110
- { criterion: 'Release is not traceable to RC', action: 'BLOCK Production Live — ensure RC → Release chain' },
111
- ],
112
- accountableRole: 'DevOps Lead',
113
- waiverAuthority: 'Technology Director',
114
- waiverRequiredFields: ['criterion', 'justification', 'risk', 'owner', 'expirationDate', 'mitigationPlan'],
115
- },
116
- ],
117
- };
118
- describe('PhaseGateValidatorService', () => {
119
- let service;
120
- let mockFs;
121
- beforeEach(() => {
122
- (0, abstractions_1.resetContainer)();
123
- jest.clearAllMocks();
124
- mockFs = createMockFileSystem({
125
- readFile: jest.fn().mockResolvedValue(JSON.stringify(mockRuleset)),
126
- });
127
- const mockProvider = {
128
- createFileSystem: () => mockFs,
129
- };
130
- (0, abstractions_1.getContainer)().setFileSystemProvider(mockProvider);
131
- service = new phase_gate_validator_service_1.PhaseGateValidatorService('/core');
132
- });
133
- afterEach(() => {
134
- (0, abstractions_1.resetContainer)();
135
- });
136
- describe('loadRuleset', () => {
137
- it('should load and cache the ruleset from file', async () => {
138
- const result = await service.loadRuleset();
139
- expect(result.gates).toHaveLength(5);
140
- expect(result.gates[0].phase).toBe(1);
141
- expect(result.gates[0].name).toBe('Business Sign-Off');
142
- });
143
- it('should return cached ruleset on subsequent calls', async () => {
144
- await service.loadRuleset();
145
- await service.loadRuleset();
146
- expect(mockFs.readFile).toHaveBeenCalledTimes(1);
147
- });
148
- it('should throw when ruleset file cannot be read', async () => {
149
- mockFs.readFile.mockRejectedValue(new Error('File not found'));
150
- await expect(service.loadRuleset()).rejects.toThrow('Cannot load phase gates ruleset');
151
- });
152
- });
153
- describe('validateGate', () => {
154
- it('should pass gate 1 when all evidence artifacts exist', async () => {
155
- const result = await service.validateGate(1, '/project');
156
- expect(result.phase).toBe(1);
157
- expect(result.name).toBe('Business Sign-Off');
158
- expect(result.passed).toBe(true);
159
- expect(result.evidenceResults).toHaveLength(4);
160
- expect(result.evidenceResults.every(e => e.passed)).toBe(true);
161
- });
162
- it('should fail gate 1 when PRD artifact is missing', async () => {
163
- mockFs.exists.mockImplementation((p) => {
164
- if (p.includes('prd-template.md'))
165
- return Promise.resolve(false);
166
- return Promise.resolve(true);
167
- });
168
- const result = await service.validateGate(1, '/project');
169
- expect(result.passed).toBe(false);
170
- const prdEvidence = result.evidenceResults.find(e => e.artifact === 'PRD');
171
- expect(prdEvidence?.passed).toBe(false);
172
- expect(prdEvidence?.found).toBe(false);
173
- });
174
- it('should fail gate when blocking criterion is triggered', async () => {
175
- mockFs.exists.mockImplementation((p) => {
176
- if (p.includes('prd-template.md'))
177
- return Promise.resolve(false);
178
- return Promise.resolve(true);
179
- });
180
- const result = await service.validateGate(1, '/project');
181
- const triggeredBlocks = result.blockingChecks.filter(b => b.triggered);
182
- expect(triggeredBlocks.length).toBeGreaterThan(0);
183
- });
184
- it('should throw for undefined phase gate', async () => {
185
- await expect(service.validateGate(99, '/project')).rejects.toThrow('Phase gate 99 not defined');
186
- });
187
- it('should return correct accountable role and waiver authority', async () => {
188
- const result = await service.validateGate(1, '/project');
189
- expect(result.accountableRole).toBe('Product Owner');
190
- expect(result.waiverAuthority).toBe('Executive Sponsor');
191
- expect(result.waiverAvailable).toBe(true);
192
- });
193
- });
194
- describe('validateAllGates', () => {
195
- it('should validate all 5 phase gates', async () => {
196
- const results = await service.validateAllGates('/project');
197
- expect(results).toHaveLength(5);
198
- expect(results.map(r => r.phase)).toEqual([1, 2, 3, 4, 5]);
199
- });
200
- it('should return mixed pass/fail results based on artifact availability', async () => {
201
- mockFs.exists.mockImplementation((p) => {
202
- if (p.includes('Dockerfile'))
203
- return Promise.resolve(false);
204
- if (p.includes('release-notes'))
205
- return Promise.resolve(false);
206
- return Promise.resolve(true);
207
- });
208
- const results = await service.validateAllGates('/project');
209
- const passedGates = results.filter(r => r.passed);
210
- const failedGates = results.filter(r => !r.passed);
211
- expect(passedGates.length + failedGates.length).toBe(5);
212
- });
213
- });
214
- describe('getGateStatus', () => {
215
- it('should return summary with current phase and counts', async () => {
216
- const status = await service.getGateStatus('/project');
217
- expect(status).toHaveProperty('currentPhase');
218
- expect(status).toHaveProperty('gatesPassed');
219
- expect(status).toHaveProperty('gatesFailed');
220
- expect(status).toHaveProperty('gatesPending');
221
- expect(status).toHaveProperty('results');
222
- expect(status.results).toHaveLength(5);
223
- });
224
- it('should calculate correct current phase when gates 1-2 pass', async () => {
225
- mockFs.exists.mockImplementation((p) => {
226
- if (p.includes('Dockerfile'))
227
- return Promise.resolve(false);
228
- if (p.includes('release-notes'))
229
- return Promise.resolve(false);
230
- if (p.includes('Test Summary'))
231
- return Promise.resolve(false);
232
- if (p.includes('Technical Stories'))
233
- return Promise.resolve(false);
234
- return Promise.resolve(true);
235
- });
236
- const status = await service.getGateStatus('/project');
237
- expect(status.currentPhase).toBeGreaterThanOrEqual(0);
238
- });
239
- });
240
- describe('validateSingleEvidence', () => {
241
- it('should mark evidence as not found when artifact path does not exist', async () => {
242
- mockFs.exists.mockResolvedValue(false);
243
- const result = await service.validateGate(1, '/project');
244
- const missingEvidence = result.evidenceResults.find(e => !e.found);
245
- if (missingEvidence) {
246
- expect(missingEvidence.passed).toBe(false);
247
- expect(missingEvidence.validationMessage).toContain('Artifact not found');
248
- }
249
- });
250
- it('should validate schema when schemaRef is provided', async () => {
251
- mockFs.exists.mockResolvedValue(true);
252
- mockFs.readFile.mockImplementation((p) => {
253
- if (p.includes('phase-gates.rules.json'))
254
- return Promise.resolve(JSON.stringify(mockRuleset));
255
- return Promise.resolve('valid content');
256
- });
257
- const result = await service.validateGate(1, '/project');
258
- const prdEvidence = result.evidenceResults.find(e => e.artifact === 'PRD');
259
- expect(prdEvidence).toBeDefined();
260
- });
261
- it('should fail schema validation when artifact is empty', async () => {
262
- mockFs.exists.mockResolvedValue(true);
263
- mockFs.readFile.mockImplementation((p) => {
264
- if (p.includes('phase-gates.rules.json'))
265
- return Promise.resolve(JSON.stringify(mockRuleset));
266
- return Promise.resolve('');
267
- });
268
- const result = await service.validateGate(1, '/project');
269
- const prdEvidence = result.evidenceResults.find(e => e.artifact === 'PRD');
270
- expect(prdEvidence?.schemaValid).toBe(false);
271
- });
272
- });
273
- describe('resolveArtifactPath', () => {
274
- it('should resolve PRD artifact to correct path', async () => {
275
- await service.validateGate(1, '/project');
276
- expect(mockFs.exists).toHaveBeenCalledWith(expect.stringContaining('prd-template.md'));
277
- });
278
- it('should resolve ADR Registry to correct path', async () => {
279
- await service.validateGate(2, '/project');
280
- expect(mockFs.exists).toHaveBeenCalledWith(expect.stringContaining('adr-matrix.json'));
281
- });
282
- });
283
- describe('blocking criteria checks', () => {
284
- it('should detect scope ambiguity when PRD is missing', async () => {
285
- mockFs.exists.mockImplementation((p) => {
286
- if (p.includes('prd-template.md'))
287
- return Promise.resolve(false);
288
- return Promise.resolve(true);
289
- });
290
- const result = await service.validateGate(1, '/project');
291
- const scopeBlock = result.blockingChecks.find(b => b.criterion.toLowerCase().includes('scope'));
292
- expect(scopeBlock?.triggered).toBe(true);
293
- });
294
- it('should detect undocumented architecture decisions when ADR Registry is missing', async () => {
295
- mockFs.exists.mockImplementation((p) => {
296
- if (p.includes('adr-matrix.json'))
297
- return Promise.resolve(false);
298
- return Promise.resolve(true);
299
- });
300
- const result = await service.validateGate(2, '/project');
301
- const adrBlock = result.blockingChecks.find(b => b.criterion.toLowerCase().includes('undocumented'));
302
- expect(adrBlock?.triggered).toBe(true);
303
- });
304
- it('should detect CI failure when .github/workflows is missing', async () => {
305
- mockFs.exists.mockImplementation((p) => {
306
- if (p.includes('.github/workflows'))
307
- return Promise.resolve(false);
308
- return Promise.resolve(true);
309
- });
310
- const result = await service.validateGate(3, '/project');
311
- const ciBlock = result.blockingChecks.find(b => b.criterion.toLowerCase().includes('ci fails'));
312
- expect(ciBlock?.triggered).toBe(true);
313
- });
314
- it('should detect missing rollback procedure when Release Notes are missing', async () => {
315
- mockFs.exists.mockImplementation((p) => {
316
- if (p.includes('release-notes'))
317
- return Promise.resolve(false);
318
- return Promise.resolve(true);
319
- });
320
- const result = await service.validateGate(5, '/project');
321
- const rollbackBlock = result.blockingChecks.find(b => b.criterion.toLowerCase().includes('rollback'));
322
- expect(rollbackBlock?.triggered).toBe(true);
323
- });
324
- });
325
- });
326
- //# sourceMappingURL=phase-gate-validator.service.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"phase-gate-validator.service.spec.js","sourceRoot":"","sources":["../../../src/core/validators/phase-gate-validator.service.spec.ts"],"names":[],"mappings":"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"}
@@ -1,178 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const ruleset_validator_service_1 = require("./ruleset-validator.service");
4
- const abstractions_1 = require("../abstractions");
5
- const createMockFileSystem = (overrides) => {
6
- const mock = {
7
- exists: jest.fn().mockResolvedValue(true),
8
- existsSync: jest.fn().mockReturnValue(true),
9
- readFile: jest.fn().mockResolvedValue(''),
10
- readJson: jest.fn().mockResolvedValue({}),
11
- readdirNames: jest.fn().mockResolvedValue([]),
12
- writeFile: jest.fn().mockResolvedValue(undefined),
13
- writeJson: jest.fn().mockResolvedValue(undefined),
14
- ensureDir: jest.fn().mockResolvedValue(undefined),
15
- remove: jest.fn().mockResolvedValue(undefined),
16
- stat: jest.fn().mockResolvedValue({ isDirectory: () => true, isFile: () => false }),
17
- ...overrides,
18
- };
19
- return mock;
20
- };
21
- const mockF1Ruleset = {
22
- rules: [
23
- {
24
- id: 'F1-R01',
25
- severity: 'MUST',
26
- category: 'topology',
27
- title: 'Single Deployment Unit',
28
- description: 'All bounded contexts MUST be deployed as a single artifact',
29
- blocking: true,
30
- },
31
- {
32
- id: 'F1-R02',
33
- severity: 'MUST',
34
- category: 'bounded-contexts',
35
- title: 'Explicit Bounded Context Boundaries',
36
- description: 'Each bounded context MUST be clearly separated',
37
- blocking: true,
38
- },
39
- {
40
- id: 'F1-R03',
41
- severity: 'MUST',
42
- category: 'hexagonal-architecture',
43
- title: 'Ports and Adapters Boundary',
44
- description: 'All bounded contexts MUST implement hexagonal architecture',
45
- blocking: true,
46
- },
47
- ],
48
- };
49
- describe('RulesetValidatorService - Architecture Validation', () => {
50
- let service;
51
- let mockFs;
52
- beforeEach(() => {
53
- (0, abstractions_1.resetContainer)();
54
- jest.clearAllMocks();
55
- mockFs = createMockFileSystem({
56
- readFile: jest.fn().mockImplementation((p) => {
57
- if (p.includes('f1-modular-monolith'))
58
- return Promise.resolve(JSON.stringify(mockF1Ruleset));
59
- if (p.includes('f2-distributed-modules'))
60
- return Promise.resolve(JSON.stringify({ rules: [] }));
61
- if (p.includes('f3-microservices'))
62
- return Promise.resolve(JSON.stringify({ rules: [] }));
63
- return Promise.resolve('');
64
- }),
65
- });
66
- const mockProvider = {
67
- createFileSystem: () => mockFs,
68
- };
69
- (0, abstractions_1.getContainer)().setFileSystemProvider(mockProvider);
70
- service = new ruleset_validator_service_1.RulesetValidatorService();
71
- });
72
- afterEach(() => {
73
- (0, abstractions_1.resetContainer)();
74
- });
75
- describe('validateArchitecture', () => {
76
- it('should validate F1 architecture level', async () => {
77
- const result = await service.validateArchitecture('/project', '/core', 'F1');
78
- expect(result).toHaveProperty('status');
79
- expect(result).toHaveProperty('levels');
80
- expect(result).toHaveProperty('rulesChecked');
81
- expect(result).toHaveProperty('issues');
82
- expect(result).toHaveProperty('timestamp');
83
- expect(result.levels).toContain('F1');
84
- });
85
- it('should validate ALL architecture levels by default', async () => {
86
- const result = await service.validateArchitecture('/project', '/core');
87
- expect(result.levels).toContain('F1');
88
- expect(result.levels).toContain('F2');
89
- expect(result.levels).toContain('F3');
90
- });
91
- it('should validate specific level when specified', async () => {
92
- const result = await service.validateArchitecture('/project', '/core', 'F2');
93
- expect(result.levels).toEqual(['F2']);
94
- });
95
- it('should return failed status when blocking issues exist', async () => {
96
- const result = await service.validateArchitecture('/project', '/core', 'F1');
97
- expect(result.status).toBe('failed');
98
- });
99
- it('should return issues array even when validation passes', async () => {
100
- const result = await service.validateArchitecture('/project', '/core', 'F1');
101
- expect(Array.isArray(result.issues)).toBe(true);
102
- });
103
- it('should count rules checked', async () => {
104
- const result = await service.validateArchitecture('/project', '/core', 'F1');
105
- expect(result.rulesChecked).toBeGreaterThan(0);
106
- });
107
- it('should handle missing ruleset gracefully', async () => {
108
- mockFs.exists.mockResolvedValue(false);
109
- const result = await service.validateArchitecture('/project', '/core', 'F1');
110
- expect(result.issues.some((i) => i.ruleId.includes('MISSING'))).toBe(true);
111
- });
112
- });
113
- describe('validateArchitectureRule - topology', () => {
114
- it('should validate topology rules for F1', async () => {
115
- mockFs.readFile.mockImplementation((p) => {
116
- if (p.includes('f1-modular-monolith')) {
117
- return Promise.resolve(JSON.stringify({
118
- rules: [{
119
- id: 'F1-R01',
120
- severity: 'MUST',
121
- category: 'topology',
122
- title: 'Single Deployment Unit',
123
- description: 'All bounded contexts MUST be deployed as a single artifact',
124
- blocking: true,
125
- }],
126
- }));
127
- }
128
- return Promise.resolve(JSON.stringify({ rules: [] }));
129
- });
130
- const result = await service.validateArchitecture('/project', '/core', 'F1');
131
- expect(result.rulesChecked).toBeGreaterThan(0);
132
- });
133
- });
134
- describe('validateArchitectureRule - bounded-contexts', () => {
135
- it('should validate bounded contexts rules', async () => {
136
- mockFs.readFile.mockImplementation((p) => {
137
- if (p.includes('f1-modular-monolith')) {
138
- return Promise.resolve(JSON.stringify({
139
- rules: [{
140
- id: 'F1-R02',
141
- severity: 'MUST',
142
- category: 'bounded-contexts',
143
- title: 'Explicit Bounded Context Boundaries',
144
- description: 'Each bounded context MUST be clearly separated',
145
- blocking: true,
146
- }],
147
- }));
148
- }
149
- return Promise.resolve(JSON.stringify({ rules: [] }));
150
- });
151
- mockFs.readdirNames.mockResolvedValue(['context-a', 'context-b']);
152
- const result = await service.validateArchitecture('/project', '/core', 'F1');
153
- expect(result.rulesChecked).toBeGreaterThan(0);
154
- });
155
- });
156
- describe('validateArchitectureRule - hexagonal-architecture', () => {
157
- it('should validate hexagonal architecture rules', async () => {
158
- mockFs.readFile.mockImplementation((p) => {
159
- if (p.includes('f1-modular-monolith')) {
160
- return Promise.resolve(JSON.stringify({
161
- rules: [{
162
- id: 'F1-R03',
163
- severity: 'MUST',
164
- category: 'hexagonal-architecture',
165
- title: 'Ports and Adapters Boundary',
166
- description: 'All bounded contexts MUST implement hexagonal architecture',
167
- blocking: true,
168
- }],
169
- }));
170
- }
171
- return Promise.resolve(JSON.stringify({ rules: [] }));
172
- });
173
- const result = await service.validateArchitecture('/project', '/core', 'F1');
174
- expect(result.rulesChecked).toBeGreaterThan(0);
175
- });
176
- });
177
- });
178
- //# sourceMappingURL=ruleset-validator-architecture.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ruleset-validator-architecture.spec.js","sourceRoot":"","sources":["../../../src/core/validators/ruleset-validator-architecture.spec.ts"],"names":[],"mappings":"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"}
@@ -1,80 +0,0 @@
1
- import { ILogger, IFileSystem, IConfigParser } from '../abstractions';
2
- export interface ValidationResult {
3
- status: 'passed' | 'failed' | 'warning';
4
- rulesChecked: number;
5
- issues: ValidationIssue[];
6
- coreRef: {
7
- version: string | null;
8
- path: string | null;
9
- };
10
- timestamp: string;
11
- }
12
- export interface ValidationIssue {
13
- ruleId: string;
14
- severity: 'MUST' | 'SHOULD' | 'COULD';
15
- category: string;
16
- title: string;
17
- description: string;
18
- file?: string;
19
- expected?: string;
20
- actual?: string;
21
- blocking: boolean;
22
- }
23
- export interface EvolithYaml {
24
- coreRef?: {
25
- version?: string;
26
- path?: string;
27
- };
28
- governance?: {
29
- version?: string;
30
- adrRegistry?: Array<{
31
- id: string;
32
- status: string;
33
- }>;
34
- };
35
- product?: {
36
- name?: string;
37
- type?: string;
38
- };
39
- }
40
- export interface RulesetValidatorOptions {
41
- fileSystem?: IFileSystem;
42
- configParser?: IConfigParser;
43
- logger?: ILogger;
44
- }
45
- export declare class RulesetValidatorService {
46
- private readonly logger;
47
- private readonly fs;
48
- private readonly configParser;
49
- constructor(options?: RulesetValidatorOptions);
50
- validate(satellitePath: string, corePath?: string): Promise<ValidationResult>;
51
- private loadEvolithYaml;
52
- private loadRuleset;
53
- private findCorePath;
54
- private isValidSemver;
55
- loadRulesetById(corePath: string, rulesetId: string): Promise<ValidationIssue[]>;
56
- validateArchitecture(satellitePath: string, corePath?: string, level?: 'F1' | 'F2' | 'F3' | 'ALL'): Promise<ArchitectureValidationResult>;
57
- private validateArchitectureRule;
58
- private validateTopologyRule;
59
- private validateBoundedContextsRule;
60
- private validateHexagonalRule;
61
- private validateCommunicationRule;
62
- private validatePersistenceRule;
63
- private validateAsyncRule;
64
- private validateExtractionReadinessRule;
65
- private validateObservabilityRule;
66
- private validateModuleAutonomyRule;
67
- private validateContractStabilityRule;
68
- private validateDataOwnershipRule;
69
- private validateAsyncCommunicationRule;
70
- private validateDistributedTracingRule;
71
- private validateContainerizationRule;
72
- private validateServiceBoundariesRule;
73
- }
74
- export interface ArchitectureValidationResult {
75
- status: 'passed' | 'failed' | 'warning';
76
- levels: string[];
77
- rulesChecked: number;
78
- issues: ValidationIssue[];
79
- timestamp: string;
80
- }