sdd-mcp-server 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +256 -0
- package/dist/__tests__/setup.d.ts +44 -0
- package/dist/__tests__/setup.js +178 -0
- package/dist/__tests__/setup.js.map +1 -0
- package/dist/__tests__/test-helpers/mock-factories.d.ts +26 -0
- package/dist/__tests__/test-helpers/mock-factories.js +466 -0
- package/dist/__tests__/test-helpers/mock-factories.js.map +1 -0
- package/dist/adapters/cli/SDDToolAdapter.d.ts +26 -0
- package/dist/adapters/cli/SDDToolAdapter.js +273 -0
- package/dist/adapters/cli/SDDToolAdapter.js.map +1 -0
- package/dist/application/services/CodebaseAnalysisService.d.ts +38 -0
- package/dist/application/services/CodebaseAnalysisService.js +737 -0
- package/dist/application/services/CodebaseAnalysisService.js.map +1 -0
- package/dist/application/services/LocalizationService.d.ts +184 -0
- package/dist/application/services/LocalizationService.js +536 -0
- package/dist/application/services/LocalizationService.js.map +1 -0
- package/dist/application/services/ProjectContextService.d.ts +61 -0
- package/dist/application/services/ProjectContextService.js +550 -0
- package/dist/application/services/ProjectContextService.js.map +1 -0
- package/dist/application/services/ProjectInitializationService.d.ts +57 -0
- package/dist/application/services/ProjectInitializationService.js +485 -0
- package/dist/application/services/ProjectInitializationService.js.map +1 -0
- package/dist/application/services/ProjectService.d.ts +19 -0
- package/dist/application/services/ProjectService.js +159 -0
- package/dist/application/services/ProjectService.js.map +1 -0
- package/dist/application/services/QualityGateService.d.ts +62 -0
- package/dist/application/services/QualityGateService.js +428 -0
- package/dist/application/services/QualityGateService.js.map +1 -0
- package/dist/application/services/QualityService.d.ts +43 -0
- package/dist/application/services/QualityService.js +245 -0
- package/dist/application/services/QualityService.js.map +1 -0
- package/dist/application/services/SteeringDocumentService.d.ts +62 -0
- package/dist/application/services/SteeringDocumentService.js +694 -0
- package/dist/application/services/SteeringDocumentService.js.map +1 -0
- package/dist/application/services/TemplateService.d.ts +47 -0
- package/dist/application/services/TemplateService.js +438 -0
- package/dist/application/services/TemplateService.js.map +1 -0
- package/dist/application/services/WorkflowEngineService.d.ts +56 -0
- package/dist/application/services/WorkflowEngineService.js +348 -0
- package/dist/application/services/WorkflowEngineService.js.map +1 -0
- package/dist/application/services/WorkflowService.d.ts +22 -0
- package/dist/application/services/WorkflowService.js +147 -0
- package/dist/application/services/WorkflowService.js.map +1 -0
- package/dist/application/services/WorkflowValidationService.d.ts +51 -0
- package/dist/application/services/WorkflowValidationService.js +665 -0
- package/dist/application/services/WorkflowValidationService.js.map +1 -0
- package/dist/domain/context/ProjectContext.d.ts +350 -0
- package/dist/domain/context/ProjectContext.js +138 -0
- package/dist/domain/context/ProjectContext.js.map +1 -0
- package/dist/domain/i18n/index.d.ts +286 -0
- package/dist/domain/i18n/index.js +97 -0
- package/dist/domain/i18n/index.js.map +1 -0
- package/dist/domain/plugins/index.d.ts +498 -0
- package/dist/domain/plugins/index.js +157 -0
- package/dist/domain/plugins/index.js.map +1 -0
- package/dist/domain/ports.d.ts +54 -0
- package/dist/domain/ports.js +3 -0
- package/dist/domain/ports.js.map +1 -0
- package/dist/domain/quality/index.d.ts +361 -0
- package/dist/domain/quality/index.js +113 -0
- package/dist/domain/quality/index.js.map +1 -0
- package/dist/domain/services/DomainService.d.ts +18 -0
- package/dist/domain/services/DomainService.js +71 -0
- package/dist/domain/services/DomainService.js.map +1 -0
- package/dist/domain/templates/index.d.ts +158 -0
- package/dist/domain/templates/index.js +22 -0
- package/dist/domain/templates/index.js.map +1 -0
- package/dist/domain/types.d.ts +115 -0
- package/dist/domain/types.js +37 -0
- package/dist/domain/types.js.map +1 -0
- package/dist/domain/workflow/WorkflowStateMachine.d.ts +62 -0
- package/dist/domain/workflow/WorkflowStateMachine.js +286 -0
- package/dist/domain/workflow/WorkflowStateMachine.js.map +1 -0
- package/dist/index.d.ts +19 -0
- package/dist/index.js +97 -0
- package/dist/index.js.map +1 -0
- package/dist/infrastructure/adapters/AjvValidationAdapter.d.ts +7 -0
- package/dist/infrastructure/adapters/AjvValidationAdapter.js +37 -0
- package/dist/infrastructure/adapters/AjvValidationAdapter.js.map +1 -0
- package/dist/infrastructure/adapters/ConsoleLoggerAdapter.d.ts +8 -0
- package/dist/infrastructure/adapters/ConsoleLoggerAdapter.js +41 -0
- package/dist/infrastructure/adapters/ConsoleLoggerAdapter.js.map +1 -0
- package/dist/infrastructure/adapters/FileBasedTaskTracker.d.ts +9 -0
- package/dist/infrastructure/adapters/FileBasedTaskTracker.js +41 -0
- package/dist/infrastructure/adapters/FileBasedTaskTracker.js.map +1 -0
- package/dist/infrastructure/adapters/HandlebarsTemplateEngine.d.ts +8 -0
- package/dist/infrastructure/adapters/HandlebarsTemplateEngine.js +38 -0
- package/dist/infrastructure/adapters/HandlebarsTemplateEngine.js.map +1 -0
- package/dist/infrastructure/adapters/JsonConfigurationAdapter.d.ts +7 -0
- package/dist/infrastructure/adapters/JsonConfigurationAdapter.js +24 -0
- package/dist/infrastructure/adapters/JsonConfigurationAdapter.js.map +1 -0
- package/dist/infrastructure/adapters/LinusQualityAnalyzer.d.ts +9 -0
- package/dist/infrastructure/adapters/LinusQualityAnalyzer.js +75 -0
- package/dist/infrastructure/adapters/LinusQualityAnalyzer.js.map +1 -0
- package/dist/infrastructure/adapters/NodeFileSystemAdapter.d.ts +12 -0
- package/dist/infrastructure/adapters/NodeFileSystemAdapter.js +39 -0
- package/dist/infrastructure/adapters/NodeFileSystemAdapter.js.map +1 -0
- package/dist/infrastructure/di/container.d.ts +3 -0
- package/dist/infrastructure/di/container.js +98 -0
- package/dist/infrastructure/di/container.js.map +1 -0
- package/dist/infrastructure/di/types.d.ts +39 -0
- package/dist/infrastructure/di/types.js +45 -0
- package/dist/infrastructure/di/types.js.map +1 -0
- package/dist/infrastructure/i18n/I18nextService.d.ts +27 -0
- package/dist/infrastructure/i18n/I18nextService.js +357 -0
- package/dist/infrastructure/i18n/I18nextService.js.map +1 -0
- package/dist/infrastructure/mcp/CapabilityNegotiator.d.ts +21 -0
- package/dist/infrastructure/mcp/CapabilityNegotiator.js +75 -0
- package/dist/infrastructure/mcp/CapabilityNegotiator.js.map +1 -0
- package/dist/infrastructure/mcp/ErrorHandler.d.ts +29 -0
- package/dist/infrastructure/mcp/ErrorHandler.js +101 -0
- package/dist/infrastructure/mcp/ErrorHandler.js.map +1 -0
- package/dist/infrastructure/mcp/MCPServer.d.ts +25 -0
- package/dist/infrastructure/mcp/MCPServer.js +246 -0
- package/dist/infrastructure/mcp/MCPServer.js.map +1 -0
- package/dist/infrastructure/mcp/PromptManager.d.ts +18 -0
- package/dist/infrastructure/mcp/PromptManager.js +373 -0
- package/dist/infrastructure/mcp/PromptManager.js.map +1 -0
- package/dist/infrastructure/mcp/ResourceManager.d.ts +15 -0
- package/dist/infrastructure/mcp/ResourceManager.js +229 -0
- package/dist/infrastructure/mcp/ResourceManager.js.map +1 -0
- package/dist/infrastructure/mcp/SessionManager.d.ts +64 -0
- package/dist/infrastructure/mcp/SessionManager.js +221 -0
- package/dist/infrastructure/mcp/SessionManager.js.map +1 -0
- package/dist/infrastructure/mcp/ToolRegistry.d.ts +48 -0
- package/dist/infrastructure/mcp/ToolRegistry.js +235 -0
- package/dist/infrastructure/mcp/ToolRegistry.js.map +1 -0
- package/dist/infrastructure/platform/PlatformAdapter.d.ts +46 -0
- package/dist/infrastructure/platform/PlatformAdapter.js +355 -0
- package/dist/infrastructure/platform/PlatformAdapter.js.map +1 -0
- package/dist/infrastructure/plugins/HookSystem.d.ts +40 -0
- package/dist/infrastructure/plugins/HookSystem.js +415 -0
- package/dist/infrastructure/plugins/HookSystem.js.map +1 -0
- package/dist/infrastructure/plugins/PluginManager.d.ts +51 -0
- package/dist/infrastructure/plugins/PluginManager.js +650 -0
- package/dist/infrastructure/plugins/PluginManager.js.map +1 -0
- package/dist/infrastructure/plugins/PluginSteeringRegistry.d.ts +63 -0
- package/dist/infrastructure/plugins/PluginSteeringRegistry.js +439 -0
- package/dist/infrastructure/plugins/PluginSteeringRegistry.js.map +1 -0
- package/dist/infrastructure/plugins/PluginToolRegistry.d.ts +54 -0
- package/dist/infrastructure/plugins/PluginToolRegistry.js +490 -0
- package/dist/infrastructure/plugins/PluginToolRegistry.js.map +1 -0
- package/dist/infrastructure/quality/ASTAnalyzer.d.ts +65 -0
- package/dist/infrastructure/quality/ASTAnalyzer.js +439 -0
- package/dist/infrastructure/quality/ASTAnalyzer.js.map +1 -0
- package/dist/infrastructure/quality/LinusCodeReviewer.d.ts +52 -0
- package/dist/infrastructure/quality/LinusCodeReviewer.js +551 -0
- package/dist/infrastructure/quality/LinusCodeReviewer.js.map +1 -0
- package/dist/infrastructure/repositories/InMemoryProjectRepository.d.ts +10 -0
- package/dist/infrastructure/repositories/InMemoryProjectRepository.js +35 -0
- package/dist/infrastructure/repositories/InMemoryProjectRepository.js.map +1 -0
- package/dist/infrastructure/schemas/project.schema.d.ts +192 -0
- package/dist/infrastructure/schemas/project.schema.js +114 -0
- package/dist/infrastructure/schemas/project.schema.js.map +1 -0
- package/dist/infrastructure/templates/FileGenerator.d.ts +15 -0
- package/dist/infrastructure/templates/FileGenerator.js +385 -0
- package/dist/infrastructure/templates/FileGenerator.js.map +1 -0
- package/dist/infrastructure/templates/HandlebarsRenderer.d.ts +16 -0
- package/dist/infrastructure/templates/HandlebarsRenderer.js +252 -0
- package/dist/infrastructure/templates/HandlebarsRenderer.js.map +1 -0
- package/dist/infrastructure/templates/TemplateManager.d.ts +36 -0
- package/dist/infrastructure/templates/TemplateManager.js +777 -0
- package/dist/infrastructure/templates/TemplateManager.js.map +1 -0
- package/package.json +89 -0
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
// Dependency injection container using Inversify
|
|
2
|
+
import 'reflect-metadata';
|
|
3
|
+
import { Container } from 'inversify';
|
|
4
|
+
import { TYPES } from './types.js';
|
|
5
|
+
// Infrastructure adapters
|
|
6
|
+
import { InMemoryProjectRepository } from '../repositories/InMemoryProjectRepository.js';
|
|
7
|
+
import { NodeFileSystemAdapter } from '../adapters/NodeFileSystemAdapter.js';
|
|
8
|
+
import { HandlebarsTemplateEngine } from '../adapters/HandlebarsTemplateEngine.js';
|
|
9
|
+
import { JsonConfigurationAdapter } from '../adapters/JsonConfigurationAdapter.js';
|
|
10
|
+
import { ConsoleLoggerAdapter } from '../adapters/ConsoleLoggerAdapter.js';
|
|
11
|
+
import { AjvValidationAdapter } from '../adapters/AjvValidationAdapter.js';
|
|
12
|
+
import { LinusQualityAnalyzer } from '../adapters/LinusQualityAnalyzer.js';
|
|
13
|
+
import { FileBasedTaskTracker } from '../adapters/FileBasedTaskTracker.js';
|
|
14
|
+
// Template infrastructure
|
|
15
|
+
import { HandlebarsRenderer } from '../templates/HandlebarsRenderer.js';
|
|
16
|
+
import { TemplateManager } from '../templates/TemplateManager.js';
|
|
17
|
+
import { FileGenerator } from '../templates/FileGenerator.js';
|
|
18
|
+
// Quality infrastructure
|
|
19
|
+
import { LinusCodeReviewer } from '../quality/LinusCodeReviewer.js';
|
|
20
|
+
// I18n infrastructure
|
|
21
|
+
import { I18nextService } from '../i18n/I18nextService.js';
|
|
22
|
+
import { PlatformAdapter } from '../platform/PlatformAdapter.js';
|
|
23
|
+
import { LocalizationService } from '../../application/services/LocalizationService.js';
|
|
24
|
+
// MCP components
|
|
25
|
+
import { MCPServer } from '../mcp/MCPServer.js';
|
|
26
|
+
import { MCPErrorHandler } from '../mcp/ErrorHandler.js';
|
|
27
|
+
import { CapabilityNegotiator } from '../mcp/CapabilityNegotiator.js';
|
|
28
|
+
import { SessionManager } from '../mcp/SessionManager.js';
|
|
29
|
+
import { ResourceManager } from '../mcp/ResourceManager.js';
|
|
30
|
+
import { PromptManager } from '../mcp/PromptManager.js';
|
|
31
|
+
import { ToolRegistry } from '../mcp/ToolRegistry.js';
|
|
32
|
+
// Plugin system
|
|
33
|
+
import { PluginManager } from '../plugins/PluginManager.js';
|
|
34
|
+
import { HookSystem } from '../plugins/HookSystem.js';
|
|
35
|
+
import { PluginToolRegistry } from '../plugins/PluginToolRegistry.js';
|
|
36
|
+
import { PluginSteeringRegistry } from '../plugins/PluginSteeringRegistry.js';
|
|
37
|
+
// Application services
|
|
38
|
+
import { ProjectService } from '../../application/services/ProjectService.js';
|
|
39
|
+
import { WorkflowService } from '../../application/services/WorkflowService.js';
|
|
40
|
+
import { TemplateService } from '../../application/services/TemplateService.js';
|
|
41
|
+
import { QualityService } from '../../application/services/QualityService.js';
|
|
42
|
+
import { WorkflowEngineService } from '../../application/services/WorkflowEngineService.js';
|
|
43
|
+
import { ProjectInitializationService } from '../../application/services/ProjectInitializationService.js';
|
|
44
|
+
import { WorkflowValidationService } from '../../application/services/WorkflowValidationService.js';
|
|
45
|
+
import { CodebaseAnalysisService } from '../../application/services/CodebaseAnalysisService.js';
|
|
46
|
+
import { SteeringDocumentService } from '../../application/services/SteeringDocumentService.js';
|
|
47
|
+
import { ProjectContextService } from '../../application/services/ProjectContextService.js';
|
|
48
|
+
import { SDDToolAdapter } from '../../adapters/cli/SDDToolAdapter.js';
|
|
49
|
+
export function createContainer() {
|
|
50
|
+
const container = new Container();
|
|
51
|
+
// Bind domain ports to infrastructure adapters
|
|
52
|
+
container.bind(TYPES.ProjectRepository).to(InMemoryProjectRepository);
|
|
53
|
+
container.bind(TYPES.FileSystemPort).to(NodeFileSystemAdapter);
|
|
54
|
+
container.bind(TYPES.TemplateEngine).to(HandlebarsTemplateEngine);
|
|
55
|
+
container.bind(TYPES.ConfigurationPort).to(JsonConfigurationAdapter);
|
|
56
|
+
container.bind(TYPES.LoggerPort).to(ConsoleLoggerAdapter);
|
|
57
|
+
container.bind(TYPES.ValidationPort).to(AjvValidationAdapter);
|
|
58
|
+
container.bind(TYPES.QualityAnalyzer).to(LinusQualityAnalyzer);
|
|
59
|
+
container.bind(TYPES.TaskTracker).to(FileBasedTaskTracker);
|
|
60
|
+
// Bind template ports
|
|
61
|
+
container.bind(TYPES.TemplateRendererPort).to(HandlebarsRenderer);
|
|
62
|
+
container.bind(TYPES.TemplateManagerPort).to(TemplateManager);
|
|
63
|
+
container.bind(TYPES.FileGeneratorPort).to(FileGenerator);
|
|
64
|
+
// Bind quality ports
|
|
65
|
+
container.bind(TYPES.CodeQualityAnalyzerPort).to(LinusCodeReviewer);
|
|
66
|
+
// Bind i18n ports
|
|
67
|
+
container.bind(TYPES.I18nService).to(I18nextService);
|
|
68
|
+
container.bind(TYPES.PlatformAdapter).to(PlatformAdapter);
|
|
69
|
+
container.bind(TYPES.I18nManagerPort).to(LocalizationService);
|
|
70
|
+
// Bind plugin system components
|
|
71
|
+
container.bind(TYPES.HookSystem).to(HookSystem);
|
|
72
|
+
container.bind(TYPES.PluginToolRegistry).to(PluginToolRegistry);
|
|
73
|
+
container.bind(TYPES.PluginSteeringRegistry).to(PluginSteeringRegistry);
|
|
74
|
+
container.bind(TYPES.PluginManager).to(PluginManager);
|
|
75
|
+
// Bind MCP components
|
|
76
|
+
container.bind(TYPES.MCPServer).to(MCPServer);
|
|
77
|
+
container.bind(TYPES.MCPErrorHandler).to(MCPErrorHandler);
|
|
78
|
+
container.bind(TYPES.CapabilityNegotiator).to(CapabilityNegotiator);
|
|
79
|
+
container.bind(TYPES.SessionManager).to(SessionManager);
|
|
80
|
+
container.bind(TYPES.ResourceManager).to(ResourceManager);
|
|
81
|
+
container.bind(TYPES.PromptManager).to(PromptManager);
|
|
82
|
+
container.bind(TYPES.ToolRegistry).to(ToolRegistry);
|
|
83
|
+
// Bind application services
|
|
84
|
+
container.bind(TYPES.ProjectService).to(ProjectService);
|
|
85
|
+
container.bind(TYPES.WorkflowService).to(WorkflowService);
|
|
86
|
+
container.bind(TYPES.TemplateService).to(TemplateService);
|
|
87
|
+
container.bind(TYPES.QualityService).to(QualityService);
|
|
88
|
+
container.bind(TYPES.WorkflowEngineService).to(WorkflowEngineService);
|
|
89
|
+
container.bind(TYPES.ProjectInitializationService).to(ProjectInitializationService);
|
|
90
|
+
container.bind(TYPES.WorkflowValidationService).to(WorkflowValidationService);
|
|
91
|
+
container.bind(TYPES.CodebaseAnalysisService).to(CodebaseAnalysisService);
|
|
92
|
+
container.bind(TYPES.SteeringDocumentService).to(SteeringDocumentService);
|
|
93
|
+
container.bind(TYPES.ProjectContextService).to(ProjectContextService);
|
|
94
|
+
// Bind adapters
|
|
95
|
+
container.bind(TYPES.SDDToolAdapter).to(SDDToolAdapter);
|
|
96
|
+
return container;
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=container.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"container.js","sourceRoot":"","sources":["../../../src/infrastructure/di/container.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
export declare const TYPES: {
|
|
2
|
+
readonly ProjectRepository: symbol;
|
|
3
|
+
readonly FileSystemPort: symbol;
|
|
4
|
+
readonly TemplateEngine: symbol;
|
|
5
|
+
readonly ConfigurationPort: symbol;
|
|
6
|
+
readonly LoggerPort: symbol;
|
|
7
|
+
readonly ValidationPort: symbol;
|
|
8
|
+
readonly QualityAnalyzer: symbol;
|
|
9
|
+
readonly TaskTracker: symbol;
|
|
10
|
+
readonly TemplateRendererPort: symbol;
|
|
11
|
+
readonly TemplateManagerPort: symbol;
|
|
12
|
+
readonly FileGeneratorPort: symbol;
|
|
13
|
+
readonly CodeQualityAnalyzerPort: symbol;
|
|
14
|
+
readonly I18nService: symbol;
|
|
15
|
+
readonly I18nManagerPort: symbol;
|
|
16
|
+
readonly PlatformAdapter: symbol;
|
|
17
|
+
readonly ProjectService: symbol;
|
|
18
|
+
readonly WorkflowService: symbol;
|
|
19
|
+
readonly TemplateService: symbol;
|
|
20
|
+
readonly QualityService: symbol;
|
|
21
|
+
readonly WorkflowEngineService: symbol;
|
|
22
|
+
readonly ProjectInitializationService: symbol;
|
|
23
|
+
readonly WorkflowValidationService: symbol;
|
|
24
|
+
readonly CodebaseAnalysisService: symbol;
|
|
25
|
+
readonly SteeringDocumentService: symbol;
|
|
26
|
+
readonly ProjectContextService: symbol;
|
|
27
|
+
readonly MCPServer: symbol;
|
|
28
|
+
readonly MCPErrorHandler: symbol;
|
|
29
|
+
readonly CapabilityNegotiator: symbol;
|
|
30
|
+
readonly SessionManager: symbol;
|
|
31
|
+
readonly ResourceManager: symbol;
|
|
32
|
+
readonly PromptManager: symbol;
|
|
33
|
+
readonly ToolRegistry: symbol;
|
|
34
|
+
readonly SDDToolAdapter: symbol;
|
|
35
|
+
readonly PluginManager: symbol;
|
|
36
|
+
readonly HookSystem: symbol;
|
|
37
|
+
readonly PluginToolRegistry: symbol;
|
|
38
|
+
readonly PluginSteeringRegistry: symbol;
|
|
39
|
+
};
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
// Dependency injection type identifiers
|
|
2
|
+
export const TYPES = {
|
|
3
|
+
// Domain ports
|
|
4
|
+
ProjectRepository: Symbol.for('ProjectRepository'),
|
|
5
|
+
FileSystemPort: Symbol.for('FileSystemPort'),
|
|
6
|
+
TemplateEngine: Symbol.for('TemplateEngine'),
|
|
7
|
+
ConfigurationPort: Symbol.for('ConfigurationPort'),
|
|
8
|
+
LoggerPort: Symbol.for('LoggerPort'),
|
|
9
|
+
ValidationPort: Symbol.for('ValidationPort'),
|
|
10
|
+
QualityAnalyzer: Symbol.for('QualityAnalyzer'),
|
|
11
|
+
TaskTracker: Symbol.for('TaskTracker'),
|
|
12
|
+
TemplateRendererPort: Symbol.for('TemplateRendererPort'),
|
|
13
|
+
TemplateManagerPort: Symbol.for('TemplateManagerPort'),
|
|
14
|
+
FileGeneratorPort: Symbol.for('FileGeneratorPort'),
|
|
15
|
+
CodeQualityAnalyzerPort: Symbol.for('CodeQualityAnalyzerPort'),
|
|
16
|
+
I18nService: Symbol.for('I18nService'),
|
|
17
|
+
I18nManagerPort: Symbol.for('I18nManagerPort'),
|
|
18
|
+
PlatformAdapter: Symbol.for('PlatformAdapter'),
|
|
19
|
+
// Application services
|
|
20
|
+
ProjectService: Symbol.for('ProjectService'),
|
|
21
|
+
WorkflowService: Symbol.for('WorkflowService'),
|
|
22
|
+
TemplateService: Symbol.for('TemplateService'),
|
|
23
|
+
QualityService: Symbol.for('QualityService'),
|
|
24
|
+
WorkflowEngineService: Symbol.for('WorkflowEngineService'),
|
|
25
|
+
ProjectInitializationService: Symbol.for('ProjectInitializationService'),
|
|
26
|
+
WorkflowValidationService: Symbol.for('WorkflowValidationService'),
|
|
27
|
+
CodebaseAnalysisService: Symbol.for('CodebaseAnalysisService'),
|
|
28
|
+
SteeringDocumentService: Symbol.for('SteeringDocumentService'),
|
|
29
|
+
ProjectContextService: Symbol.for('ProjectContextService'),
|
|
30
|
+
// MCP components
|
|
31
|
+
MCPServer: Symbol.for('MCPServer'),
|
|
32
|
+
MCPErrorHandler: Symbol.for('MCPErrorHandler'),
|
|
33
|
+
CapabilityNegotiator: Symbol.for('CapabilityNegotiator'),
|
|
34
|
+
SessionManager: Symbol.for('SessionManager'),
|
|
35
|
+
ResourceManager: Symbol.for('ResourceManager'),
|
|
36
|
+
PromptManager: Symbol.for('PromptManager'),
|
|
37
|
+
ToolRegistry: Symbol.for('ToolRegistry'),
|
|
38
|
+
SDDToolAdapter: Symbol.for('SDDToolAdapter'),
|
|
39
|
+
// Plugin system components
|
|
40
|
+
PluginManager: Symbol.for('PluginManager'),
|
|
41
|
+
HookSystem: Symbol.for('HookSystem'),
|
|
42
|
+
PluginToolRegistry: Symbol.for('PluginToolRegistry'),
|
|
43
|
+
PluginSteeringRegistry: Symbol.for('PluginSteeringRegistry')
|
|
44
|
+
};
|
|
45
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/infrastructure/di/types.ts"],"names":[],"mappings":"AAAA,wCAAwC;AAExC,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,eAAe;IACf,iBAAiB,EAAE,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC;IAClD,cAAc,EAAE,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC;IAC5C,cAAc,EAAE,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC;IAC5C,iBAAiB,EAAE,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC;IAClD,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC;IACpC,cAAc,EAAE,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC;IAC5C,eAAe,EAAE,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC;IAC9C,WAAW,EAAE,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC;IACtC,oBAAoB,EAAE,MAAM,CAAC,GAAG,CAAC,sBAAsB,CAAC;IACxD,mBAAmB,EAAE,MAAM,CAAC,GAAG,CAAC,qBAAqB,CAAC;IACtD,iBAAiB,EAAE,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC;IAClD,uBAAuB,EAAE,MAAM,CAAC,GAAG,CAAC,yBAAyB,CAAC;IAC9D,WAAW,EAAE,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC;IACtC,eAAe,EAAE,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC;IAC9C,eAAe,EAAE,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC;IAE9C,uBAAuB;IACvB,cAAc,EAAE,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC;IAC5C,eAAe,EAAE,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC;IAC9C,eAAe,EAAE,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC;IAC9C,cAAc,EAAE,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC;IAC5C,qBAAqB,EAAE,MAAM,CAAC,GAAG,CAAC,uBAAuB,CAAC;IAC1D,4BAA4B,EAAE,MAAM,CAAC,GAAG,CAAC,8BAA8B,CAAC;IACxE,yBAAyB,EAAE,MAAM,CAAC,GAAG,CAAC,2BAA2B,CAAC;IAClE,uBAAuB,EAAE,MAAM,CAAC,GAAG,CAAC,yBAAyB,CAAC;IAC9D,uBAAuB,EAAE,MAAM,CAAC,GAAG,CAAC,yBAAyB,CAAC;IAC9D,qBAAqB,EAAE,MAAM,CAAC,GAAG,CAAC,uBAAuB,CAAC;IAE1D,iBAAiB;IACjB,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC;IAClC,eAAe,EAAE,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC;IAC9C,oBAAoB,EAAE,MAAM,CAAC,GAAG,CAAC,sBAAsB,CAAC;IACxD,cAAc,EAAE,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC;IAC5C,eAAe,EAAE,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC;IAC9C,aAAa,EAAE,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC;IAC1C,YAAY,EAAE,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC;IACxC,cAAc,EAAE,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC;IAE5C,2BAA2B;IAC3B,aAAa,EAAE,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC;IAC1C,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC;IACpC,kBAAkB,EAAE,MAAM,CAAC,GAAG,CAAC,oBAAoB,CAAC;IACpD,sBAAsB,EAAE,MAAM,CAAC,GAAG,CAAC,wBAAwB,CAAC;CACpD,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { LoggerPort } from '../../domain/ports.js';
|
|
2
|
+
import type { I18nService, I18nConfig, SupportedLanguage, TranslationOptions } from '../../domain/i18n/index.js';
|
|
3
|
+
export declare class I18nextService implements I18nService {
|
|
4
|
+
private readonly logger;
|
|
5
|
+
private initialized;
|
|
6
|
+
private config;
|
|
7
|
+
private t;
|
|
8
|
+
constructor(logger: LoggerPort);
|
|
9
|
+
init(config?: Partial<I18nConfig>): Promise<void>;
|
|
10
|
+
t(key: string, options?: TranslationOptions): string;
|
|
11
|
+
changeLanguage(language: SupportedLanguage): Promise<void>;
|
|
12
|
+
getCurrentLanguage(): SupportedLanguage;
|
|
13
|
+
getSupportedLanguages(): SupportedLanguage[];
|
|
14
|
+
addResourceBundle(language: SupportedLanguage, namespace: string, resources: Record<string, unknown>): void;
|
|
15
|
+
loadNamespace(namespace: string): Promise<void>;
|
|
16
|
+
exists(key: string, language?: SupportedLanguage): boolean;
|
|
17
|
+
private detectSystemLanguage;
|
|
18
|
+
private validateLanguage;
|
|
19
|
+
formatRelativeTime(date: Date, language?: SupportedLanguage): Promise<string>;
|
|
20
|
+
formatNumber(number: number, style?: 'decimal' | 'currency' | 'percent', currency?: string, language?: SupportedLanguage): Promise<string>;
|
|
21
|
+
formatDate(date: Date, style?: 'short' | 'medium' | 'long' | 'full', language?: SupportedLanguage): Promise<string>;
|
|
22
|
+
getPluralForm(count: number, language?: SupportedLanguage): Promise<string>;
|
|
23
|
+
getLoadedResources(): Promise<Record<string, Record<string, Record<string, unknown>>>>;
|
|
24
|
+
reloadResources(languages?: SupportedLanguage[], namespaces?: string[]): Promise<void>;
|
|
25
|
+
getConfig(): I18nConfig;
|
|
26
|
+
isInitialized(): boolean;
|
|
27
|
+
}
|
|
@@ -0,0 +1,357 @@
|
|
|
1
|
+
// i18next-based internationalization service 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 i18next from 'i18next';
|
|
16
|
+
import Backend from 'i18next-fs-backend';
|
|
17
|
+
import osLocale from 'os-locale';
|
|
18
|
+
import path from 'path';
|
|
19
|
+
import { TYPES } from '../di/types.js';
|
|
20
|
+
const DEFAULT_I18N_CONFIG = {
|
|
21
|
+
defaultLanguage: SupportedLanguage.ENGLISH,
|
|
22
|
+
fallbackLanguage: SupportedLanguage.ENGLISH,
|
|
23
|
+
supportedLanguages: [
|
|
24
|
+
SupportedLanguage.ENGLISH,
|
|
25
|
+
SupportedLanguage.JAPANESE,
|
|
26
|
+
SupportedLanguage.CHINESE_TRADITIONAL,
|
|
27
|
+
SupportedLanguage.CHINESE_SIMPLIFIED,
|
|
28
|
+
SupportedLanguage.KOREAN,
|
|
29
|
+
SupportedLanguage.SPANISH,
|
|
30
|
+
SupportedLanguage.FRENCH,
|
|
31
|
+
SupportedLanguage.GERMAN
|
|
32
|
+
],
|
|
33
|
+
autoDetect: true,
|
|
34
|
+
resourcePath: './locales',
|
|
35
|
+
namespaces: ['common', 'sdd', 'workflow', 'quality', 'templates', 'errors'],
|
|
36
|
+
interpolation: {
|
|
37
|
+
prefix: '{{',
|
|
38
|
+
suffix: '}}',
|
|
39
|
+
escapeValue: false,
|
|
40
|
+
formatSeparator: ',',
|
|
41
|
+
format: (value, format, language) => {
|
|
42
|
+
if (format === 'uppercase')
|
|
43
|
+
return String(value).toUpperCase();
|
|
44
|
+
if (format === 'lowercase')
|
|
45
|
+
return String(value).toLowerCase();
|
|
46
|
+
if (format === 'number' && typeof value === 'number') {
|
|
47
|
+
return new Intl.NumberFormat(language).format(value);
|
|
48
|
+
}
|
|
49
|
+
if (format === 'currency' && typeof value === 'number') {
|
|
50
|
+
return new Intl.NumberFormat(language, { style: 'currency', currency: 'USD' }).format(value);
|
|
51
|
+
}
|
|
52
|
+
return String(value);
|
|
53
|
+
}
|
|
54
|
+
},
|
|
55
|
+
detection: {
|
|
56
|
+
order: ['environment', 'header', 'cookie'],
|
|
57
|
+
caches: ['cookie'],
|
|
58
|
+
cookieName: 'sdd-language',
|
|
59
|
+
sessionName: 'sdd-language',
|
|
60
|
+
headerName: 'accept-language',
|
|
61
|
+
excludeCacheFor: []
|
|
62
|
+
},
|
|
63
|
+
cache: {
|
|
64
|
+
enabled: true,
|
|
65
|
+
prefix: 'sdd-i18n',
|
|
66
|
+
expirationTime: 7 * 24 * 60 * 60 * 1000, // 7 days
|
|
67
|
+
versions: {}
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
let I18nextService = class I18nextService {
|
|
71
|
+
logger;
|
|
72
|
+
initialized = false;
|
|
73
|
+
config = DEFAULT_I18N_CONFIG;
|
|
74
|
+
t = (key) => key;
|
|
75
|
+
constructor(logger) {
|
|
76
|
+
this.logger = logger;
|
|
77
|
+
}
|
|
78
|
+
async init(config = {}) {
|
|
79
|
+
this.config = { ...DEFAULT_I18N_CONFIG, ...config };
|
|
80
|
+
try {
|
|
81
|
+
const detectedLanguage = await this.detectSystemLanguage();
|
|
82
|
+
const initialLanguage = this.config.autoDetect
|
|
83
|
+
? this.validateLanguage(detectedLanguage)
|
|
84
|
+
: this.config.defaultLanguage;
|
|
85
|
+
const i18nOptions = {
|
|
86
|
+
lng: initialLanguage,
|
|
87
|
+
fallbackLng: this.config.fallbackLanguage,
|
|
88
|
+
supportedLngs: this.config.supportedLanguages,
|
|
89
|
+
preload: this.config.supportedLanguages,
|
|
90
|
+
ns: this.config.namespaces,
|
|
91
|
+
defaultNS: 'common',
|
|
92
|
+
interpolation: {
|
|
93
|
+
escapeValue: this.config.interpolation.escapeValue,
|
|
94
|
+
prefix: this.config.interpolation.prefix,
|
|
95
|
+
suffix: this.config.interpolation.suffix,
|
|
96
|
+
formatSeparator: this.config.interpolation.formatSeparator,
|
|
97
|
+
format: this.config.interpolation.format
|
|
98
|
+
},
|
|
99
|
+
backend: {
|
|
100
|
+
loadPath: path.join(this.config.resourcePath, '{{lng}}/{{ns}}.json'),
|
|
101
|
+
addPath: path.join(this.config.resourcePath, '{{lng}}/{{ns}}.missing.json'),
|
|
102
|
+
jsonIndent: 2
|
|
103
|
+
},
|
|
104
|
+
saveMissing: true,
|
|
105
|
+
saveMissingTo: 'fallback',
|
|
106
|
+
missingKeyHandler: (lng, ns, key, fallbackValue) => {
|
|
107
|
+
this.logger.warn('Missing translation key', {
|
|
108
|
+
languages: lng,
|
|
109
|
+
namespace: ns,
|
|
110
|
+
key,
|
|
111
|
+
fallbackValue
|
|
112
|
+
});
|
|
113
|
+
},
|
|
114
|
+
debug: false,
|
|
115
|
+
react: {
|
|
116
|
+
useSuspense: false
|
|
117
|
+
}
|
|
118
|
+
};
|
|
119
|
+
await i18next
|
|
120
|
+
.use(Backend)
|
|
121
|
+
.init(i18nOptions);
|
|
122
|
+
this.t = i18next.t;
|
|
123
|
+
this.initialized = true;
|
|
124
|
+
this.logger.info('I18n service initialized', {
|
|
125
|
+
language: initialLanguage,
|
|
126
|
+
supportedLanguages: this.config.supportedLanguages,
|
|
127
|
+
namespaces: this.config.namespaces
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
catch (error) {
|
|
131
|
+
this.logger.error('Failed to initialize i18n service', {
|
|
132
|
+
error: error instanceof Error ? error.message : String(error)
|
|
133
|
+
});
|
|
134
|
+
throw new Error(`I18n initialization failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
t(key, options) {
|
|
138
|
+
if (!this.initialized) {
|
|
139
|
+
this.logger.warn('I18n service not initialized, returning key', { key });
|
|
140
|
+
return key;
|
|
141
|
+
}
|
|
142
|
+
try {
|
|
143
|
+
const translation = this.t(key, options);
|
|
144
|
+
if (translation === key && options?.defaultValue) {
|
|
145
|
+
return options.defaultValue;
|
|
146
|
+
}
|
|
147
|
+
return translation;
|
|
148
|
+
}
|
|
149
|
+
catch (error) {
|
|
150
|
+
this.logger.error('Translation error', {
|
|
151
|
+
key,
|
|
152
|
+
options,
|
|
153
|
+
error: error instanceof Error ? error.message : String(error)
|
|
154
|
+
});
|
|
155
|
+
return options?.defaultValue || key;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
async changeLanguage(language) {
|
|
159
|
+
if (!this.initialized) {
|
|
160
|
+
throw new Error('I18n service not initialized');
|
|
161
|
+
}
|
|
162
|
+
if (!this.config.supportedLanguages.includes(language)) {
|
|
163
|
+
throw new Error(`Language '${language}' is not supported`);
|
|
164
|
+
}
|
|
165
|
+
try {
|
|
166
|
+
await i18next.changeLanguage(language);
|
|
167
|
+
this.logger.info('Language changed', {
|
|
168
|
+
previousLanguage: i18next.language,
|
|
169
|
+
newLanguage: language
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
catch (error) {
|
|
173
|
+
this.logger.error('Failed to change language', {
|
|
174
|
+
language,
|
|
175
|
+
error: error instanceof Error ? error.message : String(error)
|
|
176
|
+
});
|
|
177
|
+
throw error;
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
getCurrentLanguage() {
|
|
181
|
+
if (!this.initialized) {
|
|
182
|
+
return this.config.defaultLanguage;
|
|
183
|
+
}
|
|
184
|
+
return this.validateLanguage(i18next.language);
|
|
185
|
+
}
|
|
186
|
+
getSupportedLanguages() {
|
|
187
|
+
return [...this.config.supportedLanguages];
|
|
188
|
+
}
|
|
189
|
+
addResourceBundle(language, namespace, resources) {
|
|
190
|
+
if (!this.initialized) {
|
|
191
|
+
this.logger.warn('Cannot add resource bundle - I18n service not initialized');
|
|
192
|
+
return;
|
|
193
|
+
}
|
|
194
|
+
try {
|
|
195
|
+
i18next.addResourceBundle(language, namespace, resources, true, true);
|
|
196
|
+
this.logger.debug('Resource bundle added', {
|
|
197
|
+
language,
|
|
198
|
+
namespace,
|
|
199
|
+
keysCount: Object.keys(resources).length
|
|
200
|
+
});
|
|
201
|
+
}
|
|
202
|
+
catch (error) {
|
|
203
|
+
this.logger.error('Failed to add resource bundle', {
|
|
204
|
+
language,
|
|
205
|
+
namespace,
|
|
206
|
+
error: error instanceof Error ? error.message : String(error)
|
|
207
|
+
});
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
async loadNamespace(namespace) {
|
|
211
|
+
if (!this.initialized) {
|
|
212
|
+
throw new Error('I18n service not initialized');
|
|
213
|
+
}
|
|
214
|
+
try {
|
|
215
|
+
await i18next.loadNamespaces(namespace);
|
|
216
|
+
this.logger.debug('Namespace loaded', { namespace });
|
|
217
|
+
}
|
|
218
|
+
catch (error) {
|
|
219
|
+
this.logger.error('Failed to load namespace', {
|
|
220
|
+
namespace,
|
|
221
|
+
error: error instanceof Error ? error.message : String(error)
|
|
222
|
+
});
|
|
223
|
+
throw error;
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
exists(key, language) {
|
|
227
|
+
if (!this.initialized) {
|
|
228
|
+
return false;
|
|
229
|
+
}
|
|
230
|
+
const options = language ? { lng: language } : undefined;
|
|
231
|
+
return i18next.exists(key, options);
|
|
232
|
+
}
|
|
233
|
+
// Utility methods
|
|
234
|
+
async detectSystemLanguage() {
|
|
235
|
+
try {
|
|
236
|
+
const systemLocale = await osLocale();
|
|
237
|
+
return systemLocale;
|
|
238
|
+
}
|
|
239
|
+
catch (error) {
|
|
240
|
+
this.logger.warn('Failed to detect system language, using default', {
|
|
241
|
+
error: error instanceof Error ? error.message : String(error),
|
|
242
|
+
default: this.config.defaultLanguage
|
|
243
|
+
});
|
|
244
|
+
return this.config.defaultLanguage;
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
validateLanguage(language) {
|
|
248
|
+
// Try exact match first
|
|
249
|
+
if (Object.values(SupportedLanguage).includes(language)) {
|
|
250
|
+
return language;
|
|
251
|
+
}
|
|
252
|
+
// Try language code without region (e.g., 'en-US' -> 'en')
|
|
253
|
+
const languageCode = language.split('-')[0];
|
|
254
|
+
const matchedLanguage = Object.values(SupportedLanguage).find(lang => lang.startsWith(languageCode));
|
|
255
|
+
if (matchedLanguage) {
|
|
256
|
+
return matchedLanguage;
|
|
257
|
+
}
|
|
258
|
+
// Try special cases
|
|
259
|
+
switch (languageCode.toLowerCase()) {
|
|
260
|
+
case 'zh':
|
|
261
|
+
// Default to Traditional Chinese, could be made configurable
|
|
262
|
+
return language.toLowerCase().includes('cn') || language.toLowerCase().includes('hans')
|
|
263
|
+
? SupportedLanguage.CHINESE_SIMPLIFIED
|
|
264
|
+
: SupportedLanguage.CHINESE_TRADITIONAL;
|
|
265
|
+
case 'es':
|
|
266
|
+
return SupportedLanguage.SPANISH;
|
|
267
|
+
case 'fr':
|
|
268
|
+
return SupportedLanguage.FRENCH;
|
|
269
|
+
case 'de':
|
|
270
|
+
return SupportedLanguage.GERMAN;
|
|
271
|
+
case 'ja':
|
|
272
|
+
return SupportedLanguage.JAPANESE;
|
|
273
|
+
case 'ko':
|
|
274
|
+
return SupportedLanguage.KOREAN;
|
|
275
|
+
case 'pt':
|
|
276
|
+
return SupportedLanguage.PORTUGUESE;
|
|
277
|
+
case 'ru':
|
|
278
|
+
return SupportedLanguage.RUSSIAN;
|
|
279
|
+
default:
|
|
280
|
+
return this.config.defaultLanguage;
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
// Advanced features
|
|
284
|
+
async formatRelativeTime(date, language) {
|
|
285
|
+
const lang = language || this.getCurrentLanguage();
|
|
286
|
+
const rtf = new Intl.RelativeTimeFormat(lang, { numeric: 'auto' });
|
|
287
|
+
const diffTime = date.getTime() - Date.now();
|
|
288
|
+
const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24));
|
|
289
|
+
if (Math.abs(diffDays) < 1) {
|
|
290
|
+
const diffHours = Math.ceil(diffTime / (1000 * 60 * 60));
|
|
291
|
+
if (Math.abs(diffHours) < 1) {
|
|
292
|
+
const diffMinutes = Math.ceil(diffTime / (1000 * 60));
|
|
293
|
+
return rtf.format(diffMinutes, 'minute');
|
|
294
|
+
}
|
|
295
|
+
return rtf.format(diffHours, 'hour');
|
|
296
|
+
}
|
|
297
|
+
return rtf.format(diffDays, 'day');
|
|
298
|
+
}
|
|
299
|
+
async formatNumber(number, style = 'decimal', currency, language) {
|
|
300
|
+
const lang = language || this.getCurrentLanguage();
|
|
301
|
+
const options = { style };
|
|
302
|
+
if (style === 'currency' && currency) {
|
|
303
|
+
options.currency = currency;
|
|
304
|
+
}
|
|
305
|
+
return new Intl.NumberFormat(lang, options).format(number);
|
|
306
|
+
}
|
|
307
|
+
async formatDate(date, style = 'medium', language) {
|
|
308
|
+
const lang = language || this.getCurrentLanguage();
|
|
309
|
+
return new Intl.DateTimeFormat(lang, {
|
|
310
|
+
dateStyle: style,
|
|
311
|
+
timeStyle: style
|
|
312
|
+
}).format(date);
|
|
313
|
+
}
|
|
314
|
+
async getPluralForm(count, language) {
|
|
315
|
+
const lang = language || this.getCurrentLanguage();
|
|
316
|
+
const pr = new Intl.PluralRules(lang);
|
|
317
|
+
return pr.select(count);
|
|
318
|
+
}
|
|
319
|
+
// Resource management
|
|
320
|
+
async getLoadedResources() {
|
|
321
|
+
if (!this.initialized) {
|
|
322
|
+
return {};
|
|
323
|
+
}
|
|
324
|
+
return i18next.store.data;
|
|
325
|
+
}
|
|
326
|
+
async reloadResources(languages, namespaces) {
|
|
327
|
+
if (!this.initialized) {
|
|
328
|
+
throw new Error('I18n service not initialized');
|
|
329
|
+
}
|
|
330
|
+
try {
|
|
331
|
+
await i18next.reloadResources(languages, namespaces);
|
|
332
|
+
this.logger.info('Resources reloaded', { languages, namespaces });
|
|
333
|
+
}
|
|
334
|
+
catch (error) {
|
|
335
|
+
this.logger.error('Failed to reload resources', {
|
|
336
|
+
languages,
|
|
337
|
+
namespaces,
|
|
338
|
+
error: error instanceof Error ? error.message : String(error)
|
|
339
|
+
});
|
|
340
|
+
throw error;
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
// Configuration getters
|
|
344
|
+
getConfig() {
|
|
345
|
+
return { ...this.config };
|
|
346
|
+
}
|
|
347
|
+
isInitialized() {
|
|
348
|
+
return this.initialized;
|
|
349
|
+
}
|
|
350
|
+
};
|
|
351
|
+
I18nextService = __decorate([
|
|
352
|
+
injectable(),
|
|
353
|
+
__param(0, inject(TYPES.LoggerPort)),
|
|
354
|
+
__metadata("design:paramtypes", [Object])
|
|
355
|
+
], I18nextService);
|
|
356
|
+
export { I18nextService };
|
|
357
|
+
//# sourceMappingURL=I18nextService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"I18nextService.js","sourceRoot":"","sources":["../../../src/infrastructure/i18n/I18nextService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { ServerCapabilities, ClientCapabilities } from '@modelcontextprotocol/sdk/types.js';
|
|
2
|
+
import { LoggerPort } from '../../domain/ports.js';
|
|
3
|
+
export interface NegotiatedCapabilities {
|
|
4
|
+
server: ServerCapabilities;
|
|
5
|
+
client: ClientCapabilities;
|
|
6
|
+
features: {
|
|
7
|
+
tools: boolean;
|
|
8
|
+
resources: boolean;
|
|
9
|
+
prompts: boolean;
|
|
10
|
+
logging: boolean;
|
|
11
|
+
roots: boolean;
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
export declare class CapabilityNegotiator {
|
|
15
|
+
private readonly logger;
|
|
16
|
+
constructor(logger: LoggerPort);
|
|
17
|
+
negotiate(clientCapabilities?: ClientCapabilities): NegotiatedCapabilities;
|
|
18
|
+
getToolCapabilities(): NonNullable<ServerCapabilities['tools']>;
|
|
19
|
+
getResourceCapabilities(): NonNullable<ServerCapabilities['resources']>;
|
|
20
|
+
getPromptCapabilities(): NonNullable<ServerCapabilities['prompts']>;
|
|
21
|
+
}
|