sdd-mcp-server 1.4.4 → 1.4.5

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 CHANGED
@@ -6,7 +6,9 @@
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
- > ✅ **v1.4.3 Update**: Comprehensive codebase analysis now works automatically! 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 across all development.
9
+ > ✅ **v1.4.5 Update**: Internal improvements! Reorganized test structure for better maintainability, centralized static steering document creation following DRY principle, improved code organization with better separation of concerns.
10
+
11
+ > ✅ **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
12
 
11
13
  ## 🚀 Quick Start
12
14
 
@@ -16,7 +18,7 @@ A Model Context Protocol (MCP) server implementing Spec-Driven Development (SDD)
16
18
  npx -y sdd-mcp-server@latest
17
19
 
18
20
  # Pin exact version (optional)
19
- npx -y sdd-mcp-server@1.4.3
21
+ npx -y sdd-mcp-server@1.4.5
20
22
 
21
23
  # For Claude Code MCP integration, add to your configuration:
22
24
  # "sdd-mcp-server": {
@@ -31,7 +33,7 @@ npx -y sdd-mcp-server@1.4.3
31
33
  npm install -g sdd-mcp-server@latest
32
34
 
33
35
  # Pin exact version (optional)
34
- npm install -g sdd-mcp-server@1.4.3
36
+ npm install -g sdd-mcp-server@1.4.5
35
37
 
36
38
  # Start the server
37
39
  sdd-mcp-server
@@ -210,9 +212,9 @@ Once connected to your AI client, you can use these MCP tools:
210
212
  Use sdd-context-load to restore project memory
211
213
  ```
212
214
 
213
- ## Upgrading to 1.4.3
215
+ ## Upgrading to 1.4.4
214
216
 
215
- **What's New in v1.4.3**:
217
+ **What's New in v1.4.4**:
216
218
  - ✅ **Comprehensive Codebase Analysis**: Documents now generated with full multi-language detection (TypeScript, Java, Python, Go, Ruby, PHP, Rust, C#, Scala)
217
219
  - ✅ **Framework Detection**: Automatic recognition of Spring Boot, Django, FastAPI, Rails, Laravel, Express, React, Vue, Angular, Next.js, and 20+ frameworks
218
220
  - ✅ **Build Tool & Test Framework Detection**: Identifies Maven, Gradle, npm, pip, cargo, Jest, pytest, JUnit, Mocha, and more
@@ -228,21 +230,26 @@ Once connected to your AI client, you can use these MCP tools:
228
230
  npx -y sdd-mcp-server@latest
229
231
 
230
232
  # Or pin to specific version
231
- npx -y sdd-mcp-server@1.4.3
233
+ npx -y sdd-mcp-server@1.4.4
232
234
 
233
235
  # Global installation
234
236
  npm install -g sdd-mcp-server@latest
235
- # Or pin: npm install -g sdd-mcp-server@1.4.3
237
+ # Or pin: npm install -g sdd-mcp-server@1.4.4
236
238
  ```
237
239
 
238
240
  **Migration Notes**:
239
- - If you pinned a version in your MCP config, update it to `@latest` or `@1.4.3`
241
+ - If you pinned a version in your MCP config, update it to `@latest` or `@1.4.4`
240
242
  - All steering documents now include `principles.md` and `tdd-guideline.md` automatically
241
243
  - TDD task generation is now default - tasks will follow RED-GREEN-REFACTOR order
242
244
  - No code changes needed - all improvements are backward compatible
243
245
 
244
246
  ## Previous Versions
245
247
 
248
+ ### v1.4.3
249
+ - Comprehensive codebase analysis fix for document generation
250
+ - Enhanced multi-language and framework detection
251
+ - Better error reporting and user feedback
252
+
246
253
  ### v1.4.2
247
254
  - Added `tdd-guideline.md` steering document for TDD enforcement
248
255
  - 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
+ }