@framers/agentos 0.1.112 → 0.1.114

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 (552) hide show
  1. package/README.md +39 -5
  2. package/dist/api/AgentOS.d.ts +45 -12
  3. package/dist/api/AgentOS.d.ts.map +1 -1
  4. package/dist/api/AgentOS.js +225 -78
  5. package/dist/api/AgentOS.js.map +1 -1
  6. package/dist/api/AgentOSOrchestrator.d.ts +8 -0
  7. package/dist/api/AgentOSOrchestrator.d.ts.map +1 -1
  8. package/dist/api/AgentOSOrchestrator.js +350 -59
  9. package/dist/api/AgentOSOrchestrator.js.map +1 -1
  10. package/dist/api/StreamChunkEmitter.d.ts.map +1 -1
  11. package/dist/api/StreamChunkEmitter.js +2 -0
  12. package/dist/api/StreamChunkEmitter.js.map +1 -1
  13. package/dist/api/agency.d.ts.map +1 -1
  14. package/dist/api/agency.js +47 -1
  15. package/dist/api/agency.js.map +1 -1
  16. package/dist/api/agent.d.ts +18 -5
  17. package/dist/api/agent.d.ts.map +1 -1
  18. package/dist/api/agent.js +48 -9
  19. package/dist/api/agent.js.map +1 -1
  20. package/dist/api/agentExport.d.ts +202 -0
  21. package/dist/api/agentExport.d.ts.map +1 -0
  22. package/dist/api/agentExport.js +323 -0
  23. package/dist/api/agentExport.js.map +1 -0
  24. package/dist/api/editImage.d.ts +119 -0
  25. package/dist/api/editImage.d.ts.map +1 -0
  26. package/dist/api/editImage.js +150 -0
  27. package/dist/api/editImage.js.map +1 -0
  28. package/dist/api/embedText.d.ts +137 -0
  29. package/dist/api/embedText.d.ts.map +1 -0
  30. package/dist/api/embedText.js +229 -0
  31. package/dist/api/embedText.js.map +1 -0
  32. package/dist/api/externalToolRegistry.d.ts +44 -0
  33. package/dist/api/externalToolRegistry.d.ts.map +1 -0
  34. package/dist/api/externalToolRegistry.js +245 -0
  35. package/dist/api/externalToolRegistry.js.map +1 -0
  36. package/dist/api/generateImage.d.ts +1 -1
  37. package/dist/api/generateImage.d.ts.map +1 -1
  38. package/dist/api/generateImage.js +17 -13
  39. package/dist/api/generateImage.js.map +1 -1
  40. package/dist/api/generateObject.d.ts +185 -0
  41. package/dist/api/generateObject.d.ts.map +1 -0
  42. package/dist/api/generateObject.js +249 -0
  43. package/dist/api/generateObject.js.map +1 -0
  44. package/dist/api/generateText.d.ts +13 -3
  45. package/dist/api/generateText.d.ts.map +1 -1
  46. package/dist/api/generateText.js +20 -5
  47. package/dist/api/generateText.js.map +1 -1
  48. package/dist/api/interfaces/IAgentOS.d.ts +29 -1
  49. package/dist/api/interfaces/IAgentOS.d.ts.map +1 -1
  50. package/dist/api/model.d.ts +7 -7
  51. package/dist/api/model.d.ts.map +1 -1
  52. package/dist/api/model.js +22 -16
  53. package/dist/api/model.js.map +1 -1
  54. package/dist/api/processRequestWithExternalTools.d.ts +26 -0
  55. package/dist/api/processRequestWithExternalTools.d.ts.map +1 -0
  56. package/dist/api/processRequestWithExternalTools.js +52 -0
  57. package/dist/api/processRequestWithExternalTools.js.map +1 -0
  58. package/dist/api/processRequestWithRegisteredTools.d.ts +56 -0
  59. package/dist/api/processRequestWithRegisteredTools.d.ts.map +1 -0
  60. package/dist/api/processRequestWithRegisteredTools.js +125 -0
  61. package/dist/api/processRequestWithRegisteredTools.js.map +1 -0
  62. package/dist/api/provider-defaults.d.ts.map +1 -1
  63. package/dist/api/provider-defaults.js +28 -0
  64. package/dist/api/provider-defaults.js.map +1 -1
  65. package/dist/api/resumeExternalToolRequestWithRegisteredTools.d.ts +71 -0
  66. package/dist/api/resumeExternalToolRequestWithRegisteredTools.d.ts.map +1 -0
  67. package/dist/api/resumeExternalToolRequestWithRegisteredTools.js +159 -0
  68. package/dist/api/resumeExternalToolRequestWithRegisteredTools.js.map +1 -0
  69. package/dist/api/strategies/agentGraphBuilder.d.ts +170 -0
  70. package/dist/api/strategies/agentGraphBuilder.d.ts.map +1 -0
  71. package/dist/api/strategies/agentGraphBuilder.js +299 -0
  72. package/dist/api/strategies/agentGraphBuilder.js.map +1 -0
  73. package/dist/api/strategies/debate.d.ts +12 -1
  74. package/dist/api/strategies/debate.d.ts.map +1 -1
  75. package/dist/api/strategies/debate.js +41 -5
  76. package/dist/api/strategies/debate.js.map +1 -1
  77. package/dist/api/strategies/graphCompiler.d.ts +84 -0
  78. package/dist/api/strategies/graphCompiler.d.ts.map +1 -0
  79. package/dist/api/strategies/graphCompiler.js +617 -0
  80. package/dist/api/strategies/graphCompiler.js.map +1 -0
  81. package/dist/api/strategies/hierarchical.d.ts +15 -1
  82. package/dist/api/strategies/hierarchical.d.ts.map +1 -1
  83. package/dist/api/strategies/hierarchical.js +53 -8
  84. package/dist/api/strategies/hierarchical.js.map +1 -1
  85. package/dist/api/strategies/index.d.ts +29 -4
  86. package/dist/api/strategies/index.d.ts.map +1 -1
  87. package/dist/api/strategies/index.js +28 -4
  88. package/dist/api/strategies/index.js.map +1 -1
  89. package/dist/api/strategies/parallel.d.ts +15 -4
  90. package/dist/api/strategies/parallel.d.ts.map +1 -1
  91. package/dist/api/strategies/parallel.js +53 -16
  92. package/dist/api/strategies/parallel.js.map +1 -1
  93. package/dist/api/strategies/review-loop.d.ts +15 -1
  94. package/dist/api/strategies/review-loop.d.ts.map +1 -1
  95. package/dist/api/strategies/review-loop.js +36 -10
  96. package/dist/api/strategies/review-loop.js.map +1 -1
  97. package/dist/api/strategies/sequential.d.ts +11 -1
  98. package/dist/api/strategies/sequential.d.ts.map +1 -1
  99. package/dist/api/strategies/sequential.js +39 -8
  100. package/dist/api/strategies/sequential.js.map +1 -1
  101. package/dist/api/strategies/shared.d.ts +72 -8
  102. package/dist/api/strategies/shared.d.ts.map +1 -1
  103. package/dist/api/strategies/shared.js +92 -12
  104. package/dist/api/strategies/shared.js.map +1 -1
  105. package/dist/api/streamObject.d.ts +166 -0
  106. package/dist/api/streamObject.d.ts.map +1 -0
  107. package/dist/api/streamObject.js +268 -0
  108. package/dist/api/streamObject.js.map +1 -0
  109. package/dist/api/streamText.d.ts +1 -1
  110. package/dist/api/streamText.d.ts.map +1 -1
  111. package/dist/api/streamText.js +26 -8
  112. package/dist/api/streamText.js.map +1 -1
  113. package/dist/api/toolAdapter.d.ts +44 -8
  114. package/dist/api/toolAdapter.d.ts.map +1 -1
  115. package/dist/api/toolAdapter.js +224 -45
  116. package/dist/api/toolAdapter.js.map +1 -1
  117. package/dist/api/types/AgentOSExternalToolRequest.d.ts +35 -0
  118. package/dist/api/types/AgentOSExternalToolRequest.d.ts.map +1 -0
  119. package/dist/api/types/AgentOSExternalToolRequest.js +2 -0
  120. package/dist/api/types/AgentOSExternalToolRequest.js.map +1 -0
  121. package/dist/api/types/AgentOSResponse.d.ts +25 -0
  122. package/dist/api/types/AgentOSResponse.d.ts.map +1 -1
  123. package/dist/api/types/AgentOSResponse.js +20 -0
  124. package/dist/api/types/AgentOSResponse.js.map +1 -1
  125. package/dist/api/types/AgentOSToolResult.d.ts +11 -0
  126. package/dist/api/types/AgentOSToolResult.d.ts.map +1 -0
  127. package/dist/api/types/AgentOSToolResult.js +2 -0
  128. package/dist/api/types/AgentOSToolResult.js.map +1 -0
  129. package/dist/api/types.d.ts +81 -4
  130. package/dist/api/types.d.ts.map +1 -1
  131. package/dist/api/types.js.map +1 -1
  132. package/dist/api/upscaleImage.d.ts +92 -0
  133. package/dist/api/upscaleImage.d.ts.map +1 -0
  134. package/dist/api/upscaleImage.js +133 -0
  135. package/dist/api/upscaleImage.js.map +1 -0
  136. package/dist/api/variateImage.d.ts +102 -0
  137. package/dist/api/variateImage.d.ts.map +1 -0
  138. package/dist/api/variateImage.js +154 -0
  139. package/dist/api/variateImage.js.map +1 -0
  140. package/dist/cognitive_substrate/GMI.d.ts +16 -2
  141. package/dist/cognitive_substrate/GMI.d.ts.map +1 -1
  142. package/dist/cognitive_substrate/GMI.js +188 -56
  143. package/dist/cognitive_substrate/GMI.js.map +1 -1
  144. package/dist/cognitive_substrate/IGMI.d.ts +10 -0
  145. package/dist/cognitive_substrate/IGMI.d.ts.map +1 -1
  146. package/dist/cognitive_substrate/IGMI.js.map +1 -1
  147. package/dist/config/AgentOSConfig.d.ts +19 -2
  148. package/dist/config/AgentOSConfig.d.ts.map +1 -1
  149. package/dist/config/AgentOSConfig.js +46 -29
  150. package/dist/config/AgentOSConfig.js.map +1 -1
  151. package/dist/core/guardrails/IGuardrailService.d.ts +1 -1
  152. package/dist/core/images/IImageProvider.d.ts +93 -0
  153. package/dist/core/images/IImageProvider.d.ts.map +1 -1
  154. package/dist/core/images/IImageProvider.js.map +1 -1
  155. package/dist/core/images/ImageOperationError.d.ts +52 -0
  156. package/dist/core/images/ImageOperationError.d.ts.map +1 -0
  157. package/dist/core/images/ImageOperationError.js +58 -0
  158. package/dist/core/images/ImageOperationError.js.map +1 -0
  159. package/dist/core/images/imageToBuffer.d.ts +41 -0
  160. package/dist/core/images/imageToBuffer.d.ts.map +1 -0
  161. package/dist/core/images/imageToBuffer.js +95 -0
  162. package/dist/core/images/imageToBuffer.js.map +1 -0
  163. package/dist/core/images/index.d.ts +4 -0
  164. package/dist/core/images/index.d.ts.map +1 -1
  165. package/dist/core/images/index.js +8 -0
  166. package/dist/core/images/index.js.map +1 -1
  167. package/dist/core/images/providers/FalImageProvider.d.ts +208 -0
  168. package/dist/core/images/providers/FalImageProvider.d.ts.map +1 -0
  169. package/dist/core/images/providers/FalImageProvider.js +301 -0
  170. package/dist/core/images/providers/FalImageProvider.js.map +1 -0
  171. package/dist/core/images/providers/FluxImageProvider.d.ts +197 -0
  172. package/dist/core/images/providers/FluxImageProvider.d.ts.map +1 -0
  173. package/dist/core/images/providers/FluxImageProvider.js +271 -0
  174. package/dist/core/images/providers/FluxImageProvider.js.map +1 -0
  175. package/dist/core/images/providers/OpenAIImageProvider.d.ts +33 -1
  176. package/dist/core/images/providers/OpenAIImageProvider.d.ts.map +1 -1
  177. package/dist/core/images/providers/OpenAIImageProvider.js +125 -0
  178. package/dist/core/images/providers/OpenAIImageProvider.js.map +1 -1
  179. package/dist/core/images/providers/ReplicateImageProvider.d.ts +26 -1
  180. package/dist/core/images/providers/ReplicateImageProvider.d.ts.map +1 -1
  181. package/dist/core/images/providers/ReplicateImageProvider.js +118 -0
  182. package/dist/core/images/providers/ReplicateImageProvider.js.map +1 -1
  183. package/dist/core/images/providers/StabilityImageProvider.d.ts +41 -1
  184. package/dist/core/images/providers/StabilityImageProvider.d.ts.map +1 -1
  185. package/dist/core/images/providers/StabilityImageProvider.js +180 -7
  186. package/dist/core/images/providers/StabilityImageProvider.js.map +1 -1
  187. package/dist/core/images/providers/StableDiffusionLocalProvider.d.ts +29 -1
  188. package/dist/core/images/providers/StableDiffusionLocalProvider.d.ts.map +1 -1
  189. package/dist/core/images/providers/StableDiffusionLocalProvider.js +124 -0
  190. package/dist/core/images/providers/StableDiffusionLocalProvider.js.map +1 -1
  191. package/dist/core/llm/IPromptEngine.d.ts +2 -2
  192. package/dist/core/llm/IPromptEngine.d.ts.map +1 -1
  193. package/dist/core/llm/IPromptEngine.js +2 -2
  194. package/dist/core/llm/IPromptEngine.js.map +1 -1
  195. package/dist/core/llm/providers/AIModelProviderManager.d.ts +7 -1
  196. package/dist/core/llm/providers/AIModelProviderManager.d.ts.map +1 -1
  197. package/dist/core/llm/providers/AIModelProviderManager.js +24 -0
  198. package/dist/core/llm/providers/AIModelProviderManager.js.map +1 -1
  199. package/dist/core/llm/providers/errors/AnthropicProviderError.d.ts +42 -0
  200. package/dist/core/llm/providers/errors/AnthropicProviderError.d.ts.map +1 -0
  201. package/dist/core/llm/providers/errors/AnthropicProviderError.js +45 -0
  202. package/dist/core/llm/providers/errors/AnthropicProviderError.js.map +1 -0
  203. package/dist/core/llm/providers/errors/GeminiProviderError.d.ts +45 -0
  204. package/dist/core/llm/providers/errors/GeminiProviderError.d.ts.map +1 -0
  205. package/dist/core/llm/providers/errors/GeminiProviderError.js +46 -0
  206. package/dist/core/llm/providers/errors/GeminiProviderError.js.map +1 -0
  207. package/dist/core/llm/providers/errors/OllamaProviderError.d.ts +1 -1
  208. package/dist/core/llm/providers/errors/OllamaProviderError.d.ts.map +1 -1
  209. package/dist/core/llm/providers/errors/OllamaProviderError.js +1 -1
  210. package/dist/core/llm/providers/errors/OllamaProviderError.js.map +1 -1
  211. package/dist/core/llm/providers/errors/OpenAIProviderError.d.ts +1 -1
  212. package/dist/core/llm/providers/errors/OpenAIProviderError.js +1 -1
  213. package/dist/core/llm/providers/errors/OpenRouterProviderError.d.ts +1 -1
  214. package/dist/core/llm/providers/errors/OpenRouterProviderError.js +1 -1
  215. package/dist/core/llm/providers/implementations/AnthropicProvider.d.ts +340 -0
  216. package/dist/core/llm/providers/implementations/AnthropicProvider.d.ts.map +1 -0
  217. package/dist/core/llm/providers/implementations/AnthropicProvider.js +959 -0
  218. package/dist/core/llm/providers/implementations/AnthropicProvider.js.map +1 -0
  219. package/dist/core/llm/providers/implementations/GeminiProvider.d.ts +339 -0
  220. package/dist/core/llm/providers/implementations/GeminiProvider.d.ts.map +1 -0
  221. package/dist/core/llm/providers/implementations/GeminiProvider.js +1004 -0
  222. package/dist/core/llm/providers/implementations/GeminiProvider.js.map +1 -0
  223. package/dist/core/llm/providers/implementations/GroqProvider.d.ts +105 -0
  224. package/dist/core/llm/providers/implementations/GroqProvider.d.ts.map +1 -0
  225. package/dist/core/llm/providers/implementations/GroqProvider.js +134 -0
  226. package/dist/core/llm/providers/implementations/GroqProvider.js.map +1 -0
  227. package/dist/core/llm/providers/implementations/MistralProvider.d.ts +105 -0
  228. package/dist/core/llm/providers/implementations/MistralProvider.d.ts.map +1 -0
  229. package/dist/core/llm/providers/implementations/MistralProvider.js +146 -0
  230. package/dist/core/llm/providers/implementations/MistralProvider.js.map +1 -0
  231. package/dist/core/llm/providers/implementations/TogetherProvider.d.ts +107 -0
  232. package/dist/core/llm/providers/implementations/TogetherProvider.d.ts.map +1 -0
  233. package/dist/core/llm/providers/implementations/TogetherProvider.js +138 -0
  234. package/dist/core/llm/providers/implementations/TogetherProvider.js.map +1 -0
  235. package/dist/core/llm/providers/implementations/XAIProvider.d.ts +102 -0
  236. package/dist/core/llm/providers/implementations/XAIProvider.d.ts.map +1 -0
  237. package/dist/core/llm/providers/implementations/XAIProvider.js +123 -0
  238. package/dist/core/llm/providers/implementations/XAIProvider.js.map +1 -0
  239. package/dist/core/orchestration/AgentOrchestrator.d.ts.map +1 -1
  240. package/dist/core/orchestration/AgentOrchestrator.js +26 -5
  241. package/dist/core/orchestration/AgentOrchestrator.js.map +1 -1
  242. package/dist/core/tools/IToolOrchestrator.d.ts +2 -2
  243. package/dist/core/tools/IToolOrchestrator.d.ts.map +1 -1
  244. package/dist/core/tools/ToolExecutor.d.ts +3 -0
  245. package/dist/core/tools/ToolExecutor.d.ts.map +1 -1
  246. package/dist/core/tools/ToolExecutor.js +2 -1
  247. package/dist/core/tools/ToolExecutor.js.map +1 -1
  248. package/dist/core/tools/ToolOrchestrator.d.ts +7 -7
  249. package/dist/core/tools/ToolOrchestrator.d.ts.map +1 -1
  250. package/dist/core/tools/ToolOrchestrator.js +135 -36
  251. package/dist/core/tools/ToolOrchestrator.js.map +1 -1
  252. package/dist/core/tools/permissions/ToolPermissionManager.d.ts +6 -5
  253. package/dist/core/tools/permissions/ToolPermissionManager.d.ts.map +1 -1
  254. package/dist/core/tools/permissions/ToolPermissionManager.js +47 -21
  255. package/dist/core/tools/permissions/ToolPermissionManager.js.map +1 -1
  256. package/dist/core/vision/VisionPipeline.d.ts +437 -0
  257. package/dist/core/vision/VisionPipeline.d.ts.map +1 -0
  258. package/dist/core/vision/VisionPipeline.js +1113 -0
  259. package/dist/core/vision/VisionPipeline.js.map +1 -0
  260. package/dist/core/vision/index.d.ts +97 -0
  261. package/dist/core/vision/index.d.ts.map +1 -0
  262. package/dist/core/vision/index.js +182 -0
  263. package/dist/core/vision/index.js.map +1 -0
  264. package/dist/core/vision/providers/LLMVisionProvider.d.ts +135 -0
  265. package/dist/core/vision/providers/LLMVisionProvider.d.ts.map +1 -0
  266. package/dist/core/vision/providers/LLMVisionProvider.js +136 -0
  267. package/dist/core/vision/providers/LLMVisionProvider.js.map +1 -0
  268. package/dist/core/vision/providers/PipelineVisionProvider.d.ts +154 -0
  269. package/dist/core/vision/providers/PipelineVisionProvider.d.ts.map +1 -0
  270. package/dist/core/vision/providers/PipelineVisionProvider.js +160 -0
  271. package/dist/core/vision/providers/PipelineVisionProvider.js.map +1 -0
  272. package/dist/core/vision/types.d.ts +286 -0
  273. package/dist/core/vision/types.d.ts.map +1 -0
  274. package/dist/core/vision/types.js +24 -0
  275. package/dist/core/vision/types.js.map +1 -0
  276. package/dist/discovery/CapabilityDiscoveryEngine.d.ts +1 -1
  277. package/dist/discovery/CapabilityDiscoveryEngine.d.ts.map +1 -1
  278. package/dist/discovery/CapabilityDiscoveryEngine.js +1 -1
  279. package/dist/discovery/CapabilityDiscoveryEngine.js.map +1 -1
  280. package/dist/emergent/ComposableToolBuilder.d.ts +15 -4
  281. package/dist/emergent/ComposableToolBuilder.d.ts.map +1 -1
  282. package/dist/emergent/ComposableToolBuilder.js +29 -14
  283. package/dist/emergent/ComposableToolBuilder.js.map +1 -1
  284. package/dist/emergent/EmergentCapabilityEngine.d.ts +3 -3
  285. package/dist/emergent/EmergentCapabilityEngine.d.ts.map +1 -1
  286. package/dist/emergent/EmergentCapabilityEngine.js +15 -12
  287. package/dist/emergent/EmergentCapabilityEngine.js.map +1 -1
  288. package/dist/emergent/EmergentJudge.d.ts +20 -0
  289. package/dist/emergent/EmergentJudge.d.ts.map +1 -1
  290. package/dist/emergent/EmergentJudge.js +121 -26
  291. package/dist/emergent/EmergentJudge.js.map +1 -1
  292. package/dist/emergent/EmergentToolRegistry.d.ts +17 -0
  293. package/dist/emergent/EmergentToolRegistry.d.ts.map +1 -1
  294. package/dist/emergent/EmergentToolRegistry.js +26 -0
  295. package/dist/emergent/EmergentToolRegistry.js.map +1 -1
  296. package/dist/emergent/ForgeToolMetaTool.d.ts +1 -1
  297. package/dist/emergent/ForgeToolMetaTool.d.ts.map +1 -1
  298. package/dist/emergent/ForgeToolMetaTool.js +15 -2
  299. package/dist/emergent/ForgeToolMetaTool.js.map +1 -1
  300. package/dist/emergent/SandboxedToolForge.d.ts +2 -2
  301. package/dist/emergent/SandboxedToolForge.d.ts.map +1 -1
  302. package/dist/emergent/SandboxedToolForge.js +13 -23
  303. package/dist/emergent/SandboxedToolForge.js.map +1 -1
  304. package/dist/emergent/SkillExporter.d.ts +119 -0
  305. package/dist/emergent/SkillExporter.d.ts.map +1 -0
  306. package/dist/emergent/SkillExporter.js +344 -0
  307. package/dist/emergent/SkillExporter.js.map +1 -0
  308. package/dist/emergent/index.d.ts +1 -0
  309. package/dist/emergent/index.d.ts.map +1 -1
  310. package/dist/emergent/index.js +1 -0
  311. package/dist/emergent/index.js.map +1 -1
  312. package/dist/emergent/types.d.ts +4 -4
  313. package/dist/index.d.ts +30 -5
  314. package/dist/index.d.ts.map +1 -1
  315. package/dist/index.js +19 -2
  316. package/dist/index.js.map +1 -1
  317. package/dist/memory/facade/Memory.d.ts.map +1 -1
  318. package/dist/memory/facade/Memory.js +8 -0
  319. package/dist/memory/facade/Memory.js.map +1 -1
  320. package/dist/memory/facade/types.d.ts +10 -0
  321. package/dist/memory/facade/types.d.ts.map +1 -1
  322. package/dist/memory/index.d.ts +15 -7
  323. package/dist/memory/index.d.ts.map +1 -1
  324. package/dist/memory/index.js +7 -0
  325. package/dist/memory/index.js.map +1 -1
  326. package/dist/memory/ingestion/DoclingLoader.d.ts +3 -3
  327. package/dist/memory/ingestion/DoclingLoader.d.ts.map +1 -1
  328. package/dist/memory/ingestion/DoclingLoader.js +12 -8
  329. package/dist/memory/ingestion/DoclingLoader.js.map +1 -1
  330. package/dist/memory/ingestion/FolderScanner.d.ts +7 -7
  331. package/dist/memory/ingestion/FolderScanner.d.ts.map +1 -1
  332. package/dist/memory/ingestion/FolderScanner.js +6 -6
  333. package/dist/memory/ingestion/FolderScanner.js.map +1 -1
  334. package/dist/memory/ingestion/LoaderRegistry.d.ts +8 -8
  335. package/dist/memory/ingestion/LoaderRegistry.d.ts.map +1 -1
  336. package/dist/memory/ingestion/LoaderRegistry.js +9 -11
  337. package/dist/memory/ingestion/LoaderRegistry.js.map +1 -1
  338. package/dist/memory/ingestion/MultimodalAggregator.d.ts +1 -1
  339. package/dist/memory/ingestion/MultimodalAggregator.js +1 -1
  340. package/dist/memory/ingestion/OcrPdfLoader.d.ts +2 -2
  341. package/dist/memory/ingestion/OcrPdfLoader.d.ts.map +1 -1
  342. package/dist/memory/ingestion/OcrPdfLoader.js +12 -8
  343. package/dist/memory/ingestion/OcrPdfLoader.js.map +1 -1
  344. package/dist/memory/ingestion/PdfLoader.d.ts +8 -8
  345. package/dist/memory/ingestion/PdfLoader.d.ts.map +1 -1
  346. package/dist/memory/ingestion/PdfLoader.js +13 -10
  347. package/dist/memory/ingestion/PdfLoader.js.map +1 -1
  348. package/dist/memory/io/MarkdownExporter.d.ts +1 -1
  349. package/dist/memory/io/MarkdownExporter.d.ts.map +1 -1
  350. package/dist/memory/io/MarkdownExporter.js +1 -1
  351. package/dist/memory/io/MarkdownExporter.js.map +1 -1
  352. package/dist/memory/observation/MemoryObserver.d.ts +63 -1
  353. package/dist/memory/observation/MemoryObserver.d.ts.map +1 -1
  354. package/dist/memory/observation/MemoryObserver.js +115 -4
  355. package/dist/memory/observation/MemoryObserver.js.map +1 -1
  356. package/dist/memory/observation/ObservationCompressor.d.ts +88 -0
  357. package/dist/memory/observation/ObservationCompressor.d.ts.map +1 -0
  358. package/dist/memory/observation/ObservationCompressor.js +207 -0
  359. package/dist/memory/observation/ObservationCompressor.js.map +1 -0
  360. package/dist/memory/observation/ObservationReflector.d.ts +82 -0
  361. package/dist/memory/observation/ObservationReflector.d.ts.map +1 -0
  362. package/dist/memory/observation/ObservationReflector.js +212 -0
  363. package/dist/memory/observation/ObservationReflector.js.map +1 -0
  364. package/dist/memory/observation/temporal.d.ts +54 -0
  365. package/dist/memory/observation/temporal.d.ts.map +1 -0
  366. package/dist/memory/observation/temporal.js +115 -0
  367. package/dist/memory/observation/temporal.js.map +1 -0
  368. package/dist/memory/tools/MemoryAddTool.d.ts +2 -2
  369. package/dist/memory/tools/MemoryAddTool.d.ts.map +1 -1
  370. package/dist/memory/tools/MemoryAddTool.js +8 -3
  371. package/dist/memory/tools/MemoryAddTool.js.map +1 -1
  372. package/dist/memory/tools/MemorySearchTool.d.ts +3 -3
  373. package/dist/memory/tools/MemorySearchTool.d.ts.map +1 -1
  374. package/dist/memory/tools/MemorySearchTool.js +11 -9
  375. package/dist/memory/tools/MemorySearchTool.js.map +1 -1
  376. package/dist/memory/tools/scopeContext.d.ts +11 -0
  377. package/dist/memory/tools/scopeContext.d.ts.map +1 -0
  378. package/dist/memory/tools/scopeContext.js +46 -0
  379. package/dist/memory/tools/scopeContext.js.map +1 -0
  380. package/dist/orchestration/builders/AgentGraph.d.ts +12 -11
  381. package/dist/orchestration/builders/AgentGraph.d.ts.map +1 -1
  382. package/dist/orchestration/builders/AgentGraph.js +12 -11
  383. package/dist/orchestration/builders/AgentGraph.js.map +1 -1
  384. package/dist/orchestration/builders/VoiceNodeBuilder.d.ts +82 -25
  385. package/dist/orchestration/builders/VoiceNodeBuilder.d.ts.map +1 -1
  386. package/dist/orchestration/builders/VoiceNodeBuilder.js +86 -26
  387. package/dist/orchestration/builders/VoiceNodeBuilder.js.map +1 -1
  388. package/dist/orchestration/builders/WorkflowBuilder.d.ts +1 -1
  389. package/dist/orchestration/builders/WorkflowBuilder.d.ts.map +1 -1
  390. package/dist/orchestration/builders/WorkflowBuilder.js +1 -1
  391. package/dist/orchestration/builders/WorkflowBuilder.js.map +1 -1
  392. package/dist/orchestration/checkpoint/InMemoryCheckpointStore.d.ts +7 -54
  393. package/dist/orchestration/checkpoint/InMemoryCheckpointStore.d.ts.map +1 -1
  394. package/dist/orchestration/checkpoint/InMemoryCheckpointStore.js +8 -56
  395. package/dist/orchestration/checkpoint/InMemoryCheckpointStore.js.map +1 -1
  396. package/dist/orchestration/events/GraphEvent.d.ts +67 -5
  397. package/dist/orchestration/events/GraphEvent.d.ts.map +1 -1
  398. package/dist/orchestration/events/GraphEvent.js.map +1 -1
  399. package/dist/orchestration/runtime/GraphRuntime.d.ts.map +1 -1
  400. package/dist/orchestration/runtime/GraphRuntime.js +151 -1
  401. package/dist/orchestration/runtime/GraphRuntime.js.map +1 -1
  402. package/dist/orchestration/runtime/LoopController.d.ts +3 -3
  403. package/dist/orchestration/runtime/LoopController.d.ts.map +1 -1
  404. package/dist/orchestration/runtime/LoopController.js.map +1 -1
  405. package/dist/orchestration/runtime/StateManager.d.ts +3 -3
  406. package/dist/orchestration/runtime/StateManager.js +3 -3
  407. package/dist/orchestration/runtime/VoiceNodeExecutor.d.ts +103 -26
  408. package/dist/orchestration/runtime/VoiceNodeExecutor.d.ts.map +1 -1
  409. package/dist/orchestration/runtime/VoiceNodeExecutor.js +155 -43
  410. package/dist/orchestration/runtime/VoiceNodeExecutor.js.map +1 -1
  411. package/dist/orchestration/runtime/VoiceTransportAdapter.d.ts +95 -33
  412. package/dist/orchestration/runtime/VoiceTransportAdapter.d.ts.map +1 -1
  413. package/dist/orchestration/runtime/VoiceTransportAdapter.js +83 -29
  414. package/dist/orchestration/runtime/VoiceTransportAdapter.js.map +1 -1
  415. package/dist/orchestration/runtime/VoiceTurnCollector.d.ts +73 -20
  416. package/dist/orchestration/runtime/VoiceTurnCollector.d.ts.map +1 -1
  417. package/dist/orchestration/runtime/VoiceTurnCollector.js +84 -23
  418. package/dist/orchestration/runtime/VoiceTurnCollector.js.map +1 -1
  419. package/dist/query-router/KeywordFallback.d.ts +70 -0
  420. package/dist/query-router/KeywordFallback.d.ts.map +1 -0
  421. package/dist/query-router/KeywordFallback.js +132 -0
  422. package/dist/query-router/KeywordFallback.js.map +1 -0
  423. package/dist/query-router/QueryClassifier.d.ts +140 -0
  424. package/dist/query-router/QueryClassifier.d.ts.map +1 -0
  425. package/dist/query-router/QueryClassifier.js +223 -0
  426. package/dist/query-router/QueryClassifier.js.map +1 -0
  427. package/dist/query-router/QueryDispatcher.d.ts +139 -0
  428. package/dist/query-router/QueryDispatcher.d.ts.map +1 -0
  429. package/dist/query-router/QueryDispatcher.js +297 -0
  430. package/dist/query-router/QueryDispatcher.js.map +1 -0
  431. package/dist/query-router/QueryGenerator.d.ts +184 -0
  432. package/dist/query-router/QueryGenerator.d.ts.map +1 -0
  433. package/dist/query-router/QueryGenerator.js +241 -0
  434. package/dist/query-router/QueryGenerator.js.map +1 -0
  435. package/dist/query-router/QueryRouter.d.ts +292 -0
  436. package/dist/query-router/QueryRouter.d.ts.map +1 -0
  437. package/dist/query-router/QueryRouter.js +803 -0
  438. package/dist/query-router/QueryRouter.js.map +1 -0
  439. package/dist/query-router/TopicExtractor.d.ts +73 -0
  440. package/dist/query-router/TopicExtractor.d.ts.map +1 -0
  441. package/dist/query-router/TopicExtractor.js +95 -0
  442. package/dist/query-router/TopicExtractor.js.map +1 -0
  443. package/dist/query-router/index.d.ts +40 -0
  444. package/dist/query-router/index.d.ts.map +1 -0
  445. package/dist/query-router/index.js +46 -0
  446. package/dist/query-router/index.js.map +1 -0
  447. package/dist/query-router/types.d.ts +508 -0
  448. package/dist/query-router/types.d.ts.map +1 -0
  449. package/dist/query-router/types.js +39 -0
  450. package/dist/query-router/types.js.map +1 -0
  451. package/dist/rag/index.d.ts +5 -0
  452. package/dist/rag/index.d.ts.map +1 -1
  453. package/dist/rag/index.js +7 -0
  454. package/dist/rag/index.js.map +1 -1
  455. package/dist/rag/multimodal/LLMVisionAdapter.d.ts +43 -0
  456. package/dist/rag/multimodal/LLMVisionAdapter.d.ts.map +1 -0
  457. package/dist/rag/multimodal/LLMVisionAdapter.js +46 -0
  458. package/dist/rag/multimodal/LLMVisionAdapter.js.map +1 -0
  459. package/dist/rag/multimodal/MultimodalIndexer.d.ts +244 -0
  460. package/dist/rag/multimodal/MultimodalIndexer.d.ts.map +1 -0
  461. package/dist/rag/multimodal/MultimodalIndexer.js +411 -0
  462. package/dist/rag/multimodal/MultimodalIndexer.js.map +1 -0
  463. package/dist/rag/multimodal/MultimodalMemoryBridge.d.ts +448 -0
  464. package/dist/rag/multimodal/MultimodalMemoryBridge.d.ts.map +1 -0
  465. package/dist/rag/multimodal/MultimodalMemoryBridge.js +941 -0
  466. package/dist/rag/multimodal/MultimodalMemoryBridge.js.map +1 -0
  467. package/dist/rag/multimodal/SpeechProviderAdapter.d.ts +139 -0
  468. package/dist/rag/multimodal/SpeechProviderAdapter.d.ts.map +1 -0
  469. package/dist/rag/multimodal/SpeechProviderAdapter.js +143 -0
  470. package/dist/rag/multimodal/SpeechProviderAdapter.js.map +1 -0
  471. package/dist/rag/multimodal/createMultimodalIndexerFromResolver.d.ts +172 -0
  472. package/dist/rag/multimodal/createMultimodalIndexerFromResolver.d.ts.map +1 -0
  473. package/dist/rag/multimodal/createMultimodalIndexerFromResolver.js +152 -0
  474. package/dist/rag/multimodal/createMultimodalIndexerFromResolver.js.map +1 -0
  475. package/dist/rag/multimodal/index.d.ts +44 -0
  476. package/dist/rag/multimodal/index.d.ts.map +1 -0
  477. package/dist/rag/multimodal/index.js +42 -0
  478. package/dist/rag/multimodal/index.js.map +1 -0
  479. package/dist/rag/multimodal/types.d.ts +276 -0
  480. package/dist/rag/multimodal/types.d.ts.map +1 -0
  481. package/dist/rag/multimodal/types.js +26 -0
  482. package/dist/rag/multimodal/types.js.map +1 -0
  483. package/dist/social-posting/SocialPostManager.d.ts +3 -3
  484. package/dist/social-posting/SocialPostManager.d.ts.map +1 -1
  485. package/dist/social-posting/SocialPostManager.js +3 -5
  486. package/dist/social-posting/SocialPostManager.js.map +1 -1
  487. package/dist/speech/FallbackProxy.d.ts +6 -6
  488. package/dist/speech/FallbackProxy.d.ts.map +1 -1
  489. package/dist/speech/FallbackProxy.js +3 -3
  490. package/dist/speech/FallbackProxy.js.map +1 -1
  491. package/dist/speech/SpeechProviderResolver.d.ts +8 -8
  492. package/dist/speech/SpeechProviderResolver.d.ts.map +1 -1
  493. package/dist/speech/SpeechProviderResolver.js +22 -11
  494. package/dist/speech/SpeechProviderResolver.js.map +1 -1
  495. package/dist/speech/SpeechRuntime.d.ts +1 -5
  496. package/dist/speech/SpeechRuntime.d.ts.map +1 -1
  497. package/dist/speech/SpeechRuntime.js +17 -9
  498. package/dist/speech/SpeechRuntime.js.map +1 -1
  499. package/dist/speech/providers/AssemblyAISTTProvider.d.ts +4 -4
  500. package/dist/speech/providers/AssemblyAISTTProvider.js +4 -4
  501. package/dist/speech/providers/AzureSpeechTTSProvider.d.ts +3 -3
  502. package/dist/speech/providers/AzureSpeechTTSProvider.js +2 -2
  503. package/dist/speech/providers/AzureSpeechTTSProvider.js.map +1 -1
  504. package/dist/speech/providers/BuiltInAdaptiveVadProvider.d.ts +9 -9
  505. package/dist/speech/providers/BuiltInAdaptiveVadProvider.d.ts.map +1 -1
  506. package/dist/speech/providers/BuiltInAdaptiveVadProvider.js +5 -5
  507. package/dist/speech/providers/BuiltInAdaptiveVadProvider.js.map +1 -1
  508. package/dist/speech/providers/DeepgramBatchSTTProvider.d.ts +2 -2
  509. package/dist/speech/providers/DeepgramBatchSTTProvider.js +2 -2
  510. package/dist/speech/providers/OpenAITextToSpeechProvider.d.ts +3 -3
  511. package/dist/speech/providers/OpenAITextToSpeechProvider.js +2 -2
  512. package/dist/speech/providers/OpenAIWhisperSpeechToTextProvider.d.ts +1 -1
  513. package/dist/speech/providers/OpenAIWhisperSpeechToTextProvider.d.ts.map +1 -1
  514. package/dist/speech/providers/OpenAIWhisperSpeechToTextProvider.js +1 -1
  515. package/dist/speech/providers/OpenAIWhisperSpeechToTextProvider.js.map +1 -1
  516. package/dist/voice/TelephonyStreamTransport.d.ts +6 -6
  517. package/dist/voice/TelephonyStreamTransport.d.ts.map +1 -1
  518. package/dist/voice/TelephonyStreamTransport.js +5 -5
  519. package/dist/voice/TelephonyStreamTransport.js.map +1 -1
  520. package/dist/voice-pipeline/AcousticEndpointDetector.d.ts +4 -4
  521. package/dist/voice-pipeline/AcousticEndpointDetector.d.ts.map +1 -1
  522. package/dist/voice-pipeline/AcousticEndpointDetector.js +4 -4
  523. package/dist/voice-pipeline/AcousticEndpointDetector.js.map +1 -1
  524. package/dist/voice-pipeline/HardCutBargeinHandler.d.ts +3 -3
  525. package/dist/voice-pipeline/HardCutBargeinHandler.js +3 -3
  526. package/dist/voice-pipeline/HeuristicEndpointDetector.d.ts +3 -3
  527. package/dist/voice-pipeline/HeuristicEndpointDetector.d.ts.map +1 -1
  528. package/dist/voice-pipeline/HeuristicEndpointDetector.js +3 -3
  529. package/dist/voice-pipeline/HeuristicEndpointDetector.js.map +1 -1
  530. package/dist/voice-pipeline/SoftFadeBargeinHandler.d.ts +5 -5
  531. package/dist/voice-pipeline/SoftFadeBargeinHandler.js +1 -1
  532. package/dist/voice-pipeline/VoiceInterruptError.d.ts +6 -6
  533. package/dist/voice-pipeline/VoiceInterruptError.d.ts.map +1 -1
  534. package/dist/voice-pipeline/VoiceInterruptError.js +4 -4
  535. package/dist/voice-pipeline/VoiceInterruptError.js.map +1 -1
  536. package/dist/voice-pipeline/VoicePipelineOrchestrator.d.ts +9 -9
  537. package/dist/voice-pipeline/VoicePipelineOrchestrator.d.ts.map +1 -1
  538. package/dist/voice-pipeline/VoicePipelineOrchestrator.js +8 -8
  539. package/dist/voice-pipeline/VoicePipelineOrchestrator.js.map +1 -1
  540. package/dist/voice-pipeline/WebRTCStreamTransport.d.ts +421 -0
  541. package/dist/voice-pipeline/WebRTCStreamTransport.d.ts.map +1 -0
  542. package/dist/voice-pipeline/WebRTCStreamTransport.js +573 -0
  543. package/dist/voice-pipeline/WebRTCStreamTransport.js.map +1 -0
  544. package/dist/voice-pipeline/WebSocketStreamTransport.d.ts +8 -8
  545. package/dist/voice-pipeline/WebSocketStreamTransport.js +5 -5
  546. package/dist/voice-pipeline/index.d.ts +1 -0
  547. package/dist/voice-pipeline/index.d.ts.map +1 -1
  548. package/dist/voice-pipeline/index.js +2 -0
  549. package/dist/voice-pipeline/index.js.map +1 -1
  550. package/dist/voice-pipeline/types.d.ts +43 -43
  551. package/dist/voice-pipeline/types.d.ts.map +1 -1
  552. package/package.json +19 -1
@@ -0,0 +1,411 @@
1
+ /**
2
+ * @module rag/multimodal/MultimodalIndexer
3
+ *
4
+ * Indexes non-text content (images, audio) into the RAG vector store by
5
+ * generating text representations and embedding them. This bridges the gap
6
+ * between multimodal content and the text-embedding pipeline, enabling
7
+ * cross-modal semantic search.
8
+ *
9
+ * ## Architecture
10
+ *
11
+ * ```
12
+ * Image ──► Vision LLM ──► Description ──► Embedding ──► Vector Store
13
+ * Audio ──► STT Provider ──► Transcript ──► Embedding ──► Vector Store
14
+ * Text ─────────────────────────────────► Embedding ──► Vector Store
15
+ * │
16
+ * Query ─────────────────────────────────► Embedding ──► Search ◄──┘
17
+ * ```
18
+ *
19
+ * Each indexed document carries a `modality` metadata field ('text', 'image',
20
+ * or 'audio') enabling modality-filtered search.
21
+ *
22
+ * ## Dependencies
23
+ *
24
+ * The indexer receives its dependencies via constructor injection:
25
+ * - {@link IEmbeddingManager} — generates vector embeddings from text
26
+ * - {@link IVectorStore} — stores and queries document embeddings
27
+ * - {@link IVisionProvider} — describes images as text (optional, required for images)
28
+ * - {@link ISpeechToTextProvider} — transcribes audio to text (optional, required for audio)
29
+ *
30
+ * This decoupled design allows swapping vision (GPT-4o, Gemini, LLaVA)
31
+ * or STT (Whisper, Deepgram, AssemblyAI) providers without touching the
32
+ * indexer logic.
33
+ *
34
+ * @see {@link ContentModality} for supported modalities.
35
+ * @see {@link MultimodalSearchResult} for search result shape.
36
+ * @see {@link RetrievalAugmentor} for the text-only RAG pipeline.
37
+ */
38
+ import { randomUUID } from 'node:crypto';
39
+ // ---------------------------------------------------------------------------
40
+ // Constants
41
+ // ---------------------------------------------------------------------------
42
+ /** Default collection name when none is specified. */
43
+ const DEFAULT_COLLECTION = 'multimodal';
44
+ /**
45
+ * Default prompt sent to the vision LLM when describing images.
46
+ * Designed to produce search-friendly descriptions that capture objects,
47
+ * actions, colors, text, and spatial relationships.
48
+ */
49
+ const DEFAULT_IMAGE_DESCRIPTION_PROMPT = 'Describe this image in detail for use in a search index. ' +
50
+ 'Include objects, actions, colors, text, spatial relationships, ' +
51
+ 'and any notable characteristics. Be thorough but concise.';
52
+ // ---------------------------------------------------------------------------
53
+ // Implementation
54
+ // ---------------------------------------------------------------------------
55
+ /**
56
+ * Indexes non-text content (images, audio) into the vector store by
57
+ * generating text descriptions and embeddings.
58
+ *
59
+ * ## Image indexing flow
60
+ * 1. If the image is a Buffer, convert to base64 data URL.
61
+ * 2. Send to the vision LLM to generate a text description.
62
+ * 3. Embed the description via the embedding manager.
63
+ * 4. Store in the vector store with `modality: 'image'` metadata.
64
+ *
65
+ * ## Audio indexing flow
66
+ * 1. Send the audio buffer to the STT provider for transcription.
67
+ * 2. Embed the transcript via the embedding manager.
68
+ * 3. Store in the vector store with `modality: 'audio'` metadata.
69
+ *
70
+ * ## Cross-modal search
71
+ * 1. Embed the text query via the embedding manager.
72
+ * 2. Query the vector store with optional modality filters.
73
+ * 3. Return results annotated with their source modality.
74
+ *
75
+ * @example
76
+ * ```typescript
77
+ * import { MultimodalIndexer } from '../../rag/multimodal/index.js';
78
+ *
79
+ * const indexer = new MultimodalIndexer({
80
+ * embeddingManager,
81
+ * vectorStore,
82
+ * visionProvider,
83
+ * sttProvider,
84
+ * });
85
+ *
86
+ * // Index an image
87
+ * const imgResult = await indexer.indexImage({
88
+ * image: fs.readFileSync('./photo.jpg'),
89
+ * metadata: { source: 'upload' },
90
+ * });
91
+ *
92
+ * // Index audio
93
+ * const audioResult = await indexer.indexAudio({
94
+ * audio: fs.readFileSync('./meeting.wav'),
95
+ * language: 'en',
96
+ * });
97
+ *
98
+ * // Search across all modalities
99
+ * const results = await indexer.search('cats on a beach');
100
+ * ```
101
+ */
102
+ export class MultimodalIndexer {
103
+ // -------------------------------------------------------------------------
104
+ // Constructor
105
+ // -------------------------------------------------------------------------
106
+ /**
107
+ * Create a new multimodal indexer.
108
+ *
109
+ * @param deps - Dependency injection container.
110
+ * @param deps.embeddingManager - Manager for generating text embeddings.
111
+ * @param deps.vectorStore - Vector store for document storage and search.
112
+ * @param deps.visionProvider - Optional vision LLM for image description.
113
+ * @param deps.visionPipeline - Optional full vision pipeline with OCR, handwriting,
114
+ * document understanding, CLIP embeddings, and cloud fallback. When provided,
115
+ * it is wrapped as an `IVisionProvider` via `PipelineVisionProvider`,
116
+ * overriding any `visionProvider` passed alongside it.
117
+ * @param deps.sttProvider - Optional STT provider for audio transcription.
118
+ * @param deps.config - Optional configuration overrides.
119
+ *
120
+ * @throws {Error} If embeddingManager or vectorStore is missing.
121
+ *
122
+ * @example
123
+ * ```typescript
124
+ * // With a simple vision LLM provider
125
+ * const indexer = new MultimodalIndexer({
126
+ * embeddingManager,
127
+ * vectorStore,
128
+ * visionProvider: myVisionLLM,
129
+ * sttProvider: myWhisperService,
130
+ * config: { defaultCollection: 'knowledge' },
131
+ * });
132
+ *
133
+ * // With the full vision pipeline (recommended)
134
+ * const indexer = new MultimodalIndexer({
135
+ * embeddingManager,
136
+ * vectorStore,
137
+ * visionPipeline: myVisionPipeline,
138
+ * });
139
+ * ```
140
+ */
141
+ constructor(deps) {
142
+ if (!deps.embeddingManager) {
143
+ throw new Error('MultimodalIndexer requires an IEmbeddingManager instance.');
144
+ }
145
+ if (!deps.vectorStore) {
146
+ throw new Error('MultimodalIndexer requires an IVectorStore instance.');
147
+ }
148
+ this._embeddingManager = deps.embeddingManager;
149
+ this._vectorStore = deps.vectorStore;
150
+ this._sttProvider = deps.sttProvider;
151
+ // If a full VisionPipeline is provided, wrap it as an IVisionProvider.
152
+ // This gives the indexer access to the progressive OCR + vision pipeline
153
+ // for image description, while maintaining backward compatibility with
154
+ // the simpler IVisionProvider interface.
155
+ if (deps.visionPipeline) {
156
+ // Lazy import to avoid circular dependency at module load time.
157
+ // PipelineVisionProvider is a thin adapter — safe to require synchronously.
158
+ const { PipelineVisionProvider, } = require('../../core/vision/providers/PipelineVisionProvider.js');
159
+ this._visionProvider = new PipelineVisionProvider(deps.visionPipeline);
160
+ }
161
+ else {
162
+ this._visionProvider = deps.visionProvider;
163
+ }
164
+ this._config = {
165
+ defaultCollection: deps.config?.defaultCollection ?? DEFAULT_COLLECTION,
166
+ imageDescriptionPrompt: deps.config?.imageDescriptionPrompt ?? DEFAULT_IMAGE_DESCRIPTION_PROMPT,
167
+ };
168
+ }
169
+ // -------------------------------------------------------------------------
170
+ // Image indexing
171
+ // -------------------------------------------------------------------------
172
+ /**
173
+ * Index an image by generating a text description via vision LLM,
174
+ * then embedding and storing the description.
175
+ *
176
+ * @param opts - Image data, metadata, and collection options.
177
+ * @returns The document ID and generated description.
178
+ *
179
+ * @throws {Error} If no vision provider is configured.
180
+ * @throws {Error} If the vision LLM fails to describe the image.
181
+ * @throws {Error} If embedding generation or vector store upsert fails.
182
+ *
183
+ * @example
184
+ * ```typescript
185
+ * const result = await indexer.indexImage({
186
+ * image: 'https://example.com/photo.jpg',
187
+ * metadata: { source: 'web-scrape', url: 'https://example.com' },
188
+ * });
189
+ * console.log(result.description); // "A golden retriever playing fetch..."
190
+ * ```
191
+ */
192
+ async indexImage(opts) {
193
+ if (!this._visionProvider) {
194
+ throw new Error('MultimodalIndexer: cannot index image — no vision provider configured. ' +
195
+ 'Pass a visionProvider in the constructor.');
196
+ }
197
+ // Convert Buffer to base64 data URL so the vision LLM can process it.
198
+ // URL strings are passed through unchanged.
199
+ let imageUrl;
200
+ if (Buffer.isBuffer(opts.image)) {
201
+ const base64 = opts.image.toString('base64');
202
+ // Default to PNG MIME type since we don't inspect the magic bytes.
203
+ // Most vision LLMs accept any common image format regardless of the
204
+ // declared MIME type.
205
+ imageUrl = `data:image/png;base64,${base64}`;
206
+ }
207
+ else {
208
+ imageUrl = opts.image;
209
+ }
210
+ // Step 1: Generate text description of the image
211
+ const description = await this._visionProvider.describeImage(imageUrl);
212
+ if (!description || description.trim().length === 0) {
213
+ throw new Error('MultimodalIndexer: vision provider returned empty description.');
214
+ }
215
+ // Step 2: Generate embedding from the description text
216
+ const collection = opts.collection ?? this._config.defaultCollection;
217
+ const docId = randomUUID();
218
+ const embeddingRequest = {
219
+ texts: [description],
220
+ };
221
+ const embeddingResponse = await this._embeddingManager.generateEmbeddings(embeddingRequest);
222
+ if (!embeddingResponse.embeddings ||
223
+ embeddingResponse.embeddings.length === 0 ||
224
+ embeddingResponse.embeddings[0].length === 0) {
225
+ throw new Error('MultimodalIndexer: embedding generation returned empty result for image description.');
226
+ }
227
+ // Step 3: Store in vector store with image modality metadata
228
+ const metadata = {
229
+ modality: 'image',
230
+ ...opts.metadata,
231
+ };
232
+ const document = {
233
+ id: docId,
234
+ embedding: embeddingResponse.embeddings[0],
235
+ textContent: description,
236
+ metadata,
237
+ };
238
+ await this._vectorStore.upsert(collection, [document]);
239
+ return {
240
+ id: docId,
241
+ description,
242
+ };
243
+ }
244
+ // -------------------------------------------------------------------------
245
+ // Audio indexing
246
+ // -------------------------------------------------------------------------
247
+ /**
248
+ * Index an audio file by transcribing via STT, then embedding and
249
+ * storing the transcript.
250
+ *
251
+ * @param opts - Audio data, metadata, collection, and language options.
252
+ * @returns The document ID and generated transcript.
253
+ *
254
+ * @throws {Error} If no STT provider is configured.
255
+ * @throws {Error} If the STT provider fails to transcribe.
256
+ * @throws {Error} If embedding generation or vector store upsert fails.
257
+ *
258
+ * @example
259
+ * ```typescript
260
+ * const result = await indexer.indexAudio({
261
+ * audio: fs.readFileSync('./podcast.mp3'),
262
+ * metadata: { source: 'podcast', episode: 42 },
263
+ * language: 'en',
264
+ * });
265
+ * console.log(result.transcript); // "Welcome to episode 42..."
266
+ * ```
267
+ */
268
+ async indexAudio(opts) {
269
+ if (!this._sttProvider) {
270
+ throw new Error('MultimodalIndexer: cannot index audio — no STT provider configured. ' +
271
+ 'Pass an sttProvider in the constructor.');
272
+ }
273
+ // Step 1: Transcribe audio to text
274
+ const transcript = await this._sttProvider.transcribe(opts.audio, opts.language);
275
+ if (!transcript || transcript.trim().length === 0) {
276
+ throw new Error('MultimodalIndexer: STT provider returned empty transcript.');
277
+ }
278
+ // Step 2: Generate embedding from the transcript text
279
+ const collection = opts.collection ?? this._config.defaultCollection;
280
+ const docId = randomUUID();
281
+ const embeddingRequest = {
282
+ texts: [transcript],
283
+ };
284
+ const embeddingResponse = await this._embeddingManager.generateEmbeddings(embeddingRequest);
285
+ if (!embeddingResponse.embeddings ||
286
+ embeddingResponse.embeddings.length === 0 ||
287
+ embeddingResponse.embeddings[0].length === 0) {
288
+ throw new Error('MultimodalIndexer: embedding generation returned empty result for audio transcript.');
289
+ }
290
+ // Step 3: Store in vector store with audio modality metadata
291
+ const metadata = {
292
+ modality: 'audio',
293
+ ...opts.metadata,
294
+ };
295
+ if (opts.language) {
296
+ metadata.language = opts.language;
297
+ }
298
+ const document = {
299
+ id: docId,
300
+ embedding: embeddingResponse.embeddings[0],
301
+ textContent: transcript,
302
+ metadata,
303
+ };
304
+ await this._vectorStore.upsert(collection, [document]);
305
+ return {
306
+ id: docId,
307
+ transcript,
308
+ };
309
+ }
310
+ // -------------------------------------------------------------------------
311
+ // Cross-modal search
312
+ // -------------------------------------------------------------------------
313
+ /**
314
+ * Search across all modalities (text + image descriptions + audio transcripts).
315
+ *
316
+ * The query text is embedded, then the vector store is searched with
317
+ * optional modality filtering. Results are returned with their source
318
+ * modality indicated.
319
+ *
320
+ * @param query - Natural language search query.
321
+ * @param opts - Optional search parameters (topK, modalities, collection).
322
+ * @returns Array of search results sorted by relevance score (descending).
323
+ *
324
+ * @throws {Error} If embedding generation fails.
325
+ *
326
+ * @example
327
+ * ```typescript
328
+ * // Search only image descriptions
329
+ * const imageResults = await indexer.search('cats playing', {
330
+ * modalities: ['image'],
331
+ * topK: 10,
332
+ * });
333
+ *
334
+ * // Search across all modalities
335
+ * const allResults = await indexer.search('machine learning tutorial');
336
+ * ```
337
+ */
338
+ async search(query, opts) {
339
+ const topK = opts?.topK ?? 5;
340
+ const collection = opts?.collection ?? this._config.defaultCollection;
341
+ // Step 1: Embed the query text
342
+ const embeddingRequest = {
343
+ texts: [query],
344
+ };
345
+ const embeddingResponse = await this._embeddingManager.generateEmbeddings(embeddingRequest);
346
+ if (!embeddingResponse.embeddings ||
347
+ embeddingResponse.embeddings.length === 0 ||
348
+ embeddingResponse.embeddings[0].length === 0) {
349
+ throw new Error('MultimodalIndexer: embedding generation returned empty result for search query.');
350
+ }
351
+ const queryEmbedding = embeddingResponse.embeddings[0];
352
+ // Step 2: Build metadata filter for modality filtering.
353
+ // When specific modalities are requested, we filter on the modality
354
+ // metadata field using $in for multi-modality or $eq for single.
355
+ const filter = opts?.modalities && opts.modalities.length > 0
356
+ ? opts.modalities.length === 1
357
+ ? { modality: opts.modalities[0] }
358
+ : { modality: { $in: opts.modalities } }
359
+ : undefined;
360
+ // Step 3: Query the vector store
361
+ const queryResult = await this._vectorStore.query(collection, queryEmbedding, {
362
+ topK,
363
+ filter: filter,
364
+ includeMetadata: true,
365
+ includeTextContent: true,
366
+ });
367
+ // Step 4: Map vector store results to multimodal search results
368
+ return queryResult.documents.map((doc) => ({
369
+ id: doc.id,
370
+ content: doc.textContent ?? '',
371
+ score: doc.similarityScore,
372
+ modality: doc.metadata?.modality ?? 'text',
373
+ metadata: doc.metadata,
374
+ }));
375
+ }
376
+ // -------------------------------------------------------------------------
377
+ // Memory bridge factory
378
+ // -------------------------------------------------------------------------
379
+ /**
380
+ * Create a `MultimodalMemoryBridge` using this indexer's providers.
381
+ *
382
+ * The bridge extends this indexer's RAG capabilities with cognitive memory
383
+ * integration, enabling multimodal content to be stored in both the vector
384
+ * store (for search) and long-term memory (for recall during conversation).
385
+ *
386
+ * @param memoryManager - Optional cognitive memory manager for memory trace creation.
387
+ * When omitted, the bridge still indexes into RAG but creates no memory traces.
388
+ * @param options - Bridge configuration overrides (mood, chunk sizes, etc.)
389
+ * @returns A configured multimodal memory bridge instance.
390
+ *
391
+ * @example
392
+ * ```typescript
393
+ * const bridge = indexer.createMemoryBridge(memoryManager, {
394
+ * enableMemory: true,
395
+ * defaultChunkSize: 800,
396
+ * });
397
+ *
398
+ * await bridge.ingestImage(imageBuffer, { source: 'user-upload' });
399
+ * ```
400
+ *
401
+ * See `MultimodalMemoryBridge` for full documentation.
402
+ */
403
+ createMemoryBridge(memoryManager, options) {
404
+ // Lazy import to avoid circular dependency at module load time.
405
+ // The bridge depends on the indexer, and this factory lives on the indexer,
406
+ // so we use a dynamic require pattern with the already-resolved class.
407
+ const { MultimodalMemoryBridge } = require('./MultimodalMemoryBridge.js');
408
+ return new MultimodalMemoryBridge(this, memoryManager, options);
409
+ }
410
+ }
411
+ //# sourceMappingURL=MultimodalIndexer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MultimodalIndexer.js","sourceRoot":"","sources":["../../../src/rag/multimodal/MultimodalIndexer.ts"],"names":[],"mappings":"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"}