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
package/package.json
CHANGED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.InMemorySessionRepository = void 0;
|
|
4
|
-
class InMemorySessionRepository {
|
|
5
|
-
constructor() {
|
|
6
|
-
this.sessions = new Map();
|
|
7
|
-
}
|
|
8
|
-
async save(session) {
|
|
9
|
-
this.sessions.set(session.sessionId, session);
|
|
10
|
-
}
|
|
11
|
-
async findById(sessionId) {
|
|
12
|
-
return this.sessions.get(sessionId) || null;
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
exports.InMemorySessionRepository = InMemorySessionRepository;
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.RedisSessionRepository = void 0;
|
|
7
|
-
const ioredis_1 = __importDefault(require("ioredis"));
|
|
8
|
-
const ConversationSession_1 = require("../../domain/conversation/ConversationSession");
|
|
9
|
-
class RedisSessionRepository {
|
|
10
|
-
constructor(connectionString = 'redis://localhost:6379') {
|
|
11
|
-
this.TTL_SECONDS = 3600; // 1 Hour Expiry
|
|
12
|
-
this.client = new ioredis_1.default(connectionString);
|
|
13
|
-
this.client.on('error', (err) => {
|
|
14
|
-
console.error('[Redis Error]', err);
|
|
15
|
-
});
|
|
16
|
-
}
|
|
17
|
-
async save(session) {
|
|
18
|
-
const key = `session:${session.sessionId}`;
|
|
19
|
-
const data = JSON.stringify(session.toSnapshot());
|
|
20
|
-
await this.client.set(key, data, 'EX', this.TTL_SECONDS);
|
|
21
|
-
}
|
|
22
|
-
async findById(sessionId) {
|
|
23
|
-
const key = `session:${sessionId}`;
|
|
24
|
-
const data = await this.client.get(key);
|
|
25
|
-
if (!data)
|
|
26
|
-
return null;
|
|
27
|
-
try {
|
|
28
|
-
const parsed = JSON.parse(data);
|
|
29
|
-
return ConversationSession_1.ConversationSession.reconstitute(parsed);
|
|
30
|
-
}
|
|
31
|
-
catch (err) {
|
|
32
|
-
console.error(`Failed to reconstitute session ${sessionId}`, err);
|
|
33
|
-
return null;
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
// Helper to close connection
|
|
37
|
-
async disconnect() {
|
|
38
|
-
await this.client.quit();
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
exports.RedisSessionRepository = RedisSessionRepository;
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import { ILLMAdapter, Intent, MatchedIntent, Message } from '../../interfaces';
|
|
2
|
-
/**
|
|
3
|
-
* Intent matcher that uses LLM to match user context against known intents
|
|
4
|
-
*/
|
|
5
|
-
export declare class IntentMatcher {
|
|
6
|
-
private llm;
|
|
7
|
-
constructor(llm: ILLMAdapter);
|
|
8
|
-
/**
|
|
9
|
-
* Match user context against a list of intents
|
|
10
|
-
* @param context User context (string or object)
|
|
11
|
-
* @param intents Available intents to match against
|
|
12
|
-
* @param confidenceThreshold Minimum confidence threshold (0-100)
|
|
13
|
-
* @returns Array of matched intents above threshold
|
|
14
|
-
*/
|
|
15
|
-
matchIntents(context: string | object, intents: Intent[], confidenceThreshold?: number): Promise<MatchedIntent[]>;
|
|
16
|
-
/**
|
|
17
|
-
* Detect intent from conversation history
|
|
18
|
-
* @param history Conversation history
|
|
19
|
-
* @param intents Available intents
|
|
20
|
-
* @param confidenceThreshold Minimum confidence threshold (0-100)
|
|
21
|
-
* @returns Best matched intent or null
|
|
22
|
-
*/
|
|
23
|
-
detectFromHistory(history: Message[], intents: Intent[], confidenceThreshold?: number): Promise<MatchedIntent | null>;
|
|
24
|
-
/**
|
|
25
|
-
* Extract parameters from a follow-up response
|
|
26
|
-
* Used in collaborative mode to collect missing parameters
|
|
27
|
-
* @param userResponse User's response to clarification question
|
|
28
|
-
* @param intent The intent being collected for
|
|
29
|
-
* @param missingParameters List of parameter names to extract
|
|
30
|
-
* @returns Extracted parameter values
|
|
31
|
-
*/
|
|
32
|
-
extractParameters(userResponse: string, intent: Intent, missingParameters: string[]): Promise<Record<string, any>>;
|
|
33
|
-
/**
|
|
34
|
-
* Identify which required parameters are missing from provided values
|
|
35
|
-
* @param intent The intent to check
|
|
36
|
-
* @param providedValues Currently provided parameter values
|
|
37
|
-
* @returns Array of missing required parameter names
|
|
38
|
-
*/
|
|
39
|
-
identifyMissingParameters(intent: Intent, providedValues: Record<string, any>): string[];
|
|
40
|
-
}
|
|
41
|
-
//# sourceMappingURL=IntentMatcher.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"IntentMatcher.d.ts","sourceRoot":"","sources":["../../../src/adapters/intent/IntentMatcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAG/E;;GAEG;AACH,qBAAa,aAAa;IACV,OAAO,CAAC,GAAG;gBAAH,GAAG,EAAE,WAAW;IAEpC;;;;;;OAMG;IACG,YAAY,CACd,OAAO,EAAE,MAAM,GAAG,MAAM,EACxB,OAAO,EAAE,MAAM,EAAE,EACjB,mBAAmB,GAAE,MAAW,GACjC,OAAO,CAAC,aAAa,EAAE,CAAC;IAgE3B;;;;;;OAMG;IACG,iBAAiB,CACnB,OAAO,EAAE,OAAO,EAAE,EAClB,OAAO,EAAE,MAAM,EAAE,EACjB,mBAAmB,GAAE,MAAW,GACjC,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAkBhC;;;;;;;OAOG;IACG,iBAAiB,CACnB,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,EACd,iBAAiB,EAAE,MAAM,EAAE,GAC5B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IA6C/B;;;;;OAKG;IACH,yBAAyB,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,EAAE;CAc3F"}
|
|
@@ -1,167 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.IntentMatcher = void 0;
|
|
4
|
-
const errors_1 = require("../../core/errors");
|
|
5
|
-
/**
|
|
6
|
-
* Intent matcher that uses LLM to match user context against known intents
|
|
7
|
-
*/
|
|
8
|
-
class IntentMatcher {
|
|
9
|
-
constructor(llm) {
|
|
10
|
-
this.llm = llm;
|
|
11
|
-
}
|
|
12
|
-
/**
|
|
13
|
-
* Match user context against a list of intents
|
|
14
|
-
* @param context User context (string or object)
|
|
15
|
-
* @param intents Available intents to match against
|
|
16
|
-
* @param confidenceThreshold Minimum confidence threshold (0-100)
|
|
17
|
-
* @returns Array of matched intents above threshold
|
|
18
|
-
*/
|
|
19
|
-
async matchIntents(context, intents, confidenceThreshold = 70) {
|
|
20
|
-
if (intents.length === 0)
|
|
21
|
-
return [];
|
|
22
|
-
const contextStr = typeof context === "string" ? context : JSON.stringify(context);
|
|
23
|
-
const prompt = `
|
|
24
|
-
You are a strict known intent classifier.
|
|
25
|
-
Your goal is to determine if the TARGET_MESSAGE strictly matches one of the provided INTENTS.
|
|
26
|
-
|
|
27
|
-
<INTENTS>
|
|
28
|
-
${JSON.stringify(intents, null, 2)}
|
|
29
|
-
</INTENTS>
|
|
30
|
-
|
|
31
|
-
<CONTEXT_RULES>
|
|
32
|
-
1. YOUR SOLE GOAL is to classify the intent of the TARGET_MESSAGE.
|
|
33
|
-
2. CONVERSATION_HISTORY is provided PURELY for contextual reference (e.g. resolving "it", "that", "same one").
|
|
34
|
-
3. CONVERSATION_HISTORY MAY ONLY influence confidence scoring or reference resolution.
|
|
35
|
-
4. CONVERSATION_HISTORY MUST NOT introduce, imply, or resurrect an intent that is not explicitly implied in the TARGET_MESSAGE.
|
|
36
|
-
5. DO NOT carry over intents from the history. If the user previously asked for pricing but now says "bye", the intent is NONE.
|
|
37
|
-
6. If the TARGET_MESSAGE is a generic acknowledgement ("ok", "thanks"), a closure ("bye", "goodbye"), or off-topic, return an EMPTY array [].
|
|
38
|
-
7. STRICT MATCHING: The user must explicitly imply the intent in the TARGET_MESSAGE. Do not guess based on previous topics.
|
|
39
|
-
</CONTEXT_RULES>
|
|
40
|
-
|
|
41
|
-
<OUTPUT_FORMAT>
|
|
42
|
-
Return a JSON array of matched intents.
|
|
43
|
-
[
|
|
44
|
-
{
|
|
45
|
-
"intentName": string,
|
|
46
|
-
"confidence": number (0-100),
|
|
47
|
-
"required_values": { ... },
|
|
48
|
-
"optional_values": { ... }
|
|
49
|
-
}
|
|
50
|
-
]
|
|
51
|
-
</OUTPUT_FORMAT>
|
|
52
|
-
|
|
53
|
-
${contextStr}
|
|
54
|
-
`;
|
|
55
|
-
try {
|
|
56
|
-
const text = await this.llm.generateContent(prompt);
|
|
57
|
-
const parsed = JSON.parse(text.replace(/^```json\s*/, '').replace(/```$/, '').trim());
|
|
58
|
-
const results = [];
|
|
59
|
-
for (const match of parsed) {
|
|
60
|
-
if (match.confidence < confidenceThreshold)
|
|
61
|
-
continue;
|
|
62
|
-
const intent = intents.find(i => i.name === match.intentName);
|
|
63
|
-
if (!intent)
|
|
64
|
-
continue;
|
|
65
|
-
results.push({
|
|
66
|
-
intent,
|
|
67
|
-
confidence: match.confidence,
|
|
68
|
-
required_values: match.required_values,
|
|
69
|
-
optional_values: match.optional_values,
|
|
70
|
-
});
|
|
71
|
-
}
|
|
72
|
-
return results;
|
|
73
|
-
}
|
|
74
|
-
catch (err) {
|
|
75
|
-
throw new errors_1.IntentDetectionError('Failed to parse LLM output', { error: err instanceof Error ? err.message : String(err), context: contextStr });
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
/**
|
|
79
|
-
* Detect intent from conversation history
|
|
80
|
-
* @param history Conversation history
|
|
81
|
-
* @param intents Available intents
|
|
82
|
-
* @param confidenceThreshold Minimum confidence threshold (0-100)
|
|
83
|
-
* @returns Best matched intent or null
|
|
84
|
-
*/
|
|
85
|
-
async detectFromHistory(history, intents, confidenceThreshold = 70) {
|
|
86
|
-
// Use last message as target, and ALL previous messages as history for context
|
|
87
|
-
const lastMessage = history[history.length - 1];
|
|
88
|
-
const previousMessages = history.slice(0, -1);
|
|
89
|
-
const historyStr = previousMessages.length > 0
|
|
90
|
-
? `<CONVERSATION_HISTORY>\n${previousMessages.map(m => `${m.role}: ${m.content}`).join('\n')}\n</CONVERSATION_HISTORY>`
|
|
91
|
-
: '<CONVERSATION_HISTORY>\n(None)\n</CONVERSATION_HISTORY>';
|
|
92
|
-
const targetStr = `<TARGET_MESSAGE>\n${lastMessage.role}: ${lastMessage.content}\n</TARGET_MESSAGE>`;
|
|
93
|
-
const contextStr = `${historyStr}\n\n${targetStr}`;
|
|
94
|
-
const matches = await this.matchIntents(contextStr, intents, confidenceThreshold);
|
|
95
|
-
return matches.length > 0 ? matches[0] : null;
|
|
96
|
-
}
|
|
97
|
-
/**
|
|
98
|
-
* Extract parameters from a follow-up response
|
|
99
|
-
* Used in collaborative mode to collect missing parameters
|
|
100
|
-
* @param userResponse User's response to clarification question
|
|
101
|
-
* @param intent The intent being collected for
|
|
102
|
-
* @param missingParameters List of parameter names to extract
|
|
103
|
-
* @returns Extracted parameter values
|
|
104
|
-
*/
|
|
105
|
-
async extractParameters(userResponse, intent, missingParameters) {
|
|
106
|
-
// Build field descriptions for better extraction
|
|
107
|
-
const fieldDescriptions = missingParameters.map(paramName => {
|
|
108
|
-
const field = [...intent.required_fields, ...(intent.optional_fields || [])]
|
|
109
|
-
.find(f => f.name === paramName);
|
|
110
|
-
if (!field)
|
|
111
|
-
return `- ${paramName}`;
|
|
112
|
-
const displayName = field.displayName || paramName;
|
|
113
|
-
const description = field.description || '';
|
|
114
|
-
return `- ${paramName} (${displayName}): ${description}`;
|
|
115
|
-
}).join('\n');
|
|
116
|
-
const prompt = `
|
|
117
|
-
Extract the following parameters from the user's response.
|
|
118
|
-
Only extract values that are explicitly mentioned. Do not hallucinate or infer values.
|
|
119
|
-
|
|
120
|
-
Intent: ${intent.name}
|
|
121
|
-
Description: ${intent.description}
|
|
122
|
-
|
|
123
|
-
Missing Parameters:
|
|
124
|
-
${fieldDescriptions}
|
|
125
|
-
|
|
126
|
-
User Response: "${userResponse}"
|
|
127
|
-
|
|
128
|
-
Return JSON with extracted values. Use the exact parameter names as keys.
|
|
129
|
-
If a parameter is not found in the response, omit it from the JSON.
|
|
130
|
-
|
|
131
|
-
Example format:
|
|
132
|
-
{
|
|
133
|
-
"parameter_name": "extracted_value"
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
JSON:`;
|
|
137
|
-
try {
|
|
138
|
-
const text = await this.llm.generateContent(prompt);
|
|
139
|
-
const cleaned = text.replace(/^```json\s*/, '').replace(/```$/, '').trim();
|
|
140
|
-
return JSON.parse(cleaned);
|
|
141
|
-
}
|
|
142
|
-
catch (err) {
|
|
143
|
-
console.error('[IntentMatcher] Failed to extract parameters:', err);
|
|
144
|
-
return {};
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
/**
|
|
148
|
-
* Identify which required parameters are missing from provided values
|
|
149
|
-
* @param intent The intent to check
|
|
150
|
-
* @param providedValues Currently provided parameter values
|
|
151
|
-
* @returns Array of missing required parameter names
|
|
152
|
-
*/
|
|
153
|
-
identifyMissingParameters(intent, providedValues) {
|
|
154
|
-
const missing = [];
|
|
155
|
-
for (const field of intent.required_fields) {
|
|
156
|
-
const value = providedValues[field.name];
|
|
157
|
-
// Consider null, undefined, empty string, or empty array as missing
|
|
158
|
-
if (value === null || value === undefined || value === '' ||
|
|
159
|
-
(Array.isArray(value) && value.length === 0)) {
|
|
160
|
-
missing.push(field.name);
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
return missing;
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
exports.IntentMatcher = IntentMatcher;
|
|
167
|
-
//# sourceMappingURL=IntentMatcher.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"IntentMatcher.js","sourceRoot":"","sources":["../../../src/adapters/intent/IntentMatcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { IIntentService, IntentResult, Message, Intent, MatchedIntent, IRepository } from '../../interfaces';
|
|
2
|
-
import { IntentMatcher } from './IntentMatcher';
|
|
3
|
-
/**
|
|
4
|
-
* Refactored Intent Service with proper separation of concerns
|
|
5
|
-
* - Uses IRepository for data access
|
|
6
|
-
* - Uses IntentMatcher for matching logic
|
|
7
|
-
*/
|
|
8
|
-
export declare class IntentService implements IIntentService {
|
|
9
|
-
private repository;
|
|
10
|
-
private matcher;
|
|
11
|
-
private confidenceThreshold;
|
|
12
|
-
constructor(repository: IRepository, matcher: IntentMatcher, confidenceThreshold?: number);
|
|
13
|
-
/**
|
|
14
|
-
* Detect intent from conversation history
|
|
15
|
-
*/
|
|
16
|
-
detectIntent(history: Message[], systemPrompt: string, tenantId?: string): Promise<IntentResult>;
|
|
17
|
-
/**
|
|
18
|
-
* Upsert multiple intents
|
|
19
|
-
*/
|
|
20
|
-
upsertIntents(intents: Intent[]): Promise<void>;
|
|
21
|
-
/**
|
|
22
|
-
* Match intents against context
|
|
23
|
-
*/
|
|
24
|
-
matchIntents(context: string | object, confidenceThreshold?: number): Promise<MatchedIntent[]>;
|
|
25
|
-
}
|
|
26
|
-
//# sourceMappingURL=IntentService.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"IntentService.d.ts","sourceRoot":"","sources":["../../../src/adapters/intent/IntentService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC7G,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD;;;;GAIG;AACH,qBAAa,aAAc,YAAW,cAAc;IAE5C,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,mBAAmB;gBAFnB,UAAU,EAAE,WAAW,EACvB,OAAO,EAAE,aAAa,EACtB,mBAAmB,GAAE,MAAW;IAG5C;;OAEG;IACG,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IA2CtG;;OAEG;IACG,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrD;;OAEG;IACG,YAAY,CACd,OAAO,EAAE,MAAM,GAAG,MAAM,EACxB,mBAAmB,CAAC,EAAE,MAAM,GAC7B,OAAO,CAAC,aAAa,EAAE,CAAC;CAQ9B"}
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.IntentService = void 0;
|
|
4
|
-
/**
|
|
5
|
-
* Refactored Intent Service with proper separation of concerns
|
|
6
|
-
* - Uses IRepository for data access
|
|
7
|
-
* - Uses IntentMatcher for matching logic
|
|
8
|
-
*/
|
|
9
|
-
class IntentService {
|
|
10
|
-
constructor(repository, matcher, confidenceThreshold = 70) {
|
|
11
|
-
this.repository = repository;
|
|
12
|
-
this.matcher = matcher;
|
|
13
|
-
this.confidenceThreshold = confidenceThreshold;
|
|
14
|
-
}
|
|
15
|
-
/**
|
|
16
|
-
* Detect intent from conversation history
|
|
17
|
-
*/
|
|
18
|
-
async detectIntent(history, systemPrompt, tenantId) {
|
|
19
|
-
const allIntents = await this.repository.getAllIntents(tenantId);
|
|
20
|
-
if (allIntents.length === 0) {
|
|
21
|
-
return {
|
|
22
|
-
intentName: null,
|
|
23
|
-
confidence: 0,
|
|
24
|
-
payload: {},
|
|
25
|
-
missingRequiredParameters: []
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
const match = await this.matcher.detectFromHistory(history, allIntents, this.confidenceThreshold);
|
|
29
|
-
if (match) {
|
|
30
|
-
const payload = {
|
|
31
|
-
...match.required_values,
|
|
32
|
-
...match.optional_values
|
|
33
|
-
};
|
|
34
|
-
// Identify missing required parameters
|
|
35
|
-
const missingParams = this.matcher.identifyMissingParameters(match.intent, payload);
|
|
36
|
-
return {
|
|
37
|
-
intentName: match.intent.name,
|
|
38
|
-
confidence: match.confidence / 100, // Convert 0-100 to 0-1
|
|
39
|
-
payload,
|
|
40
|
-
missingRequiredParameters: missingParams
|
|
41
|
-
};
|
|
42
|
-
}
|
|
43
|
-
return {
|
|
44
|
-
intentName: null,
|
|
45
|
-
confidence: 0,
|
|
46
|
-
payload: {},
|
|
47
|
-
missingRequiredParameters: []
|
|
48
|
-
};
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* Upsert multiple intents
|
|
52
|
-
*/
|
|
53
|
-
async upsertIntents(intents) {
|
|
54
|
-
return this.repository.upsertIntents(intents);
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* Match intents against context
|
|
58
|
-
*/
|
|
59
|
-
async matchIntents(context, confidenceThreshold) {
|
|
60
|
-
const allIntents = await this.repository.getAllIntents();
|
|
61
|
-
return this.matcher.matchIntents(context, allIntents, confidenceThreshold ?? this.confidenceThreshold);
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
exports.IntentService = IntentService;
|
|
65
|
-
//# sourceMappingURL=IntentService.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"IntentService.js","sourceRoot":"","sources":["../../../src/adapters/intent/IntentService.ts"],"names":[],"mappings":";;;AAGA;;;;GAIG;AACH,MAAa,aAAa;IACtB,YACY,UAAuB,EACvB,OAAsB,EACtB,sBAA8B,EAAE;QAFhC,eAAU,GAAV,UAAU,CAAa;QACvB,YAAO,GAAP,OAAO,CAAe;QACtB,wBAAmB,GAAnB,mBAAmB,CAAa;IACxC,CAAC;IAEL;;OAEG;IACH,KAAK,CAAC,YAAY,CAAC,OAAkB,EAAE,YAAoB,EAAE,QAAiB;QAC1E,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAEjE,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO;gBACH,UAAU,EAAE,IAAI;gBAChB,UAAU,EAAE,CAAC;gBACb,OAAO,EAAE,EAAE;gBACX,yBAAyB,EAAE,EAAE;aAChC,CAAC;QACN,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAC9C,OAAO,EACP,UAAU,EACV,IAAI,CAAC,mBAAmB,CAC3B,CAAC;QAEF,IAAI,KAAK,EAAE,CAAC;YACR,MAAM,OAAO,GAAG;gBACZ,GAAG,KAAK,CAAC,eAAe;gBACxB,GAAG,KAAK,CAAC,eAAe;aAC3B,CAAC;YAEF,uCAAuC;YACvC,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,yBAAyB,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAEpF,OAAO;gBACH,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI;gBAC7B,UAAU,EAAE,KAAK,CAAC,UAAU,GAAG,GAAG,EAAE,uBAAuB;gBAC3D,OAAO;gBACP,yBAAyB,EAAE,aAAa;aAC3C,CAAC;QACN,CAAC;QAED,OAAO;YACH,UAAU,EAAE,IAAI;YAChB,UAAU,EAAE,CAAC;YACb,OAAO,EAAE,EAAE;YACX,yBAAyB,EAAE,EAAE;SAChC,CAAC;IACN,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CAAC,OAAiB;QACjC,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAClD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CACd,OAAwB,EACxB,mBAA4B;QAE5B,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC;QACzD,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAC5B,OAAO,EACP,UAAU,EACV,mBAAmB,IAAI,IAAI,CAAC,mBAAmB,CAClD,CAAC;IACN,CAAC;CACJ;AA1ED,sCA0EC"}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.MockIntentAdapter = void 0;
|
|
4
|
-
class MockIntentAdapter {
|
|
5
|
-
async detectIntent(history, systemPrompt) {
|
|
6
|
-
const lastMsg = history[history.length - 1].content.toLowerCase();
|
|
7
|
-
// Simple keyword detection for demo
|
|
8
|
-
if (lastMsg.includes('book') || lastMsg.includes('flight') || lastMsg.includes('paris')) {
|
|
9
|
-
return {
|
|
10
|
-
intentName: 'USER_WANTS_FLIGHT',
|
|
11
|
-
confidence: 0.95,
|
|
12
|
-
payload: { destination: 'Paris' }
|
|
13
|
-
};
|
|
14
|
-
}
|
|
15
|
-
if (lastMsg.includes('morning') || lastMsg.includes('10 am')) {
|
|
16
|
-
return {
|
|
17
|
-
intentName: 'USER_SELECT_FLIGHT',
|
|
18
|
-
confidence: 0.9,
|
|
19
|
-
payload: { chosen_flight: 'AC123 (10:00 AM)' }
|
|
20
|
-
};
|
|
21
|
-
}
|
|
22
|
-
return {
|
|
23
|
-
intentName: null,
|
|
24
|
-
confidence: 0,
|
|
25
|
-
payload: {}
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
exports.MockIntentAdapter = MockIntentAdapter;
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { IIntentService, IntentResult, MatchedIntent } from '../../interfaces';
|
|
2
|
-
import { Message } from '../../interfaces';
|
|
3
|
-
export declare class MockIntentService implements IIntentService {
|
|
4
|
-
detectIntent(history: Message[], systemPrompt: string): Promise<IntentResult>;
|
|
5
|
-
matchIntents(): Promise<MatchedIntent[]>;
|
|
6
|
-
}
|
|
7
|
-
//# sourceMappingURL=MockIntentService.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MockIntentService.d.ts","sourceRoot":"","sources":["../../../src/adapters/intent/MockIntentService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAC/E,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAE3C,qBAAa,iBAAkB,YAAW,cAAc;IAC9C,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IA8B7E,YAAY,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;CAGjD"}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.MockIntentService = void 0;
|
|
4
|
-
class MockIntentService {
|
|
5
|
-
async detectIntent(history, systemPrompt) {
|
|
6
|
-
const lastMsg = history[history.length - 1].content.toLowerCase();
|
|
7
|
-
// Simple keyword detection for demo
|
|
8
|
-
if (lastMsg.includes('book') || lastMsg.includes('flight') || lastMsg.includes('paris')) {
|
|
9
|
-
return {
|
|
10
|
-
intentName: 'USER_WANTS_FLIGHT',
|
|
11
|
-
confidence: 0.95,
|
|
12
|
-
payload: { destination: 'Paris' },
|
|
13
|
-
missingRequiredParameters: []
|
|
14
|
-
};
|
|
15
|
-
}
|
|
16
|
-
if (lastMsg.includes('morning') || lastMsg.includes('10 am')) {
|
|
17
|
-
return {
|
|
18
|
-
intentName: 'USER_SELECT_FLIGHT',
|
|
19
|
-
confidence: 0.9,
|
|
20
|
-
payload: { chosen_flight: 'AC123 (10:00 AM)' },
|
|
21
|
-
missingRequiredParameters: []
|
|
22
|
-
};
|
|
23
|
-
}
|
|
24
|
-
return {
|
|
25
|
-
intentName: null,
|
|
26
|
-
confidence: 0,
|
|
27
|
-
payload: {},
|
|
28
|
-
missingRequiredParameters: []
|
|
29
|
-
};
|
|
30
|
-
}
|
|
31
|
-
async matchIntents() {
|
|
32
|
-
return [];
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
exports.MockIntentService = MockIntentService;
|
|
36
|
-
//# sourceMappingURL=MockIntentService.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MockIntentService.js","sourceRoot":"","sources":["../../../src/adapters/intent/MockIntentService.ts"],"names":[],"mappings":";;;AAGA,MAAa,iBAAiB;IAC1B,KAAK,CAAC,YAAY,CAAC,OAAkB,EAAE,YAAoB;QACvD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;QAElE,oCAAoC;QACpC,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YACtF,OAAO;gBACH,UAAU,EAAE,mBAAmB;gBAC/B,UAAU,EAAE,IAAI;gBAChB,OAAO,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE;gBACjC,yBAAyB,EAAE,EAAE;aAChC,CAAC;QACN,CAAC;QAED,IAAI,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3D,OAAO;gBACH,UAAU,EAAE,oBAAoB;gBAChC,UAAU,EAAE,GAAG;gBACf,OAAO,EAAE,EAAE,aAAa,EAAE,kBAAkB,EAAE;gBAC9C,yBAAyB,EAAE,EAAE;aAChC,CAAC;QACN,CAAC;QAED,OAAO;YACH,UAAU,EAAE,IAAI;YAChB,UAAU,EAAE,CAAC;YACb,OAAO,EAAE,EAAE;YACX,yBAAyB,EAAE,EAAE;SAChC,CAAC;IACN,CAAC;IAED,KAAK,CAAC,YAAY;QACd,OAAO,EAAE,CAAC;IACd,CAAC;CACJ;AAlCD,8CAkCC"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { ILLMAdapter, LLMResponse, Message } from '../../interfaces';
|
|
2
|
-
export declare class GeminiLLMAdapter implements ILLMAdapter {
|
|
3
|
-
private genAI;
|
|
4
|
-
private model;
|
|
5
|
-
private embeddingModel;
|
|
6
|
-
constructor(apiKey: string);
|
|
7
|
-
generateResponse(systemPrompt: string, history: Message[]): Promise<LLMResponse>;
|
|
8
|
-
generateContent(prompt: string): Promise<string>;
|
|
9
|
-
}
|
|
10
|
-
//# sourceMappingURL=GeminiLLMAdapter.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"GeminiLLMAdapter.d.ts","sourceRoot":"","sources":["../../../src/adapters/llm/GeminiLLMAdapter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,OAAO,EAAQ,MAAM,kBAAkB,CAAC;AAE3E,qBAAa,gBAAiB,YAAW,WAAW;IAChD,OAAO,CAAC,KAAK,CAAqB;IAClC,OAAO,CAAC,KAAK,CAAM;IACnB,OAAO,CAAC,cAAc,CAAM;gBAEhB,MAAM,EAAE,MAAM;IAKpB,gBAAgB,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC;IAqGhF,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAIzD"}
|
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.GeminiLLMAdapter = void 0;
|
|
4
|
-
const generative_ai_1 = require("@google/generative-ai");
|
|
5
|
-
const interfaces_1 = require("../../interfaces");
|
|
6
|
-
class GeminiLLMAdapter {
|
|
7
|
-
constructor(apiKey) {
|
|
8
|
-
this.genAI = new generative_ai_1.GoogleGenerativeAI(apiKey);
|
|
9
|
-
this.model = this.genAI.getGenerativeModel({ model: 'gemini-2.0-flash-lite' });
|
|
10
|
-
}
|
|
11
|
-
async generateResponse(systemPrompt, history) {
|
|
12
|
-
// 1. Convert History to Gemini Format
|
|
13
|
-
// Note: Gemini API treats 'user' and 'model' roles.
|
|
14
|
-
// We prepend the sensitive system prompt via the chat history or handle it if the SDK supports systemInstruction (newer versions do).
|
|
15
|
-
// For simplicity with strictly message history:
|
|
16
|
-
// 1. Convert History to Gemini Format
|
|
17
|
-
// Note: Gemini API treats 'user' and 'model' roles.
|
|
18
|
-
// We prepend the sensitive system prompt via the chat history or handle it if the SDK supports systemInstruction (newer versions do).
|
|
19
|
-
// For simplicity with strictly message history:
|
|
20
|
-
const validHistory = [];
|
|
21
|
-
let systemContext = "";
|
|
22
|
-
for (const msg of history) {
|
|
23
|
-
if (msg.role === interfaces_1.Role.SYSTEM) {
|
|
24
|
-
// Collect system messages to prepend to the next user message or context
|
|
25
|
-
systemContext += `${msg.content}\n`;
|
|
26
|
-
continue;
|
|
27
|
-
}
|
|
28
|
-
const role = msg.role === interfaces_1.Role.USER ? 'user' : 'model';
|
|
29
|
-
validHistory.push({
|
|
30
|
-
role,
|
|
31
|
-
parts: [{ text: msg.content }]
|
|
32
|
-
});
|
|
33
|
-
}
|
|
34
|
-
// 2. Start Chat (or use generateContent with history context)
|
|
35
|
-
// Using startChat allows maintain context if we needed state, but we are stateless here mostly.
|
|
36
|
-
// However, we want to inject the "system prompt".
|
|
37
|
-
// We'll prepend it as a user message or use the systemInstruction property if available in the specific model/version usage.
|
|
38
|
-
// A common pattern for models without explicit system role in message list is to prepend to first user message or separate config.
|
|
39
|
-
// Let's use the simple chat approach.
|
|
40
|
-
const chat = this.model.startChat({
|
|
41
|
-
history: validHistory,
|
|
42
|
-
// systemInstruction: systemPrompt // Available in newer models/SDKs
|
|
43
|
-
});
|
|
44
|
-
// But wait, 'startChat' requires the history TO NOT include the *last* user message if we are about to send it via sendMessage.
|
|
45
|
-
// "history" here is the *past* messages.
|
|
46
|
-
// The *current* message (last one) should be sent via sendMessage.
|
|
47
|
-
// Let's re-slice.
|
|
48
|
-
const pastHistory = validHistory.slice(0, -1);
|
|
49
|
-
const lastMessage = validHistory[validHistory.length - 1];
|
|
50
|
-
// If for some reason history is empty (shouldn't happen in this flow as user just spoke), handle it.
|
|
51
|
-
const msgToSend = lastMessage ? lastMessage.parts[0].text : 'Hello';
|
|
52
|
-
// Prepend system prompt AND any collected systemContext to the context.
|
|
53
|
-
// Easiest hack: Prepend a "User" message with "Instructions: ..." at the very start of history.
|
|
54
|
-
const fullSystemInstruction = `[System Instructions]: ${systemPrompt}\n\n[Context]: ${systemContext}`;
|
|
55
|
-
if (pastHistory.length === 0) {
|
|
56
|
-
// No history, so this is the first message. Combine system prompt.
|
|
57
|
-
// Actually, we can't modify msgToSend easily if we want strict separation, but let's just prepend instruction to the first message of the session.
|
|
58
|
-
// However, since we are re-instantiating chat every request (stateless adapter), we can just craft the history.
|
|
59
|
-
}
|
|
60
|
-
else {
|
|
61
|
-
// Inject system prompt into the first message of pastHistory
|
|
62
|
-
pastHistory[0].parts[0].text = `${fullSystemInstruction}\n\n${pastHistory[0].parts[0].text}`;
|
|
63
|
-
}
|
|
64
|
-
// Note: If pastHistory is empty, we must inject into msgToSend.
|
|
65
|
-
let finalMsgToSend = msgToSend;
|
|
66
|
-
if (pastHistory.length === 0) {
|
|
67
|
-
finalMsgToSend = `${fullSystemInstruction}\n\n${msgToSend}`;
|
|
68
|
-
}
|
|
69
|
-
try {
|
|
70
|
-
const chatSession = this.model.startChat({
|
|
71
|
-
history: pastHistory,
|
|
72
|
-
});
|
|
73
|
-
const result = await chatSession.sendMessage(finalMsgToSend);
|
|
74
|
-
const response = await result.response;
|
|
75
|
-
const text = response.text();
|
|
76
|
-
return {
|
|
77
|
-
content: text,
|
|
78
|
-
usage: {
|
|
79
|
-
// Gemini doesn't always return token info easily in simple response, defaulting
|
|
80
|
-
promptTokens: 0,
|
|
81
|
-
completionTokens: 0
|
|
82
|
-
}
|
|
83
|
-
};
|
|
84
|
-
}
|
|
85
|
-
catch (error) {
|
|
86
|
-
console.error('Gemini API Error:', error);
|
|
87
|
-
return {
|
|
88
|
-
content: "I'm sorry, I'm having trouble connecting to my brain right now.",
|
|
89
|
-
usage: {
|
|
90
|
-
promptTokens: 0,
|
|
91
|
-
completionTokens: 0
|
|
92
|
-
}
|
|
93
|
-
};
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
async generateContent(prompt) {
|
|
97
|
-
const response = await this.model.generateContent(prompt);
|
|
98
|
-
return response.response.text();
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
exports.GeminiLLMAdapter = GeminiLLMAdapter;
|
|
102
|
-
//# sourceMappingURL=GeminiLLMAdapter.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"GeminiLLMAdapter.js","sourceRoot":"","sources":["../../../src/adapters/llm/GeminiLLMAdapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MockLLMAdapter.d.ts","sourceRoot":"","sources":["../../../src/adapters/llm/MockLLMAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAErE,qBAAa,cAAe,YAAW,WAAW;IACxC,gBAAgB,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC;CAwBzF"}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.MockLLMAdapter = void 0;
|
|
4
|
-
class MockLLMAdapter {
|
|
5
|
-
async generateResponse(systemPrompt, history) {
|
|
6
|
-
const lastMsg = history[history.length - 1].content.toLowerCase();
|
|
7
|
-
let content = "I can help with that.";
|
|
8
|
-
// Basic mock logic to respond to workflow data
|
|
9
|
-
if (lastMsg.includes('system info: workflow detected')) {
|
|
10
|
-
if (lastMsg.includes('booking_confirmed')) {
|
|
11
|
-
content = "You are all set! I have booked flight AC123 for you. Reference: SKY-999-XYZ. Safe travels!";
|
|
12
|
-
}
|
|
13
|
-
else if (lastMsg.includes('found_flights')) {
|
|
14
|
-
content = "I found a couple of flights to Paris. There is one at 10:00 AM ($500) and another at 2:00 PM ($450). Do you prefer the morning or afternoon one?";
|
|
15
|
-
}
|
|
16
|
-
else {
|
|
17
|
-
content = "I have checked the system and have the information you need.";
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
else {
|
|
21
|
-
// Default generic chat
|
|
22
|
-
content = `This is a mock AI response to: "${lastMsg}".`;
|
|
23
|
-
}
|
|
24
|
-
return {
|
|
25
|
-
content,
|
|
26
|
-
usage: { promptTokens: 10, completionTokens: 10 }
|
|
27
|
-
};
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
exports.MockLLMAdapter = MockLLMAdapter;
|
|
31
|
-
//# sourceMappingURL=MockLLMAdapter.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MockLLMAdapter.js","sourceRoot":"","sources":["../../../src/adapters/llm/MockLLMAdapter.ts"],"names":[],"mappings":";;;AAEA,MAAa,cAAc;IACvB,KAAK,CAAC,gBAAgB,CAAC,YAAoB,EAAE,OAAkB;QAC3D,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;QAElE,IAAI,OAAO,GAAG,uBAAuB,CAAC;QAEtC,+CAA+C;QAC/C,IAAI,OAAO,CAAC,QAAQ,CAAC,gCAAgC,CAAC,EAAE,CAAC;YACrD,IAAI,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;gBACxC,OAAO,GAAG,4FAA4F,CAAC;YAC3G,CAAC;iBAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;gBAC3C,OAAO,GAAG,kJAAkJ,CAAC;YACjK,CAAC;iBAAM,CAAC;gBACJ,OAAO,GAAG,8DAA8D,CAAC;YAC7E,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,uBAAuB;YACvB,OAAO,GAAG,mCAAmC,OAAO,IAAI,CAAC;QAC7D,CAAC;QAED,OAAO;YACH,OAAO;YACP,KAAK,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE;SACpD,CAAC;IACN,CAAC;CACJ;AAzBD,wCAyBC"}
|