@evolith/smart-cli 0.0.2-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 (135) hide show
  1. package/dist/app.module.js +0 -2
  2. package/dist/app.module.js.map +1 -1
  3. package/dist/app.module.spec.d.ts +1 -0
  4. package/dist/app.module.spec.js +305 -0
  5. package/dist/app.module.spec.js.map +1 -0
  6. package/dist/commands/adr/adr.command.spec.d.ts +1 -0
  7. package/dist/commands/adr/adr.command.spec.js +409 -0
  8. package/dist/commands/adr/adr.command.spec.js.map +1 -0
  9. package/dist/commands/architecture/scaffold.command.spec.d.ts +1 -0
  10. package/dist/commands/architecture/scaffold.command.spec.js +207 -0
  11. package/dist/commands/architecture/scaffold.command.spec.js.map +1 -0
  12. package/dist/commands/completion/completion.command.spec.d.ts +1 -0
  13. package/dist/commands/completion/completion.command.spec.js +240 -0
  14. package/dist/commands/completion/completion.command.spec.js.map +1 -0
  15. package/dist/commands/docs/docs.command.spec.d.ts +1 -0
  16. package/dist/commands/docs/docs.command.spec.js +87 -0
  17. package/dist/commands/docs/docs.command.spec.js.map +1 -0
  18. package/dist/commands/drift/drift.command.spec.d.ts +1 -0
  19. package/dist/commands/drift/drift.command.spec.js +327 -0
  20. package/dist/commands/drift/drift.command.spec.js.map +1 -0
  21. package/dist/commands/history/history.command.spec.d.ts +1 -0
  22. package/dist/commands/history/history.command.spec.js +392 -0
  23. package/dist/commands/history/history.command.spec.js.map +1 -0
  24. package/dist/commands/init/agents.command.spec.js +398 -0
  25. package/dist/commands/init/agents.command.spec.js.map +1 -1
  26. package/dist/commands/init/init.command.spec.d.ts +1 -0
  27. package/dist/commands/init/init.command.spec.js +272 -0
  28. package/dist/commands/init/init.command.spec.js.map +1 -0
  29. package/dist/commands/init/upgrade.command.spec.d.ts +1 -0
  30. package/dist/commands/init/upgrade.command.spec.js +378 -0
  31. package/dist/commands/init/upgrade.command.spec.js.map +1 -0
  32. package/dist/commands/mcp/mcp-serve.command.spec.d.ts +1 -0
  33. package/dist/commands/mcp/mcp-serve.command.spec.js +58 -0
  34. package/dist/commands/mcp/mcp-serve.command.spec.js.map +1 -0
  35. package/dist/commands/sdlc/generate-domain.command.spec.d.ts +1 -0
  36. package/dist/commands/sdlc/generate-domain.command.spec.js +47 -0
  37. package/dist/commands/sdlc/generate-domain.command.spec.js.map +1 -0
  38. package/dist/commands/sdlc/handoff.command.spec.d.ts +1 -0
  39. package/dist/commands/sdlc/handoff.command.spec.js +395 -0
  40. package/dist/commands/sdlc/handoff.command.spec.js.map +1 -0
  41. package/dist/commands/sdlc/sdlc.command.spec.d.ts +1 -0
  42. package/dist/commands/sdlc/sdlc.command.spec.js +45 -0
  43. package/dist/commands/sdlc/sdlc.command.spec.js.map +1 -0
  44. package/dist/commands/standards/standards.command.spec.d.ts +1 -0
  45. package/dist/commands/standards/standards.command.spec.js +311 -0
  46. package/dist/commands/standards/standards.command.spec.js.map +1 -0
  47. package/dist/commands/validate/validate.command.spec.d.ts +1 -0
  48. package/dist/commands/validate/validate.command.spec.js +368 -0
  49. package/dist/commands/validate/validate.command.spec.js.map +1 -0
  50. package/dist/core/abstractions/providers/logger.provider.spec.d.ts +1 -0
  51. package/dist/core/abstractions/providers/logger.provider.spec.js +212 -0
  52. package/dist/core/abstractions/providers/logger.provider.spec.js.map +1 -0
  53. package/dist/core/di/container.spec.js +164 -0
  54. package/dist/core/di/container.spec.js.map +1 -1
  55. package/dist/core/mcp/metrics.service.spec.d.ts +1 -0
  56. package/dist/core/mcp/metrics.service.spec.js +159 -0
  57. package/dist/core/mcp/metrics.service.spec.js.map +1 -0
  58. package/dist/core/mcp/prompts/index.js +36 -0
  59. package/dist/core/mcp/prompts/index.js.map +1 -1
  60. package/dist/core/mcp/prompts/index.spec.d.ts +1 -0
  61. package/dist/core/mcp/prompts/index.spec.js +150 -0
  62. package/dist/core/mcp/prompts/index.spec.js.map +1 -0
  63. package/dist/core/mcp/resources/index.js +16 -0
  64. package/dist/core/mcp/resources/index.js.map +1 -1
  65. package/dist/core/mcp/resources/index.spec.d.ts +1 -0
  66. package/dist/core/mcp/resources/index.spec.js +212 -0
  67. package/dist/core/mcp/resources/index.spec.js.map +1 -0
  68. package/dist/core/mcp/server.d.ts +2 -1
  69. package/dist/core/mcp/server.js +256 -5
  70. package/dist/core/mcp/server.js.map +1 -1
  71. package/dist/core/mcp/server.spec.d.ts +1 -0
  72. package/dist/core/mcp/server.spec.js +563 -0
  73. package/dist/core/mcp/server.spec.js.map +1 -0
  74. package/dist/core/mcp/tools/agent.spec.d.ts +1 -0
  75. package/dist/core/mcp/tools/agent.spec.js +171 -0
  76. package/dist/core/mcp/tools/agent.spec.js.map +1 -0
  77. package/dist/core/mcp/tools/architecture.d.ts +2 -0
  78. package/dist/core/mcp/tools/architecture.js +68 -0
  79. package/dist/core/mcp/tools/architecture.js.map +1 -1
  80. package/dist/core/mcp/tools/architecture.spec.d.ts +1 -0
  81. package/dist/core/mcp/tools/architecture.spec.js +145 -0
  82. package/dist/core/mcp/tools/architecture.spec.js.map +1 -0
  83. package/dist/core/mcp/tools/moscow.d.ts +30 -0
  84. package/dist/core/mcp/tools/moscow.js +113 -0
  85. package/dist/core/mcp/tools/moscow.js.map +1 -0
  86. package/dist/core/mcp/tools/moscow.spec.d.ts +1 -0
  87. package/dist/core/mcp/tools/moscow.spec.js +209 -0
  88. package/dist/core/mcp/tools/moscow.spec.js.map +1 -0
  89. package/dist/core/mcp/tools/sdlc.js +2 -1
  90. package/dist/core/mcp/tools/sdlc.js.map +1 -1
  91. package/dist/core/mcp/tools/sdlc.spec.d.ts +1 -0
  92. package/dist/core/mcp/tools/sdlc.spec.js +170 -0
  93. package/dist/core/mcp/tools/sdlc.spec.js.map +1 -0
  94. package/dist/core/mcp/tools/validate.spec.d.ts +1 -0
  95. package/dist/core/mcp/tools/validate.spec.js +130 -0
  96. package/dist/core/mcp/tools/validate.spec.js.map +1 -0
  97. package/dist/core/mcp/watcher.service.spec.js +109 -8
  98. package/dist/core/mcp/watcher.service.spec.js.map +1 -1
  99. package/dist/core/observability/error-reporter.spec.d.ts +1 -0
  100. package/dist/core/observability/error-reporter.spec.js +291 -0
  101. package/dist/core/observability/error-reporter.spec.js.map +1 -0
  102. package/dist/core/observability/structured-logger.spec.d.ts +1 -0
  103. package/dist/core/observability/structured-logger.spec.js +197 -0
  104. package/dist/core/observability/structured-logger.spec.js.map +1 -0
  105. package/dist/core/observability/timing.spec.d.ts +1 -0
  106. package/dist/core/observability/timing.spec.js +216 -0
  107. package/dist/core/observability/timing.spec.js.map +1 -0
  108. package/dist/core/upgrade/satellite-upgrade.service.spec.js +121 -101
  109. package/dist/core/upgrade/satellite-upgrade.service.spec.js.map +1 -1
  110. package/dist/core/validators/deep-architecture-analyzer.d.ts +58 -0
  111. package/dist/core/validators/deep-architecture-analyzer.js +333 -0
  112. package/dist/core/validators/deep-architecture-analyzer.js.map +1 -0
  113. package/dist/core/validators/deep-architecture-analyzer.spec.d.ts +1 -0
  114. package/dist/core/validators/deep-architecture-analyzer.spec.js +216 -0
  115. package/dist/core/validators/deep-architecture-analyzer.spec.js.map +1 -0
  116. package/dist/core/validators/phase-gate-validator.service.js +3 -1
  117. package/dist/core/validators/phase-gate-validator.service.js.map +1 -1
  118. package/dist/core/validators/ruleset-validator-architecture.spec.js +2 -2
  119. package/dist/core/validators/ruleset-validator-architecture.spec.js.map +1 -1
  120. package/dist/core/validators/ruleset-validator.service.js +7 -7
  121. package/dist/core/validators/ruleset-validator.service.js.map +1 -1
  122. package/dist/core/validators/ruleset-validator.service.spec.js +347 -0
  123. package/dist/core/validators/ruleset-validator.service.spec.js.map +1 -1
  124. package/dist/domain/services/index.d.ts +1 -0
  125. package/dist/domain/services/index.js +3 -1
  126. package/dist/domain/services/index.js.map +1 -1
  127. package/dist/domain/services/moscow-prioritization.service.d.ts +44 -0
  128. package/dist/domain/services/moscow-prioritization.service.js +213 -0
  129. package/dist/domain/services/moscow-prioritization.service.js.map +1 -0
  130. package/dist/domain/services/moscow-prioritization.service.spec.d.ts +1 -0
  131. package/dist/domain/services/moscow-prioritization.service.spec.js +285 -0
  132. package/dist/domain/services/moscow-prioritization.service.spec.js.map +1 -0
  133. package/dist/domain/services/standards.service.spec.js +461 -1
  134. package/dist/domain/services/standards.service.spec.js.map +1 -1
  135. package/package.json +2 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"moscow.js","sourceRoot":"","sources":["../../../../src/core/mcp/tools/moscow.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,209 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const moscow_1 = require("./moscow");
4
+ jest.mock('./tool-utils', () => ({
5
+ getFileSystem: jest.fn(),
6
+ getContainer: jest.fn(),
7
+ }));
8
+ const tool_utils_1 = require("./tool-utils");
9
+ const mockFileSystem = {
10
+ exists: jest.fn(),
11
+ readFile: jest.fn(),
12
+ readdirNames: jest.fn(),
13
+ stat: jest.fn(),
14
+ ensureDir: jest.fn(),
15
+ writeJson: jest.fn(),
16
+ };
17
+ jest.mock('../../../domain/services/moscow-prioritization.service', () => ({
18
+ MoscowPrioritizationService: jest.fn().mockImplementation(() => ({
19
+ createAnalysis: jest.fn(),
20
+ loadAnalysis: jest.fn(),
21
+ updateItem: jest.fn(),
22
+ removeItem: jest.fn(),
23
+ listAnalyses: jest.fn(),
24
+ validateAnalysis: jest.fn(),
25
+ generateReport: jest.fn(),
26
+ })),
27
+ }));
28
+ const moscow_prioritization_service_1 = require("../../../domain/services/moscow-prioritization.service");
29
+ describe('MCP Tools - moscow', () => {
30
+ let mockService;
31
+ beforeEach(() => {
32
+ jest.clearAllMocks();
33
+ tool_utils_1.getFileSystem.mockReturnValue(mockFileSystem);
34
+ mockService = new moscow_prioritization_service_1.MoscowPrioritizationService();
35
+ });
36
+ describe('evolith-moscow-create', () => {
37
+ it('should return error when path is missing', async () => {
38
+ const result = await (0, moscow_1.handleMoscowTools)('evolith-moscow-create', {});
39
+ expect(result).toHaveProperty('error', true);
40
+ expect(result).toHaveProperty('message', 'path is required');
41
+ });
42
+ it('should return error when items are missing', async () => {
43
+ const result = await (0, moscow_1.handleMoscowTools)('evolith-moscow-create', { path: '/test/repo' });
44
+ expect(result).toHaveProperty('error', true);
45
+ expect(result).toHaveProperty('message', 'items array is required');
46
+ });
47
+ it('should create analysis with items', async () => {
48
+ const items = [
49
+ { description: 'Test item', priority: 'MUST', category: 'Test', rationale: 'Testing', phase: 'phase-0' },
50
+ ];
51
+ mockService.createAnalysis.mockResolvedValue({
52
+ repository: '/test/repo',
53
+ phase: 'phase-0',
54
+ items: [],
55
+ summary: { must: 0, should: 0, could: 0, wont: 0, total: 0 },
56
+ createdAt: '2026-01-01',
57
+ updatedAt: '2026-01-01',
58
+ });
59
+ const result = await (0, moscow_1.handleMoscowTools)('evolith-moscow-create', {
60
+ path: '/test/repo',
61
+ items,
62
+ }, mockService);
63
+ expect(mockService.createAnalysis).toHaveBeenCalledWith('/test/repo', 'phase-0', items);
64
+ expect(result).toHaveProperty('success', true);
65
+ });
66
+ });
67
+ describe('evolith-moscow-load', () => {
68
+ it('should return error when path is missing', async () => {
69
+ const result = await (0, moscow_1.handleMoscowTools)('evolith-moscow-load', {});
70
+ expect(result).toHaveProperty('error', true);
71
+ expect(result).toHaveProperty('message', 'path is required');
72
+ });
73
+ it('should return error when analysis not found', async () => {
74
+ mockService.loadAnalysis.mockResolvedValue(null);
75
+ const result = await (0, moscow_1.handleMoscowTools)('evolith-moscow-load', { path: '/test/repo' }, mockService);
76
+ expect(result).toHaveProperty('error', true);
77
+ expect(result).toHaveProperty('message');
78
+ });
79
+ it('should load analysis when found', async () => {
80
+ const mockAnalysis = {
81
+ repository: '/test/repo',
82
+ phase: 'phase-0',
83
+ items: [],
84
+ summary: { must: 0, should: 0, could: 0, wont: 0, total: 0 },
85
+ createdAt: '2026-01-01',
86
+ updatedAt: '2026-01-01',
87
+ };
88
+ mockService.loadAnalysis.mockResolvedValue(mockAnalysis);
89
+ const result = await (0, moscow_1.handleMoscowTools)('evolith-moscow-load', { path: '/test/repo' }, mockService);
90
+ expect(result).toEqual(mockAnalysis);
91
+ });
92
+ });
93
+ describe('evolith-moscow-update', () => {
94
+ it('should return error when itemId is missing', async () => {
95
+ const result = await (0, moscow_1.handleMoscowTools)('evolith-moscow-update', { path: '/test/repo' });
96
+ expect(result).toHaveProperty('error', true);
97
+ expect(result).toHaveProperty('message', 'itemId is required');
98
+ });
99
+ it('should return error when item not found', async () => {
100
+ mockService.updateItem.mockResolvedValue(null);
101
+ const result = await (0, moscow_1.handleMoscowTools)('evolith-moscow-update', {
102
+ path: '/test/repo',
103
+ itemId: 'P-001',
104
+ updates: { priority: 'SHOULD' },
105
+ }, mockService);
106
+ expect(result).toHaveProperty('error', true);
107
+ });
108
+ it('should update item when found', async () => {
109
+ mockService.updateItem.mockResolvedValue({
110
+ repository: '/test/repo',
111
+ phase: 'phase-0',
112
+ items: [],
113
+ summary: { must: 0, should: 0, could: 0, wont: 0, total: 0 },
114
+ createdAt: '2026-01-01',
115
+ updatedAt: '2026-01-01',
116
+ });
117
+ const result = await (0, moscow_1.handleMoscowTools)('evolith-moscow-update', {
118
+ path: '/test/repo',
119
+ itemId: 'P-001',
120
+ updates: { priority: 'SHOULD' },
121
+ }, mockService);
122
+ expect(result).toHaveProperty('success', true);
123
+ });
124
+ });
125
+ describe('evolith-moscow-remove', () => {
126
+ it('should return error when itemId is missing', async () => {
127
+ const result = await (0, moscow_1.handleMoscowTools)('evolith-moscow-remove', { path: '/test/repo' });
128
+ expect(result).toHaveProperty('error', true);
129
+ expect(result).toHaveProperty('message', 'itemId is required');
130
+ });
131
+ it('should remove item when found', async () => {
132
+ mockService.removeItem.mockResolvedValue({
133
+ repository: '/test/repo',
134
+ phase: 'phase-0',
135
+ items: [],
136
+ summary: { must: 0, should: 0, could: 0, wont: 0, total: 0 },
137
+ createdAt: '2026-01-01',
138
+ updatedAt: '2026-01-01',
139
+ });
140
+ const result = await (0, moscow_1.handleMoscowTools)('evolith-moscow-remove', {
141
+ path: '/test/repo',
142
+ itemId: 'P-001',
143
+ }, mockService);
144
+ expect(result).toHaveProperty('success', true);
145
+ });
146
+ });
147
+ describe('evolith-moscow-list', () => {
148
+ it('should return error when path is missing', async () => {
149
+ const result = await (0, moscow_1.handleMoscowTools)('evolith-moscow-list', {});
150
+ expect(result).toHaveProperty('error', true);
151
+ expect(result).toHaveProperty('message', 'path is required');
152
+ });
153
+ it('should list analyses', async () => {
154
+ mockService.listAnalyses.mockResolvedValue([
155
+ { phase: 'phase-0', path: '/test/.evolith/moscow/phase-0.json', updatedAt: '2026-01-01' },
156
+ ]);
157
+ const result = await (0, moscow_1.handleMoscowTools)('evolith-moscow-list', { path: '/test/repo' }, mockService);
158
+ expect(result).toHaveProperty('analyses');
159
+ expect(result).toHaveProperty('count', 1);
160
+ });
161
+ });
162
+ describe('evolith-moscow-validate', () => {
163
+ it('should return error when path is missing', async () => {
164
+ const result = await (0, moscow_1.handleMoscowTools)('evolith-moscow-validate', {});
165
+ expect(result).toHaveProperty('error', true);
166
+ expect(result).toHaveProperty('message', 'path is required');
167
+ });
168
+ it('should validate analysis', async () => {
169
+ mockService.loadAnalysis.mockResolvedValue({
170
+ repository: '/test/repo',
171
+ phase: 'phase-0',
172
+ items: [],
173
+ summary: { must: 0, should: 0, could: 0, wont: 0, total: 0 },
174
+ createdAt: '2026-01-01',
175
+ updatedAt: '2026-01-01',
176
+ });
177
+ mockService.validateAnalysis.mockReturnValue({ valid: true, issues: [] });
178
+ const result = await (0, moscow_1.handleMoscowTools)('evolith-moscow-validate', { path: '/test/repo' }, mockService);
179
+ expect(result).toHaveProperty('valid', true);
180
+ });
181
+ });
182
+ describe('evolith-moscow-report', () => {
183
+ it('should return error when path is missing', async () => {
184
+ const result = await (0, moscow_1.handleMoscowTools)('evolith-moscow-report', {});
185
+ expect(result).toHaveProperty('error', true);
186
+ expect(result).toHaveProperty('message', 'path is required');
187
+ });
188
+ it('should generate report', async () => {
189
+ mockService.loadAnalysis.mockResolvedValue({
190
+ repository: '/test/repo',
191
+ phase: 'phase-0',
192
+ items: [],
193
+ summary: { must: 0, should: 0, could: 0, wont: 0, total: 0 },
194
+ createdAt: '2026-01-01',
195
+ updatedAt: '2026-01-01',
196
+ });
197
+ mockService.generateReport.mockReturnValue('# Report');
198
+ const result = await (0, moscow_1.handleMoscowTools)('evolith-moscow-report', { path: '/test/repo' }, mockService);
199
+ expect(result).toHaveProperty('report', '# Report');
200
+ });
201
+ });
202
+ describe('unknown tool', () => {
203
+ it('should throw error for unknown MoSCoW tool', async () => {
204
+ await expect((0, moscow_1.handleMoscowTools)('evolith-moscow-unknown', { path: '/test/repo' }))
205
+ .rejects.toThrow('Unknown MoSCoW tool');
206
+ });
207
+ });
208
+ });
209
+ //# sourceMappingURL=moscow.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"moscow.spec.js","sourceRoot":"","sources":["../../../../src/core/mcp/tools/moscow.spec.ts"],"names":[],"mappings":"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"}
@@ -40,10 +40,11 @@ const PHASES = ['phase-0', 'phase-1', 'phase-2', 'phase-3', 'phase-4'];
40
40
  const PHASE_REQUIREMENTS = [
41
41
  {
42
42
  phase: 'phase-0',
43
- artifacts: ['evolith.yaml', 'README.md'],
43
+ artifacts: ['evolith.yaml', 'README.md', '.evolith/moscow/phase-0.json'],
44
44
  checks: [
45
45
  { id: 'PG0-01', description: 'evolith.yaml exists and is valid', required: true },
46
46
  { id: 'PG0-02', description: 'Core ref version pinned', required: true },
47
+ { id: 'PG0-03', description: 'MoSCoW prioritization matrix created for discovery phase', required: true },
47
48
  ],
48
49
  },
49
50
  {
@@ -1 +1 @@
1
- {"version":3,"file":"sdlc.js","sourceRoot":"","sources":["../../../../src/core/mcp/tools/sdlc.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sdlc.js","sourceRoot":"","sources":["../../../../src/core/mcp/tools/sdlc.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,170 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const sdlc_1 = require("./sdlc");
4
+ jest.mock('./tool-utils', () => ({
5
+ getFileSystem: jest.fn(),
6
+ getContainer: jest.fn(),
7
+ }));
8
+ const tool_utils_1 = require("./tool-utils");
9
+ const mockFileSystem = {
10
+ exists: jest.fn(),
11
+ readFile: jest.fn(),
12
+ readJson: jest.fn(),
13
+ existsSync: jest.fn(),
14
+ ensureDir: jest.fn(),
15
+ writeJson: jest.fn(),
16
+ };
17
+ const mockConfigParser = {
18
+ parse: jest.fn(),
19
+ };
20
+ describe('MCP Tools - sdlc', () => {
21
+ beforeEach(() => {
22
+ jest.clearAllMocks();
23
+ tool_utils_1.getFileSystem.mockReturnValue(mockFileSystem);
24
+ tool_utils_1.getContainer.mockReturnValue({
25
+ createConfigParser: jest.fn().mockReturnValue(mockConfigParser),
26
+ });
27
+ });
28
+ describe('evolith-sdlc-status', () => {
29
+ it('should return error when path is missing', async () => {
30
+ const result = await (0, sdlc_1.handleSdlcTools)('evolith-sdlc-status', {});
31
+ expect(result).toHaveProperty('error', true);
32
+ expect(result).toHaveProperty('message', 'path is required');
33
+ });
34
+ it('should return phase-0 when evolith.yaml not found', async () => {
35
+ mockFileSystem.exists.mockResolvedValue(false);
36
+ const result = await (0, sdlc_1.handleSdlcTools)('evolith-sdlc-status', { path: '/test/repo' });
37
+ expect(result).toHaveProperty('currentPhase', 'phase-0');
38
+ });
39
+ it('should return current phase from evolith.yaml', async () => {
40
+ mockFileSystem.exists.mockResolvedValue(true);
41
+ mockFileSystem.readFile.mockResolvedValue('product:\n phase: phase-2');
42
+ mockConfigParser.parse.mockReturnValue({
43
+ product: { phase: 'phase-2' },
44
+ });
45
+ mockFileSystem.existsSync.mockReturnValue(false);
46
+ const result = await (0, sdlc_1.handleSdlcTools)('evolith-sdlc-status', { path: '/test/repo' });
47
+ expect(result.currentPhase).toBe('phase-2');
48
+ });
49
+ it('should include phase status in status', async () => {
50
+ mockFileSystem.exists.mockResolvedValue(true);
51
+ mockFileSystem.readFile.mockResolvedValue('product:\n phase: phase-0');
52
+ mockConfigParser.parse.mockReturnValue({
53
+ product: { phase: 'phase-0' },
54
+ });
55
+ mockFileSystem.existsSync.mockReturnValue(false);
56
+ const result = await (0, sdlc_1.handleSdlcTools)('evolith-sdlc-status', { path: '/test/repo' });
57
+ expect(result).toHaveProperty('phaseStatus');
58
+ expect(result.phaseStatus.length).toBe(5);
59
+ });
60
+ it('should include timestamp', async () => {
61
+ mockFileSystem.exists.mockResolvedValue(false);
62
+ const result = await (0, sdlc_1.handleSdlcTools)('evolith-sdlc-status', { path: '/test/repo' });
63
+ expect(result).toHaveProperty('timestamp');
64
+ });
65
+ });
66
+ describe('evolith-sdlc-handoff', () => {
67
+ it('should return error when path is missing', async () => {
68
+ const result = await (0, sdlc_1.handleSdlcTools)('evolith-sdlc-handoff', { fromPhase: 'phase-0', toPhase: 'phase-1' });
69
+ expect(result).toHaveProperty('error', true);
70
+ expect(result).toHaveProperty('message', 'path is required');
71
+ });
72
+ it('should throw error when fromPhase is missing', async () => {
73
+ await expect((0, sdlc_1.handleSdlcTools)('evolith-sdlc-handoff', { path: '/test/repo', toPhase: 'phase-1' }))
74
+ .rejects.toThrow('Invalid phase');
75
+ });
76
+ it('should throw error when toPhase is missing', async () => {
77
+ await expect((0, sdlc_1.handleSdlcTools)('evolith-sdlc-handoff', { path: '/test/repo', fromPhase: 'phase-0' }))
78
+ .rejects.toThrow('Invalid phase');
79
+ });
80
+ it('should throw error for invalid phase transition', async () => {
81
+ await expect((0, sdlc_1.handleSdlcTools)('evolith-sdlc-handoff', {
82
+ path: '/test/repo',
83
+ fromPhase: 'phase-2',
84
+ toPhase: 'phase-0',
85
+ }))
86
+ .rejects.toThrow('Handoff must be to the next consecutive phase');
87
+ });
88
+ it('should throw error for same phase transition', async () => {
89
+ await expect((0, sdlc_1.handleSdlcTools)('evolith-sdlc-handoff', {
90
+ path: '/test/repo',
91
+ fromPhase: 'phase-1',
92
+ toPhase: 'phase-1',
93
+ }))
94
+ .rejects.toThrow('Handoff must be to the next consecutive phase');
95
+ });
96
+ it('should generate handoff manifest for valid transition', async () => {
97
+ mockFileSystem.exists.mockResolvedValue(true);
98
+ mockFileSystem.readFile.mockResolvedValue('product:\n phase: phase-1');
99
+ mockConfigParser.parse.mockReturnValue({ product: { phase: 'phase-1' } });
100
+ mockFileSystem.existsSync.mockReturnValue(true);
101
+ const result = await (0, sdlc_1.handleSdlcTools)('evolith-sdlc-handoff', {
102
+ path: '/test/repo',
103
+ fromPhase: 'phase-0',
104
+ toPhase: 'phase-1',
105
+ });
106
+ expect(result.handoff.fromPhase).toBe('phase-0');
107
+ expect(result.handoff.toPhase).toBe('phase-1');
108
+ expect(result).toHaveProperty('artifacts');
109
+ });
110
+ it('should include requirements checklist in manifest', async () => {
111
+ mockFileSystem.exists.mockResolvedValue(true);
112
+ mockFileSystem.readFile.mockResolvedValue('product:\n phase: phase-1');
113
+ mockConfigParser.parse.mockReturnValue({ product: { phase: 'phase-1' } });
114
+ mockFileSystem.existsSync.mockReturnValue(true);
115
+ const result = await (0, sdlc_1.handleSdlcTools)('evolith-sdlc-handoff', {
116
+ path: '/test/repo',
117
+ fromPhase: 'phase-0',
118
+ toPhase: 'phase-1',
119
+ });
120
+ expect(result.artifacts).toBeDefined();
121
+ expect(Array.isArray(result.artifacts)).toBe(true);
122
+ });
123
+ it('should handle phase-1 to phase-2 transition', async () => {
124
+ mockFileSystem.exists.mockResolvedValue(true);
125
+ mockFileSystem.readFile.mockResolvedValue('product:\n phase: phase-2');
126
+ mockConfigParser.parse.mockReturnValue({ product: { phase: 'phase-2' } });
127
+ mockFileSystem.existsSync.mockReturnValue(true);
128
+ const result = await (0, sdlc_1.handleSdlcTools)('evolith-sdlc-handoff', {
129
+ path: '/test/repo',
130
+ fromPhase: 'phase-1',
131
+ toPhase: 'phase-2',
132
+ });
133
+ expect(result.handoff.fromPhase).toBe('phase-1');
134
+ expect(result.handoff.toPhase).toBe('phase-2');
135
+ });
136
+ it('should handle phase-2 to phase-3 transition', async () => {
137
+ mockFileSystem.exists.mockResolvedValue(true);
138
+ mockFileSystem.readFile.mockResolvedValue('product:\n phase: phase-3');
139
+ mockConfigParser.parse.mockReturnValue({ product: { phase: 'phase-3' } });
140
+ mockFileSystem.existsSync.mockReturnValue(true);
141
+ const result = await (0, sdlc_1.handleSdlcTools)('evolith-sdlc-handoff', {
142
+ path: '/test/repo',
143
+ fromPhase: 'phase-2',
144
+ toPhase: 'phase-3',
145
+ });
146
+ expect(result.handoff.fromPhase).toBe('phase-2');
147
+ expect(result.handoff.toPhase).toBe('phase-3');
148
+ });
149
+ it('should handle phase-3 to phase-4 transition', async () => {
150
+ mockFileSystem.exists.mockResolvedValue(true);
151
+ mockFileSystem.readFile.mockResolvedValue('product:\n phase: phase-4');
152
+ mockConfigParser.parse.mockReturnValue({ product: { phase: 'phase-4' } });
153
+ mockFileSystem.existsSync.mockReturnValue(true);
154
+ const result = await (0, sdlc_1.handleSdlcTools)('evolith-sdlc-handoff', {
155
+ path: '/test/repo',
156
+ fromPhase: 'phase-3',
157
+ toPhase: 'phase-4',
158
+ });
159
+ expect(result.handoff.fromPhase).toBe('phase-3');
160
+ expect(result.handoff.toPhase).toBe('phase-4');
161
+ });
162
+ });
163
+ describe('unknown tool', () => {
164
+ it('should throw error for unknown SDLC tool', async () => {
165
+ await expect((0, sdlc_1.handleSdlcTools)('evolith-sdlc-unknown', { path: '/test/repo' }))
166
+ .rejects.toThrow('Unknown SDLC tool');
167
+ });
168
+ });
169
+ });
170
+ //# sourceMappingURL=sdlc.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sdlc.spec.js","sourceRoot":"","sources":["../../../../src/core/mcp/tools/sdlc.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,130 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const validate_1 = require("./validate");
4
+ jest.mock('../../validators/ruleset-validator.service', () => ({
5
+ RulesetValidatorService: jest.fn().mockImplementation(() => ({
6
+ validate: jest.fn(),
7
+ loadRulesetById: jest.fn(),
8
+ })),
9
+ }));
10
+ const ruleset_validator_service_1 = require("../../validators/ruleset-validator.service");
11
+ describe('MCP Tools - validate', () => {
12
+ let mockValidator;
13
+ beforeEach(() => {
14
+ jest.clearAllMocks();
15
+ mockValidator = new ruleset_validator_service_1.RulesetValidatorService();
16
+ });
17
+ describe('handleValidateTool', () => {
18
+ it('should return error when path is missing', async () => {
19
+ const result = await (0, validate_1.handleValidateTool)({}, mockValidator);
20
+ expect(result).toHaveProperty('error', true);
21
+ expect(result).toHaveProperty('message', 'path is required');
22
+ });
23
+ it('should validate repository when path provided', async () => {
24
+ mockValidator.validate.mockResolvedValue({
25
+ status: 'passed',
26
+ rulesChecked: 10,
27
+ issues: [],
28
+ });
29
+ const result = await (0, validate_1.handleValidateTool)({ path: '/test/repo' }, mockValidator);
30
+ expect(mockValidator.validate).toHaveBeenCalledWith('/test/repo', undefined);
31
+ expect(result).toHaveProperty('status', 'passed');
32
+ });
33
+ it('should pass corePath to validator', async () => {
34
+ mockValidator.validate.mockResolvedValue({
35
+ status: 'passed',
36
+ rulesChecked: 5,
37
+ issues: [],
38
+ });
39
+ await (0, validate_1.handleValidateTool)({ path: '/test/repo', corePath: '/core' }, mockValidator);
40
+ expect(mockValidator.validate).toHaveBeenCalledWith('/test/repo', '/core');
41
+ });
42
+ it('should return summary format when requested', async () => {
43
+ mockValidator.validate.mockResolvedValue({
44
+ status: 'passed',
45
+ rulesChecked: 10,
46
+ issues: [],
47
+ });
48
+ const result = await (0, validate_1.handleValidateTool)({ path: '/test/repo', format: 'summary' }, mockValidator);
49
+ expect(typeof result).toBe('string');
50
+ expect(result).toContain('PASSED');
51
+ });
52
+ it('should return table format when requested', async () => {
53
+ mockValidator.validate.mockResolvedValue({
54
+ status: 'failed',
55
+ rulesChecked: 10,
56
+ issues: [
57
+ { ruleId: 'GOV-01', severity: 'MUST', title: 'Missing evolith.yaml', blocking: true, category: 'Governance' },
58
+ ],
59
+ });
60
+ const result = await (0, validate_1.handleValidateTool)({ path: '/test/repo', format: 'table' }, mockValidator);
61
+ expect(typeof result).toBe('string');
62
+ expect(result).toContain('| Rule |');
63
+ expect(result).toContain('GOV-01');
64
+ });
65
+ it('should return JSON format by default', async () => {
66
+ mockValidator.validate.mockResolvedValue({
67
+ status: 'passed',
68
+ rulesChecked: 10,
69
+ issues: [],
70
+ });
71
+ const result = await (0, validate_1.handleValidateTool)({ path: '/test/repo' }, mockValidator);
72
+ expect(typeof result).not.toBe('string');
73
+ expect(result).toHaveProperty('status');
74
+ });
75
+ it('should load ruleset by ID when ruleset parameter provided', async () => {
76
+ mockValidator.loadRulesetById.mockResolvedValue([{ id: 'R-01' }]);
77
+ const result = await (0, validate_1.handleValidateTool)({
78
+ path: '/test/repo',
79
+ ruleset: 'governance',
80
+ corePath: '/core',
81
+ }, mockValidator);
82
+ expect(mockValidator.loadRulesetById).toHaveBeenCalledWith('/core', 'governance');
83
+ expect(result).toHaveProperty('ruleset', 'governance');
84
+ expect(result).toHaveProperty('issues');
85
+ });
86
+ it('should find core path automatically when not provided', async () => {
87
+ mockValidator.loadRulesetById.mockResolvedValue([]);
88
+ const result = await (0, validate_1.handleValidateTool)({
89
+ path: '/test/repo',
90
+ ruleset: 'governance',
91
+ }, mockValidator);
92
+ expect(mockValidator.loadRulesetById).toHaveBeenCalled();
93
+ expect(result).toHaveProperty('corePath');
94
+ });
95
+ it('should include timestamp in ruleset response', async () => {
96
+ mockValidator.loadRulesetById.mockResolvedValue([]);
97
+ const result = await (0, validate_1.handleValidateTool)({
98
+ path: '/test/repo',
99
+ ruleset: 'governance',
100
+ }, mockValidator);
101
+ expect(result).toHaveProperty('timestamp');
102
+ });
103
+ it('should format summary with issue count', async () => {
104
+ mockValidator.validate.mockResolvedValue({
105
+ status: 'failed',
106
+ rulesChecked: 15,
107
+ issues: [
108
+ { ruleId: 'GOV-01', severity: 'MUST', title: 'Issue 1', blocking: true },
109
+ { ruleId: 'GOV-02', severity: 'SHOULD', title: 'Issue 2', blocking: false },
110
+ ],
111
+ });
112
+ const result = await (0, validate_1.handleValidateTool)({ path: '/test/repo', format: 'summary' }, mockValidator);
113
+ expect(result).toContain('Issues: 2');
114
+ });
115
+ it('should format table with blocking indicator', async () => {
116
+ mockValidator.validate.mockResolvedValue({
117
+ status: 'failed',
118
+ rulesChecked: 10,
119
+ issues: [
120
+ { ruleId: 'GOV-01', severity: 'MUST', title: 'Blocking issue', blocking: true, category: 'Governance' },
121
+ { ruleId: 'GOV-02', severity: 'SHOULD', title: 'Non-blocking', blocking: false, category: 'Governance' },
122
+ ],
123
+ });
124
+ const result = await (0, validate_1.handleValidateTool)({ path: '/test/repo', format: 'table' }, mockValidator);
125
+ expect(result).toContain('YES');
126
+ expect(result).toContain('no');
127
+ });
128
+ });
129
+ });
130
+ //# sourceMappingURL=validate.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.spec.js","sourceRoot":"","sources":["../../../../src/core/mcp/tools/validate.spec.ts"],"names":[],"mappings":"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"}