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.
Files changed (165) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +256 -0
  3. package/dist/__tests__/setup.d.ts +44 -0
  4. package/dist/__tests__/setup.js +178 -0
  5. package/dist/__tests__/setup.js.map +1 -0
  6. package/dist/__tests__/test-helpers/mock-factories.d.ts +26 -0
  7. package/dist/__tests__/test-helpers/mock-factories.js +466 -0
  8. package/dist/__tests__/test-helpers/mock-factories.js.map +1 -0
  9. package/dist/adapters/cli/SDDToolAdapter.d.ts +26 -0
  10. package/dist/adapters/cli/SDDToolAdapter.js +273 -0
  11. package/dist/adapters/cli/SDDToolAdapter.js.map +1 -0
  12. package/dist/application/services/CodebaseAnalysisService.d.ts +38 -0
  13. package/dist/application/services/CodebaseAnalysisService.js +737 -0
  14. package/dist/application/services/CodebaseAnalysisService.js.map +1 -0
  15. package/dist/application/services/LocalizationService.d.ts +184 -0
  16. package/dist/application/services/LocalizationService.js +536 -0
  17. package/dist/application/services/LocalizationService.js.map +1 -0
  18. package/dist/application/services/ProjectContextService.d.ts +61 -0
  19. package/dist/application/services/ProjectContextService.js +550 -0
  20. package/dist/application/services/ProjectContextService.js.map +1 -0
  21. package/dist/application/services/ProjectInitializationService.d.ts +57 -0
  22. package/dist/application/services/ProjectInitializationService.js +485 -0
  23. package/dist/application/services/ProjectInitializationService.js.map +1 -0
  24. package/dist/application/services/ProjectService.d.ts +19 -0
  25. package/dist/application/services/ProjectService.js +159 -0
  26. package/dist/application/services/ProjectService.js.map +1 -0
  27. package/dist/application/services/QualityGateService.d.ts +62 -0
  28. package/dist/application/services/QualityGateService.js +428 -0
  29. package/dist/application/services/QualityGateService.js.map +1 -0
  30. package/dist/application/services/QualityService.d.ts +43 -0
  31. package/dist/application/services/QualityService.js +245 -0
  32. package/dist/application/services/QualityService.js.map +1 -0
  33. package/dist/application/services/SteeringDocumentService.d.ts +62 -0
  34. package/dist/application/services/SteeringDocumentService.js +694 -0
  35. package/dist/application/services/SteeringDocumentService.js.map +1 -0
  36. package/dist/application/services/TemplateService.d.ts +47 -0
  37. package/dist/application/services/TemplateService.js +438 -0
  38. package/dist/application/services/TemplateService.js.map +1 -0
  39. package/dist/application/services/WorkflowEngineService.d.ts +56 -0
  40. package/dist/application/services/WorkflowEngineService.js +348 -0
  41. package/dist/application/services/WorkflowEngineService.js.map +1 -0
  42. package/dist/application/services/WorkflowService.d.ts +22 -0
  43. package/dist/application/services/WorkflowService.js +147 -0
  44. package/dist/application/services/WorkflowService.js.map +1 -0
  45. package/dist/application/services/WorkflowValidationService.d.ts +51 -0
  46. package/dist/application/services/WorkflowValidationService.js +665 -0
  47. package/dist/application/services/WorkflowValidationService.js.map +1 -0
  48. package/dist/domain/context/ProjectContext.d.ts +350 -0
  49. package/dist/domain/context/ProjectContext.js +138 -0
  50. package/dist/domain/context/ProjectContext.js.map +1 -0
  51. package/dist/domain/i18n/index.d.ts +286 -0
  52. package/dist/domain/i18n/index.js +97 -0
  53. package/dist/domain/i18n/index.js.map +1 -0
  54. package/dist/domain/plugins/index.d.ts +498 -0
  55. package/dist/domain/plugins/index.js +157 -0
  56. package/dist/domain/plugins/index.js.map +1 -0
  57. package/dist/domain/ports.d.ts +54 -0
  58. package/dist/domain/ports.js +3 -0
  59. package/dist/domain/ports.js.map +1 -0
  60. package/dist/domain/quality/index.d.ts +361 -0
  61. package/dist/domain/quality/index.js +113 -0
  62. package/dist/domain/quality/index.js.map +1 -0
  63. package/dist/domain/services/DomainService.d.ts +18 -0
  64. package/dist/domain/services/DomainService.js +71 -0
  65. package/dist/domain/services/DomainService.js.map +1 -0
  66. package/dist/domain/templates/index.d.ts +158 -0
  67. package/dist/domain/templates/index.js +22 -0
  68. package/dist/domain/templates/index.js.map +1 -0
  69. package/dist/domain/types.d.ts +115 -0
  70. package/dist/domain/types.js +37 -0
  71. package/dist/domain/types.js.map +1 -0
  72. package/dist/domain/workflow/WorkflowStateMachine.d.ts +62 -0
  73. package/dist/domain/workflow/WorkflowStateMachine.js +286 -0
  74. package/dist/domain/workflow/WorkflowStateMachine.js.map +1 -0
  75. package/dist/index.d.ts +19 -0
  76. package/dist/index.js +97 -0
  77. package/dist/index.js.map +1 -0
  78. package/dist/infrastructure/adapters/AjvValidationAdapter.d.ts +7 -0
  79. package/dist/infrastructure/adapters/AjvValidationAdapter.js +37 -0
  80. package/dist/infrastructure/adapters/AjvValidationAdapter.js.map +1 -0
  81. package/dist/infrastructure/adapters/ConsoleLoggerAdapter.d.ts +8 -0
  82. package/dist/infrastructure/adapters/ConsoleLoggerAdapter.js +41 -0
  83. package/dist/infrastructure/adapters/ConsoleLoggerAdapter.js.map +1 -0
  84. package/dist/infrastructure/adapters/FileBasedTaskTracker.d.ts +9 -0
  85. package/dist/infrastructure/adapters/FileBasedTaskTracker.js +41 -0
  86. package/dist/infrastructure/adapters/FileBasedTaskTracker.js.map +1 -0
  87. package/dist/infrastructure/adapters/HandlebarsTemplateEngine.d.ts +8 -0
  88. package/dist/infrastructure/adapters/HandlebarsTemplateEngine.js +38 -0
  89. package/dist/infrastructure/adapters/HandlebarsTemplateEngine.js.map +1 -0
  90. package/dist/infrastructure/adapters/JsonConfigurationAdapter.d.ts +7 -0
  91. package/dist/infrastructure/adapters/JsonConfigurationAdapter.js +24 -0
  92. package/dist/infrastructure/adapters/JsonConfigurationAdapter.js.map +1 -0
  93. package/dist/infrastructure/adapters/LinusQualityAnalyzer.d.ts +9 -0
  94. package/dist/infrastructure/adapters/LinusQualityAnalyzer.js +75 -0
  95. package/dist/infrastructure/adapters/LinusQualityAnalyzer.js.map +1 -0
  96. package/dist/infrastructure/adapters/NodeFileSystemAdapter.d.ts +12 -0
  97. package/dist/infrastructure/adapters/NodeFileSystemAdapter.js +39 -0
  98. package/dist/infrastructure/adapters/NodeFileSystemAdapter.js.map +1 -0
  99. package/dist/infrastructure/di/container.d.ts +3 -0
  100. package/dist/infrastructure/di/container.js +98 -0
  101. package/dist/infrastructure/di/container.js.map +1 -0
  102. package/dist/infrastructure/di/types.d.ts +39 -0
  103. package/dist/infrastructure/di/types.js +45 -0
  104. package/dist/infrastructure/di/types.js.map +1 -0
  105. package/dist/infrastructure/i18n/I18nextService.d.ts +27 -0
  106. package/dist/infrastructure/i18n/I18nextService.js +357 -0
  107. package/dist/infrastructure/i18n/I18nextService.js.map +1 -0
  108. package/dist/infrastructure/mcp/CapabilityNegotiator.d.ts +21 -0
  109. package/dist/infrastructure/mcp/CapabilityNegotiator.js +75 -0
  110. package/dist/infrastructure/mcp/CapabilityNegotiator.js.map +1 -0
  111. package/dist/infrastructure/mcp/ErrorHandler.d.ts +29 -0
  112. package/dist/infrastructure/mcp/ErrorHandler.js +101 -0
  113. package/dist/infrastructure/mcp/ErrorHandler.js.map +1 -0
  114. package/dist/infrastructure/mcp/MCPServer.d.ts +25 -0
  115. package/dist/infrastructure/mcp/MCPServer.js +246 -0
  116. package/dist/infrastructure/mcp/MCPServer.js.map +1 -0
  117. package/dist/infrastructure/mcp/PromptManager.d.ts +18 -0
  118. package/dist/infrastructure/mcp/PromptManager.js +373 -0
  119. package/dist/infrastructure/mcp/PromptManager.js.map +1 -0
  120. package/dist/infrastructure/mcp/ResourceManager.d.ts +15 -0
  121. package/dist/infrastructure/mcp/ResourceManager.js +229 -0
  122. package/dist/infrastructure/mcp/ResourceManager.js.map +1 -0
  123. package/dist/infrastructure/mcp/SessionManager.d.ts +64 -0
  124. package/dist/infrastructure/mcp/SessionManager.js +221 -0
  125. package/dist/infrastructure/mcp/SessionManager.js.map +1 -0
  126. package/dist/infrastructure/mcp/ToolRegistry.d.ts +48 -0
  127. package/dist/infrastructure/mcp/ToolRegistry.js +235 -0
  128. package/dist/infrastructure/mcp/ToolRegistry.js.map +1 -0
  129. package/dist/infrastructure/platform/PlatformAdapter.d.ts +46 -0
  130. package/dist/infrastructure/platform/PlatformAdapter.js +355 -0
  131. package/dist/infrastructure/platform/PlatformAdapter.js.map +1 -0
  132. package/dist/infrastructure/plugins/HookSystem.d.ts +40 -0
  133. package/dist/infrastructure/plugins/HookSystem.js +415 -0
  134. package/dist/infrastructure/plugins/HookSystem.js.map +1 -0
  135. package/dist/infrastructure/plugins/PluginManager.d.ts +51 -0
  136. package/dist/infrastructure/plugins/PluginManager.js +650 -0
  137. package/dist/infrastructure/plugins/PluginManager.js.map +1 -0
  138. package/dist/infrastructure/plugins/PluginSteeringRegistry.d.ts +63 -0
  139. package/dist/infrastructure/plugins/PluginSteeringRegistry.js +439 -0
  140. package/dist/infrastructure/plugins/PluginSteeringRegistry.js.map +1 -0
  141. package/dist/infrastructure/plugins/PluginToolRegistry.d.ts +54 -0
  142. package/dist/infrastructure/plugins/PluginToolRegistry.js +490 -0
  143. package/dist/infrastructure/plugins/PluginToolRegistry.js.map +1 -0
  144. package/dist/infrastructure/quality/ASTAnalyzer.d.ts +65 -0
  145. package/dist/infrastructure/quality/ASTAnalyzer.js +439 -0
  146. package/dist/infrastructure/quality/ASTAnalyzer.js.map +1 -0
  147. package/dist/infrastructure/quality/LinusCodeReviewer.d.ts +52 -0
  148. package/dist/infrastructure/quality/LinusCodeReviewer.js +551 -0
  149. package/dist/infrastructure/quality/LinusCodeReviewer.js.map +1 -0
  150. package/dist/infrastructure/repositories/InMemoryProjectRepository.d.ts +10 -0
  151. package/dist/infrastructure/repositories/InMemoryProjectRepository.js +35 -0
  152. package/dist/infrastructure/repositories/InMemoryProjectRepository.js.map +1 -0
  153. package/dist/infrastructure/schemas/project.schema.d.ts +192 -0
  154. package/dist/infrastructure/schemas/project.schema.js +114 -0
  155. package/dist/infrastructure/schemas/project.schema.js.map +1 -0
  156. package/dist/infrastructure/templates/FileGenerator.d.ts +15 -0
  157. package/dist/infrastructure/templates/FileGenerator.js +385 -0
  158. package/dist/infrastructure/templates/FileGenerator.js.map +1 -0
  159. package/dist/infrastructure/templates/HandlebarsRenderer.d.ts +16 -0
  160. package/dist/infrastructure/templates/HandlebarsRenderer.js +252 -0
  161. package/dist/infrastructure/templates/HandlebarsRenderer.js.map +1 -0
  162. package/dist/infrastructure/templates/TemplateManager.d.ts +36 -0
  163. package/dist/infrastructure/templates/TemplateManager.js +777 -0
  164. package/dist/infrastructure/templates/TemplateManager.js.map +1 -0
  165. package/package.json +89 -0
@@ -0,0 +1,373 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ 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;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
11
+ return function (target, key) { decorator(target, key, paramIndex); }
12
+ };
13
+ import { injectable, inject } from 'inversify';
14
+ import { v4 as uuidv4 } from 'uuid';
15
+ import { TYPES } from '../di/types.js';
16
+ import { ProjectService } from '../../application/services/ProjectService.js';
17
+ let PromptManager = class PromptManager {
18
+ projectService;
19
+ logger;
20
+ constructor(projectService, logger) {
21
+ this.projectService = projectService;
22
+ this.logger = logger;
23
+ }
24
+ async listPrompts() {
25
+ const correlationId = uuidv4();
26
+ this.logger.info('Listing available prompts', { correlationId });
27
+ const prompts = [
28
+ {
29
+ name: 'sdd-requirements-review',
30
+ description: 'Generate comprehensive requirements review using EARS format',
31
+ arguments: [
32
+ {
33
+ name: 'projectId',
34
+ description: 'Project ID to review',
35
+ required: true
36
+ },
37
+ {
38
+ name: 'focus',
39
+ description: 'Specific focus area (optional)',
40
+ required: false
41
+ }
42
+ ]
43
+ },
44
+ {
45
+ name: 'sdd-design-review',
46
+ description: 'Perform technical design review with architecture analysis',
47
+ arguments: [
48
+ {
49
+ name: 'projectId',
50
+ description: 'Project ID to review',
51
+ required: true
52
+ },
53
+ {
54
+ name: 'component',
55
+ description: 'Specific component to focus on (optional)',
56
+ required: false
57
+ }
58
+ ]
59
+ },
60
+ {
61
+ name: 'sdd-linus-review',
62
+ description: 'Apply Linus-style code review criteria with taste scoring',
63
+ arguments: [
64
+ {
65
+ name: 'code',
66
+ description: 'Code to review',
67
+ required: true
68
+ },
69
+ {
70
+ name: 'language',
71
+ description: 'Programming language',
72
+ required: false
73
+ }
74
+ ]
75
+ },
76
+ {
77
+ name: 'sdd-task-breakdown',
78
+ description: 'Generate detailed task breakdown from design specifications',
79
+ arguments: [
80
+ {
81
+ name: 'projectId',
82
+ description: 'Project ID for task breakdown',
83
+ required: true
84
+ },
85
+ {
86
+ name: 'complexity',
87
+ description: 'Task complexity level (simple|standard|complex)',
88
+ required: false
89
+ }
90
+ ]
91
+ },
92
+ {
93
+ name: 'sdd-quality-gates',
94
+ description: 'Evaluate project readiness for phase progression',
95
+ arguments: [
96
+ {
97
+ name: 'projectId',
98
+ description: 'Project ID to evaluate',
99
+ required: true
100
+ },
101
+ {
102
+ name: 'targetPhase',
103
+ description: 'Target phase for progression',
104
+ required: true
105
+ }
106
+ ]
107
+ }
108
+ ];
109
+ this.logger.info('Prompt listing completed', {
110
+ correlationId,
111
+ promptCount: prompts.length
112
+ });
113
+ return prompts;
114
+ }
115
+ async getPrompt(name, arguments_) {
116
+ const correlationId = uuidv4();
117
+ this.logger.info('Getting prompt', { correlationId, name, arguments_ });
118
+ switch (name) {
119
+ case 'sdd-requirements-review':
120
+ return await this.getRequirementsReviewPrompt(arguments_);
121
+ case 'sdd-design-review':
122
+ return await this.getDesignReviewPrompt(arguments_);
123
+ case 'sdd-linus-review':
124
+ return await this.getLinusReviewPrompt(arguments_);
125
+ case 'sdd-task-breakdown':
126
+ return await this.getTaskBreakdownPrompt(arguments_);
127
+ case 'sdd-quality-gates':
128
+ return await this.getQualityGatesPrompt(arguments_);
129
+ default:
130
+ throw new Error(`Unknown prompt: ${name}`);
131
+ }
132
+ }
133
+ async getRequirementsReviewPrompt(args) {
134
+ const { projectId, focus } = args;
135
+ if (!projectId) {
136
+ throw new Error('projectId is required for requirements review');
137
+ }
138
+ const project = await this.projectService.getProject(projectId);
139
+ if (!project) {
140
+ throw new Error(`Project not found: ${projectId}`);
141
+ }
142
+ const focusContext = focus ? `with specific focus on: ${focus}` : '';
143
+ return {
144
+ description: `Requirements review for project ${project.name}`,
145
+ messages: [
146
+ {
147
+ role: 'user',
148
+ content: {
149
+ type: 'text',
150
+ text: `Please review the requirements for project "${project.name}" ${focusContext}.
151
+
152
+ Use EARS format validation:
153
+ - Each requirement should follow "WHEN/WHERE/IF [condition] THEN [system behavior]"
154
+ - Verify acceptance criteria are testable and measurable
155
+ - Check for completeness and consistency
156
+ - Identify missing edge cases or error conditions
157
+ - Ensure requirements are implementation-agnostic
158
+
159
+ Project Context:
160
+ - Name: ${project.name}
161
+ - Phase: ${project.phase}
162
+ - Language: ${project.metadata.language}
163
+
164
+ Please provide:
165
+ 1. Requirements completeness assessment
166
+ 2. EARS format compliance check
167
+ 3. Missing requirements identification
168
+ 4. Acceptance criteria quality review
169
+ 5. Recommendations for improvement`
170
+ }
171
+ }
172
+ ]
173
+ };
174
+ }
175
+ async getDesignReviewPrompt(args) {
176
+ const { projectId, component } = args;
177
+ if (!projectId) {
178
+ throw new Error('projectId is required for design review');
179
+ }
180
+ const project = await this.projectService.getProject(projectId);
181
+ if (!project) {
182
+ throw new Error(`Project not found: ${projectId}`);
183
+ }
184
+ const componentContext = component ? `focusing on component: ${component}` : 'covering all components';
185
+ return {
186
+ description: `Technical design review for project ${project.name}`,
187
+ messages: [
188
+ {
189
+ role: 'user',
190
+ content: {
191
+ type: 'text',
192
+ text: `Please review the technical design for project "${project.name}" ${componentContext}.
193
+
194
+ Evaluate:
195
+ 1. Architecture pattern appropriateness
196
+ 2. Component responsibility clarity
197
+ 3. Interface design quality
198
+ 4. Data model consistency
199
+ 5. Scalability considerations
200
+ 6. Maintainability factors
201
+ 7. Technology stack alignment
202
+
203
+ Project Context:
204
+ - Name: ${project.name}
205
+ - Phase: ${project.phase}
206
+ - Language: ${project.metadata.language}
207
+
208
+ Please provide:
209
+ 1. Architecture assessment
210
+ 2. Component design evaluation
211
+ 3. Interface quality review
212
+ 4. Data model validation
213
+ 5. Technology stack analysis
214
+ 6. Scalability and maintainability review
215
+ 7. Improvement recommendations`
216
+ }
217
+ }
218
+ ]
219
+ };
220
+ }
221
+ async getLinusReviewPrompt(args) {
222
+ const { code, language = 'typescript' } = args;
223
+ if (!code) {
224
+ throw new Error('code is required for Linus review');
225
+ }
226
+ return {
227
+ description: 'Linus-style code review with taste scoring',
228
+ messages: [
229
+ {
230
+ role: 'user',
231
+ content: {
232
+ type: 'text',
233
+ text: `Apply Linus Torvalds code review criteria to analyze this ${language} code:
234
+
235
+ \`\`\`${language}
236
+ ${code}
237
+ \`\`\`
238
+
239
+ Use the five-layer analysis framework:
240
+
241
+ 1. **Data Structure Analysis**: "Bad programmers worry about code. Good programmers worry about data structures."
242
+ 2. **Special Case Identification**: Find and eliminate special cases through better design
243
+ 3. **Complexity Review**: Check indentation depth (max 3 levels), function length, cyclomatic complexity
244
+ 4. **Breaking Change Analysis**: Ensure backward compatibility
245
+ 5. **Practicality Validation**: Verify this solves real problems
246
+
247
+ Provide output in this format:
248
+
249
+ 【Taste Score】
250
+ 🟢 Good taste / 🟡 Passable / 🔴 Garbage
251
+
252
+ 【Fatal Issues】
253
+ - [List critical problems]
254
+
255
+ 【Improvement Direction】
256
+ "Eliminate this special case"
257
+ "These 10 lines can become 3 lines"
258
+ "Data structure is wrong, should be..."
259
+
260
+ Apply Linus's core principles:
261
+ - Simplicity over complexity
262
+ - No special cases
263
+ - Data structures over algorithms
264
+ - Practical solutions over theoretical perfection`
265
+ }
266
+ }
267
+ ]
268
+ };
269
+ }
270
+ async getTaskBreakdownPrompt(args) {
271
+ const { projectId, complexity = 'standard' } = args;
272
+ if (!projectId) {
273
+ throw new Error('projectId is required for task breakdown');
274
+ }
275
+ const project = await this.projectService.getProject(projectId);
276
+ if (!project) {
277
+ throw new Error(`Project not found: ${projectId}`);
278
+ }
279
+ return {
280
+ description: `Task breakdown for project ${project.name}`,
281
+ messages: [
282
+ {
283
+ role: 'user',
284
+ content: {
285
+ type: 'text',
286
+ text: `Generate detailed implementation tasks for project "${project.name}" with ${complexity} complexity level.
287
+
288
+ Project Context:
289
+ - Name: ${project.name}
290
+ - Phase: ${project.phase}
291
+ - Language: ${project.metadata.language}
292
+
293
+ Task breakdown guidelines:
294
+ 1. Create logical task sequence
295
+ 2. Ensure each task is testable and measurable
296
+ 3. Include requirement references for traceability
297
+ 4. Break complex tasks into manageable subtasks
298
+ 5. Consider dependencies between tasks
299
+ 6. Include testing and validation steps
300
+
301
+ Output format:
302
+ - [ ] 1. [Main Task Title]
303
+ - [Subtask description]
304
+ - [Subtask description]
305
+ - _Requirements: [requirement references]_
306
+
307
+ Please provide:
308
+ 1. Complete task breakdown
309
+ 2. Dependency analysis
310
+ 3. Implementation sequence
311
+ 4. Testing strategy
312
+ 5. Quality gates integration`
313
+ }
314
+ }
315
+ ]
316
+ };
317
+ }
318
+ async getQualityGatesPrompt(args) {
319
+ const { projectId, targetPhase } = args;
320
+ if (!projectId || !targetPhase) {
321
+ throw new Error('projectId and targetPhase are required for quality gates evaluation');
322
+ }
323
+ const project = await this.projectService.getProject(projectId);
324
+ if (!project) {
325
+ throw new Error(`Project not found: ${projectId}`);
326
+ }
327
+ return {
328
+ description: `Quality gates evaluation for project ${project.name}`,
329
+ messages: [
330
+ {
331
+ role: 'user',
332
+ content: {
333
+ type: 'text',
334
+ text: `Evaluate quality gates for project "${project.name}" progression to ${targetPhase} phase.
335
+
336
+ Current Project Status:
337
+ - Name: ${project.name}
338
+ - Current Phase: ${project.phase}
339
+ - Target Phase: ${targetPhase}
340
+ - Requirements Generated: ${project.metadata.approvals.requirements.generated}
341
+ - Requirements Approved: ${project.metadata.approvals.requirements.approved}
342
+ - Design Generated: ${project.metadata.approvals.design.generated}
343
+ - Design Approved: ${project.metadata.approvals.design.approved}
344
+ - Tasks Generated: ${project.metadata.approvals.tasks.generated}
345
+ - Tasks Approved: ${project.metadata.approvals.tasks.approved}
346
+
347
+ Quality gate evaluation criteria:
348
+ 1. Phase transition requirements
349
+ 2. Approval status validation
350
+ 3. Deliverable quality assessment
351
+ 4. Completeness verification
352
+ 5. Consistency checks
353
+
354
+ Please provide:
355
+ 1. Phase transition readiness assessment
356
+ 2. Missing approvals or deliverables
357
+ 3. Quality issues that block progression
358
+ 4. Recommendations for proceeding
359
+ 5. Risk assessment for target phase`
360
+ }
361
+ }
362
+ ]
363
+ };
364
+ }
365
+ };
366
+ PromptManager = __decorate([
367
+ injectable(),
368
+ __param(0, inject(TYPES.ProjectService)),
369
+ __param(1, inject(TYPES.LoggerPort)),
370
+ __metadata("design:paramtypes", [ProjectService, Object])
371
+ ], PromptManager);
372
+ export { PromptManager };
373
+ //# sourceMappingURL=PromptManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PromptManager.js","sourceRoot":"","sources":["../../../src/infrastructure/mcp/PromptManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { Resource, ResourceContents } from '@modelcontextprotocol/sdk/types.js';
2
+ import { FileSystemPort, LoggerPort } from '../../domain/ports.js';
3
+ import { ProjectService } from '../../application/services/ProjectService.js';
4
+ export declare class ResourceManager {
5
+ private readonly fileSystem;
6
+ private readonly projectService;
7
+ private readonly logger;
8
+ constructor(fileSystem: FileSystemPort, projectService: ProjectService, logger: LoggerPort);
9
+ listResources(): Promise<Resource[]>;
10
+ readResource(uri: string): Promise<ResourceContents>;
11
+ private readProjectResource;
12
+ private readTemplateResource;
13
+ private readSteeringResource;
14
+ private generateProjectResourceTemplate;
15
+ }
@@ -0,0 +1,229 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ 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;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
11
+ return function (target, key) { decorator(target, key, paramIndex); }
12
+ };
13
+ import { injectable, inject } from 'inversify';
14
+ import { v4 as uuidv4 } from 'uuid';
15
+ import { TYPES } from '../di/types.js';
16
+ import { ProjectService } from '../../application/services/ProjectService.js';
17
+ let ResourceManager = class ResourceManager {
18
+ fileSystem;
19
+ projectService;
20
+ logger;
21
+ constructor(fileSystem, projectService, logger) {
22
+ this.fileSystem = fileSystem;
23
+ this.projectService = projectService;
24
+ this.logger = logger;
25
+ }
26
+ async listResources() {
27
+ const correlationId = uuidv4();
28
+ this.logger.info('Listing available resources', { correlationId });
29
+ const projects = await this.projectService.listProjects();
30
+ const resources = [];
31
+ // Add project-specific resources
32
+ for (const project of projects) {
33
+ const baseUri = `sdd://project/${project.id}`;
34
+ resources.push({
35
+ uri: `${baseUri}/spec.json`,
36
+ name: `${project.name} - Project Specification`,
37
+ description: 'Project metadata and workflow status',
38
+ mimeType: 'application/json'
39
+ }, {
40
+ uri: `${baseUri}/requirements.md`,
41
+ name: `${project.name} - Requirements`,
42
+ description: 'Project requirements document',
43
+ mimeType: 'text/markdown'
44
+ }, {
45
+ uri: `${baseUri}/design.md`,
46
+ name: `${project.name} - Design`,
47
+ description: 'Technical design document',
48
+ mimeType: 'text/markdown'
49
+ }, {
50
+ uri: `${baseUri}/tasks.md`,
51
+ name: `${project.name} - Tasks`,
52
+ description: 'Implementation task list',
53
+ mimeType: 'text/markdown'
54
+ });
55
+ }
56
+ // Add global resources
57
+ resources.push({
58
+ uri: 'sdd://templates/spec.json',
59
+ name: 'SDD Project Specification Template',
60
+ description: 'Template for project spec.json files',
61
+ mimeType: 'application/json'
62
+ }, {
63
+ uri: 'sdd://templates/requirements.md',
64
+ name: 'SDD Requirements Template',
65
+ description: 'Template for requirements documents',
66
+ mimeType: 'text/markdown'
67
+ }, {
68
+ uri: 'sdd://steering/linus-review.md',
69
+ name: 'Linus-style Code Review Guidelines',
70
+ description: 'Code quality and review guidelines',
71
+ mimeType: 'text/markdown'
72
+ });
73
+ this.logger.info('Resource listing completed', {
74
+ correlationId,
75
+ resourceCount: resources.length
76
+ });
77
+ return resources;
78
+ }
79
+ async readResource(uri) {
80
+ const correlationId = uuidv4();
81
+ this.logger.info('Reading resource', { correlationId, uri });
82
+ try {
83
+ if (uri.startsWith('sdd://project/')) {
84
+ return await this.readProjectResource(uri);
85
+ }
86
+ else if (uri.startsWith('sdd://templates/')) {
87
+ return await this.readTemplateResource(uri);
88
+ }
89
+ else if (uri.startsWith('sdd://steering/')) {
90
+ return await this.readSteeringResource(uri);
91
+ }
92
+ else {
93
+ throw new Error(`Unsupported resource URI: ${uri}`);
94
+ }
95
+ }
96
+ catch (error) {
97
+ this.logger.error('Failed to read resource', error, {
98
+ correlationId,
99
+ uri
100
+ });
101
+ throw error;
102
+ }
103
+ }
104
+ async readProjectResource(uri) {
105
+ const match = uri.match(/^sdd:\/\/project\/([^/]+)\/(.+)$/);
106
+ if (!match) {
107
+ throw new Error('Invalid project resource URI format');
108
+ }
109
+ const [, projectId, fileName] = match;
110
+ const project = await this.projectService.getProject(projectId);
111
+ if (!project) {
112
+ throw new Error(`Project not found: ${projectId}`);
113
+ }
114
+ const filePath = `${project.path}/.kiro/specs/${project.name}/${fileName}`;
115
+ try {
116
+ if (await this.fileSystem.exists(filePath)) {
117
+ const content = await this.fileSystem.readFile(filePath);
118
+ return {
119
+ uri,
120
+ mimeType: fileName.endsWith('.json') ? 'application/json' : 'text/markdown',
121
+ text: content
122
+ };
123
+ }
124
+ else {
125
+ // Return template if file doesn't exist yet
126
+ return await this.generateProjectResourceTemplate(project, fileName, uri);
127
+ }
128
+ }
129
+ catch (error) {
130
+ throw new Error(`Failed to read project resource: ${error.message}`);
131
+ }
132
+ }
133
+ async readTemplateResource(uri) {
134
+ const templates = {
135
+ 'sdd://templates/spec.json': JSON.stringify({
136
+ feature_name: "{{project.name}}",
137
+ created_at: "{{timestamp}}",
138
+ updated_at: "{{timestamp}}",
139
+ language: "{{project.metadata.language}}",
140
+ phase: "{{project.phase}}",
141
+ approvals: {
142
+ requirements: { generated: false, approved: false },
143
+ design: { generated: false, approved: false },
144
+ tasks: { generated: false, approved: false }
145
+ },
146
+ ready_for_implementation: false
147
+ }, null, 2),
148
+ 'sdd://templates/requirements.md': `# Requirements Document
149
+
150
+ ## Introduction
151
+ {{project.name}} - Requirements specification
152
+
153
+ ## Requirements
154
+
155
+ ### Requirement 1: [Title]
156
+ **Objective:** [Objective statement]
157
+
158
+ #### Acceptance Criteria
159
+ 1. WHEN [condition] THEN [expected behavior]
160
+ 2. WHERE [context] THE system SHALL [requirement]
161
+ 3. IF [condition] THEN [expected result]
162
+ `
163
+ };
164
+ const content = templates[uri];
165
+ if (!content) {
166
+ throw new Error(`Template not found: ${uri}`);
167
+ }
168
+ return {
169
+ uri,
170
+ mimeType: uri.endsWith('.json') ? 'application/json' : 'text/markdown',
171
+ text: content
172
+ };
173
+ }
174
+ async readSteeringResource(uri) {
175
+ if (uri === 'sdd://steering/linus-review.md') {
176
+ const steeringPath = '.kiro/steering/linus-review.md';
177
+ if (await this.fileSystem.exists(steeringPath)) {
178
+ const content = await this.fileSystem.readFile(steeringPath);
179
+ return {
180
+ uri,
181
+ mimeType: 'text/markdown',
182
+ text: content
183
+ };
184
+ }
185
+ }
186
+ throw new Error(`Steering resource not found: ${uri}`);
187
+ }
188
+ async generateProjectResourceTemplate(project, fileName, uri) {
189
+ let content;
190
+ switch (fileName) {
191
+ case 'spec.json':
192
+ content = JSON.stringify({
193
+ feature_name: project.name,
194
+ created_at: project.metadata.createdAt,
195
+ updated_at: project.metadata.updatedAt,
196
+ language: project.metadata.language,
197
+ phase: project.phase,
198
+ approvals: project.metadata.approvals,
199
+ ready_for_implementation: project.phase === 'implementation-ready'
200
+ }, null, 2);
201
+ break;
202
+ case 'requirements.md':
203
+ content = `# Requirements Document\n\n## Introduction\n${project.name} - Requirements specification\n\n## Requirements\n\n[Requirements to be defined...]`;
204
+ break;
205
+ case 'design.md':
206
+ content = `# Technical Design Document\n\n## Project: ${project.name}\n\n[Design to be defined...]`;
207
+ break;
208
+ case 'tasks.md':
209
+ content = `# Implementation Plan\n\n[Tasks to be defined...]`;
210
+ break;
211
+ default:
212
+ throw new Error(`Unknown resource file: ${fileName}`);
213
+ }
214
+ return {
215
+ uri,
216
+ mimeType: fileName.endsWith('.json') ? 'application/json' : 'text/markdown',
217
+ text: content
218
+ };
219
+ }
220
+ };
221
+ ResourceManager = __decorate([
222
+ injectable(),
223
+ __param(0, inject(TYPES.FileSystemPort)),
224
+ __param(1, inject(TYPES.ProjectService)),
225
+ __param(2, inject(TYPES.LoggerPort)),
226
+ __metadata("design:paramtypes", [Object, ProjectService, Object])
227
+ ], ResourceManager);
228
+ export { ResourceManager };
229
+ //# sourceMappingURL=ResourceManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ResourceManager.js","sourceRoot":"","sources":["../../../src/infrastructure/mcp/ResourceManager.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAS/C,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAEvC,OAAO,EAAE,cAAc,EAAE,MAAM,8CAA8C,CAAC;AAGvE,IAAM,eAAe,GAArB,MAAM,eAAe;IAEuB;IACA;IACJ;IAH7C,YACiD,UAA0B,EAC1B,cAA8B,EAClC,MAAkB;QAFd,eAAU,GAAV,UAAU,CAAgB;QAC1B,mBAAc,GAAd,cAAc,CAAgB;QAClC,WAAM,GAAN,MAAM,CAAY;IAC5D,CAAC;IAEJ,KAAK,CAAC,aAAa;QACjB,MAAM,aAAa,GAAG,MAAM,EAAE,CAAC;QAE/B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,6BAA6B,EAAE,EAAE,aAAa,EAAE,CAAC,CAAC;QAEnE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;QAC1D,MAAM,SAAS,GAAe,EAAE,CAAC;QAEjC,iCAAiC;QACjC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,MAAM,OAAO,GAAG,iBAAiB,OAAO,CAAC,EAAE,EAAE,CAAC;YAE9C,SAAS,CAAC,IAAI,CACZ;gBACE,GAAG,EAAE,GAAG,OAAO,YAAY;gBAC3B,IAAI,EAAE,GAAG,OAAO,CAAC,IAAI,0BAA0B;gBAC/C,WAAW,EAAE,sCAAsC;gBACnD,QAAQ,EAAE,kBAAkB;aAC7B,EACD;gBACE,GAAG,EAAE,GAAG,OAAO,kBAAkB;gBACjC,IAAI,EAAE,GAAG,OAAO,CAAC,IAAI,iBAAiB;gBACtC,WAAW,EAAE,+BAA+B;gBAC5C,QAAQ,EAAE,eAAe;aAC1B,EACD;gBACE,GAAG,EAAE,GAAG,OAAO,YAAY;gBAC3B,IAAI,EAAE,GAAG,OAAO,CAAC,IAAI,WAAW;gBAChC,WAAW,EAAE,2BAA2B;gBACxC,QAAQ,EAAE,eAAe;aAC1B,EACD;gBACE,GAAG,EAAE,GAAG,OAAO,WAAW;gBAC1B,IAAI,EAAE,GAAG,OAAO,CAAC,IAAI,UAAU;gBAC/B,WAAW,EAAE,0BAA0B;gBACvC,QAAQ,EAAE,eAAe;aAC1B,CACF,CAAC;QACJ,CAAC;QAED,uBAAuB;QACvB,SAAS,CAAC,IAAI,CACZ;YACE,GAAG,EAAE,2BAA2B;YAChC,IAAI,EAAE,oCAAoC;YAC1C,WAAW,EAAE,sCAAsC;YACnD,QAAQ,EAAE,kBAAkB;SAC7B,EACD;YACE,GAAG,EAAE,iCAAiC;YACtC,IAAI,EAAE,2BAA2B;YACjC,WAAW,EAAE,qCAAqC;YAClD,QAAQ,EAAE,eAAe;SAC1B,EACD;YACE,GAAG,EAAE,gCAAgC;YACrC,IAAI,EAAE,oCAAoC;YAC1C,WAAW,EAAE,oCAAoC;YACjD,QAAQ,EAAE,eAAe;SAC1B,CACF,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,4BAA4B,EAAE;YAC7C,aAAa;YACb,aAAa,EAAE,SAAS,CAAC,MAAM;SAChC,CAAC,CAAC;QAEH,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,GAAW;QAC5B,MAAM,aAAa,GAAG,MAAM,EAAE,CAAC;QAE/B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,aAAa,EAAE,GAAG,EAAE,CAAC,CAAC;QAE7D,IAAI,CAAC;YACH,IAAI,GAAG,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;gBACrC,OAAO,MAAM,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;YAC7C,CAAC;iBAAM,IAAI,GAAG,CAAC,UAAU,CAAC,kBAAkB,CAAC,EAAE,CAAC;gBAC9C,OAAO,MAAM,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;YAC9C,CAAC;iBAAM,IAAI,GAAG,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,CAAC;gBAC7C,OAAO,MAAM,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;YAC9C,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,KAAK,CAAC,6BAA6B,GAAG,EAAE,CAAC,CAAC;YACtD,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,yBAAyB,EAAE,KAAc,EAAE;gBAC3D,aAAa;gBACb,GAAG;aACJ,CAAC,CAAC;YACH,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,mBAAmB,CAAC,GAAW;QAC3C,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;QAC5D,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACzD,CAAC;QAED,MAAM,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,GAAG,KAAK,CAAC;QACtC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAChE,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,sBAAsB,SAAS,EAAE,CAAC,CAAC;QACrD,CAAC;QAED,MAAM,QAAQ,GAAG,GAAG,OAAO,CAAC,IAAI,gBAAgB,OAAO,CAAC,IAAI,IAAI,QAAQ,EAAE,CAAC;QAE3E,IAAI,CAAC;YACH,IAAI,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC3C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBACzD,OAAO;oBACL,GAAG;oBACH,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,eAAe;oBAC3E,IAAI,EAAE,OAAO;iBACU,CAAC;YAC5B,CAAC;iBAAM,CAAC;gBACN,4CAA4C;gBAC5C,OAAO,MAAM,IAAI,CAAC,+BAA+B,CAAC,OAAO,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;YAC5E,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,oCAAqC,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;QAClF,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,oBAAoB,CAAC,GAAW;QAC5C,MAAM,SAAS,GAA2B;YACxC,2BAA2B,EAAE,IAAI,CAAC,SAAS,CAAC;gBAC1C,YAAY,EAAE,kBAAkB;gBAChC,UAAU,EAAE,eAAe;gBAC3B,UAAU,EAAE,eAAe;gBAC3B,QAAQ,EAAE,+BAA+B;gBACzC,KAAK,EAAE,mBAAmB;gBAC1B,SAAS,EAAE;oBACT,YAAY,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE;oBACnD,MAAM,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE;oBAC7C,KAAK,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE;iBAC7C;gBACD,wBAAwB,EAAE,KAAK;aAChC,EAAE,IAAI,EAAE,CAAC,CAAC;YACX,iCAAiC,EAAE;;;;;;;;;;;;;;CAcxC;SACI,CAAC;QAEF,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,uBAAuB,GAAG,EAAE,CAAC,CAAC;QAChD,CAAC;QAED,OAAO;YACL,GAAG;YACH,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,eAAe;YACtE,IAAI,EAAE,OAAO;SACU,CAAC;IAC5B,CAAC;IAEO,KAAK,CAAC,oBAAoB,CAAC,GAAW;QAC5C,IAAI,GAAG,KAAK,gCAAgC,EAAE,CAAC;YAC7C,MAAM,YAAY,GAAG,gCAAgC,CAAC;YAEtD,IAAI,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC/C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;gBAC7D,OAAO;oBACL,GAAG;oBACH,QAAQ,EAAE,eAAe;oBACzB,IAAI,EAAE,OAAO;iBACU,CAAC;YAC5B,CAAC;QACH,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,gCAAgC,GAAG,EAAE,CAAC,CAAC;IACzD,CAAC;IAEO,KAAK,CAAC,+BAA+B,CAC3C,OAAY,EACZ,QAAgB,EAChB,GAAW;QAEX,IAAI,OAAe,CAAC;QAEpB,QAAQ,QAAQ,EAAE,CAAC;YACjB,KAAK,WAAW;gBACd,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC;oBACvB,YAAY,EAAE,OAAO,CAAC,IAAI;oBAC1B,UAAU,EAAE,OAAO,CAAC,QAAQ,CAAC,SAAS;oBACtC,UAAU,EAAE,OAAO,CAAC,QAAQ,CAAC,SAAS;oBACtC,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,QAAQ;oBACnC,KAAK,EAAE,OAAO,CAAC,KAAK;oBACpB,SAAS,EAAE,OAAO,CAAC,QAAQ,CAAC,SAAS;oBACrC,wBAAwB,EAAE,OAAO,CAAC,KAAK,KAAK,sBAAsB;iBACnE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;gBACZ,MAAM;YAER,KAAK,iBAAiB;gBACpB,OAAO,GAAG,+CAA+C,OAAO,CAAC,IAAI,qFAAqF,CAAC;gBAC3J,MAAM;YAER,KAAK,WAAW;gBACd,OAAO,GAAG,8CAA8C,OAAO,CAAC,IAAI,+BAA+B,CAAC;gBACpG,MAAM;YAER,KAAK,UAAU;gBACb,OAAO,GAAG,mDAAmD,CAAC;gBAC9D,MAAM;YAER;gBACE,MAAM,IAAI,KAAK,CAAC,0BAA0B,QAAQ,EAAE,CAAC,CAAC;QAC1D,CAAC;QAED,OAAO;YACL,GAAG;YACH,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,eAAe;YAC3E,IAAI,EAAE,OAAO;SACU,CAAC;IAC5B,CAAC;CACF,CAAA;AA3OY,eAAe;IAD3B,UAAU,EAAE;IAGR,WAAA,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,CAAA;IAC5B,WAAA,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,CAAA;IAC5B,WAAA,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;6CADsC,cAAc;GAHpE,eAAe,CA2O3B"}