chat-flow-ardymalihi 1.0.2 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -0
- package/dist/adapters/intent/IntentMatcher.d.ts +16 -0
- package/dist/adapters/intent/IntentMatcher.d.ts.map +1 -1
- package/dist/adapters/intent/IntentMatcher.js +93 -15
- package/dist/adapters/intent/IntentMatcher.js.map +1 -1
- package/dist/adapters/intent/IntentService.d.ts +4 -5
- package/dist/adapters/intent/IntentService.d.ts.map +1 -1
- package/dist/adapters/intent/IntentService.js +15 -9
- package/dist/adapters/intent/IntentService.js.map +1 -1
- package/dist/adapters/intent/MockIntentService.d.ts +7 -0
- package/dist/adapters/intent/MockIntentService.d.ts.map +1 -0
- package/dist/adapters/intent/MockIntentService.js +36 -0
- package/dist/adapters/intent/MockIntentService.js.map +1 -0
- package/dist/adapters/llm/OllamaLLMAdapter.d.ts +9 -0
- package/dist/adapters/llm/OllamaLLMAdapter.d.ts.map +1 -0
- package/dist/adapters/llm/OllamaLLMAdapter.js +74 -0
- package/dist/adapters/llm/OllamaLLMAdapter.js.map +1 -0
- package/dist/adapters/logger/ConsoleLogger.d.ts +12 -0
- package/dist/adapters/logger/ConsoleLogger.d.ts.map +1 -0
- package/dist/adapters/logger/ConsoleLogger.js +37 -0
- package/dist/adapters/logger/ConsoleLogger.js.map +1 -0
- package/dist/adapters/repository/InMemoryRepository.d.ts +35 -4
- package/dist/adapters/repository/InMemoryRepository.d.ts.map +1 -1
- package/dist/adapters/repository/InMemoryRepository.js +204 -10
- package/dist/adapters/repository/InMemoryRepository.js.map +1 -1
- package/dist/adapters/repository/RedisRepository.d.ts +52 -5
- package/dist/adapters/repository/RedisRepository.d.ts.map +1 -1
- package/dist/adapters/repository/RedisRepository.js +525 -26
- package/dist/adapters/repository/RedisRepository.js.map +1 -1
- package/dist/adapters/storage/RedisAudioStorageAdapter.d.ts +33 -0
- package/dist/adapters/storage/RedisAudioStorageAdapter.d.ts.map +1 -0
- package/dist/adapters/storage/RedisAudioStorageAdapter.js +121 -0
- package/dist/adapters/storage/RedisAudioStorageAdapter.js.map +1 -0
- package/dist/adapters/storage/RedisBufferStorageAdapter.d.ts +14 -0
- package/dist/adapters/storage/RedisBufferStorageAdapter.d.ts.map +1 -0
- package/dist/adapters/storage/RedisBufferStorageAdapter.js +94 -0
- package/dist/adapters/storage/RedisBufferStorageAdapter.js.map +1 -0
- package/dist/adapters/voice/ElevenLabsVoiceAdapter.d.ts +29 -0
- package/dist/adapters/voice/ElevenLabsVoiceAdapter.d.ts.map +1 -0
- package/dist/adapters/voice/ElevenLabsVoiceAdapter.js +75 -0
- package/dist/adapters/voice/ElevenLabsVoiceAdapter.js.map +1 -0
- package/dist/adapters/voice/GeminiMultimodalLiveAdapter.d.ts +77 -0
- package/dist/adapters/voice/GeminiMultimodalLiveAdapter.d.ts.map +1 -0
- package/dist/adapters/voice/GeminiMultimodalLiveAdapter.js +187 -0
- package/dist/adapters/voice/GeminiMultimodalLiveAdapter.js.map +1 -0
- package/dist/adapters/voice/GeminiVoiceAdapter.d.ts +36 -0
- package/dist/adapters/voice/GeminiVoiceAdapter.d.ts.map +1 -0
- package/dist/adapters/voice/GeminiVoiceAdapter.js +134 -0
- package/dist/adapters/voice/GeminiVoiceAdapter.js.map +1 -0
- package/dist/adapters/voice/GoogleTTSAdapter.d.ts +61 -0
- package/dist/adapters/voice/GoogleTTSAdapter.d.ts.map +1 -0
- package/dist/adapters/voice/GoogleTTSAdapter.js +165 -0
- package/dist/adapters/voice/GoogleTTSAdapter.js.map +1 -0
- package/dist/adapters/voice/GoogleVoiceAdapter.d.ts +33 -0
- package/dist/adapters/voice/GoogleVoiceAdapter.d.ts.map +1 -0
- package/dist/adapters/voice/GoogleVoiceAdapter.js +155 -0
- package/dist/adapters/voice/GoogleVoiceAdapter.js.map +1 -0
- package/dist/adapters/voice/HybridVoiceAdapter.d.ts +54 -0
- package/dist/adapters/voice/HybridVoiceAdapter.d.ts.map +1 -0
- package/dist/adapters/voice/HybridVoiceAdapter.js +102 -0
- package/dist/adapters/voice/HybridVoiceAdapter.js.map +1 -0
- package/dist/adapters/voice/LanguageVoiceMapper.d.ts +60 -0
- package/dist/adapters/voice/LanguageVoiceMapper.d.ts.map +1 -0
- package/dist/adapters/voice/LanguageVoiceMapper.js +130 -0
- package/dist/adapters/voice/LanguageVoiceMapper.js.map +1 -0
- package/dist/adapters/voice/VertexVoiceAdapter.d.ts +32 -0
- package/dist/adapters/voice/VertexVoiceAdapter.d.ts.map +1 -0
- package/dist/adapters/voice/VertexVoiceAdapter.js +179 -0
- package/dist/adapters/voice/VertexVoiceAdapter.js.map +1 -0
- package/dist/adapters/webhook/WebhookService.d.ts +47 -0
- package/dist/adapters/webhook/WebhookService.d.ts.map +1 -0
- package/dist/adapters/webhook/WebhookService.js +265 -0
- package/dist/adapters/webhook/WebhookService.js.map +1 -0
- package/dist/adapters/workflow/MockWorkflowAdapter.d.ts.map +1 -1
- package/dist/adapters/workflow/MockWorkflowAdapter.js +12 -1
- package/dist/adapters/workflow/MockWorkflowAdapter.js.map +1 -1
- package/dist/adapters/workflow/WorkflowAdapter.d.ts +55 -0
- package/dist/adapters/workflow/WorkflowAdapter.d.ts.map +1 -0
- package/dist/adapters/workflow/WorkflowAdapter.js +242 -0
- package/dist/adapters/workflow/WorkflowAdapter.js.map +1 -0
- package/dist/adapters/workflow/actions/getSupportHoursAction.d.ts +10 -0
- package/dist/adapters/workflow/actions/getSupportHoursAction.d.ts.map +1 -0
- package/dist/adapters/workflow/actions/getSupportHoursAction.js +33 -0
- package/dist/adapters/workflow/actions/getSupportHoursAction.js.map +1 -0
- package/dist/adapters/workflow/actions/index.d.ts +6 -0
- package/dist/adapters/workflow/actions/index.d.ts.map +1 -0
- package/dist/adapters/workflow/actions/index.js +22 -0
- package/dist/adapters/workflow/actions/index.js.map +1 -0
- package/dist/adapters/workflow/actions/pushOutputResultAction.d.ts +11 -0
- package/dist/adapters/workflow/actions/pushOutputResultAction.d.ts.map +1 -0
- package/dist/adapters/workflow/actions/pushOutputResultAction.js +31 -0
- package/dist/adapters/workflow/actions/pushOutputResultAction.js.map +1 -0
- package/dist/adapters/workflow/actions/setWorkflowMessageAction.d.ts +12 -0
- package/dist/adapters/workflow/actions/setWorkflowMessageAction.d.ts.map +1 -0
- package/dist/adapters/workflow/actions/setWorkflowMessageAction.js +32 -0
- package/dist/adapters/workflow/actions/setWorkflowMessageAction.js.map +1 -0
- package/dist/adapters/workflow/engine/constants.d.ts +3 -0
- package/dist/adapters/workflow/engine/constants.d.ts.map +1 -0
- package/dist/adapters/workflow/engine/constants.js +6 -0
- package/dist/adapters/workflow/engine/constants.js.map +1 -0
- package/dist/adapters/workflow/engine/engine.d.ts +32 -0
- package/dist/adapters/workflow/engine/engine.d.ts.map +1 -0
- package/dist/adapters/workflow/engine/engine.js +623 -0
- package/dist/adapters/workflow/engine/engine.js.map +1 -0
- package/dist/adapters/workflow/engine/event-registry.d.ts +12 -0
- package/dist/adapters/workflow/engine/event-registry.d.ts.map +1 -0
- package/dist/adapters/workflow/engine/event-registry.js +33 -0
- package/dist/adapters/workflow/engine/event-registry.js.map +1 -0
- package/dist/adapters/workflow/engine/interpolator.d.ts +11 -0
- package/dist/adapters/workflow/engine/interpolator.d.ts.map +1 -0
- package/dist/adapters/workflow/engine/interpolator.js +93 -0
- package/dist/adapters/workflow/engine/interpolator.js.map +1 -0
- package/dist/adapters/workflow/engine/registry.d.ts +12 -0
- package/dist/adapters/workflow/engine/registry.d.ts.map +1 -0
- package/dist/adapters/workflow/engine/registry.js +39 -0
- package/dist/adapters/workflow/engine/registry.js.map +1 -0
- package/dist/adapters/workflow/engine/template-registry.d.ts +60 -0
- package/dist/adapters/workflow/engine/template-registry.d.ts.map +1 -0
- package/dist/adapters/workflow/engine/template-registry.js +92 -0
- package/dist/adapters/workflow/engine/template-registry.js.map +1 -0
- package/dist/adapters/workflow/engine/types.d.ts +182 -0
- package/dist/adapters/workflow/engine/types.d.ts.map +1 -0
- package/dist/adapters/workflow/engine/types.js +3 -0
- package/dist/adapters/workflow/engine/types.js.map +1 -0
- package/dist/adapters/workflow/engine/utils/format-utils.d.ts +43 -0
- package/dist/adapters/workflow/engine/utils/format-utils.d.ts.map +1 -0
- package/dist/adapters/workflow/engine/utils/format-utils.js +137 -0
- package/dist/adapters/workflow/engine/utils/format-utils.js.map +1 -0
- package/dist/adapters/workflow/engine/utils/layout-calculator.d.ts +7 -0
- package/dist/adapters/workflow/engine/utils/layout-calculator.d.ts.map +1 -0
- package/dist/adapters/workflow/engine/utils/layout-calculator.js +87 -0
- package/dist/adapters/workflow/engine/utils/layout-calculator.js.map +1 -0
- package/dist/adapters/workflow/engine/utils/slugify.d.ts +2 -0
- package/dist/adapters/workflow/engine/utils/slugify.d.ts.map +1 -0
- package/dist/adapters/workflow/engine/utils/slugify.js +41 -0
- package/dist/adapters/workflow/engine/utils/slugify.js.map +1 -0
- package/dist/adapters/workflow/engine/validator.d.ts +9 -0
- package/dist/adapters/workflow/engine/validator.d.ts.map +1 -0
- package/dist/adapters/workflow/engine/validator.js +425 -0
- package/dist/adapters/workflow/engine/validator.js.map +1 -0
- package/dist/config/ChatFlowConfig.d.ts +7 -0
- package/dist/config/ChatFlowConfig.d.ts.map +1 -1
- package/dist/config/ChatFlowConfig.js +5 -0
- package/dist/config/ChatFlowConfig.js.map +1 -1
- package/dist/core/entities/ConversationSession.d.ts +36 -1
- package/dist/core/entities/ConversationSession.d.ts.map +1 -1
- package/dist/core/entities/ConversationSession.js +78 -1
- package/dist/core/entities/ConversationSession.js.map +1 -1
- package/dist/core/entities/Message.d.ts +5 -2
- package/dist/core/entities/Message.d.ts.map +1 -1
- package/dist/core/entities/Message.js +2 -0
- package/dist/core/entities/Message.js.map +1 -1
- package/dist/core/utils/AudioStreamBuffer.d.ts +33 -0
- package/dist/core/utils/AudioStreamBuffer.d.ts.map +1 -0
- package/dist/core/utils/AudioStreamBuffer.js +55 -0
- package/dist/core/utils/AudioStreamBuffer.js.map +1 -0
- package/dist/core/utils/AudioUtils.d.ts +41 -0
- package/dist/core/utils/AudioUtils.d.ts.map +1 -0
- package/dist/core/utils/AudioUtils.js +188 -0
- package/dist/core/utils/AudioUtils.js.map +1 -0
- package/dist/core/utils/LanguageDetector.d.ts +52 -0
- package/dist/core/utils/LanguageDetector.d.ts.map +1 -0
- package/dist/core/utils/LanguageDetector.js +173 -0
- package/dist/core/utils/LanguageDetector.js.map +1 -0
- package/dist/core/utils/WavUtils.d.ts +14 -0
- package/dist/core/utils/WavUtils.d.ts.map +1 -0
- package/dist/core/utils/WavUtils.js +37 -0
- package/dist/core/utils/WavUtils.js.map +1 -0
- package/dist/demo/cli-demo.js +10 -6
- package/dist/demo/cli-demo.js.map +1 -1
- package/dist/demo/console-chat.js +10 -6
- package/dist/demo/console-chat.js.map +1 -1
- package/dist/demo/interactive-voice-chat.d.ts +2 -0
- package/dist/demo/interactive-voice-chat.d.ts.map +1 -0
- package/dist/demo/interactive-voice-chat.js +180 -0
- package/dist/demo/interactive-voice-chat.js.map +1 -0
- package/dist/demo/voice-demo.d.ts +2 -0
- package/dist/demo/voice-demo.d.ts.map +1 -0
- package/dist/demo/voice-demo.js +188 -0
- package/dist/demo/voice-demo.js.map +1 -0
- package/dist/index.d.ts +9 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +23 -8
- package/dist/index.js.map +1 -1
- package/dist/intent/IntentService.d.ts.map +1 -1
- package/dist/intent/IntentService.js +13 -7
- package/dist/intent/IntentService.js.map +1 -1
- package/dist/intent/MockIntentService.d.ts +2 -1
- package/dist/intent/MockIntentService.d.ts.map +1 -1
- package/dist/intent/MockIntentService.js +9 -3
- package/dist/intent/MockIntentService.js.map +1 -1
- package/dist/interfaces.d.ts +551 -6
- package/dist/interfaces.d.ts.map +1 -1
- package/dist/interfaces.js +19 -1
- package/dist/interfaces.js.map +1 -1
- package/dist/orchestrator/Orchestrator.d.ts +48 -4
- package/dist/orchestrator/Orchestrator.d.ts.map +1 -1
- package/dist/orchestrator/Orchestrator.js +650 -33
- package/dist/orchestrator/Orchestrator.js.map +1 -1
- package/dist/scripts/seed-collaborative-intents.d.ts +2 -0
- package/dist/scripts/seed-collaborative-intents.d.ts.map +1 -0
- package/dist/scripts/seed-collaborative-intents.js +90 -0
- package/dist/scripts/seed-collaborative-intents.js.map +1 -0
- package/dist/scripts/test-isolated-config.d.ts +2 -0
- package/dist/scripts/test-isolated-config.d.ts.map +1 -0
- package/dist/scripts/test-isolated-config.js +80 -0
- package/dist/scripts/test-isolated-config.js.map +1 -0
- package/dist/scripts/verify_redis_intents.js +4 -2
- package/dist/scripts/verify_redis_intents.js.map +1 -1
- package/dist/server/ChatFlowWebSocketServer.d.ts +46 -0
- package/dist/server/ChatFlowWebSocketServer.d.ts.map +1 -0
- package/dist/server/ChatFlowWebSocketServer.js +344 -0
- package/dist/server/ChatFlowWebSocketServer.js.map +1 -0
- package/dist/server/realtime-voice-server.d.ts +2 -0
- package/dist/server/realtime-voice-server.d.ts.map +1 -0
- package/dist/server/realtime-voice-server.js +627 -0
- package/dist/server/realtime-voice-server.js.map +1 -0
- package/dist/src/adapters/intent/IntentMatcher.d.ts +41 -0
- package/dist/src/adapters/intent/IntentMatcher.d.ts.map +1 -0
- package/dist/src/adapters/intent/IntentMatcher.js +167 -0
- package/dist/src/adapters/intent/IntentMatcher.js.map +1 -0
- package/dist/src/adapters/intent/IntentService.d.ts +26 -0
- package/dist/src/adapters/intent/IntentService.d.ts.map +1 -0
- package/dist/src/adapters/intent/IntentService.js +65 -0
- package/dist/src/adapters/intent/IntentService.js.map +1 -0
- package/dist/src/adapters/intent/MockIntentService.d.ts +7 -0
- package/dist/src/adapters/intent/MockIntentService.d.ts.map +1 -0
- package/dist/src/adapters/intent/MockIntentService.js +36 -0
- package/dist/src/adapters/intent/MockIntentService.js.map +1 -0
- package/dist/src/adapters/llm/GeminiLLMAdapter.d.ts +10 -0
- package/dist/src/adapters/llm/GeminiLLMAdapter.d.ts.map +1 -0
- package/dist/src/adapters/llm/GeminiLLMAdapter.js +102 -0
- package/dist/src/adapters/llm/GeminiLLMAdapter.js.map +1 -0
- package/dist/src/adapters/llm/MockLLMAdapter.d.ts +5 -0
- package/dist/src/adapters/llm/MockLLMAdapter.d.ts.map +1 -0
- package/dist/src/adapters/llm/MockLLMAdapter.js +31 -0
- package/dist/src/adapters/llm/MockLLMAdapter.js.map +1 -0
- package/dist/src/adapters/llm/OllamaLLMAdapter.d.ts +9 -0
- package/dist/src/adapters/llm/OllamaLLMAdapter.d.ts.map +1 -0
- package/dist/src/adapters/llm/OllamaLLMAdapter.js +74 -0
- package/dist/src/adapters/llm/OllamaLLMAdapter.js.map +1 -0
- package/dist/src/adapters/logger/ConsoleLogger.d.ts +12 -0
- package/dist/src/adapters/logger/ConsoleLogger.d.ts.map +1 -0
- package/dist/src/adapters/logger/ConsoleLogger.js +37 -0
- package/dist/src/adapters/logger/ConsoleLogger.js.map +1 -0
- package/dist/src/adapters/repository/InMemoryRepository.d.ts +57 -0
- package/dist/src/adapters/repository/InMemoryRepository.d.ts.map +1 -0
- package/dist/src/adapters/repository/InMemoryRepository.js +269 -0
- package/dist/src/adapters/repository/InMemoryRepository.js.map +1 -0
- package/dist/src/adapters/repository/RedisRepository.d.ts +72 -0
- package/dist/src/adapters/repository/RedisRepository.d.ts.map +1 -0
- package/dist/src/adapters/repository/RedisRepository.js +700 -0
- package/dist/src/adapters/repository/RedisRepository.js.map +1 -0
- package/dist/src/adapters/repository/SupabaseRepository.d.ts +60 -0
- package/dist/src/adapters/repository/SupabaseRepository.d.ts.map +1 -0
- package/dist/src/adapters/repository/SupabaseRepository.js +774 -0
- package/dist/src/adapters/repository/SupabaseRepository.js.map +1 -0
- package/dist/src/adapters/storage/RedisAudioStorageAdapter.d.ts +33 -0
- package/dist/src/adapters/storage/RedisAudioStorageAdapter.d.ts.map +1 -0
- package/dist/src/adapters/storage/RedisAudioStorageAdapter.js +121 -0
- package/dist/src/adapters/storage/RedisAudioStorageAdapter.js.map +1 -0
- package/dist/src/adapters/voice/GoogleVoiceAdapter.d.ts +33 -0
- package/dist/src/adapters/voice/GoogleVoiceAdapter.d.ts.map +1 -0
- package/dist/src/adapters/voice/GoogleVoiceAdapter.js +155 -0
- package/dist/src/adapters/voice/GoogleVoiceAdapter.js.map +1 -0
- package/dist/src/adapters/voice/LanguageVoiceMapper.d.ts +60 -0
- package/dist/src/adapters/voice/LanguageVoiceMapper.d.ts.map +1 -0
- package/dist/src/adapters/voice/LanguageVoiceMapper.js +130 -0
- package/dist/src/adapters/voice/LanguageVoiceMapper.js.map +1 -0
- package/dist/src/adapters/voice/VertexVoiceAdapter.d.ts +32 -0
- package/dist/src/adapters/voice/VertexVoiceAdapter.d.ts.map +1 -0
- package/dist/src/adapters/voice/VertexVoiceAdapter.js +179 -0
- package/dist/src/adapters/voice/VertexVoiceAdapter.js.map +1 -0
- package/dist/src/adapters/webhook/WebhookService.d.ts +47 -0
- package/dist/src/adapters/webhook/WebhookService.d.ts.map +1 -0
- package/dist/src/adapters/webhook/WebhookService.js +265 -0
- package/dist/src/adapters/webhook/WebhookService.js.map +1 -0
- package/dist/src/adapters/workflow/MockWorkflowAdapter.d.ts +5 -0
- package/dist/src/adapters/workflow/MockWorkflowAdapter.d.ts.map +1 -0
- package/dist/src/adapters/workflow/MockWorkflowAdapter.js +173 -0
- package/dist/src/adapters/workflow/MockWorkflowAdapter.js.map +1 -0
- package/dist/src/adapters/workflow/WorkflowAdapter.d.ts +55 -0
- package/dist/src/adapters/workflow/WorkflowAdapter.d.ts.map +1 -0
- package/dist/src/adapters/workflow/WorkflowAdapter.js +203 -0
- package/dist/src/adapters/workflow/WorkflowAdapter.js.map +1 -0
- package/dist/src/adapters/workflow/actions/index.d.ts +6 -0
- package/dist/src/adapters/workflow/actions/index.d.ts.map +1 -0
- package/dist/src/adapters/workflow/actions/index.js +22 -0
- package/dist/src/adapters/workflow/actions/index.js.map +1 -0
- package/dist/src/adapters/workflow/actions/pushOutputResultAction.d.ts +11 -0
- package/dist/src/adapters/workflow/actions/pushOutputResultAction.d.ts.map +1 -0
- package/dist/src/adapters/workflow/actions/pushOutputResultAction.js +31 -0
- package/dist/src/adapters/workflow/actions/pushOutputResultAction.js.map +1 -0
- package/dist/src/adapters/workflow/engine/constants.d.ts +3 -0
- package/dist/src/adapters/workflow/engine/constants.d.ts.map +1 -0
- package/dist/src/adapters/workflow/engine/constants.js +6 -0
- package/dist/src/adapters/workflow/engine/constants.js.map +1 -0
- package/dist/src/adapters/workflow/engine/engine.d.ts +32 -0
- package/dist/src/adapters/workflow/engine/engine.d.ts.map +1 -0
- package/dist/src/adapters/workflow/engine/engine.js +622 -0
- package/dist/src/adapters/workflow/engine/engine.js.map +1 -0
- package/dist/src/adapters/workflow/engine/event-registry.d.ts +12 -0
- package/dist/src/adapters/workflow/engine/event-registry.d.ts.map +1 -0
- package/dist/src/adapters/workflow/engine/event-registry.js +33 -0
- package/dist/src/adapters/workflow/engine/event-registry.js.map +1 -0
- package/dist/src/adapters/workflow/engine/interpolator.d.ts +11 -0
- package/dist/src/adapters/workflow/engine/interpolator.d.ts.map +1 -0
- package/dist/src/adapters/workflow/engine/interpolator.js +93 -0
- package/dist/src/adapters/workflow/engine/interpolator.js.map +1 -0
- package/dist/src/adapters/workflow/engine/registry.d.ts +12 -0
- package/dist/src/adapters/workflow/engine/registry.d.ts.map +1 -0
- package/dist/src/adapters/workflow/engine/registry.js +39 -0
- package/dist/src/adapters/workflow/engine/registry.js.map +1 -0
- package/dist/src/adapters/workflow/engine/template-registry.d.ts +60 -0
- package/dist/src/adapters/workflow/engine/template-registry.d.ts.map +1 -0
- package/dist/src/adapters/workflow/engine/template-registry.js +92 -0
- package/dist/src/adapters/workflow/engine/template-registry.js.map +1 -0
- package/dist/src/adapters/workflow/engine/utils/format-utils.d.ts +43 -0
- package/dist/src/adapters/workflow/engine/utils/format-utils.d.ts.map +1 -0
- package/dist/src/adapters/workflow/engine/utils/format-utils.js +137 -0
- package/dist/src/adapters/workflow/engine/utils/format-utils.js.map +1 -0
- package/dist/src/adapters/workflow/engine/utils/layout-calculator.d.ts +7 -0
- package/dist/src/adapters/workflow/engine/utils/layout-calculator.d.ts.map +1 -0
- package/dist/src/adapters/workflow/engine/utils/layout-calculator.js +87 -0
- package/dist/src/adapters/workflow/engine/utils/layout-calculator.js.map +1 -0
- package/dist/src/adapters/workflow/engine/utils/slugify.d.ts +2 -0
- package/dist/src/adapters/workflow/engine/utils/slugify.d.ts.map +1 -0
- package/dist/src/adapters/workflow/engine/utils/slugify.js +41 -0
- package/dist/src/adapters/workflow/engine/utils/slugify.js.map +1 -0
- package/dist/src/adapters/workflow/engine/validator.d.ts +9 -0
- package/dist/src/adapters/workflow/engine/validator.d.ts.map +1 -0
- package/dist/src/adapters/workflow/engine/validator.js +425 -0
- package/dist/src/adapters/workflow/engine/validator.js.map +1 -0
- package/dist/src/api/router.d.ts +3 -0
- package/dist/src/api/router.d.ts.map +1 -0
- package/dist/src/api/router.js +27 -0
- package/dist/src/api/router.js.map +1 -0
- package/dist/src/api/routes/configs.d.ts +3 -0
- package/dist/src/api/routes/configs.d.ts.map +1 -0
- package/dist/src/api/routes/configs.js +110 -0
- package/dist/src/api/routes/configs.js.map +1 -0
- package/dist/src/api/routes/executions.d.ts +3 -0
- package/dist/src/api/routes/executions.d.ts.map +1 -0
- package/dist/src/api/routes/executions.js +77 -0
- package/dist/src/api/routes/executions.js.map +1 -0
- package/dist/src/api/routes/intents.d.ts +3 -0
- package/dist/src/api/routes/intents.d.ts.map +1 -0
- package/dist/src/api/routes/intents.js +128 -0
- package/dist/src/api/routes/intents.js.map +1 -0
- package/dist/src/api/routes/sessions.d.ts +3 -0
- package/dist/src/api/routes/sessions.d.ts.map +1 -0
- package/dist/src/api/routes/sessions.js +105 -0
- package/dist/src/api/routes/sessions.js.map +1 -0
- package/dist/src/api/routes/tenants.d.ts +3 -0
- package/dist/src/api/routes/tenants.d.ts.map +1 -0
- package/dist/src/api/routes/tenants.js +109 -0
- package/dist/src/api/routes/tenants.js.map +1 -0
- package/dist/src/api/routes/users.d.ts +3 -0
- package/dist/src/api/routes/users.d.ts.map +1 -0
- package/dist/src/api/routes/users.js +51 -0
- package/dist/src/api/routes/users.js.map +1 -0
- package/dist/src/api/routes/workflows.d.ts +3 -0
- package/dist/src/api/routes/workflows.d.ts.map +1 -0
- package/dist/src/api/routes/workflows.js +132 -0
- package/dist/src/api/routes/workflows.js.map +1 -0
- package/dist/src/config/ChatFlowConfig.d.ts +66 -0
- package/dist/src/config/ChatFlowConfig.d.ts.map +1 -0
- package/dist/src/config/ChatFlowConfig.js +54 -0
- package/dist/src/config/ChatFlowConfig.js.map +1 -0
- package/dist/src/config/index.d.ts +2 -0
- package/dist/src/config/index.d.ts.map +1 -0
- package/dist/src/config/index.js +7 -0
- package/dist/src/config/index.js.map +1 -0
- package/dist/src/config/swagger.d.ts +2 -0
- package/dist/src/config/swagger.d.ts.map +1 -0
- package/dist/src/config/swagger.js +136 -0
- package/dist/src/config/swagger.js.map +1 -0
- package/dist/src/core/entities/ConversationSession.d.ts +58 -0
- package/dist/src/core/entities/ConversationSession.d.ts.map +1 -0
- package/dist/src/core/entities/ConversationSession.js +160 -0
- package/dist/src/core/entities/ConversationSession.js.map +1 -0
- package/dist/src/core/entities/Message.d.ts +14 -0
- package/dist/src/core/entities/Message.d.ts.map +1 -0
- package/dist/src/core/entities/Message.js +32 -0
- package/dist/src/core/entities/Message.js.map +1 -0
- package/dist/src/core/errors/ChatFlowError.d.ts +71 -0
- package/dist/src/core/errors/ChatFlowError.d.ts.map +1 -0
- package/dist/src/core/errors/ChatFlowError.js +108 -0
- package/dist/src/core/errors/ChatFlowError.js.map +1 -0
- package/dist/src/core/errors/index.d.ts +2 -0
- package/dist/src/core/errors/index.d.ts.map +1 -0
- package/dist/src/core/errors/index.js +15 -0
- package/dist/src/core/errors/index.js.map +1 -0
- package/dist/src/core/utils/AudioUtils.d.ts +41 -0
- package/dist/src/core/utils/AudioUtils.d.ts.map +1 -0
- package/dist/src/core/utils/AudioUtils.js +188 -0
- package/dist/src/core/utils/AudioUtils.js.map +1 -0
- package/dist/src/core/utils/LanguageDetector.d.ts +52 -0
- package/dist/src/core/utils/LanguageDetector.d.ts.map +1 -0
- package/dist/src/core/utils/LanguageDetector.js +173 -0
- package/dist/src/core/utils/LanguageDetector.js.map +1 -0
- package/dist/src/demo/cli-demo.d.ts +2 -0
- package/dist/src/demo/cli-demo.d.ts.map +1 -0
- package/dist/src/demo/cli-demo.js +146 -0
- package/dist/src/demo/cli-demo.js.map +1 -0
- package/dist/src/demo/console-chat.d.ts +2 -0
- package/dist/src/demo/console-chat.d.ts.map +1 -0
- package/dist/src/demo/console-chat.js +148 -0
- package/dist/src/demo/console-chat.js.map +1 -0
- package/dist/src/index.d.ts +27 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +78 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/interfaces.d.ts +663 -0
- package/dist/src/interfaces.d.ts.map +1 -0
- package/dist/src/interfaces.js +36 -0
- package/dist/src/interfaces.js.map +1 -0
- package/dist/src/orchestrator/Orchestrator.d.ts +62 -0
- package/dist/src/orchestrator/Orchestrator.d.ts.map +1 -0
- package/dist/src/orchestrator/Orchestrator.js +697 -0
- package/dist/src/orchestrator/Orchestrator.js.map +1 -0
- package/dist/src/scripts/debug-redis.d.ts +2 -0
- package/dist/src/scripts/debug-redis.d.ts.map +1 -0
- package/dist/src/scripts/debug-redis.js +55 -0
- package/dist/src/scripts/debug-redis.js.map +1 -0
- package/dist/src/scripts/seed-collaborative-intents.d.ts +2 -0
- package/dist/src/scripts/seed-collaborative-intents.d.ts.map +1 -0
- package/dist/src/scripts/seed-collaborative-intents.js +90 -0
- package/dist/src/scripts/seed-collaborative-intents.js.map +1 -0
- package/dist/src/scripts/test-isolated-config.d.ts +2 -0
- package/dist/src/scripts/test-isolated-config.d.ts.map +1 -0
- package/dist/src/scripts/test-isolated-config.js +80 -0
- package/dist/src/scripts/test-isolated-config.js.map +1 -0
- package/dist/src/scripts/verify_memory_intents.d.ts +2 -0
- package/dist/src/scripts/verify_memory_intents.d.ts.map +1 -0
- package/dist/src/scripts/verify_memory_intents.js +45 -0
- package/dist/src/scripts/verify_memory_intents.js.map +1 -0
- package/dist/src/scripts/verify_redis_intents.d.ts +2 -0
- package/dist/src/scripts/verify_redis_intents.d.ts.map +1 -0
- package/dist/src/scripts/verify_redis_intents.js +52 -0
- package/dist/src/scripts/verify_redis_intents.js.map +1 -0
- package/dist/src/server/ChatFlowWebSocketServer.d.ts +42 -0
- package/dist/src/server/ChatFlowWebSocketServer.d.ts.map +1 -0
- package/dist/src/server/ChatFlowWebSocketServer.js +355 -0
- package/dist/src/server/ChatFlowWebSocketServer.js.map +1 -0
- package/dist/src/utils/crypto.d.ts +7 -0
- package/dist/src/utils/crypto.d.ts.map +1 -0
- package/dist/src/utils/crypto.js +35 -0
- package/dist/src/utils/crypto.js.map +1 -0
- package/dist/src/utils/encryption-helpers.d.ts +14 -0
- package/dist/src/utils/encryption-helpers.d.ts.map +1 -0
- package/dist/src/utils/encryption-helpers.js +49 -0
- package/dist/src/utils/encryption-helpers.js.map +1 -0
- package/dist/utils/crypto.d.ts +7 -0
- package/dist/utils/crypto.d.ts.map +1 -0
- package/dist/utils/crypto.js +35 -0
- package/dist/utils/crypto.js.map +1 -0
- package/dist/utils/encryption-helpers.d.ts +14 -0
- package/dist/utils/encryption-helpers.d.ts.map +1 -0
- package/dist/utils/encryption-helpers.js +49 -0
- package/dist/utils/encryption-helpers.js.map +1 -0
- package/dist/web/seed-demo-data.d.ts +2 -0
- package/dist/web/seed-demo-data.d.ts.map +1 -0
- package/dist/web/seed-demo-data.js +267 -0
- package/dist/web/seed-demo-data.js.map +1 -0
- package/dist/web/web-server.d.ts +2 -0
- package/dist/web/web-server.d.ts.map +1 -0
- package/dist/web/web-server.js +165 -0
- package/dist/web/web-server.js.map +1 -0
- package/package.json +32 -3
|
@@ -6,11 +6,17 @@ const interfaces_1 = require("../../interfaces");
|
|
|
6
6
|
class ConversationSession {
|
|
7
7
|
constructor(props) {
|
|
8
8
|
this.sessionId = props.sessionId;
|
|
9
|
+
this.tenantId = props.tenantId;
|
|
10
|
+
this.configId = props.configId;
|
|
9
11
|
this.mode = props.mode;
|
|
10
12
|
this.agentPrompt = props.agentPrompt;
|
|
13
|
+
this.conversationMode = props.conversationMode ?? 'collaborative';
|
|
11
14
|
this._messages = [];
|
|
12
15
|
this._status = interfaces_1.SessionStatus.ACTIVE;
|
|
13
16
|
this._metadata = {};
|
|
17
|
+
this._parameterCollectionState = null;
|
|
18
|
+
this._currentLanguage = null; // Will be auto-detected on first message
|
|
19
|
+
this.summary = null;
|
|
14
20
|
this.createdAt = new Date();
|
|
15
21
|
this.updatedAt = new Date();
|
|
16
22
|
}
|
|
@@ -20,8 +26,11 @@ class ConversationSession {
|
|
|
20
26
|
// For simplicity in this demo, we'll instantiate normally and override.
|
|
21
27
|
const session = new ConversationSession({
|
|
22
28
|
sessionId: data.sessionId,
|
|
29
|
+
tenantId: data.tenantId,
|
|
30
|
+
configId: data.configId,
|
|
23
31
|
mode: data.mode,
|
|
24
|
-
agentPrompt: data.agentPrompt
|
|
32
|
+
agentPrompt: data.agentPrompt,
|
|
33
|
+
conversationMode: data.conversationMode ?? 'collaborative'
|
|
25
34
|
});
|
|
26
35
|
// Restore state
|
|
27
36
|
// Assuming messages are stored as plain objects, we need to map them back to Message instances
|
|
@@ -33,6 +42,9 @@ class ConversationSession {
|
|
|
33
42
|
}));
|
|
34
43
|
session._status = data.status;
|
|
35
44
|
session._metadata = data.metadata || {};
|
|
45
|
+
session._parameterCollectionState = data.parameterCollectionState || null;
|
|
46
|
+
session._currentLanguage = data.currentLanguage || null;
|
|
47
|
+
session.summary = data.summary || null;
|
|
36
48
|
// @ts-ignore - writing to readonly for hydration
|
|
37
49
|
session.createdAt = new Date(data.createdAt);
|
|
38
50
|
session.updatedAt = new Date(data.updatedAt);
|
|
@@ -42,11 +54,17 @@ class ConversationSession {
|
|
|
42
54
|
toSnapshot() {
|
|
43
55
|
return {
|
|
44
56
|
sessionId: this.sessionId,
|
|
57
|
+
tenantId: this.tenantId,
|
|
58
|
+
configId: this.configId,
|
|
45
59
|
mode: this.mode,
|
|
46
60
|
agentPrompt: this.agentPrompt,
|
|
61
|
+
conversationMode: this.conversationMode,
|
|
47
62
|
messages: this._messages,
|
|
48
63
|
status: this._status,
|
|
49
64
|
metadata: this._metadata,
|
|
65
|
+
parameterCollectionState: this._parameterCollectionState,
|
|
66
|
+
currentLanguage: this._currentLanguage,
|
|
67
|
+
summary: this.summary,
|
|
50
68
|
createdAt: this.createdAt,
|
|
51
69
|
updatedAt: this.updatedAt
|
|
52
70
|
};
|
|
@@ -78,6 +96,65 @@ class ConversationSession {
|
|
|
78
96
|
getHistory() {
|
|
79
97
|
return this._messages;
|
|
80
98
|
}
|
|
99
|
+
// --- Parameter Collection Methods ---
|
|
100
|
+
/**
|
|
101
|
+
* Start collecting parameters for a detected intent
|
|
102
|
+
*/
|
|
103
|
+
startParameterCollection(state) {
|
|
104
|
+
this._parameterCollectionState = state;
|
|
105
|
+
this.updatedAt = new Date();
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Update parameter collection state with newly extracted parameters
|
|
109
|
+
*/
|
|
110
|
+
updateParameterCollection(newParameters, stillMissing) {
|
|
111
|
+
if (!this._parameterCollectionState)
|
|
112
|
+
return;
|
|
113
|
+
this._parameterCollectionState.detectedParameters = {
|
|
114
|
+
...this._parameterCollectionState.detectedParameters,
|
|
115
|
+
...newParameters
|
|
116
|
+
};
|
|
117
|
+
this._parameterCollectionState.missingParameters = stillMissing;
|
|
118
|
+
this._parameterCollectionState.attemptCount++;
|
|
119
|
+
this.updatedAt = new Date();
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Clear parameter collection state
|
|
123
|
+
*/
|
|
124
|
+
clearParameterCollection() {
|
|
125
|
+
this._parameterCollectionState = null;
|
|
126
|
+
this.updatedAt = new Date();
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Get current parameter collection state
|
|
130
|
+
*/
|
|
131
|
+
getParameterCollectionState() {
|
|
132
|
+
return this._parameterCollectionState;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Check if currently collecting parameters
|
|
136
|
+
*/
|
|
137
|
+
isCollectingParameters() {
|
|
138
|
+
return this._parameterCollectionState !== null;
|
|
139
|
+
}
|
|
140
|
+
// --- Language Management Methods ---
|
|
141
|
+
/**
|
|
142
|
+
* Get current conversation language
|
|
143
|
+
*/
|
|
144
|
+
get currentLanguage() {
|
|
145
|
+
return this._currentLanguage;
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Set conversation language
|
|
149
|
+
* @param languageCode ISO 639-1 language code (e.g., 'en', 'ar', 'fa')
|
|
150
|
+
*/
|
|
151
|
+
setLanguage(languageCode) {
|
|
152
|
+
if (this._currentLanguage !== languageCode) {
|
|
153
|
+
console.log(`[ConversationSession] Language switched from '${this._currentLanguage || 'unknown'}' to '${languageCode}'`);
|
|
154
|
+
}
|
|
155
|
+
this._currentLanguage = languageCode;
|
|
156
|
+
this.updatedAt = new Date();
|
|
157
|
+
}
|
|
81
158
|
}
|
|
82
159
|
exports.ConversationSession = ConversationSession;
|
|
83
160
|
//# sourceMappingURL=ConversationSession.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConversationSession.js","sourceRoot":"","sources":["../../../src/core/entities/ConversationSession.ts"],"names":[],"mappings":";;;AAAA,uCAAoC;AACpC,
|
|
1
|
+
{"version":3,"file":"ConversationSession.js","sourceRoot":"","sources":["../../../src/core/entities/ConversationSession.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import { Role, Message as IMessage, MessageProps } from '../../interfaces';
|
|
2
2
|
export declare class Message implements IMessage {
|
|
3
|
+
readonly id: string;
|
|
3
4
|
readonly role: Role;
|
|
4
5
|
readonly content: string;
|
|
5
6
|
readonly timestamp: Date;
|
|
6
|
-
|
|
7
|
-
constructor(props: MessageProps
|
|
7
|
+
metadata: Record<string, any>;
|
|
8
|
+
constructor(props: MessageProps & {
|
|
9
|
+
id?: string;
|
|
10
|
+
});
|
|
8
11
|
static user(content: string, metadata?: Record<string, any>): Message;
|
|
9
12
|
static assistant(content: string, metadata?: Record<string, any>): Message;
|
|
10
13
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Message.d.ts","sourceRoot":"","sources":["../../../src/core/entities/Message.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Message.d.ts","sourceRoot":"","sources":["../../../src/core/entities/Message.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,OAAO,IAAI,QAAQ,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAE3E,qBAAa,OAAQ,YAAW,QAAQ;IACpC,SAAgB,EAAE,EAAE,MAAM,CAAC;IAC3B,SAAgB,IAAI,EAAE,IAAI,CAAC;IAC3B,SAAgB,OAAO,EAAE,MAAM,CAAC;IAChC,SAAgB,SAAS,EAAE,IAAI,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;gBAEzB,KAAK,EAAE,YAAY,GAAG;QAAE,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE;IAQjD,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO;IASrE,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO;CAQ7E"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Message = void 0;
|
|
4
|
+
const uuid_1 = require("uuid");
|
|
4
5
|
const interfaces_1 = require("../../interfaces");
|
|
5
6
|
class Message {
|
|
6
7
|
constructor(props) {
|
|
8
|
+
this.id = props.id || (0, uuid_1.v4)();
|
|
7
9
|
this.role = props.role;
|
|
8
10
|
this.content = props.content;
|
|
9
11
|
this.timestamp = props.timestamp;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Message.js","sourceRoot":"","sources":["../../../src/core/entities/Message.ts"],"names":[],"mappings":";;;AAAA,iDAA2E;
|
|
1
|
+
{"version":3,"file":"Message.js","sourceRoot":"","sources":["../../../src/core/entities/Message.ts"],"names":[],"mappings":";;;AAAA,+BAAoC;AACpC,iDAA2E;AAE3E,MAAa,OAAO;IAOhB,YAAY,KAAqC;QAC7C,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,IAAI,IAAA,SAAM,GAAE,CAAC;QAC/B,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAC7B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;QACjC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC;IACzC,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,OAAe,EAAE,QAA8B;QACvD,OAAO,IAAI,OAAO,CAAC;YACf,IAAI,EAAE,iBAAI,CAAC,IAAI;YACf,OAAO;YACP,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,QAAQ;SACX,CAAC,CAAC;IACP,CAAC;IAED,MAAM,CAAC,SAAS,CAAC,OAAe,EAAE,QAA8B;QAC5D,OAAO,IAAI,OAAO,CAAC;YACf,IAAI,EAAE,iBAAI,CAAC,SAAS;YACpB,OAAO;YACP,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,QAAQ;SACX,CAAC,CAAC;IACP,CAAC;CACJ;AAhCD,0BAgCC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { Buffer } from 'buffer';
|
|
2
|
+
/**
|
|
3
|
+
* Audio Stream Buffer
|
|
4
|
+
*
|
|
5
|
+
* Efficiently accumulates binary audio chunks from a WebSocket stream.
|
|
6
|
+
* Provides methods to append data and flush the buffer for processing (STT).
|
|
7
|
+
*/
|
|
8
|
+
export declare class AudioStreamBuffer {
|
|
9
|
+
private chunks;
|
|
10
|
+
private totalLength;
|
|
11
|
+
/**
|
|
12
|
+
* Append a binary chunk to the stream
|
|
13
|
+
*/
|
|
14
|
+
append(chunk: Buffer): void;
|
|
15
|
+
/**
|
|
16
|
+
* Get current size of buffer in bytes
|
|
17
|
+
*/
|
|
18
|
+
get size(): number;
|
|
19
|
+
/**
|
|
20
|
+
* Clear buffer
|
|
21
|
+
*/
|
|
22
|
+
clear(): void;
|
|
23
|
+
/**
|
|
24
|
+
* Flush the buffer and return the concatenated audio data.
|
|
25
|
+
* Optionally clears the buffer after flushing.
|
|
26
|
+
*/
|
|
27
|
+
flush(clear?: boolean): Buffer;
|
|
28
|
+
/**
|
|
29
|
+
* Output Base64 string (for legacy STT APIs that expect Base64)
|
|
30
|
+
*/
|
|
31
|
+
toBase64(clear?: boolean): string;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=AudioStreamBuffer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AudioStreamBuffer.d.ts","sourceRoot":"","sources":["../../../src/core/utils/AudioStreamBuffer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC;;;;;GAKG;AACH,qBAAa,iBAAiB;IAC1B,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,WAAW,CAAa;IAEhC;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK3B;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;OAEG;IACH,KAAK,IAAI,IAAI;IAKb;;;OAGG;IACH,KAAK,CAAC,KAAK,GAAE,OAAc,GAAG,MAAM;IAUpC;;OAEG;IACH,QAAQ,CAAC,KAAK,GAAE,OAAc,GAAG,MAAM;CAG1C"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AudioStreamBuffer = void 0;
|
|
4
|
+
const buffer_1 = require("buffer");
|
|
5
|
+
/**
|
|
6
|
+
* Audio Stream Buffer
|
|
7
|
+
*
|
|
8
|
+
* Efficiently accumulates binary audio chunks from a WebSocket stream.
|
|
9
|
+
* Provides methods to append data and flush the buffer for processing (STT).
|
|
10
|
+
*/
|
|
11
|
+
class AudioStreamBuffer {
|
|
12
|
+
constructor() {
|
|
13
|
+
this.chunks = [];
|
|
14
|
+
this.totalLength = 0;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Append a binary chunk to the stream
|
|
18
|
+
*/
|
|
19
|
+
append(chunk) {
|
|
20
|
+
this.chunks.push(chunk);
|
|
21
|
+
this.totalLength += chunk.length;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Get current size of buffer in bytes
|
|
25
|
+
*/
|
|
26
|
+
get size() {
|
|
27
|
+
return this.totalLength;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Clear buffer
|
|
31
|
+
*/
|
|
32
|
+
clear() {
|
|
33
|
+
this.chunks = [];
|
|
34
|
+
this.totalLength = 0;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Flush the buffer and return the concatenated audio data.
|
|
38
|
+
* Optionally clears the buffer after flushing.
|
|
39
|
+
*/
|
|
40
|
+
flush(clear = true) {
|
|
41
|
+
const result = buffer_1.Buffer.concat(this.chunks, this.totalLength);
|
|
42
|
+
if (clear) {
|
|
43
|
+
this.clear();
|
|
44
|
+
}
|
|
45
|
+
return result;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Output Base64 string (for legacy STT APIs that expect Base64)
|
|
49
|
+
*/
|
|
50
|
+
toBase64(clear = true) {
|
|
51
|
+
return this.flush(clear).toString('base64');
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
exports.AudioStreamBuffer = AudioStreamBuffer;
|
|
55
|
+
//# sourceMappingURL=AudioStreamBuffer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AudioStreamBuffer.js","sourceRoot":"","sources":["../../../src/core/utils/AudioStreamBuffer.ts"],"names":[],"mappings":";;;AAAA,mCAAgC;AAEhC;;;;;GAKG;AACH,MAAa,iBAAiB;IAA9B;QACY,WAAM,GAAa,EAAE,CAAC;QACtB,gBAAW,GAAW,CAAC,CAAC;IA6CpC,CAAC;IA3CG;;OAEG;IACH,MAAM,CAAC,KAAa;QAChB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,IAAI,CAAC,WAAW,IAAI,KAAK,CAAC,MAAM,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,IAAI,IAAI;QACJ,OAAO,IAAI,CAAC,WAAW,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,KAAK;QACD,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QACjB,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;IACzB,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,QAAiB,IAAI;QACvB,MAAM,MAAM,GAAG,eAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAE5D,IAAI,KAAK,EAAE,CAAC;YACR,IAAI,CAAC,KAAK,EAAE,CAAC;QACjB,CAAC;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,QAAiB,IAAI;QAC1B,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAChD,CAAC;CACJ;AA/CD,8CA+CC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { AudioFormatMetadata } from '../../interfaces';
|
|
2
|
+
/**
|
|
3
|
+
* Audio Conversion Utilities
|
|
4
|
+
*
|
|
5
|
+
* Provides utilities for converting between different audio formats
|
|
6
|
+
* All conversions target LINEAR16 PCM at 16kHz mono for consistency
|
|
7
|
+
*/
|
|
8
|
+
export declare const TARGET_SAMPLE_RATE = 16000;
|
|
9
|
+
export declare const TARGET_CHANNELS = 1;
|
|
10
|
+
export declare const TARGET_BIT_DEPTH = 16;
|
|
11
|
+
/**
|
|
12
|
+
* Convert incoming audio to target PCM format (16kHz, mono, 16-bit)
|
|
13
|
+
*/
|
|
14
|
+
export declare function convertToTargetFormat(audioData: Buffer, formatMetadata?: AudioFormatMetadata): Promise<Buffer>;
|
|
15
|
+
/**
|
|
16
|
+
* Extract PCM from WAV file and resample if needed
|
|
17
|
+
*/
|
|
18
|
+
export declare function extractAndResampleWAV(wavData: Buffer, metadata: AudioFormatMetadata): Buffer;
|
|
19
|
+
/**
|
|
20
|
+
* Convert MP3 to PCM
|
|
21
|
+
* For now, we'll use a simple approach - MP3 decoding without external deps
|
|
22
|
+
* In production, consider using a library like 'lamejs' or 'mp3-parser'
|
|
23
|
+
*/
|
|
24
|
+
export declare function convertMP3ToPCM(mp3Data: Buffer, metadata: AudioFormatMetadata): Buffer;
|
|
25
|
+
/**
|
|
26
|
+
* Resample PCM audio to target sample rate
|
|
27
|
+
*/
|
|
28
|
+
export declare function resamplePCM(pcmData: Buffer, metadata: AudioFormatMetadata): Buffer;
|
|
29
|
+
/**
|
|
30
|
+
* Read a sample from PCM data
|
|
31
|
+
*/
|
|
32
|
+
export declare function readSample(buffer: Buffer, sampleIndex: number, channels: number, bitDepth: number): number;
|
|
33
|
+
/**
|
|
34
|
+
* Write a sample to PCM data
|
|
35
|
+
*/
|
|
36
|
+
export declare function writeSample(buffer: Buffer, sampleIndex: number, value: number, bitDepth: number): void;
|
|
37
|
+
/**
|
|
38
|
+
* Create WAV file from raw PCM data
|
|
39
|
+
*/
|
|
40
|
+
export declare function wrapPCMInWAV(pcmData: Buffer): Buffer;
|
|
41
|
+
//# sourceMappingURL=AudioUtils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AudioUtils.d.ts","sourceRoot":"","sources":["../../../src/core/utils/AudioUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEvD;;;;;GAKG;AAGH,eAAO,MAAM,kBAAkB,QAAQ,CAAC;AACxC,eAAO,MAAM,eAAe,IAAI,CAAC;AACjC,eAAO,MAAM,gBAAgB,KAAK,CAAC;AAEnC;;GAEG;AACH,wBAAsB,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,CAoBpH;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,mBAAmB,GAAG,MAAM,CA6B5F;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,mBAAmB,GAAG,MAAM,CAQtF;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,mBAAmB,GAAG,MAAM,CA4ClF;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAqB1G;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAQtG;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAiCpD"}
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TARGET_BIT_DEPTH = exports.TARGET_CHANNELS = exports.TARGET_SAMPLE_RATE = void 0;
|
|
4
|
+
exports.convertToTargetFormat = convertToTargetFormat;
|
|
5
|
+
exports.extractAndResampleWAV = extractAndResampleWAV;
|
|
6
|
+
exports.convertMP3ToPCM = convertMP3ToPCM;
|
|
7
|
+
exports.resamplePCM = resamplePCM;
|
|
8
|
+
exports.readSample = readSample;
|
|
9
|
+
exports.writeSample = writeSample;
|
|
10
|
+
exports.wrapPCMInWAV = wrapPCMInWAV;
|
|
11
|
+
/**
|
|
12
|
+
* Audio Conversion Utilities
|
|
13
|
+
*
|
|
14
|
+
* Provides utilities for converting between different audio formats
|
|
15
|
+
* All conversions target LINEAR16 PCM at 16kHz mono for consistency
|
|
16
|
+
*/
|
|
17
|
+
// Target audio format for storage
|
|
18
|
+
exports.TARGET_SAMPLE_RATE = 16000;
|
|
19
|
+
exports.TARGET_CHANNELS = 1;
|
|
20
|
+
exports.TARGET_BIT_DEPTH = 16;
|
|
21
|
+
/**
|
|
22
|
+
* Convert incoming audio to target PCM format (16kHz, mono, 16-bit)
|
|
23
|
+
*/
|
|
24
|
+
async function convertToTargetFormat(audioData, formatMetadata) {
|
|
25
|
+
if (!formatMetadata) {
|
|
26
|
+
// Assume WAV format if no metadata provided (backward compatibility)
|
|
27
|
+
formatMetadata = { format: 'wav', sampleRate: 48000, channels: 1, bitDepth: 16 };
|
|
28
|
+
}
|
|
29
|
+
switch (formatMetadata.format) {
|
|
30
|
+
case 'wav':
|
|
31
|
+
return extractAndResampleWAV(audioData, formatMetadata);
|
|
32
|
+
case 'mp3':
|
|
33
|
+
return convertMP3ToPCM(audioData, formatMetadata);
|
|
34
|
+
case 'pcm':
|
|
35
|
+
return resamplePCM(audioData, formatMetadata);
|
|
36
|
+
default:
|
|
37
|
+
console.warn(`[AudioUtils] Unsupported format: ${formatMetadata.format}, storing as-is`);
|
|
38
|
+
return audioData;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Extract PCM from WAV file and resample if needed
|
|
43
|
+
*/
|
|
44
|
+
function extractAndResampleWAV(wavData, metadata) {
|
|
45
|
+
// WAV file structure:
|
|
46
|
+
// - RIFF header (12 bytes)
|
|
47
|
+
// - fmt chunk (24 bytes typically)
|
|
48
|
+
// - data chunk header (8 bytes)
|
|
49
|
+
// - PCM data
|
|
50
|
+
// Find 'data' chunk
|
|
51
|
+
const dataMarker = Buffer.from('data');
|
|
52
|
+
let dataStart = -1;
|
|
53
|
+
for (let i = 0; i < wavData.length - 4; i++) {
|
|
54
|
+
if (wavData.slice(i, i + 4).equals(dataMarker)) {
|
|
55
|
+
// Found 'data' marker, PCM starts 8 bytes after (4 for 'data', 4 for size)
|
|
56
|
+
dataStart = i + 8;
|
|
57
|
+
break;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
if (dataStart === -1) {
|
|
61
|
+
console.warn('[AudioUtils] Could not find data chunk in WAV, using entire buffer');
|
|
62
|
+
dataStart = 44; // Standard WAV header size
|
|
63
|
+
}
|
|
64
|
+
// Extract raw PCM data
|
|
65
|
+
const pcmData = wavData.slice(dataStart);
|
|
66
|
+
// Resample if needed
|
|
67
|
+
return resamplePCM(pcmData, metadata);
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Convert MP3 to PCM
|
|
71
|
+
* For now, we'll use a simple approach - MP3 decoding without external deps
|
|
72
|
+
* In production, consider using a library like 'lamejs' or 'mp3-parser'
|
|
73
|
+
*/
|
|
74
|
+
function convertMP3ToPCM(mp3Data, metadata) {
|
|
75
|
+
// MP3 decoding is complex. For now, we'll log a warning and pass through
|
|
76
|
+
// The user should ideally change the provider output to WAV format
|
|
77
|
+
console.warn('[AudioUtils] MP3 decoding not yet implemented. Audio may not concatenate properly.');
|
|
78
|
+
console.warn('[AudioUtils] Consider changing provider output format to WAV.');
|
|
79
|
+
// Return as-is for now - this will need proper MP3 decoder
|
|
80
|
+
return mp3Data;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Resample PCM audio to target sample rate
|
|
84
|
+
*/
|
|
85
|
+
function resamplePCM(pcmData, metadata) {
|
|
86
|
+
const sourceSampleRate = metadata.sampleRate || exports.TARGET_SAMPLE_RATE;
|
|
87
|
+
const sourceChannels = metadata.channels || exports.TARGET_CHANNELS;
|
|
88
|
+
const sourceBitDepth = metadata.bitDepth || exports.TARGET_BIT_DEPTH;
|
|
89
|
+
// If already in target format, return as-is
|
|
90
|
+
if (sourceSampleRate === exports.TARGET_SAMPLE_RATE &&
|
|
91
|
+
sourceChannels === exports.TARGET_CHANNELS &&
|
|
92
|
+
sourceBitDepth === exports.TARGET_BIT_DEPTH) {
|
|
93
|
+
return pcmData;
|
|
94
|
+
}
|
|
95
|
+
// Calculate bytes per sample
|
|
96
|
+
const sourceBytesPerSample = (sourceBitDepth / 8) * sourceChannels;
|
|
97
|
+
const targetBytesPerSample = (exports.TARGET_BIT_DEPTH / 8) * exports.TARGET_CHANNELS;
|
|
98
|
+
// Calculate number of samples
|
|
99
|
+
const sourceSampleCount = Math.floor(pcmData.length / sourceBytesPerSample);
|
|
100
|
+
const targetSampleCount = Math.floor((sourceSampleCount * exports.TARGET_SAMPLE_RATE) / sourceSampleRate);
|
|
101
|
+
// Create output buffer
|
|
102
|
+
const output = Buffer.alloc(targetSampleCount * targetBytesPerSample);
|
|
103
|
+
// Simple linear interpolation resampling
|
|
104
|
+
for (let i = 0; i < targetSampleCount; i++) {
|
|
105
|
+
const sourceIndex = (i * sourceSampleRate) / exports.TARGET_SAMPLE_RATE;
|
|
106
|
+
const sourceIndexFloor = Math.floor(sourceIndex);
|
|
107
|
+
const sourceIndexCeil = Math.ceil(sourceIndex);
|
|
108
|
+
const fraction = sourceIndex - sourceIndexFloor;
|
|
109
|
+
// Get samples (handle stereo to mono conversion if needed)
|
|
110
|
+
let sample1 = readSample(pcmData, sourceIndexFloor, sourceChannels, sourceBitDepth);
|
|
111
|
+
let sample2 = readSample(pcmData, sourceIndexCeil < sourceSampleCount ? sourceIndexCeil : sourceIndexFloor, sourceChannels, sourceBitDepth);
|
|
112
|
+
// Interpolate
|
|
113
|
+
const interpolated = Math.round(sample1 * (1 - fraction) + sample2 * fraction);
|
|
114
|
+
// Write sample
|
|
115
|
+
writeSample(output, i, interpolated, exports.TARGET_BIT_DEPTH);
|
|
116
|
+
}
|
|
117
|
+
return output;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Read a sample from PCM data
|
|
121
|
+
*/
|
|
122
|
+
function readSample(buffer, sampleIndex, channels, bitDepth) {
|
|
123
|
+
const bytesPerSample = (bitDepth / 8) * channels;
|
|
124
|
+
const offset = sampleIndex * bytesPerSample;
|
|
125
|
+
if (offset >= buffer.length) {
|
|
126
|
+
return 0;
|
|
127
|
+
}
|
|
128
|
+
// Read first channel (mono or left channel for stereo)
|
|
129
|
+
if (bitDepth === 16) {
|
|
130
|
+
return buffer.readInt16LE(offset);
|
|
131
|
+
}
|
|
132
|
+
else if (bitDepth === 8) {
|
|
133
|
+
return buffer.readInt8(offset) * 256; // Scale to 16-bit range
|
|
134
|
+
}
|
|
135
|
+
else if (bitDepth === 24) {
|
|
136
|
+
const byte1 = buffer.readUInt8(offset);
|
|
137
|
+
const byte2 = buffer.readUInt8(offset + 1);
|
|
138
|
+
const byte3 = buffer.readInt8(offset + 2);
|
|
139
|
+
return ((byte3 << 16) | (byte2 << 8) | byte1) >> 8; // Scale down to 16-bit
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
return buffer.readInt16LE(offset);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Write a sample to PCM data
|
|
147
|
+
*/
|
|
148
|
+
function writeSample(buffer, sampleIndex, value, bitDepth) {
|
|
149
|
+
const offset = sampleIndex * (bitDepth / 8);
|
|
150
|
+
if (bitDepth === 16) {
|
|
151
|
+
// Clamp to 16-bit range
|
|
152
|
+
const clamped = Math.max(-32768, Math.min(32767, value));
|
|
153
|
+
buffer.writeInt16LE(clamped, offset);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Create WAV file from raw PCM data
|
|
158
|
+
*/
|
|
159
|
+
function wrapPCMInWAV(pcmData) {
|
|
160
|
+
const sampleRate = exports.TARGET_SAMPLE_RATE;
|
|
161
|
+
const channels = exports.TARGET_CHANNELS;
|
|
162
|
+
const bitDepth = exports.TARGET_BIT_DEPTH;
|
|
163
|
+
const byteRate = sampleRate * channels * (bitDepth / 8);
|
|
164
|
+
const blockAlign = channels * (bitDepth / 8);
|
|
165
|
+
const dataSize = pcmData.length;
|
|
166
|
+
const fileSize = 36 + dataSize;
|
|
167
|
+
// Create WAV header
|
|
168
|
+
const header = Buffer.alloc(44);
|
|
169
|
+
// RIFF chunk descriptor
|
|
170
|
+
header.write('RIFF', 0);
|
|
171
|
+
header.writeUInt32LE(fileSize, 4);
|
|
172
|
+
header.write('WAVE', 8);
|
|
173
|
+
// fmt sub-chunk
|
|
174
|
+
header.write('fmt ', 12);
|
|
175
|
+
header.writeUInt32LE(16, 16); // Subchunk1Size (16 for PCM)
|
|
176
|
+
header.writeUInt16LE(1, 20); // AudioFormat (1 for PCM)
|
|
177
|
+
header.writeUInt16LE(channels, 22);
|
|
178
|
+
header.writeUInt32LE(sampleRate, 24);
|
|
179
|
+
header.writeUInt32LE(byteRate, 28);
|
|
180
|
+
header.writeUInt16LE(blockAlign, 32);
|
|
181
|
+
header.writeUInt16LE(bitDepth, 34);
|
|
182
|
+
// data sub-chunk
|
|
183
|
+
header.write('data', 36);
|
|
184
|
+
header.writeUInt32LE(dataSize, 40);
|
|
185
|
+
// Concatenate header and PCM data
|
|
186
|
+
return Buffer.concat([header, pcmData]);
|
|
187
|
+
}
|
|
188
|
+
//# sourceMappingURL=AudioUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AudioUtils.js","sourceRoot":"","sources":["../../../src/core/utils/AudioUtils.ts"],"names":[],"mappings":";;;AAiBA,sDAoBC;AAKD,sDA6BC;AAOD,0CAQC;AAKD,kCA4CC;AAKD,gCAqBC;AAKD,kCAQC;AAKD,oCAiCC;AAlND;;;;;GAKG;AAEH,kCAAkC;AACrB,QAAA,kBAAkB,GAAG,KAAK,CAAC;AAC3B,QAAA,eAAe,GAAG,CAAC,CAAC;AACpB,QAAA,gBAAgB,GAAG,EAAE,CAAC;AAEnC;;GAEG;AACI,KAAK,UAAU,qBAAqB,CAAC,SAAiB,EAAE,cAAoC;IAC/F,IAAI,CAAC,cAAc,EAAE,CAAC;QAClB,qEAAqE;QACrE,cAAc,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IACrF,CAAC;IAED,QAAQ,cAAc,CAAC,MAAM,EAAE,CAAC;QAC5B,KAAK,KAAK;YACN,OAAO,qBAAqB,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;QAE5D,KAAK,KAAK;YACN,OAAO,eAAe,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;QAEtD,KAAK,KAAK;YACN,OAAO,WAAW,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;QAElD;YACI,OAAO,CAAC,IAAI,CAAC,oCAAoC,cAAc,CAAC,MAAM,iBAAiB,CAAC,CAAC;YACzF,OAAO,SAAS,CAAC;IACzB,CAAC;AACL,CAAC;AAED;;GAEG;AACH,SAAgB,qBAAqB,CAAC,OAAe,EAAE,QAA6B;IAChF,sBAAsB;IACtB,2BAA2B;IAC3B,mCAAmC;IACnC,gCAAgC;IAChC,aAAa;IAEb,oBAAoB;IACpB,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACvC,IAAI,SAAS,GAAG,CAAC,CAAC,CAAC;IAEnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC1C,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;YAC7C,2EAA2E;YAC3E,SAAS,GAAG,CAAC,GAAG,CAAC,CAAC;YAClB,MAAM;QACV,CAAC;IACL,CAAC;IAED,IAAI,SAAS,KAAK,CAAC,CAAC,EAAE,CAAC;QACnB,OAAO,CAAC,IAAI,CAAC,oEAAoE,CAAC,CAAC;QACnF,SAAS,GAAG,EAAE,CAAC,CAAC,2BAA2B;IAC/C,CAAC;IAED,uBAAuB;IACvB,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAEzC,qBAAqB;IACrB,OAAO,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;AAC1C,CAAC;AAED;;;;GAIG;AACH,SAAgB,eAAe,CAAC,OAAe,EAAE,QAA6B;IAC1E,yEAAyE;IACzE,mEAAmE;IACnE,OAAO,CAAC,IAAI,CAAC,oFAAoF,CAAC,CAAC;IACnG,OAAO,CAAC,IAAI,CAAC,+DAA+D,CAAC,CAAC;IAE9E,2DAA2D;IAC3D,OAAO,OAAO,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,SAAgB,WAAW,CAAC,OAAe,EAAE,QAA6B;IACtE,MAAM,gBAAgB,GAAG,QAAQ,CAAC,UAAU,IAAI,0BAAkB,CAAC;IACnE,MAAM,cAAc,GAAG,QAAQ,CAAC,QAAQ,IAAI,uBAAe,CAAC;IAC5D,MAAM,cAAc,GAAG,QAAQ,CAAC,QAAQ,IAAI,wBAAgB,CAAC;IAE7D,4CAA4C;IAC5C,IACI,gBAAgB,KAAK,0BAAkB;QACvC,cAAc,KAAK,uBAAe;QAClC,cAAc,KAAK,wBAAgB,EACrC,CAAC;QACC,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,6BAA6B;IAC7B,MAAM,oBAAoB,GAAG,CAAC,cAAc,GAAG,CAAC,CAAC,GAAG,cAAc,CAAC;IACnE,MAAM,oBAAoB,GAAG,CAAC,wBAAgB,GAAG,CAAC,CAAC,GAAG,uBAAe,CAAC;IAEtE,8BAA8B;IAC9B,MAAM,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,oBAAoB,CAAC,CAAC;IAC5E,MAAM,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,iBAAiB,GAAG,0BAAkB,CAAC,GAAG,gBAAgB,CAAC,CAAC;IAElG,uBAAuB;IACvB,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,iBAAiB,GAAG,oBAAoB,CAAC,CAAC;IAEtE,yCAAyC;IACzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,iBAAiB,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,MAAM,WAAW,GAAG,CAAC,CAAC,GAAG,gBAAgB,CAAC,GAAG,0BAAkB,CAAC;QAChE,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACjD,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC/C,MAAM,QAAQ,GAAG,WAAW,GAAG,gBAAgB,CAAC;QAEhD,2DAA2D;QAC3D,IAAI,OAAO,GAAG,UAAU,CAAC,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,cAAc,CAAC,CAAC;QACpF,IAAI,OAAO,GAAG,UAAU,CAAC,OAAO,EAAE,eAAe,GAAG,iBAAiB,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,gBAAgB,EAAE,cAAc,EAAE,cAAc,CAAC,CAAC;QAE5I,cAAc;QACd,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,GAAG,OAAO,GAAG,QAAQ,CAAC,CAAC;QAE/E,eAAe;QACf,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,YAAY,EAAE,wBAAgB,CAAC,CAAC;IAC3D,CAAC;IAED,OAAO,MAAM,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,SAAgB,UAAU,CAAC,MAAc,EAAE,WAAmB,EAAE,QAAgB,EAAE,QAAgB;IAC9F,MAAM,cAAc,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC;IACjD,MAAM,MAAM,GAAG,WAAW,GAAG,cAAc,CAAC;IAE5C,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAC1B,OAAO,CAAC,CAAC;IACb,CAAC;IAED,uDAAuD;IACvD,IAAI,QAAQ,KAAK,EAAE,EAAE,CAAC;QAClB,OAAO,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;SAAM,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,wBAAwB;IAClE,CAAC;SAAM,IAAI,QAAQ,KAAK,EAAE,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACvC,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC3C,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC1C,OAAO,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,uBAAuB;IAC/E,CAAC;SAAM,CAAC;QACJ,OAAO,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,SAAgB,WAAW,CAAC,MAAc,EAAE,WAAmB,EAAE,KAAa,EAAE,QAAgB;IAC5F,MAAM,MAAM,GAAG,WAAW,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;IAE5C,IAAI,QAAQ,KAAK,EAAE,EAAE,CAAC;QAClB,wBAAwB;QACxB,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;QACzD,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACzC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,SAAgB,YAAY,CAAC,OAAe;IACxC,MAAM,UAAU,GAAG,0BAAkB,CAAC;IACtC,MAAM,QAAQ,GAAG,uBAAe,CAAC;IACjC,MAAM,QAAQ,GAAG,wBAAgB,CAAC;IAClC,MAAM,QAAQ,GAAG,UAAU,GAAG,QAAQ,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;IACxD,MAAM,UAAU,GAAG,QAAQ,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;IAC7C,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;IAChC,MAAM,QAAQ,GAAG,EAAE,GAAG,QAAQ,CAAC;IAE/B,oBAAoB;IACpB,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAEhC,wBAAwB;IACxB,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACxB,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IAClC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAExB,gBAAgB;IAChB,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACzB,MAAM,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,6BAA6B;IAC3D,MAAM,CAAC,aAAa,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAE,0BAA0B;IACxD,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IACnC,MAAM,CAAC,aAAa,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IACrC,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IACnC,MAAM,CAAC,aAAa,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IACrC,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAEnC,iBAAiB;IACjB,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACzB,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAEnC,kCAAkC;IAClC,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAC5C,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { ILLMAdapter } from '../../interfaces';
|
|
2
|
+
/**
|
|
3
|
+
* Language Detection Utility
|
|
4
|
+
*
|
|
5
|
+
* Detects the language of user messages using LLM analysis.
|
|
6
|
+
* Returns ISO 639-1 language codes (e.g., 'en', 'ar', 'fa', 'es').
|
|
7
|
+
*/
|
|
8
|
+
export declare class LanguageDetector {
|
|
9
|
+
private llm;
|
|
10
|
+
private cache;
|
|
11
|
+
constructor(llm: ILLMAdapter);
|
|
12
|
+
/**
|
|
13
|
+
* Detect language from text
|
|
14
|
+
* @param text Text to analyze
|
|
15
|
+
* @param languageHints Optional array of preferred languages (e.g., from supportedLanguages config)
|
|
16
|
+
* @returns ISO 639-1 language code (e.g., 'en', 'ar', 'fa')
|
|
17
|
+
*/
|
|
18
|
+
detectLanguage(text: string, languageHints?: string[]): Promise<string>;
|
|
19
|
+
/**
|
|
20
|
+
* Detect if text uses a specific character set (fast heuristic)
|
|
21
|
+
* This avoids expensive LLM calls when character set hasn't changed
|
|
22
|
+
* @param text Text to analyze
|
|
23
|
+
* @returns Character set type
|
|
24
|
+
*/
|
|
25
|
+
detectCharacterSet(text: string): 'arabic' | 'persian' | 'cjk' | 'cyrillic' | 'latin';
|
|
26
|
+
/**
|
|
27
|
+
* Check if character set changed from previous language
|
|
28
|
+
* @param text Current text
|
|
29
|
+
* @param previousLanguage Previously detected language code
|
|
30
|
+
* @returns True if character set changed, suggesting language might have changed
|
|
31
|
+
*/
|
|
32
|
+
hasCharacterSetChanged(text: string, previousLanguage: string | null): boolean;
|
|
33
|
+
/**
|
|
34
|
+
* Get expected character set for a language code
|
|
35
|
+
*/
|
|
36
|
+
private getCharacterSetForLanguage;
|
|
37
|
+
/**
|
|
38
|
+
* Get language name from code
|
|
39
|
+
* @param code ISO 639-1 language code
|
|
40
|
+
* @returns Human-readable language name
|
|
41
|
+
*/
|
|
42
|
+
getLanguageName(code: string): string;
|
|
43
|
+
/**
|
|
44
|
+
* Clear the cache
|
|
45
|
+
*/
|
|
46
|
+
clearCache(): void;
|
|
47
|
+
/**
|
|
48
|
+
* Generate cache key from text
|
|
49
|
+
*/
|
|
50
|
+
private getCacheKey;
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=LanguageDetector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LanguageDetector.d.ts","sourceRoot":"","sources":["../../../src/core/utils/LanguageDetector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C;;;;;GAKG;AACH,qBAAa,gBAAgB;IAGb,OAAO,CAAC,GAAG;IAFvB,OAAO,CAAC,KAAK,CAAkC;gBAE3B,GAAG,EAAE,WAAW;IAEpC;;;;;OAKG;IACG,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IA2D7E;;;;;OAKG;IACH,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,GAAG,KAAK,GAAG,UAAU,GAAG,OAAO;IAwBrF;;;;;OAKG;IACH,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO;IAS9E;;OAEG;IACH,OAAO,CAAC,0BAA0B;IAclC;;;;OAIG;IACH,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IA2BrC;;OAEG;IACH,UAAU,IAAI,IAAI;IAIlB;;OAEG;IACH,OAAO,CAAC,WAAW;CAItB"}
|