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,1083 @@
1
+ import { spawn, execSync } from 'child_process';
2
+ import * as path from 'path';
3
+ import * as fs from 'fs';
4
+ import WebSocket from 'ws';
5
+ import { logger } from '../../utils/logger.js';
6
+ import { LOCAL_HOME_DIR } from '../../constants.js';
7
+ import { getPlatform, getPowerShellPath, } from '../../utils/platform-utils.js';
8
+ class CDPConnection {
9
+ ws = null;
10
+ messageId = 0;
11
+ pendingMessages = new Map();
12
+ eventHandlers = new Map();
13
+ async connect(wsUrl) {
14
+ return new Promise((resolve, reject) => {
15
+ this.ws = new WebSocket(wsUrl);
16
+ this.ws.on('open', () => {
17
+ logger.debug('[CDP] WebSocket connected');
18
+ resolve();
19
+ });
20
+ this.ws.on('message', (data) => {
21
+ try {
22
+ const message = JSON.parse(data.toString());
23
+ if (message.id !== undefined) {
24
+ const pending = this.pendingMessages.get(message.id);
25
+ if (pending) {
26
+ this.pendingMessages.delete(message.id);
27
+ if (message.error) {
28
+ pending.reject(new Error(message.error.message));
29
+ }
30
+ else {
31
+ pending.resolve(message.result);
32
+ }
33
+ }
34
+ }
35
+ else if (message.method) {
36
+ const handlers = this.eventHandlers.get(message.method) || [];
37
+ for (const handler of handlers) {
38
+ handler(message.params);
39
+ }
40
+ }
41
+ }
42
+ catch (e) {
43
+ logger.debug('[CDP] Failed to parse message: ' + e);
44
+ }
45
+ });
46
+ this.ws.on('error', (error) => {
47
+ logger.debug('[CDP] WebSocket error: ' + error.message);
48
+ reject(error);
49
+ });
50
+ this.ws.on('close', () => {
51
+ logger.debug('[CDP] WebSocket closed');
52
+ for (const [, pending] of this.pendingMessages) {
53
+ pending.reject(new Error('WebSocket closed'));
54
+ }
55
+ this.pendingMessages.clear();
56
+ });
57
+ });
58
+ }
59
+ async send(method, params) {
60
+ if (!this.ws || this.ws.readyState !== WebSocket.OPEN) {
61
+ throw new Error('WebSocket not connected');
62
+ }
63
+ const id = ++this.messageId;
64
+ const message = { id, method, params };
65
+ return new Promise((resolve, reject) => {
66
+ this.pendingMessages.set(id, { resolve, reject });
67
+ this.ws.send(JSON.stringify(message));
68
+ setTimeout(() => {
69
+ if (this.pendingMessages.has(id)) {
70
+ this.pendingMessages.delete(id);
71
+ reject(new Error(`CDP command timeout: ${method}`));
72
+ }
73
+ }, 30000);
74
+ });
75
+ }
76
+ on(event, handler) {
77
+ if (!this.eventHandlers.has(event)) {
78
+ this.eventHandlers.set(event, []);
79
+ }
80
+ this.eventHandlers.get(event).push(handler);
81
+ }
82
+ off(event) {
83
+ this.eventHandlers.delete(event);
84
+ }
85
+ close() {
86
+ if (this.ws) {
87
+ this.ws.close();
88
+ this.ws = null;
89
+ }
90
+ this.pendingMessages.clear();
91
+ this.eventHandlers.clear();
92
+ }
93
+ isConnected() {
94
+ return this.ws !== null && this.ws.readyState === WebSocket.OPEN;
95
+ }
96
+ }
97
+ class BrowserClient {
98
+ cdp = null;
99
+ browserProcess = null;
100
+ platform;
101
+ cdpPort = 9222;
102
+ browserType = 'chrome';
103
+ screenshotDir;
104
+ consoleLogs = [];
105
+ networkLogs = [];
106
+ constructor() {
107
+ this.platform = getPlatform();
108
+ logger.debug('[BrowserClient] constructor: platform = ' + this.platform);
109
+ this.screenshotDir = path.join(LOCAL_HOME_DIR, 'screenshots', 'browser');
110
+ if (!fs.existsSync(this.screenshotDir)) {
111
+ fs.mkdirSync(this.screenshotDir, { recursive: true });
112
+ }
113
+ logger.debug('[BrowserClient] constructor: CDP URL = ' + this.getCDPUrl());
114
+ }
115
+ getCDPUrl() {
116
+ return `http://localhost:${this.cdpPort}`;
117
+ }
118
+ getScreenshotDir() {
119
+ return this.screenshotDir;
120
+ }
121
+ findBrowserPath(windowsPaths, linuxPaths) {
122
+ if (this.platform === 'native-windows') {
123
+ for (const p of windowsPaths) {
124
+ if (fs.existsSync(p))
125
+ return p;
126
+ }
127
+ return null;
128
+ }
129
+ if (this.platform === 'wsl') {
130
+ for (const winPath of windowsPaths) {
131
+ const wslPath = winPath
132
+ .replace(/^([A-Z]):\\/i, (_, drive) => `/mnt/${drive.toLowerCase()}/`)
133
+ .replace(/\\/g, '/');
134
+ if (fs.existsSync(wslPath)) {
135
+ logger.debug(`[BrowserClient] findBrowserPath: found via WSL mount: ${wslPath} → ${winPath}`);
136
+ return winPath;
137
+ }
138
+ }
139
+ try {
140
+ const powerShellPath = getPowerShellPath();
141
+ const conditions = windowsPaths
142
+ .map((p, index) => {
143
+ const keyword = index === 0 ? 'if' : 'elseif';
144
+ return `${keyword} (Test-Path '${p}') { Write-Output '${p}' }`;
145
+ })
146
+ .join(' ');
147
+ const result = execSync(`${powerShellPath} -Command "${conditions}"`, { encoding: 'utf-8', timeout: 5000 }).trim();
148
+ if (result)
149
+ return result;
150
+ }
151
+ catch (error) {
152
+ logger.debug(`[BrowserClient] findBrowserPath: PowerShell check failed (${error instanceof Error ? error.message : String(error)})`);
153
+ }
154
+ return null;
155
+ }
156
+ if (linuxPaths) {
157
+ for (const p of linuxPaths) {
158
+ if (fs.existsSync(p))
159
+ return p;
160
+ }
161
+ }
162
+ return null;
163
+ }
164
+ findChromePath() {
165
+ return this.findBrowserPath([
166
+ 'C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe',
167
+ 'C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe',
168
+ ], [
169
+ '/usr/bin/google-chrome',
170
+ '/usr/bin/google-chrome-stable',
171
+ '/usr/bin/chromium',
172
+ '/usr/bin/chromium-browser',
173
+ '/snap/bin/chromium',
174
+ ]);
175
+ }
176
+ findEdgePath() {
177
+ return this.findBrowserPath([
178
+ 'C:\\Program Files\\Microsoft\\Edge\\Application\\msedge.exe',
179
+ 'C:\\Program Files (x86)\\Microsoft\\Edge\\Application\\msedge.exe',
180
+ ], [
181
+ '/usr/bin/microsoft-edge',
182
+ '/usr/bin/microsoft-edge-stable',
183
+ ]);
184
+ }
185
+ killExistingBrowser() {
186
+ logger.debug('[BrowserClient] killExistingBrowser: killing processes on port ' + this.cdpPort);
187
+ try {
188
+ if (this.platform === 'native-windows') {
189
+ const powerShellPath = getPowerShellPath();
190
+ execSync(`${powerShellPath} -Command "Get-NetTCPConnection -LocalPort ${this.cdpPort} -ErrorAction SilentlyContinue | ForEach-Object { Stop-Process -Id $_.OwningProcess -Force -ErrorAction SilentlyContinue }"`, { stdio: 'ignore', timeout: 5000 });
191
+ }
192
+ else if (this.platform === 'wsl') {
193
+ try {
194
+ const powerShellPath = getPowerShellPath();
195
+ execSync(`${powerShellPath} -Command "Get-NetTCPConnection -LocalPort ${this.cdpPort} -ErrorAction SilentlyContinue | ForEach-Object { Stop-Process -Id $_.OwningProcess -Force -ErrorAction SilentlyContinue }"`, { stdio: 'ignore', timeout: 5000 });
196
+ }
197
+ catch { }
198
+ }
199
+ else {
200
+ try {
201
+ execSync(`fuser -k ${this.cdpPort}/tcp 2>/dev/null || true`, { stdio: 'ignore', timeout: 5000 });
202
+ }
203
+ catch {
204
+ try {
205
+ execSync(`lsof -ti:${this.cdpPort} | xargs -r kill -9 2>/dev/null || true`, { stdio: 'ignore', timeout: 5000 });
206
+ }
207
+ catch {
208
+ }
209
+ }
210
+ }
211
+ }
212
+ catch {
213
+ }
214
+ }
215
+ async isCDPAvailable() {
216
+ try {
217
+ const response = await fetch(`${this.getCDPUrl()}/json/version`, {
218
+ signal: AbortSignal.timeout(2000),
219
+ });
220
+ return response.ok;
221
+ }
222
+ catch {
223
+ return false;
224
+ }
225
+ }
226
+ async getTargets() {
227
+ const response = await fetch(`${this.getCDPUrl()}/json`);
228
+ return await response.json();
229
+ }
230
+ async isRunning() {
231
+ return this.cdp !== null && this.cdp.isConnected();
232
+ }
233
+ async getHealth() {
234
+ const chromePath = this.findChromePath();
235
+ const edgePath = this.findEdgePath();
236
+ return {
237
+ success: true,
238
+ status: 'running',
239
+ version: '2.0.0-pure-cdp',
240
+ browser: {
241
+ active: this.cdp !== null && this.cdp.isConnected(),
242
+ type: this.browserType,
243
+ chrome_available: chromePath !== null,
244
+ edge_available: edgePath !== null,
245
+ },
246
+ };
247
+ }
248
+ async startServer() {
249
+ return true;
250
+ }
251
+ async stopServer() {
252
+ return this.close().then(() => true).catch(() => true);
253
+ }
254
+ setupLogging() {
255
+ if (!this.cdp)
256
+ return;
257
+ this.cdp.send('Console.enable').catch(err => logger.debug('[CDP] Failed to enable Console domain: ' + err));
258
+ this.cdp.on('Console.messageAdded', (params) => {
259
+ const p = params;
260
+ this.consoleLogs.push({
261
+ level: p.message.level.toUpperCase(),
262
+ message: p.message.text,
263
+ timestamp: Date.now(),
264
+ });
265
+ });
266
+ this.cdp.send('Runtime.enable').catch(err => logger.debug('[CDP] Failed to enable Runtime domain: ' + err));
267
+ this.cdp.on('Runtime.consoleAPICalled', (params) => {
268
+ const p = params;
269
+ const message = p.args.map(a => a.value || a.description || '').join(' ');
270
+ this.consoleLogs.push({
271
+ level: p.type.toUpperCase(),
272
+ message,
273
+ timestamp: Date.now(),
274
+ });
275
+ });
276
+ this.cdp.send('Network.enable').catch(err => logger.debug('[CDP] Failed to enable Network domain: ' + err));
277
+ this.cdp.on('Network.requestWillBeSent', (params) => {
278
+ const p = params;
279
+ this.networkLogs.push({
280
+ type: 'request',
281
+ url: p.request.url,
282
+ method: p.request.method,
283
+ timestamp: Date.now(),
284
+ requestId: p.requestId,
285
+ });
286
+ });
287
+ this.cdp.on('Network.responseReceived', (params) => {
288
+ const p = params;
289
+ this.networkLogs.push({
290
+ type: 'response',
291
+ url: p.response.url,
292
+ status: p.response.status,
293
+ statusText: p.response.statusText,
294
+ mimeType: p.response.mimeType,
295
+ timestamp: Date.now(),
296
+ requestId: p.requestId,
297
+ });
298
+ });
299
+ }
300
+ async getCurrentPageInfo() {
301
+ if (!this.cdp || !this.cdp.isConnected()) {
302
+ return { url: '', title: '' };
303
+ }
304
+ const evalResult = await this.cdp.send('Runtime.evaluate', {
305
+ expression: 'JSON.stringify({ url: window.location.href, title: document.title })',
306
+ returnByValue: true,
307
+ });
308
+ return JSON.parse(evalResult.result.value);
309
+ }
310
+ async launch(options) {
311
+ const headless = options?.headless ?? false;
312
+ const preferredBrowser = options?.browser ?? 'chrome';
313
+ logger.debug(`[BrowserClient] launch: starting browser (preferred=${preferredBrowser}, headless=${headless})`);
314
+ try {
315
+ if (this.cdp) {
316
+ this.cdp.close();
317
+ this.cdp = null;
318
+ }
319
+ this.killExistingBrowser();
320
+ await new Promise(resolve => setTimeout(resolve, 500));
321
+ let browserPath = null;
322
+ if (preferredBrowser === 'chrome') {
323
+ browserPath = this.findChromePath();
324
+ if (!browserPath) {
325
+ browserPath = this.findEdgePath();
326
+ this.browserType = 'edge';
327
+ }
328
+ else {
329
+ this.browserType = 'chrome';
330
+ }
331
+ }
332
+ else {
333
+ browserPath = this.findEdgePath();
334
+ if (!browserPath) {
335
+ browserPath = this.findChromePath();
336
+ this.browserType = 'chrome';
337
+ }
338
+ else {
339
+ this.browserType = 'edge';
340
+ }
341
+ }
342
+ if (!browserPath) {
343
+ return {
344
+ success: false,
345
+ error: 'No browser found',
346
+ details: 'Neither Chrome nor Edge is installed',
347
+ };
348
+ }
349
+ logger.debug(`[BrowserClient] launch: using ${this.browserType} at ${browserPath}`);
350
+ const baseArgs = [
351
+ `--remote-debugging-port=${this.cdpPort}`,
352
+ '--no-first-run',
353
+ '--no-default-browser-check',
354
+ '--disable-popup-blocking',
355
+ '--start-maximized',
356
+ ];
357
+ if (headless) {
358
+ baseArgs.push('--headless=new');
359
+ }
360
+ if (this.platform === 'native-windows') {
361
+ const userDataDir = `${process.env['LOCALAPPDATA']}\\hanseol-browser-profile-${Date.now()}`;
362
+ const args = [...baseArgs, `--user-data-dir=${userDataDir}`];
363
+ logger.debug(`[BrowserClient] launch: spawning browser directly on Windows`);
364
+ this.browserProcess = spawn(browserPath, args, {
365
+ detached: true,
366
+ stdio: 'ignore',
367
+ });
368
+ }
369
+ else if (this.platform === 'wsl') {
370
+ const argsForPowerShell = ['--user-data-dir=$dir', ...baseArgs];
371
+ const argsString = argsForPowerShell.map(arg => `"${arg}"`).join(',');
372
+ const psCommand = `$dir = "$env:LOCALAPPDATA\\hanseol-browser-profile-${Date.now()}"; Start-Process -FilePath '${browserPath}' -ArgumentList ${argsString}`;
373
+ logger.debug(`[BrowserClient] launch: executing PowerShell command from WSL`);
374
+ const powershellPath = getPowerShellPath();
375
+ this.browserProcess = spawn(powershellPath, ['-Command', psCommand], {
376
+ detached: true,
377
+ stdio: 'ignore',
378
+ });
379
+ }
380
+ else {
381
+ const userDataDir = `${process.env['HOME']}/.hanseol-browser-profile-${Date.now()}`;
382
+ const args = [...baseArgs, `--user-data-dir=${userDataDir}`];
383
+ logger.debug(`[BrowserClient] launch: spawning browser directly on Linux`);
384
+ this.browserProcess = spawn(browserPath, args, {
385
+ detached: true,
386
+ stdio: 'ignore',
387
+ });
388
+ }
389
+ this.browserProcess.unref();
390
+ logger.debug('[BrowserClient] launch: waiting for CDP endpoint...');
391
+ const maxWait = 15000;
392
+ const startTime = Date.now();
393
+ while (Date.now() - startTime < maxWait) {
394
+ if (await this.isCDPAvailable()) {
395
+ break;
396
+ }
397
+ await new Promise(resolve => setTimeout(resolve, 500));
398
+ }
399
+ if (!(await this.isCDPAvailable())) {
400
+ return {
401
+ success: false,
402
+ error: 'CDP endpoint not available',
403
+ details: `Timeout waiting for browser to start on port ${this.cdpPort}`,
404
+ };
405
+ }
406
+ const targets = await this.getTargets();
407
+ const pageTarget = targets.find(t => t.type === 'page');
408
+ if (!pageTarget) {
409
+ return {
410
+ success: false,
411
+ error: 'No page target found',
412
+ details: 'Browser started but no page available',
413
+ };
414
+ }
415
+ logger.debug('[BrowserClient] launch: connecting to page via WebSocket...');
416
+ this.cdp = new CDPConnection();
417
+ await this.cdp.connect(pageTarget.webSocketDebuggerUrl);
418
+ this.consoleLogs = [];
419
+ this.networkLogs = [];
420
+ this.setupLogging();
421
+ await this.cdp.send('Page.enable');
422
+ try {
423
+ await this.cdp.send('Page.bringToFront');
424
+ }
425
+ catch {
426
+ logger.debug('[BrowserClient] launch: Page.bringToFront failed (non-critical)');
427
+ }
428
+ logger.debug('[BrowserClient] launch: browser connected successfully');
429
+ return {
430
+ success: true,
431
+ message: `${this.browserType} launched successfully`,
432
+ browser: this.browserType,
433
+ headless,
434
+ };
435
+ }
436
+ catch (error) {
437
+ const errorMsg = error instanceof Error ? error.message : String(error);
438
+ logger.debug('[BrowserClient] launch: error - ' + errorMsg);
439
+ return {
440
+ success: false,
441
+ error: 'Failed to launch browser',
442
+ details: errorMsg,
443
+ };
444
+ }
445
+ }
446
+ async close() {
447
+ try {
448
+ if (this.cdp) {
449
+ this.cdp.close();
450
+ }
451
+ this.cdp = null;
452
+ this.consoleLogs = [];
453
+ this.networkLogs = [];
454
+ try {
455
+ if (this.platform === 'native-windows' || this.platform === 'wsl') {
456
+ const processName = this.browserType === 'chrome' ? 'chrome.exe' : 'msedge.exe';
457
+ execSync(`powershell.exe -Command "Get-WmiObject Win32_Process -Filter \\"name='${processName}'\\" | Where-Object { \\$_.CommandLine -like '*hanseol*' } | ForEach-Object { Stop-Process -Id \\$_.ProcessId -Force -ErrorAction SilentlyContinue }"`, { stdio: 'ignore', timeout: 10000 });
458
+ }
459
+ else {
460
+ const processName = this.browserType === 'chrome' ? 'chrome' : 'msedge';
461
+ execSync(`pkill -f "${processName}.*hanseol-browser-profile" 2>/dev/null || true`, { stdio: 'ignore', timeout: 10000 });
462
+ }
463
+ }
464
+ catch {
465
+ }
466
+ this.killExistingBrowser();
467
+ return { success: true, message: 'Browser closed' };
468
+ }
469
+ catch (error) {
470
+ return {
471
+ success: false,
472
+ error: 'Failed to close browser',
473
+ details: error instanceof Error ? error.message : String(error),
474
+ };
475
+ }
476
+ }
477
+ async navigate(url) {
478
+ try {
479
+ if (!this.cdp || !this.cdp.isConnected()) {
480
+ return { success: false, error: 'Browser not running. Use launch first.' };
481
+ }
482
+ try {
483
+ await this.cdp.send('Page.bringToFront');
484
+ }
485
+ catch { }
486
+ await this.cdp.send('Page.navigate', { url });
487
+ await new Promise((resolve, reject) => {
488
+ const timeoutId = setTimeout(() => {
489
+ this.cdp?.off('Page.loadEventFired');
490
+ reject(new Error(`Navigation to ${url} timed out after 30 seconds`));
491
+ }, 30000);
492
+ const handler = () => {
493
+ clearTimeout(timeoutId);
494
+ this.cdp?.off('Page.loadEventFired');
495
+ resolve();
496
+ };
497
+ this.cdp?.on('Page.loadEventFired', handler);
498
+ });
499
+ const pageInfo = await this.getCurrentPageInfo();
500
+ return {
501
+ success: true,
502
+ message: 'Navigated successfully',
503
+ url: pageInfo.url,
504
+ title: pageInfo.title,
505
+ };
506
+ }
507
+ catch (error) {
508
+ return {
509
+ success: false,
510
+ error: 'Failed to navigate',
511
+ details: error instanceof Error ? error.message : String(error),
512
+ };
513
+ }
514
+ }
515
+ async screenshot(fullPage = false) {
516
+ try {
517
+ if (!this.cdp || !this.cdp.isConnected()) {
518
+ return { success: false, error: 'Browser not running. Use launch first.' };
519
+ }
520
+ const params = { format: 'png' };
521
+ if (fullPage) {
522
+ const layoutMetrics = await this.cdp.send('Page.getLayoutMetrics');
523
+ params['clip'] = {
524
+ x: 0,
525
+ y: 0,
526
+ width: layoutMetrics.contentSize.width,
527
+ height: layoutMetrics.contentSize.height,
528
+ scale: 1,
529
+ };
530
+ params['captureBeyondViewport'] = true;
531
+ }
532
+ const result = await this.cdp.send('Page.captureScreenshot', params);
533
+ const pageInfo = await this.getCurrentPageInfo();
534
+ return {
535
+ success: true,
536
+ message: 'Screenshot captured',
537
+ image: result.data,
538
+ format: 'png',
539
+ encoding: 'base64',
540
+ url: pageInfo.url,
541
+ title: pageInfo.title,
542
+ };
543
+ }
544
+ catch (error) {
545
+ return {
546
+ success: false,
547
+ error: 'Failed to take screenshot',
548
+ details: error instanceof Error ? error.message : String(error),
549
+ };
550
+ }
551
+ }
552
+ async click(selector) {
553
+ try {
554
+ if (!this.cdp || !this.cdp.isConnected()) {
555
+ return { success: false, error: 'Browser not running. Use launch first.' };
556
+ }
557
+ const result = await this.cdp.send('Runtime.evaluate', {
558
+ expression: `
559
+ (function() {
560
+ const el = document.querySelector(${JSON.stringify(selector)});
561
+ if (!el) return { success: false, error: 'Element not found' };
562
+ el.click();
563
+ return { success: true };
564
+ })()
565
+ `,
566
+ returnByValue: true,
567
+ });
568
+ if (!result.result.value.success) {
569
+ return {
570
+ success: false,
571
+ error: result.result.value.error || 'Click failed',
572
+ };
573
+ }
574
+ const urlResult = await this.cdp.send('Runtime.evaluate', {
575
+ expression: 'window.location.href',
576
+ returnByValue: true,
577
+ });
578
+ return {
579
+ success: true,
580
+ message: 'Element clicked',
581
+ selector,
582
+ current_url: urlResult.result.value,
583
+ };
584
+ }
585
+ catch (error) {
586
+ return {
587
+ success: false,
588
+ error: 'Failed to click element',
589
+ details: error instanceof Error ? error.message : String(error),
590
+ };
591
+ }
592
+ }
593
+ async fill(selector, value) {
594
+ try {
595
+ if (!this.cdp || !this.cdp.isConnected()) {
596
+ return { success: false, error: 'Browser not running. Use launch first.' };
597
+ }
598
+ const result = await this.cdp.send('Runtime.evaluate', {
599
+ expression: `
600
+ (function() {
601
+ const el = document.querySelector(${JSON.stringify(selector)});
602
+ if (!el) return { success: false, error: 'Element not found' };
603
+ el.focus();
604
+ el.value = ${JSON.stringify(value)};
605
+ el.dispatchEvent(new Event('input', { bubbles: true }));
606
+ el.dispatchEvent(new Event('change', { bubbles: true }));
607
+ return { success: true };
608
+ })()
609
+ `,
610
+ returnByValue: true,
611
+ });
612
+ if (!result.result.value.success) {
613
+ return {
614
+ success: false,
615
+ error: result.result.value.error || 'Fill failed',
616
+ };
617
+ }
618
+ return {
619
+ success: true,
620
+ message: 'Field filled',
621
+ selector,
622
+ length: value.length,
623
+ };
624
+ }
625
+ catch (error) {
626
+ return {
627
+ success: false,
628
+ error: 'Failed to fill field',
629
+ details: error instanceof Error ? error.message : String(error),
630
+ };
631
+ }
632
+ }
633
+ async getText(selector) {
634
+ try {
635
+ if (!this.cdp || !this.cdp.isConnected()) {
636
+ return { success: false, error: 'Browser not running. Use launch first.' };
637
+ }
638
+ const expression = selector
639
+ ? `
640
+ (function() {
641
+ const el = document.querySelector(${JSON.stringify(selector)});
642
+ if (!el) return { success: false, error: 'Element not found: ${selector}' };
643
+ return { success: true, text: el.textContent || '' };
644
+ })()
645
+ `
646
+ : `({ success: true, text: document.body.innerText || '' })`;
647
+ const result = await this.cdp.send('Runtime.evaluate', {
648
+ expression,
649
+ returnByValue: true,
650
+ });
651
+ if (!result.result.value.success) {
652
+ return {
653
+ success: false,
654
+ error: result.result.value.error || 'Get text failed',
655
+ };
656
+ }
657
+ return {
658
+ success: true,
659
+ message: 'Text retrieved',
660
+ selector,
661
+ text: result.result.value.text || '',
662
+ };
663
+ }
664
+ catch (error) {
665
+ return {
666
+ success: false,
667
+ error: 'Failed to get text',
668
+ details: error instanceof Error ? error.message : String(error),
669
+ };
670
+ }
671
+ }
672
+ async getPageInfo() {
673
+ try {
674
+ if (!this.cdp || !this.cdp.isConnected()) {
675
+ return { success: false, error: 'Browser not running. Use launch first.' };
676
+ }
677
+ const result = await this.cdp.send('Runtime.evaluate', {
678
+ expression: `JSON.stringify({
679
+ url: window.location.href,
680
+ title: document.title,
681
+ domain: window.location.hostname,
682
+ protocol: window.location.protocol,
683
+ pathname: window.location.pathname,
684
+ readyState: document.readyState,
685
+ bodyLength: document.body?.innerHTML.length || 0,
686
+ linkCount: document.querySelectorAll('a').length,
687
+ imageCount: document.querySelectorAll('img').length,
688
+ formCount: document.querySelectorAll('form').length,
689
+ inputCount: document.querySelectorAll('input').length,
690
+ })`,
691
+ returnByValue: true,
692
+ });
693
+ const pageInfo = JSON.parse(result.result.value);
694
+ return {
695
+ success: true,
696
+ message: 'Page info retrieved',
697
+ ...pageInfo,
698
+ };
699
+ }
700
+ catch (error) {
701
+ return {
702
+ success: false,
703
+ error: 'Failed to get page info',
704
+ details: error instanceof Error ? error.message : String(error),
705
+ };
706
+ }
707
+ }
708
+ async getHtml() {
709
+ try {
710
+ if (!this.cdp || !this.cdp.isConnected()) {
711
+ return { success: false, error: 'Browser not running. Use launch first.' };
712
+ }
713
+ const result = await this.cdp.send('Runtime.evaluate', {
714
+ expression: 'JSON.stringify({ url: window.location.href, title: document.title, html: document.documentElement.outerHTML })',
715
+ returnByValue: true,
716
+ });
717
+ const pageInfo = JSON.parse(result.result.value);
718
+ return {
719
+ success: true,
720
+ message: 'HTML retrieved',
721
+ url: pageInfo.url,
722
+ title: pageInfo.title,
723
+ html: pageInfo.html,
724
+ };
725
+ }
726
+ catch (error) {
727
+ return {
728
+ success: false,
729
+ error: 'Failed to get HTML',
730
+ details: error instanceof Error ? error.message : String(error),
731
+ };
732
+ }
733
+ }
734
+ async executeScript(script) {
735
+ try {
736
+ if (!this.cdp || !this.cdp.isConnected()) {
737
+ return { success: false, error: 'Browser not running. Use launch first.' };
738
+ }
739
+ const wrappedScript = `(async function() { ${script} })()`;
740
+ const result = await this.cdp.send('Runtime.evaluate', {
741
+ expression: wrappedScript,
742
+ returnByValue: true,
743
+ awaitPromise: true,
744
+ });
745
+ if (result.exceptionDetails) {
746
+ return {
747
+ success: false,
748
+ error: 'Script execution error',
749
+ details: result.exceptionDetails.exception?.description || result.exceptionDetails.text || 'Unknown error',
750
+ };
751
+ }
752
+ return {
753
+ success: true,
754
+ message: 'Script executed',
755
+ result: result.result.value,
756
+ };
757
+ }
758
+ catch (error) {
759
+ return {
760
+ success: false,
761
+ error: 'Failed to execute script',
762
+ details: error instanceof Error ? error.message : String(error),
763
+ };
764
+ }
765
+ }
766
+ async getConsole() {
767
+ return {
768
+ success: true,
769
+ message: 'Console logs retrieved',
770
+ logs: [...this.consoleLogs],
771
+ count: this.consoleLogs.length,
772
+ };
773
+ }
774
+ async waitFor(selector, timeout = 10) {
775
+ try {
776
+ if (!this.cdp || !this.cdp.isConnected()) {
777
+ return { success: false, error: 'Browser not running. Use launch first.' };
778
+ }
779
+ const startTime = Date.now();
780
+ const timeoutMs = timeout * 1000;
781
+ while (Date.now() - startTime < timeoutMs) {
782
+ const result = await this.cdp.send('Runtime.evaluate', {
783
+ expression: `document.querySelector(${JSON.stringify(selector)}) !== null`,
784
+ returnByValue: true,
785
+ });
786
+ if (result.result.value) {
787
+ return {
788
+ success: true,
789
+ message: 'Element found',
790
+ selector,
791
+ };
792
+ }
793
+ await new Promise(resolve => setTimeout(resolve, 100));
794
+ }
795
+ return {
796
+ success: false,
797
+ error: 'Timeout waiting for element',
798
+ selector,
799
+ };
800
+ }
801
+ catch (error) {
802
+ return {
803
+ success: false,
804
+ error: 'Timeout waiting for element',
805
+ details: error instanceof Error ? error.message : String(error),
806
+ };
807
+ }
808
+ }
809
+ async getNetwork() {
810
+ return {
811
+ success: true,
812
+ message: 'Network logs retrieved',
813
+ logs: [...this.networkLogs],
814
+ count: this.networkLogs.length,
815
+ };
816
+ }
817
+ async focus() {
818
+ try {
819
+ if (!this.cdp || !this.cdp.isConnected()) {
820
+ return { success: false, error: 'Browser not running. Use launch first.' };
821
+ }
822
+ await this.cdp.send('Page.bringToFront');
823
+ return {
824
+ success: true,
825
+ message: 'Browser window focused',
826
+ };
827
+ }
828
+ catch (error) {
829
+ return {
830
+ success: false,
831
+ error: 'Failed to focus browser',
832
+ details: error instanceof Error ? error.message : String(error),
833
+ };
834
+ }
835
+ }
836
+ async pressKey(key, selector) {
837
+ try {
838
+ if (!this.cdp || !this.cdp.isConnected()) {
839
+ return { success: false, error: 'Browser not running. Use launch first.' };
840
+ }
841
+ const keyMap = {
842
+ 'Enter': { key: 'Enter', code: 'Enter', keyCode: 13 },
843
+ 'Tab': { key: 'Tab', code: 'Tab', keyCode: 9 },
844
+ 'Escape': { key: 'Escape', code: 'Escape', keyCode: 27 },
845
+ 'Backspace': { key: 'Backspace', code: 'Backspace', keyCode: 8 },
846
+ 'Delete': { key: 'Delete', code: 'Delete', keyCode: 46 },
847
+ 'Space': { key: ' ', code: 'Space', keyCode: 32 },
848
+ 'ArrowUp': { key: 'ArrowUp', code: 'ArrowUp', keyCode: 38 },
849
+ 'ArrowDown': { key: 'ArrowDown', code: 'ArrowDown', keyCode: 40 },
850
+ 'ArrowLeft': { key: 'ArrowLeft', code: 'ArrowLeft', keyCode: 37 },
851
+ 'ArrowRight': { key: 'ArrowRight', code: 'ArrowRight', keyCode: 39 },
852
+ 'Home': { key: 'Home', code: 'Home', keyCode: 36 },
853
+ 'End': { key: 'End', code: 'End', keyCode: 35 },
854
+ 'PageUp': { key: 'PageUp', code: 'PageUp', keyCode: 33 },
855
+ 'PageDown': { key: 'PageDown', code: 'PageDown', keyCode: 34 },
856
+ 'Insert': { key: 'Insert', code: 'Insert', keyCode: 45 },
857
+ 'Control': { key: 'Control', code: 'ControlLeft', keyCode: 17 },
858
+ 'Alt': { key: 'Alt', code: 'AltLeft', keyCode: 18 },
859
+ 'Shift': { key: 'Shift', code: 'ShiftLeft', keyCode: 16 },
860
+ 'Meta': { key: 'Meta', code: 'MetaLeft', keyCode: 91 },
861
+ 'F1': { key: 'F1', code: 'F1', keyCode: 112 },
862
+ 'F2': { key: 'F2', code: 'F2', keyCode: 113 },
863
+ 'F3': { key: 'F3', code: 'F3', keyCode: 114 },
864
+ 'F4': { key: 'F4', code: 'F4', keyCode: 115 },
865
+ 'F5': { key: 'F5', code: 'F5', keyCode: 116 },
866
+ 'F6': { key: 'F6', code: 'F6', keyCode: 117 },
867
+ 'F7': { key: 'F7', code: 'F7', keyCode: 118 },
868
+ 'F8': { key: 'F8', code: 'F8', keyCode: 119 },
869
+ 'F9': { key: 'F9', code: 'F9', keyCode: 120 },
870
+ 'F10': { key: 'F10', code: 'F10', keyCode: 121 },
871
+ 'F11': { key: 'F11', code: 'F11', keyCode: 122 },
872
+ 'F12': { key: 'F12', code: 'F12', keyCode: 123 },
873
+ };
874
+ if (selector) {
875
+ await this.cdp.send('Runtime.evaluate', {
876
+ expression: `document.querySelector(${JSON.stringify(selector)})?.focus()`,
877
+ });
878
+ }
879
+ const parts = key.split('+');
880
+ const modifiers = {};
881
+ let mainKey = key;
882
+ if (parts.length > 1) {
883
+ for (let i = 0; i < parts.length - 1; i++) {
884
+ const mod = parts[i]?.toLowerCase();
885
+ if (mod === 'control' || mod === 'ctrl')
886
+ modifiers.ctrl = true;
887
+ else if (mod === 'alt')
888
+ modifiers.alt = true;
889
+ else if (mod === 'shift')
890
+ modifiers.shift = true;
891
+ else if (mod === 'meta' || mod === 'cmd')
892
+ modifiers.meta = true;
893
+ }
894
+ mainKey = parts[parts.length - 1] || key;
895
+ }
896
+ let keyInfo = keyMap[mainKey];
897
+ if (!keyInfo) {
898
+ if (mainKey.length === 1) {
899
+ const charCode = mainKey.charCodeAt(0);
900
+ const isUpper = mainKey >= 'A' && mainKey <= 'Z';
901
+ keyInfo = {
902
+ key: mainKey,
903
+ code: `Key${mainKey.toUpperCase()}`,
904
+ keyCode: isUpper ? charCode : charCode - 32,
905
+ };
906
+ }
907
+ else {
908
+ keyInfo = { key: mainKey, code: mainKey, keyCode: 0 };
909
+ }
910
+ }
911
+ let modifierFlags = 0;
912
+ if (modifiers.alt)
913
+ modifierFlags |= 1;
914
+ if (modifiers.ctrl)
915
+ modifierFlags |= 2;
916
+ if (modifiers.meta)
917
+ modifierFlags |= 4;
918
+ if (modifiers.shift)
919
+ modifierFlags |= 8;
920
+ await this.cdp.send('Input.dispatchKeyEvent', {
921
+ type: 'keyDown',
922
+ key: keyInfo.key,
923
+ code: keyInfo.code,
924
+ windowsVirtualKeyCode: keyInfo.keyCode,
925
+ nativeVirtualKeyCode: keyInfo.keyCode,
926
+ modifiers: modifierFlags,
927
+ });
928
+ await this.cdp.send('Input.dispatchKeyEvent', {
929
+ type: 'keyUp',
930
+ key: keyInfo.key,
931
+ code: keyInfo.code,
932
+ windowsVirtualKeyCode: keyInfo.keyCode,
933
+ nativeVirtualKeyCode: keyInfo.keyCode,
934
+ modifiers: modifierFlags,
935
+ });
936
+ return {
937
+ success: true,
938
+ message: `Key "${key}" pressed successfully`,
939
+ key,
940
+ selector: selector || '(focused element)',
941
+ };
942
+ }
943
+ catch (error) {
944
+ return {
945
+ success: false,
946
+ error: 'Failed to press key',
947
+ details: error instanceof Error ? error.message : String(error),
948
+ };
949
+ }
950
+ }
951
+ async type(text, selector) {
952
+ try {
953
+ if (!this.cdp || !this.cdp.isConnected()) {
954
+ return { success: false, error: 'Browser not running. Use launch first.' };
955
+ }
956
+ if (selector) {
957
+ await this.cdp.send('Runtime.evaluate', {
958
+ expression: `document.querySelector(${JSON.stringify(selector)})?.focus()`,
959
+ });
960
+ }
961
+ for (const char of text) {
962
+ await this.cdp.send('Input.dispatchKeyEvent', {
963
+ type: 'char',
964
+ text: char,
965
+ });
966
+ await new Promise(resolve => setTimeout(resolve, 50));
967
+ }
968
+ return {
969
+ success: true,
970
+ message: `Typed ${text.length} characters`,
971
+ length: text.length,
972
+ };
973
+ }
974
+ catch (error) {
975
+ return {
976
+ success: false,
977
+ error: 'Failed to type text',
978
+ details: error instanceof Error ? error.message : String(error),
979
+ };
980
+ }
981
+ }
982
+ async isBrowserActive() {
983
+ return this.cdp !== null && this.cdp.isConnected();
984
+ }
985
+ saveScreenshot(base64Image, prefix = 'browser') {
986
+ const timestamp = new Date().toISOString().replace(/[:.]/g, '-');
987
+ const filename = `${prefix}_${timestamp}.png`;
988
+ const filepath = path.join(this.screenshotDir, filename);
989
+ const imageBuffer = Buffer.from(base64Image, 'base64');
990
+ fs.writeFileSync(filepath, imageBuffer);
991
+ logger.debug('[BrowserClient] saveScreenshot: saved to ' + filepath);
992
+ return filepath;
993
+ }
994
+ getServerExePath() {
995
+ return null;
996
+ }
997
+ getServerUrl() {
998
+ return this.getCDPUrl();
999
+ }
1000
+ async connect(port) {
1001
+ try {
1002
+ if (port)
1003
+ this.cdpPort = port;
1004
+ if (!(await this.isCDPAvailable())) {
1005
+ return { success: false, error: `No browser found on port ${this.cdpPort}` };
1006
+ }
1007
+ const targets = await this.getTargets();
1008
+ const pageTarget = targets.find(t => t.type === 'page');
1009
+ if (!pageTarget) {
1010
+ return { success: false, error: 'No page target found' };
1011
+ }
1012
+ if (this.cdp) {
1013
+ this.cdp.close();
1014
+ }
1015
+ this.cdp = new CDPConnection();
1016
+ await this.cdp.connect(pageTarget.webSocketDebuggerUrl);
1017
+ await this.cdp.send('Page.enable');
1018
+ this.consoleLogs = [];
1019
+ this.networkLogs = [];
1020
+ this.setupLogging();
1021
+ return {
1022
+ success: true,
1023
+ message: 'Connected to existing browser',
1024
+ url: pageTarget.url,
1025
+ title: pageTarget.title,
1026
+ };
1027
+ }
1028
+ catch (error) {
1029
+ return {
1030
+ success: false,
1031
+ error: 'Failed to connect to browser',
1032
+ details: error instanceof Error ? error.message : String(error),
1033
+ };
1034
+ }
1035
+ }
1036
+ async send(method, params) {
1037
+ try {
1038
+ if (!this.cdp || !this.cdp.isConnected()) {
1039
+ return { success: false, error: 'Browser not running. Use launch first.' };
1040
+ }
1041
+ const result = await this.cdp.send(method, params);
1042
+ return { success: true, message: 'Command sent', result };
1043
+ }
1044
+ catch (error) {
1045
+ return {
1046
+ success: false,
1047
+ error: 'Failed to send CDP command',
1048
+ details: error instanceof Error ? error.message : String(error),
1049
+ };
1050
+ }
1051
+ }
1052
+ async focusElement(selector) {
1053
+ try {
1054
+ if (!this.cdp || !this.cdp.isConnected()) {
1055
+ return { success: false, error: 'Browser not running. Use launch first.' };
1056
+ }
1057
+ const result = await this.cdp.send('Runtime.evaluate', {
1058
+ expression: `
1059
+ (function() {
1060
+ const el = document.querySelector(${JSON.stringify(selector)});
1061
+ if (!el) return { success: false, error: 'Element not found' };
1062
+ el.focus();
1063
+ return { success: true };
1064
+ })()
1065
+ `,
1066
+ returnByValue: true,
1067
+ });
1068
+ if (!result.result.value.success) {
1069
+ return { success: false, error: result.result.value.error || 'Focus failed' };
1070
+ }
1071
+ return { success: true, message: 'Element focused', selector };
1072
+ }
1073
+ catch (error) {
1074
+ return {
1075
+ success: false,
1076
+ error: 'Failed to focus element',
1077
+ details: error instanceof Error ? error.message : String(error),
1078
+ };
1079
+ }
1080
+ }
1081
+ }
1082
+ export const browserClient = new BrowserClient();
1083
+ //# sourceMappingURL=browser-client.js.map