chat-flow-ardymalihi 1.0.2 → 3.0.2
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 → src/adapters}/intent/IntentMatcher.d.ts +16 -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/{adapters → src/adapters}/intent/IntentService.d.ts +4 -5
- package/dist/src/adapters/intent/IntentService.d.ts.map +1 -0
- package/dist/{adapters → src/adapters}/intent/IntentService.js +15 -9
- 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/{intent → src/adapters/intent}/MockIntentService.js +9 -3
- package/dist/src/adapters/intent/MockIntentService.js.map +1 -0
- package/dist/src/adapters/llm/GeminiLLMAdapter.d.ts.map +1 -0
- package/dist/src/adapters/llm/GeminiLLMAdapter.js.map +1 -0
- package/dist/src/adapters/llm/MockLLMAdapter.d.ts.map +1 -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.map +1 -0
- package/dist/{workflow → src/adapters/workflow}/MockWorkflowAdapter.js +12 -1
- 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/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/{config → src/config}/ChatFlowConfig.d.ts +7 -0
- package/dist/src/config/ChatFlowConfig.d.ts.map +1 -0
- package/dist/{config → src/config}/ChatFlowConfig.js +5 -0
- package/dist/src/config/ChatFlowConfig.js.map +1 -0
- package/dist/src/config/index.d.ts.map +1 -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/{core → src/core}/entities/Message.d.ts +5 -2
- package/dist/src/core/entities/Message.d.ts.map +1 -0
- package/dist/{core → src/core}/entities/Message.js +2 -0
- package/dist/src/core/entities/Message.js.map +1 -0
- package/dist/src/core/errors/ChatFlowError.d.ts.map +1 -0
- package/dist/src/core/errors/ChatFlowError.js.map +1 -0
- package/dist/src/core/errors/index.d.ts.map +1 -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.map +1 -0
- package/dist/{demo → src/demo}/cli-demo.js +10 -6
- package/dist/src/demo/cli-demo.js.map +1 -0
- package/dist/src/demo/console-chat.d.ts.map +1 -0
- package/dist/{demo → src/demo}/console-chat.js +10 -6
- package/dist/src/demo/console-chat.js.map +1 -0
- package/dist/{index.d.ts → src/index.d.ts} +10 -5
- package/dist/src/index.d.ts.map +1 -0
- package/dist/{index.js → src/index.js} +25 -8
- 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.map +1 -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.map +1 -0
- package/dist/src/scripts/verify_memory_intents.js.map +1 -0
- package/dist/src/scripts/verify_redis_intents.d.ts.map +1 -0
- package/dist/{scripts → src/scripts}/verify_redis_intents.js +4 -2
- 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/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
- package/dist/adapters/db/InMemorySessionRepository.js +0 -15
- package/dist/adapters/db/RedisSessionRepository.js +0 -41
- package/dist/adapters/intent/IntentMatcher.d.ts.map +0 -1
- package/dist/adapters/intent/IntentMatcher.js +0 -89
- package/dist/adapters/intent/IntentMatcher.js.map +0 -1
- package/dist/adapters/intent/IntentService.d.ts.map +0 -1
- package/dist/adapters/intent/IntentService.js.map +0 -1
- package/dist/adapters/intent/MockIntentAdapter.js +0 -29
- package/dist/adapters/llm/GeminiLLMAdapter.d.ts.map +0 -1
- package/dist/adapters/llm/GeminiLLMAdapter.js.map +0 -1
- package/dist/adapters/llm/MockLLMAdapter.d.ts.map +0 -1
- package/dist/adapters/llm/MockLLMAdapter.js.map +0 -1
- package/dist/adapters/memory/InMemorySessionRepository.js +0 -15
- package/dist/adapters/redis/RedisSessionRepository.js +0 -41
- package/dist/adapters/repository/InMemoryRepository.d.ts +0 -15
- package/dist/adapters/repository/InMemoryRepository.d.ts.map +0 -1
- package/dist/adapters/repository/InMemoryRepository.js +0 -41
- package/dist/adapters/repository/InMemoryRepository.js.map +0 -1
- package/dist/adapters/repository/IntentRepository.d.ts +0 -15
- package/dist/adapters/repository/IntentRepository.d.ts.map +0 -1
- package/dist/adapters/repository/IntentRepository.js +0 -28
- package/dist/adapters/repository/IntentRepository.js.map +0 -1
- package/dist/adapters/repository/RedisRepository.d.ts +0 -16
- package/dist/adapters/repository/RedisRepository.d.ts.map +0 -1
- package/dist/adapters/repository/RedisRepository.js +0 -87
- package/dist/adapters/repository/RedisRepository.js.map +0 -1
- package/dist/adapters/workflow/MockWorkflowAdapter.d.ts.map +0 -1
- package/dist/adapters/workflow/MockWorkflowAdapter.js +0 -162
- package/dist/adapters/workflow/MockWorkflowAdapter.js.map +0 -1
- package/dist/application/ConversationSession.d.ts +0 -23
- package/dist/application/ConversationSession.d.ts.map +0 -1
- package/dist/application/ConversationSession.js +0 -83
- package/dist/application/ConversationSession.js.map +0 -1
- package/dist/application/Message.d.ts +0 -11
- package/dist/application/Message.d.ts.map +0 -1
- package/dist/application/Message.js +0 -30
- package/dist/application/Message.js.map +0 -1
- package/dist/application/Orchestrator.d.ts +0 -18
- package/dist/application/Orchestrator.d.ts.map +0 -1
- package/dist/application/Orchestrator.js +0 -80
- package/dist/application/Orchestrator.js.map +0 -1
- package/dist/application/SessionState.js +0 -2
- package/dist/application/usecases/CreateSession.js +0 -20
- package/dist/application/usecases/HandleUserMessage.js +0 -69
- package/dist/config/ChatFlowConfig.d.ts.map +0 -1
- package/dist/config/ChatFlowConfig.js.map +0 -1
- package/dist/config/index.d.ts.map +0 -1
- package/dist/config/index.js.map +0 -1
- package/dist/core/entities/ConversationSession.d.ts +0 -23
- package/dist/core/entities/ConversationSession.d.ts.map +0 -1
- package/dist/core/entities/ConversationSession.js +0 -83
- package/dist/core/entities/ConversationSession.js.map +0 -1
- package/dist/core/entities/Message.d.ts.map +0 -1
- package/dist/core/entities/Message.js.map +0 -1
- package/dist/core/errors/ChatFlowError.d.ts.map +0 -1
- package/dist/core/errors/ChatFlowError.js.map +0 -1
- package/dist/core/errors/index.d.ts.map +0 -1
- package/dist/core/errors/index.js.map +0 -1
- package/dist/db/InMemoryRepository.d.ts +0 -15
- package/dist/db/InMemoryRepository.d.ts.map +0 -1
- package/dist/db/InMemoryRepository.js +0 -41
- package/dist/db/InMemoryRepository.js.map +0 -1
- package/dist/db/RedisRepository.d.ts +0 -16
- package/dist/db/RedisRepository.d.ts.map +0 -1
- package/dist/db/RedisRepository.js +0 -87
- package/dist/db/RedisRepository.js.map +0 -1
- package/dist/demo/cli-demo.d.ts.map +0 -1
- package/dist/demo/cli-demo.js.map +0 -1
- package/dist/demo/console-chat.d.ts.map +0 -1
- package/dist/demo/console-chat.js.map +0 -1
- package/dist/domain/conversation/ConversationSession.js +0 -82
- package/dist/domain/conversation/Message.js +0 -33
- package/dist/domain/conversation/SessionState.js +0 -10
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/intent/IntentService.d.ts +0 -17
- package/dist/intent/IntentService.d.ts.map +0 -1
- package/dist/intent/IntentService.js +0 -51
- package/dist/intent/IntentService.js.map +0 -1
- package/dist/intent/MockIntentService.d.ts +0 -6
- package/dist/intent/MockIntentService.d.ts.map +0 -1
- package/dist/intent/MockIntentService.js.map +0 -1
- package/dist/interfaces.d.ts +0 -108
- package/dist/interfaces.d.ts.map +0 -1
- package/dist/interfaces.js +0 -18
- package/dist/interfaces.js.map +0 -1
- package/dist/llm/GeminiLLMAdapter.d.ts +0 -10
- package/dist/llm/GeminiLLMAdapter.d.ts.map +0 -1
- package/dist/llm/GeminiLLMAdapter.js +0 -102
- package/dist/llm/GeminiLLMAdapter.js.map +0 -1
- package/dist/llm/MockLLMAdapter.d.ts +0 -5
- package/dist/llm/MockLLMAdapter.d.ts.map +0 -1
- package/dist/llm/MockLLMAdapter.js +0 -31
- package/dist/llm/MockLLMAdapter.js.map +0 -1
- package/dist/orchestrator/Orchestrator.d.ts +0 -18
- package/dist/orchestrator/Orchestrator.d.ts.map +0 -1
- package/dist/orchestrator/Orchestrator.js +0 -80
- package/dist/orchestrator/Orchestrator.js.map +0 -1
- package/dist/ports/IIntentRepository.d.ts +0 -27
- package/dist/ports/IIntentRepository.d.ts.map +0 -1
- package/dist/ports/IIntentRepository.js +0 -3
- package/dist/ports/IIntentRepository.js.map +0 -1
- package/dist/ports/IntentPort.js +0 -2
- package/dist/ports/LLMPort.js +0 -2
- package/dist/ports/SessionRepository.js +0 -2
- package/dist/ports/WorkflowPort.js +0 -2
- package/dist/scripts/debug-redis.d.ts.map +0 -1
- package/dist/scripts/debug-redis.js.map +0 -1
- package/dist/scripts/verify_memory_intents.d.ts.map +0 -1
- package/dist/scripts/verify_memory_intents.js.map +0 -1
- package/dist/scripts/verify_redis_intents.d.ts.map +0 -1
- package/dist/scripts/verify_redis_intents.js.map +0 -1
- package/dist/verify_memory_intents.js +0 -44
- package/dist/verify_redis_intents.js +0 -49
- package/dist/workflow/MockWorkflowAdapter.d.ts +0 -5
- package/dist/workflow/MockWorkflowAdapter.d.ts.map +0 -1
- package/dist/workflow/MockWorkflowAdapter.js.map +0 -1
- /package/dist/{adapters → src/adapters}/llm/GeminiLLMAdapter.d.ts +0 -0
- /package/dist/{adapters → src/adapters}/llm/GeminiLLMAdapter.js +0 -0
- /package/dist/{adapters → src/adapters}/llm/MockLLMAdapter.d.ts +0 -0
- /package/dist/{adapters → src/adapters}/llm/MockLLMAdapter.js +0 -0
- /package/dist/{adapters → src/adapters}/workflow/MockWorkflowAdapter.d.ts +0 -0
- /package/dist/{config → src/config}/index.d.ts +0 -0
- /package/dist/{config → src/config}/index.js +0 -0
- /package/dist/{core → src/core}/errors/ChatFlowError.d.ts +0 -0
- /package/dist/{core → src/core}/errors/ChatFlowError.js +0 -0
- /package/dist/{core → src/core}/errors/index.d.ts +0 -0
- /package/dist/{core → src/core}/errors/index.js +0 -0
- /package/dist/{demo → src/demo}/cli-demo.d.ts +0 -0
- /package/dist/{demo → src/demo}/console-chat.d.ts +0 -0
- /package/dist/{scripts → src/scripts}/debug-redis.d.ts +0 -0
- /package/dist/{scripts → src/scripts}/debug-redis.js +0 -0
- /package/dist/{scripts → src/scripts}/verify_memory_intents.d.ts +0 -0
- /package/dist/{scripts → src/scripts}/verify_memory_intents.js +0 -0
- /package/dist/{scripts → src/scripts}/verify_redis_intents.d.ts +0 -0
|
@@ -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"}
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LanguageDetector = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Language Detection Utility
|
|
6
|
+
*
|
|
7
|
+
* Detects the language of user messages using LLM analysis.
|
|
8
|
+
* Returns ISO 639-1 language codes (e.g., 'en', 'ar', 'fa', 'es').
|
|
9
|
+
*/
|
|
10
|
+
class LanguageDetector {
|
|
11
|
+
constructor(llm) {
|
|
12
|
+
this.llm = llm;
|
|
13
|
+
this.cache = new Map();
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Detect language from text
|
|
17
|
+
* @param text Text to analyze
|
|
18
|
+
* @param languageHints Optional array of preferred languages (e.g., from supportedLanguages config)
|
|
19
|
+
* @returns ISO 639-1 language code (e.g., 'en', 'ar', 'fa')
|
|
20
|
+
*/
|
|
21
|
+
async detectLanguage(text, languageHints) {
|
|
22
|
+
// Check cache first
|
|
23
|
+
const cacheKey = this.getCacheKey(text);
|
|
24
|
+
if (this.cache.has(cacheKey)) {
|
|
25
|
+
return this.cache.get(cacheKey);
|
|
26
|
+
}
|
|
27
|
+
// For very short ambiguous words in non-Latin script, use language hints
|
|
28
|
+
const characterSet = this.detectCharacterSet(text);
|
|
29
|
+
const isAmbiguousShortText = text.trim().split(/\s+/).length <= 2;
|
|
30
|
+
if (isAmbiguousShortText && characterSet !== 'latin' && languageHints && languageHints.length > 0) {
|
|
31
|
+
// Use first supported language for ambiguous cases like "سلام" (Salam)
|
|
32
|
+
const preferredLanguage = languageHints[0];
|
|
33
|
+
const preferredCharSet = this.getCharacterSetForLanguage(preferredLanguage);
|
|
34
|
+
// Only use hint if character sets match
|
|
35
|
+
if (preferredCharSet === characterSet || (characterSet === 'arabic' && preferredCharSet === 'persian') || (characterSet === 'persian' && preferredCharSet === 'arabic')) {
|
|
36
|
+
console.log(`[LanguageDetector] Ambiguous short text detected. Using preferred language: ${preferredLanguage}`);
|
|
37
|
+
this.cache.set(cacheKey, preferredLanguage);
|
|
38
|
+
return preferredLanguage;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
const prompt = `Identify the language of the following text and return ONLY the ISO 639-1 language code (2-letter code like 'en', 'ar', 'fa', 'es', 'fr', etc.).
|
|
42
|
+
|
|
43
|
+
Text: "${text}"
|
|
44
|
+
|
|
45
|
+
Response format: Just the 2-letter code, nothing else.`;
|
|
46
|
+
try {
|
|
47
|
+
const response = await this.llm.generateResponse(prompt, []);
|
|
48
|
+
const content = response.content?.trim() || '';
|
|
49
|
+
const languageCode = content.toLowerCase().substring(0, 2);
|
|
50
|
+
// Validate it's a 2-letter code
|
|
51
|
+
if (!/^[a-z]{2}$/.test(languageCode)) {
|
|
52
|
+
console.warn(`[LanguageDetector] Invalid language code detected: "${languageCode}". Defaulting to 'en'.`);
|
|
53
|
+
return 'en';
|
|
54
|
+
}
|
|
55
|
+
// Cache the result
|
|
56
|
+
this.cache.set(cacheKey, languageCode);
|
|
57
|
+
// Limit cache size to prevent memory issues
|
|
58
|
+
if (this.cache.size > 1000) {
|
|
59
|
+
const firstKey = this.cache.keys().next().value;
|
|
60
|
+
if (firstKey) {
|
|
61
|
+
this.cache.delete(firstKey);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return languageCode;
|
|
65
|
+
}
|
|
66
|
+
catch (error) {
|
|
67
|
+
console.error('[LanguageDetector] Error detecting language:', error);
|
|
68
|
+
return 'en'; // Fallback to English
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Detect if text uses a specific character set (fast heuristic)
|
|
73
|
+
* This avoids expensive LLM calls when character set hasn't changed
|
|
74
|
+
* @param text Text to analyze
|
|
75
|
+
* @returns Character set type
|
|
76
|
+
*/
|
|
77
|
+
detectCharacterSet(text) {
|
|
78
|
+
// Arabic script (includes Persian)
|
|
79
|
+
if (/[\u0600-\u06FF\u0750-\u077F\u08A0-\u08FF]/.test(text)) {
|
|
80
|
+
// Check for Persian-specific characters
|
|
81
|
+
if (/[\u067E\u0686\u0698\u06AF]/.test(text)) {
|
|
82
|
+
return 'persian';
|
|
83
|
+
}
|
|
84
|
+
return 'arabic';
|
|
85
|
+
}
|
|
86
|
+
// CJK (Chinese, Japanese, Korean)
|
|
87
|
+
if (/[\u4E00-\u9FFF\u3040-\u309F\u30A0-\u30FF\uAC00-\uD7AF]/.test(text)) {
|
|
88
|
+
return 'cjk';
|
|
89
|
+
}
|
|
90
|
+
// Cyrillic (Russian, Ukrainian, etc.)
|
|
91
|
+
if (/[\u0400-\u04FF]/.test(text)) {
|
|
92
|
+
return 'cyrillic';
|
|
93
|
+
}
|
|
94
|
+
// Default to Latin
|
|
95
|
+
return 'latin';
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Check if character set changed from previous language
|
|
99
|
+
* @param text Current text
|
|
100
|
+
* @param previousLanguage Previously detected language code
|
|
101
|
+
* @returns True if character set changed, suggesting language might have changed
|
|
102
|
+
*/
|
|
103
|
+
hasCharacterSetChanged(text, previousLanguage) {
|
|
104
|
+
if (!previousLanguage)
|
|
105
|
+
return true; // First message
|
|
106
|
+
const currentCharSet = this.detectCharacterSet(text);
|
|
107
|
+
const previousCharSet = this.getCharacterSetForLanguage(previousLanguage);
|
|
108
|
+
return currentCharSet !== previousCharSet;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Get expected character set for a language code
|
|
112
|
+
*/
|
|
113
|
+
getCharacterSetForLanguage(languageCode) {
|
|
114
|
+
const arabicLangs = ['ar'];
|
|
115
|
+
const persianLangs = ['fa'];
|
|
116
|
+
const cjkLangs = ['zh', 'ja', 'ko'];
|
|
117
|
+
const cyrillicLangs = ['ru', 'uk', 'bg'];
|
|
118
|
+
if (arabicLangs.includes(languageCode))
|
|
119
|
+
return 'arabic';
|
|
120
|
+
if (persianLangs.includes(languageCode))
|
|
121
|
+
return 'persian';
|
|
122
|
+
if (cjkLangs.includes(languageCode))
|
|
123
|
+
return 'cjk';
|
|
124
|
+
if (cyrillicLangs.includes(languageCode))
|
|
125
|
+
return 'cyrillic';
|
|
126
|
+
return 'latin';
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Get language name from code
|
|
130
|
+
* @param code ISO 639-1 language code
|
|
131
|
+
* @returns Human-readable language name
|
|
132
|
+
*/
|
|
133
|
+
getLanguageName(code) {
|
|
134
|
+
const languageNames = {
|
|
135
|
+
'en': 'English',
|
|
136
|
+
'ar': 'Arabic',
|
|
137
|
+
'fa': 'Persian',
|
|
138
|
+
'es': 'Spanish',
|
|
139
|
+
'fr': 'French',
|
|
140
|
+
'de': 'German',
|
|
141
|
+
'it': 'Italian',
|
|
142
|
+
'pt': 'Portuguese',
|
|
143
|
+
'ru': 'Russian',
|
|
144
|
+
'zh': 'Chinese',
|
|
145
|
+
'ja': 'Japanese',
|
|
146
|
+
'ko': 'Korean',
|
|
147
|
+
'hi': 'Hindi',
|
|
148
|
+
'tr': 'Turkish',
|
|
149
|
+
'nl': 'Dutch',
|
|
150
|
+
'pl': 'Polish',
|
|
151
|
+
'sv': 'Swedish',
|
|
152
|
+
'da': 'Danish',
|
|
153
|
+
'fi': 'Finnish',
|
|
154
|
+
'no': 'Norwegian'
|
|
155
|
+
};
|
|
156
|
+
return languageNames[code.toLowerCase()] || code.toUpperCase();
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Clear the cache
|
|
160
|
+
*/
|
|
161
|
+
clearCache() {
|
|
162
|
+
this.cache.clear();
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Generate cache key from text
|
|
166
|
+
*/
|
|
167
|
+
getCacheKey(text) {
|
|
168
|
+
// Use first 100 characters and normalize
|
|
169
|
+
return text.substring(0, 100).trim().toLowerCase();
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
exports.LanguageDetector = LanguageDetector;
|
|
173
|
+
//# sourceMappingURL=LanguageDetector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LanguageDetector.js","sourceRoot":"","sources":["../../../../src/core/utils/LanguageDetector.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-demo.d.ts","sourceRoot":"","sources":["../../../src/demo/cli-demo.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAC"}
|
|
@@ -6,10 +6,12 @@ const InMemoryRepository_1 = require("../adapters/repository/InMemoryRepository"
|
|
|
6
6
|
const RedisRepository_1 = require("../adapters/repository/RedisRepository");
|
|
7
7
|
const MockLLMAdapter_1 = require("../adapters/llm/MockLLMAdapter");
|
|
8
8
|
const GeminiLLMAdapter_1 = require("../adapters/llm/GeminiLLMAdapter");
|
|
9
|
-
const MockIntentService_1 = require("../intent/MockIntentService");
|
|
9
|
+
const MockIntentService_1 = require("../adapters/intent/MockIntentService");
|
|
10
10
|
const MockWorkflowAdapter_1 = require("../adapters/workflow/MockWorkflowAdapter");
|
|
11
|
-
const IntentService_1 = require("../intent/IntentService");
|
|
11
|
+
const IntentService_1 = require("../adapters/intent/IntentService");
|
|
12
|
+
const IntentMatcher_1 = require("../adapters/intent/IntentMatcher");
|
|
12
13
|
const interfaces_1 = require("../interfaces");
|
|
14
|
+
const WebhookService_1 = require("../adapters/webhook/WebhookService");
|
|
13
15
|
const uuid_1 = require("uuid");
|
|
14
16
|
async function runDemo() {
|
|
15
17
|
console.log('--- Chat-Flow Demo Start ---');
|
|
@@ -40,7 +42,8 @@ async function runDemo() {
|
|
|
40
42
|
// Only if we have Redis AND Gemini (for embeddings)
|
|
41
43
|
if (sessionRepo instanceof RedisRepository_1.RedisRepository && llm instanceof GeminiLLMAdapter_1.GeminiLLMAdapter) {
|
|
42
44
|
console.log(`[Init] Using Redis Repository for Real Intent Detection...`);
|
|
43
|
-
const
|
|
45
|
+
const intentMatcher = new IntentMatcher_1.IntentMatcher(llm);
|
|
46
|
+
const intentSvc = new IntentService_1.IntentService(sessionRepo, intentMatcher);
|
|
44
47
|
// IntentService now IS the intent adapter (implements IIntentService)
|
|
45
48
|
intentAdapter = intentSvc;
|
|
46
49
|
// Seed Intents
|
|
@@ -84,8 +87,9 @@ async function runDemo() {
|
|
|
84
87
|
intentAdapter = new MockIntentService_1.MockIntentService();
|
|
85
88
|
}
|
|
86
89
|
const workflow = new MockWorkflowAdapter_1.MockWorkflowAdapter();
|
|
90
|
+
const webhookService = new WebhookService_1.WebhookService();
|
|
87
91
|
// 2. Initialize Orchestrator
|
|
88
|
-
const orchestrator = new Orchestrator_1.Orchestrator(sessionRepo, llm, intentAdapter, workflow);
|
|
92
|
+
const orchestrator = new Orchestrator_1.Orchestrator(sessionRepo, llm, intentAdapter, workflow, webhookService);
|
|
89
93
|
// 3. Create Session
|
|
90
94
|
const AIR_TRAVEL_PROMPT = `
|
|
91
95
|
You are 'SkyBot', a professional and friendly AI travel agent for 'AirConnect'.
|
|
@@ -105,7 +109,7 @@ IMPORTANT:
|
|
|
105
109
|
const runTurn = async (input) => {
|
|
106
110
|
console.log(`[User]: "${input}"`);
|
|
107
111
|
console.log(`... Processing ...`);
|
|
108
|
-
const { messages, metadata } = await orchestrator.
|
|
112
|
+
const { messages, metadata } = await orchestrator.processMessage(session.sessionId, input);
|
|
109
113
|
// Show metadata if available (similar to console-chat logic)
|
|
110
114
|
if (metadata?.intent) {
|
|
111
115
|
console.log(`[Meta] Intent Detected: ${metadata.intent} (Conf: ${metadata.confidence})`);
|
|
@@ -113,7 +117,7 @@ IMPORTANT:
|
|
|
113
117
|
if (metadata?.workflowExecuted) {
|
|
114
118
|
console.log(`[Meta] Workflow Executed: ${metadata.workflowExecuted}`);
|
|
115
119
|
}
|
|
116
|
-
messages.forEach(msg => {
|
|
120
|
+
messages.forEach((msg) => {
|
|
117
121
|
if (msg.role === interfaces_1.Role.ASSISTANT) {
|
|
118
122
|
console.log(`[Assistant]: "${msg.content}"`);
|
|
119
123
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-demo.js","sourceRoot":"","sources":["../../../src/demo/cli-demo.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"console-chat.d.ts","sourceRoot":"","sources":["../../../src/demo/console-chat.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAC"}
|
|
@@ -40,9 +40,11 @@ const InMemoryRepository_1 = require("../adapters/repository/InMemoryRepository"
|
|
|
40
40
|
const RedisRepository_1 = require("../adapters/repository/RedisRepository");
|
|
41
41
|
const GeminiLLMAdapter_1 = require("../adapters/llm/GeminiLLMAdapter");
|
|
42
42
|
const MockLLMAdapter_1 = require("../adapters/llm/MockLLMAdapter");
|
|
43
|
-
const IntentService_1 = require("../intent/IntentService");
|
|
44
|
-
const
|
|
43
|
+
const IntentService_1 = require("../adapters/intent/IntentService");
|
|
44
|
+
const IntentMatcher_1 = require("../adapters/intent/IntentMatcher");
|
|
45
|
+
const MockIntentService_1 = require("../adapters/intent/MockIntentService");
|
|
45
46
|
const MockWorkflowAdapter_1 = require("../adapters/workflow/MockWorkflowAdapter");
|
|
47
|
+
const WebhookService_1 = require("../adapters/webhook/WebhookService");
|
|
46
48
|
const interfaces_1 = require("../interfaces");
|
|
47
49
|
const uuid_1 = require("uuid");
|
|
48
50
|
const AIR_TRAVEL_PROMPT = `
|
|
@@ -81,14 +83,16 @@ async function startChat() {
|
|
|
81
83
|
}
|
|
82
84
|
if (sessionRepo instanceof RedisRepository_1.RedisRepository && llm instanceof GeminiLLMAdapter_1.GeminiLLMAdapter) {
|
|
83
85
|
console.log(`[Init] Using Real Intent Detection`);
|
|
84
|
-
|
|
86
|
+
const intentMatcher = new IntentMatcher_1.IntentMatcher(llm);
|
|
87
|
+
intentAdapter = new IntentService_1.IntentService(sessionRepo, intentMatcher);
|
|
85
88
|
}
|
|
86
89
|
else {
|
|
87
90
|
console.log(`[Init] Using Mock Intent Adapter`);
|
|
88
91
|
intentAdapter = new MockIntentService_1.MockIntentService();
|
|
89
92
|
}
|
|
90
93
|
const workflow = new MockWorkflowAdapter_1.MockWorkflowAdapter();
|
|
91
|
-
const
|
|
94
|
+
const webhookService = new WebhookService_1.WebhookService();
|
|
95
|
+
const orchestrator = new Orchestrator_1.Orchestrator(sessionRepo, llm, intentAdapter, workflow, webhookService);
|
|
92
96
|
// 2. Create Session
|
|
93
97
|
const sessionId = (0, uuid_1.v4)();
|
|
94
98
|
const session = await orchestrator.createSession(sessionId, 'TEXT', AIR_TRAVEL_PROMPT);
|
|
@@ -113,7 +117,7 @@ async function startChat() {
|
|
|
113
117
|
}
|
|
114
118
|
if (input) {
|
|
115
119
|
try {
|
|
116
|
-
const { messages, metadata } = await orchestrator.
|
|
120
|
+
const { messages, metadata } = await orchestrator.processMessage(session.sessionId, input);
|
|
117
121
|
// Show Metadata
|
|
118
122
|
if (metadata?.intent) {
|
|
119
123
|
console.log(`[Meta] Intent Detected: ${metadata.intent} (Conf: ${metadata.confidence})`);
|
|
@@ -121,7 +125,7 @@ async function startChat() {
|
|
|
121
125
|
if (metadata?.workflowExecuted) {
|
|
122
126
|
console.log(`[Meta] Workflow Executed: ${metadata.workflowExecuted}`);
|
|
123
127
|
}
|
|
124
|
-
messages.forEach(msg => {
|
|
128
|
+
messages.forEach((msg) => {
|
|
125
129
|
if (msg.role === interfaces_1.Role.ASSISTANT) {
|
|
126
130
|
console.log(`[Bot]: ${msg.content}`);
|
|
127
131
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"console-chat.js","sourceRoot":"","sources":["../../../src/demo/console-chat.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,15 +8,20 @@ export { ConversationSession } from './core/entities/ConversationSession';
|
|
|
8
8
|
export { Message } from './core/entities/Message';
|
|
9
9
|
export * from './core/errors';
|
|
10
10
|
export { ChatFlowConfig, DEFAULT_CONFIG, mergeConfig } from './config';
|
|
11
|
-
export { IIntentRepository } from './ports/IIntentRepository';
|
|
12
11
|
export { InMemoryRepository } from './adapters/repository/InMemoryRepository';
|
|
13
12
|
export { RedisRepository } from './adapters/repository/RedisRepository';
|
|
14
|
-
export {
|
|
15
|
-
export { IntentService } from './intent/IntentService';
|
|
16
|
-
export { MockIntentService } from './intent/MockIntentService';
|
|
17
|
-
export { IntentService as RefactoredIntentService } from './adapters/intent/IntentService';
|
|
13
|
+
export { SupabaseRepository } from './adapters/repository/SupabaseRepository';
|
|
14
|
+
export { IntentService } from './adapters/intent/IntentService';
|
|
15
|
+
export { MockIntentService } from './adapters/intent/MockIntentService';
|
|
18
16
|
export { IntentMatcher } from './adapters/intent/IntentMatcher';
|
|
19
17
|
export { GeminiLLMAdapter } from './adapters/llm/GeminiLLMAdapter';
|
|
20
18
|
export { MockLLMAdapter } from './adapters/llm/MockLLMAdapter';
|
|
19
|
+
export { OllamaLLMAdapter } from './adapters/llm/OllamaLLMAdapter';
|
|
21
20
|
export { MockWorkflowAdapter } from './adapters/workflow/MockWorkflowAdapter';
|
|
21
|
+
export { WorkflowAdapter } from './adapters/workflow/WorkflowAdapter';
|
|
22
|
+
export { ConsoleLogger } from './adapters/logger/ConsoleLogger';
|
|
23
|
+
export { GoogleVoiceAdapter } from './adapters/voice/GoogleVoiceAdapter';
|
|
24
|
+
export { WebhookService } from './adapters/webhook/WebhookService';
|
|
25
|
+
export { RedisAudioStorageAdapter } from './adapters/storage/RedisAudioStorageAdapter';
|
|
26
|
+
export { ChatFlowWebSocketServer } from './server/ChatFlowWebSocketServer';
|
|
22
27
|
//# sourceMappingURL=index.d.ts.map
|