orquesta-cli 0.1.12

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 (851) hide show
  1. package/.eslintrc.json +26 -0
  2. package/.prettierrc.json +10 -0
  3. package/CLAUDE.md +199 -0
  4. package/LICENSE +21 -0
  5. package/README.md +280 -0
  6. package/SECURITY.md +290 -0
  7. package/TEST_LOCAL.md +245 -0
  8. package/dist/agents/base/base-agent.d.ts +38 -0
  9. package/dist/agents/base/base-agent.d.ts.map +1 -0
  10. package/dist/agents/base/base-agent.js +69 -0
  11. package/dist/agents/base/base-agent.js.map +1 -0
  12. package/dist/agents/docs-search/index.d.ts +33 -0
  13. package/dist/agents/docs-search/index.d.ts.map +1 -0
  14. package/dist/agents/docs-search/index.js +244 -0
  15. package/dist/agents/docs-search/index.js.map +1 -0
  16. package/dist/agents/index.d.ts +4 -0
  17. package/dist/agents/index.d.ts.map +1 -0
  18. package/dist/agents/index.js +4 -0
  19. package/dist/agents/index.js.map +1 -0
  20. package/dist/agents/planner/index.d.ts +17 -0
  21. package/dist/agents/planner/index.d.ts.map +1 -0
  22. package/dist/agents/planner/index.js +250 -0
  23. package/dist/agents/planner/index.js.map +1 -0
  24. package/dist/cli.d.ts +3 -0
  25. package/dist/cli.d.ts.map +1 -0
  26. package/dist/cli.js +144 -0
  27. package/dist/cli.js.map +1 -0
  28. package/dist/constants.d.ts +8 -0
  29. package/dist/constants.d.ts.map +1 -0
  30. package/dist/constants.js +10 -0
  31. package/dist/constants.js.map +1 -0
  32. package/dist/core/compact/compact-manager.d.ts +22 -0
  33. package/dist/core/compact/compact-manager.d.ts.map +1 -0
  34. package/dist/core/compact/compact-manager.js +75 -0
  35. package/dist/core/compact/compact-manager.js.map +1 -0
  36. package/dist/core/compact/compact-prompts.d.ts +11 -0
  37. package/dist/core/compact/compact-prompts.d.ts.map +1 -0
  38. package/dist/core/compact/compact-prompts.js +90 -0
  39. package/dist/core/compact/compact-prompts.js.map +1 -0
  40. package/dist/core/compact/context-tracker.d.ts +28 -0
  41. package/dist/core/compact/context-tracker.d.ts.map +1 -0
  42. package/dist/core/compact/context-tracker.js +71 -0
  43. package/dist/core/compact/context-tracker.js.map +1 -0
  44. package/dist/core/compact/index.d.ts +4 -0
  45. package/dist/core/compact/index.d.ts.map +1 -0
  46. package/dist/core/compact/index.js +4 -0
  47. package/dist/core/compact/index.js.map +1 -0
  48. package/dist/core/config/config-manager.d.ts +44 -0
  49. package/dist/core/config/config-manager.d.ts.map +1 -0
  50. package/dist/core/config/config-manager.js +259 -0
  51. package/dist/core/config/config-manager.js.map +1 -0
  52. package/dist/core/config/index.d.ts +2 -0
  53. package/dist/core/config/index.d.ts.map +1 -0
  54. package/dist/core/config/index.js +2 -0
  55. package/dist/core/config/index.js.map +1 -0
  56. package/dist/core/docs-manager.d.ts +46 -0
  57. package/dist/core/docs-manager.d.ts.map +1 -0
  58. package/dist/core/docs-manager.js +475 -0
  59. package/dist/core/docs-manager.js.map +1 -0
  60. package/dist/core/git-auto-updater.d.ts +58 -0
  61. package/dist/core/git-auto-updater.d.ts.map +1 -0
  62. package/dist/core/git-auto-updater.js +374 -0
  63. package/dist/core/git-auto-updater.js.map +1 -0
  64. package/dist/core/llm/index.d.ts +2 -0
  65. package/dist/core/llm/index.d.ts.map +1 -0
  66. package/dist/core/llm/index.js +2 -0
  67. package/dist/core/llm/index.js.map +1 -0
  68. package/dist/core/llm/llm-client.d.ts +97 -0
  69. package/dist/core/llm/llm-client.d.ts.map +1 -0
  70. package/dist/core/llm/llm-client.js +1000 -0
  71. package/dist/core/llm/llm-client.js.map +1 -0
  72. package/dist/core/session/index.d.ts +2 -0
  73. package/dist/core/session/index.d.ts.map +1 -0
  74. package/dist/core/session/index.js +2 -0
  75. package/dist/core/session/index.js.map +1 -0
  76. package/dist/core/session/session-manager.d.ts +71 -0
  77. package/dist/core/session/session-manager.d.ts.map +1 -0
  78. package/dist/core/session/session-manager.js +250 -0
  79. package/dist/core/session/session-manager.js.map +1 -0
  80. package/dist/core/slash-command-handler.d.ts +31 -0
  81. package/dist/core/slash-command-handler.d.ts.map +1 -0
  82. package/dist/core/slash-command-handler.js +302 -0
  83. package/dist/core/slash-command-handler.js.map +1 -0
  84. package/dist/core/usage-tracker.d.ts +70 -0
  85. package/dist/core/usage-tracker.d.ts.map +1 -0
  86. package/dist/core/usage-tracker.js +251 -0
  87. package/dist/core/usage-tracker.js.map +1 -0
  88. package/dist/errors/base.d.ts +22 -0
  89. package/dist/errors/base.d.ts.map +1 -0
  90. package/dist/errors/base.js +43 -0
  91. package/dist/errors/base.js.map +1 -0
  92. package/dist/errors/file.d.ts +31 -0
  93. package/dist/errors/file.d.ts.map +1 -0
  94. package/dist/errors/file.js +110 -0
  95. package/dist/errors/file.js.map +1 -0
  96. package/dist/errors/index.d.ts +10 -0
  97. package/dist/errors/index.d.ts.map +1 -0
  98. package/dist/errors/index.js +41 -0
  99. package/dist/errors/index.js.map +1 -0
  100. package/dist/errors/llm.d.ts +26 -0
  101. package/dist/errors/llm.d.ts.map +1 -0
  102. package/dist/errors/llm.js +86 -0
  103. package/dist/errors/llm.js.map +1 -0
  104. package/dist/errors/network.d.ts +19 -0
  105. package/dist/errors/network.d.ts.map +1 -0
  106. package/dist/errors/network.js +82 -0
  107. package/dist/errors/network.js.map +1 -0
  108. package/dist/errors/validation.d.ts +19 -0
  109. package/dist/errors/validation.d.ts.map +1 -0
  110. package/dist/errors/validation.js +62 -0
  111. package/dist/errors/validation.js.map +1 -0
  112. package/dist/eval/eval-runner.d.ts +24 -0
  113. package/dist/eval/eval-runner.d.ts.map +1 -0
  114. package/dist/eval/eval-runner.js +309 -0
  115. package/dist/eval/eval-runner.js.map +1 -0
  116. package/dist/eval/index.d.ts +3 -0
  117. package/dist/eval/index.d.ts.map +1 -0
  118. package/dist/eval/index.js +3 -0
  119. package/dist/eval/index.js.map +1 -0
  120. package/dist/eval/types.d.ts +77 -0
  121. package/dist/eval/types.d.ts.map +1 -0
  122. package/dist/eval/types.js +2 -0
  123. package/dist/eval/types.js.map +1 -0
  124. package/dist/index.d.ts +4 -0
  125. package/dist/index.d.ts.map +1 -0
  126. package/dist/index.js +6 -0
  127. package/dist/index.js.map +1 -0
  128. package/dist/orchestration/index.d.ts +4 -0
  129. package/dist/orchestration/index.d.ts.map +1 -0
  130. package/dist/orchestration/index.js +3 -0
  131. package/dist/orchestration/index.js.map +1 -0
  132. package/dist/orchestration/plan-executor.d.ts +28 -0
  133. package/dist/orchestration/plan-executor.d.ts.map +1 -0
  134. package/dist/orchestration/plan-executor.js +382 -0
  135. package/dist/orchestration/plan-executor.js.map +1 -0
  136. package/dist/orchestration/types.d.ts +66 -0
  137. package/dist/orchestration/types.d.ts.map +1 -0
  138. package/dist/orchestration/types.js +2 -0
  139. package/dist/orchestration/types.js.map +1 -0
  140. package/dist/orchestration/utils.d.ts +13 -0
  141. package/dist/orchestration/utils.d.ts.map +1 -0
  142. package/dist/orchestration/utils.js +78 -0
  143. package/dist/orchestration/utils.js.map +1 -0
  144. package/dist/orquesta/connection.d.ts +35 -0
  145. package/dist/orquesta/connection.d.ts.map +1 -0
  146. package/dist/orquesta/connection.js +189 -0
  147. package/dist/orquesta/connection.js.map +1 -0
  148. package/dist/prompts/agents/docs-search-decision.d.ts +6 -0
  149. package/dist/prompts/agents/docs-search-decision.d.ts.map +1 -0
  150. package/dist/prompts/agents/docs-search-decision.js +46 -0
  151. package/dist/prompts/agents/docs-search-decision.js.map +1 -0
  152. package/dist/prompts/agents/docs-search.d.ts +4 -0
  153. package/dist/prompts/agents/docs-search.d.ts.map +1 -0
  154. package/dist/prompts/agents/docs-search.js +70 -0
  155. package/dist/prompts/agents/docs-search.js.map +1 -0
  156. package/dist/prompts/agents/planning.d.ts +4 -0
  157. package/dist/prompts/agents/planning.d.ts.map +1 -0
  158. package/dist/prompts/agents/planning.js +119 -0
  159. package/dist/prompts/agents/planning.js.map +1 -0
  160. package/dist/prompts/index.d.ts +10 -0
  161. package/dist/prompts/index.d.ts.map +1 -0
  162. package/dist/prompts/index.js +10 -0
  163. package/dist/prompts/index.js.map +1 -0
  164. package/dist/prompts/shared/codebase-rules.d.ts +4 -0
  165. package/dist/prompts/shared/codebase-rules.d.ts.map +1 -0
  166. package/dist/prompts/shared/codebase-rules.js +16 -0
  167. package/dist/prompts/shared/codebase-rules.js.map +1 -0
  168. package/dist/prompts/shared/git-rules.d.ts +2 -0
  169. package/dist/prompts/shared/git-rules.d.ts.map +1 -0
  170. package/dist/prompts/shared/git-rules.js +87 -0
  171. package/dist/prompts/shared/git-rules.js.map +1 -0
  172. package/dist/prompts/shared/language-rules.d.ts +4 -0
  173. package/dist/prompts/shared/language-rules.d.ts.map +1 -0
  174. package/dist/prompts/shared/language-rules.js +22 -0
  175. package/dist/prompts/shared/language-rules.js.map +1 -0
  176. package/dist/prompts/shared/tool-usage.d.ts +12 -0
  177. package/dist/prompts/shared/tool-usage.d.ts.map +1 -0
  178. package/dist/prompts/shared/tool-usage.js +51 -0
  179. package/dist/prompts/shared/tool-usage.js.map +1 -0
  180. package/dist/prompts/system/compact.d.ts +3 -0
  181. package/dist/prompts/system/compact.d.ts.map +1 -0
  182. package/dist/prompts/system/compact.js +73 -0
  183. package/dist/prompts/system/compact.js.map +1 -0
  184. package/dist/prompts/system/plan-execute.d.ts +3 -0
  185. package/dist/prompts/system/plan-execute.d.ts.map +1 -0
  186. package/dist/prompts/system/plan-execute.js +83 -0
  187. package/dist/prompts/system/plan-execute.js.map +1 -0
  188. package/dist/tools/browser/browser-client.d.ts +107 -0
  189. package/dist/tools/browser/browser-client.d.ts.map +1 -0
  190. package/dist/tools/browser/browser-client.js +958 -0
  191. package/dist/tools/browser/browser-client.js.map +1 -0
  192. package/dist/tools/browser/browser-tools.d.ts +17 -0
  193. package/dist/tools/browser/browser-tools.d.ts.map +1 -0
  194. package/dist/tools/browser/browser-tools.js +972 -0
  195. package/dist/tools/browser/browser-tools.js.map +1 -0
  196. package/dist/tools/browser/index.d.ts +7 -0
  197. package/dist/tools/browser/index.d.ts.map +1 -0
  198. package/dist/tools/browser/index.js +17 -0
  199. package/dist/tools/browser/index.js.map +1 -0
  200. package/dist/tools/index.d.ts +4 -0
  201. package/dist/tools/index.d.ts.map +1 -0
  202. package/dist/tools/index.js +4 -0
  203. package/dist/tools/index.js.map +1 -0
  204. package/dist/tools/llm/agents/docs-search-tools.d.ts +17 -0
  205. package/dist/tools/llm/agents/docs-search-tools.d.ts.map +1 -0
  206. package/dist/tools/llm/agents/docs-search-tools.js +265 -0
  207. package/dist/tools/llm/agents/docs-search-tools.js.map +1 -0
  208. package/dist/tools/llm/agents/index.d.ts +4 -0
  209. package/dist/tools/llm/agents/index.d.ts.map +1 -0
  210. package/dist/tools/llm/agents/index.js +3 -0
  211. package/dist/tools/llm/agents/index.js.map +1 -0
  212. package/dist/tools/llm/index.d.ts +3 -0
  213. package/dist/tools/llm/index.d.ts.map +1 -0
  214. package/dist/tools/llm/index.js +3 -0
  215. package/dist/tools/llm/index.js.map +1 -0
  216. package/dist/tools/llm/simple/ask-user-tool.d.ts +5 -0
  217. package/dist/tools/llm/simple/ask-user-tool.d.ts.map +1 -0
  218. package/dist/tools/llm/simple/ask-user-tool.js +7 -0
  219. package/dist/tools/llm/simple/ask-user-tool.js.map +1 -0
  220. package/dist/tools/llm/simple/background-bash-tool.d.ts +30 -0
  221. package/dist/tools/llm/simple/background-bash-tool.d.ts.map +1 -0
  222. package/dist/tools/llm/simple/background-bash-tool.js +323 -0
  223. package/dist/tools/llm/simple/background-bash-tool.js.map +1 -0
  224. package/dist/tools/llm/simple/background-powershell-tool.d.ts +30 -0
  225. package/dist/tools/llm/simple/background-powershell-tool.d.ts.map +1 -0
  226. package/dist/tools/llm/simple/background-powershell-tool.js +305 -0
  227. package/dist/tools/llm/simple/background-powershell-tool.js.map +1 -0
  228. package/dist/tools/llm/simple/bash-tool.d.ts +4 -0
  229. package/dist/tools/llm/simple/bash-tool.d.ts.map +1 -0
  230. package/dist/tools/llm/simple/bash-tool.js +178 -0
  231. package/dist/tools/llm/simple/bash-tool.js.map +1 -0
  232. package/dist/tools/llm/simple/docs-search-agent-tool.d.ts +6 -0
  233. package/dist/tools/llm/simple/docs-search-agent-tool.d.ts.map +1 -0
  234. package/dist/tools/llm/simple/docs-search-agent-tool.js +104 -0
  235. package/dist/tools/llm/simple/docs-search-agent-tool.js.map +1 -0
  236. package/dist/tools/llm/simple/file-tools.d.ts +13 -0
  237. package/dist/tools/llm/simple/file-tools.d.ts.map +1 -0
  238. package/dist/tools/llm/simple/file-tools.js +785 -0
  239. package/dist/tools/llm/simple/file-tools.js.map +1 -0
  240. package/dist/tools/llm/simple/final-response-tool.d.ts +12 -0
  241. package/dist/tools/llm/simple/final-response-tool.d.ts.map +1 -0
  242. package/dist/tools/llm/simple/final-response-tool.js +107 -0
  243. package/dist/tools/llm/simple/final-response-tool.js.map +1 -0
  244. package/dist/tools/llm/simple/index.d.ts +11 -0
  245. package/dist/tools/llm/simple/index.d.ts.map +1 -0
  246. package/dist/tools/llm/simple/index.js +20 -0
  247. package/dist/tools/llm/simple/index.js.map +1 -0
  248. package/dist/tools/llm/simple/planning-tools.d.ts +5 -0
  249. package/dist/tools/llm/simple/planning-tools.d.ts.map +1 -0
  250. package/dist/tools/llm/simple/planning-tools.js +117 -0
  251. package/dist/tools/llm/simple/planning-tools.js.map +1 -0
  252. package/dist/tools/llm/simple/powershell-tool.d.ts +4 -0
  253. package/dist/tools/llm/simple/powershell-tool.d.ts.map +1 -0
  254. package/dist/tools/llm/simple/powershell-tool.js +178 -0
  255. package/dist/tools/llm/simple/powershell-tool.js.map +1 -0
  256. package/dist/tools/llm/simple/simple-tool-executor.d.ts +38 -0
  257. package/dist/tools/llm/simple/simple-tool-executor.d.ts.map +1 -0
  258. package/dist/tools/llm/simple/simple-tool-executor.js +134 -0
  259. package/dist/tools/llm/simple/simple-tool-executor.js.map +1 -0
  260. package/dist/tools/llm/simple/todo-tools.d.ts +15 -0
  261. package/dist/tools/llm/simple/todo-tools.d.ts.map +1 -0
  262. package/dist/tools/llm/simple/todo-tools.js +145 -0
  263. package/dist/tools/llm/simple/todo-tools.js.map +1 -0
  264. package/dist/tools/llm/simple/user-interaction-tools.d.ts +22 -0
  265. package/dist/tools/llm/simple/user-interaction-tools.d.ts.map +1 -0
  266. package/dist/tools/llm/simple/user-interaction-tools.js +168 -0
  267. package/dist/tools/llm/simple/user-interaction-tools.js.map +1 -0
  268. package/dist/tools/office/common/constants.d.ts +194 -0
  269. package/dist/tools/office/common/constants.d.ts.map +1 -0
  270. package/dist/tools/office/common/constants.js +169 -0
  271. package/dist/tools/office/common/constants.js.map +1 -0
  272. package/dist/tools/office/common/index.d.ts +4 -0
  273. package/dist/tools/office/common/index.d.ts.map +1 -0
  274. package/dist/tools/office/common/index.js +3 -0
  275. package/dist/tools/office/common/index.js.map +1 -0
  276. package/dist/tools/office/common/types.d.ts +82 -0
  277. package/dist/tools/office/common/types.d.ts.map +1 -0
  278. package/dist/tools/office/common/types.js +2 -0
  279. package/dist/tools/office/common/types.js.map +1 -0
  280. package/dist/tools/office/common/utils.d.ts +14 -0
  281. package/dist/tools/office/common/utils.d.ts.map +1 -0
  282. package/dist/tools/office/common/utils.js +58 -0
  283. package/dist/tools/office/common/utils.js.map +1 -0
  284. package/dist/tools/office/excel-client.d.ts +123 -0
  285. package/dist/tools/office/excel-client.d.ts.map +1 -0
  286. package/dist/tools/office/excel-client.js +1037 -0
  287. package/dist/tools/office/excel-client.js.map +1 -0
  288. package/dist/tools/office/excel-tools/cells.d.ts +10 -0
  289. package/dist/tools/office/excel-tools/cells.d.ts.map +1 -0
  290. package/dist/tools/office/excel-tools/cells.js +279 -0
  291. package/dist/tools/office/excel-tools/cells.js.map +1 -0
  292. package/dist/tools/office/excel-tools/charts.d.ts +6 -0
  293. package/dist/tools/office/excel-tools/charts.d.ts.map +1 -0
  294. package/dist/tools/office/excel-tools/charts.js +124 -0
  295. package/dist/tools/office/excel-tools/charts.js.map +1 -0
  296. package/dist/tools/office/excel-tools/comments.d.ts +6 -0
  297. package/dist/tools/office/excel-tools/comments.d.ts.map +1 -0
  298. package/dist/tools/office/excel-tools/comments.js +114 -0
  299. package/dist/tools/office/excel-tools/comments.js.map +1 -0
  300. package/dist/tools/office/excel-tools/data-ops.d.ts +10 -0
  301. package/dist/tools/office/excel-tools/data-ops.d.ts.map +1 -0
  302. package/dist/tools/office/excel-tools/data-ops.js +266 -0
  303. package/dist/tools/office/excel-tools/data-ops.js.map +1 -0
  304. package/dist/tools/office/excel-tools/export.d.ts +5 -0
  305. package/dist/tools/office/excel-tools/export.d.ts.map +1 -0
  306. package/dist/tools/office/excel-tools/export.js +75 -0
  307. package/dist/tools/office/excel-tools/export.js.map +1 -0
  308. package/dist/tools/office/excel-tools/formatting.d.ts +10 -0
  309. package/dist/tools/office/excel-tools/formatting.d.ts.map +1 -0
  310. package/dist/tools/office/excel-tools/formatting.js +276 -0
  311. package/dist/tools/office/excel-tools/formatting.js.map +1 -0
  312. package/dist/tools/office/excel-tools/index.d.ts +16 -0
  313. package/dist/tools/office/excel-tools/index.d.ts.map +1 -0
  314. package/dist/tools/office/excel-tools/index.js +42 -0
  315. package/dist/tools/office/excel-tools/index.js.map +1 -0
  316. package/dist/tools/office/excel-tools/launch.d.ts +10 -0
  317. package/dist/tools/office/excel-tools/launch.d.ts.map +1 -0
  318. package/dist/tools/office/excel-tools/launch.js +248 -0
  319. package/dist/tools/office/excel-tools/launch.js.map +1 -0
  320. package/dist/tools/office/excel-tools/media.d.ts +5 -0
  321. package/dist/tools/office/excel-tools/media.d.ts.map +1 -0
  322. package/dist/tools/office/excel-tools/media.js +84 -0
  323. package/dist/tools/office/excel-tools/media.js.map +1 -0
  324. package/dist/tools/office/excel-tools/named-ranges.d.ts +6 -0
  325. package/dist/tools/office/excel-tools/named-ranges.d.ts.map +1 -0
  326. package/dist/tools/office/excel-tools/named-ranges.js +113 -0
  327. package/dist/tools/office/excel-tools/named-ranges.js.map +1 -0
  328. package/dist/tools/office/excel-tools/protection.d.ts +5 -0
  329. package/dist/tools/office/excel-tools/protection.d.ts.map +1 -0
  330. package/dist/tools/office/excel-tools/protection.js +75 -0
  331. package/dist/tools/office/excel-tools/protection.js.map +1 -0
  332. package/dist/tools/office/excel-tools/rows-columns.d.ts +11 -0
  333. package/dist/tools/office/excel-tools/rows-columns.d.ts.map +1 -0
  334. package/dist/tools/office/excel-tools/rows-columns.js +293 -0
  335. package/dist/tools/office/excel-tools/rows-columns.js.map +1 -0
  336. package/dist/tools/office/excel-tools/sheets.d.ts +8 -0
  337. package/dist/tools/office/excel-tools/sheets.d.ts.map +1 -0
  338. package/dist/tools/office/excel-tools/sheets.js +177 -0
  339. package/dist/tools/office/excel-tools/sheets.js.map +1 -0
  340. package/dist/tools/office/excel-tools/validation.d.ts +7 -0
  341. package/dist/tools/office/excel-tools/validation.d.ts.map +1 -0
  342. package/dist/tools/office/excel-tools/validation.js +175 -0
  343. package/dist/tools/office/excel-tools/validation.js.map +1 -0
  344. package/dist/tools/office/excel-tools.d.ts +3 -0
  345. package/dist/tools/office/excel-tools.d.ts.map +1 -0
  346. package/dist/tools/office/excel-tools.js +3 -0
  347. package/dist/tools/office/excel-tools.js.map +1 -0
  348. package/dist/tools/office/index.d.ts +6 -0
  349. package/dist/tools/office/index.d.ts.map +1 -0
  350. package/dist/tools/office/index.js +9 -0
  351. package/dist/tools/office/index.js.map +1 -0
  352. package/dist/tools/office/office-client-base.d.ts +31 -0
  353. package/dist/tools/office/office-client-base.d.ts.map +1 -0
  354. package/dist/tools/office/office-client-base.js +154 -0
  355. package/dist/tools/office/office-client-base.js.map +1 -0
  356. package/dist/tools/office/office-client.d.ts +196 -0
  357. package/dist/tools/office/office-client.d.ts.map +1 -0
  358. package/dist/tools/office/office-client.js +200 -0
  359. package/dist/tools/office/office-client.js.map +1 -0
  360. package/dist/tools/office/powerpoint-client.d.ts +135 -0
  361. package/dist/tools/office/powerpoint-client.d.ts.map +1 -0
  362. package/dist/tools/office/powerpoint-client.js +1136 -0
  363. package/dist/tools/office/powerpoint-client.js.map +1 -0
  364. package/dist/tools/office/powerpoint-tools/effects.d.ts +9 -0
  365. package/dist/tools/office/powerpoint-tools/effects.d.ts.map +1 -0
  366. package/dist/tools/office/powerpoint-tools/effects.js +246 -0
  367. package/dist/tools/office/powerpoint-tools/effects.js.map +1 -0
  368. package/dist/tools/office/powerpoint-tools/export.d.ts +6 -0
  369. package/dist/tools/office/powerpoint-tools/export.d.ts.map +1 -0
  370. package/dist/tools/office/powerpoint-tools/export.js +108 -0
  371. package/dist/tools/office/powerpoint-tools/export.js.map +1 -0
  372. package/dist/tools/office/powerpoint-tools/index.d.ts +13 -0
  373. package/dist/tools/office/powerpoint-tools/index.d.ts.map +1 -0
  374. package/dist/tools/office/powerpoint-tools/index.js +33 -0
  375. package/dist/tools/office/powerpoint-tools/index.js.map +1 -0
  376. package/dist/tools/office/powerpoint-tools/launch.d.ts +9 -0
  377. package/dist/tools/office/powerpoint-tools/launch.d.ts.map +1 -0
  378. package/dist/tools/office/powerpoint-tools/launch.js +214 -0
  379. package/dist/tools/office/powerpoint-tools/launch.js.map +1 -0
  380. package/dist/tools/office/powerpoint-tools/media.d.ts +8 -0
  381. package/dist/tools/office/powerpoint-tools/media.d.ts.map +1 -0
  382. package/dist/tools/office/powerpoint-tools/media.js +211 -0
  383. package/dist/tools/office/powerpoint-tools/media.js.map +1 -0
  384. package/dist/tools/office/powerpoint-tools/notes.d.ts +8 -0
  385. package/dist/tools/office/powerpoint-tools/notes.d.ts.map +1 -0
  386. package/dist/tools/office/powerpoint-tools/notes.js +171 -0
  387. package/dist/tools/office/powerpoint-tools/notes.js.map +1 -0
  388. package/dist/tools/office/powerpoint-tools/sections.d.ts +6 -0
  389. package/dist/tools/office/powerpoint-tools/sections.d.ts.map +1 -0
  390. package/dist/tools/office/powerpoint-tools/sections.js +104 -0
  391. package/dist/tools/office/powerpoint-tools/sections.js.map +1 -0
  392. package/dist/tools/office/powerpoint-tools/shapes.d.ts +22 -0
  393. package/dist/tools/office/powerpoint-tools/shapes.d.ts.map +1 -0
  394. package/dist/tools/office/powerpoint-tools/shapes.js +681 -0
  395. package/dist/tools/office/powerpoint-tools/shapes.js.map +1 -0
  396. package/dist/tools/office/powerpoint-tools/slides.d.ts +11 -0
  397. package/dist/tools/office/powerpoint-tools/slides.d.ts.map +1 -0
  398. package/dist/tools/office/powerpoint-tools/slides.js +283 -0
  399. package/dist/tools/office/powerpoint-tools/slides.js.map +1 -0
  400. package/dist/tools/office/powerpoint-tools/tables.d.ts +6 -0
  401. package/dist/tools/office/powerpoint-tools/tables.d.ts.map +1 -0
  402. package/dist/tools/office/powerpoint-tools/tables.js +132 -0
  403. package/dist/tools/office/powerpoint-tools/tables.js.map +1 -0
  404. package/dist/tools/office/powerpoint-tools/text.d.ts +12 -0
  405. package/dist/tools/office/powerpoint-tools/text.d.ts.map +1 -0
  406. package/dist/tools/office/powerpoint-tools/text.js +366 -0
  407. package/dist/tools/office/powerpoint-tools/text.js.map +1 -0
  408. package/dist/tools/office/powerpoint-tools.d.ts +3 -0
  409. package/dist/tools/office/powerpoint-tools.d.ts.map +1 -0
  410. package/dist/tools/office/powerpoint-tools.js +3 -0
  411. package/dist/tools/office/powerpoint-tools.js.map +1 -0
  412. package/dist/tools/office/word-client.d.ts +147 -0
  413. package/dist/tools/office/word-client.d.ts.map +1 -0
  414. package/dist/tools/office/word-client.js +1341 -0
  415. package/dist/tools/office/word-client.js.map +1 -0
  416. package/dist/tools/office/word-tools/bookmarks.d.ts +7 -0
  417. package/dist/tools/office/word-tools/bookmarks.d.ts.map +1 -0
  418. package/dist/tools/office/word-tools/bookmarks.js +146 -0
  419. package/dist/tools/office/word-tools/bookmarks.js.map +1 -0
  420. package/dist/tools/office/word-tools/comments.d.ts +7 -0
  421. package/dist/tools/office/word-tools/comments.d.ts.map +1 -0
  422. package/dist/tools/office/word-tools/comments.js +146 -0
  423. package/dist/tools/office/word-tools/comments.js.map +1 -0
  424. package/dist/tools/office/word-tools/content.d.ts +7 -0
  425. package/dist/tools/office/word-tools/content.d.ts.map +1 -0
  426. package/dist/tools/office/word-tools/content.js +168 -0
  427. package/dist/tools/office/word-tools/content.js.map +1 -0
  428. package/dist/tools/office/word-tools/export.d.ts +5 -0
  429. package/dist/tools/office/word-tools/export.d.ts.map +1 -0
  430. package/dist/tools/office/word-tools/export.js +73 -0
  431. package/dist/tools/office/word-tools/export.js.map +1 -0
  432. package/dist/tools/office/word-tools/formatting.d.ts +6 -0
  433. package/dist/tools/office/word-tools/formatting.d.ts.map +1 -0
  434. package/dist/tools/office/word-tools/formatting.js +129 -0
  435. package/dist/tools/office/word-tools/formatting.js.map +1 -0
  436. package/dist/tools/office/word-tools/headers-footers.d.ts +6 -0
  437. package/dist/tools/office/word-tools/headers-footers.d.ts.map +1 -0
  438. package/dist/tools/office/word-tools/headers-footers.js +117 -0
  439. package/dist/tools/office/word-tools/headers-footers.js.map +1 -0
  440. package/dist/tools/office/word-tools/index.d.ts +16 -0
  441. package/dist/tools/office/word-tools/index.d.ts.map +1 -0
  442. package/dist/tools/office/word-tools/index.js +45 -0
  443. package/dist/tools/office/word-tools/index.js.map +1 -0
  444. package/dist/tools/office/word-tools/launch.d.ts +10 -0
  445. package/dist/tools/office/word-tools/launch.d.ts.map +1 -0
  446. package/dist/tools/office/word-tools/launch.js +255 -0
  447. package/dist/tools/office/word-tools/launch.js.map +1 -0
  448. package/dist/tools/office/word-tools/lists.d.ts +5 -0
  449. package/dist/tools/office/word-tools/lists.d.ts.map +1 -0
  450. package/dist/tools/office/word-tools/lists.js +73 -0
  451. package/dist/tools/office/word-tools/lists.js.map +1 -0
  452. package/dist/tools/office/word-tools/navigation.d.ts +5 -0
  453. package/dist/tools/office/word-tools/navigation.d.ts.map +1 -0
  454. package/dist/tools/office/word-tools/navigation.js +85 -0
  455. package/dist/tools/office/word-tools/navigation.js.map +1 -0
  456. package/dist/tools/office/word-tools/page-setup.d.ts +7 -0
  457. package/dist/tools/office/word-tools/page-setup.d.ts.map +1 -0
  458. package/dist/tools/office/word-tools/page-setup.js +152 -0
  459. package/dist/tools/office/word-tools/page-setup.js.map +1 -0
  460. package/dist/tools/office/word-tools/tables.d.ts +8 -0
  461. package/dist/tools/office/word-tools/tables.d.ts.map +1 -0
  462. package/dist/tools/office/word-tools/tables.js +197 -0
  463. package/dist/tools/office/word-tools/tables.js.map +1 -0
  464. package/dist/tools/office/word-tools/text.d.ts +9 -0
  465. package/dist/tools/office/word-tools/text.d.ts.map +1 -0
  466. package/dist/tools/office/word-tools/text.js +235 -0
  467. package/dist/tools/office/word-tools/text.js.map +1 -0
  468. package/dist/tools/office/word-tools/undo-redo.d.ts +5 -0
  469. package/dist/tools/office/word-tools/undo-redo.d.ts.map +1 -0
  470. package/dist/tools/office/word-tools/undo-redo.js +73 -0
  471. package/dist/tools/office/word-tools/undo-redo.js.map +1 -0
  472. package/dist/tools/office/word-tools/watermarks.d.ts +5 -0
  473. package/dist/tools/office/word-tools/watermarks.d.ts.map +1 -0
  474. package/dist/tools/office/word-tools/watermarks.js +81 -0
  475. package/dist/tools/office/word-tools/watermarks.js.map +1 -0
  476. package/dist/tools/office/word-tools.d.ts +3 -0
  477. package/dist/tools/office/word-tools.d.ts.map +1 -0
  478. package/dist/tools/office/word-tools.js +3 -0
  479. package/dist/tools/office/word-tools.js.map +1 -0
  480. package/dist/tools/registry.d.ts +53 -0
  481. package/dist/tools/registry.d.ts.map +1 -0
  482. package/dist/tools/registry.js +278 -0
  483. package/dist/tools/registry.js.map +1 -0
  484. package/dist/tools/types.d.ts +88 -0
  485. package/dist/tools/types.d.ts.map +1 -0
  486. package/dist/tools/types.js +19 -0
  487. package/dist/tools/types.js.map +1 -0
  488. package/dist/types/index.d.ts +126 -0
  489. package/dist/types/index.d.ts.map +1 -0
  490. package/dist/types/index.js +2 -0
  491. package/dist/types/index.js.map +1 -0
  492. package/dist/ui/PlanExecuteView.d.ts +11 -0
  493. package/dist/ui/PlanExecuteView.d.ts.map +1 -0
  494. package/dist/ui/PlanExecuteView.js +29 -0
  495. package/dist/ui/PlanExecuteView.js.map +1 -0
  496. package/dist/ui/TodoPanel.d.ts +13 -0
  497. package/dist/ui/TodoPanel.d.ts.map +1 -0
  498. package/dist/ui/TodoPanel.js +135 -0
  499. package/dist/ui/TodoPanel.js.map +1 -0
  500. package/dist/ui/UpdateNotification.d.ts +13 -0
  501. package/dist/ui/UpdateNotification.d.ts.map +1 -0
  502. package/dist/ui/UpdateNotification.js +42 -0
  503. package/dist/ui/UpdateNotification.js.map +1 -0
  504. package/dist/ui/components/ActivityIndicator.d.ts +25 -0
  505. package/dist/ui/components/ActivityIndicator.d.ts.map +1 -0
  506. package/dist/ui/components/ActivityIndicator.js +115 -0
  507. package/dist/ui/components/ActivityIndicator.js.map +1 -0
  508. package/dist/ui/components/CommandBrowser.d.ts +10 -0
  509. package/dist/ui/components/CommandBrowser.d.ts.map +1 -0
  510. package/dist/ui/components/CommandBrowser.js +53 -0
  511. package/dist/ui/components/CommandBrowser.js.map +1 -0
  512. package/dist/ui/components/CustomTextInput.d.ts +13 -0
  513. package/dist/ui/components/CustomTextInput.d.ts.map +1 -0
  514. package/dist/ui/components/CustomTextInput.js +245 -0
  515. package/dist/ui/components/CustomTextInput.js.map +1 -0
  516. package/dist/ui/components/DocsSearchProgress.d.ts +13 -0
  517. package/dist/ui/components/DocsSearchProgress.d.ts.map +1 -0
  518. package/dist/ui/components/DocsSearchProgress.js +37 -0
  519. package/dist/ui/components/DocsSearchProgress.js.map +1 -0
  520. package/dist/ui/components/FileBrowser.d.ts +11 -0
  521. package/dist/ui/components/FileBrowser.d.ts.map +1 -0
  522. package/dist/ui/components/FileBrowser.js +45 -0
  523. package/dist/ui/components/FileBrowser.js.map +1 -0
  524. package/dist/ui/components/LLMSetupWizard.d.ts +8 -0
  525. package/dist/ui/components/LLMSetupWizard.d.ts.map +1 -0
  526. package/dist/ui/components/LLMSetupWizard.js +192 -0
  527. package/dist/ui/components/LLMSetupWizard.js.map +1 -0
  528. package/dist/ui/components/Logo.d.ts +19 -0
  529. package/dist/ui/components/Logo.d.ts.map +1 -0
  530. package/dist/ui/components/Logo.js +55 -0
  531. package/dist/ui/components/Logo.js.map +1 -0
  532. package/dist/ui/components/MarkdownRenderer.d.ts +9 -0
  533. package/dist/ui/components/MarkdownRenderer.d.ts.map +1 -0
  534. package/dist/ui/components/MarkdownRenderer.js +198 -0
  535. package/dist/ui/components/MarkdownRenderer.js.map +1 -0
  536. package/dist/ui/components/ModelSelector.d.ts +8 -0
  537. package/dist/ui/components/ModelSelector.d.ts.map +1 -0
  538. package/dist/ui/components/ModelSelector.js +111 -0
  539. package/dist/ui/components/ModelSelector.js.map +1 -0
  540. package/dist/ui/components/PlanExecuteApp.d.ts +23 -0
  541. package/dist/ui/components/PlanExecuteApp.d.ts.map +1 -0
  542. package/dist/ui/components/PlanExecuteApp.js +1324 -0
  543. package/dist/ui/components/PlanExecuteApp.js.map +1 -0
  544. package/dist/ui/components/ProgressBar.d.ts +10 -0
  545. package/dist/ui/components/ProgressBar.d.ts.map +1 -0
  546. package/dist/ui/components/ProgressBar.js +26 -0
  547. package/dist/ui/components/ProgressBar.js.map +1 -0
  548. package/dist/ui/components/StatusBar.d.ts +23 -0
  549. package/dist/ui/components/StatusBar.d.ts.map +1 -0
  550. package/dist/ui/components/StatusBar.js +162 -0
  551. package/dist/ui/components/StatusBar.js.map +1 -0
  552. package/dist/ui/components/ThinkingIndicator.d.ts +14 -0
  553. package/dist/ui/components/ThinkingIndicator.d.ts.map +1 -0
  554. package/dist/ui/components/ThinkingIndicator.js +63 -0
  555. package/dist/ui/components/ThinkingIndicator.js.map +1 -0
  556. package/dist/ui/components/TodoListView.d.ts +11 -0
  557. package/dist/ui/components/TodoListView.d.ts.map +1 -0
  558. package/dist/ui/components/TodoListView.js +69 -0
  559. package/dist/ui/components/TodoListView.js.map +1 -0
  560. package/dist/ui/components/ToolSelector.d.ts +7 -0
  561. package/dist/ui/components/ToolSelector.d.ts.map +1 -0
  562. package/dist/ui/components/ToolSelector.js +111 -0
  563. package/dist/ui/components/ToolSelector.js.map +1 -0
  564. package/dist/ui/components/dialogs/ApprovalDialog.d.ts +13 -0
  565. package/dist/ui/components/dialogs/ApprovalDialog.d.ts.map +1 -0
  566. package/dist/ui/components/dialogs/ApprovalDialog.js +173 -0
  567. package/dist/ui/components/dialogs/ApprovalDialog.js.map +1 -0
  568. package/dist/ui/components/dialogs/AskUserDialog.d.ts +9 -0
  569. package/dist/ui/components/dialogs/AskUserDialog.d.ts.map +1 -0
  570. package/dist/ui/components/dialogs/AskUserDialog.js +111 -0
  571. package/dist/ui/components/dialogs/AskUserDialog.js.map +1 -0
  572. package/dist/ui/components/dialogs/DocsBrowser.d.ts +8 -0
  573. package/dist/ui/components/dialogs/DocsBrowser.d.ts.map +1 -0
  574. package/dist/ui/components/dialogs/DocsBrowser.js +127 -0
  575. package/dist/ui/components/dialogs/DocsBrowser.js.map +1 -0
  576. package/dist/ui/components/dialogs/SettingsDialog.d.ts +10 -0
  577. package/dist/ui/components/dialogs/SettingsDialog.d.ts.map +1 -0
  578. package/dist/ui/components/dialogs/SettingsDialog.js +563 -0
  579. package/dist/ui/components/dialogs/SettingsDialog.js.map +1 -0
  580. package/dist/ui/components/dialogs/index.d.ts +4 -0
  581. package/dist/ui/components/dialogs/index.d.ts.map +1 -0
  582. package/dist/ui/components/dialogs/index.js +4 -0
  583. package/dist/ui/components/dialogs/index.js.map +1 -0
  584. package/dist/ui/components/index.d.ts +12 -0
  585. package/dist/ui/components/index.d.ts.map +1 -0
  586. package/dist/ui/components/index.js +9 -0
  587. package/dist/ui/components/index.js.map +1 -0
  588. package/dist/ui/components/panels/LogPanel.d.ts +7 -0
  589. package/dist/ui/components/panels/LogPanel.d.ts.map +1 -0
  590. package/dist/ui/components/panels/LogPanel.js +280 -0
  591. package/dist/ui/components/panels/LogPanel.js.map +1 -0
  592. package/dist/ui/components/panels/SessionPanel.d.ts +8 -0
  593. package/dist/ui/components/panels/SessionPanel.d.ts.map +1 -0
  594. package/dist/ui/components/panels/SessionPanel.js +81 -0
  595. package/dist/ui/components/panels/SessionPanel.js.map +1 -0
  596. package/dist/ui/components/panels/index.d.ts +4 -0
  597. package/dist/ui/components/panels/index.d.ts.map +1 -0
  598. package/dist/ui/components/panels/index.js +4 -0
  599. package/dist/ui/components/panels/index.js.map +1 -0
  600. package/dist/ui/components/views/ChatView.d.ts +12 -0
  601. package/dist/ui/components/views/ChatView.d.ts.map +1 -0
  602. package/dist/ui/components/views/ChatView.js +289 -0
  603. package/dist/ui/components/views/ChatView.js.map +1 -0
  604. package/dist/ui/components/views/index.d.ts +2 -0
  605. package/dist/ui/components/views/index.d.ts.map +1 -0
  606. package/dist/ui/components/views/index.js +2 -0
  607. package/dist/ui/components/views/index.js.map +1 -0
  608. package/dist/ui/contexts/TokenContext.d.ts +29 -0
  609. package/dist/ui/contexts/TokenContext.d.ts.map +1 -0
  610. package/dist/ui/contexts/TokenContext.js +79 -0
  611. package/dist/ui/contexts/TokenContext.js.map +1 -0
  612. package/dist/ui/hooks/atFileProcessor.d.ts +15 -0
  613. package/dist/ui/hooks/atFileProcessor.d.ts.map +1 -0
  614. package/dist/ui/hooks/atFileProcessor.js +88 -0
  615. package/dist/ui/hooks/atFileProcessor.js.map +1 -0
  616. package/dist/ui/hooks/index.d.ts +8 -0
  617. package/dist/ui/hooks/index.d.ts.map +1 -0
  618. package/dist/ui/hooks/index.js +8 -0
  619. package/dist/ui/hooks/index.js.map +1 -0
  620. package/dist/ui/hooks/slashCommandProcessor.d.ts +21 -0
  621. package/dist/ui/hooks/slashCommandProcessor.d.ts.map +1 -0
  622. package/dist/ui/hooks/slashCommandProcessor.js +100 -0
  623. package/dist/ui/hooks/slashCommandProcessor.js.map +1 -0
  624. package/dist/ui/hooks/useCommandBrowserState.d.ts +12 -0
  625. package/dist/ui/hooks/useCommandBrowserState.d.ts.map +1 -0
  626. package/dist/ui/hooks/useCommandBrowserState.js +66 -0
  627. package/dist/ui/hooks/useCommandBrowserState.js.map +1 -0
  628. package/dist/ui/hooks/useFileBrowserState.d.ts +15 -0
  629. package/dist/ui/hooks/useFileBrowserState.d.ts.map +1 -0
  630. package/dist/ui/hooks/useFileBrowserState.js +80 -0
  631. package/dist/ui/hooks/useFileBrowserState.js.map +1 -0
  632. package/dist/ui/hooks/useFileList.d.ts +20 -0
  633. package/dist/ui/hooks/useFileList.d.ts.map +1 -0
  634. package/dist/ui/hooks/useFileList.js +57 -0
  635. package/dist/ui/hooks/useFileList.js.map +1 -0
  636. package/dist/ui/hooks/useInputHistory.d.ts +9 -0
  637. package/dist/ui/hooks/useInputHistory.d.ts.map +1 -0
  638. package/dist/ui/hooks/useInputHistory.js +68 -0
  639. package/dist/ui/hooks/useInputHistory.js.map +1 -0
  640. package/dist/ui/hooks/usePlanExecution.d.ts +8 -0
  641. package/dist/ui/hooks/usePlanExecution.d.ts.map +1 -0
  642. package/dist/ui/hooks/usePlanExecution.js +214 -0
  643. package/dist/ui/hooks/usePlanExecution.js.map +1 -0
  644. package/dist/ui/index.d.ts +7 -0
  645. package/dist/ui/index.d.ts.map +1 -0
  646. package/dist/ui/index.js +7 -0
  647. package/dist/ui/index.js.map +1 -0
  648. package/dist/ui/ink-entry.d.ts +3 -0
  649. package/dist/ui/ink-entry.d.ts.map +1 -0
  650. package/dist/ui/ink-entry.js +22 -0
  651. package/dist/ui/ink-entry.js.map +1 -0
  652. package/dist/utils/env-filter.d.ts +4 -0
  653. package/dist/utils/env-filter.d.ts.map +1 -0
  654. package/dist/utils/env-filter.js +101 -0
  655. package/dist/utils/env-filter.js.map +1 -0
  656. package/dist/utils/file-system.d.ts +9 -0
  657. package/dist/utils/file-system.d.ts.map +1 -0
  658. package/dist/utils/file-system.js +99 -0
  659. package/dist/utils/file-system.js.map +1 -0
  660. package/dist/utils/git-utils.d.ts +2 -0
  661. package/dist/utils/git-utils.d.ts.map +1 -0
  662. package/dist/utils/git-utils.js +16 -0
  663. package/dist/utils/git-utils.js.map +1 -0
  664. package/dist/utils/json-stream-logger.d.ts +74 -0
  665. package/dist/utils/json-stream-logger.d.ts.map +1 -0
  666. package/dist/utils/json-stream-logger.js +808 -0
  667. package/dist/utils/json-stream-logger.js.map +1 -0
  668. package/dist/utils/logger.d.ts +152 -0
  669. package/dist/utils/logger.d.ts.map +1 -0
  670. package/dist/utils/logger.js +1672 -0
  671. package/dist/utils/logger.js.map +1 -0
  672. package/dist/utils/platform-utils.d.ts +19 -0
  673. package/dist/utils/platform-utils.d.ts.map +1 -0
  674. package/dist/utils/platform-utils.js +134 -0
  675. package/dist/utils/platform-utils.js.map +1 -0
  676. package/dist/utils/wsl-utils.d.ts +4 -0
  677. package/dist/utils/wsl-utils.d.ts.map +1 -0
  678. package/dist/utils/wsl-utils.js +72 -0
  679. package/dist/utils/wsl-utils.js.map +1 -0
  680. package/electron.vite.config.ts +63 -0
  681. package/google374b9eba0c52b043.html +1 -0
  682. package/package.json +122 -0
  683. package/src/agents/base/base-agent.ts +159 -0
  684. package/src/agents/docs-search/index.ts +365 -0
  685. package/src/agents/index.ts +34 -0
  686. package/src/agents/planner/index.ts +544 -0
  687. package/src/cli.ts +201 -0
  688. package/src/constants.ts +47 -0
  689. package/src/core/compact/compact-manager.ts +160 -0
  690. package/src/core/compact/compact-prompts.ts +150 -0
  691. package/src/core/compact/context-tracker.ts +164 -0
  692. package/src/core/compact/index.ts +25 -0
  693. package/src/core/config/config-manager.ts +460 -0
  694. package/src/core/config/index.ts +5 -0
  695. package/src/core/docs-manager.ts +678 -0
  696. package/src/core/llm/index.ts +7 -0
  697. package/src/core/llm/llm-client.ts +1550 -0
  698. package/src/core/session/index.ts +5 -0
  699. package/src/core/session/session-manager.ts +464 -0
  700. package/src/core/slash-command-handler.ts +410 -0
  701. package/src/core/usage-tracker.ts +438 -0
  702. package/src/errors/base.ts +81 -0
  703. package/src/errors/file.ts +183 -0
  704. package/src/errors/index.ts +95 -0
  705. package/src/errors/llm.ts +151 -0
  706. package/src/errors/network.ts +124 -0
  707. package/src/errors/validation.ts +111 -0
  708. package/src/eval/eval-runner.ts +456 -0
  709. package/src/eval/index.ts +8 -0
  710. package/src/eval/types.ts +139 -0
  711. package/src/index.ts +22 -0
  712. package/src/orchestration/index.ts +30 -0
  713. package/src/orchestration/plan-executor.ts +652 -0
  714. package/src/orchestration/types.ts +127 -0
  715. package/src/orchestration/utils.ts +119 -0
  716. package/src/orquesta/connection.ts +291 -0
  717. package/src/prompts/agents/docs-search-decision.ts +74 -0
  718. package/src/prompts/agents/docs-search.ts +84 -0
  719. package/src/prompts/agents/planning.ts +143 -0
  720. package/src/prompts/index.ts +31 -0
  721. package/src/prompts/shared/codebase-rules.ts +29 -0
  722. package/src/prompts/shared/git-rules.ts +94 -0
  723. package/src/prompts/shared/language-rules.ts +36 -0
  724. package/src/prompts/shared/tool-usage.ts +72 -0
  725. package/src/prompts/system/compact.ts +80 -0
  726. package/src/prompts/system/plan-execute.ts +89 -0
  727. package/src/tools/browser/browser-client.ts +1363 -0
  728. package/src/tools/browser/browser-tools.ts +1139 -0
  729. package/src/tools/browser/index.ts +65 -0
  730. package/src/tools/index.ts +23 -0
  731. package/src/tools/llm/agents/docs-search-tools.ts +368 -0
  732. package/src/tools/llm/agents/index.ts +22 -0
  733. package/src/tools/llm/index.ts +11 -0
  734. package/src/tools/llm/simple/ask-user-tool.ts +25 -0
  735. package/src/tools/llm/simple/background-bash-tool.ts +443 -0
  736. package/src/tools/llm/simple/background-powershell-tool.ts +421 -0
  737. package/src/tools/llm/simple/bash-tool.ts +238 -0
  738. package/src/tools/llm/simple/docs-search-agent-tool.ts +146 -0
  739. package/src/tools/llm/simple/file-tools.ts +1051 -0
  740. package/src/tools/llm/simple/final-response-tool.ts +180 -0
  741. package/src/tools/llm/simple/index.ts +42 -0
  742. package/src/tools/llm/simple/planning-tools.ts +143 -0
  743. package/src/tools/llm/simple/powershell-tool.ts +241 -0
  744. package/src/tools/llm/simple/simple-tool-executor.ts +279 -0
  745. package/src/tools/llm/simple/todo-tools.ts +207 -0
  746. package/src/tools/llm/simple/user-interaction-tools.ts +277 -0
  747. package/src/tools/office/common/constants.ts +335 -0
  748. package/src/tools/office/common/index.ts +133 -0
  749. package/src/tools/office/common/types.ts +286 -0
  750. package/src/tools/office/common/utils.ts +116 -0
  751. package/src/tools/office/excel-client.ts +1336 -0
  752. package/src/tools/office/excel-tools/cells.ts +359 -0
  753. package/src/tools/office/excel-tools/charts.ts +166 -0
  754. package/src/tools/office/excel-tools/comments.ts +155 -0
  755. package/src/tools/office/excel-tools/data-ops.ts +349 -0
  756. package/src/tools/office/excel-tools/export.ts +105 -0
  757. package/src/tools/office/excel-tools/formatting.ts +357 -0
  758. package/src/tools/office/excel-tools/index.ts +55 -0
  759. package/src/tools/office/excel-tools/launch.ts +303 -0
  760. package/src/tools/office/excel-tools/media.ts +117 -0
  761. package/src/tools/office/excel-tools/named-ranges.ts +148 -0
  762. package/src/tools/office/excel-tools/protection.ts +105 -0
  763. package/src/tools/office/excel-tools/rows-columns.ts +386 -0
  764. package/src/tools/office/excel-tools/sheets.ts +228 -0
  765. package/src/tools/office/excel-tools/validation.ts +226 -0
  766. package/src/tools/office/excel-tools.ts +9 -0
  767. package/src/tools/office/index.ts +259 -0
  768. package/src/tools/office/office-client-base.ts +242 -0
  769. package/src/tools/office/office-client.ts +377 -0
  770. package/src/tools/office/powerpoint-client.ts +1498 -0
  771. package/src/tools/office/powerpoint-tools/effects.ts +315 -0
  772. package/src/tools/office/powerpoint-tools/export.ts +138 -0
  773. package/src/tools/office/powerpoint-tools/index.ts +45 -0
  774. package/src/tools/office/powerpoint-tools/launch.ts +263 -0
  775. package/src/tools/office/powerpoint-tools/media.ts +291 -0
  776. package/src/tools/office/powerpoint-tools/notes.ts +220 -0
  777. package/src/tools/office/powerpoint-tools/sections.ts +140 -0
  778. package/src/tools/office/powerpoint-tools/shapes.ts +870 -0
  779. package/src/tools/office/powerpoint-tools/slides.ts +350 -0
  780. package/src/tools/office/powerpoint-tools/tables.ts +182 -0
  781. package/src/tools/office/powerpoint-tools/text.ts +473 -0
  782. package/src/tools/office/powerpoint-tools.ts +9 -0
  783. package/src/tools/office/word-client.ts +1697 -0
  784. package/src/tools/office/word-tools/bookmarks.ts +186 -0
  785. package/src/tools/office/word-tools/comments.ts +185 -0
  786. package/src/tools/office/word-tools/content.ts +229 -0
  787. package/src/tools/office/word-tools/export.ts +97 -0
  788. package/src/tools/office/word-tools/formatting.ts +161 -0
  789. package/src/tools/office/word-tools/headers-footers.ts +155 -0
  790. package/src/tools/office/word-tools/index.ts +57 -0
  791. package/src/tools/office/word-tools/launch.ts +312 -0
  792. package/src/tools/office/word-tools/lists.ts +97 -0
  793. package/src/tools/office/word-tools/navigation.ts +114 -0
  794. package/src/tools/office/word-tools/page-setup.ts +195 -0
  795. package/src/tools/office/word-tools/tables.ts +262 -0
  796. package/src/tools/office/word-tools/text.ts +294 -0
  797. package/src/tools/office/word-tools/undo-redo.ts +97 -0
  798. package/src/tools/office/word-tools/watermarks.ts +105 -0
  799. package/src/tools/office/word-tools.ts +9 -0
  800. package/src/tools/registry.ts +527 -0
  801. package/src/tools/types.ts +231 -0
  802. package/src/types/index.ts +181 -0
  803. package/src/ui/PlanExecuteView.tsx +119 -0
  804. package/src/ui/TodoPanel.tsx +240 -0
  805. package/src/ui/UpdateNotification.tsx +105 -0
  806. package/src/ui/components/ActivityIndicator.tsx +234 -0
  807. package/src/ui/components/CommandBrowser.tsx +114 -0
  808. package/src/ui/components/CustomTextInput.tsx +389 -0
  809. package/src/ui/components/DocsSearchProgress.tsx +85 -0
  810. package/src/ui/components/FileBrowser.tsx +93 -0
  811. package/src/ui/components/LLMSetupWizard.tsx +333 -0
  812. package/src/ui/components/Logo.tsx +125 -0
  813. package/src/ui/components/MarkdownRenderer.tsx +358 -0
  814. package/src/ui/components/ModelSelector.tsx +203 -0
  815. package/src/ui/components/PlanExecuteApp.tsx +2007 -0
  816. package/src/ui/components/ProgressBar.tsx +51 -0
  817. package/src/ui/components/StatusBar.tsx +302 -0
  818. package/src/ui/components/ThinkingIndicator.tsx +120 -0
  819. package/src/ui/components/TodoListView.tsx +140 -0
  820. package/src/ui/components/ToolSelector.tsx +215 -0
  821. package/src/ui/components/dialogs/ApprovalDialog.tsx +259 -0
  822. package/src/ui/components/dialogs/AskUserDialog.tsx +159 -0
  823. package/src/ui/components/dialogs/DocsBrowser.tsx +222 -0
  824. package/src/ui/components/dialogs/SettingsDialog.tsx +939 -0
  825. package/src/ui/components/dialogs/index.ts +13 -0
  826. package/src/ui/components/index.ts +27 -0
  827. package/src/ui/components/panels/LogPanel.tsx +385 -0
  828. package/src/ui/components/panels/SessionPanel.tsx +146 -0
  829. package/src/ui/components/panels/index.ts +13 -0
  830. package/src/ui/components/views/ChatView.tsx +447 -0
  831. package/src/ui/components/views/index.ts +5 -0
  832. package/src/ui/contexts/TokenContext.tsx +139 -0
  833. package/src/ui/hooks/atFileProcessor.ts +167 -0
  834. package/src/ui/hooks/index.ts +11 -0
  835. package/src/ui/hooks/slashCommandProcessor.ts +174 -0
  836. package/src/ui/hooks/useCommandBrowserState.ts +97 -0
  837. package/src/ui/hooks/useFileBrowserState.ts +116 -0
  838. package/src/ui/hooks/useFileList.ts +132 -0
  839. package/src/ui/hooks/useInputHistory.ts +89 -0
  840. package/src/ui/hooks/usePlanExecution.ts +339 -0
  841. package/src/ui/index.ts +10 -0
  842. package/src/ui/ink-entry.tsx +36 -0
  843. package/src/utils/env-filter.ts +164 -0
  844. package/src/utils/file-system.ts +133 -0
  845. package/src/utils/git-utils.ts +30 -0
  846. package/src/utils/json-stream-logger.ts +1259 -0
  847. package/src/utils/logger.ts +2767 -0
  848. package/src/utils/platform-utils.ts +256 -0
  849. package/src/utils/wsl-utils.ts +113 -0
  850. package/tsconfig.electron.json +39 -0
  851. package/tsconfig.json +64 -0
@@ -0,0 +1,1139 @@
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
+ ];