sdd-mcp-server 1.6.2 → 1.8.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.
@@ -1,17 +1,46 @@
1
- import { analyzeProject } from './documentGenerator.js';
1
+ import { analyzeProject } from "./documentGenerator.js";
2
+ /**
3
+ * Governance subtasks that must be included in every task group
4
+ * References steering documents for TDD and coding principles
5
+ */
6
+ const TDD_SUBTASK = "Follow `.kiro/steering/tdd-guideline.md` (Red→Green→Refactor)";
7
+ const PRINCIPLES_SUBTASK = "Review `.kiro/steering/principles.md`; capture any deviations";
8
+ /**
9
+ * Enforce governance by adding TDD and principles subtasks to every task
10
+ * Also updates requirements field to include TDD and Principles tags
11
+ *
12
+ * @param tasks - Array of task objects with title, subtasks, and requirements
13
+ * @returns Modified task array with governance subtasks appended
14
+ */
15
+ function enforceGovernance(tasks) {
16
+ return tasks.map((task) => {
17
+ // Add governance subtasks if not already present
18
+ if (!task.subtasks.includes(TDD_SUBTASK)) {
19
+ task.subtasks.push(TDD_SUBTASK);
20
+ }
21
+ if (!task.subtasks.includes(PRINCIPLES_SUBTASK)) {
22
+ task.subtasks.push(PRINCIPLES_SUBTASK);
23
+ }
24
+ // Add TDD and Principles tags to requirements if not present
25
+ if (!/TDD|Principles/.test(task.requirements)) {
26
+ task.requirements = `${task.requirements}, TDD, Principles`;
27
+ }
28
+ return task;
29
+ });
30
+ }
2
31
  export async function generateRequirementsDocument(projectPath, featureName) {
3
32
  const analysis = await analyzeProject(projectPath);
4
- const desc = analysis.description || 'Feature requirements specification';
33
+ const desc = analysis.description || "Feature requirements specification";
5
34
  const obj = generateCoreObjective(analysis);
6
35
  const acceptance = generateAcceptanceCriteria(analysis)
7
36
  .map((c, i) => `${i + 1}. ${c}`)
8
- .join('\n');
37
+ .join("\n");
9
38
  return `# Requirements Document
10
39
 
11
40
  ## Introduction
12
41
  ${featureName} - Requirements derived from codebase analysis.
13
42
 
14
- **Project**: ${analysis.name}
43
+ **Project**: ${analysis.name}
15
44
  **Description**: ${desc}
16
45
 
17
46
  Generated on: ${new Date().toISOString()}
@@ -28,13 +57,17 @@ ${acceptance}
28
57
  **Objective:** Integrate with the detected technology stack
29
58
 
30
59
  #### Acceptance Criteria
31
- ${generateTechRequirements(analysis).map((r, i) => `${i + 1}. ${r}`).join('\n')}
60
+ ${generateTechRequirements(analysis)
61
+ .map((r, i) => `${i + 1}. ${r}`)
62
+ .join("\n")}
32
63
 
33
64
  ### FR-3: Quality Standards
34
65
  **Objective:** Meet quality, testing, and review standards
35
66
 
36
67
  #### Acceptance Criteria
37
- ${generateQualityRequirements(analysis).map((r, i) => `${i + 1}. ${r}`).join('\n')}
68
+ ${generateQualityRequirements(analysis)
69
+ .map((r, i) => `${i + 1}. ${r}`)
70
+ .join("\n")}
38
71
 
39
72
  ## Non-Functional Requirements
40
73
 
@@ -54,8 +87,12 @@ ${generateQualityRequirements(analysis).map((r, i) => `${i + 1}. ${r}`).join('\n
54
87
  export async function generateDesignDocument(projectPath, featureName) {
55
88
  const analysis = await analyzeProject(projectPath);
56
89
  const arch = describeArchitecture(analysis);
57
- const components = generateComponentList(analysis).map(c => `- **${c.name}**: ${c.description}`).join('\n');
58
- const dataModels = generateDataModels(analysis).map(m => `- **${m}**: Data structure definition`).join('\n');
90
+ const components = generateComponentList(analysis)
91
+ .map((c) => `- **${c.name}**: ${c.description}`)
92
+ .join("\n");
93
+ const dataModels = generateDataModels(analysis)
94
+ .map((m) => `- **${m}**: Data structure definition`)
95
+ .join("\n");
59
96
  const techStack = generateDetailedTechStack(analysis);
60
97
  return `# Technical Design Document
61
98
 
@@ -103,16 +140,18 @@ ${generateBuildConfig(analysis)}
103
140
  export async function generateTasksDocument(projectPath, featureName) {
104
141
  const analysis = await analyzeProject(projectPath);
105
142
  const tasks = generateImplementationTasks(analysis);
106
- const section = (title, list) => list.map((task, idx) => `- [ ] ${idx + 1}. ${task.title}
107
- ${task.subtasks.map(s => ` - ${s}`).join('\n')}
108
- - _Requirements: ${task.requirements}_`).join('\n\n');
143
+ const section = (title, list) => list
144
+ .map((task, idx) => `- [ ] ${idx + 1}. ${task.title}
145
+ ${task.subtasks.map((s) => ` - ${s}`).join("\n")}
146
+ - _Requirements: ${task.requirements}_`)
147
+ .join("\n\n");
109
148
  return `# Implementation Plan (TDD Approach)
110
149
 
111
150
  ## Project: ${featureName}
112
151
 
113
152
  **Project Name:** ${analysis.name}
114
- **Detected Stack:** ${[analysis.language, analysis.framework || '', analysis.buildTool || ''].filter(Boolean).join(' / ')}
115
- **Test Framework:** ${analysis.testFramework || 'Not detected - needs setup'}
153
+ **Detected Stack:** ${[analysis.language, analysis.framework || "", analysis.buildTool || ""].filter(Boolean).join(" / ")}
154
+ **Test Framework:** ${analysis.testFramework || "Not detected - needs setup"}
116
155
 
117
156
  Generated on: ${new Date().toISOString()}
118
157
 
@@ -122,19 +161,19 @@ Generated on: ${new Date().toISOString()}
122
161
 
123
162
  ## Phase 1: Test Setup (🔴 RED - Write Failing Tests First)
124
163
 
125
- ${section('Test Setup', tasks.testSetup)}
164
+ ${section("Test Setup", tasks.testSetup)}
126
165
 
127
166
  ## Phase 2: Implementation (🟢 GREEN - Make Tests Pass)
128
167
 
129
- ${section('Implementation', tasks.implementation)}
168
+ ${section("Implementation", tasks.implementation)}
130
169
 
131
170
  ## Phase 3: Refactoring (🔵 REFACTOR - Improve Code Quality)
132
171
 
133
- ${section('Refactoring', tasks.refactoring)}
172
+ ${section("Refactoring", tasks.refactoring)}
134
173
 
135
174
  ## Phase 4: Integration & Documentation
136
175
 
137
- ${section('Integration', tasks.integration)}
176
+ ${section("Integration", tasks.integration)}
138
177
 
139
178
  ---
140
179
 
@@ -144,272 +183,301 @@ Refer to \`.kiro/steering/tdd-guideline.md\` for detailed TDD guidance.
144
183
  }
145
184
  // Helpers derived from TemplateService, reduced and dependency-free
146
185
  function generateCoreObjective(analysis) {
147
- if (analysis.dependencies?.includes('@modelcontextprotocol/sdk'))
148
- return 'Provide MCP tools for spec-driven development workflows';
149
- if (analysis.framework === 'Express.js')
150
- return 'Expose REST endpoints and middleware for business logic';
151
- if (analysis.framework === 'React')
152
- return 'Render interactive UI components with state management';
153
- return 'Deliver feature-aligned functionality integrated with existing architecture';
186
+ if (analysis.dependencies?.includes("@modelcontextprotocol/sdk"))
187
+ return "Provide MCP tools for spec-driven development workflows";
188
+ if (analysis.framework === "Express.js")
189
+ return "Expose REST endpoints and middleware for business logic";
190
+ if (analysis.framework === "React")
191
+ return "Render interactive UI components with state management";
192
+ return "Deliver feature-aligned functionality integrated with existing architecture";
154
193
  }
155
194
  function generateAcceptanceCriteria(analysis) {
156
195
  const criteria = [
157
- 'WHEN invoked THEN it SHALL execute without runtime errors',
158
- 'IF input is invalid THEN it SHALL return meaningful errors',
159
- 'WHILE under typical load IT SHALL meet performance targets'
196
+ "WHEN invoked THEN it SHALL execute without runtime errors",
197
+ "IF input is invalid THEN it SHALL return meaningful errors",
198
+ "WHILE under typical load IT SHALL meet performance targets",
160
199
  ];
161
200
  if (analysis.testFramework)
162
- criteria.push('WHERE tests exist THEY SHALL pass with adequate coverage');
163
- if (analysis.language === 'typescript')
164
- criteria.push('WHEN type-checking THEN no TypeScript errors SHALL occur');
201
+ criteria.push("WHERE tests exist THEY SHALL pass with adequate coverage");
202
+ if (analysis.language === "typescript")
203
+ criteria.push("WHEN type-checking THEN no TypeScript errors SHALL occur");
165
204
  return criteria;
166
205
  }
167
206
  function generateTechRequirements(analysis) {
168
- const out = ['Integrate with existing build and run scripts'];
169
- if (analysis.dependencies?.includes('@modelcontextprotocol/sdk'))
170
- out.push('Expose MCP-compliant tools over stdio');
207
+ const out = ["Integrate with existing build and run scripts"];
208
+ if (analysis.dependencies?.includes("@modelcontextprotocol/sdk"))
209
+ out.push("Expose MCP-compliant tools over stdio");
171
210
  if (analysis.buildTool)
172
211
  out.push(`Provide build artifacts using ${analysis.buildTool}`);
173
212
  return out;
174
213
  }
175
214
  function generateQualityRequirements(analysis) {
176
- const out = ['Follow project coding conventions', 'Apply error handling and logging'];
215
+ const out = [
216
+ "Follow project coding conventions",
217
+ "Apply error handling and logging",
218
+ ];
177
219
  if (analysis.testFramework)
178
220
  out.push(`Include ${analysis.testFramework} tests for new code`);
179
221
  return out;
180
222
  }
181
223
  function describeArchitecture(analysis) {
182
- if (analysis.architecture === 'Domain-Driven Design (DDD)')
183
- return 'Layered DDD: Domain, Application, Infrastructure, Presentation';
184
- if (analysis.architecture.includes('API'))
185
- return 'REST API with routing, middleware, services, and data access layers';
186
- if (analysis.framework === 'MCP SDK')
187
- return 'MCP server exposing development tools via stdio protocol';
188
- return analysis.architecture || 'Modular architecture with clear separation of concerns';
224
+ if (analysis.architecture === "Domain-Driven Design (DDD)")
225
+ return "Layered DDD: Domain, Application, Infrastructure, Presentation";
226
+ if (analysis.architecture.includes("API"))
227
+ return "REST API with routing, middleware, services, and data access layers";
228
+ if (analysis.framework === "MCP SDK")
229
+ return "MCP server exposing development tools via stdio protocol";
230
+ return (analysis.architecture ||
231
+ "Modular architecture with clear separation of concerns");
189
232
  }
190
233
  function generateComponentList(analysis) {
191
234
  const comps = [];
192
- if (analysis.framework === 'MCP SDK') {
193
- comps.push({ name: 'MCPServer', description: 'Handles stdio transport and tool registry' });
194
- comps.push({ name: 'ToolHandlers', description: 'Implement SDD tools (init, requirements, design, tasks, etc.)' });
235
+ if (analysis.framework === "MCP SDK") {
236
+ comps.push({
237
+ name: "MCPServer",
238
+ description: "Handles stdio transport and tool registry",
239
+ });
240
+ comps.push({
241
+ name: "ToolHandlers",
242
+ description: "Implement SDD tools (init, requirements, design, tasks, etc.)",
243
+ });
195
244
  }
196
- if (analysis.architecture.includes('API')) {
197
- comps.push({ name: 'Controllers', description: 'HTTP route handlers' });
198
- comps.push({ name: 'Services', description: 'Business logic orchestration' });
245
+ if (analysis.architecture.includes("API")) {
246
+ comps.push({ name: "Controllers", description: "HTTP route handlers" });
247
+ comps.push({
248
+ name: "Services",
249
+ description: "Business logic orchestration",
250
+ });
199
251
  }
200
252
  if (comps.length === 0)
201
- comps.push({ name: 'CoreModule', description: 'Primary feature implementation module' });
253
+ comps.push({
254
+ name: "CoreModule",
255
+ description: "Primary feature implementation module",
256
+ });
202
257
  return comps;
203
258
  }
204
259
  function generateDataModels(analysis) {
205
- if (analysis.framework === 'MCP SDK')
206
- return ['Tool', 'Request', 'Response'];
207
- if (analysis.architecture.includes('API'))
208
- return ['RequestDTO', 'ResponseDTO'];
209
- return ['Entity', 'ValueObject'];
260
+ if (analysis.framework === "MCP SDK")
261
+ return ["Tool", "Request", "Response"];
262
+ if (analysis.architecture.includes("API"))
263
+ return ["RequestDTO", "ResponseDTO"];
264
+ return ["Entity", "ValueObject"];
210
265
  }
211
266
  function generateDetailedTechStack(analysis) {
212
267
  const parts = [];
213
- parts.push(`- Runtime: ${analysis.language === 'typescript' ? 'Node.js (TypeScript)' : 'Node.js (JavaScript)'}`);
268
+ parts.push(`- Runtime: ${analysis.language === "typescript" ? "Node.js (TypeScript)" : "Node.js (JavaScript)"}`);
214
269
  if (analysis.framework)
215
270
  parts.push(`- Framework: ${analysis.framework}`);
216
271
  if (analysis.buildTool)
217
272
  parts.push(`- Build: ${analysis.buildTool}`);
218
273
  if (analysis.testFramework)
219
274
  parts.push(`- Testing: ${analysis.testFramework}`);
220
- return parts.join('\n');
275
+ return parts.join("\n");
221
276
  }
222
277
  function generateDependencySummary(analysis) {
223
- const deps = (analysis.dependencies || []).slice(0, 10).map((d) => `- ${d}`).join('\n');
224
- const dev = (analysis.devDependencies || []).slice(0, 10).map((d) => `- ${d}`).join('\n');
225
- return `#### Production\n${deps || '- (none)'}\n\n#### Development\n${dev || '- (none)'}`;
278
+ const deps = (analysis.dependencies || [])
279
+ .slice(0, 10)
280
+ .map((d) => `- ${d}`)
281
+ .join("\n");
282
+ const dev = (analysis.devDependencies || [])
283
+ .slice(0, 10)
284
+ .map((d) => `- ${d}`)
285
+ .join("\n");
286
+ return `#### Production\n${deps || "- (none)"}\n\n#### Development\n${dev || "- (none)"}`;
226
287
  }
227
288
  function generateModuleInterfaces(analysis) {
228
- if (analysis.framework === 'MCP SDK') {
289
+ if (analysis.framework === "MCP SDK") {
229
290
  return `- registerTool(name: string, handler: (args) => Promise<unknown>)\n- connect(transport): Promise<void>`;
230
291
  }
231
- if (analysis.architecture.includes('API')) {
292
+ if (analysis.architecture.includes("API")) {
232
293
  return `- handle(request): Response\n- service.process(input): Result`;
233
294
  }
234
295
  return `- execute(input): Output`;
235
296
  }
236
297
  function generateEnvVars(analysis) {
237
- const envs = ['NODE_ENV', 'LOG_LEVEL'];
238
- if (analysis.framework === 'MCP SDK')
239
- envs.push('MCP_MODE');
240
- return envs.map(e => `- ${e}`).join('\n');
298
+ const envs = ["NODE_ENV", "LOG_LEVEL"];
299
+ if (analysis.framework === "MCP SDK")
300
+ envs.push("MCP_MODE");
301
+ return envs.map((e) => `- ${e}`).join("\n");
241
302
  }
242
303
  function generateBuildConfig(analysis) {
243
304
  if (analysis.buildTool)
244
305
  return `Use ${analysis.buildTool} to emit production artifacts`;
245
- return 'Use npm scripts (build/test/lint) defined in package.json';
306
+ return "Use npm scripts (build/test/lint) defined in package.json";
246
307
  }
247
308
  function generateImplementationTasks(analysis) {
248
309
  // Phase 1: Test Setup (RED - Write Failing Tests First)
249
310
  const testSetup = [
250
311
  {
251
- title: 'Set up test infrastructure',
312
+ title: "Set up test infrastructure",
252
313
  subtasks: [
253
- `Install/configure ${analysis.testFramework || 'Jest/pytest/JUnit'} test framework`,
254
- 'Create test directory structure (__tests__, test/, spec/)',
255
- 'Configure test runner and coverage tools',
256
- 'Set up test utilities and helpers'
314
+ `Install/configure ${analysis.testFramework || "Jest/pytest/JUnit"} test framework`,
315
+ "Create test directory structure (__tests__, test/, spec/)",
316
+ "Configure test runner and coverage tools",
317
+ "Set up test utilities and helpers",
257
318
  ],
258
- requirements: 'NFR-3 (Quality Standards)'
319
+ requirements: "NFR-3 (Quality Standards)",
259
320
  },
260
321
  {
261
- title: 'Write failing tests for core functionality',
322
+ title: "Write failing tests for core functionality",
262
323
  subtasks: [
263
- 'Write unit tests for main feature components',
264
- 'Write integration tests for component interactions',
265
- 'Write edge case and error handling tests',
266
- 'Confirm all tests fail (RED phase) - no implementation yet'
324
+ "Write unit tests for main feature components",
325
+ "Write integration tests for component interactions",
326
+ "Write edge case and error handling tests",
327
+ "Confirm all tests fail (RED phase) - no implementation yet",
267
328
  ],
268
- requirements: 'FR-1 (Core Functionality)'
269
- }
329
+ requirements: "FR-1 (Core Functionality)",
330
+ },
270
331
  ];
271
332
  // Phase 2: Implementation (GREEN - Make Tests Pass)
272
333
  const implementation = [
273
334
  {
274
- title: 'Set up project scaffolding',
335
+ title: "Set up project scaffolding",
275
336
  subtasks: [
276
- 'Initialize directories following project structure',
277
- 'Configure build scripts and package.json',
278
- 'Set up environment configuration'
337
+ "Initialize directories following project structure",
338
+ "Configure build scripts and package.json",
339
+ "Set up environment configuration",
279
340
  ],
280
- requirements: 'FR-1, NFR-3'
341
+ requirements: "FR-1, NFR-3",
281
342
  },
282
343
  {
283
- title: 'Implement minimal code to pass tests',
344
+ title: "Implement minimal code to pass tests",
284
345
  subtasks: [
285
- 'Implement core feature logic to satisfy tests',
286
- 'Add necessary dependencies and modules',
287
- 'Ensure all tests pass (GREEN phase)',
288
- 'Do not add extra features beyond test requirements'
346
+ "Implement core feature logic to satisfy tests",
347
+ "Add necessary dependencies and modules",
348
+ "Ensure all tests pass (GREEN phase)",
349
+ "Do not add extra features beyond test requirements",
289
350
  ],
290
- requirements: 'FR-1 (Core Functionality)'
351
+ requirements: "FR-1 (Core Functionality)",
291
352
  },
292
353
  {
293
- title: 'Verify test coverage',
354
+ title: "Verify test coverage",
294
355
  subtasks: [
295
- 'Run coverage report (aim for 80%+ coverage)',
296
- 'Identify uncovered code paths',
297
- 'Add tests for uncovered branches',
298
- 'Document any intentionally untested code'
356
+ "Run coverage report (aim for 80%+ coverage)",
357
+ "Identify uncovered code paths",
358
+ "Add tests for uncovered branches",
359
+ "Document any intentionally untested code",
299
360
  ],
300
- requirements: 'NFR-3 (Quality Standards)'
301
- }
361
+ requirements: "NFR-3 (Quality Standards)",
362
+ },
302
363
  ];
303
364
  // Phase 3: Refactoring (REFACTOR - Improve Code Quality)
304
365
  const refactoring = [
305
366
  {
306
- title: 'Refactor for code quality and maintainability',
367
+ title: "Refactor for code quality and maintainability",
307
368
  subtasks: [
308
- 'Extract reusable components/functions (DRY principle)',
309
- 'Improve naming (variables, functions, classes)',
310
- 'Remove code duplication',
311
- 'Apply design patterns where appropriate',
312
- 'All tests must still pass after refactoring'
369
+ "Extract reusable components/functions (DRY principle)",
370
+ "Improve naming (variables, functions, classes)",
371
+ "Remove code duplication",
372
+ "Apply design patterns where appropriate",
373
+ "All tests must still pass after refactoring",
313
374
  ],
314
- requirements: 'NFR-3 (Maintainability)'
375
+ requirements: "NFR-3 (Maintainability)",
315
376
  },
316
377
  {
317
- title: 'Code quality validation',
378
+ title: "Code quality validation",
318
379
  subtasks: [
319
- 'Run linter and fix all issues',
320
- analysis.language === 'typescript' ? 'Run type checker (tsc --noEmit)' : 'Run static analysis',
321
- 'Apply Linus-style code review principles (see linus-review.md)',
322
- 'Peer review or self-review checklist'
380
+ "Run linter and fix all issues",
381
+ analysis.language === "typescript"
382
+ ? "Run type checker (tsc --noEmit)"
383
+ : "Run static analysis",
384
+ "Apply Linus-style code review principles (see linus-review.md)",
385
+ "Peer review or self-review checklist",
323
386
  ],
324
- requirements: 'NFR-3 (Quality Standards)'
325
- }
387
+ requirements: "NFR-3 (Quality Standards)",
388
+ },
326
389
  ];
327
390
  // Phase 4: Integration & Documentation
328
391
  const integration = [
329
392
  {
330
- title: 'Integration with existing system',
393
+ title: "Integration with existing system",
331
394
  subtasks: [
332
- 'Integrate with build system',
333
- 'Update configuration files',
334
- 'Test in development environment',
335
- 'Verify compatibility with existing code'
395
+ "Integrate with build system",
396
+ "Update configuration files",
397
+ "Test in development environment",
398
+ "Verify compatibility with existing code",
336
399
  ],
337
- requirements: 'FR-2, NFR-2 (Technology Integration, Reliability)'
400
+ requirements: "FR-2, NFR-2 (Technology Integration, Reliability)",
338
401
  },
339
402
  {
340
- title: 'Documentation and deployment preparation',
403
+ title: "Documentation and deployment preparation",
341
404
  subtasks: [
342
- 'Update API documentation',
343
- 'Add inline code comments for complex logic',
344
- 'Update README/CHANGELOG if needed',
345
- 'Prepare deployment configuration'
405
+ "Update API documentation",
406
+ "Add inline code comments for complex logic",
407
+ "Update README/CHANGELOG if needed",
408
+ "Prepare deployment configuration",
346
409
  ],
347
- requirements: 'NFR-3 (Maintainability)'
348
- }
410
+ requirements: "NFR-3 (Maintainability)",
411
+ },
349
412
  ];
350
413
  // Tailor tasks based on detected framework/architecture
351
- if (analysis.framework === 'MCP SDK') {
414
+ if (analysis.framework === "MCP SDK") {
352
415
  testSetup.push({
353
- title: 'Write tests for MCP tool handlers',
416
+ title: "Write tests for MCP tool handlers",
354
417
  subtasks: [
355
- 'Test tool registration and discovery',
356
- 'Test stdio transport communication',
357
- 'Test tool argument validation',
358
- 'Test tool response formatting'
418
+ "Test tool registration and discovery",
419
+ "Test stdio transport communication",
420
+ "Test tool argument validation",
421
+ "Test tool response formatting",
359
422
  ],
360
- requirements: 'FR-2 (MCP Integration)'
423
+ requirements: "FR-2 (MCP Integration)",
361
424
  });
362
425
  implementation.splice(1, 0, {
363
- title: 'Implement MCP tool handlers to pass tests',
426
+ title: "Implement MCP tool handlers to pass tests",
364
427
  subtasks: [
365
- 'Register MCP tools with server',
366
- 'Handle stdio transport communication',
367
- 'Implement tool argument validation',
368
- 'Format tool responses per MCP spec'
428
+ "Register MCP tools with server",
429
+ "Handle stdio transport communication",
430
+ "Implement tool argument validation",
431
+ "Format tool responses per MCP spec",
369
432
  ],
370
- requirements: 'FR-2 (MCP Integration)'
433
+ requirements: "FR-2 (MCP Integration)",
371
434
  });
372
435
  }
373
- if (analysis.architecture.includes('API')) {
436
+ if (analysis.architecture.includes("API")) {
374
437
  testSetup.push({
375
- title: 'Write tests for HTTP endpoints',
438
+ title: "Write tests for HTTP endpoints",
376
439
  subtasks: [
377
- 'Test route definitions and HTTP methods',
378
- 'Test request validation and error responses',
379
- 'Test successful response formats',
380
- 'Test authentication/authorization if needed'
440
+ "Test route definitions and HTTP methods",
441
+ "Test request validation and error responses",
442
+ "Test successful response formats",
443
+ "Test authentication/authorization if needed",
381
444
  ],
382
- requirements: 'FR-1, FR-2 (API Functionality)'
445
+ requirements: "FR-1, FR-2 (API Functionality)",
383
446
  });
384
447
  implementation.splice(1, 0, {
385
- title: 'Implement HTTP endpoints to pass tests',
448
+ title: "Implement HTTP endpoints to pass tests",
386
449
  subtasks: [
387
- 'Define routes and HTTP methods',
388
- 'Implement request handlers',
389
- 'Add input validation middleware',
390
- 'Implement error handling middleware'
450
+ "Define routes and HTTP methods",
451
+ "Implement request handlers",
452
+ "Add input validation middleware",
453
+ "Implement error handling middleware",
391
454
  ],
392
- requirements: 'FR-1, FR-2 (API Functionality)'
455
+ requirements: "FR-1, FR-2 (API Functionality)",
393
456
  });
394
457
  }
395
458
  // Add database tests if database framework detected
396
- if (analysis.dependencies?.some((d) => ['mongoose', 'sequelize', 'typeorm', 'prisma'].includes(d))) {
459
+ if (analysis.dependencies?.some((d) => ["mongoose", "sequelize", "typeorm", "prisma"].includes(d))) {
397
460
  testSetup.push({
398
- title: 'Write tests for data persistence',
461
+ title: "Write tests for data persistence",
399
462
  subtasks: [
400
- 'Set up test database or mocks',
401
- 'Test CRUD operations',
402
- 'Test data validation rules',
403
- 'Test error handling for DB failures'
463
+ "Set up test database or mocks",
464
+ "Test CRUD operations",
465
+ "Test data validation rules",
466
+ "Test error handling for DB failures",
404
467
  ],
405
- requirements: 'FR-2, NFR-2 (Data Integration, Reliability)'
468
+ requirements: "FR-2, NFR-2 (Data Integration, Reliability)",
406
469
  });
407
470
  }
471
+ // Apply governance enforcement to all task arrays
472
+ const governedTestSetup = enforceGovernance(testSetup);
473
+ const governedImplementation = enforceGovernance(implementation);
474
+ const governedRefactoring = enforceGovernance(refactoring);
475
+ const governedIntegration = enforceGovernance(integration);
408
476
  return {
409
- testSetup,
410
- implementation,
411
- refactoring,
412
- integration
477
+ testSetup: governedTestSetup,
478
+ implementation: governedImplementation,
479
+ refactoring: governedRefactoring,
480
+ integration: governedIntegration,
413
481
  };
414
482
  }
415
483
  //# sourceMappingURL=specGenerator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"specGenerator.js","sourceRoot":"","sources":["../../src/utils/specGenerator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"specGenerator.js","sourceRoot":"","sources":["../../src/utils/specGenerator.ts"],"names":[],"mappings":"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"}