@nexus-cortex/executors 4.26.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (365) hide show
  1. package/LICENSE +202 -0
  2. package/NOTICE +2 -0
  3. package/README.md +13 -0
  4. package/dist/ExecutorRegistry.d.ts +89 -0
  5. package/dist/ExecutorRegistry.d.ts.map +1 -0
  6. package/dist/ExecutorRegistry.js +219 -0
  7. package/dist/ExecutorRegistry.js.map +1 -0
  8. package/dist/base/BaseTool.d.ts +108 -0
  9. package/dist/base/BaseTool.d.ts.map +1 -0
  10. package/dist/base/BaseTool.js +111 -0
  11. package/dist/base/BaseTool.js.map +1 -0
  12. package/dist/base/ToolRegistry.d.ts +141 -0
  13. package/dist/base/ToolRegistry.d.ts.map +1 -0
  14. package/dist/base/ToolRegistry.js +241 -0
  15. package/dist/base/ToolRegistry.js.map +1 -0
  16. package/dist/base/ToolResult.d.ts +63 -0
  17. package/dist/base/ToolResult.d.ts.map +1 -0
  18. package/dist/base/ToolResult.js +8 -0
  19. package/dist/base/ToolResult.js.map +1 -0
  20. package/dist/base/index.d.ts +10 -0
  21. package/dist/base/index.d.ts.map +1 -0
  22. package/dist/base/index.js +8 -0
  23. package/dist/base/index.js.map +1 -0
  24. package/dist/implementations/addon/CreateArtifactTool.d.ts +221 -0
  25. package/dist/implementations/addon/CreateArtifactTool.d.ts.map +1 -0
  26. package/dist/implementations/addon/CreateArtifactTool.js +1042 -0
  27. package/dist/implementations/addon/CreateArtifactTool.js.map +1 -0
  28. package/dist/implementations/addon/FrameDiffCache.d.ts +166 -0
  29. package/dist/implementations/addon/FrameDiffCache.d.ts.map +1 -0
  30. package/dist/implementations/addon/FrameDiffCache.js +395 -0
  31. package/dist/implementations/addon/FrameDiffCache.js.map +1 -0
  32. package/dist/implementations/addon/H264StreamEncoder.d.ts +84 -0
  33. package/dist/implementations/addon/H264StreamEncoder.d.ts.map +1 -0
  34. package/dist/implementations/addon/H264StreamEncoder.js +203 -0
  35. package/dist/implementations/addon/H264StreamEncoder.js.map +1 -0
  36. package/dist/implementations/addon/HybridScreenshotManager.d.ts +197 -0
  37. package/dist/implementations/addon/HybridScreenshotManager.d.ts.map +1 -0
  38. package/dist/implementations/addon/HybridScreenshotManager.js +415 -0
  39. package/dist/implementations/addon/HybridScreenshotManager.js.map +1 -0
  40. package/dist/implementations/addon/InspectSandboxTool.d.ts +54 -0
  41. package/dist/implementations/addon/InspectSandboxTool.d.ts.map +1 -0
  42. package/dist/implementations/addon/InspectSandboxTool.js +226 -0
  43. package/dist/implementations/addon/InspectSandboxTool.js.map +1 -0
  44. package/dist/implementations/addon/InteractWithSandboxTool.d.ts +90 -0
  45. package/dist/implementations/addon/InteractWithSandboxTool.d.ts.map +1 -0
  46. package/dist/implementations/addon/InteractWithSandboxTool.js +367 -0
  47. package/dist/implementations/addon/InteractWithSandboxTool.js.map +1 -0
  48. package/dist/implementations/addon/KeyframeDetector.d.ts +140 -0
  49. package/dist/implementations/addon/KeyframeDetector.d.ts.map +1 -0
  50. package/dist/implementations/addon/KeyframeDetector.js +390 -0
  51. package/dist/implementations/addon/KeyframeDetector.js.map +1 -0
  52. package/dist/implementations/addon/ModifySandboxTool.d.ts +62 -0
  53. package/dist/implementations/addon/ModifySandboxTool.d.ts.map +1 -0
  54. package/dist/implementations/addon/ModifySandboxTool.js +266 -0
  55. package/dist/implementations/addon/ModifySandboxTool.js.map +1 -0
  56. package/dist/implementations/addon/ReactArtifactBuilder.d.ts +27 -0
  57. package/dist/implementations/addon/ReactArtifactBuilder.d.ts.map +1 -0
  58. package/dist/implementations/addon/ReactArtifactBuilder.js +198 -0
  59. package/dist/implementations/addon/ReactArtifactBuilder.js.map +1 -0
  60. package/dist/implementations/addon/SandboxEventBroadcaster.d.ts +143 -0
  61. package/dist/implementations/addon/SandboxEventBroadcaster.d.ts.map +1 -0
  62. package/dist/implementations/addon/SandboxEventBroadcaster.js +258 -0
  63. package/dist/implementations/addon/SandboxEventBroadcaster.js.map +1 -0
  64. package/dist/implementations/addon/SandboxIntrospectionTools.d.ts +77 -0
  65. package/dist/implementations/addon/SandboxIntrospectionTools.d.ts.map +1 -0
  66. package/dist/implementations/addon/SandboxIntrospectionTools.js +292 -0
  67. package/dist/implementations/addon/SandboxIntrospectionTools.js.map +1 -0
  68. package/dist/implementations/addon/SandboxViewServer.d.ts +127 -0
  69. package/dist/implementations/addon/SandboxViewServer.d.ts.map +1 -0
  70. package/dist/implementations/addon/SandboxViewServer.js +775 -0
  71. package/dist/implementations/addon/SandboxViewServer.js.map +1 -0
  72. package/dist/implementations/addon/ScreenStream.d.ts +149 -0
  73. package/dist/implementations/addon/ScreenStream.d.ts.map +1 -0
  74. package/dist/implementations/addon/ScreenStream.js +306 -0
  75. package/dist/implementations/addon/ScreenStream.js.map +1 -0
  76. package/dist/implementations/addon/StopSandboxTool.d.ts +61 -0
  77. package/dist/implementations/addon/StopSandboxTool.d.ts.map +1 -0
  78. package/dist/implementations/addon/StopSandboxTool.js +252 -0
  79. package/dist/implementations/addon/StopSandboxTool.js.map +1 -0
  80. package/dist/implementations/addon/TerminalSandbox.d.ts +111 -0
  81. package/dist/implementations/addon/TerminalSandbox.d.ts.map +1 -0
  82. package/dist/implementations/addon/TerminalSandbox.js +345 -0
  83. package/dist/implementations/addon/TerminalSandbox.js.map +1 -0
  84. package/dist/implementations/addon/VisualFeedbackBridge.d.ts +367 -0
  85. package/dist/implementations/addon/VisualFeedbackBridge.d.ts.map +1 -0
  86. package/dist/implementations/addon/VisualFeedbackBridge.js +888 -0
  87. package/dist/implementations/addon/VisualFeedbackBridge.js.map +1 -0
  88. package/dist/implementations/addon/WindowManager.d.ts +138 -0
  89. package/dist/implementations/addon/WindowManager.d.ts.map +1 -0
  90. package/dist/implementations/addon/WindowManager.js +276 -0
  91. package/dist/implementations/addon/WindowManager.js.map +1 -0
  92. package/dist/implementations/addon/index.d.ts +29 -0
  93. package/dist/implementations/addon/index.d.ts.map +1 -0
  94. package/dist/implementations/addon/index.js +29 -0
  95. package/dist/implementations/addon/index.js.map +1 -0
  96. package/dist/implementations/addon/injectables/reactIntrospection.d.ts +57 -0
  97. package/dist/implementations/addon/injectables/reactIntrospection.d.ts.map +1 -0
  98. package/dist/implementations/addon/injectables/reactIntrospection.js +480 -0
  99. package/dist/implementations/addon/injectables/reactIntrospection.js.map +1 -0
  100. package/dist/implementations/addon/terminal-client.html +253 -0
  101. package/dist/implementations/agent/PRAgentTool.d.ts +37 -0
  102. package/dist/implementations/agent/PRAgentTool.d.ts.map +1 -0
  103. package/dist/implementations/agent/PRAgentTool.js +257 -0
  104. package/dist/implementations/agent/PRAgentTool.js.map +1 -0
  105. package/dist/implementations/agent/TaskTool.d.ts +76 -0
  106. package/dist/implementations/agent/TaskTool.d.ts.map +1 -0
  107. package/dist/implementations/agent/TaskTool.js +424 -0
  108. package/dist/implementations/agent/TaskTool.js.map +1 -0
  109. package/dist/implementations/agent/index.d.ts +5 -0
  110. package/dist/implementations/agent/index.d.ts.map +1 -0
  111. package/dist/implementations/agent/index.js +3 -0
  112. package/dist/implementations/agent/index.js.map +1 -0
  113. package/dist/implementations/execution/BackgroundProcessRegistry.d.ts +68 -0
  114. package/dist/implementations/execution/BackgroundProcessRegistry.d.ts.map +1 -0
  115. package/dist/implementations/execution/BackgroundProcessRegistry.js +146 -0
  116. package/dist/implementations/execution/BackgroundProcessRegistry.js.map +1 -0
  117. package/dist/implementations/execution/BashOutputTool.d.ts +42 -0
  118. package/dist/implementations/execution/BashOutputTool.d.ts.map +1 -0
  119. package/dist/implementations/execution/BashOutputTool.js +168 -0
  120. package/dist/implementations/execution/BashOutputTool.js.map +1 -0
  121. package/dist/implementations/execution/CodeExecuteTool.d.ts +31 -0
  122. package/dist/implementations/execution/CodeExecuteTool.d.ts.map +1 -0
  123. package/dist/implementations/execution/CodeExecuteTool.js +127 -0
  124. package/dist/implementations/execution/CodeExecuteTool.js.map +1 -0
  125. package/dist/implementations/execution/KillShellTool.d.ts +37 -0
  126. package/dist/implementations/execution/KillShellTool.d.ts.map +1 -0
  127. package/dist/implementations/execution/KillShellTool.js +144 -0
  128. package/dist/implementations/execution/KillShellTool.js.map +1 -0
  129. package/dist/implementations/execution/SearchToolsTool.d.ts +32 -0
  130. package/dist/implementations/execution/SearchToolsTool.d.ts.map +1 -0
  131. package/dist/implementations/execution/SearchToolsTool.js +109 -0
  132. package/dist/implementations/execution/SearchToolsTool.js.map +1 -0
  133. package/dist/implementations/execution/ShellTool.d.ts +108 -0
  134. package/dist/implementations/execution/ShellTool.d.ts.map +1 -0
  135. package/dist/implementations/execution/ShellTool.js +546 -0
  136. package/dist/implementations/execution/ShellTool.js.map +1 -0
  137. package/dist/implementations/execution/WorkspaceManagerTool.d.ts +40 -0
  138. package/dist/implementations/execution/WorkspaceManagerTool.d.ts.map +1 -0
  139. package/dist/implementations/execution/WorkspaceManagerTool.js +370 -0
  140. package/dist/implementations/execution/WorkspaceManagerTool.js.map +1 -0
  141. package/dist/implementations/execution/index.d.ts +13 -0
  142. package/dist/implementations/execution/index.d.ts.map +1 -0
  143. package/dist/implementations/execution/index.js +13 -0
  144. package/dist/implementations/execution/index.js.map +1 -0
  145. package/dist/implementations/extensions/EndTurnTool.d.ts +62 -0
  146. package/dist/implementations/extensions/EndTurnTool.d.ts.map +1 -0
  147. package/dist/implementations/extensions/EndTurnTool.js +172 -0
  148. package/dist/implementations/extensions/EndTurnTool.js.map +1 -0
  149. package/dist/implementations/extensions/ResearchBacklogTool.d.ts +37 -0
  150. package/dist/implementations/extensions/ResearchBacklogTool.d.ts.map +1 -0
  151. package/dist/implementations/extensions/ResearchBacklogTool.js +102 -0
  152. package/dist/implementations/extensions/ResearchBacklogTool.js.map +1 -0
  153. package/dist/implementations/extensions/SkillTool.d.ts +108 -0
  154. package/dist/implementations/extensions/SkillTool.d.ts.map +1 -0
  155. package/dist/implementations/extensions/SkillTool.js +351 -0
  156. package/dist/implementations/extensions/SkillTool.js.map +1 -0
  157. package/dist/implementations/extensions/SlashCommandTool.d.ts +112 -0
  158. package/dist/implementations/extensions/SlashCommandTool.d.ts.map +1 -0
  159. package/dist/implementations/extensions/SlashCommandTool.js +315 -0
  160. package/dist/implementations/extensions/SlashCommandTool.js.map +1 -0
  161. package/dist/implementations/extensions/index.d.ts +14 -0
  162. package/dist/implementations/extensions/index.d.ts.map +1 -0
  163. package/dist/implementations/extensions/index.js +10 -0
  164. package/dist/implementations/extensions/index.js.map +1 -0
  165. package/dist/implementations/file/EditTool.d.ts +232 -0
  166. package/dist/implementations/file/EditTool.d.ts.map +1 -0
  167. package/dist/implementations/file/EditTool.js +707 -0
  168. package/dist/implementations/file/EditTool.js.map +1 -0
  169. package/dist/implementations/file/ReadFileTool.d.ts +49 -0
  170. package/dist/implementations/file/ReadFileTool.d.ts.map +1 -0
  171. package/dist/implementations/file/ReadFileTool.js +225 -0
  172. package/dist/implementations/file/ReadFileTool.js.map +1 -0
  173. package/dist/implementations/file/WriteBinaryTool.d.ts +21 -0
  174. package/dist/implementations/file/WriteBinaryTool.d.ts.map +1 -0
  175. package/dist/implementations/file/WriteBinaryTool.js +153 -0
  176. package/dist/implementations/file/WriteBinaryTool.js.map +1 -0
  177. package/dist/implementations/file/WriteFileTool.d.ts +41 -0
  178. package/dist/implementations/file/WriteFileTool.d.ts.map +1 -0
  179. package/dist/implementations/file/WriteFileTool.js +220 -0
  180. package/dist/implementations/file/WriteFileTool.js.map +1 -0
  181. package/dist/implementations/file/index.d.ts +8 -0
  182. package/dist/implementations/file/index.d.ts.map +1 -0
  183. package/dist/implementations/file/index.js +8 -0
  184. package/dist/implementations/file/index.js.map +1 -0
  185. package/dist/implementations/historical/GetConversationSegmentTool.d.ts +44 -0
  186. package/dist/implementations/historical/GetConversationSegmentTool.d.ts.map +1 -0
  187. package/dist/implementations/historical/GetConversationSegmentTool.js +220 -0
  188. package/dist/implementations/historical/GetConversationSegmentTool.js.map +1 -0
  189. package/dist/implementations/historical/ListCompactionBoundariesTool.d.ts +36 -0
  190. package/dist/implementations/historical/ListCompactionBoundariesTool.d.ts.map +1 -0
  191. package/dist/implementations/historical/ListCompactionBoundariesTool.js +174 -0
  192. package/dist/implementations/historical/ListCompactionBoundariesTool.js.map +1 -0
  193. package/dist/implementations/historical/ListSessionsTool.d.ts +38 -0
  194. package/dist/implementations/historical/ListSessionsTool.d.ts.map +1 -0
  195. package/dist/implementations/historical/ListSessionsTool.js +140 -0
  196. package/dist/implementations/historical/ListSessionsTool.js.map +1 -0
  197. package/dist/implementations/historical/LoadSessionTool.d.ts +39 -0
  198. package/dist/implementations/historical/LoadSessionTool.d.ts.map +1 -0
  199. package/dist/implementations/historical/LoadSessionTool.js +171 -0
  200. package/dist/implementations/historical/LoadSessionTool.js.map +1 -0
  201. package/dist/implementations/historical/RequestHistoricalContextTool.d.ts +46 -0
  202. package/dist/implementations/historical/RequestHistoricalContextTool.d.ts.map +1 -0
  203. package/dist/implementations/historical/RequestHistoricalContextTool.js +224 -0
  204. package/dist/implementations/historical/RequestHistoricalContextTool.js.map +1 -0
  205. package/dist/implementations/historical/SearchConversationHistoryTool.d.ts +51 -0
  206. package/dist/implementations/historical/SearchConversationHistoryTool.d.ts.map +1 -0
  207. package/dist/implementations/historical/SearchConversationHistoryTool.js +306 -0
  208. package/dist/implementations/historical/SearchConversationHistoryTool.js.map +1 -0
  209. package/dist/implementations/historical/index.d.ts +12 -0
  210. package/dist/implementations/historical/index.d.ts.map +1 -0
  211. package/dist/implementations/historical/index.js +12 -0
  212. package/dist/implementations/historical/index.js.map +1 -0
  213. package/dist/implementations/index.d.ts +16 -0
  214. package/dist/implementations/index.d.ts.map +1 -0
  215. package/dist/implementations/index.js +28 -0
  216. package/dist/implementations/index.js.map +1 -0
  217. package/dist/implementations/mcp/DiscoveredMcpTool.d.ts +58 -0
  218. package/dist/implementations/mcp/DiscoveredMcpTool.d.ts.map +1 -0
  219. package/dist/implementations/mcp/DiscoveredMcpTool.js +269 -0
  220. package/dist/implementations/mcp/DiscoveredMcpTool.js.map +1 -0
  221. package/dist/implementations/mcp/index.d.ts +9 -0
  222. package/dist/implementations/mcp/index.d.ts.map +1 -0
  223. package/dist/implementations/mcp/index.js +8 -0
  224. package/dist/implementations/mcp/index.js.map +1 -0
  225. package/dist/implementations/notebook/NotebookEditTool.d.ts +96 -0
  226. package/dist/implementations/notebook/NotebookEditTool.d.ts.map +1 -0
  227. package/dist/implementations/notebook/NotebookEditTool.js +390 -0
  228. package/dist/implementations/notebook/NotebookEditTool.js.map +1 -0
  229. package/dist/implementations/notebook/index.d.ts +7 -0
  230. package/dist/implementations/notebook/index.d.ts.map +1 -0
  231. package/dist/implementations/notebook/index.js +7 -0
  232. package/dist/implementations/notebook/index.js.map +1 -0
  233. package/dist/implementations/search/GlobTool.d.ts +73 -0
  234. package/dist/implementations/search/GlobTool.d.ts.map +1 -0
  235. package/dist/implementations/search/GlobTool.js +213 -0
  236. package/dist/implementations/search/GlobTool.js.map +1 -0
  237. package/dist/implementations/search/GrepTool.d.ts +102 -0
  238. package/dist/implementations/search/GrepTool.d.ts.map +1 -0
  239. package/dist/implementations/search/GrepTool.js +754 -0
  240. package/dist/implementations/search/GrepTool.js.map +1 -0
  241. package/dist/implementations/search/index.d.ts +6 -0
  242. package/dist/implementations/search/index.d.ts.map +1 -0
  243. package/dist/implementations/search/index.js +6 -0
  244. package/dist/implementations/search/index.js.map +1 -0
  245. package/dist/implementations/tmux/TmuxSessionTool.d.ts +82 -0
  246. package/dist/implementations/tmux/TmuxSessionTool.d.ts.map +1 -0
  247. package/dist/implementations/tmux/TmuxSessionTool.js +371 -0
  248. package/dist/implementations/tmux/TmuxSessionTool.js.map +1 -0
  249. package/dist/implementations/tmux/TmuxViewServer.d.ts +86 -0
  250. package/dist/implementations/tmux/TmuxViewServer.d.ts.map +1 -0
  251. package/dist/implementations/tmux/TmuxViewServer.js +480 -0
  252. package/dist/implementations/tmux/TmuxViewServer.js.map +1 -0
  253. package/dist/implementations/tmux/index.d.ts +6 -0
  254. package/dist/implementations/tmux/index.d.ts.map +1 -0
  255. package/dist/implementations/tmux/index.js +6 -0
  256. package/dist/implementations/tmux/index.js.map +1 -0
  257. package/dist/implementations/ui/AskUserQuestionTool.d.ts +77 -0
  258. package/dist/implementations/ui/AskUserQuestionTool.d.ts.map +1 -0
  259. package/dist/implementations/ui/AskUserQuestionTool.js +241 -0
  260. package/dist/implementations/ui/AskUserQuestionTool.js.map +1 -0
  261. package/dist/implementations/ui/ExitPlanModeTool.d.ts +44 -0
  262. package/dist/implementations/ui/ExitPlanModeTool.d.ts.map +1 -0
  263. package/dist/implementations/ui/ExitPlanModeTool.js +150 -0
  264. package/dist/implementations/ui/ExitPlanModeTool.js.map +1 -0
  265. package/dist/implementations/ui/TodoWriteTool.d.ts +59 -0
  266. package/dist/implementations/ui/TodoWriteTool.d.ts.map +1 -0
  267. package/dist/implementations/ui/TodoWriteTool.js +315 -0
  268. package/dist/implementations/ui/TodoWriteTool.js.map +1 -0
  269. package/dist/implementations/ui/index.d.ts +9 -0
  270. package/dist/implementations/ui/index.d.ts.map +1 -0
  271. package/dist/implementations/ui/index.js +9 -0
  272. package/dist/implementations/ui/index.js.map +1 -0
  273. package/dist/implementations/web/BrowseTool.d.ts +43 -0
  274. package/dist/implementations/web/BrowseTool.d.ts.map +1 -0
  275. package/dist/implementations/web/BrowseTool.js +181 -0
  276. package/dist/implementations/web/BrowseTool.js.map +1 -0
  277. package/dist/implementations/web/SandboxTransferTool.d.ts +30 -0
  278. package/dist/implementations/web/SandboxTransferTool.d.ts.map +1 -0
  279. package/dist/implementations/web/SandboxTransferTool.js +261 -0
  280. package/dist/implementations/web/SandboxTransferTool.js.map +1 -0
  281. package/dist/implementations/web/WebFetchTool.d.ts +93 -0
  282. package/dist/implementations/web/WebFetchTool.d.ts.map +1 -0
  283. package/dist/implementations/web/WebFetchTool.js +484 -0
  284. package/dist/implementations/web/WebFetchTool.js.map +1 -0
  285. package/dist/implementations/web/WebSearchTool.d.ts +53 -0
  286. package/dist/implementations/web/WebSearchTool.d.ts.map +1 -0
  287. package/dist/implementations/web/WebSearchTool.js +227 -0
  288. package/dist/implementations/web/WebSearchTool.js.map +1 -0
  289. package/dist/implementations/web/escalateDirective.d.ts +11 -0
  290. package/dist/implementations/web/escalateDirective.d.ts.map +1 -0
  291. package/dist/implementations/web/escalateDirective.js +20 -0
  292. package/dist/implementations/web/escalateDirective.js.map +1 -0
  293. package/dist/implementations/web/index.d.ts +10 -0
  294. package/dist/implementations/web/index.d.ts.map +1 -0
  295. package/dist/implementations/web/index.js +10 -0
  296. package/dist/implementations/web/index.js.map +1 -0
  297. package/dist/implementations/web/webBackends.d.ts +65 -0
  298. package/dist/implementations/web/webBackends.d.ts.map +1 -0
  299. package/dist/implementations/web/webBackends.js +430 -0
  300. package/dist/implementations/web/webBackends.js.map +1 -0
  301. package/dist/implementations/web/webFetchRequestInit.d.ts +9 -0
  302. package/dist/implementations/web/webFetchRequestInit.d.ts.map +1 -0
  303. package/dist/implementations/web/webFetchRequestInit.js +21 -0
  304. package/dist/implementations/web/webFetchRequestInit.js.map +1 -0
  305. package/dist/index.d.ts +14 -0
  306. package/dist/index.d.ts.map +1 -0
  307. package/dist/index.js +18 -0
  308. package/dist/index.js.map +1 -0
  309. package/dist/utils/ArtifactRegistry.d.ts +138 -0
  310. package/dist/utils/ArtifactRegistry.d.ts.map +1 -0
  311. package/dist/utils/ArtifactRegistry.js +259 -0
  312. package/dist/utils/ArtifactRegistry.js.map +1 -0
  313. package/dist/utils/ChromiumBrowserManager.d.ts +56 -0
  314. package/dist/utils/ChromiumBrowserManager.d.ts.map +1 -0
  315. package/dist/utils/ChromiumBrowserManager.js +243 -0
  316. package/dist/utils/ChromiumBrowserManager.js.map +1 -0
  317. package/dist/utils/FileUtils.d.ts +81 -0
  318. package/dist/utils/FileUtils.d.ts.map +1 -0
  319. package/dist/utils/FileUtils.js +148 -0
  320. package/dist/utils/FileUtils.js.map +1 -0
  321. package/dist/utils/GitPolicy.d.ts +70 -0
  322. package/dist/utils/GitPolicy.d.ts.map +1 -0
  323. package/dist/utils/GitPolicy.js +166 -0
  324. package/dist/utils/GitPolicy.js.map +1 -0
  325. package/dist/utils/GitUtils.d.ts +18 -0
  326. package/dist/utils/GitUtils.d.ts.map +1 -0
  327. package/dist/utils/GitUtils.js +62 -0
  328. package/dist/utils/GitUtils.js.map +1 -0
  329. package/dist/utils/SandboxRegistry.d.ts +110 -0
  330. package/dist/utils/SandboxRegistry.d.ts.map +1 -0
  331. package/dist/utils/SandboxRegistry.js +220 -0
  332. package/dist/utils/SandboxRegistry.js.map +1 -0
  333. package/dist/utils/SchemaValidator.d.ts +21 -0
  334. package/dist/utils/SchemaValidator.d.ts.map +1 -0
  335. package/dist/utils/SchemaValidator.js +67 -0
  336. package/dist/utils/SchemaValidator.js.map +1 -0
  337. package/dist/utils/SessionLock.d.ts +96 -0
  338. package/dist/utils/SessionLock.d.ts.map +1 -0
  339. package/dist/utils/SessionLock.js +276 -0
  340. package/dist/utils/SessionLock.js.map +1 -0
  341. package/dist/utils/SessionPersistence.d.ts +89 -0
  342. package/dist/utils/SessionPersistence.d.ts.map +1 -0
  343. package/dist/utils/SessionPersistence.js +244 -0
  344. package/dist/utils/SessionPersistence.js.map +1 -0
  345. package/dist/utils/TextUtils.d.ts +77 -0
  346. package/dist/utils/TextUtils.d.ts.map +1 -0
  347. package/dist/utils/TextUtils.js +112 -0
  348. package/dist/utils/TextUtils.js.map +1 -0
  349. package/dist/utils/TmuxCapture.d.ts +94 -0
  350. package/dist/utils/TmuxCapture.d.ts.map +1 -0
  351. package/dist/utils/TmuxCapture.js +131 -0
  352. package/dist/utils/TmuxCapture.js.map +1 -0
  353. package/dist/utils/TmuxManager.d.ts +65 -0
  354. package/dist/utils/TmuxManager.d.ts.map +1 -0
  355. package/dist/utils/TmuxManager.js +304 -0
  356. package/dist/utils/TmuxManager.js.map +1 -0
  357. package/dist/utils/autoResearchPlanGate.d.ts +10 -0
  358. package/dist/utils/autoResearchPlanGate.d.ts.map +1 -0
  359. package/dist/utils/autoResearchPlanGate.js +57 -0
  360. package/dist/utils/autoResearchPlanGate.js.map +1 -0
  361. package/dist/utils/index.d.ts +19 -0
  362. package/dist/utils/index.d.ts.map +1 -0
  363. package/dist/utils/index.js +13 -0
  364. package/dist/utils/index.js.map +1 -0
  365. package/package.json +83 -0
@@ -0,0 +1,484 @@
1
+ /**
2
+ * WebFetch Tool Executor
3
+ *
4
+ * Processes content from URLs embedded in a prompt using Gemini API's built-in urlContext tool.
5
+ * Includes fallback to local fetch + html-to-text for private IPs and failed requests.
6
+ *
7
+ * Based on Gemini CLI web-fetch.ts implementation
8
+ * Uses FREE Gemini API built-in tools with automatic fallback
9
+ */
10
+ import { GoogleGenAI } from '@google/genai';
11
+ import { convert } from 'html-to-text';
12
+ import { BaseTool } from '../../base/index.js';
13
+ import { SchemaValidator } from '../../utils/SchemaValidator.js';
14
+ import { resolveProvider, anthropicFetch, xaiFetch, openaiFetch, } from './webBackends.js';
15
+ import { browseEscalationDirective } from './escalateDirective.js';
16
+ import { buildBrowserFetchInit } from './webFetchRequestInit.js';
17
+ // Selected web tools model — read at call time so /set updates apply live.
18
+ // Empty string means "no provider configured" → direct-fetch fallback.
19
+ const getWebToolsModel = () => process.env.WEB_TOOLS_MODEL?.trim() || '';
20
+ // Fetch configuration
21
+ const URL_FETCH_TIMEOUT_MS = 30000; // 30s — gov/county sites are often slow
22
+ const MAX_CONTENT_LENGTH = 100000; // 100,000 characters
23
+ /**
24
+ * WebFetch Tool Executor
25
+ *
26
+ * Features:
27
+ * - Uses Gemini API urlContext built-in tool (FREE)
28
+ * - Automatic grounding metadata with source attribution
29
+ * - UTF-8 byte-accurate citation insertion
30
+ * - Fallback to local fetch + html-to-text for:
31
+ * - Private IPs (localhost, 192.168.x.x, etc.)
32
+ * - Failed URL retrievals
33
+ * - GitHub blob URL → raw URL conversion
34
+ * - HTML to text conversion
35
+ */
36
+ export class WebFetchTool extends BaseTool {
37
+ config;
38
+ genAI = null;
39
+ constructor(config) {
40
+ super('WebFetch', 'WebFetch', `Processes content from URL(s), including local and private network addresses (e.g., localhost), embedded in a prompt.
41
+
42
+ Include up to 20 URLs and instructions directly in the 'prompt' parameter. The tool fetches and processes the content, returning structured information with citations.`, {
43
+ type: 'object',
44
+ properties: {
45
+ prompt: {
46
+ type: 'string',
47
+ 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"). All URLs must be valid and complete, starting with "http://" or "https://".',
48
+ },
49
+ },
50
+ required: ['prompt'],
51
+ });
52
+ this.config = config;
53
+ }
54
+ /**
55
+ * Initialize Gemini API client
56
+ */
57
+ getGeminiClient() {
58
+ if (!this.genAI) {
59
+ const apiKey = process.env.GEMINI_API_KEY || process.env.GOOGLE_API_KEY;
60
+ if (!apiKey) {
61
+ throw new Error('Google API key not found. Please set GEMINI_API_KEY or GOOGLE_API_KEY environment variable.');
62
+ }
63
+ this.genAI = new GoogleGenAI({ apiKey });
64
+ }
65
+ return this.genAI;
66
+ }
67
+ validateToolParams(params) {
68
+ // Models frequently send { url: "...", prompt: "instructions" } instead of
69
+ // embedding the URL in the prompt string. Merge url into prompt so
70
+ // downstream parsing and provider dispatch see it.
71
+ const extra = params.url;
72
+ if (typeof extra === 'string' && extra.trim()) {
73
+ const trimmed = extra.trim();
74
+ if (!params.prompt.includes(trimmed)) {
75
+ params.prompt = `${trimmed} ${params.prompt}`;
76
+ }
77
+ }
78
+ // Schema validation
79
+ const schemaError = SchemaValidator.validate(this.parameterSchema, params);
80
+ if (schemaError) {
81
+ return schemaError;
82
+ }
83
+ // Empty prompt check
84
+ if (!params.prompt || params.prompt.trim() === '') {
85
+ return "The 'prompt' parameter cannot be empty and must contain URL(s) and instructions.";
86
+ }
87
+ // Parse and validate URLs
88
+ const { validUrls, errors } = this.parsePrompt(params.prompt);
89
+ if (errors.length > 0) {
90
+ return `Error(s) in prompt URLs:\n- ${errors.join('\n- ')}`;
91
+ }
92
+ if (validUrls.length === 0) {
93
+ return "The 'prompt' must contain at least one valid URL (starting with http:// or https://).";
94
+ }
95
+ return null;
96
+ }
97
+ getDescription(params) {
98
+ const displayPrompt = params.prompt.length > 100 ? params.prompt.substring(0, 97) + '...' : params.prompt;
99
+ return `Processing URLs and instructions from prompt: "${displayPrompt}"`;
100
+ }
101
+ async execute(params, signal, updateOutput) {
102
+ const startTime = Date.now();
103
+ try {
104
+ // Validate parameters
105
+ const validationError = this.validateToolParams(params);
106
+ if (validationError) {
107
+ return {
108
+ ...this.createErrorResult(validationError),
109
+ metadata: {
110
+ executionTime: Date.now() - startTime,
111
+ },
112
+ };
113
+ }
114
+ // Parse URLs from prompt
115
+ const { validUrls: urls } = this.parsePrompt(params.prompt);
116
+ // Should not happen due to validation, but check anyway
117
+ if (urls.length === 0) {
118
+ return {
119
+ ...this.createErrorResult('No valid URLs found in prompt'),
120
+ metadata: { executionTime: Date.now() - startTime },
121
+ };
122
+ }
123
+ const url = urls[0]; // Primary URL (guaranteed by validation check above)
124
+ // Check for private IP - use direct-fetch fallback immediately (any provider's
125
+ // hosted web tool will refuse to fetch private IPs anyway).
126
+ if (this.isPrivateIp(url)) {
127
+ return await this.executeFallback(params, url, signal, startTime);
128
+ }
129
+ // Provider-native dispatch: Anthropic + XAI go through their server-side
130
+ // web tools. Google Gemini and the no-provider case fall through to the
131
+ // existing urlContext pipeline (with direct-fetch fallback).
132
+ const modelId = getWebToolsModel();
133
+ const provider = resolveProvider(modelId);
134
+ if (provider === 'anthropic' && process.env.ANTHROPIC_API_KEY) {
135
+ try {
136
+ const r = await anthropicFetch(params.prompt, modelId);
137
+ return this.formatBackendResult(r, urls, startTime);
138
+ }
139
+ catch (err) {
140
+ console.warn(`[web-tools] anthropic fetch failed: ${err.message}`);
141
+ return await this.executeFallback(params, url, signal, startTime);
142
+ }
143
+ }
144
+ if (provider === 'xai' && process.env.XAI_API_KEY) {
145
+ try {
146
+ const r = await xaiFetch(params.prompt, modelId);
147
+ return this.formatBackendResult(r, urls, startTime);
148
+ }
149
+ catch (err) {
150
+ console.warn(`[web-tools] xai fetch failed: ${err.message}`);
151
+ return await this.executeFallback(params, url, signal, startTime);
152
+ }
153
+ }
154
+ if (provider === 'openai' && process.env.OPENAI_API_KEY) {
155
+ try {
156
+ const r = await openaiFetch(params.prompt, modelId);
157
+ return this.formatBackendResult(r, urls, startTime);
158
+ }
159
+ catch (err) {
160
+ console.warn(`[web-tools] openai fetch failed: ${err.message}`);
161
+ return await this.executeFallback(params, url, signal, startTime);
162
+ }
163
+ }
164
+ // No Gemini key + no other provider key → skip Gemini SDK call, go to fallback.
165
+ const hasGeminiKey = !!(process.env.GEMINI_API_KEY || process.env.GOOGLE_API_KEY);
166
+ if (!hasGeminiKey) {
167
+ return await this.executeFallback(params, url, signal, startTime);
168
+ }
169
+ // Try primary execution with urlContext (Gemini)
170
+ return await this.executePrimary(params, urls, signal, startTime);
171
+ }
172
+ catch (error) {
173
+ // Check for abort
174
+ if (signal.aborted) {
175
+ return {
176
+ ...this.createErrorResult('Fetch operation was cancelled'),
177
+ metadata: {
178
+ executionTime: Date.now() - startTime,
179
+ },
180
+ };
181
+ }
182
+ // Handle API errors - try fallback
183
+ const { validUrls: urls } = this.parsePrompt(params.prompt);
184
+ if (urls.length > 0 && urls[0]) {
185
+ try {
186
+ return await this.executeFallback(params, urls[0], signal, startTime);
187
+ }
188
+ catch (fallbackError) {
189
+ const errorMessage = fallbackError.message || String(fallbackError);
190
+ return {
191
+ ...this.createErrorResult(`Error processing web content: ${errorMessage}\n\n` +
192
+ browseEscalationDirective(urls[0])),
193
+ metadata: {
194
+ executionTime: Date.now() - startTime,
195
+ error: errorMessage,
196
+ },
197
+ };
198
+ }
199
+ }
200
+ const errorMessage = error.message || String(error);
201
+ const { validUrls: failedUrls } = this.parsePrompt(params.prompt);
202
+ return {
203
+ ...this.createErrorResult(`Error processing web content: ${errorMessage}\n\n` +
204
+ browseEscalationDirective(failedUrls[0])),
205
+ metadata: {
206
+ executionTime: Date.now() - startTime,
207
+ error: errorMessage,
208
+ },
209
+ };
210
+ }
211
+ }
212
+ /**
213
+ * Format a provider-native backend result into the WebFetch tool result shape.
214
+ */
215
+ formatBackendResult(r, urls, startTime) {
216
+ let body = r.text;
217
+ if (r.sources.length > 0) {
218
+ const list = r.sources
219
+ .map((s, i) => `[${i + 1}] ${s.title ?? 'Untitled'} (${s.url})`)
220
+ .join('\n');
221
+ body += `\n\nSources:\n${list}`;
222
+ }
223
+ return {
224
+ ...this.createSuccessResult(body),
225
+ sources: r.sources.map((s) => ({ web: { title: s.title, uri: s.url } })),
226
+ metadata: {
227
+ executionTime: Date.now() - startTime,
228
+ urls,
229
+ sourceCount: r.sources.length,
230
+ method: 'primary',
231
+ backend: r.backend,
232
+ },
233
+ };
234
+ }
235
+ /**
236
+ * Primary execution using Gemini API urlContext
237
+ */
238
+ async executePrimary(params, urls, signal, startTime) {
239
+ // Get Gemini client
240
+ const genAI = this.getGeminiClient();
241
+ // Make request with urlContext tool enabled
242
+ const result = await genAI.models.generateContent({
243
+ model: getWebToolsModel(),
244
+ contents: params.prompt,
245
+ config: {
246
+ tools: [{ urlContext: {} }],
247
+ },
248
+ });
249
+ // Extract response and metadata
250
+ let responseText = result.text || '';
251
+ const candidate = result.candidates?.[0];
252
+ const urlContextMeta = candidate?.urlContextMetadata;
253
+ const groundingMetadata = candidate?.groundingMetadata;
254
+ const sources = groundingMetadata?.groundingChunks;
255
+ const groundingSupports = groundingMetadata?.groundingSupports;
256
+ // Check for processing errors
257
+ let processingError = false;
258
+ if (urlContextMeta?.urlMetadata && urlContextMeta.urlMetadata.length > 0) {
259
+ const allStatuses = urlContextMeta.urlMetadata.map((m) => m.urlRetrievalStatus);
260
+ if (allStatuses.every((s) => s !== 'URL_RETRIEVAL_STATUS_SUCCESS')) {
261
+ processingError = true;
262
+ }
263
+ }
264
+ else if (!responseText.trim() && !sources?.length) {
265
+ processingError = true;
266
+ }
267
+ if (!processingError && !responseText.trim() && (!sources || sources.length === 0)) {
268
+ processingError = true;
269
+ }
270
+ // Fallback if primary failed
271
+ if (processingError) {
272
+ return await this.executeFallback(params, urls[0], signal, startTime);
273
+ }
274
+ // Insert citations (UTF-8 byte-accurate)
275
+ if (groundingSupports && groundingSupports.length > 0) {
276
+ responseText = this.insertCitationsUTF8(responseText, groundingSupports);
277
+ }
278
+ // Append source list
279
+ if (sources && sources.length > 0) {
280
+ const sourceList = sources
281
+ .map((source, index) => {
282
+ const title = source.web?.title || 'Untitled';
283
+ const uri = source.web?.uri || 'Unknown URI';
284
+ return `[${index + 1}] ${title} (${uri})`;
285
+ })
286
+ .join('\n');
287
+ responseText += `\n\nSources:\n${sourceList}`;
288
+ }
289
+ return {
290
+ ...this.createSuccessResult(responseText),
291
+ sources,
292
+ metadata: {
293
+ executionTime: Date.now() - startTime,
294
+ urls,
295
+ sourceCount: sources?.length || 0,
296
+ method: 'primary',
297
+ },
298
+ };
299
+ }
300
+ /**
301
+ * Fallback execution using local fetch + html-to-text
302
+ */
303
+ async executeFallback(params, url, signal, startTime) {
304
+ // Convert GitHub blob URL to raw URL
305
+ if (url.includes('github.com') && url.includes('/blob/')) {
306
+ url = url.replace('github.com', 'raw.githubusercontent.com').replace('/blob/', '/');
307
+ }
308
+ // Fetch with timeout
309
+ const controller = new AbortController();
310
+ const timeout = setTimeout(() => controller.abort(), URL_FETCH_TIMEOUT_MS);
311
+ try {
312
+ const response = await fetch(url, buildBrowserFetchInit(controller.signal));
313
+ clearTimeout(timeout);
314
+ if (!response.ok) {
315
+ throw new Error(`Request failed with status code ${response.status} ${response.statusText}`);
316
+ }
317
+ const rawContent = await response.text();
318
+ const contentType = response.headers.get('content-type') || '';
319
+ let textContent;
320
+ // Use html-to-text for HTML content
321
+ if (contentType.toLowerCase().includes('text/html') || contentType === '') {
322
+ textContent = convert(rawContent, {
323
+ wordwrap: false,
324
+ selectors: [
325
+ { selector: 'a', options: { ignoreHref: true } },
326
+ { selector: 'img', format: 'skip' },
327
+ ],
328
+ });
329
+ }
330
+ else {
331
+ // For other content types (text/plain, JSON, etc.), use raw text
332
+ textContent = rawContent;
333
+ }
334
+ // Truncate to max length
335
+ textContent = textContent.substring(0, MAX_CONTENT_LENGTH);
336
+ // Send to Gemini Flash for processing
337
+ const genAI = this.getGeminiClient();
338
+ const fallbackPrompt = `The user requested the following: "${params.prompt}".
339
+
340
+ 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.
341
+
342
+ ---
343
+ ${textContent}
344
+ ---
345
+ `;
346
+ const result = await genAI.models.generateContent({
347
+ model: getWebToolsModel(),
348
+ contents: fallbackPrompt,
349
+ });
350
+ const resultText = result.text || '';
351
+ return {
352
+ ...this.createSuccessResult(resultText),
353
+ metadata: {
354
+ executionTime: Date.now() - startTime,
355
+ url,
356
+ fallback: true,
357
+ method: 'fallback',
358
+ },
359
+ };
360
+ }
361
+ catch (error) {
362
+ clearTimeout(timeout);
363
+ throw new Error(`Error during fallback fetch for ${url}: ${error.message}`);
364
+ }
365
+ }
366
+ /**
367
+ * Parse URLs from prompt text
368
+ */
369
+ parsePrompt(text) {
370
+ const tokens = text.split(/\s+/);
371
+ const validUrls = [];
372
+ const errors = [];
373
+ for (const token of tokens) {
374
+ if (!token)
375
+ continue;
376
+ // Heuristic: check for :// in token
377
+ if (token.includes('://')) {
378
+ try {
379
+ const url = new URL(token);
380
+ // Allow only http/https
381
+ if (['http:', 'https:'].includes(url.protocol)) {
382
+ validUrls.push(url.href);
383
+ }
384
+ else {
385
+ errors.push(`Unsupported protocol in URL: "${token}". Only http and https are supported.`);
386
+ }
387
+ }
388
+ catch {
389
+ errors.push(`Malformed URL detected: "${token}".`);
390
+ }
391
+ }
392
+ }
393
+ return { validUrls, errors };
394
+ }
395
+ /**
396
+ * Check if URL points to a private IP address
397
+ */
398
+ isPrivateIp(url) {
399
+ try {
400
+ const parsedUrl = new URL(url);
401
+ const hostname = parsedUrl.hostname;
402
+ // Check for localhost
403
+ if (hostname === 'localhost' || hostname === '127.0.0.1' || hostname === '::1') {
404
+ return true;
405
+ }
406
+ // Check for private IP ranges
407
+ const ipv4Regex = /^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/;
408
+ const match = hostname.match(ipv4Regex);
409
+ if (match) {
410
+ const parts = match.slice(1).map(Number); // Extract octets
411
+ const [a, b, c, d] = parts;
412
+ // 10.0.0.0/8
413
+ if (a === 10)
414
+ return true;
415
+ // 172.16.0.0/12
416
+ if (a === 172 && b !== undefined && b >= 16 && b <= 31)
417
+ return true;
418
+ // 192.168.0.0/16
419
+ if (a === 192 && b === 168)
420
+ return true;
421
+ // 169.254.0.0/16 (link-local)
422
+ if (a === 169 && b === 254)
423
+ return true;
424
+ }
425
+ return false;
426
+ }
427
+ catch {
428
+ return false;
429
+ }
430
+ }
431
+ /**
432
+ * Insert citations at UTF-8 byte-accurate positions
433
+ *
434
+ * Gemini API returns byte positions (not character positions) for grounding metadata.
435
+ * This method handles multi-byte UTF-8 characters correctly.
436
+ *
437
+ * @param responseText The response text to insert citations into
438
+ * @param groundingSupports Array of grounding support items with byte positions
439
+ * @returns Text with citations inserted
440
+ */
441
+ insertCitationsUTF8(responseText, groundingSupports) {
442
+ if (!groundingSupports || groundingSupports.length === 0) {
443
+ return responseText;
444
+ }
445
+ // Collect insertion points
446
+ const insertions = [];
447
+ for (const support of groundingSupports) {
448
+ if (support.segment && support.groundingChunkIndices) {
449
+ const citationMarker = support.groundingChunkIndices
450
+ .map((chunkIndex) => `[${chunkIndex + 1}]`)
451
+ .join('');
452
+ insertions.push({
453
+ index: support.segment.endIndex,
454
+ marker: citationMarker,
455
+ });
456
+ }
457
+ }
458
+ // Sort in descending order to avoid index shifting
459
+ insertions.sort((a, b) => b.index - a.index);
460
+ // Use TextEncoder/TextDecoder for UTF-8 byte manipulation
461
+ const encoder = new TextEncoder();
462
+ const responseBytes = encoder.encode(responseText);
463
+ const parts = [];
464
+ let lastIndex = responseBytes.length;
465
+ for (const ins of insertions) {
466
+ const pos = Math.min(ins.index, lastIndex);
467
+ parts.unshift(responseBytes.subarray(pos, lastIndex)); // Content after marker
468
+ parts.unshift(encoder.encode(ins.marker)); // Marker
469
+ lastIndex = pos;
470
+ }
471
+ parts.unshift(responseBytes.subarray(0, lastIndex)); // Content before first marker
472
+ // Concatenate byte arrays
473
+ const totalLength = parts.reduce((sum, part) => sum + part.length, 0);
474
+ const finalBytes = new Uint8Array(totalLength);
475
+ let offset = 0;
476
+ for (const part of parts) {
477
+ finalBytes.set(part, offset);
478
+ offset += part.length;
479
+ }
480
+ // Decode back to string
481
+ return new TextDecoder().decode(finalBytes);
482
+ }
483
+ }
484
+ //# sourceMappingURL=WebFetchTool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebFetchTool.js","sourceRoot":"","sources":["../../../src/implementations/web/WebFetchTool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * WebSearch Tool Executor — multi-provider.
3
+ *
4
+ * Backends (selected by WEB_TOOLS_MODEL env var):
5
+ * - Anthropic Claude → web_search_20250305 server tool
6
+ * - XAI Grok → Responses API web_search server tool
7
+ * - Google Gemini → googleSearch grounding (UTF-8 byte-accurate citations)
8
+ * - DuckDuckGo HTML → fallback when no provider key is available
9
+ *
10
+ * nexus-browser is intentionally not a backend here. It is exposed as a
11
+ * gated MCP server and reached only via the MCP transport.
12
+ */
13
+ import { BaseTool, type ToolResult } from '../../base/index.js';
14
+ import type { ExecutorConfig } from '../../base/ToolRegistry.js';
15
+ interface GroundingChunkItem {
16
+ web?: {
17
+ uri?: string;
18
+ title?: string;
19
+ };
20
+ }
21
+ export interface WebSearchToolParams {
22
+ /** The search query to find information on the web */
23
+ query: string;
24
+ /**
25
+ * 'fast' (default) → provider-native search via runWebSearch.
26
+ * 'interactive' → dispatch a nexus-browser subagent to search and interact
27
+ * with results pages. Useful when provider-native search misses JS-rendered
28
+ * SPAs or behind-login content.
29
+ */
30
+ mode?: 'fast' | 'interactive';
31
+ }
32
+ export interface WebSearchToolResult extends ToolResult {
33
+ sources?: GroundingChunkItem[];
34
+ }
35
+ export declare class WebSearchTool extends BaseTool<WebSearchToolParams, WebSearchToolResult> {
36
+ private config;
37
+ private genAI;
38
+ constructor(config: ExecutorConfig);
39
+ private getGeminiClient;
40
+ validateToolParams(params: WebSearchToolParams): string | null;
41
+ getDescription(params: WebSearchToolParams): string;
42
+ execute(params: WebSearchToolParams, signal: AbortSignal): Promise<WebSearchToolResult>;
43
+ private formatBackendOutput;
44
+ private runGeminiSearch;
45
+ /**
46
+ * Insert citations at UTF-8 byte-accurate positions. Gemini grounding
47
+ * metadata uses byte offsets (not character indices), so multi-byte UTF-8
48
+ * characters must be handled via TextEncoder/TextDecoder.
49
+ */
50
+ private insertCitationsUTF8;
51
+ }
52
+ export {};
53
+ //# sourceMappingURL=WebSearchTool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebSearchTool.d.ts","sourceRoot":"","sources":["../../../src/implementations/web/WebSearchTool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,EAAE,QAAQ,EAAE,KAAK,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEhE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAQjE,UAAU,kBAAkB;IAC1B,GAAG,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACxC;AAaD,MAAM,WAAW,mBAAmB;IAClC,sDAAsD;IACtD,KAAK,EAAE,MAAM,CAAC;IACd;;;;;OAKG;IACH,IAAI,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC;CAC/B;AAED,MAAM,WAAW,mBAAoB,SAAQ,UAAU;IACrD,OAAO,CAAC,EAAE,kBAAkB,EAAE,CAAC;CAChC;AAED,qBAAa,aAAc,SAAQ,QAAQ,CAAC,mBAAmB,EAAE,mBAAmB,CAAC;IAGvE,OAAO,CAAC,MAAM;IAF1B,OAAO,CAAC,KAAK,CAA4B;gBAErB,MAAM,EAAE,cAAc;IAkC1C,OAAO,CAAC,eAAe;IAavB,kBAAkB,CAAC,MAAM,EAAE,mBAAmB,GAAG,MAAM,GAAG,IAAI;IAS9D,cAAc,CAAC,MAAM,EAAE,mBAAmB,GAAG,MAAM;IAI7C,OAAO,CACX,MAAM,EAAE,mBAAmB,EAC3B,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,mBAAmB,CAAC;IAwE/B,OAAO,CAAC,mBAAmB;YAWb,eAAe;IAoE7B;;;;OAIG;IACH,OAAO,CAAC,mBAAmB;CAuC5B"}