chat-flow-ardymalihi 3.0.0 → 3.0.3
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/package.json +9 -1
- package/dist/adapters/db/InMemorySessionRepository.js +0 -15
- package/dist/adapters/db/RedisSessionRepository.js +0 -41
- package/dist/adapters/intent/IntentMatcher.d.ts +0 -41
- package/dist/adapters/intent/IntentMatcher.d.ts.map +0 -1
- package/dist/adapters/intent/IntentMatcher.js +0 -167
- package/dist/adapters/intent/IntentMatcher.js.map +0 -1
- package/dist/adapters/intent/IntentService.d.ts +0 -26
- package/dist/adapters/intent/IntentService.d.ts.map +0 -1
- package/dist/adapters/intent/IntentService.js +0 -65
- package/dist/adapters/intent/IntentService.js.map +0 -1
- package/dist/adapters/intent/MockIntentAdapter.js +0 -29
- package/dist/adapters/intent/MockIntentService.d.ts +0 -7
- package/dist/adapters/intent/MockIntentService.d.ts.map +0 -1
- package/dist/adapters/intent/MockIntentService.js +0 -36
- package/dist/adapters/intent/MockIntentService.js.map +0 -1
- package/dist/adapters/llm/GeminiLLMAdapter.d.ts +0 -10
- package/dist/adapters/llm/GeminiLLMAdapter.d.ts.map +0 -1
- package/dist/adapters/llm/GeminiLLMAdapter.js +0 -102
- package/dist/adapters/llm/GeminiLLMAdapter.js.map +0 -1
- package/dist/adapters/llm/MockLLMAdapter.d.ts +0 -5
- package/dist/adapters/llm/MockLLMAdapter.d.ts.map +0 -1
- package/dist/adapters/llm/MockLLMAdapter.js +0 -31
- package/dist/adapters/llm/MockLLMAdapter.js.map +0 -1
- package/dist/adapters/llm/OllamaLLMAdapter.d.ts +0 -9
- package/dist/adapters/llm/OllamaLLMAdapter.d.ts.map +0 -1
- package/dist/adapters/llm/OllamaLLMAdapter.js +0 -74
- package/dist/adapters/llm/OllamaLLMAdapter.js.map +0 -1
- package/dist/adapters/logger/ConsoleLogger.d.ts +0 -12
- package/dist/adapters/logger/ConsoleLogger.d.ts.map +0 -1
- package/dist/adapters/logger/ConsoleLogger.js +0 -37
- package/dist/adapters/logger/ConsoleLogger.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 -46
- package/dist/adapters/repository/InMemoryRepository.d.ts.map +0 -1
- package/dist/adapters/repository/InMemoryRepository.js +0 -235
- 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 -63
- package/dist/adapters/repository/RedisRepository.d.ts.map +0 -1
- package/dist/adapters/repository/RedisRepository.js +0 -586
- package/dist/adapters/repository/RedisRepository.js.map +0 -1
- package/dist/adapters/storage/RedisAudioStorageAdapter.d.ts +0 -33
- package/dist/adapters/storage/RedisAudioStorageAdapter.d.ts.map +0 -1
- package/dist/adapters/storage/RedisAudioStorageAdapter.js +0 -121
- package/dist/adapters/storage/RedisAudioStorageAdapter.js.map +0 -1
- package/dist/adapters/storage/RedisBufferStorageAdapter.d.ts +0 -14
- package/dist/adapters/storage/RedisBufferStorageAdapter.d.ts.map +0 -1
- package/dist/adapters/storage/RedisBufferStorageAdapter.js +0 -94
- package/dist/adapters/storage/RedisBufferStorageAdapter.js.map +0 -1
- package/dist/adapters/voice/ElevenLabsVoiceAdapter.d.ts +0 -29
- package/dist/adapters/voice/ElevenLabsVoiceAdapter.d.ts.map +0 -1
- package/dist/adapters/voice/ElevenLabsVoiceAdapter.js +0 -75
- package/dist/adapters/voice/ElevenLabsVoiceAdapter.js.map +0 -1
- package/dist/adapters/voice/GeminiMultimodalLiveAdapter.d.ts +0 -77
- package/dist/adapters/voice/GeminiMultimodalLiveAdapter.d.ts.map +0 -1
- package/dist/adapters/voice/GeminiMultimodalLiveAdapter.js +0 -187
- package/dist/adapters/voice/GeminiMultimodalLiveAdapter.js.map +0 -1
- package/dist/adapters/voice/GeminiVoiceAdapter.d.ts +0 -36
- package/dist/adapters/voice/GeminiVoiceAdapter.d.ts.map +0 -1
- package/dist/adapters/voice/GeminiVoiceAdapter.js +0 -134
- package/dist/adapters/voice/GeminiVoiceAdapter.js.map +0 -1
- package/dist/adapters/voice/GoogleTTSAdapter.d.ts +0 -61
- package/dist/adapters/voice/GoogleTTSAdapter.d.ts.map +0 -1
- package/dist/adapters/voice/GoogleTTSAdapter.js +0 -165
- package/dist/adapters/voice/GoogleTTSAdapter.js.map +0 -1
- package/dist/adapters/voice/GoogleVoiceAdapter.d.ts +0 -33
- package/dist/adapters/voice/GoogleVoiceAdapter.d.ts.map +0 -1
- package/dist/adapters/voice/GoogleVoiceAdapter.js +0 -155
- package/dist/adapters/voice/GoogleVoiceAdapter.js.map +0 -1
- package/dist/adapters/voice/HybridVoiceAdapter.d.ts +0 -54
- package/dist/adapters/voice/HybridVoiceAdapter.d.ts.map +0 -1
- package/dist/adapters/voice/HybridVoiceAdapter.js +0 -102
- package/dist/adapters/voice/HybridVoiceAdapter.js.map +0 -1
- package/dist/adapters/voice/LanguageVoiceMapper.d.ts +0 -60
- package/dist/adapters/voice/LanguageVoiceMapper.d.ts.map +0 -1
- package/dist/adapters/voice/LanguageVoiceMapper.js +0 -130
- package/dist/adapters/voice/LanguageVoiceMapper.js.map +0 -1
- package/dist/adapters/voice/VertexVoiceAdapter.d.ts +0 -32
- package/dist/adapters/voice/VertexVoiceAdapter.d.ts.map +0 -1
- package/dist/adapters/voice/VertexVoiceAdapter.js +0 -179
- package/dist/adapters/voice/VertexVoiceAdapter.js.map +0 -1
- package/dist/adapters/webhook/WebhookService.d.ts +0 -47
- package/dist/adapters/webhook/WebhookService.d.ts.map +0 -1
- package/dist/adapters/webhook/WebhookService.js +0 -265
- package/dist/adapters/webhook/WebhookService.js.map +0 -1
- package/dist/adapters/workflow/MockWorkflowAdapter.d.ts +0 -5
- package/dist/adapters/workflow/MockWorkflowAdapter.d.ts.map +0 -1
- package/dist/adapters/workflow/MockWorkflowAdapter.js +0 -173
- package/dist/adapters/workflow/MockWorkflowAdapter.js.map +0 -1
- package/dist/adapters/workflow/WorkflowAdapter.d.ts +0 -55
- package/dist/adapters/workflow/WorkflowAdapter.d.ts.map +0 -1
- package/dist/adapters/workflow/WorkflowAdapter.js +0 -242
- package/dist/adapters/workflow/WorkflowAdapter.js.map +0 -1
- package/dist/adapters/workflow/actions/getSupportHoursAction.d.ts +0 -10
- package/dist/adapters/workflow/actions/getSupportHoursAction.d.ts.map +0 -1
- package/dist/adapters/workflow/actions/getSupportHoursAction.js +0 -33
- package/dist/adapters/workflow/actions/getSupportHoursAction.js.map +0 -1
- package/dist/adapters/workflow/actions/index.d.ts +0 -6
- package/dist/adapters/workflow/actions/index.d.ts.map +0 -1
- package/dist/adapters/workflow/actions/index.js +0 -22
- package/dist/adapters/workflow/actions/index.js.map +0 -1
- package/dist/adapters/workflow/actions/pushOutputResultAction.d.ts +0 -11
- package/dist/adapters/workflow/actions/pushOutputResultAction.d.ts.map +0 -1
- package/dist/adapters/workflow/actions/pushOutputResultAction.js +0 -31
- package/dist/adapters/workflow/actions/pushOutputResultAction.js.map +0 -1
- package/dist/adapters/workflow/actions/setWorkflowMessageAction.d.ts +0 -12
- package/dist/adapters/workflow/actions/setWorkflowMessageAction.d.ts.map +0 -1
- package/dist/adapters/workflow/actions/setWorkflowMessageAction.js +0 -32
- package/dist/adapters/workflow/actions/setWorkflowMessageAction.js.map +0 -1
- package/dist/adapters/workflow/engine/constants.d.ts +0 -3
- package/dist/adapters/workflow/engine/constants.d.ts.map +0 -1
- package/dist/adapters/workflow/engine/constants.js +0 -6
- package/dist/adapters/workflow/engine/constants.js.map +0 -1
- package/dist/adapters/workflow/engine/engine.d.ts +0 -32
- package/dist/adapters/workflow/engine/engine.d.ts.map +0 -1
- package/dist/adapters/workflow/engine/engine.js +0 -623
- package/dist/adapters/workflow/engine/engine.js.map +0 -1
- package/dist/adapters/workflow/engine/event-registry.d.ts +0 -12
- package/dist/adapters/workflow/engine/event-registry.d.ts.map +0 -1
- package/dist/adapters/workflow/engine/event-registry.js +0 -33
- package/dist/adapters/workflow/engine/event-registry.js.map +0 -1
- package/dist/adapters/workflow/engine/interpolator.d.ts +0 -11
- package/dist/adapters/workflow/engine/interpolator.d.ts.map +0 -1
- package/dist/adapters/workflow/engine/interpolator.js +0 -93
- package/dist/adapters/workflow/engine/interpolator.js.map +0 -1
- package/dist/adapters/workflow/engine/registry.d.ts +0 -12
- package/dist/adapters/workflow/engine/registry.d.ts.map +0 -1
- package/dist/adapters/workflow/engine/registry.js +0 -39
- package/dist/adapters/workflow/engine/registry.js.map +0 -1
- package/dist/adapters/workflow/engine/template-registry.d.ts +0 -60
- package/dist/adapters/workflow/engine/template-registry.d.ts.map +0 -1
- package/dist/adapters/workflow/engine/template-registry.js +0 -92
- package/dist/adapters/workflow/engine/template-registry.js.map +0 -1
- package/dist/adapters/workflow/engine/types.d.ts +0 -182
- package/dist/adapters/workflow/engine/types.d.ts.map +0 -1
- package/dist/adapters/workflow/engine/types.js +0 -3
- package/dist/adapters/workflow/engine/types.js.map +0 -1
- package/dist/adapters/workflow/engine/utils/format-utils.d.ts +0 -43
- package/dist/adapters/workflow/engine/utils/format-utils.d.ts.map +0 -1
- package/dist/adapters/workflow/engine/utils/format-utils.js +0 -137
- package/dist/adapters/workflow/engine/utils/format-utils.js.map +0 -1
- package/dist/adapters/workflow/engine/utils/layout-calculator.d.ts +0 -7
- package/dist/adapters/workflow/engine/utils/layout-calculator.d.ts.map +0 -1
- package/dist/adapters/workflow/engine/utils/layout-calculator.js +0 -87
- package/dist/adapters/workflow/engine/utils/layout-calculator.js.map +0 -1
- package/dist/adapters/workflow/engine/utils/slugify.d.ts +0 -2
- package/dist/adapters/workflow/engine/utils/slugify.d.ts.map +0 -1
- package/dist/adapters/workflow/engine/utils/slugify.js +0 -41
- package/dist/adapters/workflow/engine/utils/slugify.js.map +0 -1
- package/dist/adapters/workflow/engine/validator.d.ts +0 -9
- package/dist/adapters/workflow/engine/validator.d.ts.map +0 -1
- package/dist/adapters/workflow/engine/validator.js +0 -425
- package/dist/adapters/workflow/engine/validator.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 +0 -66
- package/dist/config/ChatFlowConfig.d.ts.map +0 -1
- package/dist/config/ChatFlowConfig.js +0 -54
- package/dist/config/ChatFlowConfig.js.map +0 -1
- package/dist/config/index.d.ts +0 -2
- package/dist/config/index.d.ts.map +0 -1
- package/dist/config/index.js +0 -7
- package/dist/config/index.js.map +0 -1
- package/dist/core/entities/ConversationSession.d.ts +0 -58
- package/dist/core/entities/ConversationSession.d.ts.map +0 -1
- package/dist/core/entities/ConversationSession.js +0 -160
- package/dist/core/entities/ConversationSession.js.map +0 -1
- package/dist/core/entities/Message.d.ts +0 -14
- package/dist/core/entities/Message.d.ts.map +0 -1
- package/dist/core/entities/Message.js +0 -32
- package/dist/core/entities/Message.js.map +0 -1
- package/dist/core/errors/ChatFlowError.d.ts +0 -71
- package/dist/core/errors/ChatFlowError.d.ts.map +0 -1
- package/dist/core/errors/ChatFlowError.js +0 -108
- package/dist/core/errors/ChatFlowError.js.map +0 -1
- package/dist/core/errors/index.d.ts +0 -2
- package/dist/core/errors/index.d.ts.map +0 -1
- package/dist/core/errors/index.js +0 -15
- package/dist/core/errors/index.js.map +0 -1
- package/dist/core/utils/AudioStreamBuffer.d.ts +0 -33
- package/dist/core/utils/AudioStreamBuffer.d.ts.map +0 -1
- package/dist/core/utils/AudioStreamBuffer.js +0 -55
- package/dist/core/utils/AudioStreamBuffer.js.map +0 -1
- package/dist/core/utils/AudioUtils.d.ts +0 -41
- package/dist/core/utils/AudioUtils.d.ts.map +0 -1
- package/dist/core/utils/AudioUtils.js +0 -188
- package/dist/core/utils/AudioUtils.js.map +0 -1
- package/dist/core/utils/LanguageDetector.d.ts +0 -52
- package/dist/core/utils/LanguageDetector.d.ts.map +0 -1
- package/dist/core/utils/LanguageDetector.js +0 -173
- package/dist/core/utils/LanguageDetector.js.map +0 -1
- package/dist/core/utils/WavUtils.d.ts +0 -14
- package/dist/core/utils/WavUtils.d.ts.map +0 -1
- package/dist/core/utils/WavUtils.js +0 -37
- package/dist/core/utils/WavUtils.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 +0 -2
- package/dist/demo/cli-demo.d.ts.map +0 -1
- package/dist/demo/cli-demo.js +0 -146
- package/dist/demo/cli-demo.js.map +0 -1
- package/dist/demo/console-chat.d.ts +0 -2
- package/dist/demo/console-chat.d.ts.map +0 -1
- package/dist/demo/console-chat.js +0 -148
- package/dist/demo/console-chat.js.map +0 -1
- package/dist/demo/interactive-voice-chat.d.ts +0 -2
- package/dist/demo/interactive-voice-chat.d.ts.map +0 -1
- package/dist/demo/interactive-voice-chat.js +0 -180
- package/dist/demo/interactive-voice-chat.js.map +0 -1
- package/dist/demo/voice-demo.d.ts +0 -2
- package/dist/demo/voice-demo.d.ts.map +0 -1
- package/dist/demo/voice-demo.js +0 -188
- package/dist/demo/voice-demo.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 +0 -26
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -76
- 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 -57
- package/dist/intent/IntentService.js.map +0 -1
- package/dist/intent/MockIntentService.d.ts +0 -7
- package/dist/intent/MockIntentService.d.ts.map +0 -1
- package/dist/intent/MockIntentService.js +0 -36
- package/dist/intent/MockIntentService.js.map +0 -1
- package/dist/interfaces.d.ts +0 -653
- package/dist/interfaces.d.ts.map +0 -1
- package/dist/interfaces.js +0 -36
- 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 -62
- package/dist/orchestrator/Orchestrator.d.ts.map +0 -1
- package/dist/orchestrator/Orchestrator.js +0 -697
- 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 +0 -2
- package/dist/scripts/debug-redis.d.ts.map +0 -1
- package/dist/scripts/debug-redis.js +0 -55
- package/dist/scripts/debug-redis.js.map +0 -1
- package/dist/scripts/seed-collaborative-intents.d.ts +0 -2
- package/dist/scripts/seed-collaborative-intents.d.ts.map +0 -1
- package/dist/scripts/seed-collaborative-intents.js +0 -90
- package/dist/scripts/seed-collaborative-intents.js.map +0 -1
- package/dist/scripts/test-isolated-config.d.ts +0 -2
- package/dist/scripts/test-isolated-config.d.ts.map +0 -1
- package/dist/scripts/test-isolated-config.js +0 -80
- package/dist/scripts/test-isolated-config.js.map +0 -1
- package/dist/scripts/verify_memory_intents.d.ts +0 -2
- package/dist/scripts/verify_memory_intents.d.ts.map +0 -1
- package/dist/scripts/verify_memory_intents.js +0 -45
- package/dist/scripts/verify_memory_intents.js.map +0 -1
- package/dist/scripts/verify_redis_intents.d.ts +0 -2
- package/dist/scripts/verify_redis_intents.d.ts.map +0 -1
- package/dist/scripts/verify_redis_intents.js +0 -52
- package/dist/scripts/verify_redis_intents.js.map +0 -1
- package/dist/server/ChatFlowWebSocketServer.d.ts +0 -46
- package/dist/server/ChatFlowWebSocketServer.d.ts.map +0 -1
- package/dist/server/ChatFlowWebSocketServer.js +0 -344
- package/dist/server/ChatFlowWebSocketServer.js.map +0 -1
- package/dist/server/realtime-voice-server.d.ts +0 -2
- package/dist/server/realtime-voice-server.d.ts.map +0 -1
- package/dist/server/realtime-voice-server.js +0 -627
- package/dist/server/realtime-voice-server.js.map +0 -1
- package/dist/src/api/routes/tenants.d.ts +0 -3
- package/dist/src/api/routes/tenants.d.ts.map +0 -1
- package/dist/src/api/routes/tenants.js +0 -109
- package/dist/src/api/routes/tenants.js.map +0 -1
- package/dist/utils/crypto.d.ts +0 -7
- package/dist/utils/crypto.d.ts.map +0 -1
- package/dist/utils/crypto.js +0 -35
- package/dist/utils/crypto.js.map +0 -1
- package/dist/utils/encryption-helpers.d.ts +0 -14
- package/dist/utils/encryption-helpers.d.ts.map +0 -1
- package/dist/utils/encryption-helpers.js +0 -49
- package/dist/utils/encryption-helpers.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 +0 -162
- package/dist/workflow/MockWorkflowAdapter.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RedisRepository.js","sourceRoot":"","sources":["../../../src/adapters/repository/RedisRepository.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import Redis from 'ioredis';
|
|
2
|
-
import { IAudioStorage, AudioFormatMetadata } from '../../interfaces';
|
|
3
|
-
/**
|
|
4
|
-
* Redis Audio Storage Adapter
|
|
5
|
-
* Stores audio recordings in Redis with automatic format conversion
|
|
6
|
-
* All audio is normalized to LINEAR16 PCM (16kHz, mono, 16-bit) during storage
|
|
7
|
-
* Final playback generates a proper WAV file with headers
|
|
8
|
-
*/
|
|
9
|
-
export declare class RedisAudioStorageAdapter implements IAudioStorage {
|
|
10
|
-
private redis;
|
|
11
|
-
private storageRoot;
|
|
12
|
-
private baseUrl;
|
|
13
|
-
constructor(redisClient: Redis, storageRoot?: string, baseUrl?: string);
|
|
14
|
-
private getRedisKey;
|
|
15
|
-
initializeSession(sessionId: string, metadata: any): Promise<void>;
|
|
16
|
-
/**
|
|
17
|
-
* Append audio chunk with automatic format conversion to PCM
|
|
18
|
-
*/
|
|
19
|
-
appendAudio(sessionId: string, audioData: Buffer, formatMetadata?: AudioFormatMetadata): Promise<void>;
|
|
20
|
-
/**
|
|
21
|
-
* Finalize session and return audio URL
|
|
22
|
-
*/
|
|
23
|
-
finalizeSession(sessionId: string): Promise<string>;
|
|
24
|
-
/**
|
|
25
|
-
* Get audio URL for a session
|
|
26
|
-
*/
|
|
27
|
-
getAudioUrl(sessionId: string): Promise<string | null>;
|
|
28
|
-
/**
|
|
29
|
-
* Get session audio as a complete WAV file
|
|
30
|
-
*/
|
|
31
|
-
getSessionAudio(sessionId: string): Promise<Buffer | null>;
|
|
32
|
-
}
|
|
33
|
-
//# sourceMappingURL=RedisAudioStorageAdapter.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RedisAudioStorageAdapter.d.ts","sourceRoot":"","sources":["../../../src/adapters/storage/RedisAudioStorageAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,SAAS,CAAC;AAG5B,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAGtE;;;;;GAKG;AACH,qBAAa,wBAAyB,YAAW,aAAa;IAC1D,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,OAAO,CAAS;gBAEZ,WAAW,EAAE,KAAK,EAAE,WAAW,GAAE,MAA6B,EAAE,OAAO,GAAE,MAAsB;IAW3G,OAAO,CAAC,WAAW;IAIb,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAKxE;;OAEG;IACG,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAa5G;;OAEG;IACG,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAgBzD;;OAEG;IACG,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAS5D;;OAEG;IACG,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;CAenE"}
|
|
@@ -1,121 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.RedisAudioStorageAdapter = void 0;
|
|
37
|
-
const fs = __importStar(require("fs"));
|
|
38
|
-
const path = __importStar(require("path"));
|
|
39
|
-
const AudioUtils_1 = require("../../core/utils/AudioUtils");
|
|
40
|
-
/**
|
|
41
|
-
* Redis Audio Storage Adapter
|
|
42
|
-
* Stores audio recordings in Redis with automatic format conversion
|
|
43
|
-
* All audio is normalized to LINEAR16 PCM (16kHz, mono, 16-bit) during storage
|
|
44
|
-
* Final playback generates a proper WAV file with headers
|
|
45
|
-
*/
|
|
46
|
-
class RedisAudioStorageAdapter {
|
|
47
|
-
constructor(redisClient, storageRoot = 'storage/recordings', baseUrl = '/recordings') {
|
|
48
|
-
this.redis = redisClient;
|
|
49
|
-
this.storageRoot = path.resolve(storageRoot);
|
|
50
|
-
this.baseUrl = baseUrl;
|
|
51
|
-
// Ensure storage directory exists (for potential future disk caching)
|
|
52
|
-
if (!fs.existsSync(this.storageRoot)) {
|
|
53
|
-
fs.mkdirSync(this.storageRoot, { recursive: true });
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
getRedisKey(sessionId) {
|
|
57
|
-
return `session:${sessionId}:audio`;
|
|
58
|
-
}
|
|
59
|
-
async initializeSession(sessionId, metadata) {
|
|
60
|
-
// Clear any existing audio for this session
|
|
61
|
-
await this.redis.del(this.getRedisKey(sessionId));
|
|
62
|
-
}
|
|
63
|
-
/**
|
|
64
|
-
* Append audio chunk with automatic format conversion to PCM
|
|
65
|
-
*/
|
|
66
|
-
async appendAudio(sessionId, audioData, formatMetadata) {
|
|
67
|
-
try {
|
|
68
|
-
// Convert to target PCM format using AudioUtils
|
|
69
|
-
const pcmData = await (0, AudioUtils_1.convertToTargetFormat)(audioData, formatMetadata);
|
|
70
|
-
// Store as base64 in Redis
|
|
71
|
-
await this.redis.rpush(this.getRedisKey(sessionId), pcmData.toString('base64'));
|
|
72
|
-
}
|
|
73
|
-
catch (error) {
|
|
74
|
-
console.error('[RedisAudioStorageAdapter] Error appending audio:', error);
|
|
75
|
-
throw error;
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
/**
|
|
79
|
-
* Finalize session and return audio URL
|
|
80
|
-
*/
|
|
81
|
-
async finalizeSession(sessionId) {
|
|
82
|
-
const key = this.getRedisKey(sessionId);
|
|
83
|
-
const exists = await this.redis.exists(key);
|
|
84
|
-
if (!exists) {
|
|
85
|
-
console.warn(`[RedisAudioStorageAdapter] No audio found for session ${sessionId}`);
|
|
86
|
-
return '';
|
|
87
|
-
}
|
|
88
|
-
// Set TTL (24 hours)
|
|
89
|
-
await this.redis.expire(key, 86400);
|
|
90
|
-
// Return URL for playback
|
|
91
|
-
return `${this.baseUrl}/${sessionId}.wav`;
|
|
92
|
-
}
|
|
93
|
-
/**
|
|
94
|
-
* Get audio URL for a session
|
|
95
|
-
*/
|
|
96
|
-
async getAudioUrl(sessionId) {
|
|
97
|
-
const key = this.getRedisKey(sessionId);
|
|
98
|
-
const exists = await this.redis.exists(key);
|
|
99
|
-
if (exists) {
|
|
100
|
-
return `${this.baseUrl}/${sessionId}.wav`;
|
|
101
|
-
}
|
|
102
|
-
return null;
|
|
103
|
-
}
|
|
104
|
-
/**
|
|
105
|
-
* Get session audio as a complete WAV file
|
|
106
|
-
*/
|
|
107
|
-
async getSessionAudio(sessionId) {
|
|
108
|
-
const key = this.getRedisKey(sessionId);
|
|
109
|
-
const chunksBase64 = await this.redis.lrange(key, 0, -1);
|
|
110
|
-
if (!chunksBase64 || chunksBase64.length === 0) {
|
|
111
|
-
return null;
|
|
112
|
-
}
|
|
113
|
-
// Decode all PCM chunks
|
|
114
|
-
const pcmChunks = chunksBase64.map(chunk => Buffer.from(chunk, 'base64'));
|
|
115
|
-
const concatenatedPCM = Buffer.concat(pcmChunks);
|
|
116
|
-
// Wrap in WAV format using AudioUtils
|
|
117
|
-
return (0, AudioUtils_1.wrapPCMInWAV)(concatenatedPCM);
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
exports.RedisAudioStorageAdapter = RedisAudioStorageAdapter;
|
|
121
|
-
//# sourceMappingURL=RedisAudioStorageAdapter.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RedisAudioStorageAdapter.js","sourceRoot":"","sources":["../../../src/adapters/storage/RedisAudioStorageAdapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { IStorage } from '../../interfaces';
|
|
2
|
-
import Redis from 'ioredis';
|
|
3
|
-
export declare class RedisBufferStorageAdapter implements IStorage {
|
|
4
|
-
private redis;
|
|
5
|
-
private storageRoot;
|
|
6
|
-
private baseUrl;
|
|
7
|
-
constructor(redisClient: Redis, storageRoot?: string, baseUrl?: string);
|
|
8
|
-
private getRedisKey;
|
|
9
|
-
initializeSession(sessionId: string, metadata: any): Promise<void>;
|
|
10
|
-
appendAudio(sessionId: string, audioData: Buffer): Promise<void>;
|
|
11
|
-
finalizeSession(sessionId: string): Promise<string>;
|
|
12
|
-
getAudioUrl(sessionId: string): Promise<string | null>;
|
|
13
|
-
}
|
|
14
|
-
//# sourceMappingURL=RedisBufferStorageAdapter.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RedisBufferStorageAdapter.d.ts","sourceRoot":"","sources":["../../../src/adapters/storage/RedisBufferStorageAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,KAAK,MAAM,SAAS,CAAC;AAI5B,qBAAa,yBAA0B,YAAW,QAAQ;IACtD,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,OAAO,CAAS;gBAEZ,WAAW,EAAE,KAAK,EAAE,WAAW,GAAE,MAA6B,EAAE,OAAO,GAAE,MAA2C;IAWhI,OAAO,CAAC,WAAW;IAIb,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAKlE,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOhE,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA8BnD,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;CAQ/D"}
|
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.RedisBufferStorageAdapter = void 0;
|
|
37
|
-
const fs = __importStar(require("fs"));
|
|
38
|
-
const path = __importStar(require("path"));
|
|
39
|
-
class RedisBufferStorageAdapter {
|
|
40
|
-
constructor(redisClient, storageRoot = 'storage/recordings', baseUrl = 'http://localhost:8080/recordings') {
|
|
41
|
-
this.redis = redisClient;
|
|
42
|
-
this.storageRoot = path.resolve(storageRoot);
|
|
43
|
-
this.baseUrl = baseUrl;
|
|
44
|
-
// Ensure storage directory exists
|
|
45
|
-
if (!fs.existsSync(this.storageRoot)) {
|
|
46
|
-
fs.mkdirSync(this.storageRoot, { recursive: true });
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
getRedisKey(sessionId) {
|
|
50
|
-
return `session:${sessionId}:audio`;
|
|
51
|
-
}
|
|
52
|
-
async initializeSession(sessionId, metadata) {
|
|
53
|
-
// Optional: Store metadata in Redis if needed, or simply clear any existing list
|
|
54
|
-
await this.redis.del(this.getRedisKey(sessionId));
|
|
55
|
-
}
|
|
56
|
-
async appendAudio(sessionId, audioData) {
|
|
57
|
-
// Redis stores binary as Buffer if configured, but ioredis default is strings.
|
|
58
|
-
// We need to encode to base64 or ensure binary mode.
|
|
59
|
-
// For safety and compatibility, we'll store as base64 strings in the list.
|
|
60
|
-
await this.redis.rpush(this.getRedisKey(sessionId), audioData.toString('base64'));
|
|
61
|
-
}
|
|
62
|
-
async finalizeSession(sessionId) {
|
|
63
|
-
const key = this.getRedisKey(sessionId);
|
|
64
|
-
// 1. Retrieve all chunks
|
|
65
|
-
const chunksBase64 = await this.redis.lrange(key, 0, -1);
|
|
66
|
-
if (!chunksBase64 || chunksBase64.length === 0) {
|
|
67
|
-
console.warn(`[Storage] No audio chunks found for session ${sessionId}`);
|
|
68
|
-
return '';
|
|
69
|
-
}
|
|
70
|
-
// 2. Decode and Concatenate
|
|
71
|
-
const buffers = chunksBase64.map(chunk => Buffer.from(chunk, 'base64'));
|
|
72
|
-
const finalBuffer = Buffer.concat(buffers);
|
|
73
|
-
// 3. Write to Disk (Simulating Bucket Upload)
|
|
74
|
-
const filename = `${sessionId}.wav`; // Assuming linear PCM / WAV chunks (even if headers are partial, concatenation of raw PCM is cleaner, but let's assume we are just saving the raw accumulation for now)
|
|
75
|
-
const filePath = path.join(this.storageRoot, filename);
|
|
76
|
-
await fs.promises.writeFile(filePath, finalBuffer);
|
|
77
|
-
console.log(`[Storage] Saved ${finalBuffer.length} bytes to ${filePath}`);
|
|
78
|
-
// 4. Cleanup Redis
|
|
79
|
-
await this.redis.del(key);
|
|
80
|
-
// Optional: expire generic session keys if needed
|
|
81
|
-
// 5. Return URL
|
|
82
|
-
return `${this.baseUrl}/${filename}`;
|
|
83
|
-
}
|
|
84
|
-
async getAudioUrl(sessionId) {
|
|
85
|
-
const filename = `${sessionId}.wav`;
|
|
86
|
-
const filePath = path.join(this.storageRoot, filename);
|
|
87
|
-
if (fs.existsSync(filePath)) {
|
|
88
|
-
return `${this.baseUrl}/${filename}`;
|
|
89
|
-
}
|
|
90
|
-
return null;
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
exports.RedisBufferStorageAdapter = RedisBufferStorageAdapter;
|
|
94
|
-
//# sourceMappingURL=RedisBufferStorageAdapter.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RedisBufferStorageAdapter.js","sourceRoot":"","sources":["../../../src/adapters/storage/RedisBufferStorageAdapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { IVoiceAdapter, VoiceConfig, AudioFormatMetadata } from '../../interfaces';
|
|
2
|
-
/**
|
|
3
|
-
* ElevenLabs Voice Adapter
|
|
4
|
-
* Implements TTS using ElevenLabs API (free tier: 10,000 chars/month)
|
|
5
|
-
* Note: This adapter only implements TTS. Use GeminiVoiceAdapter for STT.
|
|
6
|
-
*/
|
|
7
|
-
export declare class ElevenLabsVoiceAdapter implements IVoiceAdapter {
|
|
8
|
-
private apiKey;
|
|
9
|
-
private voiceConfig?;
|
|
10
|
-
constructor(apiKey: string, voiceConfig?: VoiceConfig);
|
|
11
|
-
/**
|
|
12
|
-
* Speech-to-text not supported by ElevenLabs
|
|
13
|
-
* Use GeminiVoiceAdapter or another provider for STT
|
|
14
|
-
*/
|
|
15
|
-
speechToText(audioBase64: string, config?: VoiceConfig['stt']): Promise<string>;
|
|
16
|
-
/**
|
|
17
|
-
* Convert text to speech using ElevenLabs API
|
|
18
|
-
* @param text Text to convert to speech
|
|
19
|
-
* @param config Optional TTS configuration
|
|
20
|
-
* @returns Audio data as Uint8Array (WAV format)
|
|
21
|
-
*/
|
|
22
|
-
textToSpeech(text: string, config?: VoiceConfig['tts']): Promise<Uint8Array>;
|
|
23
|
-
/**
|
|
24
|
-
* Declare the audio format produced by ElevenLabs TTS
|
|
25
|
-
* Used by IAudioStorage for format conversion
|
|
26
|
-
*/
|
|
27
|
-
getTTSOutputFormat(): AudioFormatMetadata;
|
|
28
|
-
}
|
|
29
|
-
//# sourceMappingURL=ElevenLabsVoiceAdapter.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ElevenLabsVoiceAdapter.d.ts","sourceRoot":"","sources":["../../../src/adapters/voice/ElevenLabsVoiceAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEnF;;;;GAIG;AACH,qBAAa,sBAAuB,YAAW,aAAa;IACxD,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,WAAW,CAAC,CAAc;gBAEtB,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,WAAW;IAKrD;;;OAGG;IACG,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAIrF;;;;;OAKG;IACG,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;IAwClF;;;OAGG;IACH,kBAAkB,IAAI,mBAAmB;CAQ5C"}
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ElevenLabsVoiceAdapter = void 0;
|
|
4
|
-
/**
|
|
5
|
-
* ElevenLabs Voice Adapter
|
|
6
|
-
* Implements TTS using ElevenLabs API (free tier: 10,000 chars/month)
|
|
7
|
-
* Note: This adapter only implements TTS. Use GeminiVoiceAdapter for STT.
|
|
8
|
-
*/
|
|
9
|
-
class ElevenLabsVoiceAdapter {
|
|
10
|
-
constructor(apiKey, voiceConfig) {
|
|
11
|
-
this.apiKey = apiKey;
|
|
12
|
-
this.voiceConfig = voiceConfig;
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* Speech-to-text not supported by ElevenLabs
|
|
16
|
-
* Use GeminiVoiceAdapter or another provider for STT
|
|
17
|
-
*/
|
|
18
|
-
async speechToText(audioBase64, config) {
|
|
19
|
-
throw new Error('ElevenLabs does not support speech-to-text. Use GeminiVoiceAdapter or another provider for STT.');
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* Convert text to speech using ElevenLabs API
|
|
23
|
-
* @param text Text to convert to speech
|
|
24
|
-
* @param config Optional TTS configuration
|
|
25
|
-
* @returns Audio data as Uint8Array (WAV format)
|
|
26
|
-
*/
|
|
27
|
-
async textToSpeech(text, config) {
|
|
28
|
-
const ttsConfig = config || this.voiceConfig?.tts;
|
|
29
|
-
// Default to Rachel voice (female, multilingual, free tier compatible)
|
|
30
|
-
const voiceId = ttsConfig?.voice || '21m00Tcm4TlvDq8ikWAM';
|
|
31
|
-
try {
|
|
32
|
-
const response = await fetch(`https://api.elevenlabs.io/v1/text-to-speech/${voiceId}`, {
|
|
33
|
-
method: 'POST',
|
|
34
|
-
headers: {
|
|
35
|
-
'Accept': 'audio/wav', // Changed from audio/mpeg to audio/wav for better compatibility
|
|
36
|
-
'Content-Type': 'application/json',
|
|
37
|
-
'xi-api-key': this.apiKey
|
|
38
|
-
},
|
|
39
|
-
body: JSON.stringify({
|
|
40
|
-
text,
|
|
41
|
-
model_id: 'eleven_turbo_v2_5', // Free tier compatible model
|
|
42
|
-
voice_settings: {
|
|
43
|
-
stability: 0.5,
|
|
44
|
-
similarity_boost: 0.5
|
|
45
|
-
}
|
|
46
|
-
})
|
|
47
|
-
});
|
|
48
|
-
if (!response.ok) {
|
|
49
|
-
const errorText = await response.text();
|
|
50
|
-
throw new Error(`ElevenLabs TTS API Error: ${response.status} - ${errorText}`);
|
|
51
|
-
}
|
|
52
|
-
// ElevenLabs returns audio directly as binary
|
|
53
|
-
const audioBuffer = await response.arrayBuffer();
|
|
54
|
-
return new Uint8Array(audioBuffer);
|
|
55
|
-
}
|
|
56
|
-
catch (error) {
|
|
57
|
-
console.error('Text-to-Speech Error:', error);
|
|
58
|
-
throw new Error(`TTS failed: ${error.message}`);
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
* Declare the audio format produced by ElevenLabs TTS
|
|
63
|
-
* Used by IAudioStorage for format conversion
|
|
64
|
-
*/
|
|
65
|
-
getTTSOutputFormat() {
|
|
66
|
-
return {
|
|
67
|
-
format: 'wav', // Changed from 'mp3' to 'wav'
|
|
68
|
-
sampleRate: 44100, // ElevenLabs WAV output is 44.1kHz
|
|
69
|
-
channels: 1,
|
|
70
|
-
bitDepth: 16
|
|
71
|
-
};
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
exports.ElevenLabsVoiceAdapter = ElevenLabsVoiceAdapter;
|
|
75
|
-
//# sourceMappingURL=ElevenLabsVoiceAdapter.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ElevenLabsVoiceAdapter.js","sourceRoot":"","sources":["../../../src/adapters/voice/ElevenLabsVoiceAdapter.ts"],"names":[],"mappings":";;;AAEA;;;;GAIG;AACH,MAAa,sBAAsB;IAI/B,YAAY,MAAc,EAAE,WAAyB;QACjD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACnC,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,YAAY,CAAC,WAAmB,EAAE,MAA2B;QAC/D,MAAM,IAAI,KAAK,CAAC,iGAAiG,CAAC,CAAC;IACvH,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,YAAY,CAAC,IAAY,EAAE,MAA2B;QACxD,MAAM,SAAS,GAAG,MAAM,IAAI,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC;QAClD,uEAAuE;QACvE,MAAM,OAAO,GAAG,SAAS,EAAE,KAAK,IAAI,sBAAsB,CAAC;QAE3D,IAAI,CAAC;YACD,MAAM,QAAQ,GAAG,MAAM,KAAK,CACxB,+CAA+C,OAAO,EAAE,EACxD;gBACI,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACL,QAAQ,EAAE,WAAW,EAAG,gEAAgE;oBACxF,cAAc,EAAE,kBAAkB;oBAClC,YAAY,EAAE,IAAI,CAAC,MAAM;iBAC5B;gBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACjB,IAAI;oBACJ,QAAQ,EAAE,mBAAmB,EAAE,6BAA6B;oBAC5D,cAAc,EAAE;wBACZ,SAAS,EAAE,GAAG;wBACd,gBAAgB,EAAE,GAAG;qBACxB;iBACJ,CAAC;aACL,CACJ,CAAC;YAEF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACf,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACxC,MAAM,IAAI,KAAK,CAAC,6BAA6B,QAAQ,CAAC,MAAM,MAAM,SAAS,EAAE,CAAC,CAAC;YACnF,CAAC;YAED,8CAA8C;YAC9C,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC;YACjD,OAAO,IAAI,UAAU,CAAC,WAAW,CAAC,CAAC;QACvC,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YAClB,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;YAC9C,MAAM,IAAI,KAAK,CAAC,eAAe,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACpD,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,kBAAkB;QACd,OAAO;YACH,MAAM,EAAE,KAAK,EAAO,8BAA8B;YAClD,UAAU,EAAE,KAAK,EAAG,mCAAmC;YACvD,QAAQ,EAAE,CAAC;YACX,QAAQ,EAAE,EAAE;SACf,CAAC;IACN,CAAC;CACJ;AA3ED,wDA2EC"}
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
import { IVoiceAdapter, VoiceConfig, AudioFormatMetadata } from '../../interfaces';
|
|
2
|
-
/**
|
|
3
|
-
* Gemini Multimodal Live Adapter
|
|
4
|
-
*
|
|
5
|
-
* Real-time voice adapter using Gemini's Multimodal Live API.
|
|
6
|
-
* Provides bidirectional streaming for STT + LLM + TTS in a single connection.
|
|
7
|
-
*
|
|
8
|
-
* Features:
|
|
9
|
-
* - Real-time speech-to-text
|
|
10
|
-
* - Streaming LLM responses
|
|
11
|
-
* - Real-time text-to-speech
|
|
12
|
-
* - Low latency (<500ms)
|
|
13
|
-
* - Interruption handling
|
|
14
|
-
*
|
|
15
|
-
* Cost: ~$0.006/minute (all-inclusive)
|
|
16
|
-
*
|
|
17
|
-
* Note: This adapter is designed for WebSocket-based real-time streaming.
|
|
18
|
-
* For batch/turn-based conversations, use GeminiVoiceAdapter instead.
|
|
19
|
-
*/
|
|
20
|
-
export declare class GeminiMultimodalLiveAdapter implements IVoiceAdapter {
|
|
21
|
-
private apiKey;
|
|
22
|
-
private voiceConfig?;
|
|
23
|
-
private ws?;
|
|
24
|
-
private isConnected;
|
|
25
|
-
constructor(apiKey: string, voiceConfig?: VoiceConfig);
|
|
26
|
-
/**
|
|
27
|
-
* Connect to Gemini Multimodal Live API
|
|
28
|
-
* Returns a WebSocket connection for bidirectional streaming
|
|
29
|
-
*/
|
|
30
|
-
connect(): Promise<WebSocket>;
|
|
31
|
-
/**
|
|
32
|
-
* Send configuration to Gemini
|
|
33
|
-
*/
|
|
34
|
-
private sendConfig;
|
|
35
|
-
/**
|
|
36
|
-
* Send audio chunk to Gemini for processing
|
|
37
|
-
* @param audioBase64 Base64-encoded audio data
|
|
38
|
-
*/
|
|
39
|
-
sendAudio(audioBase64: string): Promise<void>;
|
|
40
|
-
/**
|
|
41
|
-
* Register callback for receiving responses from Gemini
|
|
42
|
-
* @param callback Function to handle responses (text + audio)
|
|
43
|
-
*/
|
|
44
|
-
onResponse(callback: (response: {
|
|
45
|
-
text?: string;
|
|
46
|
-
audio?: Uint8Array;
|
|
47
|
-
isFinal: boolean;
|
|
48
|
-
}) => void): void;
|
|
49
|
-
/**
|
|
50
|
-
* Disconnect from Gemini
|
|
51
|
-
*/
|
|
52
|
-
disconnect(): void;
|
|
53
|
-
/**
|
|
54
|
-
* Speech-to-text (not used in real-time mode)
|
|
55
|
-
* Use sendAudio() and onResponse() instead for real-time streaming
|
|
56
|
-
*/
|
|
57
|
-
speechToText(audioBase64: string, config?: VoiceConfig['stt']): Promise<string>;
|
|
58
|
-
/**
|
|
59
|
-
* Text-to-speech (not used in real-time mode)
|
|
60
|
-
* Use sendAudio() and onResponse() instead for real-time streaming
|
|
61
|
-
*/
|
|
62
|
-
textToSpeech(text: string, config?: VoiceConfig['tts']): Promise<Uint8Array>;
|
|
63
|
-
/**
|
|
64
|
-
* Get TTS output format metadata
|
|
65
|
-
* This adapter outputs PCM audio at 24kHz mono
|
|
66
|
-
*/
|
|
67
|
-
getTTSOutputFormat(): AudioFormatMetadata;
|
|
68
|
-
/**
|
|
69
|
-
* Check if connected to Gemini
|
|
70
|
-
*/
|
|
71
|
-
isConnectedToGemini(): boolean;
|
|
72
|
-
/**
|
|
73
|
-
* Get the underlying WebSocket connection
|
|
74
|
-
*/
|
|
75
|
-
getWebSocket(): WebSocket | undefined;
|
|
76
|
-
}
|
|
77
|
-
//# sourceMappingURL=GeminiMultimodalLiveAdapter.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"GeminiMultimodalLiveAdapter.d.ts","sourceRoot":"","sources":["../../../src/adapters/voice/GeminiMultimodalLiveAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEnF;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,2BAA4B,YAAW,aAAa;IAC7D,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,WAAW,CAAC,CAAc;IAClC,OAAO,CAAC,EAAE,CAAC,CAAY;IACvB,OAAO,CAAC,WAAW,CAAkB;gBAEzB,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,WAAW;IAKrD;;;OAGG;IACG,OAAO,IAAI,OAAO,CAAC,SAAS,CAAC;IAkCnC;;OAEG;IACH,OAAO,CAAC,UAAU;IAwBlB;;;OAGG;IACG,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBnD;;;OAGG;IACH,UAAU,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;QAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,UAAU,CAAC;QACnB,OAAO,EAAE,OAAO,CAAC;KACpB,KAAK,IAAI,GAAG,IAAI;IAuCjB;;OAEG;IACH,UAAU,IAAI,IAAI;IAQlB;;;OAGG;IACG,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAOrF;;;OAGG;IACG,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;IAOlF;;;OAGG;IACH,kBAAkB,IAAI,mBAAmB;IASzC;;OAEG;IACH,mBAAmB,IAAI,OAAO;IAI9B;;OAEG;IACH,YAAY,IAAI,SAAS,GAAG,SAAS;CAGxC"}
|