@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,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 passed status when no blocking issues', async () => {
96
- const result = await service.validateArchitecture('/project', '/core', 'F1');
97
- expect(result.status).toBe('passed');
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
- }