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,355 @@
1
+ // Cross-platform compatibility and adaptation implementation
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 { platform, arch, release, version, homedir, tmpdir } from 'os';
16
+ import { join, normalize, resolve, posix, win32 } from 'path';
17
+ import osLocale from 'os-locale';
18
+ import { TYPES } from '../di/types.js';
19
+ let PlatformAdapter = class PlatformAdapter {
20
+ logger;
21
+ platformConfig;
22
+ cachedSystemInfo = null;
23
+ cachedEnvironmentInfo = null;
24
+ constructor(logger) {
25
+ this.logger = logger;
26
+ this.platformConfig = this.initializePlatformConfig();
27
+ }
28
+ async detectLocale() {
29
+ try {
30
+ const systemLocale = await osLocale();
31
+ const detectedLanguage = this.normalizeLocale(systemLocale);
32
+ this.logger.debug('System locale detected', {
33
+ raw: systemLocale,
34
+ normalized: detectedLanguage
35
+ });
36
+ return detectedLanguage;
37
+ }
38
+ catch (error) {
39
+ this.logger.warn('Failed to detect system locale, using English', {
40
+ error: error instanceof Error ? error.message : String(error)
41
+ });
42
+ return SupportedLanguage.ENGLISH;
43
+ }
44
+ }
45
+ async getSystemInfo() {
46
+ if (this.cachedSystemInfo) {
47
+ return this.cachedSystemInfo;
48
+ }
49
+ try {
50
+ const systemInfo = {
51
+ platform: this.getPlatform(),
52
+ arch: this.getArchitecture(),
53
+ osVersion: release(),
54
+ nodeVersion: version,
55
+ timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,
56
+ locale: await osLocale(),
57
+ encoding: this.getDefaultEncoding()
58
+ };
59
+ this.cachedSystemInfo = systemInfo;
60
+ this.logger.debug('System information collected', systemInfo);
61
+ return systemInfo;
62
+ }
63
+ catch (error) {
64
+ this.logger.error('Failed to collect system information', {
65
+ error: error instanceof Error ? error.message : String(error)
66
+ });
67
+ throw error;
68
+ }
69
+ }
70
+ formatPath(inputPath) {
71
+ try {
72
+ // Normalize the path for the current platform
73
+ let normalizedPath = normalize(inputPath);
74
+ // Handle cross-platform path separators
75
+ if (this.isWindows()) {
76
+ // Convert Unix-style paths to Windows-style
77
+ normalizedPath = normalizedPath.replace(/\//g, '\\');
78
+ }
79
+ else {
80
+ // Convert Windows-style paths to Unix-style
81
+ normalizedPath = normalizedPath.replace(/\\/g, '/');
82
+ }
83
+ // Resolve relative paths
84
+ if (!this.isAbsolutePath(normalizedPath)) {
85
+ normalizedPath = resolve(normalizedPath);
86
+ }
87
+ // Validate path length
88
+ if (normalizedPath.length > this.platformConfig.maxPathLength) {
89
+ this.logger.warn('Path exceeds maximum length', {
90
+ path: normalizedPath,
91
+ length: normalizedPath.length,
92
+ maxLength: this.platformConfig.maxPathLength
93
+ });
94
+ }
95
+ return normalizedPath;
96
+ }
97
+ catch (error) {
98
+ this.logger.error('Path formatting failed', {
99
+ inputPath,
100
+ error: error instanceof Error ? error.message : String(error)
101
+ });
102
+ return inputPath; // Return original path if formatting fails
103
+ }
104
+ }
105
+ getEnvironmentVariables() {
106
+ return { ...process.env };
107
+ }
108
+ async getPreferredLanguages() {
109
+ const preferredLanguages = [];
110
+ try {
111
+ // Check environment variables for language preferences
112
+ const envLang = process.env.LANG || process.env.LANGUAGE || process.env.LC_ALL;
113
+ if (envLang) {
114
+ const normalized = this.normalizeLocale(envLang);
115
+ if (!preferredLanguages.includes(normalized)) {
116
+ preferredLanguages.push(normalized);
117
+ }
118
+ }
119
+ // Detect system locale
120
+ const systemLocale = await this.detectLocale();
121
+ if (!preferredLanguages.includes(systemLocale)) {
122
+ preferredLanguages.push(systemLocale);
123
+ }
124
+ // Add fallback languages based on detected language
125
+ const fallbacks = this.getFallbackLanguages(systemLocale);
126
+ for (const fallback of fallbacks) {
127
+ if (!preferredLanguages.includes(fallback)) {
128
+ preferredLanguages.push(fallback);
129
+ }
130
+ }
131
+ // Always include English as final fallback
132
+ if (!preferredLanguages.includes(SupportedLanguage.ENGLISH)) {
133
+ preferredLanguages.push(SupportedLanguage.ENGLISH);
134
+ }
135
+ this.logger.debug('Preferred languages determined', { preferredLanguages });
136
+ return preferredLanguages;
137
+ }
138
+ catch (error) {
139
+ this.logger.error('Failed to determine preferred languages', {
140
+ error: error instanceof Error ? error.message : String(error)
141
+ });
142
+ return [SupportedLanguage.ENGLISH];
143
+ }
144
+ }
145
+ // Platform-specific utility methods
146
+ isWindows() {
147
+ return this.getPlatform() === Platform.WINDOWS;
148
+ }
149
+ isMacOS() {
150
+ return this.getPlatform() === Platform.MACOS;
151
+ }
152
+ isLinux() {
153
+ return this.getPlatform() === Platform.LINUX;
154
+ }
155
+ isUnix() {
156
+ return !this.isWindows();
157
+ }
158
+ getPathSeparator() {
159
+ return this.platformConfig.pathSeparator;
160
+ }
161
+ getLineEnding() {
162
+ return this.platformConfig.lineEnding;
163
+ }
164
+ getExecutableExtension() {
165
+ return this.platformConfig.executableExtension;
166
+ }
167
+ getConfigDirectory() {
168
+ return this.platformConfig.configDirectory;
169
+ }
170
+ getTempDirectory() {
171
+ return this.platformConfig.tempDirectory;
172
+ }
173
+ getDefaultShell() {
174
+ return this.platformConfig.defaultShell;
175
+ }
176
+ isCaseSensitive() {
177
+ return this.platformConfig.caseSensitive;
178
+ }
179
+ // File system utilities
180
+ async getAvailableDiskSpace(path) {
181
+ // This would require additional platform-specific implementation
182
+ // For now, return a reasonable default
183
+ return 1024 * 1024 * 1024; // 1GB
184
+ }
185
+ async createPlatformSpecificPath(...segments) {
186
+ const joined = join(...segments);
187
+ return this.formatPath(joined);
188
+ }
189
+ normalizePath(inputPath) {
190
+ if (this.isWindows()) {
191
+ return win32.normalize(inputPath);
192
+ }
193
+ else {
194
+ return posix.normalize(inputPath);
195
+ }
196
+ }
197
+ // Environment information
198
+ async getEnvironmentInfo() {
199
+ if (this.cachedEnvironmentInfo) {
200
+ return this.cachedEnvironmentInfo;
201
+ }
202
+ const nodeEnv = process.env.NODE_ENV || 'development';
203
+ const environmentInfo = {
204
+ isProduction: nodeEnv === 'production',
205
+ isDevelopment: nodeEnv === 'development',
206
+ isTest: nodeEnv === 'test',
207
+ nodeEnv,
208
+ processTitle: process.title,
209
+ workingDirectory: process.cwd(),
210
+ userHome: homedir()
211
+ };
212
+ this.cachedEnvironmentInfo = environmentInfo;
213
+ return environmentInfo;
214
+ }
215
+ // Private helper methods
216
+ initializePlatformConfig() {
217
+ const currentPlatform = platform();
218
+ switch (currentPlatform) {
219
+ case 'win32':
220
+ return {
221
+ pathSeparator: '\\',
222
+ lineEnding: '\r\n',
223
+ executableExtension: '.exe',
224
+ configDirectory: join(homedir(), 'AppData', 'Roaming'),
225
+ tempDirectory: tmpdir(),
226
+ defaultShell: 'cmd.exe',
227
+ maxPathLength: 260,
228
+ caseSensitive: false,
229
+ supportedEncodings: ['utf8', 'utf16le', 'latin1', 'ascii']
230
+ };
231
+ case 'darwin':
232
+ return {
233
+ pathSeparator: '/',
234
+ lineEnding: '\n',
235
+ executableExtension: '',
236
+ configDirectory: join(homedir(), 'Library', 'Preferences'),
237
+ tempDirectory: tmpdir(),
238
+ defaultShell: '/bin/bash',
239
+ maxPathLength: 1024,
240
+ caseSensitive: true,
241
+ supportedEncodings: ['utf8', 'latin1', 'ascii']
242
+ };
243
+ default: // Linux and other Unix-like systems
244
+ return {
245
+ pathSeparator: '/',
246
+ lineEnding: '\n',
247
+ executableExtension: '',
248
+ configDirectory: join(homedir(), '.config'),
249
+ tempDirectory: tmpdir(),
250
+ defaultShell: '/bin/bash',
251
+ maxPathLength: 4096,
252
+ caseSensitive: true,
253
+ supportedEncodings: ['utf8', 'latin1', 'ascii']
254
+ };
255
+ }
256
+ }
257
+ getPlatform() {
258
+ const currentPlatform = platform();
259
+ switch (currentPlatform) {
260
+ case 'win32': return Platform.WINDOWS;
261
+ case 'darwin': return Platform.MACOS;
262
+ case 'linux': return Platform.LINUX;
263
+ case 'freebsd': return Platform.FREEBSD;
264
+ case 'openbsd': return Platform.OPENBSD;
265
+ case 'sunos': return Platform.SUNOS;
266
+ case 'aix': return Platform.AIX;
267
+ default: return Platform.LINUX; // Default fallback
268
+ }
269
+ }
270
+ getArchitecture() {
271
+ const currentArch = arch();
272
+ switch (currentArch) {
273
+ case 'x64': return Architecture.X64;
274
+ case 'arm64': return Architecture.ARM64;
275
+ case 'arm': return Architecture.ARM;
276
+ case 'ia32': return Architecture.IA32;
277
+ case 'mips': return Architecture.MIPS;
278
+ case 'mipsel': return Architecture.MIPSEL;
279
+ case 'ppc': return Architecture.PPC;
280
+ case 'ppc64': return Architecture.PPC64;
281
+ case 's390': return Architecture.S390;
282
+ case 's390x': return Architecture.S390X;
283
+ default: return Architecture.X64; // Default fallback
284
+ }
285
+ }
286
+ normalizeLocale(locale) {
287
+ const normalized = locale.toLowerCase().replace(/_/g, '-');
288
+ // Direct matches
289
+ if (normalized.startsWith('en'))
290
+ return SupportedLanguage.ENGLISH;
291
+ if (normalized.startsWith('ja'))
292
+ return SupportedLanguage.JAPANESE;
293
+ if (normalized.startsWith('ko'))
294
+ return SupportedLanguage.KOREAN;
295
+ if (normalized.startsWith('es'))
296
+ return SupportedLanguage.SPANISH;
297
+ if (normalized.startsWith('fr'))
298
+ return SupportedLanguage.FRENCH;
299
+ if (normalized.startsWith('de'))
300
+ return SupportedLanguage.GERMAN;
301
+ if (normalized.startsWith('pt'))
302
+ return SupportedLanguage.PORTUGUESE;
303
+ if (normalized.startsWith('ru'))
304
+ return SupportedLanguage.RUSSIAN;
305
+ // Chinese language detection
306
+ if (normalized.startsWith('zh')) {
307
+ if (normalized.includes('cn') || normalized.includes('hans')) {
308
+ return SupportedLanguage.CHINESE_SIMPLIFIED;
309
+ }
310
+ else {
311
+ return SupportedLanguage.CHINESE_TRADITIONAL;
312
+ }
313
+ }
314
+ return SupportedLanguage.ENGLISH; // Default fallback
315
+ }
316
+ getFallbackLanguages(language) {
317
+ const fallbacks = {
318
+ [SupportedLanguage.CHINESE_SIMPLIFIED]: [SupportedLanguage.CHINESE_TRADITIONAL],
319
+ [SupportedLanguage.CHINESE_TRADITIONAL]: [SupportedLanguage.CHINESE_SIMPLIFIED],
320
+ [SupportedLanguage.KOREAN]: [SupportedLanguage.JAPANESE],
321
+ [SupportedLanguage.JAPANESE]: [SupportedLanguage.KOREAN],
322
+ [SupportedLanguage.SPANISH]: [SupportedLanguage.PORTUGUESE],
323
+ [SupportedLanguage.PORTUGUESE]: [SupportedLanguage.SPANISH],
324
+ [SupportedLanguage.FRENCH]: [SupportedLanguage.ENGLISH],
325
+ [SupportedLanguage.GERMAN]: [SupportedLanguage.ENGLISH],
326
+ [SupportedLanguage.RUSSIAN]: [SupportedLanguage.ENGLISH],
327
+ [SupportedLanguage.ENGLISH]: []
328
+ };
329
+ return fallbacks[language] || [];
330
+ }
331
+ isAbsolutePath(path) {
332
+ if (this.isWindows()) {
333
+ return /^([a-zA-Z]:\\|\\\\)/.test(path);
334
+ }
335
+ else {
336
+ return path.startsWith('/');
337
+ }
338
+ }
339
+ getDefaultEncoding() {
340
+ // Platform-specific default encoding detection
341
+ if (this.isWindows()) {
342
+ return process.env.CHCP ? 'utf8' : 'latin1';
343
+ }
344
+ else {
345
+ return 'utf8';
346
+ }
347
+ }
348
+ };
349
+ PlatformAdapter = __decorate([
350
+ injectable(),
351
+ __param(0, inject(TYPES.LoggerPort)),
352
+ __metadata("design:paramtypes", [Object])
353
+ ], PlatformAdapter);
354
+ export { PlatformAdapter };
355
+ //# sourceMappingURL=PlatformAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlatformAdapter.js","sourceRoot":"","sources":["../../../src/infrastructure/platform/PlatformAdapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ import type { LoggerPort } from '../../domain/ports.js';
2
+ import type { HookSystem as IHookSystem, HookRegistration, HookExecutionContext, HookResult } from '../../domain/plugins/index.js';
3
+ interface HookExecutionMetrics {
4
+ readonly hookName: string;
5
+ readonly pluginId: string;
6
+ readonly executionTime: number;
7
+ readonly success: boolean;
8
+ readonly error?: Error;
9
+ }
10
+ export declare class HookSystem implements IHookSystem {
11
+ private readonly logger;
12
+ private readonly hooks;
13
+ private readonly eventEmitter;
14
+ private readonly metrics;
15
+ private readonly maxMetricsHistory;
16
+ constructor(logger: LoggerPort);
17
+ register(pluginId: string, hook: HookRegistration): Promise<void>;
18
+ unregister(pluginId: string, hookName: string): Promise<void>;
19
+ execute(hookName: string, context: HookExecutionContext): Promise<HookResult>;
20
+ getHooks(hookName: string): Promise<HookRegistration[]>;
21
+ getAllHooks(): Promise<Record<string, HookRegistration[]>>;
22
+ getHookMetrics(hookName?: string): Promise<HookExecutionMetrics[]>;
23
+ getHookStatistics(hookName: string): Promise<{
24
+ totalExecutions: number;
25
+ successRate: number;
26
+ averageExecutionTime: number;
27
+ errorCount: number;
28
+ pluginStats: Record<string, {
29
+ executions: number;
30
+ successRate: number;
31
+ }>;
32
+ }>;
33
+ clearHooks(pluginId?: string): Promise<void>;
34
+ private evaluateConditions;
35
+ private getContextValue;
36
+ private evaluateCondition;
37
+ private mergeHookData;
38
+ private recordMetrics;
39
+ }
40
+ export {};