@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,450 @@
1
+ // File: backend/agentos/core/conversation/ConversationContext.ts
2
+ /**
3
+ * @fileoverview Manages the state, history, and metadata of a single conversation in AgentOS.
4
+ * It provides robust methods for adding messages, retrieving history with various strategies
5
+ * (including AI-powered summarization if an IUtilityAI service is provided),
6
+ * and managing session-specific metadata. Designed for comprehensive state export and import.
7
+ *
8
+ * @module backend/agentos/core/conversation/ConversationContext
9
+ * @see ./ConversationMessage.ts For ConversationMessage and MessageRole definitions.
10
+ * @see ../ai_utilities/IUtilityAI.ts For IUtilityAI and SummarizationOptions definitions.
11
+ */
12
+ import { MessageRole, createConversationMessage } from './ConversationMessage.js';
13
+ import { uuidv4 } from '../../utils/uuid.js';
14
+ import { GMIError, GMIErrorCode } from '../../utils/errors.js'; // Corrected path
15
+ // Constants for summarization logic
16
+ const DEFAULT_MAX_HISTORY_MESSAGES = 100;
17
+ const DEFAULT_VERBATIM_TAIL_COUNT = 10;
18
+ const DEFAULT_VERBATIM_HEAD_COUNT = 2;
19
+ const DEFAULT_SUMMARIZATION_CHUNK_SIZE = 20; // Messages to group for one summary
20
+ const MIN_MESSAGES_FOR_SUMMARIZATION_ATTEMPT = 5; // Don't try to summarize too few messages
21
+ const DEFAULT_SUMMARIZATION_OPTIONS = { desiredLength: 'medium', method: 'abstractive_llm' };
22
+ /**
23
+ * @class ConversationContext
24
+ * @description Manages the messages, metadata, and operational state for a single conversation.
25
+ * It ensures that conversation history is handled efficiently, including potential summarization
26
+ * to manage context length, and provides a structured way to access and modify conversation-related data.
27
+ */
28
+ export class ConversationContext {
29
+ /**
30
+ * Creates an instance of ConversationContext.
31
+ *
32
+ * @constructor
33
+ * @param {string} [sessionId] - Optional. A specific ID for this conversation session. If not provided, a UUID will be generated.
34
+ * @param {Partial<ConversationContextConfig>} [config={}] - Optional. Configuration overrides for this context. Defaults will be applied.
35
+ * @param {ConversationMessage[]} [initialMessages=[]] - Optional. An array of messages to pre-populate the context.
36
+ * @param {Record<string, any>} [initialMetadata={}] - Optional. Initial key-value metadata for the session.
37
+ */
38
+ constructor(sessionId, config = {}, initialMessages = [], initialMetadata = {}) {
39
+ /**
40
+ * A lock to prevent concurrent summarization operations on the same context.
41
+ * @private
42
+ * @type {boolean}
43
+ */
44
+ this.isSummarizing = false;
45
+ this.sessionId = sessionId || `conv_ctx_${uuidv4()}`;
46
+ this.createdAt = Date.now();
47
+ this.messages = initialMessages.map(m => ({
48
+ ...m,
49
+ id: m.id || `msg_${uuidv4()}`,
50
+ timestamp: m.timestamp || Date.now(),
51
+ }));
52
+ const defaultConfig = {
53
+ maxHistoryLengthMessages: DEFAULT_MAX_HISTORY_MESSAGES,
54
+ enableAutomaticSummarization: false,
55
+ messagesToKeepVerbatimTail: DEFAULT_VERBATIM_TAIL_COUNT,
56
+ messagesToKeepVerbatimHead: DEFAULT_VERBATIM_HEAD_COUNT,
57
+ summarizationChunkSize: DEFAULT_SUMMARIZATION_CHUNK_SIZE,
58
+ summarizationOptions: { ...DEFAULT_SUMMARIZATION_OPTIONS },
59
+ defaultLanguage: 'en-US',
60
+ };
61
+ this.config = {
62
+ ...defaultConfig,
63
+ ...config,
64
+ summarizationOptions: {
65
+ ...defaultConfig.summarizationOptions,
66
+ ...(config.summarizationOptions || {}),
67
+ },
68
+ };
69
+ this.utilityAI = this.config.utilityAI; // Use the one from the fully merged config
70
+ this.sessionMetadata = { ...initialMetadata };
71
+ // Set well-known metadata from config if present
72
+ if (this.config.userId)
73
+ this.sessionMetadata.userId = this.config.userId;
74
+ if (this.config.gmiInstanceId)
75
+ this.sessionMetadata.gmiInstanceId = this.config.gmiInstanceId;
76
+ if (this.config.activePersonaId)
77
+ this.sessionMetadata.activePersonaId = this.config.activePersonaId;
78
+ if (this.config.defaultLanguage && !this.sessionMetadata.currentLanguage) {
79
+ this.sessionMetadata.currentLanguage = this.config.defaultLanguage;
80
+ }
81
+ this.sessionMetadata['_lastAccessed'] = this.createdAt; // Initialize last accessed time
82
+ if (this.config.enableAutomaticSummarization && !this.utilityAI) {
83
+ console.warn(`ConversationContext (ID: ${this.sessionId}): Automatic summarization is enabled, but no IUtilityAI service was provided. Summarization will be disabled for this context.`);
84
+ // Update the effective configuration for this instance
85
+ this.config.enableAutomaticSummarization = false;
86
+ }
87
+ }
88
+ /**
89
+ * Adds a new message to the conversation history.
90
+ * The message is created using `createConversationMessage` to ensure default fields like `id` and `timestamp` are set.
91
+ * After adding, it asynchronously triggers history management (truncation/summarization).
92
+ *
93
+ * @public
94
+ * @param {Omit<ConversationMessage, 'id' | 'timestamp'>} messageData - The data for the new message, excluding `id` and `timestamp` which will be auto-generated.
95
+ * @returns {Readonly<ConversationMessage>} A readonly version of the newly added message.
96
+ */
97
+ addMessage(messageData) {
98
+ const newMessage = createConversationMessage(messageData.role, messageData.content, messageData);
99
+ this.messages.push(newMessage);
100
+ this.sessionMetadata['_lastAccessed'] = Date.now();
101
+ // Asynchronously manage history length to avoid blocking the addMessage call.
102
+ this.manageHistoryLength().catch(error => {
103
+ console.error(`ConversationContext (ID: ${this.sessionId}): Error during background history management after adding message:`, error);
104
+ // Fallback to simple truncation if manageHistoryLength fails critically
105
+ if (this.messages.length > this.config.maxHistoryLengthMessages) {
106
+ this.truncateHistorySimple(this.config.maxHistoryLengthMessages);
107
+ }
108
+ });
109
+ return Object.freeze({ ...newMessage });
110
+ }
111
+ /**
112
+ * Retrieves a portion of the conversation history, optionally limited and filtered.
113
+ * Returns readonly copies of the messages to prevent external modification.
114
+ *
115
+ * @public
116
+ * @param {number} [limit] - Optional. The maximum number of recent messages to return. Defaults to `config.maxHistoryLengthMessages`.
117
+ * @param {MessageRole[]} [excludeRoles] - Optional. An array of message roles to exclude from the returned history.
118
+ * @returns {ReadonlyArray<Readonly<ConversationMessage>>} A readonly array of readonly message objects.
119
+ */
120
+ getHistory(limit, excludeRoles) {
121
+ this.sessionMetadata['_lastAccessed'] = Date.now();
122
+ let effectiveMessages = this.messages;
123
+ if (excludeRoles && excludeRoles.length > 0) {
124
+ const rolesToExclude = new Set(excludeRoles);
125
+ effectiveMessages = effectiveMessages.filter(msg => !rolesToExclude.has(msg.role));
126
+ }
127
+ const actualLimit = limit !== undefined && limit > 0 ? limit : this.config.maxHistoryLengthMessages;
128
+ // Ensure both array and its elements are treated as readonly
129
+ return Object.freeze(effectiveMessages.slice(-actualLimit).map(m => Object.freeze({ ...m })));
130
+ }
131
+ /**
132
+ * Retrieves all messages in the conversation.
133
+ * Returns readonly copies to prevent external modification.
134
+ *
135
+ * @public
136
+ * @returns {ReadonlyArray<Readonly<ConversationMessage>>} A readonly array of all readonly message objects.
137
+ */
138
+ getAllMessages() {
139
+ this.sessionMetadata['_lastAccessed'] = Date.now();
140
+ return Object.freeze(this.messages.map(m => Object.freeze({ ...m })));
141
+ }
142
+ /**
143
+ * Retrieves a specific message by its unique ID.
144
+ *
145
+ * @public
146
+ * @param {string} messageId - The ID of the message to retrieve.
147
+ * @returns {Readonly<ConversationMessage> | undefined} A readonly copy of the message if found, otherwise `undefined`.
148
+ */
149
+ getMessageById(messageId) {
150
+ this.sessionMetadata['_lastAccessed'] = Date.now();
151
+ const message = this.messages.find(m => m.id === messageId);
152
+ return message ? Object.freeze({ ...message }) : undefined;
153
+ }
154
+ /**
155
+ * Retrieves the most recent message in the conversation.
156
+ *
157
+ * @public
158
+ * @returns {Readonly<ConversationMessage> | undefined} A readonly copy of the last message, or `undefined` if the history is empty.
159
+ */
160
+ getLastMessage() {
161
+ this.sessionMetadata['_lastAccessed'] = Date.now();
162
+ return this.messages.length > 0 ? Object.freeze({ ...this.messages[this.messages.length - 1] }) : undefined;
163
+ }
164
+ /**
165
+ * Calculates the current "turn number" based on the count of user messages.
166
+ * This can be a simple proxy for conversation length from the user's perspective.
167
+ *
168
+ * @public
169
+ * @returns {number} The number of messages with `role: MessageRole.USER`.
170
+ */
171
+ getTurnNumber() {
172
+ return this.messages.filter(msg => msg.role === MessageRole.USER).length;
173
+ }
174
+ /**
175
+ * Clears the conversation history, with options to preserve certain messages or metadata.
176
+ *
177
+ * @public
178
+ * @param {object} [options] - Options for clearing the history.
179
+ * @param {boolean} [options.keepMetadata=true] - If true, session metadata is preserved. Otherwise, it's reset to essential defaults.
180
+ * @param {boolean} [options.keepSystemMessages=true] - If true, messages with `role: MessageRole.SYSTEM` are preserved.
181
+ * @param {ConversationMessage[]} [options.messagesToKeep=[]] - An array of specific message objects to preserve.
182
+ * @returns {void}
183
+ */
184
+ clearHistory(options = {}) {
185
+ const { keepMetadata = true, keepSystemMessages = true, messagesToKeep = [] } = options;
186
+ const preservedMessages = [...messagesToKeep];
187
+ if (keepSystemMessages) {
188
+ this.messages.forEach(m => {
189
+ if (m.role === MessageRole.SYSTEM && !preservedMessages.find(pm => pm.id === m.id)) {
190
+ preservedMessages.push(m);
191
+ }
192
+ });
193
+ }
194
+ // Use a Map to ensure uniqueness by ID if messagesToKeep and system messages overlap
195
+ this.messages = [...new Map(preservedMessages.map(item => [item.id, item])).values()];
196
+ this.messages.sort((a, b) => a.timestamp - b.timestamp); // Ensure messages remain sorted
197
+ if (!keepMetadata) {
198
+ const essentialMetadataKeys = ['userId', 'gmiInstanceId', 'activePersonaId', 'currentLanguage', '_lastAccessed'];
199
+ const newMetadata = {};
200
+ for (const key of essentialMetadataKeys) {
201
+ if (this.sessionMetadata[key] !== undefined) {
202
+ newMetadata[key] = this.sessionMetadata[key];
203
+ }
204
+ }
205
+ // Ensure core config-derived metadata is preserved if it was initially set
206
+ if (this.config.userId)
207
+ newMetadata.userId = this.config.userId;
208
+ if (this.config.gmiInstanceId)
209
+ newMetadata.gmiInstanceId = this.config.gmiInstanceId;
210
+ if (this.config.activePersonaId)
211
+ newMetadata.activePersonaId = this.config.activePersonaId;
212
+ if (this.config.defaultLanguage && !newMetadata.currentLanguage)
213
+ newMetadata.currentLanguage = this.config.defaultLanguage;
214
+ this.sessionMetadata = newMetadata;
215
+ }
216
+ this.sessionMetadata['_lastAccessed'] = Date.now();
217
+ console.log(`ConversationContext (ID: ${this.sessionId}): History cleared with options. New message count: ${this.messages.length}. Metadata kept: ${keepMetadata}.`);
218
+ }
219
+ /**
220
+ * Sets a custom metadata key-value pair for the session.
221
+ * If `value` is `undefined`, the key is removed.
222
+ *
223
+ * @public
224
+ * @param {string} key - The metadata key.
225
+ * @param {any} value - The metadata value. Use `undefined` to delete the key.
226
+ * @returns {void}
227
+ */
228
+ setMetadata(key, value) {
229
+ if (value === undefined) {
230
+ delete this.sessionMetadata[key];
231
+ }
232
+ else {
233
+ this.sessionMetadata[key] = value;
234
+ }
235
+ this.sessionMetadata['_lastAccessed'] = Date.now();
236
+ }
237
+ /**
238
+ * Retrieves a metadata value by its key.
239
+ *
240
+ * @public
241
+ * @param {string} key - The metadata key.
242
+ * @returns {any | undefined} The metadata value, or `undefined` if the key does not exist.
243
+ */
244
+ getMetadata(key) {
245
+ return this.sessionMetadata[key];
246
+ }
247
+ /**
248
+ * Retrieves all session metadata as a readonly object.
249
+ *
250
+ * @public
251
+ * @returns {Readonly<Record<string, any>>} A readonly copy of all session metadata.
252
+ */
253
+ getAllMetadata() {
254
+ return Object.freeze({ ...this.sessionMetadata });
255
+ }
256
+ /**
257
+ * Manages the length of the conversation history.
258
+ * If `enableAutomaticSummarization` is true and a `utilityAI` service is available,
259
+ * it attempts to summarize older messages. Otherwise, it falls back to simple truncation.
260
+ * This method is called asynchronously after each new message is added.
261
+ *
262
+ * @private
263
+ * @async
264
+ * @returns {Promise<void>}
265
+ */
266
+ async manageHistoryLength() {
267
+ if (this.isSummarizing || this.messages.length <= this.config.maxHistoryLengthMessages) {
268
+ return; // Already within limits or summarization in progress
269
+ }
270
+ if (this.config.enableAutomaticSummarization && this.utilityAI) {
271
+ this.isSummarizing = true;
272
+ try {
273
+ const headCount = Math.max(0, this.config.messagesToKeepVerbatimHead);
274
+ const tailCount = Math.max(0, this.config.messagesToKeepVerbatimTail);
275
+ // If keeping head/tail already satisfies max length, or not enough messages to summarize meaningfully
276
+ if (headCount + tailCount >= this.config.maxHistoryLengthMessages || this.messages.length < headCount + tailCount + MIN_MESSAGES_FOR_SUMMARIZATION_ATTEMPT) {
277
+ this.truncateHistorySimple(this.config.maxHistoryLengthMessages);
278
+ return; // Exit after simple truncation
279
+ }
280
+ // Ensure there's a middle section to process
281
+ const middleSectionStartIndex = headCount;
282
+ const middleSectionEndIndex = this.messages.length - tailCount;
283
+ if (middleSectionStartIndex >= middleSectionEndIndex) {
284
+ this.truncateHistorySimple(this.config.maxHistoryLengthMessages); // Not enough messages for a middle section
285
+ return;
286
+ }
287
+ const middleSection = this.messages.slice(middleSectionStartIndex, middleSectionEndIndex);
288
+ if (middleSection.length >= this.config.summarizationChunkSize && middleSection.length >= MIN_MESSAGES_FOR_SUMMARIZATION_ATTEMPT) {
289
+ const messagesToSummarize = middleSection.slice(0, this.config.summarizationChunkSize);
290
+ const textToSummarize = messagesToSummarize
291
+ .map(m => `${m.name || m.role}: ${typeof m.content === 'string' ? m.content : (m.tool_calls ? '[Tool Call Invoked]' : '[Structured Content]')}`)
292
+ .join('\n\n');
293
+ const summaryContent = await this.utilityAI.summarize(textToSummarize, this.config.summarizationOptions);
294
+ const summaryMessageOptions = {
295
+ // timestamp is removed from options, createConversationMessage will set it.
296
+ originalMessagesSummarizedCount: messagesToSummarize.length,
297
+ metadata: {
298
+ source: 'automatic_history_summary',
299
+ modificationInfo: {
300
+ strategy: 'summarized',
301
+ originalMessageCount: messagesToSummarize.length,
302
+ },
303
+ summarizedMessageIds: messagesToSummarize.map(m => m.id),
304
+ }, // Cast to MessageMetadata
305
+ };
306
+ const summaryMessage = createConversationMessage(MessageRole.SUMMARY, summaryContent, summaryMessageOptions);
307
+ const headMessages = this.messages.slice(0, headCount);
308
+ const tailMessages = this.messages.slice(this.messages.length - tailCount);
309
+ const remainingMiddleAfterSummarizedChunk = middleSection.slice(this.config.summarizationChunkSize);
310
+ this.messages = [...headMessages, summaryMessage, ...remainingMiddleAfterSummarizedChunk, ...tailMessages];
311
+ console.log(`ConversationContext (ID: ${this.sessionId}): History summarized. New length: ${this.messages.length}.`);
312
+ if (this.messages.length > this.config.maxHistoryLengthMessages) {
313
+ // If still too long, recursively call or truncate if no more summarization is effective
314
+ if (remainingMiddleAfterSummarizedChunk.length >= MIN_MESSAGES_FOR_SUMMARIZATION_ATTEMPT && remainingMiddleAfterSummarizedChunk.length >= this.config.summarizationChunkSize) {
315
+ await this.manageHistoryLength(); // Recursive call with safeguard
316
+ }
317
+ else {
318
+ this.truncateHistorySimple(this.config.maxHistoryLengthMessages);
319
+ }
320
+ }
321
+ }
322
+ else {
323
+ this.truncateHistorySimple(this.config.maxHistoryLengthMessages);
324
+ }
325
+ }
326
+ catch (error) {
327
+ console.error(`ConversationContext (ID: ${this.sessionId}): Summarization failed: ${error.message}. Falling back to simple truncation.`, error);
328
+ this.truncateHistorySimple(this.config.maxHistoryLengthMessages);
329
+ }
330
+ finally {
331
+ this.isSummarizing = false;
332
+ }
333
+ }
334
+ else {
335
+ this.truncateHistorySimple(this.config.maxHistoryLengthMessages);
336
+ }
337
+ }
338
+ /**
339
+ * Performs simple truncation of message history, primarily from the middle,
340
+ * preserving a configured number of head and tail messages.
341
+ *
342
+ * @private
343
+ * @param {number} targetMessageCount - The desired maximum number of messages after truncation.
344
+ */
345
+ truncateHistorySimple(targetMessageCount) {
346
+ if (this.messages.length <= targetMessageCount) {
347
+ return;
348
+ }
349
+ const headCount = Math.max(0, Math.min(this.config.messagesToKeepVerbatimHead, targetMessageCount));
350
+ // Calculate how many tail messages can be kept to reach the targetMessageCount
351
+ const tailMessagesToKeepCount = Math.max(0, targetMessageCount - headCount);
352
+ if (this.messages.length > headCount + tailMessagesToKeepCount) { // Check if truncation is actually needed
353
+ const headMessages = this.messages.slice(0, headCount);
354
+ const tailMessages = tailMessagesToKeepCount > 0 ? this.messages.slice(-tailMessagesToKeepCount) : [];
355
+ this.messages = [...headMessages, ...tailMessages];
356
+ }
357
+ // If targetMessageCount is very small, this might result in fewer messages than targetMessageCount if headCount itself exceeds it.
358
+ // Or if headCount + tailMessagesToKeepCount > this.messages.length (shouldn't happen if initial check passes).
359
+ // The logic prioritizes keeping head messages if targetCount is less than headCount.
360
+ if (this.messages.length > targetMessageCount) { // Final trim if somehow still over
361
+ this.messages.splice(targetMessageCount);
362
+ }
363
+ console.log(`ConversationContext (ID: ${this.sessionId}): History truncated simply. New length: ${this.messages.length}. Target: ${targetMessageCount}.`);
364
+ }
365
+ /**
366
+ * Serializes the ConversationContext instance to a JSON-compatible object.
367
+ * The `utilityAI` instance itself is not serialized; its ID might be stored if needed for rehydration.
368
+ *
369
+ * @public
370
+ * @returns {object} A plain JavaScript object representing the conversation context.
371
+ */
372
+ toJSON() {
373
+ // Create a copy of config for serialization, excluding the utilityAI instance
374
+ const serializableConfig = { ...this.config };
375
+ delete serializableConfig.utilityAI; // Remove instance before stringification
376
+ if (this.utilityAI?.utilityId) {
377
+ serializableConfig.utilityAIServiceId = this.utilityAI.utilityId;
378
+ }
379
+ return {
380
+ sessionId: this.sessionId,
381
+ createdAt: this.createdAt,
382
+ messages: this.messages, // Messages are already plain objects
383
+ config: serializableConfig,
384
+ sessionMetadata: this.sessionMetadata,
385
+ };
386
+ }
387
+ /**
388
+ * Deserializes a JSON object (typically from `toJSON()`) back into a `ConversationContext` instance.
389
+ *
390
+ * @public
391
+ * @static
392
+ * @param {any} jsonData - The plain JavaScript object to deserialize.
393
+ * @param {(serviceId?: string) => IUtilityAI | undefined} [utilityAIProvider] - Optional. A function that can provide
394
+ * an `IUtilityAI` instance based on a stored `utilityAIServiceId`. This allows for re-injecting dependencies.
395
+ * @returns {ConversationContext} A new instance of `ConversationContext`.
396
+ * @throws {GMIError} If `jsonData` is invalid or missing essential fields.
397
+ */
398
+ static fromJSON(jsonData, utilityAIProvider) {
399
+ if (!jsonData || typeof jsonData.sessionId !== 'string' || !Array.isArray(jsonData.messages) || typeof jsonData.config !== 'object' || jsonData.config === null) {
400
+ throw new GMIError("Invalid JSON data: Missing essential fields (sessionId, messages, config) for ConversationContext deserialization.", GMIErrorCode.VALIDATION_ERROR, { providedKeys: Object.keys(jsonData || {}).join(', ') });
401
+ }
402
+ let utilityAIInstance = undefined;
403
+ if (utilityAIProvider && jsonData.config.utilityAIServiceId) {
404
+ utilityAIInstance = utilityAIProvider(jsonData.config.utilityAIServiceId);
405
+ }
406
+ else if (jsonData.config.utilityAIServiceId && !utilityAIProvider) {
407
+ console.warn(`ConversationContext.fromJSON (ID: ${jsonData.sessionId}): Config contained utilityAIServiceId '${jsonData.config.utilityAIServiceId}', but no utilityAIProvider function was given to resolve the instance. Summarization may be unavailable.`);
408
+ }
409
+ const configForNewInstance = {
410
+ ...jsonData.config, // Cast to allow utilityAIServiceId property
411
+ utilityAI: utilityAIInstance,
412
+ };
413
+ // Remove utilityAIServiceId from config object as it's not part of ConversationContextConfig directly
414
+ delete configForNewInstance.utilityAIServiceId;
415
+ const context = new ConversationContext(jsonData.sessionId, configForNewInstance, jsonData.messages, // Assume messages are correctly structured
416
+ jsonData.sessionMetadata || {});
417
+ // Restore read-only properties if they were part of the JSON
418
+ if (typeof jsonData.createdAt === 'number') {
419
+ // This is a bit of a hack to set a readonly property post-construction.
420
+ // It's generally better if all state is reconstructable via constructor or public methods.
421
+ context.createdAt = jsonData.createdAt;
422
+ }
423
+ return context;
424
+ }
425
+ /**
426
+ * Gets the User ID associated with this conversation context.
427
+ * @public
428
+ * @type {string | undefined}
429
+ */
430
+ get userId() { return this.sessionMetadata.userId || this.config.userId; }
431
+ /**
432
+ * Gets the GMI Instance ID associated with this conversation context.
433
+ * @public
434
+ * @type {string | undefined}
435
+ */
436
+ get gmiInstanceId() { return this.sessionMetadata.gmiInstanceId || this.config.gmiInstanceId; }
437
+ /**
438
+ * Gets the Active Persona ID associated with this conversation context.
439
+ * @public
440
+ * @type {string | undefined}
441
+ */
442
+ get activePersonaId() { return this.sessionMetadata.activePersonaId || this.config.activePersonaId; }
443
+ /**
444
+ * Gets the current primary language for the conversation.
445
+ * @public
446
+ * @type {string}
447
+ */
448
+ get currentLanguage() { return this.sessionMetadata.currentLanguage || this.config.defaultLanguage; }
449
+ }
450
+ //# sourceMappingURL=ConversationContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConversationContext.js","sourceRoot":"","sources":["../../../src/core/conversation/ConversationContext.ts"],"names":[],"mappings":"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"}