@framers/agentos 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +98 -0
- package/README.md +576 -0
- package/dist/api/AgentOS.d.ts +451 -0
- package/dist/api/AgentOS.d.ts.map +1 -0
- package/dist/api/AgentOS.js +1157 -0
- package/dist/api/AgentOS.js.map +1 -0
- package/dist/api/AgentOSOrchestrator.d.ts +157 -0
- package/dist/api/AgentOSOrchestrator.d.ts.map +1 -0
- package/dist/api/AgentOSOrchestrator.js +679 -0
- package/dist/api/AgentOSOrchestrator.js.map +1 -0
- package/dist/api/interfaces/IAgentOS.d.ts +138 -0
- package/dist/api/interfaces/IAgentOS.d.ts.map +1 -0
- package/dist/api/interfaces/IAgentOS.js +11 -0
- package/dist/api/interfaces/IAgentOS.js.map +1 -0
- package/dist/api/interfaces/IUnifiedAgent.d.ts +126 -0
- package/dist/api/interfaces/IUnifiedAgent.d.ts.map +1 -0
- package/dist/api/interfaces/IUnifiedAgent.js +3 -0
- package/dist/api/interfaces/IUnifiedAgent.js.map +1 -0
- package/dist/api/types/AgentOSInput.d.ts +114 -0
- package/dist/api/types/AgentOSInput.d.ts.map +1 -0
- package/dist/api/types/AgentOSInput.js +13 -0
- package/dist/api/types/AgentOSInput.js.map +1 -0
- package/dist/api/types/AgentOSResponse.d.ts +170 -0
- package/dist/api/types/AgentOSResponse.d.ts.map +1 -0
- package/dist/api/types/AgentOSResponse.js +25 -0
- package/dist/api/types/AgentOSResponse.js.map +1 -0
- package/dist/cognitive_substrate/GMI.d.ts +148 -0
- package/dist/cognitive_substrate/GMI.d.ts.map +1 -0
- package/dist/cognitive_substrate/GMI.js +1003 -0
- package/dist/cognitive_substrate/GMI.js.map +1 -0
- package/dist/cognitive_substrate/GMIManager.d.ts +98 -0
- package/dist/cognitive_substrate/GMIManager.d.ts.map +1 -0
- package/dist/cognitive_substrate/GMIManager.js +517 -0
- package/dist/cognitive_substrate/GMIManager.js.map +1 -0
- package/dist/cognitive_substrate/IGMI.d.ts +469 -0
- package/dist/cognitive_substrate/IGMI.d.ts.map +1 -0
- package/dist/cognitive_substrate/IGMI.js +111 -0
- package/dist/cognitive_substrate/IGMI.js.map +1 -0
- package/dist/cognitive_substrate/memory/IWorkingMemory.d.ts +139 -0
- package/dist/cognitive_substrate/memory/IWorkingMemory.d.ts.map +1 -0
- package/dist/cognitive_substrate/memory/IWorkingMemory.js +14 -0
- package/dist/cognitive_substrate/memory/IWorkingMemory.js.map +1 -0
- package/dist/cognitive_substrate/memory/InMemoryWorkingMemory.d.ts +143 -0
- package/dist/cognitive_substrate/memory/InMemoryWorkingMemory.d.ts.map +1 -0
- package/dist/cognitive_substrate/memory/InMemoryWorkingMemory.js +186 -0
- package/dist/cognitive_substrate/memory/InMemoryWorkingMemory.js.map +1 -0
- package/dist/cognitive_substrate/persona_overlays/PersonaOverlayManager.d.ts +33 -0
- package/dist/cognitive_substrate/persona_overlays/PersonaOverlayManager.d.ts.map +1 -0
- package/dist/cognitive_substrate/persona_overlays/PersonaOverlayManager.js +138 -0
- package/dist/cognitive_substrate/persona_overlays/PersonaOverlayManager.js.map +1 -0
- package/dist/cognitive_substrate/persona_overlays/PersonaOverlayTypes.d.ts +32 -0
- package/dist/cognitive_substrate/persona_overlays/PersonaOverlayTypes.d.ts.map +1 -0
- package/dist/cognitive_substrate/persona_overlays/PersonaOverlayTypes.js +2 -0
- package/dist/cognitive_substrate/persona_overlays/PersonaOverlayTypes.js.map +1 -0
- package/dist/cognitive_substrate/personas/IPersonaDefinition.d.ts +336 -0
- package/dist/cognitive_substrate/personas/IPersonaDefinition.d.ts.map +1 -0
- package/dist/cognitive_substrate/personas/IPersonaDefinition.js +8 -0
- package/dist/cognitive_substrate/personas/IPersonaDefinition.js.map +1 -0
- package/dist/cognitive_substrate/personas/IPersonaLoader.d.ts +78 -0
- package/dist/cognitive_substrate/personas/IPersonaLoader.d.ts.map +1 -0
- package/dist/cognitive_substrate/personas/IPersonaLoader.js +9 -0
- package/dist/cognitive_substrate/personas/IPersonaLoader.js.map +1 -0
- package/dist/cognitive_substrate/personas/PersonaLoader.d.ts +60 -0
- package/dist/cognitive_substrate/personas/PersonaLoader.d.ts.map +1 -0
- package/dist/cognitive_substrate/personas/PersonaLoader.js +138 -0
- package/dist/cognitive_substrate/personas/PersonaLoader.js.map +1 -0
- package/dist/cognitive_substrate/personas/PersonaValidation.d.ts +139 -0
- package/dist/cognitive_substrate/personas/PersonaValidation.d.ts.map +1 -0
- package/dist/cognitive_substrate/personas/PersonaValidation.js +277 -0
- package/dist/cognitive_substrate/personas/PersonaValidation.js.map +1 -0
- package/dist/cognitive_substrate/personas/definitions/atlas_systems_architect.json +29 -0
- package/dist/cognitive_substrate/personas/definitions/default_assistant_persona.json +346 -0
- package/dist/cognitive_substrate/personas/definitions/default_free_assistant.json +13 -0
- package/dist/cognitive_substrate/personas/definitions/index.d.ts +14 -0
- package/dist/cognitive_substrate/personas/definitions/index.d.ts.map +1 -0
- package/dist/cognitive_substrate/personas/definitions/index.js +35 -0
- package/dist/cognitive_substrate/personas/definitions/index.js.map +1 -0
- package/dist/cognitive_substrate/personas/definitions/nerf_generalist.json +11 -0
- package/dist/cognitive_substrate/personas/definitions/v_researcher.json +11 -0
- package/dist/config/AgentOSConfig.d.ts +74 -0
- package/dist/config/AgentOSConfig.d.ts.map +1 -0
- package/dist/config/AgentOSConfig.js +399 -0
- package/dist/config/AgentOSConfig.js.map +1 -0
- package/dist/config/EmbeddingManagerConfiguration.d.ts +190 -0
- package/dist/config/EmbeddingManagerConfiguration.d.ts.map +1 -0
- package/dist/config/EmbeddingManagerConfiguration.js +16 -0
- package/dist/config/EmbeddingManagerConfiguration.js.map +1 -0
- package/dist/config/MemoryLifecycleManagerConfiguration.d.ts +165 -0
- package/dist/config/MemoryLifecycleManagerConfiguration.d.ts.map +1 -0
- package/dist/config/MemoryLifecycleManagerConfiguration.js +69 -0
- package/dist/config/MemoryLifecycleManagerConfiguration.js.map +1 -0
- package/dist/config/RetrievalAugmentorConfiguration.d.ts +98 -0
- package/dist/config/RetrievalAugmentorConfiguration.d.ts.map +1 -0
- package/dist/config/RetrievalAugmentorConfiguration.js +47 -0
- package/dist/config/RetrievalAugmentorConfiguration.js.map +1 -0
- package/dist/config/ToolOrchestratorConfig.d.ts +69 -0
- package/dist/config/ToolOrchestratorConfig.d.ts.map +1 -0
- package/dist/config/ToolOrchestratorConfig.js +11 -0
- package/dist/config/ToolOrchestratorConfig.js.map +1 -0
- package/dist/config/VectorStoreConfiguration.d.ts +223 -0
- package/dist/config/VectorStoreConfiguration.d.ts.map +1 -0
- package/dist/config/VectorStoreConfiguration.js +59 -0
- package/dist/config/VectorStoreConfiguration.js.map +1 -0
- package/dist/config/extension-secrets.json +38 -0
- package/dist/config/extensionSecrets.d.ts +13 -0
- package/dist/config/extensionSecrets.d.ts.map +1 -0
- package/dist/config/extensionSecrets.js +24 -0
- package/dist/config/extensionSecrets.js.map +1 -0
- package/dist/core/agency/AgencyMemoryManager.d.ts +300 -0
- package/dist/core/agency/AgencyMemoryManager.d.ts.map +1 -0
- package/dist/core/agency/AgencyMemoryManager.js +657 -0
- package/dist/core/agency/AgencyMemoryManager.js.map +1 -0
- package/dist/core/agency/AgencyRegistry.d.ts +100 -0
- package/dist/core/agency/AgencyRegistry.d.ts.map +1 -0
- package/dist/core/agency/AgencyRegistry.js +209 -0
- package/dist/core/agency/AgencyRegistry.js.map +1 -0
- package/dist/core/agency/AgencyTypes.d.ts +200 -0
- package/dist/core/agency/AgencyTypes.d.ts.map +1 -0
- package/dist/core/agency/AgencyTypes.js +7 -0
- package/dist/core/agency/AgencyTypes.js.map +1 -0
- package/dist/core/agency/AgentCommunicationBus.d.ts +150 -0
- package/dist/core/agency/AgentCommunicationBus.d.ts.map +1 -0
- package/dist/core/agency/AgentCommunicationBus.js +568 -0
- package/dist/core/agency/AgentCommunicationBus.js.map +1 -0
- package/dist/core/agency/IAgentCommunicationBus.d.ts +469 -0
- package/dist/core/agency/IAgentCommunicationBus.d.ts.map +1 -0
- package/dist/core/agency/IAgentCommunicationBus.js +40 -0
- package/dist/core/agency/IAgentCommunicationBus.js.map +1 -0
- package/dist/core/agency/index.d.ts +18 -0
- package/dist/core/agency/index.d.ts.map +1 -0
- package/dist/core/agency/index.js +18 -0
- package/dist/core/agency/index.js.map +1 -0
- package/dist/core/agents/AgentCore.d.ts +385 -0
- package/dist/core/agents/AgentCore.d.ts.map +1 -0
- package/dist/core/agents/AgentCore.js +527 -0
- package/dist/core/agents/AgentCore.js.map +1 -0
- package/dist/core/agents/AgentFactory.d.ts +123 -0
- package/dist/core/agents/AgentFactory.d.ts.map +1 -0
- package/dist/core/agents/AgentFactory.js +232 -0
- package/dist/core/agents/AgentFactory.js.map +1 -0
- package/dist/core/agents/AgentPoolAgent.d.ts +244 -0
- package/dist/core/agents/AgentPoolAgent.d.ts.map +1 -0
- package/dist/core/agents/AgentPoolAgent.js +697 -0
- package/dist/core/agents/AgentPoolAgent.js.map +1 -0
- package/dist/core/agents/AgentPoolConfig.d.ts +191 -0
- package/dist/core/agents/AgentPoolConfig.d.ts.map +1 -0
- package/dist/core/agents/AgentPoolConfig.js +58 -0
- package/dist/core/agents/AgentPoolConfig.js.map +1 -0
- package/dist/core/agents/IAgent.d.ts +226 -0
- package/dist/core/agents/IAgent.d.ts.map +1 -0
- package/dist/core/agents/IAgent.js +14 -0
- package/dist/core/agents/IAgent.js.map +1 -0
- package/dist/core/agents/IAgentFactory.d.ts +137 -0
- package/dist/core/agents/IAgentFactory.d.ts.map +1 -0
- package/dist/core/agents/IAgentFactory.js +13 -0
- package/dist/core/agents/IAgentFactory.js.map +1 -0
- package/dist/core/agents/tools/Tool.d.ts +17 -0
- package/dist/core/agents/tools/Tool.d.ts.map +1 -0
- package/dist/core/agents/tools/Tool.js +8 -0
- package/dist/core/agents/tools/Tool.js.map +1 -0
- package/dist/core/ai_utilities/HybridUtilityAI.d.ts +1 -0
- package/dist/core/ai_utilities/HybridUtilityAI.d.ts.map +1 -0
- package/dist/core/ai_utilities/HybridUtilityAI.js +2 -0
- package/dist/core/ai_utilities/HybridUtilityAI.js.map +1 -0
- package/dist/core/ai_utilities/IUtilityAI.d.ts +212 -0
- package/dist/core/ai_utilities/IUtilityAI.d.ts.map +1 -0
- package/dist/core/ai_utilities/IUtilityAI.js +11 -0
- package/dist/core/ai_utilities/IUtilityAI.js.map +1 -0
- package/dist/core/ai_utilities/LLMUtilityAI.d.ts +94 -0
- package/dist/core/ai_utilities/LLMUtilityAI.d.ts.map +1 -0
- package/dist/core/ai_utilities/LLMUtilityAI.js +434 -0
- package/dist/core/ai_utilities/LLMUtilityAI.js.map +1 -0
- package/dist/core/ai_utilities/StatisticalUtilityAI.d.ts +102 -0
- package/dist/core/ai_utilities/StatisticalUtilityAI.d.ts.map +1 -0
- package/dist/core/ai_utilities/StatisticalUtilityAI.js +617 -0
- package/dist/core/ai_utilities/StatisticalUtilityAI.js.map +1 -0
- package/dist/core/conversation/ConversationContext.d.ts +259 -0
- package/dist/core/conversation/ConversationContext.d.ts.map +1 -0
- package/dist/core/conversation/ConversationContext.js +450 -0
- package/dist/core/conversation/ConversationContext.js.map +1 -0
- package/dist/core/conversation/ConversationManager.d.ts +223 -0
- package/dist/core/conversation/ConversationManager.d.ts.map +1 -0
- package/dist/core/conversation/ConversationManager.js +558 -0
- package/dist/core/conversation/ConversationManager.js.map +1 -0
- package/dist/core/conversation/ConversationMessage.d.ts +184 -0
- package/dist/core/conversation/ConversationMessage.d.ts.map +1 -0
- package/dist/core/conversation/ConversationMessage.js +66 -0
- package/dist/core/conversation/ConversationMessage.js.map +1 -0
- package/dist/core/evaluation/Evaluator.d.ts +28 -0
- package/dist/core/evaluation/Evaluator.d.ts.map +1 -0
- package/dist/core/evaluation/Evaluator.js +490 -0
- package/dist/core/evaluation/Evaluator.js.map +1 -0
- package/dist/core/evaluation/IEvaluator.d.ts +309 -0
- package/dist/core/evaluation/IEvaluator.d.ts.map +1 -0
- package/dist/core/evaluation/IEvaluator.js +12 -0
- package/dist/core/evaluation/IEvaluator.js.map +1 -0
- package/dist/core/evaluation/LLMJudge.d.ts +105 -0
- package/dist/core/evaluation/LLMJudge.d.ts.map +1 -0
- package/dist/core/evaluation/LLMJudge.js +229 -0
- package/dist/core/evaluation/LLMJudge.js.map +1 -0
- package/dist/core/evaluation/index.d.ts +9 -0
- package/dist/core/evaluation/index.d.ts.map +1 -0
- package/dist/core/evaluation/index.js +9 -0
- package/dist/core/evaluation/index.js.map +1 -0
- package/dist/core/guardrails/IGuardrailService.d.ts +142 -0
- package/dist/core/guardrails/IGuardrailService.d.ts.map +1 -0
- package/dist/core/guardrails/IGuardrailService.js +24 -0
- package/dist/core/guardrails/IGuardrailService.js.map +1 -0
- package/dist/core/guardrails/guardrailDispatcher.d.ts +36 -0
- package/dist/core/guardrails/guardrailDispatcher.d.ts.map +1 -0
- package/dist/core/guardrails/guardrailDispatcher.js +240 -0
- package/dist/core/guardrails/guardrailDispatcher.js.map +1 -0
- package/dist/core/hitl/HumanInteractionManager.d.ts +146 -0
- package/dist/core/hitl/HumanInteractionManager.d.ts.map +1 -0
- package/dist/core/hitl/HumanInteractionManager.js +491 -0
- package/dist/core/hitl/HumanInteractionManager.js.map +1 -0
- package/dist/core/hitl/IHumanInteractionManager.d.ts +521 -0
- package/dist/core/hitl/IHumanInteractionManager.d.ts.map +1 -0
- package/dist/core/hitl/IHumanInteractionManager.js +33 -0
- package/dist/core/hitl/IHumanInteractionManager.js.map +1 -0
- package/dist/core/hitl/index.d.ts +17 -0
- package/dist/core/hitl/index.d.ts.map +1 -0
- package/dist/core/hitl/index.js +17 -0
- package/dist/core/hitl/index.js.map +1 -0
- package/dist/core/knowledge/IKnowledgeGraph.d.ts +351 -0
- package/dist/core/knowledge/IKnowledgeGraph.d.ts.map +1 -0
- package/dist/core/knowledge/IKnowledgeGraph.js +10 -0
- package/dist/core/knowledge/IKnowledgeGraph.js.map +1 -0
- package/dist/core/knowledge/KnowledgeGraph.d.ts +93 -0
- package/dist/core/knowledge/KnowledgeGraph.d.ts.map +1 -0
- package/dist/core/knowledge/KnowledgeGraph.js +601 -0
- package/dist/core/knowledge/KnowledgeGraph.js.map +1 -0
- package/dist/core/knowledge/index.d.ts +8 -0
- package/dist/core/knowledge/index.d.ts.map +1 -0
- package/dist/core/knowledge/index.js +8 -0
- package/dist/core/knowledge/index.js.map +1 -0
- package/dist/core/language/LanguageService.d.ts +77 -0
- package/dist/core/language/LanguageService.d.ts.map +1 -0
- package/dist/core/language/LanguageService.js +305 -0
- package/dist/core/language/LanguageService.js.map +1 -0
- package/dist/core/language/index.d.ts +6 -0
- package/dist/core/language/index.d.ts.map +1 -0
- package/dist/core/language/index.js +6 -0
- package/dist/core/language/index.js.map +1 -0
- package/dist/core/language/interfaces.d.ts +168 -0
- package/dist/core/language/interfaces.d.ts.map +1 -0
- package/dist/core/language/interfaces.js +37 -0
- package/dist/core/language/interfaces.js.map +1 -0
- package/dist/core/language/providers/DeepLTranslationProvider.d.ts +16 -0
- package/dist/core/language/providers/DeepLTranslationProvider.d.ts.map +1 -0
- package/dist/core/language/providers/DeepLTranslationProvider.js +28 -0
- package/dist/core/language/providers/DeepLTranslationProvider.js.map +1 -0
- package/dist/core/language/providers/OpenAITranslationProvider.d.ts +17 -0
- package/dist/core/language/providers/OpenAITranslationProvider.d.ts.map +1 -0
- package/dist/core/language/providers/OpenAITranslationProvider.js +34 -0
- package/dist/core/language/providers/OpenAITranslationProvider.js.map +1 -0
- package/dist/core/language/providers/WhisperDetectionProvider.d.ts +16 -0
- package/dist/core/language/providers/WhisperDetectionProvider.d.ts.map +1 -0
- package/dist/core/language/providers/WhisperDetectionProvider.js +15 -0
- package/dist/core/language/providers/WhisperDetectionProvider.js.map +1 -0
- package/dist/core/llm/IPromptEngine.d.ts +627 -0
- package/dist/core/llm/IPromptEngine.d.ts.map +1 -0
- package/dist/core/llm/IPromptEngine.js +81 -0
- package/dist/core/llm/IPromptEngine.js.map +1 -0
- package/dist/core/llm/PromptEngine.d.ts +108 -0
- package/dist/core/llm/PromptEngine.d.ts.map +1 -0
- package/dist/core/llm/PromptEngine.js +872 -0
- package/dist/core/llm/PromptEngine.js.map +1 -0
- package/dist/core/llm/providers/AIModelProviderManager.d.ts +74 -0
- package/dist/core/llm/providers/AIModelProviderManager.d.ts.map +1 -0
- package/dist/core/llm/providers/AIModelProviderManager.js +263 -0
- package/dist/core/llm/providers/AIModelProviderManager.js.map +1 -0
- package/dist/core/llm/providers/IProvider.d.ts +327 -0
- package/dist/core/llm/providers/IProvider.d.ts.map +1 -0
- package/dist/core/llm/providers/IProvider.js +39 -0
- package/dist/core/llm/providers/IProvider.js.map +1 -0
- package/dist/core/llm/providers/errors/OllamaProviderError.d.ts +36 -0
- package/dist/core/llm/providers/errors/OllamaProviderError.d.ts.map +1 -0
- package/dist/core/llm/providers/errors/OllamaProviderError.js +40 -0
- package/dist/core/llm/providers/errors/OllamaProviderError.js.map +1 -0
- package/dist/core/llm/providers/errors/OpenAIProviderError.d.ts +42 -0
- package/dist/core/llm/providers/errors/OpenAIProviderError.d.ts.map +1 -0
- package/dist/core/llm/providers/errors/OpenAIProviderError.js +44 -0
- package/dist/core/llm/providers/errors/OpenAIProviderError.js.map +1 -0
- package/dist/core/llm/providers/errors/OpenRouterProviderError.d.ts +39 -0
- package/dist/core/llm/providers/errors/OpenRouterProviderError.d.ts.map +1 -0
- package/dist/core/llm/providers/errors/OpenRouterProviderError.js +42 -0
- package/dist/core/llm/providers/errors/OpenRouterProviderError.js.map +1 -0
- package/dist/core/llm/providers/errors/ProviderError.d.ts +37 -0
- package/dist/core/llm/providers/errors/ProviderError.d.ts.map +1 -0
- package/dist/core/llm/providers/errors/ProviderError.js +36 -0
- package/dist/core/llm/providers/errors/ProviderError.js.map +1 -0
- package/dist/core/llm/providers/implementations/OllamaProvider.d.ts +80 -0
- package/dist/core/llm/providers/implementations/OllamaProvider.d.ts.map +1 -0
- package/dist/core/llm/providers/implementations/OllamaProvider.js +473 -0
- package/dist/core/llm/providers/implementations/OllamaProvider.js.map +1 -0
- package/dist/core/llm/providers/implementations/OpenAIProvider.d.ts +160 -0
- package/dist/core/llm/providers/implementations/OpenAIProvider.d.ts.map +1 -0
- package/dist/core/llm/providers/implementations/OpenAIProvider.js +672 -0
- package/dist/core/llm/providers/implementations/OpenAIProvider.js.map +1 -0
- package/dist/core/llm/providers/implementations/OpenRouterProvider.d.ts +51 -0
- package/dist/core/llm/providers/implementations/OpenRouterProvider.d.ts.map +1 -0
- package/dist/core/llm/providers/implementations/OpenRouterProvider.js +499 -0
- package/dist/core/llm/providers/implementations/OpenRouterProvider.js.map +1 -0
- package/dist/core/llm/routing/IModelRouter.d.ts +129 -0
- package/dist/core/llm/routing/IModelRouter.d.ts.map +1 -0
- package/dist/core/llm/routing/IModelRouter.js +14 -0
- package/dist/core/llm/routing/IModelRouter.js.map +1 -0
- package/dist/core/llm/routing/ModelRouter.d.ts +157 -0
- package/dist/core/llm/routing/ModelRouter.d.ts.map +1 -0
- package/dist/core/llm/routing/ModelRouter.js +190 -0
- package/dist/core/llm/routing/ModelRouter.js.map +1 -0
- package/dist/core/llm/streaming/StreamingBatcher.d.ts +54 -0
- package/dist/core/llm/streaming/StreamingBatcher.d.ts.map +1 -0
- package/dist/core/llm/streaming/StreamingBatcher.js +173 -0
- package/dist/core/llm/streaming/StreamingBatcher.js.map +1 -0
- package/dist/core/llm/streaming/StreamingReconstructor.d.ts +69 -0
- package/dist/core/llm/streaming/StreamingReconstructor.d.ts.map +1 -0
- package/dist/core/llm/streaming/StreamingReconstructor.js +102 -0
- package/dist/core/llm/streaming/StreamingReconstructor.js.map +1 -0
- package/dist/core/marketplace/IMarketplace.d.ts +500 -0
- package/dist/core/marketplace/IMarketplace.d.ts.map +1 -0
- package/dist/core/marketplace/IMarketplace.js +10 -0
- package/dist/core/marketplace/IMarketplace.js.map +1 -0
- package/dist/core/marketplace/Marketplace.d.ts +122 -0
- package/dist/core/marketplace/Marketplace.d.ts.map +1 -0
- package/dist/core/marketplace/Marketplace.js +591 -0
- package/dist/core/marketplace/Marketplace.js.map +1 -0
- package/dist/core/marketplace/index.d.ts +8 -0
- package/dist/core/marketplace/index.d.ts.map +1 -0
- package/dist/core/marketplace/index.js +8 -0
- package/dist/core/marketplace/index.js.map +1 -0
- package/dist/core/observability/ITracer.d.ts +317 -0
- package/dist/core/observability/ITracer.d.ts.map +1 -0
- package/dist/core/observability/ITracer.js +55 -0
- package/dist/core/observability/ITracer.js.map +1 -0
- package/dist/core/observability/Tracer.d.ts +76 -0
- package/dist/core/observability/Tracer.d.ts.map +1 -0
- package/dist/core/observability/Tracer.js +360 -0
- package/dist/core/observability/Tracer.js.map +1 -0
- package/dist/core/observability/index.d.ts +9 -0
- package/dist/core/observability/index.d.ts.map +1 -0
- package/dist/core/observability/index.js +8 -0
- package/dist/core/observability/index.js.map +1 -0
- package/dist/core/orchestration/AgentOrchestrator.d.ts +243 -0
- package/dist/core/orchestration/AgentOrchestrator.d.ts.map +1 -0
- package/dist/core/orchestration/AgentOrchestrator.js +648 -0
- package/dist/core/orchestration/AgentOrchestrator.js.map +1 -0
- package/dist/core/orchestration/IAgentOrchestrator.d.ts +44 -0
- package/dist/core/orchestration/IAgentOrchestrator.d.ts.map +1 -0
- package/dist/core/orchestration/IAgentOrchestrator.js +4 -0
- package/dist/core/orchestration/IAgentOrchestrator.js.map +1 -0
- package/dist/core/orchestration/helpers.d.ts +12 -0
- package/dist/core/orchestration/helpers.d.ts.map +1 -0
- package/dist/core/orchestration/helpers.js +36 -0
- package/dist/core/orchestration/helpers.js.map +1 -0
- package/dist/core/planning/IPlanningEngine.d.ts +524 -0
- package/dist/core/planning/IPlanningEngine.d.ts.map +1 -0
- package/dist/core/planning/IPlanningEngine.js +32 -0
- package/dist/core/planning/IPlanningEngine.js.map +1 -0
- package/dist/core/planning/PlanningEngine.d.ts +161 -0
- package/dist/core/planning/PlanningEngine.d.ts.map +1 -0
- package/dist/core/planning/PlanningEngine.js +783 -0
- package/dist/core/planning/PlanningEngine.js.map +1 -0
- package/dist/core/planning/index.d.ts +25 -0
- package/dist/core/planning/index.d.ts.map +1 -0
- package/dist/core/planning/index.js +25 -0
- package/dist/core/planning/index.js.map +1 -0
- package/dist/core/sandbox/CodeSandbox.d.ts +86 -0
- package/dist/core/sandbox/CodeSandbox.d.ts.map +1 -0
- package/dist/core/sandbox/CodeSandbox.js +475 -0
- package/dist/core/sandbox/CodeSandbox.js.map +1 -0
- package/dist/core/sandbox/ICodeSandbox.d.ts +249 -0
- package/dist/core/sandbox/ICodeSandbox.d.ts.map +1 -0
- package/dist/core/sandbox/ICodeSandbox.js +24 -0
- package/dist/core/sandbox/ICodeSandbox.js.map +1 -0
- package/dist/core/sandbox/index.d.ts +9 -0
- package/dist/core/sandbox/index.d.ts.map +1 -0
- package/dist/core/sandbox/index.js +8 -0
- package/dist/core/sandbox/index.js.map +1 -0
- package/dist/core/storage/IStorageAdapter.d.ts +483 -0
- package/dist/core/storage/IStorageAdapter.d.ts.map +1 -0
- package/dist/core/storage/IStorageAdapter.js +19 -0
- package/dist/core/storage/IStorageAdapter.js.map +1 -0
- package/dist/core/storage/InMemoryStorageAdapter.d.ts +192 -0
- package/dist/core/storage/InMemoryStorageAdapter.d.ts.map +1 -0
- package/dist/core/storage/InMemoryStorageAdapter.js +343 -0
- package/dist/core/storage/InMemoryStorageAdapter.js.map +1 -0
- package/dist/core/storage/SqlStorageAdapter.d.ts +262 -0
- package/dist/core/storage/SqlStorageAdapter.d.ts.map +1 -0
- package/dist/core/storage/SqlStorageAdapter.js +485 -0
- package/dist/core/storage/SqlStorageAdapter.js.map +1 -0
- package/dist/core/storage/index.d.ts +14 -0
- package/dist/core/storage/index.d.ts.map +1 -0
- package/dist/core/storage/index.js +14 -0
- package/dist/core/storage/index.js.map +1 -0
- package/dist/core/streaming/IStreamClient.d.ts +72 -0
- package/dist/core/streaming/IStreamClient.d.ts.map +1 -0
- package/dist/core/streaming/IStreamClient.js +12 -0
- package/dist/core/streaming/IStreamClient.js.map +1 -0
- package/dist/core/streaming/StreamingManager.d.ts +242 -0
- package/dist/core/streaming/StreamingManager.d.ts.map +1 -0
- package/dist/core/streaming/StreamingManager.js +282 -0
- package/dist/core/streaming/StreamingManager.js.map +1 -0
- package/dist/core/structured/IStructuredOutputManager.d.ts +701 -0
- package/dist/core/structured/IStructuredOutputManager.d.ts.map +1 -0
- package/dist/core/structured/IStructuredOutputManager.js +74 -0
- package/dist/core/structured/IStructuredOutputManager.js.map +1 -0
- package/dist/core/structured/StructuredOutputManager.d.ts +140 -0
- package/dist/core/structured/StructuredOutputManager.d.ts.map +1 -0
- package/dist/core/structured/StructuredOutputManager.js +1015 -0
- package/dist/core/structured/StructuredOutputManager.js.map +1 -0
- package/dist/core/structured/index.d.ts +34 -0
- package/dist/core/structured/index.d.ts.map +1 -0
- package/dist/core/structured/index.js +34 -0
- package/dist/core/structured/index.js.map +1 -0
- package/dist/core/tools/ITool.d.ts +228 -0
- package/dist/core/tools/ITool.d.ts.map +1 -0
- package/dist/core/tools/ITool.js +11 -0
- package/dist/core/tools/ITool.js.map +1 -0
- package/dist/core/tools/IToolOrchestrator.d.ts +131 -0
- package/dist/core/tools/IToolOrchestrator.d.ts.map +1 -0
- package/dist/core/tools/IToolOrchestrator.js +14 -0
- package/dist/core/tools/IToolOrchestrator.js.map +1 -0
- package/dist/core/tools/ToolExecutor.d.ts +143 -0
- package/dist/core/tools/ToolExecutor.d.ts.map +1 -0
- package/dist/core/tools/ToolExecutor.js +364 -0
- package/dist/core/tools/ToolExecutor.js.map +1 -0
- package/dist/core/tools/ToolOrchestrator.d.ts +142 -0
- package/dist/core/tools/ToolOrchestrator.d.ts.map +1 -0
- package/dist/core/tools/ToolOrchestrator.js +373 -0
- package/dist/core/tools/ToolOrchestrator.js.map +1 -0
- package/dist/core/tools/permissions/IToolPermissionManager.d.ts +195 -0
- package/dist/core/tools/permissions/IToolPermissionManager.d.ts.map +1 -0
- package/dist/core/tools/permissions/IToolPermissionManager.js +14 -0
- package/dist/core/tools/permissions/IToolPermissionManager.js.map +1 -0
- package/dist/core/tools/permissions/ToolPermissionManager.d.ts +203 -0
- package/dist/core/tools/permissions/ToolPermissionManager.d.ts.map +1 -0
- package/dist/core/tools/permissions/ToolPermissionManager.js +298 -0
- package/dist/core/tools/permissions/ToolPermissionManager.js.map +1 -0
- package/dist/core/ui/IUIComponent.d.ts +11 -0
- package/dist/core/ui/IUIComponent.d.ts.map +1 -0
- package/dist/core/ui/IUIComponent.js +2 -0
- package/dist/core/ui/IUIComponent.js.map +1 -0
- package/dist/core/usage/UsageLedger.d.ts +81 -0
- package/dist/core/usage/UsageLedger.d.ts.map +1 -0
- package/dist/core/usage/UsageLedger.js +135 -0
- package/dist/core/usage/UsageLedger.js.map +1 -0
- package/dist/core/workflows/IWorkflowEngine.d.ts +42 -0
- package/dist/core/workflows/IWorkflowEngine.d.ts.map +1 -0
- package/dist/core/workflows/IWorkflowEngine.js +2 -0
- package/dist/core/workflows/IWorkflowEngine.js.map +1 -0
- package/dist/core/workflows/WorkflowEngine.d.ts +28 -0
- package/dist/core/workflows/WorkflowEngine.d.ts.map +1 -0
- package/dist/core/workflows/WorkflowEngine.js +309 -0
- package/dist/core/workflows/WorkflowEngine.js.map +1 -0
- package/dist/core/workflows/WorkflowTypes.d.ts +180 -0
- package/dist/core/workflows/WorkflowTypes.d.ts.map +1 -0
- package/dist/core/workflows/WorkflowTypes.js +26 -0
- package/dist/core/workflows/WorkflowTypes.js.map +1 -0
- package/dist/core/workflows/runtime/WorkflowRuntime.d.ts +70 -0
- package/dist/core/workflows/runtime/WorkflowRuntime.d.ts.map +1 -0
- package/dist/core/workflows/runtime/WorkflowRuntime.js +566 -0
- package/dist/core/workflows/runtime/WorkflowRuntime.js.map +1 -0
- package/dist/core/workflows/storage/IWorkflowStore.d.ts +75 -0
- package/dist/core/workflows/storage/IWorkflowStore.d.ts.map +1 -0
- package/dist/core/workflows/storage/IWorkflowStore.js +2 -0
- package/dist/core/workflows/storage/IWorkflowStore.js.map +1 -0
- package/dist/core/workflows/storage/InMemoryWorkflowStore.d.ts +14 -0
- package/dist/core/workflows/storage/InMemoryWorkflowStore.d.ts.map +1 -0
- package/dist/core/workflows/storage/InMemoryWorkflowStore.js +130 -0
- package/dist/core/workflows/storage/InMemoryWorkflowStore.js.map +1 -0
- package/dist/extensions/ExtensionLoader.d.ts +119 -0
- package/dist/extensions/ExtensionLoader.d.ts.map +1 -0
- package/dist/extensions/ExtensionLoader.js +297 -0
- package/dist/extensions/ExtensionLoader.js.map +1 -0
- package/dist/extensions/ExtensionManager.d.ts +49 -0
- package/dist/extensions/ExtensionManager.d.ts.map +1 -0
- package/dist/extensions/ExtensionManager.js +197 -0
- package/dist/extensions/ExtensionManager.js.map +1 -0
- package/dist/extensions/ExtensionRegistry.d.ts +39 -0
- package/dist/extensions/ExtensionRegistry.d.ts.map +1 -0
- package/dist/extensions/ExtensionRegistry.js +103 -0
- package/dist/extensions/ExtensionRegistry.js.map +1 -0
- package/dist/extensions/MultiRegistryLoader.d.ts +61 -0
- package/dist/extensions/MultiRegistryLoader.d.ts.map +1 -0
- package/dist/extensions/MultiRegistryLoader.js +169 -0
- package/dist/extensions/MultiRegistryLoader.js.map +1 -0
- package/dist/extensions/RegistryConfig.d.ts +86 -0
- package/dist/extensions/RegistryConfig.d.ts.map +1 -0
- package/dist/extensions/RegistryConfig.js +99 -0
- package/dist/extensions/RegistryConfig.js.map +1 -0
- package/dist/extensions/events.d.ts +19 -0
- package/dist/extensions/events.d.ts.map +1 -0
- package/dist/extensions/events.js +2 -0
- package/dist/extensions/events.js.map +1 -0
- package/dist/extensions/index.d.ts +9 -0
- package/dist/extensions/index.d.ts.map +1 -0
- package/dist/extensions/index.js +9 -0
- package/dist/extensions/index.js.map +1 -0
- package/dist/extensions/manifest.d.ts +52 -0
- package/dist/extensions/manifest.d.ts.map +1 -0
- package/dist/extensions/manifest.js +2 -0
- package/dist/extensions/manifest.js.map +1 -0
- package/dist/extensions/types.d.ts +294 -0
- package/dist/extensions/types.d.ts.map +1 -0
- package/dist/extensions/types.js +12 -0
- package/dist/extensions/types.js.map +1 -0
- package/dist/index.d.ts +49 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +59 -0
- package/dist/index.js.map +1 -0
- package/dist/logging/ILogger.d.ts +8 -0
- package/dist/logging/ILogger.d.ts.map +1 -0
- package/dist/logging/ILogger.js +2 -0
- package/dist/logging/ILogger.js.map +1 -0
- package/dist/logging/PinoLogger.d.ts +12 -0
- package/dist/logging/PinoLogger.d.ts.map +1 -0
- package/dist/logging/PinoLogger.js +22 -0
- package/dist/logging/PinoLogger.js.map +1 -0
- package/dist/logging/loggerFactory.d.ts +6 -0
- package/dist/logging/loggerFactory.d.ts.map +1 -0
- package/dist/logging/loggerFactory.js +14 -0
- package/dist/logging/loggerFactory.js.map +1 -0
- package/dist/rag/EmbeddingManager.d.ts +81 -0
- package/dist/rag/EmbeddingManager.d.ts.map +1 -0
- package/dist/rag/EmbeddingManager.js +412 -0
- package/dist/rag/EmbeddingManager.js.map +1 -0
- package/dist/rag/IEmbeddingManager.d.ts +277 -0
- package/dist/rag/IEmbeddingManager.d.ts.map +1 -0
- package/dist/rag/IEmbeddingManager.js +19 -0
- package/dist/rag/IEmbeddingManager.js.map +1 -0
- package/dist/rag/IRetrievalAugmentor.d.ts +208 -0
- package/dist/rag/IRetrievalAugmentor.d.ts.map +1 -0
- package/dist/rag/IRetrievalAugmentor.js +21 -0
- package/dist/rag/IRetrievalAugmentor.js.map +1 -0
- package/dist/rag/IVectorStore.d.ts +351 -0
- package/dist/rag/IVectorStore.d.ts.map +1 -0
- package/dist/rag/IVectorStore.js +15 -0
- package/dist/rag/IVectorStore.js.map +1 -0
- package/dist/rag/IVectorStoreManager.d.ts +121 -0
- package/dist/rag/IVectorStoreManager.d.ts.map +1 -0
- package/dist/rag/IVectorStoreManager.js +13 -0
- package/dist/rag/IVectorStoreManager.js.map +1 -0
- package/dist/rag/RetrievalAugmentor.d.ts +99 -0
- package/dist/rag/RetrievalAugmentor.d.ts.map +1 -0
- package/dist/rag/RetrievalAugmentor.js +674 -0
- package/dist/rag/RetrievalAugmentor.js.map +1 -0
- package/dist/rag/VectorStoreManager.d.ts +90 -0
- package/dist/rag/VectorStoreManager.d.ts.map +1 -0
- package/dist/rag/VectorStoreManager.js +283 -0
- package/dist/rag/VectorStoreManager.js.map +1 -0
- package/dist/rag/implementations/index.d.ts +9 -0
- package/dist/rag/implementations/index.d.ts.map +1 -0
- package/dist/rag/implementations/index.js +9 -0
- package/dist/rag/implementations/index.js.map +1 -0
- package/dist/rag/implementations/vector_stores/InMemoryVectorStore.d.ts +132 -0
- package/dist/rag/implementations/vector_stores/InMemoryVectorStore.d.ts.map +1 -0
- package/dist/rag/implementations/vector_stores/InMemoryVectorStore.js +539 -0
- package/dist/rag/implementations/vector_stores/InMemoryVectorStore.js.map +1 -0
- package/dist/rag/implementations/vector_stores/SqlVectorStore.d.ts +265 -0
- package/dist/rag/implementations/vector_stores/SqlVectorStore.d.ts.map +1 -0
- package/dist/rag/implementations/vector_stores/SqlVectorStore.js +755 -0
- package/dist/rag/implementations/vector_stores/SqlVectorStore.js.map +1 -0
- package/dist/rag/implementations/vector_stores/index.d.ts +10 -0
- package/dist/rag/implementations/vector_stores/index.d.ts.map +1 -0
- package/dist/rag/implementations/vector_stores/index.js +12 -0
- package/dist/rag/implementations/vector_stores/index.js.map +1 -0
- package/dist/rag/index.d.ts +95 -0
- package/dist/rag/index.d.ts.map +1 -0
- package/dist/rag/index.js +97 -0
- package/dist/rag/index.js.map +1 -0
- package/dist/services/user_auth/AuthService.d.ts +13 -0
- package/dist/services/user_auth/AuthService.d.ts.map +1 -0
- package/dist/services/user_auth/AuthService.js +24 -0
- package/dist/services/user_auth/AuthService.js.map +1 -0
- package/dist/services/user_auth/SubscriptionService.d.ts +14 -0
- package/dist/services/user_auth/SubscriptionService.d.ts.map +1 -0
- package/dist/services/user_auth/SubscriptionService.js +34 -0
- package/dist/services/user_auth/SubscriptionService.js.map +1 -0
- package/dist/services/user_auth/types.d.ts +30 -0
- package/dist/services/user_auth/types.d.ts.map +1 -0
- package/dist/services/user_auth/types.js +2 -0
- package/dist/services/user_auth/types.js.map +1 -0
- package/dist/stubs/prismaClient.d.ts +35 -0
- package/dist/stubs/prismaClient.d.ts.map +1 -0
- package/dist/stubs/prismaClient.js +47 -0
- package/dist/stubs/prismaClient.js.map +1 -0
- package/dist/types/rateLimitTypes.d.ts +70 -0
- package/dist/types/rateLimitTypes.d.ts.map +1 -0
- package/dist/types/rateLimitTypes.js +55 -0
- package/dist/types/rateLimitTypes.js.map +1 -0
- package/dist/utils/errors.d.ts +80 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +201 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/uuid.d.ts +11 -0
- package/dist/utils/uuid.d.ts.map +1 -0
- package/dist/utils/uuid.js +64 -0
- package/dist/utils/uuid.js.map +1 -0
- package/package.json +84 -0
|
@@ -0,0 +1,558 @@
|
|
|
1
|
+
// File: backend/agentos/core/conversation/ConversationManager.ts
|
|
2
|
+
/**
|
|
3
|
+
* @fileoverview Manages the lifecycle of ConversationContext instances in AgentOS.
|
|
4
|
+
* Responsible for creating, retrieving, storing (both in-memory and persistently
|
|
5
|
+
* using sql-storage-adapter), and managing active conversation states. It ensures conversations
|
|
6
|
+
* can be rehydrated and maintained across sessions.
|
|
7
|
+
*
|
|
8
|
+
* @module backend/agentos/core/conversation/ConversationManager
|
|
9
|
+
* @see ./ConversationContext.ts
|
|
10
|
+
* @see ../../ai_utilities/IUtilityAI.ts
|
|
11
|
+
* @see @framers/sql-storage-adapter
|
|
12
|
+
*/
|
|
13
|
+
import { ConversationContext } from './ConversationContext.js';
|
|
14
|
+
import { createConversationMessage } from './ConversationMessage.js';
|
|
15
|
+
import { uuidv4 } from '../../utils/uuid.js';
|
|
16
|
+
import { GMIError, GMIErrorCode } from '../../utils/errors.js';
|
|
17
|
+
/**
|
|
18
|
+
* SQL schema for conversations table (compatible with SQLite, PostgreSQL, IndexedDB)
|
|
19
|
+
*/
|
|
20
|
+
const CONVERSATIONS_SCHEMA = `
|
|
21
|
+
CREATE TABLE IF NOT EXISTS conversations (
|
|
22
|
+
id TEXT PRIMARY KEY,
|
|
23
|
+
user_id TEXT NOT NULL,
|
|
24
|
+
gmi_instance_id TEXT,
|
|
25
|
+
title TEXT,
|
|
26
|
+
language TEXT,
|
|
27
|
+
session_details TEXT DEFAULT '{}',
|
|
28
|
+
is_archived INTEGER DEFAULT 0,
|
|
29
|
+
tags TEXT DEFAULT '[]',
|
|
30
|
+
created_at INTEGER NOT NULL,
|
|
31
|
+
updated_at INTEGER NOT NULL
|
|
32
|
+
);
|
|
33
|
+
|
|
34
|
+
CREATE TABLE IF NOT EXISTS conversation_messages (
|
|
35
|
+
id TEXT PRIMARY KEY,
|
|
36
|
+
conversation_id TEXT NOT NULL,
|
|
37
|
+
role TEXT NOT NULL,
|
|
38
|
+
content TEXT NOT NULL,
|
|
39
|
+
timestamp INTEGER NOT NULL,
|
|
40
|
+
tool_calls TEXT,
|
|
41
|
+
tool_call_id TEXT,
|
|
42
|
+
multimodal_data TEXT,
|
|
43
|
+
audio_url TEXT,
|
|
44
|
+
audio_transcript TEXT,
|
|
45
|
+
voice_settings TEXT,
|
|
46
|
+
metadata TEXT DEFAULT '{}',
|
|
47
|
+
FOREIGN KEY (conversation_id) REFERENCES conversations(id) ON DELETE CASCADE
|
|
48
|
+
);
|
|
49
|
+
|
|
50
|
+
CREATE INDEX IF NOT EXISTS idx_conversations_user_id ON conversations(user_id);
|
|
51
|
+
CREATE INDEX IF NOT EXISTS idx_conversations_gmi_instance_id ON conversations(gmi_instance_id);
|
|
52
|
+
CREATE INDEX IF NOT EXISTS idx_conversation_messages_conversation_id ON conversation_messages(conversation_id);
|
|
53
|
+
CREATE INDEX IF NOT EXISTS idx_conversation_messages_timestamp ON conversation_messages(timestamp);
|
|
54
|
+
`;
|
|
55
|
+
/**
|
|
56
|
+
* @class ConversationManager
|
|
57
|
+
* @description Manages ConversationContext instances for AgentOS, handling their
|
|
58
|
+
* creation, retrieval, in-memory caching, and persistent storage via sql-storage-adapter.
|
|
59
|
+
* This class is vital for maintaining conversational state across user sessions and
|
|
60
|
+
* GMI interactions.
|
|
61
|
+
*/
|
|
62
|
+
export class ConversationManager {
|
|
63
|
+
/**
|
|
64
|
+
* Constructs a ConversationManager instance.
|
|
65
|
+
* Initialization via `initialize()` is required before use.
|
|
66
|
+
*/
|
|
67
|
+
constructor() {
|
|
68
|
+
/**
|
|
69
|
+
* Flag indicating if the manager has been successfully initialized.
|
|
70
|
+
* @private
|
|
71
|
+
* @type {boolean}
|
|
72
|
+
*/
|
|
73
|
+
this.initialized = false;
|
|
74
|
+
this.managerId = `conv-mgr-${uuidv4()}`;
|
|
75
|
+
this.activeConversations = new Map();
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Initializes the ConversationManager with its configuration and dependencies.
|
|
79
|
+
* This method sets up persistence if enabled and prepares the manager for operation.
|
|
80
|
+
*
|
|
81
|
+
* @public
|
|
82
|
+
* @async
|
|
83
|
+
* @param {ConversationManagerConfig} config - Configuration for the manager.
|
|
84
|
+
* @param {IUtilityAI} [utilityAIService] - Optional IUtilityAI instance, primarily
|
|
85
|
+
* used by ConversationContext instances for features like summarization.
|
|
86
|
+
* @param {StorageAdapter} [storageAdapter] - Optional storage adapter for database persistence.
|
|
87
|
+
* Required if `config.persistenceEnabled` is true.
|
|
88
|
+
* @returns {Promise<void>} A promise that resolves when initialization is complete.
|
|
89
|
+
* @throws {GMIError} If configuration is invalid or dependencies are missing when required.
|
|
90
|
+
*/
|
|
91
|
+
async initialize(config, utilityAIService, storageAdapter) {
|
|
92
|
+
if (this.initialized) {
|
|
93
|
+
console.warn(`ConversationManager (ID: ${this.managerId}) already initialized. Consider if re-initialization is intended and its effects on state.`);
|
|
94
|
+
}
|
|
95
|
+
this.config = {
|
|
96
|
+
defaultConversationContextConfig: config.defaultConversationContextConfig || {},
|
|
97
|
+
maxActiveConversationsInMemory: config.maxActiveConversationsInMemory ?? 1000,
|
|
98
|
+
inactivityTimeoutMs: config.inactivityTimeoutMs ?? 3600000, // 1 hour
|
|
99
|
+
persistenceEnabled: config.persistenceEnabled ?? true, // Default to true
|
|
100
|
+
...config, // Spread last to ensure explicit config values override defaults if provided
|
|
101
|
+
};
|
|
102
|
+
this.utilityAIService = utilityAIService;
|
|
103
|
+
this.storageAdapter = this.config.persistenceEnabled ? storageAdapter : undefined;
|
|
104
|
+
if (this.config.persistenceEnabled && !this.storageAdapter) {
|
|
105
|
+
console.warn(`ConversationManager (ID: ${this.managerId}): Persistence is enabled in config, but no StorageAdapter was provided. Persistence will be effectively disabled.`);
|
|
106
|
+
this.config.persistenceEnabled = false;
|
|
107
|
+
}
|
|
108
|
+
// Initialize schema if persistence is enabled
|
|
109
|
+
if (this.config.persistenceEnabled && this.storageAdapter) {
|
|
110
|
+
try {
|
|
111
|
+
await this.storageAdapter.exec(CONVERSATIONS_SCHEMA);
|
|
112
|
+
console.log(`ConversationManager (ID: ${this.managerId}): Schema initialized.`);
|
|
113
|
+
}
|
|
114
|
+
catch (error) {
|
|
115
|
+
console.error(`ConversationManager (ID: ${this.managerId}): Failed to initialize schema:`, error);
|
|
116
|
+
throw new GMIError(`Failed to initialize conversation schema.`, GMIErrorCode.DATABASE_ERROR, { underlyingError: error.message });
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
this.initialized = true;
|
|
120
|
+
console.log(`ConversationManager (ID: ${this.managerId}) initialized. Persistence: ${this.config.persistenceEnabled}. Max in-memory: ${this.config.maxActiveConversationsInMemory}.`);
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Ensures that the manager has been initialized before performing operations.
|
|
124
|
+
* @private
|
|
125
|
+
* @throws {GMIError} If the manager is not initialized.
|
|
126
|
+
*/
|
|
127
|
+
ensureInitialized() {
|
|
128
|
+
if (!this.initialized) {
|
|
129
|
+
throw new GMIError("ConversationManager is not initialized. Call initialize() first.", GMIErrorCode.NOT_INITIALIZED, { managerId: this.managerId });
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Creates a new conversation context or retrieves an existing one.
|
|
134
|
+
* If `conversationId` is provided:
|
|
135
|
+
* - Tries to find it in the active (in-memory) cache.
|
|
136
|
+
* - If not in cache and persistence is enabled, tries to load from the database.
|
|
137
|
+
* - If not found in DB or persistence disabled, creates a new context with this ID.
|
|
138
|
+
* If no `conversationId` is provided, a new one is generated.
|
|
139
|
+
* Manages in-memory cache size by evicting the oldest conversation if capacity is reached.
|
|
140
|
+
*
|
|
141
|
+
* @public
|
|
142
|
+
* @async
|
|
143
|
+
* @param {string} [conversationId] - Optional ID of an existing conversation. This ID will also be used as the `ConversationContext.sessionId`.
|
|
144
|
+
* @param {string} [userId] - ID of the user associated with the conversation.
|
|
145
|
+
* @param {string} [gmiInstanceId] - ID of the GMI instance this conversation is for.
|
|
146
|
+
* @param {string} [activePersonaId] - ID of the active persona for the conversation.
|
|
147
|
+
* @param {Record<string, any>} [initialMetadata={}] - Initial metadata for a new conversation.
|
|
148
|
+
* @param {Partial<ConversationContextConfig>} [overrideConfig] - Config overrides for a new context.
|
|
149
|
+
* @returns {Promise<ConversationContext>} The created or retrieved ConversationContext.
|
|
150
|
+
* @throws {GMIError} If essential parameters for creating a new context are missing or if an error occurs.
|
|
151
|
+
*/
|
|
152
|
+
async getOrCreateConversationContext(conversationId, userId, gmiInstanceId, activePersonaId, initialMetadata = {}, overrideConfig) {
|
|
153
|
+
this.ensureInitialized();
|
|
154
|
+
const effectiveConversationId = conversationId || `conv_${uuidv4()}`;
|
|
155
|
+
const context = this.activeConversations.get(effectiveConversationId);
|
|
156
|
+
if (context) {
|
|
157
|
+
// Update context identifiers if provided and different. These setters should exist on ConversationContext or be handled via setMetadata.
|
|
158
|
+
if (userId && context.getMetadata('userId') !== userId)
|
|
159
|
+
context.setMetadata('userId', userId);
|
|
160
|
+
if (gmiInstanceId && context.getMetadata('gmiInstanceId') !== gmiInstanceId)
|
|
161
|
+
context.setMetadata('gmiInstanceId', gmiInstanceId);
|
|
162
|
+
if (activePersonaId && context.getMetadata('activePersonaId') !== activePersonaId)
|
|
163
|
+
context.setMetadata('activePersonaId', activePersonaId);
|
|
164
|
+
context.setMetadata('_lastAccessed', Date.now());
|
|
165
|
+
return context;
|
|
166
|
+
}
|
|
167
|
+
if (this.config.persistenceEnabled && this.storageAdapter) {
|
|
168
|
+
const loadedContext = await this.loadConversationFromDB(effectiveConversationId);
|
|
169
|
+
if (loadedContext) {
|
|
170
|
+
if (this.activeConversations.size >= this.config.maxActiveConversationsInMemory) {
|
|
171
|
+
await this.evictOldestConversation();
|
|
172
|
+
}
|
|
173
|
+
this.activeConversations.set(effectiveConversationId, loadedContext);
|
|
174
|
+
loadedContext.setMetadata('_lastAccessed', Date.now());
|
|
175
|
+
return loadedContext;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
const contextConfig = {
|
|
179
|
+
...this.config.defaultConversationContextConfig,
|
|
180
|
+
userId: userId || this.config.defaultConversationContextConfig?.userId,
|
|
181
|
+
gmiInstanceId: gmiInstanceId || this.config.defaultConversationContextConfig?.gmiInstanceId,
|
|
182
|
+
activePersonaId: activePersonaId || this.config.defaultConversationContextConfig?.activePersonaId,
|
|
183
|
+
utilityAI: this.utilityAIService || this.config.defaultConversationContextConfig?.utilityAI,
|
|
184
|
+
...(overrideConfig || {}), // Apply overrides
|
|
185
|
+
}; // Cast as fully required after merging
|
|
186
|
+
const newContext = new ConversationContext(effectiveConversationId, contextConfig, [], initialMetadata);
|
|
187
|
+
newContext.setMetadata('_lastAccessed', Date.now());
|
|
188
|
+
if (this.activeConversations.size >= this.config.maxActiveConversationsInMemory) {
|
|
189
|
+
await this.evictOldestConversation();
|
|
190
|
+
}
|
|
191
|
+
this.activeConversations.set(effectiveConversationId, newContext);
|
|
192
|
+
return newContext;
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Retrieves a ConversationContext if present in memory or persistent storage.
|
|
196
|
+
* Returns null when not found.
|
|
197
|
+
*/
|
|
198
|
+
async getConversation(conversationId) {
|
|
199
|
+
this.ensureInitialized();
|
|
200
|
+
const inMemory = this.activeConversations.get(conversationId);
|
|
201
|
+
if (inMemory) {
|
|
202
|
+
return inMemory;
|
|
203
|
+
}
|
|
204
|
+
const loaded = await this.loadConversationFromDB(conversationId);
|
|
205
|
+
return loaded ?? null;
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Lists minimal context info for a given session. Currently returns a single entry
|
|
209
|
+
* matching the provided sessionId if found in memory or storage.
|
|
210
|
+
*/
|
|
211
|
+
async listContextsForSession(sessionId) {
|
|
212
|
+
return this.getConversationInfo(sessionId);
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Saves a ConversationContext to persistent storage if persistence is enabled.
|
|
216
|
+
* This is called automatically when a context is evicted from memory or during shutdown.
|
|
217
|
+
*
|
|
218
|
+
* @public
|
|
219
|
+
* @async
|
|
220
|
+
* @param {ConversationContext} context - The ConversationContext to save.
|
|
221
|
+
* @throws {GMIError} If the save operation fails.
|
|
222
|
+
*/
|
|
223
|
+
async saveConversation(context) {
|
|
224
|
+
this.ensureInitialized();
|
|
225
|
+
if (this.config.persistenceEnabled && this.storageAdapter) {
|
|
226
|
+
await this.saveConversationToDB(context);
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* Deletes a conversation from both memory and persistent storage.
|
|
231
|
+
*
|
|
232
|
+
* @public
|
|
233
|
+
* @async
|
|
234
|
+
* @param {string} conversationId - The ID of the conversation to delete.
|
|
235
|
+
* @throws {GMIError} If the deletion fails.
|
|
236
|
+
*/
|
|
237
|
+
async deleteConversation(conversationId) {
|
|
238
|
+
this.ensureInitialized();
|
|
239
|
+
this.activeConversations.delete(conversationId);
|
|
240
|
+
if (this.config.persistenceEnabled && this.storageAdapter) {
|
|
241
|
+
try {
|
|
242
|
+
await this.storageAdapter.run('DELETE FROM conversations WHERE id = ?', [conversationId]);
|
|
243
|
+
// Messages are deleted via CASCADE, but explicit delete for safety
|
|
244
|
+
await this.storageAdapter.run('DELETE FROM conversation_messages WHERE conversation_id = ?', [conversationId]);
|
|
245
|
+
}
|
|
246
|
+
catch (error) {
|
|
247
|
+
console.error(`ConversationManager (ID: ${this.managerId}): Error deleting conversation ${conversationId} from DB:`, error);
|
|
248
|
+
throw new GMIError(`Failed to delete conversation ${conversationId} from database.`, GMIErrorCode.DATABASE_ERROR, { underlyingError: error.message });
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* Gets basic info about a conversation (ID and creation timestamp).
|
|
254
|
+
* Checks in-memory cache first, then persistent storage if enabled.
|
|
255
|
+
*
|
|
256
|
+
* @public
|
|
257
|
+
* @async
|
|
258
|
+
* @param {string} sessionId - The ID of the conversation.
|
|
259
|
+
* @returns {Promise<Array<{ sessionId: string; createdAt: number }>>} Array with conversation info, or empty if not found.
|
|
260
|
+
*/
|
|
261
|
+
async getConversationInfo(sessionId) {
|
|
262
|
+
this.ensureInitialized();
|
|
263
|
+
const context = this.activeConversations.get(sessionId);
|
|
264
|
+
if (context) {
|
|
265
|
+
return [{ sessionId: context.sessionId, createdAt: context.createdAt }];
|
|
266
|
+
}
|
|
267
|
+
// Optionally, try loading from DB if not in memory to provide info
|
|
268
|
+
if (this.config.persistenceEnabled && this.storageAdapter) {
|
|
269
|
+
try {
|
|
270
|
+
const dbConvo = await this.storageAdapter.get('SELECT id, created_at FROM conversations WHERE id = ?', [sessionId]);
|
|
271
|
+
if (dbConvo) {
|
|
272
|
+
return [{ sessionId: dbConvo.id, createdAt: dbConvo.created_at }];
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
catch (error) {
|
|
276
|
+
console.error(`ConversationManager (ID: ${this.managerId}): Error fetching conversation info for ${sessionId}:`, error);
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
return [];
|
|
280
|
+
}
|
|
281
|
+
/**
|
|
282
|
+
* Gets the last active time for a conversation, typically the timestamp of the last message or update.
|
|
283
|
+
* Checks in-memory cache first, then persistent storage if enabled.
|
|
284
|
+
*
|
|
285
|
+
* @public
|
|
286
|
+
* @async
|
|
287
|
+
* @param {string} conversationId - The ID of the conversation.
|
|
288
|
+
* @returns {Promise<number | undefined>} Timestamp of last activity (Unix epoch ms), or undefined if not found.
|
|
289
|
+
*/
|
|
290
|
+
async getLastActiveTimeForConversation(conversationId) {
|
|
291
|
+
this.ensureInitialized();
|
|
292
|
+
const context = this.activeConversations.get(conversationId);
|
|
293
|
+
if (context) {
|
|
294
|
+
const lastMessage = context.getLastMessage();
|
|
295
|
+
return lastMessage?.timestamp || context.createdAt;
|
|
296
|
+
}
|
|
297
|
+
if (this.config.persistenceEnabled && this.storageAdapter) {
|
|
298
|
+
try {
|
|
299
|
+
const convo = await this.storageAdapter.get('SELECT updated_at FROM conversations WHERE id = ?', [conversationId]);
|
|
300
|
+
return convo?.updated_at;
|
|
301
|
+
}
|
|
302
|
+
catch (error) {
|
|
303
|
+
console.error(`ConversationManager (ID: ${this.managerId}): Error fetching 'updated_at' for conversation ${conversationId} from DB:`, error);
|
|
304
|
+
return undefined;
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
return undefined;
|
|
308
|
+
}
|
|
309
|
+
/**
|
|
310
|
+
* Evicts the oldest (Least Recently Used based on `_lastAccessed` metadata)
|
|
311
|
+
* conversation from the in-memory cache.
|
|
312
|
+
* If persistence is enabled, ensures the conversation is saved to DB before eviction.
|
|
313
|
+
* @private
|
|
314
|
+
* @async
|
|
315
|
+
*/
|
|
316
|
+
async evictOldestConversation() {
|
|
317
|
+
if (this.activeConversations.size === 0)
|
|
318
|
+
return;
|
|
319
|
+
let oldestSessionId;
|
|
320
|
+
let oldestTimestamp = Infinity;
|
|
321
|
+
for (const [sessionId, context] of this.activeConversations.entries()) {
|
|
322
|
+
const lastAccessed = context.getMetadata('_lastAccessed') || context.createdAt;
|
|
323
|
+
if (lastAccessed < oldestTimestamp) {
|
|
324
|
+
oldestTimestamp = lastAccessed;
|
|
325
|
+
oldestSessionId = sessionId;
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
if (oldestSessionId) {
|
|
329
|
+
const contextToEvict = this.activeConversations.get(oldestSessionId);
|
|
330
|
+
console.warn(`ConversationManager (ID: ${this.managerId}): Max in-memory conversations reached (${this.activeConversations.size}/${this.config.maxActiveConversationsInMemory}). Evicting conversation ${oldestSessionId}. Last accessed: ${new Date(oldestTimestamp).toISOString()}`);
|
|
331
|
+
if (contextToEvict && this.config.persistenceEnabled && this.storageAdapter) {
|
|
332
|
+
try {
|
|
333
|
+
await this.saveConversationToDB(contextToEvict);
|
|
334
|
+
console.log(`ConversationManager (ID: ${this.managerId}): Successfully saved conversation ${oldestSessionId} to DB before eviction.`);
|
|
335
|
+
}
|
|
336
|
+
catch (error) {
|
|
337
|
+
console.error(`ConversationManager (ID: ${this.managerId}): Failed to save conversation ${oldestSessionId} to DB before eviction. Data might be lost if not already persisted. Error:`, error);
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
this.activeConversations.delete(oldestSessionId);
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
/**
|
|
344
|
+
* Saves a ConversationContext to the database using StorageAdapter.
|
|
345
|
+
* This is an upsert operation: creates if not exists, updates if exists.
|
|
346
|
+
* Handles serialization of messages and metadata within a transaction.
|
|
347
|
+
*
|
|
348
|
+
* @async
|
|
349
|
+
* @private
|
|
350
|
+
* @param {ConversationContext} context - The ConversationContext to save.
|
|
351
|
+
* @throws {GMIError} If the database operation fails.
|
|
352
|
+
*/
|
|
353
|
+
async saveConversationToDB(context) {
|
|
354
|
+
if (!this.storageAdapter || !this.config.persistenceEnabled)
|
|
355
|
+
return;
|
|
356
|
+
const contextJSON = context.toJSON();
|
|
357
|
+
try {
|
|
358
|
+
await this.storageAdapter.transaction(async (tx) => {
|
|
359
|
+
const now = Date.now();
|
|
360
|
+
const conversationData = {
|
|
361
|
+
id: context.sessionId,
|
|
362
|
+
user_id: context.userId,
|
|
363
|
+
gmi_instance_id: context.gmiInstanceId || null,
|
|
364
|
+
title: contextJSON.sessionMetadata?.title || `Conversation from ${new Date(context.createdAt).toLocaleDateString()}`,
|
|
365
|
+
language: context.currentLanguage || null,
|
|
366
|
+
session_details: JSON.stringify(contextJSON.sessionMetadata || {}),
|
|
367
|
+
is_archived: contextJSON.sessionMetadata?.isArchived ? 1 : 0,
|
|
368
|
+
tags: JSON.stringify(contextJSON.sessionMetadata?.tags || []),
|
|
369
|
+
created_at: context.createdAt,
|
|
370
|
+
updated_at: now,
|
|
371
|
+
};
|
|
372
|
+
// Upsert conversation (cross-platform compatible)
|
|
373
|
+
// Check if exists first, then INSERT or UPDATE
|
|
374
|
+
const existing = await tx.get('SELECT created_at FROM conversations WHERE id = ?', [conversationData.id]);
|
|
375
|
+
const finalCreatedAt = existing?.created_at || conversationData.created_at;
|
|
376
|
+
if (existing) {
|
|
377
|
+
// Update existing (works on all databases)
|
|
378
|
+
await tx.run(`UPDATE conversations SET
|
|
379
|
+
user_id = ?, gmi_instance_id = ?, title = ?, language = ?, session_details = ?,
|
|
380
|
+
is_archived = ?, tags = ?, updated_at = ?
|
|
381
|
+
WHERE id = ?`, [
|
|
382
|
+
conversationData.user_id,
|
|
383
|
+
conversationData.gmi_instance_id,
|
|
384
|
+
conversationData.title,
|
|
385
|
+
conversationData.language,
|
|
386
|
+
conversationData.session_details,
|
|
387
|
+
conversationData.is_archived,
|
|
388
|
+
conversationData.tags,
|
|
389
|
+
conversationData.updated_at,
|
|
390
|
+
conversationData.id,
|
|
391
|
+
]);
|
|
392
|
+
}
|
|
393
|
+
else {
|
|
394
|
+
// Insert new (works on all databases)
|
|
395
|
+
await tx.run(`INSERT INTO conversations (id, user_id, gmi_instance_id, title, language, session_details, is_archived, tags, created_at, updated_at)
|
|
396
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`, [
|
|
397
|
+
conversationData.id,
|
|
398
|
+
conversationData.user_id,
|
|
399
|
+
conversationData.gmi_instance_id,
|
|
400
|
+
conversationData.title,
|
|
401
|
+
conversationData.language,
|
|
402
|
+
conversationData.session_details,
|
|
403
|
+
conversationData.is_archived,
|
|
404
|
+
conversationData.tags,
|
|
405
|
+
finalCreatedAt,
|
|
406
|
+
conversationData.updated_at,
|
|
407
|
+
]);
|
|
408
|
+
}
|
|
409
|
+
// Delete old messages
|
|
410
|
+
await tx.run('DELETE FROM conversation_messages WHERE conversation_id = ?', [context.sessionId]);
|
|
411
|
+
// Insert new messages
|
|
412
|
+
if (contextJSON.messages && contextJSON.messages.length > 0) {
|
|
413
|
+
for (const msg of contextJSON.messages) {
|
|
414
|
+
const messageId = msg.id || `msg_${uuidv4()}`;
|
|
415
|
+
await tx.run(`INSERT INTO conversation_messages (
|
|
416
|
+
id, conversation_id, role, content, timestamp, tool_calls, tool_call_id,
|
|
417
|
+
multimodal_data, audio_url, audio_transcript, voice_settings, metadata
|
|
418
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`, [
|
|
419
|
+
messageId,
|
|
420
|
+
context.sessionId,
|
|
421
|
+
msg.role.toString(),
|
|
422
|
+
typeof msg.content === 'string' ? msg.content : JSON.stringify(msg.content),
|
|
423
|
+
msg.timestamp,
|
|
424
|
+
msg.tool_calls ? JSON.stringify(msg.tool_calls) : null,
|
|
425
|
+
msg.tool_call_id || null,
|
|
426
|
+
msg.multimodalData ? JSON.stringify(msg.multimodalData) : null,
|
|
427
|
+
msg.audioUrl || null,
|
|
428
|
+
msg.audioTranscript || null,
|
|
429
|
+
msg.voiceSettings ? JSON.stringify(msg.voiceSettings) : null,
|
|
430
|
+
JSON.stringify(msg.metadata || {}),
|
|
431
|
+
]);
|
|
432
|
+
}
|
|
433
|
+
}
|
|
434
|
+
});
|
|
435
|
+
}
|
|
436
|
+
catch (error) {
|
|
437
|
+
console.error(`ConversationManager (ID: ${this.managerId}): Error saving conversation ${context.sessionId} to DB: ${error.message}`, error);
|
|
438
|
+
throw new GMIError(`Failed to save conversation ${context.sessionId} to database.`, GMIErrorCode.DATABASE_ERROR, { underlyingError: error.message, stack: error.stack });
|
|
439
|
+
}
|
|
440
|
+
}
|
|
441
|
+
/**
|
|
442
|
+
* Loads a ConversationContext from the database using StorageAdapter.
|
|
443
|
+
* Reconstructs the ConversationContext instance along with its messages and metadata.
|
|
444
|
+
*
|
|
445
|
+
* @async
|
|
446
|
+
* @private
|
|
447
|
+
* @param {string} conversationId - The ID of the conversation to load.
|
|
448
|
+
* @returns {Promise<ConversationContext | undefined>} The loaded ConversationContext or undefined if not found.
|
|
449
|
+
* @throws {GMIError} If the database operation fails or data inconsistency is detected.
|
|
450
|
+
*/
|
|
451
|
+
async loadConversationFromDB(conversationId) {
|
|
452
|
+
if (!this.storageAdapter || !this.config.persistenceEnabled)
|
|
453
|
+
return undefined;
|
|
454
|
+
try {
|
|
455
|
+
const convoData = await this.storageAdapter.get('SELECT * FROM conversations WHERE id = ?', [conversationId]);
|
|
456
|
+
if (!convoData)
|
|
457
|
+
return undefined;
|
|
458
|
+
const messages = await this.storageAdapter.all('SELECT * FROM conversation_messages WHERE conversation_id = ? ORDER BY timestamp ASC', [conversationId]);
|
|
459
|
+
const internalMessages = messages.map((dbMsg) => {
|
|
460
|
+
let parsedContent;
|
|
461
|
+
try {
|
|
462
|
+
if (dbMsg.content && ((dbMsg.content.startsWith('{') && dbMsg.content.endsWith('}')) || (dbMsg.content.startsWith('[') && dbMsg.content.endsWith(']')))) {
|
|
463
|
+
parsedContent = JSON.parse(dbMsg.content);
|
|
464
|
+
}
|
|
465
|
+
else {
|
|
466
|
+
parsedContent = dbMsg.content;
|
|
467
|
+
}
|
|
468
|
+
}
|
|
469
|
+
catch {
|
|
470
|
+
console.warn(`ConversationManager (ID: ${this.managerId}): Failed to parse content for message ${dbMsg.id} from DB as JSON, using as string.`);
|
|
471
|
+
parsedContent = dbMsg.content;
|
|
472
|
+
}
|
|
473
|
+
const messageOptions = {
|
|
474
|
+
tool_calls: dbMsg.tool_calls ? JSON.parse(dbMsg.tool_calls) : undefined,
|
|
475
|
+
tool_call_id: dbMsg.tool_call_id || undefined,
|
|
476
|
+
metadata: dbMsg.metadata ? JSON.parse(dbMsg.metadata) : undefined,
|
|
477
|
+
...(dbMsg.multimodal_data && { multimodalData: JSON.parse(dbMsg.multimodal_data) }),
|
|
478
|
+
...(dbMsg.audio_url && { audioUrl: dbMsg.audio_url }),
|
|
479
|
+
...(dbMsg.audio_transcript && { audioTranscript: dbMsg.audio_transcript }),
|
|
480
|
+
...(dbMsg.voice_settings && { voiceSettings: JSON.parse(dbMsg.voice_settings) }),
|
|
481
|
+
};
|
|
482
|
+
return createConversationMessage(dbMsg.role, parsedContent, {
|
|
483
|
+
...messageOptions,
|
|
484
|
+
id: dbMsg.id,
|
|
485
|
+
timestamp: dbMsg.timestamp,
|
|
486
|
+
});
|
|
487
|
+
});
|
|
488
|
+
const sessionMetadataFromDB = JSON.parse(convoData.session_details || '{}');
|
|
489
|
+
const contextSpecificConfig = sessionMetadataFromDB.contextConfigOverrides || {};
|
|
490
|
+
const finalContextConfig = {
|
|
491
|
+
...this.config.defaultConversationContextConfig,
|
|
492
|
+
userId: convoData.user_id || this.config.defaultConversationContextConfig?.userId,
|
|
493
|
+
gmiInstanceId: convoData.gmi_instance_id || this.config.defaultConversationContextConfig?.gmiInstanceId,
|
|
494
|
+
activePersonaId: sessionMetadataFromDB.activePersonaId || this.config.defaultConversationContextConfig?.activePersonaId,
|
|
495
|
+
utilityAI: this.utilityAIService,
|
|
496
|
+
...contextSpecificConfig,
|
|
497
|
+
};
|
|
498
|
+
const context = ConversationContext.fromJSON({
|
|
499
|
+
sessionId: convoData.id,
|
|
500
|
+
createdAt: convoData.created_at,
|
|
501
|
+
messages: internalMessages,
|
|
502
|
+
config: {
|
|
503
|
+
...finalContextConfig,
|
|
504
|
+
utilityAIServiceId: this.utilityAIService?.utilityId,
|
|
505
|
+
},
|
|
506
|
+
sessionMetadata: sessionMetadataFromDB,
|
|
507
|
+
}, (serviceId) => {
|
|
508
|
+
if (this.utilityAIService && serviceId === this.utilityAIService.utilityId) {
|
|
509
|
+
return this.utilityAIService;
|
|
510
|
+
}
|
|
511
|
+
if (serviceId && (!this.utilityAIService || serviceId !== this.utilityAIService.utilityId)) {
|
|
512
|
+
console.warn(`ConversationManager (ID: ${this.managerId}): Conversation ${conversationId} stored utilityAIServiceId '${serviceId}' which differs from current or is unavailable.`);
|
|
513
|
+
}
|
|
514
|
+
return this.utilityAIService;
|
|
515
|
+
});
|
|
516
|
+
console.log(`ConversationManager (ID: ${this.managerId}): Conversation ${conversationId} loaded from DB with ${internalMessages.length} messages.`);
|
|
517
|
+
return context;
|
|
518
|
+
}
|
|
519
|
+
catch (error) {
|
|
520
|
+
console.error(`ConversationManager (ID: ${this.managerId}): Error loading conversation ${conversationId} from DB: ${error.message}`, error);
|
|
521
|
+
throw new GMIError(`Failed to load conversation ${conversationId} from database.`, GMIErrorCode.DATABASE_ERROR, { underlyingError: error.message, stack: error.stack });
|
|
522
|
+
}
|
|
523
|
+
}
|
|
524
|
+
/**
|
|
525
|
+
* Shuts down the ConversationManager.
|
|
526
|
+
* If persistence is enabled, ensures all active conversations are saved to the database.
|
|
527
|
+
* Clears the in-memory cache of conversations.
|
|
528
|
+
*
|
|
529
|
+
* @public
|
|
530
|
+
* @async
|
|
531
|
+
* @returns {Promise<void>}
|
|
532
|
+
*/
|
|
533
|
+
async shutdown() {
|
|
534
|
+
if (!this.initialized) {
|
|
535
|
+
console.warn(`ConversationManager (ID: ${this.managerId}) shutdown called but was not initialized.`);
|
|
536
|
+
return;
|
|
537
|
+
}
|
|
538
|
+
console.log(`ConversationManager (ID: ${this.managerId}): Shutting down...`);
|
|
539
|
+
if (this.config.persistenceEnabled && this.storageAdapter) {
|
|
540
|
+
console.log(`ConversationManager (ID: ${this.managerId}): Saving all active conversations (${this.activeConversations.size}) before shutdown...`);
|
|
541
|
+
let savedCount = 0;
|
|
542
|
+
for (const context of this.activeConversations.values()) {
|
|
543
|
+
try {
|
|
544
|
+
await this.saveConversationToDB(context);
|
|
545
|
+
savedCount++;
|
|
546
|
+
}
|
|
547
|
+
catch (error) {
|
|
548
|
+
console.error(`ConversationManager (ID: ${this.managerId}): Error saving conversation ${context.sessionId} during shutdown:`, error);
|
|
549
|
+
}
|
|
550
|
+
}
|
|
551
|
+
console.log(`ConversationManager (ID: ${this.managerId}): ${savedCount} active conversations processed for saving.`);
|
|
552
|
+
}
|
|
553
|
+
this.activeConversations.clear();
|
|
554
|
+
this.initialized = false;
|
|
555
|
+
console.log(`ConversationManager (ID: ${this.managerId}): Shutdown complete. In-memory cache cleared.`);
|
|
556
|
+
}
|
|
557
|
+
}
|
|
558
|
+
//# sourceMappingURL=ConversationManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConversationManager.js","sourceRoot":"","sources":["../../../src/core/conversation/ConversationManager.ts"],"names":[],"mappings":"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"}
|