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,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
|
+
}
|