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,536 @@
1
+ // Localization service for language-specific best practices and cultural adaptations
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 { SupportedLanguage } from '../../domain/i18n/index.js';
16
+ import { TYPES } from '../../infrastructure/di/types.js';
17
+ // Enums for cultural preferences
18
+ var CommunicationStyle;
19
+ (function (CommunicationStyle) {
20
+ CommunicationStyle["HIGH_CONTEXT"] = "high-context";
21
+ CommunicationStyle["LOW_CONTEXT"] = "low-context";
22
+ CommunicationStyle["MIXED_CONTEXT"] = "mixed-context"; // US, UK, France
23
+ })(CommunicationStyle || (CommunicationStyle = {}));
24
+ var FormalityLevel;
25
+ (function (FormalityLevel) {
26
+ FormalityLevel["VERY_FORMAL"] = "very-formal";
27
+ FormalityLevel["FORMAL"] = "formal";
28
+ FormalityLevel["NEUTRAL"] = "neutral";
29
+ FormalityLevel["INFORMAL"] = "informal";
30
+ FormalityLevel["VERY_INFORMAL"] = "very-informal"; // Nordic countries
31
+ })(FormalityLevel || (FormalityLevel = {}));
32
+ var DirectnessLevel;
33
+ (function (DirectnessLevel) {
34
+ DirectnessLevel["VERY_INDIRECT"] = "very-indirect";
35
+ DirectnessLevel["INDIRECT"] = "indirect";
36
+ DirectnessLevel["BALANCED"] = "balanced";
37
+ DirectnessLevel["DIRECT"] = "direct";
38
+ DirectnessLevel["VERY_DIRECT"] = "very-direct"; // Germany, Netherlands
39
+ })(DirectnessLevel || (DirectnessLevel = {}));
40
+ var HierarchyPreference;
41
+ (function (HierarchyPreference) {
42
+ HierarchyPreference["HIGH_HIERARCHY"] = "high-hierarchy";
43
+ HierarchyPreference["MODERATE_HIERARCHY"] = "moderate-hierarchy";
44
+ HierarchyPreference["LOW_HIERARCHY"] = "low-hierarchy";
45
+ HierarchyPreference["FLAT_HIERARCHY"] = "flat-hierarchy"; // Nordic countries, Netherlands
46
+ })(HierarchyPreference || (HierarchyPreference = {}));
47
+ var DocumentationStyle;
48
+ (function (DocumentationStyle) {
49
+ DocumentationStyle["COMPREHENSIVE"] = "comprehensive";
50
+ DocumentationStyle["STRUCTURED"] = "structured";
51
+ DocumentationStyle["PRACTICAL"] = "practical";
52
+ DocumentationStyle["MINIMAL"] = "minimal"; // Nordic countries
53
+ })(DocumentationStyle || (DocumentationStyle = {}));
54
+ var CodeCommentStyle;
55
+ (function (CodeCommentStyle) {
56
+ CodeCommentStyle["EXTENSIVE"] = "extensive";
57
+ CodeCommentStyle["MODERATE"] = "moderate";
58
+ CodeCommentStyle["SELECTIVE"] = "selective";
59
+ CodeCommentStyle["MINIMAL"] = "minimal"; // Nordic countries
60
+ })(CodeCommentStyle || (CodeCommentStyle = {}));
61
+ var MeetingCulture;
62
+ (function (MeetingCulture) {
63
+ MeetingCulture["CONSENSUS_DRIVEN"] = "consensus-driven";
64
+ MeetingCulture["STRUCTURED_DEBATE"] = "structured-debate";
65
+ MeetingCulture["OPEN_DISCUSSION"] = "open-discussion";
66
+ MeetingCulture["INFORMAL_EXCHANGE"] = "informal-exchange"; // Australia, Canada
67
+ })(MeetingCulture || (MeetingCulture = {}));
68
+ var FeedbackStyle;
69
+ (function (FeedbackStyle) {
70
+ FeedbackStyle["VERY_GENTLE"] = "very-gentle";
71
+ FeedbackStyle["DIPLOMATIC"] = "diplomatic";
72
+ FeedbackStyle["CONSTRUCTIVE"] = "constructive";
73
+ FeedbackStyle["DIRECT_HONEST"] = "direct-honest";
74
+ FeedbackStyle["BLUNT"] = "blunt"; // Some Nordic cultures
75
+ })(FeedbackStyle || (FeedbackStyle = {}));
76
+ // Code style enums
77
+ var NamingConventions;
78
+ (function (NamingConventions) {
79
+ NamingConventions["DESCRIPTIVE_VERBOSE"] = "descriptive-verbose";
80
+ NamingConventions["CLEAR_CONCISE"] = "clear-concise";
81
+ NamingConventions["CONTEXT_AWARE"] = "context-aware";
82
+ NamingConventions["ABBREVIATED_EFFICIENT"] = "abbreviated-efficient"; // Some US contexts
83
+ })(NamingConventions || (NamingConventions = {}));
84
+ var CommentDensity;
85
+ (function (CommentDensity) {
86
+ CommentDensity["HIGH_DENSITY"] = "high-density";
87
+ CommentDensity["MODERATE_DENSITY"] = "moderate-density";
88
+ CommentDensity["LOW_DENSITY"] = "low-density";
89
+ CommentDensity["MINIMAL_DENSITY"] = "minimal-density"; // Self-documenting code only
90
+ })(CommentDensity || (CommentDensity = {}));
91
+ var DocumentationFormat;
92
+ (function (DocumentationFormat) {
93
+ DocumentationFormat["FORMAL_SPECIFICATION"] = "formal-specification";
94
+ DocumentationFormat["USER_STORY_DRIVEN"] = "user-story-driven";
95
+ DocumentationFormat["EXAMPLE_HEAVY"] = "example-heavy";
96
+ DocumentationFormat["REFERENCE_FOCUSED"] = "reference-focused"; // API documentation style
97
+ })(DocumentationFormat || (DocumentationFormat = {}));
98
+ var ErrorMessageStyle;
99
+ (function (ErrorMessageStyle) {
100
+ ErrorMessageStyle["APOLOGETIC_HELPFUL"] = "apologetic-helpful";
101
+ ErrorMessageStyle["FACTUAL_DIRECT"] = "factual-direct";
102
+ ErrorMessageStyle["USER_FRIENDLY"] = "user-friendly";
103
+ ErrorMessageStyle["TECHNICAL_PRECISE"] = "technical-precise"; // Developer-focused
104
+ })(ErrorMessageStyle || (ErrorMessageStyle = {}));
105
+ var ApiDocumentationStyle;
106
+ (function (ApiDocumentationStyle) {
107
+ ApiDocumentationStyle["COMPREHENSIVE_EXAMPLES"] = "comprehensive-examples";
108
+ ApiDocumentationStyle["STRUCTURED_REFERENCE"] = "structured-reference";
109
+ ApiDocumentationStyle["QUICK_START_FOCUSED"] = "quick-start-focused";
110
+ ApiDocumentationStyle["MINIMAL_ESSENTIAL"] = "minimal-essential"; // Nordic preference
111
+ })(ApiDocumentationStyle || (ApiDocumentationStyle = {}));
112
+ var ExampleCodeStyle;
113
+ (function (ExampleCodeStyle) {
114
+ ExampleCodeStyle["PRODUCTION_READY"] = "production-ready";
115
+ ExampleCodeStyle["TUTORIAL_FOCUSED"] = "tutorial-focused";
116
+ ExampleCodeStyle["QUICK_DEMONSTRATION"] = "quick-demonstration";
117
+ ExampleCodeStyle["PATTERN_ILLUSTRATIVE"] = "pattern-illustrative"; // Architecture-focused
118
+ })(ExampleCodeStyle || (ExampleCodeStyle = {}));
119
+ let LocalizationService = class LocalizationService {
120
+ logger;
121
+ i18nService;
122
+ platformAdapter;
123
+ culturalAdaptations = new Map();
124
+ codeStylePreferences = new Map();
125
+ qualityStandards = new Map();
126
+ localeCache = new Map();
127
+ constructor(logger, i18nService, platformAdapter) {
128
+ this.logger = logger;
129
+ this.i18nService = i18nService;
130
+ this.platformAdapter = platformAdapter;
131
+ this.initializeCulturalAdaptations();
132
+ this.initializeCodeStylePreferences();
133
+ this.initializeQualityStandards();
134
+ }
135
+ async initialize(config) {
136
+ try {
137
+ await this.i18nService.init(config);
138
+ // Load cultural adaptations based on system locale
139
+ const systemLanguages = await this.platformAdapter.getPreferredLanguages();
140
+ for (const language of systemLanguages) {
141
+ await this.loadLanguagePack(language);
142
+ }
143
+ this.logger.info('Localization service initialized', {
144
+ systemLanguages,
145
+ supportedLanguages: this.i18nService.getSupportedLanguages()
146
+ });
147
+ }
148
+ catch (error) {
149
+ this.logger.error('Localization service initialization failed', {
150
+ error: error instanceof Error ? error.message : String(error)
151
+ });
152
+ throw error;
153
+ }
154
+ }
155
+ async getLocaleInfo(language) {
156
+ if (this.localeCache.has(language)) {
157
+ return this.localeCache.get(language);
158
+ }
159
+ const localeInfo = this.buildLocaleInfo(language);
160
+ this.localeCache.set(language, localeInfo);
161
+ return localeInfo;
162
+ }
163
+ async loadLanguagePack(language) {
164
+ try {
165
+ const localeInfo = await this.getLocaleInfo(language);
166
+ const culturalAdaptation = this.culturalAdaptations.get(language);
167
+ const codeStyle = this.codeStylePreferences.get(language);
168
+ const qualityStandards = this.qualityStandards.get(language);
169
+ // Build localized templates based on cultural preferences
170
+ const templates = await this.buildLocalizedTemplates(language, culturalAdaptation);
171
+ const formats = this.buildLocaleFormats(localeInfo);
172
+ const validators = this.buildLocaleValidators(language);
173
+ const languagePack = {
174
+ language,
175
+ version: '1.0.0',
176
+ resources: [], // Would be loaded from actual i18n resources
177
+ templates,
178
+ formats,
179
+ validators
180
+ };
181
+ this.logger.debug('Language pack loaded', { language, templatesCount: templates.length });
182
+ return languagePack;
183
+ }
184
+ catch (error) {
185
+ this.logger.error('Failed to load language pack', {
186
+ language,
187
+ error: error instanceof Error ? error.message : String(error)
188
+ });
189
+ throw error;
190
+ }
191
+ }
192
+ async getAvailableLanguages() {
193
+ return this.i18nService.getSupportedLanguages();
194
+ }
195
+ async validateTranslation(key, value, language) {
196
+ const validators = this.buildLocaleValidators(language);
197
+ const errors = [];
198
+ const warnings = [];
199
+ const suggestions = [];
200
+ // Cultural appropriateness validation
201
+ const culturalAdaptation = this.culturalAdaptations.get(language);
202
+ if (culturalAdaptation) {
203
+ const culturalIssues = this.validateCulturalAppropriateness(value, culturalAdaptation);
204
+ errors.push(...culturalIssues.errors);
205
+ warnings.push(...culturalIssues.warnings);
206
+ suggestions.push(...culturalIssues.suggestions);
207
+ }
208
+ // Language-specific validation
209
+ const languageValidation = this.validateLanguageSpecific(value, language);
210
+ warnings.push(...languageValidation);
211
+ return {
212
+ valid: errors.length === 0,
213
+ errors,
214
+ warnings,
215
+ suggestions
216
+ };
217
+ }
218
+ async formatMessage(key, params, language) {
219
+ try {
220
+ const targetLanguage = language || this.i18nService.getCurrentLanguage();
221
+ // Apply cultural formatting based on language
222
+ const culturalAdaptation = this.culturalAdaptations.get(targetLanguage);
223
+ if (culturalAdaptation) {
224
+ params = this.applyCulturalFormatting(params, culturalAdaptation);
225
+ }
226
+ return this.i18nService.t(key, { ...params, lng: targetLanguage });
227
+ }
228
+ catch (error) {
229
+ this.logger.error('Message formatting failed', {
230
+ key,
231
+ params,
232
+ language,
233
+ error: error instanceof Error ? error.message : String(error)
234
+ });
235
+ return key;
236
+ }
237
+ }
238
+ // Cultural adaptation methods
239
+ getCulturalAdaptation(language) {
240
+ return this.culturalAdaptations.get(language);
241
+ }
242
+ getCodeStylePreferences(language) {
243
+ return this.codeStylePreferences.get(language);
244
+ }
245
+ getQualityStandards(language) {
246
+ return this.qualityStandards.get(language);
247
+ }
248
+ // Localized content generation
249
+ async generateLocalizedErrorMessage(errorType, context, language) {
250
+ const targetLanguage = language || this.i18nService.getCurrentLanguage();
251
+ const codeStyle = this.codeStylePreferences.get(targetLanguage);
252
+ const baseMessage = await this.formatMessage(`errors.${errorType}`, context, targetLanguage);
253
+ if (codeStyle?.errorMessageStyle === ErrorMessageStyle.APOLOGETIC_HELPFUL) {
254
+ return `申し訳ございませんが、${baseMessage} ご確認をお願いいたします。`;
255
+ }
256
+ else if (codeStyle?.errorMessageStyle === ErrorMessageStyle.FACTUAL_DIRECT) {
257
+ return `Fehler: ${baseMessage}`;
258
+ }
259
+ else if (codeStyle?.errorMessageStyle === ErrorMessageStyle.USER_FRIENDLY) {
260
+ return `Oops! ${baseMessage} Let's fix this together.`;
261
+ }
262
+ return baseMessage;
263
+ }
264
+ async generateLocalizedDocumentation(content, documentationType, language) {
265
+ const targetLanguage = language || this.i18nService.getCurrentLanguage();
266
+ const culturalAdaptation = this.culturalAdaptations.get(targetLanguage);
267
+ if (!culturalAdaptation) {
268
+ return content;
269
+ }
270
+ let adaptedContent = content;
271
+ // Apply cultural documentation style
272
+ switch (culturalAdaptation.documentationStyle) {
273
+ case DocumentationStyle.COMPREHENSIVE:
274
+ adaptedContent = await this.addComprehensiveStructure(content, targetLanguage);
275
+ break;
276
+ case DocumentationStyle.STRUCTURED:
277
+ adaptedContent = await this.addStructuredFormatting(content, targetLanguage);
278
+ break;
279
+ case DocumentationStyle.PRACTICAL:
280
+ adaptedContent = await this.addPracticalExamples(content, targetLanguage);
281
+ break;
282
+ case DocumentationStyle.MINIMAL:
283
+ adaptedContent = await this.simplifyToEssentials(content, targetLanguage);
284
+ break;
285
+ }
286
+ return adaptedContent;
287
+ }
288
+ // Private initialization methods
289
+ initializeCulturalAdaptations() {
290
+ // Japanese cultural adaptation
291
+ this.culturalAdaptations.set(SupportedLanguage.JAPANESE, {
292
+ language: SupportedLanguage.JAPANESE,
293
+ communicationStyle: CommunicationStyle.HIGH_CONTEXT,
294
+ formalityLevel: FormalityLevel.VERY_FORMAL,
295
+ directness: DirectnessLevel.VERY_INDIRECT,
296
+ hierarchyPreference: HierarchyPreference.HIGH_HIERARCHY,
297
+ documentationStyle: DocumentationStyle.COMPREHENSIVE,
298
+ codeCommentStyle: CodeCommentStyle.EXTENSIVE,
299
+ meetingCulture: MeetingCulture.CONSENSUS_DRIVEN,
300
+ feedbackStyle: FeedbackStyle.VERY_GENTLE
301
+ });
302
+ // German cultural adaptation
303
+ this.culturalAdaptations.set(SupportedLanguage.GERMAN, {
304
+ language: SupportedLanguage.GERMAN,
305
+ communicationStyle: CommunicationStyle.LOW_CONTEXT,
306
+ formalityLevel: FormalityLevel.FORMAL,
307
+ directness: DirectnessLevel.VERY_DIRECT,
308
+ hierarchyPreference: HierarchyPreference.MODERATE_HIERARCHY,
309
+ documentationStyle: DocumentationStyle.COMPREHENSIVE,
310
+ codeCommentStyle: CodeCommentStyle.EXTENSIVE,
311
+ meetingCulture: MeetingCulture.STRUCTURED_DEBATE,
312
+ feedbackStyle: FeedbackStyle.DIRECT_HONEST
313
+ });
314
+ // US English cultural adaptation
315
+ this.culturalAdaptations.set(SupportedLanguage.ENGLISH, {
316
+ language: SupportedLanguage.ENGLISH,
317
+ communicationStyle: CommunicationStyle.MIXED_CONTEXT,
318
+ formalityLevel: FormalityLevel.INFORMAL,
319
+ directness: DirectnessLevel.DIRECT,
320
+ hierarchyPreference: HierarchyPreference.LOW_HIERARCHY,
321
+ documentationStyle: DocumentationStyle.PRACTICAL,
322
+ codeCommentStyle: CodeCommentStyle.SELECTIVE,
323
+ meetingCulture: MeetingCulture.OPEN_DISCUSSION,
324
+ feedbackStyle: FeedbackStyle.CONSTRUCTIVE
325
+ });
326
+ // Add more cultural adaptations for other languages...
327
+ }
328
+ initializeCodeStylePreferences() {
329
+ this.codeStylePreferences.set(SupportedLanguage.JAPANESE, {
330
+ language: SupportedLanguage.JAPANESE,
331
+ namingConventions: NamingConventions.CONTEXT_AWARE,
332
+ commentDensity: CommentDensity.HIGH_DENSITY,
333
+ documentationFormat: DocumentationFormat.FORMAL_SPECIFICATION,
334
+ errorMessageStyle: ErrorMessageStyle.APOLOGETIC_HELPFUL,
335
+ apiDocumentationStyle: ApiDocumentationStyle.COMPREHENSIVE_EXAMPLES,
336
+ exampleCodeStyle: ExampleCodeStyle.PRODUCTION_READY
337
+ });
338
+ this.codeStylePreferences.set(SupportedLanguage.GERMAN, {
339
+ language: SupportedLanguage.GERMAN,
340
+ namingConventions: NamingConventions.DESCRIPTIVE_VERBOSE,
341
+ commentDensity: CommentDensity.HIGH_DENSITY,
342
+ documentationFormat: DocumentationFormat.FORMAL_SPECIFICATION,
343
+ errorMessageStyle: ErrorMessageStyle.FACTUAL_DIRECT,
344
+ apiDocumentationStyle: ApiDocumentationStyle.STRUCTURED_REFERENCE,
345
+ exampleCodeStyle: ExampleCodeStyle.PRODUCTION_READY
346
+ });
347
+ this.codeStylePreferences.set(SupportedLanguage.ENGLISH, {
348
+ language: SupportedLanguage.ENGLISH,
349
+ namingConventions: NamingConventions.CLEAR_CONCISE,
350
+ commentDensity: CommentDensity.MODERATE_DENSITY,
351
+ documentationFormat: DocumentationFormat.USER_STORY_DRIVEN,
352
+ errorMessageStyle: ErrorMessageStyle.USER_FRIENDLY,
353
+ apiDocumentationStyle: ApiDocumentationStyle.QUICK_START_FOCUSED,
354
+ exampleCodeStyle: ExampleCodeStyle.TUTORIAL_FOCUSED
355
+ });
356
+ }
357
+ initializeQualityStandards() {
358
+ this.qualityStandards.set(SupportedLanguage.JAPANESE, {
359
+ language: SupportedLanguage.JAPANESE,
360
+ complexityTolerances: {
361
+ cyclomaticComplexity: 8, // Lower tolerance, prefer simpler code
362
+ nestingDepth: 3,
363
+ functionLength: 30,
364
+ classSize: 200
365
+ },
366
+ qualityThresholds: {
367
+ minimumTestCoverage: 90,
368
+ maximumTechnicalDebt: 5, // Very low tolerance for technical debt
369
+ codeQualityScore: 85,
370
+ documentationCompleteness: 95
371
+ },
372
+ codeReviewPriorities: {
373
+ functionalityWeight: 0.25,
374
+ performanceWeight: 0.15,
375
+ maintainabilityWeight: 0.35,
376
+ securityWeight: 0.15,
377
+ styleWeight: 0.10
378
+ },
379
+ testingExpectations: {
380
+ unitTestRatio: 1.5, // 1.5 tests per function
381
+ integrationTestCoverage: 80,
382
+ e2eTestRequirement: true,
383
+ performanceTestThreshold: 0.5 // Performance test if >500ms
384
+ },
385
+ performanceStandards: {
386
+ responseTimeTarget: 200,
387
+ memoryUsageLimit: 256,
388
+ cpuUsageThreshold: 70,
389
+ throughputExpectation: 1000
390
+ }
391
+ });
392
+ this.qualityStandards.set(SupportedLanguage.GERMAN, {
393
+ language: SupportedLanguage.GERMAN,
394
+ complexityTolerances: {
395
+ cyclomaticComplexity: 10,
396
+ nestingDepth: 4,
397
+ functionLength: 50,
398
+ classSize: 300
399
+ },
400
+ qualityThresholds: {
401
+ minimumTestCoverage: 85,
402
+ maximumTechnicalDebt: 10,
403
+ codeQualityScore: 80,
404
+ documentationCompleteness: 90
405
+ },
406
+ codeReviewPriorities: {
407
+ functionalityWeight: 0.30,
408
+ performanceWeight: 0.20,
409
+ maintainabilityWeight: 0.30,
410
+ securityWeight: 0.15,
411
+ styleWeight: 0.05
412
+ },
413
+ testingExpectations: {
414
+ unitTestRatio: 1.2,
415
+ integrationTestCoverage: 75,
416
+ e2eTestRequirement: true,
417
+ performanceTestThreshold: 1.0
418
+ },
419
+ performanceStandards: {
420
+ responseTimeTarget: 150,
421
+ memoryUsageLimit: 512,
422
+ cpuUsageThreshold: 80,
423
+ throughputExpectation: 1500
424
+ }
425
+ });
426
+ this.qualityStandards.set(SupportedLanguage.ENGLISH, {
427
+ language: SupportedLanguage.ENGLISH,
428
+ complexityTolerances: {
429
+ cyclomaticComplexity: 15,
430
+ nestingDepth: 5,
431
+ functionLength: 75,
432
+ classSize: 400
433
+ },
434
+ qualityThresholds: {
435
+ minimumTestCoverage: 75,
436
+ maximumTechnicalDebt: 20,
437
+ codeQualityScore: 70,
438
+ documentationCompleteness: 70
439
+ },
440
+ codeReviewPriorities: {
441
+ functionalityWeight: 0.40,
442
+ performanceWeight: 0.25,
443
+ maintainabilityWeight: 0.20,
444
+ securityWeight: 0.10,
445
+ styleWeight: 0.05
446
+ },
447
+ testingExpectations: {
448
+ unitTestRatio: 0.8,
449
+ integrationTestCoverage: 60,
450
+ e2eTestRequirement: false,
451
+ performanceTestThreshold: 2.0
452
+ },
453
+ performanceStandards: {
454
+ responseTimeTarget: 300,
455
+ memoryUsageLimit: 1024,
456
+ cpuUsageThreshold: 85,
457
+ throughputExpectation: 800
458
+ }
459
+ });
460
+ }
461
+ // Helper methods (simplified implementations)
462
+ buildLocaleInfo(language) {
463
+ // This would be expanded with complete locale information
464
+ return {
465
+ code: language,
466
+ name: language,
467
+ nativeName: language,
468
+ region: 'default',
469
+ direction: 'ltr',
470
+ pluralRules: [],
471
+ dateFormats: {
472
+ short: 'short',
473
+ medium: 'medium',
474
+ long: 'long',
475
+ full: 'full',
476
+ time: 'time',
477
+ dateTime: 'dateTime'
478
+ },
479
+ numberFormats: {
480
+ decimal: '#,##0.###',
481
+ percent: '#,##0%',
482
+ currency: '¤#,##0.00',
483
+ scientific: '#E0',
484
+ grouping: ','
485
+ },
486
+ currency: {
487
+ code: 'USD',
488
+ symbol: '$',
489
+ name: 'US Dollar',
490
+ decimalPlaces: 2
491
+ },
492
+ timeZone: 'UTC'
493
+ };
494
+ }
495
+ async buildLocalizedTemplates(language, cultural) {
496
+ // Simplified implementation - would build actual localized templates
497
+ return [];
498
+ }
499
+ buildLocaleFormats(localeInfo) {
500
+ return localeInfo; // Simplified
501
+ }
502
+ buildLocaleValidators(language) {
503
+ return []; // Simplified
504
+ }
505
+ validateCulturalAppropriateness(value, cultural) {
506
+ return { errors: [], warnings: [], suggestions: [] }; // Simplified
507
+ }
508
+ validateLanguageSpecific(value, language) {
509
+ return []; // Simplified
510
+ }
511
+ applyCulturalFormatting(params, cultural) {
512
+ return params; // Simplified
513
+ }
514
+ // Content adaptation methods (simplified)
515
+ async addComprehensiveStructure(content, language) {
516
+ return content; // Would add detailed structure
517
+ }
518
+ async addStructuredFormatting(content, language) {
519
+ return content; // Would add structured formatting
520
+ }
521
+ async addPracticalExamples(content, language) {
522
+ return content; // Would add practical examples
523
+ }
524
+ async simplifyToEssentials(content, language) {
525
+ return content; // Would simplify content
526
+ }
527
+ };
528
+ LocalizationService = __decorate([
529
+ injectable(),
530
+ __param(0, inject(TYPES.LoggerPort)),
531
+ __param(1, inject(TYPES.I18nService)),
532
+ __param(2, inject(TYPES.PlatformAdapter)),
533
+ __metadata("design:paramtypes", [Object, Object, Object])
534
+ ], LocalizationService);
535
+ export { LocalizationService };
536
+ //# sourceMappingURL=LocalizationService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LocalizationService.js","sourceRoot":"","sources":["../../../src/application/services/LocalizationService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ import { FileSystemPort, LoggerPort, ConfigurationPort } from '../../domain/ports.js';
2
+ import { ProjectContext, ProjectContextMetadata, SessionPreferences, ContextChangeType, ContextImpact } from '../../domain/context/ProjectContext.js';
3
+ import { CodebaseAnalysisService } from './CodebaseAnalysisService.js';
4
+ import { SteeringDocumentService } from './SteeringDocumentService.js';
5
+ export interface ContextLoadOptions {
6
+ forceRefresh?: boolean;
7
+ includeFullAnalysis?: boolean;
8
+ sessionId?: string;
9
+ preferences?: SessionPreferences;
10
+ }
11
+ export interface ContextPersistenceOptions {
12
+ includeAnalysis?: boolean;
13
+ includeCache?: boolean;
14
+ maxHistoryEntries?: number;
15
+ }
16
+ export interface ContextChangeDetection {
17
+ hasChanges: boolean;
18
+ changedFiles: string[];
19
+ changeTypes: ContextChangeType[];
20
+ impactLevel: ContextImpact;
21
+ recommendations: string[];
22
+ }
23
+ export declare class ProjectContextService {
24
+ private readonly fileSystem;
25
+ private readonly codebaseAnalysis;
26
+ private readonly steeringService;
27
+ private readonly logger;
28
+ private readonly config;
29
+ private readonly contextCache;
30
+ private readonly sessionContexts;
31
+ constructor(fileSystem: FileSystemPort, codebaseAnalysis: CodebaseAnalysisService, steeringService: SteeringDocumentService, logger: LoggerPort, config: ConfigurationPort);
32
+ loadProjectContext(projectId: string, projectPath: string, options?: ContextLoadOptions): Promise<ProjectContext>;
33
+ updateProjectContext(projectId: string, changes: Partial<ProjectContextMetadata>, triggeredBy: string): Promise<ProjectContext>;
34
+ refreshProjectContext(projectId: string, triggeredBy: string, options?: {
35
+ refreshCodebase?: boolean;
36
+ refreshSteering?: boolean;
37
+ detectChanges?: boolean;
38
+ }): Promise<{
39
+ context: ProjectContext;
40
+ changeDetection?: ContextChangeDetection;
41
+ }>;
42
+ private detectContextChanges;
43
+ persistProjectContext(context: ProjectContext, options?: ContextPersistenceOptions): Promise<void>;
44
+ loadPersistedContext(projectId: string, projectPath: string): Promise<ProjectContext | null>;
45
+ private getOrCreateSessionContext;
46
+ private getDefaultSessionPreferences;
47
+ private recordContextChange;
48
+ private loadProjectMetadata;
49
+ private createMinimalCodebaseAnalysis;
50
+ private createMinimalProjectContext;
51
+ private isCacheValid;
52
+ private determineChangeType;
53
+ private assessChangeImpact;
54
+ private mapChangeImpactToContextImpact;
55
+ getContextStats(): Promise<{
56
+ cachedContexts: number;
57
+ activeSessions: number;
58
+ totalMemoryUsage: string;
59
+ oldestContext: Date | null;
60
+ }>;
61
+ }