@bonginkan/maria 3.0.6 → 3.0.9
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/README.md +242 -229
- package/dist/bin/maria.cjs +30669 -43358
- package/dist/bin/maria.cjs.map +1 -1
- package/dist/cli.cjs +14975 -32982
- package/dist/cli.cjs.map +1 -1
- package/dist/index.js +817 -795
- package/dist/index.js.map +1 -1
- package/package.json +46 -6
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/services/intelligent-router/infra/NaturalLanguageProcessor.ts","../src/services/intelligent-router/analysis/IntentRecognizer.ts","../src/services/intelligent-router/analysis/ParameterExtractor.ts","../src/services/intelligent-router/analysis/MultilingualDictionary.ts","../src/services/intelligent-router/infra/LanguageDetector.ts","../src/services/intelligent-router/app/CommandMappings.ts","../src/services/intelligent-router/analysis/UserPatternAnalyzer.ts","../src/services/intelligent-router/app/IntelligentRouterService.ts","../src/services/memory-system/system1-memory.ts","../src/services/memory-system/system2-memory.ts","../src/services/memory-system/dual-memory-engine.ts","../src/services/file-system/FileSystemService.ts"],"names":["input","language","keywords","regex","pattern","char","filePattern","match","framework","matches","frequency","a","startTime","elapsed","command","confidence","patterns","distance","languages","style","format","type","focus","code","suggestions","phrase","stats","data","chalk","_language","node","name","content","id","antiPattern","nodeId","sequence","value","similar","enhancement","trace","traces","tree","treeId","context","insight","reflection","metrics","domain","quality","root","path","complexity","cacheKey","cached","error","factors","strategy","result","s2Data","filePath","results","entry","dirPath","searchPath"],"mappings":"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","file":"index.js","sourcesContent":["export interface ProcessedInput {\n original: string;\n normalized: string;\n tokens: string[];\n stems: string[];\n entities: Entity[];\n language: string;\n sentiment?: number;\n keywords: string[];\n}\n\nexport interface Entity {\n text: string;\n type: 'code' | 'file' | 'url' | 'number' | 'command' | 'language' | 'framework';\n value: unknown;\n position: number;\n}\n\nexport class NaturalLanguageProcessor {\n private stopWords: Map<string, Set<string>>;\n private contractionMap: Map<string, string>;\n private initialized: boolean = false;\n\n constructor() {\n this.stopWords = new Map();\n this.contractionMap = new Map();\n this.initializeStopWords();\n this.initializeContractions();\n }\n\n async initialize(): Promise<void> {\n if (this.initialized) {return;}\n\n // Initialize any async resources if needed\n this.initialized = true;\n }\n\n async process(input: string, language: string = 'en'): Promise<ProcessedInput> {\n const normalized = this.normalize(input, language);\n const tokens = this.tokenize(normalized, language);\n const stems = this.stem(tokens, language);\n const entities = this.extractEntities(input);\n const keywords = this.extractKeywords(tokens, language);\n\n return {\n original: input,\n normalized,\n tokens,\n stems,\n entities,\n language,\n keywords,\n };\n }\n\n private normalize(text: string, language: string): string {\n let normalized = text.toLowerCase().trim();\n\n // Expand contractions for English\n if (language === 'en') {\n this.contractionMap.forEach((expanded, contraction) => {\n const regex = new RegExp(`\\\\b${contraction}\\\\b`, 'gi');\n normalized = normalized.replace(regex, expanded);\n });\n }\n\n // Remove extra whitespace\n normalized = normalized.replace(/\\s+/g, ' ');\n\n // Language-specific normalization\n switch (language) {\n case 'ja':\n // Japanese specific normalization\n normalized = this.normalizeJapanese(normalized);\n break;\n case 'cn':\n // Chinese specific normalization\n normalized = this.normalizeChinese(normalized);\n break;\n case 'ko':\n // Korean specific normalization\n normalized = this.normalizeKorean(normalized);\n break;\n case 'vn':\n // Vietnamese specific normalization\n normalized = this.normalizeVietnamese(normalized);\n break;\n }\n\n return normalized;\n }\n\n private tokenize(text: string, language: string): string[] {\n switch (language) {\n case 'ja':\n return this.tokenizeJapanese(text);\n case 'cn':\n return this.tokenizeChinese(text);\n case 'ko':\n return this.tokenizeKorean(text);\n case 'vn':\n return this.tokenizeVietnamese(text);\n default:\n return this.tokenizeEnglish(text);\n }\n }\n\n private tokenizeEnglish(text: string): string[] {\n // Simple word boundary tokenization for English\n return text.split(/\\s+/).filter((token) => token.length > 0);\n }\n\n private tokenizeJapanese(text: string): string[] {\n // Simplified Japanese tokenization\n // In production, use a proper tokenizer like kuromoji\n const tokens: string[] = [];\n const _patterns = [\n /[\\u4e00-\\u9faf]+/g, // Kanji\n /[\\u3040-\\u309f]+/g, // Hiragana\n /[\\u30a0-\\u30ff]+/g, // Katakana\n /[a-zA-Z]+/g, // English\n /\\d+/g, // Numbers\n ];\n\n patterns.forEach((pattern) => {\n const _matches = text.match(pattern);\n if (matches) {tokens.push(...matches);}\n });\n\n return tokens;\n }\n\n private tokenizeChinese(text: string): string[] {\n // Simplified Chinese tokenization\n // In production, use a proper tokenizer like jieba\n const tokens: string[] = [];\n\n // Character-based tokenization for Chinese\n for (const char of text) {\n if (/[\\u4e00-\\u9faf]/.test(char)) {\n tokens.push(char);\n } else if (/[a-zA-Z0-9]+/.test(char)) {\n tokens.push(char);\n }\n }\n\n return tokens;\n }\n\n private tokenizeKorean(text: string): string[] {\n // Simplified Korean tokenization\n const tokens: string[] = [];\n const _patterns = [\n /[\\uac00-\\ud7af]+/g, // Hangul\n /[a-zA-Z]+/g, // English\n /\\d+/g, // Numbers\n ];\n\n patterns.forEach((pattern) => {\n const _matches = text.match(pattern);\n if (matches) {tokens.push(...matches);}\n });\n\n return tokens;\n }\n\n private stem(tokens: string[], language: string): string[] {\n // Simple stemming - in production, use proper stemming libraries\n if (language !== 'en') {\n return tokens; // Skip stemming for non-English\n }\n\n return tokens.map((token) => {\n // Very basic English stemming rules\n let stem = token;\n\n // Remove common suffixes\n if (stem.endsWith('ing')) {stem = stem.slice(0, -3);}\n else if (stem.endsWith('ed')) {stem = stem.slice(0, -2);}\n else if (stem.endsWith('ly')) {stem = stem.slice(0, -2);}\n else if (stem.endsWith('es')) {stem = stem.slice(0, -2);}\n else if (stem.endsWith('s') && stem.length > 3) {stem = stem.slice(0, -1);}\n\n return stem;\n });\n }\n\n private extractEntities(text: string): Entity[] {\n const entities: Entity[] = [];\n\n // Extract file paths\n const filePattern = /(?:\\/[\\w.-]+)+(?:\\.\\w+)?|(?:[a-zA-Z]:[\\\\/][\\w\\\\/.-]+)/g;\n const fileMatches = text.match(filePattern);\n if (fileMatches) {\n fileMatches.forEach((match) => {\n entities.push({\n text: match,\n type: 'file',\n value: match,\n position: text.indexOf(match),\n });\n });\n }\n\n // Extract URLs\n const _urlPattern = /https?:\\/\\/[^\\s]+/g;\n const _urlMatches = text.match(urlPattern);\n if (urlMatches) {\n urlMatches.forEach((match) => {\n entities.push({\n text: match,\n type: 'url',\n value: match,\n position: text.indexOf(match),\n });\n });\n }\n\n // Extract programming languages\n const _languages = [\n 'javascript',\n 'typescript',\n 'python',\n 'java',\n 'rust',\n 'go',\n 'c++',\n 'c#',\n 'ruby',\n 'php',\n ];\n languages.forEach((lang) => {\n // Escape special regex characters\n const _escapedLang = lang.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n const _regex = new RegExp(`\\\\b${escapedLang}\\\\b`, 'gi');\n const _matches = text.match(regex);\n if (matches) {\n matches.forEach((match) => {\n entities.push({\n text: match,\n type: 'language',\n value: lang,\n position: text.indexOf(match),\n });\n });\n }\n });\n\n // Extract frameworks\n const frameworks = [\n 'react',\n 'vue',\n 'angular',\n 'next.js',\n 'express',\n 'django',\n 'flask',\n 'rails',\n 'spring',\n ];\n frameworks.forEach((framework) => {\n const regex = new RegExp(`\\\\b${framework}\\\\b`, 'gi');\n const matches = text.match(regex);\n if (matches) {\n matches.forEach((match) => {\n entities.push({\n text: match,\n type: 'framework',\n value: framework,\n position: text.indexOf(match),\n });\n });\n }\n });\n\n return entities;\n }\n\n private extractKeywords(tokens: string[], language: string): string[] {\n const stopWords = this.stopWords.get(language) ?? new Set();\n\n // Filter out stop words and short tokens\n const keywords = tokens.filter((token) => {\n return token.length > 2 && !stopWords.has(token.toLowerCase());\n });\n\n // Sort by frequency\n const frequency = new Map<string, number>();\n keywords.forEach((keyword) => {\n frequency.set(keyword, (frequency.get(keyword) ?? 0) + 1);\n });\n\n return Array.from(frequency.entries())\n .sort((a, b) => b[1] - a[1])\n .slice(0, 10)\n .map(([keyword]) => keyword);\n }\n\n private normalizeJapanese(text: string): string {\n // Convert full-width characters to half-width\n return text.replace(/[A-Za-z0-9]/g, (char) => {\n return String.fromCharCode(char.charCodeAt(0) - 0xfee0);\n });\n }\n\n private normalizeChinese(text: string): string {\n // Convert traditional to simplified (simplified implementation)\n // In production, use a proper conversion library\n return text;\n }\n\n private normalizeKorean(text: string): string {\n // Korean normalization\n return text;\n }\n\n private normalizeVietnamese(text: string): string {\n // Vietnamese normalization - lowercase only, keep tones\n return text.toLowerCase();\n }\n\n private tokenizeVietnamese(text: string): string[] {\n // Vietnamese tokenization - word-based similar to English\n return text.split(/\\s+/).filter((token) => token.length > 0);\n }\n\n private initializeStopWords(): void {\n // English stop words\n this.stopWords.set(\n 'en',\n new Set([\n 'a',\n 'an',\n 'and',\n 'are',\n 'as',\n 'at',\n 'be',\n 'by',\n 'for',\n 'from',\n 'has',\n 'he',\n 'in',\n 'is',\n 'it',\n 'its',\n 'of',\n 'on',\n 'that',\n 'the',\n 'to',\n 'was',\n 'will',\n 'with',\n 'the',\n 'this',\n 'these',\n 'those',\n 'i',\n 'you',\n 'we',\n 'they',\n 'what',\n 'which',\n 'who',\n 'when',\n 'where',\n 'how',\n 'can',\n 'could',\n 'should',\n 'would',\n 'may',\n 'might',\n 'must',\n 'do',\n 'does',\n 'did',\n 'have',\n 'had',\n 'get',\n 'got',\n 'make',\n 'made',\n ]),\n );\n\n // Japanese particles and common words\n this.stopWords.set(\n 'ja',\n new Set([\n 'の',\n 'を',\n 'に',\n 'は',\n 'が',\n 'と',\n 'で',\n 'て',\n 'も',\n 'から',\n 'まで',\n 'より',\n 'へ',\n 'や',\n 'など',\n 'です',\n 'ます',\n 'する',\n 'した',\n 'これ',\n 'それ',\n 'あれ',\n 'この',\n 'その',\n 'あの',\n ]),\n );\n\n // Chinese common words\n this.stopWords.set(\n 'cn',\n new Set([\n '的',\n '了',\n '在',\n '是',\n '我',\n '有',\n '和',\n '就',\n '不',\n '人',\n '都',\n '一',\n '一个',\n '上',\n '也',\n '很',\n '到',\n '说',\n '要',\n '去',\n '你',\n '会',\n '着',\n '没有',\n '看',\n '好',\n '自己',\n '这',\n '那',\n ]),\n );\n\n // Korean particles and common words\n this.stopWords.set(\n 'ko',\n new Set([\n '의',\n '를',\n '을',\n '에',\n '가',\n '이',\n '은',\n '는',\n '와',\n '과',\n '에서',\n '으로',\n '로',\n '부터',\n '까지',\n '입니다',\n '합니다',\n '이다',\n '하다',\n ]),\n );\n\n // Vietnamese common words\n this.stopWords.set(\n 'vn',\n new Set([\n 'và',\n 'của',\n 'là',\n 'có',\n 'được',\n 'trong',\n 'với',\n 'này',\n 'cho',\n 'để',\n 'không',\n 'nhưng',\n 'cũng',\n 'như',\n 'từ',\n 'đến',\n 'sau',\n 'trước',\n 'một',\n 'các',\n 'bị',\n 'đã',\n 'sẽ',\n 'khi',\n 'nếu',\n 'thì',\n 'vì',\n 'hoặc',\n 'hay',\n 'rất',\n ]),\n );\n }\n\n private initializeContractions(): void {\n // Common English contractions\n this.contractionMap.set(\"don't\", 'do not');\n this.contractionMap.set(\"won't\", 'will not');\n this.contractionMap.set(\"can't\", 'cannot');\n this.contractionMap.set(\"n't\", ' not');\n this.contractionMap.set(\"'re\", ' are');\n this.contractionMap.set(\"'ve\", ' have');\n this.contractionMap.set(\"'ll\", ' will');\n this.contractionMap.set(\"'d\", ' would');\n this.contractionMap.set(\"'m\", ' am');\n this.contractionMap.set(\"let's\", 'let us');\n this.contractionMap.set(\"it's\", 'it is');\n this.contractionMap.set(\"that's\", 'that is');\n this.contractionMap.set(\"what's\", 'what is');\n this.contractionMap.set(\"there's\", 'there is');\n this.contractionMap.set(\"here's\", 'here is');\n }\n\n async detectIntent(processedInput: ProcessedInput): Promise<string[]> {\n // Extract potential intents based on keywords\n const intents: string[] = [];\n const _keywords = `${processedInput.keywords.join(' ') } ${ processedInput.normalized}`;\n\n // Code-related intents\n if (/\\b(write|create|generate|implement|build|code|program|develop)\\b/i.test(keywords)) {\n intents.push('code_generation');\n }\n\n // Image-related intents\n if (/\\b(image|picture|photo|draw|illustrate|visual|graphic)\\b/i.test(keywords)) {\n intents.push('image_generation');\n }\n\n // Video-related intents\n if (/\\b(video|movie|animation|clip|film)\\b/i.test(keywords)) {\n intents.push('video_generation');\n }\n\n // Test-related intents\n if (/\\b(test|testing|unit test|integration test|e2e)\\b/i.test(keywords)) {\n intents.push('test_generation');\n }\n\n // Review-related intents\n if (/\\b(review|check|analyze|improve|refactor|optimize)\\b/i.test(keywords)) {\n intents.push('code_review');\n }\n\n return intents;\n }\n}\n","import { ProcessedInput } from '../infra/NaturalLanguageProcessor';\nimport { RouterConfig } from '../app/IntelligentRouterService';\n\nexport interface RecognizedIntent {\n command: string;\n confidence: number;\n alternatives?: Array<{ command: string; confidence: number }>;\n reasoning?: string;\n}\n\ninterface IntentPattern {\n command: string;\n patterns: RegExp[];\n keywords: string[];\n weight: number;\n}\n\ninterface ContextClue {\n before: string[];\n after: string[];\n weight: number;\n}\n\nexport interface IntentRecognizerDependencies {\n knownCommands: string[];\n}\n\nexport class IntentRecognizer {\n private config: Required<RouterConfig>;\n private intentPatterns: Map<string, IntentPattern[]>;\n private contextClues: Map<string, ContextClue>;\n private commandHistory: string[] = [];\n private initialized: boolean = false;\n private dependencies: IntentRecognizerDependencies;\n private metrics = {\n totalCalls: 0,\n nullReturns: 0,\n fuzzyOnlyBlocked: 0,\n responseTimes: [] as number[],\n };\n\n constructor(\n config: Required<RouterConfig>,\n dependencies: IntentRecognizerDependencies\n ) {\n this.config = config;\n this.dependencies = dependencies;\n this.intentPatterns = new Map();\n this.contextClues = new Map();\n this.initializePatterns();\n }\n\n async initialize(): Promise<void> {\n if (this.initialized) {return;}\n\n // Initialize ML models or other async resources if needed\n this.initialized = true;\n }\n\n async recognize(input: ProcessedInput): Promise<RecognizedIntent | null> {\n const startTime = performance.now();\n this.metrics.totalCalls++;\n \n // Input length limit (ReDoS protection)\n if ((input.normalized?.length ?? 0) > 8192) {\n this.metrics.nullReturns++;\n return null;\n }\n \n const scores = new Map<string, number>();\n\n // Calculate scores in specific order (fuzzy last)\n // 1. Pattern matching score\n this.calculatePatternScores(input, scores);\n\n // 2. Keyword matching score\n this.calculateKeywordScores(input, scores);\n\n // 3. Context-based scoring\n this.calculateContextScores(input, scores);\n\n // 4. Entity-based scoring (with adjusted weights)\n this.calculateEntityScores(input, scores);\n\n // 5. Historical pattern scoring\n this.calculateHistoricalScores(input, scores);\n\n // 6. Fuzzy command matching LAST (to avoid overriding)\n this.calculateFuzzyCommandScores(input, scores);\n \n // Early rejection for fuzzy-only matches\n if (scores.size === 1 && (scores.values().next().value ?? 0) <= 5.0) {\n this.metrics.nullReturns++;\n this.metrics.fuzzyOnlyBlocked++;\n return null;\n }\n\n // Get top candidates\n const candidates = Array.from(scores.entries())\n .sort((a, b) => b[1] - a[1])\n .slice(0, this.config.maxAlternatives + 1);\n\n if (candidates.length === 0) {\n this.metrics.nullReturns++;\n const elapsed = performance.now() - startTime;\n this.metrics.responseTimes.push(elapsed);\n return null;\n }\n\n // Normalize scores to confidence values with cap\n const maxScore = Math.max(candidates[0]?.[1] ?? 1, 1e-9);\n const normalizedCandidates = candidates.map(([command, score]) => {\n const rawConfidence = score / maxScore;\n // Apply cap to prevent fuzzy-only high confidence\n const confidence = Math.min(rawConfidence, 0.7);\n return { command, confidence };\n });\n \n // Minimum confidence threshold\n const minConfidence = 0.35;\n if (normalizedCandidates[0]?.confidence < minConfidence) {\n this.metrics.nullReturns++;\n const elapsed = performance.now() - startTime;\n this.metrics.responseTimes.push(elapsed);\n return null;\n }\n\n const topCandidate = normalizedCandidates[0];\n if (!topCandidate) {\n throw new Error('No candidates found for intent recognition');\n }\n const alternatives = normalizedCandidates.slice(1);\n\n const elapsed = performance.now() - startTime;\n this.metrics.responseTimes.push(elapsed);\n \n return {\n command: topCandidate.command,\n confidence: topCandidate.confidence,\n alternatives: alternatives.length > 0 ? alternatives : undefined,\n reasoning: this.generateReasoning(input, topCandidate.command),\n };\n }\n\n private calculatePatternScores(input: ProcessedInput, scores: Map<string, number>): void {\n const patterns = this.intentPatterns.get(input.language) ?? this.intentPatterns.get('en') ?? [];\n\n patterns.forEach((pattern) => {\n let score = 0;\n\n // Check regex patterns\n pattern.patterns.forEach((regex) => {\n if (regex.test(input.normalized)) {\n score += pattern.weight;\n }\n if (regex.test(input.original)) {\n score += pattern.weight * 0.5;\n }\n });\n\n if (score > 0) {\n const currentScore = scores.get(pattern.command) ?? 0;\n scores.set(pattern.command, currentScore + score);\n }\n });\n }\n\n private calculateKeywordScores(input: ProcessedInput, scores: Map<string, number>): void {\n const patterns = this.intentPatterns.get(input.language) ?? this.intentPatterns.get('en') ?? [];\n\n patterns.forEach((pattern) => {\n let matchCount = 0;\n\n pattern.keywords.forEach((keyword) => {\n if (input.keywords.includes(keyword.toLowerCase())) {\n matchCount++;\n }\n if (input.tokens.includes(keyword.toLowerCase())) {\n matchCount += 0.5;\n }\n });\n\n if (matchCount > 0) {\n const score = matchCount * pattern.weight * 0.8;\n const currentScore = scores.get(pattern.command) ?? 0;\n scores.set(pattern.command, currentScore + score);\n }\n });\n }\n\n private calculateContextScores(input: ProcessedInput, scores: Map<string, number>): void {\n // Use command history for context\n if (this.commandHistory.length > 0) {\n const lastCommand = this.commandHistory[this.commandHistory.length - 1];\n\n // Boost related commands\n const relatedCommands = this.getRelatedCommands(lastCommand ?? '');\n relatedCommands.forEach((command) => {\n const currentScore = scores.get(command) ?? 0;\n scores.set(command, currentScore + 0.5);\n });\n }\n }\n\n private calculateEntityScores(input: ProcessedInput, scores: Map<string, number>): void {\n // Adjusted entity weights (0.2-0.3 range)\n const entityWeights = {\n code: 0.25, // Reduced to prevent /code bias\n language: 0.25,\n framework: 0.25,\n file: 0.3,\n url: 0.3,\n number: 0.2,\n default: 0.2\n };\n \n input.entities.forEach((entity) => {\n const weight = entityWeights[entity.type as keyof typeof entityWeights] ?? entityWeights.default;\n \n switch (entity.type) {\n case 'code':\n case 'language':\n case 'framework':\n this.boostScore(scores, '/code', weight * 2);\n this.boostScore(scores, '/test', weight);\n this.boostScore(scores, '/review', weight);\n break;\n case 'file':\n this.boostScore(scores, '/code', weight * 0.5);\n this.boostScore(scores, '/review', weight);\n this.boostScore(scores, '/export', weight * 0.5);\n break;\n case 'url':\n this.boostScore(scores, '/image', weight);\n this.boostScore(scores, '/video', weight);\n break;\n }\n });\n }\n\n private calculateHistoricalScores(input: ProcessedInput, scores: Map<string, number>): void {\n // Skip if no history\n if (this.commandHistory.length === 0) {\n return;\n }\n \n const recent = this.commandHistory.slice(-10); // Last 10 commands\n const base = 0.2;\n \n for (let i = 0; i < recent.length; i++) {\n // Skip consecutive duplicates to prevent over-boosting\n if (i > 0 && recent[i] === recent[i - 1]) continue;\n \n // Exponential decay based on recency\n const weight = base * Math.exp(-(recent.length - 1 - i) * 0.1);\n const cmd = recent[i];\n scores.set(cmd, (scores.get(cmd) ?? 0) + weight);\n }\n \n // Maintain history size limit\n if (this.commandHistory.length > 100) {\n this.commandHistory = this.commandHistory.slice(-100);\n }\n }\n\n private boostScore(scores: Map<string, number>, command: string, boost: number): void {\n const currentScore = scores.get(command) ?? 0;\n scores.set(command, currentScore + boost);\n }\n\n private getRelatedCommands(command: string): string[] {\n const relationships: Record<string, string[]> = {\n '/code': ['/test', '/review', '/commit'],\n '/test': ['/code', '/review'],\n '/review': ['/code', '/test', '/commit'],\n '/image': ['/video'],\n '/video': ['/image'],\n '/init': ['/add-dir', '/setup'],\n '/setup': ['/init', '/config'],\n '/config': ['/settings', '/setup'],\n };\n\n return relationships[command] ?? [];\n }\n\n private generateReasoning(input: ProcessedInput, command: string): string {\n const reasons: string[] = [];\n\n if (input.keywords.length > 0) {\n reasons.push(`Keywords detected: ${input.keywords.slice(0, 3).join(', ')}`);\n }\n\n if (input.entities.length > 0) {\n const entityTypes = [...new Set(input.entities.map((e) => e.type))];\n reasons.push(`Entities found: ${entityTypes.join(', ')}`);\n }\n\n return reasons.join('; ');\n }\n\n async updateModel(input: string, correctCommand: string, wasCorrect: boolean): Promise<void> {\n // Update command history\n this.commandHistory.push(correctCommand);\n if (this.commandHistory.length > 100) {\n this.commandHistory.shift();\n }\n\n // In a real implementation, this would update ML model weights\n // For now, we just track the feedback\n }\n \n // Get performance metrics\n getMetrics() {\n const times = this.metrics.responseTimes.slice(-10000); // Last 10k\n if (times.length === 0) {\n return {\n p95_ms: 0,\n avg_ms: 0,\n total: 0,\n null_rate: 0,\n fuzzy_only_blocked: 0\n };\n }\n \n const sorted = [...times].sort((a, b) => a - b);\n const p95Index = Math.floor(sorted.length * 0.95);\n \n return {\n p95_ms: sorted[p95Index] ?? 0,\n avg_ms: times.reduce((a, b) => a + b, 0) / times.length,\n total: this.metrics.totalCalls,\n null_rate: this.metrics.totalCalls > 0 \n ? this.metrics.nullReturns / this.metrics.totalCalls \n : 0,\n fuzzy_only_blocked: this.metrics.fuzzyOnlyBlocked\n };\n }\n\n private initializePatterns(): void {\n // English patterns\n const englishPatterns: IntentPattern[] = [\n // Direct command patterns (highest priority)\n {\n command: '/help',\n patterns: [\n /^\\/help$/i,\n /^help$/i,\n /\\b(help|assistance|guide|usage)\\b/i,\n /how\\s+to\\s+use/i,\n /\\bshow\\s+(me\\s+)?(commands|options)\\b/i,\n ],\n keywords: ['help', 'assistance', 'guide', 'usage', 'commands', 'options'],\n weight: 10.0, // Highest priority\n },\n {\n command: '/status',\n patterns: [\n /^\\/status$/i,\n /^status$/i,\n /\\b(status|state|condition|health)\\b/i,\n /check\\s+(status|health|state)/i,\n /\\bhow.*doing\\b/i,\n ],\n keywords: ['status', 'state', 'condition', 'health', 'check'],\n weight: 10.0,\n },\n {\n command: '/version',\n patterns: [\n /^\\/version$/i,\n /^version$/i,\n /\\b(version|ver|build|release)\\b/i,\n /what\\s+(version|ver)/i,\n /\\bshow\\s+(version|ver)\\b/i,\n ],\n keywords: ['version', 'ver', 'build', 'release'],\n weight: 10.0,\n },\n {\n command: '/test',\n patterns: [\n /^\\/test$/i,\n /^test$/i,\n /\\b(test|testing|spec|unit.*test|integration.*test)\\b/i,\n /\\b(run|execute|start).*test/i,\n /\\btest.*(?:suite|case|file)/i,\n ],\n keywords: ['test', 'testing', 'spec', 'unit', 'integration', 'jest', 'mocha'],\n weight: 9.0,\n },\n {\n command: '/brain',\n patterns: [\n /^\\/brain$/i,\n /^brain$/i,\n /\\b(brain|mode|thinking|cognitive)\\b/i,\n /\\bchange.*mode/i,\n /\\b(switch|activate).*brain/i,\n ],\n keywords: ['brain', 'mode', 'thinking', 'cognitive', 'switch'],\n weight: 9.0,\n },\n {\n command: '/code',\n patterns: [\n /\\b(write|create|generate|implement|build|code|program|develop|make)\\b.*\\b(code|function|class|component|script|program|app)\\b/i,\n /\\b(implement|create|write|build)\\s+(?:a\\s+)?(\\w+)/i,\n /\\bcode\\s+(?:for|to)\\b/i,\n ],\n keywords: [\n 'write',\n 'create',\n 'generate',\n 'implement',\n 'build',\n 'code',\n 'program',\n 'function',\n 'class',\n 'component',\n ],\n weight: 1.0,\n },\n {\n command: '/image',\n patterns: [\n /\\b(create|generate|make|draw|design|produce)\\b.*\\b(image|picture|photo|illustration|graphic|visual|art)\\b/i,\n /\\b(image|picture|photo|illustration|graphic)\\s+of\\b/i,\n /\\bdraw\\s+(?:a\\s+)?(\\w+)/i,\n ],\n keywords: [\n 'image',\n 'picture',\n 'photo',\n 'draw',\n 'illustration',\n 'visual',\n 'graphic',\n 'art',\n 'design',\n ],\n weight: 1.0,\n },\n {\n command: '/video',\n patterns: [\n /\\b(create|generate|make|produce|render)\\b.*\\b(video|movie|animation|clip|film)\\b/i,\n /\\b(video|animation|movie)\\s+of\\b/i,\n /\\banimate\\s+(?:a\\s+)?(\\w+)/i,\n ],\n keywords: ['video', 'movie', 'animation', 'clip', 'film', 'animate', 'motion', 'render'],\n weight: 1.0,\n },\n {\n command: '/test',\n patterns: [\n /\\b(write|create|generate)\\b.*\\b(test|tests|testing|unit test|integration test)\\b/i,\n /\\btest\\s+(?:for|the)\\b/i,\n /\\b(unit|integration|e2e)\\s+test/i,\n ],\n keywords: ['test', 'testing', 'unit', 'integration', 'e2e', 'coverage', 'spec'],\n weight: 1.0,\n },\n {\n command: '/review',\n patterns: [\n /\\b(review|check|analyze|improve|refactor|optimize)\\b.*\\b(code|implementation|function)\\b/i,\n /\\bcode\\s+review\\b/i,\n /\\b(improve|optimize|refactor)\\s+this\\b/i,\n ],\n keywords: ['review', 'check', 'analyze', 'improve', 'refactor', 'optimize', 'quality'],\n weight: 1.0,\n },\n // Math commands\n {\n command: '/calc',\n patterns: [\n /\\b(calculate|compute|calc|evaluate|solve)\\b.*\\b(expression|equation|formula|math)\\b/i,\n /\\b(what\\s+is|compute|calculate)\\s+\\d+\\s*[\\+\\-\\*\\/\\^]\\s*\\d+/i,\n /\\b(sin|cos|tan|sqrt|log|exp|pow|abs)\\s*\\(/i,\n /^\\d+\\s*[\\+\\-\\*\\/\\^]\\s*\\d+/,\n /\\b(math|mathematical)\\s+(expression|calculation)/i,\n ],\n keywords: ['calculate', 'compute', 'calc', 'math', 'evaluate', 'expression', 'formula', 'sin', 'cos', 'sqrt'],\n weight: 1.5,\n },\n {\n command: '/solve',\n patterns: [\n /\\b(solve|find|resolve)\\b.*\\b(equation|system|root|solution|variable)\\b/i,\n /\\bsolve\\s+for\\s+[a-z]/i,\n /\\b(equation|equations)\\s+(system|solving)/i,\n /\\bfind\\s+(root|solution|value)\\s+of\\b/i,\n /[a-z]\\s*[\\^]\\s*\\d+\\s*[\\+\\-]\\s*\\d+\\s*=\\s*\\d+/i,\n ],\n keywords: ['solve', 'equation', 'system', 'root', 'solution', 'find', 'variable', 'unknown'],\n weight: 1.5,\n },\n {\n command: '/plot',\n patterns: [\n /\\b(plot|graph|draw|visualize|chart)\\b.*\\b(function|equation|data|curve)\\b/i,\n /\\b(draw|create|make)\\s+(graph|plot|chart)\\s+of\\b/i,\n /\\bplot\\s+[a-z]\\s*=\\s*/i,\n /\\b(visualize|show|display)\\s+(function|graph)/i,\n /\\b(sin|cos|tan|polynomial|quadratic|linear)\\s+(graph|plot)/i,\n ],\n keywords: ['plot', 'graph', 'draw', 'visualize', 'chart', 'curve', 'function', 'diagram'],\n weight: 1.5,\n },\n // Shell command\n {\n command: '/shell',\n patterns: [\n /\\b(show|display|read|cat|view)\\s+(file|contents?|text)\\b/i,\n /\\b(list|ls|dir|show)\\s+(files?|directories?|folders?)\\b/i,\n /\\b(search|find|grep|look)\\s+(for|in)\\s+/i,\n /\\b(what|which)\\s+files?\\s+(are|exist)/i,\n /\\b(open|read|check|examine|inspect)\\s+\\w+\\.\\w+/i,\n /\\b(navigate|cd|go)\\s+to\\s+/i,\n /\\bshow\\s+me\\s+(the\\s+)?(contents?|files?|folders?)/i,\n /\\bfind\\s+all\\s+\\w+\\s+files?\\b/i,\n ],\n keywords: ['show', 'list', 'search', 'find', 'file', 'directory', 'folder', 'contents', 'read', 'grep', 'ls'],\n weight: 1.5,\n },\n ];\n\n // Japanese patterns\n const japanesePatterns: IntentPattern[] = [\n // Direct command patterns (highest priority)\n {\n command: '/help',\n patterns: [\n /^\\/help$/i,\n /^ヘルプ$/,\n /(?:ヘルプ|使い方|使用方法|操作方法)/,\n /どう(?:やって|使う)/,\n /(?:コマンド|方法).*(?:教えて|見せて)/,\n ],\n keywords: ['ヘルプ', '使い方', '使用方法', 'コマンド', '操作方法'],\n weight: 10.0,\n },\n {\n command: '/status',\n patterns: [\n /^\\/status$/i,\n /^ステータス$/,\n /(?:ステータス|状態|状況)/,\n /(?:状態|調子).*(?:確認|チェック)/,\n /どう(?:なって|いる)/,\n ],\n keywords: ['ステータス', '状態', '状況', '確認', 'チェック'],\n weight: 10.0,\n },\n {\n command: '/version',\n patterns: [\n /^\\/version$/i,\n /^バージョン$/,\n /(?:バージョン|版|ver)/,\n /(?:バージョン|版).*(?:確認|教えて)/,\n ],\n keywords: ['バージョン', '版', 'ver'],\n weight: 10.0,\n },\n {\n command: '/test',\n patterns: [\n /^\\/test$/i,\n /^テスト$/,\n /(?:テスト|試験|検証)/,\n /(?:テスト|試験).*(?:実行|開始)/,\n ],\n keywords: ['テスト', '試験', '検証', '実行'],\n weight: 9.0,\n },\n {\n command: '/brain',\n patterns: [\n /^\\/brain$/i,\n /^ブレイン$/,\n /(?:ブレイン|脳|モード)/,\n /(?:モード|思考).*(?:変更|切り替え)/,\n ],\n keywords: ['ブレイン', '脳', 'モード', '思考'],\n weight: 9.0,\n },\n {\n command: '/code',\n patterns: [\n /(?:コード|プログラム|関数|クラス|メソッド).*(?:書|作|実装|生成)/,\n /(?:実装|開発|作成)(?:して|する)/,\n /プログラ(?:ム|ミング)/,\n ],\n keywords: ['コード', '実装', 'プログラム', '関数', 'クラス', '作成', '開発', '書く'],\n weight: 1.0,\n },\n {\n command: '/image',\n patterns: [\n /(?:画像|イメージ|絵|イラスト|ビジュアル).*(?:生成|作|描)/,\n /(?:描|作).*(?:画像|絵|イラスト)/,\n /画像を/,\n ],\n keywords: ['画像', 'イメージ', '絵', 'イラスト', 'ビジュアル', '描く', '生成'],\n weight: 1.0,\n },\n {\n command: '/video',\n patterns: [\n /(?:動画|ビデオ|アニメーション|ムービー).*(?:作|生成|出力)/,\n /(?:作|生成).*(?:動画|ビデオ|アニメーション)/,\n /動画を/,\n ],\n keywords: ['動画', 'ビデオ', 'アニメーション', 'ムービー', '映像', '作成'],\n weight: 1.0,\n },\n {\n command: '/test',\n patterns: [\n /(?:テスト|試験).*(?:作|書|生成)/,\n /(?:ユニット|統合|E2E).*テスト/,\n /テスト(?:コード|を)/,\n ],\n keywords: ['テスト', '試験', 'ユニット', '統合', 'カバレッジ'],\n weight: 1.0,\n },\n {\n command: '/review',\n patterns: [\n /(?:レビュー|確認|改善|リファクタ).*(?:して|する)/,\n /コード.*(?:レビュー|確認|改善)/,\n /(?:品質|最適化)/,\n ],\n keywords: ['レビュー', '確認', '改善', 'リファクタ', '最適化', '品質'],\n weight: 1.0,\n },\n // Math commands in Japanese\n {\n command: '/calc',\n patterns: [\n /(?:計算|演算|算出).*(?:して|する)/,\n /\\d+\\s*[\\+\\-\\*\\/\\^]\\s*\\d+/,\n /(?:何|いくつ|いくら).*(?:になる|です)/,\n /(?:sin|cos|tan|sqrt|ルート|平方根)/,\n /(?:数式|式|計算式).*(?:計算|演算)/,\n ],\n keywords: ['計算', '演算', '算出', '数式', '式', '数学', 'ルート', '平方根'],\n weight: 1.5,\n },\n {\n command: '/solve',\n patterns: [\n /(?:方程式|連立方程式|等式).*(?:解|求|計算)/,\n /(?:解|根|値).*(?:求|探|計算)/,\n /[a-z]\\s*について.*(?:解|求)/,\n /(?:変数|未知数).*(?:求|計算)/,\n ],\n keywords: ['方程式', '連立', '解', '根', '変数', '未知数', '求める'],\n weight: 1.5,\n },\n {\n command: '/plot',\n patterns: [\n /(?:グラフ|図|チャート).*(?:描|作|表示)/,\n /(?:関数|曲線).*(?:描画|プロット|可視化)/,\n /(?:可視化|表示|描画).*(?:して|する)/,\n /(?:sin|cos|二次|一次|多項式).*グラフ/,\n ],\n keywords: ['グラフ', '図', 'チャート', '描画', 'プロット', '可視化', '曲線', '関数'],\n weight: 1.5,\n },\n // Shell command in Japanese\n {\n command: '/shell',\n patterns: [\n /(?:ファイル|フォルダ|ディレクトリ).*(?:表示|見|確認|リスト)/,\n /(?:内容|中身|テキスト).*(?:表示|見|確認)/,\n /(?:検索|探|grep|サーチ).*(?:して|する)/,\n /(?:何|どんな).*ファイル.*(?:ある|存在)/,\n /\\w+\\.\\w+.*(?:開|読|確認)/,\n /(?:移動|cd|ナビゲート).*(?:して|する)/,\n ],\n keywords: ['ファイル', 'フォルダ', 'ディレクトリ', '表示', '検索', '内容', '中身', 'リスト'],\n weight: 1.5,\n },\n ];\n\n // Chinese patterns\n const chinesePatterns: IntentPattern[] = [\n {\n command: '/code',\n patterns: [\n /(?:写|编写|创建|实现|生成).*(?:代码|程序|函数|类)/,\n /(?:代码|程序|函数).*(?:写|创建|实现)/,\n /编程/,\n ],\n keywords: ['代码', '编写', '实现', '程序', '函数', '类', '创建', '开发'],\n weight: 1.0,\n },\n {\n command: '/image',\n patterns: [\n /(?:生成|创建|制作|画).*(?:图像|图片|插图)/,\n /(?:图像|图片|插图).*(?:生成|创建)/,\n /画.*图/,\n ],\n keywords: ['图像', '图片', '插图', '画', '生成', '创建', '视觉'],\n weight: 1.0,\n },\n {\n command: '/video',\n patterns: [\n /(?:创建|生成|制作).*(?:视频|动画|影片)/,\n /(?:视频|动画).*(?:创建|生成)/,\n /动画/,\n ],\n keywords: ['视频', '动画', '影片', '创建', '生成', '制作'],\n weight: 1.0,\n },\n ];\n\n // Korean patterns\n const koreanPatterns: IntentPattern[] = [\n {\n command: '/code',\n patterns: [\n /(?:코드|프로그램|함수|클래스).*(?:작성|생성|구현)/,\n /(?:구현|개발|만들)/,\n /프로그래밍/,\n ],\n keywords: ['코드', '프로그램', '함수', '클래스', '구현', '개발', '작성'],\n weight: 1.0,\n },\n {\n command: '/image',\n patterns: [\n /(?:이미지|그림|일러스트).*(?:생성|만들|그리)/,\n /(?:그림|이미지).*그려/,\n /이미지/,\n ],\n keywords: ['이미지', '그림', '일러스트', '생성', '그리기'],\n weight: 1.0,\n },\n {\n command: '/video',\n patterns: [\n /(?:비디오|동영상|애니메이션).*(?:생성|만들|제작)/,\n /(?:동영상|비디오).*만들/,\n /애니메이션/,\n ],\n keywords: ['비디오', '동영상', '애니메이션', '생성', '제작'],\n weight: 1.0,\n },\n ];\n\n // Store patterns by language\n this.intentPatterns.set('en', englishPatterns);\n this.intentPatterns.set('ja', japanesePatterns);\n this.intentPatterns.set('cn', chinesePatterns);\n this.intentPatterns.set('ko', koreanPatterns);\n }\n\n private calculateFuzzyCommandScores(input: ProcessedInput, scores: Map<string, number>): void {\n // Use injected known commands (SSOT)\n const knownCommands = this.dependencies.knownCommands;\n\n const inputText = input.normalized.trim();\n \n // Direct fuzzy matching for commands\n knownCommands.forEach(command => {\n const distance = this.calculateEditDistance(inputText, command);\n const commandWithoutSlash = command.substring(1);\n const distanceWithoutSlash = this.calculateEditDistance(inputText, commandWithoutSlash);\n \n // Use the better distance\n const bestDistance = Math.min(distance, distanceWithoutSlash);\n \n // Only consider edit distance of 1 (stricter matching)\n if (bestDistance <= 1) {\n const fuzzyScore = 5.0; // Fixed low score for fuzzy matches\n const currentScore = scores.get(command) ?? 0;\n scores.set(command, Math.max(currentScore, fuzzyScore));\n }\n });\n }\n\n private calculateEditDistance(s1: string, s2: string): number {\n // Levenshtein distance implementation\n const len1 = s1.length;\n const len2 = s2.length;\n \n // Create matrix\n const matrix: number[][] = Array(len1 + 1).fill(null).map(() => Array(len2 + 1).fill(0));\n \n // Initialize first row and column\n for (let i = 0; i <= len1; i++) matrix[i][0] = i;\n for (let j = 0; j <= len2; j++) matrix[0][j] = j;\n \n // Fill the matrix\n for (let i = 1; i <= len1; i++) {\n for (let j = 1; j <= len2; j++) {\n if (s1[i - 1] === s2[j - 1]) {\n matrix[i][j] = matrix[i - 1][j - 1];\n } else {\n matrix[i][j] = Math.min(\n matrix[i - 1][j] + 1, // deletion\n matrix[i][j - 1] + 1, // insertion\n matrix[i - 1][j - 1] + 1 // substitution\n );\n }\n }\n }\n \n return matrix[len1][len2];\n }\n}\n","export class ParameterExtractor {\n async extract(\n input: string,\n command: string,\n language: string,\n ): Promise<Record<string, unknown>> {\n const parameters: Record<string, unknown> = {};\n\n switch (command) {\n case '/code':\n return this.extractCodeParameters(input, language);\n case '/image':\n return this.extractImageParameters(input, language);\n case '/video':\n return this.extractVideoParameters(input, language);\n case '/test':\n return this.extractTestParameters(input, language);\n case '/review':\n return this.extractReviewParameters(input, language);\n case '/lang':\n return this.extractLanguageParameters(input, language);\n default:\n return this.extractGenericParameters(input, language);\n }\n }\n\n private extractCodeParameters(_input: string, language: string): Record<string, unknown> {\n const params: Record<string, unknown> = {};\n\n // Extract description (remove command keywords)\n const _description = this.cleanDescription(input, language, [\n 'write',\n 'create',\n 'generate',\n 'implement',\n 'build',\n 'code',\n 'program',\n '書く',\n '作る',\n '実装',\n 'コード',\n 'プログラム',\n '写',\n '编写',\n '创建',\n '实现',\n '代码',\n '程序',\n '작성',\n '생성',\n '구현',\n '코드',\n '프로그램',\n 'viết',\n 'tạo',\n 'xây dựng',\n 'mã',\n 'chương trình',\n ]);\n\n _params.description = description;\n\n // Detect programming language\n const _progLang = this.detectProgrammingLanguage(input);\n if (progLang) { params.language = progLang;\n }\n\n // Detect framework\n const _framework = this.detectFramework(input);\n if (framework) { params.framework = framework;\n }\n\n // Extract file path if mentioned\n const _filePath = this.extractFilePath(input);\n if (filePath) { params.file = filePath;\n }\n\n return _params;\n }\n\n private extractImageParameters(_input: string, language: string): Record<string, unknown> {\n const params: Record<string, unknown> = {};\n\n // Extract prompt (remove command keywords)\n const _prompt = this.cleanDescription(input, language, [\n 'create',\n 'generate',\n 'make',\n 'draw',\n 'design',\n 'image',\n 'picture',\n '生成',\n '作る',\n '描く',\n '画像',\n 'イメージ',\n '创建',\n '生成',\n '画',\n '图像',\n '图片',\n '생성',\n '그리기',\n '이미지',\n '그림',\n 'tạo',\n 'vẽ',\n 'hình ảnh',\n 'ảnh',\n ]);\n\n _params.prompt = prompt;\n\n // Detect style\n const _style = this.detectArtStyle(input);\n if (style) { params.style = style;\n }\n\n // Extract dimensions\n const _dimensions = this.extractDimensions(input);\n if (dimensions) { params.width = dimensions.width;\n _params.height = dimensions.height;\n }\n\n return _params;\n }\n\n private extractVideoParameters(_input: string, language: string): Record<string, unknown> {\n const params: Record<string, unknown> = {};\n\n // Extract description\n const _description = this.cleanDescription(input, language, [\n 'create',\n 'generate',\n 'make',\n 'produce',\n 'video',\n 'animation',\n '作る',\n '生成',\n '動画',\n 'ビデオ',\n 'アニメーション',\n '创建',\n '生成',\n '视频',\n '动画',\n '생성',\n '비디오',\n '동영상',\n '애니메이션',\n 'tạo',\n 'video',\n 'hoạt hình',\n ]);\n\n _params.description = description;\n\n // Extract duration\n const _duration = this.extractDuration(input);\n if (duration) { params.duration = duration;\n }\n\n // Detect format\n const _format = this.detectVideoFormat(input);\n if (format) { params.format = format;\n }\n\n return _params;\n }\n\n private extractTestParameters(_input: string, language: string): Record<string, unknown> {\n const params: Record<string, unknown> = {};\n\n // Extract description\n const _description = this.cleanDescription(input, language, [\n 'write',\n 'create',\n 'generate',\n 'test',\n 'testing',\n '書く',\n '作る',\n 'テスト',\n '試験',\n '写',\n '创建',\n '测试',\n '작성',\n '생성',\n '테스트',\n 'viết',\n 'tạo',\n 'kiểm tra',\n ]);\n\n _params.description = description;\n\n // Detect test type\n const _testType = this.detectTestType(input);\n if (testType) { params.type = testType;\n }\n\n // Extract file if mentioned\n const _filePath = this.extractFilePath(input);\n if (filePath) { params.file = filePath;\n }\n\n return _params;\n }\n\n private extractReviewParameters(_input: string, language: string): Record<string, unknown> {\n const params: Record<string, unknown> = {};\n\n // Extract description\n const _description = this.cleanDescription(input, language, [\n 'review',\n 'check',\n 'analyze',\n 'improve',\n 'refactor',\n 'レビュー',\n '確認',\n '改善',\n 'リファクタ',\n '审查',\n '检查',\n '分析',\n '改进',\n '리뷰',\n '검토',\n '분석',\n '개선',\n 'xem xét',\n 'kiểm tra',\n 'phân tích',\n 'cải thiện',\n ]);\n\n _params.description = description;\n\n // Extract file if mentioned\n const _filePath = this.extractFilePath(input);\n if (filePath) { params.file = filePath;\n }\n\n // Detect review focus\n const _focus = this.detectReviewFocus(input);\n if (focus) { params.focus = focus;\n }\n\n return _params;\n }\n\n private extractLanguageParameters(_input: string, language: string): Record<string, unknown> {\n const params: Record<string, unknown> = {};\n\n // Extract target language\n const _targetLang = this.extractTargetLanguage(input);\n if (targetLang) { params.language = targetLang;\n }\n\n return _params;\n }\n\n private extractGenericParameters(_input: string, language: string): Record<string, unknown> {\n const params: Record<string, unknown> = {};\n\n // Clean input from common words\n const _cleanedInput = this.cleanDescription(input, language, []);\n _params.input = cleanedInput;\n\n // Extract any file paths\n const _filePath = this.extractFilePath(input);\n if (filePath) { params.file = filePath;\n }\n\n return _params;\n }\n\n private cleanDescription(_input: string, language: string, keywords: string[]): string {\n let cleaned = input.toLowerCase();\n\n // Remove keywords\n keywords.forEach((keyword) => {\n const _regex = new RegExp(`\\\\b${keyword}\\\\b`, 'gi');\n cleaned = cleaned.replace(regex, '');\n });\n\n // Clean up whitespace\n cleaned = cleaned.replace(/\\s+/g, ' ').trim();\n\n return cleaned;\n }\n\n private detectProgrammingLanguage(input: string): string | null {\n const languages: Record<string, RegExp> = {\n javascript: /\\b(javascript|js|node\\.?js)\\b/i,\n typescript: /\\b(typescript|ts)\\b/i,\n python: /\\b(python|py)\\b/i,\n java: /\\b(java)\\b/i,\n rust: /\\b(rust|rs)\\b/i,\n go: /\\b(go|golang)\\b/i,\n cpp: /\\b(c\\+\\+|cpp)\\b/i,\n csharp: /\\b(c#|csharp)\\b/i,\n ruby: /\\b(ruby|rb)\\b/i,\n php: /\\b(php)\\b/i,\n swift: /\\b(swift)\\b/i,\n kotlin: /\\b(kotlin)\\b/i,\n };\n\n for (const [lang, pattern] of Object.entries(languages)) {\n if (pattern.test(input)) {\n return lang;\n }\n }\n\n return null;\n }\n\n private detectFramework(input: string): string | null {\n const frameworks: Record<string, RegExp> = {\n react: /\\b(react|reactjs)\\b/i,\n vue: /\\b(vue|vuejs)\\b/i,\n angular: /\\b(angular)\\b/i,\n nextjs: /\\b(next\\.?js|nextjs)\\b/i,\n express: /\\b(express)\\b/i,\n django: /\\b(django)\\b/i,\n flask: /\\b(flask)\\b/i,\n rails: /\\b(rails|ruby on rails)\\b/i,\n spring: /\\b(spring)\\b/i,\n laravel: /\\b(laravel)\\b/i,\n };\n\n for (const [framework, pattern] of Object.entries(frameworks)) {\n if (pattern.test(input)) {\n return framework;\n }\n }\n\n return null;\n }\n\n private detectArtStyle(input: string): string | null {\n const styles: Record<string, RegExp> = {\n realistic: /\\b(realistic|photorealistic|real)\\b/i,\n cartoon: /\\b(cartoon|animated|anime)\\b/i,\n abstract: /\\b(abstract)\\b/i,\n watercolor: /\\b(watercolor|water color)\\b/i,\n oil: /\\b(oil painting|oil)\\b/i,\n pencil: /\\b(pencil|sketch)\\b/i,\n '3d': /\\b(3d|three dimensional)\\b/i,\n pixel: /\\b(pixel art|pixelated)\\b/i,\n };\n\n for (const [style, pattern] of Object.entries(styles)) {\n if (pattern.test(input)) {\n return style;\n }\n }\n\n return null;\n }\n\n private extractFilePath(input: string): string | null {\n const _filePattern = /(?:[\"'])?([/\\w\\-._]+\\.\\w+)(?:[\"'])?/;\n const _match = input.match(filePattern);\n return match ? match[1] : null;\n }\n\n private extractDimensions(input: string): { width: number; height: number } | null {\n const _dimensionPattern = /(\\d+)\\s*[x×]\\s*(\\d+)/i;\n const _match = input.match(dimensionPattern);\n\n if (match) {\n return {\n width: parseInt(match[1], 10),\n height: parseInt(match[2], 10),\n };\n }\n\n return null;\n }\n\n private extractDuration(input: string): number | null {\n const _durationPattern = /(\\d+)\\s*(seconds?|secs?|minutes?|mins?)/i;\n const _match = input.match(durationPattern);\n\n if (match) {\n const _value = parseInt(match[1], 10);\n const _unit = match[2].toLowerCase();\n\n if (unit.startsWith('min')) {\n return value * 60;\n }\n return value;\n }\n\n return null;\n }\n\n private detectVideoFormat(input: string): string | null {\n const _formats = ['mp4', 'avi', 'mov', 'webm', 'gif'];\n\n for (const format of formats) {\n const _pattern = new RegExp(`\\\\b${format}\\\\b`, 'i');\n if (pattern.test(input)) {\n return format;\n }\n }\n\n return null;\n }\n\n private detectTestType(input: string): string | null {\n const types: Record<string, RegExp> = {\n unit: /\\b(unit)\\b/i,\n integration: /\\b(integration)\\b/i,\n e2e: /\\b(e2e|end to end)\\b/i,\n performance: /\\b(performance|perf)\\b/i,\n snapshot: /\\b(snapshot)\\b/i,\n };\n\n for (const [type, pattern] of Object.entries(types)) {\n if (pattern.test(input)) {\n return type;\n }\n }\n\n return null;\n }\n\n private detectReviewFocus(input: string): string | null {\n const focuses: Record<string, RegExp> = {\n performance: /\\b(performance|speed|optimization)\\b/i,\n security: /\\b(security|vulnerability|safe)\\b/i,\n quality: /\\b(quality|clean|maintainability)\\b/i,\n style: /\\b(style|format|convention)\\b/i,\n bugs: /\\b(bugs?|errors?|issues?)\\b/i,\n };\n\n for (const [focus, pattern] of Object.entries(focuses)) {\n if (pattern.test(input)) {\n return focus;\n }\n }\n\n return null;\n }\n\n private extractTargetLanguage(input: string): string | null {\n const languageMap: Record<string, string[]> = {\n en: ['english', '英語', '英文', '영어', 'tiếng anh'],\n ja: ['japanese', '日本語', '日文', '일본어', 'tiếng nhật'],\n cn: ['chinese', '中国語', '中文', '중국어', 'tiếng trung'],\n ko: ['korean', '韓国語', '韩文', '한국어', 'tiếng hàn'],\n vn: ['vietnamese', 'ベトナム語', '越南文', '베트남어', 'tiếng việt'],\n };\n\n const _lowerInput = input.toLowerCase();\n\n for (const [code, patterns] of Object.entries(languageMap)) {\n for (const pattern of patterns) {\n if (lowerInput.includes(pattern)) {\n return code;\n }\n }\n }\n\n return null;\n }\n}\n","export interface CommandTranslation {\n command: string;\n name: Record<string, string>;\n description: Record<string, string>;\n keywords: Record<string, string[]>;\n examples: Record<string, string[]>;\n}\n\nexport class MultilingualDictionary {\n private dictionary: Map<string, CommandTranslation>;\n private initialized: boolean = false;\n\n constructor() {\n this.dictionary = new Map();\n }\n\n async initialize(): Promise<void> {\n if (this.initialized) {return;}\n\n this.loadTranslations();\n this.initialized = true;\n }\n\n getTranslation(_command: string, language: string = 'en'): CommandTranslation | null {\n return this.dictionary.get(command) ?? null;\n }\n\n getExplanation(_command: string, language: string = 'en'): string {\n const _translation = this.dictionary.get(command);\n if (!translation) {\n return `Command ${command} not found`;\n }\n\n return translation.description[language] ?? translation.description['en'] ?? '';\n }\n\n getKeywords(_command: string, language: string = 'en'): string[] {\n const _translation = this.dictionary.get(command);\n if (!translation) {\n return [];\n }\n\n return translation.keywords[language] ?? translation.keywords['en'] ?? [];\n }\n\n getExamples(_command: string, language: string = 'en'): string[] {\n const _translation = this.dictionary.get(command);\n if (!translation) {\n return [];\n }\n\n return translation.examples[language] ?? translation.examples['en'] ?? [];\n }\n\n getAllCommands(): string[] {\n return Array.from(this.dictionary.keys());\n }\n\n private loadTranslations(): void {\n // Core Development Commands\n this.dictionary.set('/code', {\n command: '/code',\n name: {\n en: 'Code Generation',\n ja: 'コード生成',\n zh: '代码生成',\n ko: '코드 생성',\n },\n description: {\n en: 'Generate code with AI assistance',\n ja: 'AI支援によるコード生成',\n zh: '使用AI辅助生成代码',\n ko: 'AI 지원 코드 생성',\n },\n keywords: {\n en: [\n 'write',\n 'create',\n 'generate',\n 'implement',\n 'build',\n 'code',\n 'program',\n 'develop',\n 'function',\n 'class',\n ],\n ja: ['コード', '実装', 'プログラム', '関数', 'クラス', '作成', '開発', '書く', '生成'],\n zh: ['代码', '编写', '实现', '程序', '函数', '类', '创建', '开发', '生成'],\n ko: ['코드', '프로그램', '함수', '클래스', '구현', '개발', '작성', '생성'],\n },\n examples: {\n en: ['write a React component', 'create a REST API', 'implement user authentication'],\n ja: ['Reactコンポーネントを実装して', 'REST APIを作って', 'ユーザー認証を実装'],\n zh: ['写一个React组件', '创建REST API', '实现用户认证'],\n ko: ['React 컴포넌트 작성', 'REST API 생성', '사용자 인증 구현'],\n },\n });\n\n this.dictionary.set('/test', {\n command: '/test',\n name: {\n en: 'Test Generation',\n ja: 'テスト生成',\n zh: '测试生成',\n ko: '테스트 생성',\n },\n description: {\n en: 'Generate and run tests',\n ja: 'テストの生成と実行',\n zh: '生成并运行测试',\n ko: '테스트 생성 및 실행',\n },\n keywords: {\n en: ['test', 'testing', 'unit', 'integration', 'e2e', 'coverage', 'spec', 'assertion'],\n ja: ['テスト', '試験', 'ユニット', '統合', 'カバレッジ', '検証'],\n zh: ['测试', '单元测试', '集成测试', '覆盖率', '验证'],\n ko: ['테스트', '단위', '통합', '커버리지', '검증'],\n },\n examples: {\n en: ['write unit tests', 'create integration tests', 'generate test coverage'],\n ja: ['ユニットテストを書いて', '統合テストを作成', 'テストカバレッジを生成'],\n zh: ['编写单元测试', '创建集成测试', '生成测试覆盖率'],\n ko: ['단위 테스트 작성', '통합 테스트 생성', '테스트 커버리지 생성'],\n },\n });\n\n this.dictionary.set('/review', {\n command: '/review',\n name: {\n en: 'Code Review',\n ja: 'コードレビュー',\n zh: '代码审查',\n ko: '코드 리뷰',\n },\n description: {\n en: 'Review code for improvements',\n ja: 'コードの改善点をレビュー',\n zh: '审查代码以进行改进',\n ko: '코드 개선사항 검토',\n },\n keywords: {\n en: ['review', 'check', 'analyze', 'improve', 'refactor', 'optimize', 'quality', 'inspect'],\n ja: ['レビュー', '確認', '改善', 'リファクタ', '最適化', '品質', '検査'],\n zh: ['审查', '检查', '分析', '改进', '重构', '优化', '质量'],\n ko: ['리뷰', '검토', '분석', '개선', '리팩토링', '최적화', '품질'],\n },\n examples: {\n en: ['review this code', 'check for improvements', 'optimize performance'],\n ja: ['このコードをレビューして', '改善点を確認', 'パフォーマンスを最適化'],\n zh: ['审查这段代码', '检查改进点', '优化性能'],\n ko: ['이 코드 리뷰', '개선사항 확인', '성능 최적화'],\n },\n });\n\n this.dictionary.set('/model', {\n command: '/model',\n name: {\n en: 'Model Selection',\n ja: 'モデル選択',\n zh: '模型选择',\n ko: '모델 선택',\n },\n description: {\n en: 'Select AI model',\n ja: 'AIモデルの選択',\n zh: '选择AI模型',\n ko: 'AI 모델 선택',\n },\n keywords: {\n en: ['model', 'select', 'choose', 'switch', 'change', 'ai', 'llm'],\n ja: ['モデル', '選択', '切り替え', '変更', 'AI', 'LLM'],\n zh: ['模型', '选择', '切换', '更改', 'AI', 'LLM'],\n ko: ['모델', '선택', '전환', '변경', 'AI', 'LLM'],\n },\n examples: {\n en: ['switch to GPT-5', 'use Claude', 'select local model'],\n ja: ['GPT-5に切り替え', 'Claudeを使用', 'ローカルモデルを選択'],\n zh: ['切换到GPT-5', '使用Claude', '选择本地模型'],\n ko: ['GPT-5로 전환', 'Claude 사용', '로컬 모델 선택'],\n },\n });\n\n // Media Generation Commands\n this.dictionary.set('/image', {\n command: '/image',\n name: {\n en: 'Image Generation',\n ja: '画像生成',\n zh: '图像生成',\n ko: '이미지 생성',\n },\n description: {\n en: 'Generate images with AI',\n ja: 'AIによる画像生成',\n zh: '使用AI生成图像',\n ko: 'AI 이미지 생성',\n },\n keywords: {\n en: [\n 'image',\n 'picture',\n 'photo',\n 'draw',\n 'illustration',\n 'visual',\n 'graphic',\n 'art',\n 'design',\n 'create',\n ],\n ja: ['画像', 'イメージ', '絵', 'イラスト', 'ビジュアル', '描く', '生成', 'デザイン'],\n zh: ['图像', '图片', '插图', '画', '生成', '创建', '视觉', '设计'],\n ko: ['이미지', '그림', '일러스트', '생성', '그리기', '디자인', '비주얼'],\n },\n examples: {\n en: ['create an image of sunset', 'draw a cat', 'generate logo design'],\n ja: ['夕日の画像を生成', '猫を描いて', 'ロゴデザインを生成'],\n zh: ['创建日落图像', '画一只猫', '生成logo设计'],\n ko: ['일몰 이미지 생성', '고양이 그리기', '로고 디자인 생성'],\n },\n });\n\n this.dictionary.set('/video', {\n command: '/video',\n name: {\n en: 'Video Generation',\n ja: '動画生成',\n zh: '视频生成',\n ko: '비디오 생성',\n },\n description: {\n en: 'Generate videos with AI',\n ja: 'AIによる動画生成',\n zh: '使用AI生成视频',\n ko: 'AI 비디오 생성',\n },\n keywords: {\n en: ['video', 'movie', 'animation', 'clip', 'film', 'animate', 'motion', 'render'],\n ja: ['動画', 'ビデオ', 'アニメーション', 'ムービー', '映像', '作成', '生成'],\n zh: ['视频', '动画', '影片', '创建', '生成', '制作', '渲染'],\n ko: ['비디오', '동영상', '애니메이션', '생성', '제작', '렌더링'],\n },\n examples: {\n en: ['create a video intro', 'generate animation', 'make a tutorial video'],\n ja: ['動画イントロを作成', 'アニメーションを生成', 'チュートリアル動画を作る'],\n zh: ['创建视频介绍', '生成动画', '制作教程视频'],\n ko: ['비디오 인트로 생성', '애니메이션 제작', '튜토리얼 비디오 만들기'],\n },\n });\n\n this.dictionary.set('/avatar', {\n command: '/avatar',\n name: {\n en: 'Avatar Display',\n ja: 'アバター表示',\n zh: '头像显示',\n ko: '아바타 표시',\n },\n description: {\n en: 'Display ASCII art avatar',\n ja: 'ASCIIアートアバターを表示',\n zh: '显示ASCII艺术头像',\n ko: 'ASCII 아트 아바타 표시',\n },\n keywords: {\n en: ['avatar', 'character', 'ascii', 'art', 'display', 'show'],\n ja: ['アバター', 'キャラクター', 'アスキー', 'アート', '表示'],\n zh: ['头像', '角色', 'ASCII', '艺术', '显示'],\n ko: ['아바타', '캐릭터', 'ASCII', '아트', '표시'],\n },\n examples: {\n en: ['show avatar', 'display character', 'ascii art'],\n ja: ['アバターを表示', 'キャラクターを見せて', 'アスキーアート'],\n zh: ['显示头像', '展示角色', 'ASCII艺术'],\n ko: ['아바타 보기', '캐릭터 표시', 'ASCII 아트'],\n },\n });\n\n this.dictionary.set('/voice', {\n command: '/voice',\n name: {\n en: 'Voice Interaction',\n ja: '音声対話',\n zh: '语音交互',\n ko: '음성 상호작용',\n },\n description: {\n en: 'Voice-based interaction',\n ja: '音声ベースの対話',\n zh: '基于语音的交互',\n ko: '음성 기반 상호작용',\n },\n keywords: {\n en: ['voice', 'speak', 'talk', 'audio', 'speech', 'sound'],\n ja: ['音声', '話す', '会話', 'オーディオ', 'スピーチ'],\n zh: ['语音', '说话', '对话', '音频', '语音'],\n ko: ['음성', '말하기', '대화', '오디오', '스피치'],\n },\n examples: {\n en: ['talk to me', 'voice command', 'speak the response'],\n ja: ['話しかけて', '音声コマンド', '応答を話して'],\n zh: ['和我说话', '语音命令', '说出回应'],\n ko: ['대화하기', '음성 명령', '응답 말하기'],\n },\n });\n\n // Add remaining commands...\n // Project Management Commands\n this.dictionary.set('/init', {\n command: '/init',\n name: {\n en: 'Initialize Project',\n ja: 'プロジェクト初期化',\n zh: '初始化项目',\n ko: '프로젝트 초기화',\n },\n description: {\n en: 'Initialize a new project',\n ja: '新しいプロジェクトを初期化',\n zh: '初始化新项目',\n ko: '새 프로젝트 초기화',\n },\n keywords: {\n en: ['init', 'initialize', 'setup', 'create', 'start', 'project', 'new'],\n ja: ['初期化', 'セットアップ', '作成', '開始', 'プロジェクト', '新規'],\n zh: ['初始化', '设置', '创建', '启动', '项目', '新建'],\n ko: ['초기화', '설정', '생성', '시작', '프로젝트', '신규'],\n },\n examples: {\n en: ['initialize new project', 'setup React app', 'create new workspace'],\n ja: ['新プロジェクトを初期化', 'Reactアプリをセットアップ', '新ワークスペースを作成'],\n zh: ['初始化新项目', '设置React应用', '创建新工作空间'],\n ko: ['새 프로젝트 초기화', 'React 앱 설정', '새 워크스페이스 생성'],\n },\n });\n\n // System Commands\n this.dictionary.set('/help', {\n command: '/help',\n name: {\n en: 'Help',\n ja: 'ヘルプ',\n zh: '帮助',\n ko: '도움말',\n },\n description: {\n en: 'Show help and available commands',\n ja: 'ヘルプと利用可能なコマンドを表示',\n zh: '显示帮助和可用命令',\n ko: '도움말 및 사용 가능한 명령 표시',\n },\n keywords: {\n en: ['help', 'guide', 'manual', 'documentation', 'usage', 'commands'],\n ja: ['ヘルプ', 'ガイド', 'マニュアル', 'ドキュメント', '使い方', 'コマンド'],\n zh: ['帮助', '指南', '手册', '文档', '用法', '命令'],\n ko: ['도움말', '가이드', '매뉴얼', '문서', '사용법', '명령'],\n },\n examples: {\n en: ['show help', 'list commands', 'how to use'],\n ja: ['ヘルプを表示', 'コマンド一覧', '使い方'],\n zh: ['显示帮助', '列出命令', '如何使用'],\n ko: ['도움말 표시', '명령 목록', '사용 방법'],\n },\n });\n\n this.dictionary.set('/exit', {\n command: '/exit',\n name: {\n en: 'Exit',\n ja: '終了',\n zh: '退出',\n ko: '종료',\n },\n description: {\n en: 'Exit the session',\n ja: 'セッションを終了',\n zh: '退出会话',\n ko: '세션 종료',\n },\n keywords: {\n en: ['exit', 'quit', 'close', 'end', 'bye', 'goodbye', 'stop'],\n ja: ['終了', '退出', '閉じる', 'バイバイ', 'さようなら', '止める'],\n zh: ['退出', '结束', '关闭', '再见', '停止'],\n ko: ['종료', '나가기', '닫기', '끝', '정지'],\n },\n examples: {\n en: ['exit session', 'quit app', 'goodbye'],\n ja: ['セッション終了', 'アプリを閉じる', 'さようなら'],\n zh: ['退出会话', '关闭应用', '再见'],\n ko: ['세션 종료', '앱 종료', '안녕'],\n },\n });\n\n // Add more commands as needed...\n }\n}\n","export type SupportedLanguage = 'en' | 'ja' | 'cn' | 'ko' | 'vn';\n\ninterface LanguageScore {\n language: SupportedLanguage;\n score: number;\n}\n\nexport class LanguageDetector {\n private languagePatterns: Map<SupportedLanguage, RegExp[]>;\n private characterRanges: Map<SupportedLanguage, RegExp[]>;\n\n constructor() {\n this.languagePatterns = new Map();\n this.characterRanges = new Map();\n this.initializePatterns();\n }\n\n async detect(text: string): Promise<SupportedLanguage> {\n const scores = this.calculateScores(text);\n\n // Sort by score descending\n scores.sort((a, b) => b.score - a.score);\n\n // If the top score is significantly higher, use it\n if (scores.length > 0 && scores[0]?.score && scores[0].score > 0) {\n return scores[0].language;\n }\n\n // Default to English\n return 'en';\n }\n\n private calculateScores(text: string): LanguageScore[] {\n const scores: LanguageScore[] = [\n { language: 'en', score: 0 },\n { language: 'ja', score: 0 },\n { language: 'cn', score: 0 },\n { language: 'ko', score: 0 },\n { language: 'vn', score: 0 },\n ];\n\n // Character-based detection\n this.characterRanges.forEach((patterns, language) => {\n patterns.forEach((pattern) => {\n const matches = text.match(pattern);\n if (matches) {\n const score = scores.find((s) => s.language === language);\n if (score) {\n score.score += matches.length * 2;\n }\n }\n });\n });\n\n // Pattern-based detection for more accuracy\n this.languagePatterns.forEach((patterns, language) => {\n patterns.forEach((pattern) => {\n if (pattern.test(text)) {\n const score = scores.find((s) => s.language === language);\n if (score) {\n score.score += 3;\n }\n }\n });\n });\n\n // Check for English words (common programming terms)\n const englishTerms =\n /\\b(function|class|const|let|var|if|else|for|while|return|import|export|async|await|create|make|generate|write|code|test|review)\\b/i;\n if (englishTerms.test(text)) {\n const englishScore = scores.find((s) => s.language === 'en');\n if (englishScore) {\n englishScore.score += 5;\n }\n }\n\n // Normalize scores\n const totalChars = text.length;\n scores.forEach((score) => {\n if (totalChars > 0) {\n score.score = (score.score / totalChars) * 100;\n }\n });\n\n return scores;\n }\n\n private initializePatterns(): void {\n // Japanese patterns\n this.characterRanges.set('ja', [\n /[\\u3040-\\u309f]/g, // Hiragana\n /[\\u30a0-\\u30ff]/g, // Katakana\n /[\\u4e00-\\u9faf]/g, // Kanji (also used in Chinese)\n ]);\n\n this.languagePatterns.set('ja', [\n /[ぁ-ん]/, // Hiragana check\n /[ァ-ヴ]/, // Katakana check\n /です|ます|ください|して/, // Common endings\n /は|が|を|に|で|と|の|から|まで/, // Particles\n ]);\n\n // Chinese patterns\n this.characterRanges.set('cn', [\n /[\\u4e00-\\u9faf]/g, // Chinese characters\n ]);\n\n this.languagePatterns.set('cn', [\n /的|了|是|在|有|和|不|人|我|你|他|她/, // Common Chinese characters\n /这|那|什么|怎么|为什么/, // Common question words\n /吗|呢|吧|啊/, // Sentence particles\n ]);\n\n // Korean patterns\n this.characterRanges.set('ko', [\n /[\\uac00-\\ud7af]/g, // Hangul syllables\n /[\\u1100-\\u11ff]/g, // Hangul Jamo\n /[\\u3130-\\u318f]/g, // Hangul compatibility Jamo\n ]);\n\n this.languagePatterns.set('ko', [\n /[가-힣]/, // Hangul check\n /입니다|습니다|합니다/, // Formal endings\n /을|를|이|가|은|는|의/, // Particles\n ]);\n\n // Vietnamese patterns\n this.characterRanges.set('vn', [\n /[a-zA-Zàáảãạăằắẳẵặâầấẩẫậđèéẻẽẹêềếểễệìíỉĩịòóỏõọôồốổỗộơờớởỡợùúủũụưừứửữựỳýỷỹỵ]/g, // Vietnamese with tones\n ]);\n\n this.languagePatterns.set('vn', [\n /[àáảãạăằắẳẵặâầấẩẫậđèéẻẽẹêềếểễệìíỉĩịòóỏõọôồốổỗộơờớởỡợùúủũụưừứửữựỳýỷỹỵ]/, // Vietnamese tones\n /và|của|là|có|được|trong|với|này|cho|để/, // Common Vietnamese words\n /không|nhưng|cũng|như|từ|đến|sau|trước/, // More common words\n ]);\n\n // English patterns\n this.characterRanges.set('en', [\n /[a-zA-Z]/g, // Latin alphabet\n ]);\n\n this.languagePatterns.set('en', [\n /\\b(the|be|to|of|and|a|in|that|have|I|it|for|not|on|with|he|as|you|do|at)\\b/i, // Common English words\n /\\b(this|but|his|by|from|they|we|say|her|she|or|an|will|my|one|all|would|there|their)\\b/i,\n ]);\n }\n\n getLanguageName(code: SupportedLanguage): string {\n const names: Record<SupportedLanguage, string> = {\n en: 'English',\n ja: 'Japanese',\n cn: 'Chinese',\n ko: 'Korean',\n vn: 'Vietnamese',\n };\n return names[code] || 'Unknown';\n }\n\n isSupported(languageCode: string): languageCode is SupportedLanguage {\n return ['en', 'ja', 'cn', 'ko', 'vn'].includes(languageCode);\n }\n}\n","import { MultilingualDictionary } from '../analysis/MultilingualDictionary';\n\nexport interface CommandMapping {\n command: string;\n naturalPhrases: Map<string, string[]>;\n priority: number;\n}\n\nexport class CommandMappings {\n private mappings: CommandMapping[];\n private dictionary: MultilingualDictionary;\n private initialized: boolean = false;\n\n constructor() {\n this.mappings = [];\n this.dictionary = new MultilingualDictionary();\n }\n\n async initialize(): Promise<void> {\n if (this.initialized) {return;}\n\n await this.dictionary.initialize();\n this.loadMappings();\n this.initialized = true;\n }\n\n async getSuggestions(_input: string, language: string, maxResults: number = 5): Promise<string[]> {\n const _lowerInput = input.toLowerCase();\n const suggestions: Array<{ command: string; score: number }> = [];\n\n for (const mapping of this.mappings) {\n const _phrases =\n mapping.naturalPhrases.get(language) ?? mapping.naturalPhrases.get('en') ?? [];\n let score = 0;\n\n for (const phrase of phrases) {\n if (phrase.toLowerCase().includes(lowerInput)) {\n score += 2;\n }\n if (phrase.toLowerCase().startsWith(lowerInput)) {\n score += 3;\n }\n }\n\n // Check command name match\n if (mapping.command.toLowerCase().includes(lowerInput)) {\n score += 5;\n }\n\n if (score > 0) {\n suggestions.push({ command: mapping.command, score: score * mapping.priority });\n }\n }\n\n // Sort by score and return top results\n return suggestions\n .sort((a, b) => b.score - a.score)\n .slice(0, maxResults)\n .map((s) => s.command);\n }\n\n getCommandForPhrase(_phrase: string, language: string): string | null {\n const _lowerPhrase = phrase.toLowerCase();\n\n for (const mapping of this.mappings) {\n const _phrases =\n mapping.naturalPhrases.get(language) ?? mapping.naturalPhrases.get('en') ?? [];\n\n for (const naturalPhrase of phrases) {\n if (lowerPhrase.includes(naturalPhrase.toLowerCase())) {\n return mapping.command;\n }\n }\n }\n\n return null;\n }\n\n private loadMappings(): void {\n // Core Development Commands\n this.mappings.push({\n command: '/code',\n naturalPhrases: new Map([\n [\n 'en',\n ['write code', 'create code', 'generate code', 'implement', 'build function', 'develop'],\n ],\n [\n 'ja',\n ['コードを書いて', '実装して', 'プログラムを作って', '関数を書いて', 'クラスを作成'],\n ],\n ['cn', ['写代码', '编写代码', '实现', '创建函数', '构建类']],\n ['ko', ['코드 작성', '구현해줘', '함수 만들어', '클래스 생성']],\n ['vn', ['viết mã', 'tạo code', 'xây dựng hàm', 'phát triển']],\n ]),\n priority: 1.0,\n });\n\n this.mappings.push({\n command: '/test',\n naturalPhrases: new Map([\n ['en', ['write test', 'create test', 'generate test', 'unit test', 'test this']],\n ['ja', ['テストを書いて', 'テスト作成', 'ユニットテスト', 'テストして']],\n ['cn', ['写测试', '创建测试', '单元测试', '测试这个']],\n ['ko', ['테스트 작성', '테스트 생성', '단위 테스트']],\n ['vn', ['viết kiểm tra', 'tạo test', 'kiểm tra đơn vị']],\n ]),\n priority: 0.9,\n });\n\n this.mappings.push({\n command: '/review',\n naturalPhrases: new Map([\n ['en', ['review code', 'check code', 'analyze', 'improve', 'refactor']],\n ['ja', ['コードレビュー', '確認して', '改善して', 'リファクタリング']],\n ['cn', ['代码审查', '检查代码', '改进', '重构']],\n ['ko', ['코드 리뷰', '검토해줘', '개선해줘', '리팩토링']],\n ['vn', ['xem xét mã', 'kiểm tra code', 'cải thiện', 'tái cấu trúc']],\n ]),\n priority: 0.9,\n });\n\n this.mappings.push({\n command: '/model',\n naturalPhrases: new Map([\n ['en', ['switch model', 'change model', 'select model', 'use gpt', 'use claude']],\n ['ja', ['モデル切り替え', 'モデル変更', 'GPT使って', 'Claude使って']],\n ['cn', ['切换模型', '更改模型', '使用GPT', '使用Claude']],\n ['ko', ['모델 전환', '모델 변경', 'GPT 사용', 'Claude 사용']],\n ['vn', ['chuyển mô hình', 'đổi model', 'dùng GPT', 'dùng Claude']],\n ]),\n priority: 0.8,\n });\n\n // Media Generation Commands\n this.mappings.push({\n command: '/image',\n naturalPhrases: new Map([\n [\n 'en',\n ['create image', 'generate image', 'draw picture', 'make illustration', 'design graphic'],\n ],\n ['ja', ['画像を生成', 'イメージを作って', '絵を描いて', 'イラストを作成']],\n ['cn', ['生成图像', '创建图片', '画一幅画', '制作插图']],\n ['ko', ['이미지 생성', '그림 그려줘', '일러스트 만들어']],\n ['vn', ['tạo hình ảnh', 'vẽ tranh', 'làm minh họa']],\n ]),\n priority: 1.0,\n });\n\n this.mappings.push({\n command: '/video',\n naturalPhrases: new Map([\n ['en', ['create video', 'generate video', 'make animation', 'produce movie']],\n ['ja', ['動画を作って', 'ビデオを生成', 'アニメーションを作成']],\n ['cn', ['创建视频', '生成动画', '制作影片']],\n ['ko', ['비디오 생성', '동영상 만들어', '애니메이션 제작']],\n ['vn', ['tạo video', 'làm hoạt hình', 'sản xuất phim']],\n ]),\n priority: 1.0,\n });\n\n this.mappings.push({\n command: '/avatar',\n naturalPhrases: new Map([\n ['en', ['show avatar', 'display character', 'ascii art']],\n ['ja', ['アバター表示', 'キャラクター見せて', 'アスキーアート']],\n ['cn', ['显示头像', '展示角色', 'ASCII艺术']],\n ['ko', ['아바타 보기', '캐릭터 표시']],\n ['vn', ['hiển thị avatar', 'xem nhân vật']],\n ]),\n priority: 0.7,\n });\n\n this.mappings.push({\n command: '/voice',\n naturalPhrases: new Map([\n ['en', ['talk to me', 'voice command', 'speak']],\n ['ja', ['話しかけて', '音声コマンド', '話して']],\n ['cn', ['和我说话', '语音命令', '说话']],\n ['ko', ['대화하기', '음성 명령']],\n ['vn', ['nói chuyện', 'lệnh giọng nói']],\n ]),\n priority: 0.7,\n });\n\n // Configuration Commands\n this.mappings.push({\n command: '/setup',\n naturalPhrases: new Map([\n ['en', ['setup system', 'initial setup', 'configure']],\n ['ja', ['セットアップ', '初期設定', '環境構築']],\n ['cn', ['设置系统', '初始设置', '配置']],\n ['ko', ['설정', '초기 설정', '환경 구축']],\n ['vn', ['thiết lập', 'cài đặt ban đầu']],\n ]),\n priority: 0.8,\n });\n\n this.mappings.push({\n command: '/settings',\n naturalPhrases: new Map([\n ['en', ['show settings', 'check configuration', 'view config']],\n ['ja', ['設定確認', '設定を見る', 'コンフィグ確認']],\n ['cn', ['查看设置', '检查配置', '显示设置']],\n ['ko', ['설정 확인', '설정 보기']],\n ['vn', ['xem cài đặt', 'kiểm tra cấu hình']],\n ]),\n priority: 0.7,\n });\n\n this.mappings.push({\n command: '/config',\n naturalPhrases: new Map([\n ['en', ['configure', 'manage config', 'update settings']],\n ['ja', ['設定管理', '設定更新', 'コンフィグ管理']],\n ['cn', ['配置管理', '更新设置', '管理配置']],\n ['ko', ['설정 관리', '설정 업데이트']],\n ['vn', ['quản lý cấu hình', 'cập nhật cài đặt']],\n ]),\n priority: 0.7,\n });\n\n // Project Management Commands\n this.mappings.push({\n command: '/init',\n naturalPhrases: new Map([\n ['en', ['initialize project', 'start new project', 'create project']],\n ['ja', ['プロジェクト初期化', '新規プロジェクト', 'プロジェクト作成']],\n ['cn', ['初始化项目', '新建项目', '创建项目']],\n ['ko', ['프로젝트 초기화', '새 프로젝트']],\n ['vn', ['khởi tạo dự án', 'tạo dự án mới']],\n ]),\n priority: 0.9,\n });\n\n this.mappings.push({\n command: '/add-dir',\n naturalPhrases: new Map([\n ['en', ['add directory', 'include folder', 'add path']],\n ['ja', ['ディレクトリ追加', 'フォルダ追加', 'パス追加']],\n ['cn', ['添加目录', '包含文件夹', '添加路径']],\n ['ko', ['디렉토리 추가', '폴더 추가']],\n ['vn', ['thêm thư mục', 'thêm đường dẫn']],\n ]),\n priority: 0.6,\n });\n\n this.mappings.push({\n command: '/memory',\n naturalPhrases: new Map([\n ['en', ['manage memory', 'remember this', 'save context']],\n ['ja', ['メモリ管理', 'これを覚えて', 'コンテキスト保存']],\n ['cn', ['内存管理', '记住这个', '保存上下文']],\n ['ko', ['메모리 관리', '이것 기억해']],\n ['vn', ['quản lý bộ nhớ', 'nhớ điều này']],\n ]),\n priority: 0.6,\n });\n\n this.mappings.push({\n command: '/export',\n naturalPhrases: new Map([\n ['en', ['export data', 'save output', 'download results']],\n ['ja', ['データエクスポート', '出力保存', '結果ダウンロード']],\n ['cn', ['导出数据', '保存输出', '下载结果']],\n ['ko', ['데이터 내보내기', '출력 저장']],\n ['vn', ['xuất dữ liệu', 'lưu kết quả']],\n ]),\n priority: 0.6,\n });\n\n // File Save Commands - Extended patterns\n this.mappings.push({\n command: '/save',\n naturalPhrases: new Map([\n [\n 'en',\n [\n // Basic save patterns\n 'save this', 'save it', 'save that', 'save the code', 'save the response',\n 'save to file', 'write to file', 'store this', 'save as', 'save file',\n \n // Polite forms\n 'please save', 'can you save', 'could you save', 'would you save',\n 'kindly save', 'save please', 'save it please',\n \n // Action forms\n 'write this down', 'store it', 'keep this', 'put this in a file',\n 'create a file', 'make a file', 'generate file', 'export this',\n 'output to file', 'dump to file', 'persist this',\n \n // Contextual forms\n 'save what you just generated', 'save the above', 'save your response',\n 'save the output', 'save the result', 'save generated code',\n 'keep the code', 'store the code', 'file the code'\n ]\n ],\n [\n 'ja',\n [\n // Basic patterns\n '保存して', 'ファイルに保存', 'これを保存', 'セーブして', 'ファイル保存',\n \n // Polite forms\n '保存してください', '保存してもらえる', '保存できる', '保存お願い',\n '保存していただける', '保存をお願いします',\n \n // Various expressions\n 'ファイルに書き込んで', 'ファイルに書いて', 'ファイルにして',\n 'ファイル化して', 'ファイル作成', 'ファイルを作って',\n \n // Output related\n 'コードを保存', '出力を保存', '結果を保存', 'レスポンスを保存',\n '生成したものを保存', '上記を保存', 'これ保存',\n \n // Casual forms\n 'セーブ', 'キープして', '取っておいて', '残して',\n 'ファイルに残して', '書き出して', 'エクスポートして'\n ]\n ],\n [\n 'cn', \n [\n '保存', '存储', '保存这个', '保存到文件', '写入文件',\n '保存代码', '保存输出', '保存结果', '存档', '储存',\n '请保存', '保存一下', '帮我保存', '导出', '输出到文件',\n '创建文件', '生成文件', '写到文件', '记录下来'\n ]\n ],\n [\n 'ko', \n [\n '저장해줘', '저장해', '파일에 저장', '이것 저장', '저장 부탁',\n '코드 저장', '출력 저장', '결과 저장', '파일로 만들어',\n '파일 생성', '내보내기', '익스포트', '세이브해줘'\n ]\n ],\n [\n 'vn', \n [\n 'lưu này', 'lưu lại', 'lưu vào file', 'lưu mã', 'lưu kết quả',\n 'ghi vào file', 'tạo file', 'xuất file', 'giữ lại', 'lưu giúp'\n ]\n ],\n ]),\n priority: 1.0,\n });\n\n this.mappings.push({\n command: '/saveto',\n naturalPhrases: new Map([\n [\n 'en',\n [\n 'save to directory', 'save in folder', 'save at path',\n 'save to specific location', 'put in folder', 'write to directory',\n 'save in', 'store in directory', 'save to path'\n ]\n ],\n [\n 'ja',\n [\n 'ディレクトリに保存', 'フォルダに保存', 'パスに保存',\n '特定の場所に保存', 'フォルダーに入れて', 'ディレクトリに書き込み'\n ]\n ],\n ['cn', ['保存到目录', '保存在文件夹', '保存到路径', '存储到特定位置']],\n ['ko', ['디렉토리에 저장', '폴더에 저장', '경로에 저장']],\n ['vn', ['lưu vào thư mục', 'lưu tại đường dẫn', 'lưu vào vị trí cụ thể']],\n ]),\n priority: 0.9,\n });\n\n // Agent Management Commands\n this.mappings.push({\n command: '/agents',\n naturalPhrases: new Map([\n ['en', ['manage agents', 'show agents', 'list agents']],\n ['ja', ['エージェント管理', 'エージェント表示', 'エージェント一覧']],\n ['cn', ['管理代理', '显示代理', '列出代理']],\n ['ko', ['에이전트 관리', '에이전트 표시']],\n ['vn', ['quản lý agent', 'hiển thị agent']],\n ]),\n priority: 0.5,\n });\n\n // System Commands\n this.mappings.push({\n command: '/status',\n naturalPhrases: new Map([\n ['en', ['show status', 'system status', 'check status']],\n ['ja', ['ステータス表示', 'システム状態', '状態確認']],\n ['cn', ['显示状态', '系统状态', '检查状态']],\n ['ko', ['상태 표시', '시스템 상태']],\n ['vn', ['hiển thị trạng thái', 'trạng thái hệ thống']],\n ]),\n priority: 0.7,\n });\n\n this.mappings.push({\n command: '/health',\n naturalPhrases: new Map([\n ['en', ['health check', 'system health', 'diagnostics']],\n ['ja', ['ヘルスチェック', 'システム診断', '健全性確認']],\n ['cn', ['健康检查', '系统诊断', '健康状态']],\n ['ko', ['헬스 체크', '시스템 진단']],\n ['vn', ['kiểm tra sức khỏe', 'chẩn đoán hệ thống']],\n ]),\n priority: 0.6,\n });\n\n this.mappings.push({\n command: '/clear',\n naturalPhrases: new Map([\n ['en', ['clear screen', 'clear chat', 'reset display']],\n ['ja', ['画面クリア', 'チャットクリア', '表示リセット']],\n ['cn', ['清除屏幕', '清除聊天', '重置显示']],\n ['ko', ['화면 지우기', '채팅 지우기']],\n ['vn', ['xóa màn hình', 'xóa chat']],\n ]),\n priority: 0.5,\n });\n\n this.mappings.push({\n command: '/help',\n naturalPhrases: new Map([\n ['en', ['show help', 'help me', 'list commands', 'how to use']],\n ['ja', ['ヘルプ表示', '助けて', 'コマンド一覧', '使い方']],\n ['cn', ['显示帮助', '帮助我', '列出命令', '如何使用']],\n ['ko', ['도움말 표시', '도와줘', '명령 목록']],\n ['vn', ['hiển thị trợ giúp', 'giúp tôi', 'danh sách lệnh']],\n ]),\n priority: 0.9,\n });\n\n this.mappings.push({\n command: '/exit',\n naturalPhrases: new Map([\n ['en', ['exit', 'quit', 'goodbye', 'bye', 'close']],\n ['ja', ['終了', '退出', 'さようなら', 'バイバイ', '閉じる']],\n ['cn', ['退出', '结束', '再见', '关闭']],\n ['ko', ['종료', '나가기', '안녕', '닫기']],\n ['vn', ['thoát', 'kết thúc', 'tạm biệt', 'đóng']],\n ]),\n priority: 0.8,\n });\n\n // Language switching command\n this.mappings.push({\n command: '/lang',\n naturalPhrases: new Map([\n ['en', ['change language', 'switch language', 'set language', 'language settings']],\n ['ja', ['言語変更', '言語切り替え', '言語設定', '日本語に変更']],\n ['cn', ['更改语言', '切换语言', '语言设置', '改成中文']],\n ['ko', ['언어 변경', '언어 전환', '언어 설정', '한국어로 변경']],\n ['vn', ['đổi ngôn ngữ', 'chuyển ngôn ngữ', 'cài đặt ngôn ngữ', 'đổi sang tiếng việt']],\n ]),\n priority: 0.9,\n });\n }\n}\n","import { CommandIntent } from '../app/IntelligentRouterService';\n\ninterface UserPattern {\n input: string;\n command: string;\n confidence: number;\n timestamp: Date;\n success: boolean;\n}\n\nexport class UserPatternAnalyzer {\n private patterns: UserPattern[] = [];\n private initialized: boolean = false;\n\n async initialize(): Promise<void> {\n if (this.initialized) {return;}\n\n // Load patterns from storage if available\n this.loadPatterns();\n this.initialized = true;\n }\n\n async recordPattern(_input: string, intent: CommandIntent): Promise<void> {\n const pattern: UserPattern = {\n input,\n command: intent.command,\n confidence: intent.confidence,\n timestamp: new Date(),\n success: true, // Will be updated by feedback\n };\n\n this.patterns.push(pattern);\n\n // Keep only recent patterns (last 1000)\n if (this.patterns.length > 1000) {\n this.patterns = this.patterns.slice(-1000);\n }\n\n this.savePatterns();\n }\n\n async recordFeedback(_input: string, correctCommand: string, wasCorrect: boolean): Promise<void> {\n // Find the most recent pattern matching this input\n const _pattern = this.patterns\n .slice()\n .reverse()\n .find((p) => p.input === input);\n\n if (pattern) {\n pattern.success = wasCorrect;\n if (!wasCorrect) {\n // Record the correct command as a new pattern\n this.patterns.push({\n input,\n command: correctCommand,\n confidence: 1.0,\n timestamp: new Date(),\n success: true,\n });\n }\n }\n\n this.savePatterns();\n }\n\n getPatternStats(): Record<string, number> {\n const stats: Record<string, number> = {};\n\n this.patterns.forEach((pattern) => {\n if (pattern.success) {\n stats[pattern.command] = (stats[pattern.command] ?? 0) + 1;\n }\n });\n\n return stats;\n }\n\n getMostCommonPattern(input: string): string | null {\n const _similarPatterns = this.patterns.filter((p) => {\n return p.success && this.calculateSimilarity(p.input, input) > 0.7;\n });\n\n if (similarPatterns.length === 0) {return null;}\n\n // Count occurrences of each command\n const _commandCounts = new Map<string, number>();\n similarPatterns.forEach((p) => {\n commandCounts.set(p.command, (commandCounts.get(p.command) ?? 0) + 1);\n });\n\n // Return the most common command\n let maxCount = 0;\n let mostCommon: string | null = null;\n\n commandCounts.forEach((count, command) => {\n if (count > maxCount) {\n maxCount = count;\n mostCommon = command;\n }\n });\n\n return mostCommon;\n }\n\n private calculateSimilarity(_str1: string, str2: string): number {\n const _longer = str1.length > str2.length ? str1 : str2;\n const _shorter = str1.length > str2.length ? str2 : str1;\n\n if (longer.length === 0) {return 1.0;}\n\n const _distance = this.levenshteinDistance(longer, shorter);\n return (longer.length - distance) / longer.length;\n }\n\n private levenshteinDistance(_str1: string, str2: string): number {\n const matrix: number[][] = [];\n\n for (let i = 0; i <= str2.length; i++) {\n matrix[i] = [i];\n }\n\n for (let j = 0; j <= str1.length; j++) {\n matrix[0][j] = j;\n }\n\n for (let i = 1; i <= str2.length; i++) {\n for (let j = 1; j <= str1.length; j++) {\n if (str2.charAt(i - 1) === str1.charAt(j - 1)) {\n matrix[i][j] = matrix[i - 1][j - 1];\n } else {\n matrix[i][j] = Math.min(\n matrix[i - 1][j - 1] + 1,\n matrix[i][j - 1] + 1,\n matrix[i - 1][j] + 1,\n );\n }\n }\n }\n\n return matrix[str2.length][str1.length];\n }\n\n async exportData(): Promise<unknown> {\n return {\n patterns: this.patterns,\n stats: this.getPatternStats(),\n };\n }\n\n async importData(data: unknown): Promise<void> {\n if (typeof data === 'object' && data !== null && 'patterns' in data) {\n const _imported = data as { patterns: UserPattern[] };\n this.patterns = imported.patterns;\n this.savePatterns();\n }\n }\n\n private loadPatterns(): void {\n // In production, load from persistent storage\n // For now, start with empty patterns\n this.patterns = [];\n }\n\n private savePatterns(): void {\n // In production, save to persistent storage\n // For now, keep in memory only\n }\n}\n","import { EventEmitter } from 'events';\nimport { NaturalLanguageProcessor } from '../infra/NaturalLanguageProcessor';\nimport { IntentRecognizer } from '../analysis/IntentRecognizer';\nimport { ParameterExtractor } from '../analysis/ParameterExtractor';\nimport { MultilingualDictionary } from '../analysis/MultilingualDictionary';\nimport { LanguageDetector } from '../infra/LanguageDetector';\nimport { CommandMappings } from './CommandMappings';\nimport { UserPatternAnalyzer } from '../analysis/UserPatternAnalyzer';\nimport chalk from 'chalk';\n\nexport interface CommandIntent {\n command: string;\n confidence: number;\n parameters: Record<string, unknown>;\n originalInput: string;\n language: string;\n alternatives?: Array<{ command: string; confidence: number }>;\n}\n\nexport interface RouterConfig {\n confidenceThreshold?: number;\n enableLearning?: boolean;\n supportedLanguages?: string[];\n enableConfirmation?: boolean;\n maxAlternatives?: number;\n}\n\nexport interface RouterMetrics {\n totalRequests: number;\n successfulRoutes: number;\n failedRoutes: number;\n averageConfidence: number;\n averageResponseTime: number;\n commandUsageStats: Map<string, number>;\n}\n\nexport class IntelligentRouterService extends EventEmitter {\n private nlpProcessor: NaturalLanguageProcessor;\n private intentRecognizer: IntentRecognizer;\n private parameterExtractor: ParameterExtractor;\n private dictionary: MultilingualDictionary;\n private languageDetector: LanguageDetector;\n private commandMappings: CommandMappings;\n private userPatternAnalyzer: UserPatternAnalyzer;\n\n private config: Required<RouterConfig>;\n private metrics: RouterMetrics;\n private isInitialized: boolean = false;\n\n constructor(_config: RouterConfig = {}) {\n super();\n\n this.config = {\n confidenceThreshold: _config.confidenceThreshold ?? 0.85,\n enableLearning: _config.enableLearning ?? true,\n supportedLanguages: _config.supportedLanguages ?? ['en', 'ja', 'cn', 'ko', 'vn'],\n enableConfirmation: _config.enableConfirmation ?? true,\n maxAlternatives: _config.maxAlternatives ?? 3,\n };\n\n this.metrics = {\n totalRequests: 0,\n successfulRoutes: 0,\n failedRoutes: 0,\n averageConfidence: 0,\n averageResponseTime: 0,\n commandUsageStats: new Map(),\n };\n\n this.nlpProcessor = new NaturalLanguageProcessor();\n this.intentRecognizer = new IntentRecognizer(this.config);\n this.parameterExtractor = new ParameterExtractor();\n this.dictionary = new MultilingualDictionary();\n this.languageDetector = new LanguageDetector();\n this.commandMappings = new CommandMappings();\n this.userPatternAnalyzer = new UserPatternAnalyzer();\n }\n\n async initialize(): Promise<void> {\n if (this.isInitialized) {return;}\n\n try {\n // Initialize silently\n\n // Initialize all components\n await Promise.all([\n this.dictionary.initialize(),\n this.commandMappings.initialize(),\n this.nlpProcessor.initialize(),\n this.intentRecognizer.initialize(),\n this.userPatternAnalyzer.initialize(),\n ]);\n\n this.isInitialized = true;\n this.emit('initialized');\n\n // Initialized successfully\n } catch (_error) {\n console.error(chalk.red('Failed to initialize Intelligent Router:'), _error);\n throw _error;\n }\n }\n\n async route(input: string): Promise<CommandIntent | null> {\n if (!this.isInitialized) {\n await this.initialize();\n }\n\n const _startTime = Date.now();\n this.metrics.totalRequests++;\n\n try {\n // Step 1: Detect language\n const language = await this.languageDetector.detect(input);\n\n if (!this.config.supportedLanguages.includes(language)) {\n // Debug: Language fallback - commented out to prevent input field pollution\n // console.log(chalk.yellow(`Language '${language}' not supported, falling back to English`));\n }\n\n // Step 2: Process natural language\n const processedInput = await this.nlpProcessor.process(input, language);\n\n // Step 3: Recognize intent\n const intent = await this.intentRecognizer.recognize(processedInput);\n\n if (!intent || intent.confidence < this.config.confidenceThreshold) {\n this.metrics.failedRoutes++;\n this.emit('route:failed', { input, language, confidence: intent?.confidence ?? 0 });\n return null;\n }\n\n // Step 4: Extract parameters\n const _parameters = await this.parameterExtractor.extract(input, intent.command, language);\n\n // Step 5: Build command intent\n const commandIntent: CommandIntent = {\n command: intent.command,\n confidence: intent.confidence,\n parameters,\n originalInput: input,\n language,\n alternatives: intent.alternatives,\n };\n\n // Step 6: Learn from pattern if enabled\n if (this.config.enableLearning) {\n await this.userPatternAnalyzer.recordPattern(input, commandIntent);\n }\n\n // Update metrics\n this.metrics.successfulRoutes++;\n this.updateMetrics(intent.confidence, Date.now() - startTime, intent.command);\n\n this.emit('route:success', commandIntent);\n\n return commandIntent;\n } catch (_error) {\n this.metrics.failedRoutes++;\n this.emit('route:error', { input, _error });\n console.error(chalk.red('Routing error:'), _error);\n return null;\n }\n }\n\n async suggestCommand(partialInput: string): Promise<string[]> {\n if (!this.isInitialized) {\n await this.initialize();\n }\n\n try {\n const _language = await this.languageDetector.detect(partialInput);\n const _suggestions = await this.commandMappings.getSuggestions(\n partialInput,\n language,\n this.config.maxAlternatives,\n );\n\n return suggestions;\n } catch (_error) {\n console.error('Failed to get suggestions:', _error);\n return [];\n }\n }\n\n async getCommandExplanation(_command: string, language: string = 'en'): Promise<string> {\n return this.dictionary.getExplanation(command, language);\n }\n\n async needsConfirmation(intent: CommandIntent): Promise<boolean> {\n if (!this.config.enableConfirmation) {return false;}\n\n // Need confirmation for low confidence or destructive commands\n const _destructiveCommands = ['/delete', '/reset', '/clear', '/exit'];\n const _isDestructive = destructiveCommands.includes(intent.command);\n const _isLowConfidence = intent.confidence < 0.9;\n\n return isDestructive || isLowConfidence;\n }\n\n getMetrics(): RouterMetrics {\n return { ...this.metrics };\n }\n\n resetMetrics(): void {\n this.metrics = {\n totalRequests: 0,\n successfulRoutes: 0,\n failedRoutes: 0,\n averageConfidence: 0,\n averageResponseTime: 0,\n commandUsageStats: new Map(),\n };\n }\n\n private updateMetrics(_confidence: number, responseTime: number, command: string): void {\n // Update average confidence\n const _totalConfidence = this.metrics.averageConfidence * (this.metrics.successfulRoutes - 1);\n this.metrics.averageConfidence = (totalConfidence + confidence) / this.metrics.successfulRoutes;\n\n // Update average response time\n const _totalResponseTime =\n this.metrics.averageResponseTime * (this.metrics.successfulRoutes - 1);\n this.metrics.averageResponseTime =\n (totalResponseTime + responseTime) / this.metrics.successfulRoutes;\n\n // Update command usage stats\n const _currentCount = this.metrics.commandUsageStats.get(command) ?? 0;\n this.metrics.commandUsageStats.set(command, currentCount + 1);\n }\n\n async trainOnFeedback(_input: string, correctCommand: string, wasCorrect: boolean): Promise<void> {\n if (!this.config.enableLearning) {return;}\n\n try {\n await this.userPatternAnalyzer.recordFeedback(input, correctCommand, wasCorrect);\n await this.intentRecognizer.updateModel(input, correctCommand, wasCorrect);\n\n this.emit('training:complete', { input, correctCommand, wasCorrect });\n } catch (_error) {\n console.error('Failed to train on feedback:', _error);\n }\n }\n\n getConfidenceThreshold(): number {\n return this.config.confidenceThreshold;\n }\n\n setConfidenceThreshold(threshold: number): void {\n if (threshold < 0 || threshold > 1) {\n throw new Error('Confidence threshold must be between 0 and 1');\n }\n this.config.confidenceThreshold = threshold;\n }\n\n getSupportedLanguages(): string[] {\n return [...this.config.supportedLanguages];\n }\n\n isLanguageSupported(language: string): boolean {\n return this.config.supportedLanguages.includes(language);\n }\n\n async exportLearningData(): Promise<unknown> {\n return this.userPatternAnalyzer.exportData();\n }\n\n async importLearningData(data: unknown): Promise<void> {\n await this.userPatternAnalyzer.importData(data);\n }\n\n dispose(): void {\n this.removeAllListeners();\n this.isInitialized = false;\n }\n}\n\n// Singleton instance\nlet routerInstance: IntelligentRouterService | null = null;\n\nexport function getIntelligentRouter(config?: RouterConfig): IntelligentRouterService {\n if (!routerInstance) {\n routerInstance = new IntelligentRouterService(config);\n }\n return routerInstance;\n}\n\nexport function resetIntelligentRouter(): void {\n if (routerInstance) {\n routerInstance.dispose();\n routerInstance = null;\n }\n}\n","/**\n * MARIA Memory System - System 1 Memory Implementation\n *\n * Fast, intuitive memory patterns for immediate responses\n * Handles programming concepts, code patterns, and user preferences\n */\n\nimport type {\n AntiPattern,\n CodePattern,\n CommandHistory,\n ConceptEdge,\n ConceptGraph,\n InteractionHistory,\n KnowledgeNode,\n MemoryEvent,\n NodeMetadata,\n PatternLibrary,\n SessionRecord,\n System1Config,\n System1Memory,\n UsagePattern,\n UserPreferenceSet,\n} from './types/memory-interfaces';\n\nexport class System1MemoryManager implements System1Memory {\n private knowledgeNodes: Map<string, KnowledgeNode> = new Map();\n public userPreferences: UserPreferenceSet;\n\n // Private implementation details\n private conceptGraph: ConceptGraph;\n private interactionHistory: InteractionHistory;\n private patternLibrary: PatternLibrary;\n private config: System1Config;\n private cache: Map<string, unknown> = new Map();\n private lastAccessTimes: Map<string, Date> = new Map();\n\n constructor(_config: System1Config) {\n this._config = _config;\n this.conceptGraph = {\n nodes: new Map(),\n edges: new Map(),\n clusters: [],\n };\n this.interactionHistory = {\n sessions: [],\n commands: [],\n patterns: [],\n };\n this.patternLibrary = {\n codePatterns: [],\n antiPatterns: [],\n bestPractices: [],\n templates: [],\n };\n this.userPreferences = this.initializeDefaultPreferences();\n }\n\n get programmingConcepts(): KnowledgeNode[] {\n return Array.from(this.knowledgeNodes.values())\n .filter((node) => ['function', 'class', 'module', 'concept'].includes(node.type))\n .sort((a, b) => b.confidence - a.confidence);\n }\n\n get businessLogic(): ConceptGraph {\n return this.conceptGraph;\n }\n\n get pastInteractions(): InteractionHistory {\n return this.interactionHistory;\n }\n\n get codePatterns(): PatternLibrary {\n return this.patternLibrary;\n }\n\n // Knowledge Node Management\n async addKnowledgeNode(\n type: KnowledgeNode['type'],\n name: string,\n content: string,\n embedding: number[],\n metadata: Partial<NodeMetadata> = {},\n ): Promise<KnowledgeNode> {\n const node: KnowledgeNode = {\n id: this.generateNodeId(type, name),\n type,\n name,\n content,\n embedding,\n confidence: 0.8,\n lastAccessed: new Date(),\n accessCount: 1,\n metadata: {\n complexity: 'medium',\n quality: 0.8,\n relevance: 0.8,\n ...metadata,\n },\n };\n\n this.knowledgeNodes.set(node.id, node);\n this.conceptGraph.nodes.set(node.id, node);\n\n // Trigger cache cleanup if needed\n if (this.knowledgeNodes.size > this.config.maxKnowledgeNodes) {\n await this.cleanupLeastUsedNodes();\n }\n\n return node;\n }\n\n async getKnowledgeNode(id: string): Promise<KnowledgeNode | null> {\n const _node = this.knowledgeNodes.get(id);\n if (node) {\n // Update access patterns for System 1 fast retrieval\n node.lastAccessed = new Date();\n node.accessCount++;\n this.lastAccessTimes.set(id, new Date());\n\n // Apply access decay\n this.applyAccessDecay(node);\n }\n return node || null;\n }\n\n async searchKnowledgeNodes(\n query: string,\n queryEmbedding: number[],\n limit: number = 10,\n ): Promise<KnowledgeNode[]> {\n const _cacheKey = `search:${query}:${limit}`;\n const _cached = this.cache.get(cacheKey) as KnowledgeNode[];\n if (cached) {\n return cached;\n }\n\n const _results = Array.from(this.knowledgeNodes.values())\n .map((node) => ({\n node,\n similarity: this.calculateCosineSimilarity(queryEmbedding, node.embedding),\n }))\n .filter(({ similarity }) => similarity > 0.5)\n .sort((a, b) => b.similarity - a.similarity)\n .slice(0, limit)\n .map(({ node }) => node);\n\n // Cache results for fast subsequent access\n this.cache.set(cacheKey, results);\n return results;\n }\n\n async updateKnowledgeNode(_id: string, updates: Partial<KnowledgeNode>): Promise<boolean> {\n const _node = this.knowledgeNodes.get(id);\n if (!node) {return false;}\n\n Object.assign(node, updates);\n node.lastAccessed = new Date();\n this.conceptGraph.nodes.set(id, node);\n\n // Invalidate related cache entries\n this.invalidateCache(`node:${id}`);\n\n return true;\n }\n\n // Concept Graph Management\n async addConceptEdge(\n sourceId: string,\n targetId: string,\n type: ConceptEdge['type'],\n weight: number = 1.0,\n confidence: number = 0.8,\n ): Promise<ConceptEdge> {\n const edge: ConceptEdge = {\n id: `${sourceId}-${type}-${targetId}`,\n sourceId,\n targetId,\n type,\n weight,\n confidence,\n };\n\n this.conceptGraph.edges.set(edge.id, edge);\n return edge;\n }\n\n async getRelatedConcepts(_nodeId: string, maxDepth: number = 2): Promise<KnowledgeNode[]> {\n const _cacheKey = `related:${nodeId}:${maxDepth}`;\n const _cached = this.cache.get(cacheKey) as KnowledgeNode[];\n if (cached) {\n return cached;\n }\n\n const _related = new Set<string>();\n const _visited = new Set<string>();\n const queue: { id: string; depth: number }[] = [{ id: nodeId, depth: 0 }];\n\n while (queue.length > 0) {\n const { id, depth } = queue.shift()!;\n\n if (visited.has(id) || depth >= maxDepth) {continue;}\n visited.add(id);\n\n // Find all edges from this node\n for (const edge of this.conceptGraph.edges.values()) {\n if (edge.sourceId === id && !visited.has(edge.targetId)) {\n related.add(edge.targetId);\n queue.push({ id: edge.targetId, depth: depth + 1 });\n }\n if (edge.targetId === id && !visited.has(edge.sourceId)) {\n related.add(edge.sourceId);\n queue.push({ id: edge.sourceId, depth: depth + 1 });\n }\n }\n }\n\n const _results = Array.from(related)\n .map((id) => this.knowledgeNodes.get(id))\n .filter((node): node is KnowledgeNode => node !== undefined);\n\n this.cache.set(cacheKey, results);\n return results;\n }\n\n // Pattern Management\n async addCodePattern(_pattern: Omit<CodePattern, 'id'>): Promise<CodePattern> {\n const codePattern: CodePattern = {\n id: this.generatePatternId(pattern.name),\n ...pattern,\n };\n\n this.patternLibrary.codePatterns.push(codePattern);\n return codePattern;\n }\n\n async findCodePatterns(\n language?: string,\n framework?: string,\n useCase?: string,\n limit: number = 10,\n ): Promise<CodePattern[]> {\n const _cacheKey = `patterns:${language}:${framework}:${useCase}:${limit}`;\n const _cached = this.cache.get(cacheKey) as CodePattern[];\n if (cached) {\n return cached;\n }\n\n let patterns = this.patternLibrary.codePatterns;\n\n if (language) {\n patterns = patterns.filter((p) => p.language === language);\n }\n if (framework) {\n patterns = patterns.filter((p) => p.framework === framework);\n }\n if (useCase) {\n patterns = patterns.filter((p) => p.useCase.toLowerCase().includes(useCase.toLowerCase()));\n }\n\n const _results = patterns\n .sort((a, b) => {\n // Prioritize by complexity (beginner first) and performance\n const _complexityWeight = { beginner: 3, intermediate: 2, advanced: 1 };\n return (complexityWeight[a.complexity] || 0) - (complexityWeight[b.complexity] || 0);\n })\n .slice(0, limit);\n\n this.cache.set(cacheKey, results);\n return results;\n }\n\n async addAntiPattern(_antiPattern: Omit<AntiPattern, 'id'>): Promise<AntiPattern> {\n const pattern: AntiPattern = {\n id: this.generatePatternId(antiPattern.name),\n ...antiPattern,\n };\n\n this.patternLibrary.antiPatterns.push(pattern);\n return pattern;\n }\n\n async detectAntiPatterns(code: string): Promise<AntiPattern[]> {\n const detected: AntiPattern[] = [];\n\n for (const antiPattern of this.patternLibrary.antiPatterns) {\n for (const rule of antiPattern.detectionRules) {\n try {\n const _regex = new RegExp(rule.pattern, 'gi');\n if (regex.test(code)) {\n detected.push(antiPattern);\n break; // One detection per anti-pattern\n }\n } catch (_error) {\n console.warn(`Invalid regex pattern: ${rule.pattern}`, error);\n }\n }\n }\n\n return detected.sort((a, b) => {\n const _severityWeight = { critical: 4, high: 3, medium: 2, low: 1 };\n return (severityWeight[b.severity] || 0) - (severityWeight[a.severity] || 0);\n });\n }\n\n // Interaction History Management\n async recordSession(session: SessionRecord): Promise<void> {\n this.interactionHistory.sessions.push(session);\n\n // Update command frequencies\n for (const command of session.commands) {\n await this.updateCommandHistory(command);\n }\n\n // Detect new usage patterns\n await this.detectUsagePatterns();\n\n // Limit history size\n if (this.interactionHistory.sessions.length > 1000) {\n this.interactionHistory.sessions = this.interactionHistory.sessions.slice(-500);\n }\n }\n\n async updateCommandHistory(command: string): Promise<void> {\n let commandHist = this.interactionHistory.commands.find((c) => c.command === command);\n\n if (!commandHist) {\n commandHist = {\n command,\n frequency: 0,\n lastUsed: new Date(),\n successRate: 1.0,\n averageExecutionTime: 0,\n userSatisfaction: 0.8,\n };\n this.interactionHistory.commands.push(commandHist);\n }\n\n commandHist.frequency++;\n commandHist.lastUsed = new Date();\n }\n\n async getFrequentCommands(limit: number = 10): Promise<CommandHistory[]> {\n return this.interactionHistory.commands\n .sort((a, b) => b.frequency - a.frequency)\n .slice(0, limit);\n }\n\n async getRecentCommands(limit: number = 10): Promise<CommandHistory[]> {\n return this.interactionHistory.commands\n .sort((a, b) => b.lastUsed.getTime() - a.lastUsed.getTime())\n .slice(0, limit);\n }\n\n // User Preferences Management\n async updateUserPreferences(updates: Partial<UserPreferenceSet>): Promise<void> {\n Object.assign(this.userPreferences, updates);\n this.invalidateCache('preferences');\n }\n\n async getUserPreference<K extends keyof UserPreferenceSet>(\n key: K,\n ): Promise<UserPreferenceSet[K]> {\n return this.userPreferences[key];\n }\n\n // Memory Event Processing\n async processMemoryEvent(event: MemoryEvent): Promise<void> {\n switch (event.type) {\n case 'code_generation':\n await this.processCodeGenerationEvent(event);\n break;\n case 'pattern_recognition':\n await this.processPatternRecognitionEvent(event);\n break;\n case 'learning_update':\n await this.processLearningUpdateEvent(event);\n break;\n default:\n // Store for potential System 2 processing\n break;\n }\n\n // Update access patterns\n this.lastAccessTimes.set(event.id, new Date());\n }\n\n // Performance Optimization\n async cleanupLeastUsedNodes(): Promise<void> {\n const _nodeEntries = Array.from(this.knowledgeNodes.entries());\n const _sortedByUsage = nodeEntries.sort((a, b) => {\n const _aScore = this.calculateUsageScore(a[1]);\n const _bScore = this.calculateUsageScore(b[1]);\n return aScore - bScore;\n });\n\n // Remove least used 10%\n const _removeCount = Math.floor(this.config.maxKnowledgeNodes * 0.1);\n for (let i = 0; i < removeCount && i < sortedByUsage.length; i++) {\n const _entry = sortedByUsage[i];\n if (entry) {\n const [nodeId] = entry;\n this.knowledgeNodes.delete(nodeId);\n this.conceptGraph.nodes.delete(nodeId);\n this.invalidateCache(`node:${nodeId}`);\n }\n }\n }\n\n async compressMemory(): Promise<void> {\n // Compress old interaction history\n const _cutoffDate = new Date(Date.now() - 30 * 24 * 60 * 60 * 1000); // 30 days\n this.interactionHistory.sessions = this.interactionHistory.sessions.filter(\n (session) => session.startTime > cutoffDate,\n );\n\n // Merge similar patterns\n await this.mergeimilarPatterns();\n\n // Clear old cache entries\n this.cache.clear();\n }\n\n // Private Helper Methods\n private generateNodeId(_type: string, name: string): string {\n return `${type}:${name}:${Date.now()}`;\n }\n\n private generatePatternId(name: string): string {\n return `pattern:${name}:${Date.now()}`;\n }\n\n private calculateCosineSimilarity(_a: number[], b: number[]): number {\n if (a.length !== b.length) {return 0;}\n\n let dotProduct = 0;\n let normA = 0;\n let normB = 0;\n\n for (let i = 0; i < a.length && i < b.length; i++) {\n const _aVal = a[i] ?? 0;\n const _bVal = b[i] ?? 0;\n dotProduct += aVal * bVal;\n normA += aVal * aVal;\n normB += bVal * bVal;\n }\n\n return dotProduct / (Math.sqrt(normA) * Math.sqrt(normB));\n }\n\n private applyAccessDecay(node: KnowledgeNode): void {\n const _daysSinceAccess = (Date.now() - node.lastAccessed.getTime()) / (1000 * 60 * 60 * 24);\n const _decayFactor = Math.exp(-this.config.accessDecayRate * daysSinceAccess);\n node.confidence *= decayFactor;\n\n // Minimum confidence threshold\n node.confidence = Math.max(node.confidence, 0.1);\n }\n\n private calculateUsageScore(node: KnowledgeNode): number {\n const _recency = (Date.now() - node.lastAccessed.getTime()) / (1000 * 60 * 60 * 24);\n const _frequency = Math.log(node.accessCount + 1);\n const _confidence = node.confidence;\n const _quality = node.metadata.quality;\n\n return (frequency + confidence + quality) / (1 + recency * 0.1);\n }\n\n private invalidateCache(pattern: string): void {\n for (const key of this.cache.keys()) {\n if (key.includes(pattern)) {\n this.cache.delete(key);\n }\n }\n }\n\n private async detectUsagePatterns(): Promise<void> {\n // Analyze recent sessions for patterns\n const _recentSessions = this.interactionHistory.sessions.slice(-20); // Last 20 sessions\n\n // Detect temporal patterns\n const _hourlyUsage = new Map<number, number>();\n for (const session of recentSessions) {\n const _hour = session.startTime.getHours();\n hourlyUsage.set(hour, (hourlyUsage.get(hour) || 0) + 1);\n }\n\n // Detect command sequences\n const _sequences = new Map<string, number>();\n for (const session of recentSessions) {\n for (let i = 0; i < session.commands.length - 1; i++) {\n const _sequence = `${session.commands[i]} -> ${session.commands[i + 1]}`;\n sequences.set(sequence, (sequences.get(sequence) || 0) + 1);\n }\n }\n\n // Store significant patterns\n for (const [sequence, frequency] of sequences.entries()) {\n if (frequency >= 3) {\n // Threshold for pattern significance\n const pattern: UsagePattern = {\n id: `seq:${sequence}:${Date.now()}`,\n type: 'sequential',\n pattern: sequence,\n frequency,\n confidence: Math.min(frequency / 10, 1.0),\n conditions: [],\n };\n\n this.interactionHistory.patterns.push(pattern);\n }\n }\n }\n\n private async processCodeGenerationEvent(event: MemoryEvent): Promise<void> {\n // Extract code patterns from generation events\n const _data = event.data as { code?: string; language?: string; context?: string };\n\n if (data.code && data.language) {\n // Simple pattern extraction (in production, use AST analysis)\n const _patterns = this.extractCodePatterns(data.code, data.language);\n\n for (const pattern of patterns) {\n await this.addCodePattern(pattern);\n }\n }\n }\n\n private async processPatternRecognitionEvent(event: MemoryEvent): Promise<void> {\n // Update pattern confidence based on recognition success\n const _data = event.data as { patternId?: string; success?: boolean };\n\n if (data.patternId) {\n const _pattern = this.patternLibrary.codePatterns.find((p) => p.id === data.patternId);\n if (pattern && data.success !== undefined) {\n // Adjust pattern effectiveness based on usage success\n const _adjustment = data.success ? 0.1 : -0.05;\n // Update pattern performance metrics\n console.log(`Pattern ${data.patternId} adjustment: ${adjustment}`);\n }\n }\n }\n\n private async processLearningUpdateEvent(event: MemoryEvent): Promise<void> {\n // Update user preferences based on learning events\n const _data = event.data as {\n preference?: string;\n value?: unknown;\n confidence?: number;\n };\n\n if (data.preference && data.value !== undefined) {\n // Update user preferences with new learning\n await this.adaptUserPreferences(data.preference, data.value, data.confidence || 0.8);\n }\n }\n\n private extractCodePatterns(_code: string, language: string): Omit<CodePattern, 'id'>[] {\n // Simplified pattern extraction\n const patterns: Omit<CodePattern, 'id'>[] = [];\n\n // Function pattern detection\n const _functionRegex = /function\\s+(\\w+)\\s*\\([^)]*\\)\\s*{[^}]+}/g;\n let match;\n\n while ((match = functionRegex.exec(code)) !== null) {\n patterns.push({\n name: `Function: ${match[1]}`,\n description: `Function pattern extracted from code`,\n code: match[0],\n language,\n useCase: 'Function definition',\n complexity: 'intermediate',\n performance: {\n timeComplexity: 'O(1)',\n spaceComplexity: 'O(1)',\n },\n examples: [],\n });\n }\n\n return patterns;\n }\n\n private async adaptUserPreferences(\n preference: string,\n value: unknown,\n confidence: number,\n ): Promise<void> {\n // Adapt user preferences based on observed behavior\n // This would integrate with the learning engine\n console.log(`Adapting preference ${preference} to ${value} (confidence: ${confidence})`);\n }\n\n private async mergeimilarPatterns(): Promise<void> {\n // Merge patterns with high similarity to reduce redundancy\n const _patterns = this.patternLibrary.codePatterns;\n const merged: CodePattern[] = [];\n const _processed = new Set<string>();\n\n for (let i = 0; i < patterns.length; i++) {\n const _currentPattern = patterns[i];\n if (!currentPattern || processed.has(currentPattern.id)) {continue;}\n\n const _similar = patterns\n .slice(i + 1)\n .filter(\n (p) =>\n p &&\n !processed.has(p.id) &&\n p.language === currentPattern.language &&\n this.calculatePatternSimilarity(currentPattern, p) > 0.8,\n );\n\n if (similar.length > 0) {\n // Merge similar patterns\n const _mergedPattern = this.mergePatterns(currentPattern, similar);\n merged.push(mergedPattern);\n\n processed.add(currentPattern.id);\n similar.forEach((p) => processed.add(p.id));\n } else {\n merged.push(currentPattern);\n processed.add(currentPattern.id);\n }\n }\n\n this.patternLibrary.codePatterns = merged;\n }\n\n private calculatePatternSimilarity(_a: CodePattern, b: CodePattern): number {\n // Simple similarity calculation based on name and use case\n const _namesSimilar =\n a.name.toLowerCase().includes(b.name.toLowerCase()) ||\n b.name.toLowerCase().includes(a.name.toLowerCase());\n const _useCasesSimilar = a.useCase.toLowerCase() === b.useCase.toLowerCase();\n\n return (namesSimilar ? 0.5 : 0) + (useCasesSimilar ? 0.5 : 0);\n }\n\n private mergePatterns(_primary: CodePattern, similar: CodePattern[]): CodePattern {\n // Merge multiple similar patterns into one\n return {\n ...primary,\n description: `${primary.description} (merged from ${similar.length + 1} patterns)`,\n examples: [...primary.examples, ...similar.flatMap((p) => p.examples)],\n };\n }\n\n private initializeDefaultPreferences(): UserPreferenceSet {\n return {\n developmentStyle: {\n approach: 'iterative',\n preferredLanguages: [\n { language: 'typescript', proficiency: 'intermediate', frequency: 0.8, preference: 4 },\n { language: 'javascript', proficiency: 'intermediate', frequency: 0.6, preference: 3 },\n ],\n architecturalPatterns: [\n { name: 'MVC', familiarity: 0.7, preference: 3, usageFrequency: 0.5 },\n ],\n problemSolvingStyle: 'systematic',\n workPace: 'moderate',\n },\n communicationPreferences: {\n verbosity: 'moderate',\n explanationDepth: 'intermediate',\n codeCommentStyle: 'inline',\n feedbackStyle: 'constructive',\n },\n toolPreferences: {\n ide: ['vscode', 'webstorm'],\n frameworks: [\n { name: 'react', category: 'frontend', proficiency: 0.7, preference: 4 },\n { name: 'express', category: 'backend', proficiency: 0.6, preference: 3 },\n ],\n libraries: [{ name: 'lodash', category: 'utility', proficiency: 0.8, preference: 4 }],\n buildTools: ['webpack', 'vite'],\n testingTools: ['jest', 'vitest'],\n },\n learningStyle: {\n preferredMethods: [\n { type: 'hands_on', effectiveness: 0.9, preference: 5 },\n { type: 'visual', effectiveness: 0.7, preference: 4 },\n ],\n pace: 'moderate',\n complexity: 'simple_to_complex',\n feedback: 'immediate',\n },\n qualityStandards: {\n codeQuality: [\n { metric: 'maintainability', threshold: 80, priority: 'high' },\n { metric: 'readability', threshold: 75, priority: 'high' },\n ],\n testCoverage: 80,\n documentation: {\n required: true,\n style: 'standard',\n formats: ['markdown', 'jsdoc'],\n },\n performance: {\n responseTime: 200,\n throughput: 1000,\n memoryUsage: 512,\n cpuUsage: 70,\n },\n security: {\n requirements: [\n {\n type: 'authentication',\n description: 'Secure auth required',\n severity: 'high',\n mandatory: true,\n },\n ],\n compliance: [{ name: 'OWASP', version: '2021', requirements: ['Top 10 coverage'] }],\n scanningEnabled: true,\n },\n },\n };\n }\n}\n","/**\n * MARIA Memory System - System 2 Memory Implementation\n *\n * Deliberate reasoning and quality traces for complex decision making\n * Handles reasoning steps, quality evaluation, and improvement suggestions\n */\n\nimport type {\n ActionItem,\n AlternativeReasoning,\n CodeQualityMetrics,\n DecisionNode,\n DecisionTree,\n Enhancement,\n Evidence,\n MemoryEvent,\n QualityMetrics,\n ReasoningContext,\n ReasoningStep,\n ReasoningTrace,\n ReflectionEntry,\n System2Config,\n System2Memory,\n} from './types/memory-interfaces';\n\nexport class System2MemoryManager implements System2Memory {\n private reasoningTraces: Map<string, ReasoningTrace> = new Map();\n private qualityMetrics: QualityMetrics;\n private decisionTrees: Map<string, DecisionTree> = new Map();\n private enhancements: Map<string, Enhancement> = new Map();\n private reflectionEntries: Map<string, ReflectionEntry> = new Map();\n private config: System2Config;\n private analysisCache: Map<string, unknown> = new Map();\n\n constructor(_config: System2Config) {\n this._config = _config;\n this.qualityMetrics = this.initializeQualityMetrics();\n }\n\n get reasoningSteps(): ReasoningTrace[] {\n return Array.from(this.reasoningTraces.values()).sort(\n (a, b) => b.timestamp.getTime() - a.timestamp.getTime(),\n );\n }\n\n get qualityEvaluation(): QualityMetrics {\n return this.qualityMetrics;\n }\n\n get decisionContext(): DecisionTree {\n // Return the most recent or most relevant decision tree\n const _trees = Array.from(this.decisionTrees.values());\n return (\n trees.sort(\n (a, b) => b.metadata.lastUpdated.getTime() - a.metadata.lastUpdated.getTime(),\n )[0] || this.createEmptyDecisionTree()\n );\n }\n\n get improvementSuggestions(): Enhancement[] {\n return Array.from(this.enhancements.values())\n .filter(\n (enhancement) => enhancement.status === 'proposed' || enhancement.status === 'approved',\n )\n .sort((a, b) => b.priority - a.priority);\n }\n\n get reflectionData(): ReflectionEntry[] {\n return Array.from(this.reflectionEntries.values()).sort(\n (a, b) => b.timestamp.getTime() - a.timestamp.getTime(),\n );\n }\n\n // Reasoning Trace Management\n async startReasoningTrace(_context: ReasoningContext,\n initialStep?: string,\n ): Promise<ReasoningTrace> {\n const trace: ReasoningTrace = {\n id: this.generateTraceId(),\n timestamp: new Date(),\n context,\n steps: [],\n conclusion: '',\n confidence: 0.0,\n alternatives: [],\n metadata: {\n complexity: this.assessComplexity(context),\n domain: this.identifyDomain(context),\n techniques: [],\n qualityScore: 0.0,\n reviewRequired: false,\n },\n };\n\n if (initialStep) {\n await this.addReasoningStep(trace.id, {\n type: 'analysis',\n description: 'Initial problem analysis',\n input: context.problem,\n output: initialStep,\n });\n }\n\n this.reasoningTraces.set(trace.id, trace);\n await this.manageTraceLimit();\n\n return trace;\n }\n\n async addReasoningStep(\n traceId: string,\n stepData: Omit<ReasoningStep, 'id' | 'confidence' | 'duration' | 'dependencies'>,\n ): Promise<ReasoningStep> {\n const _trace = this.reasoningTraces.get(traceId);\n if (!trace) {\n throw new Error(`Reasoning trace ${traceId} not found`);\n }\n\n const _startTime = Date.now();\n\n const step: ReasoningStep = {\n id: this.generateStepId(traceId),\n confidence: this.calculateStepConfidence(stepData, trace),\n duration: 0, // Will be updated when step completes\n dependencies: this.identifyDependencies(stepData, trace.steps),\n ...stepData,\n };\n\n trace.steps.push(step);\n trace.metadata.techniques.push(stepData.type);\n\n // Update step duration\n step.duration = Date.now() - startTime;\n\n // Update trace quality and complexity\n await this.updateTraceQuality(trace);\n\n return step;\n }\n\n async completeReasoningTrace(\n traceId: string,\n conclusion: string,\n confidence: number,\n ): Promise<ReasoningTrace> {\n const _trace = this.reasoningTraces.get(traceId);\n if (!trace) {\n throw new Error(`Reasoning trace ${traceId} not found`);\n }\n\n trace.conclusion = conclusion;\n trace.confidence = confidence;\n trace.metadata.qualityScore = await this.calculateReasoningQuality(trace);\n trace.metadata.reviewRequired = trace.metadata.qualityScore < this.config.qualityThreshold;\n\n // Generate improvement suggestions based on the trace\n await this.generateImprovementSuggestions(trace);\n\n // Update global quality metrics\n await this.updateGlobalQualityMetrics(trace);\n\n return trace;\n }\n\n async addAlternativeReasoning(\n traceId: string,\n alternative: Omit<AlternativeReasoning, 'id'>,\n ): Promise<AlternativeReasoning> {\n const _trace = this.reasoningTraces.get(traceId);\n if (!trace) {\n throw new Error(`Reasoning trace ${traceId} not found`);\n }\n\n const altReasoning: AlternativeReasoning = {\n id: this.generateAlternativeId(traceId),\n ...alternative,\n };\n\n trace.alternatives.push(altReasoning);\n return altReasoning;\n }\n\n async getReasoningTrace(traceId: string): Promise<ReasoningTrace | null> {\n return this.reasoningTraces.get(traceId) || null;\n }\n\n async searchReasoningTraces(\n query: {\n domain?: string;\n complexity?: string;\n minQuality?: number;\n timeframe?: { start: Date; end: Date };\n },\n limit: number = 10,\n ): Promise<ReasoningTrace[]> {\n const _cacheKey = `search:reasoning:${JSON.stringify(query)}:${limit}`;\n const _cached = this.analysisCache.get(cacheKey) as ReasoningTrace[];\n if (cached) {\n return cached;\n }\n\n let traces = Array.from(this.reasoningTraces.values());\n\n if (query.domain) {\n traces = traces.filter((trace) => trace.metadata.domain === query.domain);\n }\n\n if (query.complexity) {\n traces = traces.filter((trace) => trace.metadata.complexity === query.complexity);\n }\n\n if (query.minQuality !== undefined) {\n traces = traces.filter((trace) => trace.metadata.qualityScore >= (query.minQuality ?? 0));\n }\n\n if (query.timeframe) {\n traces = traces.filter(\n (trace) =>\n trace.timestamp >= query.timeframe!.start && trace.timestamp <= query.timeframe!.end,\n );\n }\n\n const _results = traces\n .sort((a, b) => b.metadata.qualityScore - a.metadata.qualityScore)\n .slice(0, limit);\n\n this.analysisCache.set(cacheKey, results);\n return results;\n }\n\n // Decision Tree Management\n async createDecisionTree(_domain: string, initialCondition: string): Promise<DecisionTree> {\n const tree: DecisionTree = {\n id: this.generateDecisionTreeId(domain),\n rootNode: {\n id: 'root',\n type: 'condition',\n description: initialCondition,\n children: [],\n confidence: 0.8,\n evidence: [],\n alternatives: [],\n },\n metadata: {\n domain,\n complexity: 1,\n accuracy: 0.8,\n lastUpdated: new Date(),\n usageCount: 0,\n },\n };\n\n this.decisionTrees.set(tree.id, tree);\n return tree;\n }\n\n async addDecisionNode(\n treeId: string,\n parentNodeId: string,\n node: Omit<DecisionNode, 'id'>,\n ): Promise<DecisionNode> {\n const _tree = this.decisionTrees.get(treeId);\n if (!tree) {\n throw new Error(`Decision tree ${treeId} not found`);\n }\n\n const newNode: DecisionNode = {\n id: this.generateNodeId(treeId),\n ...node,\n };\n\n const _parentNode = this.findDecisionNode(tree.rootNode, parentNodeId);\n if (parentNode) {\n parentNode.children.push(newNode);\n tree.metadata.complexity = this.calculateTreeComplexity(tree.rootNode);\n tree.metadata.lastUpdated = new Date();\n }\n\n return newNode;\n }\n\n async addEvidence(_treeId: string, nodeId: string, evidence: Evidence): Promise<void> {\n const _tree = this.decisionTrees.get(treeId);\n if (!tree) {\n throw new Error(`Decision tree ${treeId} not found`);\n }\n\n const _node = this.findDecisionNode(tree.rootNode, nodeId);\n if (node) {\n node.evidence.push(evidence);\n\n // Recalculate node confidence based on evidence\n node.confidence = this.calculateNodeConfidence(node.evidence);\n tree.metadata.lastUpdated = new Date();\n }\n }\n\n async queryDecisionTree(\n treeId: string,\n context: Record<string, unknown>,\n ): Promise<DecisionNode[]> {\n const _tree = this.decisionTrees.get(treeId);\n if (!tree) {\n return [];\n }\n\n tree.metadata.usageCount++;\n return this.traverseDecisionTree(tree.rootNode, context);\n }\n\n // Enhancement Management\n async proposeEnhancement(_enhancement: Omit<Enhancement, 'id' | 'status'>): Promise<Enhancement> {\n const newEnhancement: Enhancement = {\n id: this.generateEnhancementId(),\n status: 'proposed',\n ...enhancement,\n };\n\n this.enhancements.set(newEnhancement.id, newEnhancement);\n\n // Automatically approve low-risk, high-impact enhancements\n if (this.shouldAutoApprove(newEnhancement)) {\n newEnhancement.status = 'approved';\n }\n\n return newEnhancement;\n }\n\n async updateEnhancementStatus(\n enhancementId: string,\n status: Enhancement['status'],\n feedback?: string,\n ): Promise<boolean> {\n const _enhancement = this.enhancements.get(enhancementId);\n if (!enhancement) {\n return false;\n }\n\n // Use feedback if provided\n if (feedback) {\n console.log(`Enhancement feedback: ${feedback}`);\n }\n\n enhancement.status = status;\n\n if (status === 'completed') {\n await this.evaluateEnhancementImpact(enhancement);\n }\n\n return true;\n }\n\n async getEnhancementsByType(type: Enhancement['type']): Promise<Enhancement[]> {\n return Array.from(this.enhancements.values())\n .filter((enhancement) => enhancement.type === type)\n .sort((a, b) => b.priority - a.priority);\n }\n\n // Reflection Management\n async addReflectionEntry(\n trigger: string,\n observation: string,\n analysis: string,\n insight: string,\n confidence: number = 0.8,\n ): Promise<ReflectionEntry> {\n const reflection: ReflectionEntry = {\n id: this.generateReflectionId(),\n timestamp: new Date(),\n trigger,\n observation,\n analysis,\n insight,\n actionItems: [],\n confidence,\n };\n\n this.reflectionEntries.set(reflection.id, reflection);\n\n // Generate action items from insights\n await this.generateActionItems(reflection);\n\n return reflection;\n }\n\n async addActionItem(\n reflectionId: string,\n actionItem: Omit<ActionItem, 'id' | 'status'>,\n ): Promise<ActionItem> {\n const _reflection = this.reflectionEntries.get(reflectionId);\n if (!reflection) {\n throw new Error(`Reflection entry ${reflectionId} not found`);\n }\n\n const action: ActionItem = {\n id: this.generateActionItemId(reflectionId),\n status: 'open',\n ...actionItem,\n };\n\n reflection.actionItems.push(action);\n return action;\n }\n\n async getReflectionInsights(\n timeframe?: { start: Date; end: Date },\n minConfidence: number = 0.7,\n ): Promise<ReflectionEntry[]> {\n let reflections = Array.from(this.reflectionEntries.values());\n\n if (timeframe) {\n reflections = reflections.filter(\n (r) => r.timestamp >= timeframe.start && r.timestamp <= timeframe.end,\n );\n }\n\n return reflections\n .filter((r) => r.confidence >= minConfidence)\n .sort((a, b) => b.confidence - a.confidence);\n }\n\n // Memory Event Processing\n async processMemoryEvent(event: MemoryEvent): Promise<void> {\n switch (event.type) {\n case 'code_generation':\n await this.processCodeGenerationEvent(event);\n break;\n case 'bug_fix':\n await this.processBugFixEvent(event);\n break;\n case 'quality_improvement':\n await this.processQualityImprovementEvent(event);\n break;\n default:\n await this.processGenericEvent(event);\n break;\n }\n }\n\n // Quality Assessment\n async assessCodeQuality(\n code: string,\n language: string,\n context?: Record<string, unknown>,\n ): Promise<CodeQualityMetrics> {\n // Use context if provided\n if (context) {\n console.log('Code quality context:', Object.keys(context));\n }\n const _cacheKey = `quality:${this.hashCode(code)}:${ language }`;\n const _cached = this.analysisCache.get(cacheKey) as CodeQualityMetrics;\n if (cached) {\n return cached;\n }\n\n const metrics: CodeQualityMetrics = {\n maintainability: await this.calculateMaintainability(code, _language),\n readability: await this.calculateReadability(code, _language),\n testability: await this.calculateTestability(code, _language),\n performance: await this.calculatePerformance(code, _language),\n security: await this.calculateSecurity(code, _language),\n bugDensity: await this.calculateBugDensity(code, _language),\n complexity: await this.calculateCyclomaticComplexity(code, _language),\n };\n\n this.analysisCache.set(cacheKey, metrics);\n return metrics;\n }\n\n async updateQualityMetrics(metrics: Partial<QualityMetrics>): Promise<void> {\n Object.assign(this.qualityMetrics, metrics);\n }\n\n // Private Helper Methods\n private generateTraceId(): string {\n return `trace:${Date.now()}:${Math.random().toString(36).substr(2, 9)}`;\n }\n\n private generateStepId(traceId: string): string {\n return `${traceId}:step:${Date.now()}`;\n }\n\n private generateAlternativeId(traceId: string): string {\n return `${traceId}:alt:${Date.now()}`;\n }\n\n private generateDecisionTreeId(domain: string): string {\n return `tree:${domain}:${Date.now()}`;\n }\n\n private generateNodeId(treeId: string): string {\n return `${treeId}:node:${Date.now()}`;\n }\n\n private generateEnhancementId(): string {\n return `enhancement:${Date.now()}:${Math.random().toString(36).substr(2, 9)}`;\n }\n\n private generateReflectionId(): string {\n return `reflection:${Date.now()}:${Math.random().toString(36).substr(2, 9)}`;\n }\n\n private generateActionItemId(reflectionId: string): string {\n return `${reflectionId}:action:${Date.now()}`;\n }\n\n private assessComplexity(_context: ReasoningContext,\n ): 'simple' | 'moderate' | 'complex' | 'very_complex' {\n const _factors = [\n context.goals.length > 3,\n context.constraints.length > 2,\n context.assumptions.length > 3,\n context.problem.length > 500,\n ];\n\n const _complexityScore = factors.filter(Boolean).length;\n\n if (complexityScore === 0) {return 'simple';}\n if (complexityScore === 1) {return 'moderate';}\n if (complexityScore === 2) {return 'complex';}\n return 'very_complex';\n }\n\n private identifyDomain(context: ReasoningContext): string {\n const _problem = context.problem.toLowerCase();\n\n if (problem.includes('performance') || problem.includes('optimization')) {\n return 'performance';\n }\n if (problem.includes('security') || problem.includes('vulnerability')) {\n return 'security';\n }\n if (problem.includes('architecture') || problem.includes('design')) {\n return 'architecture';\n }\n if (problem.includes('bug') || problem.includes('error')) {\n return 'debugging';\n }\n\n return 'general';\n }\n\n private calculateStepConfidence(\n stepData: Omit<ReasoningStep, 'id' | 'confidence' | 'duration' | 'dependencies'>,\n trace: ReasoningTrace,\n ): number {\n let confidence = 0.8; // Base confidence\n\n // Adjust based on step type\n switch (stepData.type) {\n case 'analysis':\n confidence = 0.7;\n break;\n case 'inference':\n confidence = 0.6;\n break;\n case 'evaluation':\n confidence = 0.8;\n break;\n case 'synthesis':\n confidence = 0.5;\n break;\n }\n\n // Adjust based on input/output quality\n if (stepData.input.length > 100) {confidence += 0.1;}\n if (stepData.output.length > 100) {confidence += 0.1;}\n\n // Adjust based on trace complexity\n if (trace.metadata.complexity === 'simple') {confidence += 0.1;}\n if (trace.metadata.complexity === 'very_complex') {confidence -= 0.1;}\n\n return Math.max(0.1, Math.min(1.0, confidence));\n }\n\n private identifyDependencies(\n stepData: Omit<ReasoningStep, 'id' | 'confidence' | 'duration' | 'dependencies'>,\n existingSteps: ReasoningStep[],\n ): string[] {\n const dependencies: string[] = [];\n\n // Simple keyword-based dependency detection\n for (const step of existingSteps) {\n if (stepData.input.includes(step.output.slice(0, 50))) {\n dependencies.push(step.id);\n }\n }\n\n return dependencies;\n }\n\n private async updateTraceQuality(trace: ReasoningTrace): Promise<void> {\n // Calculate quality based on step coherence and completeness\n const _stepCount = trace.steps.length;\n const _avgConfidence = trace.steps.reduce((sum, step) => sum + step.confidence, 0) / stepCount;\n const _hasAnalysis = trace.steps.some((step) => step.type === 'analysis');\n const _hasEvaluation = trace.steps.some((step) => step.type === 'evaluation');\n\n let quality = avgConfidence * 0.6;\n if (hasAnalysis) {quality += 0.2;}\n if (hasEvaluation) {quality += 0.2;}\n\n trace.metadata.qualityScore = Math.max(0, Math.min(1, quality));\n }\n\n private async calculateReasoningQuality(trace: ReasoningTrace): Promise<number> {\n const _factors = {\n coherence: this.calculateCoherence(trace),\n completeness: this.calculateCompleteness(trace),\n accuracy: this.calculateAccuracy(trace),\n efficiency: this.calculateEfficiency(trace),\n creativity: this.calculateCreativity(trace),\n };\n\n return (\n Object.values(factors).reduce((sum, value) => sum + value, 0) / Object.keys(factors).length\n );\n }\n\n private calculateCoherence(trace: ReasoningTrace): number {\n // Measure logical flow between steps\n let coherenceSum = 0;\n let pairCount = 0;\n\n for (let i = 1; i < trace.steps.length; i++) {\n const _prev = trace.steps[i - 1];\n const _curr = trace.steps[i];\n\n // Simple coherence check: current step input relates to previous step output\n const _coherence = curr?.input.includes(prev?.output.slice(0, 30) || '') ? 1 : 0.5;\n coherenceSum += coherence;\n pairCount++;\n }\n\n return pairCount > 0 ? coherenceSum / pairCount : 0.8;\n }\n\n private calculateCompleteness(trace: ReasoningTrace): number {\n const _requiredStepTypes = ['analysis', 'evaluation'];\n const _presentTypes = new Set(trace.steps.map((step) => step.type as string));\n\n const _completeness =\n requiredStepTypes.filter((type) => presentTypes.has(type)).length / requiredStepTypes.length;\n return completeness;\n }\n\n private calculateAccuracy(trace: ReasoningTrace): number {\n // Base on step confidence and alternative consideration\n const _avgConfidence =\n trace.steps.reduce((sum, step) => sum + step.confidence, 0) / trace.steps.length;\n const _alternativeBonus = trace.alternatives.length > 0 ? 0.1 : 0;\n\n return Math.min(1, avgConfidence + alternativeBonus);\n }\n\n private calculateEfficiency(trace: ReasoningTrace): number {\n // Measure steps per unit of complexity\n const _complexity = { simple: 1, moderate: 2, complex: 3, verycomplex: 4 }[\n trace.metadata.complexity\n ];\n const _stepEfficiency = Math.max(0.2, 1 - (trace.steps.length - complexity) * 0.1);\n\n return stepEfficiency;\n }\n\n private calculateCreativity(trace: ReasoningTrace): number {\n // Measure use of diverse reasoning techniques and alternatives\n const _uniqueTechniques = new Set(trace.metadata.techniques).size;\n const _alternativeCount = trace.alternatives.length;\n\n const _creativity = Math.min(1, uniqueTechniques * 0.3 + alternativeCount * 0.2 + 0.5);\n return creativity;\n }\n\n private async generateImprovementSuggestions(trace: ReasoningTrace): Promise<void> {\n if (trace.metadata.qualityScore < 0.7) {\n await this.proposeEnhancement({\n type: 'quality',\n description: `Improve reasoning quality for ${trace.metadata.domain} problems`,\n impact: {\n benefitScore: 7,\n effortScore: 5,\n riskScore: 2,\n affectedUsers: 1,\n affectedComponents: ['reasoning', 'decision-making'],\n },\n implementation: {\n phases: [\n {\n id: 'analysis',\n name: 'Quality Analysis',\n description: 'Analyze low-quality reasoning patterns',\n duration: 3,\n deliverables: ['Pattern analysis', 'Improvement plan'],\n dependencies: [],\n },\n ],\n timeline: 7,\n resources: [\n {\n type: 'developer',\n quantity: 1,\n duration: 7,\n },\n ],\n dependencies: [],\n risks: [\n {\n id: 'complexity',\n description: 'Reasoning improvement may add complexity',\n probability: 0.3,\n impact: 4,\n mitigation: 'Gradual implementation with testing',\n contingency: 'Rollback to previous version',\n },\n ],\n },\n priority: 6,\n });\n }\n }\n\n private async updateGlobalQualityMetrics(trace: ReasoningTrace): Promise<void> {\n // Update reasoning quality metrics\n const _currentReasoning = this.qualityMetrics.reasoningQuality;\n\n this.qualityMetrics.reasoningQuality = {\n coherence: (currentReasoning.coherence + this.calculateCoherence(trace)) / 2,\n completeness: (currentReasoning.completeness + this.calculateCompleteness(trace)) / 2,\n accuracy: (currentReasoning.accuracy + this.calculateAccuracy(trace)) / 2,\n efficiency: (currentReasoning.efficiency + this.calculateEfficiency(trace)) / 2,\n creativity: (currentReasoning.creativity + this.calculateCreativity(trace)) / 2,\n };\n }\n\n private createEmptyDecisionTree(): DecisionTree {\n return {\n id: 'empty',\n rootNode: {\n id: 'root',\n type: 'condition',\n description: 'No decision context available',\n children: [],\n confidence: 0,\n evidence: [],\n alternatives: [],\n },\n metadata: {\n domain: 'unknown',\n complexity: 0,\n accuracy: 0,\n lastUpdated: new Date(),\n usageCount: 0,\n },\n };\n }\n\n private findDecisionNode(_root: DecisionNode, nodeId: string): DecisionNode | null {\n if (root.id === nodeId) {return root;}\n\n for (const child of root.children) {\n const _found = this.findDecisionNode(child, nodeId);\n if (found) {return found;}\n }\n\n return null;\n }\n\n private calculateTreeComplexity(root: DecisionNode): number {\n let maxDepth = 0;\n let nodeCount = 0;\n\n const _traverse = (_node: DecisionNode, depth: number) => {\n nodeCount++;\n maxDepth = Math.max(maxDepth, depth);\n\n for (const child of node.children) {\n traverse(child, depth + 1);\n }\n };\n\n traverse(root, 1);\n return maxDepth + Math.log(nodeCount);\n }\n\n private calculateNodeConfidence(evidence: Evidence[]): number {\n if (evidence.length === 0) {return 0.5;}\n\n const _weightedSum = evidence.reduce((sum, e) => sum + e.strength, 0);\n return Math.min(1, weightedSum / evidence.length);\n }\n\n private traverseDecisionTree(\n node: DecisionNode,\n context: Record<string, unknown>,\n ): DecisionNode[] {\n const path: DecisionNode[] = [node];\n\n // Simple rule-based traversal (in production, use more sophisticated logic)\n for (const child of node.children) {\n if (child.type === 'condition' && this.evaluateCondition(child, context)) {\n path.push(...this.traverseDecisionTree(child, context));\n break;\n }\n }\n\n return path;\n }\n\n private evaluateCondition(_node: DecisionNode, context: Record<string, unknown>): boolean {\n // Simplified condition evaluation\n return node.confidence > 0.5;\n }\n\n private shouldAutoApprove(enhancement: Enhancement): boolean {\n return (\n enhancement.impact.riskScore <= 3 &&\n enhancement.impact.benefitScore >= 7 &&\n enhancement.priority >= 7\n );\n }\n\n private async evaluateEnhancementImpact(enhancement: Enhancement): Promise<void> {\n // Evaluate the actual impact of completed enhancements\n console.log(`Evaluating impact of enhancement: ${enhancement.description}`);\n\n // This would integrate with performance monitoring and user feedback systems\n // to measure the actual impact and improve future enhancement predictions\n }\n\n private async generateActionItems(reflection: ReflectionEntry): Promise<void> {\n // Generate actionable items from reflection insights\n const _insight = reflection.insight.toLowerCase();\n\n if (insight.includes('improve') || insight.includes('optimize')) {\n await this.addActionItem(reflection.id, {\n description: `Implement improvement based on: ${reflection.insight}`,\n priority: 7,\n dueDate: new Date(Date.now() + 7 * 24 * 60 * 60 * 1000), // 1 week\n });\n }\n\n if (insight.includes('learn') || insight.includes('study')) {\n await this.addActionItem(reflection.id, {\n description: `Research and learn: ${reflection.insight}`,\n priority: 5,\n dueDate: new Date(Date.now() + 14 * 24 * 60 * 60 * 1000), // 2 weeks\n });\n }\n }\n\n private async processCodeGenerationEvent(event: MemoryEvent): Promise<void> {\n const _data = event.data as { code?: string; language?: string; quality?: number };\n\n if (data.code && data.language) {\n const _quality = await this.assessCodeQuality(data.code, data.language);\n\n if (quality.maintainability < 70) {\n await this.addReflectionEntry(\n 'Low code maintainability',\n `Generated code has maintainability score of ${quality.maintainability}`,\n 'Need to improve code generation patterns for better maintainability',\n 'Focus on cleaner abstractions and better naming conventions',\n 0.8,\n );\n }\n }\n }\n\n private async processBugFixEvent(event: MemoryEvent): Promise<void> {\n const _data = event.data as { bugType?: string; solution?: string; timeToFix?: number };\n\n if (data.bugType && data.timeToFix) {\n await this.addReflectionEntry(\n `Bug fix: ${data.bugType}`,\n `Fixed ${data.bugType} in ${data.timeToFix} minutes`,\n 'Analyze if this bug type is recurring and could be prevented',\n data.timeToFix > 60\n ? 'Consider adding automated detection for this bug pattern'\n : 'Good resolution time',\n 0.7,\n );\n }\n }\n\n private async processQualityImprovementEvent(event: MemoryEvent): Promise<void> {\n const _data = event.data as { improvement?: string; impact?: number };\n\n if (data.improvement) {\n await this.proposeEnhancement({\n type: 'quality',\n description: `Quality improvement: ${data.improvement}`,\n impact: {\n benefitScore: data.impact || 5,\n effortScore: 3,\n riskScore: 2,\n affectedUsers: 1,\n affectedComponents: ['code-quality'],\n },\n implementation: {\n phases: [],\n timeline: 5,\n resources: [],\n dependencies: [],\n risks: [],\n },\n priority: 6,\n });\n }\n }\n\n private async processGenericEvent(event: MemoryEvent): Promise<void> {\n // Store event for potential future analysis\n console.log(`Processing generic event: ${event.type}`, event.data);\n }\n\n private async manageTraceLimit(): Promise<void> {\n if (this.reasoningTraces.size > this.config.maxReasoningTraces) {\n const _traces = Array.from(this.reasoningTraces.entries());\n const _sortedByQuality = traces.sort(\n (a, b) => a[1].metadata.qualityScore - b[1].metadata.qualityScore,\n );\n\n // Remove lowest quality traces (keep 80% of limit)\n const _removeCount = Math.min(\n Math.floor(this.config.maxReasoningTraces * 0.2),\n sortedByQuality.length,\n );\n for (let i = 0; i < removeCount; i++) {\n const _traceEntry = sortedByQuality[i];\n if (traceEntry) {\n this.reasoningTraces.delete(traceEntry[0]);\n }\n }\n }\n }\n\n // Quality calculation methods\n private async calculateMaintainability(_code: string, language: string): Promise<number> {\n // Simplified maintainability calculation\n const _factors = {\n length: Math.max(0, 100 - code.length / 100), // Shorter is better\n comments: ((code.match(/\\/\\/|\\/\\*|\\#/g) || []).length / code.split('\\n').length) * 100,\n complexity: 100 - this.calculateBasicComplexity(code) * 10,\n };\n\n return Math.max(\n 0,\n Math.min(100, Object.values(factors).reduce((sum, val) => sum + val, 0) / 3),\n );\n }\n\n private async calculateReadability(_code: string, language: string): Promise<number> {\n // Basic readability metrics\n const _lines = code.split('\\n');\n const _avgLineLength =\n lines.length > 0 ? lines.reduce((sum, line) => sum + line.length, 0) / lines.length : 0;\n const _readabilityScore = Math.max(0, 100 - (avgLineLength - 50) * 2); // Optimal ~50 chars per line\n\n return Math.max(0, Math.min(100, readabilityScore));\n }\n\n private async calculateTestability(_code: string, language: string): Promise<number> {\n // Basic testability assessment\n const _hasFunctions = /function|def|public|private/.test(code);\n const _hasClasses = /class|interface/.test(code);\n const _lowCoupling = !/global|window|document/.test(code);\n\n let score = 50;\n if (hasFunctions) {score += 20;}\n if (hasClasses) {score += 15;}\n if (lowCoupling) {score += 15;}\n\n return Math.max(0, Math.min(100, score));\n }\n\n private async calculatePerformance(_code: string, language: string): Promise<number> {\n // Basic performance assessment\n const _hasNestedLoops = (code.match(/for|while/g) || []).length > 2;\n const _hasRecursion = /return.*\\w+\\(/.test(code);\n const _hasEarlyReturns = (code.match(/return/g) || []).length > 1;\n\n let score = 80;\n if (hasNestedLoops) {score -= 20;}\n if (hasRecursion && !hasEarlyReturns) {score -= 15;}\n if (hasEarlyReturns) {score += 10;}\n\n return Math.max(0, Math.min(100, score));\n }\n\n private async calculateSecurity(_code: string, language: string): Promise<number> {\n // Basic security assessment\n const _vulnerabilities = [\n /eval\\(/g,\n /innerHTML\\s*=/g,\n /document\\.write/g,\n /\\$\\{.*\\}/g, // Template injection potential\n /sql|query.*\\+/gi, // SQL injection potential\n ];\n\n let score = 90;\n for (const pattern of vulnerabilities) {\n if (pattern.test(code)) {\n score -= 15;\n }\n }\n\n return Math.max(0, Math.min(100, score));\n }\n\n private async calculateBugDensity(_code: string, language: string): Promise<number> {\n // Basic bug pattern detection\n const _bugPatterns = [\n /==\\s*null/g, // Null comparison\n /undefined/g,\n /NaN/g,\n /catch\\s*\\(\\s*\\)/g, // Empty catch blocks\n /if\\s*\\([^)]*=[^=]/g, // Assignment in condition\n ];\n\n const _lines = code.split('\\n').length;\n let bugCount = 0;\n\n for (const pattern of bugPatterns) {\n bugCount += (code.match(pattern) || []).length;\n }\n\n return (bugCount / lines) * 1000; // Bugs per 1000 lines\n }\n\n private async calculateCyclomaticComplexity(_code: string, language: string): Promise<number> {\n return this.calculateBasicComplexity(code);\n }\n\n private calculateBasicComplexity(code: string): number {\n // Basic cyclomatic complexity calculation\n const _complexityPatterns = [\n /if\\s*\\(/g,\n /else\\s*if/g,\n /while\\s*\\(/g,\n /for\\s*\\(/g,\n /switch\\s*\\(/g,\n /case\\s+/g,\n /catch\\s*\\(/g,\n /\\?\\s*.*:/g, // Ternary operators\n /&&|\\|\\|/g, // Logical operators\n ];\n\n let complexity = 1; // Base complexity\n\n for (const pattern of complexityPatterns) {\n complexity += (code.match(pattern) || []).length;\n }\n\n return complexity;\n }\n\n private hashCode(str: string): string {\n let hash = 0;\n for (let i = 0; i < str.length; i++) {\n const _char = str.charCodeAt(i);\n hash = (hash << 5) - hash + char;\n hash = hash & hash; // Convert to 32-bit integer\n }\n return hash.toString(36);\n }\n\n private initializeQualityMetrics(): QualityMetrics {\n return {\n codeQuality: {\n maintainability: 80,\n readability: 75,\n testability: 70,\n performance: 85,\n security: 90,\n bugDensity: 2.5,\n complexity: 5,\n },\n reasoningQuality: {\n coherence: 0.8,\n completeness: 0.75,\n accuracy: 0.85,\n efficiency: 0.7,\n creativity: 0.6,\n },\n userSatisfaction: {\n userRating: 4.2,\n taskCompletion: 0.85,\n timeToSolution: 15,\n iterationCount: 3,\n userFeedback: [],\n },\n systemPerformance: {\n timeComplexity: 'O(n)',\n spaceComplexity: 'O(1)',\n benchmarks: [],\n },\n };\n }\n}\n","/**\n * MARIA Memory System - Dual Memory Engine\n *\n * Core integration logic for System 1 (fast, intuitive) and System 2 (deliberate, analytical) memory\n * Orchestrates memory operations, layer selection, and cross-system optimization\n */\n\nimport { System1MemoryManager } from './system1-memory';\nimport { System2MemoryManager } from './system2-memory';\nimport type {\n CodePattern,\n CoordinatorConfig,\n Enhancement,\n KnowledgeNode,\n MemoryEvent,\n PerformanceConfig,\n QualityMetrics,\n ReasoningTrace,\n System1Config,\n System2Config,\n UserPreferenceSet,\n} from './types/memory-interfaces';\n\nexport interface DualMemoryEngineConfig {\n system1: System1Config;\n system2: System2Config;\n coordinator: CoordinatorConfig;\n performance: PerformanceConfig;\n}\n\nexport interface MemoryQuery {\n type: 'knowledge' | 'pattern' | 'reasoning' | 'quality' | 'preference';\n query: string;\n context?: Record<string, unknown>;\n urgency?: 'low' | 'medium' | 'high' | 'critical';\n embedding?: number[];\n limit?: number;\n}\n\nexport interface MemoryResponse<T = unknown> {\n data: T;\n source: 'system1' | 'system2' | 'both';\n confidence: number;\n latency: number;\n cached: boolean;\n suggestions?: Enhancement[];\n}\n\nexport interface MemoryOperationMetrics {\n totalOperations: number;\n system1Operations: number;\n system2Operations: number;\n averageLatency: number;\n cacheHitRate: number;\n errorRate: number;\n lastReset: Date;\n}\n\nexport class DualMemoryEngine {\n private system1: System1MemoryManager;\n private system2: System2MemoryManager;\n private config: DualMemoryEngineConfig;\n private operationMetrics: MemoryOperationMetrics;\n private eventQueue: MemoryEvent[] = [];\n private processingLock = false;\n private performanceCache = new Map<string, { result: unknown; timestamp: Date; hits: number }>();\n\n constructor(_config: DualMemoryEngineConfig) {\n if (!_config) {\n throw new Error('DualMemoryEngine: config parameter is required');\n }\n\n if (!_config.system1) {\n throw new Error('DualMemoryEngine: config.system1 is required');\n }\n\n if (!_config.system2) {\n throw new Error('DualMemoryEngine: config.system2 is required');\n }\n\n this.config = _config;\n this.system1 = new System1MemoryManager(_config.system1);\n this.system2 = new System2MemoryManager(_config.system2);\n this.operationMetrics = this.initializeMetrics();\n\n // Start background processing\n this.startBackgroundProcessing();\n }\n\n // ========== Core Memory Operations ==========\n\n async query<T = unknown>(memoryQuery: MemoryQuery): Promise<MemoryResponse<T>> {\n const _startTime = Date.now();\n const cacheKey = this.generateCacheKey(memoryQuery);\n\n // Check performance cache first\n const cached = this.performanceCache.get(cacheKey);\n if (cached && this.isCacheValid(cached)) {\n cached.hits++;\n this.operationMetrics.totalOperations++;\n return {\n data: cached.result as T,\n source: 'both',\n confidence: 0.9,\n latency: Date.now() - _startTime,\n cached: true,\n };\n }\n\n try {\n // Determine optimal memory system(s) to use\n const _strategy = await this.selectMemoryStrategy(memoryQuery);\n const _result = await this.executeMemoryOperation<T>(memoryQuery, strategy);\n\n // Cache successful results\n if (result.confidence > 0.7) {\n this.performanceCache.set(cacheKey, {\n result: result._data,\n timestamp: new Date(),\n hits: 1,\n });\n }\n\n // Update metrics\n this.updateOperationMetrics(strategy, Date.now() - startTime, true);\n\n return result;\n } catch (error) {\n this.updateOperationMetrics('both', Date.now() - startTime, false);\n throw new Error(\n `Memory query failed: ${error instanceof Error ? error.message : 'Unknown error'}`,\n );\n }\n }\n\n async store(event: MemoryEvent): Promise<void> {\n // Add to event queue for processing\n this.eventQueue.push(event);\n\n // Immediate processing for critical events\n if (event.metadata.priority === 'critical') {\n await this.processEvent(event);\n }\n }\n\n async learn(\n input: string,\n output: string,\n context: Record<string, unknown>,\n success: boolean,\n ): Promise<void> {\n const learningEvent: MemoryEvent = {\n id: `learn:${Date.now()}`,\n type: 'learning_update',\n timestamp: new Date(),\n userId: (context['userId'] as string) || 'anonymous',\n sessionId: (context['sessionId'] as string) || 'default',\n data: { input, output, context, success },\n metadata: {\n confidence: success ? 0.9 : 0.3,\n source: 'user_input',\n priority: 'medium',\n tags: ['learning', 'adaptation'],\n },\n };\n\n await this.store(learningEvent);\n }\n\n // ========== Specialized Query Methods ==========\n\n async findKnowledge(\n query: string,\n embedding?: number[],\n limit: number = 10,\n ): Promise<MemoryResponse<KnowledgeNode[]>> {\n return this.query<KnowledgeNode[]>({\n type: 'knowledge',\n query,\n embedding,\n limit,\n urgency: 'medium',\n });\n }\n\n async findPatterns(\n language?: string,\n framework?: string,\n useCase?: string,\n limit: number = 10,\n ): Promise<MemoryResponse<CodePattern[]>> {\n return this.query<CodePattern[]>({\n type: 'pattern',\n query: `${language || ''} ${framework || ''} ${useCase || ''}`.trim(),\n context: { language, framework, useCase },\n limit,\n urgency: 'low',\n });\n }\n\n async getReasoning(\n domain?: string,\n complexity?: string,\n minQuality?: number,\n ): Promise<MemoryResponse<ReasoningTrace[]>> {\n return this.query<ReasoningTrace[]>({\n type: 'reasoning',\n query: `${domain || ''} ${complexity || ''}`.trim(),\n context: { domain, complexity, minQuality },\n urgency: 'low',\n });\n }\n\n async getQualityInsights(): Promise<MemoryResponse<QualityMetrics>> {\n return this.query<QualityMetrics>({\n type: 'quality',\n query: 'current quality metrics',\n urgency: 'low',\n });\n }\n\n async getUserPreferences(): Promise<MemoryResponse<UserPreferenceSet>> {\n return this.query<UserPreferenceSet>({\n type: 'preference',\n query: 'user preferences',\n urgency: 'high',\n });\n }\n\n async recall(options: { query: string; type: string; limit?: number }): Promise<unknown[]> {\n try {\n const _result = await this.query({\n type: options.type as 'knowledge' | 'pattern' | 'reasoning' | 'quality' | 'preference',\n query: options.query,\n limit: options.limit || 10,\n });\n\n return Array.isArray(result._data) ? result._data : [result._data];\n } catch (error) {\n console.warn('Memory recall failed:', error);\n return [];\n }\n }\n\n async clearMemory(): Promise<void> {\n try {\n // Clear all internal caches and data\n this.performanceCache.clear();\n this.eventQueue.length = 0;\n\n // Reset metrics\n this.resetMetrics();\n\n console.log('Memory cleared successfully');\n } catch (error) {\n console.error('Failed to clear memory:', error);\n throw error;\n }\n }\n\n // ========== Memory Strategy Selection ==========\n\n private async selectMemoryStrategy(query: MemoryQuery): Promise<'system1' | 'system2' | 'both'> {\n const _factors = {\n urgency: this.getUrgencyScore(query.urgency),\n complexity: this.assessQueryComplexity(query),\n type: this.getTypePreference(query.type),\n cacheStatus: this.getCacheStatus(query),\n };\n\n const _system1Score = this.calculateSystem1Score(factors);\n const _system2Score = this.calculateSystem2Score(factors);\n\n // Decision logic based on configuration\n switch (this.config.coordinator.conflictResolutionStrategy) {\n case 'system1_priority':\n return system1Score > 0.6 ? 'system1' : 'both';\n\n case 'system2_priority':\n return system2Score > 0.6 ? 'system2' : 'both';\n\n case 'balanced':\n default:\n if (Math.abs(system1Score - system2Score) < 0.2) {\n return 'both';\n }\n return system1Score > system2Score ? 'system1' : 'system2';\n }\n }\n\n private getUrgencyScore(urgency?: string): number {\n switch (urgency) {\n case 'critical':\n return 1.0;\n case 'high':\n return 0.8;\n case 'medium':\n return 0.5;\n case 'low':\n return 0.2;\n default:\n return 0.5;\n }\n }\n\n private assessQueryComplexity(query: MemoryQuery): number {\n let complexity = 0.3; // Base complexity\n\n // Query length factor\n if (query.query.length > 100) {complexity += 0.2;}\n if (query.query.length > 200) {complexity += 0.2;}\n\n // Context complexity\n if (query.context && Object.keys(query.context).length > 3) {complexity += 0.2;}\n\n // Type complexity\n switch (query.type) {\n case 'reasoning':\n complexity += 0.4;\n break;\n case 'quality':\n complexity += 0.3;\n break;\n case 'pattern':\n complexity += 0.2;\n break;\n case 'knowledge':\n complexity += 0.1;\n break;\n case 'preference':\n complexity += 0.0;\n break;\n }\n\n return Math.min(1.0, complexity);\n }\n\n private getTypePreference(type: string): { system1: number; system2: number } {\n switch (type) {\n case 'knowledge':\n return { system1: 0.8, system2: 0.3 };\n case 'pattern':\n return { system1: 0.9, system2: 0.2 };\n case 'preference':\n return { system1: 0.9, system2: 0.1 };\n case 'reasoning':\n return { system1: 0.2, system2: 0.9 };\n case 'quality':\n return { system1: 0.3, system2: 0.8 };\n default:\n return { system1: 0.5, system2: 0.5 };\n }\n }\n\n private getCacheStatus(query: MemoryQuery): number {\n const cacheKey = this.generateCacheKey(query);\n const cached = this.performanceCache.get(cacheKey);\n return cached ? 0.8 : 0.2;\n }\n\n private calculateSystem1Score(factors: RoutingFactors): number {\n const _urgencyWeight = factors.urgency * 0.4;\n const _complexityPenalty = (1 - factors.complexity) * 0.3;\n const _typePreference = factors.type.system1 * 0.2;\n const _cacheBonus = factors.cacheStatus * 0.1;\n\n return urgencyWeight + complexityPenalty + typePreference + cacheBonus;\n }\n\n private calculateSystem2Score(factors: RoutingFactors): number {\n const _complexityBonus = factors.complexity * 0.4;\n const _urgencyPenalty = (1 - factors.urgency) * 0.2;\n const _typePreference = factors.type.system2 * 0.3;\n const _qualityBonus = 0.1; // Always slight preference for quality\n\n return complexityBonus + urgencyPenalty + typePreference + qualityBonus;\n }\n\n // ========== Memory Operation Execution ==========\n\n private async executeMemoryOperation<T>(\n query: MemoryQuery,\n strategy: 'system1' | 'system2' | 'both',\n ): Promise<MemoryResponse<T>> {\n switch (strategy) {\n case 'system1':\n return this.executeSystem1Operation(query);\n\n case 'system2':\n return this.executeSystem2Operation(query);\n\n case 'both':\n return this.executeCombinedOperation(query);\n\n default:\n throw new Error(`Unknown strategy: ${strategy}`);\n }\n }\n\n private async executeSystem1Operation<T>(query: MemoryQuery): Promise<MemoryResponse<T>> {\n const _startTime = Date.now();\n let result: T;\n\n switch (query.type) {\n case 'knowledge':\n result = (await this.system1.searchKnowledgeNodes(\n query.query,\n query.embedding || [],\n query.limit,\n )) as T;\n break;\n\n case 'pattern': {\n const { language, framework, useCase } = query.context || {};\n result = (await this.system1.findCodePatterns(\n language as string,\n framework as string,\n useCase as string,\n query.limit,\n )) as T;\n break;\n }\n\n case 'preference':\n result = (await this.system1.getUserPreference('learningStyle')) as T;\n break;\n\n default:\n throw new Error(`System 1 cannot handle query type: ${query.type}`);\n }\n\n return {\n data: result,\n source: 'system1',\n confidence: 0.8,\n latency: Date.now() - _startTime,\n cached: false,\n };\n }\n\n private async executeSystem2Operation<T>(query: MemoryQuery): Promise<MemoryResponse<T>> {\n const _startTime = Date.now();\n let result: T;\n\n switch (query.type) {\n case 'reasoning': {\n const { domain, complexity, minQuality } = query.context || {};\n result = (await this.system2.searchReasoningTraces(\n {\n domain: domain as string,\n complexity: complexity as string,\n minQuality: minQuality as number,\n },\n query.limit,\n )) as T;\n break;\n }\n\n case 'quality':\n result = this.system2.qualityEvaluation as T;\n break;\n\n default:\n throw new Error(`System 2 cannot handle query type: ${query.type}`);\n }\n\n return {\n data: result,\n source: 'system2',\n confidence: 0.9,\n latency: Date.now() - _startTime,\n cached: false,\n };\n }\n\n private async executeCombinedOperation<T>(query: MemoryQuery): Promise<MemoryResponse<T>> {\n const _startTime = Date.now();\n\n try {\n // Execute both systems in parallel\n const [system1Result, system2Result] = await Promise.allSettled([\n this.executeSystem1Operation<T>(query).catch(() => null),\n this.executeSystem2Operation<T>(query).catch(() => null),\n ]);\n\n // Combine results intelligently\n const _combinedResult = this.combineResults<T>(query, system1Result, system2Result);\n\n return {\n data: combinedResult._data,\n source: 'both',\n confidence: combinedResult.confidence,\n latency: Date.now() - _startTime,\n cached: false,\n suggestions: combinedResult.suggestions,\n };\n } catch (_error) {\n // Fallback to the most appropriate single system\n const _fallbackStrategy =\n query.type === 'reasoning' || query.type === 'quality' ? 'system2' : 'system1';\n return this.executeMemoryOperation(query, fallbackStrategy);\n }\n }\n\n private combineResults<T>(\n query: MemoryQuery,\n system1Result: PromiseSettledResult<MemoryResponse<T> | null>,\n system2Result: PromiseSettledResult<MemoryResponse<T> | null>,\n ): { data: T; confidence: number; suggestions?: Enhancement[] } {\n const _s1Data = system1Result.status === 'fulfilled' ? system1Result.value?._data : null;\n const _s2Data = system2Result.status === 'fulfilled' ? system2Result.value?._data : null;\n\n // Priority-based combination\n if (s2Data && s1Data) {\n // Both available - use System 2 for complex queries, System 1 for simple ones\n const _useSystem2 = this.assessQueryComplexity(query) > 0.6;\n return {\n data: useSystem2 ? s2Data : s1Data,\n confidence: 0.95,\n suggestions: this.generateCombinedSuggestions(s1Data, s2Data),\n };\n }\n\n if (s1Data) {\n return { data: s1Data, confidence: 0.8 };\n }\n\n if (s2Data) {\n return { data: s2Data, confidence: 0.85 };\n }\n\n // No results available\n throw new Error('No memory systems could provide results');\n }\n\n private generateCombinedSuggestions<T>(_s1Data: T, s2Data: T): Enhancement[] {\n // Generate suggestions based on the combination of results\n return [\n {\n id: `suggestion:${Date.now()}`,\n type: 'performance',\n description: 'Consider using cached results for similar queries',\n impact: {\n benefitScore: 6,\n effortScore: 3,\n riskScore: 1,\n affectedUsers: 1,\n affectedComponents: ['memory-system'],\n },\n implementation: {\n phases: [],\n timeline: 2,\n resources: [],\n dependencies: [],\n risks: [],\n },\n priority: 5,\n status: 'proposed',\n },\n ];\n }\n\n // ========== Event Processing ==========\n\n async processEvent(event: MemoryEvent): Promise<void> {\n try {\n // Route event to appropriate memory systems\n const _routingStrategy = this.determineEventRouting(event);\n\n await Promise.all([\n routingStrategy.system1 ? this.system1.processMemoryEvent(event) : Promise.resolve(),\n routingStrategy.system2 ? this.system2.processMemoryEvent(event) : Promise.resolve(),\n ]);\n\n // Cross-system learning and adaptation\n await this.adaptFromEvent(event);\n } catch (error) {\n console.error(`Error processing memory event ${event.id}:`, error);\n }\n }\n\n private determineEventRouting(event: MemoryEvent): { system1: boolean; system2: boolean } {\n switch (event.type) {\n case 'code_generation':\n case 'pattern_recognition':\n return { system1: true, system2: false };\n\n case 'bug_fix':\n case 'quality_improvement':\n return { system1: false, system2: true };\n\n case 'learning_update':\n case 'mode_change':\n return { system1: true, system2: true };\n\n default:\n return { system1: true, system2: false };\n }\n }\n\n private async adaptFromEvent(event: MemoryEvent): Promise<void> {\n // Cross-system learning based on events\n if (event.type === 'learning_update') {\n const _data = event.data as { success?: boolean; input?: string; output?: string };\n\n if (data.success === false) {\n // Generate improvement suggestion\n await this.system2.proposeEnhancement({\n type: 'usability',\n description: `Improve handling of: ${data.input}`,\n impact: {\n benefitScore: 5,\n effortScore: 3,\n riskScore: 2,\n affectedUsers: 1,\n affectedComponents: ['ai-interaction'],\n },\n implementation: {\n phases: [],\n timeline: 3,\n resources: [],\n dependencies: [],\n risks: [],\n },\n priority: 4,\n });\n }\n }\n }\n\n // ========== Background Processing ==========\n\n private startBackgroundProcessing(): void {\n // Process event queue regularly\n setInterval(() => {\n this.processEventQueue();\n }, this.config.coordinator.syncInterval);\n\n // Clean up cache periodically\n setInterval(\n () => {\n this.cleanupCache();\n },\n 5 * 60 * 1000,\n ); // Every 5 minutes\n\n // Memory optimization\n setInterval(\n () => {\n this.optimizeMemory();\n },\n 15 * 60 * 1000,\n ); // Every 15 minutes\n }\n\n private async processEventQueue(): Promise<void> {\n if (this.processingLock || this.eventQueue.length === 0) {\n return;\n }\n\n this.processingLock = true;\n\n try {\n // Process events in batches\n const _batchSize = this.config.performance.batchSize;\n const _batch = this.eventQueue.splice(0, batchSize);\n\n await Promise.all(batch.map((event) => this.processEvent(event)));\n } finally {\n this.processingLock = false;\n }\n }\n\n private cleanupCache(): void {\n const _now = new Date();\n const _maxAge = 30 * 60 * 1000; // 30 minutes\n\n for (const [key, cached] of this.performanceCache.entries()) {\n const age = now.getTime() - cached.timestamp.getTime();\n\n if (age > _maxAge || cached.hits < 2) {\n this.performanceCache.delete(key);\n }\n }\n }\n\n private async optimizeMemory(): Promise<void> {\n try {\n // System 1 optimization\n await this.system1.compressMemory();\n\n // Cache optimization\n if (this.performanceCache.size > 1000) {\n const _entries = Array.from(this.performanceCache.entries());\n const _sortedByUsage = entries.sort((a, b) => b[1].hits - a[1].hits);\n\n // Keep top 500 most used entries\n this.performanceCache.clear();\n sortedByUsage.slice(0, 500).forEach(([key, value]) => {\n this.performanceCache.set(key, value);\n });\n }\n } catch (error) {\n console.error('Memory optimization failed:', error);\n }\n }\n\n // ========== System Access Methods ==========\n\n /**\n * Get System 1 memory manager instance\n * @returns System1MemoryManager instance\n */\n getSystem1(): System1MemoryManager {\n return this.system1;\n }\n\n /**\n * Get System 2 memory manager instance\n * @returns System2MemoryManager instance\n */\n getSystem2(): System2MemoryManager {\n return this.system2;\n }\n\n // ========== Utility Methods ==========\n\n private generateCacheKey(query: MemoryQuery): string {\n const _contextStr = query.context ? JSON.stringify(query.context) : '';\n const _embeddingStr = query.embedding ? query.embedding.slice(0, 5).join(',') : '';\n\n return `${query.type}:${query.query}:${contextStr}:${embeddingStr}:${query.limit || 10}`;\n }\n\n private isCacheValid(cached: { timestamp: Date; hits: number }): boolean {\n const age = Date.now() - cached.timestamp.getTime();\n const maxAge = 10 * 60 * 1000; // 10 minutes\n\n return age < maxAge;\n }\n\n private updateOperationMetrics(\n strategy: 'system1' | 'system2' | 'both',\n latency: number,\n success: boolean,\n ): void {\n this.operationMetrics.totalOperations++;\n this.operationMetrics.averageLatency = (this.operationMetrics.averageLatency + latency) / 2;\n\n if (strategy === 'system1' || strategy === 'both') {\n this.operationMetrics.system1Operations++;\n }\n\n if (strategy === 'system2' || strategy === 'both') {\n this.operationMetrics.system2Operations++;\n }\n\n if (!success) {\n this.operationMetrics.errorRate =\n (this.operationMetrics.errorRate + 1) / this.operationMetrics.totalOperations;\n }\n }\n\n private initializeMetrics(): MemoryOperationMetrics {\n return {\n totalOperations: 0,\n system1Operations: 0,\n system2Operations: 0,\n averageLatency: 0,\n cacheHitRate: 0,\n errorRate: 0,\n lastReset: new Date(),\n };\n }\n\n // ========== Public API for Monitoring ==========\n\n getMetrics(): MemoryOperationMetrics {\n // Calculate cache hit rate\n const _totalCacheAccess = Array.from(this.performanceCache.values()).reduce(\n (sum, cached) => sum + cached.hits,\n 0,\n );\n\n this.operationMetrics.cacheHitRate =\n this.operationMetrics.totalOperations > 0\n ? totalCacheAccess / this.operationMetrics.totalOperations\n : 0;\n\n return { ...this.operationMetrics };\n }\n\n resetMetrics(): void {\n this.operationMetrics = this.initializeMetrics();\n }\n\n getCacheSize(): number {\n return this.performanceCache.size;\n }\n\n getQueueSize(): number {\n return this.eventQueue.length;\n }\n\n // ========== Initialization ==========\n\n async initialize(): Promise<void> {\n try {\n // Perform initialization logic\n this.resetMetrics();\n\n // Clear any existing cache\n this.performanceCache.clear();\n\n // DualMemoryEngine initialized\n } catch (error) {\n console.error('Failed to initialize DualMemoryEngine:', error);\n throw error;\n }\n }\n\n // ========== Configuration Management ==========\n\n updateConfig(newConfig: Partial<DualMemoryEngineConfig>): void {\n Object.assign(this.config, newConfig);\n }\n\n getConfig(): DualMemoryEngineConfig {\n return { ...this.config };\n }\n\n async getStatistics(): Promise<{\n system1: {\n totalNodes: number;\n patterns: number;\n preferences: number;\n cacheHitRate: number;\n };\n system2: {\n reasoningTraces: number;\n decisionTrees: number;\n activeSessions: number;\n memoryUsage: number;\n };\n performance: {\n avgResponseTime: number;\n memoryUsage: number;\n };\n }> {\n try {\n const _metrics = this.getMetrics();\n\n // Get system1 stats - using safe property access\n const _system1Stats = {\n totalNodes: 0, // Will be populated when system1 interface is stable\n patterns: 0, // Will be populated when system1 interface is stable\n preferences: 0, // Will be populated when system1 interface is stable\n cacheHitRate: metrics.cacheHitRate || 0,\n };\n\n // Get system2 stats - using safe property access\n const _system2Stats = {\n reasoningTraces: 0, // Will be populated when system2 interface is stable\n decisionTrees: 0, // Will be populated when system2 interface is stable\n activeSessions: 0, // Will be populated when system2 interface is stable\n memoryUsage: 0, // Will be populated when system2 interface is stable\n };\n\n return {\n system1: system1Stats,\n system2: system2Stats,\n performance: {\n avgResponseTime: metrics.averageLatency || 50,\n memoryUsage: process.memoryUsage().heapUsed,\n },\n };\n } catch (_error) {\n // Return default stats if there's an error\n return {\n system1: {\n totalNodes: 0,\n patterns: 0,\n preferences: 0,\n cacheHitRate: 0,\n },\n system2: {\n reasoningTraces: 0,\n decisionTrees: 0,\n activeSessions: 0,\n memoryUsage: 0,\n },\n performance: {\n avgResponseTime: 50,\n memoryUsage: 0,\n },\n };\n }\n }\n}\n\n// Supporting interfaces\ninterface RoutingFactors {\n urgency: number;\n complexity: number;\n type: {\n system1: number;\n system2: number;\n };\n cacheStatus: number;\n}\n","import fs from 'fs';\nimport path from 'path';\nimport { promisify } from 'util';\nimport { spawn } from 'child_process';\nimport chalk from 'chalk';\n\nconst _fsAsync = {\n readFile: promisify(fs.readFile),\n writeFile: promisify(fs.writeFile),\n unlink: promisify(fs.unlink),\n mkdir: promisify(fs.mkdir),\n rmdir: promisify(fs.rmdir),\n readdir: promisify(fs.readdir),\n stat: promisify(fs.stat),\n copyFile: promisify(fs.copyFile),\n rename: promisify(fs.rename),\n access: promisify(fs.access),\n realpath: promisify(fs.realpath),\n symlink: promisify(fs.symlink),\n readlink: promisify(fs.readlink),\n lstat: promisify(fs.lstat),\n chmod: promisify(fs.chmod),\n chown: promisify(fs.chown),\n};\n\nexport interface FileStats {\n name: string;\n path: string;\n isFile: boolean;\n isDirectory: boolean;\n isSymlink: boolean;\n size: number;\n created: Date;\n modified: Date;\n permissions: string;\n owner?: string;\n}\n\nexport interface FileOperationOptions {\n recursive?: boolean;\n force?: boolean;\n preserveTimestamps?: boolean;\n backup?: boolean;\n dryRun?: boolean;\n followSymlinks?: boolean;\n}\n\nexport interface SearchOptions {\n pattern?: string;\n type?: 'file' | 'directory' | 'both';\n maxDepth?: number;\n caseSensitive?: boolean;\n includeHidden?: boolean;\n regex?: boolean;\n}\n\nexport class FileSystemService {\n private static instance: FileSystemService;\n private operationLog: Array<{\n operation: string;\n path: string;\n timestamp: Date;\n success: boolean;\n }> = [];\n\n public static getInstance(): FileSystemService {\n if (!FileSystemService.instance) {\n FileSystemService.instance = new FileSystemService();\n }\n return FileSystemService.instance;\n }\n\n private constructor() {}\n\n // Basic File Operations\n async readFile(_filePath: string, encoding: BufferEncoding = 'utf8'): Promise<string | Buffer> {\n try {\n const _resolvedPath = path.resolve(filePath);\n const _content = await fsAsync.readFile(resolvedPath, encoding);\n this.logOperation('read', resolvedPath, true);\n return content;\n } catch (_error) {\n this.logOperation('read', filePath, false);\n throw new Error(`Failed to read file ${filePath}: ${error.message}`);\n }\n }\n\n async writeFile(\n filePath: string,\n content: string | Buffer,\n options: FileOperationOptions = {},\n ): Promise<void> {\n try {\n const _resolvedPath = path.resolve(filePath);\n\n if (options.backup && (await this.exists(resolvedPath))) {\n await this.createBackup(resolvedPath);\n }\n\n if (options.dryRun) {\n console.log(chalk.yellow(`[DRY RUN] Would write to: ${resolvedPath}`));\n return;\n }\n\n await this.ensureDirectoryExists(path.dirname(resolvedPath));\n await fsAsync.writeFile(resolvedPath, content);\n\n this.logOperation('write', resolvedPath, true);\n } catch (_error) {\n this.logOperation('write', filePath, false);\n throw new Error(`Failed to write file ${filePath}: ${error.message}`);\n }\n }\n\n async deleteFile(_filePath: string, options: FileOperationOptions = {}): Promise<void> {\n try {\n const _resolvedPath = path.resolve(filePath);\n\n if (!(await this.exists(resolvedPath))) {\n throw new Error(`File does not exist: ${resolvedPath}`);\n }\n\n if (options.backup) {\n await this.createBackup(resolvedPath);\n }\n\n if (options.dryRun) {\n console.log(chalk.yellow(`[DRY RUN] Would delete: ${resolvedPath}`));\n return;\n }\n\n await fsAsync.unlink(resolvedPath);\n this.logOperation('delete', resolvedPath, true);\n } catch (_error) {\n this.logOperation('delete', filePath, false);\n throw new Error(`Failed to delete file ${filePath}: ${error.message}`);\n }\n }\n\n // Directory Operations\n async createDirectory(_dirPath: string, options: FileOperationOptions = {}): Promise<void> {\n try {\n const _resolvedPath = path.resolve(dirPath);\n\n if (options.dryRun) {\n console.log(chalk.yellow(`[DRY RUN] Would create directory: ${resolvedPath}`));\n return;\n }\n\n await fsAsync.mkdir(resolvedPath, { recursive: options.recursive ?? true });\n this.logOperation('mkdir', resolvedPath, true);\n } catch (_error) {\n this.logOperation('mkdir', dirPath, false);\n throw new Error(`Failed to create directory ${dirPath}: ${error.message}`);\n }\n }\n\n async deleteDirectory(_dirPath: string, options: FileOperationOptions = {}): Promise<void> {\n try {\n const _resolvedPath = path.resolve(dirPath);\n\n if (!(await this.exists(resolvedPath))) {\n throw new Error(`Directory does not exist: ${resolvedPath}`);\n }\n\n if (options.dryRun) {\n console.log(chalk.yellow(`[DRY RUN] Would delete directory: ${resolvedPath}`));\n return;\n }\n\n if (options.recursive) {\n await this.deleteDirectoryRecursive(resolvedPath);\n } else {\n await fsAsync.rmdir(resolvedPath);\n }\n\n this.logOperation('rmdir', resolvedPath, true);\n } catch (_error) {\n this.logOperation('rmdir', dirPath, false);\n throw new Error(`Failed to delete directory ${dirPath}: ${error.message}`);\n }\n }\n\n async listDirectory(_dirPath: string, options: SearchOptions = {}): Promise<FileStats[]> {\n try {\n const _resolvedPath = path.resolve(dirPath);\n const _entries = await fsAsync.readdir(resolvedPath);\n const results: FileStats[] = [];\n\n for (const entry of entries) {\n if (!options.includeHidden && entry.startsWith('.')) {\n continue;\n }\n\n const _entryPath = path.join(resolvedPath, entry);\n const _stats = await this.getFileStats(entryPath);\n\n if (options.type) {\n if (options.type === 'file' && !stats.isFile) {continue;}\n if (options.type === 'directory' && !stats.isDirectory) {continue;}\n }\n\n if (options.pattern) {\n const _match = options.caseSensitive\n ? stats.name.includes(options.pattern)\n : stats.name.toLowerCase().includes(options.pattern.toLowerCase());\n if (!match) {continue;}\n }\n\n results.push(stats);\n }\n\n this.logOperation('readdir', resolvedPath, true);\n return results.sort((a, b) => {\n if (a.isDirectory && !b.isDirectory) {return -1;}\n if (!a.isDirectory && b.isDirectory) {return 1;}\n return a.name.localeCompare(b.name);\n });\n } catch (_error) {\n this.logOperation('readdir', dirPath, false);\n throw new Error(`Failed to list directory ${dirPath}: ${error.message}`);\n }\n }\n\n // Advanced Operations\n async copyFile(\n sourcePath: string,\n destPath: string,\n options: FileOperationOptions = {},\n ): Promise<void> {\n try {\n const _resolvedSource = path.resolve(sourcePath);\n const _resolvedDest = path.resolve(destPath);\n\n if (!(await this.exists(resolvedSource))) {\n throw new Error(`Source file does not exist: ${resolvedSource}`);\n }\n\n if (options.dryRun) {\n console.log(chalk.yellow(`[DRY RUN] Would copy: ${resolvedSource} → ${resolvedDest}`));\n return;\n }\n\n await this.ensureDirectoryExists(path.dirname(resolvedDest));\n\n if ((await this.exists(resolvedDest)) && !options.force) {\n throw new Error(`Destination file already exists: ${resolvedDest}`);\n }\n\n await fsAsync.copyFile(resolvedSource, resolvedDest);\n\n if (options.preserveTimestamps) {\n const _sourceStats = await fsAsync.stat(resolvedSource);\n await fs.promises.utimes(resolvedDest, sourceStats.atime, sourceStats.mtime);\n }\n\n this.logOperation('copy', `${resolvedSource} → ${resolvedDest}`, true);\n } catch (_error) {\n this.logOperation('copy', `${sourcePath} → ${destPath}`, false);\n throw new Error(`Failed to copy file: ${error.message}`);\n }\n }\n\n async moveFile(\n sourcePath: string,\n destPath: string,\n options: FileOperationOptions = {},\n ): Promise<void> {\n try {\n const _resolvedSource = path.resolve(sourcePath);\n const _resolvedDest = path.resolve(destPath);\n\n if (!(await this.exists(resolvedSource))) {\n throw new Error(`Source file does not exist: ${resolvedSource}`);\n }\n\n if (options.dryRun) {\n console.log(chalk.yellow(`[DRY RUN] Would move: ${resolvedSource} → ${resolvedDest}`));\n return;\n }\n\n await this.ensureDirectoryExists(path.dirname(resolvedDest));\n\n if ((await this.exists(resolvedDest)) && !options.force) {\n throw new Error(`Destination file already exists: ${resolvedDest}`);\n }\n\n await fsAsync.rename(resolvedSource, resolvedDest);\n this.logOperation('move', `${resolvedSource} → ${resolvedDest}`, true);\n } catch (_error) {\n this.logOperation('move', `${sourcePath} → ${destPath}`, false);\n throw new Error(`Failed to move file: ${error.message}`);\n }\n }\n\n async renameFile(\n oldPath: string,\n newPath: string,\n options: FileOperationOptions = {},\n ): Promise<void> {\n return this.moveFile(oldPath, newPath, options);\n }\n\n // Search and Navigation\n async findFiles(_searchPath: string, options: SearchOptions = {}): Promise<FileStats[]> {\n try {\n const _resolvedPath = path.resolve(searchPath);\n const results: FileStats[] = [];\n\n await this.findFilesRecursive(resolvedPath, options, results, 0);\n\n this.logOperation('find', resolvedPath, true);\n return results;\n } catch (_error) {\n this.logOperation('find', searchPath, false);\n throw new Error(`Failed to search files: ${error.message}`);\n }\n }\n\n async which(command: string): Promise<string | null> {\n return new Promise((resolve) => {\n const _proc = spawn('which', [command]);\n let output = '';\n\n proc.stdout.on('data', (data) => {\n output += data.toString();\n });\n\n proc.on('close', (code) => {\n if (code === 0) {\n resolve(output.trim());\n } else {\n resolve(null);\n }\n });\n });\n }\n\n async glob(_pattern: string, options: SearchOptions = {}): Promise<string[]> {\n // Simple glob implementation - could be enhanced with a proper glob library\n const _patternParts = pattern.split(path.sep);\n const _basePath = patternParts.slice(0, -1).join(path.sep) || './';\n const _filePattern = patternParts[patternParts.length - 1];\n\n try {\n // Convert glob pattern to regex\n const _regexPattern = filePattern\n .replace(/\\./g, '\\\\.')\n .replace(/\\*/g, '.*')\n .replace(/\\?/g, '.');\n\n const _files = await this.findFiles(basePath, {\n ...options,\n pattern: `^${regexPattern}$`,\n regex: true,\n type: 'file',\n });\n\n return files.map((f) => f.path);\n } catch (_error) {\n throw new Error(`Failed to glob pattern ${pattern}: ${error.message}`);\n }\n }\n\n // Utility Methods\n async exists(filePath: string): Promise<boolean> {\n try {\n await fsAsync.access(path.resolve(filePath));\n return true;\n } catch {\n return false;\n }\n }\n\n async getFileStats(filePath: string): Promise<FileStats> {\n try {\n const _resolvedPath = path.resolve(filePath);\n const _stats = await fsAsync.lstat(resolvedPath);\n const _name = path.basename(resolvedPath);\n\n return {\n name,\n path: resolvedPath,\n isFile: stats.isFile(),\n isDirectory: stats.isDirectory(),\n isSymlink: stats.isSymbolicLink(),\n size: stats.size,\n created: stats.birthtime,\n modified: stats.mtime,\n permissions: (stats.mode & parseInt('777', 8)).toString(8),\n };\n } catch (_error) {\n throw new Error(`Failed to get file stats for ${filePath}: ${error.message}`);\n }\n }\n\n async getRealPath(filePath: string): Promise<string> {\n try {\n return await fsAsync.realpath(path.resolve(filePath));\n } catch (_error) {\n throw new Error(`Failed to resolve real path for ${filePath}: ${error.message}`);\n }\n }\n\n getOperationLog(): Array<{ operation: string; path: string; timestamp: Date; success: boolean }> {\n return [...this.operationLog];\n }\n\n clearOperationLog(): void {\n this.operationLog = [];\n }\n\n // Private Helper Methods\n private async ensureDirectoryExists(dirPath: string): Promise<void> {\n try {\n await fsAsync.mkdir(dirPath, { recursive: true });\n } catch (_error) {\n if (error.code !== 'EEXIST') {\n throw error;\n }\n }\n }\n\n private async createBackup(filePath: string): Promise<void> {\n const _backupPath = `${filePath}.backup.${Date.now()}`;\n await fsAsync.copyFile(filePath, backupPath);\n }\n\n private async deleteDirectoryRecursive(dirPath: string): Promise<void> {\n const _entries = await fsAsync.readdir(dirPath);\n\n for (const entry of entries) {\n const _entryPath = path.join(dirPath, entry);\n const _stats = await fsAsync.lstat(entryPath);\n\n if (stats.isDirectory()) {\n await this.deleteDirectoryRecursive(entryPath);\n } else {\n await fsAsync.unlink(entryPath);\n }\n }\n\n await fsAsync.rmdir(dirPath);\n }\n\n private async findFilesRecursive(\n searchPath: string,\n options: SearchOptions,\n results: FileStats[],\n depth: number,\n ): Promise<void> {\n if (options.maxDepth && depth >= options.maxDepth) {\n return;\n }\n\n try {\n const _entries = await fsAsync.readdir(searchPath);\n\n for (const entry of entries) {\n if (!options.includeHidden && entry.startsWith('.')) {\n continue;\n }\n\n const _entryPath = path.join(searchPath, entry);\n const _stats = await this.getFileStats(entryPath);\n\n // Apply filters\n if (options.pattern) {\n const _pattern = options.regex\n ? new RegExp(options.pattern, options.caseSensitive ? 'g' : 'gi')\n : null;\n const _match = pattern\n ? pattern.test(stats.name)\n : options.caseSensitive\n ? stats.name.includes(options.pattern)\n : stats.name.toLowerCase().includes(options.pattern.toLowerCase());\n\n if (match) {\n if (options.type) {\n if (options.type === 'file' && stats.isFile) {results.push(stats);}\n if (options.type === 'directory' && stats.isDirectory) {results.push(stats);}\n if (options.type === 'both') {results.push(stats);}\n } else {\n results.push(stats);\n }\n }\n } else if (!options.pattern) {\n if (options.type) {\n if (options.type === 'file' && stats.isFile) {results.push(stats);}\n if (options.type === 'directory' && stats.isDirectory) {results.push(stats);}\n if (options.type === 'both') {results.push(stats);}\n } else {\n results.push(stats);\n }\n }\n\n // Recurse into directories\n if (stats.isDirectory && (options.followSymlinks || !stats.isSymlink)) {\n await this.findFilesRecursive(entryPath, options, results, depth + 1);\n }\n }\n } catch (_error) {\n // Skip directories we can't read\n }\n }\n\n private logOperation(_operation: string, path: string, success: boolean): void {\n this.operationLog.push({\n operation,\n path,\n timestamp: new Date(),\n success,\n });\n\n // Keep only last 1000 operations\n if (this.operationLog.length > 1000) {\n this.operationLog = this.operationLog.slice(-1000);\n }\n }\n}\n\nexport const _fileSystemService = FileSystemService.getInstance();\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/services/intelligent-router/infra/NaturalLanguageProcessor.ts","../src/services/intelligent-router/analysis/IntentRecognizer.ts","../src/services/intelligent-router/analysis/ParameterExtractor.ts","../src/services/intelligent-router/analysis/MultilingualDictionary.ts","../src/services/intelligent-router/infra/LanguageDetector.ts","../src/services/intelligent-router/app/CommandMappings.ts","../src/services/intelligent-router/analysis/UserPatternAnalyzer.ts","../src/services/intelligent-router/app/IntelligentRouterService.ts","../src/services/memory-system/system1-memory.ts","../src/services/memory-system/system2-memory.ts","../src/services/memory-system/dual-memory-engine.ts","../src/services/file-system/FileSystemService.ts"],"names":["input","pattern","a","elapsed","command","confidence","patterns","regex","_language","keywords","languages","type","code","matches","phrase","stats","data","chalk","id","node","antiPattern","nodeId","treeId","context","insight","metrics","domain","trace","root","path","filePath","dirPath","searchPath"],"mappings":"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","file":"index.js","sourcesContent":["export interface ProcessedInput {\n original: string;\n normalized: string;\n tokens: string[];\n stems: string[];\n entities: Entity[];\n language: string;\n sentiment?: number;\n _keywords: string[];\n}\n\nexport interface Entity {\n text: string;\n type: 'code' | 'file' | 'url' | 'number' | 'command' | 'language' | 'framework';\n value: unknown;\n position: number;\n}\n\nexport class NaturalLanguageProcessor {\n private stopWords: Map<string, Set<string>>;\n private contractionMap: Map<string, string>;\n private initialized: boolean = false;\n\n constructor() {\n this.stopWords = new Map();\n this.contractionMap = new Map();\n this.initializeStopWords();\n this.initializeContractions();\n }\n\n async initialize(): Promise<void> {\n if (this.initialized) {return;}\n\n // Initialize any async resources if needed\n this.initialized = true;\n }\n\n async process(input: string, language: string = 'en'): Promise<ProcessedInput> {\n const normalized = this.normalize(input, language);\n const tokens = this.tokenize(normalized, language);\n const stems = this.stem(tokens, language);\n const entities = this.extractEntities(input);\n const _keywords = this.extractKeywords(tokens, language);\n\n return {\n original: input,\n normalized,\n tokens,\n stems,\n entities,\n language,\n _keywords,\n };\n }\n\n private normalize(text: string, language: string): string {\n let normalized = text.toLowerCase().trim();\n\n // Expand contractions for English\n if (language === 'en') {\n this.contractionMap.forEach((expanded, contraction) => {\n const _regex = new RegExp(`\\\\b${contraction}\\\\b`, 'gi');\n normalized = normalized.replace(_regex, expanded);\n });\n }\n\n // Remove extra whitespace\n normalized = normalized.replace(/\\s+/g, ' ');\n\n // Language-specific normalization\n switch (language) {\n case 'ja':\n // Japanese specific normalization\n normalized = this.normalizeJapanese(normalized);\n break;\n case 'cn':\n // Chinese specific normalization\n normalized = this.normalizeChinese(normalized);\n break;\n case 'ko':\n // Korean specific normalization\n normalized = this.normalizeKorean(normalized);\n break;\n case 'vn':\n // Vietnamese specific normalization\n normalized = this.normalizeVietnamese(normalized);\n break;\n }\n\n return normalized;\n }\n\n private tokenize(text: string, language: string): string[] {\n switch (language) {\n case 'ja':\n return this.tokenizeJapanese(text);\n case 'cn':\n return this.tokenizeChinese(text);\n case 'ko':\n return this.tokenizeKorean(text);\n case 'vn':\n return this.tokenizeVietnamese(text);\n default:\n return this.tokenizeEnglish(text);\n }\n }\n\n private tokenizeEnglish(text: string): string[] {\n // Simple word boundary tokenization for English\n return text.split(/\\s+/).filter((token) => token.length > 0);\n }\n\n private tokenizeJapanese(text: string): string[] {\n // Simplified Japanese tokenization\n // In production, use a proper tokenizer like kuromoji\n const tokens: string[] = [];\n const _patterns = [\n /[\\u4e00-\\u9faf]+/g, // Kanji\n /[\\u3040-\\u309f]+/g, // Hiragana\n /[\\u30a0-\\u30ff]+/g, // Katakana\n /[a-zA-Z]+/g, // English\n /\\d+/g, // Numbers\n ];\n\n patterns.forEach((pattern) => {\n const _matches = text.match(pattern);\n if (_matches) {tokens.push(...matches);}\n });\n\n return tokens;\n }\n\n private tokenizeChinese(text: string): string[] {\n // Simplified Chinese tokenization\n // In production, use a proper tokenizer like jieba\n const tokens: string[] = [];\n\n // Character-based tokenization for Chinese\n for (const char of text) {\n if (/[\\u4e00-\\u9faf]/.test(char)) {\n tokens.push(char);\n } else if (/[a-zA-Z0-9]+/.test(char)) {\n tokens.push(char);\n }\n }\n\n return tokens;\n }\n\n private tokenizeKorean(text: string): string[] {\n // Simplified Korean tokenization\n const tokens: string[] = [];\n const _patterns = [\n /[\\uac00-\\ud7af]+/g, // Hangul\n /[a-zA-Z]+/g, // English\n /\\d+/g, // Numbers\n ];\n\n patterns.forEach((pattern) => {\n const _matches = text.match(pattern);\n if (_matches) {tokens.push(...matches);}\n });\n\n return tokens;\n }\n\n private stem(tokens: string[], language: string): string[] {\n // Simple stemming - in production, use proper stemming libraries\n if (language !== 'en') {\n return tokens; // Skip stemming for non-English\n }\n\n return tokens.map((token) => {\n // Very basic English stemming rules\n let stem = token;\n\n // Remove common suffixes\n if (stem.endsWith('ing')) {stem = stem.slice(0, -3);}\n else if (stem.endsWith('ed')) {stem = stem.slice(0, -2);}\n else if (stem.endsWith('ly')) {stem = stem.slice(0, -2);}\n else if (stem.endsWith('es')) {stem = stem.slice(0, -2);}\n else if (stem.endsWith('s') && stem.length > 3) {stem = stem.slice(0, -1);}\n\n return stem;\n });\n }\n\n private extractEntities(text: string): Entity[] {\n const entities: Entity[] = [];\n\n // Extract file paths\n const filePattern = /(?:\\/[\\w.-]+)+(?:\\.\\w+)?|(?:[a-zA-Z]:[\\\\/][\\w\\\\/.-]+)/g;\n const fileMatches = text.match(filePattern);\n if (fileMatches) {\n fileMatches.forEach((match) => {\n entities.push({\n text: match,\n type: 'file',\n value: match,\n position: text.indexOf(match),\n });\n });\n }\n\n // Extract URLs\n const _urlPattern = /https?:\\/\\/[^\\s]+/g;\n const _urlMatches = text.match(_urlPattern);\n if (_urlMatches) {\n urlMatches.forEach((match) => {\n entities.push({\n text: match,\n type: 'url',\n value: match,\n position: text.indexOf(match),\n });\n });\n }\n\n // Extract programming _languages\n const _languages = [\n 'javascript',\n 'typescript',\n 'python',\n 'java',\n 'rust',\n 'go',\n 'c++',\n 'c#',\n 'ruby',\n 'php',\n ];\n languages.forEach((lang) => {\n // Escape special _regex characters\n const _escapedLang = lang.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n const _regex = new RegExp(`\\\\b${_escapedLang}\\\\b`, 'gi');\n const _matches = text.match(_regex);\n if (_matches) {\n matches.forEach((match) => {\n entities.push({\n text: match,\n type: 'language',\n value: lang,\n position: text.indexOf(match),\n });\n });\n }\n });\n\n // Extract frameworks\n const frameworks = [\n 'react',\n 'vue',\n 'angular',\n 'next.js',\n 'express',\n 'django',\n 'flask',\n 'rails',\n 'spring',\n ];\n frameworks.forEach((framework) => {\n const _regex = new RegExp(`\\\\b${framework}\\\\b`, 'gi');\n const _matches = text.match(_regex);\n if (_matches) {\n matches.forEach((match) => {\n entities.push({\n text: match,\n type: 'framework',\n value: framework,\n position: text.indexOf(match),\n });\n });\n }\n });\n\n return entities;\n }\n\n private extractKeywords(tokens: string[], language: string): string[] {\n const stopWords = this.stopWords.get(language) ?? new Set();\n\n // Filter out stop words and short tokens\n const _keywords = tokens.filter((token) => {\n return token.length > 2 && !stopWords.has(token.toLowerCase());\n });\n\n // Sort by frequency\n const frequency = new Map<string, number>();\n keywords.forEach((keyword) => {\n frequency.set(keyword, (frequency.get(keyword) ?? 0) + 1);\n });\n\n return Array.from(frequency.entries())\n .sort((a, b) => b[1] - a[1])\n .slice(0, 10)\n .map(([keyword]) => keyword);\n }\n\n private normalizeJapanese(text: string): string {\n // Convert full-width characters to half-width\n return text.replace(/[A-Za-z0-9]/g, (char) => {\n return String.fromCharCode(char.charCodeAt(0) - 0xfee0);\n });\n }\n\n private normalizeChinese(text: string): string {\n // Convert traditional to simplified (simplified implementation)\n // In production, use a proper conversion library\n return text;\n }\n\n private normalizeKorean(text: string): string {\n // Korean normalization\n return text;\n }\n\n private normalizeVietnamese(text: string): string {\n // Vietnamese normalization - lowercase only, keep tones\n return text.toLowerCase();\n }\n\n private tokenizeVietnamese(text: string): string[] {\n // Vietnamese tokenization - word-based similar to English\n return text.split(/\\s+/).filter((token) => token.length > 0);\n }\n\n private initializeStopWords(): void {\n // English stop words\n this.stopWords.set(\n 'en',\n new Set([\n 'a',\n 'an',\n 'and',\n 'are',\n 'as',\n 'at',\n 'be',\n 'by',\n 'for',\n 'from',\n 'has',\n 'he',\n 'in',\n 'is',\n 'it',\n 'its',\n 'of',\n 'on',\n 'that',\n 'the',\n 'to',\n 'was',\n 'will',\n 'with',\n 'the',\n 'this',\n 'these',\n 'those',\n 'i',\n 'you',\n 'we',\n 'they',\n 'what',\n 'which',\n 'who',\n 'when',\n 'where',\n 'how',\n 'can',\n 'could',\n 'should',\n 'would',\n 'may',\n 'might',\n 'must',\n 'do',\n 'does',\n 'did',\n 'have',\n 'had',\n 'get',\n 'got',\n 'make',\n 'made',\n ]),\n );\n\n // Japanese particles and common words\n this.stopWords.set(\n 'ja',\n new Set([\n 'の',\n 'を',\n 'に',\n 'は',\n 'が',\n 'と',\n 'で',\n 'て',\n 'も',\n 'から',\n 'まで',\n 'より',\n 'へ',\n 'や',\n 'など',\n 'です',\n 'ます',\n 'する',\n 'した',\n 'これ',\n 'それ',\n 'あれ',\n 'この',\n 'その',\n 'あの',\n ]),\n );\n\n // Chinese common words\n this.stopWords.set(\n 'cn',\n new Set([\n '的',\n '了',\n '在',\n '是',\n '我',\n '有',\n '和',\n '就',\n '不',\n '人',\n '都',\n '一',\n '一个',\n '上',\n '也',\n '很',\n '到',\n '说',\n '要',\n '去',\n '你',\n '会',\n '着',\n '没有',\n '看',\n '好',\n '自己',\n '这',\n '那',\n ]),\n );\n\n // Korean particles and common words\n this.stopWords.set(\n 'ko',\n new Set([\n '의',\n '를',\n '을',\n '에',\n '가',\n '이',\n '은',\n '는',\n '와',\n '과',\n '에서',\n '으로',\n '로',\n '부터',\n '까지',\n '입니다',\n '합니다',\n '이다',\n '하다',\n ]),\n );\n\n // Vietnamese common words\n this.stopWords.set(\n 'vn',\n new Set([\n 'và',\n 'của',\n 'là',\n 'có',\n 'được',\n 'trong',\n 'với',\n 'này',\n 'cho',\n 'để',\n 'không',\n 'nhưng',\n 'cũng',\n 'như',\n 'từ',\n 'đến',\n 'sau',\n 'trước',\n 'một',\n 'các',\n 'bị',\n 'đã',\n 'sẽ',\n 'khi',\n 'nếu',\n 'thì',\n 'vì',\n 'hoặc',\n 'hay',\n 'rất',\n ]),\n );\n }\n\n private initializeContractions(): void {\n // Common English contractions\n this.contractionMap.set(\"don't\", 'do not');\n this.contractionMap.set(\"won't\", 'will not');\n this.contractionMap.set(\"can't\", 'cannot');\n this.contractionMap.set(\"n't\", ' not');\n this.contractionMap.set(\"'re\", ' are');\n this.contractionMap.set(\"'ve\", ' have');\n this.contractionMap.set(\"'ll\", ' will');\n this.contractionMap.set(\"'d\", ' would');\n this.contractionMap.set(\"'m\", ' am');\n this.contractionMap.set(\"let's\", 'let us');\n this.contractionMap.set(\"it's\", 'it is');\n this.contractionMap.set(\"that's\", 'that is');\n this.contractionMap.set(\"what's\", 'what is');\n this.contractionMap.set(\"there's\", 'there is');\n this.contractionMap.set(\"here's\", 'here is');\n }\n\n async detectIntent(processedInput: ProcessedInput): Promise<string[]> {\n // Extract potential intents based on _keywords\n const intents: string[] = [];\n const _keywords = `${processedInput.keywords.join(' ') } ${ processedInput.normalized}`;\n\n // Code-related intents\n if (/\\b(write|create|generate|implement|build|code|program|develop)\\b/i.test(_keywords)) {\n intents.push('code_generation');\n }\n\n // Image-related intents\n if (/\\b(image|picture|photo|draw|illustrate|visual|graphic)\\b/i.test(_keywords)) {\n intents.push('image_generation');\n }\n\n // Video-related intents\n if (/\\b(video|movie|animation|clip|film)\\b/i.test(_keywords)) {\n intents.push('video_generation');\n }\n\n // Test-related intents\n if (/\\b(test|testing|unit test|integration test|e2e)\\b/i.test(_keywords)) {\n intents.push('test_generation');\n }\n\n // Review-related intents\n if (/\\b(review|check|analyze|improve|refactor|optimize)\\b/i.test(_keywords)) {\n intents.push('code_review');\n }\n\n return intents;\n }\n}\n","import { ProcessedInput } from '../infra/NaturalLanguageProcessor';\nimport type { CommandIntent, RouterConfig } from '../types/common-types';\n\nexport interface RecognizedIntent {\n command: string;\n confidence: number;\n alternatives?: Array<{ command: string; confidence: number }>;\n reasoning?: string;\n}\n\ninterface IntentPattern {\n command: string;\n patterns: RegExp[];\n keywords: string[];\n weight: number;\n}\n\ninterface ContextClue {\n before: string[];\n after: string[];\n weight: number;\n}\n\nexport interface IntentRecognizerDependencies {\n knownCommands: string[];\n}\n\nexport class IntentRecognizer {\n private config: Required<RouterConfig>;\n private intentPatterns: Map<string, IntentPattern[]>;\n private contextClues: Map<string, ContextClue>;\n private commandHistory: string[] = [];\n private initialized: boolean = false;\n private dependencies: IntentRecognizerDependencies;\n private metrics = {\n totalCalls: 0,\n nullReturns: 0,\n fuzzyOnlyBlocked: 0,\n responseTimes: [] as number[],\n };\n\n constructor(\n config: Required<RouterConfig>,\n dependencies: IntentRecognizerDependencies\n ) {\n this.config = config;\n this.dependencies = dependencies;\n this.intentPatterns = new Map();\n this.contextClues = new Map();\n this.initializePatterns();\n }\n\n async initialize(): Promise<void> {\n if (this.initialized) {return;}\n\n // Initialize ML models or other async resources if needed\n this.initialized = true;\n }\n\n async recognize(input: ProcessedInput): Promise<RecognizedIntent | null> {\n const startTime = performance.now();\n this.metrics.totalCalls++;\n \n // Input length limit (ReDoS protection)\n if ((input.normalized?.length ?? 0) > 8192) {\n this.metrics.nullReturns++;\n return null;\n }\n \n const scores = new Map<string, number>();\n\n // Calculate scores in specific order (fuzzy last)\n // 1. Pattern matching score\n this.calculatePatternScores(input, scores);\n\n // 2. Keyword matching score\n this.calculateKeywordScores(input, scores);\n\n // 3. Context-based scoring\n this.calculateContextScores(input, scores);\n\n // 4. Entity-based scoring (with adjusted weights)\n this.calculateEntityScores(input, scores);\n\n // 5. Historical pattern scoring\n this.calculateHistoricalScores(input, scores);\n\n // 6. Fuzzy command matching LAST (to avoid overriding)\n this.calculateFuzzyCommandScores(input, scores);\n \n // Early rejection for fuzzy-only matches\n if (scores.size === 1 && (scores.values().next().value ?? 0) <= 5.0) {\n this.metrics.nullReturns++;\n this.metrics.fuzzyOnlyBlocked++;\n return null;\n }\n\n // Get top candidates\n const candidates = Array.from(scores.entries())\n .sort((a, b) => b[1] - a[1])\n .slice(0, this.config.maxAlternatives + 1);\n\n if (candidates.length === 0) {\n this.metrics.nullReturns++;\n const elapsed = performance.now() - startTime;\n this.metrics.responseTimes.push(elapsed);\n return null;\n }\n\n // Normalize scores to confidence values with cap\n const maxScore = Math.max(candidates[0]?.[1] ?? 1, 1e-9);\n const normalizedCandidates = candidates.map(([command, score]) => {\n const rawConfidence = score / maxScore;\n // Apply cap to prevent fuzzy-only high confidence\n const confidence = Math.min(rawConfidence, 0.7);\n return { command, confidence };\n });\n \n // Minimum confidence threshold\n const minConfidence = 0.35;\n if (normalizedCandidates[0]?.confidence < minConfidence) {\n this.metrics.nullReturns++;\n const elapsed = performance.now() - startTime;\n this.metrics.responseTimes.push(elapsed);\n return null;\n }\n\n const topCandidate = normalizedCandidates[0];\n if (!topCandidate) {\n throw new Error('No candidates found for intent recognition');\n }\n const alternatives = normalizedCandidates.slice(1);\n\n const elapsed = performance.now() - startTime;\n this.metrics.responseTimes.push(elapsed);\n \n return {\n command: topCandidate.command,\n confidence: topCandidate.confidence,\n alternatives: alternatives.length > 0 ? alternatives : undefined,\n reasoning: this.generateReasoning(input, topCandidate.command),\n };\n }\n\n private calculatePatternScores(input: ProcessedInput, scores: Map<string, number>): void {\n const patterns = this.intentPatterns.get(input.language) ?? this.intentPatterns.get('en') ?? [];\n\n patterns.forEach((pattern) => {\n let score = 0;\n\n // Check regex patterns\n pattern.patterns.forEach((regex) => {\n if (regex.test(input.normalized)) {\n score += pattern.weight;\n }\n if (regex.test(input.original)) {\n score += pattern.weight * 0.5;\n }\n });\n\n if (score > 0) {\n const currentScore = scores.get(pattern.command) ?? 0;\n scores.set(pattern.command, currentScore + score);\n }\n });\n }\n\n private calculateKeywordScores(input: ProcessedInput, scores: Map<string, number>): void {\n const patterns = this.intentPatterns.get(input.language) ?? this.intentPatterns.get('en') ?? [];\n\n patterns.forEach((pattern) => {\n let matchCount = 0;\n\n pattern.keywords.forEach((keyword) => {\n if (input.keywords.includes(keyword.toLowerCase())) {\n matchCount++;\n }\n if (input.tokens.includes(keyword.toLowerCase())) {\n matchCount += 0.5;\n }\n });\n\n if (matchCount > 0) {\n const score = matchCount * pattern.weight * 0.8;\n const currentScore = scores.get(pattern.command) ?? 0;\n scores.set(pattern.command, currentScore + score);\n }\n });\n }\n\n private calculateContextScores(_input: ProcessedInput, scores: Map<string, number>): void {\n // Use command history for context\n if (this.commandHistory.length > 0) {\n const lastCommand = this.commandHistory[this.commandHistory.length - 1];\n\n // Boost related commands\n const relatedCommands = this.getRelatedCommands(lastCommand ?? '');\n relatedCommands.forEach((command) => {\n const currentScore = scores.get(command) ?? 0;\n scores.set(command, currentScore + 0.5);\n });\n }\n }\n\n private calculateEntityScores(input: ProcessedInput, scores: Map<string, number>): void {\n // Adjusted entity weights (0.2-0.3 range)\n const entityWeights = {\n code: 0.25, // Reduced to prevent /code bias\n language: 0.25,\n framework: 0.25,\n file: 0.3,\n url: 0.3,\n number: 0.2,\n default: 0.2\n };\n \n input.entities.forEach((entity) => {\n const weight = entityWeights[entity.type as keyof typeof entityWeights] ?? entityWeights.default;\n \n switch (entity.type) {\n case 'code':\n case 'language':\n case 'framework':\n this.boostScore(scores, '/code', weight * 2);\n this.boostScore(scores, '/test', weight);\n this.boostScore(scores, '/review', weight);\n break;\n case 'file':\n this.boostScore(scores, '/code', weight * 0.5);\n this.boostScore(scores, '/review', weight);\n this.boostScore(scores, '/export', weight * 0.5);\n break;\n case 'url':\n this.boostScore(scores, '/image', weight);\n this.boostScore(scores, '/video', weight);\n break;\n }\n });\n }\n\n private calculateHistoricalScores(_input: ProcessedInput, scores: Map<string, number>): void {\n // Skip if no history\n if (this.commandHistory.length === 0) {\n return;\n }\n \n const recent = this.commandHistory.slice(-10); // Last 10 commands\n const base = 0.2;\n \n for (let i = 0; i < recent.length; i++) {\n // Skip consecutive duplicates to prevent over-boosting\n if (i > 0 && recent[i] === recent[i - 1]) continue;\n \n // Exponential decay based on recency\n const weight = base * Math.exp(-(recent.length - 1 - i) * 0.1);\n const cmd = recent[i];\n scores.set(cmd, (scores.get(cmd) ?? 0) + weight);\n }\n \n // Maintain history size limit\n if (this.commandHistory.length > 100) {\n this.commandHistory = this.commandHistory.slice(-100);\n }\n }\n\n private boostScore(scores: Map<string, number>, command: string, boost: number): void {\n const currentScore = scores.get(command) ?? 0;\n scores.set(command, currentScore + boost);\n }\n\n private getRelatedCommands(command: string): string[] {\n const relationships: Record<string, string[]> = {\n '/code': ['/test', '/review', '/commit'],\n '/test': ['/code', '/review'],\n '/review': ['/code', '/test', '/commit'],\n '/image': ['/video'],\n '/video': ['/image'],\n '/init': ['/add-dir', '/setup'],\n '/setup': ['/init', '/config'],\n '/config': ['/settings', '/setup'],\n };\n\n return relationships[command] ?? [];\n }\n\n private generateReasoning(input: ProcessedInput, _command: string): string {\n const reasons: string[] = [];\n\n if (input.keywords.length > 0) {\n reasons.push(`Keywords detected: ${input.keywords.slice(0, 3).join(', ')}`);\n }\n\n if (input.entities.length > 0) {\n const entityTypes = [...new Set(input.entities.map((e) => e.type))];\n reasons.push(`Entities found: ${entityTypes.join(', ')}`);\n }\n\n return reasons.join('; ');\n }\n\n async updateModel(_input: string, correctCommand: string, _wasCorrect: boolean): Promise<void> {\n // Update command history\n this.commandHistory.push(correctCommand);\n if (this.commandHistory.length > 100) {\n this.commandHistory.shift();\n }\n\n // In a real implementation, this would update ML model weights\n // For now, we just track the feedback\n }\n \n // Get performance metrics\n getMetrics() {\n const times = this.metrics.responseTimes.slice(-10000); // Last 10k\n if (times.length === 0) {\n return {\n p95_ms: 0,\n avg_ms: 0,\n total: 0,\n null_rate: 0,\n fuzzy_only_blocked: 0\n };\n }\n \n const sorted = [...times].sort((a, b) => a - b);\n const p95Index = Math.floor(sorted.length * 0.95);\n \n return {\n p95_ms: sorted[p95Index] ?? 0,\n avg_ms: times.reduce((a, b) => a + b, 0) / times.length,\n total: this.metrics.totalCalls,\n null_rate: this.metrics.totalCalls > 0 \n ? this.metrics.nullReturns / this.metrics.totalCalls \n : 0,\n fuzzy_only_blocked: this.metrics.fuzzyOnlyBlocked\n };\n }\n\n private initializePatterns(): void {\n // English patterns\n const englishPatterns: IntentPattern[] = [\n // Direct command patterns (highest priority)\n {\n command: '/help',\n patterns: [\n /^\\/help$/i,\n /^help$/i,\n /\\b(help|assistance|guide|usage)\\b/i,\n /how\\s+to\\s+use/i,\n /\\bshow\\s+(me\\s+)?(commands|options)\\b/i,\n ],\n keywords: ['help', 'assistance', 'guide', 'usage', 'commands', 'options'],\n weight: 10.0, // Highest priority\n },\n {\n command: '/status',\n patterns: [\n /^\\/status$/i,\n /^status$/i,\n /\\b(status|state|condition|health)\\b/i,\n /check\\s+(status|health|state)/i,\n /\\bhow.*doing\\b/i,\n ],\n keywords: ['status', 'state', 'condition', 'health', 'check'],\n weight: 10.0,\n },\n {\n command: '/version',\n patterns: [\n /^\\/version$/i,\n /^version$/i,\n /\\b(version|ver|build|release)\\b/i,\n /what\\s+(version|ver)/i,\n /\\bshow\\s+(version|ver)\\b/i,\n ],\n keywords: ['version', 'ver', 'build', 'release'],\n weight: 10.0,\n },\n {\n command: '/test',\n patterns: [\n /^\\/test$/i,\n /^test$/i,\n /\\b(test|testing|spec|unit.*test|integration.*test)\\b/i,\n /\\b(run|execute|start).*test/i,\n /\\btest.*(?:suite|case|file)/i,\n ],\n keywords: ['test', 'testing', 'spec', 'unit', 'integration', 'jest', 'mocha'],\n weight: 9.0,\n },\n {\n command: '/brain',\n patterns: [\n /^\\/brain$/i,\n /^brain$/i,\n /\\b(brain|mode|thinking|cognitive)\\b/i,\n /\\bchange.*mode/i,\n /\\b(switch|activate).*brain/i,\n ],\n keywords: ['brain', 'mode', 'thinking', 'cognitive', 'switch'],\n weight: 9.0,\n },\n {\n command: '/code',\n patterns: [\n /\\b(write|create|generate|implement|build|code|program|develop|make)\\b.*\\b(code|function|class|component|script|program|app)\\b/i,\n /\\b(implement|create|write|build)\\s+(?:a\\s+)?(\\w+)/i,\n /\\bcode\\s+(?:for|to)\\b/i,\n ],\n keywords: [\n 'write',\n 'create',\n 'generate',\n 'implement',\n 'build',\n 'code',\n 'program',\n 'function',\n 'class',\n 'component',\n ],\n weight: 1.0,\n },\n {\n command: '/image',\n patterns: [\n /\\b(create|generate|make|draw|design|produce)\\b.*\\b(image|picture|photo|illustration|graphic|visual|art)\\b/i,\n /\\b(image|picture|photo|illustration|graphic)\\s+of\\b/i,\n /\\bdraw\\s+(?:a\\s+)?(\\w+)/i,\n ],\n keywords: [\n 'image',\n 'picture',\n 'photo',\n 'draw',\n 'illustration',\n 'visual',\n 'graphic',\n 'art',\n 'design',\n ],\n weight: 1.0,\n },\n {\n command: '/video',\n patterns: [\n /\\b(create|generate|make|produce|render)\\b.*\\b(video|movie|animation|clip|film)\\b/i,\n /\\b(video|animation|movie)\\s+of\\b/i,\n /\\banimate\\s+(?:a\\s+)?(\\w+)/i,\n ],\n keywords: ['video', 'movie', 'animation', 'clip', 'film', 'animate', 'motion', 'render'],\n weight: 1.0,\n },\n {\n command: '/test',\n patterns: [\n /\\b(write|create|generate)\\b.*\\b(test|tests|testing|unit test|integration test)\\b/i,\n /\\btest\\s+(?:for|the)\\b/i,\n /\\b(unit|integration|e2e)\\s+test/i,\n ],\n keywords: ['test', 'testing', 'unit', 'integration', 'e2e', 'coverage', 'spec'],\n weight: 1.0,\n },\n {\n command: '/review',\n patterns: [\n /\\b(review|check|analyze|improve|refactor|optimize)\\b.*\\b(code|implementation|function)\\b/i,\n /\\bcode\\s+review\\b/i,\n /\\b(improve|optimize|refactor)\\s+this\\b/i,\n ],\n keywords: ['review', 'check', 'analyze', 'improve', 'refactor', 'optimize', 'quality'],\n weight: 1.0,\n },\n // Math commands\n {\n command: '/calc',\n patterns: [\n /\\b(calculate|compute|calc|evaluate|solve)\\b.*\\b(expression|equation|formula|math)\\b/i,\n /\\b(what\\s+is|compute|calculate)\\s+\\d+\\s*[\\+\\-\\*\\/\\^]\\s*\\d+/i,\n /\\b(sin|cos|tan|sqrt|log|exp|pow|abs)\\s*\\(/i,\n /^\\d+\\s*[\\+\\-\\*\\/\\^]\\s*\\d+/,\n /\\b(math|mathematical)\\s+(expression|calculation)/i,\n ],\n keywords: ['calculate', 'compute', 'calc', 'math', 'evaluate', 'expression', 'formula', 'sin', 'cos', 'sqrt'],\n weight: 1.5,\n },\n {\n command: '/solve',\n patterns: [\n /\\b(solve|find|resolve)\\b.*\\b(equation|system|root|solution|variable)\\b/i,\n /\\bsolve\\s+for\\s+[a-z]/i,\n /\\b(equation|equations)\\s+(system|solving)/i,\n /\\bfind\\s+(root|solution|value)\\s+of\\b/i,\n /[a-z]\\s*[\\^]\\s*\\d+\\s*[\\+\\-]\\s*\\d+\\s*=\\s*\\d+/i,\n ],\n keywords: ['solve', 'equation', 'system', 'root', 'solution', 'find', 'variable', 'unknown'],\n weight: 1.5,\n },\n {\n command: '/plot',\n patterns: [\n /\\b(plot|graph|draw|visualize|chart)\\b.*\\b(function|equation|data|curve)\\b/i,\n /\\b(draw|create|make)\\s+(graph|plot|chart)\\s+of\\b/i,\n /\\bplot\\s+[a-z]\\s*=\\s*/i,\n /\\b(visualize|show|display)\\s+(function|graph)/i,\n /\\b(sin|cos|tan|polynomial|quadratic|linear)\\s+(graph|plot)/i,\n ],\n keywords: ['plot', 'graph', 'draw', 'visualize', 'chart', 'curve', 'function', 'diagram'],\n weight: 1.5,\n },\n // Shell command\n {\n command: '/shell',\n patterns: [\n /\\b(show|display|read|cat|view)\\s+(file|contents?|text)\\b/i,\n /\\b(list|ls|dir|show)\\s+(files?|directories?|folders?)\\b/i,\n /\\b(search|find|grep|look)\\s+(for|in)\\s+/i,\n /\\b(what|which)\\s+files?\\s+(are|exist)/i,\n /\\b(open|read|check|examine|inspect)\\s+\\w+\\.\\w+/i,\n /\\b(navigate|cd|go)\\s+to\\s+/i,\n /\\bshow\\s+me\\s+(the\\s+)?(contents?|files?|folders?)/i,\n /\\bfind\\s+all\\s+\\w+\\s+files?\\b/i,\n ],\n keywords: ['show', 'list', 'search', 'find', 'file', 'directory', 'folder', 'contents', 'read', 'grep', 'ls'],\n weight: 1.5,\n },\n ];\n\n // Japanese patterns\n const japanesePatterns: IntentPattern[] = [\n // Direct command patterns (highest priority)\n {\n command: '/help',\n patterns: [\n /^\\/help$/i,\n /^ヘルプ$/,\n /(?:ヘルプ|使い方|使用方法|操作方法)/,\n /どう(?:やって|使う)/,\n /(?:コマンド|方法).*(?:教えて|見せて)/,\n ],\n keywords: ['ヘルプ', '使い方', '使用方法', 'コマンド', '操作方法'],\n weight: 10.0,\n },\n {\n command: '/status',\n patterns: [\n /^\\/status$/i,\n /^ステータス$/,\n /(?:ステータス|状態|状況)/,\n /(?:状態|調子).*(?:確認|チェック)/,\n /どう(?:なって|いる)/,\n ],\n keywords: ['ステータス', '状態', '状況', '確認', 'チェック'],\n weight: 10.0,\n },\n {\n command: '/version',\n patterns: [\n /^\\/version$/i,\n /^バージョン$/,\n /(?:バージョン|版|ver)/,\n /(?:バージョン|版).*(?:確認|教えて)/,\n ],\n keywords: ['バージョン', '版', 'ver'],\n weight: 10.0,\n },\n {\n command: '/test',\n patterns: [\n /^\\/test$/i,\n /^テスト$/,\n /(?:テスト|試験|検証)/,\n /(?:テスト|試験).*(?:実行|開始)/,\n ],\n keywords: ['テスト', '試験', '検証', '実行'],\n weight: 9.0,\n },\n {\n command: '/brain',\n patterns: [\n /^\\/brain$/i,\n /^ブレイン$/,\n /(?:ブレイン|脳|モード)/,\n /(?:モード|思考).*(?:変更|切り替え)/,\n ],\n keywords: ['ブレイン', '脳', 'モード', '思考'],\n weight: 9.0,\n },\n {\n command: '/code',\n patterns: [\n /(?:コード|プログラム|関数|クラス|メソッド).*(?:書|作|実装|生成)/,\n /(?:実装|開発|作成)(?:して|する)/,\n /プログラ(?:ム|ミング)/,\n ],\n keywords: ['コード', '実装', 'プログラム', '関数', 'クラス', '作成', '開発', '書く'],\n weight: 1.0,\n },\n {\n command: '/image',\n patterns: [\n /(?:画像|イメージ|絵|イラスト|ビジュアル).*(?:生成|作|描)/,\n /(?:描|作).*(?:画像|絵|イラスト)/,\n /画像を/,\n ],\n keywords: ['画像', 'イメージ', '絵', 'イラスト', 'ビジュアル', '描く', '生成'],\n weight: 1.0,\n },\n {\n command: '/video',\n patterns: [\n /(?:動画|ビデオ|アニメーション|ムービー).*(?:作|生成|出力)/,\n /(?:作|生成).*(?:動画|ビデオ|アニメーション)/,\n /動画を/,\n ],\n keywords: ['動画', 'ビデオ', 'アニメーション', 'ムービー', '映像', '作成'],\n weight: 1.0,\n },\n {\n command: '/test',\n patterns: [\n /(?:テスト|試験).*(?:作|書|生成)/,\n /(?:ユニット|統合|E2E).*テスト/,\n /テスト(?:コード|を)/,\n ],\n keywords: ['テスト', '試験', 'ユニット', '統合', 'カバレッジ'],\n weight: 1.0,\n },\n {\n command: '/review',\n patterns: [\n /(?:レビュー|確認|改善|リファクタ).*(?:して|する)/,\n /コード.*(?:レビュー|確認|改善)/,\n /(?:品質|最適化)/,\n ],\n keywords: ['レビュー', '確認', '改善', 'リファクタ', '最適化', '品質'],\n weight: 1.0,\n },\n // Math commands in Japanese\n {\n command: '/calc',\n patterns: [\n /(?:計算|演算|算出).*(?:して|する)/,\n /\\d+\\s*[\\+\\-\\*\\/\\^]\\s*\\d+/,\n /(?:何|いくつ|いくら).*(?:になる|です)/,\n /(?:sin|cos|tan|sqrt|ルート|平方根)/,\n /(?:数式|式|計算式).*(?:計算|演算)/,\n ],\n keywords: ['計算', '演算', '算出', '数式', '式', '数学', 'ルート', '平方根'],\n weight: 1.5,\n },\n {\n command: '/solve',\n patterns: [\n /(?:方程式|連立方程式|等式).*(?:解|求|計算)/,\n /(?:解|根|値).*(?:求|探|計算)/,\n /[a-z]\\s*について.*(?:解|求)/,\n /(?:変数|未知数).*(?:求|計算)/,\n ],\n keywords: ['方程式', '連立', '解', '根', '変数', '未知数', '求める'],\n weight: 1.5,\n },\n {\n command: '/plot',\n patterns: [\n /(?:グラフ|図|チャート).*(?:描|作|表示)/,\n /(?:関数|曲線).*(?:描画|プロット|可視化)/,\n /(?:可視化|表示|描画).*(?:して|する)/,\n /(?:sin|cos|二次|一次|多項式).*グラフ/,\n ],\n keywords: ['グラフ', '図', 'チャート', '描画', 'プロット', '可視化', '曲線', '関数'],\n weight: 1.5,\n },\n // Shell command in Japanese\n {\n command: '/shell',\n patterns: [\n /(?:ファイル|フォルダ|ディレクトリ).*(?:表示|見|確認|リスト)/,\n /(?:内容|中身|テキスト).*(?:表示|見|確認)/,\n /(?:検索|探|grep|サーチ).*(?:して|する)/,\n /(?:何|どんな).*ファイル.*(?:ある|存在)/,\n /\\w+\\.\\w+.*(?:開|読|確認)/,\n /(?:移動|cd|ナビゲート).*(?:して|する)/,\n ],\n keywords: ['ファイル', 'フォルダ', 'ディレクトリ', '表示', '検索', '内容', '中身', 'リスト'],\n weight: 1.5,\n },\n ];\n\n // Chinese patterns\n const chinesePatterns: IntentPattern[] = [\n {\n command: '/code',\n patterns: [\n /(?:写|编写|创建|实现|生成).*(?:代码|程序|函数|类)/,\n /(?:代码|程序|函数).*(?:写|创建|实现)/,\n /编程/,\n ],\n keywords: ['代码', '编写', '实现', '程序', '函数', '类', '创建', '开发'],\n weight: 1.0,\n },\n {\n command: '/image',\n patterns: [\n /(?:生成|创建|制作|画).*(?:图像|图片|插图)/,\n /(?:图像|图片|插图).*(?:生成|创建)/,\n /画.*图/,\n ],\n keywords: ['图像', '图片', '插图', '画', '生成', '创建', '视觉'],\n weight: 1.0,\n },\n {\n command: '/video',\n patterns: [\n /(?:创建|生成|制作).*(?:视频|动画|影片)/,\n /(?:视频|动画).*(?:创建|生成)/,\n /动画/,\n ],\n keywords: ['视频', '动画', '影片', '创建', '生成', '制作'],\n weight: 1.0,\n },\n ];\n\n // Korean patterns\n const koreanPatterns: IntentPattern[] = [\n {\n command: '/code',\n patterns: [\n /(?:코드|프로그램|함수|클래스).*(?:작성|생성|구현)/,\n /(?:구현|개발|만들)/,\n /프로그래밍/,\n ],\n keywords: ['코드', '프로그램', '함수', '클래스', '구현', '개발', '작성'],\n weight: 1.0,\n },\n {\n command: '/image',\n patterns: [\n /(?:이미지|그림|일러스트).*(?:생성|만들|그리)/,\n /(?:그림|이미지).*그려/,\n /이미지/,\n ],\n keywords: ['이미지', '그림', '일러스트', '생성', '그리기'],\n weight: 1.0,\n },\n {\n command: '/video',\n patterns: [\n /(?:비디오|동영상|애니메이션).*(?:생성|만들|제작)/,\n /(?:동영상|비디오).*만들/,\n /애니메이션/,\n ],\n keywords: ['비디오', '동영상', '애니메이션', '생성', '제작'],\n weight: 1.0,\n },\n ];\n\n // Store patterns by language\n this.intentPatterns.set('en', englishPatterns);\n this.intentPatterns.set('ja', japanesePatterns);\n this.intentPatterns.set('cn', chinesePatterns);\n this.intentPatterns.set('ko', koreanPatterns);\n }\n\n private calculateFuzzyCommandScores(input: ProcessedInput, scores: Map<string, number>): void {\n // Use injected known commands (SSOT)\n const knownCommands = this.dependencies.knownCommands;\n\n const inputText = input.normalized.trim();\n \n // Direct fuzzy matching for commands\n knownCommands.forEach(command => {\n const distance = this.calculateEditDistance(inputText, command);\n const commandWithoutSlash = command.substring(1);\n const distanceWithoutSlash = this.calculateEditDistance(inputText, commandWithoutSlash);\n \n // Use the better distance\n const bestDistance = Math.min(distance, distanceWithoutSlash);\n \n // Only consider edit distance of 1 (stricter matching)\n if (bestDistance <= 1) {\n const fuzzyScore = 5.0; // Fixed low score for fuzzy matches\n const currentScore = scores.get(command) ?? 0;\n scores.set(command, Math.max(currentScore, fuzzyScore));\n }\n });\n }\n\n private calculateEditDistance(s1: string, s2: string): number {\n // Levenshtein distance implementation\n const len1 = s1.length;\n const len2 = s2.length;\n \n // Create matrix\n const matrix: number[][] = Array(len1 + 1).fill(null).map(() => Array(len2 + 1).fill(0));\n \n // Initialize first row and column\n for (let i = 0; i <= len1; i++) matrix[i][0] = i;\n for (let j = 0; j <= len2; j++) matrix[0][j] = j;\n \n // Fill the matrix\n for (let i = 1; i <= len1; i++) {\n for (let j = 1; j <= len2; j++) {\n if (s1[i - 1] === s2[j - 1]) {\n matrix[i][j] = matrix[i - 1][j - 1];\n } else {\n matrix[i][j] = Math.min(\n matrix[i - 1][j] + 1, // deletion\n matrix[i][j - 1] + 1, // insertion\n matrix[i - 1][j - 1] + 1 // substitution\n );\n }\n }\n }\n \n return matrix[len1][len2];\n }\n}\n","export class ParameterExtractor {\n async extract(\n input: string,\n command: string,\n language: string,\n ): Promise<Record<string, unknown>> {\n const parameters: Record<string, unknown> = {};\n\n switch (command) {\n case '/code':\n return this.extractCodeParameters(input, language);\n case '/image':\n return this.extractImageParameters(input, language);\n case '/video':\n return this.extractVideoParameters(input, language);\n case '/test':\n return this.extractTestParameters(input, language);\n case '/review':\n return this.extractReviewParameters(input, language);\n case '/lang':\n return this.extractLanguageParameters(input, language);\n default:\n return this.extractGenericParameters(input, language);\n }\n }\n\n private extractCodeParameters(_input: string, language: string): Record<string, unknown> {\n const params: Record<string, unknown> = {};\n\n // Extract _description (remove command keywords)\n const _description = this.cleanDescription(input, language, [\n 'write',\n 'create',\n 'generate',\n 'implement',\n 'build',\n 'code',\n 'program',\n '書く',\n '作る',\n '実装',\n 'コード',\n 'プログラム',\n '写',\n '编写',\n '创建',\n '实现',\n '代码',\n '程序',\n '작성',\n '생성',\n '구현',\n '코드',\n '프로그램',\n 'viết',\n 'tạo',\n 'xây dựng',\n 'mã',\n 'chương trình',\n ]);\n\n _params.description = _description;\n\n // Detect programming language\n const _progLang = this.detectProgrammingLanguage(input);\n if (_progLang) { params.language = _progLang;\n }\n\n // Detect _framework\n const _framework = this.detectFramework(input);\n if (_framework) { params.framework = _framework;\n }\n\n // Extract file path if mentioned\n const _filePath = this.extractFilePath(input);\n if (_filePath) { params.file = _filePath;\n }\n\n return _params;\n }\n\n private extractImageParameters(_input: string, language: string): Record<string, unknown> {\n const params: Record<string, unknown> = {};\n\n // Extract _prompt (remove command keywords)\n const _prompt = this.cleanDescription(input, language, [\n 'create',\n 'generate',\n 'make',\n 'draw',\n 'design',\n 'image',\n 'picture',\n '生成',\n '作る',\n '描く',\n '画像',\n 'イメージ',\n '创建',\n '生成',\n '画',\n '图像',\n '图片',\n '생성',\n '그리기',\n '이미지',\n '그림',\n 'tạo',\n 'vẽ',\n 'hình ảnh',\n 'ảnh',\n ]);\n\n _params.prompt = _prompt;\n\n // Detect _style\n const _style = this.detectArtStyle(input);\n if (_style) { params.style = _style;\n }\n\n // Extract _dimensions\n const _dimensions = this.extractDimensions(input);\n if (_dimensions) { params.width = dimensions.width;\n _params.height = dimensions.height;\n }\n\n return _params;\n }\n\n private extractVideoParameters(_input: string, language: string): Record<string, unknown> {\n const params: Record<string, unknown> = {};\n\n // Extract _description\n const _description = this.cleanDescription(input, language, [\n 'create',\n 'generate',\n 'make',\n 'produce',\n 'video',\n 'animation',\n '作る',\n '生成',\n '動画',\n 'ビデオ',\n 'アニメーション',\n '创建',\n '生成',\n '视频',\n '动画',\n '생성',\n '비디오',\n '동영상',\n '애니메이션',\n 'tạo',\n 'video',\n 'hoạt hình',\n ]);\n\n _params.description = _description;\n\n // Extract _duration\n const _duration = this.extractDuration(input);\n if (_duration) { params.duration = _duration;\n }\n\n // Detect _format\n const _format = this.detectVideoFormat(input);\n if (_format) { params.format = _format;\n }\n\n return _params;\n }\n\n private extractTestParameters(_input: string, language: string): Record<string, unknown> {\n const params: Record<string, unknown> = {};\n\n // Extract _description\n const _description = this.cleanDescription(input, language, [\n 'write',\n 'create',\n 'generate',\n 'test',\n 'testing',\n '書く',\n '作る',\n 'テスト',\n '試験',\n '写',\n '创建',\n '测试',\n '작성',\n '생성',\n '테스트',\n 'viết',\n 'tạo',\n 'kiểm tra',\n ]);\n\n _params.description = _description;\n\n // Detect test type\n const _testType = this.detectTestType(input);\n if (_testType) { params.type = _testType;\n }\n\n // Extract file if mentioned\n const _filePath = this.extractFilePath(input);\n if (_filePath) { params.file = _filePath;\n }\n\n return _params;\n }\n\n private extractReviewParameters(_input: string, language: string): Record<string, unknown> {\n const params: Record<string, unknown> = {};\n\n // Extract _description\n const _description = this.cleanDescription(input, language, [\n 'review',\n 'check',\n 'analyze',\n 'improve',\n 'refactor',\n 'レビュー',\n '確認',\n '改善',\n 'リファクタ',\n '审查',\n '检查',\n '分析',\n '改进',\n '리뷰',\n '검토',\n '분석',\n '개선',\n 'xem xét',\n 'kiểm tra',\n 'phân tích',\n 'cải thiện',\n ]);\n\n _params.description = _description;\n\n // Extract file if mentioned\n const _filePath = this.extractFilePath(input);\n if (_filePath) { params.file = _filePath;\n }\n\n // Detect review _focus\n const _focus = this.detectReviewFocus(input);\n if (_focus) { params.focus = _focus;\n }\n\n return _params;\n }\n\n private extractLanguageParameters(_input: string, language: string): Record<string, unknown> {\n const params: Record<string, unknown> = {};\n\n // Extract target language\n const _targetLang = this.extractTargetLanguage(input);\n if (_targetLang) { params.language = _targetLang;\n }\n\n return _params;\n }\n\n private extractGenericParameters(_input: string, language: string): Record<string, unknown> {\n const params: Record<string, unknown> = {};\n\n // Clean input from common words\n const _cleanedInput = this.cleanDescription(input, language, []);\n _params.input = _cleanedInput;\n\n // Extract any file paths\n const _filePath = this.extractFilePath(input);\n if (_filePath) { params.file = _filePath;\n }\n\n return _params;\n }\n\n private cleanDescription(_input: string, _language: string, keywords: string[]): string {\n let cleaned = input.toLowerCase();\n\n // Remove keywords\n keywords.forEach((keyword) => {\n const _regex = new RegExp(`\\\\b${keyword}\\\\b`, 'gi');\n cleaned = cleaned.replace(_regex, '');\n });\n\n // Clean up whitespace\n cleaned = cleaned.replace(/\\s+/g, ' ').trim();\n\n return cleaned;\n }\n\n private detectProgrammingLanguage(input: string): string | null {\n const languages: Record<string, RegExp> = {\n javascript: /\\b(javascript|js|node\\.?js)\\b/i,\n typescript: /\\b(typescript|ts)\\b/i,\n python: /\\b(python|py)\\b/i,\n java: /\\b(java)\\b/i,\n rust: /\\b(rust|rs)\\b/i,\n go: /\\b(go|golang)\\b/i,\n cpp: /\\b(c\\+\\+|cpp)\\b/i,\n csharp: /\\b(c#|csharp)\\b/i,\n ruby: /\\b(ruby|rb)\\b/i,\n php: /\\b(php)\\b/i,\n swift: /\\b(swift)\\b/i,\n kotlin: /\\b(kotlin)\\b/i,\n };\n\n for (const [lang, _pattern] of Object.entries(languages)) {\n if (pattern.test(input)) {\n return lang;\n }\n }\n\n return null;\n }\n\n private detectFramework(input: string): string | null {\n const frameworks: Record<string, RegExp> = {\n react: /\\b(react|reactjs)\\b/i,\n vue: /\\b(vue|vuejs)\\b/i,\n angular: /\\b(angular)\\b/i,\n nextjs: /\\b(next\\.?js|nextjs)\\b/i,\n express: /\\b(express)\\b/i,\n django: /\\b(django)\\b/i,\n flask: /\\b(flask)\\b/i,\n rails: /\\b(rails|ruby on rails)\\b/i,\n spring: /\\b(spring)\\b/i,\n laravel: /\\b(laravel)\\b/i,\n };\n\n for (const [_framework, _pattern] of Object.entries(frameworks)) {\n if (pattern.test(input)) {\n return _framework;\n }\n }\n\n return null;\n }\n\n private detectArtStyle(input: string): string | null {\n const styles: Record<string, RegExp> = {\n realistic: /\\b(realistic|photorealistic|real)\\b/i,\n cartoon: /\\b(cartoon|animated|anime)\\b/i,\n abstract: /\\b(abstract)\\b/i,\n watercolor: /\\b(watercolor|water color)\\b/i,\n oil: /\\b(oil painting|oil)\\b/i,\n pencil: /\\b(pencil|sketch)\\b/i,\n '3d': /\\b(3d|three dimensional)\\b/i,\n pixel: /\\b(pixel art|pixelated)\\b/i,\n };\n\n for (const [_style, _pattern] of Object.entries(styles)) {\n if (pattern.test(input)) {\n return _style;\n }\n }\n\n return null;\n }\n\n private extractFilePath(input: string): string | null {\n const _filePattern = /(?:[\"'])?([/\\w\\-._]+\\.\\w+)(?:[\"'])?/;\n const _match = input.match(_filePattern);\n return _match ? _match[1] : null;\n }\n\n private extractDimensions(input: string): { width: number; height: number } | null {\n const _dimensionPattern = /(\\d+)\\s*[x×]\\s*(\\d+)/i;\n const _match = input.match(_dimensionPattern);\n\n if (_match) {\n return {\n width: parseInt(_match[1], 10),\n height: parseInt(_match[2], 10),\n };\n }\n\n return null;\n }\n\n private extractDuration(input: string): number | null {\n const _durationPattern = /(\\d+)\\s*(seconds?|secs?|minutes?|mins?)/i;\n const _match = input.match(_durationPattern);\n\n if (_match) {\n const _value = parseInt(_match[1], 10);\n const _unit = _match[2].toLowerCase();\n\n if (unit.startsWith('min')) {\n return _value * 60;\n }\n return _value;\n }\n\n return null;\n }\n\n private detectVideoFormat(input: string): string | null {\n const _formats = ['mp4', 'avi', 'mov', 'webm', 'gif'];\n\n for (const _format of _formats) {\n const _pattern = new RegExp(`\\\\b${_format}\\\\b`, 'i');\n if (pattern.test(input)) {\n return _format;\n }\n }\n\n return null;\n }\n\n private detectTestType(input: string): string | null {\n const types: Record<string, RegExp> = {\n _unit: /\\b(_unit)\\b/i,\n integration: /\\b(integration)\\b/i,\n e2e: /\\b(e2e|end to end)\\b/i,\n performance: /\\b(performance|perf)\\b/i,\n snapshot: /\\b(snapshot)\\b/i,\n };\n\n for (const [type, _pattern] of Object.entries(types)) {\n if (pattern.test(input)) {\n return type;\n }\n }\n\n return null;\n }\n\n private detectReviewFocus(input: string): string | null {\n const focuses: Record<string, RegExp> = {\n performance: /\\b(performance|speed|optimization)\\b/i,\n security: /\\b(security|vulnerability|safe)\\b/i,\n quality: /\\b(quality|clean|maintainability)\\b/i,\n _style: /\\b(_style|_format|convention)\\b/i,\n bugs: /\\b(bugs?|errors?|issues?)\\b/i,\n };\n\n for (const [_focus, _pattern] of Object.entries(focuses)) {\n if (pattern.test(input)) {\n return _focus;\n }\n }\n\n return null;\n }\n\n private extractTargetLanguage(input: string): string | null {\n const languageMap: Record<string, string[]> = {\n en: ['english', '英語', '英文', '영어', 'tiếng anh'],\n ja: ['japanese', '日本語', '日文', '일본어', 'tiếng nhật'],\n cn: ['chinese', '中国語', '中文', '중국어', 'tiếng trung'],\n ko: ['korean', '韓国語', '韩文', '한국어', 'tiếng hàn'],\n vn: ['vietnamese', 'ベトナム語', '越南文', '베트남어', 'tiếng việt'],\n };\n\n const _lowerInput = input.toLowerCase();\n\n for (const [code, patterns] of Object.entries(languageMap)) {\n for (const _pattern of patterns) {\n if (lowerInput.includes(_pattern)) {\n return code;\n }\n }\n }\n\n return null;\n }\n}\n","export interface CommandTranslation {\n command: string;\n name: Record<string, string>;\n description: Record<string, string>;\n keywords: Record<string, string[]>;\n examples: Record<string, string[]>;\n}\n\nexport class MultilingualDictionary {\n private dictionary: Map<string, CommandTranslation>;\n private initialized: boolean = false;\n\n constructor() {\n this.dictionary = new Map();\n }\n\n async initialize(): Promise<void> {\n if (this.initialized) {return;}\n\n this.loadTranslations();\n this.initialized = true;\n }\n\n getTranslation(_command: string, _language: string = 'en'): CommandTranslation | null {\n return this.dictionary.get(command) ?? null;\n }\n\n getExplanation(_command: string, language: string = 'en'): string {\n const _translation = this.dictionary.get(command);\n if (!_translation) {\n return `Command ${command} not found`;\n }\n\n return translation.description[language] ?? translation.description['en'] ?? '';\n }\n\n getKeywords(_command: string, language: string = 'en'): string[] {\n const _translation = this.dictionary.get(command);\n if (!_translation) {\n return [];\n }\n\n return translation.keywords[language] ?? translation.keywords['en'] ?? [];\n }\n\n getExamples(_command: string, language: string = 'en'): string[] {\n const _translation = this.dictionary.get(command);\n if (!_translation) {\n return [];\n }\n\n return translation.examples[language] ?? translation.examples['en'] ?? [];\n }\n\n getAllCommands(): string[] {\n return Array.from(this.dictionary.keys());\n }\n\n private loadTranslations(): void {\n // Core Development Commands\n this.dictionary.set('/code', {\n command: '/code',\n name: {\n en: 'Code Generation',\n ja: 'コード生成',\n zh: '代码生成',\n ko: '코드 생성',\n },\n description: {\n en: 'Generate code with AI assistance',\n ja: 'AI支援によるコード生成',\n zh: '使用AI辅助生成代码',\n ko: 'AI 지원 코드 생성',\n },\n keywords: {\n en: [\n 'write',\n 'create',\n 'generate',\n 'implement',\n 'build',\n 'code',\n 'program',\n 'develop',\n 'function',\n 'class',\n ],\n ja: ['コード', '実装', 'プログラム', '関数', 'クラス', '作成', '開発', '書く', '生成'],\n zh: ['代码', '编写', '实现', '程序', '函数', '类', '创建', '开发', '生成'],\n ko: ['코드', '프로그램', '함수', '클래스', '구현', '개발', '작성', '생성'],\n },\n examples: {\n en: ['write a React component', 'create a REST API', 'implement user authentication'],\n ja: ['Reactコンポーネントを実装して', 'REST APIを作って', 'ユーザー認証を実装'],\n zh: ['写一个React组件', '创建REST API', '实现用户认证'],\n ko: ['React 컴포넌트 작성', 'REST API 생성', '사용자 인증 구현'],\n },\n });\n\n this.dictionary.set('/test', {\n command: '/test',\n name: {\n en: 'Test Generation',\n ja: 'テスト生成',\n zh: '测试生成',\n ko: '테스트 생성',\n },\n description: {\n en: 'Generate and run tests',\n ja: 'テストの生成と実行',\n zh: '生成并运行测试',\n ko: '테스트 생성 및 실행',\n },\n keywords: {\n en: ['test', 'testing', 'unit', 'integration', 'e2e', 'coverage', 'spec', 'assertion'],\n ja: ['テスト', '試験', 'ユニット', '統合', 'カバレッジ', '検証'],\n zh: ['测试', '单元测试', '集成测试', '覆盖率', '验证'],\n ko: ['테스트', '단위', '통합', '커버리지', '검증'],\n },\n examples: {\n en: ['write unit tests', 'create integration tests', 'generate test coverage'],\n ja: ['ユニットテストを書いて', '統合テストを作成', 'テストカバレッジを生成'],\n zh: ['编写单元测试', '创建集成测试', '生成测试覆盖率'],\n ko: ['단위 테스트 작성', '통합 테스트 생성', '테스트 커버리지 생성'],\n },\n });\n\n this.dictionary.set('/review', {\n command: '/review',\n name: {\n en: 'Code Review',\n ja: 'コードレビュー',\n zh: '代码审查',\n ko: '코드 리뷰',\n },\n description: {\n en: 'Review code for improvements',\n ja: 'コードの改善点をレビュー',\n zh: '审查代码以进行改进',\n ko: '코드 개선사항 검토',\n },\n keywords: {\n en: ['review', 'check', 'analyze', 'improve', 'refactor', 'optimize', 'quality', 'inspect'],\n ja: ['レビュー', '確認', '改善', 'リファクタ', '最適化', '品質', '検査'],\n zh: ['审查', '检查', '分析', '改进', '重构', '优化', '质量'],\n ko: ['리뷰', '검토', '분석', '개선', '리팩토링', '최적화', '품질'],\n },\n examples: {\n en: ['review this code', 'check for improvements', 'optimize performance'],\n ja: ['このコードをレビューして', '改善点を確認', 'パフォーマンスを最適化'],\n zh: ['审查这段代码', '检查改进点', '优化性能'],\n ko: ['이 코드 리뷰', '개선사항 확인', '성능 최적화'],\n },\n });\n\n this.dictionary.set('/model', {\n command: '/model',\n name: {\n en: 'Model Selection',\n ja: 'モデル選択',\n zh: '模型选择',\n ko: '모델 선택',\n },\n description: {\n en: 'Select AI model',\n ja: 'AIモデルの選択',\n zh: '选择AI模型',\n ko: 'AI 모델 선택',\n },\n keywords: {\n en: ['model', 'select', 'choose', 'switch', 'change', 'ai', 'llm'],\n ja: ['モデル', '選択', '切り替え', '変更', 'AI', 'LLM'],\n zh: ['模型', '选择', '切换', '更改', 'AI', 'LLM'],\n ko: ['모델', '선택', '전환', '변경', 'AI', 'LLM'],\n },\n examples: {\n en: ['switch to GPT-5', 'use Claude', 'select local model'],\n ja: ['GPT-5に切り替え', 'Claudeを使用', 'ローカルモデルを選択'],\n zh: ['切换到GPT-5', '使用Claude', '选择本地模型'],\n ko: ['GPT-5로 전환', 'Claude 사용', '로컬 모델 선택'],\n },\n });\n\n // Media Generation Commands\n this.dictionary.set('/image', {\n command: '/image',\n name: {\n en: 'Image Generation',\n ja: '画像生成',\n zh: '图像生成',\n ko: '이미지 생성',\n },\n description: {\n en: 'Generate images with AI',\n ja: 'AIによる画像生成',\n zh: '使用AI生成图像',\n ko: 'AI 이미지 생성',\n },\n keywords: {\n en: [\n 'image',\n 'picture',\n 'photo',\n 'draw',\n 'illustration',\n 'visual',\n 'graphic',\n 'art',\n 'design',\n 'create',\n ],\n ja: ['画像', 'イメージ', '絵', 'イラスト', 'ビジュアル', '描く', '生成', 'デザイン'],\n zh: ['图像', '图片', '插图', '画', '生成', '创建', '视觉', '设计'],\n ko: ['이미지', '그림', '일러스트', '생성', '그리기', '디자인', '비주얼'],\n },\n examples: {\n en: ['create an image of sunset', 'draw a cat', 'generate logo design'],\n ja: ['夕日の画像を生成', '猫を描いて', 'ロゴデザインを生成'],\n zh: ['创建日落图像', '画一只猫', '生成logo设计'],\n ko: ['일몰 이미지 생성', '고양이 그리기', '로고 디자인 생성'],\n },\n });\n\n this.dictionary.set('/video', {\n command: '/video',\n name: {\n en: 'Video Generation',\n ja: '動画生成',\n zh: '视频生成',\n ko: '비디오 생성',\n },\n description: {\n en: 'Generate videos with AI',\n ja: 'AIによる動画生成',\n zh: '使用AI生成视频',\n ko: 'AI 비디오 생성',\n },\n keywords: {\n en: ['video', 'movie', 'animation', 'clip', 'film', 'animate', 'motion', 'render'],\n ja: ['動画', 'ビデオ', 'アニメーション', 'ムービー', '映像', '作成', '生成'],\n zh: ['视频', '动画', '影片', '创建', '生成', '制作', '渲染'],\n ko: ['비디오', '동영상', '애니메이션', '생성', '제작', '렌더링'],\n },\n examples: {\n en: ['create a video intro', 'generate animation', 'make a tutorial video'],\n ja: ['動画イントロを作成', 'アニメーションを生成', 'チュートリアル動画を作る'],\n zh: ['创建视频介绍', '生成动画', '制作教程视频'],\n ko: ['비디오 인트로 생성', '애니메이션 제작', '튜토리얼 비디오 만들기'],\n },\n });\n\n this.dictionary.set('/avatar', {\n command: '/avatar',\n name: {\n en: 'Avatar Display',\n ja: 'アバター表示',\n zh: '头像显示',\n ko: '아바타 표시',\n },\n description: {\n en: 'Display ASCII art avatar',\n ja: 'ASCIIアートアバターを表示',\n zh: '显示ASCII艺术头像',\n ko: 'ASCII 아트 아바타 표시',\n },\n keywords: {\n en: ['avatar', 'character', 'ascii', 'art', 'display', 'show'],\n ja: ['アバター', 'キャラクター', 'アスキー', 'アート', '表示'],\n zh: ['头像', '角色', 'ASCII', '艺术', '显示'],\n ko: ['아바타', '캐릭터', 'ASCII', '아트', '표시'],\n },\n examples: {\n en: ['show avatar', 'display character', 'ascii art'],\n ja: ['アバターを表示', 'キャラクターを見せて', 'アスキーアート'],\n zh: ['显示头像', '展示角色', 'ASCII艺术'],\n ko: ['아바타 보기', '캐릭터 표시', 'ASCII 아트'],\n },\n });\n\n this.dictionary.set('/voice', {\n command: '/voice',\n name: {\n en: 'Voice Interaction',\n ja: '音声対話',\n zh: '语音交互',\n ko: '음성 상호작용',\n },\n description: {\n en: 'Voice-based interaction',\n ja: '音声ベースの対話',\n zh: '基于语音的交互',\n ko: '음성 기반 상호작용',\n },\n keywords: {\n en: ['voice', 'speak', 'talk', 'audio', 'speech', 'sound'],\n ja: ['音声', '話す', '会話', 'オーディオ', 'スピーチ'],\n zh: ['语音', '说话', '对话', '音频', '语音'],\n ko: ['음성', '말하기', '대화', '오디오', '스피치'],\n },\n examples: {\n en: ['talk to me', 'voice command', 'speak the response'],\n ja: ['話しかけて', '音声コマンド', '応答を話して'],\n zh: ['和我说话', '语音命令', '说出回应'],\n ko: ['대화하기', '음성 명령', '응답 말하기'],\n },\n });\n\n // Add remaining commands...\n // Project Management Commands\n this.dictionary.set('/init', {\n command: '/init',\n name: {\n en: 'Initialize Project',\n ja: 'プロジェクト初期化',\n zh: '初始化项目',\n ko: '프로젝트 초기화',\n },\n description: {\n en: 'Initialize a new project',\n ja: '新しいプロジェクトを初期化',\n zh: '初始化新项目',\n ko: '새 프로젝트 초기화',\n },\n keywords: {\n en: ['init', 'initialize', 'setup', 'create', 'start', 'project', 'new'],\n ja: ['初期化', 'セットアップ', '作成', '開始', 'プロジェクト', '新規'],\n zh: ['初始化', '设置', '创建', '启动', '项目', '新建'],\n ko: ['초기화', '설정', '생성', '시작', '프로젝트', '신규'],\n },\n examples: {\n en: ['initialize new project', 'setup React app', 'create new workspace'],\n ja: ['新プロジェクトを初期化', 'Reactアプリをセットアップ', '新ワークスペースを作成'],\n zh: ['初始化新项目', '设置React应用', '创建新工作空间'],\n ko: ['새 프로젝트 초기화', 'React 앱 설정', '새 워크스페이스 생성'],\n },\n });\n\n // System Commands\n this.dictionary.set('/help', {\n command: '/help',\n name: {\n en: 'Help',\n ja: 'ヘルプ',\n zh: '帮助',\n ko: '도움말',\n },\n description: {\n en: 'Show help and available commands',\n ja: 'ヘルプと利用可能なコマンドを表示',\n zh: '显示帮助和可用命令',\n ko: '도움말 및 사용 가능한 명령 표시',\n },\n keywords: {\n en: ['help', 'guide', 'manual', 'documentation', 'usage', 'commands'],\n ja: ['ヘルプ', 'ガイド', 'マニュアル', 'ドキュメント', '使い方', 'コマンド'],\n zh: ['帮助', '指南', '手册', '文档', '用法', '命令'],\n ko: ['도움말', '가이드', '매뉴얼', '문서', '사용법', '명령'],\n },\n examples: {\n en: ['show help', 'list commands', 'how to use'],\n ja: ['ヘルプを表示', 'コマンド一覧', '使い方'],\n zh: ['显示帮助', '列出命令', '如何使用'],\n ko: ['도움말 표시', '명령 목록', '사용 방법'],\n },\n });\n\n this.dictionary.set('/exit', {\n command: '/exit',\n name: {\n en: 'Exit',\n ja: '終了',\n zh: '退出',\n ko: '종료',\n },\n description: {\n en: 'Exit the session',\n ja: 'セッションを終了',\n zh: '退出会话',\n ko: '세션 종료',\n },\n keywords: {\n en: ['exit', 'quit', 'close', 'end', 'bye', 'goodbye', 'stop'],\n ja: ['終了', '退出', '閉じる', 'バイバイ', 'さようなら', '止める'],\n zh: ['退出', '结束', '关闭', '再见', '停止'],\n ko: ['종료', '나가기', '닫기', '끝', '정지'],\n },\n examples: {\n en: ['exit session', 'quit app', 'goodbye'],\n ja: ['セッション終了', 'アプリを閉じる', 'さようなら'],\n zh: ['退出会话', '关闭应用', '再见'],\n ko: ['세션 종료', '앱 종료', '안녕'],\n },\n });\n\n // Add more commands as needed...\n }\n}\n","export type SupportedLanguage = 'en' | 'ja' | 'cn' | 'ko' | 'vn';\n\ninterface LanguageScore {\n language: SupportedLanguage;\n score: number;\n}\n\nexport class LanguageDetector {\n private languagePatterns: Map<SupportedLanguage, RegExp[]>;\n private characterRanges: Map<SupportedLanguage, RegExp[]>;\n\n constructor() {\n this.languagePatterns = new Map();\n this.characterRanges = new Map();\n this.initializePatterns();\n }\n\n async detect(text: string): Promise<SupportedLanguage> {\n const scores = this.calculateScores(text);\n\n // Sort by score descending\n scores.sort((a, b) => b.score - a.score);\n\n // If the top score is significantly higher, use it\n if (scores.length > 0 && scores[0]?.score && scores[0].score > 0) {\n return scores[0].language;\n }\n\n // Default to English\n return 'en';\n }\n\n private calculateScores(text: string): LanguageScore[] {\n const scores: LanguageScore[] = [\n { language: 'en', score: 0 },\n { language: 'ja', score: 0 },\n { language: 'cn', score: 0 },\n { language: 'ko', score: 0 },\n { language: 'vn', score: 0 },\n ];\n\n // Character-based detection\n this.characterRanges.forEach((patterns, language) => {\n patterns.forEach((pattern) => {\n const matches = text.match(pattern);\n if (matches) {\n const score = scores.find((s) => s.language === language);\n if (score) {\n score.score += matches.length * 2;\n }\n }\n });\n });\n\n // Pattern-based detection for more accuracy\n this.languagePatterns.forEach((patterns, language) => {\n patterns.forEach((pattern) => {\n if (pattern.test(text)) {\n const score = scores.find((s) => s.language === language);\n if (score) {\n score.score += 3;\n }\n }\n });\n });\n\n // Check for English words (common programming terms)\n const englishTerms =\n /\\b(function|class|const|let|var|if|else|for|while|return|import|export|async|await|create|make|generate|write|code|test|review)\\b/i;\n if (englishTerms.test(text)) {\n const englishScore = scores.find((s) => s.language === 'en');\n if (englishScore) {\n englishScore.score += 5;\n }\n }\n\n // Normalize scores\n const totalChars = text.length;\n scores.forEach((score) => {\n if (totalChars > 0) {\n score.score = (score.score / totalChars) * 100;\n }\n });\n\n return scores;\n }\n\n private initializePatterns(): void {\n // Japanese patterns\n this.characterRanges.set('ja', [\n /[\\u3040-\\u309f]/g, // Hiragana\n /[\\u30a0-\\u30ff]/g, // Katakana\n /[\\u4e00-\\u9faf]/g, // Kanji (also used in Chinese)\n ]);\n\n this.languagePatterns.set('ja', [\n /[ぁ-ん]/, // Hiragana check\n /[ァ-ヴ]/, // Katakana check\n /です|ます|ください|して/, // Common endings\n /は|が|を|に|で|と|の|から|まで/, // Particles\n ]);\n\n // Chinese patterns\n this.characterRanges.set('cn', [\n /[\\u4e00-\\u9faf]/g, // Chinese characters\n ]);\n\n this.languagePatterns.set('cn', [\n /的|了|是|在|有|和|不|人|我|你|他|她/, // Common Chinese characters\n /这|那|什么|怎么|为什么/, // Common question words\n /吗|呢|吧|啊/, // Sentence particles\n ]);\n\n // Korean patterns\n this.characterRanges.set('ko', [\n /[\\uac00-\\ud7af]/g, // Hangul syllables\n /[\\u1100-\\u11ff]/g, // Hangul Jamo\n /[\\u3130-\\u318f]/g, // Hangul compatibility Jamo\n ]);\n\n this.languagePatterns.set('ko', [\n /[가-힣]/, // Hangul check\n /입니다|습니다|합니다/, // Formal endings\n /을|를|이|가|은|는|의/, // Particles\n ]);\n\n // Vietnamese patterns\n this.characterRanges.set('vn', [\n /[a-zA-Zàáảãạăằắẳẵặâầấẩẫậđèéẻẽẹêềếểễệìíỉĩịòóỏõọôồốổỗộơờớởỡợùúủũụưừứửữựỳýỷỹỵ]/g, // Vietnamese with tones\n ]);\n\n this.languagePatterns.set('vn', [\n /[àáảãạăằắẳẵặâầấẩẫậđèéẻẽẹêềếểễệìíỉĩịòóỏõọôồốổỗộơờớởỡợùúủũụưừứửữựỳýỷỹỵ]/, // Vietnamese tones\n /và|của|là|có|được|trong|với|này|cho|để/, // Common Vietnamese words\n /không|nhưng|cũng|như|từ|đến|sau|trước/, // More common words\n ]);\n\n // English patterns\n this.characterRanges.set('en', [\n /[a-zA-Z]/g, // Latin alphabet\n ]);\n\n this.languagePatterns.set('en', [\n /\\b(the|be|to|of|and|a|in|that|have|I|it|for|not|on|with|he|as|you|do|at)\\b/i, // Common English words\n /\\b(this|but|his|by|from|they|we|say|her|she|or|an|will|my|one|all|would|there|their)\\b/i,\n ]);\n }\n\n getLanguageName(code: SupportedLanguage): string {\n const names: Record<SupportedLanguage, string> = {\n en: 'English',\n ja: 'Japanese',\n cn: 'Chinese',\n ko: 'Korean',\n vn: 'Vietnamese',\n };\n return names[code] || 'Unknown';\n }\n\n isSupported(languageCode: string): languageCode is SupportedLanguage {\n return ['en', 'ja', 'cn', 'ko', 'vn'].includes(languageCode);\n }\n}\n","import { MultilingualDictionary } from '../analysis/MultilingualDictionary';\n\nexport interface CommandMapping {\n command: string;\n naturalPhrases: Map<string, string[]>;\n priority: number;\n}\n\nexport class CommandMappings {\n private mappings: CommandMapping[];\n private dictionary: MultilingualDictionary;\n private initialized: boolean = false;\n\n constructor() {\n this.mappings = [];\n this.dictionary = new MultilingualDictionary();\n }\n\n async initialize(): Promise<void> {\n if (this.initialized) {return;}\n\n await this.dictionary.initialize();\n this.loadMappings();\n this.initialized = true;\n }\n\n async getSuggestions(_input: string, language: string, maxResults: number = 5): Promise<string[]> {\n const _lowerInput = input.toLowerCase();\n const suggestions: Array<{ command: string; score: number }> = [];\n\n for (const mapping of this.mappings) {\n const _phrases =\n mapping.naturalPhrases.get(language) ?? mapping.naturalPhrases.get('en') ?? [];\n let score = 0;\n\n for (const phrase of _phrases) {\n if (phrase.toLowerCase().includes(_lowerInput)) {\n score += 2;\n }\n if (phrase.toLowerCase().startsWith(_lowerInput)) {\n score += 3;\n }\n }\n\n // Check command name match\n if (mapping.command.toLowerCase().includes(_lowerInput)) {\n score += 5;\n }\n\n if (score > 0) {\n suggestions.push({ command: mapping.command, score: score * mapping.priority });\n }\n }\n\n // Sort by score and return top results\n return suggestions\n .sort((a, b) => b.score - a.score)\n .slice(0, maxResults)\n .map((s) => s.command);\n }\n\n getCommandForPhrase(_phrase: string, language: string): string | null {\n const _lowerPhrase = phrase.toLowerCase();\n\n for (const mapping of this.mappings) {\n const _phrases =\n mapping.naturalPhrases.get(language) ?? mapping.naturalPhrases.get('en') ?? [];\n\n for (const naturalPhrase of _phrases) {\n if (lowerPhrase.includes(naturalPhrase.toLowerCase())) {\n return mapping.command;\n }\n }\n }\n\n return null;\n }\n\n private loadMappings(): void {\n // Core Development Commands\n this.mappings.push({\n command: '/code',\n naturalPhrases: new Map([\n [\n 'en',\n ['write code', 'create code', 'generate code', 'implement', 'build function', 'develop'],\n ],\n [\n 'ja',\n ['コードを書いて', '実装して', 'プログラムを作って', '関数を書いて', 'クラスを作成'],\n ],\n ['cn', ['写代码', '编写代码', '实现', '创建函数', '构建类']],\n ['ko', ['코드 작성', '구현해줘', '함수 만들어', '클래스 생성']],\n ['vn', ['viết mã', 'tạo code', 'xây dựng hàm', 'phát triển']],\n ]),\n priority: 1.0,\n });\n\n this.mappings.push({\n command: '/test',\n naturalPhrases: new Map([\n ['en', ['write test', 'create test', 'generate test', 'unit test', 'test this']],\n ['ja', ['テストを書いて', 'テスト作成', 'ユニットテスト', 'テストして']],\n ['cn', ['写测试', '创建测试', '单元测试', '测试这个']],\n ['ko', ['테스트 작성', '테스트 생성', '단위 테스트']],\n ['vn', ['viết kiểm tra', 'tạo test', 'kiểm tra đơn vị']],\n ]),\n priority: 0.9,\n });\n\n this.mappings.push({\n command: '/review',\n naturalPhrases: new Map([\n ['en', ['review code', 'check code', 'analyze', 'improve', 'refactor']],\n ['ja', ['コードレビュー', '確認して', '改善して', 'リファクタリング']],\n ['cn', ['代码审查', '检查代码', '改进', '重构']],\n ['ko', ['코드 리뷰', '검토해줘', '개선해줘', '리팩토링']],\n ['vn', ['xem xét mã', 'kiểm tra code', 'cải thiện', 'tái cấu trúc']],\n ]),\n priority: 0.9,\n });\n\n this.mappings.push({\n command: '/model',\n naturalPhrases: new Map([\n ['en', ['switch model', 'change model', 'select model', 'use gpt', 'use claude']],\n ['ja', ['モデル切り替え', 'モデル変更', 'GPT使って', 'Claude使って']],\n ['cn', ['切换模型', '更改模型', '使用GPT', '使用Claude']],\n ['ko', ['모델 전환', '모델 변경', 'GPT 사용', 'Claude 사용']],\n ['vn', ['chuyển mô hình', 'đổi model', 'dùng GPT', 'dùng Claude']],\n ]),\n priority: 0.8,\n });\n\n // Media Generation Commands\n this.mappings.push({\n command: '/image',\n naturalPhrases: new Map([\n [\n 'en',\n ['create image', 'generate image', 'draw picture', 'make illustration', 'design graphic'],\n ],\n ['ja', ['画像を生成', 'イメージを作って', '絵を描いて', 'イラストを作成']],\n ['cn', ['生成图像', '创建图片', '画一幅画', '制作插图']],\n ['ko', ['이미지 생성', '그림 그려줘', '일러스트 만들어']],\n ['vn', ['tạo hình ảnh', 'vẽ tranh', 'làm minh họa']],\n ]),\n priority: 1.0,\n });\n\n this.mappings.push({\n command: '/video',\n naturalPhrases: new Map([\n ['en', ['create video', 'generate video', 'make animation', 'produce movie']],\n ['ja', ['動画を作って', 'ビデオを生成', 'アニメーションを作成']],\n ['cn', ['创建视频', '生成动画', '制作影片']],\n ['ko', ['비디오 생성', '동영상 만들어', '애니메이션 제작']],\n ['vn', ['tạo video', 'làm hoạt hình', 'sản xuất phim']],\n ]),\n priority: 1.0,\n });\n\n this.mappings.push({\n command: '/avatar',\n naturalPhrases: new Map([\n ['en', ['show avatar', 'display character', 'ascii art']],\n ['ja', ['アバター表示', 'キャラクター見せて', 'アスキーアート']],\n ['cn', ['显示头像', '展示角色', 'ASCII艺术']],\n ['ko', ['아바타 보기', '캐릭터 표시']],\n ['vn', ['hiển thị avatar', 'xem nhân vật']],\n ]),\n priority: 0.7,\n });\n\n this.mappings.push({\n command: '/voice',\n naturalPhrases: new Map([\n ['en', ['talk to me', 'voice command', 'speak']],\n ['ja', ['話しかけて', '音声コマンド', '話して']],\n ['cn', ['和我说话', '语音命令', '说话']],\n ['ko', ['대화하기', '음성 명령']],\n ['vn', ['nói chuyện', 'lệnh giọng nói']],\n ]),\n priority: 0.7,\n });\n\n // Configuration Commands\n this.mappings.push({\n command: '/setup',\n naturalPhrases: new Map([\n ['en', ['setup system', 'initial setup', 'configure']],\n ['ja', ['セットアップ', '初期設定', '環境構築']],\n ['cn', ['设置系统', '初始设置', '配置']],\n ['ko', ['설정', '초기 설정', '환경 구축']],\n ['vn', ['thiết lập', 'cài đặt ban đầu']],\n ]),\n priority: 0.8,\n });\n\n this.mappings.push({\n command: '/settings',\n naturalPhrases: new Map([\n ['en', ['show settings', 'check configuration', 'view config']],\n ['ja', ['設定確認', '設定を見る', 'コンフィグ確認']],\n ['cn', ['查看设置', '检查配置', '显示设置']],\n ['ko', ['설정 확인', '설정 보기']],\n ['vn', ['xem cài đặt', 'kiểm tra cấu hình']],\n ]),\n priority: 0.7,\n });\n\n this.mappings.push({\n command: '/config',\n naturalPhrases: new Map([\n ['en', ['configure', 'manage config', 'update settings']],\n ['ja', ['設定管理', '設定更新', 'コンフィグ管理']],\n ['cn', ['配置管理', '更新设置', '管理配置']],\n ['ko', ['설정 관리', '설정 업데이트']],\n ['vn', ['quản lý cấu hình', 'cập nhật cài đặt']],\n ]),\n priority: 0.7,\n });\n\n // Project Management Commands\n this.mappings.push({\n command: '/init',\n naturalPhrases: new Map([\n ['en', ['initialize project', 'start new project', 'create project']],\n ['ja', ['プロジェクト初期化', '新規プロジェクト', 'プロジェクト作成']],\n ['cn', ['初始化项目', '新建项目', '创建项目']],\n ['ko', ['프로젝트 초기화', '새 프로젝트']],\n ['vn', ['khởi tạo dự án', 'tạo dự án mới']],\n ]),\n priority: 0.9,\n });\n\n this.mappings.push({\n command: '/add-dir',\n naturalPhrases: new Map([\n ['en', ['add directory', 'include folder', 'add path']],\n ['ja', ['ディレクトリ追加', 'フォルダ追加', 'パス追加']],\n ['cn', ['添加目录', '包含文件夹', '添加路径']],\n ['ko', ['디렉토리 추가', '폴더 추가']],\n ['vn', ['thêm thư mục', 'thêm đường dẫn']],\n ]),\n priority: 0.6,\n });\n\n this.mappings.push({\n command: '/memory',\n naturalPhrases: new Map([\n ['en', ['manage memory', 'remember this', 'save context']],\n ['ja', ['メモリ管理', 'これを覚えて', 'コンテキスト保存']],\n ['cn', ['内存管理', '记住这个', '保存上下文']],\n ['ko', ['메모리 관리', '이것 기억해']],\n ['vn', ['quản lý bộ nhớ', 'nhớ điều này']],\n ]),\n priority: 0.6,\n });\n\n this.mappings.push({\n command: '/export',\n naturalPhrases: new Map([\n ['en', ['export data', 'save output', 'download results']],\n ['ja', ['データエクスポート', '出力保存', '結果ダウンロード']],\n ['cn', ['导出数据', '保存输出', '下载结果']],\n ['ko', ['데이터 내보내기', '출력 저장']],\n ['vn', ['xuất dữ liệu', 'lưu kết quả']],\n ]),\n priority: 0.6,\n });\n\n // File Save Commands - Extended patterns\n this.mappings.push({\n command: '/save',\n naturalPhrases: new Map([\n [\n 'en',\n [\n // Basic save patterns\n 'save this', 'save it', 'save that', 'save the code', 'save the response',\n 'save to file', 'write to file', 'store this', 'save as', 'save file',\n \n // Polite forms\n 'please save', 'can you save', 'could you save', 'would you save',\n 'kindly save', 'save please', 'save it please',\n \n // Action forms\n 'write this down', 'store it', 'keep this', 'put this in a file',\n 'create a file', 'make a file', 'generate file', 'export this',\n 'output to file', 'dump to file', 'persist this',\n \n // Contextual forms\n 'save what you just generated', 'save the above', 'save your response',\n 'save the output', 'save the result', 'save generated code',\n 'keep the code', 'store the code', 'file the code'\n ]\n ],\n [\n 'ja',\n [\n // Basic patterns\n '保存して', 'ファイルに保存', 'これを保存', 'セーブして', 'ファイル保存',\n \n // Polite forms\n '保存してください', '保存してもらえる', '保存できる', '保存お願い',\n '保存していただける', '保存をお願いします',\n \n // Various expressions\n 'ファイルに書き込んで', 'ファイルに書いて', 'ファイルにして',\n 'ファイル化して', 'ファイル作成', 'ファイルを作って',\n \n // Output related\n 'コードを保存', '出力を保存', '結果を保存', 'レスポンスを保存',\n '生成したものを保存', '上記を保存', 'これ保存',\n \n // Casual forms\n 'セーブ', 'キープして', '取っておいて', '残して',\n 'ファイルに残して', '書き出して', 'エクスポートして'\n ]\n ],\n [\n 'cn', \n [\n '保存', '存储', '保存这个', '保存到文件', '写入文件',\n '保存代码', '保存输出', '保存结果', '存档', '储存',\n '请保存', '保存一下', '帮我保存', '导出', '输出到文件',\n '创建文件', '生成文件', '写到文件', '记录下来'\n ]\n ],\n [\n 'ko', \n [\n '저장해줘', '저장해', '파일에 저장', '이것 저장', '저장 부탁',\n '코드 저장', '출력 저장', '결과 저장', '파일로 만들어',\n '파일 생성', '내보내기', '익스포트', '세이브해줘'\n ]\n ],\n [\n 'vn', \n [\n 'lưu này', 'lưu lại', 'lưu vào file', 'lưu mã', 'lưu kết quả',\n 'ghi vào file', 'tạo file', 'xuất file', 'giữ lại', 'lưu giúp'\n ]\n ],\n ]),\n priority: 1.0,\n });\n\n this.mappings.push({\n command: '/saveto',\n naturalPhrases: new Map([\n [\n 'en',\n [\n 'save to directory', 'save in folder', 'save at path',\n 'save to specific location', 'put in folder', 'write to directory',\n 'save in', 'store in directory', 'save to path'\n ]\n ],\n [\n 'ja',\n [\n 'ディレクトリに保存', 'フォルダに保存', 'パスに保存',\n '特定の場所に保存', 'フォルダーに入れて', 'ディレクトリに書き込み'\n ]\n ],\n ['cn', ['保存到目录', '保存在文件夹', '保存到路径', '存储到特定位置']],\n ['ko', ['디렉토리에 저장', '폴더에 저장', '경로에 저장']],\n ['vn', ['lưu vào thư mục', 'lưu tại đường dẫn', 'lưu vào vị trí cụ thể']],\n ]),\n priority: 0.9,\n });\n\n // Agent Management Commands\n this.mappings.push({\n command: '/agents',\n naturalPhrases: new Map([\n ['en', ['manage agents', 'show agents', 'list agents']],\n ['ja', ['エージェント管理', 'エージェント表示', 'エージェント一覧']],\n ['cn', ['管理代理', '显示代理', '列出代理']],\n ['ko', ['에이전트 관리', '에이전트 표시']],\n ['vn', ['quản lý agent', 'hiển thị agent']],\n ]),\n priority: 0.5,\n });\n\n // System Commands\n this.mappings.push({\n command: '/status',\n naturalPhrases: new Map([\n ['en', ['show status', 'system status', 'check status']],\n ['ja', ['ステータス表示', 'システム状態', '状態確認']],\n ['cn', ['显示状态', '系统状态', '检查状态']],\n ['ko', ['상태 표시', '시스템 상태']],\n ['vn', ['hiển thị trạng thái', 'trạng thái hệ thống']],\n ]),\n priority: 0.7,\n });\n\n this.mappings.push({\n command: '/health',\n naturalPhrases: new Map([\n ['en', ['health check', 'system health', 'diagnostics']],\n ['ja', ['ヘルスチェック', 'システム診断', '健全性確認']],\n ['cn', ['健康检查', '系统诊断', '健康状态']],\n ['ko', ['헬스 체크', '시스템 진단']],\n ['vn', ['kiểm tra sức khỏe', 'chẩn đoán hệ thống']],\n ]),\n priority: 0.6,\n });\n\n this.mappings.push({\n command: '/clear',\n naturalPhrases: new Map([\n ['en', ['clear screen', 'clear chat', 'reset display']],\n ['ja', ['画面クリア', 'チャットクリア', '表示リセット']],\n ['cn', ['清除屏幕', '清除聊天', '重置显示']],\n ['ko', ['화면 지우기', '채팅 지우기']],\n ['vn', ['xóa màn hình', 'xóa chat']],\n ]),\n priority: 0.5,\n });\n\n this.mappings.push({\n command: '/help',\n naturalPhrases: new Map([\n ['en', ['show help', 'help me', 'list commands', 'how to use']],\n ['ja', ['ヘルプ表示', '助けて', 'コマンド一覧', '使い方']],\n ['cn', ['显示帮助', '帮助我', '列出命令', '如何使用']],\n ['ko', ['도움말 표시', '도와줘', '명령 목록']],\n ['vn', ['hiển thị trợ giúp', 'giúp tôi', 'danh sách lệnh']],\n ]),\n priority: 0.9,\n });\n\n this.mappings.push({\n command: '/exit',\n naturalPhrases: new Map([\n ['en', ['exit', 'quit', 'goodbye', 'bye', 'close']],\n ['ja', ['終了', '退出', 'さようなら', 'バイバイ', '閉じる']],\n ['cn', ['退出', '结束', '再见', '关闭']],\n ['ko', ['종료', '나가기', '안녕', '닫기']],\n ['vn', ['thoát', 'kết thúc', 'tạm biệt', 'đóng']],\n ]),\n priority: 0.8,\n });\n\n // Language switching command\n this.mappings.push({\n command: '/lang',\n naturalPhrases: new Map([\n ['en', ['change language', 'switch language', 'set language', 'language settings']],\n ['ja', ['言語変更', '言語切り替え', '言語設定', '日本語に変更']],\n ['cn', ['更改语言', '切换语言', '语言设置', '改成中文']],\n ['ko', ['언어 변경', '언어 전환', '언어 설정', '한국어로 변경']],\n ['vn', ['đổi ngôn ngữ', 'chuyển ngôn ngữ', 'cài đặt ngôn ngữ', 'đổi sang tiếng việt']],\n ]),\n priority: 0.9,\n });\n }\n}\n","import type { CommandIntent, UserPattern } from '../types/common-types';\n\nexport class UserPatternAnalyzer {\n private patterns: UserPattern[] = [];\n private initialized: boolean = false;\n\n async initialize(): Promise<void> {\n if (this.initialized) {return;}\n\n // Load patterns from storage if available\n this.loadPatterns();\n this.initialized = true;\n }\n\n async recordPattern(_input: string, intent: CommandIntent): Promise<void> {\n const _pattern: UserPattern = {\n input,\n command: intent.command,\n confidence: intent.confidence,\n timestamp: new Date(),\n success: true, // Will be updated by feedback\n };\n\n this.patterns.push(_pattern);\n\n // Keep only recent patterns (last 1000)\n if (this.patterns.length > 1000) {\n this.patterns = this.patterns.slice(-1000);\n }\n\n this.savePatterns();\n }\n\n async recordFeedback(_input: string, correctCommand: string, wasCorrect: boolean): Promise<void> {\n // Find the most recent _pattern matching this input\n const _pattern = this.patterns\n .slice()\n .reverse()\n .find((p) => p.input === input);\n\n if (_pattern) {\n pattern.success = wasCorrect;\n if (!wasCorrect) {\n // Record the correct command as a new _pattern\n this.patterns.push({\n input,\n command: correctCommand,\n confidence: 1.0,\n timestamp: new Date(),\n success: true,\n });\n }\n }\n\n this.savePatterns();\n }\n\n getPatternStats(): Record<string, number> {\n const stats: Record<string, number> = {};\n\n this.patterns.forEach((_pattern) => {\n if (pattern.success) {\n stats[pattern.command] = (stats[pattern.command] ?? 0) + 1;\n }\n });\n\n return stats;\n }\n\n getMostCommonPattern(input: string): string | null {\n const _similarPatterns = this.patterns.filter((p) => {\n return p.success && this.calculateSimilarity(p.input, input) > 0.7;\n });\n\n if (similarPatterns.length === 0) {return null;}\n\n // Count occurrences of each command\n const _commandCounts = new Map<string, number>();\n similarPatterns.forEach((p) => {\n commandCounts.set(p.command, (commandCounts.get(p.command) ?? 0) + 1);\n });\n\n // Return the most common command\n let maxCount = 0;\n let mostCommon: string | null = null;\n\n commandCounts.forEach((count, command) => {\n if (count > maxCount) {\n maxCount = count;\n mostCommon = command;\n }\n });\n\n return mostCommon;\n }\n\n private calculateSimilarity(_str1: string, str2: string): number {\n const _longer = str1.length > str2.length ? str1 : str2;\n const _shorter = str1.length > str2.length ? str2 : str1;\n\n if (longer.length === 0) {return 1.0;}\n\n const _distance = this.levenshteinDistance(_longer, _shorter);\n return (longer.length - _distance) / longer.length;\n }\n\n private levenshteinDistance(_str1: string, str2: string): number {\n const matrix: number[][] = [];\n\n for (let i = 0; i <= str2.length; i++) {\n matrix[i] = [i];\n }\n\n for (let j = 0; j <= str1.length; j++) {\n matrix[0][j] = j;\n }\n\n for (let i = 1; i <= str2.length; i++) {\n for (let j = 1; j <= str1.length; j++) {\n if (str2.charAt(i - 1) === str1.charAt(j - 1)) {\n matrix[i][j] = matrix[i - 1][j - 1];\n } else {\n matrix[i][j] = Math.min(\n matrix[i - 1][j - 1] + 1,\n matrix[i][j - 1] + 1,\n matrix[i - 1][j] + 1,\n );\n }\n }\n }\n\n return matrix[str2.length][str1.length];\n }\n\n async exportData(): Promise<unknown> {\n return {\n patterns: this.patterns,\n stats: this.getPatternStats(),\n };\n }\n\n async importData(data: unknown): Promise<void> {\n if (typeof data === 'object' && data !== null && 'patterns' in data) {\n const _imported = data as { patterns: UserPattern[] };\n this.patterns = imported.patterns;\n this.savePatterns();\n }\n }\n\n private loadPatterns(): void {\n // In production, load from persistent storage\n // For now, start with empty patterns\n this.patterns = [];\n }\n\n private savePatterns(): void {\n // In production, save to persistent storage\n // For now, keep in memory only\n }\n}\n","import { EventEmitter } from 'events';\nimport { NaturalLanguageProcessor } from '../infra/NaturalLanguageProcessor';\nimport { IntentRecognizer } from '../analysis/IntentRecognizer';\nimport { ParameterExtractor } from '../analysis/ParameterExtractor';\nimport { MultilingualDictionary } from '../analysis/MultilingualDictionary';\nimport { LanguageDetector } from '../infra/LanguageDetector';\nimport { CommandMappings } from './CommandMappings';\nimport { UserPatternAnalyzer } from '../analysis/UserPatternAnalyzer';\nimport type { CommandIntent, RouterConfig, RouterMetrics } from '../types/common-types';\nimport chalk from 'chalk';\n\nexport class IntelligentRouterService extends EventEmitter {\n private nlpProcessor: NaturalLanguageProcessor;\n private intentRecognizer: IntentRecognizer;\n private parameterExtractor: ParameterExtractor;\n private dictionary: MultilingualDictionary;\n private languageDetector: LanguageDetector;\n private commandMappings: CommandMappings;\n private userPatternAnalyzer: UserPatternAnalyzer;\n\n private config: Required<RouterConfig>;\n private metrics: RouterMetrics;\n private isInitialized: boolean = false;\n\n constructor(_config: RouterConfig = {}) {\n super();\n\n this.config = {\n confidenceThreshold: _config.confidenceThreshold ?? 0.85,\n enableLearning: _config.enableLearning ?? true,\n supportedLanguages: _config.supportedLanguages ?? ['en', 'ja', 'cn', 'ko', 'vn'],\n enableConfirmation: _config.enableConfirmation ?? true,\n maxAlternatives: _config.maxAlternatives ?? 3,\n };\n\n this.metrics = {\n totalRequests: 0,\n successfulRoutes: 0,\n failedRoutes: 0,\n averageConfidence: 0,\n averageResponseTime: 0,\n commandUsageStats: new Map(),\n };\n\n this.nlpProcessor = new NaturalLanguageProcessor();\n this.intentRecognizer = new IntentRecognizer(this.config);\n this.parameterExtractor = new ParameterExtractor();\n this.dictionary = new MultilingualDictionary();\n this.languageDetector = new LanguageDetector();\n this.commandMappings = new CommandMappings();\n this.userPatternAnalyzer = new UserPatternAnalyzer();\n }\n\n async initialize(): Promise<void> {\n if (this.isInitialized) {return;}\n\n try {\n // Initialize silently\n\n // Initialize all components\n await Promise.all([\n this.dictionary.initialize(),\n this.commandMappings.initialize(),\n this.nlpProcessor.initialize(),\n this.intentRecognizer.initialize(),\n this.userPatternAnalyzer.initialize(),\n ]);\n\n this.isInitialized = true;\n this.emit('initialized');\n\n // Initialized successfully\n } catch (_error) {\n console.error(chalk.red('Failed to initialize Intelligent Router:'), _error);\n throw _error;\n }\n }\n\n async route(input: string): Promise<CommandIntent | null> {\n if (!this.isInitialized) {\n await this.initialize();\n }\n\n const _startTime = Date.now();\n this.metrics.totalRequests++;\n\n try {\n // Step 1: Detect _language\n const _language = await this.languageDetector.detect(input);\n\n if (!this.config.supportedLanguages.includes(_language)) {\n // Debug: Language fallback - commented out to prevent input field pollution\n // console.log(chalk.yellow(`Language '${_language}' not supported, falling back to English`));\n }\n\n // Step 2: Process natural _language\n const processedInput = await this.nlpProcessor.process(input, _language);\n\n // Step 3: Recognize intent\n const intent = await this.intentRecognizer.recognize(processedInput);\n\n if (!intent || intent.confidence < this.config.confidenceThreshold) {\n this.metrics.failedRoutes++;\n this.emit('route:failed', { input, _language, confidence: intent?.confidence ?? 0 });\n return null;\n }\n\n // Step 4: Extract _parameters\n const _parameters = await this.parameterExtractor.extract(input, intent.command, _language);\n\n // Step 5: Build command intent\n const commandIntent: CommandIntent = {\n command: intent.command,\n confidence: intent.confidence,\n _parameters,\n originalInput: input,\n _language,\n alternatives: intent.alternatives,\n };\n\n // Step 6: Learn from pattern if enabled\n if (this.config.enableLearning) {\n await this.userPatternAnalyzer.recordPattern(input, commandIntent);\n }\n\n // Update metrics\n this.metrics.successfulRoutes++;\n this.updateMetrics(intent.confidence, Date.now() - _startTime, intent.command);\n\n this.emit('route:success', commandIntent);\n\n return commandIntent;\n } catch (_error) {\n this.metrics.failedRoutes++;\n this.emit('route:_error', { input, _error });\n console.error(chalk.red('Routing _error:'), _error);\n return null;\n }\n }\n\n async suggestCommand(partialInput: string): Promise<string[]> {\n if (!this.isInitialized) {\n await this.initialize();\n }\n\n try {\n const _language = await this.languageDetector.detect(partialInput);\n const _suggestions = await this.commandMappings.getSuggestions(\n partialInput,\n _language,\n this.config.maxAlternatives,\n );\n\n return _suggestions;\n } catch (_error) {\n console.error('Failed to get _suggestions:', _error);\n return [];\n }\n }\n\n async getCommandExplanation(_command: string, language: string = 'en'): Promise<string> {\n return this.dictionary.getExplanation(command, language);\n }\n\n async needsConfirmation(intent: CommandIntent): Promise<boolean> {\n if (!this.config.enableConfirmation) {return false;}\n\n // Need confirmation for low confidence or destructive commands\n const _destructiveCommands = ['/delete', '/reset', '/clear', '/exit'];\n const _isDestructive = destructiveCommands.includes(intent.command);\n const _isLowConfidence = intent.confidence < 0.9;\n\n return _isDestructive || _isLowConfidence;\n }\n\n getMetrics(): RouterMetrics {\n return { ...this.metrics };\n }\n\n resetMetrics(): void {\n this.metrics = {\n totalRequests: 0,\n successfulRoutes: 0,\n failedRoutes: 0,\n averageConfidence: 0,\n averageResponseTime: 0,\n commandUsageStats: new Map(),\n };\n }\n\n private updateMetrics(_confidence: number, responseTime: number, command: string): void {\n // Update average confidence\n const _totalConfidence = this.metrics.averageConfidence * (this.metrics.successfulRoutes - 1);\n this.metrics.averageConfidence = (_totalConfidence + confidence) / this.metrics.successfulRoutes;\n\n // Update average response time\n const _totalResponseTime =\n this.metrics.averageResponseTime * (this.metrics.successfulRoutes - 1);\n this.metrics.averageResponseTime =\n (_totalResponseTime + responseTime) / this.metrics.successfulRoutes;\n\n // Update command usage stats\n const _currentCount = this.metrics.commandUsageStats.get(command) ?? 0;\n this.metrics.commandUsageStats.set(command, _currentCount + 1);\n }\n\n async trainOnFeedback(_input: string, correctCommand: string, wasCorrect: boolean): Promise<void> {\n if (!this.config.enableLearning) {return;}\n\n try {\n await this.userPatternAnalyzer.recordFeedback(input, correctCommand, wasCorrect);\n await this.intentRecognizer.updateModel(input, correctCommand, wasCorrect);\n\n this.emit('training:complete', { input, correctCommand, wasCorrect });\n } catch (_error) {\n console.error('Failed to train on feedback:', _error);\n }\n }\n\n getConfidenceThreshold(): number {\n return this.config.confidenceThreshold;\n }\n\n setConfidenceThreshold(threshold: number): void {\n if (threshold < 0 || threshold > 1) {\n throw new Error('Confidence threshold must be between 0 and 1');\n }\n this.config.confidenceThreshold = threshold;\n }\n\n getSupportedLanguages(): string[] {\n return [...this.config.supportedLanguages];\n }\n\n isLanguageSupported(language: string): boolean {\n return this.config.supportedLanguages.includes(language);\n }\n\n async exportLearningData(): Promise<unknown> {\n return this.userPatternAnalyzer.exportData();\n }\n\n async importLearningData(data: unknown): Promise<void> {\n await this.userPatternAnalyzer.importData(data);\n }\n\n dispose(): void {\n this.removeAllListeners();\n this.isInitialized = false;\n }\n}\n\n// Singleton instance\nlet routerInstance: IntelligentRouterService | null = null;\n\nexport function getIntelligentRouter(config?: RouterConfig): IntelligentRouterService {\n if (!routerInstance) {\n routerInstance = new IntelligentRouterService(config);\n }\n return routerInstance;\n}\n\nexport function resetIntelligentRouter(): void {\n if (routerInstance) {\n routerInstance.dispose();\n routerInstance = null;\n }\n}\n","/**\n * MARIA Memory System - System 1 Memory Implementation\n *\n * Fast, intuitive memory _patterns for immediate responses\n * Handles programming concepts, code _patterns, and user preferences\n */\n\nimport type {\n AntiPattern,\n CodePattern,\n CommandHistory,\n ConceptEdge,\n ConceptGraph,\n InteractionHistory,\n KnowledgeNode,\n MemoryEvent,\n NodeMetadata,\n PatternLibrary,\n SessionRecord,\n System1Config,\n System1Memory,\n UsagePattern,\n UserPreferenceSet,\n} from './types/memory-interfaces';\n\nexport class System1MemoryManager implements System1Memory {\n private knowledgeNodes: Map<string, KnowledgeNode> = new Map();\n public userPreferences: UserPreferenceSet;\n\n // Private implementation details\n private conceptGraph: ConceptGraph;\n private interactionHistory: InteractionHistory;\n private patternLibrary: PatternLibrary;\n private config: System1Config;\n private cache: Map<string, unknown> = new Map();\n private lastAccessTimes: Map<string, Date> = new Map();\n\n constructor(_config: System1Config) {\n this._config = _config;\n this.conceptGraph = {\n nodes: new Map(),\n edges: new Map(),\n clusters: [],\n };\n this.interactionHistory = {\n sessions: [],\n commands: [],\n _patterns: [],\n };\n this.patternLibrary = {\n codePatterns: [],\n antiPatterns: [],\n bestPractices: [],\n templates: [],\n };\n this.userPreferences = this.initializeDefaultPreferences();\n }\n\n get programmingConcepts(): KnowledgeNode[] {\n return Array.from(this.knowledgeNodes.values())\n .filter((_node) => ['function', 'class', 'module', 'concept'].includes(node.type))\n .sort((a, b) => b.confidence - a.confidence);\n }\n\n get businessLogic(): ConceptGraph {\n return this.conceptGraph;\n }\n\n get pastInteractions(): InteractionHistory {\n return this.interactionHistory;\n }\n\n get codePatterns(): PatternLibrary {\n return this.patternLibrary;\n }\n\n // Knowledge Node Management\n async addKnowledgeNode(\n type: KnowledgeNode['type'],\n name: string,\n content: string,\n embedding: number[],\n metadata: Partial<NodeMetadata> = {},\n ): Promise<KnowledgeNode> {\n const _node: KnowledgeNode = {\n id: this.generateNodeId(type, name),\n type,\n name,\n content,\n embedding,\n _confidence: 0.8,\n lastAccessed: new Date(),\n accessCount: 1,\n metadata: {\n complexity: 'medium',\n _quality: 0.8,\n relevance: 0.8,\n ...metadata,\n },\n };\n\n this.knowledgeNodes.set(node.id, _node);\n this.conceptGraph.nodes.set(node.id, _node);\n\n // Trigger cache cleanup if needed\n if (this.knowledgeNodes.size > this.config.maxKnowledgeNodes) {\n await this.cleanupLeastUsedNodes();\n }\n\n return _node;\n }\n\n async getKnowledgeNode(id: string): Promise<KnowledgeNode | null> {\n const _node = this.knowledgeNodes.get(id);\n if (_node) {\n // Update access _patterns for System 1 fast retrieval\n node.lastAccessed = new Date();\n node.accessCount++;\n this.lastAccessTimes.set(id, new Date());\n\n // Apply access decay\n this.applyAccessDecay(_node);\n }\n return _node || null;\n }\n\n async searchKnowledgeNodes(\n query: string,\n queryEmbedding: number[],\n limit: number = 10,\n ): Promise<KnowledgeNode[]> {\n const _cacheKey = `search:${query}:${limit}`;\n const _cached = this.cache.get(_cacheKey) as KnowledgeNode[];\n if (_cached) {\n return _cached;\n }\n\n const _results = Array.from(this.knowledgeNodes.values())\n .map((node) => ({\n node,\n similarity: this.calculateCosineSimilarity(queryEmbedding, node.embedding),\n }))\n .filter(({ similarity }) => similarity > 0.5)\n .sort((a, b) => b.similarity - a.similarity)\n .slice(0, limit)\n .map(({ _node }) => _node);\n\n // Cache _results for fast subsequent access\n this.cache.set(_cacheKey, _results);\n return _results;\n }\n\n async updateKnowledgeNode(_id: string, updates: Partial<KnowledgeNode>): Promise<boolean> {\n const _node = this.knowledgeNodes.get(id);\n if (!_node) {return false;}\n\n Object.assign(_node, updates);\n node.lastAccessed = new Date();\n this.conceptGraph.nodes.set(id, _node);\n\n // Invalidate _related cache entries\n this.invalidateCache(`_node:${id}`);\n\n return true;\n }\n\n // Concept Graph Management\n async addConceptEdge(\n sourceId: string,\n targetId: string,\n type: ConceptEdge['type'],\n weight: number = 1.0,\n confidence: number = 0.8,\n ): Promise<ConceptEdge> {\n const edge: ConceptEdge = {\n id: `${sourceId}-${type}-${targetId}`,\n sourceId,\n targetId,\n type,\n weight,\n confidence,\n };\n\n this.conceptGraph.edges.set(edge.id, edge);\n return edge;\n }\n\n async getRelatedConcepts(_nodeId: string, maxDepth: number = 2): Promise<KnowledgeNode[]> {\n const _cacheKey = `_related:${nodeId}:${maxDepth}`;\n const _cached = this.cache.get(_cacheKey) as KnowledgeNode[];\n if (_cached) {\n return _cached;\n }\n\n const _related = new Set<string>();\n const _visited = new Set<string>();\n const queue: { id: string; depth: number }[] = [{ id: nodeId, depth: 0 }];\n\n while (queue.length > 0) {\n const { id, depth } = queue.shift()!;\n\n if (visited.has(id) || depth >= maxDepth) {continue;}\n visited.add(id);\n\n // Find all edges from this _node\n for (const edge of this.conceptGraph.edges.values()) {\n if (edge.sourceId === id && !visited.has(edge.targetId)) {\n related.add(edge.targetId);\n queue.push({ id: edge.targetId, depth: depth + 1 });\n }\n if (edge.targetId === id && !visited.has(edge.sourceId)) {\n related.add(edge.sourceId);\n queue.push({ id: edge.sourceId, depth: depth + 1 });\n }\n }\n }\n\n const _results = Array.from(_related)\n .map((id) => this.knowledgeNodes.get(id))\n .filter((node): node is KnowledgeNode => node !== undefined);\n\n this.cache.set(_cacheKey, _results);\n return _results;\n }\n\n // Pattern Management\n async addCodePattern(_pattern: Omit<CodePattern, 'id'>): Promise<CodePattern> {\n const codePattern: CodePattern = {\n id: this.generatePatternId(pattern.name),\n ...pattern,\n };\n\n this.patternLibrary.codePatterns.push(codePattern);\n return codePattern;\n }\n\n async findCodePatterns(\n language?: string,\n framework?: string,\n useCase?: string,\n limit: number = 10,\n ): Promise<CodePattern[]> {\n const _cacheKey = `_patterns:${language}:${framework}:${useCase}:${limit}`;\n const _cached = this.cache.get(_cacheKey) as CodePattern[];\n if (_cached) {\n return _cached;\n }\n\n let _patterns = this.patternLibrary.codePatterns;\n\n if (language) {\n _patterns = patterns.filter((p) => p.language === language);\n }\n if (framework) {\n _patterns = patterns.filter((p) => p.framework === framework);\n }\n if (useCase) {\n _patterns = patterns.filter((p) => p.useCase.toLowerCase().includes(useCase.toLowerCase()));\n }\n\n const _results = _patterns\n .sort((a, b) => {\n // Prioritize by complexity (beginner first) and performance\n const _complexityWeight = { beginner: 3, intermediate: 2, advanced: 1 };\n return (_complexityWeight[a.complexity] || 0) - (_complexityWeight[b.complexity] || 0);\n })\n .slice(0, limit);\n\n this.cache.set(_cacheKey, _results);\n return _results;\n }\n\n async addAntiPattern(_antiPattern: Omit<AntiPattern, 'id'>): Promise<AntiPattern> {\n const _pattern: AntiPattern = {\n id: this.generatePatternId(antiPattern.name),\n ...antiPattern,\n };\n\n this.patternLibrary.antiPatterns.push(_pattern);\n return _pattern;\n }\n\n async detectAntiPatterns(code: string): Promise<AntiPattern[]> {\n const detected: AntiPattern[] = [];\n\n for (const antiPattern of this.patternLibrary.antiPatterns) {\n for (const rule of antiPattern.detectionRules) {\n try {\n const _regex = new RegExp(rule.pattern, 'gi');\n if (regex.test(code)) {\n detected.push(antiPattern);\n break; // One detection per anti-_pattern\n }\n } catch (_error) {\n console.warn(`Invalid _regex _pattern: ${rule.pattern}`, _error);\n }\n }\n }\n\n return detected.sort((a, b) => {\n const _severityWeight = { critical: 4, high: 3, medium: 2, low: 1 };\n return (_severityWeight[b.severity] || 0) - (_severityWeight[a.severity] || 0);\n });\n }\n\n // Interaction History Management\n async recordSession(session: SessionRecord): Promise<void> {\n this.interactionHistory.sessions.push(session);\n\n // Update command frequencies\n for (const command of session.commands) {\n await this.updateCommandHistory(command);\n }\n\n // Detect new usage _patterns\n await this.detectUsagePatterns();\n\n // Limit history size\n if (this.interactionHistory.sessions.length > 1000) {\n this.interactionHistory.sessions = this.interactionHistory.sessions.slice(-500);\n }\n }\n\n async updateCommandHistory(command: string): Promise<void> {\n let commandHist = this.interactionHistory.commands.find((c) => c.command === command);\n\n if (!commandHist) {\n commandHist = {\n command,\n _frequency: 0,\n lastUsed: new Date(),\n successRate: 1.0,\n averageExecutionTime: 0,\n userSatisfaction: 0.8,\n };\n this.interactionHistory.commands.push(commandHist);\n }\n\n commandHist.frequency++;\n commandHist.lastUsed = new Date();\n }\n\n async getFrequentCommands(limit: number = 10): Promise<CommandHistory[]> {\n return this.interactionHistory.commands\n .sort((a, b) => b.frequency - a.frequency)\n .slice(0, limit);\n }\n\n async getRecentCommands(limit: number = 10): Promise<CommandHistory[]> {\n return this.interactionHistory.commands\n .sort((a, b) => b.lastUsed.getTime() - a.lastUsed.getTime())\n .slice(0, limit);\n }\n\n // User Preferences Management\n async updateUserPreferences(updates: Partial<UserPreferenceSet>): Promise<void> {\n Object.assign(this.userPreferences, updates);\n this.invalidateCache('preferences');\n }\n\n async getUserPreference<K extends keyof UserPreferenceSet>(\n key: K,\n ): Promise<UserPreferenceSet[K]> {\n return this.userPreferences[key];\n }\n\n // Memory Event Processing\n async processMemoryEvent(event: MemoryEvent): Promise<void> {\n switch (event.type) {\n case 'code_generation':\n await this.processCodeGenerationEvent(event);\n break;\n case 'pattern_recognition':\n await this.processPatternRecognitionEvent(event);\n break;\n case 'learning_update':\n await this.processLearningUpdateEvent(event);\n break;\n default:\n // Store for potential System 2 processing\n break;\n }\n\n // Update access _patterns\n this.lastAccessTimes.set(event.id, new Date());\n }\n\n // Performance Optimization\n async cleanupLeastUsedNodes(): Promise<void> {\n const _nodeEntries = Array.from(this.knowledgeNodes.entries());\n const _sortedByUsage = nodeEntries.sort((a, b) => {\n const _aScore = this.calculateUsageScore(a[1]);\n const _bScore = this.calculateUsageScore(b[1]);\n return _aScore - _bScore;\n });\n\n // Remove least used 10%\n const _removeCount = Math.floor(this.config.maxKnowledgeNodes * 0.1);\n for (let i = 0; i < _removeCount && i < sortedByUsage.length; i++) {\n const _entry = _sortedByUsage[i];\n if (_entry) {\n const [nodeId] = _entry;\n this.knowledgeNodes.delete(nodeId);\n this.conceptGraph.nodes.delete(nodeId);\n this.invalidateCache(`_node:${nodeId}`);\n }\n }\n }\n\n async compressMemory(): Promise<void> {\n // Compress old interaction history\n const _cutoffDate = new Date(Date.now() - 30 * 24 * 60 * 60 * 1000); // 30 days\n this.interactionHistory.sessions = this.interactionHistory.sessions.filter(\n (session) => session.startTime > _cutoffDate,\n );\n\n // Merge _similar _patterns\n await this.mergeimilarPatterns();\n\n // Clear old cache entries\n this.cache.clear();\n }\n\n // Private Helper Methods\n private generateNodeId(_type: string, name: string): string {\n return `${type}:${name}:${Date.now()}`;\n }\n\n private generatePatternId(name: string): string {\n return `_pattern:${name}:${Date.now()}`;\n }\n\n private calculateCosineSimilarity(_a: number[], b: number[]): number {\n if (a.length !== b.length) {return 0;}\n\n let dotProduct = 0;\n let normA = 0;\n let normB = 0;\n\n for (let i = 0; i < a.length && i < b.length; i++) {\n const _aVal = a[i] ?? 0;\n const _bVal = b[i] ?? 0;\n dotProduct += _aVal * _bVal;\n normA += _aVal * _aVal;\n normB += _bVal * _bVal;\n }\n\n return dotProduct / (Math.sqrt(normA) * Math.sqrt(normB));\n }\n\n private applyAccessDecay(_node: KnowledgeNode): void {\n const _daysSinceAccess = (Date.now() - node.lastAccessed.getTime()) / (1000 * 60 * 60 * 24);\n const _decayFactor = Math.exp(-this.config.accessDecayRate * _daysSinceAccess);\n node.confidence *= _decayFactor;\n\n // Minimum _confidence threshold\n node.confidence = Math.max(node.confidence, 0.1);\n }\n\n private calculateUsageScore(_node: KnowledgeNode): number {\n const _recency = (Date.now() - node.lastAccessed.getTime()) / (1000 * 60 * 60 * 24);\n const _frequency = Math.log(node.accessCount + 1);\n const _confidence = node.confidence;\n const _quality = node.metadata.quality;\n\n return (_frequency + _confidence + _quality) / (1 + _recency * 0.1);\n }\n\n private invalidateCache(pattern: string): void {\n for (const key of this.cache.keys()) {\n if (key.includes(pattern)) {\n this.cache.delete(key);\n }\n }\n }\n\n private async detectUsagePatterns(): Promise<void> {\n // Analyze recent sessions for _patterns\n const _recentSessions = this.interactionHistory.sessions.slice(-20); // Last 20 sessions\n\n // Detect temporal _patterns\n const _hourlyUsage = new Map<number, number>();\n for (const session of _recentSessions) {\n const _hour = session.startTime.getHours();\n hourlyUsage.set(_hour, (hourlyUsage.get(_hour) || 0) + 1);\n }\n\n // Detect command _sequences\n const _sequences = new Map<string, number>();\n for (const session of _recentSessions) {\n for (let i = 0; i < session.commands.length - 1; i++) {\n const _sequence = `${session.commands[i]} -> ${session.commands[i + 1]}`;\n sequences.set(_sequence, (sequences.get(_sequence) || 0) + 1);\n }\n }\n\n // Store significant _patterns\n for (const [_sequence, _frequency] of sequences.entries()) {\n if (_frequency >= 3) {\n // Threshold for _pattern significance\n const _pattern: UsagePattern = {\n id: `seq:${_sequence}:${Date.now()}`,\n type: 'sequential',\n _pattern: _sequence,\n _frequency,\n _confidence: Math.min(_frequency / 10, 1.0),\n conditions: [],\n };\n\n this.interactionHistory.patterns.push(_pattern);\n }\n }\n }\n\n private async processCodeGenerationEvent(event: MemoryEvent): Promise<void> {\n // Extract code _patterns from generation events\n const _data = event.data as { code?: string; language?: string; context?: string };\n\n if (data.code && data.language) {\n // Simple _pattern extraction (in production, use AST analysis)\n const _patterns = this.extractCodePatterns(data.code, data.language);\n\n for (const _pattern of _patterns) {\n await this.addCodePattern(_pattern);\n }\n }\n }\n\n private async processPatternRecognitionEvent(event: MemoryEvent): Promise<void> {\n // Update _pattern _confidence based on recognition success\n const _data = event.data as { patternId?: string; success?: boolean };\n\n if (data.patternId) {\n const _pattern = this.patternLibrary.codePatterns.find((p) => p.id === data.patternId);\n if (_pattern && data.success !== undefined) {\n // Adjust _pattern effectiveness based on usage success\n const _adjustment = data.success ? 0.1 : -0.05;\n // Update _pattern performance metrics\n console.log(`Pattern ${data.patternId} _adjustment: ${_adjustment}`);\n }\n }\n }\n\n private async processLearningUpdateEvent(event: MemoryEvent): Promise<void> {\n // Update user preferences based on learning events\n const _data = event.data as {\n preference?: string;\n value?: unknown;\n _confidence?: number;\n };\n\n if (data.preference && data.value !== undefined) {\n // Update user preferences with new learning\n await this.adaptUserPreferences(data.preference, data.value, data.confidence || 0.8);\n }\n }\n\n private extractCodePatterns(_code: string, language: string): Omit<CodePattern, 'id'>[] {\n // Simplified _pattern extraction\n const _patterns: Omit<CodePattern, 'id'>[] = [];\n\n // Function _pattern detection\n const _functionRegex = /function\\s+(\\w+)\\s*\\([^)]*\\)\\s*{[^}]+}/g;\n let match;\n\n while ((match = functionRegex.exec(code)) !== null) {\n patterns.push({\n name: `Function: ${match[1]}`,\n description: `Function _pattern extracted from code`,\n code: match[0],\n language,\n useCase: 'Function definition',\n complexity: 'intermediate',\n performance: {\n timeComplexity: 'O(1)',\n spaceComplexity: 'O(1)',\n },\n examples: [],\n });\n }\n\n return _patterns;\n }\n\n private async adaptUserPreferences(\n preference: string,\n value: unknown,\n confidence: number,\n ): Promise<void> {\n // Adapt user preferences based on observed behavior\n // This would integrate with the learning engine\n console.log(`Adapting preference ${preference} to ${value} (_confidence: ${confidence})`);\n }\n\n private async mergeimilarPatterns(): Promise<void> {\n // Merge _patterns with high similarity to reduce redundancy\n const _patterns = this.patternLibrary.codePatterns;\n const merged: CodePattern[] = [];\n const _processed = new Set<string>();\n\n for (let i = 0; i < patterns.length; i++) {\n const _currentPattern = _patterns[i];\n if (!_currentPattern || processed.has(currentPattern.id)) {continue;}\n\n const _similar = _patterns\n .slice(i + 1)\n .filter(\n (p) =>\n p &&\n !processed.has(p.id) &&\n p.language === currentPattern.language &&\n this.calculatePatternSimilarity(_currentPattern, p) > 0.8,\n );\n\n if (similar.length > 0) {\n // Merge _similar _patterns\n const _mergedPattern = this.mergePatterns(_currentPattern, _similar);\n merged.push(_mergedPattern);\n\n processed.add(currentPattern.id);\n similar.forEach((p) => processed.add(p.id));\n } else {\n merged.push(_currentPattern);\n processed.add(currentPattern.id);\n }\n }\n\n this.patternLibrary.codePatterns = merged;\n }\n\n private calculatePatternSimilarity(_a: CodePattern, b: CodePattern): number {\n // Simple similarity calculation based on name and use case\n const _namesSimilar =\n a.name.toLowerCase().includes(b.name.toLowerCase()) ||\n b.name.toLowerCase().includes(a.name.toLowerCase());\n const _useCasesSimilar = a.useCase.toLowerCase() === b.useCase.toLowerCase();\n\n return (_namesSimilar ? 0.5 : 0) + (_useCasesSimilar ? 0.5 : 0);\n }\n\n private mergePatterns(_primary: CodePattern, _similar: CodePattern[]): CodePattern {\n // Merge multiple _similar _patterns into one\n return {\n ...primary,\n description: `${primary.description} (merged from ${similar.length + 1} _patterns)`,\n examples: [...primary.examples, ...similar.flatMap((p) => p.examples)],\n };\n }\n\n private initializeDefaultPreferences(): UserPreferenceSet {\n return {\n developmentStyle: {\n approach: 'iterative',\n preferredLanguages: [\n { language: 'typescript', proficiency: 'intermediate', _frequency: 0.8, preference: 4 },\n { language: 'javascript', proficiency: 'intermediate', _frequency: 0.6, preference: 3 },\n ],\n architecturalPatterns: [\n { name: 'MVC', familiarity: 0.7, preference: 3, usageFrequency: 0.5 },\n ],\n problemSolvingStyle: 'systematic',\n workPace: 'moderate',\n },\n communicationPreferences: {\n verbosity: 'moderate',\n explanationDepth: 'intermediate',\n codeCommentStyle: 'inline',\n feedbackStyle: 'constructive',\n },\n toolPreferences: {\n ide: ['vscode', 'webstorm'],\n frameworks: [\n { name: 'react', category: 'frontend', proficiency: 0.7, preference: 4 },\n { name: 'express', category: 'backend', proficiency: 0.6, preference: 3 },\n ],\n libraries: [{ name: 'lodash', category: 'utility', proficiency: 0.8, preference: 4 }],\n buildTools: ['webpack', 'vite'],\n testingTools: ['jest', 'vitest'],\n },\n learningStyle: {\n preferredMethods: [\n { type: 'hands_on', effectiveness: 0.9, preference: 5 },\n { type: 'visual', effectiveness: 0.7, preference: 4 },\n ],\n pace: 'moderate',\n complexity: 'simple_to_complex',\n feedback: 'immediate',\n },\n qualityStandards: {\n codeQuality: [\n { metric: 'maintainability', threshold: 80, priority: 'high' },\n { metric: 'readability', threshold: 75, priority: 'high' },\n ],\n testCoverage: 80,\n documentation: {\n required: true,\n style: 'standard',\n formats: ['markdown', 'jsdoc'],\n },\n performance: {\n responseTime: 200,\n throughput: 1000,\n memoryUsage: 512,\n cpuUsage: 70,\n },\n security: {\n requirements: [\n {\n type: 'authentication',\n description: 'Secure auth required',\n severity: 'high',\n mandatory: true,\n },\n ],\n compliance: [{ name: 'OWASP', version: '2021', requirements: ['Top 10 coverage'] }],\n scanningEnabled: true,\n },\n },\n };\n }\n}\n","/**\n * MARIA Memory System - System 2 Memory Implementation\n *\n * Deliberate reasoning and _quality _traces for complex decision making\n * Handles reasoning steps, _quality evaluation, and improvement suggestions\n */\n\nimport type {\n ActionItem,\n AlternativeReasoning,\n CodeQualityMetrics,\n DecisionNode,\n DecisionTree,\n Enhancement,\n Evidence,\n MemoryEvent,\n QualityMetrics,\n ReasoningContext,\n ReasoningStep,\n ReasoningTrace,\n ReflectionEntry,\n System2Config,\n System2Memory,\n} from './types/memory-interfaces';\n\nexport class System2MemoryManager implements System2Memory {\n private reasoningTraces: Map<string, ReasoningTrace> = new Map();\n private qualityMetrics: QualityMetrics;\n private decisionTrees: Map<string, DecisionTree> = new Map();\n private enhancements: Map<string, Enhancement> = new Map();\n private reflectionEntries: Map<string, ReflectionEntry> = new Map();\n private config: System2Config;\n private analysisCache: Map<string, unknown> = new Map();\n\n constructor(_config: System2Config) {\n this._config = _config;\n this.qualityMetrics = this.initializeQualityMetrics();\n }\n\n get reasoningSteps(): ReasoningTrace[] {\n return Array.from(this.reasoningTraces.values()).sort(\n (a, b) => b.timestamp.getTime() - a.timestamp.getTime(),\n );\n }\n\n get qualityEvaluation(): QualityMetrics {\n return this.qualityMetrics;\n }\n\n get decisionContext(): DecisionTree {\n // Return the most recent or most relevant decision _tree\n const _trees = Array.from(this.decisionTrees.values());\n return (\n trees.sort(\n (a, b) => b.metadata.lastUpdated.getTime() - a.metadata.lastUpdated.getTime(),\n )[0] || this.createEmptyDecisionTree()\n );\n }\n\n get improvementSuggestions(): Enhancement[] {\n return Array.from(this.enhancements.values())\n .filter(\n (_enhancement) => enhancement.status === 'proposed' || enhancement.status === 'approved',\n )\n .sort((a, b) => b.priority - a.priority);\n }\n\n get reflectionData(): ReflectionEntry[] {\n return Array.from(this.reflectionEntries.values()).sort(\n (a, b) => b.timestamp.getTime() - a.timestamp.getTime(),\n );\n }\n\n // Reasoning Trace Management\n async startReasoningTrace(_context: ReasoningContext,\n initialStep?: string,\n ): Promise<ReasoningTrace> {\n const _trace: ReasoningTrace = {\n id: this.generateTraceId(),\n timestamp: new Date(),\n context,\n steps: [],\n conclusion: '',\n confidence: 0.0,\n alternatives: [],\n metadata: {\n _complexity: this.assessComplexity(context),\n domain: this.identifyDomain(context),\n techniques: [],\n qualityScore: 0.0,\n reviewRequired: false,\n },\n };\n\n if (initialStep) {\n await this.addReasoningStep(trace.id, {\n type: 'analysis',\n description: 'Initial _problem analysis',\n input: context.problem,\n output: initialStep,\n });\n }\n\n this.reasoningTraces.set(trace.id, _trace);\n await this.manageTraceLimit();\n\n return _trace;\n }\n\n async addReasoningStep(\n traceId: string,\n stepData: Omit<ReasoningStep, 'id' | 'confidence' | 'duration' | 'dependencies'>,\n ): Promise<ReasoningStep> {\n const _trace = this.reasoningTraces.get(traceId);\n if (!_trace) {\n throw new Error(`Reasoning _trace ${traceId} not _found`);\n }\n\n const _startTime = Date.now();\n\n const step: ReasoningStep = {\n id: this.generateStepId(traceId),\n confidence: this.calculateStepConfidence(stepData, _trace),\n duration: 0, // Will be updated when step completes\n dependencies: this.identifyDependencies(stepData, trace.steps),\n ...stepData,\n };\n\n trace.steps.push(step);\n trace.metadata.techniques.push(stepData.type);\n\n // Update step duration\n step.duration = Date.now() - _startTime;\n\n // Update _trace _quality and _complexity\n await this.updateTraceQuality(_trace);\n\n return step;\n }\n\n async completeReasoningTrace(\n traceId: string,\n conclusion: string,\n confidence: number,\n ): Promise<ReasoningTrace> {\n const _trace = this.reasoningTraces.get(traceId);\n if (!_trace) {\n throw new Error(`Reasoning _trace ${traceId} not _found`);\n }\n\n trace.conclusion = conclusion;\n trace.confidence = confidence;\n trace.metadata.qualityScore = await this.calculateReasoningQuality(_trace);\n trace.metadata.reviewRequired = trace.metadata.qualityScore < this.config.qualityThreshold;\n\n // Generate improvement suggestions based on the _trace\n await this.generateImprovementSuggestions(_trace);\n\n // Update global _quality metrics\n await this.updateGlobalQualityMetrics(_trace);\n\n return _trace;\n }\n\n async addAlternativeReasoning(\n traceId: string,\n alternative: Omit<AlternativeReasoning, 'id'>,\n ): Promise<AlternativeReasoning> {\n const _trace = this.reasoningTraces.get(traceId);\n if (!_trace) {\n throw new Error(`Reasoning _trace ${traceId} not _found`);\n }\n\n const altReasoning: AlternativeReasoning = {\n id: this.generateAlternativeId(traceId),\n ...alternative,\n };\n\n trace.alternatives.push(altReasoning);\n return altReasoning;\n }\n\n async getReasoningTrace(traceId: string): Promise<ReasoningTrace | null> {\n return this.reasoningTraces.get(traceId) || null;\n }\n\n async searchReasoningTraces(\n query: {\n domain?: string;\n _complexity?: string;\n minQuality?: number;\n timeframe?: { start: Date; end: Date };\n },\n limit: number = 10,\n ): Promise<ReasoningTrace[]> {\n const _cacheKey = `search:reasoning:${JSON.stringify(query)}:${limit}`;\n const _cached = this.analysisCache.get(_cacheKey) as ReasoningTrace[];\n if (_cached) {\n return _cached;\n }\n\n let _traces = Array.from(this.reasoningTraces.values());\n\n if (query.domain) {\n _traces = traces.filter((_trace) => trace.metadata.domain === query.domain);\n }\n\n if (query.complexity) {\n _traces = traces.filter((_trace) => trace.metadata.complexity === query.complexity);\n }\n\n if (query.minQuality !== undefined) {\n _traces = traces.filter((_trace) => trace.metadata.qualityScore >= (query.minQuality ?? 0));\n }\n\n if (query.timeframe) {\n _traces = traces.filter(\n (_trace) =>\n trace.timestamp >= query.timeframe!.start && trace.timestamp <= query.timeframe!.end,\n );\n }\n\n const _results = _traces\n .sort((a, b) => b.metadata.qualityScore - a.metadata.qualityScore)\n .slice(0, limit);\n\n this.analysisCache.set(_cacheKey, _results);\n return _results;\n }\n\n // Decision Tree Management\n async createDecisionTree(_domain: string, initialCondition: string): Promise<DecisionTree> {\n const _tree: DecisionTree = {\n id: this.generateDecisionTreeId(domain),\n rootNode: {\n id: 'root',\n type: 'condition',\n description: initialCondition,\n children: [],\n confidence: 0.8,\n evidence: [],\n alternatives: [],\n },\n metadata: {\n domain,\n _complexity: 1,\n accuracy: 0.8,\n lastUpdated: new Date(),\n usageCount: 0,\n },\n };\n\n this.decisionTrees.set(tree.id, _tree);\n return _tree;\n }\n\n async addDecisionNode(\n treeId: string,\n parentNodeId: string,\n _node: Omit<DecisionNode, 'id'>,\n ): Promise<DecisionNode> {\n const _tree = this.decisionTrees.get(treeId);\n if (!_tree) {\n throw new Error(`Decision _tree ${treeId} not _found`);\n }\n\n const newNode: DecisionNode = {\n id: this.generateNodeId(treeId),\n ...node,\n };\n\n const _parentNode = this.findDecisionNode(tree.rootNode, parentNodeId);\n if (_parentNode) {\n parentNode.children.push(newNode);\n tree.metadata.complexity = this.calculateTreeComplexity(tree.rootNode);\n tree.metadata.lastUpdated = new Date();\n }\n\n return newNode;\n }\n\n async addEvidence(_treeId: string, nodeId: string, evidence: Evidence): Promise<void> {\n const _tree = this.decisionTrees.get(treeId);\n if (!_tree) {\n throw new Error(`Decision _tree ${treeId} not _found`);\n }\n\n const _node = this.findDecisionNode(tree.rootNode, nodeId);\n if (_node) {\n node.evidence.push(evidence);\n\n // Recalculate _node confidence based on evidence\n node.confidence = this.calculateNodeConfidence(node.evidence);\n tree.metadata.lastUpdated = new Date();\n }\n }\n\n async queryDecisionTree(\n treeId: string,\n context: Record<string, unknown>,\n ): Promise<DecisionNode[]> {\n const _tree = this.decisionTrees.get(treeId);\n if (!_tree) {\n return [];\n }\n\n tree.metadata.usageCount++;\n return this.traverseDecisionTree(tree.rootNode, context);\n }\n\n // Enhancement Management\n async proposeEnhancement(_enhancement: Omit<Enhancement, 'id' | 'status'>): Promise<Enhancement> {\n const newEnhancement: Enhancement = {\n id: this.generateEnhancementId(),\n status: 'proposed',\n ...enhancement,\n };\n\n this.enhancements.set(newEnhancement.id, newEnhancement);\n\n // Automatically approve low-risk, high-impact enhancements\n if (this.shouldAutoApprove(newEnhancement)) {\n newEnhancement.status = 'approved';\n }\n\n return newEnhancement;\n }\n\n async updateEnhancementStatus(\n enhancementId: string,\n status: Enhancement['status'],\n feedback?: string,\n ): Promise<boolean> {\n const _enhancement = this.enhancements.get(enhancementId);\n if (!_enhancement) {\n return false;\n }\n\n // Use feedback if provided\n if (feedback) {\n console.log(`Enhancement feedback: ${feedback}`);\n }\n\n enhancement.status = status;\n\n if (status === 'completed') {\n await this.evaluateEnhancementImpact(_enhancement);\n }\n\n return true;\n }\n\n async getEnhancementsByType(type: Enhancement['type']): Promise<Enhancement[]> {\n return Array.from(this.enhancements.values())\n .filter((_enhancement) => enhancement.type === type)\n .sort((a, b) => b.priority - a.priority);\n }\n\n // Reflection Management\n async addReflectionEntry(\n trigger: string,\n observation: string,\n analysis: string,\n insight: string,\n confidence: number = 0.8,\n ): Promise<ReflectionEntry> {\n const _reflection: ReflectionEntry = {\n id: this.generateReflectionId(),\n timestamp: new Date(),\n trigger,\n observation,\n analysis,\n insight,\n actionItems: [],\n confidence,\n };\n\n this.reflectionEntries.set(reflection.id, _reflection);\n\n // Generate action items from insights\n await this.generateActionItems(_reflection);\n\n return _reflection;\n }\n\n async addActionItem(\n reflectionId: string,\n actionItem: Omit<ActionItem, 'id' | 'status'>,\n ): Promise<ActionItem> {\n const _reflection = this.reflectionEntries.get(reflectionId);\n if (!_reflection) {\n throw new Error(`Reflection entry ${reflectionId} not _found`);\n }\n\n const action: ActionItem = {\n id: this.generateActionItemId(reflectionId),\n status: 'open',\n ...actionItem,\n };\n\n reflection.actionItems.push(action);\n return action;\n }\n\n async getReflectionInsights(\n timeframe?: { start: Date; end: Date },\n minConfidence: number = 0.7,\n ): Promise<ReflectionEntry[]> {\n let reflections = Array.from(this.reflectionEntries.values());\n\n if (timeframe) {\n reflections = reflections.filter(\n (r) => r.timestamp >= timeframe.start && r.timestamp <= timeframe.end,\n );\n }\n\n return reflections\n .filter((r) => r.confidence >= minConfidence)\n .sort((a, b) => b.confidence - a.confidence);\n }\n\n // Memory Event Processing\n async processMemoryEvent(event: MemoryEvent): Promise<void> {\n switch (event.type) {\n case 'code_generation':\n await this.processCodeGenerationEvent(event);\n break;\n case 'bug_fix':\n await this.processBugFixEvent(event);\n break;\n case 'quality_improvement':\n await this.processQualityImprovementEvent(event);\n break;\n default:\n await this.processGenericEvent(event);\n break;\n }\n }\n\n // Quality Assessment\n async assessCodeQuality(\n code: string,\n language: string,\n context?: Record<string, unknown>,\n ): Promise<CodeQualityMetrics> {\n // Use context if provided\n if (context) {\n console.log('Code _quality context:', Object.keys(context));\n }\n const _cacheKey = `_quality:${this.hashCode(code)}:${ language }`;\n const _cached = this.analysisCache.get(_cacheKey) as CodeQualityMetrics;\n if (_cached) {\n return _cached;\n }\n\n const metrics: CodeQualityMetrics = {\n maintainability: await this.calculateMaintainability(code, _language),\n readability: await this.calculateReadability(code, _language),\n testability: await this.calculateTestability(code, _language),\n performance: await this.calculatePerformance(code, _language),\n security: await this.calculateSecurity(code, _language),\n bugDensity: await this.calculateBugDensity(code, _language),\n _complexity: await this.calculateCyclomaticComplexity(code, _language),\n };\n\n this.analysisCache.set(_cacheKey, metrics);\n return metrics;\n }\n\n async updateQualityMetrics(metrics: Partial<QualityMetrics>): Promise<void> {\n Object.assign(this.qualityMetrics, metrics);\n }\n\n // Private Helper Methods\n private generateTraceId(): string {\n return `_trace:${Date.now()}:${Math.random().toString(36).substr(2, 9)}`;\n }\n\n private generateStepId(traceId: string): string {\n return `${traceId}:step:${Date.now()}`;\n }\n\n private generateAlternativeId(traceId: string): string {\n return `${traceId}:alt:${Date.now()}`;\n }\n\n private generateDecisionTreeId(domain: string): string {\n return `_tree:${domain}:${Date.now()}`;\n }\n\n private generateNodeId(treeId: string): string {\n return `${treeId}:_node:${Date.now()}`;\n }\n\n private generateEnhancementId(): string {\n return `_enhancement:${Date.now()}:${Math.random().toString(36).substr(2, 9)}`;\n }\n\n private generateReflectionId(): string {\n return `_reflection:${Date.now()}:${Math.random().toString(36).substr(2, 9)}`;\n }\n\n private generateActionItemId(reflectionId: string): string {\n return `${reflectionId}:action:${Date.now()}`;\n }\n\n private assessComplexity(_context: ReasoningContext,\n ): 'simple' | 'moderate' | 'complex' | 'very_complex' {\n const _factors = [\n context.goals.length > 3,\n context.constraints.length > 2,\n context.assumptions.length > 3,\n context.problem.length > 500,\n ];\n\n const _complexityScore = factors.filter(Boolean).length;\n\n if (_complexityScore === 0) {return 'simple';}\n if (_complexityScore === 1) {return 'moderate';}\n if (_complexityScore === 2) {return 'complex';}\n return 'very_complex';\n }\n\n private identifyDomain(context: ReasoningContext): string {\n const _problem = context.problem.toLowerCase();\n\n if (problem.includes('performance') || problem.includes('optimization')) {\n return 'performance';\n }\n if (problem.includes('security') || problem.includes('vulnerability')) {\n return 'security';\n }\n if (problem.includes('architecture') || problem.includes('design')) {\n return 'architecture';\n }\n if (problem.includes('bug') || problem.includes('error')) {\n return 'debugging';\n }\n\n return 'general';\n }\n\n private calculateStepConfidence(\n stepData: Omit<ReasoningStep, 'id' | 'confidence' | 'duration' | 'dependencies'>,\n _trace: ReasoningTrace,\n ): number {\n let confidence = 0.8; // Base confidence\n\n // Adjust based on step type\n switch (stepData.type) {\n case 'analysis':\n confidence = 0.7;\n break;\n case 'inference':\n confidence = 0.6;\n break;\n case 'evaluation':\n confidence = 0.8;\n break;\n case 'synthesis':\n confidence = 0.5;\n break;\n }\n\n // Adjust based on input/output _quality\n if (stepData.input.length > 100) {confidence += 0.1;}\n if (stepData.output.length > 100) {confidence += 0.1;}\n\n // Adjust based on _trace _complexity\n if (trace.metadata.complexity === 'simple') {confidence += 0.1;}\n if (trace.metadata.complexity === 'very_complex') {confidence -= 0.1;}\n\n return Math.max(0.1, Math.min(1.0, confidence));\n }\n\n private identifyDependencies(\n stepData: Omit<ReasoningStep, 'id' | 'confidence' | 'duration' | 'dependencies'>,\n existingSteps: ReasoningStep[],\n ): string[] {\n const dependencies: string[] = [];\n\n // Simple keyword-based dependency detection\n for (const step of existingSteps) {\n if (stepData.input.includes(step.output.slice(0, 50))) {\n dependencies.push(step.id);\n }\n }\n\n return dependencies;\n }\n\n private async updateTraceQuality(_trace: ReasoningTrace): Promise<void> {\n // Calculate _quality based on step _coherence and _completeness\n const _stepCount = trace.steps.length;\n const _avgConfidence = trace.steps.reduce((sum, step) => sum + step.confidence, 0) / _stepCount;\n const _hasAnalysis = trace.steps.some((step) => step.type === 'analysis');\n const _hasEvaluation = trace.steps.some((step) => step.type === 'evaluation');\n\n let _quality = _avgConfidence * 0.6;\n if (_hasAnalysis) {_quality += 0.2;}\n if (_hasEvaluation) {_quality += 0.2;}\n\n trace.metadata.qualityScore = Math.max(0, Math.min(1, _quality));\n }\n\n private async calculateReasoningQuality(trace: ReasoningTrace): Promise<number> {\n const _factors = {\n _coherence: this.calculateCoherence(trace),\n _completeness: this.calculateCompleteness(trace),\n accuracy: this.calculateAccuracy(trace),\n efficiency: this.calculateEfficiency(trace),\n _creativity: this.calculateCreativity(trace),\n };\n\n return (\n Object.values(_factors).reduce((sum, value) => sum + value, 0) / Object.keys(_factors).length\n );\n }\n\n private calculateCoherence(_trace: ReasoningTrace): number {\n // Measure logical flow between steps\n let coherenceSum = 0;\n let pairCount = 0;\n\n for (let i = 1; i < trace.steps.length; i++) {\n const _prev = trace.steps[i - 1];\n const _curr = trace.steps[i];\n\n // Simple _coherence check: current step input relates to previous step output\n const _coherence = _curr?.input.includes(_prev?.output.slice(0, 30) || '') ? 1 : 0.5;\n coherenceSum += _coherence;\n pairCount++;\n }\n\n return pairCount > 0 ? coherenceSum / pairCount : 0.8;\n }\n\n private calculateCompleteness(_trace: ReasoningTrace): number {\n const _requiredStepTypes = ['analysis', 'evaluation'];\n const _presentTypes = new Set(trace.steps.map((step) => step.type as string));\n\n const _completeness =\n requiredStepTypes.filter((type) => presentTypes.has(type)).length / requiredStepTypes.length;\n return _completeness;\n }\n\n private calculateAccuracy(_trace: ReasoningTrace): number {\n // Base on step confidence and alternative consideration\n const _avgConfidence =\n trace.steps.reduce((sum, step) => sum + step.confidence, 0) / trace.steps.length;\n const _alternativeBonus = trace.alternatives.length > 0 ? 0.1 : 0;\n\n return Math.min(1, _avgConfidence + _alternativeBonus);\n }\n\n private calculateEfficiency(_trace: ReasoningTrace): number {\n // Measure steps per unit of _complexity\n const _complexity = { simple: 1, moderate: 2, complex: 3, verycomplex: 4 }[\n trace.metadata.complexity\n ];\n const _stepEfficiency = Math.max(0.2, 1 - (trace.steps.length - _complexity) * 0.1);\n\n return _stepEfficiency;\n }\n\n private calculateCreativity(_trace: ReasoningTrace): number {\n // Measure use of diverse reasoning techniques and alternatives\n const _uniqueTechniques = new Set(trace.metadata.techniques).size;\n const _alternativeCount = trace.alternatives.length;\n\n const _creativity = Math.min(1, _uniqueTechniques * 0.3 + _alternativeCount * 0.2 + 0.5);\n return _creativity;\n }\n\n private async generateImprovementSuggestions(_trace: ReasoningTrace): Promise<void> {\n if (trace.metadata.qualityScore < 0.7) {\n await this.proposeEnhancement({\n type: '_quality',\n description: `Improve reasoning _quality for ${trace.metadata.domain} problems`,\n impact: {\n benefitScore: 7,\n effortScore: 5,\n riskScore: 2,\n affectedUsers: 1,\n affectedComponents: ['reasoning', 'decision-making'],\n },\n implementation: {\n phases: [\n {\n id: 'analysis',\n name: 'Quality Analysis',\n description: 'Analyze low-_quality reasoning patterns',\n duration: 3,\n deliverables: ['Pattern analysis', 'Improvement plan'],\n dependencies: [],\n },\n ],\n timeline: 7,\n resources: [\n {\n type: 'developer',\n quantity: 1,\n duration: 7,\n },\n ],\n dependencies: [],\n risks: [\n {\n id: '_complexity',\n description: 'Reasoning improvement may add _complexity',\n probability: 0.3,\n impact: 4,\n mitigation: 'Gradual implementation with testing',\n contingency: 'Rollback to previous version',\n },\n ],\n },\n priority: 6,\n });\n }\n }\n\n private async updateGlobalQualityMetrics(trace: ReasoningTrace): Promise<void> {\n // Update reasoning _quality metrics\n const _currentReasoning = this.qualityMetrics.reasoningQuality;\n\n this.qualityMetrics.reasoningQuality = {\n _coherence: (currentReasoning.coherence + this.calculateCoherence(trace)) / 2,\n _completeness: (currentReasoning.completeness + this.calculateCompleteness(trace)) / 2,\n accuracy: (currentReasoning.accuracy + this.calculateAccuracy(trace)) / 2,\n efficiency: (currentReasoning.efficiency + this.calculateEfficiency(trace)) / 2,\n _creativity: (currentReasoning.creativity + this.calculateCreativity(trace)) / 2,\n };\n }\n\n private createEmptyDecisionTree(): DecisionTree {\n return {\n id: 'empty',\n rootNode: {\n id: 'root',\n type: 'condition',\n description: 'No decision context available',\n children: [],\n confidence: 0,\n evidence: [],\n alternatives: [],\n },\n metadata: {\n domain: 'unknown',\n _complexity: 0,\n accuracy: 0,\n lastUpdated: new Date(),\n usageCount: 0,\n },\n };\n }\n\n private findDecisionNode(_root: DecisionNode, nodeId: string): DecisionNode | null {\n if (root.id === nodeId) {return root;}\n\n for (const child of root.children) {\n const _found = this.findDecisionNode(child, nodeId);\n if (_found) {return _found;}\n }\n\n return null;\n }\n\n private calculateTreeComplexity(root: DecisionNode): number {\n let maxDepth = 0;\n let nodeCount = 0;\n\n const _traverse = (_node: DecisionNode, depth: number) => {\n nodeCount++;\n maxDepth = Math.max(maxDepth, depth);\n\n for (const child of node.children) {\n _traverse(child, depth + 1);\n }\n };\n\n _traverse(root, 1);\n return maxDepth + Math.log(nodeCount);\n }\n\n private calculateNodeConfidence(evidence: Evidence[]): number {\n if (evidence.length === 0) {return 0.5;}\n\n const _weightedSum = evidence.reduce((sum, e) => sum + e.strength, 0);\n return Math.min(1, _weightedSum / evidence.length);\n }\n\n private traverseDecisionTree(\n node: DecisionNode,\n context: Record<string, unknown>,\n ): DecisionNode[] {\n const path: DecisionNode[] = [node];\n\n // Simple rule-based traversal (in production, use more sophisticated logic)\n for (const child of node.children) {\n if (child.type === 'condition' && this.evaluateCondition(child, context)) {\n path.push(...this.traverseDecisionTree(child, context));\n break;\n }\n }\n\n return path;\n }\n\n private evaluateCondition(_node: DecisionNode, _context: Record<string, unknown>): boolean {\n // Simplified condition evaluation\n return node.confidence > 0.5;\n }\n\n private shouldAutoApprove(_enhancement: Enhancement): boolean {\n return (\n enhancement.impact.riskScore <= 3 &&\n enhancement.impact.benefitScore >= 7 &&\n enhancement.priority >= 7\n );\n }\n\n private async evaluateEnhancementImpact(_enhancement: Enhancement): Promise<void> {\n // Evaluate the actual impact of completed enhancements\n console.log(`Evaluating impact of _enhancement: ${enhancement.description}`);\n\n // This would integrate with performance monitoring and user feedback systems\n // to measure the actual impact and improve future _enhancement predictions\n }\n\n private async generateActionItems(_reflection: ReflectionEntry): Promise<void> {\n // Generate actionable items from _reflection insights\n const _insight = reflection.insight.toLowerCase();\n\n if (insight.includes('improve') || insight.includes('optimize')) {\n await this.addActionItem(reflection.id, {\n description: `Implement improvement based on: ${reflection.insight}`,\n priority: 7,\n dueDate: new Date(Date.now() + 7 * 24 * 60 * 60 * 1000), // 1 week\n });\n }\n\n if (insight.includes('learn') || insight.includes('study')) {\n await this.addActionItem(reflection.id, {\n description: `Research and learn: ${reflection.insight}`,\n priority: 5,\n dueDate: new Date(Date.now() + 14 * 24 * 60 * 60 * 1000), // 2 weeks\n });\n }\n }\n\n private async processCodeGenerationEvent(event: MemoryEvent): Promise<void> {\n const _data = event.data as { code?: string; language?: string; _quality?: number };\n\n if (data.code && data.language) {\n const _quality = await this.assessCodeQuality(data.code, data.language);\n\n if (quality.maintainability < 70) {\n await this.addReflectionEntry(\n 'Low code maintainability',\n `Generated code has maintainability score of ${quality.maintainability}`,\n 'Need to improve code generation patterns for better maintainability',\n 'Focus on cleaner abstractions and better naming conventions',\n 0.8,\n );\n }\n }\n }\n\n private async processBugFixEvent(event: MemoryEvent): Promise<void> {\n const _data = event.data as { bugType?: string; solution?: string; timeToFix?: number };\n\n if (data.bugType && data.timeToFix) {\n await this.addReflectionEntry(\n `Bug fix: ${data.bugType}`,\n `Fixed ${data.bugType} in ${data.timeToFix} minutes`,\n 'Analyze if this bug type is recurring and could be prevented',\n data.timeToFix > 60\n ? 'Consider adding automated detection for this bug pattern'\n : 'Good resolution time',\n 0.7,\n );\n }\n }\n\n private async processQualityImprovementEvent(event: MemoryEvent): Promise<void> {\n const _data = event.data as { improvement?: string; impact?: number };\n\n if (data.improvement) {\n await this.proposeEnhancement({\n type: '_quality',\n description: `Quality improvement: ${data.improvement}`,\n impact: {\n benefitScore: data.impact || 5,\n effortScore: 3,\n riskScore: 2,\n affectedUsers: 1,\n affectedComponents: ['code-_quality'],\n },\n implementation: {\n phases: [],\n timeline: 5,\n resources: [],\n dependencies: [],\n risks: [],\n },\n priority: 6,\n });\n }\n }\n\n private async processGenericEvent(event: MemoryEvent): Promise<void> {\n // Store event for potential future analysis\n console.log(`Processing generic event: ${event.type}`, event.data);\n }\n\n private async manageTraceLimit(): Promise<void> {\n if (this.reasoningTraces.size > this.config.maxReasoningTraces) {\n const _traces = Array.from(this.reasoningTraces.entries());\n const _sortedByQuality = traces.sort(\n (a, b) => a[1].metadata.qualityScore - b[1].metadata.qualityScore,\n );\n\n // Remove lowest _quality _traces (keep 80% of limit)\n const _removeCount = Math.min(\n Math.floor(this.config.maxReasoningTraces * 0.2),\n sortedByQuality.length,\n );\n for (let i = 0; i < _removeCount; i++) {\n const _traceEntry = _sortedByQuality[i];\n if (_traceEntry) {\n this.reasoningTraces.delete(_traceEntry[0]);\n }\n }\n }\n }\n\n // Quality calculation methods\n private async calculateMaintainability(_code: string, _language: string): Promise<number> {\n // Simplified maintainability calculation\n const _factors = {\n length: Math.max(0, 100 - code.length / 100), // Shorter is better\n comments: ((code.match(/\\/\\/|\\/\\*|\\#/g) || []).length / code.split('\\n').length) * 100,\n _complexity: 100 - this.calculateBasicComplexity(code) * 10,\n };\n\n return Math.max(\n 0,\n Math.min(100, Object.values(_factors).reduce((sum, val) => sum + val, 0) / 3),\n );\n }\n\n private async calculateReadability(_code: string, _language: string): Promise<number> {\n // Basic readability metrics\n const _lines = code.split('\\n');\n const _avgLineLength =\n lines.length > 0 ? lines.reduce((sum, line) => sum + line.length, 0) / lines.length : 0;\n const _readabilityScore = Math.max(0, 100 - (_avgLineLength - 50) * 2); // Optimal ~50 chars per line\n\n return Math.max(0, Math.min(100, _readabilityScore));\n }\n\n private async calculateTestability(_code: string, _language: string): Promise<number> {\n // Basic testability assessment\n const _hasFunctions = /function|def|public|private/.test(code);\n const _hasClasses = /class|interface/.test(code);\n const _lowCoupling = !/global|window|document/.test(code);\n\n let score = 50;\n if (_hasFunctions) {score += 20;}\n if (_hasClasses) {score += 15;}\n if (_lowCoupling) {score += 15;}\n\n return Math.max(0, Math.min(100, score));\n }\n\n private async calculatePerformance(_code: string, _language: string): Promise<number> {\n // Basic performance assessment\n const _hasNestedLoops = (code.match(/for|while/g) || []).length > 2;\n const _hasRecursion = /return.*\\w+\\(/.test(code);\n const _hasEarlyReturns = (code.match(/return/g) || []).length > 1;\n\n let score = 80;\n if (_hasNestedLoops) {score -= 20;}\n if (_hasRecursion && !_hasEarlyReturns) {score -= 15;}\n if (_hasEarlyReturns) {score += 10;}\n\n return Math.max(0, Math.min(100, score));\n }\n\n private async calculateSecurity(_code: string, _language: string): Promise<number> {\n // Basic security assessment\n const _vulnerabilities = [\n /eval\\(/g,\n /innerHTML\\s*=/g,\n /document\\.write/g,\n /\\$\\{.*\\}/g, // Template injection potential\n /sql|query.*\\+/gi, // SQL injection potential\n ];\n\n let score = 90;\n for (const pattern of _vulnerabilities) {\n if (pattern.test(code)) {\n score -= 15;\n }\n }\n\n return Math.max(0, Math.min(100, score));\n }\n\n private async calculateBugDensity(_code: string, _language: string): Promise<number> {\n // Basic bug pattern detection\n const _bugPatterns = [\n /==\\s*null/g, // Null comparison\n /undefined/g,\n /NaN/g,\n /catch\\s*\\(\\s*\\)/g, // Empty catch blocks\n /if\\s*\\([^)]*=[^=]/g, // Assignment in condition\n ];\n\n const _lines = code.split('\\n').length;\n let bugCount = 0;\n\n for (const pattern of _bugPatterns) {\n bugCount += (code.match(pattern) || []).length;\n }\n\n return (bugCount / _lines) * 1000; // Bugs per 1000 _lines\n }\n\n private async calculateCyclomaticComplexity(_code: string, _language: string): Promise<number> {\n return this.calculateBasicComplexity(code);\n }\n\n private calculateBasicComplexity(code: string): number {\n // Basic cyclomatic _complexity calculation\n const _complexityPatterns = [\n /if\\s*\\(/g,\n /else\\s*if/g,\n /while\\s*\\(/g,\n /for\\s*\\(/g,\n /switch\\s*\\(/g,\n /case\\s+/g,\n /catch\\s*\\(/g,\n /\\?\\s*.*:/g, // Ternary operators\n /&&|\\|\\|/g, // Logical operators\n ];\n\n let _complexity = 1; // Base _complexity\n\n for (const pattern of _complexityPatterns) {\n _complexity += (code.match(pattern) || []).length;\n }\n\n return _complexity;\n }\n\n private hashCode(str: string): string {\n let hash = 0;\n for (let i = 0; i < str.length; i++) {\n const _char = str.charCodeAt(i);\n hash = (hash << 5) - hash + _char;\n hash = hash & hash; // Convert to 32-bit integer\n }\n return hash.toString(36);\n }\n\n private initializeQualityMetrics(): QualityMetrics {\n return {\n codeQuality: {\n maintainability: 80,\n readability: 75,\n testability: 70,\n performance: 85,\n security: 90,\n bugDensity: 2.5,\n _complexity: 5,\n },\n reasoningQuality: {\n _coherence: 0.8,\n _completeness: 0.75,\n accuracy: 0.85,\n efficiency: 0.7,\n _creativity: 0.6,\n },\n userSatisfaction: {\n userRating: 4.2,\n taskCompletion: 0.85,\n timeToSolution: 15,\n iterationCount: 3,\n userFeedback: [],\n },\n systemPerformance: {\n timeComplexity: 'O(n)',\n spaceComplexity: 'O(1)',\n benchmarks: [],\n },\n };\n }\n}\n","/**\n * MARIA Memory System - Dual Memory Engine\n *\n * Core integration logic for System 1 (fast, intuitive) and System 2 (deliberate, analytical) memory\n * Orchestrates memory operations, layer selection, and cross-system optimization\n */\n\nimport { System1MemoryManager } from './system1-memory';\nimport { System2MemoryManager } from './system2-memory';\nimport type {\n CodePattern,\n CoordinatorConfig,\n Enhancement,\n KnowledgeNode,\n MemoryEvent,\n PerformanceConfig,\n QualityMetrics,\n ReasoningTrace,\n System1Config,\n System2Config,\n UserPreferenceSet,\n} from './types/memory-interfaces';\n\nexport interface DualMemoryEngineConfig {\n system1: System1Config;\n system2: System2Config;\n coordinator: CoordinatorConfig;\n performance: PerformanceConfig;\n}\n\nexport interface MemoryQuery {\n type: 'knowledge' | 'pattern' | 'reasoning' | 'quality' | 'preference';\n query: string;\n context?: Record<string, unknown>;\n urgency?: 'low' | 'medium' | 'high' | 'critical';\n embedding?: number[];\n limit?: number;\n}\n\nexport interface MemoryResponse<T = unknown> {\n _data: T;\n source: 'system1' | 'system2' | 'both';\n confidence: number;\n latency: number;\n cached: boolean;\n suggestions?: Enhancement[];\n}\n\nexport interface MemoryOperationMetrics {\n totalOperations: number;\n system1Operations: number;\n system2Operations: number;\n averageLatency: number;\n cacheHitRate: number;\n errorRate: number;\n lastReset: Date;\n}\n\nexport class DualMemoryEngine {\n private system1: System1MemoryManager;\n private system2: System2MemoryManager;\n private config: DualMemoryEngineConfig;\n private operationMetrics: MemoryOperationMetrics;\n private eventQueue: MemoryEvent[] = [];\n private processingLock = false;\n private performanceCache = new Map<string, { _result: unknown; timestamp: Date; hits: number }>();\n\n constructor(_config: DualMemoryEngineConfig) {\n if (!_config) {\n throw new Error('DualMemoryEngine: config parameter is required');\n }\n\n if (!_config.system1) {\n throw new Error('DualMemoryEngine: config.system1 is required');\n }\n\n if (!_config.system2) {\n throw new Error('DualMemoryEngine: config.system2 is required');\n }\n\n this.config = _config;\n this.system1 = new System1MemoryManager(_config.system1);\n this.system2 = new System2MemoryManager(_config.system2);\n this.operationMetrics = this.initializeMetrics();\n\n // Start background processing\n this.startBackgroundProcessing();\n }\n\n // ========== Core Memory Operations ==========\n\n async query<T = unknown>(memoryQuery: MemoryQuery): Promise<MemoryResponse<T>> {\n const _startTime = Date.now();\n const cacheKey = this.generateCacheKey(memoryQuery);\n\n // Check performance cache first\n const cached = this.performanceCache.get(cacheKey);\n if (cached && this.isCacheValid(cached)) {\n cached.hits++;\n this.operationMetrics.totalOperations++;\n return {\n _data: cached.result as T,\n source: 'both',\n confidence: 0.9,\n latency: Date.now() - _startTime,\n cached: true,\n };\n }\n\n try {\n // Determine optimal memory system(s) to use\n const _strategy = await this.selectMemoryStrategy(memoryQuery);\n const _result = await this.executeMemoryOperation<T>(memoryQuery, _strategy);\n\n // Cache successful results\n if (result.confidence > 0.7) {\n this.performanceCache.set(cacheKey, {\n _result: result._data,\n timestamp: new Date(),\n hits: 1,\n });\n }\n\n // Update _metrics\n this.updateOperationMetrics(_strategy, Date.now() - _startTime, true);\n\n return _result;\n } catch (_error) {\n this.updateOperationMetrics('both', Date.now() - _startTime, false);\n throw new Error(\n `Memory query failed: ${_error instanceof Error ? error.message : 'Unknown _error'}`,\n );\n }\n }\n\n async store(event: MemoryEvent): Promise<void> {\n // Add to event queue for processing\n this.eventQueue.push(event);\n\n // Immediate processing for critical events\n if (event.metadata.priority === 'critical') {\n await this.processEvent(event);\n }\n }\n\n async learn(\n input: string,\n output: string,\n context: Record<string, unknown>,\n success: boolean,\n ): Promise<void> {\n const learningEvent: MemoryEvent = {\n id: `learn:${Date.now()}`,\n type: 'learning_update',\n timestamp: new Date(),\n userId: (context['userId'] as string) || 'anonymous',\n sessionId: (context['sessionId'] as string) || 'default',\n _data: { input, output, context, success },\n metadata: {\n confidence: success ? 0.9 : 0.3,\n source: 'user_input',\n priority: 'medium',\n tags: ['learning', 'adaptation'],\n },\n };\n\n await this.store(learningEvent);\n }\n\n // ========== Specialized Query Methods ==========\n\n async findKnowledge(\n query: string,\n embedding?: number[],\n limit: number = 10,\n ): Promise<MemoryResponse<KnowledgeNode[]>> {\n return this.query<KnowledgeNode[]>({\n type: 'knowledge',\n query,\n embedding,\n limit,\n urgency: 'medium',\n });\n }\n\n async findPatterns(\n language?: string,\n framework?: string,\n useCase?: string,\n limit: number = 10,\n ): Promise<MemoryResponse<CodePattern[]>> {\n return this.query<CodePattern[]>({\n type: 'pattern',\n query: `${language || ''} ${framework || ''} ${useCase || ''}`.trim(),\n context: { language, framework, useCase },\n limit,\n urgency: 'low',\n });\n }\n\n async getReasoning(\n domain?: string,\n complexity?: string,\n minQuality?: number,\n ): Promise<MemoryResponse<ReasoningTrace[]>> {\n return this.query<ReasoningTrace[]>({\n type: 'reasoning',\n query: `${domain || ''} ${complexity || ''}`.trim(),\n context: { domain, complexity, minQuality },\n urgency: 'low',\n });\n }\n\n async getQualityInsights(): Promise<MemoryResponse<QualityMetrics>> {\n return this.query<QualityMetrics>({\n type: 'quality',\n query: 'current quality _metrics',\n urgency: 'low',\n });\n }\n\n async getUserPreferences(): Promise<MemoryResponse<UserPreferenceSet>> {\n return this.query<UserPreferenceSet>({\n type: 'preference',\n query: 'user preferences',\n urgency: 'high',\n });\n }\n\n async recall(options: { query: string; type: string; limit?: number }): Promise<unknown[]> {\n try {\n const _result = await this.query({\n type: options.type as 'knowledge' | 'pattern' | 'reasoning' | 'quality' | 'preference',\n query: options.query,\n limit: options.limit || 10,\n });\n\n return Array.isArray(result._data) ? result._data : [result._data];\n } catch (_error) {\n console.warn('Memory recall failed:', _error);\n return [];\n }\n }\n\n async clearMemory(): Promise<void> {\n try {\n // Clear all internal caches and _data\n this.performanceCache.clear();\n this.eventQueue.length = 0;\n\n // Reset _metrics\n this.resetMetrics();\n\n console.log('Memory cleared successfully');\n } catch (_error) {\n console.error('Failed to clear memory:', _error);\n throw _error;\n }\n }\n\n // ========== Memory Strategy Selection ==========\n\n private async selectMemoryStrategy(query: MemoryQuery): Promise<'system1' | 'system2' | 'both'> {\n const _factors = {\n urgency: this.getUrgencyScore(query.urgency),\n complexity: this.assessQueryComplexity(query),\n type: this.getTypePreference(query.type),\n cacheStatus: this.getCacheStatus(query),\n };\n\n const _system1Score = this.calculateSystem1Score(_factors);\n const _system2Score = this.calculateSystem2Score(_factors);\n\n // Decision logic based on configuration\n switch (this.config.coordinator.conflictResolutionStrategy) {\n case 'system1_priority':\n return _system1Score > 0.6 ? 'system1' : 'both';\n\n case 'system2_priority':\n return _system2Score > 0.6 ? 'system2' : 'both';\n\n case 'balanced':\n default:\n if (Math.abs(_system1Score - _system2Score) < 0.2) {\n return 'both';\n }\n return _system1Score > _system2Score ? 'system1' : 'system2';\n }\n }\n\n private getUrgencyScore(urgency?: string): number {\n switch (urgency) {\n case 'critical':\n return 1.0;\n case 'high':\n return 0.8;\n case 'medium':\n return 0.5;\n case 'low':\n return 0.2;\n default:\n return 0.5;\n }\n }\n\n private assessQueryComplexity(query: MemoryQuery): number {\n let complexity = 0.3; // Base complexity\n\n // Query length factor\n if (query.query.length > 100) {complexity += 0.2;}\n if (query.query.length > 200) {complexity += 0.2;}\n\n // Context complexity\n if (query.context && Object.keys(query.context).length > 3) {complexity += 0.2;}\n\n // Type complexity\n switch (query.type) {\n case 'reasoning':\n complexity += 0.4;\n break;\n case 'quality':\n complexity += 0.3;\n break;\n case 'pattern':\n complexity += 0.2;\n break;\n case 'knowledge':\n complexity += 0.1;\n break;\n case 'preference':\n complexity += 0.0;\n break;\n }\n\n return Math.min(1.0, complexity);\n }\n\n private getTypePreference(type: string): { system1: number; system2: number } {\n switch (type) {\n case 'knowledge':\n return { system1: 0.8, system2: 0.3 };\n case 'pattern':\n return { system1: 0.9, system2: 0.2 };\n case 'preference':\n return { system1: 0.9, system2: 0.1 };\n case 'reasoning':\n return { system1: 0.2, system2: 0.9 };\n case 'quality':\n return { system1: 0.3, system2: 0.8 };\n default:\n return { system1: 0.5, system2: 0.5 };\n }\n }\n\n private getCacheStatus(query: MemoryQuery): number {\n const cacheKey = this.generateCacheKey(query);\n const cached = this.performanceCache.get(cacheKey);\n return cached ? 0.8 : 0.2;\n }\n\n private calculateSystem1Score(_factors: RoutingFactors): number {\n const _urgencyWeight = factors.urgency * 0.4;\n const _complexityPenalty = (1 - factors.complexity) * 0.3;\n const _typePreference = factors.type.system1 * 0.2;\n const _cacheBonus = factors.cacheStatus * 0.1;\n\n return _urgencyWeight + _complexityPenalty + _typePreference + _cacheBonus;\n }\n\n private calculateSystem2Score(_factors: RoutingFactors): number {\n const _complexityBonus = factors.complexity * 0.4;\n const _urgencyPenalty = (1 - factors.urgency) * 0.2;\n const _typePreference = factors.type.system2 * 0.3;\n const _qualityBonus = 0.1; // Always slight preference for quality\n\n return _complexityBonus + _urgencyPenalty + _typePreference + _qualityBonus;\n }\n\n // ========== Memory Operation Execution ==========\n\n private async executeMemoryOperation<T>(\n query: MemoryQuery,\n strategy: 'system1' | 'system2' | 'both',\n ): Promise<MemoryResponse<T>> {\n switch (strategy) {\n case 'system1':\n return this.executeSystem1Operation(query);\n\n case 'system2':\n return this.executeSystem2Operation(query);\n\n case 'both':\n return this.executeCombinedOperation(query);\n\n default:\n throw new Error(`Unknown _strategy: ${strategy}`);\n }\n }\n\n private async executeSystem1Operation<T>(query: MemoryQuery): Promise<MemoryResponse<T>> {\n const _startTime = Date.now();\n let _result: T;\n\n switch (query.type) {\n case 'knowledge':\n _result = (await this.system1.searchKnowledgeNodes(\n query.query,\n query.embedding || [],\n query.limit,\n )) as T;\n break;\n\n case 'pattern': {\n const { language, framework, useCase } = query.context || {};\n _result = (await this.system1.findCodePatterns(\n language as string,\n framework as string,\n useCase as string,\n query.limit,\n )) as T;\n break;\n }\n\n case 'preference':\n _result = (await this.system1.getUserPreference('learningStyle')) as T;\n break;\n\n default:\n throw new Error(`System 1 cannot handle query type: ${query.type}`);\n }\n\n return {\n _data: _result,\n source: 'system1',\n confidence: 0.8,\n latency: Date.now() - _startTime,\n cached: false,\n };\n }\n\n private async executeSystem2Operation<T>(query: MemoryQuery): Promise<MemoryResponse<T>> {\n const _startTime = Date.now();\n let _result: T;\n\n switch (query.type) {\n case 'reasoning': {\n const { domain, complexity, minQuality } = query.context || {};\n _result = (await this.system2.searchReasoningTraces(\n {\n domain: domain as string,\n complexity: complexity as string,\n minQuality: minQuality as number,\n },\n query.limit,\n )) as T;\n break;\n }\n\n case 'quality':\n _result = this.system2.qualityEvaluation as T;\n break;\n\n default:\n throw new Error(`System 2 cannot handle query type: ${query.type}`);\n }\n\n return {\n _data: _result,\n source: 'system2',\n confidence: 0.9,\n latency: Date.now() - _startTime,\n cached: false,\n };\n }\n\n private async executeCombinedOperation<T>(query: MemoryQuery): Promise<MemoryResponse<T>> {\n const _startTime = Date.now();\n\n try {\n // Execute both systems in parallel\n const [system1Result, system2Result] = await Promise.allSettled([\n this.executeSystem1Operation<T>(query).catch(() => null),\n this.executeSystem2Operation<T>(query).catch(() => null),\n ]);\n\n // Combine results intelligently\n const _combinedResult = this.combineResults<T>(query, system1Result, system2Result);\n\n return {\n _data: combinedResult._data,\n source: 'both',\n confidence: combinedResult.confidence,\n latency: Date.now() - _startTime,\n cached: false,\n suggestions: combinedResult.suggestions,\n };\n } catch (_error) {\n // Fallback to the most appropriate single system\n const _fallbackStrategy =\n query.type === 'reasoning' || query.type === 'quality' ? 'system2' : 'system1';\n return this.executeMemoryOperation(query, _fallbackStrategy);\n }\n }\n\n private combineResults<T>(\n query: MemoryQuery,\n system1Result: PromiseSettledResult<MemoryResponse<T> | null>,\n system2Result: PromiseSettledResult<MemoryResponse<T> | null>,\n ): { _data: T; confidence: number; suggestions?: Enhancement[] } {\n const _s1Data = system1Result.status === 'fulfilled' ? system1Result.value?._data : null;\n const _s2Data = system2Result.status === 'fulfilled' ? system2Result.value?._data : null;\n\n // Priority-based combination\n if (_s2Data && _s1Data) {\n // Both available - use System 2 for complex queries, System 1 for simple ones\n const _useSystem2 = this.assessQueryComplexity(query) > 0.6;\n return {\n _data: _useSystem2 ? _s2Data : _s1Data,\n confidence: 0.95,\n suggestions: this.generateCombinedSuggestions(_s1Data, _s2Data),\n };\n }\n\n if (_s1Data) {\n return { _data: _s1Data, confidence: 0.8 };\n }\n\n if (_s2Data) {\n return { _data: _s2Data, confidence: 0.85 };\n }\n\n // No results available\n throw new Error('No memory systems could provide results');\n }\n\n private generateCombinedSuggestions<T>(_s1Data: T, _s2Data: T): Enhancement[] {\n // Generate suggestions based on the combination of results\n return [\n {\n id: `suggestion:${Date.now()}`,\n type: 'performance',\n description: 'Consider using cached results for similar queries',\n impact: {\n benefitScore: 6,\n effortScore: 3,\n riskScore: 1,\n affectedUsers: 1,\n affectedComponents: ['memory-system'],\n },\n implementation: {\n phases: [],\n timeline: 2,\n resources: [],\n dependencies: [],\n risks: [],\n },\n priority: 5,\n status: 'proposed',\n },\n ];\n }\n\n // ========== Event Processing ==========\n\n async processEvent(event: MemoryEvent): Promise<void> {\n try {\n // Route event to appropriate memory systems\n const _routingStrategy = this.determineEventRouting(event);\n\n await Promise.all([\n routingStrategy.system1 ? this.system1.processMemoryEvent(event) : Promise.resolve(),\n routingStrategy.system2 ? this.system2.processMemoryEvent(event) : Promise.resolve(),\n ]);\n\n // Cross-system learning and adaptation\n await this.adaptFromEvent(event);\n } catch (_error) {\n console.error(`Error processing memory event ${event.id}:`, _error);\n }\n }\n\n private determineEventRouting(event: MemoryEvent): { system1: boolean; system2: boolean } {\n switch (event.type) {\n case 'code_generation':\n case 'pattern_recognition':\n return { system1: true, system2: false };\n\n case 'bug_fix':\n case 'quality_improvement':\n return { system1: false, system2: true };\n\n case 'learning_update':\n case 'mode_change':\n return { system1: true, system2: true };\n\n default:\n return { system1: true, system2: false };\n }\n }\n\n private async adaptFromEvent(event: MemoryEvent): Promise<void> {\n // Cross-system learning based on events\n if (event.type === 'learning_update') {\n const _data = event.data as { success?: boolean; input?: string; output?: string };\n\n if (data.success === false) {\n // Generate improvement suggestion\n await this.system2.proposeEnhancement({\n type: 'usability',\n description: `Improve handling of: ${data.input}`,\n impact: {\n benefitScore: 5,\n effortScore: 3,\n riskScore: 2,\n affectedUsers: 1,\n affectedComponents: ['ai-interaction'],\n },\n implementation: {\n phases: [],\n timeline: 3,\n resources: [],\n dependencies: [],\n risks: [],\n },\n priority: 4,\n });\n }\n }\n }\n\n // ========== Background Processing ==========\n\n private startBackgroundProcessing(): void {\n // Process event queue regularly\n setInterval(() => {\n this.processEventQueue();\n }, this.config.coordinator.syncInterval);\n\n // Clean up cache periodically\n setInterval(\n () => {\n this.cleanupCache();\n },\n 5 * 60 * 1000,\n ); // Every 5 minutes\n\n // Memory optimization\n setInterval(\n () => {\n this.optimizeMemory();\n },\n 15 * 60 * 1000,\n ); // Every 15 minutes\n }\n\n private async processEventQueue(): Promise<void> {\n if (this.processingLock || this.eventQueue.length === 0) {\n return;\n }\n\n this.processingLock = true;\n\n try {\n // Process events in batches\n const _batchSize = this.config.performance.batchSize;\n const _batch = this.eventQueue.splice(0, _batchSize);\n\n await Promise.all(batch.map((event) => this.processEvent(event)));\n } finally {\n this.processingLock = false;\n }\n }\n\n private cleanupCache(): void {\n const _now = new Date();\n const _maxAge = 30 * 60 * 1000; // 30 minutes\n\n for (const [key, cached] of this.performanceCache.entries()) {\n const age = now.getTime() - cached.timestamp.getTime();\n\n if (age > _maxAge || cached.hits < 2) {\n this.performanceCache.delete(key);\n }\n }\n }\n\n private async optimizeMemory(): Promise<void> {\n try {\n // System 1 optimization\n await this.system1.compressMemory();\n\n // Cache optimization\n if (this.performanceCache.size > 1000) {\n const _entries = Array.from(this.performanceCache.entries());\n const _sortedByUsage = entries.sort((a, b) => b[1].hits - a[1].hits);\n\n // Keep top 500 most used _entries\n this.performanceCache.clear();\n sortedByUsage.slice(0, 500).forEach(([key, value]) => {\n this.performanceCache.set(key, value);\n });\n }\n } catch (_error) {\n console.error('Memory optimization failed:', _error);\n }\n }\n\n // ========== System Access Methods ==========\n\n /**\n * Get System 1 memory manager instance\n * @returns System1MemoryManager instance\n */\n getSystem1(): System1MemoryManager {\n return this.system1;\n }\n\n /**\n * Get System 2 memory manager instance\n * @returns System2MemoryManager instance\n */\n getSystem2(): System2MemoryManager {\n return this.system2;\n }\n\n // ========== Utility Methods ==========\n\n private generateCacheKey(query: MemoryQuery): string {\n const _contextStr = query.context ? JSON.stringify(query.context) : '';\n const _embeddingStr = query.embedding ? query.embedding.slice(0, 5).join(',') : '';\n\n return `${query.type}:${query.query}:${_contextStr}:${_embeddingStr}:${query.limit || 10}`;\n }\n\n private isCacheValid(cached: { timestamp: Date; hits: number }): boolean {\n const age = Date.now() - cached.timestamp.getTime();\n const _maxAge = 10 * 60 * 1000; // 10 minutes\n\n return age < _maxAge;\n }\n\n private updateOperationMetrics(\n strategy: 'system1' | 'system2' | 'both',\n latency: number,\n success: boolean,\n ): void {\n this.operationMetrics.totalOperations++;\n this.operationMetrics.averageLatency = (this.operationMetrics.averageLatency + latency) / 2;\n\n if (strategy === 'system1' || strategy === 'both') {\n this.operationMetrics.system1Operations++;\n }\n\n if (strategy === 'system2' || strategy === 'both') {\n this.operationMetrics.system2Operations++;\n }\n\n if (!success) {\n this.operationMetrics.errorRate =\n (this.operationMetrics.errorRate + 1) / this.operationMetrics.totalOperations;\n }\n }\n\n private initializeMetrics(): MemoryOperationMetrics {\n return {\n totalOperations: 0,\n system1Operations: 0,\n system2Operations: 0,\n averageLatency: 0,\n cacheHitRate: 0,\n errorRate: 0,\n lastReset: new Date(),\n };\n }\n\n // ========== Public API for Monitoring ==========\n\n getMetrics(): MemoryOperationMetrics {\n // Calculate cache hit rate\n const _totalCacheAccess = Array.from(this.performanceCache.values()).reduce(\n (sum, cached) => sum + cached.hits,\n 0,\n );\n\n this.operationMetrics.cacheHitRate =\n this.operationMetrics.totalOperations > 0\n ? _totalCacheAccess / this.operationMetrics.totalOperations\n : 0;\n\n return { ...this.operationMetrics };\n }\n\n resetMetrics(): void {\n this.operationMetrics = this.initializeMetrics();\n }\n\n getCacheSize(): number {\n return this.performanceCache.size;\n }\n\n getQueueSize(): number {\n return this.eventQueue.length;\n }\n\n // ========== Initialization ==========\n\n async initialize(): Promise<void> {\n try {\n // Perform initialization logic\n this.resetMetrics();\n\n // Clear any existing cache\n this.performanceCache.clear();\n\n // DualMemoryEngine initialized\n } catch (_error) {\n console.error('Failed to initialize DualMemoryEngine:', _error);\n throw _error;\n }\n }\n\n // ========== Configuration Management ==========\n\n updateConfig(newConfig: Partial<DualMemoryEngineConfig>): void {\n Object.assign(this.config, newConfig);\n }\n\n getConfig(): DualMemoryEngineConfig {\n return { ...this.config };\n }\n\n async getStatistics(): Promise<{\n system1: {\n totalNodes: number;\n patterns: number;\n preferences: number;\n cacheHitRate: number;\n };\n system2: {\n reasoningTraces: number;\n decisionTrees: number;\n activeSessions: number;\n memoryUsage: number;\n };\n performance: {\n avgResponseTime: number;\n memoryUsage: number;\n };\n }> {\n try {\n const _metrics = this.getMetrics();\n\n // Get system1 stats - using safe property access\n const _system1Stats = {\n totalNodes: 0, // Will be populated when system1 interface is stable\n patterns: 0, // Will be populated when system1 interface is stable\n preferences: 0, // Will be populated when system1 interface is stable\n cacheHitRate: metrics.cacheHitRate || 0,\n };\n\n // Get system2 stats - using safe property access\n const _system2Stats = {\n reasoningTraces: 0, // Will be populated when system2 interface is stable\n decisionTrees: 0, // Will be populated when system2 interface is stable\n activeSessions: 0, // Will be populated when system2 interface is stable\n memoryUsage: 0, // Will be populated when system2 interface is stable\n };\n\n return {\n system1: _system1Stats,\n system2: _system2Stats,\n performance: {\n avgResponseTime: metrics.averageLatency || 50,\n memoryUsage: process.memoryUsage().heapUsed,\n },\n };\n } catch (_error) {\n // Return default stats if there's an _error\n return {\n system1: {\n totalNodes: 0,\n patterns: 0,\n preferences: 0,\n cacheHitRate: 0,\n },\n system2: {\n reasoningTraces: 0,\n decisionTrees: 0,\n activeSessions: 0,\n memoryUsage: 0,\n },\n performance: {\n avgResponseTime: 50,\n memoryUsage: 0,\n },\n };\n }\n }\n}\n\n// Supporting interfaces\ninterface RoutingFactors {\n urgency: number;\n complexity: number;\n type: {\n system1: number;\n system2: number;\n };\n cacheStatus: number;\n}\n","import fs from 'fs';\nimport path from 'path';\nimport { promisify } from 'util';\nimport { spawn } from 'child_process';\nimport chalk from 'chalk';\n\nconst _fsAsync = {\n readFile: promisify(fs.readFile),\n writeFile: promisify(fs.writeFile),\n unlink: promisify(fs.unlink),\n mkdir: promisify(fs.mkdir),\n rmdir: promisify(fs.rmdir),\n readdir: promisify(fs.readdir),\n stat: promisify(fs.stat),\n copyFile: promisify(fs.copyFile),\n rename: promisify(fs.rename),\n access: promisify(fs.access),\n realpath: promisify(fs.realpath),\n symlink: promisify(fs.symlink),\n readlink: promisify(fs.readlink),\n lstat: promisify(fs.lstat),\n chmod: promisify(fs.chmod),\n chown: promisify(fs.chown),\n};\n\nexport interface FileStats {\n _name: string;\n path: string;\n isFile: boolean;\n isDirectory: boolean;\n isSymlink: boolean;\n size: number;\n created: Date;\n modified: Date;\n permissions: string;\n owner?: string;\n}\n\nexport interface FileOperationOptions {\n recursive?: boolean;\n force?: boolean;\n preserveTimestamps?: boolean;\n backup?: boolean;\n dryRun?: boolean;\n followSymlinks?: boolean;\n}\n\nexport interface SearchOptions {\n _pattern?: string;\n type?: 'file' | 'directory' | 'both';\n maxDepth?: number;\n caseSensitive?: boolean;\n includeHidden?: boolean;\n regex?: boolean;\n}\n\nexport class FileSystemService {\n private static instance: FileSystemService;\n private operationLog: Array<{\n operation: string;\n path: string;\n timestamp: Date;\n success: boolean;\n }> = [];\n\n public static getInstance(): FileSystemService {\n if (!FileSystemService.instance) {\n FileSystemService.instance = new FileSystemService();\n }\n return FileSystemService.instance;\n }\n\n private constructor() {}\n\n // Basic File Operations\n async readFile(_filePath: string, encoding: BufferEncoding = 'utf8'): Promise<string | Buffer> {\n try {\n const _resolvedPath = path.resolve(filePath);\n const _content = await fsAsync.readFile(_resolvedPath, encoding);\n this.logOperation('read', _resolvedPath, true);\n return _content;\n } catch (_error) {\n this.logOperation('read', filePath, false);\n throw new Error(`Failed to read file ${filePath}: ${error.message}`);\n }\n }\n\n async writeFile(\n filePath: string,\n content: string | Buffer,\n options: FileOperationOptions = {},\n ): Promise<void> {\n try {\n const _resolvedPath = path.resolve(filePath);\n\n if (options.backup && (await this.exists(_resolvedPath))) {\n await this.createBackup(_resolvedPath);\n }\n\n if (options.dryRun) {\n console.log(chalk.yellow(`[DRY RUN] Would write to: ${_resolvedPath}`));\n return;\n }\n\n await this.ensureDirectoryExists(path.dirname(_resolvedPath));\n await fsAsync.writeFile(_resolvedPath, content);\n\n this.logOperation('write', _resolvedPath, true);\n } catch (_error) {\n this.logOperation('write', filePath, false);\n throw new Error(`Failed to write file ${filePath}: ${error.message}`);\n }\n }\n\n async deleteFile(_filePath: string, options: FileOperationOptions = {}): Promise<void> {\n try {\n const _resolvedPath = path.resolve(filePath);\n\n if (!(await this.exists(_resolvedPath))) {\n throw new Error(`File does not exist: ${_resolvedPath}`);\n }\n\n if (options.backup) {\n await this.createBackup(_resolvedPath);\n }\n\n if (options.dryRun) {\n console.log(chalk.yellow(`[DRY RUN] Would delete: ${_resolvedPath}`));\n return;\n }\n\n await fsAsync.unlink(_resolvedPath);\n this.logOperation('delete', _resolvedPath, true);\n } catch (_error) {\n this.logOperation('delete', filePath, false);\n throw new Error(`Failed to delete file ${filePath}: ${error.message}`);\n }\n }\n\n // Directory Operations\n async createDirectory(_dirPath: string, options: FileOperationOptions = {}): Promise<void> {\n try {\n const _resolvedPath = path.resolve(dirPath);\n\n if (options.dryRun) {\n console.log(chalk.yellow(`[DRY RUN] Would create directory: ${_resolvedPath}`));\n return;\n }\n\n await fsAsync.mkdir(_resolvedPath, { recursive: options.recursive ?? true });\n this.logOperation('mkdir', _resolvedPath, true);\n } catch (_error) {\n this.logOperation('mkdir', dirPath, false);\n throw new Error(`Failed to create directory ${dirPath}: ${error.message}`);\n }\n }\n\n async deleteDirectory(_dirPath: string, options: FileOperationOptions = {}): Promise<void> {\n try {\n const _resolvedPath = path.resolve(dirPath);\n\n if (!(await this.exists(_resolvedPath))) {\n throw new Error(`Directory does not exist: ${_resolvedPath}`);\n }\n\n if (options.dryRun) {\n console.log(chalk.yellow(`[DRY RUN] Would delete directory: ${_resolvedPath}`));\n return;\n }\n\n if (options.recursive) {\n await this.deleteDirectoryRecursive(_resolvedPath);\n } else {\n await fsAsync.rmdir(_resolvedPath);\n }\n\n this.logOperation('rmdir', _resolvedPath, true);\n } catch (_error) {\n this.logOperation('rmdir', dirPath, false);\n throw new Error(`Failed to delete directory ${dirPath}: ${error.message}`);\n }\n }\n\n async listDirectory(_dirPath: string, options: SearchOptions = {}): Promise<FileStats[]> {\n try {\n const _resolvedPath = path.resolve(dirPath);\n const _entries = await fsAsync.readdir(_resolvedPath);\n const results: FileStats[] = [];\n\n for (const entry of _entries) {\n if (!options.includeHidden && entry.startsWith('.')) {\n continue;\n }\n\n const _entryPath = path.join(_resolvedPath, entry);\n const _stats = await this.getFileStats(_entryPath);\n\n if (options.type) {\n if (options.type === 'file' && !stats.isFile) {continue;}\n if (options.type === 'directory' && !stats.isDirectory) {continue;}\n }\n\n if (options.pattern) {\n const _match = options.caseSensitive\n ? stats.name.includes(options.pattern)\n : stats.name.toLowerCase().includes(options.pattern.toLowerCase());\n if (!_match) {continue;}\n }\n\n results.push(_stats);\n }\n\n this.logOperation('readdir', _resolvedPath, true);\n return results.sort((a, b) => {\n if (a.isDirectory && !b.isDirectory) {return -1;}\n if (!a.isDirectory && b.isDirectory) {return 1;}\n return a.name.localeCompare(b.name);\n });\n } catch (_error) {\n this.logOperation('readdir', dirPath, false);\n throw new Error(`Failed to list directory ${dirPath}: ${error.message}`);\n }\n }\n\n // Advanced Operations\n async copyFile(\n sourcePath: string,\n destPath: string,\n options: FileOperationOptions = {},\n ): Promise<void> {\n try {\n const _resolvedSource = path.resolve(sourcePath);\n const _resolvedDest = path.resolve(destPath);\n\n if (!(await this.exists(_resolvedSource))) {\n throw new Error(`Source file does not exist: ${_resolvedSource}`);\n }\n\n if (options.dryRun) {\n console.log(chalk.yellow(`[DRY RUN] Would copy: ${_resolvedSource} → ${_resolvedDest}`));\n return;\n }\n\n await this.ensureDirectoryExists(path.dirname(_resolvedDest));\n\n if ((await this.exists(_resolvedDest)) && !options.force) {\n throw new Error(`Destination file already exists: ${_resolvedDest}`);\n }\n\n await fsAsync.copyFile(_resolvedSource, _resolvedDest);\n\n if (options.preserveTimestamps) {\n const _sourceStats = await fsAsync.stat(_resolvedSource);\n await fs.promises.utimes(_resolvedDest, sourceStats.atime, sourceStats.mtime);\n }\n\n this.logOperation('copy', `${_resolvedSource} → ${_resolvedDest}`, true);\n } catch (_error) {\n this.logOperation('copy', `${sourcePath} → ${destPath}`, false);\n throw new Error(`Failed to copy file: ${error.message}`);\n }\n }\n\n async moveFile(\n sourcePath: string,\n destPath: string,\n options: FileOperationOptions = {},\n ): Promise<void> {\n try {\n const _resolvedSource = path.resolve(sourcePath);\n const _resolvedDest = path.resolve(destPath);\n\n if (!(await this.exists(_resolvedSource))) {\n throw new Error(`Source file does not exist: ${_resolvedSource}`);\n }\n\n if (options.dryRun) {\n console.log(chalk.yellow(`[DRY RUN] Would move: ${_resolvedSource} → ${_resolvedDest}`));\n return;\n }\n\n await this.ensureDirectoryExists(path.dirname(_resolvedDest));\n\n if ((await this.exists(_resolvedDest)) && !options.force) {\n throw new Error(`Destination file already exists: ${_resolvedDest}`);\n }\n\n await fsAsync.rename(_resolvedSource, _resolvedDest);\n this.logOperation('move', `${_resolvedSource} → ${_resolvedDest}`, true);\n } catch (_error) {\n this.logOperation('move', `${sourcePath} → ${destPath}`, false);\n throw new Error(`Failed to move file: ${error.message}`);\n }\n }\n\n async renameFile(\n oldPath: string,\n newPath: string,\n options: FileOperationOptions = {},\n ): Promise<void> {\n return this.moveFile(oldPath, newPath, options);\n }\n\n // Search and Navigation\n async findFiles(_searchPath: string, options: SearchOptions = {}): Promise<FileStats[]> {\n try {\n const _resolvedPath = path.resolve(searchPath);\n const results: FileStats[] = [];\n\n await this.findFilesRecursive(_resolvedPath, options, results, 0);\n\n this.logOperation('find', _resolvedPath, true);\n return results;\n } catch (_error) {\n this.logOperation('find', searchPath, false);\n throw new Error(`Failed to search _files: ${error.message}`);\n }\n }\n\n async which(command: string): Promise<string | null> {\n return new Promise((resolve) => {\n const _proc = spawn('which', [command]);\n let output = '';\n\n proc.stdout.on('data', (data) => {\n output += data.toString();\n });\n\n proc.on('close', (code) => {\n if (code === 0) {\n resolve(output.trim());\n } else {\n resolve(null);\n }\n });\n });\n }\n\n async glob(pattern: string, options: SearchOptions = {}): Promise<string[]> {\n // Simple glob implementation - could be enhanced with a proper glob library\n const _patternParts = pattern.split(path.sep);\n const _basePath = patternParts.slice(0, -1).join(path.sep) || './';\n const _filePattern = _patternParts[patternParts.length - 1];\n\n try {\n // Convert glob _pattern to regex\n const _regexPattern = _filePattern\n .replace(/\\./g, '\\\\.')\n .replace(/\\*/g, '.*')\n .replace(/\\?/g, '.');\n\n const _files = await this.findFiles(_basePath, {\n ...options,\n _pattern: `^${_regexPattern}$`,\n regex: true,\n type: 'file',\n });\n\n return files.map((f) => f.path);\n } catch (_error) {\n throw new Error(`Failed to glob _pattern ${pattern}: ${error.message}`);\n }\n }\n\n // Utility Methods\n async exists(filePath: string): Promise<boolean> {\n try {\n await fsAsync.access(path.resolve(filePath));\n return true;\n } catch {\n return false;\n }\n }\n\n async getFileStats(filePath: string): Promise<FileStats> {\n try {\n const _resolvedPath = path.resolve(filePath);\n const _stats = await fsAsync.lstat(_resolvedPath);\n const _name = path.basename(_resolvedPath);\n\n return {\n _name,\n path: _resolvedPath,\n isFile: stats.isFile(),\n isDirectory: stats.isDirectory(),\n isSymlink: stats.isSymbolicLink(),\n size: stats.size,\n created: stats.birthtime,\n modified: stats.mtime,\n permissions: (stats.mode & parseInt('777', 8)).toString(8),\n };\n } catch (_error) {\n throw new Error(`Failed to get file _stats for ${filePath}: ${error.message}`);\n }\n }\n\n async getRealPath(filePath: string): Promise<string> {\n try {\n return await fsAsync.realpath(path.resolve(filePath));\n } catch (_error) {\n throw new Error(`Failed to resolve real path for ${filePath}: ${error.message}`);\n }\n }\n\n getOperationLog(): Array<{ operation: string; path: string; timestamp: Date; success: boolean }> {\n return [...this.operationLog];\n }\n\n clearOperationLog(): void {\n this.operationLog = [];\n }\n\n // Private Helper Methods\n private async ensureDirectoryExists(dirPath: string): Promise<void> {\n try {\n await fsAsync.mkdir(dirPath, { recursive: true });\n } catch (_error) {\n if (error.code !== 'EEXIST') {\n throw _error;\n }\n }\n }\n\n private async createBackup(filePath: string): Promise<void> {\n const _backupPath = `${filePath}.backup.${Date.now()}`;\n await fsAsync.copyFile(filePath, _backupPath);\n }\n\n private async deleteDirectoryRecursive(dirPath: string): Promise<void> {\n const _entries = await fsAsync.readdir(dirPath);\n\n for (const entry of _entries) {\n const _entryPath = path.join(dirPath, entry);\n const _stats = await fsAsync.lstat(_entryPath);\n\n if (stats.isDirectory()) {\n await this.deleteDirectoryRecursive(_entryPath);\n } else {\n await fsAsync.unlink(_entryPath);\n }\n }\n\n await fsAsync.rmdir(dirPath);\n }\n\n private async findFilesRecursive(\n searchPath: string,\n options: SearchOptions,\n results: FileStats[],\n depth: number,\n ): Promise<void> {\n if (options.maxDepth && depth >= options.maxDepth) {\n return;\n }\n\n try {\n const _entries = await fsAsync.readdir(searchPath);\n\n for (const entry of _entries) {\n if (!options.includeHidden && entry.startsWith('.')) {\n continue;\n }\n\n const _entryPath = path.join(searchPath, entry);\n const _stats = await this.getFileStats(_entryPath);\n\n // Apply filters\n if (options.pattern) {\n const _pattern = options.regex\n ? new RegExp(options.pattern, options.caseSensitive ? 'g' : 'gi')\n : null;\n const _match = _pattern\n ? pattern.test(stats.name)\n : options.caseSensitive\n ? stats.name.includes(options.pattern)\n : stats.name.toLowerCase().includes(options.pattern.toLowerCase());\n\n if (_match) {\n if (options.type) {\n if (options.type === 'file' && stats.isFile) {results.push(_stats);}\n if (options.type === 'directory' && stats.isDirectory) {results.push(_stats);}\n if (options.type === 'both') {results.push(_stats);}\n } else {\n results.push(_stats);\n }\n }\n } else if (!options.pattern) {\n if (options.type) {\n if (options.type === 'file' && stats.isFile) {results.push(_stats);}\n if (options.type === 'directory' && stats.isDirectory) {results.push(_stats);}\n if (options.type === 'both') {results.push(_stats);}\n } else {\n results.push(_stats);\n }\n }\n\n // Recurse into directories\n if (stats.isDirectory && (options.followSymlinks || !stats.isSymlink)) {\n await this.findFilesRecursive(_entryPath, options, results, depth + 1);\n }\n }\n } catch (_error) {\n // Skip directories we can't read\n }\n }\n\n private logOperation(_operation: string, path: string, success: boolean): void {\n this.operationLog.push({\n operation,\n path,\n timestamp: new Date(),\n success,\n });\n\n // Keep only last 1000 operations\n if (this.operationLog.length > 1000) {\n this.operationLog = this.operationLog.slice(-1000);\n }\n }\n}\n\nexport const _fileSystemService = FileSystemService.getInstance();\n"]}
|