chat-flow-ardymalihi 3.0.0 → 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/package.json +1 -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,148 +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
|
-
require("dotenv/config");
|
|
37
|
-
const readline = __importStar(require("readline"));
|
|
38
|
-
const Orchestrator_1 = require("../orchestrator/Orchestrator");
|
|
39
|
-
const InMemoryRepository_1 = require("../adapters/repository/InMemoryRepository");
|
|
40
|
-
const RedisRepository_1 = require("../adapters/repository/RedisRepository");
|
|
41
|
-
const GeminiLLMAdapter_1 = require("../adapters/llm/GeminiLLMAdapter");
|
|
42
|
-
const MockLLMAdapter_1 = require("../adapters/llm/MockLLMAdapter");
|
|
43
|
-
const IntentService_1 = require("../adapters/intent/IntentService");
|
|
44
|
-
const IntentMatcher_1 = require("../adapters/intent/IntentMatcher");
|
|
45
|
-
const MockIntentService_1 = require("../adapters/intent/MockIntentService");
|
|
46
|
-
const MockWorkflowAdapter_1 = require("../adapters/workflow/MockWorkflowAdapter");
|
|
47
|
-
const WebhookService_1 = require("../adapters/webhook/WebhookService");
|
|
48
|
-
const interfaces_1 = require("../interfaces");
|
|
49
|
-
const uuid_1 = require("uuid");
|
|
50
|
-
const AIR_TRAVEL_PROMPT = `
|
|
51
|
-
You are 'SkyBot', a professional and friendly AI travel agent for 'AirConnect'.
|
|
52
|
-
Your goal is to help users book flights, check status, and manage reservations.
|
|
53
|
-
Always be polite, concise, and helpful.
|
|
54
|
-
|
|
55
|
-
IMPORTANT:
|
|
56
|
-
- If the system provides 'Workflow Results' (like available flights or booking confirmation), YOU MUST use that specific information to answer the user.
|
|
57
|
-
- Do not make up flight data. Only use what is provided by the system context.
|
|
58
|
-
- If you need more information (destination, dates), ask the user.
|
|
59
|
-
`.trim();
|
|
60
|
-
async function startChat() {
|
|
61
|
-
console.log('--- Chat-Flow Console (Library Mode) ---');
|
|
62
|
-
// 1. Initialize Adapters (Same as cli-demo)
|
|
63
|
-
const redisUrl = process.env.REDIS_URL;
|
|
64
|
-
const apiKey = process.env.GOOGLE_AI_API_KEY;
|
|
65
|
-
let llm;
|
|
66
|
-
if (apiKey) {
|
|
67
|
-
console.log(`[Init] Using Gemini Generative AI Adapter`);
|
|
68
|
-
llm = new GeminiLLMAdapter_1.GeminiLLMAdapter(apiKey);
|
|
69
|
-
}
|
|
70
|
-
else {
|
|
71
|
-
console.log(`[Init] Using Mock LLM Adapter`);
|
|
72
|
-
llm = new MockLLMAdapter_1.MockLLMAdapter();
|
|
73
|
-
}
|
|
74
|
-
let sessionRepo;
|
|
75
|
-
let intentAdapter;
|
|
76
|
-
if (redisUrl) {
|
|
77
|
-
console.log(`[Init] Using Redis Repository at ${redisUrl}`);
|
|
78
|
-
sessionRepo = new RedisRepository_1.RedisRepository(redisUrl);
|
|
79
|
-
}
|
|
80
|
-
else {
|
|
81
|
-
console.log(`[Init] Using In-Memory Repository`);
|
|
82
|
-
sessionRepo = new InMemoryRepository_1.InMemoryRepository();
|
|
83
|
-
}
|
|
84
|
-
if (sessionRepo instanceof RedisRepository_1.RedisRepository && llm instanceof GeminiLLMAdapter_1.GeminiLLMAdapter) {
|
|
85
|
-
console.log(`[Init] Using Real Intent Detection`);
|
|
86
|
-
const intentMatcher = new IntentMatcher_1.IntentMatcher(llm);
|
|
87
|
-
intentAdapter = new IntentService_1.IntentService(sessionRepo, intentMatcher);
|
|
88
|
-
}
|
|
89
|
-
else {
|
|
90
|
-
console.log(`[Init] Using Mock Intent Adapter`);
|
|
91
|
-
intentAdapter = new MockIntentService_1.MockIntentService();
|
|
92
|
-
}
|
|
93
|
-
const workflow = new MockWorkflowAdapter_1.MockWorkflowAdapter();
|
|
94
|
-
const webhookService = new WebhookService_1.WebhookService();
|
|
95
|
-
const orchestrator = new Orchestrator_1.Orchestrator(sessionRepo, llm, intentAdapter, workflow, webhookService);
|
|
96
|
-
// 2. Create Session
|
|
97
|
-
const sessionId = (0, uuid_1.v4)();
|
|
98
|
-
const session = await orchestrator.createSession(sessionId, 'TEXT', AIR_TRAVEL_PROMPT);
|
|
99
|
-
console.log(`\n[Session Started] ID: ${sessionId}`);
|
|
100
|
-
console.log('Type "bye" or "exit" to quit.\n');
|
|
101
|
-
// 3. Chat Loop
|
|
102
|
-
const rl = readline.createInterface({
|
|
103
|
-
input: process.stdin,
|
|
104
|
-
output: process.stdout,
|
|
105
|
-
prompt: '> '
|
|
106
|
-
});
|
|
107
|
-
rl.prompt();
|
|
108
|
-
rl.on('line', async (line) => {
|
|
109
|
-
const input = line.trim();
|
|
110
|
-
if (input.toLowerCase() === 'bye' || input.toLowerCase() === 'exit') {
|
|
111
|
-
console.log('Goodbye!');
|
|
112
|
-
if (sessionRepo instanceof RedisRepository_1.RedisRepository) {
|
|
113
|
-
await sessionRepo.disconnect();
|
|
114
|
-
}
|
|
115
|
-
rl.close();
|
|
116
|
-
return;
|
|
117
|
-
}
|
|
118
|
-
if (input) {
|
|
119
|
-
try {
|
|
120
|
-
const { messages, metadata } = await orchestrator.processMessage(session.sessionId, input);
|
|
121
|
-
// Show Metadata
|
|
122
|
-
if (metadata?.intent) {
|
|
123
|
-
console.log(`[Meta] Intent Detected: ${metadata.intent} (Conf: ${metadata.confidence})`);
|
|
124
|
-
}
|
|
125
|
-
if (metadata?.workflowExecuted) {
|
|
126
|
-
console.log(`[Meta] Workflow Executed: ${metadata.workflowExecuted}`);
|
|
127
|
-
}
|
|
128
|
-
messages.forEach((msg) => {
|
|
129
|
-
if (msg.role === interfaces_1.Role.ASSISTANT) {
|
|
130
|
-
console.log(`[Bot]: ${msg.content}`);
|
|
131
|
-
}
|
|
132
|
-
else if (msg.role === interfaces_1.Role.USER && msg.content.includes("System Info")) {
|
|
133
|
-
console.log(`[System]: ${msg.content}`);
|
|
134
|
-
}
|
|
135
|
-
});
|
|
136
|
-
}
|
|
137
|
-
catch (err) {
|
|
138
|
-
console.error('[Error]', err);
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
console.log('');
|
|
142
|
-
rl.prompt();
|
|
143
|
-
}).on('close', () => {
|
|
144
|
-
process.exit(0);
|
|
145
|
-
});
|
|
146
|
-
}
|
|
147
|
-
startChat().catch(err => console.error(err));
|
|
148
|
-
//# sourceMappingURL=console-chat.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"console-chat.js","sourceRoot":"","sources":["../../src/demo/console-chat.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"interactive-voice-chat.d.ts","sourceRoot":"","sources":["../../src/demo/interactive-voice-chat.ts"],"names":[],"mappings":""}
|
|
@@ -1,180 +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
|
-
const dotenv = __importStar(require("dotenv"));
|
|
37
|
-
const fs = __importStar(require("fs"));
|
|
38
|
-
const path = __importStar(require("path"));
|
|
39
|
-
const readline = __importStar(require("readline"));
|
|
40
|
-
const child_process_1 = require("child_process");
|
|
41
|
-
const Orchestrator_1 = require("../orchestrator/Orchestrator");
|
|
42
|
-
const GeminiLLMAdapter_1 = require("../adapters/llm/GeminiLLMAdapter");
|
|
43
|
-
const InMemoryRepository_1 = require("../adapters/repository/InMemoryRepository");
|
|
44
|
-
const IntentService_1 = require("../adapters/intent/IntentService");
|
|
45
|
-
const IntentMatcher_1 = require("../adapters/intent/IntentMatcher");
|
|
46
|
-
const MockWorkflowAdapter_1 = require("../adapters/workflow/MockWorkflowAdapter");
|
|
47
|
-
const WebhookService_1 = require("../adapters/webhook/WebhookService");
|
|
48
|
-
dotenv.config();
|
|
49
|
-
const TEMP_RECORDING = path.join(process.cwd(), 'temp-recording.wav');
|
|
50
|
-
const TEMP_RESPONSE = path.join(process.cwd(), 'temp-response.mp3');
|
|
51
|
-
async function waitForEnter(message) {
|
|
52
|
-
const rl = readline.createInterface({
|
|
53
|
-
input: process.stdin,
|
|
54
|
-
output: process.stdout
|
|
55
|
-
});
|
|
56
|
-
return new Promise((resolve) => {
|
|
57
|
-
rl.question(message, () => {
|
|
58
|
-
rl.close();
|
|
59
|
-
resolve();
|
|
60
|
-
});
|
|
61
|
-
});
|
|
62
|
-
}
|
|
63
|
-
async function recordAudio() {
|
|
64
|
-
return new Promise((resolve, reject) => {
|
|
65
|
-
console.log('🎤 Recording... (Press ENTER to stop)');
|
|
66
|
-
const rec = (0, child_process_1.spawn)('rec', ['-r', '16000', '-c', '1', '-b', '16', TEMP_RECORDING]);
|
|
67
|
-
const rl = readline.createInterface({
|
|
68
|
-
input: process.stdin,
|
|
69
|
-
output: process.stdout
|
|
70
|
-
});
|
|
71
|
-
rl.on('line', () => {
|
|
72
|
-
rec.kill('SIGINT');
|
|
73
|
-
rl.close();
|
|
74
|
-
});
|
|
75
|
-
rec.on('close', (code) => {
|
|
76
|
-
if (code === 0 || code === null) {
|
|
77
|
-
console.log('✅ Recording stopped\n');
|
|
78
|
-
const audioBuffer = fs.readFileSync(TEMP_RECORDING);
|
|
79
|
-
resolve(audioBuffer.toString('base64'));
|
|
80
|
-
}
|
|
81
|
-
else {
|
|
82
|
-
reject(new Error(`Recording failed with code ${code}`));
|
|
83
|
-
}
|
|
84
|
-
});
|
|
85
|
-
rec.stderr.on('data', () => { });
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
|
-
async function playAudio(audioPath) {
|
|
89
|
-
return new Promise((resolve, reject) => {
|
|
90
|
-
console.log('🔊 Playing response...\n');
|
|
91
|
-
const play = (0, child_process_1.spawn)('afplay', [audioPath]);
|
|
92
|
-
play.on('close', (code) => {
|
|
93
|
-
code === 0 ? resolve() : reject(new Error(`Playback failed`));
|
|
94
|
-
});
|
|
95
|
-
});
|
|
96
|
-
}
|
|
97
|
-
async function runInteractiveVoiceChat() {
|
|
98
|
-
console.log('🎤 Interactive Voice Chat\n');
|
|
99
|
-
console.log('='.repeat(60));
|
|
100
|
-
const geminiApiKey = process.env.GOOGLE_AI_API_KEY;
|
|
101
|
-
const elevenLabsApiKey = process.env.ELEVENLABS_API_KEY;
|
|
102
|
-
if (!geminiApiKey || !elevenLabsApiKey) {
|
|
103
|
-
console.error('❌ Missing API keys');
|
|
104
|
-
process.exit(1);
|
|
105
|
-
}
|
|
106
|
-
const llm = new GeminiLLMAdapter_1.GeminiLLMAdapter(geminiApiKey);
|
|
107
|
-
stt: {
|
|
108
|
-
provider: 'google', language;
|
|
109
|
-
'en-US';
|
|
110
|
-
}
|
|
111
|
-
tts: {
|
|
112
|
-
provider: 'elevenlabs', voice;
|
|
113
|
-
'21m00Tcm4TlvDq8ikWAM', language;
|
|
114
|
-
'en-US';
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
;
|
|
118
|
-
const repository = new InMemoryRepository_1.InMemoryRepository();
|
|
119
|
-
const intentMatcher = new IntentMatcher_1.IntentMatcher(llm);
|
|
120
|
-
const intentService = new IntentService_1.IntentService(repository, intentMatcher);
|
|
121
|
-
const workflowAdapter = new MockWorkflowAdapter_1.MockWorkflowAdapter();
|
|
122
|
-
const webhookService = new WebhookService_1.WebhookService();
|
|
123
|
-
const orchestrator = new Orchestrator_1.Orchestrator(repository, llm, intentService, workflowAdapter, webhookService, voiceAdapter);
|
|
124
|
-
const sessionId = 'interactive-voice-' + Date.now();
|
|
125
|
-
await orchestrator.createSession(sessionId, 'VOICE', 'You are a helpful voice assistant. Keep responses concise and conversational.');
|
|
126
|
-
console.log('✅ Voice chat ready!\n');
|
|
127
|
-
console.log('Instructions:');
|
|
128
|
-
console.log(' 1. Press ENTER to start recording');
|
|
129
|
-
console.log(' 2. Speak your question');
|
|
130
|
-
console.log(' 3. Press ENTER to stop recording');
|
|
131
|
-
console.log(' 4. AI will respond with voice');
|
|
132
|
-
console.log(' 5. Say "goodbye" to end\n');
|
|
133
|
-
console.log('='.repeat(60));
|
|
134
|
-
// Main conversation loop
|
|
135
|
-
while (true) {
|
|
136
|
-
try {
|
|
137
|
-
// Wait for user to press ENTER
|
|
138
|
-
await waitForEnter('\n🎙️ Press ENTER to speak: ');
|
|
139
|
-
// Record audio
|
|
140
|
-
const audioBase64 = await recordAudio();
|
|
141
|
-
// Process
|
|
142
|
-
console.log('🤔 Transcribing...');
|
|
143
|
-
const result = await orchestrator.handleVoiceMessage(sessionId, audioBase64);
|
|
144
|
-
const transcript = result.transcript.trim();
|
|
145
|
-
const response = result.messages[result.messages.length - 1]?.content;
|
|
146
|
-
console.log(`\n📝 You: "${transcript}"`);
|
|
147
|
-
console.log(`💭 AI is thinking...`);
|
|
148
|
-
console.log(`🤖 AI: "${response}"`);
|
|
149
|
-
// Check for goodbye
|
|
150
|
-
const goodbyeWords = ['goodbye', 'bye', 'see you', 'exit', 'quit', 'end'];
|
|
151
|
-
if (goodbyeWords.some(word => transcript.toLowerCase().includes(word))) {
|
|
152
|
-
if (result.audioResponse) {
|
|
153
|
-
fs.writeFileSync(TEMP_RESPONSE, result.audioResponse);
|
|
154
|
-
await playAudio(TEMP_RESPONSE);
|
|
155
|
-
}
|
|
156
|
-
console.log('\n👋 Goodbye!');
|
|
157
|
-
break;
|
|
158
|
-
}
|
|
159
|
-
// Play response
|
|
160
|
-
if (result.audioResponse) {
|
|
161
|
-
fs.writeFileSync(TEMP_RESPONSE, result.audioResponse);
|
|
162
|
-
await playAudio(TEMP_RESPONSE);
|
|
163
|
-
}
|
|
164
|
-
console.log(`\n⏱️ Processing time: ${result.metadata.voice.stt_duration_ms + result.metadata.voice.tts_duration_ms}ms`);
|
|
165
|
-
console.log('='.repeat(60));
|
|
166
|
-
}
|
|
167
|
-
catch (error) {
|
|
168
|
-
console.error('\n❌ Error:', error.message);
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
// Cleanup
|
|
172
|
-
if (fs.existsSync(TEMP_RECORDING))
|
|
173
|
-
fs.unlinkSync(TEMP_RECORDING);
|
|
174
|
-
if (fs.existsSync(TEMP_RESPONSE))
|
|
175
|
-
fs.unlinkSync(TEMP_RESPONSE);
|
|
176
|
-
runInteractiveVoiceChat().catch((error) => {
|
|
177
|
-
console.error('\n💥 Fatal error:', error);
|
|
178
|
-
process.exit(1);
|
|
179
|
-
});
|
|
180
|
-
//# sourceMappingURL=interactive-voice-chat.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"interactive-voice-chat.js","sourceRoot":"","sources":["../../src/demo/interactive-voice-chat.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAAiC;AACjC,uCAAyB;AACzB,2CAA6B;AAC7B,mDAAqC;AACrC,iDAAsC;AACtC,+DAA4D;AAC5D,uEAAoE;AACpE,kFAA+E;AAC/E,oEAAiE;AACjE,oEAAiE;AACjE,kFAA+E;AAC/E,uEAAoE;AAEpE,MAAM,CAAC,MAAM,EAAE,CAAC;AAEhB,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,oBAAoB,CAAC,CAAC;AACtE,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,mBAAmB,CAAC,CAAC;AAEpE,KAAK,UAAU,YAAY,CAAC,OAAe;IACvC,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC;QAChC,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,MAAM;KACzB,CAAC,CAAC;IAEH,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC3B,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;YACtB,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,EAAE,CAAC;QACd,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC;AAED,KAAK,UAAU,WAAW;IACtB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACnC,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;QAErD,MAAM,GAAG,GAAG,IAAA,qBAAK,EAAC,KAAK,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC;QAEjF,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC;YAChC,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,MAAM,EAAE,OAAO,CAAC,MAAM;SACzB,CAAC,CAAC;QAEH,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE;YACf,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACnB,EAAE,CAAC,KAAK,EAAE,CAAC;QACf,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACrB,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;gBAC9B,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;gBACrC,MAAM,WAAW,GAAG,EAAE,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;gBACpD,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC5C,CAAC;iBAAM,CAAC;gBACJ,MAAM,CAAC,IAAI,KAAK,CAAC,8BAA8B,IAAI,EAAE,CAAC,CAAC,CAAC;YAC5D,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;AACP,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,SAAiB;IACtC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACnC,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;QACxC,MAAM,IAAI,GAAG,IAAA,qBAAK,EAAC,QAAQ,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;QAC1C,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACtB,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC;QAClE,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC;AAED,KAAK,UAAU,uBAAuB;IAClC,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;IAC3C,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IAE5B,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;IACnD,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;IAExD,IAAI,CAAC,YAAY,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACrC,OAAO,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;QACpC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,mCAAgB,CAAC,YAAY,CAAC,CAAC;IAC3C,GAAG,EAAE,CAAC;QAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAA;QAAE,OAAO,CAAA;IAAC,CAAC;IAC9C,GAAG,EAAE,CAAC;QAAC,QAAQ,EAAE,YAAY,EAAE,KAAK,CAAA;QAAE,sBAAsB,EAAE,QAAQ,CAAA;QAAE,OAAO,CAAA;IAAC,CAAC;AACrF,CAAC;AAAC,CAAC;AAEH,MAAM,UAAU,GAAG,IAAI,uCAAkB,EAAE,CAAC;AAC5C,MAAM,aAAa,GAAG,IAAI,6BAAa,CAAC,GAAG,CAAC,CAAC;AAC7C,MAAM,aAAa,GAAG,IAAI,6BAAa,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;AACnE,MAAM,eAAe,GAAG,IAAI,yCAAmB,EAAE,CAAC;AAClD,MAAM,cAAc,GAAG,IAAI,+BAAc,EAAE,CAAC;AAE5C,MAAM,YAAY,GAAG,IAAI,2BAAY,CAAC,UAAU,EAAE,GAAG,EAAE,aAAa,EAAE,eAAe,EAAE,cAAc,EAAE,YAAY,CAAC,CAAC;AAErH,MAAM,SAAS,GAAG,oBAAoB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AACpD,MAAM,YAAY,CAAC,aAAa,CAAC,SAAS,EAAE,OAAO,EAAE,+EAA+E,CAAC,CAAC;AAEtI,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;AACrC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;AAC7B,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;AACnD,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;AACxC,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;AAClD,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;AAC/C,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;AAC3C,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;AAE5B,yBAAyB;AACzB,OAAO,IAAI,EAAE,CAAC;IACV,IAAI,CAAC;QACD,+BAA+B;QAC/B,MAAM,YAAY,CAAC,+BAA+B,CAAC,CAAC;QAEpD,eAAe;QACf,MAAM,WAAW,GAAG,MAAM,WAAW,EAAE,CAAC;QAExC,UAAU;QACV,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;QAClC,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,kBAAkB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QAE7E,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QAC5C,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC;QAEtE,OAAO,CAAC,GAAG,CAAC,cAAc,UAAU,GAAG,CAAC,CAAC;QACzC,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,WAAW,QAAQ,GAAG,CAAC,CAAC;QAEpC,oBAAoB;QACpB,MAAM,YAAY,GAAG,CAAC,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;QAC1E,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;YACrE,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;gBACvB,EAAE,CAAC,aAAa,CAAC,aAAa,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;gBACtD,MAAM,SAAS,CAAC,aAAa,CAAC,CAAC;YACnC,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;YAC7B,MAAM;QACV,CAAC;QAED,gBAAgB;QAChB,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;YACvB,EAAE,CAAC,aAAa,CAAC,aAAa,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;YACtD,MAAM,SAAS,CAAC,aAAa,CAAC,CAAC;QACnC,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,0BAA0B,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,eAAe,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,eAAe,IAAI,CAAC,CAAC;QACzH,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IAEhC,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IAC/C,CAAC;AACL,CAAC;AAED,UAAU;AACV,IAAI,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC;IAAE,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;AACjE,IAAI,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC;IAAE,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAGnE,uBAAuB,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACtC,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;IAC1C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"voice-demo.d.ts","sourceRoot":"","sources":["../../src/demo/voice-demo.ts"],"names":[],"mappings":""}
|
package/dist/demo/voice-demo.js
DELETED
|
@@ -1,188 +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
|
-
const dotenv = __importStar(require("dotenv"));
|
|
37
|
-
const fs = __importStar(require("fs"));
|
|
38
|
-
const path = __importStar(require("path"));
|
|
39
|
-
const Orchestrator_1 = require("../orchestrator/Orchestrator");
|
|
40
|
-
const GeminiLLMAdapter_1 = require("../adapters/llm/GeminiLLMAdapter");
|
|
41
|
-
const InMemoryRepository_1 = require("../adapters/repository/InMemoryRepository");
|
|
42
|
-
const IntentService_1 = require("../adapters/intent/IntentService");
|
|
43
|
-
const IntentMatcher_1 = require("../adapters/intent/IntentMatcher");
|
|
44
|
-
const MockWorkflowAdapter_1 = require("../adapters/workflow/MockWorkflowAdapter");
|
|
45
|
-
const WebhookService_1 = require("../adapters/webhook/WebhookService");
|
|
46
|
-
// Load environment variables from .env file
|
|
47
|
-
dotenv.config();
|
|
48
|
-
/**
|
|
49
|
-
* Voice Conversation Demo
|
|
50
|
-
*
|
|
51
|
-
* This demo shows how to use voice capabilities (TTS/STT) with chat-flow.
|
|
52
|
-
*
|
|
53
|
-
* Prerequisites:
|
|
54
|
-
* 1. Set GOOGLE_AI_API_KEY environment variable (for STT via Gemini)
|
|
55
|
-
* 2. Set ELEVENLABS_API_KEY environment variable (for TTS via ElevenLabs)
|
|
56
|
-
* 3. (Optional) Place a WAV audio file at ./test-audio.wav to test STT
|
|
57
|
-
*
|
|
58
|
-
* The demo will:
|
|
59
|
-
* - Create a voice-enabled session
|
|
60
|
-
* - Process audio input (if available) using Gemini STT
|
|
61
|
-
* - Generate audio output using ElevenLabs TTS
|
|
62
|
-
*/
|
|
63
|
-
async function runVoiceDemo() {
|
|
64
|
-
console.log('🎤 Voice Conversation Demo\n');
|
|
65
|
-
console.log('='.repeat(60));
|
|
66
|
-
// Check for API keys
|
|
67
|
-
const geminiApiKey = process.env.GOOGLE_AI_API_KEY;
|
|
68
|
-
const elevenLabsApiKey = process.env.ELEVENLABS_API_KEY;
|
|
69
|
-
if (!geminiApiKey) {
|
|
70
|
-
console.error('❌ Error: GOOGLE_AI_API_KEY environment variable not set');
|
|
71
|
-
console.log('\nPlease set your Gemini API key (for STT):');
|
|
72
|
-
console.log(' export GOOGLE_AI_API_KEY="your-gemini-api-key"');
|
|
73
|
-
process.exit(1);
|
|
74
|
-
}
|
|
75
|
-
if (!elevenLabsApiKey) {
|
|
76
|
-
console.error('❌ Error: ELEVENLABS_API_KEY environment variable not set');
|
|
77
|
-
console.log('\nPlease set your ElevenLabs API key (for TTS):');
|
|
78
|
-
console.log(' 1. Sign up at https://elevenlabs.io (free tier: 10,000 chars/month)');
|
|
79
|
-
console.log(' 2. Get your API key from https://elevenlabs.io/app/settings/api-keys');
|
|
80
|
-
console.log(' 3. Add to .env file: ELEVENLABS_API_KEY="your-elevenlabs-key"');
|
|
81
|
-
process.exit(1);
|
|
82
|
-
}
|
|
83
|
-
// Setup components
|
|
84
|
-
console.log('⚙️ Initializing components...\n');
|
|
85
|
-
const llm = new GeminiLLMAdapter_1.GeminiLLMAdapter(geminiApiKey);
|
|
86
|
-
// Use Hybrid adapter: Gemini for STT + ElevenLabs for TTS
|
|
87
|
-
geminiApiKey,
|
|
88
|
-
elevenLabsApiKey,
|
|
89
|
-
{
|
|
90
|
-
stt: {
|
|
91
|
-
provider: 'google',
|
|
92
|
-
language: 'en-US'
|
|
93
|
-
},
|
|
94
|
-
tts: {
|
|
95
|
-
provider: 'elevenlabs',
|
|
96
|
-
voice: '21m00Tcm4TlvDq8ikWAM', // Rachel voice (free tier)
|
|
97
|
-
language: 'en-US'
|
|
98
|
-
}
|
|
99
|
-
};
|
|
100
|
-
;
|
|
101
|
-
const repository = new InMemoryRepository_1.InMemoryRepository();
|
|
102
|
-
const intentMatcher = new IntentMatcher_1.IntentMatcher(llm);
|
|
103
|
-
const intentService = new IntentService_1.IntentService(repository, intentMatcher);
|
|
104
|
-
const workflowAdapter = new MockWorkflowAdapter_1.MockWorkflowAdapter();
|
|
105
|
-
const webhookService = new WebhookService_1.WebhookService();
|
|
106
|
-
const orchestrator = new Orchestrator_1.Orchestrator(repository, llm, intentService, workflowAdapter, webhookService, voiceAdapter // Inject voice adapter separately!
|
|
107
|
-
);
|
|
108
|
-
// Create voice session
|
|
109
|
-
const sessionId = 'voice-demo-' + Date.now();
|
|
110
|
-
await orchestrator.createSession(sessionId, 'VOICE', 'You are a helpful voice assistant. Keep responses concise and natural for voice conversation.');
|
|
111
|
-
console.log(`✅ Voice session created: ${sessionId}\n`);
|
|
112
|
-
console.log('='.repeat(60));
|
|
113
|
-
// Check for test audio file
|
|
114
|
-
const audioPath = path.join(process.cwd(), 'test-audio.wav');
|
|
115
|
-
if (fs.existsSync(audioPath)) {
|
|
116
|
-
console.log('\n🎵 Found test audio file, processing...\n');
|
|
117
|
-
try {
|
|
118
|
-
// Read and encode audio
|
|
119
|
-
const audioBuffer = fs.readFileSync(audioPath);
|
|
120
|
-
const audioBase64 = audioBuffer.toString('base64');
|
|
121
|
-
console.log(`📊 Audio file size: ${(audioBuffer.length / 1024).toFixed(2)} KB`);
|
|
122
|
-
console.log('🔄 Processing voice message...\n');
|
|
123
|
-
// Process voice message
|
|
124
|
-
const startTime = Date.now();
|
|
125
|
-
const result = await orchestrator.handleVoiceMessage(sessionId, audioBase64);
|
|
126
|
-
const totalTime = Date.now() - startTime;
|
|
127
|
-
console.log('='.repeat(60));
|
|
128
|
-
console.log('📝 RESULTS');
|
|
129
|
-
console.log('='.repeat(60));
|
|
130
|
-
console.log(`\n📝 Transcript: "${result.transcript}"`);
|
|
131
|
-
console.log(`\n🤖 Response: "${result.messages[result.messages.length - 1]?.content}"`);
|
|
132
|
-
if (result.audioResponse) {
|
|
133
|
-
// Save audio response (MP3 format from ElevenLabs)
|
|
134
|
-
const outputPath = path.join(process.cwd(), 'voice-response.mp3');
|
|
135
|
-
fs.writeFileSync(outputPath, result.audioResponse);
|
|
136
|
-
console.log(`\n🔊 Audio response saved to: ${outputPath}`);
|
|
137
|
-
console.log(` Size: ${(result.audioResponse.length / 1024).toFixed(2)} KB`);
|
|
138
|
-
}
|
|
139
|
-
console.log('\n📊 Performance Metrics:');
|
|
140
|
-
console.log(` Total time: ${totalTime}ms`);
|
|
141
|
-
console.log(` STT time: ${result.metadata.voice.stt_duration_ms}ms`);
|
|
142
|
-
console.log(` TTS time: ${result.metadata.voice.tts_duration_ms}ms`);
|
|
143
|
-
console.log('='.repeat(60));
|
|
144
|
-
}
|
|
145
|
-
catch (error) {
|
|
146
|
-
console.error('\n❌ Error processing voice message:', error.message);
|
|
147
|
-
console.error(error.stack);
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
else {
|
|
151
|
-
console.log('\n⚠️ No test audio file found at:', audioPath);
|
|
152
|
-
console.log('\n📌 To test voice input:');
|
|
153
|
-
console.log(' 1. Record a WAV file (16kHz mono recommended)');
|
|
154
|
-
console.log(' 2. Save it as ./test-audio.wav');
|
|
155
|
-
console.log(' 3. Run this demo again\n');
|
|
156
|
-
// Demonstrate TTS only
|
|
157
|
-
console.log('🔊 Testing TTS (Text-to-Speech) only...\n');
|
|
158
|
-
try {
|
|
159
|
-
const testText = 'Hello! This is a test of the text to speech system. Voice capabilities are now integrated into chat-flow.';
|
|
160
|
-
console.log(`📝 Input text: "${testText}"\n`);
|
|
161
|
-
console.log('🔄 Generating audio...\n');
|
|
162
|
-
const startTime = Date.now();
|
|
163
|
-
const audioResponse = await orchestrator.getVoiceResponse(testText);
|
|
164
|
-
const ttsTime = Date.now() - startTime;
|
|
165
|
-
const outputPath = path.join(process.cwd(), 'tts-test.mp3');
|
|
166
|
-
fs.writeFileSync(outputPath, audioResponse);
|
|
167
|
-
console.log('='.repeat(60));
|
|
168
|
-
console.log('✅ TTS TEST SUCCESSFUL');
|
|
169
|
-
console.log('='.repeat(60));
|
|
170
|
-
console.log(`\n🔊 Audio saved to: ${outputPath}`);
|
|
171
|
-
console.log(` Size: ${(audioResponse.length / 1024).toFixed(2)} KB`);
|
|
172
|
-
console.log(` Generation time: ${ttsTime}ms`);
|
|
173
|
-
console.log('\n💡 Play the audio file to hear the result!');
|
|
174
|
-
console.log('='.repeat(60));
|
|
175
|
-
}
|
|
176
|
-
catch (error) {
|
|
177
|
-
console.error('\n❌ Error generating TTS:', error.message);
|
|
178
|
-
console.error(error.stack);
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
console.log('\n✨ Demo complete!\n');
|
|
182
|
-
}
|
|
183
|
-
// Run the demo
|
|
184
|
-
runVoiceDemo().catch((error) => {
|
|
185
|
-
console.error('\n💥 Fatal error:', error);
|
|
186
|
-
process.exit(1);
|
|
187
|
-
});
|
|
188
|
-
//# sourceMappingURL=voice-demo.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"voice-demo.js","sourceRoot":"","sources":["../../src/demo/voice-demo.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ConversationSession = void 0;
|
|
4
|
-
const Message_1 = require("./Message");
|
|
5
|
-
const SessionState_1 = require("./SessionState");
|
|
6
|
-
class ConversationSession {
|
|
7
|
-
constructor(props) {
|
|
8
|
-
this.sessionId = props.sessionId;
|
|
9
|
-
this.mode = props.mode;
|
|
10
|
-
this.agentPrompt = props.agentPrompt;
|
|
11
|
-
this._messages = [];
|
|
12
|
-
this._status = SessionState_1.SessionStatus.ACTIVE;
|
|
13
|
-
this._metadata = {};
|
|
14
|
-
this.createdAt = new Date();
|
|
15
|
-
this.updatedAt = new Date();
|
|
16
|
-
}
|
|
17
|
-
// Helper to restore from persistence
|
|
18
|
-
static reconstitute(data) {
|
|
19
|
-
// We create a "shell" session via private constructor or just forcing it.
|
|
20
|
-
// For simplicity in this demo, we'll instantiate normally and override.
|
|
21
|
-
const session = new ConversationSession({
|
|
22
|
-
sessionId: data.sessionId,
|
|
23
|
-
mode: data.mode,
|
|
24
|
-
agentPrompt: data.agentPrompt
|
|
25
|
-
});
|
|
26
|
-
// Restore state
|
|
27
|
-
// Assuming messages are stored as plain objects, we need to map them back to Message instances
|
|
28
|
-
session._messages = (data.messages || []).map((m) => new Message_1.Message({
|
|
29
|
-
role: m.role,
|
|
30
|
-
content: m.content,
|
|
31
|
-
timestamp: new Date(m.timestamp),
|
|
32
|
-
metadata: m.metadata
|
|
33
|
-
}));
|
|
34
|
-
session._status = data.status;
|
|
35
|
-
session._metadata = data.metadata || {};
|
|
36
|
-
// @ts-ignore - writing to readonly for hydration
|
|
37
|
-
session.createdAt = new Date(data.createdAt);
|
|
38
|
-
session.updatedAt = new Date(data.updatedAt);
|
|
39
|
-
return session;
|
|
40
|
-
}
|
|
41
|
-
// Helper to snapshot for persistence
|
|
42
|
-
toSnapshot() {
|
|
43
|
-
return {
|
|
44
|
-
sessionId: this.sessionId,
|
|
45
|
-
mode: this.mode,
|
|
46
|
-
agentPrompt: this.agentPrompt,
|
|
47
|
-
messages: this._messages,
|
|
48
|
-
status: this._status,
|
|
49
|
-
metadata: this._metadata,
|
|
50
|
-
createdAt: this.createdAt,
|
|
51
|
-
updatedAt: this.updatedAt
|
|
52
|
-
};
|
|
53
|
-
}
|
|
54
|
-
get messages() {
|
|
55
|
-
return [...this._messages];
|
|
56
|
-
}
|
|
57
|
-
get status() {
|
|
58
|
-
return this._status;
|
|
59
|
-
}
|
|
60
|
-
addMessage(message) {
|
|
61
|
-
this._messages.push(message);
|
|
62
|
-
this.updatedAt = new Date();
|
|
63
|
-
}
|
|
64
|
-
updateStatus(status) {
|
|
65
|
-
this._status = status;
|
|
66
|
-
this.updatedAt = new Date();
|
|
67
|
-
}
|
|
68
|
-
setMetadata(key, value) {
|
|
69
|
-
this._metadata[key] = value;
|
|
70
|
-
this.updatedAt = new Date();
|
|
71
|
-
}
|
|
72
|
-
getMetadata(key) {
|
|
73
|
-
return this._metadata[key];
|
|
74
|
-
}
|
|
75
|
-
// Helper to get conversation history for LLM Context
|
|
76
|
-
// Can prepend system instructions here if needed by specific LLM adapters,
|
|
77
|
-
// but usually handled in the Adapter layer.
|
|
78
|
-
getHistory() {
|
|
79
|
-
return this._messages;
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
exports.ConversationSession = ConversationSession;
|