@illuma-ai/agents 1.5.1 → 2.1.1

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 (319) hide show
  1. package/README.md +0 -62
  2. package/dist/cjs/agents/AgentContext.cjs +160 -259
  3. package/dist/cjs/agents/AgentContext.cjs.map +1 -1
  4. package/dist/cjs/common/enum.cjs +12 -12
  5. package/dist/cjs/common/enum.cjs.map +1 -1
  6. package/dist/cjs/graphs/Graph.cjs +30 -13
  7. package/dist/cjs/graphs/Graph.cjs.map +1 -1
  8. package/dist/cjs/graphs/MultiAgentGraph.cjs +1 -1
  9. package/dist/cjs/graphs/MultiAgentGraph.cjs.map +1 -1
  10. package/dist/cjs/graphs/phases/memoryFlushPhase.cjs +1 -1
  11. package/dist/cjs/graphs/phases/memoryFlushPhase.cjs.map +1 -1
  12. package/dist/cjs/hooks/HookRegistry.cjs +1 -1
  13. package/dist/cjs/hooks/HookRegistry.cjs.map +1 -1
  14. package/dist/cjs/hooks/matchers.cjs +2 -2
  15. package/dist/cjs/hooks/matchers.cjs.map +1 -1
  16. package/dist/cjs/hooks/types.cjs +1 -1
  17. package/dist/cjs/hooks/types.cjs.map +1 -1
  18. package/dist/cjs/llm/anthropic/utils/message_inputs.cjs +1 -5
  19. package/dist/cjs/llm/anthropic/utils/message_inputs.cjs.map +1 -1
  20. package/dist/cjs/llm/bedrock/index.cjs +33 -61
  21. package/dist/cjs/llm/bedrock/index.cjs.map +1 -1
  22. package/dist/cjs/llm/openai/index.cjs +1 -1
  23. package/dist/cjs/llm/openai/index.cjs.map +1 -1
  24. package/dist/cjs/llm/openai/utils/index.cjs +10 -27
  25. package/dist/cjs/llm/openai/utils/index.cjs.map +1 -1
  26. package/dist/cjs/main.cjs +3 -84
  27. package/dist/cjs/main.cjs.map +1 -1
  28. package/dist/cjs/memory/citations.cjs +4 -4
  29. package/dist/cjs/memory/citations.cjs.map +1 -1
  30. package/dist/cjs/memory/constants.cjs +17 -17
  31. package/dist/cjs/memory/constants.cjs.map +1 -1
  32. package/dist/cjs/memory/mmr.cjs +1 -1
  33. package/dist/cjs/memory/mmr.cjs.map +1 -1
  34. package/dist/cjs/memory/paths.cjs +1 -1
  35. package/dist/cjs/memory/paths.cjs.map +1 -1
  36. package/dist/cjs/memory/recallTracking.cjs +3 -3
  37. package/dist/cjs/memory/recallTracking.cjs.map +1 -1
  38. package/dist/cjs/memory/temporalDecay.cjs +2 -2
  39. package/dist/cjs/memory/temporalDecay.cjs.map +1 -1
  40. package/dist/cjs/messages/cache.cjs +0 -89
  41. package/dist/cjs/messages/cache.cjs.map +1 -1
  42. package/dist/cjs/messages/format.cjs +13 -71
  43. package/dist/cjs/messages/format.cjs.map +1 -1
  44. package/dist/cjs/tools/BashExecutor.cjs +11 -21
  45. package/dist/cjs/tools/BashExecutor.cjs.map +1 -1
  46. package/dist/cjs/tools/CodeExecutor.cjs +13 -41
  47. package/dist/cjs/tools/CodeExecutor.cjs.map +1 -1
  48. package/dist/cjs/tools/ProgrammaticToolCalling.cjs +11 -16
  49. package/dist/cjs/tools/ProgrammaticToolCalling.cjs.map +1 -1
  50. package/dist/cjs/tools/ToolNode.cjs +78 -13
  51. package/dist/cjs/tools/ToolNode.cjs.map +1 -1
  52. package/dist/cjs/tools/memory/memoryAppendTool.cjs +1 -1
  53. package/dist/cjs/tools/memory/memoryAppendTool.cjs.map +1 -1
  54. package/dist/cjs/tools/memory/memoryGetTool.cjs +2 -2
  55. package/dist/cjs/tools/memory/memoryGetTool.cjs.map +1 -1
  56. package/dist/cjs/tools/memory/memorySearchTool.cjs +3 -3
  57. package/dist/cjs/tools/memory/memorySearchTool.cjs.map +1 -1
  58. package/dist/cjs/tools/memory/shared.cjs +1 -1
  59. package/dist/cjs/tools/memory/shared.cjs.map +1 -1
  60. package/dist/cjs/tools/search/search.cjs +3 -11
  61. package/dist/cjs/tools/search/search.cjs.map +1 -1
  62. package/dist/cjs/tools/search/tool.cjs +4 -28
  63. package/dist/cjs/tools/search/tool.cjs.map +1 -1
  64. package/dist/cjs/tools/search/utils.cjs +3 -10
  65. package/dist/cjs/tools/search/utils.cjs.map +1 -1
  66. package/dist/cjs/tools/subagent/SubagentExecutor.cjs +48 -0
  67. package/dist/cjs/tools/subagent/SubagentExecutor.cjs.map +1 -1
  68. package/dist/cjs/types/graph.cjs.map +1 -1
  69. package/dist/esm/agents/AgentContext.mjs +160 -259
  70. package/dist/esm/agents/AgentContext.mjs.map +1 -1
  71. package/dist/esm/common/enum.mjs +12 -12
  72. package/dist/esm/common/enum.mjs.map +1 -1
  73. package/dist/esm/graphs/Graph.mjs +30 -13
  74. package/dist/esm/graphs/Graph.mjs.map +1 -1
  75. package/dist/esm/graphs/MultiAgentGraph.mjs +1 -1
  76. package/dist/esm/graphs/MultiAgentGraph.mjs.map +1 -1
  77. package/dist/esm/graphs/phases/memoryFlushPhase.mjs +1 -1
  78. package/dist/esm/graphs/phases/memoryFlushPhase.mjs.map +1 -1
  79. package/dist/esm/hooks/HookRegistry.mjs +1 -1
  80. package/dist/esm/hooks/HookRegistry.mjs.map +1 -1
  81. package/dist/esm/hooks/matchers.mjs +2 -2
  82. package/dist/esm/hooks/matchers.mjs.map +1 -1
  83. package/dist/esm/hooks/types.mjs +1 -1
  84. package/dist/esm/hooks/types.mjs.map +1 -1
  85. package/dist/esm/llm/anthropic/utils/message_inputs.mjs +1 -5
  86. package/dist/esm/llm/anthropic/utils/message_inputs.mjs.map +1 -1
  87. package/dist/esm/llm/bedrock/index.mjs +34 -61
  88. package/dist/esm/llm/bedrock/index.mjs.map +1 -1
  89. package/dist/esm/llm/openai/index.mjs +1 -1
  90. package/dist/esm/llm/openai/index.mjs.map +1 -1
  91. package/dist/esm/llm/openai/utils/index.mjs +10 -27
  92. package/dist/esm/llm/openai/utils/index.mjs.map +1 -1
  93. package/dist/esm/main.mjs +1 -5
  94. package/dist/esm/main.mjs.map +1 -1
  95. package/dist/esm/memory/citations.mjs +4 -4
  96. package/dist/esm/memory/citations.mjs.map +1 -1
  97. package/dist/esm/memory/constants.mjs +17 -17
  98. package/dist/esm/memory/constants.mjs.map +1 -1
  99. package/dist/esm/memory/mmr.mjs +1 -1
  100. package/dist/esm/memory/mmr.mjs.map +1 -1
  101. package/dist/esm/memory/paths.mjs +1 -1
  102. package/dist/esm/memory/paths.mjs.map +1 -1
  103. package/dist/esm/memory/recallTracking.mjs +3 -3
  104. package/dist/esm/memory/recallTracking.mjs.map +1 -1
  105. package/dist/esm/memory/temporalDecay.mjs +2 -2
  106. package/dist/esm/memory/temporalDecay.mjs.map +1 -1
  107. package/dist/esm/messages/cache.mjs +0 -89
  108. package/dist/esm/messages/cache.mjs.map +1 -1
  109. package/dist/esm/messages/format.mjs +13 -71
  110. package/dist/esm/messages/format.mjs.map +1 -1
  111. package/dist/esm/tools/BashExecutor.mjs +12 -22
  112. package/dist/esm/tools/BashExecutor.mjs.map +1 -1
  113. package/dist/esm/tools/CodeExecutor.mjs +14 -41
  114. package/dist/esm/tools/CodeExecutor.mjs.map +1 -1
  115. package/dist/esm/tools/ProgrammaticToolCalling.mjs +12 -17
  116. package/dist/esm/tools/ProgrammaticToolCalling.mjs.map +1 -1
  117. package/dist/esm/tools/ToolNode.mjs +78 -13
  118. package/dist/esm/tools/ToolNode.mjs.map +1 -1
  119. package/dist/esm/tools/memory/memoryAppendTool.mjs +1 -1
  120. package/dist/esm/tools/memory/memoryAppendTool.mjs.map +1 -1
  121. package/dist/esm/tools/memory/memoryGetTool.mjs +2 -2
  122. package/dist/esm/tools/memory/memoryGetTool.mjs.map +1 -1
  123. package/dist/esm/tools/memory/memorySearchTool.mjs +3 -3
  124. package/dist/esm/tools/memory/memorySearchTool.mjs.map +1 -1
  125. package/dist/esm/tools/memory/shared.mjs +1 -1
  126. package/dist/esm/tools/memory/shared.mjs.map +1 -1
  127. package/dist/esm/tools/search/search.mjs +3 -11
  128. package/dist/esm/tools/search/search.mjs.map +1 -1
  129. package/dist/esm/tools/search/tool.mjs +4 -28
  130. package/dist/esm/tools/search/tool.mjs.map +1 -1
  131. package/dist/esm/tools/search/utils.mjs +3 -10
  132. package/dist/esm/tools/search/utils.mjs.map +1 -1
  133. package/dist/esm/tools/subagent/SubagentExecutor.mjs +48 -0
  134. package/dist/esm/tools/subagent/SubagentExecutor.mjs.map +1 -1
  135. package/dist/esm/types/graph.mjs.map +1 -1
  136. package/dist/types/agents/AgentContext.d.ts +25 -95
  137. package/dist/types/common/enum.d.ts +12 -12
  138. package/dist/types/graphs/Graph.d.ts +2 -2
  139. package/dist/types/graphs/phases/memoryFlushPhase.d.ts +2 -2
  140. package/dist/types/hooks/HookRegistry.d.ts +1 -1
  141. package/dist/types/hooks/matchers.d.ts +2 -2
  142. package/dist/types/hooks/types.d.ts +1 -1
  143. package/dist/types/index.d.ts +0 -1
  144. package/dist/types/llm/bedrock/index.d.ts +1 -54
  145. package/dist/types/llm/openai/index.d.ts +1 -1
  146. package/dist/types/memory/citations.d.ts +4 -4
  147. package/dist/types/memory/constants.d.ts +17 -17
  148. package/dist/types/memory/mmr.d.ts +3 -3
  149. package/dist/types/memory/paths.d.ts +1 -1
  150. package/dist/types/memory/temporalDecay.d.ts +2 -2
  151. package/dist/types/memory/types.d.ts +3 -3
  152. package/dist/types/messages/format.d.ts +2 -5
  153. package/dist/types/tools/CodeExecutor.d.ts +0 -6
  154. package/dist/types/tools/ToolNode.d.ts +3 -3
  155. package/dist/types/tools/memory/shared.d.ts +1 -1
  156. package/dist/types/tools/search/test.d.ts +1 -0
  157. package/dist/types/tools/search/types.d.ts +5 -99
  158. package/dist/types/tools/search/utils.d.ts +2 -2
  159. package/dist/types/tools/subagent/SubagentExecutor.d.ts +29 -0
  160. package/dist/types/types/graph.d.ts +30 -34
  161. package/dist/types/types/index.d.ts +0 -1
  162. package/dist/types/types/messages.d.ts +1 -1
  163. package/dist/types/types/run.d.ts +1 -3
  164. package/dist/types/types/tools.d.ts +5 -14
  165. package/package.json +1 -61
  166. package/src/agents/AgentContext.test.ts +176 -0
  167. package/src/agents/AgentContext.ts +179 -305
  168. package/src/agents/__tests__/AgentContext.test.ts +0 -632
  169. package/src/common/__tests__/enum.test.ts +1 -1
  170. package/src/common/enum.ts +12 -12
  171. package/src/graphs/Graph.ts +32 -13
  172. package/src/graphs/MultiAgentGraph.ts +1 -1
  173. package/src/graphs/gapFeatures.test.ts +1 -1
  174. package/src/graphs/phases/__tests__/memoryFlushPhase.test.ts +1 -1
  175. package/src/graphs/phases/memoryFlushPhase.ts +2 -2
  176. package/src/hooks/HookRegistry.ts +1 -1
  177. package/src/hooks/index.ts +1 -1
  178. package/src/hooks/matchers.ts +2 -2
  179. package/src/hooks/types.ts +1 -1
  180. package/src/index.ts +0 -6
  181. package/src/llm/anthropic/utils/message_inputs.ts +1 -10
  182. package/src/llm/bedrock/__tests__/bedrock-caching.test.ts +18 -166
  183. package/src/llm/bedrock/index.ts +41 -116
  184. package/src/llm/openai/index.ts +2 -2
  185. package/src/llm/openai/utils/index.ts +14 -31
  186. package/src/memory/citations.ts +4 -4
  187. package/src/memory/constants.ts +17 -17
  188. package/src/memory/mmr.ts +3 -3
  189. package/src/memory/paths.ts +1 -1
  190. package/src/memory/recallTracking.ts +3 -3
  191. package/src/memory/temporalDecay.ts +2 -2
  192. package/src/memory/types.ts +3 -3
  193. package/src/messages/cache.test.ts +24 -62
  194. package/src/messages/cache.ts +0 -112
  195. package/src/messages/ensureThinkingBlock.test.ts +1 -1
  196. package/src/messages/format.ts +13 -92
  197. package/src/messages/formatAgentMessages.test.ts +1 -1
  198. package/src/scripts/subagent-configurable-inheritance.ts +263 -0
  199. package/src/scripts/subagent-event-driven-debug.ts +2 -2
  200. package/src/specs/anthropic.simple.test.ts +0 -61
  201. package/src/specs/prune.orphans.test.ts +1 -1
  202. package/src/tools/BashExecutor.ts +13 -37
  203. package/src/tools/CodeExecutor.ts +14 -59
  204. package/src/tools/ProgrammaticToolCalling.ts +14 -29
  205. package/src/tools/ToolNode.ts +75 -14
  206. package/src/tools/__tests__/CodeExecutor.test.ts +3 -3
  207. package/src/tools/__tests__/ProgrammaticToolCalling.test.ts +0 -60
  208. package/src/tools/__tests__/SubagentExecutor.test.ts +157 -0
  209. package/src/tools/memory/memoryAppendTool.ts +1 -1
  210. package/src/tools/memory/memoryGetTool.ts +2 -2
  211. package/src/tools/memory/memorySearchTool.ts +3 -3
  212. package/src/tools/memory/shared.ts +1 -1
  213. package/src/tools/search/output.md +2775 -0
  214. package/src/tools/search/search.ts +2 -12
  215. package/src/tools/search/test.html +884 -0
  216. package/src/tools/search/test.md +643 -0
  217. package/src/tools/search/test.ts +159 -0
  218. package/src/tools/search/tool.ts +2 -36
  219. package/src/tools/search/types.ts +8 -133
  220. package/src/tools/search/utils.ts +5 -13
  221. package/src/tools/subagent/SubagentExecutor.ts +78 -0
  222. package/src/types/graph.ts +27 -34
  223. package/src/types/index.ts +0 -1
  224. package/src/types/messages.ts +1 -1
  225. package/src/types/run.ts +1 -3
  226. package/src/types/tools.ts +5 -14
  227. package/dist/cjs/langchain/google-common.cjs +0 -3
  228. package/dist/cjs/langchain/google-common.cjs.map +0 -1
  229. package/dist/cjs/langchain/index.cjs +0 -86
  230. package/dist/cjs/langchain/index.cjs.map +0 -1
  231. package/dist/cjs/langchain/language_models/chat_models.cjs +0 -3
  232. package/dist/cjs/langchain/language_models/chat_models.cjs.map +0 -1
  233. package/dist/cjs/langchain/messages/tool.cjs +0 -3
  234. package/dist/cjs/langchain/messages/tool.cjs.map +0 -1
  235. package/dist/cjs/langchain/messages.cjs +0 -51
  236. package/dist/cjs/langchain/messages.cjs.map +0 -1
  237. package/dist/cjs/langchain/openai.cjs +0 -3
  238. package/dist/cjs/langchain/openai.cjs.map +0 -1
  239. package/dist/cjs/langchain/prompts.cjs +0 -11
  240. package/dist/cjs/langchain/prompts.cjs.map +0 -1
  241. package/dist/cjs/langchain/runnables.cjs +0 -19
  242. package/dist/cjs/langchain/runnables.cjs.map +0 -1
  243. package/dist/cjs/langchain/tools.cjs +0 -23
  244. package/dist/cjs/langchain/tools.cjs.map +0 -1
  245. package/dist/cjs/langchain/utils/env.cjs +0 -11
  246. package/dist/cjs/langchain/utils/env.cjs.map +0 -1
  247. package/dist/cjs/llm/bedrock/cacheSupport.cjs +0 -55
  248. package/dist/cjs/llm/bedrock/cacheSupport.cjs.map +0 -1
  249. package/dist/cjs/tools/search/tavily-scraper.cjs +0 -189
  250. package/dist/cjs/tools/search/tavily-scraper.cjs.map +0 -1
  251. package/dist/cjs/tools/search/tavily-search.cjs +0 -372
  252. package/dist/cjs/tools/search/tavily-search.cjs.map +0 -1
  253. package/dist/cjs/types/agent-cache.cjs +0 -54
  254. package/dist/cjs/types/agent-cache.cjs.map +0 -1
  255. package/dist/esm/langchain/google-common.mjs +0 -2
  256. package/dist/esm/langchain/google-common.mjs.map +0 -1
  257. package/dist/esm/langchain/index.mjs +0 -5
  258. package/dist/esm/langchain/index.mjs.map +0 -1
  259. package/dist/esm/langchain/language_models/chat_models.mjs +0 -2
  260. package/dist/esm/langchain/language_models/chat_models.mjs.map +0 -1
  261. package/dist/esm/langchain/messages/tool.mjs +0 -2
  262. package/dist/esm/langchain/messages/tool.mjs.map +0 -1
  263. package/dist/esm/langchain/messages.mjs +0 -2
  264. package/dist/esm/langchain/messages.mjs.map +0 -1
  265. package/dist/esm/langchain/openai.mjs +0 -2
  266. package/dist/esm/langchain/openai.mjs.map +0 -1
  267. package/dist/esm/langchain/prompts.mjs +0 -2
  268. package/dist/esm/langchain/prompts.mjs.map +0 -1
  269. package/dist/esm/langchain/runnables.mjs +0 -2
  270. package/dist/esm/langchain/runnables.mjs.map +0 -1
  271. package/dist/esm/langchain/tools.mjs +0 -2
  272. package/dist/esm/langchain/tools.mjs.map +0 -1
  273. package/dist/esm/langchain/utils/env.mjs +0 -2
  274. package/dist/esm/langchain/utils/env.mjs.map +0 -1
  275. package/dist/esm/llm/bedrock/cacheSupport.mjs +0 -52
  276. package/dist/esm/llm/bedrock/cacheSupport.mjs.map +0 -1
  277. package/dist/esm/tools/search/tavily-scraper.mjs +0 -186
  278. package/dist/esm/tools/search/tavily-scraper.mjs.map +0 -1
  279. package/dist/esm/tools/search/tavily-search.mjs +0 -370
  280. package/dist/esm/tools/search/tavily-search.mjs.map +0 -1
  281. package/dist/esm/types/agent-cache.mjs +0 -52
  282. package/dist/esm/types/agent-cache.mjs.map +0 -1
  283. package/dist/types/langchain/google-common.d.ts +0 -1
  284. package/dist/types/langchain/index.d.ts +0 -8
  285. package/dist/types/langchain/language_models/chat_models.d.ts +0 -1
  286. package/dist/types/langchain/messages/tool.d.ts +0 -1
  287. package/dist/types/langchain/messages.d.ts +0 -2
  288. package/dist/types/langchain/openai.d.ts +0 -1
  289. package/dist/types/langchain/prompts.d.ts +0 -1
  290. package/dist/types/langchain/runnables.d.ts +0 -2
  291. package/dist/types/langchain/tools.d.ts +0 -2
  292. package/dist/types/langchain/utils/env.d.ts +0 -1
  293. package/dist/types/llm/bedrock/cacheSupport.d.ts +0 -35
  294. package/dist/types/tools/search/tavily-scraper.d.ts +0 -19
  295. package/dist/types/tools/search/tavily-search.d.ts +0 -4
  296. package/dist/types/tools/subagent/types.d.ts +0 -84
  297. package/dist/types/types/agent-cache.d.ts +0 -71
  298. package/src/agents/__tests__/AgentContext.cacheTtl.live.test.ts +0 -259
  299. package/src/agents/__tests__/AgentContext.crossAgentTier1.live.test.ts +0 -266
  300. package/src/agents/__tests__/AgentContext.crossUserCache.live.test.ts +0 -342
  301. package/src/langchain/google-common.ts +0 -1
  302. package/src/langchain/index.ts +0 -8
  303. package/src/langchain/language_models/chat_models.ts +0 -1
  304. package/src/langchain/messages/tool.ts +0 -5
  305. package/src/langchain/messages.ts +0 -21
  306. package/src/langchain/openai.ts +0 -1
  307. package/src/langchain/prompts.ts +0 -1
  308. package/src/langchain/runnables.ts +0 -7
  309. package/src/langchain/tools.ts +0 -8
  310. package/src/langchain/utils/env.ts +0 -1
  311. package/src/llm/anthropic/utils/server-tool-inputs.test.ts +0 -436
  312. package/src/llm/bedrock/cacheSupport.test.ts +0 -99
  313. package/src/llm/bedrock/cacheSupport.ts +0 -53
  314. package/src/tools/search/tavily-scraper.ts +0 -235
  315. package/src/tools/search/tavily-search.ts +0 -424
  316. package/src/tools/search/tavily.test.ts +0 -965
  317. package/src/tools/subagent/types.test.ts +0 -70
  318. package/src/tools/subagent/types.ts +0 -115
  319. package/src/types/agent-cache.ts +0 -74
@@ -1,189 +0,0 @@
1
- 'use strict';
2
-
3
- var axios = require('axios');
4
- var utils = require('./utils.cjs');
5
-
6
- const DEFAULT_BASIC_TIMEOUT = 15000;
7
- const DEFAULT_ADVANCED_TIMEOUT = 30000;
8
- const MAX_BATCH_SIZE = 20;
9
- const getDefaultTimeout = (extractDepth) => extractDepth === 'advanced'
10
- ? DEFAULT_ADVANCED_TIMEOUT
11
- : DEFAULT_BASIC_TIMEOUT;
12
- const normalizeUrlKey = (url) => {
13
- try {
14
- const parsedUrl = new URL(url);
15
- parsedUrl.hash = '';
16
- if (parsedUrl.pathname.length > 1) {
17
- parsedUrl.pathname = parsedUrl.pathname.replace(/\/+$/, '');
18
- }
19
- return parsedUrl.toString();
20
- }
21
- catch {
22
- return url;
23
- }
24
- };
25
- const setUrlResult = (map, result) => {
26
- map.set(result.url, result);
27
- const normalizedUrl = normalizeUrlKey(result.url);
28
- if (!map.has(normalizedUrl)) {
29
- map.set(normalizedUrl, result);
30
- }
31
- };
32
- class TavilyScraper {
33
- apiKey;
34
- apiUrl;
35
- timeout;
36
- payloadTimeout;
37
- logger;
38
- extractDepth;
39
- includeImages;
40
- includeFavicon;
41
- format;
42
- constructor(config = {}) {
43
- this.apiKey = config.apiKey ?? process.env.TAVILY_API_KEY ?? '';
44
- this.apiUrl =
45
- config.apiUrl ??
46
- process.env.TAVILY_EXTRACT_URL ??
47
- 'https://api.tavily.com/extract';
48
- this.payloadTimeout = config.timeout;
49
- this.extractDepth = config.extractDepth ?? 'basic';
50
- this.timeout = config.timeout ?? getDefaultTimeout(this.extractDepth);
51
- this.includeImages = config.includeImages ?? false;
52
- this.includeFavicon = config.includeFavicon ?? false;
53
- this.format = config.format;
54
- this.logger = config.logger || utils.createDefaultLogger();
55
- if (!this.apiKey) {
56
- this.logger.warn('TAVILY_API_KEY is not set. Scraping will not work.');
57
- }
58
- }
59
- async scrapeUrl(url, options = {}) {
60
- const results = await this.scrapeUrls([url], options);
61
- return results[0];
62
- }
63
- async scrapeUrls(urls, options = {}) {
64
- if (!this.apiKey) {
65
- return urls.map((url) => [
66
- url,
67
- { success: false, error: 'TAVILY_API_KEY is not set' },
68
- ]);
69
- }
70
- const batches = [];
71
- for (let i = 0; i < urls.length; i += MAX_BATCH_SIZE) {
72
- batches.push(urls.slice(i, i + MAX_BATCH_SIZE));
73
- }
74
- const allResults = [];
75
- for (const batch of batches) {
76
- const batchResults = await this.extractBatch(batch, options);
77
- allResults.push(...batchResults);
78
- }
79
- return allResults;
80
- }
81
- async extractBatch(urls, options = {}) {
82
- try {
83
- const includeFavicon = options.includeFavicon ?? this.includeFavicon;
84
- const format = options.format ?? this.format;
85
- const extractDepth = options.extractDepth ?? this.extractDepth;
86
- const payload = {
87
- urls,
88
- extract_depth: extractDepth,
89
- include_images: options.includeImages ?? this.includeImages,
90
- };
91
- if (includeFavicon) {
92
- payload.include_favicon = true;
93
- }
94
- if (format != null) {
95
- payload.format = format;
96
- }
97
- const effectiveTimeout = options.timeout ??
98
- this.payloadTimeout ??
99
- (options.extractDepth != null
100
- ? getDefaultTimeout(extractDepth)
101
- : this.timeout);
102
- const payloadTimeout = options.timeout ?? this.payloadTimeout;
103
- if (payloadTimeout != null) {
104
- payload.timeout = Math.min(Math.max(payloadTimeout / 1000, 1), 60);
105
- }
106
- const response = await axios.post(this.apiUrl, payload, {
107
- headers: {
108
- Authorization: `Bearer ${this.apiKey}`,
109
- 'Content-Type': 'application/json',
110
- },
111
- timeout: effectiveTimeout,
112
- });
113
- const data = response.data;
114
- const successMap = new Map();
115
- const failedMap = new Map();
116
- for (const result of data.results ?? []) {
117
- setUrlResult(successMap, result);
118
- }
119
- for (const result of data.failed_results ?? []) {
120
- setUrlResult(failedMap, result);
121
- }
122
- return urls.map((url) => {
123
- const success = successMap.get(url) ?? successMap.get(normalizeUrlKey(url));
124
- if (success && success.error == null) {
125
- return [
126
- url,
127
- {
128
- success: true,
129
- data: {
130
- rawContent: success.raw_content ?? '',
131
- images: success.images ?? [],
132
- favicon: success.favicon,
133
- },
134
- },
135
- ];
136
- }
137
- const failed = failedMap.get(url) ?? failedMap.get(normalizeUrlKey(url));
138
- const error = success?.error ??
139
- failed?.error ??
140
- 'URL not found in Tavily Extract response';
141
- return [url, { success: false, error }];
142
- });
143
- }
144
- catch (error) {
145
- const errorMessage = error instanceof Error ? error.message : String(error);
146
- return urls.map((url) => [
147
- url,
148
- {
149
- success: false,
150
- error: `Tavily Extract API request failed: ${errorMessage}`,
151
- },
152
- ]);
153
- }
154
- }
155
- extractContent(response) {
156
- if (!response.success || !response.data) {
157
- return ['', undefined];
158
- }
159
- const content = response.data.rawContent ?? '';
160
- const images = response.data.images ?? [];
161
- const references = images.length > 0
162
- ? {
163
- links: [],
164
- images: images.map((imageUrl) => ({ originalUrl: imageUrl })),
165
- videos: [],
166
- }
167
- : undefined;
168
- return [content, references];
169
- }
170
- extractMetadata(response) {
171
- if (!response.success || !response.data) {
172
- return {};
173
- }
174
- const metadata = {
175
- images_count: response.data.images?.length ?? 0,
176
- };
177
- if (response.data.favicon != null) {
178
- metadata.favicon = response.data.favicon;
179
- }
180
- return metadata;
181
- }
182
- }
183
- const createTavilyScraper = (config = {}) => {
184
- return new TavilyScraper(config);
185
- };
186
-
187
- exports.TavilyScraper = TavilyScraper;
188
- exports.createTavilyScraper = createTavilyScraper;
189
- //# sourceMappingURL=tavily-scraper.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tavily-scraper.cjs","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\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.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 });\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"],"names":["createDefaultLogger"],"mappings":"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"}
@@ -1,372 +0,0 @@
1
- 'use strict';
2
-
3
- var axios = require('axios');
4
-
5
- const DEFAULT_TAVILY_TIMEOUT = 15000;
6
- const TAVILY_COUNTRY_ALIASES = {
7
- ba: 'bosnia and herzegovina',
8
- cg: 'congo',
9
- cz: 'czech republic',
10
- gb: 'united kingdom',
11
- mm: 'myanmar',
12
- tr: 'turkey',
13
- tt: 'trinidad and tobago',
14
- uk: 'united kingdom',
15
- };
16
- const TAVILY_SUPPORTED_COUNTRIES = new Set([
17
- 'afghanistan',
18
- 'albania',
19
- 'algeria',
20
- 'andorra',
21
- 'angola',
22
- 'argentina',
23
- 'armenia',
24
- 'australia',
25
- 'austria',
26
- 'azerbaijan',
27
- 'bahamas',
28
- 'bahrain',
29
- 'bangladesh',
30
- 'barbados',
31
- 'belarus',
32
- 'belgium',
33
- 'belize',
34
- 'benin',
35
- 'bhutan',
36
- 'bolivia',
37
- 'bosnia and herzegovina',
38
- 'botswana',
39
- 'brazil',
40
- 'brunei',
41
- 'bulgaria',
42
- 'burkina faso',
43
- 'burundi',
44
- 'cambodia',
45
- 'cameroon',
46
- 'canada',
47
- 'cape verde',
48
- 'central african republic',
49
- 'chad',
50
- 'chile',
51
- 'china',
52
- 'colombia',
53
- 'comoros',
54
- 'congo',
55
- 'costa rica',
56
- 'croatia',
57
- 'cuba',
58
- 'cyprus',
59
- 'czech republic',
60
- 'denmark',
61
- 'djibouti',
62
- 'dominican republic',
63
- 'ecuador',
64
- 'egypt',
65
- 'el salvador',
66
- 'equatorial guinea',
67
- 'eritrea',
68
- 'estonia',
69
- 'ethiopia',
70
- 'fiji',
71
- 'finland',
72
- 'france',
73
- 'gabon',
74
- 'gambia',
75
- 'georgia',
76
- 'germany',
77
- 'ghana',
78
- 'greece',
79
- 'guatemala',
80
- 'guinea',
81
- 'haiti',
82
- 'honduras',
83
- 'hungary',
84
- 'iceland',
85
- 'india',
86
- 'indonesia',
87
- 'iran',
88
- 'iraq',
89
- 'ireland',
90
- 'israel',
91
- 'italy',
92
- 'jamaica',
93
- 'japan',
94
- 'jordan',
95
- 'kazakhstan',
96
- 'kenya',
97
- 'kuwait',
98
- 'kyrgyzstan',
99
- 'latvia',
100
- 'lebanon',
101
- 'lesotho',
102
- 'liberia',
103
- 'libya',
104
- 'liechtenstein',
105
- 'lithuania',
106
- 'luxembourg',
107
- 'madagascar',
108
- 'malawi',
109
- 'malaysia',
110
- 'maldives',
111
- 'mali',
112
- 'malta',
113
- 'mauritania',
114
- 'mauritius',
115
- 'mexico',
116
- 'moldova',
117
- 'monaco',
118
- 'mongolia',
119
- 'montenegro',
120
- 'morocco',
121
- 'mozambique',
122
- 'myanmar',
123
- 'namibia',
124
- 'nepal',
125
- 'netherlands',
126
- 'new zealand',
127
- 'nicaragua',
128
- 'niger',
129
- 'nigeria',
130
- 'north korea',
131
- 'north macedonia',
132
- 'norway',
133
- 'oman',
134
- 'pakistan',
135
- 'panama',
136
- 'papua new guinea',
137
- 'paraguay',
138
- 'peru',
139
- 'philippines',
140
- 'poland',
141
- 'portugal',
142
- 'qatar',
143
- 'romania',
144
- 'russia',
145
- 'rwanda',
146
- 'saudi arabia',
147
- 'senegal',
148
- 'serbia',
149
- 'singapore',
150
- 'slovakia',
151
- 'slovenia',
152
- 'somalia',
153
- 'south africa',
154
- 'south korea',
155
- 'south sudan',
156
- 'spain',
157
- 'sri lanka',
158
- 'sudan',
159
- 'sweden',
160
- 'switzerland',
161
- 'syria',
162
- 'taiwan',
163
- 'tajikistan',
164
- 'tanzania',
165
- 'thailand',
166
- 'togo',
167
- 'trinidad and tobago',
168
- 'tunisia',
169
- 'turkey',
170
- 'turkmenistan',
171
- 'uganda',
172
- 'ukraine',
173
- 'united arab emirates',
174
- 'united kingdom',
175
- 'united states',
176
- 'uruguay',
177
- 'uzbekistan',
178
- 'venezuela',
179
- 'vietnam',
180
- 'yemen',
181
- 'zambia',
182
- 'zimbabwe',
183
- ]);
184
- const TAVILY_REGION_NAMES = new Intl.DisplayNames(['en'], {
185
- type: 'region',
186
- });
187
- const normalizeTavilyCountryName = (country) => country
188
- .toLowerCase()
189
- .replace(/\s*\([^)]*\)/g, '')
190
- .replace(/\s*&\s*/g, ' and ')
191
- .normalize('NFD')
192
- .replace(/\p{Diacritic}/gu, '');
193
- const normalizeTavilyCountry = (country) => {
194
- const normalizedCountry = country?.trim().toLowerCase();
195
- if (normalizedCountry == null || normalizedCountry === '') {
196
- return undefined;
197
- }
198
- const countryAlias = TAVILY_COUNTRY_ALIASES[normalizedCountry];
199
- if (countryAlias != null) {
200
- return TAVILY_SUPPORTED_COUNTRIES.has(countryAlias)
201
- ? countryAlias
202
- : undefined;
203
- }
204
- if (/^[a-z]{2}$/.test(normalizedCountry)) {
205
- const regionName = TAVILY_REGION_NAMES.of(normalizedCountry.toUpperCase());
206
- if (regionName == null) {
207
- return undefined;
208
- }
209
- const countryName = normalizeTavilyCountryName(regionName);
210
- return TAVILY_SUPPORTED_COUNTRIES.has(countryName)
211
- ? countryName
212
- : undefined;
213
- }
214
- const countryName = normalizeTavilyCountryName(normalizedCountry);
215
- return TAVILY_SUPPORTED_COUNTRIES.has(countryName) ? countryName : undefined;
216
- };
217
- const normalizeTavilyTimeRange = (timeRange) => {
218
- switch (timeRange) {
219
- case 'h':
220
- case 'd':
221
- return 'day';
222
- case 'w':
223
- return 'week';
224
- case 'm':
225
- return 'month';
226
- case 'y':
227
- return 'year';
228
- case 'day':
229
- case 'week':
230
- case 'month':
231
- case 'year':
232
- return timeRange;
233
- default:
234
- return undefined;
235
- }
236
- };
237
- const getHostname = (link) => {
238
- try {
239
- return new URL(link).hostname;
240
- }
241
- catch {
242
- return link;
243
- }
244
- };
245
- const createTavilyAPI = (apiKey, apiUrl, options) => {
246
- const config = {
247
- apiKey: apiKey ?? process.env.TAVILY_API_KEY,
248
- apiUrl: apiUrl ??
249
- process.env.TAVILY_SEARCH_URL ??
250
- 'https://api.tavily.com/search',
251
- timeout: options?.timeout ?? DEFAULT_TAVILY_TIMEOUT,
252
- };
253
- if (config.apiKey == null || config.apiKey === '') {
254
- throw new Error('TAVILY_API_KEY is required for Tavily API');
255
- }
256
- const getSources = async ({ query, date, country, numResults = 8, type, news, }) => {
257
- if (!query.trim()) {
258
- return { success: false, error: 'Query cannot be empty' };
259
- }
260
- try {
261
- const timeRange = normalizeTavilyTimeRange(options?.timeRange) ??
262
- (date != null ? (normalizeTavilyTimeRange(date) ?? 'day') : undefined);
263
- const topic = news === true || type === 'news'
264
- ? 'news'
265
- : (options?.topic ?? 'general');
266
- const maxResults = options?.maxResults ?? numResults;
267
- const searchDepth = options?.searchDepth ?? 'basic';
268
- const payload = {
269
- query,
270
- search_depth: searchDepth,
271
- topic,
272
- max_results: Math.min(Math.max(1, maxResults), 20),
273
- };
274
- if (options?.safeSearch != null &&
275
- searchDepth !== 'fast' &&
276
- searchDepth !== 'ultra-fast') {
277
- payload.safe_search = options.safeSearch;
278
- }
279
- if (timeRange != null) {
280
- payload.time_range = timeRange;
281
- }
282
- const tavilyCountry = topic === 'general' ? normalizeTavilyCountry(country) : undefined;
283
- if (tavilyCountry != null) {
284
- payload.country = tavilyCountry;
285
- }
286
- if (type === 'images' || options?.includeImages) {
287
- payload.include_images = true;
288
- }
289
- if (options?.includeAnswer != null) {
290
- payload.include_answer = options.includeAnswer;
291
- }
292
- if (options?.includeRawContent != null) {
293
- payload.include_raw_content = options.includeRawContent;
294
- }
295
- if (options?.includeDomains != null &&
296
- options.includeDomains.length > 0) {
297
- payload.include_domains = options.includeDomains;
298
- }
299
- if (options?.excludeDomains != null &&
300
- options.excludeDomains.length > 0) {
301
- payload.exclude_domains = options.excludeDomains;
302
- }
303
- if (options?.includeImageDescriptions != null) {
304
- payload.include_image_descriptions = options.includeImageDescriptions;
305
- }
306
- if (options?.includeFavicon != null) {
307
- payload.include_favicon = options.includeFavicon;
308
- }
309
- if (options?.chunksPerSource != null && searchDepth === 'advanced') {
310
- payload.chunks_per_source = options.chunksPerSource;
311
- }
312
- const response = await axios.post(config.apiUrl, payload, {
313
- headers: {
314
- Authorization: `Bearer ${config.apiKey}`,
315
- 'Content-Type': 'application/json',
316
- },
317
- timeout: config.timeout,
318
- });
319
- const data = response.data;
320
- const organicResults = (data.results ?? []).map((result) => ({
321
- title: result.title ?? '',
322
- link: result.url ?? '',
323
- snippet: result.content ?? '',
324
- date: result.published_date,
325
- }));
326
- const imageResults = Array.isArray(data.images)
327
- ? data.images.slice(0, 6).reduce((acc, image) => {
328
- const imageUrl = typeof image === 'string' ? image : image.url;
329
- if (imageUrl == null || imageUrl === '') {
330
- return acc;
331
- }
332
- acc.push({
333
- imageUrl,
334
- title: typeof image === 'string' ? undefined : image.description,
335
- position: acc.length + 1,
336
- });
337
- return acc;
338
- }, [])
339
- : [];
340
- const newsResults = topic === 'news'
341
- ? organicResults.map((r) => ({
342
- title: r.title,
343
- link: r.link,
344
- snippet: r.snippet,
345
- date: r.date,
346
- source: getHostname(r.link),
347
- }))
348
- : [];
349
- const results = {
350
- organic: organicResults,
351
- images: imageResults,
352
- topStories: [],
353
- videos: [],
354
- news: newsResults,
355
- answerBox: data.answer != null ? { snippet: data.answer } : undefined,
356
- relatedSearches: [],
357
- };
358
- return { success: true, data: results };
359
- }
360
- catch (error) {
361
- const errorMessage = error instanceof Error ? error.message : String(error);
362
- return {
363
- success: false,
364
- error: `Tavily API request failed: ${errorMessage}`,
365
- };
366
- }
367
- };
368
- return { getSources };
369
- };
370
-
371
- exports.createTavilyAPI = createTavilyAPI;
372
- //# sourceMappingURL=tavily-search.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tavily-search.cjs","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: 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) {\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 }\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"],"names":[],"mappings":"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"}