@librechat/agents 3.4.7 → 3.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1026) hide show
  1. package/dist/cjs/agents/AgentContext.cjs +0 -356
  2. package/dist/cjs/agents/AgentContext.cjs.map +1 -1
  3. package/dist/cjs/agents/projection.cjs +0 -9
  4. package/dist/cjs/agents/projection.cjs.map +1 -1
  5. package/dist/cjs/common/constants.cjs +0 -26
  6. package/dist/cjs/common/constants.cjs.map +1 -1
  7. package/dist/cjs/common/enum.cjs +0 -85
  8. package/dist/cjs/common/enum.cjs.map +1 -1
  9. package/dist/cjs/events.cjs +0 -14
  10. package/dist/cjs/events.cjs.map +1 -1
  11. package/dist/cjs/graphs/Graph.cjs +1 -909
  12. package/dist/cjs/graphs/Graph.cjs.map +1 -1
  13. package/dist/cjs/graphs/MultiAgentGraph.cjs +7 -272
  14. package/dist/cjs/graphs/MultiAgentGraph.cjs.map +1 -1
  15. package/dist/cjs/graphs/applyGraphRuntimeConfig.cjs.map +1 -1
  16. package/dist/cjs/graphs/createGraph.cjs.map +1 -1
  17. package/dist/cjs/hitl/askUserQuestion.cjs +0 -53
  18. package/dist/cjs/hitl/askUserQuestion.cjs.map +1 -1
  19. package/dist/cjs/hitl/askUserQuestions.cjs +0 -20
  20. package/dist/cjs/hitl/askUserQuestions.cjs.map +1 -1
  21. package/dist/cjs/hitl/askUserQuestionsInterrupt.cjs +0 -6
  22. package/dist/cjs/hitl/askUserQuestionsInterrupt.cjs.map +1 -1
  23. package/dist/cjs/hooks/HookRegistry.cjs +0 -127
  24. package/dist/cjs/hooks/HookRegistry.cjs.map +1 -1
  25. package/dist/cjs/hooks/createToolPolicyHook.cjs +0 -38
  26. package/dist/cjs/hooks/createToolPolicyHook.cjs.map +1 -1
  27. package/dist/cjs/hooks/createWorkspacePolicyHook.cjs +0 -77
  28. package/dist/cjs/hooks/createWorkspacePolicyHook.cjs.map +1 -1
  29. package/dist/cjs/hooks/executeHooks.cjs +0 -79
  30. package/dist/cjs/hooks/executeHooks.cjs.map +1 -1
  31. package/dist/cjs/hooks/index.cjs +0 -16
  32. package/dist/cjs/hooks/index.cjs.map +1 -1
  33. package/dist/cjs/hooks/matchers.cjs +0 -104
  34. package/dist/cjs/hooks/matchers.cjs.map +1 -1
  35. package/dist/cjs/hooks/types.cjs +0 -8
  36. package/dist/cjs/hooks/types.cjs.map +1 -1
  37. package/dist/cjs/instrumentation.cjs +0 -14
  38. package/dist/cjs/instrumentation.cjs.map +1 -1
  39. package/dist/cjs/langfuse.cjs +0 -75
  40. package/dist/cjs/langfuse.cjs.map +1 -1
  41. package/dist/cjs/langfuseConfig.cjs.map +1 -1
  42. package/dist/cjs/langfuseRuntimeContext.cjs +0 -13
  43. package/dist/cjs/langfuseRuntimeContext.cjs.map +1 -1
  44. package/dist/cjs/langfuseRuntimeScope.cjs +0 -4
  45. package/dist/cjs/langfuseRuntimeScope.cjs.map +1 -1
  46. package/dist/cjs/langfuseSpanRegistry.cjs +0 -28
  47. package/dist/cjs/langfuseSpanRegistry.cjs.map +1 -1
  48. package/dist/cjs/langfuseToolOutputTracing.cjs +0 -3
  49. package/dist/cjs/langfuseToolOutputTracing.cjs.map +1 -1
  50. package/dist/cjs/langfuseTraceShaping.cjs +0 -74
  51. package/dist/cjs/langfuseTraceShaping.cjs.map +1 -1
  52. package/dist/cjs/llm/anthropic/index.cjs +0 -3
  53. package/dist/cjs/llm/anthropic/index.cjs.map +1 -1
  54. package/dist/cjs/llm/anthropic/types.cjs.map +1 -1
  55. package/dist/cjs/llm/anthropic/utils/message_inputs.cjs +1 -111
  56. package/dist/cjs/llm/anthropic/utils/message_inputs.cjs.map +1 -1
  57. package/dist/cjs/llm/anthropic/utils/message_outputs.cjs +0 -1
  58. package/dist/cjs/llm/anthropic/utils/message_outputs.cjs.map +1 -1
  59. package/dist/cjs/llm/anthropic/utils/stream_events.cjs +0 -8
  60. package/dist/cjs/llm/anthropic/utils/stream_events.cjs.map +1 -1
  61. package/dist/cjs/llm/anthropic/utils/tools.cjs.map +1 -1
  62. package/dist/cjs/llm/bedrock/cachePoints.cjs.map +1 -1
  63. package/dist/cjs/llm/bedrock/index.cjs +1 -95
  64. package/dist/cjs/llm/bedrock/index.cjs.map +1 -1
  65. package/dist/cjs/llm/bedrock/toolCache.cjs.map +1 -1
  66. package/dist/cjs/llm/bedrock/utils/message_inputs.cjs +0 -78
  67. package/dist/cjs/llm/bedrock/utils/message_inputs.cjs.map +1 -1
  68. package/dist/cjs/llm/bedrock/utils/message_outputs.cjs +0 -24
  69. package/dist/cjs/llm/bedrock/utils/message_outputs.cjs.map +1 -1
  70. package/dist/cjs/llm/contextOverflowRecovery.cjs +0 -62
  71. package/dist/cjs/llm/contextOverflowRecovery.cjs.map +1 -1
  72. package/dist/cjs/llm/fake.cjs.map +1 -1
  73. package/dist/cjs/llm/google/index.cjs +2 -21
  74. package/dist/cjs/llm/google/index.cjs.map +1 -1
  75. package/dist/cjs/llm/google/utils/common.cjs +0 -35
  76. package/dist/cjs/llm/google/utils/common.cjs.map +1 -1
  77. package/dist/cjs/llm/init.cjs +0 -9
  78. package/dist/cjs/llm/init.cjs.map +1 -1
  79. package/dist/cjs/llm/invoke.cjs +1 -270
  80. package/dist/cjs/llm/invoke.cjs.map +1 -1
  81. package/dist/cjs/llm/mistral/index.cjs.map +1 -1
  82. package/dist/cjs/llm/openai/index.cjs +0 -99
  83. package/dist/cjs/llm/openai/index.cjs.map +1 -1
  84. package/dist/cjs/llm/openai/streamMetadata.cjs +0 -21
  85. package/dist/cjs/llm/openai/streamMetadata.cjs.map +1 -1
  86. package/dist/cjs/llm/openai/utils/index.cjs.map +1 -1
  87. package/dist/cjs/llm/openrouter/index.cjs +0 -1
  88. package/dist/cjs/llm/openrouter/index.cjs.map +1 -1
  89. package/dist/cjs/llm/openrouter/toolCache.cjs +0 -6
  90. package/dist/cjs/llm/openrouter/toolCache.cjs.map +1 -1
  91. package/dist/cjs/llm/preempt.cjs +0 -75
  92. package/dist/cjs/llm/preempt.cjs.map +1 -1
  93. package/dist/cjs/llm/providers.cjs.map +1 -1
  94. package/dist/cjs/llm/request.cjs +0 -10
  95. package/dist/cjs/llm/request.cjs.map +1 -1
  96. package/dist/cjs/llm/stream/chunkAdapters.cjs +0 -62
  97. package/dist/cjs/llm/stream/chunkAdapters.cjs.map +1 -1
  98. package/dist/cjs/llm/stream/smoother.cjs +0 -58
  99. package/dist/cjs/llm/stream/smoother.cjs.map +1 -1
  100. package/dist/cjs/llm/streamLimits.cjs +4 -293
  101. package/dist/cjs/llm/streamLimits.cjs.map +1 -1
  102. package/dist/cjs/llm/truncation.cjs +0 -36
  103. package/dist/cjs/llm/truncation.cjs.map +1 -1
  104. package/dist/cjs/llm/vertexai/index.cjs +0 -330
  105. package/dist/cjs/llm/vertexai/index.cjs.map +1 -1
  106. package/dist/cjs/messages/alternation.cjs +0 -43
  107. package/dist/cjs/messages/alternation.cjs.map +1 -1
  108. package/dist/cjs/messages/anthropicToolCache.cjs +0 -45
  109. package/dist/cjs/messages/anthropicToolCache.cjs.map +1 -1
  110. package/dist/cjs/messages/assistantPhase.cjs +0 -12
  111. package/dist/cjs/messages/assistantPhase.cjs.map +1 -1
  112. package/dist/cjs/messages/budget.cjs +0 -9
  113. package/dist/cjs/messages/budget.cjs.map +1 -1
  114. package/dist/cjs/messages/cache.cjs +0 -172
  115. package/dist/cjs/messages/cache.cjs.map +1 -1
  116. package/dist/cjs/messages/content.cjs +0 -9
  117. package/dist/cjs/messages/content.cjs.map +1 -1
  118. package/dist/cjs/messages/contextPruning.cjs +0 -15
  119. package/dist/cjs/messages/contextPruning.cjs.map +1 -1
  120. package/dist/cjs/messages/contextPruningSettings.cjs +0 -3
  121. package/dist/cjs/messages/contextPruningSettings.cjs.map +1 -1
  122. package/dist/cjs/messages/core.cjs +0 -48
  123. package/dist/cjs/messages/core.cjs.map +1 -1
  124. package/dist/cjs/messages/format.cjs +1 -345
  125. package/dist/cjs/messages/format.cjs.map +1 -1
  126. package/dist/cjs/messages/handoffCue.cjs +0 -36
  127. package/dist/cjs/messages/handoffCue.cjs.map +1 -1
  128. package/dist/cjs/messages/ids.cjs.map +1 -1
  129. package/dist/cjs/messages/injected.cjs +0 -33
  130. package/dist/cjs/messages/injected.cjs.map +1 -1
  131. package/dist/cjs/messages/langchain.cjs +0 -14
  132. package/dist/cjs/messages/langchain.cjs.map +1 -1
  133. package/dist/cjs/messages/prune.cjs +1 -184
  134. package/dist/cjs/messages/prune.cjs.map +1 -1
  135. package/dist/cjs/messages/recency.cjs +0 -32
  136. package/dist/cjs/messages/recency.cjs.map +1 -1
  137. package/dist/cjs/messages/reducer.cjs +0 -30
  138. package/dist/cjs/messages/reducer.cjs.map +1 -1
  139. package/dist/cjs/messages/tools.cjs +0 -14
  140. package/dist/cjs/messages/tools.cjs.map +1 -1
  141. package/dist/cjs/openai/index.cjs.map +1 -1
  142. package/dist/cjs/prompts/activityLabel.cjs +9 -79
  143. package/dist/cjs/prompts/activityLabel.cjs.map +1 -1
  144. package/dist/cjs/responses/index.cjs.map +1 -1
  145. package/dist/cjs/run.cjs +2 -538
  146. package/dist/cjs/run.cjs.map +1 -1
  147. package/dist/cjs/session/AgentSession.cjs +1 -17
  148. package/dist/cjs/session/AgentSession.cjs.map +1 -1
  149. package/dist/cjs/session/JsonlSessionStore.cjs.map +1 -1
  150. package/dist/cjs/session/handlers.cjs +0 -7
  151. package/dist/cjs/session/handlers.cjs.map +1 -1
  152. package/dist/cjs/session/ids.cjs.map +1 -1
  153. package/dist/cjs/session/messageSerialization.cjs +0 -4
  154. package/dist/cjs/session/messageSerialization.cjs.map +1 -1
  155. package/dist/cjs/stream.cjs +1 -93
  156. package/dist/cjs/stream.cjs.map +1 -1
  157. package/dist/cjs/summarization/index.cjs +0 -27
  158. package/dist/cjs/summarization/index.cjs.map +1 -1
  159. package/dist/cjs/summarization/node.cjs +0 -273
  160. package/dist/cjs/summarization/node.cjs.map +1 -1
  161. package/dist/cjs/tools/BashExecutor.cjs +0 -35
  162. package/dist/cjs/tools/BashExecutor.cjs.map +1 -1
  163. package/dist/cjs/tools/BashProgrammaticToolCalling.cjs +0 -24
  164. package/dist/cjs/tools/BashProgrammaticToolCalling.cjs.map +1 -1
  165. package/dist/cjs/tools/Calculator.cjs.map +1 -1
  166. package/dist/cjs/tools/CodeExecutor.cjs +0 -13
  167. package/dist/cjs/tools/CodeExecutor.cjs.map +1 -1
  168. package/dist/cjs/tools/CodeSessionFileSummary.cjs.map +1 -1
  169. package/dist/cjs/tools/ProgrammaticToolCalling.cjs +0 -101
  170. package/dist/cjs/tools/ProgrammaticToolCalling.cjs.map +1 -1
  171. package/dist/cjs/tools/ReadFile.cjs.map +1 -1
  172. package/dist/cjs/tools/SkillTool.cjs +0 -5
  173. package/dist/cjs/tools/SkillTool.cjs.map +1 -1
  174. package/dist/cjs/tools/SubagentTool.cjs +0 -10
  175. package/dist/cjs/tools/SubagentTool.cjs.map +1 -1
  176. package/dist/cjs/tools/ToolNode.cjs +6 -1038
  177. package/dist/cjs/tools/ToolNode.cjs.map +1 -1
  178. package/dist/cjs/tools/ToolSearch.cjs +0 -179
  179. package/dist/cjs/tools/ToolSearch.cjs.map +1 -1
  180. package/dist/cjs/tools/cloudflare/CloudflareBridgeRuntime.cjs.map +1 -1
  181. package/dist/cjs/tools/cloudflare/CloudflareProgrammaticToolCalling.cjs.map +1 -1
  182. package/dist/cjs/tools/cloudflare/CloudflareSandboxExecutionEngine.cjs +0 -39
  183. package/dist/cjs/tools/cloudflare/CloudflareSandboxExecutionEngine.cjs.map +1 -1
  184. package/dist/cjs/tools/cloudflare/CloudflareSandboxTools.cjs.map +1 -1
  185. package/dist/cjs/tools/eagerEventExecution.cjs +0 -6
  186. package/dist/cjs/tools/eagerEventExecution.cjs.map +1 -1
  187. package/dist/cjs/tools/handlers.cjs +1 -41
  188. package/dist/cjs/tools/handlers.cjs.map +1 -1
  189. package/dist/cjs/tools/intentArg.cjs +1 -132
  190. package/dist/cjs/tools/intentArg.cjs.map +1 -1
  191. package/dist/cjs/tools/local/CompileCheckTool.cjs +0 -25
  192. package/dist/cjs/tools/local/CompileCheckTool.cjs.map +1 -1
  193. package/dist/cjs/tools/local/FileCheckpointer.cjs +0 -23
  194. package/dist/cjs/tools/local/FileCheckpointer.cjs.map +1 -1
  195. package/dist/cjs/tools/local/LocalCodingTools.cjs +0 -80
  196. package/dist/cjs/tools/local/LocalCodingTools.cjs.map +1 -1
  197. package/dist/cjs/tools/local/LocalExecutionEngine.cjs +0 -126
  198. package/dist/cjs/tools/local/LocalExecutionEngine.cjs.map +1 -1
  199. package/dist/cjs/tools/local/LocalExecutionTools.cjs.map +1 -1
  200. package/dist/cjs/tools/local/LocalProgrammaticToolCalling.cjs +0 -12
  201. package/dist/cjs/tools/local/LocalProgrammaticToolCalling.cjs.map +1 -1
  202. package/dist/cjs/tools/local/attachments.cjs +0 -44
  203. package/dist/cjs/tools/local/attachments.cjs.map +1 -1
  204. package/dist/cjs/tools/local/bashAst.cjs +0 -16
  205. package/dist/cjs/tools/local/bashAst.cjs.map +1 -1
  206. package/dist/cjs/tools/local/editStrategies.cjs +0 -14
  207. package/dist/cjs/tools/local/editStrategies.cjs.map +1 -1
  208. package/dist/cjs/tools/local/resolveLocalExecutionTools.cjs.map +1 -1
  209. package/dist/cjs/tools/local/syntaxCheck.cjs +0 -31
  210. package/dist/cjs/tools/local/syntaxCheck.cjs.map +1 -1
  211. package/dist/cjs/tools/local/textEncoding.cjs +0 -11
  212. package/dist/cjs/tools/local/textEncoding.cjs.map +1 -1
  213. package/dist/cjs/tools/local/workspaceFS.cjs +0 -33
  214. package/dist/cjs/tools/local/workspaceFS.cjs.map +1 -1
  215. package/dist/cjs/tools/ptcTimeout.cjs.map +1 -1
  216. package/dist/cjs/tools/schema.cjs +0 -8
  217. package/dist/cjs/tools/schema.cjs.map +1 -1
  218. package/dist/cjs/tools/search/anthropic.cjs +0 -9
  219. package/dist/cjs/tools/search/anthropic.cjs.map +1 -1
  220. package/dist/cjs/tools/search/content.cjs.map +1 -1
  221. package/dist/cjs/tools/search/crw-scraper.cjs +0 -33
  222. package/dist/cjs/tools/search/crw-scraper.cjs.map +1 -1
  223. package/dist/cjs/tools/search/crw-search.cjs +0 -2
  224. package/dist/cjs/tools/search/crw-search.cjs.map +1 -1
  225. package/dist/cjs/tools/search/firecrawl.cjs +0 -25
  226. package/dist/cjs/tools/search/firecrawl.cjs.map +1 -1
  227. package/dist/cjs/tools/search/format.cjs +0 -30
  228. package/dist/cjs/tools/search/format.cjs.map +1 -1
  229. package/dist/cjs/tools/search/highlights.cjs +0 -16
  230. package/dist/cjs/tools/search/highlights.cjs.map +1 -1
  231. package/dist/cjs/tools/search/keenable-scraper.cjs +0 -8
  232. package/dist/cjs/tools/search/keenable-scraper.cjs.map +1 -1
  233. package/dist/cjs/tools/search/keenable-search.cjs +0 -7
  234. package/dist/cjs/tools/search/keenable-search.cjs.map +1 -1
  235. package/dist/cjs/tools/search/rerankers.cjs +0 -35
  236. package/dist/cjs/tools/search/rerankers.cjs.map +1 -1
  237. package/dist/cjs/tools/search/schema.cjs +0 -1
  238. package/dist/cjs/tools/search/schema.cjs.map +1 -1
  239. package/dist/cjs/tools/search/search.cjs +1 -14
  240. package/dist/cjs/tools/search/search.cjs.map +1 -1
  241. package/dist/cjs/tools/search/serper-scraper.cjs +0 -46
  242. package/dist/cjs/tools/search/serper-scraper.cjs.map +1 -1
  243. package/dist/cjs/tools/search/tavily-scraper.cjs.map +1 -1
  244. package/dist/cjs/tools/search/tavily-search.cjs.map +1 -1
  245. package/dist/cjs/tools/search/tool.cjs +0 -25
  246. package/dist/cjs/tools/search/tool.cjs.map +1 -1
  247. package/dist/cjs/tools/search/utils.cjs +0 -8
  248. package/dist/cjs/tools/search/utils.cjs.map +1 -1
  249. package/dist/cjs/tools/skillCatalog.cjs +0 -6
  250. package/dist/cjs/tools/skillCatalog.cjs.map +1 -1
  251. package/dist/cjs/tools/streamedToolCallSeals.cjs +0 -6
  252. package/dist/cjs/tools/streamedToolCallSeals.cjs.map +1 -1
  253. package/dist/cjs/tools/subagent/SubagentExecutionRegistry.cjs +0 -2
  254. package/dist/cjs/tools/subagent/SubagentExecutionRegistry.cjs.map +1 -1
  255. package/dist/cjs/tools/subagent/SubagentExecutor.cjs +3 -213
  256. package/dist/cjs/tools/subagent/SubagentExecutor.cjs.map +1 -1
  257. package/dist/cjs/tools/subagent/SubagentReplay.cjs.map +1 -1
  258. package/dist/cjs/tools/subagent/childGraphConfig.cjs +0 -4
  259. package/dist/cjs/tools/subagent/childGraphConfig.cjs.map +1 -1
  260. package/dist/cjs/tools/subagent/runtimeLimits.cjs.map +1 -1
  261. package/dist/cjs/tools/toolOutputReferences.cjs +1 -322
  262. package/dist/cjs/tools/toolOutputReferences.cjs.map +1 -1
  263. package/dist/cjs/types/hitl.cjs +0 -5
  264. package/dist/cjs/types/hitl.cjs.map +1 -1
  265. package/dist/cjs/utils/callbacks.cjs.map +1 -1
  266. package/dist/cjs/utils/errors.cjs +14 -165
  267. package/dist/cjs/utils/errors.cjs.map +1 -1
  268. package/dist/cjs/utils/events.cjs +0 -10
  269. package/dist/cjs/utils/events.cjs.map +1 -1
  270. package/dist/cjs/utils/graph.cjs.map +1 -1
  271. package/dist/cjs/utils/handlers.cjs +0 -3
  272. package/dist/cjs/utils/handlers.cjs.map +1 -1
  273. package/dist/cjs/utils/llm.cjs +0 -1
  274. package/dist/cjs/utils/llm.cjs.map +1 -1
  275. package/dist/cjs/utils/misc.cjs +0 -16
  276. package/dist/cjs/utils/misc.cjs.map +1 -1
  277. package/dist/cjs/utils/proxy.cjs +0 -26
  278. package/dist/cjs/utils/proxy.cjs.map +1 -1
  279. package/dist/cjs/utils/run.cjs +0 -6
  280. package/dist/cjs/utils/run.cjs.map +1 -1
  281. package/dist/cjs/utils/schema.cjs +0 -5
  282. package/dist/cjs/utils/schema.cjs.map +1 -1
  283. package/dist/cjs/utils/title.cjs +0 -6
  284. package/dist/cjs/utils/title.cjs.map +1 -1
  285. package/dist/cjs/utils/tokens.cjs +0 -113
  286. package/dist/cjs/utils/tokens.cjs.map +1 -1
  287. package/dist/cjs/utils/toolContent.cjs +0 -41
  288. package/dist/cjs/utils/toolContent.cjs.map +1 -1
  289. package/dist/cjs/utils/truncation.cjs +0 -61
  290. package/dist/cjs/utils/truncation.cjs.map +1 -1
  291. package/dist/esm/agents/AgentContext.mjs +0 -356
  292. package/dist/esm/agents/AgentContext.mjs.map +1 -1
  293. package/dist/esm/agents/projection.mjs +0 -9
  294. package/dist/esm/agents/projection.mjs.map +1 -1
  295. package/dist/esm/common/constants.mjs +0 -26
  296. package/dist/esm/common/constants.mjs.map +1 -1
  297. package/dist/esm/common/enum.mjs +0 -85
  298. package/dist/esm/common/enum.mjs.map +1 -1
  299. package/dist/esm/events.mjs +0 -14
  300. package/dist/esm/events.mjs.map +1 -1
  301. package/dist/esm/graphs/Graph.mjs +1 -909
  302. package/dist/esm/graphs/Graph.mjs.map +1 -1
  303. package/dist/esm/graphs/MultiAgentGraph.mjs +7 -272
  304. package/dist/esm/graphs/MultiAgentGraph.mjs.map +1 -1
  305. package/dist/esm/graphs/applyGraphRuntimeConfig.mjs.map +1 -1
  306. package/dist/esm/graphs/createGraph.mjs.map +1 -1
  307. package/dist/esm/hitl/askUserQuestion.mjs +0 -53
  308. package/dist/esm/hitl/askUserQuestion.mjs.map +1 -1
  309. package/dist/esm/hitl/askUserQuestions.mjs +0 -20
  310. package/dist/esm/hitl/askUserQuestions.mjs.map +1 -1
  311. package/dist/esm/hitl/askUserQuestionsInterrupt.mjs +0 -6
  312. package/dist/esm/hitl/askUserQuestionsInterrupt.mjs.map +1 -1
  313. package/dist/esm/hooks/HookRegistry.mjs +0 -127
  314. package/dist/esm/hooks/HookRegistry.mjs.map +1 -1
  315. package/dist/esm/hooks/createToolPolicyHook.mjs +0 -38
  316. package/dist/esm/hooks/createToolPolicyHook.mjs.map +1 -1
  317. package/dist/esm/hooks/createWorkspacePolicyHook.mjs +0 -77
  318. package/dist/esm/hooks/createWorkspacePolicyHook.mjs.map +1 -1
  319. package/dist/esm/hooks/executeHooks.mjs +0 -79
  320. package/dist/esm/hooks/executeHooks.mjs.map +1 -1
  321. package/dist/esm/hooks/index.mjs +0 -16
  322. package/dist/esm/hooks/index.mjs.map +1 -1
  323. package/dist/esm/hooks/matchers.mjs +0 -104
  324. package/dist/esm/hooks/matchers.mjs.map +1 -1
  325. package/dist/esm/hooks/types.mjs +0 -8
  326. package/dist/esm/hooks/types.mjs.map +1 -1
  327. package/dist/esm/instrumentation.mjs +0 -14
  328. package/dist/esm/instrumentation.mjs.map +1 -1
  329. package/dist/esm/langfuse.mjs +0 -75
  330. package/dist/esm/langfuse.mjs.map +1 -1
  331. package/dist/esm/langfuseConfig.mjs.map +1 -1
  332. package/dist/esm/langfuseRuntimeContext.mjs +0 -13
  333. package/dist/esm/langfuseRuntimeContext.mjs.map +1 -1
  334. package/dist/esm/langfuseRuntimeScope.mjs +0 -4
  335. package/dist/esm/langfuseRuntimeScope.mjs.map +1 -1
  336. package/dist/esm/langfuseSpanRegistry.mjs +0 -28
  337. package/dist/esm/langfuseSpanRegistry.mjs.map +1 -1
  338. package/dist/esm/langfuseToolOutputTracing.mjs +0 -3
  339. package/dist/esm/langfuseToolOutputTracing.mjs.map +1 -1
  340. package/dist/esm/langfuseTraceShaping.mjs +0 -74
  341. package/dist/esm/langfuseTraceShaping.mjs.map +1 -1
  342. package/dist/esm/llm/anthropic/index.mjs +0 -3
  343. package/dist/esm/llm/anthropic/index.mjs.map +1 -1
  344. package/dist/esm/llm/anthropic/types.mjs.map +1 -1
  345. package/dist/esm/llm/anthropic/utils/message_inputs.mjs +1 -111
  346. package/dist/esm/llm/anthropic/utils/message_inputs.mjs.map +1 -1
  347. package/dist/esm/llm/anthropic/utils/message_outputs.mjs +0 -1
  348. package/dist/esm/llm/anthropic/utils/message_outputs.mjs.map +1 -1
  349. package/dist/esm/llm/anthropic/utils/stream_events.mjs +0 -8
  350. package/dist/esm/llm/anthropic/utils/stream_events.mjs.map +1 -1
  351. package/dist/esm/llm/anthropic/utils/tools.mjs.map +1 -1
  352. package/dist/esm/llm/bedrock/cachePoints.mjs.map +1 -1
  353. package/dist/esm/llm/bedrock/index.mjs +1 -95
  354. package/dist/esm/llm/bedrock/index.mjs.map +1 -1
  355. package/dist/esm/llm/bedrock/toolCache.mjs.map +1 -1
  356. package/dist/esm/llm/bedrock/utils/message_inputs.mjs +0 -78
  357. package/dist/esm/llm/bedrock/utils/message_inputs.mjs.map +1 -1
  358. package/dist/esm/llm/bedrock/utils/message_outputs.mjs +0 -24
  359. package/dist/esm/llm/bedrock/utils/message_outputs.mjs.map +1 -1
  360. package/dist/esm/llm/contextOverflowRecovery.mjs +0 -62
  361. package/dist/esm/llm/contextOverflowRecovery.mjs.map +1 -1
  362. package/dist/esm/llm/fake.mjs.map +1 -1
  363. package/dist/esm/llm/google/index.mjs +2 -21
  364. package/dist/esm/llm/google/index.mjs.map +1 -1
  365. package/dist/esm/llm/google/utils/common.mjs +0 -35
  366. package/dist/esm/llm/google/utils/common.mjs.map +1 -1
  367. package/dist/esm/llm/init.mjs +0 -9
  368. package/dist/esm/llm/init.mjs.map +1 -1
  369. package/dist/esm/llm/invoke.mjs +1 -270
  370. package/dist/esm/llm/invoke.mjs.map +1 -1
  371. package/dist/esm/llm/mistral/index.mjs.map +1 -1
  372. package/dist/esm/llm/openai/index.mjs +0 -99
  373. package/dist/esm/llm/openai/index.mjs.map +1 -1
  374. package/dist/esm/llm/openai/streamMetadata.mjs +0 -21
  375. package/dist/esm/llm/openai/streamMetadata.mjs.map +1 -1
  376. package/dist/esm/llm/openai/utils/index.mjs.map +1 -1
  377. package/dist/esm/llm/openrouter/index.mjs +0 -1
  378. package/dist/esm/llm/openrouter/index.mjs.map +1 -1
  379. package/dist/esm/llm/openrouter/toolCache.mjs +0 -6
  380. package/dist/esm/llm/openrouter/toolCache.mjs.map +1 -1
  381. package/dist/esm/llm/preempt.mjs +0 -75
  382. package/dist/esm/llm/preempt.mjs.map +1 -1
  383. package/dist/esm/llm/providers.mjs.map +1 -1
  384. package/dist/esm/llm/request.mjs +0 -10
  385. package/dist/esm/llm/request.mjs.map +1 -1
  386. package/dist/esm/llm/stream/chunkAdapters.mjs +0 -62
  387. package/dist/esm/llm/stream/chunkAdapters.mjs.map +1 -1
  388. package/dist/esm/llm/stream/smoother.mjs +0 -58
  389. package/dist/esm/llm/stream/smoother.mjs.map +1 -1
  390. package/dist/esm/llm/streamLimits.mjs +4 -293
  391. package/dist/esm/llm/streamLimits.mjs.map +1 -1
  392. package/dist/esm/llm/truncation.mjs +0 -36
  393. package/dist/esm/llm/truncation.mjs.map +1 -1
  394. package/dist/esm/llm/vertexai/index.mjs +0 -330
  395. package/dist/esm/llm/vertexai/index.mjs.map +1 -1
  396. package/dist/esm/messages/alternation.mjs +0 -43
  397. package/dist/esm/messages/alternation.mjs.map +1 -1
  398. package/dist/esm/messages/anthropicToolCache.mjs +0 -45
  399. package/dist/esm/messages/anthropicToolCache.mjs.map +1 -1
  400. package/dist/esm/messages/assistantPhase.mjs +0 -12
  401. package/dist/esm/messages/assistantPhase.mjs.map +1 -1
  402. package/dist/esm/messages/budget.mjs +0 -9
  403. package/dist/esm/messages/budget.mjs.map +1 -1
  404. package/dist/esm/messages/cache.mjs +0 -172
  405. package/dist/esm/messages/cache.mjs.map +1 -1
  406. package/dist/esm/messages/content.mjs +0 -9
  407. package/dist/esm/messages/content.mjs.map +1 -1
  408. package/dist/esm/messages/contextPruning.mjs +0 -15
  409. package/dist/esm/messages/contextPruning.mjs.map +1 -1
  410. package/dist/esm/messages/contextPruningSettings.mjs +0 -3
  411. package/dist/esm/messages/contextPruningSettings.mjs.map +1 -1
  412. package/dist/esm/messages/core.mjs +0 -48
  413. package/dist/esm/messages/core.mjs.map +1 -1
  414. package/dist/esm/messages/format.mjs +1 -345
  415. package/dist/esm/messages/format.mjs.map +1 -1
  416. package/dist/esm/messages/handoffCue.mjs +0 -36
  417. package/dist/esm/messages/handoffCue.mjs.map +1 -1
  418. package/dist/esm/messages/ids.mjs.map +1 -1
  419. package/dist/esm/messages/injected.mjs +0 -33
  420. package/dist/esm/messages/injected.mjs.map +1 -1
  421. package/dist/esm/messages/langchain.mjs +0 -14
  422. package/dist/esm/messages/langchain.mjs.map +1 -1
  423. package/dist/esm/messages/prune.mjs +1 -184
  424. package/dist/esm/messages/prune.mjs.map +1 -1
  425. package/dist/esm/messages/recency.mjs +0 -32
  426. package/dist/esm/messages/recency.mjs.map +1 -1
  427. package/dist/esm/messages/reducer.mjs +0 -30
  428. package/dist/esm/messages/reducer.mjs.map +1 -1
  429. package/dist/esm/messages/tools.mjs +0 -14
  430. package/dist/esm/messages/tools.mjs.map +1 -1
  431. package/dist/esm/openai/index.mjs.map +1 -1
  432. package/dist/esm/prompts/activityLabel.mjs +9 -79
  433. package/dist/esm/prompts/activityLabel.mjs.map +1 -1
  434. package/dist/esm/responses/index.mjs.map +1 -1
  435. package/dist/esm/run.mjs +2 -538
  436. package/dist/esm/run.mjs.map +1 -1
  437. package/dist/esm/session/AgentSession.mjs +1 -17
  438. package/dist/esm/session/AgentSession.mjs.map +1 -1
  439. package/dist/esm/session/JsonlSessionStore.mjs.map +1 -1
  440. package/dist/esm/session/handlers.mjs +0 -7
  441. package/dist/esm/session/handlers.mjs.map +1 -1
  442. package/dist/esm/session/ids.mjs.map +1 -1
  443. package/dist/esm/session/messageSerialization.mjs +0 -4
  444. package/dist/esm/session/messageSerialization.mjs.map +1 -1
  445. package/dist/esm/stream.mjs +1 -93
  446. package/dist/esm/stream.mjs.map +1 -1
  447. package/dist/esm/summarization/index.mjs +0 -27
  448. package/dist/esm/summarization/index.mjs.map +1 -1
  449. package/dist/esm/summarization/node.mjs +0 -273
  450. package/dist/esm/summarization/node.mjs.map +1 -1
  451. package/dist/esm/tools/BashExecutor.mjs +0 -35
  452. package/dist/esm/tools/BashExecutor.mjs.map +1 -1
  453. package/dist/esm/tools/BashProgrammaticToolCalling.mjs +0 -24
  454. package/dist/esm/tools/BashProgrammaticToolCalling.mjs.map +1 -1
  455. package/dist/esm/tools/Calculator.mjs.map +1 -1
  456. package/dist/esm/tools/CodeExecutor.mjs +0 -13
  457. package/dist/esm/tools/CodeExecutor.mjs.map +1 -1
  458. package/dist/esm/tools/CodeSessionFileSummary.mjs.map +1 -1
  459. package/dist/esm/tools/ProgrammaticToolCalling.mjs +0 -101
  460. package/dist/esm/tools/ProgrammaticToolCalling.mjs.map +1 -1
  461. package/dist/esm/tools/ReadFile.mjs.map +1 -1
  462. package/dist/esm/tools/SkillTool.mjs +0 -5
  463. package/dist/esm/tools/SkillTool.mjs.map +1 -1
  464. package/dist/esm/tools/SubagentTool.mjs +0 -10
  465. package/dist/esm/tools/SubagentTool.mjs.map +1 -1
  466. package/dist/esm/tools/ToolNode.mjs +6 -1038
  467. package/dist/esm/tools/ToolNode.mjs.map +1 -1
  468. package/dist/esm/tools/ToolSearch.mjs +0 -179
  469. package/dist/esm/tools/ToolSearch.mjs.map +1 -1
  470. package/dist/esm/tools/cloudflare/CloudflareBridgeRuntime.mjs.map +1 -1
  471. package/dist/esm/tools/cloudflare/CloudflareProgrammaticToolCalling.mjs.map +1 -1
  472. package/dist/esm/tools/cloudflare/CloudflareSandboxExecutionEngine.mjs +0 -39
  473. package/dist/esm/tools/cloudflare/CloudflareSandboxExecutionEngine.mjs.map +1 -1
  474. package/dist/esm/tools/cloudflare/CloudflareSandboxTools.mjs.map +1 -1
  475. package/dist/esm/tools/eagerEventExecution.mjs +0 -6
  476. package/dist/esm/tools/eagerEventExecution.mjs.map +1 -1
  477. package/dist/esm/tools/handlers.mjs +1 -41
  478. package/dist/esm/tools/handlers.mjs.map +1 -1
  479. package/dist/esm/tools/intentArg.mjs +1 -132
  480. package/dist/esm/tools/intentArg.mjs.map +1 -1
  481. package/dist/esm/tools/local/CompileCheckTool.mjs +0 -25
  482. package/dist/esm/tools/local/CompileCheckTool.mjs.map +1 -1
  483. package/dist/esm/tools/local/FileCheckpointer.mjs +0 -23
  484. package/dist/esm/tools/local/FileCheckpointer.mjs.map +1 -1
  485. package/dist/esm/tools/local/LocalCodingTools.mjs +0 -80
  486. package/dist/esm/tools/local/LocalCodingTools.mjs.map +1 -1
  487. package/dist/esm/tools/local/LocalExecutionEngine.mjs +0 -126
  488. package/dist/esm/tools/local/LocalExecutionEngine.mjs.map +1 -1
  489. package/dist/esm/tools/local/LocalExecutionTools.mjs.map +1 -1
  490. package/dist/esm/tools/local/LocalProgrammaticToolCalling.mjs +0 -12
  491. package/dist/esm/tools/local/LocalProgrammaticToolCalling.mjs.map +1 -1
  492. package/dist/esm/tools/local/attachments.mjs +0 -44
  493. package/dist/esm/tools/local/attachments.mjs.map +1 -1
  494. package/dist/esm/tools/local/bashAst.mjs +0 -16
  495. package/dist/esm/tools/local/bashAst.mjs.map +1 -1
  496. package/dist/esm/tools/local/editStrategies.mjs +0 -14
  497. package/dist/esm/tools/local/editStrategies.mjs.map +1 -1
  498. package/dist/esm/tools/local/resolveLocalExecutionTools.mjs.map +1 -1
  499. package/dist/esm/tools/local/syntaxCheck.mjs +0 -31
  500. package/dist/esm/tools/local/syntaxCheck.mjs.map +1 -1
  501. package/dist/esm/tools/local/textEncoding.mjs +0 -11
  502. package/dist/esm/tools/local/textEncoding.mjs.map +1 -1
  503. package/dist/esm/tools/local/workspaceFS.mjs +0 -33
  504. package/dist/esm/tools/local/workspaceFS.mjs.map +1 -1
  505. package/dist/esm/tools/ptcTimeout.mjs.map +1 -1
  506. package/dist/esm/tools/schema.mjs +0 -8
  507. package/dist/esm/tools/schema.mjs.map +1 -1
  508. package/dist/esm/tools/search/anthropic.mjs +0 -9
  509. package/dist/esm/tools/search/anthropic.mjs.map +1 -1
  510. package/dist/esm/tools/search/content.mjs.map +1 -1
  511. package/dist/esm/tools/search/crw-scraper.mjs +0 -33
  512. package/dist/esm/tools/search/crw-scraper.mjs.map +1 -1
  513. package/dist/esm/tools/search/crw-search.mjs +0 -2
  514. package/dist/esm/tools/search/crw-search.mjs.map +1 -1
  515. package/dist/esm/tools/search/firecrawl.mjs +0 -25
  516. package/dist/esm/tools/search/firecrawl.mjs.map +1 -1
  517. package/dist/esm/tools/search/format.mjs +0 -30
  518. package/dist/esm/tools/search/format.mjs.map +1 -1
  519. package/dist/esm/tools/search/highlights.mjs +0 -16
  520. package/dist/esm/tools/search/highlights.mjs.map +1 -1
  521. package/dist/esm/tools/search/keenable-scraper.mjs +0 -8
  522. package/dist/esm/tools/search/keenable-scraper.mjs.map +1 -1
  523. package/dist/esm/tools/search/keenable-search.mjs +0 -7
  524. package/dist/esm/tools/search/keenable-search.mjs.map +1 -1
  525. package/dist/esm/tools/search/rerankers.mjs +0 -35
  526. package/dist/esm/tools/search/rerankers.mjs.map +1 -1
  527. package/dist/esm/tools/search/schema.mjs +0 -1
  528. package/dist/esm/tools/search/schema.mjs.map +1 -1
  529. package/dist/esm/tools/search/search.mjs +1 -14
  530. package/dist/esm/tools/search/search.mjs.map +1 -1
  531. package/dist/esm/tools/search/serper-scraper.mjs +0 -46
  532. package/dist/esm/tools/search/serper-scraper.mjs.map +1 -1
  533. package/dist/esm/tools/search/tavily-scraper.mjs.map +1 -1
  534. package/dist/esm/tools/search/tavily-search.mjs.map +1 -1
  535. package/dist/esm/tools/search/tool.mjs +0 -25
  536. package/dist/esm/tools/search/tool.mjs.map +1 -1
  537. package/dist/esm/tools/search/utils.mjs +0 -8
  538. package/dist/esm/tools/search/utils.mjs.map +1 -1
  539. package/dist/esm/tools/skillCatalog.mjs +0 -6
  540. package/dist/esm/tools/skillCatalog.mjs.map +1 -1
  541. package/dist/esm/tools/streamedToolCallSeals.mjs +0 -6
  542. package/dist/esm/tools/streamedToolCallSeals.mjs.map +1 -1
  543. package/dist/esm/tools/subagent/SubagentExecutionRegistry.mjs +0 -2
  544. package/dist/esm/tools/subagent/SubagentExecutionRegistry.mjs.map +1 -1
  545. package/dist/esm/tools/subagent/SubagentExecutor.mjs +3 -213
  546. package/dist/esm/tools/subagent/SubagentExecutor.mjs.map +1 -1
  547. package/dist/esm/tools/subagent/SubagentReplay.mjs.map +1 -1
  548. package/dist/esm/tools/subagent/childGraphConfig.mjs +0 -4
  549. package/dist/esm/tools/subagent/childGraphConfig.mjs.map +1 -1
  550. package/dist/esm/tools/subagent/runtimeLimits.mjs.map +1 -1
  551. package/dist/esm/tools/toolOutputReferences.mjs +1 -322
  552. package/dist/esm/tools/toolOutputReferences.mjs.map +1 -1
  553. package/dist/esm/types/hitl.mjs +0 -5
  554. package/dist/esm/types/hitl.mjs.map +1 -1
  555. package/dist/esm/utils/callbacks.mjs.map +1 -1
  556. package/dist/esm/utils/errors.mjs +14 -165
  557. package/dist/esm/utils/errors.mjs.map +1 -1
  558. package/dist/esm/utils/events.mjs +0 -10
  559. package/dist/esm/utils/events.mjs.map +1 -1
  560. package/dist/esm/utils/graph.mjs.map +1 -1
  561. package/dist/esm/utils/handlers.mjs +0 -3
  562. package/dist/esm/utils/handlers.mjs.map +1 -1
  563. package/dist/esm/utils/llm.mjs +0 -1
  564. package/dist/esm/utils/llm.mjs.map +1 -1
  565. package/dist/esm/utils/misc.mjs +0 -16
  566. package/dist/esm/utils/misc.mjs.map +1 -1
  567. package/dist/esm/utils/proxy.mjs +0 -26
  568. package/dist/esm/utils/proxy.mjs.map +1 -1
  569. package/dist/esm/utils/run.mjs +0 -6
  570. package/dist/esm/utils/run.mjs.map +1 -1
  571. package/dist/esm/utils/schema.mjs +0 -5
  572. package/dist/esm/utils/schema.mjs.map +1 -1
  573. package/dist/esm/utils/title.mjs +0 -6
  574. package/dist/esm/utils/title.mjs.map +1 -1
  575. package/dist/esm/utils/tokens.mjs +0 -113
  576. package/dist/esm/utils/tokens.mjs.map +1 -1
  577. package/dist/esm/utils/toolContent.mjs +0 -41
  578. package/dist/esm/utils/toolContent.mjs.map +1 -1
  579. package/dist/esm/utils/truncation.mjs +0 -61
  580. package/dist/esm/utils/truncation.mjs.map +1 -1
  581. package/dist/types/agents/AgentContext.d.ts +3 -3
  582. package/dist/types/agents/__tests__/promptCacheLiveHelpers.d.ts +3 -3
  583. package/dist/types/agents/projection.d.ts +1 -1
  584. package/dist/types/events.d.ts +2 -2
  585. package/dist/types/graphs/Graph.d.ts +11 -11
  586. package/dist/types/graphs/MultiAgentGraph.d.ts +2 -2
  587. package/dist/types/graphs/createGraph.d.ts +4 -4
  588. package/dist/types/graphs/graphFactory.d.ts +1 -1
  589. package/dist/types/hitl/askUserQuestion.d.ts +1 -1
  590. package/dist/types/hitl/askUserQuestions.d.ts +1 -1
  591. package/dist/types/hitl/askUserQuestionsInterrupt.d.ts +1 -1
  592. package/dist/types/hooks/types.d.ts +1 -1
  593. package/dist/types/instrumentation.d.ts +1 -1
  594. package/dist/types/langfuse.d.ts +3 -3
  595. package/dist/types/langfuseConfig.d.ts +2 -2
  596. package/dist/types/langfuseRuntimeContext.d.ts +1 -1
  597. package/dist/types/langfuseRuntimeScope.d.ts +2 -2
  598. package/dist/types/langfuseSpanRegistry.d.ts +1 -1
  599. package/dist/types/langfuseToolOutputTracing.d.ts +3 -3
  600. package/dist/types/llm/anthropic/index.d.ts +1 -1
  601. package/dist/types/llm/bedrock/index.d.ts +1 -1
  602. package/dist/types/llm/bedrock/toolCache.d.ts +2 -2
  603. package/dist/types/llm/contextOverflowRecovery.d.ts +2 -2
  604. package/dist/types/llm/google/index.d.ts +1 -1
  605. package/dist/types/llm/init.d.ts +2 -2
  606. package/dist/types/llm/invoke.d.ts +6 -6
  607. package/dist/types/llm/mistral/index.d.ts +1 -1
  608. package/dist/types/llm/openai/index.d.ts +2 -2
  609. package/dist/types/llm/openrouter/index.d.ts +2 -2
  610. package/dist/types/llm/openrouter/toolCache.d.ts +2 -2
  611. package/dist/types/llm/providers.d.ts +2 -2
  612. package/dist/types/llm/request.d.ts +2 -2
  613. package/dist/types/llm/stream/chunkAdapters.d.ts +1 -1
  614. package/dist/types/llm/streamLimits.d.ts +1 -1
  615. package/dist/types/llm/truncation.d.ts +1 -1
  616. package/dist/types/llm/vertexai/index.d.ts +1 -1
  617. package/dist/types/messages/alternation.d.ts +1 -1
  618. package/dist/types/messages/anthropicToolCache.d.ts +2 -2
  619. package/dist/types/messages/assistantPhase.d.ts +3 -3
  620. package/dist/types/messages/budget.d.ts +1 -1
  621. package/dist/types/messages/cache.d.ts +1 -1
  622. package/dist/types/messages/contextPruning.d.ts +2 -2
  623. package/dist/types/messages/core.d.ts +2 -2
  624. package/dist/types/messages/format.d.ts +2 -2
  625. package/dist/types/messages/ids.d.ts +2 -2
  626. package/dist/types/messages/injected.d.ts +1 -1
  627. package/dist/types/messages/langchain.d.ts +1 -1
  628. package/dist/types/messages/prune.d.ts +3 -3
  629. package/dist/types/openai/index.d.ts +1 -1
  630. package/dist/types/prompts/activityLabel.d.ts +2 -2
  631. package/dist/types/responses/index.d.ts +1 -1
  632. package/dist/types/run.d.ts +3 -3
  633. package/dist/types/session/handlers.d.ts +1 -1
  634. package/dist/types/session/types.d.ts +1 -1
  635. package/dist/types/stream.d.ts +4 -4
  636. package/dist/types/summarization/index.d.ts +1 -1
  637. package/dist/types/summarization/node.d.ts +6 -6
  638. package/dist/types/test/mockTools.d.ts +1 -1
  639. package/dist/types/tools/BashExecutor.d.ts +2 -2
  640. package/dist/types/tools/BashProgrammaticToolCalling.d.ts +2 -2
  641. package/dist/types/tools/CodeExecutor.d.ts +3 -3
  642. package/dist/types/tools/CodeSessionFileSummary.d.ts +1 -1
  643. package/dist/types/tools/ProgrammaticToolCalling.d.ts +2 -2
  644. package/dist/types/tools/ReadFile.d.ts +1 -1
  645. package/dist/types/tools/SkillTool.d.ts +1 -1
  646. package/dist/types/tools/SubagentTool.d.ts +3 -3
  647. package/dist/types/tools/ToolNode.d.ts +5 -5
  648. package/dist/types/tools/ToolSearch.d.ts +2 -2
  649. package/dist/types/tools/cloudflare/CloudflareBridgeRuntime.d.ts +1 -1
  650. package/dist/types/tools/cloudflare/CloudflareProgrammaticToolCalling.d.ts +1 -1
  651. package/dist/types/tools/cloudflare/CloudflareSandboxExecutionEngine.d.ts +2 -2
  652. package/dist/types/tools/cloudflare/CloudflareSandboxTools.d.ts +1 -1
  653. package/dist/types/tools/eagerEventExecution.d.ts +1 -1
  654. package/dist/types/tools/handlers.d.ts +3 -3
  655. package/dist/types/tools/intentArg.d.ts +1 -1
  656. package/dist/types/tools/local/CompileCheckTool.d.ts +2 -2
  657. package/dist/types/tools/local/FileCheckpointer.d.ts +1 -1
  658. package/dist/types/tools/local/LocalCodingTools.d.ts +2 -2
  659. package/dist/types/tools/local/LocalExecutionEngine.d.ts +1 -1
  660. package/dist/types/tools/local/LocalExecutionTools.d.ts +1 -1
  661. package/dist/types/tools/local/LocalProgrammaticToolCalling.d.ts +1 -1
  662. package/dist/types/tools/local/bashAst.d.ts +1 -1
  663. package/dist/types/tools/local/resolveLocalExecutionTools.d.ts +1 -1
  664. package/dist/types/tools/local/syntaxCheck.d.ts +1 -1
  665. package/dist/types/tools/ptcTimeout.d.ts +1 -1
  666. package/dist/types/tools/schema.d.ts +1 -1
  667. package/dist/types/tools/search/anthropic.d.ts +1 -1
  668. package/dist/types/tools/skillCatalog.d.ts +1 -1
  669. package/dist/types/tools/subagent/SubagentExecutor.d.ts +5 -5
  670. package/dist/types/tools/subagent/SubagentReplay.d.ts +3 -3
  671. package/dist/types/tools/subagent/childGraphConfig.d.ts +2 -2
  672. package/dist/types/types/activityLabel.d.ts +3 -3
  673. package/dist/types/types/graph.d.ts +7 -7
  674. package/dist/types/types/llm.d.ts +9 -9
  675. package/dist/types/types/run.d.ts +7 -7
  676. package/dist/types/types/stream.d.ts +5 -5
  677. package/dist/types/types/summarize.d.ts +2 -2
  678. package/dist/types/types/tools.d.ts +5 -5
  679. package/dist/types/utils/__tests__/fixtures/contextOverflowSignatures.d.ts +1 -1
  680. package/dist/types/utils/errors.d.ts +1 -1
  681. package/dist/types/utils/events.d.ts +1 -1
  682. package/dist/types/utils/handlers.d.ts +3 -3
  683. package/dist/types/utils/llm.d.ts +1 -1
  684. package/dist/types/utils/llmConfig.d.ts +1 -1
  685. package/dist/types/utils/title.d.ts +1 -1
  686. package/package.json +10 -3
  687. package/src/__tests__/stream.eagerArgsDivergence.test.ts +0 -911
  688. package/src/__tests__/stream.eagerEventExecution.test.ts +0 -5046
  689. package/src/__tests__/stream.streamLimits.test.ts +0 -1982
  690. package/src/agents/__tests__/AgentContext.anthropic.live.test.ts +0 -448
  691. package/src/agents/__tests__/AgentContext.bedrock.live.test.ts +0 -655
  692. package/src/agents/__tests__/AgentContext.openrouter.live.test.ts +0 -128
  693. package/src/agents/__tests__/AgentContext.overflow.test.ts +0 -205
  694. package/src/agents/__tests__/AgentContext.test.ts +0 -2425
  695. package/src/agents/__tests__/projection.test.ts +0 -73
  696. package/src/agents/__tests__/promptCacheLiveHelpers.ts +0 -175
  697. package/src/aggregator.test.ts +0 -1214
  698. package/src/graphs/__tests__/Graph.breakerLifecycle.test.ts +0 -273
  699. package/src/graphs/__tests__/Graph.closeRunStep.test.ts +0 -385
  700. package/src/graphs/__tests__/Graph.contextOverflow.test.ts +0 -1766
  701. package/src/graphs/__tests__/Graph.preemptSignal.test.ts +0 -126
  702. package/src/graphs/__tests__/Graph.reasoning.test.ts +0 -1717
  703. package/src/graphs/__tests__/Graph.subagentResumeState.test.ts +0 -80
  704. package/src/graphs/__tests__/MultiAgentGraph.test.ts +0 -177
  705. package/src/graphs/__tests__/composition.smoke.test.ts +0 -509
  706. package/src/graphs/__tests__/createGraph.test.ts +0 -206
  707. package/src/hooks/__tests__/HookRegistry.test.ts +0 -334
  708. package/src/hooks/__tests__/compactHooks.test.ts +0 -250
  709. package/src/hooks/__tests__/createToolPolicyHook.test.ts +0 -268
  710. package/src/hooks/__tests__/createWorkspacePolicyHook.test.ts +0 -405
  711. package/src/hooks/__tests__/executeHooks.test.ts +0 -1294
  712. package/src/hooks/__tests__/integration.test.ts +0 -337
  713. package/src/hooks/__tests__/matchers.test.ts +0 -238
  714. package/src/hooks/__tests__/preemptBoundary.test.ts +0 -152
  715. package/src/hooks/__tests__/toolHooks.test.ts +0 -669
  716. package/src/llm/__tests__/contextOverflowRecovery.test.ts +0 -401
  717. package/src/llm/__tests__/fallbackOverflow.test.ts +0 -287
  718. package/src/llm/anthropic/Jacob_Lee_Resume_2023.pdf +0 -0
  719. package/src/llm/anthropic/inherited-content-utils.spec.ts +0 -249
  720. package/src/llm/anthropic/inherited-stream-events.spec.ts +0 -1259
  721. package/src/llm/anthropic/inherited-strict.spec.ts +0 -302
  722. package/src/llm/anthropic/llm.spec.ts +0 -3394
  723. package/src/llm/anthropic/utils/cross-provider-reasoning.test.ts +0 -383
  724. package/src/llm/anthropic/utils/cross-provider-server-tools.test.ts +0 -110
  725. package/src/llm/anthropic/utils/server-tool-inputs.test.ts +0 -508
  726. package/src/llm/anthropic/utils/streaming-tool-input.test.ts +0 -361
  727. package/src/llm/anthropic/utils/stripPrefillCache.test.ts +0 -111
  728. package/src/llm/anthropic/utils/tool-id-normalization.test.ts +0 -287
  729. package/src/llm/bedrock/inherited-cache.spec.ts +0 -144
  730. package/src/llm/bedrock/inherited.spec.ts +0 -724
  731. package/src/llm/bedrock/llm.spec.ts +0 -1533
  732. package/src/llm/bedrock/streamSealDispatch.test.ts +0 -331
  733. package/src/llm/bedrock/toolCache.test.ts +0 -194
  734. package/src/llm/bedrock/utils/cross-provider-reasoning.test.ts +0 -131
  735. package/src/llm/bedrock/utils/cross-provider-server-tools.test.ts +0 -122
  736. package/src/llm/bedrock/utils/message_inputs.test.ts +0 -650
  737. package/src/llm/bedrock/utils/message_outputs.test.ts +0 -85
  738. package/src/llm/bedrock/utils/toolResultCachePoint.test.ts +0 -118
  739. package/src/llm/custom-chat-models.smoke.test.ts +0 -1966
  740. package/src/llm/google/data/gettysburg10.wav +0 -0
  741. package/src/llm/google/data/hotdog.jpg +0 -0
  742. package/src/llm/google/inherited-stream-events.spec.ts +0 -350
  743. package/src/llm/google/llm.spec.ts +0 -1388
  744. package/src/llm/google/streamSmoothing.test.ts +0 -121
  745. package/src/llm/google/utils/common.test.ts +0 -196
  746. package/src/llm/invoke.alternation.test.ts +0 -87
  747. package/src/llm/invoke.handoffCue.test.ts +0 -112
  748. package/src/llm/invoke.streamLimits.test.ts +0 -142
  749. package/src/llm/invoke.test.ts +0 -1198
  750. package/src/llm/mistral/streamSmoothing.test.ts +0 -97
  751. package/src/llm/openai/cacheWriteTokens.test.ts +0 -112
  752. package/src/llm/openai/contentBlocks.test.ts +0 -381
  753. package/src/llm/openai/deepseek.test.ts +0 -747
  754. package/src/llm/openai/inherited-deepseek.spec.ts +0 -347
  755. package/src/llm/openai/inherited-xai.spec.ts +0 -416
  756. package/src/llm/openai/llm.spec.ts +0 -1774
  757. package/src/llm/openai/managedRequests.test.ts +0 -182
  758. package/src/llm/openai/sequentialToolCallSeals.test.ts +0 -199
  759. package/src/llm/openai/streamMetadata.spec.ts +0 -86
  760. package/src/llm/openai/streamMetadataDedup.spec.ts +0 -166
  761. package/src/llm/openai/utils/isReasoningModel.test.ts +0 -90
  762. package/src/llm/openai/utils/messages.test.ts +0 -488
  763. package/src/llm/openrouter/reasoning.test.ts +0 -561
  764. package/src/llm/openrouter/toolCache.test.ts +0 -134
  765. package/src/llm/preempt.test.ts +0 -323
  766. package/src/llm/stream/chunkAdapters.test.ts +0 -202
  767. package/src/llm/stream/reassembly.test.ts +0 -241
  768. package/src/llm/stream/smoother.bench.test.ts +0 -155
  769. package/src/llm/stream/smoother.test.ts +0 -519
  770. package/src/llm/streamLimits.test.ts +0 -450
  771. package/src/llm/truncation.test.ts +0 -242
  772. package/src/llm/vertexai/fixThoughtSignatures.test.ts +0 -154
  773. package/src/llm/vertexai/inherited-stream-events.spec.ts +0 -271
  774. package/src/llm/vertexai/llm.spec.ts +0 -159
  775. package/src/llm/vertexai/repairUsageMetadata.test.ts +0 -54
  776. package/src/llm/vertexai/sealStreamedToolCalls.test.ts +0 -88
  777. package/src/llm/vertexai/streamSealDispatch.test.ts +0 -148
  778. package/src/llm/vertexai/streamSmoothing.test.ts +0 -109
  779. package/src/messages/__tests__/anthropicToolCache.test.ts +0 -339
  780. package/src/messages/__tests__/observationMasking.test.ts +0 -312
  781. package/src/messages/__tests__/recency.test.ts +0 -267
  782. package/src/messages/__tests__/tools.test.ts +0 -473
  783. package/src/messages/alternation.test.ts +0 -212
  784. package/src/messages/assistantPhase.test.ts +0 -75
  785. package/src/messages/cache.tail.test.ts +0 -533
  786. package/src/messages/cache.test.ts +0 -2166
  787. package/src/messages/content.test.ts +0 -362
  788. package/src/messages/contextPruning.test.ts +0 -184
  789. package/src/messages/ensureThinkingBlock.test.ts +0 -1427
  790. package/src/messages/foldToollessToolBlocks.test.ts +0 -596
  791. package/src/messages/formatAgentMessages.reducer.test.ts +0 -162
  792. package/src/messages/formatAgentMessages.skills.test.ts +0 -513
  793. package/src/messages/formatAgentMessages.steer.test.ts +0 -598
  794. package/src/messages/formatAgentMessages.test.ts +0 -8111
  795. package/src/messages/formatAgentMessages.tools.test.ts +0 -522
  796. package/src/messages/formatMessage.test.ts +0 -693
  797. package/src/messages/handoffCue.test.ts +0 -96
  798. package/src/messages/injected.test.ts +0 -107
  799. package/src/messages/labelContentByAgent.test.ts +0 -962
  800. package/src/messages/reducer.spec.ts +0 -32
  801. package/src/messages/shiftIndexTokenCountMap.test.ts +0 -81
  802. package/src/messages/tailCacheConversion.test.ts +0 -161
  803. package/src/openai/__tests__/openai.test.ts +0 -337
  804. package/src/responses/__tests__/responses.test.ts +0 -652
  805. package/src/scripts/abort.ts +0 -157
  806. package/src/scripts/activity-labels/captured.json +0 -56
  807. package/src/scripts/activity-labels/checks.cjs +0 -205
  808. package/src/scripts/activity-labels/corpus.cjs +0 -473
  809. package/src/scripts/activity-labels/report.cjs +0 -203
  810. package/src/scripts/activity-labels/rescore.cjs +0 -102
  811. package/src/scripts/activity-labels/run.ts +0 -705
  812. package/src/scripts/activity-labels/variants.ts +0 -71
  813. package/src/scripts/ant_web_search.ts +0 -159
  814. package/src/scripts/ant_web_search_edge_case.ts +0 -163
  815. package/src/scripts/ant_web_search_error_edge_case.ts +0 -149
  816. package/src/scripts/args.ts +0 -48
  817. package/src/scripts/bedrock-cache-debug.ts +0 -250
  818. package/src/scripts/bedrock-content-aggregation-test.ts +0 -266
  819. package/src/scripts/bedrock-merge-test.ts +0 -107
  820. package/src/scripts/bedrock-parallel-tools-test.ts +0 -204
  821. package/src/scripts/bench-prompt-cache.ts +0 -479
  822. package/src/scripts/caching.ts +0 -132
  823. package/src/scripts/cli.ts +0 -172
  824. package/src/scripts/cli2.ts +0 -133
  825. package/src/scripts/cli3.ts +0 -184
  826. package/src/scripts/cli4.ts +0 -191
  827. package/src/scripts/cli5.ts +0 -191
  828. package/src/scripts/code_exec.ts +0 -214
  829. package/src/scripts/code_exec_files.ts +0 -237
  830. package/src/scripts/code_exec_multi_session.ts +0 -237
  831. package/src/scripts/code_exec_ptc.ts +0 -335
  832. package/src/scripts/code_exec_session.ts +0 -283
  833. package/src/scripts/code_exec_simple.ts +0 -148
  834. package/src/scripts/compare_pi_vs_ours.ts +0 -1259
  835. package/src/scripts/content.ts +0 -139
  836. package/src/scripts/context-overflow-probe.ts +0 -997
  837. package/src/scripts/empty_input.ts +0 -137
  838. package/src/scripts/handoff-test.ts +0 -134
  839. package/src/scripts/local_engine.ts +0 -166
  840. package/src/scripts/local_engine_checkpointer.ts +0 -205
  841. package/src/scripts/local_engine_compile.ts +0 -263
  842. package/src/scripts/local_engine_hooks.ts +0 -226
  843. package/src/scripts/local_engine_image.ts +0 -201
  844. package/src/scripts/local_engine_ptc.ts +0 -151
  845. package/src/scripts/local_engine_workspace.ts +0 -258
  846. package/src/scripts/memory.ts +0 -107
  847. package/src/scripts/multi-agent-chain.ts +0 -332
  848. package/src/scripts/multi-agent-conditional.ts +0 -222
  849. package/src/scripts/multi-agent-document-review-chain.ts +0 -198
  850. package/src/scripts/multi-agent-hybrid-flow.ts +0 -311
  851. package/src/scripts/multi-agent-parallel-start.ts +0 -265
  852. package/src/scripts/multi-agent-parallel.ts +0 -395
  853. package/src/scripts/multi-agent-sequence.ts +0 -217
  854. package/src/scripts/multi-agent-subagent.ts +0 -246
  855. package/src/scripts/multi-agent-supervisor.ts +0 -366
  856. package/src/scripts/multi-agent-test.ts +0 -187
  857. package/src/scripts/openrouter_prompt_cache_live.ts +0 -310
  858. package/src/scripts/parallel-asymmetric-tools-test.ts +0 -275
  859. package/src/scripts/parallel-full-metadata-test.ts +0 -241
  860. package/src/scripts/parallel-tools-test.ts +0 -341
  861. package/src/scripts/preempt-probe.ts +0 -330
  862. package/src/scripts/preempt-scenarios.ts +0 -388
  863. package/src/scripts/programmatic_exec.ts +0 -387
  864. package/src/scripts/programmatic_exec_agent.ts +0 -232
  865. package/src/scripts/search.ts +0 -147
  866. package/src/scripts/sequential-full-metadata-test.ts +0 -198
  867. package/src/scripts/session_live.ts +0 -548
  868. package/src/scripts/simple.ts +0 -226
  869. package/src/scripts/single-agent-metadata-test.ts +0 -196
  870. package/src/scripts/stream.ts +0 -141
  871. package/src/scripts/subagent-configurable-inheritance.ts +0 -252
  872. package/src/scripts/subagent-event-driven-debug.ts +0 -190
  873. package/src/scripts/subagent-tools-debug.ts +0 -160
  874. package/src/scripts/subagent-usage-sink.ts +0 -176
  875. package/src/scripts/summarization-recency.ts +0 -462
  876. package/src/scripts/test-custom-prompt-key.ts +0 -145
  877. package/src/scripts/test-handoff-input.ts +0 -170
  878. package/src/scripts/test-handoff-preamble.ts +0 -278
  879. package/src/scripts/test-handoff-steering.ts +0 -430
  880. package/src/scripts/test-multi-agent-list-handoff.ts +0 -418
  881. package/src/scripts/test-parallel-agent-labeling.ts +0 -327
  882. package/src/scripts/test-parallel-handoffs.ts +0 -292
  883. package/src/scripts/test-thinking-handoff-bedrock.ts +0 -154
  884. package/src/scripts/test-thinking-handoff.ts +0 -156
  885. package/src/scripts/test-thinking-to-thinking-handoff-bedrock.ts +0 -166
  886. package/src/scripts/test-tool-before-handoff-role-order.ts +0 -276
  887. package/src/scripts/test-tools-before-handoff.ts +0 -222
  888. package/src/scripts/test_code_api.ts +0 -354
  889. package/src/scripts/thinking-bedrock.ts +0 -160
  890. package/src/scripts/thinking-vertexai.ts +0 -168
  891. package/src/scripts/thinking.ts +0 -172
  892. package/src/scripts/tool_search.ts +0 -153
  893. package/src/scripts/tools.ts +0 -163
  894. package/src/session/__tests__/JsonlSessionStore.test.ts +0 -1463
  895. package/src/session/__tests__/handlers.test.ts +0 -161
  896. package/src/specs/activity-label-observability.live.test.ts +0 -262
  897. package/src/specs/activity-label-observability.test.ts +0 -167
  898. package/src/specs/activity-label-prompt.test.ts +0 -359
  899. package/src/specs/activity-label-trace-seed.test.ts +0 -47
  900. package/src/specs/activity-phase-label.test.ts +0 -306
  901. package/src/specs/agent-handoffs.live.test.ts +0 -140
  902. package/src/specs/agent-handoffs.test.ts +0 -2465
  903. package/src/specs/anthropic.simple.test.ts +0 -453
  904. package/src/specs/ask-user-question-batch.test.ts +0 -289
  905. package/src/specs/ask-user-questions.live.test.ts +0 -185
  906. package/src/specs/ask-user-questions.test.ts +0 -293
  907. package/src/specs/azure.simple.test.ts +0 -502
  908. package/src/specs/bedrock-toolless.live.test.ts +0 -123
  909. package/src/specs/bedrock-truncation.live.test.ts +0 -191
  910. package/src/specs/cache.simple.test.ts +0 -416
  911. package/src/specs/context-accuracy.live.test.ts +0 -409
  912. package/src/specs/context-overflow-recovery.live.test.ts +0 -213
  913. package/src/specs/context-usage-event.test.ts +0 -117
  914. package/src/specs/context-usage.live.test.ts +0 -297
  915. package/src/specs/custom-event-await.test.ts +0 -304
  916. package/src/specs/deepseek.simple.test.ts +0 -290
  917. package/src/specs/deterministic-trace-id.test.ts +0 -43
  918. package/src/specs/discovered-tools.test.ts +0 -217
  919. package/src/specs/durability-checkpoint.integration.test.ts +0 -243
  920. package/src/specs/graph-subagent.live.test.ts +0 -242
  921. package/src/specs/graph-subagent.test.ts +0 -322
  922. package/src/specs/handoffCue.test.ts +0 -165
  923. package/src/specs/langfuse-callbacks.test.ts +0 -1578
  924. package/src/specs/langfuse-config.test.ts +0 -247
  925. package/src/specs/langfuse-instrumentation.test.ts +0 -393
  926. package/src/specs/langfuse-metadata.test.ts +0 -245
  927. package/src/specs/langfuse-routing.integration.test.ts +0 -844
  928. package/src/specs/langfuse-runtime-context.test.ts +0 -92
  929. package/src/specs/langfuse-span-registry.test.ts +0 -87
  930. package/src/specs/langfuse-tool-output-tracing.test.ts +0 -1858
  931. package/src/specs/langfuse-trace-shaping.test.ts +0 -591
  932. package/src/specs/moonshot.simple.test.ts +0 -367
  933. package/src/specs/multi-agent-summarization.test.ts +0 -396
  934. package/src/specs/openai.simple.test.ts +0 -315
  935. package/src/specs/openrouter.simple.test.ts +0 -275
  936. package/src/specs/preemptSeal.test.ts +0 -678
  937. package/src/specs/prune.test.ts +0 -3741
  938. package/src/specs/reasoning.test.ts +0 -201
  939. package/src/specs/run-step-timestamps.test.ts +0 -414
  940. package/src/specs/spec.utils.ts +0 -15
  941. package/src/specs/subagent.test.ts +0 -864
  942. package/src/specs/summarization-unit.test.ts +0 -973
  943. package/src/specs/summarization.test.ts +0 -3823
  944. package/src/specs/summarize-prune.test.ts +0 -376
  945. package/src/specs/thinking-handoff.test.ts +0 -621
  946. package/src/specs/thinking-prune.test.ts +0 -827
  947. package/src/specs/token-accounting-e2e.test.ts +0 -1034
  948. package/src/specs/token-accounting-pipeline.test.ts +0 -1008
  949. package/src/specs/token-distribution-edge-case.test.ts +0 -315
  950. package/src/specs/token-memoization.test.ts +0 -40
  951. package/src/specs/tokens.test.ts +0 -1000
  952. package/src/specs/tool-error-resume.test.ts +0 -194
  953. package/src/specs/tool-error.test.ts +0 -198
  954. package/src/specs/vllm-reasoning-toolcalls.test.ts +0 -340
  955. package/src/stream.dispatch.test.ts +0 -63
  956. package/src/stream.test.ts +0 -144
  957. package/src/summarization/__tests__/aggregator.test.ts +0 -236
  958. package/src/summarization/__tests__/node.test.ts +0 -1996
  959. package/src/summarization/__tests__/trigger.test.ts +0 -149
  960. package/src/summarization/chunkHandler.test.ts +0 -196
  961. package/src/test/mockTools.ts +0 -386
  962. package/src/tools/Calculator.test.ts +0 -278
  963. package/src/tools/__tests__/BashExecutor.test.ts +0 -108
  964. package/src/tools/__tests__/CloudflareSandboxExecution.test.ts +0 -939
  965. package/src/tools/__tests__/CodeApiAuthHeaders.test.ts +0 -858
  966. package/src/tools/__tests__/CodeExecutor.stateful.test.ts +0 -124
  967. package/src/tools/__tests__/LocalExecutionRoots.test.ts +0 -8
  968. package/src/tools/__tests__/LocalExecutionTools.test.ts +0 -2733
  969. package/src/tools/__tests__/ProgrammaticToolCalling.integration.test.ts +0 -318
  970. package/src/tools/__tests__/ProgrammaticToolCalling.test.ts +0 -1557
  971. package/src/tools/__tests__/ReadFile.test.ts +0 -44
  972. package/src/tools/__tests__/SkillTool.test.ts +0 -442
  973. package/src/tools/__tests__/SubagentExecutor.test.ts +0 -3728
  974. package/src/tools/__tests__/SubagentReplay.test.ts +0 -329
  975. package/src/tools/__tests__/SubagentTool.test.ts +0 -149
  976. package/src/tools/__tests__/ToolNode.breakerSignal.test.ts +0 -595
  977. package/src/tools/__tests__/ToolNode.eagerEventExecution.test.ts +0 -1191
  978. package/src/tools/__tests__/ToolNode.invalidToolCalls.test.ts +0 -757
  979. package/src/tools/__tests__/ToolNode.langfuse.test.ts +0 -57
  980. package/src/tools/__tests__/ToolNode.onResultCompletion.test.ts +0 -736
  981. package/src/tools/__tests__/ToolNode.outputReferences.test.ts +0 -1710
  982. package/src/tools/__tests__/ToolNode.runtimeState.test.ts +0 -120
  983. package/src/tools/__tests__/ToolNode.session.test.ts +0 -1352
  984. package/src/tools/__tests__/ToolNode.streamLimits.test.ts +0 -69
  985. package/src/tools/__tests__/ToolSearch.integration.test.ts +0 -161
  986. package/src/tools/__tests__/ToolSearch.test.ts +0 -1227
  987. package/src/tools/__tests__/annotateMessagesForLLM.test.ts +0 -561
  988. package/src/tools/__tests__/directToolHITLResumeScope.test.ts +0 -980
  989. package/src/tools/__tests__/directToolHooks.test.ts +0 -700
  990. package/src/tools/__tests__/eagerEventExecution.session.test.ts +0 -92
  991. package/src/tools/__tests__/handlers.test.ts +0 -997
  992. package/src/tools/__tests__/hitl.test.ts +0 -4663
  993. package/src/tools/__tests__/intentArg.test.ts +0 -357
  994. package/src/tools/__tests__/intentCoverage.test.ts +0 -139
  995. package/src/tools/__tests__/localToolNames.test.ts +0 -75
  996. package/src/tools/__tests__/skillCatalog.test.ts +0 -161
  997. package/src/tools/__tests__/subagentHooks.test.ts +0 -1651
  998. package/src/tools/__tests__/toolOutputReferences.test.ts +0 -515
  999. package/src/tools/__tests__/workspaceSeam.test.ts +0 -147
  1000. package/src/tools/local/__tests__/FileCheckpointer.test.ts +0 -162
  1001. package/src/tools/local/__tests__/editStrategies.test.ts +0 -134
  1002. package/src/tools/search/content.test.ts +0 -173
  1003. package/src/tools/search/crw.test.ts +0 -836
  1004. package/src/tools/search/format.test.ts +0 -242
  1005. package/src/tools/search/http-agent.test.ts +0 -133
  1006. package/src/tools/search/jina-reranker.test.ts +0 -306
  1007. package/src/tools/search/keenable-scraper.test.ts +0 -153
  1008. package/src/tools/search/keenable.test.ts +0 -183
  1009. package/src/tools/search/outcome.test.ts +0 -90
  1010. package/src/tools/search/output.md +0 -2775
  1011. package/src/tools/search/rag-api-reranker.test.ts +0 -891
  1012. package/src/tools/search/source-processing.test.ts +0 -516
  1013. package/src/tools/search/tavily.test.ts +0 -965
  1014. package/src/tools/search/test.html +0 -884
  1015. package/src/tools/search/test.md +0 -643
  1016. package/src/tools/subagent/__tests__/SubagentExecutionRegistry.test.ts +0 -637
  1017. package/src/tools/subagent/__tests__/SubagentExecutor.lazy.test.ts +0 -3054
  1018. package/src/tools/subagent/__tests__/childGraphConfig.test.ts +0 -521
  1019. package/src/utils/__tests__/apportion.test.ts +0 -32
  1020. package/src/utils/__tests__/errors.test.ts +0 -270
  1021. package/src/utils/__tests__/fixtures/contextOverflowSignatures.ts +0 -336
  1022. package/src/utils/__tests__/redactSecrets.test.ts +0 -56
  1023. package/src/utils/__tests__/truncation.test.ts +0 -66
  1024. package/src/utils/llm.test.ts +0 -18
  1025. package/src/utils/proxy.test.ts +0 -176
  1026. package/src/utils/toolContent.test.ts +0 -1432
@@ -2,9 +2,6 @@ import { createDefaultLogger, formatErrorForLog } from "./utils.mjs";
2
2
  import axios from "axios";
3
3
  //#region src/tools/search/rerankers.ts
4
4
  const DEFAULT_JINA_API_URL = "https://api.jina.ai/v1/rerank";
5
- /** Every other network call in the search pipeline is bounded (scrapers,
6
- * search providers); rerank requests must be too, or a hung rerank API
7
- * stalls the whole tool. */
8
5
  const DEFAULT_RERANKER_TIMEOUT = 1e4;
9
6
  const getDefaultJinaApiUrl = () => process.env.JINA_API_URL != null && process.env.JINA_API_URL !== "" ? process.env.JINA_API_URL : DEFAULT_JINA_API_URL;
10
7
  var BaseReranker = class {
@@ -135,9 +132,6 @@ var CohereReranker = class extends BaseReranker {
135
132
  }
136
133
  }
137
134
  };
138
- /** rag_api's `/v1/rerank` contract caps candidates at 50 and `top_n` at 25;
139
- * violating either is a client bug, not a server error, so both are clamped
140
- * locally with a debug log instead of erroring. */
141
135
  const RAG_API_MAX_CANDIDATES = 50;
142
136
  const RAG_API_MAX_TOP_N = 25;
143
137
  const RAG_API_DEFAULT_PROFILE = "fast-v1";
@@ -147,9 +141,6 @@ const toRagApiCandidate = (text, index) => ({
147
141
  text,
148
142
  base_score: 0
149
143
  });
150
- /** A single source split into overlapping chunks routinely exceeds the
151
- * contract limit, so documents are capped before any candidate is built:
152
- * only the submittable window is ever allocated. */
153
144
  const buildRagApiCandidates = (documents, logger) => {
154
145
  if (documents.length <= RAG_API_MAX_CANDIDATES) return documents.map(toRagApiCandidate);
155
146
  logger.debug(`rag_api fast-v1 accepts at most ${RAG_API_MAX_CANDIDATES} candidates; truncating ${documents.length} to ${RAG_API_MAX_CANDIDATES}.`);
@@ -160,16 +151,8 @@ const clampRagApiTopN = (topN, logger) => {
160
151
  logger.debug(`rag_api fast-v1 accepts top_n <= ${RAG_API_MAX_TOP_N}; clamping ${topN} to ${RAG_API_MAX_TOP_N}.`);
161
152
  return RAG_API_MAX_TOP_N;
162
153
  };
163
- /** Deterministic tie ordering: rank by score descending, breaking ties on
164
- * original candidate index rather than relying on rag_api's response order. */
165
154
  const sortRagApiResults = (results) => [...results].sort((a, b) => b.score - a.score || a.index - b.index);
166
- /** Indices are only meaningful against the candidates actually submitted:
167
- * anything beyond `candidateCount` refers to text the server never saw. */
168
155
  const isValidRagApiResult = (result, candidateCount) => result != null && typeof result.index === "number" && Number.isInteger(result.index) && result.index >= 0 && result.index < candidateCount && typeof result.score === "number" && Number.isFinite(result.score);
169
- /** A repeated index would map one document into several `top_n` slots and
170
- * silently drop distinct results, so a duplicate invalidates the batch just
171
- * like any other malformed row. Seen indices are tracked in the same pass
172
- * that validates each row. */
173
156
  const isValidRagApiBatch = (results, candidateCount) => {
174
157
  const seenIndices = /* @__PURE__ */ new Set();
175
158
  return results.every((result) => {
@@ -179,12 +162,6 @@ const isValidRagApiBatch = (results, candidateCount) => {
179
162
  return true;
180
163
  });
181
164
  };
182
- /** Bounds the whole rerank round trip, token acquisition included: the
183
- * supplier mints its token over the network, so awaiting it before axios
184
- * starts would leave the search unbounded whenever an auth service stalls.
185
- * The signal reaches both legs, so returning a fallback also cancels whatever
186
- * is still in flight rather than leaving a request running past its caller.
187
- * A non-positive timeout keeps axios' "no timeout" semantics. */
188
165
  const withRerankDeadline = (operation, timeout) => {
189
166
  if (timeout <= 0) return operation();
190
167
  const controller = new AbortController();
@@ -199,15 +176,6 @@ const withRerankDeadline = (operation, timeout) => {
199
176
  pending.catch(() => void 0);
200
177
  return Promise.race([pending, deadline]).finally(() => clearTimeout(timer));
201
178
  };
202
- /**
203
- * Calls the public `danny-avila/rag_api` `/v1/rerank` endpoint (the
204
- * `fast-v1` profile). Auth is supplied per call by a token supplier (a
205
- * short-lived JWT minted by the host app) rather than a static key. A
206
- * reranker failure must never throw into the search flow: on a missing
207
- * base URL/token supplier, a timeout (covering token acquisition as well as
208
- * the request), a non-2xx response, or any malformed payload, this falls back
209
- * to the candidates' original order via {@link BaseReranker.getDefaultRanking}.
210
- */
211
179
  var RagApiReranker = class extends BaseReranker {
212
180
  baseUrl;
213
181
  tokenSupplier;
@@ -288,9 +256,6 @@ var InfinityReranker = class extends BaseReranker {
288
256
  return this.getDefaultRanking(documents, topK);
289
257
  }
290
258
  };
291
- /**
292
- * Creates the appropriate reranker based on type and configuration
293
- */
294
259
  const createReranker = (config) => {
295
260
  const { rerankerType, jinaApiKey, jinaApiUrl, cohereApiKey, ragApiUrl, ragApiTokenSupplier, ragApiProfile, rerankerTimeout, logger, httpAgent, httpsAgent } = config;
296
261
  const defaultLogger = logger || createDefaultLogger();
@@ -1 +1 @@
1
- {"version":3,"file":"rerankers.mjs","names":[],"sources":["../../../../src/tools/search/rerankers.ts"],"sourcesContent":["import axios from 'axios';\nimport type * as t from './types';\nimport { createDefaultLogger, formatErrorForLog } from './utils';\n\nconst DEFAULT_JINA_API_URL = 'https://api.jina.ai/v1/rerank';\n\n/** Every other network call in the search pipeline is bounded (scrapers,\n * search providers); rerank requests must be too, or a hung rerank API\n * stalls the whole tool. */\nconst DEFAULT_RERANKER_TIMEOUT = 10000;\n\nconst getDefaultJinaApiUrl = (): string =>\n process.env.JINA_API_URL != null && process.env.JINA_API_URL !== ''\n ? process.env.JINA_API_URL\n : DEFAULT_JINA_API_URL;\n\nexport abstract class BaseReranker {\n protected apiKey: string | undefined;\n protected logger: t.Logger;\n\n constructor(logger?: t.Logger) {\n // Each specific reranker will set its API key\n this.logger = logger || createDefaultLogger();\n }\n\n abstract rerank(\n query: string,\n documents: string[],\n topK?: number\n ): Promise<t.Highlight[]>;\n\n protected getDefaultRanking(\n documents: string[],\n topK: number\n ): t.Highlight[] {\n return documents\n .slice(0, Math.min(topK, documents.length))\n .map((doc) => ({ text: doc, score: 0 }));\n }\n}\n\nexport class JinaReranker extends BaseReranker {\n private apiUrl: string;\n private timeout: number;\n private httpAgent?: t.HttpAgent;\n private httpsAgent?: t.HttpsAgent;\n\n constructor({\n apiKey = process.env.JINA_API_KEY,\n apiUrl = getDefaultJinaApiUrl(),\n timeout = DEFAULT_RERANKER_TIMEOUT,\n logger,\n httpAgent,\n httpsAgent,\n }: {\n apiKey?: string;\n apiUrl?: string;\n timeout?: number;\n logger?: t.Logger;\n } & t.HttpAgentConfig) {\n super(logger);\n this.apiKey = apiKey;\n this.apiUrl = apiUrl;\n this.timeout = timeout;\n this.httpAgent = httpAgent;\n this.httpsAgent = httpsAgent;\n }\n\n async rerank(\n query: string,\n documents: string[],\n topK: number = 5\n ): Promise<t.Highlight[]> {\n this.logger.debug(\n `Reranking ${documents.length} chunks with Jina using API URL: ${this.apiUrl}`\n );\n\n try {\n if (this.apiKey == null || this.apiKey === '') {\n this.logger.warn('JINA_API_KEY is not set. Using default ranking.');\n return this.getDefaultRanking(documents, topK);\n }\n\n const requestData = {\n model: 'jina-reranker-v2-base-multilingual',\n query: query,\n top_n: topK,\n documents: documents,\n return_documents: true,\n };\n\n const response = await axios.post<t.JinaRerankerResponse | undefined>(\n this.apiUrl,\n requestData,\n {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${this.apiKey}`,\n },\n timeout: this.timeout,\n httpAgent: this.httpAgent,\n httpsAgent: this.httpsAgent,\n }\n );\n\n this.logger.debug('Jina API Model:', response.data?.model);\n this.logger.debug('Jina API Usage:', response.data?.usage);\n\n if (response.data && response.data.results.length) {\n return response.data.results.map((result) => {\n const docIndex = result.index;\n const score = result.relevance_score;\n let text = '';\n\n // If return_documents is true, the document field will be present\n if (result.document != null) {\n const doc = result.document;\n if (typeof doc === 'object' && 'text' in doc) {\n text = doc.text;\n } else if (typeof doc === 'string') {\n text = doc;\n }\n } else {\n // Otherwise, use the index to get the document\n text = documents[docIndex];\n }\n\n return { text, score };\n });\n } else {\n this.logger.warn(\n 'Unexpected response format from Jina API. Using default ranking.'\n );\n return this.getDefaultRanking(documents, topK);\n }\n } catch (error) {\n this.logger.error('Error using Jina reranker', formatErrorForLog(error));\n // Fallback to default ranking on error\n return this.getDefaultRanking(documents, topK);\n }\n }\n}\n\nexport class CohereReranker extends BaseReranker {\n private timeout: number;\n private httpAgent?: t.HttpAgent;\n private httpsAgent?: t.HttpsAgent;\n\n constructor({\n apiKey = process.env.COHERE_API_KEY,\n timeout = DEFAULT_RERANKER_TIMEOUT,\n logger,\n httpAgent,\n httpsAgent,\n }: {\n apiKey?: string;\n timeout?: number;\n logger?: t.Logger;\n } & t.HttpAgentConfig) {\n super(logger);\n this.apiKey = apiKey;\n this.timeout = timeout;\n this.httpAgent = httpAgent;\n this.httpsAgent = httpsAgent;\n }\n\n async rerank(\n query: string,\n documents: string[],\n topK: number = 5\n ): Promise<t.Highlight[]> {\n this.logger.debug(`Reranking ${documents.length} chunks with Cohere`);\n\n try {\n if (this.apiKey == null || this.apiKey === '') {\n this.logger.warn('COHERE_API_KEY is not set. Using default ranking.');\n return this.getDefaultRanking(documents, topK);\n }\n\n const requestData = {\n model: 'rerank-v3.5',\n query: query,\n top_n: topK,\n documents: documents,\n };\n\n const response = await axios.post<t.CohereRerankerResponse | undefined>(\n 'https://api.cohere.com/v2/rerank',\n requestData,\n {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${this.apiKey}`,\n },\n timeout: this.timeout,\n httpAgent: this.httpAgent,\n httpsAgent: this.httpsAgent,\n }\n );\n\n this.logger.debug('Cohere API ID:', response.data?.id);\n this.logger.debug('Cohere API Meta:', response.data?.meta);\n\n if (response.data && response.data.results.length) {\n return response.data.results.map((result) => {\n const docIndex = result.index;\n const score = result.relevance_score;\n const text = documents[docIndex];\n return { text, score };\n });\n } else {\n this.logger.warn(\n 'Unexpected response format from Cohere API. Using default ranking.'\n );\n return this.getDefaultRanking(documents, topK);\n }\n } catch (error) {\n this.logger.error(\n 'Error using Cohere reranker',\n formatErrorForLog(error)\n );\n // Fallback to default ranking on error\n return this.getDefaultRanking(documents, topK);\n }\n }\n}\n\n/** rag_api's `/v1/rerank` contract caps candidates at 50 and `top_n` at 25;\n * violating either is a client bug, not a server error, so both are clamped\n * locally with a debug log instead of erroring. */\nconst RAG_API_MAX_CANDIDATES = 50;\nconst RAG_API_MAX_TOP_N = 25;\nconst RAG_API_DEFAULT_PROFILE = 'fast-v1';\n\nconst getDefaultRagApiUrl = (): string | undefined =>\n process.env.RAG_API_URL != null && process.env.RAG_API_URL !== ''\n ? process.env.RAG_API_URL\n : undefined;\n\nconst toRagApiCandidate = (\n text: string,\n index: number\n): t.RagApiRerankCandidate => ({ id: String(index), text, base_score: 0 });\n\n/** A single source split into overlapping chunks routinely exceeds the\n * contract limit, so documents are capped before any candidate is built:\n * only the submittable window is ever allocated. */\nconst buildRagApiCandidates = (\n documents: string[],\n logger: t.Logger\n): t.RagApiRerankCandidate[] => {\n if (documents.length <= RAG_API_MAX_CANDIDATES) {\n return documents.map(toRagApiCandidate);\n }\n logger.debug(\n `rag_api fast-v1 accepts at most ${RAG_API_MAX_CANDIDATES} candidates; truncating ${documents.length} to ${RAG_API_MAX_CANDIDATES}.`\n );\n return documents.slice(0, RAG_API_MAX_CANDIDATES).map(toRagApiCandidate);\n};\n\nconst clampRagApiTopN = (topN: number, logger: t.Logger): number => {\n if (topN <= RAG_API_MAX_TOP_N) {\n return topN;\n }\n logger.debug(\n `rag_api fast-v1 accepts top_n <= ${RAG_API_MAX_TOP_N}; clamping ${topN} to ${RAG_API_MAX_TOP_N}.`\n );\n return RAG_API_MAX_TOP_N;\n};\n\n/** Deterministic tie ordering: rank by score descending, breaking ties on\n * original candidate index rather than relying on rag_api's response order. */\nconst sortRagApiResults = (\n results: t.RagApiRerankResult[]\n): t.RagApiRerankResult[] =>\n [...results].sort((a, b) => b.score - a.score || a.index - b.index);\n\n/** Indices are only meaningful against the candidates actually submitted:\n * anything beyond `candidateCount` refers to text the server never saw. */\nconst isValidRagApiResult = (\n result: t.RagApiRerankResult | undefined,\n candidateCount: number\n): result is t.RagApiRerankResult =>\n result != null &&\n typeof result.index === 'number' &&\n Number.isInteger(result.index) &&\n result.index >= 0 &&\n result.index < candidateCount &&\n typeof result.score === 'number' &&\n Number.isFinite(result.score);\n\n/** A repeated index would map one document into several `top_n` slots and\n * silently drop distinct results, so a duplicate invalidates the batch just\n * like any other malformed row. Seen indices are tracked in the same pass\n * that validates each row. */\nconst isValidRagApiBatch = (\n results: t.RagApiRerankResult[],\n candidateCount: number\n): boolean => {\n const seenIndices = new Set<number>();\n return results.every((result) => {\n if (!isValidRagApiResult(result, candidateCount)) {\n return false;\n }\n if (seenIndices.has(result.index)) {\n return false;\n }\n seenIndices.add(result.index);\n return true;\n });\n};\n\n/** Bounds the whole rerank round trip, token acquisition included: the\n * supplier mints its token over the network, so awaiting it before axios\n * starts would leave the search unbounded whenever an auth service stalls.\n * The signal reaches both legs, so returning a fallback also cancels whatever\n * is still in flight rather than leaving a request running past its caller.\n * A non-positive timeout keeps axios' \"no timeout\" semantics. */\nconst withRerankDeadline = <T>(\n operation: (signal?: AbortSignal) => Promise<T>,\n timeout: number\n): Promise<T> => {\n if (timeout <= 0) {\n return operation();\n }\n\n const controller = new AbortController();\n let timer: ReturnType<typeof setTimeout> | undefined;\n const deadline = new Promise<never>((_resolve, reject) => {\n timer = setTimeout(() => {\n controller.abort();\n reject(new Error(`rag_api rerank exceeded its ${timeout}ms timeout.`));\n }, timeout);\n });\n\n const pending = operation(controller.signal);\n pending.catch(() => undefined);\n\n return Promise.race([pending, deadline]).finally(() => clearTimeout(timer));\n};\n\n/**\n * Calls the public `danny-avila/rag_api` `/v1/rerank` endpoint (the\n * `fast-v1` profile). Auth is supplied per call by a token supplier (a\n * short-lived JWT minted by the host app) rather than a static key. A\n * reranker failure must never throw into the search flow: on a missing\n * base URL/token supplier, a timeout (covering token acquisition as well as\n * the request), a non-2xx response, or any malformed payload, this falls back\n * to the candidates' original order via {@link BaseReranker.getDefaultRanking}.\n */\nexport class RagApiReranker extends BaseReranker {\n private baseUrl?: string;\n private tokenSupplier?: t.RagApiTokenSupplier;\n private profile: string;\n private timeout: number;\n private httpAgent?: t.HttpAgent;\n private httpsAgent?: t.HttpsAgent;\n\n constructor({\n baseUrl = getDefaultRagApiUrl(),\n tokenSupplier,\n profile = RAG_API_DEFAULT_PROFILE,\n timeout = DEFAULT_RERANKER_TIMEOUT,\n logger,\n httpAgent,\n httpsAgent,\n }: {\n baseUrl?: string;\n tokenSupplier?: t.RagApiTokenSupplier;\n profile?: string;\n timeout?: number;\n logger?: t.Logger;\n } & t.HttpAgentConfig) {\n super(logger);\n this.baseUrl = baseUrl?.replace(/\\/+$/, '');\n this.tokenSupplier = tokenSupplier;\n this.profile = profile;\n this.timeout = timeout;\n this.httpAgent = httpAgent;\n this.httpsAgent = httpsAgent;\n }\n\n async rerank(\n query: string,\n documents: string[],\n topK: number = 5\n ): Promise<t.Highlight[]> {\n if (documents.length === 0) {\n return [];\n }\n\n this.logger.debug(\n `Reranking ${documents.length} chunks with rag_api (${this.profile}) using base URL: ${this.baseUrl}`\n );\n\n const baseUrl = this.baseUrl;\n if (baseUrl == null || baseUrl === '') {\n this.logger.warn('RAG_API_URL is not set. Using default ranking.');\n return this.getDefaultRanking(documents, topK);\n }\n\n const tokenSupplier = this.tokenSupplier;\n if (tokenSupplier == null) {\n this.logger.warn(\n 'No rag_api token supplier configured. Using default ranking.'\n );\n return this.getDefaultRanking(documents, topK);\n }\n\n const candidates = buildRagApiCandidates(documents, this.logger);\n const topN = clampRagApiTopN(Math.max(0, topK), this.logger);\n const requestData: t.RagApiRerankRequestBody = {\n profile: this.profile,\n query,\n candidates,\n top_n: topN,\n };\n\n try {\n const data = await withRerankDeadline(async (signal) => {\n const token = await tokenSupplier(signal);\n const response = await axios.post<t.RagApiRerankResponse | undefined>(\n `${baseUrl}/v1/rerank`,\n requestData,\n {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${token}`,\n },\n timeout: this.timeout,\n httpAgent: this.httpAgent,\n httpsAgent: this.httpsAgent,\n signal,\n }\n );\n return response.data;\n }, this.timeout);\n\n this.logger.debug('rag_api rerank model:', data?.model);\n\n const rawResults = data?.results;\n if (!Array.isArray(rawResults) || rawResults.length === 0) {\n this.logger.warn(\n 'Unexpected response format from rag_api rerank. Using default ranking.'\n );\n return this.getDefaultRanking(documents, topK);\n }\n\n if (!isValidRagApiBatch(rawResults, candidates.length)) {\n this.logger.warn(\n 'rag_api rerank response contained no valid results. Using default ranking.'\n );\n return this.getDefaultRanking(documents, topK);\n }\n\n return sortRagApiResults(rawResults)\n .slice(0, topN)\n .map((result) => ({\n text: documents[result.index],\n score: result.score,\n }));\n } catch (error) {\n this.logger.error(\n 'Error using rag_api reranker',\n formatErrorForLog(error)\n );\n return this.getDefaultRanking(documents, topK);\n }\n }\n}\n\nexport class InfinityReranker extends BaseReranker {\n constructor(logger?: t.Logger) {\n super(logger);\n // No API key needed for the placeholder implementation\n }\n\n async rerank(\n query: string,\n documents: string[],\n topK: number = 5\n ): Promise<t.Highlight[]> {\n this.logger.debug(\n `Reranking ${documents.length} chunks with Infinity (placeholder)`\n );\n // This would be replaced with actual Infinity reranker implementation\n return this.getDefaultRanking(documents, topK);\n }\n}\n\n/**\n * Creates the appropriate reranker based on type and configuration\n */\nexport const createReranker = (\n config: {\n rerankerType: t.RerankerType;\n jinaApiKey?: string;\n jinaApiUrl?: string;\n cohereApiKey?: string;\n ragApiUrl?: string;\n ragApiTokenSupplier?: t.RagApiTokenSupplier;\n ragApiProfile?: string;\n rerankerTimeout?: number;\n logger?: t.Logger;\n } & t.HttpAgentConfig\n): BaseReranker | undefined => {\n const {\n rerankerType,\n jinaApiKey,\n jinaApiUrl,\n cohereApiKey,\n ragApiUrl,\n ragApiTokenSupplier,\n ragApiProfile,\n rerankerTimeout,\n logger,\n httpAgent,\n httpsAgent,\n } = config;\n\n // Create a default logger if none is provided\n const defaultLogger = logger || createDefaultLogger();\n\n switch (rerankerType.toLowerCase()) {\n case 'jina':\n return new JinaReranker({\n apiKey: jinaApiKey,\n apiUrl: jinaApiUrl,\n timeout: rerankerTimeout,\n logger: defaultLogger,\n httpAgent,\n httpsAgent,\n });\n case 'cohere':\n return new CohereReranker({\n apiKey: cohereApiKey,\n timeout: rerankerTimeout,\n logger: defaultLogger,\n httpAgent,\n httpsAgent,\n });\n case 'rag-api':\n return new RagApiReranker({\n baseUrl: ragApiUrl,\n tokenSupplier: ragApiTokenSupplier,\n profile: ragApiProfile,\n timeout: rerankerTimeout,\n logger: defaultLogger,\n httpAgent,\n httpsAgent,\n });\n case 'infinity':\n return new InfinityReranker(defaultLogger);\n case 'none':\n defaultLogger.debug('Skipping reranking as reranker is set to \"none\"');\n return undefined;\n default:\n defaultLogger.warn(\n `Unknown reranker type: ${rerankerType}. Defaulting to InfinityReranker.`\n );\n return new JinaReranker({\n apiKey: jinaApiKey,\n apiUrl: jinaApiUrl,\n timeout: rerankerTimeout,\n logger: defaultLogger,\n httpAgent,\n httpsAgent,\n });\n }\n};\n\n// Example usage:\n// const jinaReranker = new JinaReranker();\n// const cohereReranker = new CohereReranker();\n// const infinityReranker = new InfinityReranker();\n"],"mappings":";;;AAIA,MAAM,uBAAuB;;;;AAK7B,MAAM,2BAA2B;AAEjC,MAAM,6BACJ,QAAQ,IAAI,gBAAgB,QAAQ,QAAQ,IAAI,iBAAiB,KAC7D,QAAQ,IAAI,eACZ;AAEN,IAAsB,eAAtB,MAAmC;CACjC;CACA;CAEA,YAAY,QAAmB;EAE7B,KAAK,SAAS,UAAU,oBAAoB;CAC9C;CAQA,kBACE,WACA,MACe;EACf,OAAO,UACJ,MAAM,GAAG,KAAK,IAAI,MAAM,UAAU,MAAM,CAAC,CAAC,CAC1C,KAAK,SAAS;GAAE,MAAM;GAAK,OAAO;EAAE,EAAE;CAC3C;AACF;AAEA,IAAa,eAAb,cAAkC,aAAa;CAC7C;CACA;CACA;CACA;CAEA,YAAY,EACV,SAAS,QAAQ,IAAI,cACrB,SAAS,qBAAqB,GAC9B,UAAU,0BACV,QACA,WACA,cAMqB;EACrB,MAAM,MAAM;EACZ,KAAK,SAAS;EACd,KAAK,SAAS;EACd,KAAK,UAAU;EACf,KAAK,YAAY;EACjB,KAAK,aAAa;CACpB;CAEA,MAAM,OACJ,OACA,WACA,OAAe,GACS;EACxB,KAAK,OAAO,MACV,aAAa,UAAU,OAAO,mCAAmC,KAAK,QACxE;EAEA,IAAI;GACF,IAAI,KAAK,UAAU,QAAQ,KAAK,WAAW,IAAI;IAC7C,KAAK,OAAO,KAAK,iDAAiD;IAClE,OAAO,KAAK,kBAAkB,WAAW,IAAI;GAC/C;GAEA,MAAM,cAAc;IAClB,OAAO;IACA;IACP,OAAO;IACI;IACX,kBAAkB;GACpB;GAEA,MAAM,WAAW,MAAM,MAAM,KAC3B,KAAK,QACL,aACA;IACE,SAAS;KACP,gBAAgB;KAChB,eAAe,UAAU,KAAK;IAChC;IACA,SAAS,KAAK;IACd,WAAW,KAAK;IAChB,YAAY,KAAK;GACnB,CACF;GAEA,KAAK,OAAO,MAAM,mBAAmB,SAAS,MAAM,KAAK;GACzD,KAAK,OAAO,MAAM,mBAAmB,SAAS,MAAM,KAAK;GAEzD,IAAI,SAAS,QAAQ,SAAS,KAAK,QAAQ,QACzC,OAAO,SAAS,KAAK,QAAQ,KAAK,WAAW;IAC3C,MAAM,WAAW,OAAO;IACxB,MAAM,QAAQ,OAAO;IACrB,IAAI,OAAO;IAGX,IAAI,OAAO,YAAY,MAAM;KAC3B,MAAM,MAAM,OAAO;KACnB,IAAI,OAAO,QAAQ,YAAY,UAAU,KACvC,OAAO,IAAI;UACN,IAAI,OAAO,QAAQ,UACxB,OAAO;IAEX,OAEE,OAAO,UAAU;IAGnB,OAAO;KAAE;KAAM;IAAM;GACvB,CAAC;QACI;IACL,KAAK,OAAO,KACV,kEACF;IACA,OAAO,KAAK,kBAAkB,WAAW,IAAI;GAC/C;EACF,SAAS,OAAO;GACd,KAAK,OAAO,MAAM,6BAA6B,kBAAkB,KAAK,CAAC;GAEvE,OAAO,KAAK,kBAAkB,WAAW,IAAI;EAC/C;CACF;AACF;AAEA,IAAa,iBAAb,cAAoC,aAAa;CAC/C;CACA;CACA;CAEA,YAAY,EACV,SAAS,QAAQ,IAAI,gBACrB,UAAU,0BACV,QACA,WACA,cAKqB;EACrB,MAAM,MAAM;EACZ,KAAK,SAAS;EACd,KAAK,UAAU;EACf,KAAK,YAAY;EACjB,KAAK,aAAa;CACpB;CAEA,MAAM,OACJ,OACA,WACA,OAAe,GACS;EACxB,KAAK,OAAO,MAAM,aAAa,UAAU,OAAO,oBAAoB;EAEpE,IAAI;GACF,IAAI,KAAK,UAAU,QAAQ,KAAK,WAAW,IAAI;IAC7C,KAAK,OAAO,KAAK,mDAAmD;IACpE,OAAO,KAAK,kBAAkB,WAAW,IAAI;GAC/C;GAEA,MAAM,cAAc;IAClB,OAAO;IACA;IACP,OAAO;IACI;GACb;GAEA,MAAM,WAAW,MAAM,MAAM,KAC3B,oCACA,aACA;IACE,SAAS;KACP,gBAAgB;KAChB,eAAe,UAAU,KAAK;IAChC;IACA,SAAS,KAAK;IACd,WAAW,KAAK;IAChB,YAAY,KAAK;GACnB,CACF;GAEA,KAAK,OAAO,MAAM,kBAAkB,SAAS,MAAM,EAAE;GACrD,KAAK,OAAO,MAAM,oBAAoB,SAAS,MAAM,IAAI;GAEzD,IAAI,SAAS,QAAQ,SAAS,KAAK,QAAQ,QACzC,OAAO,SAAS,KAAK,QAAQ,KAAK,WAAW;IAC3C,MAAM,WAAW,OAAO;IACxB,MAAM,QAAQ,OAAO;IAErB,OAAO;KAAE,MADI,UAAU;KACR;IAAM;GACvB,CAAC;QACI;IACL,KAAK,OAAO,KACV,oEACF;IACA,OAAO,KAAK,kBAAkB,WAAW,IAAI;GAC/C;EACF,SAAS,OAAO;GACd,KAAK,OAAO,MACV,+BACA,kBAAkB,KAAK,CACzB;GAEA,OAAO,KAAK,kBAAkB,WAAW,IAAI;EAC/C;CACF;AACF;;;;AAKA,MAAM,yBAAyB;AAC/B,MAAM,oBAAoB;AAC1B,MAAM,0BAA0B;AAEhC,MAAM,4BACJ,QAAQ,IAAI,eAAe,QAAQ,QAAQ,IAAI,gBAAgB,KAC3D,QAAQ,IAAI,cACZ,KAAA;AAEN,MAAM,qBACJ,MACA,WAC6B;CAAE,IAAI,OAAO,KAAK;CAAG;CAAM,YAAY;AAAE;;;;AAKxE,MAAM,yBACJ,WACA,WAC8B;CAC9B,IAAI,UAAU,UAAU,wBACtB,OAAO,UAAU,IAAI,iBAAiB;CAExC,OAAO,MACL,mCAAmC,uBAAuB,0BAA0B,UAAU,OAAO,MAAM,uBAAuB,EACpI;CACA,OAAO,UAAU,MAAM,GAAG,sBAAsB,CAAC,CAAC,IAAI,iBAAiB;AACzE;AAEA,MAAM,mBAAmB,MAAc,WAA6B;CAClE,IAAI,QAAQ,mBACV,OAAO;CAET,OAAO,MACL,oCAAoC,kBAAkB,aAAa,KAAK,MAAM,kBAAkB,EAClG;CACA,OAAO;AACT;;;AAIA,MAAM,qBACJ,YAEA,CAAC,GAAG,OAAO,CAAC,CAAC,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK;;;AAIpE,MAAM,uBACJ,QACA,mBAEA,UAAU,QACV,OAAO,OAAO,UAAU,YACxB,OAAO,UAAU,OAAO,KAAK,KAC7B,OAAO,SAAS,KAChB,OAAO,QAAQ,kBACf,OAAO,OAAO,UAAU,YACxB,OAAO,SAAS,OAAO,KAAK;;;;;AAM9B,MAAM,sBACJ,SACA,mBACY;CACZ,MAAM,8BAAc,IAAI,IAAY;CACpC,OAAO,QAAQ,OAAO,WAAW;EAC/B,IAAI,CAAC,oBAAoB,QAAQ,cAAc,GAC7C,OAAO;EAET,IAAI,YAAY,IAAI,OAAO,KAAK,GAC9B,OAAO;EAET,YAAY,IAAI,OAAO,KAAK;EAC5B,OAAO;CACT,CAAC;AACH;;;;;;;AAQA,MAAM,sBACJ,WACA,YACe;CACf,IAAI,WAAW,GACb,OAAO,UAAU;CAGnB,MAAM,aAAa,IAAI,gBAAgB;CACvC,IAAI;CACJ,MAAM,WAAW,IAAI,SAAgB,UAAU,WAAW;EACxD,QAAQ,iBAAiB;GACvB,WAAW,MAAM;GACjB,uBAAO,IAAI,MAAM,+BAA+B,QAAQ,YAAY,CAAC;EACvE,GAAG,OAAO;CACZ,CAAC;CAED,MAAM,UAAU,UAAU,WAAW,MAAM;CAC3C,QAAQ,YAAY,KAAA,CAAS;CAE7B,OAAO,QAAQ,KAAK,CAAC,SAAS,QAAQ,CAAC,CAAC,CAAC,cAAc,aAAa,KAAK,CAAC;AAC5E;;;;;;;;;;AAWA,IAAa,iBAAb,cAAoC,aAAa;CAC/C;CACA;CACA;CACA;CACA;CACA;CAEA,YAAY,EACV,UAAU,oBAAoB,GAC9B,eACA,UAAU,yBACV,UAAU,0BACV,QACA,WACA,cAOqB;EACrB,MAAM,MAAM;EACZ,KAAK,UAAU,SAAS,QAAQ,QAAQ,EAAE;EAC1C,KAAK,gBAAgB;EACrB,KAAK,UAAU;EACf,KAAK,UAAU;EACf,KAAK,YAAY;EACjB,KAAK,aAAa;CACpB;CAEA,MAAM,OACJ,OACA,WACA,OAAe,GACS;EACxB,IAAI,UAAU,WAAW,GACvB,OAAO,CAAC;EAGV,KAAK,OAAO,MACV,aAAa,UAAU,OAAO,wBAAwB,KAAK,QAAQ,oBAAoB,KAAK,SAC9F;EAEA,MAAM,UAAU,KAAK;EACrB,IAAI,WAAW,QAAQ,YAAY,IAAI;GACrC,KAAK,OAAO,KAAK,gDAAgD;GACjE,OAAO,KAAK,kBAAkB,WAAW,IAAI;EAC/C;EAEA,MAAM,gBAAgB,KAAK;EAC3B,IAAI,iBAAiB,MAAM;GACzB,KAAK,OAAO,KACV,8DACF;GACA,OAAO,KAAK,kBAAkB,WAAW,IAAI;EAC/C;EAEA,MAAM,aAAa,sBAAsB,WAAW,KAAK,MAAM;EAC/D,MAAM,OAAO,gBAAgB,KAAK,IAAI,GAAG,IAAI,GAAG,KAAK,MAAM;EAC3D,MAAM,cAAyC;GAC7C,SAAS,KAAK;GACd;GACA;GACA,OAAO;EACT;EAEA,IAAI;GACF,MAAM,OAAO,MAAM,mBAAmB,OAAO,WAAW;IACtD,MAAM,QAAQ,MAAM,cAAc,MAAM;IAexC,QAAO,MAdgB,MAAM,KAC3B,GAAG,QAAQ,aACX,aACA;KACE,SAAS;MACP,gBAAgB;MAChB,eAAe,UAAU;KAC3B;KACA,SAAS,KAAK;KACd,WAAW,KAAK;KAChB,YAAY,KAAK;KACjB;IACF,CACF,EAAA,CACgB;GAClB,GAAG,KAAK,OAAO;GAEf,KAAK,OAAO,MAAM,yBAAyB,MAAM,KAAK;GAEtD,MAAM,aAAa,MAAM;GACzB,IAAI,CAAC,MAAM,QAAQ,UAAU,KAAK,WAAW,WAAW,GAAG;IACzD,KAAK,OAAO,KACV,wEACF;IACA,OAAO,KAAK,kBAAkB,WAAW,IAAI;GAC/C;GAEA,IAAI,CAAC,mBAAmB,YAAY,WAAW,MAAM,GAAG;IACtD,KAAK,OAAO,KACV,4EACF;IACA,OAAO,KAAK,kBAAkB,WAAW,IAAI;GAC/C;GAEA,OAAO,kBAAkB,UAAU,CAAC,CACjC,MAAM,GAAG,IAAI,CAAC,CACd,KAAK,YAAY;IAChB,MAAM,UAAU,OAAO;IACvB,OAAO,OAAO;GAChB,EAAE;EACN,SAAS,OAAO;GACd,KAAK,OAAO,MACV,gCACA,kBAAkB,KAAK,CACzB;GACA,OAAO,KAAK,kBAAkB,WAAW,IAAI;EAC/C;CACF;AACF;AAEA,IAAa,mBAAb,cAAsC,aAAa;CACjD,YAAY,QAAmB;EAC7B,MAAM,MAAM;CAEd;CAEA,MAAM,OACJ,OACA,WACA,OAAe,GACS;EACxB,KAAK,OAAO,MACV,aAAa,UAAU,OAAO,oCAChC;EAEA,OAAO,KAAK,kBAAkB,WAAW,IAAI;CAC/C;AACF;;;;AAKA,MAAa,kBACX,WAW6B;CAC7B,MAAM,EACJ,cACA,YACA,YACA,cACA,WACA,qBACA,eACA,iBACA,QACA,WACA,eACE;CAGJ,MAAM,gBAAgB,UAAU,oBAAoB;CAEpD,QAAQ,aAAa,YAAY,GAAjC;EACA,KAAK,QACH,OAAO,IAAI,aAAa;GACtB,QAAQ;GACR,QAAQ;GACR,SAAS;GACT,QAAQ;GACR;GACA;EACF,CAAC;EACH,KAAK,UACH,OAAO,IAAI,eAAe;GACxB,QAAQ;GACR,SAAS;GACT,QAAQ;GACR;GACA;EACF,CAAC;EACH,KAAK,WACH,OAAO,IAAI,eAAe;GACxB,SAAS;GACT,eAAe;GACf,SAAS;GACT,SAAS;GACT,QAAQ;GACR;GACA;EACF,CAAC;EACH,KAAK,YACH,OAAO,IAAI,iBAAiB,aAAa;EAC3C,KAAK;GACH,cAAc,MAAM,mDAAiD;GACrE;EACF;GACE,cAAc,KACZ,0BAA0B,aAAa,kCACzC;GACA,OAAO,IAAI,aAAa;IACtB,QAAQ;IACR,QAAQ;IACR,SAAS;IACT,QAAQ;IACR;IACA;GACF,CAAC;CACH;AACF"}
1
+ {"version":3,"file":"rerankers.mjs","names":[],"sources":["../../../../src/tools/search/rerankers.ts"],"mappings":"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"}
@@ -60,7 +60,6 @@ const newsSchema = {
60
60
  type: "boolean",
61
61
  description: "Whether to also run a news search."
62
62
  };
63
- /** Combined web search tool schema with all properties */
64
63
  const WebSearchToolSchema = {
65
64
  type: "object",
66
65
  properties: {
@@ -1 +1 @@
1
- {"version":3,"file":"schema.mjs","names":[],"sources":["../../../../src/tools/search/schema.ts"],"sourcesContent":["import { INTENT_PROPERTY } from '@/tools/intentArg';\n\nexport enum DATE_RANGE {\n PAST_HOUR = 'h',\n PAST_24_HOURS = 'd',\n PAST_WEEK = 'w',\n PAST_MONTH = 'm',\n PAST_YEAR = 'y',\n}\n\nexport const DEFAULT_QUERY_DESCRIPTION = `\nGUIDELINES:\n- Start broad, then narrow: Begin with key concepts, then refine with specifics\n- Think like sources: Use terminology experts would use in the field\n- Consider perspective: Frame queries from different viewpoints for better results\n- Quality over quantity: A precise 3-4 word query often beats lengthy sentences\n\nTECHNIQUES (combine for power searches):\n- EXACT PHRASES: Use quotes (\"climate change report\")\n- EXCLUDE TERMS: Use minus to remove unwanted results (-wikipedia)\n- SITE-SPECIFIC: Restrict to websites (site:edu research)\n- FILETYPE: Find specific documents (filetype:pdf study)\n- OR OPERATOR: Find alternatives (electric OR hybrid cars)\n- DATE RANGE: Recent information (data after:2020)\n- WILDCARDS: Use * for unknown terms (how to * bread)\n- SPECIFIC QUESTIONS: Use who/what/when/where/why/how\n- DOMAIN TERMS: Include technical terminology for specialized topics\n- CONCISE TERMS: Prioritize keywords over sentences\n`.trim();\n\nexport const DEFAULT_COUNTRY_DESCRIPTION =\n `Country code to localize search results.\nUse standard 2-letter country codes: \"us\", \"uk\", \"ca\", \"de\", \"fr\", \"jp\", \"br\", etc.\nProvide this when the search should return results specific to a particular country.\nExamples:\n- \"us\" for United States (default)\n- \"de\" for Germany\n- \"in\" for India\n`.trim();\n\nexport const querySchema = {\n type: 'string',\n description: DEFAULT_QUERY_DESCRIPTION,\n} as const;\n\nexport const dateSchema = {\n type: 'string',\n enum: Object.values(DATE_RANGE),\n description: 'Date range for search results.',\n} as const;\n\nexport const countrySchema = {\n type: 'string',\n description: DEFAULT_COUNTRY_DESCRIPTION,\n} as const;\n\nexport const imagesSchema = {\n type: 'boolean',\n description: 'Whether to also run an image search.',\n} as const;\n\nexport const videosSchema = {\n type: 'boolean',\n description: 'Whether to also run a video search.',\n} as const;\n\nexport const newsSchema = {\n type: 'boolean',\n description: 'Whether to also run a news search.',\n} as const;\n\n/** Combined web search tool schema with all properties */\nexport const WebSearchToolSchema = {\n type: 'object',\n properties: {\n intent: { ...INTENT_PROPERTY },\n query: querySchema,\n date: dateSchema,\n country: countrySchema,\n images: imagesSchema,\n videos: videosSchema,\n news: newsSchema,\n },\n required: ['query'],\n} as const;\n\nexport const WebSearchToolName = 'web_search';\n\nexport const WebSearchToolDescription = `Real-time search. Results have required citation anchors.\n\nNote: Use ONCE per reply unless instructed otherwise.\n\nAnchors:\n- \\\\ue202turnXtypeY\n- X = turn idx, type = 'search' | 'news' | 'image' | 'ref', Y = item idx\n\nSpecial Markers:\n- \\\\ue203...\\\\ue204 — highlight start/end of cited text (for Standalone or Group citations)\n- \\\\ue200...\\\\ue201 — group block (e.g. \\\\ue200\\\\ue202turn0search1\\\\ue202turn0news2\\\\ue201)\n\n**CITE EVERY NON-OBVIOUS FACT/QUOTE:**\nUse anchor marker(s) immediately after the statement:\n- Standalone: \"Pure functions produce same output. \\\\ue202turn0search0\"\n- Standalone (multiple): \"Today's News \\\\ue202turn0search0\\\\ue202turn0news0\"\n- Highlight: \"\\\\ue203Highlight text.\\\\ue204\\\\ue202turn0news1\"\n- Group: \"Sources. \\\\ue200\\\\ue202turn0search0\\\\ue202turn0news1\\\\ue201\"\n- Group Highlight: \"\\\\ue203Highlight for group.\\\\ue204 \\\\ue200\\\\ue202turn0search0\\\\ue202turn0news1\\\\ue201\"\n- Image: \"See photo \\\\ue202turn0image0.\"\n\n**NEVER use markdown links, [1], or footnotes. CITE ONLY with anchors provided.**`;\n\nexport const WebSearchToolDefinition = {\n name: WebSearchToolName,\n description: WebSearchToolDescription,\n schema: WebSearchToolSchema,\n} as const;\n"],"mappings":";;AAEA,IAAY,aAAL,yBAAA,YAAA;CACL,WAAA,eAAA;CACA,WAAA,mBAAA;CACA,WAAA,eAAA;CACA,WAAA,gBAAA;CACA,WAAA,eAAA;;AACF,EAAA,CAAA,CAAA;AAEA,MAAa,4BAA4B;;;;;;;;;;;;;;;;;;EAkBvC,KAAK;AAEP,MAAa,8BACX;;;;;;;EAOA,KAAK;AAEP,MAAa,cAAc;CACzB,MAAM;CACN,aAAa;AACf;AAEA,MAAa,aAAa;CACxB,MAAM;CACN,MAAM,OAAO,OAAO,UAAU;CAC9B,aAAa;AACf;AAEA,MAAa,gBAAgB;CAC3B,MAAM;CACN,aAAa;AACf;AAEA,MAAa,eAAe;CAC1B,MAAM;CACN,aAAa;AACf;AAEA,MAAa,eAAe;CAC1B,MAAM;CACN,aAAa;AACf;AAEA,MAAa,aAAa;CACxB,MAAM;CACN,aAAa;AACf;;AAGA,MAAa,sBAAsB;CACjC,MAAM;CACN,YAAY;EACV,QAAQ,EAAE,GAAG,gBAAgB;EAC7B,OAAO;EACP,MAAM;EACN,SAAS;EACT,QAAQ;EACR,QAAQ;EACR,MAAM;CACR;CACA,UAAU,CAAC,OAAO;AACpB;AAEA,MAAa,oBAAoB;AAEjC,MAAa,2BAA2B;;;;;;;;;;;;;;;;;;;;;;AAuBxC,MAAa,0BAA0B;CACrC,MAAM;CACN,aAAa;CACb,QAAQ;AACV"}
1
+ {"version":3,"file":"schema.mjs","names":[],"sources":["../../../../src/tools/search/schema.ts"],"mappings":";;AAEA,IAAY,aAAL,yBAAA,YAAA;CACL,WAAA,eAAA;CACA,WAAA,mBAAA;CACA,WAAA,eAAA;CACA,WAAA,gBAAA;CACA,WAAA,eAAA;;AACF,EAAA,CAAA,CAAA;AAEA,MAAa,4BAA4B;;;;;;;;;;;;;;;;;;EAkBvC,KAAK;AAEP,MAAa,8BACX;;;;;;;EAOA,KAAK;AAEP,MAAa,cAAc;CACzB,MAAM;CACN,aAAa;AACf;AAEA,MAAa,aAAa;CACxB,MAAM;CACN,MAAM,OAAO,OAAO,UAAU;CAC9B,aAAa;AACf;AAEA,MAAa,gBAAgB;CAC3B,MAAM;CACN,aAAa;AACf;AAEA,MAAa,eAAe;CAC1B,MAAM;CACN,aAAa;AACf;AAEA,MAAa,eAAe;CAC1B,MAAM;CACN,aAAa;AACf;AAEA,MAAa,aAAa;CACxB,MAAM;CACN,aAAa;AACf;AAGA,MAAa,sBAAsB;CACjC,MAAM;CACN,YAAY;EACV,QAAQ,EAAE,GAAG,gBAAgB;EAC7B,OAAO;EACP,MAAM;EACN,SAAS;EACT,QAAQ;EACR,QAAQ;EACR,MAAM;CACR;CACA,UAAU,CAAC,OAAO;AACpB;AAEA,MAAa,oBAAoB;AAEjC,MAAa,2BAA2B;;;;;;;;;;;;;;;;;;;;;;AAuBxC,MAAa,0BAA0B;CACrC,MAAM;CACN,aAAa;CACb,QAAQ;AACV"}
@@ -31,10 +31,6 @@ const chunker = {
31
31
  const DEFAULT_MAX_CONTENT_LENGTH = 5e4;
32
32
  const DEFAULT_CHUNK_SIZE = 150;
33
33
  const DEFAULT_CHUNK_OVERLAP = 50;
34
- /** Resolves reranker chunking from config, the `SEARCH_CHUNK_SIZE` /
35
- * `SEARCH_CHUNK_OVERLAP` env vars, or the defaults (150 / 50 chars). The
36
- * overlap is clamped below the chunk size — `RecursiveCharacterTextSplitter`
37
- * throws when overlap >= size. */
38
34
  function resolveChunkOptions(chunkSize, chunkOverlap) {
39
35
  const resolve = (configValue, envVar, fallback) => {
40
36
  if (configValue != null && configValue > 0) return configValue;
@@ -50,8 +46,6 @@ function resolveChunkOptions(chunkSize, chunkOverlap) {
50
46
  chunkOverlap: overlap
51
47
  };
52
48
  }
53
- /** Resolves the per-source scraped content cap from config, the
54
- * `SEARCH_MAX_CONTENT_LENGTH` env var, or the default (50,000 chars) */
55
49
  function resolveMaxContentLength(maxContentLength) {
56
50
  if (maxContentLength != null && maxContentLength > 0) return maxContentLength;
57
51
  const envValue = Number(process.env.SEARCH_MAX_CONTENT_LENGTH);
@@ -394,12 +388,7 @@ const createSourceProcessor = (config = {}, scraperInstance) => {
394
388
  images: [],
395
389
  relatedSearches: []
396
390
  };
397
- if (result.data.topStories != null && result.data.topStories.length > numElements)
398
- /** Merged news results can far exceed the requested source count;
399
- * every entry is formatted into the LLM output, so cap them up
400
- * front — before any early return below and before scraping
401
- * entries the cap would discard */
402
- result.data.topStories = result.data.topStories.slice(0, numElements);
391
+ if (result.data.topStories != null && result.data.topStories.length > numElements) result.data.topStories = result.data.topStories.slice(0, numElements);
403
392
  if (!result.data.organic) return result.data;
404
393
  if (!proMode) {
405
394
  const wikiSources = result.data.organic.filter((source) => source.link.includes("wikipedia.org"));
@@ -466,7 +455,6 @@ const createSourceProcessor = (config = {}, scraperInstance) => {
466
455
  topResults
467
456
  };
468
457
  };
469
- /** Helper function to collect links and update sourceMap */
470
458
  function collectLinks(sources, sourceMap, existingLinksSet) {
471
459
  const links = [];
472
460
  for (const source of sources) if (source.link) {
@@ -477,7 +465,6 @@ function collectLinks(sources, sourceMap, existingLinksSet) {
477
465
  }
478
466
  return links;
479
467
  }
480
- /** Helper function to update sources with scraped content */
481
468
  function updateSourcesWithContent(sources, sourceMap) {
482
469
  for (let i = 0; i < sources.length; i++) {
483
470
  const source = sources[i];
@@ -1 +1 @@
1
- {"version":3,"file":"search.mjs","names":[],"sources":["../../../../src/tools/search/search.ts"],"sourcesContent":["import axios from 'axios';\nimport { RecursiveCharacterTextSplitter } from '@langchain/textsplitters';\nimport type * as t from './types';\nimport { getAttribution, createDefaultLogger } from './utils';\nimport { createKeenableAPI } from './keenable-search';\nimport { createTavilyAPI } from './tavily-search';\nimport { createCrwAPI } from './crw-search';\nimport { BaseReranker } from './rerankers';\n\nconst chunker = {\n cleanText: (text: string): string => {\n if (!text) return '';\n\n /** Normalized all line endings to '\\n' */\n const normalizedText = text.replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n');\n\n /** Handle multiple backslashes followed by newlines\n * This replaces patterns like '\\\\\\\\\\\\n' with a single newline */\n const fixedBackslashes = normalizedText.replace(/\\\\+\\n/g, '\\n');\n\n /** Cleaned up consecutive newlines, tabs, and spaces around newlines */\n const cleanedNewlines = fixedBackslashes.replace(/[\\t ]*\\n[\\t \\n]*/g, '\\n');\n\n /** Cleaned up excessive spaces and tabs */\n const cleanedSpaces = cleanedNewlines.replace(/[ \\t]+/g, ' ');\n\n return cleanedSpaces.trim();\n },\n splitText: async (\n text: string,\n options?: {\n chunkSize?: number;\n chunkOverlap?: number;\n separators?: string[];\n }\n ): Promise<string[]> => {\n const chunkSize = options?.chunkSize ?? 150;\n const chunkOverlap = options?.chunkOverlap ?? 50;\n const separators = options?.separators || ['\\n\\n', '\\n'];\n\n const splitter = new RecursiveCharacterTextSplitter({\n separators,\n chunkSize,\n chunkOverlap,\n });\n\n return await splitter.splitText(text);\n },\n\n splitTexts: async (\n texts: string[],\n options?: {\n chunkSize?: number;\n chunkOverlap?: number;\n separators?: string[];\n },\n logger?: t.Logger\n ): Promise<string[][]> => {\n // Split multiple texts\n const logger_ = logger || createDefaultLogger();\n const promises = texts.map((text) =>\n chunker.splitText(text, options).catch((error) => {\n logger_.error('Error splitting text:', error);\n return [text];\n })\n );\n return Promise.all(promises);\n },\n};\n\nconst DEFAULT_MAX_CONTENT_LENGTH = 50000;\nconst DEFAULT_CHUNK_SIZE = 150;\nconst DEFAULT_CHUNK_OVERLAP = 50;\n\n/** Resolves reranker chunking from config, the `SEARCH_CHUNK_SIZE` /\n * `SEARCH_CHUNK_OVERLAP` env vars, or the defaults (150 / 50 chars). The\n * overlap is clamped below the chunk size — `RecursiveCharacterTextSplitter`\n * throws when overlap >= size. */\nfunction resolveChunkOptions(\n chunkSize?: number,\n chunkOverlap?: number\n): { chunkSize: number; chunkOverlap: number } {\n const resolve = (\n configValue: number | undefined,\n envVar: string,\n fallback: number\n ): number => {\n if (configValue != null && configValue > 0) {\n return configValue;\n }\n const envValue = Number(process.env[envVar]);\n if (Number.isFinite(envValue) && envValue > 0) {\n return envValue;\n }\n return fallback;\n };\n\n const size = resolve(chunkSize, 'SEARCH_CHUNK_SIZE', DEFAULT_CHUNK_SIZE);\n let overlap = resolve(\n chunkOverlap,\n 'SEARCH_CHUNK_OVERLAP',\n DEFAULT_CHUNK_OVERLAP\n );\n if (overlap >= size) {\n overlap = Math.floor(size / 3);\n }\n return { chunkSize: size, chunkOverlap: overlap };\n}\n\n/** Resolves the per-source scraped content cap from config, the\n * `SEARCH_MAX_CONTENT_LENGTH` env var, or the default (50,000 chars) */\nfunction resolveMaxContentLength(maxContentLength?: number): number {\n if (maxContentLength != null && maxContentLength > 0) {\n return maxContentLength;\n }\n const envValue = Number(process.env.SEARCH_MAX_CONTENT_LENGTH);\n if (Number.isFinite(envValue) && envValue > 0) {\n return envValue;\n }\n return DEFAULT_MAX_CONTENT_LENGTH;\n}\n\nfunction truncateContent(content: string, maxLength: number): string {\n return content.length > maxLength ? content.slice(0, maxLength) : content;\n}\n\nfunction createSourceUpdateCallback(sourceMap: Map<string, t.ValidSource>) {\n return (link: string, update?: Partial<t.ValidSource>): void => {\n const source = sourceMap.get(link);\n if (source) {\n sourceMap.set(link, {\n ...source,\n ...update,\n });\n }\n };\n}\n\nconst getHighlights = async ({\n query,\n content,\n reranker,\n topResults = 5,\n maxContentLength = DEFAULT_MAX_CONTENT_LENGTH,\n chunkOptions,\n logger,\n}: {\n content: string;\n query: string;\n reranker?: BaseReranker;\n topResults?: number;\n maxContentLength?: number;\n chunkOptions?: { chunkSize: number; chunkOverlap: number };\n logger?: t.Logger;\n}): Promise<t.Highlight[] | undefined> => {\n const logger_ = logger || createDefaultLogger();\n\n if (!content) {\n logger_.warn('No content provided for highlights');\n return;\n }\n if (!reranker) {\n logger_.warn('No reranker provided for highlights');\n return;\n }\n\n try {\n const documents = await chunker.splitText(\n truncateContent(content, maxContentLength),\n chunkOptions\n );\n if (Array.isArray(documents)) {\n return await reranker.rerank(query, documents, topResults);\n } else {\n logger_.error(\n 'Expected documents to be an array, got:',\n typeof documents\n );\n return;\n }\n } catch (error) {\n logger_.error('Error in content processing:', error);\n return;\n }\n};\n\nconst createSerperAPI = (\n apiKey?: string,\n agents?: t.HttpAgentConfig\n): {\n getSources: (params: t.GetSourcesParams) => Promise<t.SearchResult>;\n} => {\n const config = {\n apiKey: apiKey ?? process.env.SERPER_API_KEY,\n apiUrl: 'https://google.serper.dev/search',\n timeout: 10000,\n };\n\n if (config.apiKey == null || config.apiKey === '') {\n throw new Error('SERPER_API_KEY is required for SerperAPI');\n }\n\n const getSources = async ({\n query,\n date,\n country,\n safeSearch,\n numResults = 8,\n type,\n }: t.GetSourcesParams): Promise<t.SearchResult> => {\n if (!query.trim()) {\n return { success: false, error: 'Query cannot be empty' };\n }\n\n try {\n const safe = ['off', 'moderate', 'active'] as const;\n const payload: t.SerperSearchPayload = {\n q: query,\n safe: safe[safeSearch ?? 1],\n num: Math.min(Math.max(1, numResults), 10),\n };\n\n // Set the search type if provided\n if (type) {\n payload.type = type;\n }\n\n if (date != null) {\n payload.tbs = `qdr:${date}`;\n }\n\n if (country != null && country !== '') {\n payload['gl'] = country.toLowerCase();\n }\n\n // Determine the API endpoint based on the search type\n let apiEndpoint = config.apiUrl;\n if (type === 'images') {\n apiEndpoint = 'https://google.serper.dev/images';\n } else if (type === 'videos') {\n apiEndpoint = 'https://google.serper.dev/videos';\n } else if (type === 'news') {\n apiEndpoint = 'https://google.serper.dev/news';\n }\n\n const response = await axios.post<t.SerperResultData>(\n apiEndpoint,\n payload,\n {\n headers: {\n 'X-API-KEY': config.apiKey,\n 'Content-Type': 'application/json',\n },\n timeout: config.timeout,\n httpAgent: agents?.httpAgent,\n httpsAgent: agents?.httpsAgent,\n }\n );\n\n const data = response.data;\n const results: t.SearchResultData = {\n organic: data.organic,\n images: data.images ?? [],\n answerBox: data.answerBox,\n topStories: data.topStories ?? [],\n peopleAlsoAsk: data.peopleAlsoAsk,\n knowledgeGraph: data.knowledgeGraph,\n relatedSearches: data.relatedSearches,\n videos: data.videos ?? [],\n news: data.news ?? [],\n };\n\n return { success: true, data: results };\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : String(error);\n return { success: false, error: `API request failed: ${errorMessage}` };\n }\n };\n\n return { getSources };\n};\n\nconst createSearXNGAPI = (\n instanceUrl?: string,\n apiKey?: string,\n agents?: t.HttpAgentConfig\n): {\n getSources: (params: t.GetSourcesParams) => Promise<t.SearchResult>;\n} => {\n const config = {\n instanceUrl: instanceUrl ?? process.env.SEARXNG_INSTANCE_URL,\n apiKey: apiKey ?? process.env.SEARXNG_API_KEY,\n defaultLocation: 'all',\n timeout: 10000,\n };\n\n if (config.instanceUrl == null || config.instanceUrl === '') {\n throw new Error('SEARXNG_INSTANCE_URL is required for SearXNG API');\n }\n\n const getSources = async ({\n query,\n numResults = 8,\n safeSearch,\n type,\n }: t.GetSourcesParams): Promise<t.SearchResult> => {\n if (!query.trim()) {\n return { success: false, error: 'Query cannot be empty' };\n }\n\n try {\n // Ensure the instance URL ends with /search\n if (config.instanceUrl == null || config.instanceUrl === '') {\n return { success: false, error: 'Instance URL is not defined' };\n }\n\n let searchUrl = config.instanceUrl;\n if (!searchUrl.endsWith('/search')) {\n searchUrl = searchUrl.replace(/\\/$/, '') + '/search';\n }\n\n // Determine the search category based on the type\n let category = 'general';\n if (type === 'images') {\n category = 'images';\n } else if (type === 'videos') {\n category = 'videos';\n } else if (type === 'news') {\n category = 'news';\n }\n\n // Prepare parameters for SearXNG\n const params: t.SearxNGSearchPayload = {\n q: query,\n format: 'json',\n pageno: 1,\n categories: category,\n language: 'all',\n safesearch: safeSearch,\n engines: 'google,bing,duckduckgo',\n };\n\n const headers: Record<string, string> = {\n 'Content-Type': 'application/json',\n };\n\n if (config.apiKey != null && config.apiKey !== '') {\n headers['X-API-Key'] = config.apiKey;\n }\n\n const response = await axios.get(searchUrl, {\n headers,\n params,\n timeout: config.timeout,\n httpAgent: agents?.httpAgent,\n httpsAgent: agents?.httpsAgent,\n });\n\n const data = response.data;\n\n // Helper function to identify news results since SearXNG doesn't provide that classification by default\n const isNewsResult = (result: t.SearXNGResult): boolean => {\n const url = result.url?.toLowerCase() ?? '';\n const title = result.title?.toLowerCase() ?? '';\n\n // News-related keywords in title/content\n const newsKeywords = [\n 'breaking news',\n 'latest news',\n 'top stories',\n 'news today',\n 'developing story',\n 'trending news',\n 'news',\n ];\n\n // Check if title/content contains news keywords\n const hasNewsKeywords = newsKeywords.some(\n (keyword) => title.toLowerCase().includes(keyword) // just title probably fine, content parsing is overkill for what we need: || content.includes(keyword)\n );\n\n // Check if URL contains news-related paths\n const hasNewsPath =\n url.includes('/news/') ||\n url.includes('/world/') ||\n url.includes('/politics/') ||\n url.includes('/breaking/');\n\n return hasNewsKeywords || hasNewsPath;\n };\n\n // Transform SearXNG results to match SerperAPI format\n const organicResults = (data.results ?? [])\n .slice(0, numResults)\n .map((result: t.SearXNGResult, index: number) => {\n let attribution = '';\n try {\n attribution = new URL(result.url ?? '').hostname;\n } catch {\n attribution = '';\n }\n\n return {\n position: index + 1,\n title: result.title ?? '',\n link: result.url ?? '',\n snippet: result.content ?? '',\n date: result.publishedDate ?? '',\n attribution,\n };\n });\n\n const imageResults = (data.results ?? [])\n .filter((result: t.SearXNGResult) => result.img_src)\n .slice(0, 6)\n .map((result: t.SearXNGResult, index: number) => ({\n title: result.title ?? '',\n imageUrl: result.img_src ?? '',\n position: index + 1,\n source: new URL(result.url ?? '').hostname,\n domain: new URL(result.url ?? '').hostname,\n link: result.url ?? '',\n }));\n\n // Extract news results from organic results\n const newsResults = (data.results ?? [])\n .filter(isNewsResult)\n .map((result: t.SearXNGResult, index: number) => {\n let attribution = '';\n try {\n attribution = new URL(result.url ?? '').hostname;\n } catch {\n attribution = '';\n }\n\n return {\n title: result.title ?? '',\n link: result.url ?? '',\n snippet: result.content ?? '',\n date: result.publishedDate ?? '',\n source: attribution,\n imageUrl: result.img_src ?? '',\n position: index + 1,\n };\n });\n\n const topStories = newsResults.slice(0, 5);\n\n const relatedSearches = Array.isArray(data.suggestions)\n ? data.suggestions.map((suggestion: string) => ({ query: suggestion }))\n : [];\n\n const results: t.SearchResultData = {\n organic: organicResults,\n images: imageResults,\n topStories: topStories, // Use first 5 extracted news as top stories\n relatedSearches,\n videos: [],\n news: newsResults,\n // Add empty arrays for other Serper fields to maintain parity\n places: [],\n shopping: [],\n peopleAlsoAsk: [],\n knowledgeGraph: undefined,\n answerBox: undefined,\n };\n\n return { success: true, data: results };\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : String(error);\n return {\n success: false,\n error: `SearXNG API request failed: ${errorMessage}`,\n };\n }\n };\n\n return { getSources };\n};\n\nexport const createSearchAPI = (\n config: t.SearchConfig\n): {\n getSources: (params: t.GetSourcesParams) => Promise<t.SearchResult>;\n} => {\n const {\n searchProvider = 'serper',\n serperApiKey,\n searxngInstanceUrl,\n searxngApiKey,\n tavilyApiKey,\n tavilySearchUrl,\n tavilySearchOptions,\n keenableApiKey,\n keenableApiUrl,\n keenableSearchOptions,\n crwApiKey,\n crwApiUrl,\n crwSearchOptions,\n httpAgent,\n httpsAgent,\n } = config;\n\n const agents: t.HttpAgentConfig = { httpAgent, httpsAgent };\n\n if (searchProvider.toLowerCase() === 'serper') {\n return createSerperAPI(serperApiKey, agents);\n } else if (searchProvider.toLowerCase() === 'searxng') {\n return createSearXNGAPI(searxngInstanceUrl, searxngApiKey, agents);\n } else if (searchProvider.toLowerCase() === 'tavily') {\n return createTavilyAPI(tavilyApiKey, tavilySearchUrl, {\n ...tavilySearchOptions,\n httpAgent: httpAgent ?? tavilySearchOptions?.httpAgent,\n httpsAgent: httpsAgent ?? tavilySearchOptions?.httpsAgent,\n });\n } else if (searchProvider.toLowerCase() === 'keenable') {\n return createKeenableAPI(keenableApiKey, keenableApiUrl, {\n ...keenableSearchOptions,\n httpAgent: httpAgent ?? keenableSearchOptions?.httpAgent,\n httpsAgent: httpsAgent ?? keenableSearchOptions?.httpsAgent,\n });\n } else if (searchProvider.toLowerCase() === 'crw') {\n return createCrwAPI(crwApiKey, crwApiUrl, {\n ...crwSearchOptions,\n httpAgent: httpAgent ?? crwSearchOptions?.httpAgent,\n httpsAgent: httpsAgent ?? crwSearchOptions?.httpsAgent,\n });\n } else {\n throw new Error(\n `Invalid search provider: ${searchProvider}. Must be 'serper', 'searxng', 'tavily', 'keenable', or 'crw'`\n );\n }\n};\n\nexport const createSourceProcessor = (\n config: t.ProcessSourcesConfig = {},\n scraperInstance?: t.BaseScraper\n): {\n processSources: (\n fields: t.ProcessSourcesFields\n ) => Promise<t.SearchResultData>;\n topResults: number;\n} => {\n if (!scraperInstance) {\n throw new Error('Scraper instance is required');\n }\n const {\n topResults = 5,\n // strategies = ['no_extraction'],\n // filterContent = true,\n reranker,\n logger,\n } = config;\n\n const maxContentLength = resolveMaxContentLength(config.maxContentLength);\n const chunkOptions = resolveChunkOptions(\n config.chunkSize,\n config.chunkOverlap\n );\n const logger_ = logger || createDefaultLogger();\n const scraper = scraperInstance;\n\n const processResponse = (\n url: string,\n response: t.AnyScraperResponse\n ): t.ScrapeResult => {\n const rawMetadata = scraper.extractMetadata(response);\n const metadata =\n Object.keys(rawMetadata).length > 0 ? rawMetadata : undefined;\n const attribution = getAttribution(url, metadata, logger_);\n\n if (response.success && response.data) {\n const [content, references] = scraper.extractContent(response);\n return {\n url,\n references,\n attribution,\n content: truncateContent(chunker.cleanText(content), maxContentLength),\n };\n }\n\n logger_.error(\n `Error scraping ${url}: ${response.error ?? 'Unknown error'}`\n );\n return { url, attribution, error: true, content: '' };\n };\n\n const addHighlights = async (\n result: t.ScrapeResult,\n query: string,\n onGetHighlights: t.SearchToolConfig['onGetHighlights']\n ): Promise<t.ScrapeResult> => {\n if (result.error != null) {\n return result;\n }\n try {\n const highlights = await getHighlights({\n query,\n reranker,\n topResults,\n content: result.content,\n maxContentLength,\n chunkOptions,\n logger: logger_,\n });\n if (onGetHighlights) {\n onGetHighlights(result.url);\n }\n return { ...result, highlights };\n } catch (error) {\n logger_.error('Error processing scraped content:', error);\n return result;\n }\n };\n\n const webScraper = {\n scrapeMany: async ({\n query,\n links,\n onGetHighlights,\n }: {\n query: string;\n links: string[];\n onGetHighlights: t.SearchToolConfig['onGetHighlights'];\n }): Promise<Array<t.ScrapeResult>> => {\n logger_.debug(`Scraping ${links.length} links`);\n try {\n let responses: Array<[string, t.AnyScraperResponse]>;\n\n if (scraper.scrapeUrls) {\n responses = await scraper.scrapeUrls(links);\n } else {\n responses = await Promise.all(\n links.map((link) =>\n scraper\n .scrapeUrl(link, {})\n .catch((error): [string, t.AnyScraperResponse] => {\n logger_.error(`Error scraping ${link}:`, error);\n return [link, { success: false, error: String(error) }];\n })\n )\n );\n }\n\n const withHighlights = await Promise.all(\n responses.map(([url, response]) =>\n addHighlights(\n processResponse(url, response),\n query,\n onGetHighlights\n )\n )\n );\n return withHighlights;\n } catch (error) {\n logger_.error('Error in scrapeMany:', error);\n return [];\n }\n },\n };\n\n const fetchContents = async ({\n links,\n query,\n target,\n onGetHighlights,\n onContentScraped,\n }: {\n links: string[];\n query: string;\n target: number;\n onGetHighlights: t.SearchToolConfig['onGetHighlights'];\n onContentScraped?: (link: string, update?: Partial<t.ValidSource>) => void;\n }): Promise<void> => {\n const initialLinks = links.slice(0, target);\n // const remainingLinks = links.slice(target).reverse();\n const results = await webScraper.scrapeMany({\n query,\n links: initialLinks,\n onGetHighlights,\n });\n for (const result of results) {\n if (result.error === true) {\n continue;\n }\n const { url, content, attribution, references, highlights } = result;\n onContentScraped?.(url, {\n content,\n attribution,\n references,\n highlights,\n });\n }\n };\n\n const processSources = async ({\n result,\n numElements,\n query,\n news,\n proMode = true,\n onGetHighlights,\n }: t.ProcessSourcesFields): Promise<t.SearchResultData> => {\n try {\n if (!result.data) {\n return {\n organic: [],\n topStories: [],\n images: [],\n relatedSearches: [],\n };\n }\n\n if (\n result.data.topStories != null &&\n result.data.topStories.length > numElements\n ) {\n /** Merged news results can far exceed the requested source count;\n * every entry is formatted into the LLM output, so cap them up\n * front — before any early return below and before scraping\n * entries the cap would discard */\n result.data.topStories = result.data.topStories.slice(0, numElements);\n }\n\n if (!result.data.organic) {\n return result.data;\n }\n\n if (!proMode) {\n const wikiSources = result.data.organic.filter((source) =>\n source.link.includes('wikipedia.org')\n );\n\n if (!wikiSources.length) {\n return result.data;\n }\n\n const wikiSourceMap = new Map<string, t.ValidSource>();\n wikiSourceMap.set(wikiSources[0].link, wikiSources[0]);\n const onContentScraped = createSourceUpdateCallback(wikiSourceMap);\n await fetchContents({\n query,\n target: 1,\n onGetHighlights,\n onContentScraped,\n links: [wikiSources[0].link],\n });\n\n for (let i = 0; i < result.data.organic.length; i++) {\n const source = result.data.organic[i];\n const updatedSource = wikiSourceMap.get(source.link);\n if (updatedSource) {\n result.data.organic[i] = {\n ...source,\n ...updatedSource,\n };\n }\n }\n\n return result.data;\n }\n\n const sourceMap = new Map<string, t.ValidSource>();\n const organicLinksSet = new Set<string>();\n\n // Collect organic links\n const organicLinks = collectLinks(\n result.data.organic,\n sourceMap,\n organicLinksSet\n );\n\n // Collect top story links, excluding any that are already in organic links\n const topStories = result.data.topStories ?? [];\n const topStoryLinks = collectLinks(\n topStories,\n sourceMap,\n organicLinksSet\n );\n\n if (organicLinks.length === 0 && (topStoryLinks.length === 0 || !news)) {\n return result.data;\n }\n\n const onContentScraped = createSourceUpdateCallback(sourceMap);\n const promises: Promise<void>[] = [];\n\n // Process organic links\n if (organicLinks.length > 0) {\n promises.push(\n fetchContents({\n query,\n onGetHighlights,\n onContentScraped,\n links: organicLinks,\n target: numElements,\n })\n );\n }\n\n // Process top story links\n if (news && topStoryLinks.length > 0) {\n promises.push(\n fetchContents({\n query,\n onGetHighlights,\n onContentScraped,\n links: topStoryLinks,\n target: numElements,\n })\n );\n }\n\n await Promise.all(promises);\n\n if (result.data.organic.length > 0) {\n updateSourcesWithContent(result.data.organic, sourceMap);\n }\n\n if (news && topStories.length > 0) {\n updateSourcesWithContent(topStories, sourceMap);\n }\n\n return result.data;\n } catch (error) {\n logger_.error('Error in processSources:', error);\n return {\n organic: [],\n topStories: [],\n images: [],\n relatedSearches: [],\n ...result.data,\n error: error instanceof Error ? error.message : String(error),\n };\n }\n };\n\n return {\n processSources,\n topResults,\n };\n};\n\n/** Helper function to collect links and update sourceMap */\nfunction collectLinks(\n sources: Array<t.OrganicResult | t.TopStoryResult>,\n sourceMap: Map<string, t.ValidSource>,\n existingLinksSet?: Set<string>\n): string[] {\n const links: string[] = [];\n\n for (const source of sources) {\n if (source.link) {\n // For topStories, only add if not already in organic links\n if (existingLinksSet && existingLinksSet.has(source.link)) {\n continue;\n }\n\n links.push(source.link);\n if (existingLinksSet) {\n existingLinksSet.add(source.link);\n }\n sourceMap.set(source.link, source as t.ValidSource);\n }\n }\n\n return links;\n}\n\n/** Helper function to update sources with scraped content */\nfunction updateSourcesWithContent<T extends t.ValidSource>(\n sources: T[],\n sourceMap: Map<string, t.ValidSource>\n): void {\n for (let i = 0; i < sources.length; i++) {\n const source = sources[i];\n const updatedSource = sourceMap.get(source.link);\n if (updatedSource) {\n sources[i] = {\n ...source,\n ...updatedSource,\n } as T;\n }\n }\n}\n"],"mappings":";;;;;;;AASA,MAAM,UAAU;CACd,YAAY,SAAyB;EACnC,IAAI,CAAC,MAAM,OAAO;EAelB,OAZuB,KAAK,QAAQ,SAAS,IAAI,CAAC,CAAC,QAAQ,OAAO,IAI5B,CAAC,CAAC,QAAQ,UAAU,IAGnB,CAAC,CAAC,QAAQ,qBAAqB,IAGlC,CAAC,CAAC,QAAQ,WAAW,GAEtC,CAAC,CAAC,KAAK;CAC5B;CACA,WAAW,OACT,MACA,YAKsB;EACtB,MAAM,YAAY,SAAS,aAAa;EACxC,MAAM,eAAe,SAAS,gBAAgB;EAS9C,OAAO,MAAM,IANQ,+BAA+B;GAClD,YAHiB,SAAS,cAAc,CAAC,QAAQ,IAAI;GAIrD;GACA;EACF,CAEoB,CAAC,CAAC,UAAU,IAAI;CACtC;CAEA,YAAY,OACV,OACA,SAKA,WACwB;EAExB,MAAM,UAAU,UAAU,oBAAoB;EAC9C,MAAM,WAAW,MAAM,KAAK,SAC1B,QAAQ,UAAU,MAAM,OAAO,CAAC,CAAC,OAAO,UAAU;GAChD,QAAQ,MAAM,yBAAyB,KAAK;GAC5C,OAAO,CAAC,IAAI;EACd,CAAC,CACH;EACA,OAAO,QAAQ,IAAI,QAAQ;CAC7B;AACF;AAEA,MAAM,6BAA6B;AACnC,MAAM,qBAAqB;AAC3B,MAAM,wBAAwB;;;;;AAM9B,SAAS,oBACP,WACA,cAC6C;CAC7C,MAAM,WACJ,aACA,QACA,aACW;EACX,IAAI,eAAe,QAAQ,cAAc,GACvC,OAAO;EAET,MAAM,WAAW,OAAO,QAAQ,IAAI,OAAO;EAC3C,IAAI,OAAO,SAAS,QAAQ,KAAK,WAAW,GAC1C,OAAO;EAET,OAAO;CACT;CAEA,MAAM,OAAO,QAAQ,WAAW,qBAAqB,kBAAkB;CACvE,IAAI,UAAU,QACZ,cACA,wBACA,qBACF;CACA,IAAI,WAAW,MACb,UAAU,KAAK,MAAM,OAAO,CAAC;CAE/B,OAAO;EAAE,WAAW;EAAM,cAAc;CAAQ;AAClD;;;AAIA,SAAS,wBAAwB,kBAAmC;CAClE,IAAI,oBAAoB,QAAQ,mBAAmB,GACjD,OAAO;CAET,MAAM,WAAW,OAAO,QAAQ,IAAI,yBAAyB;CAC7D,IAAI,OAAO,SAAS,QAAQ,KAAK,WAAW,GAC1C,OAAO;CAET,OAAO;AACT;AAEA,SAAS,gBAAgB,SAAiB,WAA2B;CACnE,OAAO,QAAQ,SAAS,YAAY,QAAQ,MAAM,GAAG,SAAS,IAAI;AACpE;AAEA,SAAS,2BAA2B,WAAuC;CACzE,QAAQ,MAAc,WAA0C;EAC9D,MAAM,SAAS,UAAU,IAAI,IAAI;EACjC,IAAI,QACF,UAAU,IAAI,MAAM;GAClB,GAAG;GACH,GAAG;EACL,CAAC;CAEL;AACF;AAEA,MAAM,gBAAgB,OAAO,EAC3B,OACA,SACA,UACA,aAAa,GACb,mBAAmB,4BACnB,cACA,aASwC;CACxC,MAAM,UAAU,UAAU,oBAAoB;CAE9C,IAAI,CAAC,SAAS;EACZ,QAAQ,KAAK,oCAAoC;EACjD;CACF;CACA,IAAI,CAAC,UAAU;EACb,QAAQ,KAAK,qCAAqC;EAClD;CACF;CAEA,IAAI;EACF,MAAM,YAAY,MAAM,QAAQ,UAC9B,gBAAgB,SAAS,gBAAgB,GACzC,YACF;EACA,IAAI,MAAM,QAAQ,SAAS,GACzB,OAAO,MAAM,SAAS,OAAO,OAAO,WAAW,UAAU;OACpD;GACL,QAAQ,MACN,2CACA,OAAO,SACT;GACA;EACF;CACF,SAAS,OAAO;EACd,QAAQ,MAAM,gCAAgC,KAAK;EACnD;CACF;AACF;AAEA,MAAM,mBACJ,QACA,WAGG;CACH,MAAM,SAAS;EACb,QAAQ,UAAU,QAAQ,IAAI;EAC9B,QAAQ;EACR,SAAS;CACX;CAEA,IAAI,OAAO,UAAU,QAAQ,OAAO,WAAW,IAC7C,MAAM,IAAI,MAAM,0CAA0C;CAG5D,MAAM,aAAa,OAAO,EACxB,OACA,MACA,SACA,YACA,aAAa,GACb,WACiD;EACjD,IAAI,CAAC,MAAM,KAAK,GACd,OAAO;GAAE,SAAS;GAAO,OAAO;EAAwB;EAG1D,IAAI;GAEF,MAAM,UAAiC;IACrC,GAAG;IACH,MAAM;KAHM;KAAO;KAAY;IAGtB,CAAC,CAAC,cAAc;IACzB,KAAK,KAAK,IAAI,KAAK,IAAI,GAAG,UAAU,GAAG,EAAE;GAC3C;GAGA,IAAI,MACF,QAAQ,OAAO;GAGjB,IAAI,QAAQ,MACV,QAAQ,MAAM,OAAO;GAGvB,IAAI,WAAW,QAAQ,YAAY,IACjC,QAAQ,QAAQ,QAAQ,YAAY;GAItC,IAAI,cAAc,OAAO;GACzB,IAAI,SAAS,UACX,cAAc;QACT,IAAI,SAAS,UAClB,cAAc;QACT,IAAI,SAAS,QAClB,cAAc;GAiBhB,MAAM,QAAO,MAdU,MAAM,KAC3B,aACA,SACA;IACE,SAAS;KACP,aAAa,OAAO;KACpB,gBAAgB;IAClB;IACA,SAAS,OAAO;IAChB,WAAW,QAAQ;IACnB,YAAY,QAAQ;GACtB,CACF,EAAA,CAEsB;GAatB,OAAO;IAAE,SAAS;IAAM,MAAM;KAX5B,SAAS,KAAK;KACd,QAAQ,KAAK,UAAU,CAAC;KACxB,WAAW,KAAK;KAChB,YAAY,KAAK,cAAc,CAAC;KAChC,eAAe,KAAK;KACpB,gBAAgB,KAAK;KACrB,iBAAiB,KAAK;KACtB,QAAQ,KAAK,UAAU,CAAC;KACxB,MAAM,KAAK,QAAQ,CAAC;IAGc;GAAE;EACxC,SAAS,OAAO;GAGd,OAAO;IAAE,SAAS;IAAO,OAAO,uBAD9B,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;GACe;EACxE;CACF;CAEA,OAAO,EAAE,WAAW;AACtB;AAEA,MAAM,oBACJ,aACA,QACA,WAGG;CACH,MAAM,SAAS;EACb,aAAa,eAAe,QAAQ,IAAI;EACxC,QAAQ,UAAU,QAAQ,IAAI;EAC9B,iBAAiB;EACjB,SAAS;CACX;CAEA,IAAI,OAAO,eAAe,QAAQ,OAAO,gBAAgB,IACvD,MAAM,IAAI,MAAM,kDAAkD;CAGpE,MAAM,aAAa,OAAO,EACxB,OACA,aAAa,GACb,YACA,WACiD;EACjD,IAAI,CAAC,MAAM,KAAK,GACd,OAAO;GAAE,SAAS;GAAO,OAAO;EAAwB;EAG1D,IAAI;GAEF,IAAI,OAAO,eAAe,QAAQ,OAAO,gBAAgB,IACvD,OAAO;IAAE,SAAS;IAAO,OAAO;GAA8B;GAGhE,IAAI,YAAY,OAAO;GACvB,IAAI,CAAC,UAAU,SAAS,SAAS,GAC/B,YAAY,UAAU,QAAQ,OAAO,EAAE,IAAI;GAI7C,IAAI,WAAW;GACf,IAAI,SAAS,UACX,WAAW;QACN,IAAI,SAAS,UAClB,WAAW;QACN,IAAI,SAAS,QAClB,WAAW;GAIb,MAAM,SAAiC;IACrC,GAAG;IACH,QAAQ;IACR,QAAQ;IACR,YAAY;IACZ,UAAU;IACV,YAAY;IACZ,SAAS;GACX;GAEA,MAAM,UAAkC,EACtC,gBAAgB,mBAClB;GAEA,IAAI,OAAO,UAAU,QAAQ,OAAO,WAAW,IAC7C,QAAQ,eAAe,OAAO;GAWhC,MAAM,QAAO,MARU,MAAM,IAAI,WAAW;IAC1C;IACA;IACA,SAAS,OAAO;IAChB,WAAW,QAAQ;IACnB,YAAY,QAAQ;GACtB,CAAC,EAAA,CAEqB;GAGtB,MAAM,gBAAgB,WAAqC;IACzD,MAAM,MAAM,OAAO,KAAK,YAAY,KAAK;IACzC,MAAM,QAAQ,OAAO,OAAO,YAAY,KAAK;IAc7C,MAAM,kBAAkB;KAVtB;KACA;KACA;KACA;KACA;KACA;KACA;IAIiC,CAAC,CAAC,MAClC,YAAY,MAAM,YAAY,CAAC,CAAC,SAAS,OAAO,CACnD;IAGA,MAAM,cACJ,IAAI,SAAS,QAAQ,KACrB,IAAI,SAAS,SAAS,KACtB,IAAI,SAAS,YAAY,KACzB,IAAI,SAAS,YAAY;IAE3B,OAAO,mBAAmB;GAC5B;GAGA,MAAM,kBAAkB,KAAK,WAAW,CAAC,EAAA,CACtC,MAAM,GAAG,UAAU,CAAC,CACpB,KAAK,QAAyB,UAAkB;IAC/C,IAAI,cAAc;IAClB,IAAI;KACF,cAAc,IAAI,IAAI,OAAO,OAAO,EAAE,CAAC,CAAC;IAC1C,QAAQ;KACN,cAAc;IAChB;IAEA,OAAO;KACL,UAAU,QAAQ;KAClB,OAAO,OAAO,SAAS;KACvB,MAAM,OAAO,OAAO;KACpB,SAAS,OAAO,WAAW;KAC3B,MAAM,OAAO,iBAAiB;KAC9B;IACF;GACF,CAAC;GAEH,MAAM,gBAAgB,KAAK,WAAW,CAAC,EAAA,CACpC,QAAQ,WAA4B,OAAO,OAAO,CAAC,CACnD,MAAM,GAAG,CAAC,CAAC,CACX,KAAK,QAAyB,WAAmB;IAChD,OAAO,OAAO,SAAS;IACvB,UAAU,OAAO,WAAW;IAC5B,UAAU,QAAQ;IAClB,QAAQ,IAAI,IAAI,OAAO,OAAO,EAAE,CAAC,CAAC;IAClC,QAAQ,IAAI,IAAI,OAAO,OAAO,EAAE,CAAC,CAAC;IAClC,MAAM,OAAO,OAAO;GACtB,EAAE;GAGJ,MAAM,eAAe,KAAK,WAAW,CAAC,EAAA,CACnC,OAAO,YAAY,CAAC,CACpB,KAAK,QAAyB,UAAkB;IAC/C,IAAI,cAAc;IAClB,IAAI;KACF,cAAc,IAAI,IAAI,OAAO,OAAO,EAAE,CAAC,CAAC;IAC1C,QAAQ;KACN,cAAc;IAChB;IAEA,OAAO;KACL,OAAO,OAAO,SAAS;KACvB,MAAM,OAAO,OAAO;KACpB,SAAS,OAAO,WAAW;KAC3B,MAAM,OAAO,iBAAiB;KAC9B,QAAQ;KACR,UAAU,OAAO,WAAW;KAC5B,UAAU,QAAQ;IACpB;GACF,CAAC;GAuBH,OAAO;IAAE,SAAS;IAAM,MAAM;KAd5B,SAAS;KACT,QAAQ;KACR,YATiB,YAAY,MAAM,GAAG,CASjB;KACrB,iBARsB,MAAM,QAAQ,KAAK,WAAW,IAClD,KAAK,YAAY,KAAK,gBAAwB,EAAE,OAAO,WAAW,EAAE,IACpE,CAAC;KAOH,QAAQ,CAAC;KACT,MAAM;KAEN,QAAQ,CAAC;KACT,UAAU,CAAC;KACX,eAAe,CAAC;KAChB,gBAAgB,KAAA;KAChB,WAAW,KAAA;IAGuB;GAAE;EACxC,SAAS,OAAO;GAGd,OAAO;IACL,SAAS;IACT,OAAO,+BAHP,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;GAIvD;EACF;CACF;CAEA,OAAO,EAAE,WAAW;AACtB;AAEA,MAAa,mBACX,WAGG;CACH,MAAM,EACJ,iBAAiB,UACjB,cACA,oBACA,eACA,cACA,iBACA,qBACA,gBACA,gBACA,uBACA,WACA,WACA,kBACA,WACA,eACE;CAEJ,MAAM,SAA4B;EAAE;EAAW;CAAW;CAE1D,IAAI,eAAe,YAAY,MAAM,UACnC,OAAO,gBAAgB,cAAc,MAAM;MACtC,IAAI,eAAe,YAAY,MAAM,WAC1C,OAAO,iBAAiB,oBAAoB,eAAe,MAAM;MAC5D,IAAI,eAAe,YAAY,MAAM,UAC1C,OAAO,gBAAgB,cAAc,iBAAiB;EACpD,GAAG;EACH,WAAW,aAAa,qBAAqB;EAC7C,YAAY,cAAc,qBAAqB;CACjD,CAAC;MACI,IAAI,eAAe,YAAY,MAAM,YAC1C,OAAO,kBAAkB,gBAAgB,gBAAgB;EACvD,GAAG;EACH,WAAW,aAAa,uBAAuB;EAC/C,YAAY,cAAc,uBAAuB;CACnD,CAAC;MACI,IAAI,eAAe,YAAY,MAAM,OAC1C,OAAO,aAAa,WAAW,WAAW;EACxC,GAAG;EACH,WAAW,aAAa,kBAAkB;EAC1C,YAAY,cAAc,kBAAkB;CAC9C,CAAC;MAED,MAAM,IAAI,MACR,4BAA4B,eAAe,8DAC7C;AAEJ;AAEA,MAAa,yBACX,SAAiC,CAAC,GAClC,oBAMG;CACH,IAAI,CAAC,iBACH,MAAM,IAAI,MAAM,8BAA8B;CAEhD,MAAM,EACJ,aAAa,GAGb,UACA,WACE;CAEJ,MAAM,mBAAmB,wBAAwB,OAAO,gBAAgB;CACxE,MAAM,eAAe,oBACnB,OAAO,WACP,OAAO,YACT;CACA,MAAM,UAAU,UAAU,oBAAoB;CAC9C,MAAM,UAAU;CAEhB,MAAM,mBACJ,KACA,aACmB;EACnB,MAAM,cAAc,QAAQ,gBAAgB,QAAQ;EAGpD,MAAM,cAAc,eAAe,KADjC,OAAO,KAAK,WAAW,CAAC,CAAC,SAAS,IAAI,cAAc,KAAA,GACJ,OAAO;EAEzD,IAAI,SAAS,WAAW,SAAS,MAAM;GACrC,MAAM,CAAC,SAAS,cAAc,QAAQ,eAAe,QAAQ;GAC7D,OAAO;IACL;IACA;IACA;IACA,SAAS,gBAAgB,QAAQ,UAAU,OAAO,GAAG,gBAAgB;GACvE;EACF;EAEA,QAAQ,MACN,kBAAkB,IAAI,IAAI,SAAS,SAAS,iBAC9C;EACA,OAAO;GAAE;GAAK;GAAa,OAAO;GAAM,SAAS;EAAG;CACtD;CAEA,MAAM,gBAAgB,OACpB,QACA,OACA,oBAC4B;EAC5B,IAAI,OAAO,SAAS,MAClB,OAAO;EAET,IAAI;GACF,MAAM,aAAa,MAAM,cAAc;IACrC;IACA;IACA;IACA,SAAS,OAAO;IAChB;IACA;IACA,QAAQ;GACV,CAAC;GACD,IAAI,iBACF,gBAAgB,OAAO,GAAG;GAE5B,OAAO;IAAE,GAAG;IAAQ;GAAW;EACjC,SAAS,OAAO;GACd,QAAQ,MAAM,qCAAqC,KAAK;GACxD,OAAO;EACT;CACF;CAEA,MAAM,aAAa,EACjB,YAAY,OAAO,EACjB,OACA,OACA,sBAKoC;EACpC,QAAQ,MAAM,YAAY,MAAM,OAAO,OAAO;EAC9C,IAAI;GACF,IAAI;GAEJ,IAAI,QAAQ,YACV,YAAY,MAAM,QAAQ,WAAW,KAAK;QAE1C,YAAY,MAAM,QAAQ,IACxB,MAAM,KAAK,SACT,QACG,UAAU,MAAM,CAAC,CAAC,CAAC,CACnB,OAAO,UAA0C;IAChD,QAAQ,MAAM,kBAAkB,KAAK,IAAI,KAAK;IAC9C,OAAO,CAAC,MAAM;KAAE,SAAS;KAAO,OAAO,OAAO,KAAK;IAAE,CAAC;GACxD,CAAC,CACL,CACF;GAYF,OAAO,MATsB,QAAQ,IACnC,UAAU,KAAK,CAAC,KAAK,cACnB,cACE,gBAAgB,KAAK,QAAQ,GAC7B,OACA,eACF,CACF,CACF;EAEF,SAAS,OAAO;GACd,QAAQ,MAAM,wBAAwB,KAAK;GAC3C,OAAO,CAAC;EACV;CACF,EACF;CAEA,MAAM,gBAAgB,OAAO,EAC3B,OACA,OACA,QACA,iBACA,uBAOmB;EACnB,MAAM,eAAe,MAAM,MAAM,GAAG,MAAM;EAE1C,MAAM,UAAU,MAAM,WAAW,WAAW;GAC1C;GACA,OAAO;GACP;EACF,CAAC;EACD,KAAK,MAAM,UAAU,SAAS;GAC5B,IAAI,OAAO,UAAU,MACnB;GAEF,MAAM,EAAE,KAAK,SAAS,aAAa,YAAY,eAAe;GAC9D,mBAAmB,KAAK;IACtB;IACA;IACA;IACA;GACF,CAAC;EACH;CACF;CAEA,MAAM,iBAAiB,OAAO,EAC5B,QACA,aACA,OACA,MACA,UAAU,MACV,sBACyD;EACzD,IAAI;GACF,IAAI,CAAC,OAAO,MACV,OAAO;IACL,SAAS,CAAC;IACV,YAAY,CAAC;IACb,QAAQ,CAAC;IACT,iBAAiB,CAAC;GACpB;GAGF,IACE,OAAO,KAAK,cAAc,QAC1B,OAAO,KAAK,WAAW,SAAS;;;;;GAMhC,OAAO,KAAK,aAAa,OAAO,KAAK,WAAW,MAAM,GAAG,WAAW;GAGtE,IAAI,CAAC,OAAO,KAAK,SACf,OAAO,OAAO;GAGhB,IAAI,CAAC,SAAS;IACZ,MAAM,cAAc,OAAO,KAAK,QAAQ,QAAQ,WAC9C,OAAO,KAAK,SAAS,eAAe,CACtC;IAEA,IAAI,CAAC,YAAY,QACf,OAAO,OAAO;IAGhB,MAAM,gCAAgB,IAAI,IAA2B;IACrD,cAAc,IAAI,YAAY,EAAE,CAAC,MAAM,YAAY,EAAE;IAErD,MAAM,cAAc;KAClB;KACA,QAAQ;KACR;KACA,kBALuB,2BAA2B,aAKnC;KACf,OAAO,CAAC,YAAY,EAAE,CAAC,IAAI;IAC7B,CAAC;IAED,KAAK,IAAI,IAAI,GAAG,IAAI,OAAO,KAAK,QAAQ,QAAQ,KAAK;KACnD,MAAM,SAAS,OAAO,KAAK,QAAQ;KACnC,MAAM,gBAAgB,cAAc,IAAI,OAAO,IAAI;KACnD,IAAI,eACF,OAAO,KAAK,QAAQ,KAAK;MACvB,GAAG;MACH,GAAG;KACL;IAEJ;IAEA,OAAO,OAAO;GAChB;GAEA,MAAM,4BAAY,IAAI,IAA2B;GACjD,MAAM,kCAAkB,IAAI,IAAY;GAGxC,MAAM,eAAe,aACnB,OAAO,KAAK,SACZ,WACA,eACF;GAGA,MAAM,aAAa,OAAO,KAAK,cAAc,CAAC;GAC9C,MAAM,gBAAgB,aACpB,YACA,WACA,eACF;GAEA,IAAI,aAAa,WAAW,MAAM,cAAc,WAAW,KAAK,CAAC,OAC/D,OAAO,OAAO;GAGhB,MAAM,mBAAmB,2BAA2B,SAAS;GAC7D,MAAM,WAA4B,CAAC;GAGnC,IAAI,aAAa,SAAS,GACxB,SAAS,KACP,cAAc;IACZ;IACA;IACA;IACA,OAAO;IACP,QAAQ;GACV,CAAC,CACH;GAIF,IAAI,QAAQ,cAAc,SAAS,GACjC,SAAS,KACP,cAAc;IACZ;IACA;IACA;IACA,OAAO;IACP,QAAQ;GACV,CAAC,CACH;GAGF,MAAM,QAAQ,IAAI,QAAQ;GAE1B,IAAI,OAAO,KAAK,QAAQ,SAAS,GAC/B,yBAAyB,OAAO,KAAK,SAAS,SAAS;GAGzD,IAAI,QAAQ,WAAW,SAAS,GAC9B,yBAAyB,YAAY,SAAS;GAGhD,OAAO,OAAO;EAChB,SAAS,OAAO;GACd,QAAQ,MAAM,4BAA4B,KAAK;GAC/C,OAAO;IACL,SAAS,CAAC;IACV,YAAY,CAAC;IACb,QAAQ,CAAC;IACT,iBAAiB,CAAC;IAClB,GAAG,OAAO;IACV,OAAO,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;GAC9D;EACF;CACF;CAEA,OAAO;EACL;EACA;CACF;AACF;;AAGA,SAAS,aACP,SACA,WACA,kBACU;CACV,MAAM,QAAkB,CAAC;CAEzB,KAAK,MAAM,UAAU,SACnB,IAAI,OAAO,MAAM;EAEf,IAAI,oBAAoB,iBAAiB,IAAI,OAAO,IAAI,GACtD;EAGF,MAAM,KAAK,OAAO,IAAI;EACtB,IAAI,kBACF,iBAAiB,IAAI,OAAO,IAAI;EAElC,UAAU,IAAI,OAAO,MAAM,MAAuB;CACpD;CAGF,OAAO;AACT;;AAGA,SAAS,yBACP,SACA,WACM;CACN,KAAK,IAAI,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK;EACvC,MAAM,SAAS,QAAQ;EACvB,MAAM,gBAAgB,UAAU,IAAI,OAAO,IAAI;EAC/C,IAAI,eACF,QAAQ,KAAK;GACX,GAAG;GACH,GAAG;EACL;CAEJ;AACF"}
1
+ {"version":3,"file":"search.mjs","names":[],"sources":["../../../../src/tools/search/search.ts"],"mappings":"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"}
@@ -1,31 +1,6 @@
1
1
  import { createDefaultLogger } from "./utils.mjs";
2
2
  import axios from "axios";
3
3
  //#region src/tools/search/serper-scraper.ts
4
- /**
5
- * Serper scraper implementation
6
- * Uses the Serper Scrape API (https://scrape.serper.dev) to scrape web pages
7
- *
8
- * Features:
9
- * - Simple API with single endpoint
10
- * - Returns both text and markdown content
11
- * - Includes metadata from scraped pages
12
- * - Credits-based pricing model
13
- *
14
- * @example
15
- * ```typescript
16
- * const scraper = createSerperScraper({
17
- * apiKey: 'your-serper-api-key',
18
- * includeMarkdown: true,
19
- * timeout: 10000
20
- * });
21
- *
22
- * const [url, response] = await scraper.scrapeUrl('https://example.com');
23
- * if (response.success) {
24
- * const [content] = scraper.extractContent(response);
25
- * console.log(content);
26
- * }
27
- * ```
28
- */
29
4
  var SerperScraper = class {
30
5
  apiKey;
31
6
  apiUrl;
@@ -45,12 +20,6 @@ var SerperScraper = class {
45
20
  if (!this.apiKey) this.logger.warn("SERPER_API_KEY is not set. Scraping will not work.");
46
21
  this.logger.debug(`Serper scraper initialized with API URL: ${this.apiUrl}`);
47
22
  }
48
- /**
49
- * Scrape a single URL
50
- * @param url URL to scrape
51
- * @param options Scrape options
52
- * @returns Scrape response
53
- */
54
23
  async scrapeUrl(url, options = {}) {
55
24
  if (!this.apiKey) return [url, {
56
25
  success: false,
@@ -80,32 +49,17 @@ var SerperScraper = class {
80
49
  }];
81
50
  }
82
51
  }
83
- /**
84
- * Extract content from scrape response
85
- * @param response Scrape response
86
- * @returns Extracted content or empty string if not available
87
- */
88
52
  extractContent(response) {
89
53
  if (!response.success || !response.data) return ["", void 0];
90
54
  if (response.data.markdown != null) return [response.data.markdown, void 0];
91
55
  if (response.data.text != null) return [response.data.text, void 0];
92
56
  return ["", void 0];
93
57
  }
94
- /**
95
- * Extract metadata from scrape response
96
- * @param response Scrape response
97
- * @returns Metadata object
98
- */
99
58
  extractMetadata(response) {
100
59
  if (!response.success || !response.data || !response.data.metadata) return {};
101
60
  return response.data.metadata;
102
61
  }
103
62
  };
104
- /**
105
- * Create a Serper scraper instance
106
- * @param config Scraper configuration
107
- * @returns Serper scraper instance
108
- */
109
63
  const createSerperScraper = (config = {}) => {
110
64
  return new SerperScraper(config);
111
65
  };
@@ -1 +1 @@
1
- {"version":3,"file":"serper-scraper.mjs","names":[],"sources":["../../../../src/tools/search/serper-scraper.ts"],"sourcesContent":["import axios from 'axios';\nimport type * as t from './types';\nimport { createDefaultLogger } from './utils';\n\n/**\n * Serper scraper implementation\n * Uses the Serper Scrape API (https://scrape.serper.dev) to scrape web pages\n *\n * Features:\n * - Simple API with single endpoint\n * - Returns both text and markdown content\n * - Includes metadata from scraped pages\n * - Credits-based pricing model\n *\n * @example\n * ```typescript\n * const scraper = createSerperScraper({\n * apiKey: 'your-serper-api-key',\n * includeMarkdown: true,\n * timeout: 10000\n * });\n *\n * const [url, response] = await scraper.scrapeUrl('https://example.com');\n * if (response.success) {\n * const [content] = scraper.extractContent(response);\n * console.log(content);\n * }\n * ```\n */\nexport class SerperScraper implements t.BaseScraper {\n private apiKey: string;\n private apiUrl: string;\n private timeout: number;\n private logger: t.Logger;\n private includeMarkdown: boolean;\n private httpAgent?: t.HttpAgent;\n private httpsAgent?: t.HttpsAgent;\n\n constructor(config: t.SerperScraperConfig = {}) {\n this.apiKey = config.apiKey ?? process.env.SERPER_API_KEY ?? '';\n\n this.apiUrl =\n config.apiUrl ??\n process.env.SERPER_SCRAPE_URL ??\n 'https://scrape.serper.dev';\n\n this.timeout = config.timeout ?? 7500;\n this.includeMarkdown = config.includeMarkdown ?? true;\n this.httpAgent = config.httpAgent;\n this.httpsAgent = config.httpsAgent;\n\n this.logger = config.logger || createDefaultLogger();\n\n if (!this.apiKey) {\n this.logger.warn('SERPER_API_KEY is not set. Scraping will not work.');\n }\n\n this.logger.debug(\n `Serper scraper initialized with API URL: ${this.apiUrl}`\n );\n }\n\n /**\n * Scrape a single URL\n * @param url URL to scrape\n * @param options Scrape options\n * @returns Scrape response\n */\n async scrapeUrl(\n url: string,\n options: t.SerperScrapeOptions = {}\n ): Promise<[string, t.SerperScrapeResponse]> {\n if (!this.apiKey) {\n return [\n url,\n {\n success: false,\n error: 'SERPER_API_KEY is not set',\n },\n ];\n }\n\n try {\n const payload = {\n url,\n includeMarkdown: options.includeMarkdown ?? this.includeMarkdown,\n };\n\n const response = await axios.post(this.apiUrl, payload, {\n headers: {\n 'X-API-KEY': this.apiKey,\n 'Content-Type': 'application/json',\n },\n timeout: options.timeout ?? this.timeout,\n httpAgent: this.httpAgent,\n httpsAgent: this.httpsAgent,\n });\n\n return [url, { success: true, data: response.data }];\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : String(error);\n return [\n url,\n {\n success: false,\n error: `Serper Scrape API request failed: ${errorMessage}`,\n },\n ];\n }\n }\n\n /**\n * Extract content from scrape response\n * @param response Scrape response\n * @returns Extracted content or empty string if not available\n */\n extractContent(\n response: t.SerperScrapeResponse\n ): [string, undefined | t.References] {\n if (!response.success || !response.data) {\n return ['', undefined];\n }\n\n if (response.data.markdown != null) {\n return [response.data.markdown, undefined];\n }\n\n if (response.data.text != null) {\n return [response.data.text, undefined];\n }\n\n return ['', undefined];\n }\n\n /**\n * Extract metadata from scrape response\n * @param response Scrape response\n * @returns Metadata object\n */\n extractMetadata(\n response: t.SerperScrapeResponse\n ): Record<string, string | number | boolean | null | undefined> {\n if (!response.success || !response.data || !response.data.metadata) {\n return {};\n }\n\n return response.data.metadata;\n }\n}\n\n/**\n * Create a Serper scraper instance\n * @param config Scraper configuration\n * @returns Serper scraper instance\n */\nexport const createSerperScraper = (\n config: t.SerperScraperConfig = {}\n): SerperScraper => {\n return new SerperScraper(config);\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6BA,IAAa,gBAAb,MAAoD;CAClD;CACA;CACA;CACA;CACA;CACA;CACA;CAEA,YAAY,SAAgC,CAAC,GAAG;EAC9C,KAAK,SAAS,OAAO,UAAU,QAAQ,IAAI,kBAAkB;EAE7D,KAAK,SACH,OAAO,UACP,QAAQ,IAAI,qBACZ;EAEF,KAAK,UAAU,OAAO,WAAW;EACjC,KAAK,kBAAkB,OAAO,mBAAmB;EACjD,KAAK,YAAY,OAAO;EACxB,KAAK,aAAa,OAAO;EAEzB,KAAK,SAAS,OAAO,UAAU,oBAAoB;EAEnD,IAAI,CAAC,KAAK,QACR,KAAK,OAAO,KAAK,oDAAoD;EAGvE,KAAK,OAAO,MACV,4CAA4C,KAAK,QACnD;CACF;;;;;;;CAQA,MAAM,UACJ,KACA,UAAiC,CAAC,GACS;EAC3C,IAAI,CAAC,KAAK,QACR,OAAO,CACL,KACA;GACE,SAAS;GACT,OAAO;EACT,CACF;EAGF,IAAI;GACF,MAAM,UAAU;IACd;IACA,iBAAiB,QAAQ,mBAAmB,KAAK;GACnD;GAYA,OAAO,CAAC,KAAK;IAAE,SAAS;IAAM,OAAM,MAVb,MAAM,KAAK,KAAK,QAAQ,SAAS;KACtD,SAAS;MACP,aAAa,KAAK;MAClB,gBAAgB;KAClB;KACA,SAAS,QAAQ,WAAW,KAAK;KACjC,WAAW,KAAK;KAChB,YAAY,KAAK;IACnB,CAAC,EAAA,CAE4C;GAAK,CAAC;EACrD,SAAS,OAAO;GAGd,OAAO,CACL,KACA;IACE,SAAS;IACT,OAAO,qCALT,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;GAMrD,CACF;EACF;CACF;;;;;;CAOA,eACE,UACoC;EACpC,IAAI,CAAC,SAAS,WAAW,CAAC,SAAS,MACjC,OAAO,CAAC,IAAI,KAAA,CAAS;EAGvB,IAAI,SAAS,KAAK,YAAY,MAC5B,OAAO,CAAC,SAAS,KAAK,UAAU,KAAA,CAAS;EAG3C,IAAI,SAAS,KAAK,QAAQ,MACxB,OAAO,CAAC,SAAS,KAAK,MAAM,KAAA,CAAS;EAGvC,OAAO,CAAC,IAAI,KAAA,CAAS;CACvB;;;;;;CAOA,gBACE,UAC8D;EAC9D,IAAI,CAAC,SAAS,WAAW,CAAC,SAAS,QAAQ,CAAC,SAAS,KAAK,UACxD,OAAO,CAAC;EAGV,OAAO,SAAS,KAAK;CACvB;AACF;;;;;;AAOA,MAAa,uBACX,SAAgC,CAAC,MACf;CAClB,OAAO,IAAI,cAAc,MAAM;AACjC"}
1
+ {"version":3,"file":"serper-scraper.mjs","names":[],"sources":["../../../../src/tools/search/serper-scraper.ts"],"mappings":";;;AA6BA,IAAa,gBAAb,MAAoD;CAClD;CACA;CACA;CACA;CACA;CACA;CACA;CAEA,YAAY,SAAgC,CAAC,GAAG;EAC9C,KAAK,SAAS,OAAO,UAAU,QAAQ,IAAI,kBAAkB;EAE7D,KAAK,SACH,OAAO,UACP,QAAQ,IAAI,qBACZ;EAEF,KAAK,UAAU,OAAO,WAAW;EACjC,KAAK,kBAAkB,OAAO,mBAAmB;EACjD,KAAK,YAAY,OAAO;EACxB,KAAK,aAAa,OAAO;EAEzB,KAAK,SAAS,OAAO,UAAU,oBAAoB;EAEnD,IAAI,CAAC,KAAK,QACR,KAAK,OAAO,KAAK,oDAAoD;EAGvE,KAAK,OAAO,MACV,4CAA4C,KAAK,QACnD;CACF;CAQA,MAAM,UACJ,KACA,UAAiC,CAAC,GACS;EAC3C,IAAI,CAAC,KAAK,QACR,OAAO,CACL,KACA;GACE,SAAS;GACT,OAAO;EACT,CACF;EAGF,IAAI;GACF,MAAM,UAAU;IACd;IACA,iBAAiB,QAAQ,mBAAmB,KAAK;GACnD;GAYA,OAAO,CAAC,KAAK;IAAE,SAAS;IAAM,OAAM,MAVb,MAAM,KAAK,KAAK,QAAQ,SAAS;KACtD,SAAS;MACP,aAAa,KAAK;MAClB,gBAAgB;KAClB;KACA,SAAS,QAAQ,WAAW,KAAK;KACjC,WAAW,KAAK;KAChB,YAAY,KAAK;IACnB,CAAC,EAAA,CAE4C;GAAK,CAAC;EACrD,SAAS,OAAO;GAGd,OAAO,CACL,KACA;IACE,SAAS;IACT,OAAO,qCALT,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;GAMrD,CACF;EACF;CACF;CAOA,eACE,UACoC;EACpC,IAAI,CAAC,SAAS,WAAW,CAAC,SAAS,MACjC,OAAO,CAAC,IAAI,KAAA,CAAS;EAGvB,IAAI,SAAS,KAAK,YAAY,MAC5B,OAAO,CAAC,SAAS,KAAK,UAAU,KAAA,CAAS;EAG3C,IAAI,SAAS,KAAK,QAAQ,MACxB,OAAO,CAAC,SAAS,KAAK,MAAM,KAAA,CAAS;EAGvC,OAAO,CAAC,IAAI,KAAA,CAAS;CACvB;CAOA,gBACE,UAC8D;EAC9D,IAAI,CAAC,SAAS,WAAW,CAAC,SAAS,QAAQ,CAAC,SAAS,KAAK,UACxD,OAAO,CAAC;EAGV,OAAO,SAAS,KAAK;CACvB;AACF;AAOA,MAAa,uBACX,SAAgC,CAAC,MACf;CAClB,OAAO,IAAI,cAAc,MAAM;AACjC"}
@@ -1 +1 @@
1
- {"version":3,"file":"tavily-scraper.mjs","names":[],"sources":["../../../../src/tools/search/tavily-scraper.ts"],"sourcesContent":["import axios from 'axios';\nimport type * as t from './types';\nimport { createDefaultLogger } from './utils';\n\nconst DEFAULT_BASIC_TIMEOUT = 15000;\nconst DEFAULT_ADVANCED_TIMEOUT = 30000;\nconst MAX_BATCH_SIZE = 20;\n\nconst getDefaultTimeout = (extractDepth: 'basic' | 'advanced'): number =>\n extractDepth === 'advanced'\n ? DEFAULT_ADVANCED_TIMEOUT\n : DEFAULT_BASIC_TIMEOUT;\n\nconst normalizeUrlKey = (url: string): string => {\n try {\n const parsedUrl = new URL(url);\n parsedUrl.hash = '';\n if (parsedUrl.pathname.length > 1) {\n parsedUrl.pathname = parsedUrl.pathname.replace(/\\/+$/, '');\n }\n return parsedUrl.toString();\n } catch {\n return url;\n }\n};\n\nconst setUrlResult = (\n map: Map<string, t.TavilyExtractResult>,\n result: t.TavilyExtractResult\n): void => {\n map.set(result.url, result);\n const normalizedUrl = normalizeUrlKey(result.url);\n if (!map.has(normalizedUrl)) {\n map.set(normalizedUrl, result);\n }\n};\n\nexport class TavilyScraper implements t.BaseScraper {\n private apiKey: string;\n private apiUrl: string;\n private timeout: number;\n private payloadTimeout: number | undefined;\n private logger: t.Logger;\n private extractDepth: 'basic' | 'advanced';\n private includeImages: boolean;\n private includeFavicon: boolean;\n private format: 'markdown' | 'text' | undefined;\n private httpAgent?: t.HttpAgent;\n private httpsAgent?: t.HttpsAgent;\n\n constructor(config: t.TavilyScraperConfig = {}) {\n this.apiKey = config.apiKey ?? process.env.TAVILY_API_KEY ?? '';\n this.apiUrl =\n config.apiUrl ??\n process.env.TAVILY_EXTRACT_URL ??\n 'https://api.tavily.com/extract';\n this.payloadTimeout = config.timeout;\n this.extractDepth = config.extractDepth ?? 'basic';\n this.timeout = config.timeout ?? getDefaultTimeout(this.extractDepth);\n this.includeImages = config.includeImages ?? false;\n this.includeFavicon = config.includeFavicon ?? false;\n this.format = config.format;\n this.httpAgent = config.httpAgent;\n this.httpsAgent = config.httpsAgent;\n this.logger = config.logger || createDefaultLogger();\n\n if (!this.apiKey) {\n this.logger.warn('TAVILY_API_KEY is not set. Scraping will not work.');\n }\n }\n\n async scrapeUrl(\n url: string,\n options: t.TavilyScrapeOptions = {}\n ): Promise<[string, t.TavilyScrapeResponse]> {\n const results = await this.scrapeUrls([url], options);\n return results[0];\n }\n\n async scrapeUrls(\n urls: string[],\n options: t.TavilyScrapeOptions = {}\n ): Promise<Array<[string, t.TavilyScrapeResponse]>> {\n if (!this.apiKey) {\n return urls.map((url) => [\n url,\n { success: false, error: 'TAVILY_API_KEY is not set' },\n ]);\n }\n\n const batches: string[][] = [];\n for (let i = 0; i < urls.length; i += MAX_BATCH_SIZE) {\n batches.push(urls.slice(i, i + MAX_BATCH_SIZE));\n }\n\n const allResults: Array<[string, t.TavilyScrapeResponse]> = [];\n\n for (const batch of batches) {\n const batchResults = await this.extractBatch(batch, options);\n allResults.push(...batchResults);\n }\n\n return allResults;\n }\n\n private async extractBatch(\n urls: string[],\n options: t.TavilyScrapeOptions = {}\n ): Promise<Array<[string, t.TavilyScrapeResponse]>> {\n try {\n const includeFavicon = options.includeFavicon ?? this.includeFavicon;\n const format = options.format ?? this.format;\n const extractDepth = options.extractDepth ?? this.extractDepth;\n const payload: t.TavilyExtractPayload = {\n urls,\n extract_depth: extractDepth,\n include_images: options.includeImages ?? this.includeImages,\n };\n\n if (includeFavicon) {\n payload.include_favicon = true;\n }\n if (format != null) {\n payload.format = format;\n }\n\n const effectiveTimeout =\n options.timeout ??\n this.payloadTimeout ??\n (options.extractDepth != null\n ? getDefaultTimeout(extractDepth)\n : this.timeout);\n const payloadTimeout = options.timeout ?? this.payloadTimeout;\n if (payloadTimeout != null) {\n payload.timeout = Math.min(Math.max(payloadTimeout / 1000, 1), 60);\n }\n\n const response = await axios.post<{\n results?: t.TavilyExtractResult[];\n failed_results?: t.TavilyExtractResult[];\n }>(this.apiUrl, payload, {\n headers: {\n Authorization: `Bearer ${this.apiKey}`,\n 'Content-Type': 'application/json',\n },\n timeout: effectiveTimeout,\n httpAgent: this.httpAgent,\n httpsAgent: this.httpsAgent,\n });\n\n const data = response.data;\n const successMap = new Map<string, t.TavilyExtractResult>();\n const failedMap = new Map<string, t.TavilyExtractResult>();\n\n for (const result of data.results ?? []) {\n setUrlResult(successMap, result);\n }\n for (const result of data.failed_results ?? []) {\n setUrlResult(failedMap, result);\n }\n\n return urls.map((url): [string, t.TavilyScrapeResponse] => {\n const success =\n successMap.get(url) ?? successMap.get(normalizeUrlKey(url));\n if (success && success.error == null) {\n return [\n url,\n {\n success: true,\n data: {\n rawContent: success.raw_content ?? '',\n images: success.images ?? [],\n favicon: success.favicon,\n },\n },\n ];\n }\n\n const failed =\n failedMap.get(url) ?? failedMap.get(normalizeUrlKey(url));\n const error =\n success?.error ??\n failed?.error ??\n 'URL not found in Tavily Extract response';\n return [url, { success: false, error }];\n });\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : String(error);\n return urls.map((url) => [\n url,\n {\n success: false,\n error: `Tavily Extract API request failed: ${errorMessage}`,\n },\n ]);\n }\n }\n\n extractContent(\n response: t.TavilyScrapeResponse\n ): [string, undefined | t.References] {\n if (!response.success || !response.data) {\n return ['', undefined];\n }\n\n const content = response.data.rawContent ?? '';\n const images = response.data.images ?? [];\n\n const references: t.References | undefined =\n images.length > 0\n ? {\n links: [],\n images: images.map((imageUrl) => ({ originalUrl: imageUrl })),\n videos: [],\n }\n : undefined;\n\n return [content, references];\n }\n\n extractMetadata(response: t.TavilyScrapeResponse): t.GenericScrapeMetadata {\n if (!response.success || !response.data) {\n return {};\n }\n\n const metadata: t.GenericScrapeMetadata = {\n images_count: response.data.images?.length ?? 0,\n };\n if (response.data.favicon != null) {\n metadata.favicon = response.data.favicon;\n }\n return metadata;\n }\n}\n\nexport const createTavilyScraper = (\n config: t.TavilyScraperConfig = {}\n): TavilyScraper => {\n return new TavilyScraper(config);\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"tavily-scraper.mjs","names":[],"sources":["../../../../src/tools/search/tavily-scraper.ts"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"tavily-search.mjs","names":[],"sources":["../../../../src/tools/search/tavily-search.ts"],"sourcesContent":["import axios from 'axios';\nimport type * as t from './types';\n\nconst DEFAULT_TAVILY_TIMEOUT = 15000;\n\nconst TAVILY_COUNTRY_ALIASES: Partial<Record<string, string>> = {\n ba: 'bosnia and herzegovina',\n cg: 'congo',\n cz: 'czech republic',\n gb: 'united kingdom',\n mm: 'myanmar',\n tr: 'turkey',\n tt: 'trinidad and tobago',\n uk: 'united kingdom',\n};\n\nconst TAVILY_SUPPORTED_COUNTRIES = new Set([\n 'afghanistan',\n 'albania',\n 'algeria',\n 'andorra',\n 'angola',\n 'argentina',\n 'armenia',\n 'australia',\n 'austria',\n 'azerbaijan',\n 'bahamas',\n 'bahrain',\n 'bangladesh',\n 'barbados',\n 'belarus',\n 'belgium',\n 'belize',\n 'benin',\n 'bhutan',\n 'bolivia',\n 'bosnia and herzegovina',\n 'botswana',\n 'brazil',\n 'brunei',\n 'bulgaria',\n 'burkina faso',\n 'burundi',\n 'cambodia',\n 'cameroon',\n 'canada',\n 'cape verde',\n 'central african republic',\n 'chad',\n 'chile',\n 'china',\n 'colombia',\n 'comoros',\n 'congo',\n 'costa rica',\n 'croatia',\n 'cuba',\n 'cyprus',\n 'czech republic',\n 'denmark',\n 'djibouti',\n 'dominican republic',\n 'ecuador',\n 'egypt',\n 'el salvador',\n 'equatorial guinea',\n 'eritrea',\n 'estonia',\n 'ethiopia',\n 'fiji',\n 'finland',\n 'france',\n 'gabon',\n 'gambia',\n 'georgia',\n 'germany',\n 'ghana',\n 'greece',\n 'guatemala',\n 'guinea',\n 'haiti',\n 'honduras',\n 'hungary',\n 'iceland',\n 'india',\n 'indonesia',\n 'iran',\n 'iraq',\n 'ireland',\n 'israel',\n 'italy',\n 'jamaica',\n 'japan',\n 'jordan',\n 'kazakhstan',\n 'kenya',\n 'kuwait',\n 'kyrgyzstan',\n 'latvia',\n 'lebanon',\n 'lesotho',\n 'liberia',\n 'libya',\n 'liechtenstein',\n 'lithuania',\n 'luxembourg',\n 'madagascar',\n 'malawi',\n 'malaysia',\n 'maldives',\n 'mali',\n 'malta',\n 'mauritania',\n 'mauritius',\n 'mexico',\n 'moldova',\n 'monaco',\n 'mongolia',\n 'montenegro',\n 'morocco',\n 'mozambique',\n 'myanmar',\n 'namibia',\n 'nepal',\n 'netherlands',\n 'new zealand',\n 'nicaragua',\n 'niger',\n 'nigeria',\n 'north korea',\n 'north macedonia',\n 'norway',\n 'oman',\n 'pakistan',\n 'panama',\n 'papua new guinea',\n 'paraguay',\n 'peru',\n 'philippines',\n 'poland',\n 'portugal',\n 'qatar',\n 'romania',\n 'russia',\n 'rwanda',\n 'saudi arabia',\n 'senegal',\n 'serbia',\n 'singapore',\n 'slovakia',\n 'slovenia',\n 'somalia',\n 'south africa',\n 'south korea',\n 'south sudan',\n 'spain',\n 'sri lanka',\n 'sudan',\n 'sweden',\n 'switzerland',\n 'syria',\n 'taiwan',\n 'tajikistan',\n 'tanzania',\n 'thailand',\n 'togo',\n 'trinidad and tobago',\n 'tunisia',\n 'turkey',\n 'turkmenistan',\n 'uganda',\n 'ukraine',\n 'united arab emirates',\n 'united kingdom',\n 'united states',\n 'uruguay',\n 'uzbekistan',\n 'venezuela',\n 'vietnam',\n 'yemen',\n 'zambia',\n 'zimbabwe',\n]);\n\nconst TAVILY_REGION_NAMES = new Intl.DisplayNames(['en'], {\n type: 'region',\n});\n\nconst normalizeTavilyCountryName = (country: string): string =>\n country\n .toLowerCase()\n .replace(/\\s*\\([^)]*\\)/g, '')\n .replace(/\\s*&\\s*/g, ' and ')\n .normalize('NFD')\n .replace(/\\p{Diacritic}/gu, '');\n\nconst normalizeTavilyCountry = (country?: string): string | undefined => {\n const normalizedCountry = country?.trim().toLowerCase();\n if (normalizedCountry == null || normalizedCountry === '') {\n return undefined;\n }\n\n const countryAlias = TAVILY_COUNTRY_ALIASES[normalizedCountry];\n if (countryAlias != null) {\n return TAVILY_SUPPORTED_COUNTRIES.has(countryAlias)\n ? countryAlias\n : undefined;\n }\n\n if (/^[a-z]{2}$/.test(normalizedCountry)) {\n const regionName = TAVILY_REGION_NAMES.of(normalizedCountry.toUpperCase());\n if (regionName == null) {\n return undefined;\n }\n const countryName = normalizeTavilyCountryName(regionName);\n return TAVILY_SUPPORTED_COUNTRIES.has(countryName)\n ? countryName\n : undefined;\n }\n\n const countryName = normalizeTavilyCountryName(normalizedCountry);\n return TAVILY_SUPPORTED_COUNTRIES.has(countryName) ? countryName : undefined;\n};\n\nconst normalizeTavilyTimeRange = (\n timeRange?: t.TavilyTimeRangeInput\n): t.TavilyTimeRange | undefined => {\n switch (timeRange) {\n case 'h':\n case 'd':\n return 'day';\n case 'w':\n return 'week';\n case 'm':\n return 'month';\n case 'y':\n return 'year';\n case 'day':\n case 'week':\n case 'month':\n case 'year':\n return timeRange;\n default:\n return undefined;\n }\n};\n\nconst getHostname = (link: string): string => {\n try {\n return new URL(link).hostname;\n } catch {\n return link;\n }\n};\n\nexport const createTavilyAPI = (\n apiKey?: string,\n apiUrl?: string,\n options?: t.TavilySearchOptions\n): {\n getSources: (params: t.GetSourcesParams) => Promise<t.SearchResult>;\n} => {\n const config = {\n apiKey: apiKey ?? process.env.TAVILY_API_KEY,\n apiUrl:\n apiUrl ??\n process.env.TAVILY_SEARCH_URL ??\n 'https://api.tavily.com/search',\n timeout: options?.timeout ?? DEFAULT_TAVILY_TIMEOUT,\n };\n\n if (config.apiKey == null || config.apiKey === '') {\n throw new Error('TAVILY_API_KEY is required for Tavily API');\n }\n\n const getSources = async ({\n query,\n date,\n country,\n numResults = 8,\n type,\n news,\n }: t.GetSourcesParams): Promise<t.SearchResult> => {\n if (!query.trim()) {\n return { success: false, error: 'Query cannot be empty' };\n }\n\n try {\n const timeRange =\n normalizeTavilyTimeRange(options?.timeRange) ??\n (date != null ? (normalizeTavilyTimeRange(date) ?? 'day') : undefined);\n const topic =\n news === true || type === 'news'\n ? 'news'\n : (options?.topic ?? 'general');\n const maxResults = options?.maxResults ?? numResults;\n const searchDepth = options?.searchDepth ?? 'basic';\n\n const payload: t.TavilySearchPayload = {\n query,\n search_depth: searchDepth,\n topic,\n max_results: Math.min(Math.max(1, maxResults), 20),\n };\n\n if (\n options?.safeSearch != null &&\n searchDepth !== 'fast' &&\n searchDepth !== 'ultra-fast'\n ) {\n payload.safe_search = options.safeSearch;\n }\n if (timeRange != null) {\n payload.time_range = timeRange;\n }\n const tavilyCountry =\n topic === 'general' ? normalizeTavilyCountry(country) : undefined;\n if (tavilyCountry != null) {\n payload.country = tavilyCountry;\n }\n if (type === 'images' || options?.includeImages === true) {\n payload.include_images = true;\n }\n if (options?.includeAnswer != null) {\n payload.include_answer = options.includeAnswer;\n }\n if (options?.includeRawContent != null) {\n payload.include_raw_content = options.includeRawContent;\n }\n if (\n options?.includeDomains != null &&\n options.includeDomains.length > 0\n ) {\n payload.include_domains = options.includeDomains;\n }\n if (\n options?.excludeDomains != null &&\n options.excludeDomains.length > 0\n ) {\n payload.exclude_domains = options.excludeDomains;\n }\n if (options?.includeImageDescriptions != null) {\n payload.include_image_descriptions = options.includeImageDescriptions;\n }\n if (options?.includeFavicon != null) {\n payload.include_favicon = options.includeFavicon;\n }\n if (options?.chunksPerSource != null && searchDepth === 'advanced') {\n payload.chunks_per_source = options.chunksPerSource;\n }\n\n const response = await axios.post<t.TavilySearchResponse>(\n config.apiUrl,\n payload,\n {\n headers: {\n Authorization: `Bearer ${config.apiKey}`,\n 'Content-Type': 'application/json',\n },\n timeout: config.timeout,\n httpAgent: options?.httpAgent,\n httpsAgent: options?.httpsAgent,\n }\n );\n\n const data = response.data;\n\n const organicResults: t.OrganicResult[] = (data.results ?? []).map(\n (result: t.TavilySearchResult) => ({\n title: result.title ?? '',\n link: result.url ?? '',\n snippet: result.content ?? '',\n date: result.published_date,\n })\n );\n\n const imageResults: t.ImageResult[] = Array.isArray(data.images)\n ? data.images.slice(0, 6).reduce<t.ImageResult[]>((acc, image) => {\n const imageUrl = typeof image === 'string' ? image : image.url;\n if (imageUrl == null || imageUrl === '') {\n return acc;\n }\n acc.push({\n imageUrl,\n title: typeof image === 'string' ? undefined : image.description,\n position: acc.length + 1,\n });\n return acc;\n }, [])\n : [];\n\n const newsResults: t.NewsResult[] =\n topic === 'news'\n ? organicResults.map((r) => ({\n title: r.title,\n link: r.link,\n snippet: r.snippet,\n date: r.date,\n source: getHostname(r.link),\n }))\n : [];\n\n const results: t.SearchResultData = {\n organic: organicResults,\n images: imageResults,\n topStories: [],\n videos: [],\n news: newsResults,\n answerBox: data.answer != null ? { snippet: data.answer } : undefined,\n relatedSearches: [],\n };\n\n return { success: true, data: results };\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : String(error);\n return {\n success: false,\n error: `Tavily API request failed: ${errorMessage}`,\n };\n }\n };\n\n return { getSources };\n};\n"],"mappings":";;AAGA,MAAM,yBAAyB;AAE/B,MAAM,yBAA0D;CAC9D,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,MAAM,6BAA6B,IAAI,IAAI;CACzC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF,CAAC;AAED,MAAM,sBAAsB,IAAI,KAAK,aAAa,CAAC,IAAI,GAAG,EACxD,MAAM,SACR,CAAC;AAED,MAAM,8BAA8B,YAClC,QACG,YAAY,CAAC,CACb,QAAQ,iBAAiB,EAAE,CAAC,CAC5B,QAAQ,YAAY,OAAO,CAAC,CAC5B,UAAU,KAAK,CAAC,CAChB,QAAQ,mBAAmB,EAAE;AAElC,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"}
1
+ {"version":3,"file":"tavily-search.mjs","names":[],"sources":["../../../../src/tools/search/tavily-search.ts"],"mappings":";;AAGA,MAAM,yBAAyB;AAE/B,MAAM,yBAA0D;CAC9D,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,MAAM,6BAA6B,IAAI,IAAI;CACzC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF,CAAC;AAED,MAAM,sBAAsB,IAAI,KAAK,aAAa,CAAC,IAAI,GAAG,EACxD,MAAM,SACR,CAAC;AAED,MAAM,8BAA8B,YAClC,QACG,YAAY,CAAC,CACb,QAAQ,iBAAiB,EAAE,CAAC,CAC5B,QAAQ,YAAY,OAAO,CAAC,CAC5B,UAAU,KAAK,CAAC,CAChB,QAAQ,mBAAmB,EAAE;AAElC,MAAM,0BAA0B,YAAyC;CACvE,MAAM,oBAAoB,SAAS,KAAK,CAAC,CAAC,YAAY;CACtD,IAAI,qBAAqB,QAAQ,sBAAsB,IACrD;CAGF,MAAM,eAAe,uBAAuB;CAC5C,IAAI,gBAAgB,MAClB,OAAO,2BAA2B,IAAI,YAAY,IAC9C,eACA,KAAA;CAGN,IAAI,aAAa,KAAK,iBAAiB,GAAG;EACxC,MAAM,aAAa,oBAAoB,GAAG,kBAAkB,YAAY,CAAC;EACzE,IAAI,cAAc,MAChB;EAEF,MAAM,cAAc,2BAA2B,UAAU;EACzD,OAAO,2BAA2B,IAAI,WAAW,IAC7C,cACA,KAAA;CACN;CAEA,MAAM,cAAc,2BAA2B,iBAAiB;CAChE,OAAO,2BAA2B,IAAI,WAAW,IAAI,cAAc,KAAA;AACrE;AAEA,MAAM,4BACJ,cACkC;CAClC,QAAQ,WAAR;EACA,KAAK;EACL,KAAK,KACH,OAAO;EACT,KAAK,KACH,OAAO;EACT,KAAK,KACH,OAAO;EACT,KAAK,KACH,OAAO;EACT,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK,QACH,OAAO;EACT,SACE;CACF;AACF;AAEA,MAAM,eAAe,SAAyB;CAC5C,IAAI;EACF,OAAO,IAAI,IAAI,IAAI,CAAC,CAAC;CACvB,QAAQ;EACN,OAAO;CACT;AACF;AAEA,MAAa,mBACX,QACA,QACA,YAGG;CACH,MAAM,SAAS;EACb,QAAQ,UAAU,QAAQ,IAAI;EAC9B,QACE,UACA,QAAQ,IAAI,qBACZ;EACF,SAAS,SAAS,WAAW;CAC/B;CAEA,IAAI,OAAO,UAAU,QAAQ,OAAO,WAAW,IAC7C,MAAM,IAAI,MAAM,2CAA2C;CAG7D,MAAM,aAAa,OAAO,EACxB,OACA,MACA,SACA,aAAa,GACb,MACA,WACiD;EACjD,IAAI,CAAC,MAAM,KAAK,GACd,OAAO;GAAE,SAAS;GAAO,OAAO;EAAwB;EAG1D,IAAI;GACF,MAAM,YACJ,yBAAyB,SAAS,SAAS,MAC1C,QAAQ,OAAQ,yBAAyB,IAAI,KAAK,QAAS,KAAA;GAC9D,MAAM,QACJ,SAAS,QAAQ,SAAS,SACtB,SACC,SAAS,SAAS;GACzB,MAAM,aAAa,SAAS,cAAc;GAC1C,MAAM,cAAc,SAAS,eAAe;GAE5C,MAAM,UAAiC;IACrC;IACA,cAAc;IACd;IACA,aAAa,KAAK,IAAI,KAAK,IAAI,GAAG,UAAU,GAAG,EAAE;GACnD;GAEA,IACE,SAAS,cAAc,QACvB,gBAAgB,UAChB,gBAAgB,cAEhB,QAAQ,cAAc,QAAQ;GAEhC,IAAI,aAAa,MACf,QAAQ,aAAa;GAEvB,MAAM,gBACJ,UAAU,YAAY,uBAAuB,OAAO,IAAI,KAAA;GAC1D,IAAI,iBAAiB,MACnB,QAAQ,UAAU;GAEpB,IAAI,SAAS,YAAY,SAAS,kBAAkB,MAClD,QAAQ,iBAAiB;GAE3B,IAAI,SAAS,iBAAiB,MAC5B,QAAQ,iBAAiB,QAAQ;GAEnC,IAAI,SAAS,qBAAqB,MAChC,QAAQ,sBAAsB,QAAQ;GAExC,IACE,SAAS,kBAAkB,QAC3B,QAAQ,eAAe,SAAS,GAEhC,QAAQ,kBAAkB,QAAQ;GAEpC,IACE,SAAS,kBAAkB,QAC3B,QAAQ,eAAe,SAAS,GAEhC,QAAQ,kBAAkB,QAAQ;GAEpC,IAAI,SAAS,4BAA4B,MACvC,QAAQ,6BAA6B,QAAQ;GAE/C,IAAI,SAAS,kBAAkB,MAC7B,QAAQ,kBAAkB,QAAQ;GAEpC,IAAI,SAAS,mBAAmB,QAAQ,gBAAgB,YACtD,QAAQ,oBAAoB,QAAQ;GAiBtC,MAAM,QAAO,MAdU,MAAM,KAC3B,OAAO,QACP,SACA;IACE,SAAS;KACP,eAAe,UAAU,OAAO;KAChC,gBAAgB;IAClB;IACA,SAAS,OAAO;IAChB,WAAW,SAAS;IACpB,YAAY,SAAS;GACvB,CACF,EAAA,CAEsB;GAEtB,MAAM,kBAAqC,KAAK,WAAW,CAAC,EAAA,CAAG,KAC5D,YAAkC;IACjC,OAAO,OAAO,SAAS;IACvB,MAAM,OAAO,OAAO;IACpB,SAAS,OAAO,WAAW;IAC3B,MAAM,OAAO;GACf,EACF;GAsCA,OAAO;IAAE,SAAS;IAAM,MAAM;KAT5B,SAAS;KACT,QA5BoC,MAAM,QAAQ,KAAK,MAAM,IAC3D,KAAK,OAAO,MAAM,GAAG,CAAC,CAAC,CAAC,QAAyB,KAAK,UAAU;MAChE,MAAM,WAAW,OAAO,UAAU,WAAW,QAAQ,MAAM;MAC3D,IAAI,YAAY,QAAQ,aAAa,IACnC,OAAO;MAET,IAAI,KAAK;OACP;OACA,OAAO,OAAO,UAAU,WAAW,KAAA,IAAY,MAAM;OACrD,UAAU,IAAI,SAAS;MACzB,CAAC;MACD,OAAO;KACT,GAAG,CAAC,CAAC,IACH,CAAC;KAgBH,YAAY,CAAC;KACb,QAAQ,CAAC;KACT,MAfA,UAAU,SACN,eAAe,KAAK,OAAO;MAC3B,OAAO,EAAE;MACT,MAAM,EAAE;MACR,SAAS,EAAE;MACX,MAAM,EAAE;MACR,QAAQ,YAAY,EAAE,IAAI;KAC5B,EAAE,IACA,CAAC;KAQL,WAAW,KAAK,UAAU,OAAO,EAAE,SAAS,KAAK,OAAO,IAAI,KAAA;KAC5D,iBAAiB,CAAC;IAGgB;GAAE;EACxC,SAAS,OAAO;GAGd,OAAO;IACL,SAAS;IACT,OAAO,8BAHP,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;GAIvD;EACF;CACF;CAEA,OAAO,EAAE,WAAW;AACtB"}
@@ -14,33 +14,12 @@ import { expandHighlights } from "./highlights.mjs";
14
14
  import { createReranker } from "./rerankers.mjs";
15
15
  import { tool } from "@langchain/core/tools";
16
16
  //#region src/tools/search/tool.ts
17
- /**
18
- * Settled label for a `web_search` call's intent (see `intentArg.ts`).
19
- *
20
- * Counts the result kinds `formatResultsForLLM` actually renders —
21
- * `references` only tracks links embedded in extracted highlights, so it
22
- * undercounts ordinary results and can overcount when one highlight embeds
23
- * several links.
24
- *
25
- * A caught provider or processing failure is reported through `data.error`
26
- * while the tool still returns NORMALLY, so that case must author its own
27
- * label: the `ToolMessage` carries success status, so without an authored
28
- * outcome the in-flight intent ("Searching…") would stand as the settled
29
- * label and present a failed search as an ordinary one.
30
- *
31
- * Returns undefined for a genuine zero-result search, leaving the
32
- * model-authored intent to stand unchanged as the label.
33
- */
34
17
  function resolveSearchOutcome(data, query) {
35
18
  if (data.error != null && data.error !== "") return `Search failed for "${query}"`;
36
19
  const count = (data.organic?.length ?? 0) + (data.topStories?.length ?? 0) + (data.news?.length ?? 0) + (data.images?.length ?? 0) + (data.videos?.length ?? 0) + (data.places?.length ?? 0) + (data.peopleAlsoAsk?.length ?? 0) + (data.knowledgeGraph != null ? 1 : 0) + (data.answerBox != null ? 1 : 0);
37
20
  if (count === 0) return;
38
21
  return `Found ${count} result${count === 1 ? "" : "s"} for "${query}"`;
39
22
  }
40
- /**
41
- * Executes parallel searches and merges the results,
42
- * deduplicating top stories by link
43
- */
44
23
  async function executeParallelSearches({ searchAPI, query, date, country, safeSearch, images, videos, news, logger }) {
45
24
  const searchTasks = [searchAPI.getSources({
46
25
  query,
@@ -117,9 +96,6 @@ async function executeParallelSearches({ searchAPI, query, date, country, safeSe
117
96
  }
118
97
  });
119
98
  if (mergedResults.topStories !== void 0 && mergedResults.topStories.length > 1) {
120
- /** The main search's own news results and the parallel news sub-search
121
- * frequently return the same stories — keep the first occurrence of each
122
- * link so duplicates aren't scraped, reranked, and formatted repeatedly */
123
99
  const seenLinks = /* @__PURE__ */ new Set();
124
100
  mergedResults.topStories = mergedResults.topStories.filter((story) => {
125
101
  if (!story.link || seenLinks.has(story.link)) return false;
@@ -247,7 +223,6 @@ const createSearchTool = (config = {}) => {
247
223
  httpAgent,
248
224
  httpsAgent
249
225
  });
250
- /** Create scraper based on scraperProvider */
251
226
  let scraperInstance;
252
227
  if (scraperProvider === "serper") scraperInstance = createSerperScraper({
253
228
  ...serperScraperOptions,