@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,674 @@
1
+ /**
2
+ * @fileoverview Implements the RetrievalAugmentor, the core orchestrator for the
3
+ * AgentOS Retrieval Augmented Generation (RAG) system. It adheres to the
4
+ * `IRetrievalAugmentor` interface.
5
+ *
6
+ * This class is responsible for:
7
+ * - Ingesting documents: Involves chunking, embedding generation via `IEmbeddingManager`,
8
+ * and storage into vector databases via `IVectorStoreManager`.
9
+ * - Retrieving context: Embeds queries, searches relevant vector stores for similar
10
+ * chunks, optionally re-ranks, and formats the results into a context string suitable
11
+ * for augmenting LLM prompts.
12
+ * - Managing document lifecycle (delete, update).
13
+ * - Providing health checks and graceful shutdown.
14
+ *
15
+ * @module backend/agentos/rag/RetrievalAugmentor
16
+ * @see ./IRetrievalAugmentor.ts for the interface definition.
17
+ * @see ../config/RetrievalAugmentorConfiguration.ts for `RetrievalAugmentorServiceConfig`.
18
+ * @see ./IEmbeddingManager.ts
19
+ * @see ./IVectorStoreManager.ts
20
+ */
21
+ import { uuidv4 } from '../utils/uuid.js';
22
+ import { GMIError, GMIErrorCode } from '../utils/errors.js';
23
+ const DEFAULT_CONTEXT_JOIN_SEPARATOR = "\n\n---\n\n";
24
+ const DEFAULT_MAX_CHARS_FOR_AUGMENTED_PROMPT = 4000;
25
+ const DEFAULT_CHUNK_SIZE = 512; // Default characters for basic chunking
26
+ const DEFAULT_CHUNK_OVERLAP = 64; // Default character overlap for basic chunking
27
+ const DEFAULT_TOP_K = 5;
28
+ /**
29
+ * @class RetrievalAugmentor
30
+ * @implements {IRetrievalAugmentor}
31
+ * Orchestrates the RAG pipeline including ingestion, retrieval, and document management.
32
+ */
33
+ export class RetrievalAugmentor {
34
+ /**
35
+ * Constructs a RetrievalAugmentor instance.
36
+ * It is not operational until `initialize` is successfully called.
37
+ */
38
+ constructor() {
39
+ this.isInitialized = false;
40
+ this.augmenterId = `rag-augmentor-${uuidv4()}`;
41
+ }
42
+ /**
43
+ * @inheritdoc
44
+ */
45
+ async initialize(config, embeddingManager, vectorStoreManager) {
46
+ if (this.isInitialized) {
47
+ console.warn(`RetrievalAugmentor (ID: ${this.augmenterId}) already initialized. Re-initializing.`);
48
+ // Consider if dependencies need to be reset or if this is an error.
49
+ }
50
+ if (!config) {
51
+ throw new GMIError('RetrievalAugmentorServiceConfig cannot be null or undefined.', GMIErrorCode.CONFIG_ERROR, { augmenterId: this.augmenterId });
52
+ }
53
+ if (!embeddingManager) {
54
+ throw new GMIError('IEmbeddingManager dependency cannot be null or undefined.', GMIErrorCode.DEPENDENCY_ERROR, { augmenterId: this.augmenterId, dependency: 'IEmbeddingManager' });
55
+ }
56
+ if (!vectorStoreManager) {
57
+ throw new GMIError('IVectorStoreManager dependency cannot be null or undefined.', GMIErrorCode.DEPENDENCY_ERROR, { augmenterId: this.augmenterId, dependency: 'IVectorStoreManager' });
58
+ }
59
+ this.config = config;
60
+ this.embeddingManager = embeddingManager;
61
+ this.vectorStoreManager = vectorStoreManager;
62
+ // Validate category behaviors - ensure targetDataSourceIds exist if specified in mapping
63
+ for (const behavior of this.config.categoryBehaviors) {
64
+ for (const dsId of behavior.targetDataSourceIds) {
65
+ try {
66
+ // This is a conceptual check; actual store existence is up to VSM init.
67
+ // Here, we just check if VSM knows about this dataSourceId mapping.
68
+ if (!this.vectorStoreManager.listDataSourceIds().includes(dsId)) {
69
+ console.warn(`RetrievalAugmentor (ID: ${this.augmenterId}): Category behavior for '${behavior.category}' references dataSourceId '${dsId}' which is not declared in VectorStoreManager's dataSourceConfigs. Retrieval for this category might fail for this source.`);
70
+ }
71
+ }
72
+ catch (e) {
73
+ // If listDataSourceIds itself fails, VSM might not be initialized.
74
+ // This assumes VSM is initialized before or alongside RA.
75
+ console.error(`RetrievalAugmentor (ID: ${this.augmenterId}): Error while validating dataSourceId '${dsId}' for category '${behavior.category}'. VectorStoreManager might not be ready.`, e);
76
+ }
77
+ }
78
+ }
79
+ this.isInitialized = true;
80
+ console.log(`RetrievalAugmentor (ID: ${this.augmenterId}) initialized successfully.`);
81
+ }
82
+ /**
83
+ * Ensures that the augmenter has been initialized.
84
+ * @private
85
+ * @throws {GMIError} If not initialized.
86
+ */
87
+ ensureInitialized() {
88
+ if (!this.isInitialized) {
89
+ throw new GMIError(`RetrievalAugmentor (ID: ${this.augmenterId}) is not initialized. Call initialize() first.`, GMIErrorCode.NOT_INITIALIZED);
90
+ }
91
+ }
92
+ /**
93
+ * @inheritdoc
94
+ */
95
+ async ingestDocuments(documents, options) {
96
+ this.ensureInitialized();
97
+ const docsArray = Array.isArray(documents) ? documents : [documents];
98
+ if (docsArray.length === 0) {
99
+ return { processedCount: 0, failedCount: 0, ingestedIds: [], errors: [] };
100
+ }
101
+ // For now, synchronous processing. Async requires a job queue.
102
+ if (options?.processAsync) {
103
+ console.warn(`RetrievalAugmentor (ID: ${this.augmenterId}): Asynchronous processing requested but not yet fully implemented. Processing synchronously.`);
104
+ }
105
+ const ingestedDocIds = new Set();
106
+ const effectiveDataSourceIds = new Set();
107
+ const results = {
108
+ processedCount: docsArray.length,
109
+ failedCount: 0,
110
+ ingestedIds: [],
111
+ errors: [],
112
+ };
113
+ const batchSize = options?.batchSize || 32; // Define a reasonable default
114
+ for (let i = 0; i < docsArray.length; i += batchSize) {
115
+ const docBatch = docsArray.slice(i, i + batchSize);
116
+ try {
117
+ await this.processDocumentBatch(docBatch, options, results, ingestedDocIds, effectiveDataSourceIds);
118
+ }
119
+ catch (batchError) {
120
+ console.error(`RetrievalAugmentor (ID: ${this.augmenterId}): Critical error processing document batch starting at index ${i}. Batch skipped. Error: ${batchError.message}`, batchError);
121
+ docBatch.forEach(doc => {
122
+ results.errors?.push({
123
+ documentId: doc.id,
124
+ message: `Batch processing failed: ${batchError.message}`,
125
+ details: batchError instanceof GMIError ? batchError.details : batchError.toString(),
126
+ });
127
+ results.failedCount++;
128
+ });
129
+ }
130
+ }
131
+ results.ingestedIds = Array.from(ingestedDocIds);
132
+ results.effectiveDataSourceIds = Array.from(effectiveDataSourceIds);
133
+ return results;
134
+ }
135
+ /**
136
+ * Processes a batch of documents for ingestion.
137
+ * @private
138
+ */
139
+ async processDocumentBatch(docBatch, options, overallResults, ingestedDocIds, effectiveDataSourceIds) {
140
+ const vectorDocumentsToUpsert = [];
141
+ const docIdToChunkCount = {};
142
+ for (const doc of docBatch) {
143
+ docIdToChunkCount[doc.id] = 0;
144
+ try {
145
+ const targetDataSourceId = options?.targetDataSourceId || doc.dataSourceId || this.config.defaultDataSourceId;
146
+ if (!targetDataSourceId) {
147
+ throw new GMIError(`No targetDataSourceId specified for document '${doc.id}' and no default configured.`, GMIErrorCode.VALIDATION_ERROR, { documentId: doc.id });
148
+ }
149
+ effectiveDataSourceIds.add(targetDataSourceId);
150
+ const chunks = this.chunkDocument(doc, options);
151
+ docIdToChunkCount[doc.id] = chunks.length;
152
+ const chunkContents = chunks.map(c => c.content);
153
+ let embeddings = [];
154
+ if (chunks.length > 0 && doc.embedding && doc.embeddingModelId && chunks.length === 1 && chunks[0].content === doc.content) {
155
+ // Use pre-computed embedding if document is not chunked (or effectively one chunk)
156
+ embeddings = [doc.embedding];
157
+ // Basic validation
158
+ const modelDim = await this.embeddingManager.getEmbeddingDimension(doc.embeddingModelId);
159
+ if (doc.embedding.length !== modelDim) {
160
+ throw new GMIError(`Pre-computed embedding for doc '${doc.id}' has dimension ${doc.embedding.length}, but model '${doc.embeddingModelId}' expects ${modelDim}.`, GMIErrorCode.VALIDATION_ERROR);
161
+ }
162
+ }
163
+ else if (chunkContents.length > 0) {
164
+ const embeddingModelId = options?.embeddingModelId ||
165
+ this.config.defaultEmbeddingModelId ||
166
+ this.config.defaultQueryEmbeddingModelId;
167
+ if (!embeddingModelId) {
168
+ throw new GMIError(`No embeddingModelId specified for document '${doc.id}' and no default configured for ingestion.`, GMIErrorCode.CONFIG_ERROR, { documentId: doc.id });
169
+ }
170
+ const embeddingResponse = await this.embeddingManager.generateEmbeddings({
171
+ texts: chunkContents,
172
+ modelId: embeddingModelId, // Could be further refined by category behavior later
173
+ userId: options?.userId,
174
+ });
175
+ // Handle partial failures from embedding manager
176
+ if (embeddingResponse.errors && embeddingResponse.errors.length > 0) {
177
+ embeddingResponse.errors.forEach(err => {
178
+ const failedChunkOriginalDocId = chunks[err.textIndex].originalDocumentId;
179
+ overallResults.errors?.push({
180
+ documentId: failedChunkOriginalDocId,
181
+ chunkId: chunks[err.textIndex].id,
182
+ message: `Embedding generation failed: ${err.message}`,
183
+ details: err.details,
184
+ });
185
+ });
186
+ }
187
+ embeddings = embeddingResponse.embeddings; // This array corresponds to chunkContents
188
+ }
189
+ for (let j = 0; j < chunks.length; j++) {
190
+ const chunk = chunks[j];
191
+ const chunkEmbedding = embeddings[j];
192
+ if (!chunkEmbedding || chunkEmbedding.length === 0) {
193
+ // Error for this chunk was already added by embeddingResponse error handling, or if pre-computed was invalid.
194
+ // Ensure this chunk isn't added to vectorDocumentsToUpsert.
195
+ console.warn(`Skipping chunk '${chunk.id}' due to missing or invalid embedding.`);
196
+ continue;
197
+ }
198
+ const chunkMetadata = {
199
+ ...(doc.metadata ?? {}),
200
+ originalDocumentId: doc.id,
201
+ chunkSequence: j,
202
+ };
203
+ if (doc.source) {
204
+ chunkMetadata.source = doc.source;
205
+ }
206
+ if (doc.language) {
207
+ chunkMetadata.language = doc.language;
208
+ }
209
+ vectorDocumentsToUpsert.push({
210
+ id: chunk.id, // Chunk ID
211
+ embedding: chunkEmbedding,
212
+ metadata: chunkMetadata,
213
+ textContent: chunk.content, // Store chunk content
214
+ });
215
+ }
216
+ }
217
+ catch (error) {
218
+ console.error(`RetrievalAugmentor (ID: ${this.augmenterId}): Failed to process document '${doc.id}' for ingestion. Error: ${error.message}`, error);
219
+ overallResults.errors?.push({
220
+ documentId: doc.id,
221
+ message: `Document processing failed: ${error.message}`,
222
+ details: error instanceof GMIError ? error.details : error.toString(),
223
+ });
224
+ overallResults.failedCount++;
225
+ }
226
+ } // End loop over docBatch
227
+ if (vectorDocumentsToUpsert.length > 0) {
228
+ // Determine the target data source for this batch (assuming batch goes to one source for simplicity here)
229
+ // A more complex scenario might group by targetDataSourceId if docs in batch can vary.
230
+ const firstDocTargetDataSourceId = options?.targetDataSourceId || docBatch[0]?.dataSourceId || this.config.defaultDataSourceId;
231
+ if (!firstDocTargetDataSourceId) {
232
+ console.error(`RetrievalAugmentor (ID: ${this.augmenterId}): No targetDataSourceId for upserting processed chunks. Batch skipped.`);
233
+ docBatch.forEach(doc => {
234
+ if (!overallResults.errors?.find(e => e.documentId === doc.id)) {
235
+ overallResults.errors?.push({ documentId: doc.id, message: "Target data source ID could not be determined for upsert." });
236
+ overallResults.failedCount++;
237
+ }
238
+ });
239
+ return;
240
+ }
241
+ try {
242
+ const { store, collectionName } = await this.vectorStoreManager.getStoreForDataSource(firstDocTargetDataSourceId);
243
+ const upsertResult = await store.upsert(collectionName, vectorDocumentsToUpsert, {
244
+ overwrite: options?.duplicateHandling !== 'skip' && options?.duplicateHandling !== 'error', // Approx
245
+ });
246
+ upsertResult.upsertedIds?.forEach(upsertedChunkId => {
247
+ const originalDocId = vectorDocumentsToUpsert.find(vd => vd.id === upsertedChunkId)?.metadata?.originalDocumentId;
248
+ if (originalDocId) {
249
+ ingestedDocIds.add(originalDocId);
250
+ }
251
+ });
252
+ // This count is tricky. If a doc is chunked into 5, and all 5 upsert, is that 1 or 5?
253
+ // Let's count original documents whose chunks were attempted for upsert and had no prior critical error.
254
+ // A doc is "successfully ingested" if all its generated chunks were upserted without error.
255
+ const successfullyProcessedDocIdsInBatch = new Set();
256
+ vectorDocumentsToUpsert.forEach(vd => {
257
+ if (upsertResult.upsertedIds?.includes(vd.id) && vd.metadata?.originalDocumentId) {
258
+ successfullyProcessedDocIdsInBatch.add(vd.metadata.originalDocumentId);
259
+ }
260
+ });
261
+ // Refined success/failure count based on document-level success
262
+ docBatch.forEach(doc => {
263
+ const numChunks = docIdToChunkCount[doc.id] || 0;
264
+ if (numChunks === 0 && !overallResults.errors?.find(e => e.documentId === doc.id)) {
265
+ // Document produced no chunks (e.g. empty content), or failed before chunking.
266
+ // If no specific error recorded yet, mark as failed.
267
+ // This depends on if empty content doc is an error or just 0 chunks. Assume error if not processed.
268
+ // overallResults.failedCount++; Let prior errors handle this.
269
+ return;
270
+ }
271
+ let docChunksAllUpserted = true;
272
+ if (numChunks > 0) {
273
+ for (let k = 0; k < numChunks; ++k) {
274
+ const chunkId = `${doc.id}_chunk_${k}`; // Assuming this naming convention from chunkDocument
275
+ const chunkInBatchAttempt = vectorDocumentsToUpsert.find(vd => vd.id === chunkId);
276
+ if (chunkInBatchAttempt) { // Was this chunk part of the upsert attempt?
277
+ if (!upsertResult.upsertedIds?.includes(chunkId)) {
278
+ docChunksAllUpserted = false;
279
+ // Find or add error for this specific chunk if not already present from embedding.
280
+ if (!overallResults.errors?.find(e => e.chunkId === chunkId)) {
281
+ const storeError = upsertResult.errors?.find(e => e.id === chunkId);
282
+ overallResults.errors?.push({
283
+ documentId: doc.id,
284
+ chunkId: chunkId,
285
+ message: storeError?.message || "Chunk failed to upsert into vector store.",
286
+ details: storeError?.details,
287
+ });
288
+ }
289
+ }
290
+ }
291
+ else {
292
+ // Chunk was filtered out before upsert (e.g. embedding failed)
293
+ docChunksAllUpserted = false;
294
+ }
295
+ }
296
+ }
297
+ else if (!successfullyProcessedDocIdsInBatch.has(doc.id) && !overallResults.errors?.find((e) => e.documentId === doc.id)) {
298
+ // No chunks, wasn't marked successful, no prior error: means it failed pre-chunking or was empty.
299
+ docChunksAllUpserted = false;
300
+ overallResults.errors?.push({ documentId: doc.id, message: "Document yielded no processable chunks or failed prior to chunking." });
301
+ }
302
+ if (docChunksAllUpserted && numChunks > 0) {
303
+ ingestedDocIds.add(doc.id);
304
+ }
305
+ else {
306
+ // If not already counted as failed due to pre-chunking error
307
+ const alreadyFailed = overallResults.errors?.some((e) => e.documentId === doc.id && e.chunkId === undefined);
308
+ if (!alreadyFailed) {
309
+ overallResults.failedCount++;
310
+ }
311
+ }
312
+ });
313
+ if (upsertResult.errors && upsertResult.errors.length > 0) {
314
+ // These are errors from the vector store for specific chunk IDs
315
+ upsertResult.errors.forEach((storeErr) => {
316
+ const originalDocId = vectorDocumentsToUpsert.find(vd => vd.id === storeErr.id)?.metadata?.originalDocumentId;
317
+ if (!overallResults.errors?.find((e) => e.chunkId === storeErr.id)) { // Avoid duplicate error messages
318
+ overallResults.errors?.push({
319
+ documentId: originalDocId || 'Unknown Original Document',
320
+ chunkId: storeErr.id,
321
+ message: `Vector store upsert failed: ${storeErr.message}`,
322
+ details: storeErr.details,
323
+ });
324
+ }
325
+ });
326
+ }
327
+ }
328
+ catch (storeError) {
329
+ console.error(`RetrievalAugmentor (ID: ${this.augmenterId}): Failed to upsert batch to data source '${firstDocTargetDataSourceId}'. Error: ${storeError.message}`, storeError);
330
+ // All docs in this sub-batch for this store are considered failed at this point
331
+ docBatch.forEach(doc => {
332
+ const alreadyFailed = overallResults.errors?.some((e) => e.documentId === doc.id && e.chunkId === undefined);
333
+ if (!alreadyFailed) {
334
+ overallResults.failedCount++;
335
+ }
336
+ overallResults.errors?.push({
337
+ documentId: doc.id,
338
+ message: `Failed to upsert to store: ${storeError.message}`,
339
+ details: storeError instanceof GMIError ? storeError.details : storeError.toString(),
340
+ });
341
+ });
342
+ }
343
+ }
344
+ }
345
+ /**
346
+ * Chunks a single document based on the provided or default strategy.
347
+ * @private
348
+ */
349
+ chunkDocument(doc, options) {
350
+ const strategy = options?.chunkingStrategy || this.config.defaultChunkingStrategy || { type: 'none' };
351
+ if (strategy.type === 'none') {
352
+ return [{ id: `${doc.id}_chunk_0`, content: doc.content, originalDocumentId: doc.id, sequence: 0 }];
353
+ }
354
+ if (strategy.type === 'recursive_character' || strategy.type === 'fixed_size') {
355
+ // Basic character-based fixed size splitter
356
+ const chunkSize = strategy.chunkSize || DEFAULT_CHUNK_SIZE;
357
+ const chunkOverlap = strategy.chunkOverlap || DEFAULT_CHUNK_OVERLAP;
358
+ const chunks = [];
359
+ let i = 0;
360
+ let sequence = 0;
361
+ while (i < doc.content.length) {
362
+ const end = Math.min(i + chunkSize, doc.content.length);
363
+ chunks.push({
364
+ id: `${doc.id}_chunk_${sequence}`,
365
+ content: doc.content.substring(i, end),
366
+ originalDocumentId: doc.id,
367
+ sequence: sequence,
368
+ });
369
+ sequence++;
370
+ if (end === doc.content.length)
371
+ break;
372
+ i += (chunkSize - chunkOverlap);
373
+ if (i >= doc.content.length)
374
+ break; // Avoid creating empty chunk if overlap is large
375
+ }
376
+ return chunks.length > 0 ? chunks : [{ id: `${doc.id}_chunk_0`, content: doc.content, originalDocumentId: doc.id, sequence: 0 }]; // Ensure at least one chunk if content exists
377
+ }
378
+ if (strategy.type === 'semantic') {
379
+ console.warn(`RetrievalAugmentor (ID: ${this.augmenterId}): Semantic chunking for doc '${doc.id}' requested but not yet implemented. Falling back to 'none'.`);
380
+ return [{ id: `${doc.id}_chunk_0`, content: doc.content, originalDocumentId: doc.id, sequence: 0 }];
381
+ }
382
+ console.warn(`RetrievalAugmentor (ID: ${this.augmenterId}): Unknown chunking strategy '${strategy.type}' for doc '${doc.id}'. Using 'none'.`);
383
+ return [{ id: `${doc.id}_chunk_0`, content: doc.content, originalDocumentId: doc.id, sequence: 0 }];
384
+ }
385
+ /**
386
+ * @inheritdoc
387
+ */
388
+ async retrieveContext(queryText, options) {
389
+ this.ensureInitialized();
390
+ const diagnostics = { messages: [] };
391
+ const startTime = Date.now();
392
+ // 1. Determine Embedding Model
393
+ const embeddingInfo = await this.embeddingManager.getEmbeddingModelInfo();
394
+ const queryEmbeddingModelId = options?.queryEmbeddingModelId ||
395
+ this.config.defaultQueryEmbeddingModelId ||
396
+ embeddingInfo?.modelId;
397
+ if (!queryEmbeddingModelId) {
398
+ throw new GMIError("Could not determine query embedding model ID.", GMIErrorCode.CONFIG_ERROR, { augmenterId: this.augmenterId });
399
+ }
400
+ // 2. Embed Query
401
+ const embeddingStartTime = Date.now();
402
+ const queryEmbeddingResponse = await this.embeddingManager.generateEmbeddings({
403
+ texts: queryText,
404
+ modelId: queryEmbeddingModelId,
405
+ userId: options?.userId,
406
+ });
407
+ diagnostics.embeddingTimeMs = Date.now() - embeddingStartTime;
408
+ if (!queryEmbeddingResponse.embeddings || queryEmbeddingResponse.embeddings.length === 0 || !queryEmbeddingResponse.embeddings[0] || queryEmbeddingResponse.embeddings[0].length === 0) {
409
+ diagnostics.messages?.push("Failed to generate query embedding or embedding was empty.");
410
+ return {
411
+ queryText,
412
+ retrievedChunks: [],
413
+ augmentedContext: "",
414
+ diagnostics,
415
+ };
416
+ }
417
+ const queryEmbedding = queryEmbeddingResponse.embeddings[0];
418
+ // 3. Determine Target Data Sources
419
+ const effectiveDataSourceIds = new Set();
420
+ if (options?.targetDataSourceIds && options.targetDataSourceIds.length > 0) {
421
+ options.targetDataSourceIds.forEach((id) => effectiveDataSourceIds.add(id));
422
+ }
423
+ if (options?.targetMemoryCategories && options.targetMemoryCategories.length > 0) {
424
+ options.targetMemoryCategories.forEach((category) => {
425
+ const behavior = this.config.categoryBehaviors.find((b) => b.category === category);
426
+ behavior?.targetDataSourceIds.forEach((id) => effectiveDataSourceIds.add(id));
427
+ });
428
+ }
429
+ if (effectiveDataSourceIds.size === 0) {
430
+ // Fallback to default data source if specified in general config, or all if none
431
+ if (this.config.defaultDataSourceId) {
432
+ effectiveDataSourceIds.add(this.config.defaultDataSourceId);
433
+ }
434
+ else {
435
+ // Or query all known data sources if no targets and no default
436
+ this.vectorStoreManager.listDataSourceIds().forEach((id) => effectiveDataSourceIds.add(id));
437
+ if (effectiveDataSourceIds.size > 0) {
438
+ diagnostics.messages?.push("No specific data sources or categories targeted; querying all available sources.");
439
+ }
440
+ }
441
+ }
442
+ if (effectiveDataSourceIds.size === 0) {
443
+ diagnostics.messages?.push("No target data sources could be determined for the query.");
444
+ return { queryText, retrievedChunks: [], augmentedContext: "", queryEmbedding, diagnostics };
445
+ }
446
+ diagnostics.effectiveDataSourceIds = Array.from(effectiveDataSourceIds);
447
+ // 4. Query Vector Stores
448
+ diagnostics.retrievalTimeMs = 0; // Sum up individual query times
449
+ const allRetrievedChunks = [];
450
+ diagnostics.dataSourceHits = {};
451
+ for (const dsId of effectiveDataSourceIds) {
452
+ try {
453
+ const { store, collectionName, dimension } = await this.vectorStoreManager.getStoreForDataSource(dsId);
454
+ if (dimension && queryEmbedding.length !== dimension) {
455
+ diagnostics.messages?.push(`Query embedding dimension (${queryEmbedding.length}) mismatches data source '${dsId}' dimension (${dimension}). Skipping this source.`);
456
+ console.warn(`RetrievalAugmentor (ID: ${this.augmenterId}): Query embedding dim ${queryEmbedding.length} vs data source '${dsId}' dim ${dimension}.`);
457
+ continue;
458
+ }
459
+ const categoryBehavior = this.config.categoryBehaviors.find((b) => b.targetDataSourceIds.includes(dsId));
460
+ const retrievalOptsFromCat = categoryBehavior?.defaultRetrievalOptions || {};
461
+ const globalRetrievalOpts = this.config.globalDefaultRetrievalOptions || {};
462
+ const finalQueryOptions = {
463
+ topK: options?.topK ?? retrievalOptsFromCat.topK ?? globalRetrievalOpts.topK ?? DEFAULT_TOP_K,
464
+ filter: options?.metadataFilter ?? retrievalOptsFromCat.metadataFilter ?? globalRetrievalOpts.metadataFilter,
465
+ includeEmbedding: options?.includeEmbeddings ?? retrievalOptsFromCat.includeEmbeddings ?? globalRetrievalOpts.includeEmbeddings,
466
+ includeMetadata: true, // Usually needed
467
+ includeTextContent: true, // Usually needed for context
468
+ minSimilarityScore: options?.strategyParams?.custom?.minSimilarityScore, // Example, specific to options
469
+ // Map other options as needed
470
+ };
471
+ const dsQueryStartTime = Date.now();
472
+ const queryResult = await store.query(collectionName, queryEmbedding, finalQueryOptions);
473
+ diagnostics.retrievalTimeMs += (Date.now() - dsQueryStartTime);
474
+ if (diagnostics.dataSourceHits)
475
+ diagnostics.dataSourceHits[dsId] = queryResult.documents.length;
476
+ queryResult.documents.forEach((doc) => {
477
+ allRetrievedChunks.push({
478
+ id: doc.id,
479
+ content: doc.textContent || "",
480
+ originalDocumentId: doc.metadata?.originalDocumentId || doc.id,
481
+ dataSourceId: dsId,
482
+ source: doc.metadata?.source,
483
+ metadata: doc.metadata,
484
+ relevanceScore: doc.similarityScore,
485
+ embedding: doc.embedding,
486
+ });
487
+ });
488
+ }
489
+ catch (error) {
490
+ console.error(`RetrievalAugmentor (ID: ${this.augmenterId}): Error querying data source '${dsId}'. Error: ${error.message}`, error);
491
+ diagnostics.messages?.push(`Error querying data source '${dsId}': ${error.message}`);
492
+ }
493
+ }
494
+ // 5. Sort, (Optionally Re-rank: MMR, Cross-Encoder - Future Enhancement)
495
+ // For now, simple sort by relevance score (descending)
496
+ allRetrievedChunks.sort((a, b) => (b.relevanceScore ?? 0) - (a.relevanceScore ?? 0));
497
+ // Apply topK again after merging, if different from store-level topK or if specified in general options
498
+ const overallTopK = options?.topK ?? this.config.globalDefaultRetrievalOptions?.topK ?? DEFAULT_TOP_K;
499
+ let processedChunks = allRetrievedChunks.slice(0, overallTopK * effectiveDataSourceIds.size); // Take more initially if merging from many
500
+ processedChunks.sort((a, b) => (b.relevanceScore ?? 0) - (a.relevanceScore ?? 0));
501
+ processedChunks = processedChunks.slice(0, overallTopK);
502
+ // Placeholder for re-ranking step
503
+ if (options?.rerankerConfig?.enabled) {
504
+ diagnostics.messages?.push("Re-ranking step configured but not fully implemented in this version.");
505
+ // Re-ranking logic would go here using options.rerankerConfig
506
+ // const rerankStartTime = Date.now();
507
+ // processedChunks = await this._applyReranking(queryText, processedChunks, options.rerankerConfig);
508
+ // diagnostics.rerankingTimeMs = Date.now() - rerankStartTime;
509
+ }
510
+ diagnostics.strategyUsed = options?.strategy || 'similarity';
511
+ // 6. Format Context
512
+ const joinSeparator = this.config.contextJoinSeparator ?? DEFAULT_CONTEXT_JOIN_SEPARATOR;
513
+ const maxChars = options?.tokenBudgetForContext /* (if tokens, convert) */ ?? this.config.maxCharsForAugmentedPrompt ?? DEFAULT_MAX_CHARS_FOR_AUGMENTED_PROMPT;
514
+ let augmentedContext = "";
515
+ let currentChars = 0;
516
+ for (const chunk of processedChunks) {
517
+ if (!chunk.content)
518
+ continue;
519
+ const potentialContent = (augmentedContext.length > 0 ? joinSeparator : "") + chunk.content;
520
+ if (currentChars + potentialContent.length <= maxChars) {
521
+ augmentedContext += potentialContent;
522
+ currentChars += potentialContent.length;
523
+ }
524
+ else {
525
+ // Try to add a partial chunk if it makes sense or just break
526
+ const remainingChars = maxChars - currentChars - (augmentedContext.length > 0 ? joinSeparator.length : 0);
527
+ if (remainingChars > 50) { // Arbitrary minimum to add partial content
528
+ augmentedContext += (augmentedContext.length > 0 ? joinSeparator : "") + chunk.content.substring(0, remainingChars) + "...";
529
+ }
530
+ break;
531
+ }
532
+ }
533
+ diagnostics.totalTokensInContext = augmentedContext.length; // Approximation if not tokenizing
534
+ diagnostics.messages?.push(`Total retrieval pipeline took ${Date.now() - startTime}ms.`);
535
+ return {
536
+ queryText,
537
+ retrievedChunks: processedChunks,
538
+ augmentedContext,
539
+ queryEmbedding,
540
+ diagnostics,
541
+ };
542
+ }
543
+ /**
544
+ * @inheritdoc
545
+ */
546
+ async deleteDocuments(documentIds, dataSourceId, _options) {
547
+ this.ensureInitialized();
548
+ if (!documentIds || documentIds.length === 0) {
549
+ return { successCount: 0, failureCount: 0 };
550
+ }
551
+ let successCount = 0;
552
+ let failureCount = 0;
553
+ const errors = [];
554
+ const targetDsIds = new Set();
555
+ if (dataSourceId) {
556
+ targetDsIds.add(dataSourceId);
557
+ }
558
+ else {
559
+ // If no specific dataSourceId, try to delete from all. This might be slow or undesirable.
560
+ // A better approach would be to require dataSourceId or have a mapping.
561
+ // For now, let's assume if no dataSourceId, we iterate through all known sources. This is a placeholder.
562
+ console.warn(`RetrievalAugmentor (ID: ${this.augmenterId}): deleteDocuments called without dataSourceId. This behavior might be inefficient or refined in future versions. Attempting delete across all known data sources.`);
563
+ this.vectorStoreManager.listDataSourceIds().forEach((id) => targetDsIds.add(id));
564
+ if (targetDsIds.size === 0) {
565
+ documentIds.forEach(docId => {
566
+ errors.push({ documentId: docId, message: "No data sources available to delete from." });
567
+ failureCount++;
568
+ });
569
+ return { successCount, failureCount, errors };
570
+ }
571
+ }
572
+ for (const dsId of targetDsIds) {
573
+ try {
574
+ const { store, collectionName } = await this.vectorStoreManager.getStoreForDataSource(dsId);
575
+ // Note: Deleting by document ID might delete multiple chunks if chunks inherit/are prefixed by doc ID.
576
+ // The IVectorStore.delete interface takes IDs which are expected to be chunk IDs.
577
+ // This requires a way to find all chunk IDs for a given original document ID.
578
+ // This is a simplification: assuming documentIds are actually chunk/vector IDs for now.
579
+ // TODO: Enhance to find all chunks for a doc ID and delete them.
580
+ const deleteResult = await store.delete(collectionName, documentIds);
581
+ successCount += deleteResult.deletedCount;
582
+ if (deleteResult.errors) {
583
+ deleteResult.errors.forEach((err) => {
584
+ errors.push({ documentId: err.id || 'unknown', message: `Failed to delete from ${dsId}: ${err.message}`, details: err.details });
585
+ failureCount++;
586
+ });
587
+ }
588
+ }
589
+ catch (error) {
590
+ documentIds.forEach(docId => {
591
+ errors.push({ documentId: docId, message: `Error deleting from data source '${dsId}': ${error.message}`, details: error });
592
+ failureCount++;
593
+ });
594
+ }
595
+ }
596
+ // This success/failure count is based on chunk IDs if documentIds are chunk IDs.
597
+ // If documentIds are original doc IDs, true success is more complex.
598
+ return { successCount, failureCount, errors };
599
+ }
600
+ /**
601
+ * @inheritdoc
602
+ */
603
+ async updateDocuments(documents, options) {
604
+ this.ensureInitialized();
605
+ const docsArray = Array.isArray(documents) ? documents : [documents];
606
+ const docIdsToUpdate = docsArray.map(doc => doc.id);
607
+ // Simplistic implementation: delete then ingest.
608
+ // This assumes doc.id in RagDocumentInput is the original document ID.
609
+ // The deleteDocuments currently expects chunk IDs or needs enhancement.
610
+ // For a true update, need to ensure all old chunks of a doc are deleted.
611
+ // This is a placeholder for a more sophisticated update.
612
+ console.warn(`RetrievalAugmentor (ID: ${this.augmenterId}): updateDocuments is currently a best-effort delete-then-ingest. Deletion targets document IDs, which might not map directly to all chunks without further logic.`);
613
+ try {
614
+ // This delete is problematic if docIdsToUpdate are original doc IDs and deleteDocuments expects chunk IDs.
615
+ // Assuming for now a conceptual deletion of the "document" entry.
616
+ // A proper implementation would first query for all chunks associated with docIdsToUpdate and delete those.
617
+ // await this.deleteDocuments(docIdsToUpdate, options?.targetDataSourceId, { ignoreNotFound: true });
618
+ // For now, a more robust update would require managing mapping of doc ID to chunk IDs.
619
+ // So, we directly proceed to ingest with overwrite capability.
620
+ }
621
+ catch (deleteError) {
622
+ console.error(`RetrievalAugmentor (ID: ${this.augmenterId}): Error during delete phase of update for documents [${docIdsToUpdate.join(', ')}]. Ingest will still be attempted. Error: ${deleteError.message}`);
623
+ }
624
+ const ingestionOptionsWithOverwrite = {
625
+ ...options,
626
+ duplicateHandling: 'overwrite', // Force overwrite for update
627
+ };
628
+ return this.ingestDocuments(documents, ingestionOptionsWithOverwrite);
629
+ }
630
+ /**
631
+ * @inheritdoc
632
+ */
633
+ async checkHealth() {
634
+ if (!this.isInitialized) {
635
+ return { isHealthy: false, details: { message: `RetrievalAugmentor (ID: ${this.augmenterId}) not initialized.` } };
636
+ }
637
+ const embManagerHealth = await this.embeddingManager.checkHealth();
638
+ const vecStoreManagerHealth = await this.vectorStoreManager.checkHealth();
639
+ const isHealthy = embManagerHealth.isHealthy && vecStoreManagerHealth.isOverallHealthy;
640
+ return {
641
+ isHealthy,
642
+ details: {
643
+ augmenterId: this.augmenterId,
644
+ status: this.isInitialized ? 'Initialized' : 'Not Initialized',
645
+ embeddingManager: embManagerHealth,
646
+ vectorStoreManager: vecStoreManagerHealth,
647
+ configSummary: {
648
+ defaultDataSourceId: this.config.defaultDataSourceId,
649
+ defaultQueryEmbeddingModelId: this.config.defaultQueryEmbeddingModelId,
650
+ categoryBehaviorCount: this.config.categoryBehaviors.length,
651
+ },
652
+ },
653
+ };
654
+ }
655
+ /**
656
+ * @inheritdoc
657
+ */
658
+ async shutdown() {
659
+ if (!this.isInitialized) {
660
+ console.log(`RetrievalAugmentor (ID: ${this.augmenterId}): Shutdown called but not initialized.`);
661
+ return;
662
+ }
663
+ console.log(`RetrievalAugmentor (ID: ${this.augmenterId}): Shutting down...`);
664
+ // Assuming EmbeddingManager and VectorStoreManager are shared and their lifecycle managed externally,
665
+ // or if this Augmentor "owns" them, it should shut them down.
666
+ // For now, let's assume they are managed externally or have their own robust shutdown.
667
+ // If they were created by this augmenter, it would be:
668
+ // await this.embeddingManager.shutdown?.();
669
+ // await this.vectorStoreManager.shutdownAllProviders?.();
670
+ this.isInitialized = false;
671
+ console.log(`RetrievalAugmentor (ID: ${this.augmenterId}) shut down.`);
672
+ }
673
+ }
674
+ //# sourceMappingURL=RetrievalAugmentor.js.map