orquesta-cli 0.1.13 → 0.1.14

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 (539) hide show
  1. package/README.md +30 -4
  2. package/dist/cli.js +65 -4
  3. package/dist/core/config/config-manager.d.ts +13 -1
  4. package/dist/core/config/config-manager.js +83 -0
  5. package/dist/core/slash-command-handler.d.ts +1 -0
  6. package/dist/core/slash-command-handler.js +129 -0
  7. package/dist/orquesta/config-sync.d.ts +73 -0
  8. package/dist/orquesta/config-sync.js +230 -0
  9. package/dist/orquesta/prompt-reporter.d.ts +16 -0
  10. package/dist/orquesta/prompt-reporter.js +85 -0
  11. package/dist/setup/first-run-setup.d.ts +15 -0
  12. package/dist/setup/first-run-setup.js +238 -0
  13. package/dist/types/index.d.ts +11 -2
  14. package/dist/ui/TodoPanel.d.ts +1 -0
  15. package/dist/ui/TodoPanel.js +6 -1
  16. package/dist/ui/components/LLMSetupWizard.js +373 -7
  17. package/dist/ui/components/Logo.d.ts +2 -0
  18. package/dist/ui/components/Logo.js +10 -3
  19. package/dist/ui/components/OpenRouterModelBrowser.d.ts +13 -0
  20. package/dist/ui/components/OpenRouterModelBrowser.js +221 -0
  21. package/dist/ui/components/PlanExecuteApp.js +30 -4
  22. package/dist/ui/components/ProjectSelector.d.ts +8 -0
  23. package/dist/ui/components/ProjectSelector.js +119 -0
  24. package/dist/ui/components/StatusBar.d.ts +2 -0
  25. package/dist/ui/components/StatusBar.js +6 -1
  26. package/dist/ui/hooks/slashCommandProcessor.js +8 -4
  27. package/package.json +11 -5
  28. package/.eslintrc.json +0 -26
  29. package/.prettierrc.json +0 -10
  30. package/CLAUDE.md +0 -199
  31. package/SECURITY.md +0 -290
  32. package/TEST_LOCAL.md +0 -245
  33. package/dist/agents/base/base-agent.d.ts.map +0 -1
  34. package/dist/agents/base/base-agent.js.map +0 -1
  35. package/dist/agents/docs-search/index.d.ts.map +0 -1
  36. package/dist/agents/docs-search/index.js.map +0 -1
  37. package/dist/agents/index.d.ts.map +0 -1
  38. package/dist/agents/index.js.map +0 -1
  39. package/dist/agents/planner/index.d.ts.map +0 -1
  40. package/dist/agents/planner/index.js.map +0 -1
  41. package/dist/cli.d.ts.map +0 -1
  42. package/dist/cli.js.map +0 -1
  43. package/dist/constants.d.ts.map +0 -1
  44. package/dist/constants.js.map +0 -1
  45. package/dist/core/compact/compact-manager.d.ts.map +0 -1
  46. package/dist/core/compact/compact-manager.js.map +0 -1
  47. package/dist/core/compact/compact-prompts.d.ts.map +0 -1
  48. package/dist/core/compact/compact-prompts.js.map +0 -1
  49. package/dist/core/compact/context-tracker.d.ts.map +0 -1
  50. package/dist/core/compact/context-tracker.js.map +0 -1
  51. package/dist/core/compact/index.d.ts.map +0 -1
  52. package/dist/core/compact/index.js.map +0 -1
  53. package/dist/core/config/config-manager.d.ts.map +0 -1
  54. package/dist/core/config/config-manager.js.map +0 -1
  55. package/dist/core/config/index.d.ts.map +0 -1
  56. package/dist/core/config/index.js.map +0 -1
  57. package/dist/core/docs-manager.d.ts.map +0 -1
  58. package/dist/core/docs-manager.js.map +0 -1
  59. package/dist/core/git-auto-updater.d.ts.map +0 -1
  60. package/dist/core/git-auto-updater.js.map +0 -1
  61. package/dist/core/llm/index.d.ts.map +0 -1
  62. package/dist/core/llm/index.js.map +0 -1
  63. package/dist/core/llm/llm-client.d.ts.map +0 -1
  64. package/dist/core/llm/llm-client.js.map +0 -1
  65. package/dist/core/session/index.d.ts.map +0 -1
  66. package/dist/core/session/index.js.map +0 -1
  67. package/dist/core/session/session-manager.d.ts.map +0 -1
  68. package/dist/core/session/session-manager.js.map +0 -1
  69. package/dist/core/slash-command-handler.d.ts.map +0 -1
  70. package/dist/core/slash-command-handler.js.map +0 -1
  71. package/dist/core/usage-tracker.d.ts.map +0 -1
  72. package/dist/core/usage-tracker.js.map +0 -1
  73. package/dist/errors/base.d.ts.map +0 -1
  74. package/dist/errors/base.js.map +0 -1
  75. package/dist/errors/file.d.ts.map +0 -1
  76. package/dist/errors/file.js.map +0 -1
  77. package/dist/errors/index.d.ts.map +0 -1
  78. package/dist/errors/index.js.map +0 -1
  79. package/dist/errors/llm.d.ts.map +0 -1
  80. package/dist/errors/llm.js.map +0 -1
  81. package/dist/errors/network.d.ts.map +0 -1
  82. package/dist/errors/network.js.map +0 -1
  83. package/dist/errors/validation.d.ts.map +0 -1
  84. package/dist/errors/validation.js.map +0 -1
  85. package/dist/eval/eval-runner.d.ts.map +0 -1
  86. package/dist/eval/eval-runner.js.map +0 -1
  87. package/dist/eval/index.d.ts.map +0 -1
  88. package/dist/eval/index.js.map +0 -1
  89. package/dist/eval/types.d.ts.map +0 -1
  90. package/dist/eval/types.js.map +0 -1
  91. package/dist/index.d.ts.map +0 -1
  92. package/dist/index.js.map +0 -1
  93. package/dist/orchestration/index.d.ts.map +0 -1
  94. package/dist/orchestration/index.js.map +0 -1
  95. package/dist/orchestration/plan-executor.d.ts.map +0 -1
  96. package/dist/orchestration/plan-executor.js.map +0 -1
  97. package/dist/orchestration/types.d.ts.map +0 -1
  98. package/dist/orchestration/types.js.map +0 -1
  99. package/dist/orchestration/utils.d.ts.map +0 -1
  100. package/dist/orchestration/utils.js.map +0 -1
  101. package/dist/orquesta/connection.d.ts.map +0 -1
  102. package/dist/orquesta/connection.js.map +0 -1
  103. package/dist/prompts/agents/docs-search-decision.d.ts.map +0 -1
  104. package/dist/prompts/agents/docs-search-decision.js.map +0 -1
  105. package/dist/prompts/agents/docs-search.d.ts.map +0 -1
  106. package/dist/prompts/agents/docs-search.js.map +0 -1
  107. package/dist/prompts/agents/planning.d.ts.map +0 -1
  108. package/dist/prompts/agents/planning.js.map +0 -1
  109. package/dist/prompts/index.d.ts.map +0 -1
  110. package/dist/prompts/index.js.map +0 -1
  111. package/dist/prompts/shared/codebase-rules.d.ts.map +0 -1
  112. package/dist/prompts/shared/codebase-rules.js.map +0 -1
  113. package/dist/prompts/shared/git-rules.d.ts.map +0 -1
  114. package/dist/prompts/shared/git-rules.js.map +0 -1
  115. package/dist/prompts/shared/language-rules.d.ts.map +0 -1
  116. package/dist/prompts/shared/language-rules.js.map +0 -1
  117. package/dist/prompts/shared/tool-usage.d.ts.map +0 -1
  118. package/dist/prompts/shared/tool-usage.js.map +0 -1
  119. package/dist/prompts/system/compact.d.ts.map +0 -1
  120. package/dist/prompts/system/compact.js.map +0 -1
  121. package/dist/prompts/system/plan-execute.d.ts.map +0 -1
  122. package/dist/prompts/system/plan-execute.js.map +0 -1
  123. package/dist/tools/browser/browser-client.d.ts.map +0 -1
  124. package/dist/tools/browser/browser-client.js.map +0 -1
  125. package/dist/tools/browser/browser-tools.d.ts.map +0 -1
  126. package/dist/tools/browser/browser-tools.js.map +0 -1
  127. package/dist/tools/browser/index.d.ts.map +0 -1
  128. package/dist/tools/browser/index.js.map +0 -1
  129. package/dist/tools/index.d.ts.map +0 -1
  130. package/dist/tools/index.js.map +0 -1
  131. package/dist/tools/llm/agents/docs-search-tools.d.ts.map +0 -1
  132. package/dist/tools/llm/agents/docs-search-tools.js.map +0 -1
  133. package/dist/tools/llm/agents/index.d.ts.map +0 -1
  134. package/dist/tools/llm/agents/index.js.map +0 -1
  135. package/dist/tools/llm/index.d.ts.map +0 -1
  136. package/dist/tools/llm/index.js.map +0 -1
  137. package/dist/tools/llm/simple/ask-user-tool.d.ts.map +0 -1
  138. package/dist/tools/llm/simple/ask-user-tool.js.map +0 -1
  139. package/dist/tools/llm/simple/background-bash-tool.d.ts.map +0 -1
  140. package/dist/tools/llm/simple/background-bash-tool.js.map +0 -1
  141. package/dist/tools/llm/simple/background-powershell-tool.d.ts.map +0 -1
  142. package/dist/tools/llm/simple/background-powershell-tool.js.map +0 -1
  143. package/dist/tools/llm/simple/bash-tool.d.ts.map +0 -1
  144. package/dist/tools/llm/simple/bash-tool.js.map +0 -1
  145. package/dist/tools/llm/simple/docs-search-agent-tool.d.ts.map +0 -1
  146. package/dist/tools/llm/simple/docs-search-agent-tool.js.map +0 -1
  147. package/dist/tools/llm/simple/file-tools.d.ts.map +0 -1
  148. package/dist/tools/llm/simple/file-tools.js.map +0 -1
  149. package/dist/tools/llm/simple/final-response-tool.d.ts.map +0 -1
  150. package/dist/tools/llm/simple/final-response-tool.js.map +0 -1
  151. package/dist/tools/llm/simple/index.d.ts.map +0 -1
  152. package/dist/tools/llm/simple/index.js.map +0 -1
  153. package/dist/tools/llm/simple/planning-tools.d.ts.map +0 -1
  154. package/dist/tools/llm/simple/planning-tools.js.map +0 -1
  155. package/dist/tools/llm/simple/powershell-tool.d.ts.map +0 -1
  156. package/dist/tools/llm/simple/powershell-tool.js.map +0 -1
  157. package/dist/tools/llm/simple/simple-tool-executor.d.ts.map +0 -1
  158. package/dist/tools/llm/simple/simple-tool-executor.js.map +0 -1
  159. package/dist/tools/llm/simple/todo-tools.d.ts.map +0 -1
  160. package/dist/tools/llm/simple/todo-tools.js.map +0 -1
  161. package/dist/tools/llm/simple/user-interaction-tools.d.ts.map +0 -1
  162. package/dist/tools/llm/simple/user-interaction-tools.js.map +0 -1
  163. package/dist/tools/office/common/constants.d.ts.map +0 -1
  164. package/dist/tools/office/common/constants.js.map +0 -1
  165. package/dist/tools/office/common/index.d.ts.map +0 -1
  166. package/dist/tools/office/common/index.js.map +0 -1
  167. package/dist/tools/office/common/types.d.ts.map +0 -1
  168. package/dist/tools/office/common/types.js.map +0 -1
  169. package/dist/tools/office/common/utils.d.ts.map +0 -1
  170. package/dist/tools/office/common/utils.js.map +0 -1
  171. package/dist/tools/office/excel-client.d.ts.map +0 -1
  172. package/dist/tools/office/excel-client.js.map +0 -1
  173. package/dist/tools/office/excel-tools/cells.d.ts.map +0 -1
  174. package/dist/tools/office/excel-tools/cells.js.map +0 -1
  175. package/dist/tools/office/excel-tools/charts.d.ts.map +0 -1
  176. package/dist/tools/office/excel-tools/charts.js.map +0 -1
  177. package/dist/tools/office/excel-tools/comments.d.ts.map +0 -1
  178. package/dist/tools/office/excel-tools/comments.js.map +0 -1
  179. package/dist/tools/office/excel-tools/data-ops.d.ts.map +0 -1
  180. package/dist/tools/office/excel-tools/data-ops.js.map +0 -1
  181. package/dist/tools/office/excel-tools/export.d.ts.map +0 -1
  182. package/dist/tools/office/excel-tools/export.js.map +0 -1
  183. package/dist/tools/office/excel-tools/formatting.d.ts.map +0 -1
  184. package/dist/tools/office/excel-tools/formatting.js.map +0 -1
  185. package/dist/tools/office/excel-tools/index.d.ts.map +0 -1
  186. package/dist/tools/office/excel-tools/index.js.map +0 -1
  187. package/dist/tools/office/excel-tools/launch.d.ts.map +0 -1
  188. package/dist/tools/office/excel-tools/launch.js.map +0 -1
  189. package/dist/tools/office/excel-tools/media.d.ts.map +0 -1
  190. package/dist/tools/office/excel-tools/media.js.map +0 -1
  191. package/dist/tools/office/excel-tools/named-ranges.d.ts.map +0 -1
  192. package/dist/tools/office/excel-tools/named-ranges.js.map +0 -1
  193. package/dist/tools/office/excel-tools/protection.d.ts.map +0 -1
  194. package/dist/tools/office/excel-tools/protection.js.map +0 -1
  195. package/dist/tools/office/excel-tools/rows-columns.d.ts.map +0 -1
  196. package/dist/tools/office/excel-tools/rows-columns.js.map +0 -1
  197. package/dist/tools/office/excel-tools/sheets.d.ts.map +0 -1
  198. package/dist/tools/office/excel-tools/sheets.js.map +0 -1
  199. package/dist/tools/office/excel-tools/validation.d.ts.map +0 -1
  200. package/dist/tools/office/excel-tools/validation.js.map +0 -1
  201. package/dist/tools/office/excel-tools.d.ts.map +0 -1
  202. package/dist/tools/office/excel-tools.js.map +0 -1
  203. package/dist/tools/office/index.d.ts.map +0 -1
  204. package/dist/tools/office/index.js.map +0 -1
  205. package/dist/tools/office/office-client-base.d.ts.map +0 -1
  206. package/dist/tools/office/office-client-base.js.map +0 -1
  207. package/dist/tools/office/office-client.d.ts.map +0 -1
  208. package/dist/tools/office/office-client.js.map +0 -1
  209. package/dist/tools/office/powerpoint-client.d.ts.map +0 -1
  210. package/dist/tools/office/powerpoint-client.js.map +0 -1
  211. package/dist/tools/office/powerpoint-tools/effects.d.ts.map +0 -1
  212. package/dist/tools/office/powerpoint-tools/effects.js.map +0 -1
  213. package/dist/tools/office/powerpoint-tools/export.d.ts.map +0 -1
  214. package/dist/tools/office/powerpoint-tools/export.js.map +0 -1
  215. package/dist/tools/office/powerpoint-tools/index.d.ts.map +0 -1
  216. package/dist/tools/office/powerpoint-tools/index.js.map +0 -1
  217. package/dist/tools/office/powerpoint-tools/launch.d.ts.map +0 -1
  218. package/dist/tools/office/powerpoint-tools/launch.js.map +0 -1
  219. package/dist/tools/office/powerpoint-tools/media.d.ts.map +0 -1
  220. package/dist/tools/office/powerpoint-tools/media.js.map +0 -1
  221. package/dist/tools/office/powerpoint-tools/notes.d.ts.map +0 -1
  222. package/dist/tools/office/powerpoint-tools/notes.js.map +0 -1
  223. package/dist/tools/office/powerpoint-tools/sections.d.ts.map +0 -1
  224. package/dist/tools/office/powerpoint-tools/sections.js.map +0 -1
  225. package/dist/tools/office/powerpoint-tools/shapes.d.ts.map +0 -1
  226. package/dist/tools/office/powerpoint-tools/shapes.js.map +0 -1
  227. package/dist/tools/office/powerpoint-tools/slides.d.ts.map +0 -1
  228. package/dist/tools/office/powerpoint-tools/slides.js.map +0 -1
  229. package/dist/tools/office/powerpoint-tools/tables.d.ts.map +0 -1
  230. package/dist/tools/office/powerpoint-tools/tables.js.map +0 -1
  231. package/dist/tools/office/powerpoint-tools/text.d.ts.map +0 -1
  232. package/dist/tools/office/powerpoint-tools/text.js.map +0 -1
  233. package/dist/tools/office/powerpoint-tools.d.ts.map +0 -1
  234. package/dist/tools/office/powerpoint-tools.js.map +0 -1
  235. package/dist/tools/office/word-client.d.ts.map +0 -1
  236. package/dist/tools/office/word-client.js.map +0 -1
  237. package/dist/tools/office/word-tools/bookmarks.d.ts.map +0 -1
  238. package/dist/tools/office/word-tools/bookmarks.js.map +0 -1
  239. package/dist/tools/office/word-tools/comments.d.ts.map +0 -1
  240. package/dist/tools/office/word-tools/comments.js.map +0 -1
  241. package/dist/tools/office/word-tools/content.d.ts.map +0 -1
  242. package/dist/tools/office/word-tools/content.js.map +0 -1
  243. package/dist/tools/office/word-tools/export.d.ts.map +0 -1
  244. package/dist/tools/office/word-tools/export.js.map +0 -1
  245. package/dist/tools/office/word-tools/formatting.d.ts.map +0 -1
  246. package/dist/tools/office/word-tools/formatting.js.map +0 -1
  247. package/dist/tools/office/word-tools/headers-footers.d.ts.map +0 -1
  248. package/dist/tools/office/word-tools/headers-footers.js.map +0 -1
  249. package/dist/tools/office/word-tools/index.d.ts.map +0 -1
  250. package/dist/tools/office/word-tools/index.js.map +0 -1
  251. package/dist/tools/office/word-tools/launch.d.ts.map +0 -1
  252. package/dist/tools/office/word-tools/launch.js.map +0 -1
  253. package/dist/tools/office/word-tools/lists.d.ts.map +0 -1
  254. package/dist/tools/office/word-tools/lists.js.map +0 -1
  255. package/dist/tools/office/word-tools/navigation.d.ts.map +0 -1
  256. package/dist/tools/office/word-tools/navigation.js.map +0 -1
  257. package/dist/tools/office/word-tools/page-setup.d.ts.map +0 -1
  258. package/dist/tools/office/word-tools/page-setup.js.map +0 -1
  259. package/dist/tools/office/word-tools/tables.d.ts.map +0 -1
  260. package/dist/tools/office/word-tools/tables.js.map +0 -1
  261. package/dist/tools/office/word-tools/text.d.ts.map +0 -1
  262. package/dist/tools/office/word-tools/text.js.map +0 -1
  263. package/dist/tools/office/word-tools/undo-redo.d.ts.map +0 -1
  264. package/dist/tools/office/word-tools/undo-redo.js.map +0 -1
  265. package/dist/tools/office/word-tools/watermarks.d.ts.map +0 -1
  266. package/dist/tools/office/word-tools/watermarks.js.map +0 -1
  267. package/dist/tools/office/word-tools.d.ts.map +0 -1
  268. package/dist/tools/office/word-tools.js.map +0 -1
  269. package/dist/tools/registry.d.ts.map +0 -1
  270. package/dist/tools/registry.js.map +0 -1
  271. package/dist/tools/types.d.ts.map +0 -1
  272. package/dist/tools/types.js.map +0 -1
  273. package/dist/types/index.d.ts.map +0 -1
  274. package/dist/types/index.js.map +0 -1
  275. package/dist/ui/PlanExecuteView.d.ts.map +0 -1
  276. package/dist/ui/PlanExecuteView.js.map +0 -1
  277. package/dist/ui/TodoPanel.d.ts.map +0 -1
  278. package/dist/ui/TodoPanel.js.map +0 -1
  279. package/dist/ui/UpdateNotification.d.ts.map +0 -1
  280. package/dist/ui/UpdateNotification.js.map +0 -1
  281. package/dist/ui/components/ActivityIndicator.d.ts.map +0 -1
  282. package/dist/ui/components/ActivityIndicator.js.map +0 -1
  283. package/dist/ui/components/CommandBrowser.d.ts.map +0 -1
  284. package/dist/ui/components/CommandBrowser.js.map +0 -1
  285. package/dist/ui/components/CustomTextInput.d.ts.map +0 -1
  286. package/dist/ui/components/CustomTextInput.js.map +0 -1
  287. package/dist/ui/components/DocsSearchProgress.d.ts.map +0 -1
  288. package/dist/ui/components/DocsSearchProgress.js.map +0 -1
  289. package/dist/ui/components/FileBrowser.d.ts.map +0 -1
  290. package/dist/ui/components/FileBrowser.js.map +0 -1
  291. package/dist/ui/components/LLMSetupWizard.d.ts.map +0 -1
  292. package/dist/ui/components/LLMSetupWizard.js.map +0 -1
  293. package/dist/ui/components/Logo.d.ts.map +0 -1
  294. package/dist/ui/components/Logo.js.map +0 -1
  295. package/dist/ui/components/MarkdownRenderer.d.ts.map +0 -1
  296. package/dist/ui/components/MarkdownRenderer.js.map +0 -1
  297. package/dist/ui/components/ModelSelector.d.ts.map +0 -1
  298. package/dist/ui/components/ModelSelector.js.map +0 -1
  299. package/dist/ui/components/PlanExecuteApp.d.ts.map +0 -1
  300. package/dist/ui/components/PlanExecuteApp.js.map +0 -1
  301. package/dist/ui/components/ProgressBar.d.ts.map +0 -1
  302. package/dist/ui/components/ProgressBar.js.map +0 -1
  303. package/dist/ui/components/StatusBar.d.ts.map +0 -1
  304. package/dist/ui/components/StatusBar.js.map +0 -1
  305. package/dist/ui/components/ThinkingIndicator.d.ts.map +0 -1
  306. package/dist/ui/components/ThinkingIndicator.js.map +0 -1
  307. package/dist/ui/components/TodoListView.d.ts.map +0 -1
  308. package/dist/ui/components/TodoListView.js.map +0 -1
  309. package/dist/ui/components/ToolSelector.d.ts.map +0 -1
  310. package/dist/ui/components/ToolSelector.js.map +0 -1
  311. package/dist/ui/components/dialogs/ApprovalDialog.d.ts.map +0 -1
  312. package/dist/ui/components/dialogs/ApprovalDialog.js.map +0 -1
  313. package/dist/ui/components/dialogs/AskUserDialog.d.ts.map +0 -1
  314. package/dist/ui/components/dialogs/AskUserDialog.js.map +0 -1
  315. package/dist/ui/components/dialogs/DocsBrowser.d.ts.map +0 -1
  316. package/dist/ui/components/dialogs/DocsBrowser.js.map +0 -1
  317. package/dist/ui/components/dialogs/SettingsDialog.d.ts.map +0 -1
  318. package/dist/ui/components/dialogs/SettingsDialog.js.map +0 -1
  319. package/dist/ui/components/dialogs/index.d.ts.map +0 -1
  320. package/dist/ui/components/dialogs/index.js.map +0 -1
  321. package/dist/ui/components/index.d.ts.map +0 -1
  322. package/dist/ui/components/index.js.map +0 -1
  323. package/dist/ui/components/panels/LogPanel.d.ts.map +0 -1
  324. package/dist/ui/components/panels/LogPanel.js.map +0 -1
  325. package/dist/ui/components/panels/SessionPanel.d.ts.map +0 -1
  326. package/dist/ui/components/panels/SessionPanel.js.map +0 -1
  327. package/dist/ui/components/panels/index.d.ts.map +0 -1
  328. package/dist/ui/components/panels/index.js.map +0 -1
  329. package/dist/ui/components/views/ChatView.d.ts.map +0 -1
  330. package/dist/ui/components/views/ChatView.js.map +0 -1
  331. package/dist/ui/components/views/index.d.ts.map +0 -1
  332. package/dist/ui/components/views/index.js.map +0 -1
  333. package/dist/ui/contexts/TokenContext.d.ts.map +0 -1
  334. package/dist/ui/contexts/TokenContext.js.map +0 -1
  335. package/dist/ui/hooks/atFileProcessor.d.ts.map +0 -1
  336. package/dist/ui/hooks/atFileProcessor.js.map +0 -1
  337. package/dist/ui/hooks/index.d.ts.map +0 -1
  338. package/dist/ui/hooks/index.js.map +0 -1
  339. package/dist/ui/hooks/slashCommandProcessor.d.ts.map +0 -1
  340. package/dist/ui/hooks/slashCommandProcessor.js.map +0 -1
  341. package/dist/ui/hooks/useCommandBrowserState.d.ts.map +0 -1
  342. package/dist/ui/hooks/useCommandBrowserState.js.map +0 -1
  343. package/dist/ui/hooks/useFileBrowserState.d.ts.map +0 -1
  344. package/dist/ui/hooks/useFileBrowserState.js.map +0 -1
  345. package/dist/ui/hooks/useFileList.d.ts.map +0 -1
  346. package/dist/ui/hooks/useFileList.js.map +0 -1
  347. package/dist/ui/hooks/useInputHistory.d.ts.map +0 -1
  348. package/dist/ui/hooks/useInputHistory.js.map +0 -1
  349. package/dist/ui/hooks/usePlanExecution.d.ts.map +0 -1
  350. package/dist/ui/hooks/usePlanExecution.js.map +0 -1
  351. package/dist/ui/index.d.ts.map +0 -1
  352. package/dist/ui/index.js.map +0 -1
  353. package/dist/ui/ink-entry.d.ts.map +0 -1
  354. package/dist/ui/ink-entry.js.map +0 -1
  355. package/dist/utils/env-filter.d.ts.map +0 -1
  356. package/dist/utils/env-filter.js.map +0 -1
  357. package/dist/utils/file-system.d.ts.map +0 -1
  358. package/dist/utils/file-system.js.map +0 -1
  359. package/dist/utils/git-utils.d.ts.map +0 -1
  360. package/dist/utils/git-utils.js.map +0 -1
  361. package/dist/utils/json-stream-logger.d.ts.map +0 -1
  362. package/dist/utils/json-stream-logger.js.map +0 -1
  363. package/dist/utils/logger.d.ts.map +0 -1
  364. package/dist/utils/logger.js.map +0 -1
  365. package/dist/utils/platform-utils.d.ts.map +0 -1
  366. package/dist/utils/platform-utils.js.map +0 -1
  367. package/dist/utils/wsl-utils.d.ts.map +0 -1
  368. package/dist/utils/wsl-utils.js.map +0 -1
  369. package/electron.vite.config.ts +0 -63
  370. package/google374b9eba0c52b043.html +0 -1
  371. package/src/agents/base/base-agent.ts +0 -159
  372. package/src/agents/docs-search/index.ts +0 -365
  373. package/src/agents/index.ts +0 -34
  374. package/src/agents/planner/index.ts +0 -544
  375. package/src/cli.ts +0 -201
  376. package/src/constants.ts +0 -47
  377. package/src/core/compact/compact-manager.ts +0 -160
  378. package/src/core/compact/compact-prompts.ts +0 -150
  379. package/src/core/compact/context-tracker.ts +0 -164
  380. package/src/core/compact/index.ts +0 -25
  381. package/src/core/config/config-manager.ts +0 -460
  382. package/src/core/config/index.ts +0 -5
  383. package/src/core/docs-manager.ts +0 -678
  384. package/src/core/llm/index.ts +0 -7
  385. package/src/core/llm/llm-client.ts +0 -1550
  386. package/src/core/session/index.ts +0 -5
  387. package/src/core/session/session-manager.ts +0 -464
  388. package/src/core/slash-command-handler.ts +0 -410
  389. package/src/core/usage-tracker.ts +0 -438
  390. package/src/errors/base.ts +0 -81
  391. package/src/errors/file.ts +0 -183
  392. package/src/errors/index.ts +0 -95
  393. package/src/errors/llm.ts +0 -151
  394. package/src/errors/network.ts +0 -124
  395. package/src/errors/validation.ts +0 -111
  396. package/src/eval/eval-runner.ts +0 -456
  397. package/src/eval/index.ts +0 -8
  398. package/src/eval/types.ts +0 -139
  399. package/src/index.ts +0 -22
  400. package/src/orchestration/index.ts +0 -30
  401. package/src/orchestration/plan-executor.ts +0 -652
  402. package/src/orchestration/types.ts +0 -127
  403. package/src/orchestration/utils.ts +0 -119
  404. package/src/orquesta/connection.ts +0 -291
  405. package/src/prompts/agents/docs-search-decision.ts +0 -74
  406. package/src/prompts/agents/docs-search.ts +0 -84
  407. package/src/prompts/agents/planning.ts +0 -143
  408. package/src/prompts/index.ts +0 -31
  409. package/src/prompts/shared/codebase-rules.ts +0 -29
  410. package/src/prompts/shared/git-rules.ts +0 -94
  411. package/src/prompts/shared/language-rules.ts +0 -36
  412. package/src/prompts/shared/tool-usage.ts +0 -72
  413. package/src/prompts/system/compact.ts +0 -80
  414. package/src/prompts/system/plan-execute.ts +0 -89
  415. package/src/tools/browser/browser-client.ts +0 -1363
  416. package/src/tools/browser/browser-tools.ts +0 -1139
  417. package/src/tools/browser/index.ts +0 -65
  418. package/src/tools/index.ts +0 -23
  419. package/src/tools/llm/agents/docs-search-tools.ts +0 -368
  420. package/src/tools/llm/agents/index.ts +0 -22
  421. package/src/tools/llm/index.ts +0 -11
  422. package/src/tools/llm/simple/ask-user-tool.ts +0 -25
  423. package/src/tools/llm/simple/background-bash-tool.ts +0 -443
  424. package/src/tools/llm/simple/background-powershell-tool.ts +0 -421
  425. package/src/tools/llm/simple/bash-tool.ts +0 -238
  426. package/src/tools/llm/simple/docs-search-agent-tool.ts +0 -146
  427. package/src/tools/llm/simple/file-tools.ts +0 -1051
  428. package/src/tools/llm/simple/final-response-tool.ts +0 -180
  429. package/src/tools/llm/simple/index.ts +0 -42
  430. package/src/tools/llm/simple/planning-tools.ts +0 -143
  431. package/src/tools/llm/simple/powershell-tool.ts +0 -241
  432. package/src/tools/llm/simple/simple-tool-executor.ts +0 -279
  433. package/src/tools/llm/simple/todo-tools.ts +0 -207
  434. package/src/tools/llm/simple/user-interaction-tools.ts +0 -277
  435. package/src/tools/office/common/constants.ts +0 -335
  436. package/src/tools/office/common/index.ts +0 -133
  437. package/src/tools/office/common/types.ts +0 -286
  438. package/src/tools/office/common/utils.ts +0 -116
  439. package/src/tools/office/excel-client.ts +0 -1336
  440. package/src/tools/office/excel-tools/cells.ts +0 -359
  441. package/src/tools/office/excel-tools/charts.ts +0 -166
  442. package/src/tools/office/excel-tools/comments.ts +0 -155
  443. package/src/tools/office/excel-tools/data-ops.ts +0 -349
  444. package/src/tools/office/excel-tools/export.ts +0 -105
  445. package/src/tools/office/excel-tools/formatting.ts +0 -357
  446. package/src/tools/office/excel-tools/index.ts +0 -55
  447. package/src/tools/office/excel-tools/launch.ts +0 -303
  448. package/src/tools/office/excel-tools/media.ts +0 -117
  449. package/src/tools/office/excel-tools/named-ranges.ts +0 -148
  450. package/src/tools/office/excel-tools/protection.ts +0 -105
  451. package/src/tools/office/excel-tools/rows-columns.ts +0 -386
  452. package/src/tools/office/excel-tools/sheets.ts +0 -228
  453. package/src/tools/office/excel-tools/validation.ts +0 -226
  454. package/src/tools/office/excel-tools.ts +0 -9
  455. package/src/tools/office/index.ts +0 -259
  456. package/src/tools/office/office-client-base.ts +0 -242
  457. package/src/tools/office/office-client.ts +0 -377
  458. package/src/tools/office/powerpoint-client.ts +0 -1498
  459. package/src/tools/office/powerpoint-tools/effects.ts +0 -315
  460. package/src/tools/office/powerpoint-tools/export.ts +0 -138
  461. package/src/tools/office/powerpoint-tools/index.ts +0 -45
  462. package/src/tools/office/powerpoint-tools/launch.ts +0 -263
  463. package/src/tools/office/powerpoint-tools/media.ts +0 -291
  464. package/src/tools/office/powerpoint-tools/notes.ts +0 -220
  465. package/src/tools/office/powerpoint-tools/sections.ts +0 -140
  466. package/src/tools/office/powerpoint-tools/shapes.ts +0 -870
  467. package/src/tools/office/powerpoint-tools/slides.ts +0 -350
  468. package/src/tools/office/powerpoint-tools/tables.ts +0 -182
  469. package/src/tools/office/powerpoint-tools/text.ts +0 -473
  470. package/src/tools/office/powerpoint-tools.ts +0 -9
  471. package/src/tools/office/word-client.ts +0 -1697
  472. package/src/tools/office/word-tools/bookmarks.ts +0 -186
  473. package/src/tools/office/word-tools/comments.ts +0 -185
  474. package/src/tools/office/word-tools/content.ts +0 -229
  475. package/src/tools/office/word-tools/export.ts +0 -97
  476. package/src/tools/office/word-tools/formatting.ts +0 -161
  477. package/src/tools/office/word-tools/headers-footers.ts +0 -155
  478. package/src/tools/office/word-tools/index.ts +0 -57
  479. package/src/tools/office/word-tools/launch.ts +0 -312
  480. package/src/tools/office/word-tools/lists.ts +0 -97
  481. package/src/tools/office/word-tools/navigation.ts +0 -114
  482. package/src/tools/office/word-tools/page-setup.ts +0 -195
  483. package/src/tools/office/word-tools/tables.ts +0 -262
  484. package/src/tools/office/word-tools/text.ts +0 -294
  485. package/src/tools/office/word-tools/undo-redo.ts +0 -97
  486. package/src/tools/office/word-tools/watermarks.ts +0 -105
  487. package/src/tools/office/word-tools.ts +0 -9
  488. package/src/tools/registry.ts +0 -527
  489. package/src/tools/types.ts +0 -231
  490. package/src/types/index.ts +0 -181
  491. package/src/ui/PlanExecuteView.tsx +0 -119
  492. package/src/ui/TodoPanel.tsx +0 -240
  493. package/src/ui/UpdateNotification.tsx +0 -105
  494. package/src/ui/components/ActivityIndicator.tsx +0 -234
  495. package/src/ui/components/CommandBrowser.tsx +0 -114
  496. package/src/ui/components/CustomTextInput.tsx +0 -389
  497. package/src/ui/components/DocsSearchProgress.tsx +0 -85
  498. package/src/ui/components/FileBrowser.tsx +0 -93
  499. package/src/ui/components/LLMSetupWizard.tsx +0 -333
  500. package/src/ui/components/Logo.tsx +0 -125
  501. package/src/ui/components/MarkdownRenderer.tsx +0 -358
  502. package/src/ui/components/ModelSelector.tsx +0 -203
  503. package/src/ui/components/PlanExecuteApp.tsx +0 -2007
  504. package/src/ui/components/ProgressBar.tsx +0 -51
  505. package/src/ui/components/StatusBar.tsx +0 -302
  506. package/src/ui/components/ThinkingIndicator.tsx +0 -120
  507. package/src/ui/components/TodoListView.tsx +0 -140
  508. package/src/ui/components/ToolSelector.tsx +0 -215
  509. package/src/ui/components/dialogs/ApprovalDialog.tsx +0 -259
  510. package/src/ui/components/dialogs/AskUserDialog.tsx +0 -159
  511. package/src/ui/components/dialogs/DocsBrowser.tsx +0 -222
  512. package/src/ui/components/dialogs/SettingsDialog.tsx +0 -939
  513. package/src/ui/components/dialogs/index.ts +0 -13
  514. package/src/ui/components/index.ts +0 -27
  515. package/src/ui/components/panels/LogPanel.tsx +0 -385
  516. package/src/ui/components/panels/SessionPanel.tsx +0 -146
  517. package/src/ui/components/panels/index.ts +0 -13
  518. package/src/ui/components/views/ChatView.tsx +0 -447
  519. package/src/ui/components/views/index.ts +0 -5
  520. package/src/ui/contexts/TokenContext.tsx +0 -139
  521. package/src/ui/hooks/atFileProcessor.ts +0 -167
  522. package/src/ui/hooks/index.ts +0 -11
  523. package/src/ui/hooks/slashCommandProcessor.ts +0 -174
  524. package/src/ui/hooks/useCommandBrowserState.ts +0 -97
  525. package/src/ui/hooks/useFileBrowserState.ts +0 -116
  526. package/src/ui/hooks/useFileList.ts +0 -132
  527. package/src/ui/hooks/useInputHistory.ts +0 -89
  528. package/src/ui/hooks/usePlanExecution.ts +0 -339
  529. package/src/ui/index.ts +0 -10
  530. package/src/ui/ink-entry.tsx +0 -36
  531. package/src/utils/env-filter.ts +0 -164
  532. package/src/utils/file-system.ts +0 -133
  533. package/src/utils/git-utils.ts +0 -30
  534. package/src/utils/json-stream-logger.ts +0 -1259
  535. package/src/utils/logger.ts +0 -2767
  536. package/src/utils/platform-utils.ts +0 -256
  537. package/src/utils/wsl-utils.ts +0 -113
  538. package/tsconfig.electron.json +0 -39
  539. package/tsconfig.json +0 -64
@@ -1,1139 +0,0 @@
1
- /**
2
- * Browser Automation Tools (LLM Simple)
3
- *
4
- * Tools that allow LLM to control the browser
5
- * Category: LLM Simple Tools - LLM calls via tool_call, no Sub-LLM
6
- *
7
- * Uses CDP (Chrome DevTools Protocol) via Playwright
8
- * Launches browser via PowerShell and controls it with Playwright.
9
- */
10
-
11
- import { ToolDefinition } from '../../types/index.js';
12
- import { LLMSimpleTool, ToolResult, ToolCategory } from '../types.js';
13
- import { browserClient } from './browser-client.js';
14
- import { logger } from '../../utils/logger.js';
15
-
16
- const BROWSER_CATEGORIES: ToolCategory[] = ['llm-simple'];
17
-
18
- /**
19
- * browser_launch Tool Definition
20
- */
21
- const BROWSER_LAUNCH_DEFINITION: ToolDefinition = {
22
- type: 'function',
23
- function: {
24
- name: 'browser_launch',
25
- description: `Launch Chrome/Edge browser for web testing and automation.
26
- Use this tool to start a browser session before navigating to pages.
27
- The browser runs on Windows via CDP (Chrome DevTools Protocol).`,
28
- parameters: {
29
- type: 'object',
30
- properties: {
31
- reason: {
32
- type: 'string',
33
- description: 'Explanation of why you are launching the browser',
34
- },
35
- headless: {
36
- type: 'boolean',
37
- description: 'Run browser in headless mode (default: false). Set to true to hide the browser window.',
38
- },
39
- browser: {
40
- type: 'string',
41
- enum: ['chrome', 'edge'],
42
- description: 'Browser to use (default: chrome). Falls back to edge if chrome is not available.',
43
- },
44
- },
45
- required: ['reason'],
46
- },
47
- },
48
- };
49
-
50
- async function executeBrowserLaunch(args: Record<string, unknown>): Promise<ToolResult> {
51
- const headless = args['headless'] === true;
52
- const browser = (args['browser'] as 'chrome' | 'edge') || 'chrome';
53
-
54
- logger.toolStart('browser_launch', { headless, browser });
55
-
56
- try {
57
- // Check if browser is already active
58
- if (await browserClient.isBrowserActive()) {
59
- logger.toolSuccess('browser_launch', args, { alreadyRunning: true }, 0);
60
- return {
61
- success: true,
62
- result: 'Browser is already running.',
63
- };
64
- }
65
-
66
- // Ensure server is running
67
- await browserClient.startServer();
68
-
69
- // Launch browser
70
- const response = await browserClient.launch({ headless, browser });
71
-
72
- if (!response.success) {
73
- logger.toolError('browser_launch', args, new Error(response.error || 'Failed to launch browser'), 0);
74
- return {
75
- success: false,
76
- error: response.error || 'Failed to launch browser',
77
- };
78
- }
79
-
80
- logger.toolSuccess('browser_launch', args, { browser: response['browser'] || browser, headless }, 0);
81
- return {
82
- success: true,
83
- result: `${response['browser'] || browser} launched successfully (headless: ${headless})`,
84
- };
85
- } catch (error) {
86
- logger.toolError('browser_launch', args, error as Error, 0);
87
- return {
88
- success: false,
89
- error: `Failed to launch browser: ${error instanceof Error ? error.message : String(error)}`,
90
- };
91
- }
92
- }
93
-
94
- export const browserLaunchTool: LLMSimpleTool = {
95
- definition: BROWSER_LAUNCH_DEFINITION,
96
- execute: executeBrowserLaunch,
97
- categories: BROWSER_CATEGORIES,
98
- description: 'Launch Chrome/Edge browser',
99
- };
100
-
101
- /**
102
- * browser_navigate Tool Definition
103
- */
104
- const BROWSER_NAVIGATE_DEFINITION: ToolDefinition = {
105
- type: 'function',
106
- function: {
107
- name: 'browser_navigate',
108
- description: `Navigate browser to a URL. Use this to open web pages for testing.
109
- Common URLs:
110
- - http://localhost:3000 - Local development server
111
- - http://localhost:8080 - Alternative local server
112
- - https://example.com - External website`,
113
- parameters: {
114
- type: 'object',
115
- properties: {
116
- reason: {
117
- type: 'string',
118
- description: 'Explanation of why you are navigating to this URL',
119
- },
120
- url: {
121
- type: 'string',
122
- description: 'The URL to navigate to (e.g., http://localhost:3000)',
123
- },
124
- },
125
- required: ['reason', 'url'],
126
- },
127
- },
128
- };
129
-
130
- async function executeBrowserNavigate(args: Record<string, unknown>): Promise<ToolResult> {
131
- const url = args['url'] as string;
132
-
133
- logger.toolStart('browser_navigate', { url });
134
-
135
- try {
136
- // Auto-launch if not running
137
- if (!(await browserClient.isBrowserActive())) {
138
- logger.flow('Browser not active, auto-launching');
139
- await browserClient.startServer();
140
- await browserClient.launch({ headless: false });
141
- }
142
-
143
- const response = await browserClient.navigate(url);
144
-
145
- if (!response.success) {
146
- logger.toolError('browser_navigate', args, new Error(response.error || 'Failed to navigate'), 0);
147
- return {
148
- success: false,
149
- error: response.error || 'Failed to navigate',
150
- };
151
- }
152
-
153
- logger.toolSuccess('browser_navigate', args, { url: response.url, title: response.title }, 0);
154
- return {
155
- success: true,
156
- result: `Navigated to ${response.url}\nPage title: ${response.title}`,
157
- };
158
- } catch (error) {
159
- logger.toolError('browser_navigate', args, error as Error, 0);
160
- return {
161
- success: false,
162
- error: `Failed to navigate: ${error instanceof Error ? error.message : String(error)}`,
163
- };
164
- }
165
- }
166
-
167
- export const browserNavigateTool: LLMSimpleTool = {
168
- definition: BROWSER_NAVIGATE_DEFINITION,
169
- execute: executeBrowserNavigate,
170
- categories: BROWSER_CATEGORIES,
171
- description: 'Navigate browser to URL',
172
- };
173
-
174
- /**
175
- * browser_screenshot Tool Definition
176
- */
177
- const BROWSER_SCREENSHOT_DEFINITION: ToolDefinition = {
178
- type: 'function',
179
- function: {
180
- name: 'browser_screenshot',
181
- description: `Take a screenshot of the current browser page.
182
- Returns a base64-encoded PNG image that you can analyze to understand the page state.
183
- Screenshots are also saved to ~/.local-cli/screenshots/browser/
184
- Use this to verify that pages loaded correctly or to check UI elements.`,
185
- parameters: {
186
- type: 'object',
187
- properties: {
188
- reason: {
189
- type: 'string',
190
- description: 'Explanation of why you are taking a screenshot',
191
- },
192
- full_page: {
193
- type: 'boolean',
194
- description: 'Capture the full scrollable page (default: false, captures viewport only)',
195
- },
196
- },
197
- required: ['reason'],
198
- },
199
- },
200
- };
201
-
202
- async function executeBrowserScreenshot(args: Record<string, unknown>): Promise<ToolResult> {
203
- const fullPage = args['full_page'] === true;
204
-
205
- logger.toolStart('browser_screenshot', { fullPage });
206
-
207
- try {
208
- if (!(await browserClient.isBrowserActive())) {
209
- logger.toolError('browser_screenshot', args, new Error('Browser not running'), 0);
210
- return {
211
- success: false,
212
- error: 'Browser is not running. Use browser_launch first.',
213
- };
214
- }
215
-
216
- const response = await browserClient.screenshot(fullPage);
217
-
218
- if (!response.success || !response.image) {
219
- logger.toolError('browser_screenshot', args, new Error(response.error || 'Failed to take screenshot'), 0);
220
- return {
221
- success: false,
222
- error: response.error || 'Failed to take screenshot',
223
- };
224
- }
225
-
226
- // Save screenshot to file
227
- const savedPath = browserClient.saveScreenshot(response.image, 'browser');
228
-
229
- logger.toolSuccess('browser_screenshot', args, { savedPath, url: response.url, title: response.title }, 0);
230
- return {
231
- success: true,
232
- result: `Screenshot captured of "${response.title}" (${response.url})\nSaved to: ${savedPath}`,
233
- metadata: {
234
- image: response.image,
235
- imageType: 'image/png',
236
- encoding: 'base64',
237
- url: response.url,
238
- title: response.title,
239
- savedPath,
240
- },
241
- };
242
- } catch (error) {
243
- logger.toolError('browser_screenshot', args, error as Error, 0);
244
- return {
245
- success: false,
246
- error: `Failed to take screenshot: ${error instanceof Error ? error.message : String(error)}`,
247
- };
248
- }
249
- }
250
-
251
- export const browserScreenshotTool: LLMSimpleTool = {
252
- definition: BROWSER_SCREENSHOT_DEFINITION,
253
- execute: executeBrowserScreenshot,
254
- categories: BROWSER_CATEGORIES,
255
- description: 'Take screenshot of browser',
256
- };
257
-
258
- /**
259
- * browser_click Tool Definition
260
- */
261
- const BROWSER_CLICK_DEFINITION: ToolDefinition = {
262
- type: 'function',
263
- function: {
264
- name: 'browser_click',
265
- description: `Click an element on the page by CSS selector.
266
- Examples:
267
- - button[type="submit"] - Submit button
268
- - #login-btn - Element with id "login-btn"
269
- - .nav-link - Element with class "nav-link"
270
- - a[href="/about"] - Link to /about`,
271
- parameters: {
272
- type: 'object',
273
- properties: {
274
- reason: {
275
- type: 'string',
276
- description: 'Explanation of why you are clicking this element',
277
- },
278
- selector: {
279
- type: 'string',
280
- description: 'CSS selector of the element to click',
281
- },
282
- },
283
- required: ['reason', 'selector'],
284
- },
285
- },
286
- };
287
-
288
- async function executeBrowserClick(args: Record<string, unknown>): Promise<ToolResult> {
289
- const selector = args['selector'] as string;
290
- const startTime = Date.now();
291
-
292
- logger.toolStart('browser_click', { selector });
293
-
294
- try {
295
- if (!(await browserClient.isBrowserActive())) {
296
- logger.toolError('browser_click', args, new Error('Browser not running'), Date.now() - startTime);
297
- return {
298
- success: false,
299
- error: 'Browser is not running. Use browser_launch first.',
300
- };
301
- }
302
-
303
- const response = await browserClient.click(selector);
304
-
305
- if (!response.success) {
306
- logger.toolError('browser_click', args, new Error(response.error || `Failed to click: ${selector}`), Date.now() - startTime);
307
- return {
308
- success: false,
309
- error: response.error || `Failed to click: ${selector}`,
310
- };
311
- }
312
-
313
- logger.toolSuccess('browser_click', args, { selector, currentUrl: response['current_url'] }, Date.now() - startTime);
314
- return {
315
- success: true,
316
- result: `Clicked element: ${selector}\nCurrent URL: ${response['current_url'] || 'unknown'}`,
317
- };
318
- } catch (error) {
319
- logger.toolError('browser_click', args, error as Error, Date.now() - startTime);
320
- return {
321
- success: false,
322
- error: `Failed to click: ${error instanceof Error ? error.message : String(error)}`,
323
- };
324
- }
325
- }
326
-
327
- export const browserClickTool: LLMSimpleTool = {
328
- definition: BROWSER_CLICK_DEFINITION,
329
- execute: executeBrowserClick,
330
- categories: BROWSER_CATEGORIES,
331
- description: 'Click element on page',
332
- };
333
-
334
- /**
335
- * browser_fill Tool Definition
336
- */
337
- const BROWSER_FILL_DEFINITION: ToolDefinition = {
338
- type: 'function',
339
- function: {
340
- name: 'browser_fill',
341
- description: `Fill an input field with text.
342
- The existing content will be cleared before typing.
343
- Examples:
344
- - input[name="email"] - Email input field
345
- - #password - Password field by id
346
- - textarea.comment - Comment textarea`,
347
- parameters: {
348
- type: 'object',
349
- properties: {
350
- reason: {
351
- type: 'string',
352
- description: 'Explanation of why you are filling this field',
353
- },
354
- selector: {
355
- type: 'string',
356
- description: 'CSS selector of the input field',
357
- },
358
- value: {
359
- type: 'string',
360
- description: 'Text to type into the field',
361
- },
362
- },
363
- required: ['reason', 'selector', 'value'],
364
- },
365
- },
366
- };
367
-
368
- async function executeBrowserFill(args: Record<string, unknown>): Promise<ToolResult> {
369
- const selector = args['selector'] as string;
370
- const value = args['value'] as string;
371
- const startTime = Date.now();
372
-
373
- logger.toolStart('browser_fill', { selector, valueLength: value?.length });
374
-
375
- try {
376
- if (!(await browserClient.isBrowserActive())) {
377
- logger.toolError('browser_fill', args, new Error('Browser not running'), Date.now() - startTime);
378
- return {
379
- success: false,
380
- error: 'Browser is not running. Use browser_launch first.',
381
- };
382
- }
383
-
384
- const response = await browserClient.fill(selector, value);
385
-
386
- if (!response.success) {
387
- logger.toolError('browser_fill', args, new Error(response.error || `Failed to fill: ${selector}`), Date.now() - startTime);
388
- return {
389
- success: false,
390
- error: response.error || `Failed to fill: ${selector}`,
391
- };
392
- }
393
-
394
- logger.toolSuccess('browser_fill', args, { selector, valueLength: value.length }, Date.now() - startTime);
395
- return {
396
- success: true,
397
- result: `Filled "${selector}" with text (${value.length} characters)`,
398
- };
399
- } catch (error) {
400
- logger.toolError('browser_fill', args, error as Error, Date.now() - startTime);
401
- return {
402
- success: false,
403
- error: `Failed to fill: ${error instanceof Error ? error.message : String(error)}`,
404
- };
405
- }
406
- }
407
-
408
- export const browserFillTool: LLMSimpleTool = {
409
- definition: BROWSER_FILL_DEFINITION,
410
- execute: executeBrowserFill,
411
- categories: BROWSER_CATEGORIES,
412
- description: 'Fill input field with text',
413
- };
414
-
415
- /**
416
- * browser_get_text Tool Definition
417
- */
418
- const BROWSER_GET_TEXT_DEFINITION: ToolDefinition = {
419
- type: 'function',
420
- function: {
421
- name: 'browser_get_text',
422
- description: `Get the text content of an element.
423
- Use this to read content from the page, like error messages or confirmation text.`,
424
- parameters: {
425
- type: 'object',
426
- properties: {
427
- reason: {
428
- type: 'string',
429
- description: 'Explanation of why you are reading this element',
430
- },
431
- selector: {
432
- type: 'string',
433
- description: 'CSS selector of the element to read',
434
- },
435
- },
436
- required: ['reason', 'selector'],
437
- },
438
- },
439
- };
440
-
441
- async function executeBrowserGetText(args: Record<string, unknown>): Promise<ToolResult> {
442
- const selector = args['selector'] as string;
443
- const startTime = Date.now();
444
-
445
- logger.toolStart('browser_get_text', { selector });
446
-
447
- try {
448
- if (!(await browserClient.isBrowserActive())) {
449
- logger.toolError('browser_get_text', args, new Error('Browser not running'), Date.now() - startTime);
450
- return {
451
- success: false,
452
- error: 'Browser is not running. Use browser_launch first.',
453
- };
454
- }
455
-
456
- const response = await browserClient.getText(selector);
457
-
458
- if (!response.success) {
459
- logger.toolError('browser_get_text', args, new Error(response.error || `Failed to get text: ${selector}`), Date.now() - startTime);
460
- return {
461
- success: false,
462
- error: response.error || `Failed to get text: ${selector}`,
463
- };
464
- }
465
-
466
- const text = (response['text'] as string) || '(empty)';
467
- logger.toolSuccess('browser_get_text', args, { selector, textLength: text.length }, Date.now() - startTime);
468
- return {
469
- success: true,
470
- result: text,
471
- };
472
- } catch (error) {
473
- logger.toolError('browser_get_text', args, error as Error, Date.now() - startTime);
474
- return {
475
- success: false,
476
- error: `Failed to get text: ${error instanceof Error ? error.message : String(error)}`,
477
- };
478
- }
479
- }
480
-
481
- export const browserGetTextTool: LLMSimpleTool = {
482
- definition: BROWSER_GET_TEXT_DEFINITION,
483
- execute: executeBrowserGetText,
484
- categories: BROWSER_CATEGORIES,
485
- description: 'Get text content of element',
486
- };
487
-
488
- /**
489
- * browser_close Tool Definition
490
- */
491
- const BROWSER_CLOSE_DEFINITION: ToolDefinition = {
492
- type: 'function',
493
- function: {
494
- name: 'browser_close',
495
- description: `Close the browser and end the automation session.
496
- Use this when you are done testing.`,
497
- parameters: {
498
- type: 'object',
499
- properties: {
500
- reason: {
501
- type: 'string',
502
- description: 'Explanation of why you are closing the browser',
503
- },
504
- },
505
- required: ['reason'],
506
- },
507
- },
508
- };
509
-
510
- async function executeBrowserClose(args: Record<string, unknown>): Promise<ToolResult> {
511
- const startTime = Date.now();
512
-
513
- logger.toolStart('browser_close', {});
514
-
515
- try {
516
- await browserClient.close();
517
-
518
- logger.toolSuccess('browser_close', args, { closed: true }, Date.now() - startTime);
519
- return {
520
- success: true,
521
- result: 'Browser closed successfully',
522
- };
523
- } catch (error) {
524
- logger.toolError('browser_close', args, error as Error, Date.now() - startTime);
525
- return {
526
- success: false,
527
- error: `Failed to close browser: ${error instanceof Error ? error.message : String(error)}`,
528
- };
529
- }
530
- }
531
-
532
- export const browserCloseTool: LLMSimpleTool = {
533
- definition: BROWSER_CLOSE_DEFINITION,
534
- execute: executeBrowserClose,
535
- categories: BROWSER_CATEGORIES,
536
- description: 'Close browser',
537
- };
538
-
539
- /**
540
- * browser_get_content Tool Definition
541
- */
542
- const BROWSER_GET_CONTENT_DEFINITION: ToolDefinition = {
543
- type: 'function',
544
- function: {
545
- name: 'browser_get_content',
546
- description: `Get the HTML content of the current page.
547
- Returns page URL, title, and HTML source.
548
-
549
- Use this tool when you need to:
550
- - Find elements and their selectors
551
- - Understand the page structure
552
- - Check form fields
553
- - Debug page issues`,
554
- parameters: {
555
- type: 'object',
556
- properties: {
557
- reason: {
558
- type: 'string',
559
- description: 'Explanation of why you need the page content',
560
- },
561
- },
562
- required: ['reason'],
563
- },
564
- },
565
- };
566
-
567
- async function executeBrowserGetContent(args: Record<string, unknown>): Promise<ToolResult> {
568
- const startTime = Date.now();
569
-
570
- logger.toolStart('browser_get_content', {});
571
-
572
- try {
573
- if (!(await browserClient.isBrowserActive())) {
574
- logger.toolError('browser_get_content', args, new Error('Browser not running'), Date.now() - startTime);
575
- return {
576
- success: false,
577
- error: 'Browser is not running. Use browser_launch first.',
578
- };
579
- }
580
-
581
- const response = await browserClient.getHtml();
582
-
583
- if (!response.success) {
584
- logger.toolError('browser_get_content', args, new Error(response.error || 'Failed to get page content'), Date.now() - startTime);
585
- return {
586
- success: false,
587
- error: response.error || 'Failed to get page content',
588
- };
589
- }
590
-
591
- const html = response.html || '';
592
- // Truncate HTML if too long
593
- const maxLen = 10000;
594
- const truncatedHtml = html.length > maxLen
595
- ? html.substring(0, maxLen) + `\n...(truncated, ${html.length} total chars)`
596
- : html;
597
-
598
- logger.toolSuccess('browser_get_content', args, { url: response.url, title: response.title, htmlLength: html.length }, Date.now() - startTime);
599
- return {
600
- success: true,
601
- result: `Page: ${response.title} (${response.url})\n\nHTML:\n${truncatedHtml}`,
602
- };
603
- } catch (error) {
604
- logger.toolError('browser_get_content', args, error as Error, Date.now() - startTime);
605
- return {
606
- success: false,
607
- error: `Failed to get page content: ${error instanceof Error ? error.message : String(error)}`,
608
- };
609
- }
610
- }
611
-
612
- export const browserGetContentTool: LLMSimpleTool = {
613
- definition: BROWSER_GET_CONTENT_DEFINITION,
614
- execute: executeBrowserGetContent,
615
- categories: BROWSER_CATEGORIES,
616
- description: 'Get page HTML content',
617
- };
618
-
619
- /**
620
- * browser_get_console Tool Definition
621
- */
622
- const BROWSER_GET_CONSOLE_DEFINITION: ToolDefinition = {
623
- type: 'function',
624
- function: {
625
- name: 'browser_get_console',
626
- description: `Get console logs from the browser.
627
- Returns console.log, console.error, console.warn messages.
628
-
629
- Use this tool to:
630
- - Debug JavaScript errors on the page
631
- - Check API response logs
632
- - Verify application behavior
633
- - Find error messages that might explain UI issues`,
634
- parameters: {
635
- type: 'object',
636
- properties: {
637
- reason: {
638
- type: 'string',
639
- description: 'Explanation of why you need the console logs',
640
- },
641
- },
642
- required: ['reason'],
643
- },
644
- },
645
- };
646
-
647
- async function executeBrowserGetConsole(args: Record<string, unknown>): Promise<ToolResult> {
648
- const startTime = Date.now();
649
-
650
- logger.toolStart('browser_get_console', {});
651
-
652
- try {
653
- if (!(await browserClient.isBrowserActive())) {
654
- logger.toolError('browser_get_console', args, new Error('Browser not running'), Date.now() - startTime);
655
- return {
656
- success: false,
657
- error: 'Browser is not running. Use browser_launch first.',
658
- };
659
- }
660
-
661
- const response = await browserClient.getConsole();
662
-
663
- if (!response.success) {
664
- logger.toolError('browser_get_console', args, new Error(response.error || 'Failed to get console logs'), Date.now() - startTime);
665
- return {
666
- success: false,
667
- error: response.error || 'Failed to get console logs',
668
- };
669
- }
670
-
671
- const logs = response.logs || [];
672
- if (logs.length === 0) {
673
- logger.toolSuccess('browser_get_console', args, { logCount: 0 }, Date.now() - startTime);
674
- return {
675
- success: true,
676
- result: 'No console messages captured.',
677
- };
678
- }
679
-
680
- const formatted = logs.map(log => {
681
- const timestamp = new Date(log.timestamp).toLocaleTimeString('en-GB');
682
- const icon = log.level === 'SEVERE' ? '❌' : log.level === 'WARNING' ? '⚠️' : '📝';
683
- return `[${timestamp}] ${icon} ${log.level}: ${log.message}`;
684
- }).join('\n');
685
-
686
- logger.toolSuccess('browser_get_console', args, { logCount: logs.length }, Date.now() - startTime);
687
- return {
688
- success: true,
689
- result: `Console logs (${logs.length} messages):\n\n${formatted}`,
690
- };
691
- } catch (error) {
692
- logger.toolError('browser_get_console', args, error as Error, Date.now() - startTime);
693
- return {
694
- success: false,
695
- error: `Failed to get console logs: ${error instanceof Error ? error.message : String(error)}`,
696
- };
697
- }
698
- }
699
-
700
- export const browserGetConsoleTool: LLMSimpleTool = {
701
- definition: BROWSER_GET_CONSOLE_DEFINITION,
702
- execute: executeBrowserGetConsole,
703
- categories: BROWSER_CATEGORIES,
704
- description: 'Get browser console logs',
705
- };
706
-
707
- /**
708
- * browser_get_network Tool Definition
709
- */
710
- const BROWSER_GET_NETWORK_DEFINITION: ToolDefinition = {
711
- type: 'function',
712
- function: {
713
- name: 'browser_get_network',
714
- description: `Get network request logs from the browser.
715
- Returns HTTP requests and responses captured during page interactions.
716
-
717
- Use this tool to:
718
- - Debug API calls and responses
719
- - Check request/response status codes
720
- - Verify network requests are being made correctly
721
- - Analyze API endpoints being called
722
- - Check for failed network requests`,
723
- parameters: {
724
- type: 'object',
725
- properties: {
726
- reason: {
727
- type: 'string',
728
- description: 'Explanation of why you need the network logs',
729
- },
730
- },
731
- required: ['reason'],
732
- },
733
- },
734
- };
735
-
736
- async function executeBrowserGetNetwork(args: Record<string, unknown>): Promise<ToolResult> {
737
- const startTime = Date.now();
738
-
739
- logger.toolStart('browser_get_network', {});
740
-
741
- try {
742
- if (!(await browserClient.isBrowserActive())) {
743
- logger.toolError('browser_get_network', args, new Error('Browser not running'), Date.now() - startTime);
744
- return {
745
- success: false,
746
- error: 'Browser is not running. Use browser_launch first.',
747
- };
748
- }
749
-
750
- const response = await browserClient.getNetwork();
751
-
752
- if (!response.success) {
753
- logger.toolError('browser_get_network', args, new Error(response.error || 'Failed to get network logs'), Date.now() - startTime);
754
- return {
755
- success: false,
756
- error: response.error || 'Failed to get network logs',
757
- };
758
- }
759
-
760
- const logs = response.logs || [];
761
- if (logs.length === 0) {
762
- logger.toolSuccess('browser_get_network', args, { logCount: 0 }, Date.now() - startTime);
763
- return {
764
- success: true,
765
- result: 'No network requests captured.',
766
- };
767
- }
768
-
769
- const formatted = logs.map(log => {
770
- if (log.type === 'request') {
771
- return `➡️ ${log.method} ${log.url}`;
772
- } else {
773
- const statusIcon = log.status && log.status >= 400 ? '❌' : '✅';
774
- return `${statusIcon} ${log.status} ${log.statusText} - ${log.url} (${log.mimeType || 'unknown'})`;
775
- }
776
- }).join('\n');
777
-
778
- logger.toolSuccess('browser_get_network', args, { logCount: logs.length }, Date.now() - startTime);
779
- return {
780
- success: true,
781
- result: `Network logs (${logs.length} entries):\n\n${formatted}`,
782
- };
783
- } catch (error) {
784
- logger.toolError('browser_get_network', args, error as Error, Date.now() - startTime);
785
- return {
786
- success: false,
787
- error: `Failed to get network logs: ${error instanceof Error ? error.message : String(error)}`,
788
- };
789
- }
790
- }
791
-
792
- export const browserGetNetworkTool: LLMSimpleTool = {
793
- definition: BROWSER_GET_NETWORK_DEFINITION,
794
- execute: executeBrowserGetNetwork,
795
- categories: BROWSER_CATEGORIES,
796
- description: 'Get browser network logs',
797
- };
798
-
799
- /**
800
- * browser_focus Tool Definition
801
- */
802
- const BROWSER_FOCUS_DEFINITION: ToolDefinition = {
803
- type: 'function',
804
- function: {
805
- name: 'browser_focus',
806
- description: `Bring the browser window to the foreground.
807
- Use this to make the browser window visible and focused when needed.`,
808
- parameters: {
809
- type: 'object',
810
- properties: {
811
- reason: {
812
- type: 'string',
813
- description: 'Explanation of why you need to focus the browser window',
814
- },
815
- },
816
- required: ['reason'],
817
- },
818
- },
819
- };
820
-
821
- async function executeBrowserFocus(args: Record<string, unknown>): Promise<ToolResult> {
822
- const startTime = Date.now();
823
-
824
- logger.toolStart('browser_focus', {});
825
-
826
- try {
827
- if (!(await browserClient.isBrowserActive())) {
828
- logger.toolError('browser_focus', args, new Error('Browser not running'), Date.now() - startTime);
829
- return {
830
- success: false,
831
- error: 'Browser is not running. Use browser_launch first.',
832
- };
833
- }
834
-
835
- const response = await browserClient.focus();
836
-
837
- if (!response.success) {
838
- logger.toolError('browser_focus', args, new Error(response.error || 'Failed to focus browser window'), Date.now() - startTime);
839
- return {
840
- success: false,
841
- error: response.error || 'Failed to focus browser window',
842
- };
843
- }
844
-
845
- logger.toolSuccess('browser_focus', args, { focused: true }, Date.now() - startTime);
846
- return {
847
- success: true,
848
- result: 'Browser window brought to foreground.',
849
- };
850
- } catch (error) {
851
- logger.toolError('browser_focus', args, error as Error, Date.now() - startTime);
852
- return {
853
- success: false,
854
- error: `Failed to focus browser: ${error instanceof Error ? error.message : String(error)}`,
855
- };
856
- }
857
- }
858
-
859
- export const browserFocusTool: LLMSimpleTool = {
860
- definition: BROWSER_FOCUS_DEFINITION,
861
- execute: executeBrowserFocus,
862
- categories: BROWSER_CATEGORIES,
863
- description: 'Bring browser window to foreground',
864
- };
865
-
866
- /**
867
- * browser_press_key Tool Definition
868
- */
869
- const BROWSER_PRESS_KEY_DEFINITION: ToolDefinition = {
870
- type: 'function',
871
- function: {
872
- name: 'browser_press_key',
873
- description: `Press a keyboard key in the browser.
874
-
875
- Supports special keys:
876
- - Enter, Tab, Escape, Space
877
- - ArrowUp, ArrowDown, ArrowLeft, ArrowRight
878
- - Backspace, Delete, Home, End, PageUp, PageDown
879
- - F1-F12
880
- - Control, Alt, Shift, Meta
881
-
882
- Key combinations (use + to combine):
883
- - Control+A (select all)
884
- - Control+C (copy)
885
- - Control+V (paste)
886
- - Shift+Tab (reverse tab)
887
-
888
- Use this for form submission (Enter), navigation, or keyboard shortcuts.`,
889
- parameters: {
890
- type: 'object',
891
- properties: {
892
- reason: {
893
- type: 'string',
894
- description: 'Explanation of why you are pressing this key',
895
- },
896
- key: {
897
- type: 'string',
898
- description: 'Key to press (e.g., "Enter", "Tab", "Escape", "Control+A")',
899
- },
900
- selector: {
901
- type: 'string',
902
- description: 'Optional CSS selector of element to focus before pressing key',
903
- },
904
- },
905
- required: ['reason', 'key'],
906
- },
907
- },
908
- };
909
-
910
- async function executeBrowserPressKey(args: Record<string, unknown>): Promise<ToolResult> {
911
- const key = args['key'] as string;
912
- const selector = args['selector'] as string | undefined;
913
- const startTime = Date.now();
914
-
915
- logger.toolStart('browser_press_key', { key, selector });
916
-
917
- try {
918
- if (!(await browserClient.isBrowserActive())) {
919
- logger.toolError('browser_press_key', args, new Error('Browser not running'), Date.now() - startTime);
920
- return {
921
- success: false,
922
- error: 'Browser is not running. Use browser_launch first.',
923
- };
924
- }
925
-
926
- const response = await browserClient.pressKey(key, selector);
927
-
928
- if (!response.success) {
929
- logger.toolError('browser_press_key', args, new Error(response.error || `Failed to press key: ${key}`), Date.now() - startTime);
930
- return {
931
- success: false,
932
- error: response.error || `Failed to press key: ${key}`,
933
- };
934
- }
935
-
936
- logger.toolSuccess('browser_press_key', args, { key, selector }, Date.now() - startTime);
937
- return {
938
- success: true,
939
- result: `Key "${key}" pressed${selector ? ` on ${selector}` : ''}`,
940
- };
941
- } catch (error) {
942
- logger.toolError('browser_press_key', args, error as Error, Date.now() - startTime);
943
- return {
944
- success: false,
945
- error: `Failed to press key: ${error instanceof Error ? error.message : String(error)}`,
946
- };
947
- }
948
- }
949
-
950
- export const browserPressKeyTool: LLMSimpleTool = {
951
- definition: BROWSER_PRESS_KEY_DEFINITION,
952
- execute: executeBrowserPressKey,
953
- categories: BROWSER_CATEGORIES,
954
- description: 'Press keyboard key',
955
- };
956
-
957
- /**
958
- * browser_type Tool Definition
959
- */
960
- const BROWSER_TYPE_DEFINITION: ToolDefinition = {
961
- type: 'function',
962
- function: {
963
- name: 'browser_type',
964
- description: `Type text character by character (triggers key events).
965
- Unlike browser_fill which sets value directly, this simulates actual typing.
966
- Useful for inputs that have keystroke handlers or autocomplete.`,
967
- parameters: {
968
- type: 'object',
969
- properties: {
970
- reason: {
971
- type: 'string',
972
- description: 'Explanation of why you are typing this text',
973
- },
974
- text: {
975
- type: 'string',
976
- description: 'Text to type',
977
- },
978
- selector: {
979
- type: 'string',
980
- description: 'Optional CSS selector of element to type into',
981
- },
982
- },
983
- required: ['reason', 'text'],
984
- },
985
- },
986
- };
987
-
988
- async function executeBrowserType(args: Record<string, unknown>): Promise<ToolResult> {
989
- const text = args['text'] as string;
990
- const selector = args['selector'] as string | undefined;
991
- const startTime = Date.now();
992
-
993
- logger.toolStart('browser_type', { textLength: text?.length, selector });
994
-
995
- try {
996
- if (!(await browserClient.isBrowserActive())) {
997
- logger.toolError('browser_type', args, new Error('Browser not running'), Date.now() - startTime);
998
- return {
999
- success: false,
1000
- error: 'Browser is not running. Use browser_launch first.',
1001
- };
1002
- }
1003
-
1004
- const response = await browserClient.type(text, selector);
1005
-
1006
- if (!response.success) {
1007
- logger.toolError('browser_type', args, new Error(response.error || 'Failed to type text'), Date.now() - startTime);
1008
- return {
1009
- success: false,
1010
- error: response.error || 'Failed to type text',
1011
- };
1012
- }
1013
-
1014
- logger.toolSuccess('browser_type', args, { textLength: text.length, selector }, Date.now() - startTime);
1015
- return {
1016
- success: true,
1017
- result: `Typed ${text.length} characters${selector ? ` into ${selector}` : ''}`,
1018
- };
1019
- } catch (error) {
1020
- logger.toolError('browser_type', args, error as Error, Date.now() - startTime);
1021
- return {
1022
- success: false,
1023
- error: `Failed to type: ${error instanceof Error ? error.message : String(error)}`,
1024
- };
1025
- }
1026
- }
1027
-
1028
- export const browserTypeTool: LLMSimpleTool = {
1029
- definition: BROWSER_TYPE_DEFINITION,
1030
- execute: executeBrowserType,
1031
- categories: BROWSER_CATEGORIES,
1032
- description: 'Type text character by character',
1033
- };
1034
-
1035
- /**
1036
- * browser_execute_script Tool Definition
1037
- */
1038
- const BROWSER_EXECUTE_SCRIPT_DEFINITION: ToolDefinition = {
1039
- type: 'function',
1040
- function: {
1041
- name: 'browser_execute_script',
1042
- description: `Execute JavaScript code in the browser context.
1043
- The script is automatically wrapped in an async function, so you can use 'return' statements and 'await'.
1044
- Use this only when other browser tools don't cover your use case.
1045
- Examples:
1046
- - "return document.title;" - returns page title
1047
- - "return document.querySelectorAll('a').length;" - count all links
1048
- - "return await fetch('/api/data').then(r => r.json());" - async fetch`,
1049
- parameters: {
1050
- type: 'object',
1051
- properties: {
1052
- reason: {
1053
- type: 'string',
1054
- description: 'Explanation of why you need to execute this script',
1055
- },
1056
- script: {
1057
- type: 'string',
1058
- description: 'JavaScript code to execute (can use return and await)',
1059
- },
1060
- },
1061
- required: ['reason', 'script'],
1062
- },
1063
- },
1064
- };
1065
-
1066
- async function executeBrowserExecuteScript(args: Record<string, unknown>): Promise<ToolResult> {
1067
- const script = args['script'] as string;
1068
- const startTime = Date.now();
1069
-
1070
- logger.toolStart('browser_execute_script', { scriptLength: script?.length });
1071
-
1072
- if (!script) {
1073
- logger.toolError('browser_execute_script', args, new Error('Script argument required'), Date.now() - startTime);
1074
- return {
1075
- success: false,
1076
- error: "The 'script' argument is required.",
1077
- };
1078
- }
1079
-
1080
- try {
1081
- if (!(await browserClient.isBrowserActive())) {
1082
- logger.toolError('browser_execute_script', args, new Error('Browser not running'), Date.now() - startTime);
1083
- return {
1084
- success: false,
1085
- error: 'Browser is not running. Use browser_launch first.',
1086
- };
1087
- }
1088
-
1089
- const response = await browserClient.executeScript(script);
1090
-
1091
- if (!response.success) {
1092
- logger.toolError('browser_execute_script', args, new Error(response.error || 'Failed to execute script'), Date.now() - startTime);
1093
- return {
1094
- success: false,
1095
- error: response.error || 'Failed to execute script',
1096
- result: response['details'] as string,
1097
- };
1098
- }
1099
-
1100
- logger.toolSuccess('browser_execute_script', args, { scriptLength: script.length }, Date.now() - startTime);
1101
- return {
1102
- success: true,
1103
- result: JSON.stringify(response['result'], null, 2),
1104
- };
1105
- } catch (error) {
1106
- logger.toolError('browser_execute_script', args, error as Error, Date.now() - startTime);
1107
- return {
1108
- success: false,
1109
- error: `Failed to execute script: ${error instanceof Error ? error.message : String(error)}`,
1110
- };
1111
- }
1112
- }
1113
-
1114
- export const browserExecuteScriptTool: LLMSimpleTool = {
1115
- definition: BROWSER_EXECUTE_SCRIPT_DEFINITION,
1116
- execute: executeBrowserExecuteScript,
1117
- categories: BROWSER_CATEGORIES,
1118
- description: 'Execute JavaScript in browser',
1119
- };
1120
-
1121
- /**
1122
- * All browser tools
1123
- */
1124
- export const BROWSER_TOOLS: LLMSimpleTool[] = [
1125
- browserLaunchTool,
1126
- browserNavigateTool,
1127
- browserScreenshotTool,
1128
- browserClickTool,
1129
- browserFillTool,
1130
- browserGetTextTool,
1131
- browserGetContentTool,
1132
- browserGetConsoleTool,
1133
- browserGetNetworkTool,
1134
- browserFocusTool,
1135
- browserPressKeyTool,
1136
- browserTypeTool,
1137
- browserExecuteScriptTool,
1138
- browserCloseTool,
1139
- ];