@office-ai/aioncli-core 0.1.21 → 0.2.3

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 (352) hide show
  1. package/dist/index.d.ts +3 -0
  2. package/dist/index.js +3 -0
  3. package/dist/index.js.map +1 -1
  4. package/dist/src/code_assist/converter.d.ts +3 -2
  5. package/dist/src/code_assist/converter.js +1 -0
  6. package/dist/src/code_assist/converter.js.map +1 -1
  7. package/dist/src/code_assist/oauth2.d.ts +2 -0
  8. package/dist/src/code_assist/oauth2.js +47 -25
  9. package/dist/src/code_assist/oauth2.js.map +1 -1
  10. package/dist/src/code_assist/oauth2.test.js +99 -8
  11. package/dist/src/code_assist/oauth2.test.js.map +1 -1
  12. package/dist/src/code_assist/server.js +1 -1
  13. package/dist/src/code_assist/server.js.map +1 -1
  14. package/dist/src/code_assist/setup.js +48 -17
  15. package/dist/src/code_assist/setup.js.map +1 -1
  16. package/dist/src/code_assist/setup.test.js +114 -8
  17. package/dist/src/code_assist/setup.test.js.map +1 -1
  18. package/dist/src/config/config.d.ts +27 -8
  19. package/dist/src/config/config.js +56 -25
  20. package/dist/src/config/config.js.map +1 -1
  21. package/dist/src/config/config.test.js +109 -1
  22. package/dist/src/config/config.test.js.map +1 -1
  23. package/dist/src/core/client.d.ts +18 -15
  24. package/dist/src/core/client.js +275 -63
  25. package/dist/src/core/client.js.map +1 -1
  26. package/dist/src/core/client.test.js +631 -36
  27. package/dist/src/core/client.test.js.map +1 -1
  28. package/dist/src/core/contentGenerator.js +20 -12
  29. package/dist/src/core/contentGenerator.js.map +1 -1
  30. package/dist/src/core/contentGenerator.test.js +39 -15
  31. package/dist/src/core/contentGenerator.test.js.map +1 -1
  32. package/dist/src/core/coreToolScheduler.d.ts +2 -1
  33. package/dist/src/core/coreToolScheduler.js +26 -4
  34. package/dist/src/core/coreToolScheduler.js.map +1 -1
  35. package/dist/src/core/coreToolScheduler.test.js +230 -71
  36. package/dist/src/core/coreToolScheduler.test.js.map +1 -1
  37. package/dist/src/core/geminiChat.d.ts +11 -1
  38. package/dist/src/core/geminiChat.js +85 -11
  39. package/dist/src/core/geminiChat.js.map +1 -1
  40. package/dist/src/core/logger.d.ts +22 -1
  41. package/dist/src/core/logger.js +103 -17
  42. package/dist/src/core/logger.js.map +1 -1
  43. package/dist/src/core/logger.test.js +86 -20
  44. package/dist/src/core/logger.test.js.map +1 -1
  45. package/dist/src/core/loggingContentGenerator.d.ts +1 -0
  46. package/dist/src/core/loggingContentGenerator.js +7 -1
  47. package/dist/src/core/loggingContentGenerator.js.map +1 -1
  48. package/dist/src/core/nonInteractiveToolExecutor.d.ts +2 -2
  49. package/dist/src/core/nonInteractiveToolExecutor.js +11 -3
  50. package/dist/src/core/nonInteractiveToolExecutor.js.map +1 -1
  51. package/dist/src/core/nonInteractiveToolExecutor.test.js +95 -46
  52. package/dist/src/core/nonInteractiveToolExecutor.test.js.map +1 -1
  53. package/dist/src/core/openaiContentGenerator.js +71 -25
  54. package/dist/src/core/openaiContentGenerator.js.map +1 -1
  55. package/dist/src/core/openaiContentGenerator.test.js +1 -1
  56. package/dist/src/core/openaiContentGenerator.test.js.map +1 -1
  57. package/dist/src/core/prompts.js +4 -4
  58. package/dist/src/core/prompts.js.map +1 -1
  59. package/dist/src/core/subagent.js +5 -5
  60. package/dist/src/core/subagent.js.map +1 -1
  61. package/dist/src/core/subagent.test.js +3 -3
  62. package/dist/src/core/subagent.test.js.map +1 -1
  63. package/dist/src/generated/git-commit.d.ts +7 -0
  64. package/dist/src/generated/git-commit.js +10 -0
  65. package/dist/src/generated/git-commit.js.map +1 -0
  66. package/dist/src/ide/constants.d.ts +6 -0
  67. package/dist/src/ide/constants.js +7 -0
  68. package/dist/src/ide/constants.js.map +1 -0
  69. package/dist/src/ide/detect-ide.d.ts +12 -2
  70. package/dist/src/ide/detect-ide.js +64 -5
  71. package/dist/src/ide/detect-ide.js.map +1 -1
  72. package/dist/src/ide/detect-ide.test.d.ts +6 -0
  73. package/dist/src/ide/detect-ide.test.js +65 -0
  74. package/dist/src/ide/detect-ide.test.js.map +1 -0
  75. package/dist/src/ide/ide-client.d.ts +9 -1
  76. package/dist/src/ide/ide-client.js +113 -30
  77. package/dist/src/ide/ide-client.js.map +1 -1
  78. package/dist/src/ide/ide-client.test.d.ts +6 -0
  79. package/dist/src/ide/ide-client.test.js +43 -0
  80. package/dist/src/ide/ide-client.test.js.map +1 -0
  81. package/dist/src/ide/ide-installer.js +23 -34
  82. package/dist/src/ide/ide-installer.js.map +1 -1
  83. package/dist/src/ide/ide-installer.test.js +6 -8
  84. package/dist/src/ide/ide-installer.test.js.map +1 -1
  85. package/dist/src/ide/ideContext.d.ts +42 -42
  86. package/dist/src/ide/process-utils.d.ts +19 -0
  87. package/dist/src/ide/process-utils.js +140 -0
  88. package/dist/src/ide/process-utils.js.map +1 -0
  89. package/dist/src/index.d.ts +6 -1
  90. package/dist/src/index.js +6 -1
  91. package/dist/src/index.js.map +1 -1
  92. package/dist/src/mcp/google-auth-provider.js +9 -0
  93. package/dist/src/mcp/google-auth-provider.js.map +1 -1
  94. package/dist/src/mcp/google-auth-provider.test.js +45 -10
  95. package/dist/src/mcp/google-auth-provider.test.js.map +1 -1
  96. package/dist/src/mcp/oauth-provider.d.ts +0 -1
  97. package/dist/src/mcp/oauth-provider.js +176 -59
  98. package/dist/src/mcp/oauth-provider.js.map +1 -1
  99. package/dist/src/mcp/oauth-provider.test.js +132 -62
  100. package/dist/src/mcp/oauth-provider.test.js.map +1 -1
  101. package/dist/src/mcp/oauth-utils.d.ts +3 -1
  102. package/dist/src/mcp/oauth-utils.js +50 -12
  103. package/dist/src/mcp/oauth-utils.js.map +1 -1
  104. package/dist/src/mcp/oauth-utils.test.js +17 -2
  105. package/dist/src/mcp/oauth-utils.test.js.map +1 -1
  106. package/dist/src/mocks/msw.d.ts +6 -0
  107. package/dist/src/mocks/msw.js +8 -0
  108. package/dist/src/mocks/msw.js.map +1 -0
  109. package/dist/src/services/chatRecordingService.d.ts +150 -0
  110. package/dist/src/services/chatRecordingService.js +318 -0
  111. package/dist/src/services/chatRecordingService.js.map +1 -0
  112. package/dist/src/services/chatRecordingService.test.d.ts +6 -0
  113. package/dist/src/services/chatRecordingService.test.js +288 -0
  114. package/dist/src/services/chatRecordingService.test.js.map +1 -0
  115. package/dist/src/services/fileSystemService.d.ts +31 -0
  116. package/dist/src/services/fileSystemService.js +18 -0
  117. package/dist/src/services/fileSystemService.js.map +1 -0
  118. package/dist/src/services/fileSystemService.test.d.ts +6 -0
  119. package/dist/src/services/fileSystemService.test.js +41 -0
  120. package/dist/src/services/fileSystemService.test.js.map +1 -0
  121. package/dist/src/services/loopDetectionService.js +9 -10
  122. package/dist/src/services/loopDetectionService.js.map +1 -1
  123. package/dist/src/services/loopDetectionService.test.js +52 -0
  124. package/dist/src/services/loopDetectionService.test.js.map +1 -1
  125. package/dist/src/services/shellExecutionService.d.ts +8 -10
  126. package/dist/src/services/shellExecutionService.js +289 -133
  127. package/dist/src/services/shellExecutionService.js.map +1 -1
  128. package/dist/src/services/shellExecutionService.test.js +274 -30
  129. package/dist/src/services/shellExecutionService.test.js.map +1 -1
  130. package/dist/src/telemetry/clearcut-logger/clearcut-logger.d.ts +61 -17
  131. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +211 -233
  132. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -1
  133. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.d.ts +11 -0
  134. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js +250 -94
  135. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js.map +1 -1
  136. package/dist/src/telemetry/clearcut-logger/event-metadata-key.d.ts +9 -2
  137. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js +19 -9
  138. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js.map +1 -1
  139. package/dist/src/telemetry/constants.d.ts +1 -0
  140. package/dist/src/telemetry/constants.js +1 -0
  141. package/dist/src/telemetry/constants.js.map +1 -1
  142. package/dist/src/telemetry/index.d.ts +2 -2
  143. package/dist/src/telemetry/index.js +2 -2
  144. package/dist/src/telemetry/index.js.map +1 -1
  145. package/dist/src/telemetry/integration.test.circular.js +1 -0
  146. package/dist/src/telemetry/integration.test.circular.js.map +1 -1
  147. package/dist/src/telemetry/loggers.d.ts +3 -1
  148. package/dist/src/telemetry/loggers.js +39 -6
  149. package/dist/src/telemetry/loggers.js.map +1 -1
  150. package/dist/src/telemetry/loggers.test.js +37 -7
  151. package/dist/src/telemetry/loggers.test.js.map +1 -1
  152. package/dist/src/telemetry/metrics.d.ts +5 -1
  153. package/dist/src/telemetry/metrics.js +23 -9
  154. package/dist/src/telemetry/metrics.js.map +1 -1
  155. package/dist/src/telemetry/metrics.test.js +31 -1
  156. package/dist/src/telemetry/metrics.test.js.map +1 -1
  157. package/dist/src/telemetry/sdk.d.ts +1 -1
  158. package/dist/src/telemetry/sdk.js +80 -44
  159. package/dist/src/telemetry/sdk.js.map +1 -1
  160. package/dist/src/telemetry/sdk.test.d.ts +6 -0
  161. package/dist/src/telemetry/sdk.test.js +82 -0
  162. package/dist/src/telemetry/sdk.test.js.map +1 -0
  163. package/dist/src/telemetry/telemetry.test.js +2 -2
  164. package/dist/src/telemetry/telemetry.test.js.map +1 -1
  165. package/dist/src/telemetry/types.d.ts +41 -14
  166. package/dist/src/telemetry/types.js +52 -23
  167. package/dist/src/telemetry/types.js.map +1 -1
  168. package/dist/src/telemetry/uiTelemetry.d.ts +4 -0
  169. package/dist/src/telemetry/uiTelemetry.js +14 -1
  170. package/dist/src/telemetry/uiTelemetry.js.map +1 -1
  171. package/dist/src/telemetry/uiTelemetry.test.js +45 -9
  172. package/dist/src/telemetry/uiTelemetry.test.js.map +1 -1
  173. package/dist/src/test-utils/config.d.ts +16 -0
  174. package/dist/src/test-utils/config.js +32 -0
  175. package/dist/src/test-utils/config.js.map +1 -0
  176. package/dist/src/test-utils/tools.d.ts +29 -8
  177. package/dist/src/test-utils/tools.js +80 -16
  178. package/dist/src/test-utils/tools.js.map +1 -1
  179. package/dist/src/tools/edit.d.ts +1 -1
  180. package/dist/src/tools/edit.js +23 -19
  181. package/dist/src/tools/edit.js.map +1 -1
  182. package/dist/src/tools/edit.test.js +11 -3
  183. package/dist/src/tools/edit.test.js.map +1 -1
  184. package/dist/src/tools/glob.d.ts +1 -1
  185. package/dist/src/tools/glob.js +15 -16
  186. package/dist/src/tools/glob.js.map +1 -1
  187. package/dist/src/tools/glob.test.js +20 -0
  188. package/dist/src/tools/glob.test.js.map +1 -1
  189. package/dist/src/tools/grep.d.ts +1 -1
  190. package/dist/src/tools/grep.js +7 -13
  191. package/dist/src/tools/grep.js.map +1 -1
  192. package/dist/src/tools/ls.d.ts +4 -23
  193. package/dist/src/tools/ls.js +77 -79
  194. package/dist/src/tools/ls.js.map +1 -1
  195. package/dist/src/tools/ls.test.js +62 -34
  196. package/dist/src/tools/ls.test.js.map +1 -1
  197. package/dist/src/tools/mcp-client-manager.d.ts +38 -0
  198. package/dist/src/tools/mcp-client-manager.js +74 -0
  199. package/dist/src/tools/mcp-client-manager.js.map +1 -0
  200. package/dist/src/tools/mcp-client-manager.test.d.ts +6 -0
  201. package/dist/src/tools/mcp-client-manager.test.js +39 -0
  202. package/dist/src/tools/mcp-client-manager.test.js.map +1 -0
  203. package/dist/src/tools/mcp-client.d.ts +43 -0
  204. package/dist/src/tools/mcp-client.js +157 -11
  205. package/dist/src/tools/mcp-client.js.map +1 -1
  206. package/dist/src/tools/mcp-client.test.js +62 -276
  207. package/dist/src/tools/mcp-client.test.js.map +1 -1
  208. package/dist/src/tools/mcp-tool.d.ts +6 -13
  209. package/dist/src/tools/mcp-tool.js +62 -34
  210. package/dist/src/tools/mcp-tool.js.map +1 -1
  211. package/dist/src/tools/mcp-tool.test.js +118 -59
  212. package/dist/src/tools/mcp-tool.test.js.map +1 -1
  213. package/dist/src/tools/memoryTool.d.ts +9 -13
  214. package/dist/src/tools/memoryTool.js +122 -121
  215. package/dist/src/tools/memoryTool.js.map +1 -1
  216. package/dist/src/tools/memoryTool.test.js +38 -18
  217. package/dist/src/tools/memoryTool.test.js.map +1 -1
  218. package/dist/src/tools/read-file.d.ts +1 -1
  219. package/dist/src/tools/read-file.js +20 -18
  220. package/dist/src/tools/read-file.js.map +1 -1
  221. package/dist/src/tools/read-file.test.js +8 -0
  222. package/dist/src/tools/read-file.test.js.map +1 -1
  223. package/dist/src/tools/read-many-files.d.ts +3 -5
  224. package/dist/src/tools/read-many-files.js +121 -105
  225. package/dist/src/tools/read-many-files.js.map +1 -1
  226. package/dist/src/tools/read-many-files.test.js +94 -37
  227. package/dist/src/tools/read-many-files.test.js.map +1 -1
  228. package/dist/src/tools/shell.d.ts +4 -6
  229. package/dist/src/tools/shell.js +120 -124
  230. package/dist/src/tools/shell.js.map +1 -1
  231. package/dist/src/tools/shell.test.js +63 -65
  232. package/dist/src/tools/shell.test.js.map +1 -1
  233. package/dist/src/tools/tool-error.d.ts +1 -0
  234. package/dist/src/tools/tool-error.js +1 -0
  235. package/dist/src/tools/tool-error.js.map +1 -1
  236. package/dist/src/tools/tool-registry.d.ts +14 -18
  237. package/dist/src/tools/tool-registry.js +73 -106
  238. package/dist/src/tools/tool-registry.js.map +1 -1
  239. package/dist/src/tools/tool-registry.test.js +24 -192
  240. package/dist/src/tools/tool-registry.test.js.map +1 -1
  241. package/dist/src/tools/tools.d.ts +33 -89
  242. package/dist/src/tools/tools.js +76 -119
  243. package/dist/src/tools/tools.js.map +1 -1
  244. package/dist/src/tools/tools.test.js +91 -2
  245. package/dist/src/tools/tools.test.js.map +1 -1
  246. package/dist/src/tools/web-fetch.d.ts +4 -7
  247. package/dist/src/tools/web-fetch.js +58 -64
  248. package/dist/src/tools/web-fetch.js.map +1 -1
  249. package/dist/src/tools/web-fetch.test.js +8 -4
  250. package/dist/src/tools/web-fetch.test.js.map +1 -1
  251. package/dist/src/tools/web-search.d.ts +4 -5
  252. package/dist/src/tools/web-search.js +47 -51
  253. package/dist/src/tools/web-search.js.map +1 -1
  254. package/dist/src/tools/web-search.test.d.ts +6 -0
  255. package/dist/src/tools/web-search.test.js +139 -0
  256. package/dist/src/tools/web-search.test.js.map +1 -0
  257. package/dist/src/tools/write-file.d.ts +15 -10
  258. package/dist/src/tools/write-file.js +134 -145
  259. package/dist/src/tools/write-file.js.map +1 -1
  260. package/dist/src/tools/write-file.test.js +82 -127
  261. package/dist/src/tools/write-file.test.js.map +1 -1
  262. package/dist/src/utils/browser.js +4 -3
  263. package/dist/src/utils/browser.js.map +1 -1
  264. package/dist/src/utils/editCorrector.js +21 -22
  265. package/dist/src/utils/editCorrector.js.map +1 -1
  266. package/dist/src/utils/editor.js +1 -1
  267. package/dist/src/utils/editor.js.map +1 -1
  268. package/dist/src/utils/editor.test.js +10 -10
  269. package/dist/src/utils/editor.test.js.map +1 -1
  270. package/dist/src/utils/environmentContext.js +2 -2
  271. package/dist/src/utils/environmentContext.js.map +1 -1
  272. package/dist/src/utils/environmentContext.test.js +3 -2
  273. package/dist/src/utils/environmentContext.test.js.map +1 -1
  274. package/dist/src/utils/errorParsing.d.ts +8 -0
  275. package/dist/src/utils/errorParsing.js +93 -0
  276. package/dist/src/utils/errorParsing.js.map +1 -0
  277. package/dist/src/utils/errorParsing.test.d.ts +6 -0
  278. package/dist/src/utils/errorParsing.test.js +172 -0
  279. package/dist/src/utils/errorParsing.test.js.map +1 -0
  280. package/dist/src/utils/fileUtils.d.ts +2 -1
  281. package/dist/src/utils/fileUtils.js +3 -3
  282. package/dist/src/utils/fileUtils.js.map +1 -1
  283. package/dist/src/utils/fileUtils.test.js +18 -17
  284. package/dist/src/utils/fileUtils.test.js.map +1 -1
  285. package/dist/src/utils/filesearch/crawler.d.ts +15 -0
  286. package/dist/src/utils/filesearch/crawler.js +50 -0
  287. package/dist/src/utils/filesearch/crawler.js.map +1 -0
  288. package/dist/src/utils/filesearch/crawler.test.d.ts +6 -0
  289. package/dist/src/utils/filesearch/crawler.test.js +468 -0
  290. package/dist/src/utils/filesearch/crawler.test.js.map +1 -0
  291. package/dist/src/utils/filesearch/fileSearch.d.ts +9 -53
  292. package/dist/src/utils/filesearch/fileSearch.js +63 -118
  293. package/dist/src/utils/filesearch/fileSearch.js.map +1 -1
  294. package/dist/src/utils/filesearch/fileSearch.test.js +95 -197
  295. package/dist/src/utils/filesearch/fileSearch.test.js.map +1 -1
  296. package/dist/src/utils/filesearch/ignore.d.ts +7 -0
  297. package/dist/src/utils/filesearch/ignore.js +25 -0
  298. package/dist/src/utils/filesearch/ignore.js.map +1 -1
  299. package/dist/src/utils/filesearch/ignore.test.js +89 -2
  300. package/dist/src/utils/filesearch/ignore.test.js.map +1 -1
  301. package/dist/src/utils/filesearch/result-cache.d.ts +1 -2
  302. package/dist/src/utils/filesearch/result-cache.js +1 -3
  303. package/dist/src/utils/filesearch/result-cache.js.map +1 -1
  304. package/dist/src/utils/filesearch/result-cache.test.js +3 -4
  305. package/dist/src/utils/filesearch/result-cache.test.js.map +1 -1
  306. package/dist/src/utils/getPty.d.ts +19 -0
  307. package/dist/src/utils/getPty.js +23 -0
  308. package/dist/src/utils/getPty.js.map +1 -0
  309. package/dist/src/utils/memoryDiscovery.js +3 -3
  310. package/dist/src/utils/memoryDiscovery.js.map +1 -1
  311. package/dist/src/utils/memoryDiscovery.test.js +3 -2
  312. package/dist/src/utils/memoryDiscovery.test.js.map +1 -1
  313. package/dist/src/utils/memoryImportProcessor.js +3 -7
  314. package/dist/src/utils/memoryImportProcessor.js.map +1 -1
  315. package/dist/src/utils/memoryImportProcessor.test.js +17 -20
  316. package/dist/src/utils/memoryImportProcessor.test.js.map +1 -1
  317. package/dist/src/utils/nextSpeakerChecker.js +3 -4
  318. package/dist/src/utils/nextSpeakerChecker.js.map +1 -1
  319. package/dist/src/utils/paths.d.ts +7 -0
  320. package/dist/src/utils/paths.js +15 -0
  321. package/dist/src/utils/paths.js.map +1 -1
  322. package/dist/src/utils/paths.test.js +74 -2
  323. package/dist/src/utils/paths.test.js.map +1 -1
  324. package/dist/src/utils/quotaErrorDetection.d.ts +1 -5
  325. package/dist/src/utils/quotaErrorDetection.js.map +1 -1
  326. package/dist/src/utils/retry.js +40 -0
  327. package/dist/src/utils/retry.js.map +1 -1
  328. package/dist/src/utils/schemaValidator.d.ts +1 -8
  329. package/dist/src/utils/schemaValidator.js +1 -32
  330. package/dist/src/utils/schemaValidator.js.map +1 -1
  331. package/dist/src/utils/secure-browser-launcher.js +4 -3
  332. package/dist/src/utils/secure-browser-launcher.js.map +1 -1
  333. package/dist/src/utils/shell-utils.d.ts +39 -0
  334. package/dist/src/utils/shell-utils.js +72 -2
  335. package/dist/src/utils/shell-utils.js.map +1 -1
  336. package/dist/src/utils/shell-utils.test.js +132 -4
  337. package/dist/src/utils/shell-utils.test.js.map +1 -1
  338. package/dist/src/utils/systemEncoding.js +1 -1
  339. package/dist/src/utils/systemEncoding.js.map +1 -1
  340. package/dist/src/utils/systemEncoding.test.js +23 -23
  341. package/dist/src/utils/systemEncoding.test.js.map +1 -1
  342. package/dist/src/utils/user_account.js +58 -48
  343. package/dist/src/utils/user_account.js.map +1 -1
  344. package/dist/src/utils/user_account.test.js +76 -9
  345. package/dist/src/utils/user_account.test.js.map +1 -1
  346. package/dist/src/utils/workspaceContext.d.ts +22 -7
  347. package/dist/src/utils/workspaceContext.js +81 -55
  348. package/dist/src/utils/workspaceContext.js.map +1 -1
  349. package/dist/src/utils/workspaceContext.test.js +221 -137
  350. package/dist/src/utils/workspaceContext.test.js.map +1 -1
  351. package/dist/tsconfig.tsbuildinfo +1 -1
  352. package/package.json +21 -8
@@ -3,9 +3,7 @@
3
3
  * Copyright 2025 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import { SchemaValidator } from '../utils/schemaValidator.js';
7
- import { BaseTool, ToolConfirmationOutcome, Icon, } from './tools.js';
8
- import { Type } from '@google/genai';
6
+ import { BaseDeclarativeTool, BaseToolInvocation, Kind, ToolConfirmationOutcome, } from './tools.js';
9
7
  import { getErrorMessage } from '../utils/errors.js';
10
8
  import { ApprovalMode } from '../config/config.js';
11
9
  import { getResponseText } from '../utils/generateContentResponseUtilities.js';
@@ -19,31 +17,14 @@ function extractUrls(text) {
19
17
  const urlRegex = /(https?:\/\/[^\s]+)/g;
20
18
  return text.match(urlRegex) || [];
21
19
  }
22
- /**
23
- * Implementation of the WebFetch tool logic
24
- */
25
- export class WebFetchTool extends BaseTool {
20
+ class WebFetchToolInvocation extends BaseToolInvocation {
26
21
  config;
27
- static Name = 'web_fetch';
28
- constructor(config) {
29
- super(WebFetchTool.Name, 'WebFetch', "Processes content from URL(s), including local and private network addresses (e.g., localhost), embedded in a prompt. Include up to 20 URLs and instructions (e.g., summarize, extract specific data) directly in the 'prompt' parameter.", Icon.Globe, {
30
- properties: {
31
- prompt: {
32
- description: 'A comprehensive prompt that includes the URL(s) (up to 20) to fetch and specific instructions on how to process their content (e.g., "Summarize https://example.com/article and extract key points from https://another.com/data"). Must contain as least one URL starting with http:// or https://.',
33
- type: Type.STRING,
34
- },
35
- },
36
- required: ['prompt'],
37
- type: Type.OBJECT,
38
- });
22
+ constructor(config, params) {
23
+ super(params);
39
24
  this.config = config;
40
- const proxy = config.getProxy();
41
- if (proxy) {
42
- setGlobalDispatcher(new ProxyAgent(proxy));
43
- }
44
25
  }
45
- async executeFallback(params, signal) {
46
- const urls = extractUrls(params.prompt);
26
+ async executeFallback(signal) {
27
+ const urls = extractUrls(this.params.prompt);
47
28
  if (urls.length === 0) {
48
29
  return {
49
30
  llmContent: 'Error: No URL found in the prompt for fallback.',
@@ -72,13 +53,14 @@ export class WebFetchTool extends BaseTool {
72
53
  ],
73
54
  }).substring(0, MAX_CONTENT_LENGTH);
74
55
  const geminiClient = this.config.getGeminiClient();
75
- const fallbackPrompt = `The user requested the following: "${params.prompt}".
56
+ const fallbackPrompt = `The user requested the following: "${this.params.prompt}".
76
57
 
77
- I was unable to access the URL directly. Instead, I have fetched the raw content of the page. Please use the following content to answer the user's request. Do not attempt to access the URL again.
58
+ I was unable to access the URL directly. Instead, I have fetched the raw content of the page. Please use the following content to answer the request. Do not attempt to access the URL again.
78
59
 
79
60
  ---
80
61
  ${textContent}
81
- ---`;
62
+ ---
63
+ `;
82
64
  const result = await geminiClient.generateContent([{ role: 'user', parts: [{ text: fallbackPrompt }] }], {}, signal);
83
65
  const resultText = getResponseText(result) || '';
84
66
  return {
@@ -95,37 +77,19 @@ ${textContent}
95
77
  };
96
78
  }
97
79
  }
98
- validateParams(params) {
99
- const errors = SchemaValidator.validate(this.schema.parameters, params);
100
- if (errors) {
101
- return errors;
102
- }
103
- if (!params.prompt || params.prompt.trim() === '') {
104
- return "The 'prompt' parameter cannot be empty and must contain URL(s) and instructions.";
105
- }
106
- if (!params.prompt.includes('http://') &&
107
- !params.prompt.includes('https://')) {
108
- return "The 'prompt' must contain at least one valid URL (starting with http:// or https://).";
109
- }
110
- return null;
111
- }
112
- getDescription(params) {
113
- const displayPrompt = params.prompt.length > 100
114
- ? params.prompt.substring(0, 97) + '...'
115
- : params.prompt;
80
+ getDescription() {
81
+ const displayPrompt = this.params.prompt.length > 100
82
+ ? this.params.prompt.substring(0, 97) + '...'
83
+ : this.params.prompt;
116
84
  return `Processing URLs and instructions from prompt: "${displayPrompt}"`;
117
85
  }
118
- async shouldConfirmExecute(params) {
86
+ async shouldConfirmExecute() {
119
87
  if (this.config.getApprovalMode() === ApprovalMode.AUTO_EDIT) {
120
88
  return false;
121
89
  }
122
- const validationError = this.validateParams(params);
123
- if (validationError) {
124
- return false;
125
- }
126
90
  // Perform GitHub URL conversion here to differentiate between user-provided
127
91
  // URL and the actual URL to be fetched.
128
- const urls = extractUrls(params.prompt).map((url) => {
92
+ const urls = extractUrls(this.params.prompt).map((url) => {
129
93
  if (url.includes('github.com') && url.includes('/blob/')) {
130
94
  return url
131
95
  .replace('github.com', 'raw.githubusercontent.com')
@@ -136,7 +100,7 @@ ${textContent}
136
100
  const confirmationDetails = {
137
101
  type: 'info',
138
102
  title: `Confirm Web Fetch`,
139
- prompt: params.prompt,
103
+ prompt: this.params.prompt,
140
104
  urls,
141
105
  onConfirm: async (outcome) => {
142
106
  if (outcome === ToolConfirmationOutcome.ProceedAlways) {
@@ -146,20 +110,13 @@ ${textContent}
146
110
  };
147
111
  return confirmationDetails;
148
112
  }
149
- async execute(params, signal) {
150
- const validationError = this.validateParams(params);
151
- if (validationError) {
152
- return {
153
- llmContent: `Error: Invalid parameters provided. Reason: ${validationError}`,
154
- returnDisplay: validationError,
155
- };
156
- }
157
- const userPrompt = params.prompt;
113
+ async execute(signal) {
114
+ const userPrompt = this.params.prompt;
158
115
  const urls = extractUrls(userPrompt);
159
116
  const url = urls[0];
160
117
  const isPrivate = isPrivateIp(url);
161
118
  if (isPrivate) {
162
- return this.executeFallback(params, signal);
119
+ return this.executeFallback(signal);
163
120
  }
164
121
  const geminiClient = this.config.getGeminiClient();
165
122
  try {
@@ -190,7 +147,7 @@ ${textContent}
190
147
  processingError = true;
191
148
  }
192
149
  if (processingError) {
193
- return this.executeFallback(params, signal);
150
+ return this.executeFallback(signal);
194
151
  }
195
152
  const sourceListFormatted = [];
196
153
  if (sources && sources.length > 0) {
@@ -243,4 +200,41 @@ ${sourceListFormatted.join('\n')}`;
243
200
  }
244
201
  }
245
202
  }
203
+ /**
204
+ * Implementation of the WebFetch tool logic
205
+ */
206
+ export class WebFetchTool extends BaseDeclarativeTool {
207
+ config;
208
+ static Name = 'web_fetch';
209
+ constructor(config) {
210
+ super(WebFetchTool.Name, 'WebFetch', "Processes content from URL(s), including local and private network addresses (e.g., localhost), embedded in a prompt. Include up to 20 URLs and instructions (e.g., summarize, extract specific data) directly in the 'prompt' parameter.", Kind.Fetch, {
211
+ properties: {
212
+ prompt: {
213
+ description: 'A comprehensive prompt that includes the URL(s) (up to 20) to fetch and specific instructions on how to process their content (e.g., "Summarize https://example.com/article and extract key points from https://another.com/data"). Must contain as least one URL starting with http:// or https://.',
214
+ type: 'string',
215
+ },
216
+ },
217
+ required: ['prompt'],
218
+ type: 'object',
219
+ });
220
+ this.config = config;
221
+ const proxy = config.getProxy();
222
+ if (proxy) {
223
+ setGlobalDispatcher(new ProxyAgent(proxy));
224
+ }
225
+ }
226
+ validateToolParamValues(params) {
227
+ if (!params.prompt || params.prompt.trim() === '') {
228
+ return "The 'prompt' parameter cannot be empty and must contain URL(s) and instructions.";
229
+ }
230
+ if (!params.prompt.includes('http://') &&
231
+ !params.prompt.includes('https://')) {
232
+ return "The 'prompt' must contain at least one valid URL (starting with http:// or https://).";
233
+ }
234
+ return null;
235
+ }
236
+ createInvocation(params) {
237
+ return new WebFetchToolInvocation(this.config, params);
238
+ }
239
+ }
246
240
  //# sourceMappingURL=web-fetch.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"web-fetch.js","sourceRoot":"","sources":["../../../src/tools/web-fetch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"web-fetch.js","sourceRoot":"","sources":["../../../src/tools/web-fetch.ts"],"names":[],"mappings":"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"}
@@ -17,7 +17,8 @@ describe('WebFetchTool', () => {
17
17
  it('should return confirmation details with the correct prompt and urls', async () => {
18
18
  const tool = new WebFetchTool(mockConfig);
19
19
  const params = { prompt: 'fetch https://example.com' };
20
- const confirmationDetails = await tool.shouldConfirmExecute(params);
20
+ const invocation = tool.build(params);
21
+ const confirmationDetails = await invocation.shouldConfirmExecute(new AbortController().signal);
21
22
  expect(confirmationDetails).toEqual({
22
23
  type: 'info',
23
24
  title: 'Confirm Web Fetch',
@@ -31,7 +32,8 @@ describe('WebFetchTool', () => {
31
32
  const params = {
32
33
  prompt: 'fetch https://github.com/google/gemini-react/blob/main/README.md',
33
34
  };
34
- const confirmationDetails = await tool.shouldConfirmExecute(params);
35
+ const invocation = tool.build(params);
36
+ const confirmationDetails = await invocation.shouldConfirmExecute(new AbortController().signal);
35
37
  expect(confirmationDetails).toEqual({
36
38
  type: 'info',
37
39
  title: 'Confirm Web Fetch',
@@ -48,7 +50,8 @@ describe('WebFetchTool', () => {
48
50
  getApprovalMode: () => ApprovalMode.AUTO_EDIT,
49
51
  });
50
52
  const params = { prompt: 'fetch https://example.com' };
51
- const confirmationDetails = await tool.shouldConfirmExecute(params);
53
+ const invocation = tool.build(params);
54
+ const confirmationDetails = await invocation.shouldConfirmExecute(new AbortController().signal);
52
55
  expect(confirmationDetails).toBe(false);
53
56
  });
54
57
  it('should call setApprovalMode when onConfirm is called with ProceedAlways', async () => {
@@ -58,7 +61,8 @@ describe('WebFetchTool', () => {
58
61
  setApprovalMode,
59
62
  });
60
63
  const params = { prompt: 'fetch https://example.com' };
61
- const confirmationDetails = await tool.shouldConfirmExecute(params);
64
+ const invocation = tool.build(params);
65
+ const confirmationDetails = await invocation.shouldConfirmExecute(new AbortController().signal);
62
66
  if (confirmationDetails &&
63
67
  typeof confirmationDetails === 'object' &&
64
68
  'onConfirm' in confirmationDetails) {
@@ -1 +1 @@
1
- {"version":3,"file":"web-fetch.test.js","sourceRoot":"","sources":["../../../src/tools/web-fetch.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"web-fetch.test.js","sourceRoot":"","sources":["../../../src/tools/web-fetch.test.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
  import { GroundingMetadata } from '@google/genai';
7
- import { BaseTool, ToolResult } from './tools.js';
7
+ import { BaseDeclarativeTool, ToolInvocation, ToolResult } from './tools.js';
8
8
  import { Config } from '../config/config.js';
9
9
  interface GroundingChunkWeb {
10
10
  uri?: string;
@@ -33,7 +33,7 @@ export interface WebSearchToolResult extends ToolResult {
33
33
  /**
34
34
  * A tool to perform web searches using Google Search via the Gemini API.
35
35
  */
36
- export declare class WebSearchTool extends BaseTool<WebSearchToolParams, WebSearchToolResult> {
36
+ export declare class WebSearchTool extends BaseDeclarativeTool<WebSearchToolParams, WebSearchToolResult> {
37
37
  private readonly config;
38
38
  static readonly Name: string;
39
39
  constructor(config: Config);
@@ -42,8 +42,7 @@ export declare class WebSearchTool extends BaseTool<WebSearchToolParams, WebSear
42
42
  * @param params The parameters to validate
43
43
  * @returns An error message string if validation fails, null if valid
44
44
  */
45
- validateParams(params: WebSearchToolParams): string | null;
46
- getDescription(params: WebSearchToolParams): string;
47
- execute(params: WebSearchToolParams, signal: AbortSignal): Promise<WebSearchToolResult>;
45
+ protected validateToolParamValues(params: WebSearchToolParams): string | null;
46
+ protected createInvocation(params: WebSearchToolParams): ToolInvocation<WebSearchToolParams, WebSearchToolResult>;
48
47
  }
49
48
  export {};
@@ -3,66 +3,29 @@
3
3
  * Copyright 2025 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import { BaseTool, Icon } from './tools.js';
7
- import { Type } from '@google/genai';
8
- import { SchemaValidator } from '../utils/schemaValidator.js';
6
+ import { BaseDeclarativeTool, BaseToolInvocation, Kind, } from './tools.js';
9
7
  import { getErrorMessage } from '../utils/errors.js';
10
8
  import { getResponseText } from '../utils/generateContentResponseUtilities.js';
11
- /**
12
- * A tool to perform web searches using Google Search via the Gemini API.
13
- */
14
- export class WebSearchTool extends BaseTool {
9
+ class WebSearchToolInvocation extends BaseToolInvocation {
15
10
  config;
16
- static Name = 'google_web_search';
17
- constructor(config) {
18
- super(WebSearchTool.Name, 'GoogleSearch', 'Performs a web search using Google Search (via the Gemini API) and returns the results. This tool is useful for finding information on the internet based on a query.', Icon.Globe, {
19
- type: Type.OBJECT,
20
- properties: {
21
- query: {
22
- type: Type.STRING,
23
- description: 'The search query to find information on the web.',
24
- },
25
- },
26
- required: ['query'],
27
- });
11
+ constructor(config, params) {
12
+ super(params);
28
13
  this.config = config;
29
14
  }
30
- /**
31
- * Validates the parameters for the WebSearchTool.
32
- * @param params The parameters to validate
33
- * @returns An error message string if validation fails, null if valid
34
- */
35
- validateParams(params) {
36
- const errors = SchemaValidator.validate(this.schema.parameters, params);
37
- if (errors) {
38
- return errors;
39
- }
40
- if (!params.query || params.query.trim() === '') {
41
- return "The 'query' parameter cannot be empty.";
42
- }
43
- return null;
44
- }
45
- getDescription(params) {
46
- return `Searching the web for: "${params.query}"`;
15
+ getDescription() {
16
+ return `Searching the web for: "${this.params.query}"`;
47
17
  }
48
- async execute(params, signal) {
49
- const validationError = this.validateToolParams(params);
50
- if (validationError) {
51
- return {
52
- llmContent: `Error: Invalid parameters provided. Reason: ${validationError}`,
53
- returnDisplay: validationError,
54
- };
55
- }
18
+ async execute(signal) {
56
19
  const geminiClient = this.config.getGeminiClient();
57
20
  try {
58
- const response = await geminiClient.generateContent([{ role: 'user', parts: [{ text: params.query }] }], { tools: [{ googleSearch: {} }] }, signal);
21
+ const response = await geminiClient.generateContent([{ role: 'user', parts: [{ text: this.params.query }] }], { tools: [{ googleSearch: {} }] }, signal);
59
22
  const responseText = getResponseText(response);
60
23
  const groundingMetadata = response.candidates?.[0]?.groundingMetadata;
61
24
  const sources = groundingMetadata?.groundingChunks;
62
25
  const groundingSupports = groundingMetadata?.groundingSupports;
63
26
  if (!responseText || !responseText.trim()) {
64
27
  return {
65
- llmContent: `No search results or information found for query: "${params.query}"`,
28
+ llmContent: `No search results or information found for query: "${this.params.query}"`,
66
29
  returnDisplay: 'No information found.',
67
30
  };
68
31
  }
@@ -91,24 +54,23 @@ export class WebSearchTool extends BaseTool {
91
54
  insertions.sort((a, b) => b.index - a.index);
92
55
  const responseChars = modifiedResponseText.split(''); // Use new variable
93
56
  insertions.forEach((insertion) => {
94
- // Fixed arrow function syntax
95
57
  responseChars.splice(insertion.index, 0, insertion.marker);
96
58
  });
97
59
  modifiedResponseText = responseChars.join(''); // Assign back to modifiedResponseText
98
60
  }
99
61
  if (sourceListFormatted.length > 0) {
100
62
  modifiedResponseText +=
101
- '\n\nSources:\n' + sourceListFormatted.join('\n'); // Fixed string concatenation
63
+ '\n\nSources:\n' + sourceListFormatted.join('\n');
102
64
  }
103
65
  }
104
66
  return {
105
- llmContent: `Web search results for "${params.query}":\n\n${modifiedResponseText}`,
106
- returnDisplay: `Search results for "${params.query}" returned.`,
67
+ llmContent: `Web search results for "${this.params.query}":\n\n${modifiedResponseText}`,
68
+ returnDisplay: `Search results for "${this.params.query}" returned.`,
107
69
  sources,
108
70
  };
109
71
  }
110
72
  catch (error) {
111
- const errorMessage = `Error during web search for query "${params.query}": ${getErrorMessage(error)}`;
73
+ const errorMessage = `Error during web search for query "${this.params.query}": ${getErrorMessage(error)}`;
112
74
  console.error(errorMessage, error);
113
75
  return {
114
76
  llmContent: `Error: ${errorMessage}`,
@@ -117,4 +79,38 @@ export class WebSearchTool extends BaseTool {
117
79
  }
118
80
  }
119
81
  }
82
+ /**
83
+ * A tool to perform web searches using Google Search via the Gemini API.
84
+ */
85
+ export class WebSearchTool extends BaseDeclarativeTool {
86
+ config;
87
+ static Name = 'google_web_search';
88
+ constructor(config) {
89
+ super(WebSearchTool.Name, 'GoogleSearch', 'Performs a web search using Google Search (via the Gemini API) and returns the results. This tool is useful for finding information on the internet based on a query.', Kind.Search, {
90
+ type: 'object',
91
+ properties: {
92
+ query: {
93
+ type: 'string',
94
+ description: 'The search query to find information on the web.',
95
+ },
96
+ },
97
+ required: ['query'],
98
+ });
99
+ this.config = config;
100
+ }
101
+ /**
102
+ * Validates the parameters for the WebSearchTool.
103
+ * @param params The parameters to validate
104
+ * @returns An error message string if validation fails, null if valid
105
+ */
106
+ validateToolParamValues(params) {
107
+ if (!params.query || params.query.trim() === '') {
108
+ return "The 'query' parameter cannot be empty.";
109
+ }
110
+ return null;
111
+ }
112
+ createInvocation(params) {
113
+ return new WebSearchToolInvocation(this.config, params);
114
+ }
115
+ }
120
116
  //# sourceMappingURL=web-search.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"web-search.js","sourceRoot":"","sources":["../../../src/tools/web-search.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"web-search.js","sourceRoot":"","sources":["../../../src/tools/web-search.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export {};
@@ -0,0 +1,139 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
7
+ import { WebSearchTool } from './web-search.js';
8
+ import { GeminiClient } from '../core/client.js';
9
+ // Mock GeminiClient and Config constructor
10
+ vi.mock('../core/client.js');
11
+ vi.mock('../config/config.js');
12
+ describe('WebSearchTool', () => {
13
+ const abortSignal = new AbortController().signal;
14
+ let mockGeminiClient;
15
+ let tool;
16
+ beforeEach(() => {
17
+ const mockConfigInstance = {
18
+ getGeminiClient: () => mockGeminiClient,
19
+ getProxy: () => undefined,
20
+ };
21
+ mockGeminiClient = new GeminiClient(mockConfigInstance);
22
+ tool = new WebSearchTool(mockConfigInstance);
23
+ });
24
+ afterEach(() => {
25
+ vi.restoreAllMocks();
26
+ });
27
+ describe('build', () => {
28
+ it('should return an invocation for a valid query', () => {
29
+ const params = { query: 'test query' };
30
+ const invocation = tool.build(params);
31
+ expect(invocation).toBeDefined();
32
+ expect(invocation.params).toEqual(params);
33
+ });
34
+ it('should throw an error for an empty query', () => {
35
+ const params = { query: '' };
36
+ expect(() => tool.build(params)).toThrow("The 'query' parameter cannot be empty.");
37
+ });
38
+ it('should throw an error for a query with only whitespace', () => {
39
+ const params = { query: ' ' };
40
+ expect(() => tool.build(params)).toThrow("The 'query' parameter cannot be empty.");
41
+ });
42
+ });
43
+ describe('getDescription', () => {
44
+ it('should return a description of the search', () => {
45
+ const params = { query: 'test query' };
46
+ const invocation = tool.build(params);
47
+ expect(invocation.getDescription()).toBe('Searching the web for: "test query"');
48
+ });
49
+ });
50
+ describe('execute', () => {
51
+ it('should return search results for a successful query', async () => {
52
+ const params = { query: 'successful query' };
53
+ mockGeminiClient.generateContent.mockResolvedValue({
54
+ candidates: [
55
+ {
56
+ content: {
57
+ role: 'model',
58
+ parts: [{ text: 'Here are your results.' }],
59
+ },
60
+ },
61
+ ],
62
+ });
63
+ const invocation = tool.build(params);
64
+ const result = await invocation.execute(abortSignal);
65
+ expect(result.llmContent).toBe('Web search results for "successful query":\n\nHere are your results.');
66
+ expect(result.returnDisplay).toBe('Search results for "successful query" returned.');
67
+ expect(result.sources).toBeUndefined();
68
+ });
69
+ it('should handle no search results found', async () => {
70
+ const params = { query: 'no results query' };
71
+ mockGeminiClient.generateContent.mockResolvedValue({
72
+ candidates: [
73
+ {
74
+ content: {
75
+ role: 'model',
76
+ parts: [{ text: '' }],
77
+ },
78
+ },
79
+ ],
80
+ });
81
+ const invocation = tool.build(params);
82
+ const result = await invocation.execute(abortSignal);
83
+ expect(result.llmContent).toBe('No search results or information found for query: "no results query"');
84
+ expect(result.returnDisplay).toBe('No information found.');
85
+ });
86
+ it('should handle API errors gracefully', async () => {
87
+ const params = { query: 'error query' };
88
+ const testError = new Error('API Failure');
89
+ mockGeminiClient.generateContent.mockRejectedValue(testError);
90
+ const invocation = tool.build(params);
91
+ const result = await invocation.execute(abortSignal);
92
+ expect(result.llmContent).toContain('Error:');
93
+ expect(result.llmContent).toContain('API Failure');
94
+ expect(result.returnDisplay).toBe('Error performing web search.');
95
+ });
96
+ it('should correctly format results with sources and citations', async () => {
97
+ const params = { query: 'grounding query' };
98
+ mockGeminiClient.generateContent.mockResolvedValue({
99
+ candidates: [
100
+ {
101
+ content: {
102
+ role: 'model',
103
+ parts: [{ text: 'This is a test response.' }],
104
+ },
105
+ groundingMetadata: {
106
+ groundingChunks: [
107
+ { web: { uri: 'https://example.com', title: 'Example Site' } },
108
+ { web: { uri: 'https://google.com', title: 'Google' } },
109
+ ],
110
+ groundingSupports: [
111
+ {
112
+ segment: { startIndex: 5, endIndex: 14 },
113
+ groundingChunkIndices: [0],
114
+ },
115
+ {
116
+ segment: { startIndex: 15, endIndex: 24 },
117
+ groundingChunkIndices: [0, 1],
118
+ },
119
+ ],
120
+ },
121
+ },
122
+ ],
123
+ });
124
+ const invocation = tool.build(params);
125
+ const result = await invocation.execute(abortSignal);
126
+ const expectedLlmContent = `Web search results for "grounding query":
127
+
128
+ This is a test[1] response.[1][2]
129
+
130
+ Sources:
131
+ [1] Example Site (https://example.com)
132
+ [2] Google (https://google.com)`;
133
+ expect(result.llmContent).toBe(expectedLlmContent);
134
+ expect(result.returnDisplay).toBe('Search results for "grounding query" returned.');
135
+ expect(result.sources).toHaveLength(2);
136
+ });
137
+ });
138
+ });
139
+ //# sourceMappingURL=web-search.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web-search.test.js","sourceRoot":"","sources":["../../../src/tools/web-search.test.ts"],"names":[],"mappings":"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"}