@bonginkan/maria 3.0.7 ā 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 +229 -565
- package/dist/bin/maria.cjs +38203 -0
- package/dist/bin/maria.cjs.map +1 -0
- package/dist/cli.cjs +19607 -0
- package/dist/cli.cjs.map +1 -0
- package/dist/index.js +5170 -56
- package/dist/index.js.map +1 -1
- package/package.json +115 -32
- package/bin/maria +0 -74
- package/bin/maria.d.ts +0 -2
- package/bin/maria.js +0 -46663
- package/bin/maria.js.map +0 -1
- package/dist/cli.d.ts +0 -15
- package/dist/cli.js +0 -61
- package/dist/cli.js.map +0 -1
- package/dist/index.d.ts +0 -12
- package/images/CLI_visual.png +0 -0
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/cli.ts","../src/index.ts"],"names":["Command","chalk"],"mappings":"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","file":"index.js","sourcesContent":["#!/usr/bin/env node\n\n/**\n * MARIA CLI - Command Line Interface\n * OSS Version with core functionality\n */\n\nimport { Command } from 'commander';\nimport chalk from 'chalk';\n\nexport interface CLIOptions {\n model?: string;\n debug?: boolean;\n}\n\nexport function createCLI(): Command {\n const program = new Command();\n\n program\n .name('maria')\n .description('MARIA - AI-Powered Development Platform')\n .version('2.1.9');\n\n // Chat command\n program\n .command('chat')\n .description('Start interactive chat mode')\n .action(() => {\n console.log(chalk.blue('š¤ MARIA AI-Powered Development Platform v2.1.9'));\n console.log(chalk.gray('Enhanced UX & Advanced Content Analysis Edition'));\n console.log(chalk.yellow('\\nš” This is the OSS distribution of MARIA.'));\n console.log(chalk.yellow(' Full features available at: https://maria-code.vercel.app'));\n console.log(chalk.cyan('\\n⨠Key Features:'));\n console.log(chalk.cyan(' ⢠Cloud Vision AI (Gemini 2.0 Flash, GPT-4o-mini)'));\n console.log(chalk.cyan(' ⢠Enhanced UX with Real-time Feedback'));\n console.log(chalk.cyan(' ⢠58+ Cognitive Modes with Advanced Indicators'));\n console.log(chalk.cyan(' ⢠Professional Progress Reporting'));\n console.log(chalk.cyan(' ⢠Advanced Content Analysis & OCR'));\n console.log(chalk.cyan(' ⢠Complete Local LLM Integration'));\n console.log(chalk.cyan(' ⢠CLI Native Development System'));\n });\n\n // Version command\n program\n .command('version')\n .description('Show version information')\n .action(() => {\n console.log(chalk.bold('MARIA CLI v2.1.9'));\n console.log(chalk.gray('Enhanced UX & Advanced Content Analysis Edition'));\n console.log(chalk.gray('Ā© 2025 Bonginkan Inc.'));\n });\n\n // Status command\n program\n .command('status')\n .description('Show system status')\n .action(() => {\n console.log(chalk.green('ā
MARIA OSS Distribution v2.1.9'));\n console.log(chalk.blue('š¦ Enhanced UX & Advanced Content Analysis Edition'));\n console.log(chalk.yellow('š Full Platform: https://maria-code.vercel.app'));\n console.log(chalk.cyan('⨠New Features:'));\n console.log(chalk.cyan(' ⢠Cloud Vision AI Integration'));\n console.log(chalk.cyan(' ⢠Real-time Feedback Management'));\n console.log(chalk.cyan(' ⢠Enhanced Progress Reporting'));\n console.log(chalk.cyan(' ⢠Advanced Mode Indicators'));\n });\n\n return program;\n}\n\n// CLI execution\nif (require.main === module) {\n const cli = createCLI();\n cli.parse();\n}","/**\n * MARIA - AI-Powered Development Platform\n * OSS Distribution Entry Point\n * @version 2.1.9\n */\n\n// CLI entry point\nexport { createCLI } from './cli';\n\n// Version\nexport const VERSION = '2.1.9';"]}
|
|
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(/[ļ¼”-ļ¼ŗļ½-ļ½ļ¼-ļ¼]/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"]}
|