@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,70 @@
1
+ /**
2
+ * @fileoverview KeywordFallback — simple keyword-matching search used as
3
+ * the degraded-mode fallback when the embedding API is unavailable.
4
+ * @module @framers/agentos/query-router/KeywordFallback
5
+ *
6
+ * When the vector store or embedding service is down, the QueryRouter
7
+ * activates this fallback to provide best-effort retrieval via plain
8
+ * keyword matching. It is intentionally simple: split query into words,
9
+ * filter stop words, score each corpus chunk by keyword hits (heading
10
+ * matches weighted higher than content matches), and return the top-K
11
+ * results sorted by score.
12
+ */
13
+ import type { CorpusChunk, RetrievedChunk } from './types.js';
14
+ /**
15
+ * Simple keyword-matching search over a corpus of chunks.
16
+ *
17
+ * Used as a degraded-mode fallback when the embedding API is unavailable.
18
+ * Splits the query into keywords, filters out stop words and short tokens,
19
+ * then scores each chunk by the number of keyword hits (heading matches
20
+ * receive a higher weight than content matches).
21
+ *
22
+ * @example
23
+ * ```typescript
24
+ * const fallback = new KeywordFallback(corpusChunks);
25
+ * const results = fallback.search('authentication tokens', 5);
26
+ * // results: RetrievedChunk[] sorted by relevance, at most 5 entries
27
+ * ```
28
+ */
29
+ export declare class KeywordFallback {
30
+ /** The corpus chunks to search over. */
31
+ private readonly chunks;
32
+ /**
33
+ * Creates a new KeywordFallback instance.
34
+ * @param chunks - The corpus chunks to search over.
35
+ */
36
+ constructor(chunks: CorpusChunk[]);
37
+ /**
38
+ * Searches the corpus for chunks matching the given query keywords.
39
+ *
40
+ * Scoring algorithm:
41
+ * - Each keyword found in the chunk heading awards {@link HEADING_MATCH_SCORE} points.
42
+ * - Each keyword found in the chunk content awards {@link CONTENT_MATCH_SCORE} point.
43
+ * - Chunks with zero total score are excluded.
44
+ * - Scores are normalized to the 0-1 range (relative to the maximum observed score).
45
+ * - Results are sorted by score descending and sliced to topK.
46
+ *
47
+ * @param query - The user query string to match.
48
+ * @param topK - Maximum number of results to return. Defaults to 5.
49
+ * @returns Array of RetrievedChunk sorted by relevance, at most topK entries.
50
+ */
51
+ search(query: string, topK?: number): RetrievedChunk[];
52
+ /**
53
+ * Extracts meaningful keywords from a query string.
54
+ * Splits on whitespace, lowercases, and filters out stop words
55
+ * and tokens shorter than 3 characters.
56
+ *
57
+ * @param query - The raw query string.
58
+ * @returns Array of lowercase keyword strings.
59
+ */
60
+ private extractKeywords;
61
+ /**
62
+ * Scores a single chunk against the given keywords.
63
+ *
64
+ * @param chunk - The corpus chunk to score.
65
+ * @param keywords - The extracted query keywords (lowercase).
66
+ * @returns The raw score (sum of heading and content matches).
67
+ */
68
+ private scoreChunk;
69
+ }
70
+ //# sourceMappingURL=KeywordFallback.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KeywordFallback.d.ts","sourceRoot":"","sources":["../../src/query-router/KeywordFallback.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAsB9D;;;;;;;;;;;;;;GAcG;AACH,qBAAa,eAAe;IAC1B,wCAAwC;IACxC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;IAEvC;;;OAGG;gBACS,MAAM,EAAE,WAAW,EAAE;IAIjC;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE,MAAU,GAAG,cAAc,EAAE;IA2CzD;;;;;;;OAOG;IACH,OAAO,CAAC,eAAe;IAOvB;;;;;;OAMG;IACH,OAAO,CAAC,UAAU;CAgBnB"}
@@ -0,0 +1,132 @@
1
+ /**
2
+ * @fileoverview KeywordFallback — simple keyword-matching search used as
3
+ * the degraded-mode fallback when the embedding API is unavailable.
4
+ * @module @framers/agentos/query-router/KeywordFallback
5
+ *
6
+ * When the vector store or embedding service is down, the QueryRouter
7
+ * activates this fallback to provide best-effort retrieval via plain
8
+ * keyword matching. It is intentionally simple: split query into words,
9
+ * filter stop words, score each corpus chunk by keyword hits (heading
10
+ * matches weighted higher than content matches), and return the top-K
11
+ * results sorted by score.
12
+ */
13
+ /**
14
+ * Common English stop words that add noise to keyword matching.
15
+ * Words shorter than 3 characters are also filtered out automatically.
16
+ */
17
+ const STOP_WORDS = new Set([
18
+ 'the', 'and', 'for', 'are', 'but', 'not', 'you', 'all', 'can', 'has',
19
+ 'her', 'was', 'one', 'our', 'out', 'had', 'hot', 'how', 'its', 'let',
20
+ 'may', 'who', 'did', 'get', 'got', 'him', 'his', 'she', 'too', 'use',
21
+ 'that', 'with', 'have', 'this', 'will', 'your', 'from', 'they', 'been',
22
+ 'than', 'them', 'then', 'what', 'when', 'were', 'which', 'their', 'there',
23
+ 'these', 'those', 'would', 'about', 'could', 'other', 'into', 'more',
24
+ 'some', 'such', 'only', 'also', 'just', 'does', 'each', 'very',
25
+ ]);
26
+ /** Points awarded for a keyword match in the chunk heading. */
27
+ const HEADING_MATCH_SCORE = 4;
28
+ /** Points awarded for a keyword match in the chunk content. */
29
+ const CONTENT_MATCH_SCORE = 1;
30
+ /**
31
+ * Simple keyword-matching search over a corpus of chunks.
32
+ *
33
+ * Used as a degraded-mode fallback when the embedding API is unavailable.
34
+ * Splits the query into keywords, filters out stop words and short tokens,
35
+ * then scores each chunk by the number of keyword hits (heading matches
36
+ * receive a higher weight than content matches).
37
+ *
38
+ * @example
39
+ * ```typescript
40
+ * const fallback = new KeywordFallback(corpusChunks);
41
+ * const results = fallback.search('authentication tokens', 5);
42
+ * // results: RetrievedChunk[] sorted by relevance, at most 5 entries
43
+ * ```
44
+ */
45
+ export class KeywordFallback {
46
+ /**
47
+ * Creates a new KeywordFallback instance.
48
+ * @param chunks - The corpus chunks to search over.
49
+ */
50
+ constructor(chunks) {
51
+ this.chunks = chunks;
52
+ }
53
+ /**
54
+ * Searches the corpus for chunks matching the given query keywords.
55
+ *
56
+ * Scoring algorithm:
57
+ * - Each keyword found in the chunk heading awards {@link HEADING_MATCH_SCORE} points.
58
+ * - Each keyword found in the chunk content awards {@link CONTENT_MATCH_SCORE} point.
59
+ * - Chunks with zero total score are excluded.
60
+ * - Scores are normalized to the 0-1 range (relative to the maximum observed score).
61
+ * - Results are sorted by score descending and sliced to topK.
62
+ *
63
+ * @param query - The user query string to match.
64
+ * @param topK - Maximum number of results to return. Defaults to 5.
65
+ * @returns Array of RetrievedChunk sorted by relevance, at most topK entries.
66
+ */
67
+ search(query, topK = 5) {
68
+ const keywords = this.extractKeywords(query);
69
+ if (keywords.length === 0) {
70
+ return [];
71
+ }
72
+ const scored = [];
73
+ for (const chunk of this.chunks) {
74
+ const rawScore = this.scoreChunk(chunk, keywords);
75
+ if (rawScore > 0) {
76
+ scored.push({ chunk, rawScore });
77
+ }
78
+ }
79
+ if (scored.length === 0) {
80
+ return [];
81
+ }
82
+ // Sort by raw score descending
83
+ scored.sort((a, b) => b.rawScore - a.rawScore);
84
+ // Find the maximum score for normalization
85
+ const maxScore = scored[0].rawScore;
86
+ // Slice to topK and map to RetrievedChunk
87
+ return scored.slice(0, topK).map(({ chunk, rawScore }) => ({
88
+ id: chunk.id,
89
+ content: chunk.content,
90
+ heading: chunk.heading,
91
+ sourcePath: chunk.sourcePath,
92
+ relevanceScore: maxScore > 0 ? rawScore / maxScore : 0,
93
+ matchType: 'vector',
94
+ }));
95
+ }
96
+ /**
97
+ * Extracts meaningful keywords from a query string.
98
+ * Splits on whitespace, lowercases, and filters out stop words
99
+ * and tokens shorter than 3 characters.
100
+ *
101
+ * @param query - The raw query string.
102
+ * @returns Array of lowercase keyword strings.
103
+ */
104
+ extractKeywords(query) {
105
+ return query
106
+ .toLowerCase()
107
+ .split(/\s+/)
108
+ .filter((word) => word.length >= 3 && !STOP_WORDS.has(word));
109
+ }
110
+ /**
111
+ * Scores a single chunk against the given keywords.
112
+ *
113
+ * @param chunk - The corpus chunk to score.
114
+ * @param keywords - The extracted query keywords (lowercase).
115
+ * @returns The raw score (sum of heading and content matches).
116
+ */
117
+ scoreChunk(chunk, keywords) {
118
+ const headingLower = chunk.heading.toLowerCase();
119
+ const contentLower = chunk.content.toLowerCase();
120
+ let score = 0;
121
+ for (const keyword of keywords) {
122
+ if (headingLower.includes(keyword)) {
123
+ score += HEADING_MATCH_SCORE;
124
+ }
125
+ if (contentLower.includes(keyword)) {
126
+ score += CONTENT_MATCH_SCORE;
127
+ }
128
+ }
129
+ return score;
130
+ }
131
+ }
132
+ //# sourceMappingURL=KeywordFallback.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KeywordFallback.js","sourceRoot":"","sources":["../../src/query-router/KeywordFallback.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,140 @@
1
+ /**
2
+ * @fileoverview QueryClassifier — chain-of-thought LLM classifier that
3
+ * determines the retrieval depth tier (T0-T3) for each incoming query.
4
+ *
5
+ * The classifier is the first stage of the QueryRouter pipeline. It examines
6
+ * the user's query (and optional conversation history) to decide how much
7
+ * retrieval effort is needed:
8
+ *
9
+ * - **T0 (Trivial)**: No retrieval — answer from internal knowledge or context.
10
+ * - **T1 (Simple lookup)**: Single-source vector search.
11
+ * - **T2 (Multi-source)**: Cross-document retrieval + optional graph traversal.
12
+ * - **T3 (Research)**: Deep iterative research across the full corpus.
13
+ *
14
+ * The classifier calls an LLM with a chain-of-thought system prompt, parses
15
+ * the structured JSON response, and applies confidence-based tier bumping
16
+ * and maxTier capping before returning a {@link ClassificationResult}.
17
+ *
18
+ * On any failure (LLM error, JSON parse error), a safe T1 fallback is returned
19
+ * to ensure the pipeline never completely stalls.
20
+ *
21
+ * @module @framers/agentos/query-router/QueryClassifier
22
+ */
23
+ import type { ClassificationResult, ConversationMessage, QueryTier } from './types.js';
24
+ /**
25
+ * Configuration for the {@link QueryClassifier}.
26
+ *
27
+ * Controls model selection, confidence thresholds, tier limits, and the
28
+ * knowledge context (topic list, tool list) injected into the system prompt.
29
+ */
30
+ export interface QueryClassifierConfig {
31
+ /** LLM model identifier (e.g. "gpt-4o-mini"). */
32
+ model: string;
33
+ /** LLM provider name (e.g. "openai", "anthropic"). */
34
+ provider: string;
35
+ /**
36
+ * Minimum confidence threshold for accepting a classification.
37
+ * If the LLM's confidence falls below this, the tier is bumped up by 1
38
+ * to request broader retrieval as a safety measure.
39
+ */
40
+ confidenceThreshold: number;
41
+ /** Maximum tier the classifier is allowed to assign. */
42
+ maxTier: QueryTier;
43
+ /**
44
+ * Newline-delimited list of known topics in the corpus.
45
+ * Injected into the system prompt via `{{TOPIC_LIST}}`.
46
+ */
47
+ topicList: string;
48
+ /**
49
+ * Comma-delimited list of available tools.
50
+ * Injected into the system prompt via `{{TOOL_LIST}}`.
51
+ */
52
+ toolList: string;
53
+ /** Optional API key override (otherwise resolved from environment). */
54
+ apiKey?: string;
55
+ /** Optional base URL override for the LLM provider. */
56
+ baseUrl?: string;
57
+ }
58
+ /**
59
+ * Chain-of-thought LLM classifier that determines retrieval depth (T0-T3)
60
+ * for each incoming query.
61
+ *
62
+ * @example
63
+ * ```ts
64
+ * const classifier = new QueryClassifier({
65
+ * model: 'gpt-4o-mini',
66
+ * provider: 'openai',
67
+ * confidenceThreshold: 0.7,
68
+ * maxTier: 3,
69
+ * topicList: 'Auth (docs/auth.md)\nDB (docs/db.md)',
70
+ * toolList: 'search_code, read_file',
71
+ * });
72
+ *
73
+ * const result = await classifier.classify('How does auth work?');
74
+ * console.log(result.tier); // 1
75
+ * ```
76
+ */
77
+ export declare class QueryClassifier {
78
+ /** Immutable classifier configuration. */
79
+ private readonly config;
80
+ /**
81
+ * Creates a new QueryClassifier instance.
82
+ * @param config - Classifier configuration with model, provider, and thresholds.
83
+ */
84
+ constructor(config: QueryClassifierConfig);
85
+ /**
86
+ * Classifies a user query into a retrieval tier.
87
+ *
88
+ * Steps:
89
+ * 1. Builds a chain-of-thought system prompt with tier definitions, topic list,
90
+ * tool list, and optional conversation context.
91
+ * 2. Calls the LLM via `generateText`.
92
+ * 3. Parses the JSON response (handling optional markdown code fences).
93
+ * 4. Applies confidence-based tier bumping: if confidence < threshold, tier += 1.
94
+ * 5. Caps the tier at the configured `maxTier`.
95
+ * 6. On ANY error, returns a safe T1 fallback with confidence 0.
96
+ *
97
+ * @param query - The user's query text to classify.
98
+ * @param conversationHistory - Optional recent conversation messages for context.
99
+ * @returns A {@link ClassificationResult} with tier, confidence, reasoning, and metadata.
100
+ */
101
+ classify(query: string, conversationHistory?: ConversationMessage[]): Promise<ClassificationResult>;
102
+ /**
103
+ * Builds the system prompt by replacing template placeholders with actual
104
+ * topic list, tool list, and conversation context.
105
+ *
106
+ * @param conversationHistory - Optional conversation messages to include as context.
107
+ * @returns The fully rendered system prompt string.
108
+ */
109
+ private buildSystemPrompt;
110
+ /**
111
+ * Parses the LLM response text into a {@link ClassificationResult}.
112
+ *
113
+ * Handles two response formats:
114
+ * - Raw JSON object
115
+ * - JSON wrapped in markdown code fences (```json ... ```)
116
+ *
117
+ * @param text - Raw text from the LLM response.
118
+ * @returns A parsed {@link ClassificationResult}.
119
+ * @throws If the response cannot be parsed as valid JSON.
120
+ */
121
+ private parseResponse;
122
+ /**
123
+ * Applies post-classification constraints:
124
+ * 1. If confidence < threshold, bump tier by 1 (request broader retrieval).
125
+ * 2. Cap tier at the configured maxTier.
126
+ *
127
+ * @param result - The raw classification result from the LLM.
128
+ * @returns The constrained classification result.
129
+ */
130
+ private applyConstraints;
131
+ /**
132
+ * Returns a safe T1 fallback result when classification fails for any reason.
133
+ * T1 ensures at least a basic vector search is performed, which is a
134
+ * reasonable default when the classifier cannot determine the right tier.
135
+ *
136
+ * @returns A T1 {@link ClassificationResult} with confidence 0.
137
+ */
138
+ private fallbackResult;
139
+ }
140
+ //# sourceMappingURL=QueryClassifier.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QueryClassifier.d.ts","sourceRoot":"","sources":["../../src/query-router/QueryClassifier.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAGH,OAAO,KAAK,EACV,oBAAoB,EACpB,mBAAmB,EACnB,SAAS,EACV,MAAM,YAAY,CAAC;AAMpB;;;;;GAKG;AACH,MAAM,WAAW,qBAAqB;IACpC,iDAAiD;IACjD,KAAK,EAAE,MAAM,CAAC;IAEd,sDAAsD;IACtD,QAAQ,EAAE,MAAM,CAAC;IAEjB;;;;OAIG;IACH,mBAAmB,EAAE,MAAM,CAAC;IAE5B,wDAAwD;IACxD,OAAO,EAAE,SAAS,CAAC;IAEnB;;;OAGG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB,uEAAuE;IACvE,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,uDAAuD;IACvD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAuED;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,eAAe;IAC1B,0CAA0C;IAC1C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAwB;IAE/C;;;OAGG;gBACS,MAAM,EAAE,qBAAqB;IAIzC;;;;;;;;;;;;;;;OAeG;IACG,QAAQ,CACZ,KAAK,EAAE,MAAM,EACb,mBAAmB,CAAC,EAAE,mBAAmB,EAAE,GAC1C,OAAO,CAAC,oBAAoB,CAAC;IAyBhC;;;;;;OAMG;IACH,OAAO,CAAC,iBAAiB;IAezB;;;;;;;;;;OAUG;IACH,OAAO,CAAC,aAAa;IAmBrB;;;;;;;OAOG;IACH,OAAO,CAAC,gBAAgB;IAiBxB;;;;;;OAMG;IACH,OAAO,CAAC,cAAc;CAUvB"}
@@ -0,0 +1,223 @@
1
+ /**
2
+ * @fileoverview QueryClassifier — chain-of-thought LLM classifier that
3
+ * determines the retrieval depth tier (T0-T3) for each incoming query.
4
+ *
5
+ * The classifier is the first stage of the QueryRouter pipeline. It examines
6
+ * the user's query (and optional conversation history) to decide how much
7
+ * retrieval effort is needed:
8
+ *
9
+ * - **T0 (Trivial)**: No retrieval — answer from internal knowledge or context.
10
+ * - **T1 (Simple lookup)**: Single-source vector search.
11
+ * - **T2 (Multi-source)**: Cross-document retrieval + optional graph traversal.
12
+ * - **T3 (Research)**: Deep iterative research across the full corpus.
13
+ *
14
+ * The classifier calls an LLM with a chain-of-thought system prompt, parses
15
+ * the structured JSON response, and applies confidence-based tier bumping
16
+ * and maxTier capping before returning a {@link ClassificationResult}.
17
+ *
18
+ * On any failure (LLM error, JSON parse error), a safe T1 fallback is returned
19
+ * to ensure the pipeline never completely stalls.
20
+ *
21
+ * @module @framers/agentos/query-router/QueryClassifier
22
+ */
23
+ import { generateText } from '../api/generateText.js';
24
+ // ============================================================================
25
+ // System Prompt Template
26
+ // ============================================================================
27
+ /**
28
+ * Chain-of-thought system prompt template for the query classifier.
29
+ *
30
+ * Placeholders:
31
+ * - `{{TOPIC_LIST}}` — known corpus topics
32
+ * - `{{TOOL_LIST}}` — available tools
33
+ * - `{{CONVERSATION_CONTEXT}}` — recent conversation history (may be empty)
34
+ */
35
+ const SYSTEM_PROMPT_TEMPLATE = `You are a query complexity classifier. Your job is to analyze the user's query and determine how much retrieval effort is needed to answer it accurately.
36
+
37
+ ## Tier Definitions
38
+
39
+ - **T0 (Trivial)**: Greetings, small talk, or questions answerable from general knowledge or the conversation context alone. No retrieval needed.
40
+ - **T1 (Simple lookup)**: Questions about a specific fact, config value, or code snippet. A single vector search should suffice.
41
+ - **T2 (Multi-source)**: Questions that span multiple documents or require combining information from different parts of the codebase. May need graph traversal.
42
+ - **T3 (Research)**: Deep investigation questions that require iterative multi-pass retrieval, synthesis, and comparison across the entire corpus.
43
+
44
+ ## Known Topics
45
+ {{TOPIC_LIST}}
46
+
47
+ ## Available Tools
48
+ {{TOOL_LIST}}
49
+
50
+ ## Conversation Context
51
+ {{CONVERSATION_CONTEXT}}
52
+
53
+ ## Instructions
54
+
55
+ Think step-by-step about the query:
56
+ 1. What is the user actually asking?
57
+ 2. Can this be answered from general knowledge or conversation context alone?
58
+ 3. How many sources/documents would be needed?
59
+ 4. Are any tools required?
60
+
61
+ Respond with ONLY a JSON object (no markdown fences, no extra text):
62
+ {
63
+ "thinking": "<your step-by-step reasoning>",
64
+ "tier": <0|1|2|3>,
65
+ "confidence": <0.0 to 1.0>,
66
+ "internal_knowledge_sufficient": <true|false>,
67
+ "suggested_sources": [<"vector"|"graph"|"research">],
68
+ "tools_needed": [<tool names or empty>]
69
+ }`;
70
+ // ============================================================================
71
+ // QueryClassifier
72
+ // ============================================================================
73
+ /**
74
+ * Chain-of-thought LLM classifier that determines retrieval depth (T0-T3)
75
+ * for each incoming query.
76
+ *
77
+ * @example
78
+ * ```ts
79
+ * const classifier = new QueryClassifier({
80
+ * model: 'gpt-4o-mini',
81
+ * provider: 'openai',
82
+ * confidenceThreshold: 0.7,
83
+ * maxTier: 3,
84
+ * topicList: 'Auth (docs/auth.md)\nDB (docs/db.md)',
85
+ * toolList: 'search_code, read_file',
86
+ * });
87
+ *
88
+ * const result = await classifier.classify('How does auth work?');
89
+ * console.log(result.tier); // 1
90
+ * ```
91
+ */
92
+ export class QueryClassifier {
93
+ /**
94
+ * Creates a new QueryClassifier instance.
95
+ * @param config - Classifier configuration with model, provider, and thresholds.
96
+ */
97
+ constructor(config) {
98
+ this.config = config;
99
+ }
100
+ /**
101
+ * Classifies a user query into a retrieval tier.
102
+ *
103
+ * Steps:
104
+ * 1. Builds a chain-of-thought system prompt with tier definitions, topic list,
105
+ * tool list, and optional conversation context.
106
+ * 2. Calls the LLM via `generateText`.
107
+ * 3. Parses the JSON response (handling optional markdown code fences).
108
+ * 4. Applies confidence-based tier bumping: if confidence < threshold, tier += 1.
109
+ * 5. Caps the tier at the configured `maxTier`.
110
+ * 6. On ANY error, returns a safe T1 fallback with confidence 0.
111
+ *
112
+ * @param query - The user's query text to classify.
113
+ * @param conversationHistory - Optional recent conversation messages for context.
114
+ * @returns A {@link ClassificationResult} with tier, confidence, reasoning, and metadata.
115
+ */
116
+ async classify(query, conversationHistory) {
117
+ try {
118
+ const systemPrompt = this.buildSystemPrompt(conversationHistory);
119
+ const response = await generateText({
120
+ provider: this.config.provider,
121
+ model: this.config.model,
122
+ system: systemPrompt,
123
+ prompt: query,
124
+ temperature: 0.1,
125
+ apiKey: this.config.apiKey,
126
+ baseUrl: this.config.baseUrl,
127
+ });
128
+ const parsed = this.parseResponse(response.text);
129
+ return this.applyConstraints(parsed);
130
+ }
131
+ catch {
132
+ return this.fallbackResult();
133
+ }
134
+ }
135
+ // --------------------------------------------------------------------------
136
+ // Private helpers
137
+ // --------------------------------------------------------------------------
138
+ /**
139
+ * Builds the system prompt by replacing template placeholders with actual
140
+ * topic list, tool list, and conversation context.
141
+ *
142
+ * @param conversationHistory - Optional conversation messages to include as context.
143
+ * @returns The fully rendered system prompt string.
144
+ */
145
+ buildSystemPrompt(conversationHistory) {
146
+ let conversationContext = 'No prior conversation.';
147
+ if (conversationHistory && conversationHistory.length > 0) {
148
+ conversationContext = conversationHistory
149
+ .map((msg) => `${msg.role}: ${msg.content}`)
150
+ .join('\n');
151
+ }
152
+ return SYSTEM_PROMPT_TEMPLATE
153
+ .replace('{{TOPIC_LIST}}', this.config.topicList)
154
+ .replace('{{TOOL_LIST}}', this.config.toolList)
155
+ .replace('{{CONVERSATION_CONTEXT}}', conversationContext);
156
+ }
157
+ /**
158
+ * Parses the LLM response text into a {@link ClassificationResult}.
159
+ *
160
+ * Handles two response formats:
161
+ * - Raw JSON object
162
+ * - JSON wrapped in markdown code fences (```json ... ```)
163
+ *
164
+ * @param text - Raw text from the LLM response.
165
+ * @returns A parsed {@link ClassificationResult}.
166
+ * @throws If the response cannot be parsed as valid JSON.
167
+ */
168
+ parseResponse(text) {
169
+ // Extract JSON from the response — handle optional markdown code fences
170
+ const jsonMatch = text.match(/\{[\s\S]*\}/);
171
+ if (!jsonMatch) {
172
+ throw new Error(`Failed to extract JSON from classifier response: ${text.slice(0, 200)}`);
173
+ }
174
+ const raw = JSON.parse(jsonMatch[0]);
175
+ return {
176
+ tier: raw.tier,
177
+ confidence: raw.confidence,
178
+ reasoning: raw.thinking,
179
+ internalKnowledgeSufficient: raw.internal_knowledge_sufficient,
180
+ suggestedSources: raw.suggested_sources,
181
+ toolsNeeded: raw.tools_needed,
182
+ };
183
+ }
184
+ /**
185
+ * Applies post-classification constraints:
186
+ * 1. If confidence < threshold, bump tier by 1 (request broader retrieval).
187
+ * 2. Cap tier at the configured maxTier.
188
+ *
189
+ * @param result - The raw classification result from the LLM.
190
+ * @returns The constrained classification result.
191
+ */
192
+ applyConstraints(result) {
193
+ let tier = result.tier;
194
+ // Bump tier when confidence is below the threshold
195
+ if (result.confidence < this.config.confidenceThreshold) {
196
+ tier = Math.min(tier + 1, 3);
197
+ }
198
+ // Cap at maxTier
199
+ tier = Math.min(tier, this.config.maxTier);
200
+ return {
201
+ ...result,
202
+ tier,
203
+ };
204
+ }
205
+ /**
206
+ * Returns a safe T1 fallback result when classification fails for any reason.
207
+ * T1 ensures at least a basic vector search is performed, which is a
208
+ * reasonable default when the classifier cannot determine the right tier.
209
+ *
210
+ * @returns A T1 {@link ClassificationResult} with confidence 0.
211
+ */
212
+ fallbackResult() {
213
+ return {
214
+ tier: 1,
215
+ confidence: 0,
216
+ reasoning: 'Classification failed; falling back to T1 for safety.',
217
+ internalKnowledgeSufficient: false,
218
+ suggestedSources: ['vector'],
219
+ toolsNeeded: [],
220
+ };
221
+ }
222
+ }
223
+ //# sourceMappingURL=QueryClassifier.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QueryClassifier.js","sourceRoot":"","sources":["../../src/query-router/QueryClassifier.ts"],"names":[],"mappings":"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"}