@evolith/smart-cli 0.0.1-beta → 0.0.3-beta

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 (199) hide show
  1. package/ARCHITECTURE.md +667 -89
  2. package/dist/app.module.js +2 -2
  3. package/dist/app.module.js.map +1 -1
  4. package/dist/app.module.spec.d.ts +1 -0
  5. package/dist/app.module.spec.js +305 -0
  6. package/dist/app.module.spec.js.map +1 -0
  7. package/dist/application/services/index.d.ts +14 -5
  8. package/dist/application/services/index.js +41 -3
  9. package/dist/application/services/index.js.map +1 -1
  10. package/dist/application/services/phase-transition.use-case.spec.d.ts +1 -0
  11. package/dist/application/services/phase-transition.use-case.spec.js +297 -0
  12. package/dist/application/services/phase-transition.use-case.spec.js.map +1 -0
  13. package/dist/commands/adr/adr.command.spec.d.ts +1 -0
  14. package/dist/commands/adr/adr.command.spec.js +409 -0
  15. package/dist/commands/adr/adr.command.spec.js.map +1 -0
  16. package/dist/commands/architecture/scaffold.command.spec.d.ts +1 -0
  17. package/dist/commands/architecture/scaffold.command.spec.js +207 -0
  18. package/dist/commands/architecture/scaffold.command.spec.js.map +1 -0
  19. package/dist/commands/completion/completion.command.spec.d.ts +1 -0
  20. package/dist/commands/completion/completion.command.spec.js +240 -0
  21. package/dist/commands/completion/completion.command.spec.js.map +1 -0
  22. package/dist/commands/docs/docs.command.d.ts +5 -0
  23. package/dist/commands/docs/docs.command.js +159 -3
  24. package/dist/commands/docs/docs.command.js.map +1 -1
  25. package/dist/commands/docs/docs.command.spec.d.ts +1 -0
  26. package/dist/commands/docs/docs.command.spec.js +87 -0
  27. package/dist/commands/docs/docs.command.spec.js.map +1 -0
  28. package/dist/commands/drift/drift.command.d.ts +24 -0
  29. package/dist/commands/drift/drift.command.js +250 -0
  30. package/dist/commands/drift/drift.command.js.map +1 -0
  31. package/dist/commands/drift/drift.command.spec.d.ts +1 -0
  32. package/dist/commands/drift/drift.command.spec.js +327 -0
  33. package/dist/commands/drift/drift.command.spec.js.map +1 -0
  34. package/dist/commands/history/history.command.spec.d.ts +1 -0
  35. package/dist/commands/history/history.command.spec.js +392 -0
  36. package/dist/commands/history/history.command.spec.js.map +1 -0
  37. package/dist/commands/init/agents.command.spec.d.ts +1 -0
  38. package/dist/commands/init/agents.command.spec.js +550 -0
  39. package/dist/commands/init/agents.command.spec.js.map +1 -0
  40. package/dist/commands/init/init.command.spec.d.ts +1 -0
  41. package/dist/commands/init/init.command.spec.js +272 -0
  42. package/dist/commands/init/init.command.spec.js.map +1 -0
  43. package/dist/commands/init/upgrade.command.d.ts +10 -0
  44. package/dist/commands/init/upgrade.command.js +134 -1
  45. package/dist/commands/init/upgrade.command.js.map +1 -1
  46. package/dist/commands/init/upgrade.command.spec.d.ts +1 -0
  47. package/dist/commands/init/upgrade.command.spec.js +378 -0
  48. package/dist/commands/init/upgrade.command.spec.js.map +1 -0
  49. package/dist/commands/mcp/mcp-serve.command.spec.d.ts +1 -0
  50. package/dist/commands/mcp/mcp-serve.command.spec.js +58 -0
  51. package/dist/commands/mcp/mcp-serve.command.spec.js.map +1 -0
  52. package/dist/commands/sdlc/gate-status.command.d.ts +5 -0
  53. package/dist/commands/sdlc/gate-status.command.js +114 -0
  54. package/dist/commands/sdlc/gate-status.command.js.map +1 -0
  55. package/dist/commands/sdlc/generate-domain.command.spec.d.ts +1 -0
  56. package/dist/commands/sdlc/generate-domain.command.spec.js +47 -0
  57. package/dist/commands/sdlc/generate-domain.command.spec.js.map +1 -0
  58. package/dist/commands/sdlc/handoff.command.spec.d.ts +1 -0
  59. package/dist/commands/sdlc/handoff.command.spec.js +395 -0
  60. package/dist/commands/sdlc/handoff.command.spec.js.map +1 -0
  61. package/dist/commands/sdlc/sdlc.command.js +3 -1
  62. package/dist/commands/sdlc/sdlc.command.js.map +1 -1
  63. package/dist/commands/sdlc/sdlc.command.spec.d.ts +1 -0
  64. package/dist/commands/sdlc/sdlc.command.spec.js +45 -0
  65. package/dist/commands/sdlc/sdlc.command.spec.js.map +1 -0
  66. package/dist/commands/standards/standards.command.spec.d.ts +1 -0
  67. package/dist/commands/standards/standards.command.spec.js +311 -0
  68. package/dist/commands/standards/standards.command.spec.js.map +1 -0
  69. package/dist/commands/validate/validate.command.d.ts +4 -0
  70. package/dist/commands/validate/validate.command.js +39 -0
  71. package/dist/commands/validate/validate.command.js.map +1 -1
  72. package/dist/commands/validate/validate.command.spec.d.ts +1 -0
  73. package/dist/commands/validate/validate.command.spec.js +368 -0
  74. package/dist/commands/validate/validate.command.spec.js.map +1 -0
  75. package/dist/core/abstractions/providers/logger.provider.spec.d.ts +1 -0
  76. package/dist/core/abstractions/providers/logger.provider.spec.js +212 -0
  77. package/dist/core/abstractions/providers/logger.provider.spec.js.map +1 -0
  78. package/dist/core/agents/agent-ruleset-builder.d.ts +30 -0
  79. package/dist/core/agents/agent-ruleset-builder.js +75 -0
  80. package/dist/core/agents/agent-ruleset-builder.js.map +1 -0
  81. package/dist/core/agents/agent-ruleset-builder.spec.d.ts +1 -0
  82. package/dist/core/agents/agent-ruleset-builder.spec.js +135 -0
  83. package/dist/core/agents/agent-ruleset-builder.spec.js.map +1 -0
  84. package/dist/core/di/container.spec.js +164 -0
  85. package/dist/core/di/container.spec.js.map +1 -1
  86. package/dist/core/mcp/metrics.service.spec.d.ts +1 -0
  87. package/dist/core/mcp/metrics.service.spec.js +159 -0
  88. package/dist/core/mcp/metrics.service.spec.js.map +1 -0
  89. package/dist/core/mcp/prompts/index.js +36 -0
  90. package/dist/core/mcp/prompts/index.js.map +1 -1
  91. package/dist/core/mcp/prompts/index.spec.d.ts +1 -0
  92. package/dist/core/mcp/prompts/index.spec.js +150 -0
  93. package/dist/core/mcp/prompts/index.spec.js.map +1 -0
  94. package/dist/core/mcp/resources/index.js +16 -0
  95. package/dist/core/mcp/resources/index.js.map +1 -1
  96. package/dist/core/mcp/resources/index.spec.d.ts +1 -0
  97. package/dist/core/mcp/resources/index.spec.js +212 -0
  98. package/dist/core/mcp/resources/index.spec.js.map +1 -0
  99. package/dist/core/mcp/server.d.ts +15 -9
  100. package/dist/core/mcp/server.js +480 -174
  101. package/dist/core/mcp/server.js.map +1 -1
  102. package/dist/core/mcp/server.spec.d.ts +1 -0
  103. package/dist/core/mcp/server.spec.js +563 -0
  104. package/dist/core/mcp/server.spec.js.map +1 -0
  105. package/dist/core/mcp/tools/agent.spec.d.ts +1 -0
  106. package/dist/core/mcp/tools/agent.spec.js +171 -0
  107. package/dist/core/mcp/tools/agent.spec.js.map +1 -0
  108. package/dist/core/mcp/tools/architecture.d.ts +2 -0
  109. package/dist/core/mcp/tools/architecture.js +68 -0
  110. package/dist/core/mcp/tools/architecture.js.map +1 -1
  111. package/dist/core/mcp/tools/architecture.spec.d.ts +1 -0
  112. package/dist/core/mcp/tools/architecture.spec.js +145 -0
  113. package/dist/core/mcp/tools/architecture.spec.js.map +1 -0
  114. package/dist/core/mcp/tools/moscow.d.ts +30 -0
  115. package/dist/core/mcp/tools/moscow.js +113 -0
  116. package/dist/core/mcp/tools/moscow.js.map +1 -0
  117. package/dist/core/mcp/tools/moscow.spec.d.ts +1 -0
  118. package/dist/core/mcp/tools/moscow.spec.js +209 -0
  119. package/dist/core/mcp/tools/moscow.spec.js.map +1 -0
  120. package/dist/core/mcp/tools/sdlc.js +2 -1
  121. package/dist/core/mcp/tools/sdlc.js.map +1 -1
  122. package/dist/core/mcp/tools/sdlc.spec.d.ts +1 -0
  123. package/dist/core/mcp/tools/sdlc.spec.js +170 -0
  124. package/dist/core/mcp/tools/sdlc.spec.js.map +1 -0
  125. package/dist/core/mcp/tools/validate.spec.d.ts +1 -0
  126. package/dist/core/mcp/tools/validate.spec.js +130 -0
  127. package/dist/core/mcp/tools/validate.spec.js.map +1 -0
  128. package/dist/core/mcp/watcher.service.spec.js +109 -8
  129. package/dist/core/mcp/watcher.service.spec.js.map +1 -1
  130. package/dist/core/observability/error-reporter.spec.d.ts +1 -0
  131. package/dist/core/observability/error-reporter.spec.js +291 -0
  132. package/dist/core/observability/error-reporter.spec.js.map +1 -0
  133. package/dist/core/observability/structured-logger.spec.d.ts +1 -0
  134. package/dist/core/observability/structured-logger.spec.js +197 -0
  135. package/dist/core/observability/structured-logger.spec.js.map +1 -0
  136. package/dist/core/observability/timing.spec.d.ts +1 -0
  137. package/dist/core/observability/timing.spec.js +216 -0
  138. package/dist/core/observability/timing.spec.js.map +1 -0
  139. package/dist/core/services/command-history.service.spec.d.ts +1 -0
  140. package/dist/core/services/command-history.service.spec.js +166 -0
  141. package/dist/core/services/command-history.service.spec.js.map +1 -0
  142. package/dist/core/upgrade/satellite-upgrade.service.d.ts +48 -0
  143. package/dist/core/upgrade/satellite-upgrade.service.js +358 -0
  144. package/dist/core/upgrade/satellite-upgrade.service.js.map +1 -0
  145. package/dist/core/upgrade/satellite-upgrade.service.spec.d.ts +1 -0
  146. package/dist/core/upgrade/satellite-upgrade.service.spec.js +163 -0
  147. package/dist/core/upgrade/satellite-upgrade.service.spec.js.map +1 -0
  148. package/dist/core/validators/architecture-drift.service.d.ts +68 -0
  149. package/dist/core/validators/architecture-drift.service.js +266 -0
  150. package/dist/core/validators/architecture-drift.service.js.map +1 -0
  151. package/dist/core/validators/architecture-drift.service.spec.d.ts +1 -0
  152. package/dist/core/validators/architecture-drift.service.spec.js +315 -0
  153. package/dist/core/validators/architecture-drift.service.spec.js.map +1 -0
  154. package/dist/core/validators/deep-architecture-analyzer.d.ts +58 -0
  155. package/dist/core/validators/deep-architecture-analyzer.js +333 -0
  156. package/dist/core/validators/deep-architecture-analyzer.js.map +1 -0
  157. package/dist/core/validators/deep-architecture-analyzer.spec.d.ts +1 -0
  158. package/dist/core/validators/deep-architecture-analyzer.spec.js +216 -0
  159. package/dist/core/validators/deep-architecture-analyzer.spec.js.map +1 -0
  160. package/dist/core/validators/phase-gate-validator.service.d.ts +71 -0
  161. package/dist/core/validators/phase-gate-validator.service.js +273 -0
  162. package/dist/core/validators/phase-gate-validator.service.js.map +1 -0
  163. package/dist/core/validators/phase-gate-validator.service.spec.d.ts +1 -0
  164. package/dist/core/validators/phase-gate-validator.service.spec.js +326 -0
  165. package/dist/core/validators/phase-gate-validator.service.spec.js.map +1 -0
  166. package/dist/core/validators/ruleset-validator-architecture.spec.d.ts +1 -0
  167. package/dist/core/validators/ruleset-validator-architecture.spec.js +178 -0
  168. package/dist/core/validators/ruleset-validator-architecture.spec.js.map +1 -0
  169. package/dist/core/validators/ruleset-validator.service.d.ts +24 -0
  170. package/dist/core/validators/ruleset-validator.service.js +394 -0
  171. package/dist/core/validators/ruleset-validator.service.js.map +1 -1
  172. package/dist/core/validators/ruleset-validator.service.spec.js +351 -3
  173. package/dist/core/validators/ruleset-validator.service.spec.js.map +1 -1
  174. package/dist/domain/services/adr.service.spec.d.ts +1 -0
  175. package/dist/domain/services/adr.service.spec.js +141 -0
  176. package/dist/domain/services/adr.service.spec.js.map +1 -0
  177. package/dist/domain/services/agent-registry.service.spec.d.ts +1 -0
  178. package/dist/domain/services/agent-registry.service.spec.js +162 -0
  179. package/dist/domain/services/agent-registry.service.spec.js.map +1 -0
  180. package/dist/domain/services/index.d.ts +1 -0
  181. package/dist/domain/services/index.js +3 -1
  182. package/dist/domain/services/index.js.map +1 -1
  183. package/dist/domain/services/moscow-prioritization.service.d.ts +44 -0
  184. package/dist/domain/services/moscow-prioritization.service.js +213 -0
  185. package/dist/domain/services/moscow-prioritization.service.js.map +1 -0
  186. package/dist/domain/services/moscow-prioritization.service.spec.d.ts +1 -0
  187. package/dist/domain/services/moscow-prioritization.service.spec.js +285 -0
  188. package/dist/domain/services/moscow-prioritization.service.spec.js.map +1 -0
  189. package/dist/domain/services/standards.service.spec.d.ts +1 -0
  190. package/dist/domain/services/standards.service.spec.js +600 -0
  191. package/dist/domain/services/standards.service.spec.js.map +1 -0
  192. package/dist/domain/services/tool-usage-telemetry.service.spec.d.ts +1 -0
  193. package/dist/domain/services/tool-usage-telemetry.service.spec.js +180 -0
  194. package/dist/domain/services/tool-usage-telemetry.service.spec.js.map +1 -0
  195. package/dist/infrastructure/formatters/output-formatter.service.spec.d.ts +1 -0
  196. package/dist/infrastructure/formatters/output-formatter.service.spec.js +164 -0
  197. package/dist/infrastructure/formatters/output-formatter.service.spec.js.map +1 -0
  198. package/dist/main.js +0 -0
  199. package/package.json +2 -2
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const generate_domain_command_1 = require("./generate-domain.command");
4
+ describe('GenerateDomainCommand', () => {
5
+ let command;
6
+ let logSpy;
7
+ let errorSpy;
8
+ beforeEach(() => {
9
+ command = new generate_domain_command_1.GenerateDomainCommand();
10
+ logSpy = jest.spyOn(console, 'log').mockImplementation(() => { });
11
+ errorSpy = jest.spyOn(console, 'error').mockImplementation(() => { });
12
+ });
13
+ afterEach(() => {
14
+ logSpy.mockRestore();
15
+ errorSpy.mockRestore();
16
+ });
17
+ describe('run', () => {
18
+ it('should show error when target is missing', async () => {
19
+ await command.run([], { from: 'ddd-model.md' });
20
+ expect(errorSpy).toHaveBeenCalledWith(expect.stringContaining('Error'));
21
+ });
22
+ it('should show error when from is missing', async () => {
23
+ await command.run(['domain'], {});
24
+ expect(errorSpy).toHaveBeenCalledWith(expect.stringContaining('Error'));
25
+ });
26
+ it('should show error when both are missing', async () => {
27
+ await command.run([], {});
28
+ expect(errorSpy).toHaveBeenCalledWith(expect.stringContaining('Error'));
29
+ });
30
+ it('should scaffold domain when target and from are provided', async () => {
31
+ await command.run(['domain'], { from: 'ddd-model.md' });
32
+ expect(logSpy).toHaveBeenCalledWith(expect.stringContaining('Scaffolding domain'));
33
+ expect(logSpy).toHaveBeenCalledWith(expect.stringContaining('Parsing Markdown AST'));
34
+ expect(logSpy).toHaveBeenCalledWith(expect.stringContaining('Extracting Mermaid'));
35
+ expect(logSpy).toHaveBeenCalledWith(expect.stringContaining('Translating'));
36
+ expect(logSpy).toHaveBeenCalledWith(expect.stringContaining('Scaffolding Hexagonal'));
37
+ expect(logSpy).toHaveBeenCalledWith(expect.stringContaining('completed successfully'));
38
+ });
39
+ });
40
+ describe('parseFrom', () => {
41
+ it('should return the value', () => {
42
+ const result = command.parseFrom('path/to/file.md');
43
+ expect(result).toBe('path/to/file.md');
44
+ });
45
+ });
46
+ });
47
+ //# sourceMappingURL=generate-domain.command.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-domain.command.spec.js","sourceRoot":"","sources":["../../../src/commands/sdlc/generate-domain.command.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -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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"}
@@ -14,12 +14,14 @@ const nest_commander_1 = require("nest-commander");
14
14
  const chalk_1 = __importDefault(require("chalk"));
15
15
  const handoff_command_1 = require("./handoff.command");
16
16
  const generate_domain_command_1 = require("./generate-domain.command");
17
+ const gate_status_command_1 = require("./gate-status.command");
17
18
  let SdlcCommand = class SdlcCommand extends nest_commander_1.CommandRunner {
18
19
  async run(passedParam, options) {
19
20
  console.log(chalk_1.default.blueBright('\nšŸš€ Evolith SDLC CLI šŸš€\n'));
20
21
  console.log(chalk_1.default.white('Available subcommands:'));
21
22
  console.log(chalk_1.default.cyan(' handoff') + ' - Transition artifacts between phases');
22
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');
23
25
  console.log(chalk_1.default.gray('\nRun `evolith sdlc <subcommand> --help` for more information.\n'));
24
26
  }
25
27
  };
@@ -28,7 +30,7 @@ exports.SdlcCommand = SdlcCommand = __decorate([
28
30
  (0, nest_commander_1.Command)({
29
31
  name: 'sdlc',
30
32
  description: 'Orchestrates the generation of artifacts and transitions (Handoffs) between the lifecycle phases (Discovery, Design, Construction)',
31
- subCommands: [handoff_command_1.HandoffCommand, generate_domain_command_1.GenerateDomainCommand],
33
+ subCommands: [handoff_command_1.HandoffCommand, generate_domain_command_1.GenerateDomainCommand, gate_status_command_1.GateStatusCommand],
32
34
  })
33
35
  ], SdlcCommand);
34
36
  //# sourceMappingURL=sdlc.command.js.map
@@ -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;AAO3D,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,kEAAkE,CAAC,CAAC,CAAC;IAC9F,CAAC;CACF,CAAA;AAbY,kCAAW;sBAAX,WAAW;IALvB,IAAA,wBAAO,EAAC;QACP,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,oIAAoI;QACjJ,WAAW,EAAE,CAAC,gCAAc,EAAE,+CAAqB,CAAC;KACrD,CAAC;GACW,WAAW,CAavB"}
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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const sdlc_command_1 = require("./sdlc.command");
4
+ describe('SdlcCommand', () => {
5
+ let command;
6
+ let logSpy;
7
+ beforeEach(() => {
8
+ command = new sdlc_command_1.SdlcCommand();
9
+ logSpy = jest.spyOn(console, 'log').mockImplementation(() => { });
10
+ });
11
+ afterEach(() => {
12
+ logSpy.mockRestore();
13
+ });
14
+ describe('run', () => {
15
+ it('should display SDLC header', async () => {
16
+ await command.run([], {});
17
+ expect(logSpy).toHaveBeenCalledWith(expect.stringContaining('Evolith SDLC CLI'));
18
+ });
19
+ it('should list available subcommands', async () => {
20
+ await command.run([], {});
21
+ expect(logSpy).toHaveBeenCalledWith(expect.stringContaining('Available subcommands'));
22
+ });
23
+ it('should display handoff subcommand', async () => {
24
+ await command.run([], {});
25
+ expect(logSpy).toHaveBeenCalledWith(expect.stringContaining('handoff'));
26
+ });
27
+ it('should display generate subcommand', async () => {
28
+ await command.run([], {});
29
+ expect(logSpy).toHaveBeenCalledWith(expect.stringContaining('generate'));
30
+ });
31
+ it('should display gate-status subcommand', async () => {
32
+ await command.run([], {});
33
+ expect(logSpy).toHaveBeenCalledWith(expect.stringContaining('gate-status'));
34
+ });
35
+ it('should display help hint', async () => {
36
+ await command.run([], {});
37
+ expect(logSpy).toHaveBeenCalledWith(expect.stringContaining('evolith sdlc <subcommand> --help'));
38
+ });
39
+ it('should handle passed parameters', async () => {
40
+ await command.run(['some-param'], {});
41
+ expect(logSpy).toHaveBeenCalledWith(expect.stringContaining('Evolith SDLC CLI'));
42
+ });
43
+ });
44
+ });
45
+ //# 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":";;AAAA,iDAA6C;AAE7C,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,IAAI,OAAoB,CAAC;IACzB,IAAI,MAAwB,CAAC;IAE7B,UAAU,CAAC,GAAG,EAAE;QACd,OAAO,GAAG,IAAI,0BAAW,EAAE,CAAC;QAC5B,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,CAAC,WAAW,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE;QACnB,EAAE,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;YAC1C,MAAM,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YAE1B,MAAM,CAAC,MAAM,CAAC,CAAC,oBAAoB,CACjC,MAAM,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAC5C,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;YACjD,MAAM,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YAE1B,MAAM,CAAC,MAAM,CAAC,CAAC,oBAAoB,CACjC,MAAM,CAAC,gBAAgB,CAAC,uBAAuB,CAAC,CACjD,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;YACjD,MAAM,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YAE1B,MAAM,CAAC,MAAM,CAAC,CAAC,oBAAoB,CACjC,MAAM,CAAC,gBAAgB,CAAC,SAAS,CAAC,CACnC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;YAClD,MAAM,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YAE1B,MAAM,CAAC,MAAM,CAAC,CAAC,oBAAoB,CACjC,MAAM,CAAC,gBAAgB,CAAC,UAAU,CAAC,CACpC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;YACrD,MAAM,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YAE1B,MAAM,CAAC,MAAM,CAAC,CAAC,oBAAoB,CACjC,MAAM,CAAC,gBAAgB,CAAC,aAAa,CAAC,CACvC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE;YACxC,MAAM,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YAE1B,MAAM,CAAC,MAAM,CAAC,CAAC,oBAAoB,CACjC,MAAM,CAAC,gBAAgB,CAAC,kCAAkC,CAAC,CAC5D,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;YAC/C,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC;YAEtC,MAAM,CAAC,MAAM,CAAC,CAAC,oBAAoB,CACjC,MAAM,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAC5C,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}