sdd-mcp-server 1.4.4 → 1.5.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.
- package/README.md +18 -9
- package/dist/__tests__/legacy/setup.d.ts +44 -0
- package/dist/__tests__/legacy/setup.js +178 -0
- package/dist/__tests__/legacy/setup.js.map +1 -0
- package/dist/__tests__/legacy/test-helpers/mock-factories.d.ts +26 -0
- package/dist/__tests__/legacy/test-helpers/mock-factories.js +466 -0
- package/dist/__tests__/legacy/test-helpers/mock-factories.js.map +1 -0
- package/dist/adapters/cli/SDDToolAdapter.d.ts +12 -9
- package/dist/adapters/cli/SDDToolAdapter.js +344 -462
- package/dist/adapters/cli/SDDToolAdapter.js.map +1 -1
- package/dist/application/services/RequirementsClarificationService.d.ts +73 -0
- package/dist/application/services/RequirementsClarificationService.js +523 -0
- package/dist/application/services/RequirementsClarificationService.js.map +1 -0
- package/dist/application/services/staticSteering.d.ts +6 -0
- package/dist/application/services/staticSteering.js +567 -0
- package/dist/application/services/staticSteering.js.map +1 -0
- package/dist/domain/types.d.ts +47 -0
- package/dist/domain/types.js +8 -0
- package/dist/domain/types.js.map +1 -1
- package/dist/index.js +118 -17
- package/dist/index.js.map +1 -1
- package/dist/infrastructure/di/container.d.ts +2 -2
- package/dist/infrastructure/di/container.js +102 -60
- package/dist/infrastructure/di/container.js.map +1 -1
- package/dist/infrastructure/di/types.d.ts +1 -0
- package/dist/infrastructure/di/types.js +39 -38
- package/dist/infrastructure/di/types.js.map +1 -1
- package/mcp-server.js +2030 -1324
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -6,7 +6,11 @@
|
|
|
6
6
|
|
|
7
7
|
A Model Context Protocol (MCP) server implementing Spec-Driven Development (SDD) workflows for AI-agent CLIs and IDEs like Claude Code, Cursor, and others.
|
|
8
8
|
|
|
9
|
-
>
|
|
9
|
+
> 🎯 **v1.5.0 - Interactive Requirements Clarification**: `sdd-init` now **blocks vague requirements**! The agent analyzes your project description (quality score 0-100) and interactively asks targeted clarification questions if score < 70%. Focuses on **WHY** (business justification), WHO (target users), WHAT (core features), and success criteria. Context-aware using existing steering docs. Prevents "garbage in, garbage out" with enriched 5W1H structured descriptions. **New service**: `RequirementsClarificationService` with 13 passing unit tests ✅
|
|
10
|
+
|
|
11
|
+
> ✅ **v1.4.5**: Internal improvements! Reorganized test structure for better maintainability, centralized static steering document creation following DRY principle, improved code organization with better separation of concerns.
|
|
12
|
+
|
|
13
|
+
> ✅ **v1.4.4**: Comprehensive codebase analysis + TDD workflow! Documents are generated with real multi-language detection (TypeScript, Java, Python, Go, Ruby, PHP, Rust, C#, Scala), framework detection (Spring Boot, Django, FastAPI, Rails, Laravel, Express, React, etc.), and architecture pattern recognition. New `principles.md` steering document enforces SOLID, DRY, KISS, YAGNI, Separation of Concerns, and Modularity. Task generation now follows Test-Driven Development (RED-GREEN-REFACTOR) workflow.
|
|
10
14
|
|
|
11
15
|
## 🚀 Quick Start
|
|
12
16
|
|
|
@@ -16,7 +20,7 @@ A Model Context Protocol (MCP) server implementing Spec-Driven Development (SDD)
|
|
|
16
20
|
npx -y sdd-mcp-server@latest
|
|
17
21
|
|
|
18
22
|
# Pin exact version (optional)
|
|
19
|
-
npx -y sdd-mcp-server@1.4.
|
|
23
|
+
npx -y sdd-mcp-server@1.4.5
|
|
20
24
|
|
|
21
25
|
# For Claude Code MCP integration, add to your configuration:
|
|
22
26
|
# "sdd-mcp-server": {
|
|
@@ -31,7 +35,7 @@ npx -y sdd-mcp-server@1.4.3
|
|
|
31
35
|
npm install -g sdd-mcp-server@latest
|
|
32
36
|
|
|
33
37
|
# Pin exact version (optional)
|
|
34
|
-
npm install -g sdd-mcp-server@1.4.
|
|
38
|
+
npm install -g sdd-mcp-server@1.4.5
|
|
35
39
|
|
|
36
40
|
# Start the server
|
|
37
41
|
sdd-mcp-server
|
|
@@ -146,7 +150,7 @@ Once connected to your AI client, you can use these MCP tools:
|
|
|
146
150
|
|
|
147
151
|
| Tool | Description | Usage |
|
|
148
152
|
|------|-------------|--------|
|
|
149
|
-
| `sdd-init` | Initialize new SDD project
|
|
153
|
+
| `sdd-init` | Initialize new SDD project with interactive clarification | **🎯 NEW v1.5.0**: Analyzes description quality (0-100 score), blocks if < 70%, asks targeted WHY/WHO/WHAT questions, synthesizes enriched 5W1H descriptions |
|
|
150
154
|
| `sdd-requirements` | Generate context-aware requirements | Analyzes package.json and structure to create EARS-formatted requirements with comprehensive multi-language analysis |
|
|
151
155
|
| `sdd-design` | Create project-specific design | Generates architecture docs based on actual tech stack, dependencies, and framework detection |
|
|
152
156
|
| `sdd-tasks` | Generate TDD-focused task breakdown | Creates test-first implementation tasks following RED-GREEN-REFACTOR workflow |
|
|
@@ -210,9 +214,9 @@ Once connected to your AI client, you can use these MCP tools:
|
|
|
210
214
|
Use sdd-context-load to restore project memory
|
|
211
215
|
```
|
|
212
216
|
|
|
213
|
-
## Upgrading to 1.4.
|
|
217
|
+
## Upgrading to 1.4.4
|
|
214
218
|
|
|
215
|
-
**What's New in v1.4.
|
|
219
|
+
**What's New in v1.4.4**:
|
|
216
220
|
- ✅ **Comprehensive Codebase Analysis**: Documents now generated with full multi-language detection (TypeScript, Java, Python, Go, Ruby, PHP, Rust, C#, Scala)
|
|
217
221
|
- ✅ **Framework Detection**: Automatic recognition of Spring Boot, Django, FastAPI, Rails, Laravel, Express, React, Vue, Angular, Next.js, and 20+ frameworks
|
|
218
222
|
- ✅ **Build Tool & Test Framework Detection**: Identifies Maven, Gradle, npm, pip, cargo, Jest, pytest, JUnit, Mocha, and more
|
|
@@ -228,21 +232,26 @@ Once connected to your AI client, you can use these MCP tools:
|
|
|
228
232
|
npx -y sdd-mcp-server@latest
|
|
229
233
|
|
|
230
234
|
# Or pin to specific version
|
|
231
|
-
npx -y sdd-mcp-server@1.4.
|
|
235
|
+
npx -y sdd-mcp-server@1.4.4
|
|
232
236
|
|
|
233
237
|
# Global installation
|
|
234
238
|
npm install -g sdd-mcp-server@latest
|
|
235
|
-
# Or pin: npm install -g sdd-mcp-server@1.4.
|
|
239
|
+
# Or pin: npm install -g sdd-mcp-server@1.4.4
|
|
236
240
|
```
|
|
237
241
|
|
|
238
242
|
**Migration Notes**:
|
|
239
|
-
- If you pinned a version in your MCP config, update it to `@latest` or `@1.4.
|
|
243
|
+
- If you pinned a version in your MCP config, update it to `@latest` or `@1.4.4`
|
|
240
244
|
- All steering documents now include `principles.md` and `tdd-guideline.md` automatically
|
|
241
245
|
- TDD task generation is now default - tasks will follow RED-GREEN-REFACTOR order
|
|
242
246
|
- No code changes needed - all improvements are backward compatible
|
|
243
247
|
|
|
244
248
|
## Previous Versions
|
|
245
249
|
|
|
250
|
+
### v1.4.3
|
|
251
|
+
- Comprehensive codebase analysis fix for document generation
|
|
252
|
+
- Enhanced multi-language and framework detection
|
|
253
|
+
- Better error reporting and user feedback
|
|
254
|
+
|
|
246
255
|
### v1.4.2
|
|
247
256
|
- Added `tdd-guideline.md` steering document for TDD enforcement
|
|
248
257
|
- Security-check.md (OWASP Top 10) included in static steering docs
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import 'reflect-metadata';
|
|
2
|
+
declare global {
|
|
3
|
+
namespace jest {
|
|
4
|
+
interface Matchers<R> {
|
|
5
|
+
toBeWithinTimeThreshold(threshold?: number): R;
|
|
6
|
+
toHaveValidWorkflowState(): R;
|
|
7
|
+
toHaveValidPluginStructure(): R;
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
const TEST_CONFIG: {
|
|
11
|
+
timeout: number;
|
|
12
|
+
performanceThreshold: number;
|
|
13
|
+
tempDir: string;
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
export declare const TestUtils: {
|
|
17
|
+
createMockLogger: () => {
|
|
18
|
+
debug: jest.Mock<any, any, any>;
|
|
19
|
+
info: jest.Mock<any, any, any>;
|
|
20
|
+
warn: jest.Mock<any, any, any>;
|
|
21
|
+
error: jest.Mock<any, any, any>;
|
|
22
|
+
};
|
|
23
|
+
createMockFileSystem: () => {
|
|
24
|
+
readFile: jest.Mock<any, any, any>;
|
|
25
|
+
writeFile: jest.Mock<any, any, any>;
|
|
26
|
+
exists: jest.Mock<any, any, any>;
|
|
27
|
+
mkdir: jest.Mock<any, any, any>;
|
|
28
|
+
readdir: jest.Mock<any, any, any>;
|
|
29
|
+
stat: jest.Mock<any, any, any>;
|
|
30
|
+
join: jest.Mock<string, string[], any>;
|
|
31
|
+
basename: jest.Mock<string, [path: string], any>;
|
|
32
|
+
dirname: jest.Mock<string, [path: string], any>;
|
|
33
|
+
};
|
|
34
|
+
createMockValidation: () => {
|
|
35
|
+
validate: jest.Mock<any, any, any>;
|
|
36
|
+
validateSchema: jest.Mock<any, any, any>;
|
|
37
|
+
createValidator: jest.Mock<any, any, any>;
|
|
38
|
+
};
|
|
39
|
+
createTestWorkflowState: (overrides?: any) => any;
|
|
40
|
+
createTestPlugin: (overrides?: any) => any;
|
|
41
|
+
waitFor: (ms: number) => Promise<unknown>;
|
|
42
|
+
createTempDir: () => Promise<string>;
|
|
43
|
+
cleanupTempDir: (dir: string) => Promise<void>;
|
|
44
|
+
};
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
// Test setup and configuration for comprehensive testing framework
|
|
2
|
+
import 'reflect-metadata';
|
|
3
|
+
// Global test configuration
|
|
4
|
+
const TEST_TIMEOUT = 30000; // 30 seconds
|
|
5
|
+
const PERFORMANCE_THRESHOLD = 5000; // 5 seconds for performance tests
|
|
6
|
+
// Setup global test utilities
|
|
7
|
+
globalThis.TEST_CONFIG = {
|
|
8
|
+
timeout: TEST_TIMEOUT,
|
|
9
|
+
performanceThreshold: PERFORMANCE_THRESHOLD,
|
|
10
|
+
tempDir: process.env.TEST_TEMP_DIR || '/tmp/sdd-mcp-tests'
|
|
11
|
+
};
|
|
12
|
+
// Mock console methods for cleaner test output
|
|
13
|
+
const originalConsole = { ...console };
|
|
14
|
+
beforeAll(() => {
|
|
15
|
+
// Silence console output during tests unless TEST_VERBOSE is set
|
|
16
|
+
if (!process.env.TEST_VERBOSE) {
|
|
17
|
+
console.log = jest.fn();
|
|
18
|
+
console.debug = jest.fn();
|
|
19
|
+
console.info = jest.fn();
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
afterAll(() => {
|
|
23
|
+
// Restore console methods
|
|
24
|
+
if (!process.env.TEST_VERBOSE) {
|
|
25
|
+
Object.assign(console, originalConsole);
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
// Global error handling
|
|
29
|
+
process.on('unhandledRejection', (reason, promise) => {
|
|
30
|
+
console.error('Unhandled Rejection at:', promise, 'reason:', reason);
|
|
31
|
+
});
|
|
32
|
+
// Setup test matchers
|
|
33
|
+
expect.extend({
|
|
34
|
+
toBeWithinTimeThreshold(received, threshold = PERFORMANCE_THRESHOLD) {
|
|
35
|
+
const pass = received <= threshold;
|
|
36
|
+
if (pass) {
|
|
37
|
+
return {
|
|
38
|
+
message: () => `Expected ${received}ms to exceed ${threshold}ms`,
|
|
39
|
+
pass: true,
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
return {
|
|
44
|
+
message: () => `Expected ${received}ms to be within ${threshold}ms threshold`,
|
|
45
|
+
pass: false,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
toHaveValidWorkflowState(received) {
|
|
50
|
+
const requiredPhases = ['INIT', 'REQUIREMENTS', 'DESIGN', 'TASKS', 'IMPLEMENTATION'];
|
|
51
|
+
const requiredProperties = ['currentPhase', 'state', 'phases'];
|
|
52
|
+
const hasRequiredProperties = requiredProperties.every(prop => received && typeof received === 'object' && prop in received);
|
|
53
|
+
const hasAllPhases = requiredPhases.every(phase => received.phases && phase in received.phases);
|
|
54
|
+
const validCurrentPhase = requiredPhases.includes(received.currentPhase);
|
|
55
|
+
const pass = hasRequiredProperties && hasAllPhases && validCurrentPhase;
|
|
56
|
+
if (pass) {
|
|
57
|
+
return {
|
|
58
|
+
message: () => `Expected workflow state to be invalid`,
|
|
59
|
+
pass: true,
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
return {
|
|
64
|
+
message: () => `Expected workflow state to have valid structure with all phases and properties`,
|
|
65
|
+
pass: false,
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
},
|
|
69
|
+
toHaveValidPluginStructure(received) {
|
|
70
|
+
const requiredProperties = ['id', 'name', 'version', 'capabilities'];
|
|
71
|
+
const hasRequiredProperties = requiredProperties.every(prop => received && typeof received === 'object' && prop in received);
|
|
72
|
+
const hasValidCapabilities = Array.isArray(received.capabilities);
|
|
73
|
+
const pass = hasRequiredProperties && hasValidCapabilities;
|
|
74
|
+
if (pass) {
|
|
75
|
+
return {
|
|
76
|
+
message: () => `Expected plugin structure to be invalid`,
|
|
77
|
+
pass: true,
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
return {
|
|
82
|
+
message: () => `Expected plugin to have valid structure with required properties`,
|
|
83
|
+
pass: false,
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
// Test utilities
|
|
89
|
+
export const TestUtils = {
|
|
90
|
+
// Create mock logger
|
|
91
|
+
createMockLogger: () => ({
|
|
92
|
+
debug: jest.fn(),
|
|
93
|
+
info: jest.fn(),
|
|
94
|
+
warn: jest.fn(),
|
|
95
|
+
error: jest.fn()
|
|
96
|
+
}),
|
|
97
|
+
// Create mock file system
|
|
98
|
+
createMockFileSystem: () => ({
|
|
99
|
+
readFile: jest.fn(),
|
|
100
|
+
writeFile: jest.fn(),
|
|
101
|
+
exists: jest.fn(),
|
|
102
|
+
mkdir: jest.fn(),
|
|
103
|
+
readdir: jest.fn(),
|
|
104
|
+
stat: jest.fn(),
|
|
105
|
+
join: jest.fn((...args) => args.join('/')),
|
|
106
|
+
basename: jest.fn((path) => path.split('/').pop() || ''),
|
|
107
|
+
dirname: jest.fn((path) => path.split('/').slice(0, -1).join('/'))
|
|
108
|
+
}),
|
|
109
|
+
// Create mock validation port
|
|
110
|
+
createMockValidation: () => ({
|
|
111
|
+
validate: jest.fn(),
|
|
112
|
+
validateSchema: jest.fn(),
|
|
113
|
+
createValidator: jest.fn()
|
|
114
|
+
}),
|
|
115
|
+
// Generate test workflow state
|
|
116
|
+
createTestWorkflowState: (overrides = {}) => ({
|
|
117
|
+
currentPhase: 'INIT',
|
|
118
|
+
state: 'IN_PROGRESS',
|
|
119
|
+
phases: {
|
|
120
|
+
INIT: { status: 'IN_PROGRESS', startedAt: new Date() },
|
|
121
|
+
REQUIREMENTS: { status: 'PENDING' },
|
|
122
|
+
DESIGN: { status: 'PENDING' },
|
|
123
|
+
TASKS: { status: 'PENDING' },
|
|
124
|
+
IMPLEMENTATION: { status: 'PENDING' }
|
|
125
|
+
},
|
|
126
|
+
startedAt: new Date(),
|
|
127
|
+
...overrides
|
|
128
|
+
}),
|
|
129
|
+
// Generate test plugin
|
|
130
|
+
createTestPlugin: (overrides = {}) => ({
|
|
131
|
+
id: 'test-plugin',
|
|
132
|
+
name: 'Test Plugin',
|
|
133
|
+
version: '1.0.0',
|
|
134
|
+
description: 'A test plugin',
|
|
135
|
+
author: 'Test Author',
|
|
136
|
+
license: 'MIT',
|
|
137
|
+
keywords: ['test'],
|
|
138
|
+
dependencies: [],
|
|
139
|
+
peerDependencies: [],
|
|
140
|
+
engines: [{ name: 'node', version: '>=18.0.0' }],
|
|
141
|
+
capabilities: [],
|
|
142
|
+
hooks: [],
|
|
143
|
+
tools: [],
|
|
144
|
+
steeringDocuments: [],
|
|
145
|
+
configuration: {
|
|
146
|
+
schema: {},
|
|
147
|
+
defaults: {},
|
|
148
|
+
required: [],
|
|
149
|
+
validation: []
|
|
150
|
+
},
|
|
151
|
+
metadata: {
|
|
152
|
+
createdAt: new Date(),
|
|
153
|
+
updatedAt: new Date(),
|
|
154
|
+
usageCount: 0,
|
|
155
|
+
ratings: [],
|
|
156
|
+
tags: [],
|
|
157
|
+
category: 'UTILITY',
|
|
158
|
+
maturity: 'STABLE',
|
|
159
|
+
supportedLanguages: ['typescript']
|
|
160
|
+
},
|
|
161
|
+
...overrides
|
|
162
|
+
}),
|
|
163
|
+
// Wait for promises to resolve
|
|
164
|
+
waitFor: (ms) => new Promise(resolve => setTimeout(resolve, ms)),
|
|
165
|
+
// Create temporary directory for tests
|
|
166
|
+
createTempDir: async () => {
|
|
167
|
+
const { promises: fs } = await import('fs');
|
|
168
|
+
const os = await import('os');
|
|
169
|
+
const path = await import('path');
|
|
170
|
+
return await fs.mkdtemp(path.join(os.tmpdir(), 'sdd-mcp-test-'));
|
|
171
|
+
},
|
|
172
|
+
// Clean up temporary directory
|
|
173
|
+
cleanupTempDir: async (dir) => {
|
|
174
|
+
const { promises: fs } = await import('fs');
|
|
175
|
+
await fs.rm(dir, { recursive: true, force: true });
|
|
176
|
+
}
|
|
177
|
+
};
|
|
178
|
+
//# sourceMappingURL=setup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../src/__tests__/legacy/setup.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export declare class MockFactories {
|
|
2
|
+
static createMockHookRegistration(overrides?: any): any;
|
|
3
|
+
static createMockHookExecutionContext(overrides?: any): any;
|
|
4
|
+
static createMockHookResult(overrides?: any): any;
|
|
5
|
+
static createMockToolRegistration(overrides?: any): any;
|
|
6
|
+
static createMockToolExecutionContext(overrides?: any): any;
|
|
7
|
+
static createMockToolResult(overrides?: any): any;
|
|
8
|
+
static createMockSteeringDeclaration(overrides?: any): any;
|
|
9
|
+
static createMockSteeringContext(overrides?: any): any;
|
|
10
|
+
static createMockSteeringResult(overrides?: any): any;
|
|
11
|
+
static createMockPlugin(overrides?: any): any;
|
|
12
|
+
static createMockPluginInstance(overrides?: any): any;
|
|
13
|
+
static createMockPluginDescriptor(overrides?: any): any;
|
|
14
|
+
static createMockPluginValidationResult(overrides?: any): any;
|
|
15
|
+
static createMockWorkflowState(overrides?: any): any;
|
|
16
|
+
static createMockWorkflowMetrics(overrides?: any): any;
|
|
17
|
+
static createMockMCPTool(overrides?: any): any;
|
|
18
|
+
static createMockMCPRequest(overrides?: any): any;
|
|
19
|
+
static createMockMCPResponse(overrides?: any): any;
|
|
20
|
+
static createMockPerformanceMetrics(overrides?: any): any;
|
|
21
|
+
static createMockValidationError(overrides?: any): any;
|
|
22
|
+
static createMockSecurityIssue(overrides?: any): any;
|
|
23
|
+
static createMockHookRegistrations(count: number): any[];
|
|
24
|
+
static createMockToolRegistrations(count: number): any[];
|
|
25
|
+
static createMockSteeringDocuments(count: number): any[];
|
|
26
|
+
}
|