sdd-mcp-server 1.0.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/LICENSE +21 -0
- package/README.md +256 -0
- package/dist/__tests__/setup.d.ts +44 -0
- package/dist/__tests__/setup.js +178 -0
- package/dist/__tests__/setup.js.map +1 -0
- package/dist/__tests__/test-helpers/mock-factories.d.ts +26 -0
- package/dist/__tests__/test-helpers/mock-factories.js +466 -0
- package/dist/__tests__/test-helpers/mock-factories.js.map +1 -0
- package/dist/adapters/cli/SDDToolAdapter.d.ts +26 -0
- package/dist/adapters/cli/SDDToolAdapter.js +273 -0
- package/dist/adapters/cli/SDDToolAdapter.js.map +1 -0
- package/dist/application/services/CodebaseAnalysisService.d.ts +38 -0
- package/dist/application/services/CodebaseAnalysisService.js +737 -0
- package/dist/application/services/CodebaseAnalysisService.js.map +1 -0
- package/dist/application/services/LocalizationService.d.ts +184 -0
- package/dist/application/services/LocalizationService.js +536 -0
- package/dist/application/services/LocalizationService.js.map +1 -0
- package/dist/application/services/ProjectContextService.d.ts +61 -0
- package/dist/application/services/ProjectContextService.js +550 -0
- package/dist/application/services/ProjectContextService.js.map +1 -0
- package/dist/application/services/ProjectInitializationService.d.ts +57 -0
- package/dist/application/services/ProjectInitializationService.js +485 -0
- package/dist/application/services/ProjectInitializationService.js.map +1 -0
- package/dist/application/services/ProjectService.d.ts +19 -0
- package/dist/application/services/ProjectService.js +159 -0
- package/dist/application/services/ProjectService.js.map +1 -0
- package/dist/application/services/QualityGateService.d.ts +62 -0
- package/dist/application/services/QualityGateService.js +428 -0
- package/dist/application/services/QualityGateService.js.map +1 -0
- package/dist/application/services/QualityService.d.ts +43 -0
- package/dist/application/services/QualityService.js +245 -0
- package/dist/application/services/QualityService.js.map +1 -0
- package/dist/application/services/SteeringDocumentService.d.ts +62 -0
- package/dist/application/services/SteeringDocumentService.js +694 -0
- package/dist/application/services/SteeringDocumentService.js.map +1 -0
- package/dist/application/services/TemplateService.d.ts +47 -0
- package/dist/application/services/TemplateService.js +438 -0
- package/dist/application/services/TemplateService.js.map +1 -0
- package/dist/application/services/WorkflowEngineService.d.ts +56 -0
- package/dist/application/services/WorkflowEngineService.js +348 -0
- package/dist/application/services/WorkflowEngineService.js.map +1 -0
- package/dist/application/services/WorkflowService.d.ts +22 -0
- package/dist/application/services/WorkflowService.js +147 -0
- package/dist/application/services/WorkflowService.js.map +1 -0
- package/dist/application/services/WorkflowValidationService.d.ts +51 -0
- package/dist/application/services/WorkflowValidationService.js +665 -0
- package/dist/application/services/WorkflowValidationService.js.map +1 -0
- package/dist/domain/context/ProjectContext.d.ts +350 -0
- package/dist/domain/context/ProjectContext.js +138 -0
- package/dist/domain/context/ProjectContext.js.map +1 -0
- package/dist/domain/i18n/index.d.ts +286 -0
- package/dist/domain/i18n/index.js +97 -0
- package/dist/domain/i18n/index.js.map +1 -0
- package/dist/domain/plugins/index.d.ts +498 -0
- package/dist/domain/plugins/index.js +157 -0
- package/dist/domain/plugins/index.js.map +1 -0
- package/dist/domain/ports.d.ts +54 -0
- package/dist/domain/ports.js +3 -0
- package/dist/domain/ports.js.map +1 -0
- package/dist/domain/quality/index.d.ts +361 -0
- package/dist/domain/quality/index.js +113 -0
- package/dist/domain/quality/index.js.map +1 -0
- package/dist/domain/services/DomainService.d.ts +18 -0
- package/dist/domain/services/DomainService.js +71 -0
- package/dist/domain/services/DomainService.js.map +1 -0
- package/dist/domain/templates/index.d.ts +158 -0
- package/dist/domain/templates/index.js +22 -0
- package/dist/domain/templates/index.js.map +1 -0
- package/dist/domain/types.d.ts +115 -0
- package/dist/domain/types.js +37 -0
- package/dist/domain/types.js.map +1 -0
- package/dist/domain/workflow/WorkflowStateMachine.d.ts +62 -0
- package/dist/domain/workflow/WorkflowStateMachine.js +286 -0
- package/dist/domain/workflow/WorkflowStateMachine.js.map +1 -0
- package/dist/index.d.ts +19 -0
- package/dist/index.js +97 -0
- package/dist/index.js.map +1 -0
- package/dist/infrastructure/adapters/AjvValidationAdapter.d.ts +7 -0
- package/dist/infrastructure/adapters/AjvValidationAdapter.js +37 -0
- package/dist/infrastructure/adapters/AjvValidationAdapter.js.map +1 -0
- package/dist/infrastructure/adapters/ConsoleLoggerAdapter.d.ts +8 -0
- package/dist/infrastructure/adapters/ConsoleLoggerAdapter.js +41 -0
- package/dist/infrastructure/adapters/ConsoleLoggerAdapter.js.map +1 -0
- package/dist/infrastructure/adapters/FileBasedTaskTracker.d.ts +9 -0
- package/dist/infrastructure/adapters/FileBasedTaskTracker.js +41 -0
- package/dist/infrastructure/adapters/FileBasedTaskTracker.js.map +1 -0
- package/dist/infrastructure/adapters/HandlebarsTemplateEngine.d.ts +8 -0
- package/dist/infrastructure/adapters/HandlebarsTemplateEngine.js +38 -0
- package/dist/infrastructure/adapters/HandlebarsTemplateEngine.js.map +1 -0
- package/dist/infrastructure/adapters/JsonConfigurationAdapter.d.ts +7 -0
- package/dist/infrastructure/adapters/JsonConfigurationAdapter.js +24 -0
- package/dist/infrastructure/adapters/JsonConfigurationAdapter.js.map +1 -0
- package/dist/infrastructure/adapters/LinusQualityAnalyzer.d.ts +9 -0
- package/dist/infrastructure/adapters/LinusQualityAnalyzer.js +75 -0
- package/dist/infrastructure/adapters/LinusQualityAnalyzer.js.map +1 -0
- package/dist/infrastructure/adapters/NodeFileSystemAdapter.d.ts +12 -0
- package/dist/infrastructure/adapters/NodeFileSystemAdapter.js +39 -0
- package/dist/infrastructure/adapters/NodeFileSystemAdapter.js.map +1 -0
- package/dist/infrastructure/di/container.d.ts +3 -0
- package/dist/infrastructure/di/container.js +98 -0
- package/dist/infrastructure/di/container.js.map +1 -0
- package/dist/infrastructure/di/types.d.ts +39 -0
- package/dist/infrastructure/di/types.js +45 -0
- package/dist/infrastructure/di/types.js.map +1 -0
- package/dist/infrastructure/i18n/I18nextService.d.ts +27 -0
- package/dist/infrastructure/i18n/I18nextService.js +357 -0
- package/dist/infrastructure/i18n/I18nextService.js.map +1 -0
- package/dist/infrastructure/mcp/CapabilityNegotiator.d.ts +21 -0
- package/dist/infrastructure/mcp/CapabilityNegotiator.js +75 -0
- package/dist/infrastructure/mcp/CapabilityNegotiator.js.map +1 -0
- package/dist/infrastructure/mcp/ErrorHandler.d.ts +29 -0
- package/dist/infrastructure/mcp/ErrorHandler.js +101 -0
- package/dist/infrastructure/mcp/ErrorHandler.js.map +1 -0
- package/dist/infrastructure/mcp/MCPServer.d.ts +25 -0
- package/dist/infrastructure/mcp/MCPServer.js +246 -0
- package/dist/infrastructure/mcp/MCPServer.js.map +1 -0
- package/dist/infrastructure/mcp/PromptManager.d.ts +18 -0
- package/dist/infrastructure/mcp/PromptManager.js +373 -0
- package/dist/infrastructure/mcp/PromptManager.js.map +1 -0
- package/dist/infrastructure/mcp/ResourceManager.d.ts +15 -0
- package/dist/infrastructure/mcp/ResourceManager.js +229 -0
- package/dist/infrastructure/mcp/ResourceManager.js.map +1 -0
- package/dist/infrastructure/mcp/SessionManager.d.ts +64 -0
- package/dist/infrastructure/mcp/SessionManager.js +221 -0
- package/dist/infrastructure/mcp/SessionManager.js.map +1 -0
- package/dist/infrastructure/mcp/ToolRegistry.d.ts +48 -0
- package/dist/infrastructure/mcp/ToolRegistry.js +235 -0
- package/dist/infrastructure/mcp/ToolRegistry.js.map +1 -0
- package/dist/infrastructure/platform/PlatformAdapter.d.ts +46 -0
- package/dist/infrastructure/platform/PlatformAdapter.js +355 -0
- package/dist/infrastructure/platform/PlatformAdapter.js.map +1 -0
- package/dist/infrastructure/plugins/HookSystem.d.ts +40 -0
- package/dist/infrastructure/plugins/HookSystem.js +415 -0
- package/dist/infrastructure/plugins/HookSystem.js.map +1 -0
- package/dist/infrastructure/plugins/PluginManager.d.ts +51 -0
- package/dist/infrastructure/plugins/PluginManager.js +650 -0
- package/dist/infrastructure/plugins/PluginManager.js.map +1 -0
- package/dist/infrastructure/plugins/PluginSteeringRegistry.d.ts +63 -0
- package/dist/infrastructure/plugins/PluginSteeringRegistry.js +439 -0
- package/dist/infrastructure/plugins/PluginSteeringRegistry.js.map +1 -0
- package/dist/infrastructure/plugins/PluginToolRegistry.d.ts +54 -0
- package/dist/infrastructure/plugins/PluginToolRegistry.js +490 -0
- package/dist/infrastructure/plugins/PluginToolRegistry.js.map +1 -0
- package/dist/infrastructure/quality/ASTAnalyzer.d.ts +65 -0
- package/dist/infrastructure/quality/ASTAnalyzer.js +439 -0
- package/dist/infrastructure/quality/ASTAnalyzer.js.map +1 -0
- package/dist/infrastructure/quality/LinusCodeReviewer.d.ts +52 -0
- package/dist/infrastructure/quality/LinusCodeReviewer.js +551 -0
- package/dist/infrastructure/quality/LinusCodeReviewer.js.map +1 -0
- package/dist/infrastructure/repositories/InMemoryProjectRepository.d.ts +10 -0
- package/dist/infrastructure/repositories/InMemoryProjectRepository.js +35 -0
- package/dist/infrastructure/repositories/InMemoryProjectRepository.js.map +1 -0
- package/dist/infrastructure/schemas/project.schema.d.ts +192 -0
- package/dist/infrastructure/schemas/project.schema.js +114 -0
- package/dist/infrastructure/schemas/project.schema.js.map +1 -0
- package/dist/infrastructure/templates/FileGenerator.d.ts +15 -0
- package/dist/infrastructure/templates/FileGenerator.js +385 -0
- package/dist/infrastructure/templates/FileGenerator.js.map +1 -0
- package/dist/infrastructure/templates/HandlebarsRenderer.d.ts +16 -0
- package/dist/infrastructure/templates/HandlebarsRenderer.js +252 -0
- package/dist/infrastructure/templates/HandlebarsRenderer.js.map +1 -0
- package/dist/infrastructure/templates/TemplateManager.d.ts +36 -0
- package/dist/infrastructure/templates/TemplateManager.js +777 -0
- package/dist/infrastructure/templates/TemplateManager.js.map +1 -0
- package/package.json +89 -0
|
@@ -0,0 +1,273 @@
|
|
|
1
|
+
// Adapter layer for integrating SDD tools with MCP protocol
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
import { injectable, inject } from 'inversify';
|
|
15
|
+
import { TYPES } from '../../infrastructure/di/types.js';
|
|
16
|
+
import { ProjectService } from '../../application/services/ProjectService.js';
|
|
17
|
+
import { WorkflowService } from '../../application/services/WorkflowService.js';
|
|
18
|
+
import { TemplateService } from '../../application/services/TemplateService.js';
|
|
19
|
+
import { QualityService } from '../../application/services/QualityService.js';
|
|
20
|
+
import { WorkflowPhase } from '../../domain/types.js';
|
|
21
|
+
let SDDToolAdapter = class SDDToolAdapter {
|
|
22
|
+
projectService;
|
|
23
|
+
workflowService;
|
|
24
|
+
templateService;
|
|
25
|
+
qualityService;
|
|
26
|
+
logger;
|
|
27
|
+
constructor(projectService, workflowService, templateService, qualityService, logger) {
|
|
28
|
+
this.projectService = projectService;
|
|
29
|
+
this.workflowService = workflowService;
|
|
30
|
+
this.templateService = templateService;
|
|
31
|
+
this.qualityService = qualityService;
|
|
32
|
+
this.logger = logger;
|
|
33
|
+
}
|
|
34
|
+
getSDDTools() {
|
|
35
|
+
return [
|
|
36
|
+
{
|
|
37
|
+
name: 'sdd-init',
|
|
38
|
+
tool: {
|
|
39
|
+
name: 'sdd-init',
|
|
40
|
+
description: 'Initialize a new SDD project with directory structure and spec files',
|
|
41
|
+
inputSchema: {
|
|
42
|
+
type: 'object',
|
|
43
|
+
properties: {
|
|
44
|
+
name: { type: 'string', description: 'Project name' },
|
|
45
|
+
path: { type: 'string', description: 'Project path' },
|
|
46
|
+
language: { type: 'string', enum: ['en', 'ja', 'zh-TW'], default: 'en' }
|
|
47
|
+
},
|
|
48
|
+
required: ['name', 'path']
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
handler: this.handleProjectInit.bind(this)
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
name: 'sdd-status',
|
|
55
|
+
tool: {
|
|
56
|
+
name: 'sdd-status',
|
|
57
|
+
description: 'Get current project status and workflow phase information',
|
|
58
|
+
inputSchema: {
|
|
59
|
+
type: 'object',
|
|
60
|
+
properties: {
|
|
61
|
+
projectId: { type: 'string', description: 'Project ID' },
|
|
62
|
+
projectPath: { type: 'string', description: 'Project path (alternative to ID)' }
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
handler: this.handleProjectStatus.bind(this)
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
name: 'sdd-requirements',
|
|
70
|
+
tool: {
|
|
71
|
+
name: 'sdd-requirements',
|
|
72
|
+
description: 'Generate requirements document template',
|
|
73
|
+
inputSchema: {
|
|
74
|
+
type: 'object',
|
|
75
|
+
properties: {
|
|
76
|
+
projectId: { type: 'string', description: 'Project ID' }
|
|
77
|
+
},
|
|
78
|
+
required: ['projectId']
|
|
79
|
+
}
|
|
80
|
+
},
|
|
81
|
+
handler: this.handleRequirements.bind(this)
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
name: 'sdd-design',
|
|
85
|
+
tool: {
|
|
86
|
+
name: 'sdd-design',
|
|
87
|
+
description: 'Generate design document template',
|
|
88
|
+
inputSchema: {
|
|
89
|
+
type: 'object',
|
|
90
|
+
properties: {
|
|
91
|
+
projectId: { type: 'string', description: 'Project ID' }
|
|
92
|
+
},
|
|
93
|
+
required: ['projectId']
|
|
94
|
+
}
|
|
95
|
+
},
|
|
96
|
+
handler: this.handleDesign.bind(this)
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
name: 'sdd-tasks',
|
|
100
|
+
tool: {
|
|
101
|
+
name: 'sdd-tasks',
|
|
102
|
+
description: 'Generate implementation tasks document',
|
|
103
|
+
inputSchema: {
|
|
104
|
+
type: 'object',
|
|
105
|
+
properties: {
|
|
106
|
+
projectId: { type: 'string', description: 'Project ID' }
|
|
107
|
+
},
|
|
108
|
+
required: ['projectId']
|
|
109
|
+
}
|
|
110
|
+
},
|
|
111
|
+
handler: this.handleTasks.bind(this)
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
name: 'sdd-quality-check',
|
|
115
|
+
tool: {
|
|
116
|
+
name: 'sdd-quality-check',
|
|
117
|
+
description: 'Perform Linus-style code quality analysis',
|
|
118
|
+
inputSchema: {
|
|
119
|
+
type: 'object',
|
|
120
|
+
properties: {
|
|
121
|
+
code: { type: 'string', description: 'Code to analyze' },
|
|
122
|
+
language: { type: 'string', description: 'Programming language' }
|
|
123
|
+
},
|
|
124
|
+
required: ['code']
|
|
125
|
+
}
|
|
126
|
+
},
|
|
127
|
+
handler: this.handleQualityCheck.bind(this)
|
|
128
|
+
}
|
|
129
|
+
];
|
|
130
|
+
}
|
|
131
|
+
async handleProjectInit(args) {
|
|
132
|
+
const { name, path, language = 'en' } = args;
|
|
133
|
+
if (typeof name !== 'string' || typeof path !== 'string') {
|
|
134
|
+
throw new Error('Invalid arguments: name and path must be strings');
|
|
135
|
+
}
|
|
136
|
+
const project = await this.projectService.createProject(name, path, language);
|
|
137
|
+
// Generate initial spec.json
|
|
138
|
+
const specContent = await this.templateService.generateSpecJson(project);
|
|
139
|
+
await this.templateService.writeProjectFile(project, 'spec.json', specContent);
|
|
140
|
+
return `Project "${name}" initialized successfully at ${path}\nProject ID: ${project.id}`;
|
|
141
|
+
}
|
|
142
|
+
async handleProjectStatus(args) {
|
|
143
|
+
const { projectId, projectPath } = args;
|
|
144
|
+
let project;
|
|
145
|
+
if (projectId && typeof projectId === 'string') {
|
|
146
|
+
project = await this.projectService.getProject(projectId);
|
|
147
|
+
}
|
|
148
|
+
else if (projectPath && typeof projectPath === 'string') {
|
|
149
|
+
project = await this.projectService.getProjectByPath(projectPath);
|
|
150
|
+
}
|
|
151
|
+
else {
|
|
152
|
+
throw new Error('Either projectId or projectPath must be provided');
|
|
153
|
+
}
|
|
154
|
+
if (!project) {
|
|
155
|
+
return 'Project not found';
|
|
156
|
+
}
|
|
157
|
+
const status = await this.workflowService.getWorkflowStatus(project.id);
|
|
158
|
+
if (!status) {
|
|
159
|
+
return 'Unable to get workflow status';
|
|
160
|
+
}
|
|
161
|
+
let output = `Project: ${project.name}\n`;
|
|
162
|
+
output += `Current Phase: ${status.currentPhase}\n`;
|
|
163
|
+
output += `Next Phase: ${status.nextPhase ?? 'Complete'}\n`;
|
|
164
|
+
output += `Can Progress: ${status.canProgress ? 'Yes' : 'No'}\n`;
|
|
165
|
+
if (status.blockers && status.blockers.length > 0) {
|
|
166
|
+
output += `Blockers:\n`;
|
|
167
|
+
for (const blocker of status.blockers) {
|
|
168
|
+
output += `- ${blocker}\n`;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
return output;
|
|
172
|
+
}
|
|
173
|
+
async handleRequirements(args) {
|
|
174
|
+
const { projectId } = args;
|
|
175
|
+
if (typeof projectId !== 'string') {
|
|
176
|
+
throw new Error('Invalid argument: projectId must be a string');
|
|
177
|
+
}
|
|
178
|
+
const project = await this.projectService.getProject(projectId);
|
|
179
|
+
if (!project) {
|
|
180
|
+
throw new Error('Project not found');
|
|
181
|
+
}
|
|
182
|
+
// Check if can transition to requirements phase
|
|
183
|
+
const validation = await this.workflowService.validatePhaseTransition(projectId, WorkflowPhase.REQUIREMENTS);
|
|
184
|
+
if (!validation.canProgress) {
|
|
185
|
+
throw new Error(`Cannot generate requirements: ${validation.reason}`);
|
|
186
|
+
}
|
|
187
|
+
// Generate requirements template
|
|
188
|
+
const content = await this.templateService.generateRequirementsTemplate(project);
|
|
189
|
+
await this.templateService.writeProjectFile(project, 'requirements.md', content);
|
|
190
|
+
// Update project phase and approval status
|
|
191
|
+
await this.projectService.updateProjectPhase(projectId, WorkflowPhase.REQUIREMENTS);
|
|
192
|
+
await this.projectService.updateApprovalStatus(projectId, 'requirements', {
|
|
193
|
+
generated: true,
|
|
194
|
+
approved: false
|
|
195
|
+
});
|
|
196
|
+
return `Requirements document generated for project "${project.name}"`;
|
|
197
|
+
}
|
|
198
|
+
async handleDesign(args) {
|
|
199
|
+
const { projectId } = args;
|
|
200
|
+
if (typeof projectId !== 'string') {
|
|
201
|
+
throw new Error('Invalid argument: projectId must be a string');
|
|
202
|
+
}
|
|
203
|
+
const project = await this.projectService.getProject(projectId);
|
|
204
|
+
if (!project) {
|
|
205
|
+
throw new Error('Project not found');
|
|
206
|
+
}
|
|
207
|
+
// Check if can transition to design phase
|
|
208
|
+
const validation = await this.workflowService.validatePhaseTransition(projectId, WorkflowPhase.DESIGN);
|
|
209
|
+
if (!validation.canProgress) {
|
|
210
|
+
throw new Error(`Cannot generate design: ${validation.reason}`);
|
|
211
|
+
}
|
|
212
|
+
// Generate design template
|
|
213
|
+
const content = await this.templateService.generateDesignTemplate(project);
|
|
214
|
+
await this.templateService.writeProjectFile(project, 'design.md', content);
|
|
215
|
+
// Update project phase and approval status
|
|
216
|
+
await this.projectService.updateProjectPhase(projectId, WorkflowPhase.DESIGN);
|
|
217
|
+
await this.projectService.updateApprovalStatus(projectId, 'design', {
|
|
218
|
+
generated: true,
|
|
219
|
+
approved: false
|
|
220
|
+
});
|
|
221
|
+
return `Design document generated for project "${project.name}"`;
|
|
222
|
+
}
|
|
223
|
+
async handleTasks(args) {
|
|
224
|
+
const { projectId } = args;
|
|
225
|
+
if (typeof projectId !== 'string') {
|
|
226
|
+
throw new Error('Invalid argument: projectId must be a string');
|
|
227
|
+
}
|
|
228
|
+
const project = await this.projectService.getProject(projectId);
|
|
229
|
+
if (!project) {
|
|
230
|
+
throw new Error('Project not found');
|
|
231
|
+
}
|
|
232
|
+
// Check if can transition to tasks phase
|
|
233
|
+
const validation = await this.workflowService.validatePhaseTransition(projectId, WorkflowPhase.TASKS);
|
|
234
|
+
if (!validation.canProgress) {
|
|
235
|
+
throw new Error(`Cannot generate tasks: ${validation.reason}`);
|
|
236
|
+
}
|
|
237
|
+
// Generate tasks template
|
|
238
|
+
const content = await this.templateService.generateTasksTemplate(project);
|
|
239
|
+
await this.templateService.writeProjectFile(project, 'tasks.md', content);
|
|
240
|
+
// Update project phase and approval status
|
|
241
|
+
await this.projectService.updateProjectPhase(projectId, WorkflowPhase.TASKS);
|
|
242
|
+
await this.projectService.updateApprovalStatus(projectId, 'tasks', {
|
|
243
|
+
generated: true,
|
|
244
|
+
approved: false
|
|
245
|
+
});
|
|
246
|
+
return `Tasks document generated for project "${project.name}"`;
|
|
247
|
+
}
|
|
248
|
+
async handleQualityCheck(args) {
|
|
249
|
+
const { code, language = 'typescript' } = args;
|
|
250
|
+
if (typeof code !== 'string') {
|
|
251
|
+
throw new Error('Invalid argument: code must be a string');
|
|
252
|
+
}
|
|
253
|
+
const report = await this.qualityService.performQualityCheck({
|
|
254
|
+
code,
|
|
255
|
+
language: language
|
|
256
|
+
});
|
|
257
|
+
return this.qualityService.formatQualityReport(report);
|
|
258
|
+
}
|
|
259
|
+
};
|
|
260
|
+
SDDToolAdapter = __decorate([
|
|
261
|
+
injectable(),
|
|
262
|
+
__param(0, inject(TYPES.ProjectService)),
|
|
263
|
+
__param(1, inject(TYPES.WorkflowService)),
|
|
264
|
+
__param(2, inject(TYPES.TemplateService)),
|
|
265
|
+
__param(3, inject(TYPES.QualityService)),
|
|
266
|
+
__param(4, inject(TYPES.LoggerPort)),
|
|
267
|
+
__metadata("design:paramtypes", [ProjectService,
|
|
268
|
+
WorkflowService,
|
|
269
|
+
TemplateService,
|
|
270
|
+
QualityService, Object])
|
|
271
|
+
], SDDToolAdapter);
|
|
272
|
+
export { SDDToolAdapter };
|
|
273
|
+
//# sourceMappingURL=SDDToolAdapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SDDToolAdapter.js","sourceRoot":"","sources":["../../../src/adapters/cli/SDDToolAdapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { FileSystemPort, LoggerPort, ValidationPort } from '../../domain/ports.js';
|
|
2
|
+
import { CodebaseAnalysis, ProgrammingLanguage, Technology } from '../../domain/context/ProjectContext.js';
|
|
3
|
+
export interface AnalysisOptions {
|
|
4
|
+
includeNodeModules?: boolean;
|
|
5
|
+
includeBuildOutputs?: boolean;
|
|
6
|
+
maxDepth?: number;
|
|
7
|
+
languages?: ProgrammingLanguage[];
|
|
8
|
+
skipPatterns?: string[];
|
|
9
|
+
}
|
|
10
|
+
export interface TechnologyDetectionResult {
|
|
11
|
+
technologies: Technology[];
|
|
12
|
+
confidence: number;
|
|
13
|
+
evidence: string[];
|
|
14
|
+
}
|
|
15
|
+
export declare class CodebaseAnalysisService {
|
|
16
|
+
private readonly fileSystem;
|
|
17
|
+
private readonly logger;
|
|
18
|
+
private readonly validation;
|
|
19
|
+
private readonly defaultIgnorePatterns;
|
|
20
|
+
constructor(fileSystem: FileSystemPort, logger: LoggerPort, validation: ValidationPort);
|
|
21
|
+
analyzeCodebase(projectPath: string, options?: AnalysisOptions): Promise<CodebaseAnalysis>;
|
|
22
|
+
private analyzeFileStructure;
|
|
23
|
+
private traverseDirectory;
|
|
24
|
+
private analyzeFile;
|
|
25
|
+
private detectFileLanguage;
|
|
26
|
+
private determineFileType;
|
|
27
|
+
private determineDirectoryPurpose;
|
|
28
|
+
private extractFileDependencies;
|
|
29
|
+
private calculateFileComplexity;
|
|
30
|
+
private detectTechnologyStack;
|
|
31
|
+
private detectFrameworks;
|
|
32
|
+
private detectArchitecturePatterns;
|
|
33
|
+
private analyzeDependencies;
|
|
34
|
+
private buildDependencyGraph;
|
|
35
|
+
private calculateCodeMetrics;
|
|
36
|
+
private identifyComplexityHotspots;
|
|
37
|
+
private countFilesInDirectory;
|
|
38
|
+
}
|