@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.
Files changed (601) hide show
  1. package/LICENSE +98 -0
  2. package/README.md +576 -0
  3. package/dist/api/AgentOS.d.ts +451 -0
  4. package/dist/api/AgentOS.d.ts.map +1 -0
  5. package/dist/api/AgentOS.js +1157 -0
  6. package/dist/api/AgentOS.js.map +1 -0
  7. package/dist/api/AgentOSOrchestrator.d.ts +157 -0
  8. package/dist/api/AgentOSOrchestrator.d.ts.map +1 -0
  9. package/dist/api/AgentOSOrchestrator.js +679 -0
  10. package/dist/api/AgentOSOrchestrator.js.map +1 -0
  11. package/dist/api/interfaces/IAgentOS.d.ts +138 -0
  12. package/dist/api/interfaces/IAgentOS.d.ts.map +1 -0
  13. package/dist/api/interfaces/IAgentOS.js +11 -0
  14. package/dist/api/interfaces/IAgentOS.js.map +1 -0
  15. package/dist/api/interfaces/IUnifiedAgent.d.ts +126 -0
  16. package/dist/api/interfaces/IUnifiedAgent.d.ts.map +1 -0
  17. package/dist/api/interfaces/IUnifiedAgent.js +3 -0
  18. package/dist/api/interfaces/IUnifiedAgent.js.map +1 -0
  19. package/dist/api/types/AgentOSInput.d.ts +114 -0
  20. package/dist/api/types/AgentOSInput.d.ts.map +1 -0
  21. package/dist/api/types/AgentOSInput.js +13 -0
  22. package/dist/api/types/AgentOSInput.js.map +1 -0
  23. package/dist/api/types/AgentOSResponse.d.ts +170 -0
  24. package/dist/api/types/AgentOSResponse.d.ts.map +1 -0
  25. package/dist/api/types/AgentOSResponse.js +25 -0
  26. package/dist/api/types/AgentOSResponse.js.map +1 -0
  27. package/dist/cognitive_substrate/GMI.d.ts +148 -0
  28. package/dist/cognitive_substrate/GMI.d.ts.map +1 -0
  29. package/dist/cognitive_substrate/GMI.js +1003 -0
  30. package/dist/cognitive_substrate/GMI.js.map +1 -0
  31. package/dist/cognitive_substrate/GMIManager.d.ts +98 -0
  32. package/dist/cognitive_substrate/GMIManager.d.ts.map +1 -0
  33. package/dist/cognitive_substrate/GMIManager.js +517 -0
  34. package/dist/cognitive_substrate/GMIManager.js.map +1 -0
  35. package/dist/cognitive_substrate/IGMI.d.ts +469 -0
  36. package/dist/cognitive_substrate/IGMI.d.ts.map +1 -0
  37. package/dist/cognitive_substrate/IGMI.js +111 -0
  38. package/dist/cognitive_substrate/IGMI.js.map +1 -0
  39. package/dist/cognitive_substrate/memory/IWorkingMemory.d.ts +139 -0
  40. package/dist/cognitive_substrate/memory/IWorkingMemory.d.ts.map +1 -0
  41. package/dist/cognitive_substrate/memory/IWorkingMemory.js +14 -0
  42. package/dist/cognitive_substrate/memory/IWorkingMemory.js.map +1 -0
  43. package/dist/cognitive_substrate/memory/InMemoryWorkingMemory.d.ts +143 -0
  44. package/dist/cognitive_substrate/memory/InMemoryWorkingMemory.d.ts.map +1 -0
  45. package/dist/cognitive_substrate/memory/InMemoryWorkingMemory.js +186 -0
  46. package/dist/cognitive_substrate/memory/InMemoryWorkingMemory.js.map +1 -0
  47. package/dist/cognitive_substrate/persona_overlays/PersonaOverlayManager.d.ts +33 -0
  48. package/dist/cognitive_substrate/persona_overlays/PersonaOverlayManager.d.ts.map +1 -0
  49. package/dist/cognitive_substrate/persona_overlays/PersonaOverlayManager.js +138 -0
  50. package/dist/cognitive_substrate/persona_overlays/PersonaOverlayManager.js.map +1 -0
  51. package/dist/cognitive_substrate/persona_overlays/PersonaOverlayTypes.d.ts +32 -0
  52. package/dist/cognitive_substrate/persona_overlays/PersonaOverlayTypes.d.ts.map +1 -0
  53. package/dist/cognitive_substrate/persona_overlays/PersonaOverlayTypes.js +2 -0
  54. package/dist/cognitive_substrate/persona_overlays/PersonaOverlayTypes.js.map +1 -0
  55. package/dist/cognitive_substrate/personas/IPersonaDefinition.d.ts +336 -0
  56. package/dist/cognitive_substrate/personas/IPersonaDefinition.d.ts.map +1 -0
  57. package/dist/cognitive_substrate/personas/IPersonaDefinition.js +8 -0
  58. package/dist/cognitive_substrate/personas/IPersonaDefinition.js.map +1 -0
  59. package/dist/cognitive_substrate/personas/IPersonaLoader.d.ts +78 -0
  60. package/dist/cognitive_substrate/personas/IPersonaLoader.d.ts.map +1 -0
  61. package/dist/cognitive_substrate/personas/IPersonaLoader.js +9 -0
  62. package/dist/cognitive_substrate/personas/IPersonaLoader.js.map +1 -0
  63. package/dist/cognitive_substrate/personas/PersonaLoader.d.ts +60 -0
  64. package/dist/cognitive_substrate/personas/PersonaLoader.d.ts.map +1 -0
  65. package/dist/cognitive_substrate/personas/PersonaLoader.js +138 -0
  66. package/dist/cognitive_substrate/personas/PersonaLoader.js.map +1 -0
  67. package/dist/cognitive_substrate/personas/PersonaValidation.d.ts +139 -0
  68. package/dist/cognitive_substrate/personas/PersonaValidation.d.ts.map +1 -0
  69. package/dist/cognitive_substrate/personas/PersonaValidation.js +277 -0
  70. package/dist/cognitive_substrate/personas/PersonaValidation.js.map +1 -0
  71. package/dist/cognitive_substrate/personas/definitions/atlas_systems_architect.json +29 -0
  72. package/dist/cognitive_substrate/personas/definitions/default_assistant_persona.json +346 -0
  73. package/dist/cognitive_substrate/personas/definitions/default_free_assistant.json +13 -0
  74. package/dist/cognitive_substrate/personas/definitions/index.d.ts +14 -0
  75. package/dist/cognitive_substrate/personas/definitions/index.d.ts.map +1 -0
  76. package/dist/cognitive_substrate/personas/definitions/index.js +35 -0
  77. package/dist/cognitive_substrate/personas/definitions/index.js.map +1 -0
  78. package/dist/cognitive_substrate/personas/definitions/nerf_generalist.json +11 -0
  79. package/dist/cognitive_substrate/personas/definitions/v_researcher.json +11 -0
  80. package/dist/config/AgentOSConfig.d.ts +74 -0
  81. package/dist/config/AgentOSConfig.d.ts.map +1 -0
  82. package/dist/config/AgentOSConfig.js +399 -0
  83. package/dist/config/AgentOSConfig.js.map +1 -0
  84. package/dist/config/EmbeddingManagerConfiguration.d.ts +190 -0
  85. package/dist/config/EmbeddingManagerConfiguration.d.ts.map +1 -0
  86. package/dist/config/EmbeddingManagerConfiguration.js +16 -0
  87. package/dist/config/EmbeddingManagerConfiguration.js.map +1 -0
  88. package/dist/config/MemoryLifecycleManagerConfiguration.d.ts +165 -0
  89. package/dist/config/MemoryLifecycleManagerConfiguration.d.ts.map +1 -0
  90. package/dist/config/MemoryLifecycleManagerConfiguration.js +69 -0
  91. package/dist/config/MemoryLifecycleManagerConfiguration.js.map +1 -0
  92. package/dist/config/RetrievalAugmentorConfiguration.d.ts +98 -0
  93. package/dist/config/RetrievalAugmentorConfiguration.d.ts.map +1 -0
  94. package/dist/config/RetrievalAugmentorConfiguration.js +47 -0
  95. package/dist/config/RetrievalAugmentorConfiguration.js.map +1 -0
  96. package/dist/config/ToolOrchestratorConfig.d.ts +69 -0
  97. package/dist/config/ToolOrchestratorConfig.d.ts.map +1 -0
  98. package/dist/config/ToolOrchestratorConfig.js +11 -0
  99. package/dist/config/ToolOrchestratorConfig.js.map +1 -0
  100. package/dist/config/VectorStoreConfiguration.d.ts +223 -0
  101. package/dist/config/VectorStoreConfiguration.d.ts.map +1 -0
  102. package/dist/config/VectorStoreConfiguration.js +59 -0
  103. package/dist/config/VectorStoreConfiguration.js.map +1 -0
  104. package/dist/config/extension-secrets.json +38 -0
  105. package/dist/config/extensionSecrets.d.ts +13 -0
  106. package/dist/config/extensionSecrets.d.ts.map +1 -0
  107. package/dist/config/extensionSecrets.js +24 -0
  108. package/dist/config/extensionSecrets.js.map +1 -0
  109. package/dist/core/agency/AgencyMemoryManager.d.ts +300 -0
  110. package/dist/core/agency/AgencyMemoryManager.d.ts.map +1 -0
  111. package/dist/core/agency/AgencyMemoryManager.js +657 -0
  112. package/dist/core/agency/AgencyMemoryManager.js.map +1 -0
  113. package/dist/core/agency/AgencyRegistry.d.ts +100 -0
  114. package/dist/core/agency/AgencyRegistry.d.ts.map +1 -0
  115. package/dist/core/agency/AgencyRegistry.js +209 -0
  116. package/dist/core/agency/AgencyRegistry.js.map +1 -0
  117. package/dist/core/agency/AgencyTypes.d.ts +200 -0
  118. package/dist/core/agency/AgencyTypes.d.ts.map +1 -0
  119. package/dist/core/agency/AgencyTypes.js +7 -0
  120. package/dist/core/agency/AgencyTypes.js.map +1 -0
  121. package/dist/core/agency/AgentCommunicationBus.d.ts +150 -0
  122. package/dist/core/agency/AgentCommunicationBus.d.ts.map +1 -0
  123. package/dist/core/agency/AgentCommunicationBus.js +568 -0
  124. package/dist/core/agency/AgentCommunicationBus.js.map +1 -0
  125. package/dist/core/agency/IAgentCommunicationBus.d.ts +469 -0
  126. package/dist/core/agency/IAgentCommunicationBus.d.ts.map +1 -0
  127. package/dist/core/agency/IAgentCommunicationBus.js +40 -0
  128. package/dist/core/agency/IAgentCommunicationBus.js.map +1 -0
  129. package/dist/core/agency/index.d.ts +18 -0
  130. package/dist/core/agency/index.d.ts.map +1 -0
  131. package/dist/core/agency/index.js +18 -0
  132. package/dist/core/agency/index.js.map +1 -0
  133. package/dist/core/agents/AgentCore.d.ts +385 -0
  134. package/dist/core/agents/AgentCore.d.ts.map +1 -0
  135. package/dist/core/agents/AgentCore.js +527 -0
  136. package/dist/core/agents/AgentCore.js.map +1 -0
  137. package/dist/core/agents/AgentFactory.d.ts +123 -0
  138. package/dist/core/agents/AgentFactory.d.ts.map +1 -0
  139. package/dist/core/agents/AgentFactory.js +232 -0
  140. package/dist/core/agents/AgentFactory.js.map +1 -0
  141. package/dist/core/agents/AgentPoolAgent.d.ts +244 -0
  142. package/dist/core/agents/AgentPoolAgent.d.ts.map +1 -0
  143. package/dist/core/agents/AgentPoolAgent.js +697 -0
  144. package/dist/core/agents/AgentPoolAgent.js.map +1 -0
  145. package/dist/core/agents/AgentPoolConfig.d.ts +191 -0
  146. package/dist/core/agents/AgentPoolConfig.d.ts.map +1 -0
  147. package/dist/core/agents/AgentPoolConfig.js +58 -0
  148. package/dist/core/agents/AgentPoolConfig.js.map +1 -0
  149. package/dist/core/agents/IAgent.d.ts +226 -0
  150. package/dist/core/agents/IAgent.d.ts.map +1 -0
  151. package/dist/core/agents/IAgent.js +14 -0
  152. package/dist/core/agents/IAgent.js.map +1 -0
  153. package/dist/core/agents/IAgentFactory.d.ts +137 -0
  154. package/dist/core/agents/IAgentFactory.d.ts.map +1 -0
  155. package/dist/core/agents/IAgentFactory.js +13 -0
  156. package/dist/core/agents/IAgentFactory.js.map +1 -0
  157. package/dist/core/agents/tools/Tool.d.ts +17 -0
  158. package/dist/core/agents/tools/Tool.d.ts.map +1 -0
  159. package/dist/core/agents/tools/Tool.js +8 -0
  160. package/dist/core/agents/tools/Tool.js.map +1 -0
  161. package/dist/core/ai_utilities/HybridUtilityAI.d.ts +1 -0
  162. package/dist/core/ai_utilities/HybridUtilityAI.d.ts.map +1 -0
  163. package/dist/core/ai_utilities/HybridUtilityAI.js +2 -0
  164. package/dist/core/ai_utilities/HybridUtilityAI.js.map +1 -0
  165. package/dist/core/ai_utilities/IUtilityAI.d.ts +212 -0
  166. package/dist/core/ai_utilities/IUtilityAI.d.ts.map +1 -0
  167. package/dist/core/ai_utilities/IUtilityAI.js +11 -0
  168. package/dist/core/ai_utilities/IUtilityAI.js.map +1 -0
  169. package/dist/core/ai_utilities/LLMUtilityAI.d.ts +94 -0
  170. package/dist/core/ai_utilities/LLMUtilityAI.d.ts.map +1 -0
  171. package/dist/core/ai_utilities/LLMUtilityAI.js +434 -0
  172. package/dist/core/ai_utilities/LLMUtilityAI.js.map +1 -0
  173. package/dist/core/ai_utilities/StatisticalUtilityAI.d.ts +102 -0
  174. package/dist/core/ai_utilities/StatisticalUtilityAI.d.ts.map +1 -0
  175. package/dist/core/ai_utilities/StatisticalUtilityAI.js +617 -0
  176. package/dist/core/ai_utilities/StatisticalUtilityAI.js.map +1 -0
  177. package/dist/core/conversation/ConversationContext.d.ts +259 -0
  178. package/dist/core/conversation/ConversationContext.d.ts.map +1 -0
  179. package/dist/core/conversation/ConversationContext.js +450 -0
  180. package/dist/core/conversation/ConversationContext.js.map +1 -0
  181. package/dist/core/conversation/ConversationManager.d.ts +223 -0
  182. package/dist/core/conversation/ConversationManager.d.ts.map +1 -0
  183. package/dist/core/conversation/ConversationManager.js +558 -0
  184. package/dist/core/conversation/ConversationManager.js.map +1 -0
  185. package/dist/core/conversation/ConversationMessage.d.ts +184 -0
  186. package/dist/core/conversation/ConversationMessage.d.ts.map +1 -0
  187. package/dist/core/conversation/ConversationMessage.js +66 -0
  188. package/dist/core/conversation/ConversationMessage.js.map +1 -0
  189. package/dist/core/evaluation/Evaluator.d.ts +28 -0
  190. package/dist/core/evaluation/Evaluator.d.ts.map +1 -0
  191. package/dist/core/evaluation/Evaluator.js +490 -0
  192. package/dist/core/evaluation/Evaluator.js.map +1 -0
  193. package/dist/core/evaluation/IEvaluator.d.ts +309 -0
  194. package/dist/core/evaluation/IEvaluator.d.ts.map +1 -0
  195. package/dist/core/evaluation/IEvaluator.js +12 -0
  196. package/dist/core/evaluation/IEvaluator.js.map +1 -0
  197. package/dist/core/evaluation/LLMJudge.d.ts +105 -0
  198. package/dist/core/evaluation/LLMJudge.d.ts.map +1 -0
  199. package/dist/core/evaluation/LLMJudge.js +229 -0
  200. package/dist/core/evaluation/LLMJudge.js.map +1 -0
  201. package/dist/core/evaluation/index.d.ts +9 -0
  202. package/dist/core/evaluation/index.d.ts.map +1 -0
  203. package/dist/core/evaluation/index.js +9 -0
  204. package/dist/core/evaluation/index.js.map +1 -0
  205. package/dist/core/guardrails/IGuardrailService.d.ts +142 -0
  206. package/dist/core/guardrails/IGuardrailService.d.ts.map +1 -0
  207. package/dist/core/guardrails/IGuardrailService.js +24 -0
  208. package/dist/core/guardrails/IGuardrailService.js.map +1 -0
  209. package/dist/core/guardrails/guardrailDispatcher.d.ts +36 -0
  210. package/dist/core/guardrails/guardrailDispatcher.d.ts.map +1 -0
  211. package/dist/core/guardrails/guardrailDispatcher.js +240 -0
  212. package/dist/core/guardrails/guardrailDispatcher.js.map +1 -0
  213. package/dist/core/hitl/HumanInteractionManager.d.ts +146 -0
  214. package/dist/core/hitl/HumanInteractionManager.d.ts.map +1 -0
  215. package/dist/core/hitl/HumanInteractionManager.js +491 -0
  216. package/dist/core/hitl/HumanInteractionManager.js.map +1 -0
  217. package/dist/core/hitl/IHumanInteractionManager.d.ts +521 -0
  218. package/dist/core/hitl/IHumanInteractionManager.d.ts.map +1 -0
  219. package/dist/core/hitl/IHumanInteractionManager.js +33 -0
  220. package/dist/core/hitl/IHumanInteractionManager.js.map +1 -0
  221. package/dist/core/hitl/index.d.ts +17 -0
  222. package/dist/core/hitl/index.d.ts.map +1 -0
  223. package/dist/core/hitl/index.js +17 -0
  224. package/dist/core/hitl/index.js.map +1 -0
  225. package/dist/core/knowledge/IKnowledgeGraph.d.ts +351 -0
  226. package/dist/core/knowledge/IKnowledgeGraph.d.ts.map +1 -0
  227. package/dist/core/knowledge/IKnowledgeGraph.js +10 -0
  228. package/dist/core/knowledge/IKnowledgeGraph.js.map +1 -0
  229. package/dist/core/knowledge/KnowledgeGraph.d.ts +93 -0
  230. package/dist/core/knowledge/KnowledgeGraph.d.ts.map +1 -0
  231. package/dist/core/knowledge/KnowledgeGraph.js +601 -0
  232. package/dist/core/knowledge/KnowledgeGraph.js.map +1 -0
  233. package/dist/core/knowledge/index.d.ts +8 -0
  234. package/dist/core/knowledge/index.d.ts.map +1 -0
  235. package/dist/core/knowledge/index.js +8 -0
  236. package/dist/core/knowledge/index.js.map +1 -0
  237. package/dist/core/language/LanguageService.d.ts +77 -0
  238. package/dist/core/language/LanguageService.d.ts.map +1 -0
  239. package/dist/core/language/LanguageService.js +305 -0
  240. package/dist/core/language/LanguageService.js.map +1 -0
  241. package/dist/core/language/index.d.ts +6 -0
  242. package/dist/core/language/index.d.ts.map +1 -0
  243. package/dist/core/language/index.js +6 -0
  244. package/dist/core/language/index.js.map +1 -0
  245. package/dist/core/language/interfaces.d.ts +168 -0
  246. package/dist/core/language/interfaces.d.ts.map +1 -0
  247. package/dist/core/language/interfaces.js +37 -0
  248. package/dist/core/language/interfaces.js.map +1 -0
  249. package/dist/core/language/providers/DeepLTranslationProvider.d.ts +16 -0
  250. package/dist/core/language/providers/DeepLTranslationProvider.d.ts.map +1 -0
  251. package/dist/core/language/providers/DeepLTranslationProvider.js +28 -0
  252. package/dist/core/language/providers/DeepLTranslationProvider.js.map +1 -0
  253. package/dist/core/language/providers/OpenAITranslationProvider.d.ts +17 -0
  254. package/dist/core/language/providers/OpenAITranslationProvider.d.ts.map +1 -0
  255. package/dist/core/language/providers/OpenAITranslationProvider.js +34 -0
  256. package/dist/core/language/providers/OpenAITranslationProvider.js.map +1 -0
  257. package/dist/core/language/providers/WhisperDetectionProvider.d.ts +16 -0
  258. package/dist/core/language/providers/WhisperDetectionProvider.d.ts.map +1 -0
  259. package/dist/core/language/providers/WhisperDetectionProvider.js +15 -0
  260. package/dist/core/language/providers/WhisperDetectionProvider.js.map +1 -0
  261. package/dist/core/llm/IPromptEngine.d.ts +627 -0
  262. package/dist/core/llm/IPromptEngine.d.ts.map +1 -0
  263. package/dist/core/llm/IPromptEngine.js +81 -0
  264. package/dist/core/llm/IPromptEngine.js.map +1 -0
  265. package/dist/core/llm/PromptEngine.d.ts +108 -0
  266. package/dist/core/llm/PromptEngine.d.ts.map +1 -0
  267. package/dist/core/llm/PromptEngine.js +872 -0
  268. package/dist/core/llm/PromptEngine.js.map +1 -0
  269. package/dist/core/llm/providers/AIModelProviderManager.d.ts +74 -0
  270. package/dist/core/llm/providers/AIModelProviderManager.d.ts.map +1 -0
  271. package/dist/core/llm/providers/AIModelProviderManager.js +263 -0
  272. package/dist/core/llm/providers/AIModelProviderManager.js.map +1 -0
  273. package/dist/core/llm/providers/IProvider.d.ts +327 -0
  274. package/dist/core/llm/providers/IProvider.d.ts.map +1 -0
  275. package/dist/core/llm/providers/IProvider.js +39 -0
  276. package/dist/core/llm/providers/IProvider.js.map +1 -0
  277. package/dist/core/llm/providers/errors/OllamaProviderError.d.ts +36 -0
  278. package/dist/core/llm/providers/errors/OllamaProviderError.d.ts.map +1 -0
  279. package/dist/core/llm/providers/errors/OllamaProviderError.js +40 -0
  280. package/dist/core/llm/providers/errors/OllamaProviderError.js.map +1 -0
  281. package/dist/core/llm/providers/errors/OpenAIProviderError.d.ts +42 -0
  282. package/dist/core/llm/providers/errors/OpenAIProviderError.d.ts.map +1 -0
  283. package/dist/core/llm/providers/errors/OpenAIProviderError.js +44 -0
  284. package/dist/core/llm/providers/errors/OpenAIProviderError.js.map +1 -0
  285. package/dist/core/llm/providers/errors/OpenRouterProviderError.d.ts +39 -0
  286. package/dist/core/llm/providers/errors/OpenRouterProviderError.d.ts.map +1 -0
  287. package/dist/core/llm/providers/errors/OpenRouterProviderError.js +42 -0
  288. package/dist/core/llm/providers/errors/OpenRouterProviderError.js.map +1 -0
  289. package/dist/core/llm/providers/errors/ProviderError.d.ts +37 -0
  290. package/dist/core/llm/providers/errors/ProviderError.d.ts.map +1 -0
  291. package/dist/core/llm/providers/errors/ProviderError.js +36 -0
  292. package/dist/core/llm/providers/errors/ProviderError.js.map +1 -0
  293. package/dist/core/llm/providers/implementations/OllamaProvider.d.ts +80 -0
  294. package/dist/core/llm/providers/implementations/OllamaProvider.d.ts.map +1 -0
  295. package/dist/core/llm/providers/implementations/OllamaProvider.js +473 -0
  296. package/dist/core/llm/providers/implementations/OllamaProvider.js.map +1 -0
  297. package/dist/core/llm/providers/implementations/OpenAIProvider.d.ts +160 -0
  298. package/dist/core/llm/providers/implementations/OpenAIProvider.d.ts.map +1 -0
  299. package/dist/core/llm/providers/implementations/OpenAIProvider.js +672 -0
  300. package/dist/core/llm/providers/implementations/OpenAIProvider.js.map +1 -0
  301. package/dist/core/llm/providers/implementations/OpenRouterProvider.d.ts +51 -0
  302. package/dist/core/llm/providers/implementations/OpenRouterProvider.d.ts.map +1 -0
  303. package/dist/core/llm/providers/implementations/OpenRouterProvider.js +499 -0
  304. package/dist/core/llm/providers/implementations/OpenRouterProvider.js.map +1 -0
  305. package/dist/core/llm/routing/IModelRouter.d.ts +129 -0
  306. package/dist/core/llm/routing/IModelRouter.d.ts.map +1 -0
  307. package/dist/core/llm/routing/IModelRouter.js +14 -0
  308. package/dist/core/llm/routing/IModelRouter.js.map +1 -0
  309. package/dist/core/llm/routing/ModelRouter.d.ts +157 -0
  310. package/dist/core/llm/routing/ModelRouter.d.ts.map +1 -0
  311. package/dist/core/llm/routing/ModelRouter.js +190 -0
  312. package/dist/core/llm/routing/ModelRouter.js.map +1 -0
  313. package/dist/core/llm/streaming/StreamingBatcher.d.ts +54 -0
  314. package/dist/core/llm/streaming/StreamingBatcher.d.ts.map +1 -0
  315. package/dist/core/llm/streaming/StreamingBatcher.js +173 -0
  316. package/dist/core/llm/streaming/StreamingBatcher.js.map +1 -0
  317. package/dist/core/llm/streaming/StreamingReconstructor.d.ts +69 -0
  318. package/dist/core/llm/streaming/StreamingReconstructor.d.ts.map +1 -0
  319. package/dist/core/llm/streaming/StreamingReconstructor.js +102 -0
  320. package/dist/core/llm/streaming/StreamingReconstructor.js.map +1 -0
  321. package/dist/core/marketplace/IMarketplace.d.ts +500 -0
  322. package/dist/core/marketplace/IMarketplace.d.ts.map +1 -0
  323. package/dist/core/marketplace/IMarketplace.js +10 -0
  324. package/dist/core/marketplace/IMarketplace.js.map +1 -0
  325. package/dist/core/marketplace/Marketplace.d.ts +122 -0
  326. package/dist/core/marketplace/Marketplace.d.ts.map +1 -0
  327. package/dist/core/marketplace/Marketplace.js +591 -0
  328. package/dist/core/marketplace/Marketplace.js.map +1 -0
  329. package/dist/core/marketplace/index.d.ts +8 -0
  330. package/dist/core/marketplace/index.d.ts.map +1 -0
  331. package/dist/core/marketplace/index.js +8 -0
  332. package/dist/core/marketplace/index.js.map +1 -0
  333. package/dist/core/observability/ITracer.d.ts +317 -0
  334. package/dist/core/observability/ITracer.d.ts.map +1 -0
  335. package/dist/core/observability/ITracer.js +55 -0
  336. package/dist/core/observability/ITracer.js.map +1 -0
  337. package/dist/core/observability/Tracer.d.ts +76 -0
  338. package/dist/core/observability/Tracer.d.ts.map +1 -0
  339. package/dist/core/observability/Tracer.js +360 -0
  340. package/dist/core/observability/Tracer.js.map +1 -0
  341. package/dist/core/observability/index.d.ts +9 -0
  342. package/dist/core/observability/index.d.ts.map +1 -0
  343. package/dist/core/observability/index.js +8 -0
  344. package/dist/core/observability/index.js.map +1 -0
  345. package/dist/core/orchestration/AgentOrchestrator.d.ts +243 -0
  346. package/dist/core/orchestration/AgentOrchestrator.d.ts.map +1 -0
  347. package/dist/core/orchestration/AgentOrchestrator.js +648 -0
  348. package/dist/core/orchestration/AgentOrchestrator.js.map +1 -0
  349. package/dist/core/orchestration/IAgentOrchestrator.d.ts +44 -0
  350. package/dist/core/orchestration/IAgentOrchestrator.d.ts.map +1 -0
  351. package/dist/core/orchestration/IAgentOrchestrator.js +4 -0
  352. package/dist/core/orchestration/IAgentOrchestrator.js.map +1 -0
  353. package/dist/core/orchestration/helpers.d.ts +12 -0
  354. package/dist/core/orchestration/helpers.d.ts.map +1 -0
  355. package/dist/core/orchestration/helpers.js +36 -0
  356. package/dist/core/orchestration/helpers.js.map +1 -0
  357. package/dist/core/planning/IPlanningEngine.d.ts +524 -0
  358. package/dist/core/planning/IPlanningEngine.d.ts.map +1 -0
  359. package/dist/core/planning/IPlanningEngine.js +32 -0
  360. package/dist/core/planning/IPlanningEngine.js.map +1 -0
  361. package/dist/core/planning/PlanningEngine.d.ts +161 -0
  362. package/dist/core/planning/PlanningEngine.d.ts.map +1 -0
  363. package/dist/core/planning/PlanningEngine.js +783 -0
  364. package/dist/core/planning/PlanningEngine.js.map +1 -0
  365. package/dist/core/planning/index.d.ts +25 -0
  366. package/dist/core/planning/index.d.ts.map +1 -0
  367. package/dist/core/planning/index.js +25 -0
  368. package/dist/core/planning/index.js.map +1 -0
  369. package/dist/core/sandbox/CodeSandbox.d.ts +86 -0
  370. package/dist/core/sandbox/CodeSandbox.d.ts.map +1 -0
  371. package/dist/core/sandbox/CodeSandbox.js +475 -0
  372. package/dist/core/sandbox/CodeSandbox.js.map +1 -0
  373. package/dist/core/sandbox/ICodeSandbox.d.ts +249 -0
  374. package/dist/core/sandbox/ICodeSandbox.d.ts.map +1 -0
  375. package/dist/core/sandbox/ICodeSandbox.js +24 -0
  376. package/dist/core/sandbox/ICodeSandbox.js.map +1 -0
  377. package/dist/core/sandbox/index.d.ts +9 -0
  378. package/dist/core/sandbox/index.d.ts.map +1 -0
  379. package/dist/core/sandbox/index.js +8 -0
  380. package/dist/core/sandbox/index.js.map +1 -0
  381. package/dist/core/storage/IStorageAdapter.d.ts +483 -0
  382. package/dist/core/storage/IStorageAdapter.d.ts.map +1 -0
  383. package/dist/core/storage/IStorageAdapter.js +19 -0
  384. package/dist/core/storage/IStorageAdapter.js.map +1 -0
  385. package/dist/core/storage/InMemoryStorageAdapter.d.ts +192 -0
  386. package/dist/core/storage/InMemoryStorageAdapter.d.ts.map +1 -0
  387. package/dist/core/storage/InMemoryStorageAdapter.js +343 -0
  388. package/dist/core/storage/InMemoryStorageAdapter.js.map +1 -0
  389. package/dist/core/storage/SqlStorageAdapter.d.ts +262 -0
  390. package/dist/core/storage/SqlStorageAdapter.d.ts.map +1 -0
  391. package/dist/core/storage/SqlStorageAdapter.js +485 -0
  392. package/dist/core/storage/SqlStorageAdapter.js.map +1 -0
  393. package/dist/core/storage/index.d.ts +14 -0
  394. package/dist/core/storage/index.d.ts.map +1 -0
  395. package/dist/core/storage/index.js +14 -0
  396. package/dist/core/storage/index.js.map +1 -0
  397. package/dist/core/streaming/IStreamClient.d.ts +72 -0
  398. package/dist/core/streaming/IStreamClient.d.ts.map +1 -0
  399. package/dist/core/streaming/IStreamClient.js +12 -0
  400. package/dist/core/streaming/IStreamClient.js.map +1 -0
  401. package/dist/core/streaming/StreamingManager.d.ts +242 -0
  402. package/dist/core/streaming/StreamingManager.d.ts.map +1 -0
  403. package/dist/core/streaming/StreamingManager.js +282 -0
  404. package/dist/core/streaming/StreamingManager.js.map +1 -0
  405. package/dist/core/structured/IStructuredOutputManager.d.ts +701 -0
  406. package/dist/core/structured/IStructuredOutputManager.d.ts.map +1 -0
  407. package/dist/core/structured/IStructuredOutputManager.js +74 -0
  408. package/dist/core/structured/IStructuredOutputManager.js.map +1 -0
  409. package/dist/core/structured/StructuredOutputManager.d.ts +140 -0
  410. package/dist/core/structured/StructuredOutputManager.d.ts.map +1 -0
  411. package/dist/core/structured/StructuredOutputManager.js +1015 -0
  412. package/dist/core/structured/StructuredOutputManager.js.map +1 -0
  413. package/dist/core/structured/index.d.ts +34 -0
  414. package/dist/core/structured/index.d.ts.map +1 -0
  415. package/dist/core/structured/index.js +34 -0
  416. package/dist/core/structured/index.js.map +1 -0
  417. package/dist/core/tools/ITool.d.ts +228 -0
  418. package/dist/core/tools/ITool.d.ts.map +1 -0
  419. package/dist/core/tools/ITool.js +11 -0
  420. package/dist/core/tools/ITool.js.map +1 -0
  421. package/dist/core/tools/IToolOrchestrator.d.ts +131 -0
  422. package/dist/core/tools/IToolOrchestrator.d.ts.map +1 -0
  423. package/dist/core/tools/IToolOrchestrator.js +14 -0
  424. package/dist/core/tools/IToolOrchestrator.js.map +1 -0
  425. package/dist/core/tools/ToolExecutor.d.ts +143 -0
  426. package/dist/core/tools/ToolExecutor.d.ts.map +1 -0
  427. package/dist/core/tools/ToolExecutor.js +364 -0
  428. package/dist/core/tools/ToolExecutor.js.map +1 -0
  429. package/dist/core/tools/ToolOrchestrator.d.ts +142 -0
  430. package/dist/core/tools/ToolOrchestrator.d.ts.map +1 -0
  431. package/dist/core/tools/ToolOrchestrator.js +373 -0
  432. package/dist/core/tools/ToolOrchestrator.js.map +1 -0
  433. package/dist/core/tools/permissions/IToolPermissionManager.d.ts +195 -0
  434. package/dist/core/tools/permissions/IToolPermissionManager.d.ts.map +1 -0
  435. package/dist/core/tools/permissions/IToolPermissionManager.js +14 -0
  436. package/dist/core/tools/permissions/IToolPermissionManager.js.map +1 -0
  437. package/dist/core/tools/permissions/ToolPermissionManager.d.ts +203 -0
  438. package/dist/core/tools/permissions/ToolPermissionManager.d.ts.map +1 -0
  439. package/dist/core/tools/permissions/ToolPermissionManager.js +298 -0
  440. package/dist/core/tools/permissions/ToolPermissionManager.js.map +1 -0
  441. package/dist/core/ui/IUIComponent.d.ts +11 -0
  442. package/dist/core/ui/IUIComponent.d.ts.map +1 -0
  443. package/dist/core/ui/IUIComponent.js +2 -0
  444. package/dist/core/ui/IUIComponent.js.map +1 -0
  445. package/dist/core/usage/UsageLedger.d.ts +81 -0
  446. package/dist/core/usage/UsageLedger.d.ts.map +1 -0
  447. package/dist/core/usage/UsageLedger.js +135 -0
  448. package/dist/core/usage/UsageLedger.js.map +1 -0
  449. package/dist/core/workflows/IWorkflowEngine.d.ts +42 -0
  450. package/dist/core/workflows/IWorkflowEngine.d.ts.map +1 -0
  451. package/dist/core/workflows/IWorkflowEngine.js +2 -0
  452. package/dist/core/workflows/IWorkflowEngine.js.map +1 -0
  453. package/dist/core/workflows/WorkflowEngine.d.ts +28 -0
  454. package/dist/core/workflows/WorkflowEngine.d.ts.map +1 -0
  455. package/dist/core/workflows/WorkflowEngine.js +309 -0
  456. package/dist/core/workflows/WorkflowEngine.js.map +1 -0
  457. package/dist/core/workflows/WorkflowTypes.d.ts +180 -0
  458. package/dist/core/workflows/WorkflowTypes.d.ts.map +1 -0
  459. package/dist/core/workflows/WorkflowTypes.js +26 -0
  460. package/dist/core/workflows/WorkflowTypes.js.map +1 -0
  461. package/dist/core/workflows/runtime/WorkflowRuntime.d.ts +70 -0
  462. package/dist/core/workflows/runtime/WorkflowRuntime.d.ts.map +1 -0
  463. package/dist/core/workflows/runtime/WorkflowRuntime.js +566 -0
  464. package/dist/core/workflows/runtime/WorkflowRuntime.js.map +1 -0
  465. package/dist/core/workflows/storage/IWorkflowStore.d.ts +75 -0
  466. package/dist/core/workflows/storage/IWorkflowStore.d.ts.map +1 -0
  467. package/dist/core/workflows/storage/IWorkflowStore.js +2 -0
  468. package/dist/core/workflows/storage/IWorkflowStore.js.map +1 -0
  469. package/dist/core/workflows/storage/InMemoryWorkflowStore.d.ts +14 -0
  470. package/dist/core/workflows/storage/InMemoryWorkflowStore.d.ts.map +1 -0
  471. package/dist/core/workflows/storage/InMemoryWorkflowStore.js +130 -0
  472. package/dist/core/workflows/storage/InMemoryWorkflowStore.js.map +1 -0
  473. package/dist/extensions/ExtensionLoader.d.ts +119 -0
  474. package/dist/extensions/ExtensionLoader.d.ts.map +1 -0
  475. package/dist/extensions/ExtensionLoader.js +297 -0
  476. package/dist/extensions/ExtensionLoader.js.map +1 -0
  477. package/dist/extensions/ExtensionManager.d.ts +49 -0
  478. package/dist/extensions/ExtensionManager.d.ts.map +1 -0
  479. package/dist/extensions/ExtensionManager.js +197 -0
  480. package/dist/extensions/ExtensionManager.js.map +1 -0
  481. package/dist/extensions/ExtensionRegistry.d.ts +39 -0
  482. package/dist/extensions/ExtensionRegistry.d.ts.map +1 -0
  483. package/dist/extensions/ExtensionRegistry.js +103 -0
  484. package/dist/extensions/ExtensionRegistry.js.map +1 -0
  485. package/dist/extensions/MultiRegistryLoader.d.ts +61 -0
  486. package/dist/extensions/MultiRegistryLoader.d.ts.map +1 -0
  487. package/dist/extensions/MultiRegistryLoader.js +169 -0
  488. package/dist/extensions/MultiRegistryLoader.js.map +1 -0
  489. package/dist/extensions/RegistryConfig.d.ts +86 -0
  490. package/dist/extensions/RegistryConfig.d.ts.map +1 -0
  491. package/dist/extensions/RegistryConfig.js +99 -0
  492. package/dist/extensions/RegistryConfig.js.map +1 -0
  493. package/dist/extensions/events.d.ts +19 -0
  494. package/dist/extensions/events.d.ts.map +1 -0
  495. package/dist/extensions/events.js +2 -0
  496. package/dist/extensions/events.js.map +1 -0
  497. package/dist/extensions/index.d.ts +9 -0
  498. package/dist/extensions/index.d.ts.map +1 -0
  499. package/dist/extensions/index.js +9 -0
  500. package/dist/extensions/index.js.map +1 -0
  501. package/dist/extensions/manifest.d.ts +52 -0
  502. package/dist/extensions/manifest.d.ts.map +1 -0
  503. package/dist/extensions/manifest.js +2 -0
  504. package/dist/extensions/manifest.js.map +1 -0
  505. package/dist/extensions/types.d.ts +294 -0
  506. package/dist/extensions/types.d.ts.map +1 -0
  507. package/dist/extensions/types.js +12 -0
  508. package/dist/extensions/types.js.map +1 -0
  509. package/dist/index.d.ts +49 -0
  510. package/dist/index.d.ts.map +1 -0
  511. package/dist/index.js +59 -0
  512. package/dist/index.js.map +1 -0
  513. package/dist/logging/ILogger.d.ts +8 -0
  514. package/dist/logging/ILogger.d.ts.map +1 -0
  515. package/dist/logging/ILogger.js +2 -0
  516. package/dist/logging/ILogger.js.map +1 -0
  517. package/dist/logging/PinoLogger.d.ts +12 -0
  518. package/dist/logging/PinoLogger.d.ts.map +1 -0
  519. package/dist/logging/PinoLogger.js +22 -0
  520. package/dist/logging/PinoLogger.js.map +1 -0
  521. package/dist/logging/loggerFactory.d.ts +6 -0
  522. package/dist/logging/loggerFactory.d.ts.map +1 -0
  523. package/dist/logging/loggerFactory.js +14 -0
  524. package/dist/logging/loggerFactory.js.map +1 -0
  525. package/dist/rag/EmbeddingManager.d.ts +81 -0
  526. package/dist/rag/EmbeddingManager.d.ts.map +1 -0
  527. package/dist/rag/EmbeddingManager.js +412 -0
  528. package/dist/rag/EmbeddingManager.js.map +1 -0
  529. package/dist/rag/IEmbeddingManager.d.ts +277 -0
  530. package/dist/rag/IEmbeddingManager.d.ts.map +1 -0
  531. package/dist/rag/IEmbeddingManager.js +19 -0
  532. package/dist/rag/IEmbeddingManager.js.map +1 -0
  533. package/dist/rag/IRetrievalAugmentor.d.ts +208 -0
  534. package/dist/rag/IRetrievalAugmentor.d.ts.map +1 -0
  535. package/dist/rag/IRetrievalAugmentor.js +21 -0
  536. package/dist/rag/IRetrievalAugmentor.js.map +1 -0
  537. package/dist/rag/IVectorStore.d.ts +351 -0
  538. package/dist/rag/IVectorStore.d.ts.map +1 -0
  539. package/dist/rag/IVectorStore.js +15 -0
  540. package/dist/rag/IVectorStore.js.map +1 -0
  541. package/dist/rag/IVectorStoreManager.d.ts +121 -0
  542. package/dist/rag/IVectorStoreManager.d.ts.map +1 -0
  543. package/dist/rag/IVectorStoreManager.js +13 -0
  544. package/dist/rag/IVectorStoreManager.js.map +1 -0
  545. package/dist/rag/RetrievalAugmentor.d.ts +99 -0
  546. package/dist/rag/RetrievalAugmentor.d.ts.map +1 -0
  547. package/dist/rag/RetrievalAugmentor.js +674 -0
  548. package/dist/rag/RetrievalAugmentor.js.map +1 -0
  549. package/dist/rag/VectorStoreManager.d.ts +90 -0
  550. package/dist/rag/VectorStoreManager.d.ts.map +1 -0
  551. package/dist/rag/VectorStoreManager.js +283 -0
  552. package/dist/rag/VectorStoreManager.js.map +1 -0
  553. package/dist/rag/implementations/index.d.ts +9 -0
  554. package/dist/rag/implementations/index.d.ts.map +1 -0
  555. package/dist/rag/implementations/index.js +9 -0
  556. package/dist/rag/implementations/index.js.map +1 -0
  557. package/dist/rag/implementations/vector_stores/InMemoryVectorStore.d.ts +132 -0
  558. package/dist/rag/implementations/vector_stores/InMemoryVectorStore.d.ts.map +1 -0
  559. package/dist/rag/implementations/vector_stores/InMemoryVectorStore.js +539 -0
  560. package/dist/rag/implementations/vector_stores/InMemoryVectorStore.js.map +1 -0
  561. package/dist/rag/implementations/vector_stores/SqlVectorStore.d.ts +265 -0
  562. package/dist/rag/implementations/vector_stores/SqlVectorStore.d.ts.map +1 -0
  563. package/dist/rag/implementations/vector_stores/SqlVectorStore.js +755 -0
  564. package/dist/rag/implementations/vector_stores/SqlVectorStore.js.map +1 -0
  565. package/dist/rag/implementations/vector_stores/index.d.ts +10 -0
  566. package/dist/rag/implementations/vector_stores/index.d.ts.map +1 -0
  567. package/dist/rag/implementations/vector_stores/index.js +12 -0
  568. package/dist/rag/implementations/vector_stores/index.js.map +1 -0
  569. package/dist/rag/index.d.ts +95 -0
  570. package/dist/rag/index.d.ts.map +1 -0
  571. package/dist/rag/index.js +97 -0
  572. package/dist/rag/index.js.map +1 -0
  573. package/dist/services/user_auth/AuthService.d.ts +13 -0
  574. package/dist/services/user_auth/AuthService.d.ts.map +1 -0
  575. package/dist/services/user_auth/AuthService.js +24 -0
  576. package/dist/services/user_auth/AuthService.js.map +1 -0
  577. package/dist/services/user_auth/SubscriptionService.d.ts +14 -0
  578. package/dist/services/user_auth/SubscriptionService.d.ts.map +1 -0
  579. package/dist/services/user_auth/SubscriptionService.js +34 -0
  580. package/dist/services/user_auth/SubscriptionService.js.map +1 -0
  581. package/dist/services/user_auth/types.d.ts +30 -0
  582. package/dist/services/user_auth/types.d.ts.map +1 -0
  583. package/dist/services/user_auth/types.js +2 -0
  584. package/dist/services/user_auth/types.js.map +1 -0
  585. package/dist/stubs/prismaClient.d.ts +35 -0
  586. package/dist/stubs/prismaClient.d.ts.map +1 -0
  587. package/dist/stubs/prismaClient.js +47 -0
  588. package/dist/stubs/prismaClient.js.map +1 -0
  589. package/dist/types/rateLimitTypes.d.ts +70 -0
  590. package/dist/types/rateLimitTypes.d.ts.map +1 -0
  591. package/dist/types/rateLimitTypes.js +55 -0
  592. package/dist/types/rateLimitTypes.js.map +1 -0
  593. package/dist/utils/errors.d.ts +80 -0
  594. package/dist/utils/errors.d.ts.map +1 -0
  595. package/dist/utils/errors.js +201 -0
  596. package/dist/utils/errors.js.map +1 -0
  597. package/dist/utils/uuid.d.ts +11 -0
  598. package/dist/utils/uuid.d.ts.map +1 -0
  599. package/dist/utils/uuid.js +64 -0
  600. package/dist/utils/uuid.js.map +1 -0
  601. 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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"}