@evolith/smart-cli 0.0.2-beta → 1.1.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 (271) hide show
  1. package/README.es.md +51 -15
  2. package/README.md +51 -15
  3. package/dist/app.module.js +2 -2
  4. package/dist/app.module.js.map +1 -1
  5. package/dist/app.module.spec.d.ts +1 -0
  6. package/dist/app.module.spec.js +305 -0
  7. package/dist/app.module.spec.js.map +1 -0
  8. package/dist/application/ports/webhook-notifier.port.d.ts +4 -0
  9. package/dist/application/ports/webhook-notifier.port.js +3 -0
  10. package/dist/application/ports/webhook-notifier.port.js.map +1 -0
  11. package/dist/application/services/index.d.ts +1 -0
  12. package/dist/application/services/index.js +28 -2
  13. package/dist/application/services/index.js.map +1 -1
  14. package/dist/application/services/initialize-project.spec.d.ts +1 -0
  15. package/dist/application/services/initialize-project.spec.js +211 -0
  16. package/dist/application/services/initialize-project.spec.js.map +1 -0
  17. package/dist/application/use-cases/evaluate-gate.use-case.d.ts +20 -0
  18. package/dist/application/use-cases/evaluate-gate.use-case.js +72 -0
  19. package/dist/application/use-cases/evaluate-gate.use-case.js.map +1 -0
  20. package/dist/application/use-cases/validate-satellite.use-case.d.ts +1 -0
  21. package/dist/application/use-cases/validate-satellite.use-case.js +7 -3
  22. package/dist/application/use-cases/validate-satellite.use-case.js.map +1 -1
  23. package/dist/commands/adr/adr.command.d.ts +2 -0
  24. package/dist/commands/adr/adr.command.js +36 -14
  25. package/dist/commands/adr/adr.command.js.map +1 -1
  26. package/dist/commands/adr/adr.command.spec.d.ts +1 -0
  27. package/dist/commands/adr/adr.command.spec.js +409 -0
  28. package/dist/commands/adr/adr.command.spec.js.map +1 -0
  29. package/dist/commands/architecture/scaffold.command.d.ts +1 -0
  30. package/dist/commands/architecture/scaffold.command.js +23 -1
  31. package/dist/commands/architecture/scaffold.command.js.map +1 -1
  32. package/dist/commands/architecture/scaffold.command.spec.d.ts +1 -0
  33. package/dist/commands/architecture/scaffold.command.spec.js +207 -0
  34. package/dist/commands/architecture/scaffold.command.spec.js.map +1 -0
  35. package/dist/commands/completion/completion.command.spec.d.ts +1 -0
  36. package/dist/commands/completion/completion.command.spec.js +240 -0
  37. package/dist/commands/completion/completion.command.spec.js.map +1 -0
  38. package/dist/commands/docs/docs.command.spec.d.ts +1 -0
  39. package/dist/commands/docs/docs.command.spec.js +87 -0
  40. package/dist/commands/docs/docs.command.spec.js.map +1 -0
  41. package/dist/commands/drift/drift.command.spec.d.ts +1 -0
  42. package/dist/commands/drift/drift.command.spec.js +327 -0
  43. package/dist/commands/drift/drift.command.spec.js.map +1 -0
  44. package/dist/commands/gate/gate.command.d.ts +23 -0
  45. package/dist/commands/gate/gate.command.js +210 -0
  46. package/dist/commands/gate/gate.command.js.map +1 -0
  47. package/dist/commands/history/history.command.spec.d.ts +1 -0
  48. package/dist/commands/history/history.command.spec.js +392 -0
  49. package/dist/commands/history/history.command.spec.js.map +1 -0
  50. package/dist/commands/init/agents.command.spec.js +398 -0
  51. package/dist/commands/init/agents.command.spec.js.map +1 -1
  52. package/dist/commands/init/init.command.spec.d.ts +1 -0
  53. package/dist/commands/init/init.command.spec.js +272 -0
  54. package/dist/commands/init/init.command.spec.js.map +1 -0
  55. package/dist/commands/init/upgrade.command.spec.d.ts +1 -0
  56. package/dist/commands/init/upgrade.command.spec.js +378 -0
  57. package/dist/commands/init/upgrade.command.spec.js.map +1 -0
  58. package/dist/commands/mcp/mcp-serve.command.spec.d.ts +1 -0
  59. package/dist/commands/mcp/mcp-serve.command.spec.js +58 -0
  60. package/dist/commands/mcp/mcp-serve.command.spec.js.map +1 -0
  61. package/dist/commands/sdlc/gate-status.command.d.ts +3 -1
  62. package/dist/commands/sdlc/gate-status.command.js +78 -3
  63. package/dist/commands/sdlc/gate-status.command.js.map +1 -1
  64. package/dist/commands/sdlc/gate-status.command.spec.d.ts +1 -0
  65. package/dist/commands/sdlc/gate-status.command.spec.js +302 -0
  66. package/dist/commands/sdlc/gate-status.command.spec.js.map +1 -0
  67. package/dist/commands/sdlc/generate-domain.command.d.ts +2 -0
  68. package/dist/commands/sdlc/generate-domain.command.js +123 -12
  69. package/dist/commands/sdlc/generate-domain.command.js.map +1 -1
  70. package/dist/commands/sdlc/generate-domain.command.spec.d.ts +1 -0
  71. package/dist/commands/sdlc/generate-domain.command.spec.js +121 -0
  72. package/dist/commands/sdlc/generate-domain.command.spec.js.map +1 -0
  73. package/dist/commands/sdlc/handoff.command.js +2 -2
  74. package/dist/commands/sdlc/handoff.command.js.map +1 -1
  75. package/dist/commands/sdlc/handoff.command.spec.d.ts +1 -0
  76. package/dist/commands/sdlc/handoff.command.spec.js +395 -0
  77. package/dist/commands/sdlc/handoff.command.spec.js.map +1 -0
  78. package/dist/commands/sdlc/sdlc.command.js +40 -6
  79. package/dist/commands/sdlc/sdlc.command.js.map +1 -1
  80. package/dist/commands/sdlc/sdlc.command.spec.d.ts +1 -0
  81. package/dist/commands/sdlc/sdlc.command.spec.js +79 -0
  82. package/dist/commands/sdlc/sdlc.command.spec.js.map +1 -0
  83. package/dist/commands/standards/standards.command.spec.d.ts +1 -0
  84. package/dist/commands/standards/standards.command.spec.js +311 -0
  85. package/dist/commands/standards/standards.command.spec.js.map +1 -0
  86. package/dist/commands/validate/validate.command.d.ts +2 -0
  87. package/dist/commands/validate/validate.command.js +16 -2
  88. package/dist/commands/validate/validate.command.js.map +1 -1
  89. package/dist/commands/validate/validate.command.spec.d.ts +1 -0
  90. package/dist/commands/validate/validate.command.spec.js +368 -0
  91. package/dist/commands/validate/validate.command.spec.js.map +1 -0
  92. package/dist/core/abstractions/interfaces.d.ts +1 -0
  93. package/dist/core/abstractions/interfaces.js.map +1 -1
  94. package/dist/core/abstractions/providers/config-parser.provider.spec.d.ts +1 -0
  95. package/dist/core/abstractions/providers/config-parser.provider.spec.js +18 -0
  96. package/dist/core/abstractions/providers/config-parser.provider.spec.js.map +1 -0
  97. package/dist/core/abstractions/providers/logger.provider.spec.d.ts +1 -0
  98. package/dist/core/abstractions/providers/logger.provider.spec.js +212 -0
  99. package/dist/core/abstractions/providers/logger.provider.spec.js.map +1 -0
  100. package/dist/core/abstractions/providers/mock-filesystem.provider.d.ts +1 -0
  101. package/dist/core/abstractions/providers/mock-filesystem.provider.js +4 -0
  102. package/dist/core/abstractions/providers/mock-filesystem.provider.js.map +1 -1
  103. package/dist/core/abstractions/providers/mock-filesystem.provider.spec.d.ts +1 -0
  104. package/dist/core/abstractions/providers/mock-filesystem.provider.spec.js +56 -0
  105. package/dist/core/abstractions/providers/mock-filesystem.provider.spec.js.map +1 -0
  106. package/dist/core/abstractions/providers/node-filesystem.provider.d.ts +1 -0
  107. package/dist/core/abstractions/providers/node-filesystem.provider.js +4 -0
  108. package/dist/core/abstractions/providers/node-filesystem.provider.js.map +1 -1
  109. package/dist/core/architecture/nx-workspace.strategy.d.ts +3 -0
  110. package/dist/core/architecture/nx-workspace.strategy.js +35 -6
  111. package/dist/core/architecture/nx-workspace.strategy.js.map +1 -1
  112. package/dist/core/architecture/nx-workspace.strategy.spec.d.ts +1 -0
  113. package/dist/core/architecture/nx-workspace.strategy.spec.js +187 -0
  114. package/dist/core/architecture/nx-workspace.strategy.spec.js.map +1 -0
  115. package/dist/core/architecture/workspace-manager.strategy.d.ts +1 -0
  116. package/dist/core/di/container.spec.js +164 -0
  117. package/dist/core/di/container.spec.js.map +1 -1
  118. package/dist/core/generators/hexagonal-scaffolder.d.ts +6 -0
  119. package/dist/core/generators/hexagonal-scaffolder.js +260 -0
  120. package/dist/core/generators/hexagonal-scaffolder.js.map +1 -0
  121. package/dist/core/generators/hexagonal-scaffolder.spec.d.ts +1 -0
  122. package/dist/core/generators/hexagonal-scaffolder.spec.js +164 -0
  123. package/dist/core/generators/hexagonal-scaffolder.spec.js.map +1 -0
  124. package/dist/core/generators/mermaid-class-parser.d.ts +38 -0
  125. package/dist/core/generators/mermaid-class-parser.js +183 -0
  126. package/dist/core/generators/mermaid-class-parser.js.map +1 -0
  127. package/dist/core/generators/mermaid-class-parser.spec.d.ts +1 -0
  128. package/dist/core/generators/mermaid-class-parser.spec.js +148 -0
  129. package/dist/core/generators/mermaid-class-parser.spec.js.map +1 -0
  130. package/dist/core/mcp/metrics.service.spec.d.ts +1 -0
  131. package/dist/core/mcp/metrics.service.spec.js +159 -0
  132. package/dist/core/mcp/metrics.service.spec.js.map +1 -0
  133. package/dist/core/mcp/prompts/index.js +36 -0
  134. package/dist/core/mcp/prompts/index.js.map +1 -1
  135. package/dist/core/mcp/prompts/index.spec.d.ts +1 -0
  136. package/dist/core/mcp/prompts/index.spec.js +150 -0
  137. package/dist/core/mcp/prompts/index.spec.js.map +1 -0
  138. package/dist/core/mcp/resources/index.js +16 -0
  139. package/dist/core/mcp/resources/index.js.map +1 -1
  140. package/dist/core/mcp/resources/index.spec.d.ts +1 -0
  141. package/dist/core/mcp/resources/index.spec.js +212 -0
  142. package/dist/core/mcp/resources/index.spec.js.map +1 -0
  143. package/dist/core/mcp/server.d.ts +4 -1
  144. package/dist/core/mcp/server.js +250 -25
  145. package/dist/core/mcp/server.js.map +1 -1
  146. package/dist/core/mcp/server.spec.d.ts +1 -0
  147. package/dist/core/mcp/server.spec.js +579 -0
  148. package/dist/core/mcp/server.spec.js.map +1 -0
  149. package/dist/core/mcp/tools/agent.spec.d.ts +1 -0
  150. package/dist/core/mcp/tools/agent.spec.js +171 -0
  151. package/dist/core/mcp/tools/agent.spec.js.map +1 -0
  152. package/dist/core/mcp/tools/architecture.d.ts +2 -0
  153. package/dist/core/mcp/tools/architecture.js +68 -0
  154. package/dist/core/mcp/tools/architecture.js.map +1 -1
  155. package/dist/core/mcp/tools/architecture.spec.d.ts +1 -0
  156. package/dist/core/mcp/tools/architecture.spec.js +145 -0
  157. package/dist/core/mcp/tools/architecture.spec.js.map +1 -0
  158. package/dist/core/mcp/tools/gate.d.ts +1 -0
  159. package/dist/core/mcp/tools/gate.js +68 -0
  160. package/dist/core/mcp/tools/gate.js.map +1 -0
  161. package/dist/core/mcp/tools/moscow.d.ts +30 -0
  162. package/dist/core/mcp/tools/moscow.js +113 -0
  163. package/dist/core/mcp/tools/moscow.js.map +1 -0
  164. package/dist/core/mcp/tools/moscow.spec.d.ts +1 -0
  165. package/dist/core/mcp/tools/moscow.spec.js +209 -0
  166. package/dist/core/mcp/tools/moscow.spec.js.map +1 -0
  167. package/dist/core/mcp/tools/sdlc.js +2 -1
  168. package/dist/core/mcp/tools/sdlc.js.map +1 -1
  169. package/dist/core/mcp/tools/sdlc.spec.d.ts +1 -0
  170. package/dist/core/mcp/tools/sdlc.spec.js +170 -0
  171. package/dist/core/mcp/tools/sdlc.spec.js.map +1 -0
  172. package/dist/core/mcp/tools/validate.spec.d.ts +1 -0
  173. package/dist/core/mcp/tools/validate.spec.js +130 -0
  174. package/dist/core/mcp/tools/validate.spec.js.map +1 -0
  175. package/dist/core/mcp/watcher.service.spec.js +109 -8
  176. package/dist/core/mcp/watcher.service.spec.js.map +1 -1
  177. package/dist/core/metrics/dora-calculator.d.ts +18 -0
  178. package/dist/core/metrics/dora-calculator.js +146 -0
  179. package/dist/core/metrics/dora-calculator.js.map +1 -0
  180. package/dist/core/metrics/dora-calculator.spec.d.ts +1 -0
  181. package/dist/core/metrics/dora-calculator.spec.js +164 -0
  182. package/dist/core/metrics/dora-calculator.spec.js.map +1 -0
  183. package/dist/core/metrics/git-log-reader.d.ts +14 -0
  184. package/dist/core/metrics/git-log-reader.js +39 -0
  185. package/dist/core/metrics/git-log-reader.js.map +1 -0
  186. package/dist/core/metrics/git-log-reader.spec.d.ts +1 -0
  187. package/dist/core/metrics/git-log-reader.spec.js +108 -0
  188. package/dist/core/metrics/git-log-reader.spec.js.map +1 -0
  189. package/dist/core/observability/command-watcher.spec.d.ts +1 -0
  190. package/dist/core/observability/command-watcher.spec.js +123 -0
  191. package/dist/core/observability/command-watcher.spec.js.map +1 -0
  192. package/dist/core/observability/error-reporter.spec.d.ts +1 -0
  193. package/dist/core/observability/error-reporter.spec.js +291 -0
  194. package/dist/core/observability/error-reporter.spec.js.map +1 -0
  195. package/dist/core/observability/index.d.ts +1 -0
  196. package/dist/core/observability/index.js +3 -1
  197. package/dist/core/observability/index.js.map +1 -1
  198. package/dist/core/observability/structured-logger.spec.d.ts +1 -0
  199. package/dist/core/observability/structured-logger.spec.js +197 -0
  200. package/dist/core/observability/structured-logger.spec.js.map +1 -0
  201. package/dist/core/observability/timing.spec.d.ts +1 -0
  202. package/dist/core/observability/timing.spec.js +216 -0
  203. package/dist/core/observability/timing.spec.js.map +1 -0
  204. package/dist/core/observability/tool-usage-telemetry.service.d.ts +46 -0
  205. package/dist/core/observability/tool-usage-telemetry.service.js +181 -0
  206. package/dist/core/observability/tool-usage-telemetry.service.js.map +1 -0
  207. package/dist/core/services/command-history.service.d.ts +1 -0
  208. package/dist/core/services/command-history.service.js +4 -0
  209. package/dist/core/services/command-history.service.js.map +1 -1
  210. package/dist/core/services/command-history.service.spec.js +217 -126
  211. package/dist/core/services/command-history.service.spec.js.map +1 -1
  212. package/dist/core/upgrade/satellite-upgrade.service.spec.js +212 -132
  213. package/dist/core/upgrade/satellite-upgrade.service.spec.js.map +1 -1
  214. package/dist/core/validators/deep-architecture-analyzer.d.ts +58 -0
  215. package/dist/core/validators/deep-architecture-analyzer.js +333 -0
  216. package/dist/core/validators/deep-architecture-analyzer.js.map +1 -0
  217. package/dist/core/validators/deep-architecture-analyzer.spec.d.ts +1 -0
  218. package/dist/core/validators/deep-architecture-analyzer.spec.js +186 -0
  219. package/dist/core/validators/deep-architecture-analyzer.spec.js.map +1 -0
  220. package/dist/core/validators/evaluators/evaluator.interface.d.ts +14 -0
  221. package/dist/core/validators/evaluators/evaluator.interface.js +3 -0
  222. package/dist/core/validators/evaluators/evaluator.interface.js.map +1 -0
  223. package/dist/core/validators/evaluators/native-evaluator.d.ts +31 -0
  224. package/dist/core/validators/evaluators/native-evaluator.js +461 -0
  225. package/dist/core/validators/evaluators/native-evaluator.js.map +1 -0
  226. package/dist/core/validators/evaluators/opa-evaluator.d.ts +20 -0
  227. package/dist/core/validators/evaluators/opa-evaluator.js +249 -0
  228. package/dist/core/validators/evaluators/opa-evaluator.js.map +1 -0
  229. package/dist/core/validators/phase-gate-validator.service.d.ts +4 -0
  230. package/dist/core/validators/phase-gate-validator.service.js +76 -9
  231. package/dist/core/validators/phase-gate-validator.service.js.map +1 -1
  232. package/dist/core/validators/rule-evaluation-engine.d.ts +34 -0
  233. package/dist/core/validators/rule-evaluation-engine.js +187 -0
  234. package/dist/core/validators/rule-evaluation-engine.js.map +1 -0
  235. package/dist/core/validators/rule-evaluation-engine.spec.d.ts +1 -0
  236. package/dist/core/validators/rule-evaluation-engine.spec.js +243 -0
  237. package/dist/core/validators/rule-evaluation-engine.spec.js.map +1 -0
  238. package/dist/core/validators/ruleset-validator-architecture.spec.js +2 -2
  239. package/dist/core/validators/ruleset-validator-architecture.spec.js.map +1 -1
  240. package/dist/core/validators/ruleset-validator.service.d.ts +2 -0
  241. package/dist/core/validators/ruleset-validator.service.js +36 -11
  242. package/dist/core/validators/ruleset-validator.service.js.map +1 -1
  243. package/dist/core/validators/ruleset-validator.service.spec.js +347 -0
  244. package/dist/core/validators/ruleset-validator.service.spec.js.map +1 -1
  245. package/dist/domain/gate-evidence.d.ts +59 -0
  246. package/dist/domain/gate-evidence.js +38 -0
  247. package/dist/domain/gate-evidence.js.map +1 -0
  248. package/dist/domain/services/adr.service.d.ts +2 -2
  249. package/dist/domain/services/adr.service.js +12 -8
  250. package/dist/domain/services/adr.service.js.map +1 -1
  251. package/dist/domain/services/index.d.ts +1 -0
  252. package/dist/domain/services/index.js +3 -1
  253. package/dist/domain/services/index.js.map +1 -1
  254. package/dist/domain/services/moscow-prioritization.service.d.ts +44 -0
  255. package/dist/domain/services/moscow-prioritization.service.js +213 -0
  256. package/dist/domain/services/moscow-prioritization.service.js.map +1 -0
  257. package/dist/domain/services/moscow-prioritization.service.spec.d.ts +1 -0
  258. package/dist/domain/services/moscow-prioritization.service.spec.js +285 -0
  259. package/dist/domain/services/moscow-prioritization.service.spec.js.map +1 -0
  260. package/dist/domain/services/standards.service.spec.js +461 -1
  261. package/dist/domain/services/standards.service.spec.js.map +1 -1
  262. package/dist/infrastructure/adapters/webhook.adapter.d.ts +5 -0
  263. package/dist/infrastructure/adapters/webhook.adapter.js +19 -0
  264. package/dist/infrastructure/adapters/webhook.adapter.js.map +1 -0
  265. package/dist/infrastructure/cli/command-executor.spec.d.ts +1 -0
  266. package/dist/infrastructure/cli/command-executor.spec.js +149 -0
  267. package/dist/infrastructure/cli/command-executor.spec.js.map +1 -0
  268. package/dist/infrastructure/cli/providers/providers.spec.d.ts +1 -0
  269. package/dist/infrastructure/cli/providers/providers.spec.js +251 -0
  270. package/dist/infrastructure/cli/providers/providers.spec.js.map +1 -0
  271. package/package.json +23 -5
@@ -0,0 +1,395 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ const handoff_command_1 = require("./handoff.command");
37
+ const p = __importStar(require("@clack/prompts"));
38
+ const container_1 = require("../../core/di/container");
39
+ const catalog_loader_1 = require("../../infrastructure/catalog/catalog-loader");
40
+ jest.mock('@clack/prompts');
41
+ jest.mock('../../core/di/container');
42
+ jest.mock('../../infrastructure/catalog/catalog-loader');
43
+ jest.mock('../../application/services', () => {
44
+ return {
45
+ PhaseTransitionUseCase: jest.fn().mockImplementation(() => ({
46
+ execute: jest.fn().mockResolvedValue({
47
+ success: true,
48
+ from: 'phase-1',
49
+ to: 'phase-2',
50
+ gateResults: [],
51
+ executedTools: [],
52
+ warnings: [],
53
+ errors: [],
54
+ }),
55
+ })),
56
+ };
57
+ });
58
+ const mockSelect = p.select;
59
+ const mockConfirm = p.confirm;
60
+ const mockMultiselect = p.multiselect;
61
+ const mockSpinner = p.spinner;
62
+ const mockIntro = p.intro;
63
+ const mockOutro = p.outro;
64
+ const mockGroup = p.group;
65
+ const mockNote = p.note;
66
+ const mockCancel = p.cancel;
67
+ const mockLog = p.log;
68
+ const mockSpinnerInstance = {
69
+ start: jest.fn(),
70
+ stop: jest.fn(),
71
+ };
72
+ const mockFs = {
73
+ exists: jest.fn(),
74
+ existsSync: jest.fn().mockReturnValue(false),
75
+ readJson: jest.fn(),
76
+ writeJson: jest.fn(),
77
+ ensureDir: jest.fn(),
78
+ writeFile: jest.fn(),
79
+ readFile: jest.fn(),
80
+ };
81
+ const mockContainer = {
82
+ createFileSystem: jest.fn().mockReturnValue(mockFs),
83
+ createLogger: jest.fn().mockReturnValue({ info: jest.fn(), warn: jest.fn(), error: jest.fn(), debug: jest.fn() }),
84
+ };
85
+ const mockToolCatalog = {
86
+ phases: {
87
+ 'phase-1': {
88
+ toolGroups: {
89
+ linting: {
90
+ question: 'Select linting tool',
91
+ defaultOption: 'eslint',
92
+ options: [{ value: 'eslint', label: 'ESLint' }],
93
+ tools: ['eslint'],
94
+ },
95
+ },
96
+ },
97
+ 'phase-2': {
98
+ toolGroups: {
99
+ governance: {
100
+ question: 'Select governance tool',
101
+ defaultOption: 'adr',
102
+ options: [{ value: 'adr', label: 'ADR' }],
103
+ tools: ['adr'],
104
+ },
105
+ },
106
+ },
107
+ },
108
+ toolMetadata: {},
109
+ };
110
+ const mockExecute = jest.fn().mockResolvedValue({
111
+ success: true,
112
+ from: 'phase-1',
113
+ to: 'phase-2',
114
+ gateResults: [],
115
+ executedTools: [],
116
+ warnings: [],
117
+ errors: [],
118
+ });
119
+ const { PhaseTransitionUseCase } = require('../../application/services');
120
+ describe('HandoffCommand', () => {
121
+ let command;
122
+ beforeEach(() => {
123
+ jest.clearAllMocks();
124
+ container_1.getContainer.mockReturnValue(mockContainer);
125
+ catalog_loader_1.catalogLoader.loadToolCatalog.mockReturnValue(mockToolCatalog);
126
+ mockSpinner.mockReturnValue(mockSpinnerInstance);
127
+ mockExecute.mockResolvedValue({
128
+ success: true,
129
+ from: 'phase-1',
130
+ to: 'phase-2',
131
+ gateResults: [],
132
+ executedTools: [],
133
+ warnings: [],
134
+ errors: [],
135
+ });
136
+ PhaseTransitionUseCase.mockImplementation(() => ({
137
+ execute: mockExecute,
138
+ }));
139
+ command = new handoff_command_1.HandoffCommand();
140
+ });
141
+ describe('run - non-interactive mode', () => {
142
+ it('should execute handoff with from and to options', async () => {
143
+ await command.run([], { from: 'phase-1', to: 'phase-2' });
144
+ expect(mockContainer.createFileSystem).toHaveBeenCalled();
145
+ expect(mockExecute).toHaveBeenCalledWith('phase-1', 'phase-2', [], expect.any(String));
146
+ });
147
+ it('should exit with code 1 on failed transition', async () => {
148
+ mockExecute.mockResolvedValueOnce({
149
+ success: false,
150
+ from: 'phase-5',
151
+ to: 'phase-1',
152
+ gateResults: [],
153
+ executedTools: [],
154
+ warnings: [],
155
+ errors: ['Invalid transition'],
156
+ });
157
+ const exitSpy = jest.spyOn(process, 'exit').mockImplementation((() => { }));
158
+ await command.run([], { from: 'phase-5', to: 'phase-1' });
159
+ expect(exitSpy).toHaveBeenCalledWith(1);
160
+ exitSpy.mockRestore();
161
+ });
162
+ it('should pass tools array to use case when provided', async () => {
163
+ await command.run([], { from: 'phase-1', to: 'phase-2' });
164
+ expect(mockExecute).toHaveBeenCalledWith('phase-1', 'phase-2', [], expect.any(String));
165
+ });
166
+ });
167
+ describe('run - interactive mode', () => {
168
+ it('should run interactive handoff flow', async () => {
169
+ mockGroup.mockImplementation(async (callbacks) => {
170
+ const results = {};
171
+ results.fromPhase = await callbacks.fromPhase();
172
+ results.toPhase = await callbacks.toPhase({ results });
173
+ results.validateGates = await callbacks.validateGates();
174
+ results.uploadEvidence = await callbacks.uploadEvidence();
175
+ results.selectTools = await callbacks.selectTools();
176
+ results.tools = await callbacks.tools({ results });
177
+ results.forceHandoff = await callbacks.forceHandoff();
178
+ return results;
179
+ });
180
+ mockSelect
181
+ .mockResolvedValueOnce('phase-1')
182
+ .mockResolvedValueOnce('phase-2');
183
+ mockConfirm
184
+ .mockResolvedValueOnce(true)
185
+ .mockResolvedValueOnce(true)
186
+ .mockResolvedValueOnce(true)
187
+ .mockResolvedValueOnce(true)
188
+ .mockResolvedValueOnce(false);
189
+ mockMultiselect.mockResolvedValue(['eslint']);
190
+ await command.run([], {});
191
+ expect(mockIntro).toHaveBeenCalled();
192
+ expect(mockGroup).toHaveBeenCalled();
193
+ expect(mockSpinnerInstance.start).toHaveBeenCalled();
194
+ expect(mockSpinnerInstance.stop).toHaveBeenCalled();
195
+ });
196
+ it('should display completion message on success', async () => {
197
+ mockGroup.mockImplementation(async (callbacks) => {
198
+ const results = {};
199
+ results.fromPhase = await callbacks.fromPhase();
200
+ results.toPhase = await callbacks.toPhase({ results });
201
+ results.validateGates = await callbacks.validateGates();
202
+ results.uploadEvidence = await callbacks.uploadEvidence();
203
+ results.selectTools = await callbacks.selectTools();
204
+ results.tools = await callbacks.tools({ results });
205
+ results.forceHandoff = await callbacks.forceHandoff();
206
+ return results;
207
+ });
208
+ mockSelect
209
+ .mockResolvedValueOnce('phase-0')
210
+ .mockResolvedValueOnce('phase-1');
211
+ mockConfirm
212
+ .mockResolvedValueOnce(true)
213
+ .mockResolvedValueOnce(true)
214
+ .mockResolvedValueOnce(false)
215
+ .mockResolvedValueOnce(false);
216
+ await command.run([], {});
217
+ expect(mockOutro).toHaveBeenCalledWith(expect.stringContaining('Completed'));
218
+ });
219
+ it('should handle handoff failure', async () => {
220
+ mockExecute.mockResolvedValueOnce({
221
+ success: false,
222
+ from: 'phase-5',
223
+ to: '',
224
+ gateResults: [{ id: 'G1', passed: false, description: 'Failed', required: true }],
225
+ executedTools: [],
226
+ warnings: [],
227
+ errors: ['Transition failed'],
228
+ });
229
+ mockGroup.mockImplementation(async (callbacks) => {
230
+ const results = {};
231
+ results.fromPhase = await callbacks.fromPhase();
232
+ results.toPhase = await callbacks.toPhase({ results });
233
+ results.validateGates = await callbacks.validateGates();
234
+ results.uploadEvidence = await callbacks.uploadEvidence();
235
+ results.selectTools = await callbacks.selectTools();
236
+ results.tools = await callbacks.tools({ results });
237
+ results.forceHandoff = await callbacks.forceHandoff();
238
+ return results;
239
+ });
240
+ mockSelect
241
+ .mockResolvedValueOnce('phase-5')
242
+ .mockResolvedValueOnce('');
243
+ mockConfirm
244
+ .mockResolvedValueOnce(true)
245
+ .mockResolvedValueOnce(true)
246
+ .mockResolvedValueOnce(false)
247
+ .mockResolvedValueOnce(false);
248
+ await command.run([], {});
249
+ expect(mockOutro).toHaveBeenCalledWith(expect.stringContaining('Failed'));
250
+ });
251
+ it('should skip tool selection when selectTools is false', async () => {
252
+ mockGroup.mockImplementation(async (callbacks) => {
253
+ const results = {};
254
+ results.fromPhase = await callbacks.fromPhase();
255
+ results.toPhase = await callbacks.toPhase({ results });
256
+ results.validateGates = await callbacks.validateGates();
257
+ results.uploadEvidence = await callbacks.uploadEvidence();
258
+ results.selectTools = await callbacks.selectTools();
259
+ results.tools = await callbacks.tools({ results });
260
+ results.forceHandoff = await callbacks.forceHandoff();
261
+ return results;
262
+ });
263
+ mockSelect
264
+ .mockResolvedValueOnce('phase-1')
265
+ .mockResolvedValueOnce('phase-2');
266
+ mockConfirm
267
+ .mockResolvedValueOnce(true)
268
+ .mockResolvedValueOnce(true)
269
+ .mockResolvedValueOnce(false)
270
+ .mockResolvedValueOnce(false);
271
+ await command.run([], {});
272
+ expect(mockMultiselect).not.toHaveBeenCalled();
273
+ });
274
+ it('should show next steps on successful handoff', async () => {
275
+ mockGroup.mockImplementation(async (callbacks) => {
276
+ const results = {};
277
+ results.fromPhase = await callbacks.fromPhase();
278
+ results.toPhase = await callbacks.toPhase({ results });
279
+ results.validateGates = await callbacks.validateGates();
280
+ results.uploadEvidence = await callbacks.uploadEvidence();
281
+ results.selectTools = await callbacks.selectTools();
282
+ results.tools = await callbacks.tools({ results });
283
+ results.forceHandoff = await callbacks.forceHandoff();
284
+ return results;
285
+ });
286
+ mockSelect
287
+ .mockResolvedValueOnce('phase-1')
288
+ .mockResolvedValueOnce('phase-2');
289
+ mockConfirm
290
+ .mockResolvedValueOnce(true)
291
+ .mockResolvedValueOnce(true)
292
+ .mockResolvedValueOnce(false)
293
+ .mockResolvedValueOnce(false);
294
+ await command.run([], {});
295
+ expect(mockNote).toHaveBeenCalled();
296
+ });
297
+ it('should display gate validation results when present', async () => {
298
+ mockExecute.mockResolvedValueOnce({
299
+ success: true,
300
+ from: 'phase-0',
301
+ to: 'phase-1',
302
+ gateResults: [
303
+ { id: 'PG1-01', passed: true, description: 'package.json exists', required: true },
304
+ { id: 'PG1-02', passed: false, description: 'src/ exists', required: false },
305
+ ],
306
+ executedTools: ['eslint'],
307
+ warnings: [],
308
+ errors: [],
309
+ });
310
+ mockGroup.mockImplementation(async (callbacks) => {
311
+ const results = {};
312
+ results.fromPhase = await callbacks.fromPhase();
313
+ results.toPhase = await callbacks.toPhase({ results });
314
+ results.validateGates = await callbacks.validateGates();
315
+ results.uploadEvidence = await callbacks.uploadEvidence();
316
+ results.selectTools = await callbacks.selectTools();
317
+ results.tools = await callbacks.tools({ results });
318
+ results.forceHandoff = await callbacks.forceHandoff();
319
+ return results;
320
+ });
321
+ mockSelect
322
+ .mockResolvedValueOnce('phase-0')
323
+ .mockResolvedValueOnce('phase-1');
324
+ mockConfirm
325
+ .mockResolvedValueOnce(true)
326
+ .mockResolvedValueOnce(true)
327
+ .mockResolvedValueOnce(false)
328
+ .mockResolvedValueOnce(false);
329
+ await command.run([], {});
330
+ expect(mockOutro).toHaveBeenCalledWith(expect.stringContaining('Completed'));
331
+ });
332
+ });
333
+ describe('getToolGroupsForPhase', () => {
334
+ it('should return tool groups for valid phase', () => {
335
+ const command_any = command;
336
+ const result = command_any.getToolGroupsForPhase('phase-1');
337
+ expect(result).toHaveProperty('linting');
338
+ });
339
+ it('should return empty object for invalid phase', () => {
340
+ const command_any = command;
341
+ const result = command_any.getToolGroupsForPhase('invalid-phase');
342
+ expect(result).toEqual({});
343
+ });
344
+ });
345
+ describe('getNextSteps', () => {
346
+ it('should return next steps for phase-1', () => {
347
+ const command_any = command;
348
+ const result = command_any.getNextSteps('phase-1');
349
+ expect(result).toContain('evolith validate');
350
+ });
351
+ it('should return next steps for phase-2', () => {
352
+ const command_any = command;
353
+ const result = command_any.getNextSteps('phase-2');
354
+ expect(result).toContain('rulesets');
355
+ });
356
+ it('should return next steps for phase-3', () => {
357
+ const command_any = command;
358
+ const result = command_any.getNextSteps('phase-3');
359
+ expect(result).toContain('ADRs');
360
+ });
361
+ it('should return next steps for phase-4', () => {
362
+ const command_any = command;
363
+ const result = command_any.getNextSteps('phase-4');
364
+ expect(result).toContain('CI/CD');
365
+ });
366
+ it('should return next steps for phase-5', () => {
367
+ const command_any = command;
368
+ const result = command_any.getNextSteps('phase-5');
369
+ expect(result).toContain('DORA');
370
+ });
371
+ it('should return empty string for unknown phase', () => {
372
+ const command_any = command;
373
+ const result = command_any.getNextSteps('unknown');
374
+ expect(result).toBe('');
375
+ });
376
+ });
377
+ describe('option parsers', () => {
378
+ it('parseFrom should return value', () => {
379
+ expect(command.parseFrom('phase-1')).toBe('phase-1');
380
+ });
381
+ it('parseTo should return value', () => {
382
+ expect(command.parseTo('phase-2')).toBe('phase-2');
383
+ });
384
+ it('parseArtifacts should return true', () => {
385
+ expect(command.parseArtifacts()).toBe(true);
386
+ });
387
+ it('parseValidate should return true', () => {
388
+ expect(command.parseValidate()).toBe(true);
389
+ });
390
+ it('parseForce should return true', () => {
391
+ expect(command.parseForce()).toBe(true);
392
+ });
393
+ });
394
+ });
395
+ //# sourceMappingURL=handoff.command.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handoff.command.spec.js","sourceRoot":"","sources":["../../../src/commands/sdlc/handoff.command.spec.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,43 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
2
18
  var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
19
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
20
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
21
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
22
  return c > 3 && r && Object.defineProperty(target, key, r), r;
7
23
  };
24
+ var __importStar = (this && this.__importStar) || (function () {
25
+ var ownKeys = function(o) {
26
+ ownKeys = Object.getOwnPropertyNames || function (o) {
27
+ var ar = [];
28
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
29
+ return ar;
30
+ };
31
+ return ownKeys(o);
32
+ };
33
+ return function (mod) {
34
+ if (mod && mod.__esModule) return mod;
35
+ var result = {};
36
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
37
+ __setModuleDefault(result, mod);
38
+ return result;
39
+ };
40
+ })();
8
41
  var __importDefault = (this && this.__importDefault) || function (mod) {
9
42
  return (mod && mod.__esModule) ? mod : { "default": mod };
10
43
  };
@@ -12,17 +45,18 @@ Object.defineProperty(exports, "__esModule", { value: true });
12
45
  exports.SdlcCommand = void 0;
13
46
  const nest_commander_1 = require("nest-commander");
14
47
  const chalk_1 = __importDefault(require("chalk"));
48
+ const p = __importStar(require("@clack/prompts"));
15
49
  const handoff_command_1 = require("./handoff.command");
16
50
  const generate_domain_command_1 = require("./generate-domain.command");
17
51
  const gate_status_command_1 = require("./gate-status.command");
18
52
  let SdlcCommand = class SdlcCommand extends nest_commander_1.CommandRunner {
19
53
  async run(passedParam, options) {
20
- console.log(chalk_1.default.blueBright('\nšŸš€ Evolith SDLC CLI šŸš€\n'));
21
- console.log(chalk_1.default.white('Available subcommands:'));
22
- console.log(chalk_1.default.cyan(' handoff') + ' - Transition artifacts between phases');
23
- console.log(chalk_1.default.cyan(' generate') + ' - Generate code from models (e.g. domain from DDD)');
24
- console.log(chalk_1.default.cyan(' gate-status') + ' - Display current SDLC phase gate validation status');
25
- console.log(chalk_1.default.gray('\nRun `evolith sdlc <subcommand> --help` for more information.\n'));
54
+ p.intro(chalk_1.default.bgCyan.white.bold(' Evolith SDLC CLI '));
55
+ p.log.info(chalk_1.default.bold('Available subcommands:'));
56
+ p.log.info(` ${chalk_1.default.cyan('handoff')} - Transition artifacts between phases`);
57
+ p.log.info(` ${chalk_1.default.cyan('generate')} - ${chalk_1.default.yellow('[alpha]')} Generate code from models (e.g. domain from DDD)`);
58
+ p.log.info(` ${chalk_1.default.cyan('gate-status')} - Display current SDLC phase gate validation status`);
59
+ p.outro(chalk_1.default.gray('Run `evolith sdlc <subcommand> --help` for more information.'));
26
60
  }
27
61
  };
28
62
  exports.SdlcCommand = SdlcCommand;
@@ -1 +1 @@
1
- {"version":3,"file":"sdlc.command.js","sourceRoot":"","sources":["../../../src/commands/sdlc/sdlc.command.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,mDAAgE;AAChE,kDAA0B;AAE1B,uDAAmD;AACnD,uEAAkE;AAClE,+DAA0D;AAOnD,IAAM,WAAW,GAAjB,MAAM,WAAY,SAAQ,8BAAa;IAC5C,KAAK,CAAC,GAAG,CACP,WAAqB,EACrB,OAA6B;QAE7B,OAAO,CAAC,GAAG,CACT,eAAK,CAAC,UAAU,CAAC,4BAA4B,CAAC,CAC/C,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC,CAAC;QACnD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,wCAAwC,CAAC,CAAC;QAChF,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,qDAAqD,CAAC,CAAC;QAC9F,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,sDAAsD,CAAC,CAAC;QAClG,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,kEAAkE,CAAC,CAAC,CAAC;IAC9F,CAAC;CACF,CAAA;AAdY,kCAAW;sBAAX,WAAW;IALvB,IAAA,wBAAO,EAAC;QACP,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,oIAAoI;QACjJ,WAAW,EAAE,CAAC,gCAAc,EAAE,+CAAqB,EAAE,uCAAiB,CAAC;KACxE,CAAC;GACW,WAAW,CAcvB"}
1
+ {"version":3,"file":"sdlc.command.js","sourceRoot":"","sources":["../../../src/commands/sdlc/sdlc.command.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,mDAAgE;AAChE,kDAA0B;AAC1B,kDAAoC;AAEpC,uDAAmD;AACnD,uEAAkE;AAClE,+DAA0D;AAOnD,IAAM,WAAW,GAAjB,MAAM,WAAY,SAAQ,8BAAa;IAC5C,KAAK,CAAC,GAAG,CACP,WAAqB,EACrB,OAA6B;QAE7B,CAAC,CAAC,KAAK,CAAC,eAAK,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC;QACvD,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,eAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC;QACjD,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,eAAK,CAAC,IAAI,CAAC,SAAS,CAAC,4CAA4C,CAAC,CAAC;QACnF,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,eAAK,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,eAAK,CAAC,MAAM,CAAC,SAAS,CAAC,mDAAmD,CAAC,CAAC;QAC3H,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,eAAK,CAAC,IAAI,CAAC,aAAa,CAAC,sDAAsD,CAAC,CAAC;QACjG,CAAC,CAAC,KAAK,CAAC,eAAK,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC,CAAC;IACtF,CAAC;CACF,CAAA;AAZY,kCAAW;sBAAX,WAAW;IALvB,IAAA,wBAAO,EAAC;QACP,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,oIAAoI;QACjJ,WAAW,EAAE,CAAC,gCAAc,EAAE,+CAAqB,EAAE,uCAAiB,CAAC;KACxE,CAAC;GACW,WAAW,CAYvB"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ const sdlc_command_1 = require("./sdlc.command");
37
+ const p = __importStar(require("@clack/prompts"));
38
+ describe('SdlcCommand', () => {
39
+ let command;
40
+ beforeEach(() => {
41
+ command = new sdlc_command_1.SdlcCommand();
42
+ jest.clearAllMocks();
43
+ });
44
+ describe('run', () => {
45
+ it('should display SDLC header via p.intro', async () => {
46
+ await command.run([], {});
47
+ expect(p.intro).toHaveBeenCalledWith(expect.stringContaining('Evolith SDLC CLI'));
48
+ });
49
+ it('should list available subcommands', async () => {
50
+ await command.run([], {});
51
+ const calls = p.log.info.mock.calls.flat().join(' ');
52
+ expect(calls).toContain('Available subcommands');
53
+ });
54
+ it('should display handoff subcommand', async () => {
55
+ await command.run([], {});
56
+ const calls = p.log.info.mock.calls.flat().join(' ');
57
+ expect(calls).toContain('handoff');
58
+ });
59
+ it('should display generate subcommand', async () => {
60
+ await command.run([], {});
61
+ const calls = p.log.info.mock.calls.flat().join(' ');
62
+ expect(calls).toContain('generate');
63
+ });
64
+ it('should display gate-status subcommand', async () => {
65
+ await command.run([], {});
66
+ const calls = p.log.info.mock.calls.flat().join(' ');
67
+ expect(calls).toContain('gate-status');
68
+ });
69
+ it('should display help hint via p.outro', async () => {
70
+ await command.run([], {});
71
+ expect(p.outro).toHaveBeenCalledWith(expect.stringContaining('evolith sdlc <subcommand> --help'));
72
+ });
73
+ it('should handle passed parameters', async () => {
74
+ await command.run(['some-param'], {});
75
+ expect(p.intro).toHaveBeenCalledWith(expect.stringContaining('Evolith SDLC CLI'));
76
+ });
77
+ });
78
+ });
79
+ //# sourceMappingURL=sdlc.command.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sdlc.command.spec.js","sourceRoot":"","sources":["../../../src/commands/sdlc/sdlc.command.spec.ts"],"names":[],"mappings":"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"}