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