orbitx 0.0.8 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (398) hide show
  1. package/Readme.md +227 -67
  2. package/dist/core/agent-providers.d.ts +16 -0
  3. package/dist/core/agent-providers.d.ts.map +1 -0
  4. package/dist/core/agent-providers.js +21 -0
  5. package/dist/core/agent-providers.js.map +1 -0
  6. package/dist/core/ai-provider.d.ts +69 -1
  7. package/dist/core/ai-provider.d.ts.map +1 -1
  8. package/dist/core/ai-provider.js.map +1 -1
  9. package/dist/core/base-agent.d.ts +8 -4
  10. package/dist/core/base-agent.d.ts.map +1 -1
  11. package/dist/core/base-agent.js +220 -88
  12. package/dist/core/base-agent.js.map +1 -1
  13. package/dist/core/deepseek-provider.d.ts +10 -3
  14. package/dist/core/deepseek-provider.d.ts.map +1 -1
  15. package/dist/core/deepseek-provider.js +144 -39
  16. package/dist/core/deepseek-provider.js.map +1 -1
  17. package/dist/core/image-describer.d.ts +13 -0
  18. package/dist/core/image-describer.d.ts.map +1 -0
  19. package/dist/core/image-describer.js +33 -0
  20. package/dist/core/image-describer.js.map +1 -0
  21. package/dist/core/mcp-client.d.ts +17 -4
  22. package/dist/core/mcp-client.d.ts.map +1 -1
  23. package/dist/core/mcp-client.js +32 -16
  24. package/dist/core/mcp-client.js.map +1 -1
  25. package/dist/core/mcp-computer.d.ts +10 -2
  26. package/dist/core/mcp-computer.d.ts.map +1 -1
  27. package/dist/core/mcp-computer.js +108 -2
  28. package/dist/core/mcp-computer.js.map +1 -1
  29. package/dist/core/mcp-fs-storage.d.ts +9 -0
  30. package/dist/core/mcp-fs-storage.d.ts.map +1 -0
  31. package/dist/core/mcp-fs-storage.js +28 -0
  32. package/dist/core/mcp-fs-storage.js.map +1 -0
  33. package/dist/core/mcp-rng.d.ts +8 -0
  34. package/dist/core/mcp-rng.d.ts.map +1 -0
  35. package/dist/core/mcp-rng.js +15 -0
  36. package/dist/core/mcp-rng.js.map +1 -0
  37. package/dist/core/mcp-server.d.ts +8 -4
  38. package/dist/core/mcp-server.d.ts.map +1 -1
  39. package/dist/core/mcp-server.js +20 -3
  40. package/dist/core/mcp-server.js.map +1 -1
  41. package/dist/core/mcp-storage.d.ts +6 -0
  42. package/dist/core/mcp-storage.d.ts.map +1 -0
  43. package/dist/core/mcp-storage.js +4 -0
  44. package/dist/core/mcp-storage.js.map +1 -0
  45. package/dist/core/mcp.d.ts +37 -3
  46. package/dist/core/mcp.d.ts.map +1 -1
  47. package/dist/core/mcp.js +42 -1
  48. package/dist/core/mcp.js.map +1 -1
  49. package/dist/core/ollama-provider.d.ts +10 -3
  50. package/dist/core/ollama-provider.d.ts.map +1 -1
  51. package/dist/core/ollama-provider.js +122 -41
  52. package/dist/core/ollama-provider.js.map +1 -1
  53. package/dist/core/retry.d.ts +10 -0
  54. package/dist/core/retry.d.ts.map +1 -0
  55. package/dist/core/retry.js +39 -0
  56. package/dist/core/retry.js.map +1 -0
  57. package/dist/core/skill.d.ts +3 -0
  58. package/dist/core/skill.d.ts.map +1 -1
  59. package/dist/core/skill.js.map +1 -1
  60. package/dist/core/tool-schema-translator.d.ts +10 -0
  61. package/dist/core/tool-schema-translator.d.ts.map +1 -0
  62. package/dist/core/tool-schema-translator.js +29 -0
  63. package/dist/core/tool-schema-translator.js.map +1 -0
  64. package/dist/index.d.ts +37 -6
  65. package/dist/index.d.ts.map +1 -1
  66. package/dist/index.js +28 -5
  67. package/dist/index.js.map +1 -1
  68. package/dist/sandbox.d.ts +2 -0
  69. package/dist/sandbox.d.ts.map +1 -0
  70. package/dist/sandbox.js +27 -0
  71. package/dist/sandbox.js.map +1 -0
  72. package/dist/skills/backend-security.d.ts +4 -0
  73. package/dist/skills/backend-security.d.ts.map +1 -0
  74. package/dist/skills/backend-security.js +74 -0
  75. package/dist/skills/backend-security.js.map +1 -0
  76. package/dist/skills/big-task.d.ts +4 -0
  77. package/dist/skills/big-task.d.ts.map +1 -0
  78. package/dist/skills/big-task.js +66 -0
  79. package/dist/skills/big-task.js.map +1 -0
  80. package/dist/skills/code-verification.d.ts +4 -0
  81. package/dist/skills/code-verification.d.ts.map +1 -0
  82. package/dist/skills/code-verification.js +59 -0
  83. package/dist/skills/code-verification.js.map +1 -0
  84. package/dist/skills/long-task-efficiency.d.ts +4 -0
  85. package/dist/skills/long-task-efficiency.d.ts.map +1 -0
  86. package/dist/skills/long-task-efficiency.js +50 -0
  87. package/dist/skills/long-task-efficiency.js.map +1 -0
  88. package/dist/skills/node-backend.d.ts +4 -0
  89. package/dist/skills/node-backend.d.ts.map +1 -0
  90. package/dist/skills/node-backend.js +110 -0
  91. package/dist/skills/node-backend.js.map +1 -0
  92. package/dist/skills/planner.d.ts +4 -0
  93. package/dist/skills/planner.d.ts.map +1 -0
  94. package/dist/skills/planner.js +49 -0
  95. package/dist/skills/planner.js.map +1 -0
  96. package/dist/skills/present.d.ts +4 -0
  97. package/dist/skills/present.d.ts.map +1 -0
  98. package/dist/skills/present.js +56 -0
  99. package/dist/skills/present.js.map +1 -0
  100. package/dist/skills/question-answer.d.ts +4 -0
  101. package/dist/skills/question-answer.d.ts.map +1 -0
  102. package/dist/skills/question-answer.js +55 -0
  103. package/dist/skills/question-answer.js.map +1 -0
  104. package/dist/skills/react-frontend.d.ts +4 -0
  105. package/dist/skills/react-frontend.d.ts.map +1 -0
  106. package/dist/skills/react-frontend.js +111 -0
  107. package/dist/skills/react-frontend.js.map +1 -0
  108. package/dist/skills/research.d.ts +4 -0
  109. package/dist/skills/research.d.ts.map +1 -0
  110. package/dist/skills/research.js +81 -0
  111. package/dist/skills/research.js.map +1 -0
  112. package/dist/skills/shopping.d.ts +4 -0
  113. package/dist/skills/shopping.d.ts.map +1 -0
  114. package/dist/skills/shopping.js +71 -0
  115. package/dist/skills/shopping.js.map +1 -0
  116. package/dist/skills/ui-ux-design.d.ts +4 -0
  117. package/dist/skills/ui-ux-design.d.ts.map +1 -0
  118. package/dist/skills/ui-ux-design.js +70 -0
  119. package/dist/skills/ui-ux-design.js.map +1 -0
  120. package/dist/skills/web-end-to-end-test.d.ts +4 -0
  121. package/dist/skills/web-end-to-end-test.d.ts.map +1 -0
  122. package/dist/skills/web-end-to-end-test.js +76 -0
  123. package/dist/skills/web-end-to-end-test.js.map +1 -0
  124. package/dist/templates/simple.d.ts +1 -1
  125. package/dist/templates/simple.d.ts.map +1 -1
  126. package/dist/templates/simple.js +4 -0
  127. package/dist/templates/simple.js.map +1 -1
  128. package/dist/tests/mcp.test.js +2 -54
  129. package/dist/tests/mcp.test.js.map +1 -1
  130. package/dist/tools/bash/index.d.ts +10 -0
  131. package/dist/tools/bash/index.d.ts.map +1 -0
  132. package/dist/tools/bash/index.js +22 -0
  133. package/dist/tools/bash/index.js.map +1 -0
  134. package/dist/tools/bash/interaction.d.ts +29 -0
  135. package/dist/tools/bash/interaction.d.ts.map +1 -0
  136. package/dist/tools/bash/interaction.js +13 -0
  137. package/dist/tools/bash/interaction.js.map +1 -0
  138. package/dist/tools/bash/list.d.ts +4 -0
  139. package/dist/tools/bash/list.d.ts.map +1 -0
  140. package/dist/tools/bash/list.js +23 -0
  141. package/dist/tools/bash/list.js.map +1 -0
  142. package/dist/tools/bash/logs.d.ts +4 -0
  143. package/dist/tools/bash/logs.d.ts.map +1 -0
  144. package/dist/tools/bash/logs.js +47 -0
  145. package/dist/tools/bash/logs.js.map +1 -0
  146. package/dist/tools/bash/process-manager.d.ts +35 -0
  147. package/dist/tools/bash/process-manager.d.ts.map +1 -0
  148. package/dist/tools/bash/process-manager.js +137 -0
  149. package/dist/tools/bash/process-manager.js.map +1 -0
  150. package/dist/tools/bash/run.d.ts +5 -0
  151. package/dist/tools/bash/run.d.ts.map +1 -0
  152. package/dist/tools/bash/run.js +57 -0
  153. package/dist/tools/bash/run.js.map +1 -0
  154. package/dist/tools/bash/terminate.d.ts +5 -0
  155. package/dist/tools/bash/terminate.d.ts.map +1 -0
  156. package/dist/tools/bash/terminate.js +39 -0
  157. package/dist/tools/bash/terminate.js.map +1 -0
  158. package/dist/tools/bash/wait.d.ts +5 -0
  159. package/dist/tools/bash/wait.d.ts.map +1 -0
  160. package/dist/tools/bash/wait.js +50 -0
  161. package/dist/tools/bash/wait.js.map +1 -0
  162. package/dist/tools/bash/write-input.d.ts +5 -0
  163. package/dist/tools/bash/write-input.d.ts.map +1 -0
  164. package/dist/tools/bash/write-input.js +47 -0
  165. package/dist/tools/bash/write-input.js.map +1 -0
  166. package/dist/tools/browser/click.d.ts +5 -0
  167. package/dist/tools/browser/click.d.ts.map +1 -0
  168. package/dist/tools/browser/click.js +44 -0
  169. package/dist/tools/browser/click.js.map +1 -0
  170. package/dist/tools/browser/console.d.ts +4 -0
  171. package/dist/tools/browser/console.d.ts.map +1 -0
  172. package/dist/tools/browser/console.js +41 -0
  173. package/dist/tools/browser/console.js.map +1 -0
  174. package/dist/tools/browser/create-session.d.ts +5 -0
  175. package/dist/tools/browser/create-session.d.ts.map +1 -0
  176. package/dist/tools/browser/create-session.js +30 -0
  177. package/dist/tools/browser/create-session.js.map +1 -0
  178. package/dist/tools/browser/evaluate-safe.d.ts +10 -0
  179. package/dist/tools/browser/evaluate-safe.d.ts.map +1 -0
  180. package/dist/tools/browser/evaluate-safe.js +65 -0
  181. package/dist/tools/browser/evaluate-safe.js.map +1 -0
  182. package/dist/tools/browser/fill.d.ts +5 -0
  183. package/dist/tools/browser/fill.d.ts.map +1 -0
  184. package/dist/tools/browser/fill.js +78 -0
  185. package/dist/tools/browser/fill.js.map +1 -0
  186. package/dist/tools/browser/get-sessions.d.ts +4 -0
  187. package/dist/tools/browser/get-sessions.d.ts.map +1 -0
  188. package/dist/tools/browser/get-sessions.js +14 -0
  189. package/dist/tools/browser/get-sessions.js.map +1 -0
  190. package/dist/tools/browser/index.d.ts +19 -0
  191. package/dist/tools/browser/index.d.ts.map +1 -0
  192. package/dist/tools/browser/index.js +49 -0
  193. package/dist/tools/browser/index.js.map +1 -0
  194. package/dist/tools/browser/inject.d.ts +5 -0
  195. package/dist/tools/browser/inject.d.ts.map +1 -0
  196. package/dist/tools/browser/inject.js +51 -0
  197. package/dist/tools/browser/inject.js.map +1 -0
  198. package/dist/tools/browser/interaction.d.ts +49 -0
  199. package/dist/tools/browser/interaction.d.ts.map +1 -0
  200. package/dist/tools/browser/interaction.js +14 -0
  201. package/dist/tools/browser/interaction.js.map +1 -0
  202. package/dist/tools/browser/navigate.d.ts +5 -0
  203. package/dist/tools/browser/navigate.d.ts.map +1 -0
  204. package/dist/tools/browser/navigate.js +39 -0
  205. package/dist/tools/browser/navigate.js.map +1 -0
  206. package/dist/tools/browser/network-status.d.ts +4 -0
  207. package/dist/tools/browser/network-status.d.ts.map +1 -0
  208. package/dist/tools/browser/network-status.js +35 -0
  209. package/dist/tools/browser/network-status.js.map +1 -0
  210. package/dist/tools/browser/network.d.ts +4 -0
  211. package/dist/tools/browser/network.d.ts.map +1 -0
  212. package/dist/tools/browser/network.js +51 -0
  213. package/dist/tools/browser/network.js.map +1 -0
  214. package/dist/tools/browser/read-page.d.ts +45 -0
  215. package/dist/tools/browser/read-page.d.ts.map +1 -0
  216. package/dist/tools/browser/read-page.js +264 -0
  217. package/dist/tools/browser/read-page.js.map +1 -0
  218. package/dist/tools/browser/read.d.ts +5 -0
  219. package/dist/tools/browser/read.d.ts.map +1 -0
  220. package/dist/tools/browser/read.js +56 -0
  221. package/dist/tools/browser/read.js.map +1 -0
  222. package/dist/tools/browser/remove-session.d.ts +5 -0
  223. package/dist/tools/browser/remove-session.d.ts.map +1 -0
  224. package/dist/tools/browser/remove-session.js +29 -0
  225. package/dist/tools/browser/remove-session.js.map +1 -0
  226. package/dist/tools/browser/screenshot.d.ts +5 -0
  227. package/dist/tools/browser/screenshot.d.ts.map +1 -0
  228. package/dist/tools/browser/screenshot.js +50 -0
  229. package/dist/tools/browser/screenshot.js.map +1 -0
  230. package/dist/tools/browser/scroll-info.d.ts +4 -0
  231. package/dist/tools/browser/scroll-info.d.ts.map +1 -0
  232. package/dist/tools/browser/scroll-info.js +28 -0
  233. package/dist/tools/browser/scroll-info.js.map +1 -0
  234. package/dist/tools/browser/scroll.d.ts +5 -0
  235. package/dist/tools/browser/scroll.d.ts.map +1 -0
  236. package/dist/tools/browser/scroll.js +43 -0
  237. package/dist/tools/browser/scroll.js.map +1 -0
  238. package/dist/tools/browser/session-manager.d.ts +35 -0
  239. package/dist/tools/browser/session-manager.d.ts.map +1 -0
  240. package/dist/tools/browser/session-manager.js +101 -0
  241. package/dist/tools/browser/session-manager.js.map +1 -0
  242. package/dist/tools/browser/submit-form.d.ts +5 -0
  243. package/dist/tools/browser/submit-form.d.ts.map +1 -0
  244. package/dist/tools/browser/submit-form.js +45 -0
  245. package/dist/tools/browser/submit-form.js.map +1 -0
  246. package/dist/tools/fs/create-dir.d.ts +5 -0
  247. package/dist/tools/fs/create-dir.d.ts.map +1 -0
  248. package/dist/tools/fs/create-dir.js +28 -0
  249. package/dist/tools/fs/create-dir.js.map +1 -0
  250. package/dist/tools/fs/delete.d.ts +5 -0
  251. package/dist/tools/fs/delete.d.ts.map +1 -0
  252. package/dist/tools/fs/delete.js +45 -0
  253. package/dist/tools/fs/delete.js.map +1 -0
  254. package/dist/tools/fs/edit-file.d.ts +5 -0
  255. package/dist/tools/fs/edit-file.d.ts.map +1 -0
  256. package/dist/tools/fs/edit-file.js +74 -0
  257. package/dist/tools/fs/edit-file.js.map +1 -0
  258. package/dist/tools/fs/index.d.ts +11 -2
  259. package/dist/tools/fs/index.d.ts.map +1 -1
  260. package/dist/tools/fs/index.js +27 -2
  261. package/dist/tools/fs/index.js.map +1 -1
  262. package/dist/tools/fs/interaction.d.ts +37 -0
  263. package/dist/tools/fs/interaction.d.ts.map +1 -0
  264. package/dist/tools/fs/interaction.js +13 -0
  265. package/dist/tools/fs/interaction.js.map +1 -0
  266. package/dist/tools/fs/list-dir.d.ts +5 -0
  267. package/dist/tools/fs/list-dir.d.ts.map +1 -0
  268. package/dist/tools/fs/list-dir.js +87 -0
  269. package/dist/tools/fs/list-dir.js.map +1 -0
  270. package/dist/tools/fs/move.d.ts +5 -0
  271. package/dist/tools/fs/move.d.ts.map +1 -0
  272. package/dist/tools/fs/move.js +44 -0
  273. package/dist/tools/fs/move.js.map +1 -0
  274. package/dist/tools/fs/read-file.d.ts +4 -3
  275. package/dist/tools/fs/read-file.d.ts.map +1 -1
  276. package/dist/tools/fs/read-file.js +50 -42
  277. package/dist/tools/fs/read-file.js.map +1 -1
  278. package/dist/tools/fs/stat.d.ts +5 -0
  279. package/dist/tools/fs/stat.d.ts.map +1 -0
  280. package/dist/tools/fs/stat.js +40 -0
  281. package/dist/tools/fs/stat.js.map +1 -0
  282. package/dist/tools/fs/utils.d.ts +20 -0
  283. package/dist/tools/fs/utils.d.ts.map +1 -0
  284. package/dist/tools/fs/utils.js +33 -0
  285. package/dist/tools/fs/utils.js.map +1 -0
  286. package/dist/tools/fs/write-file.d.ts +4 -3
  287. package/dist/tools/fs/write-file.d.ts.map +1 -1
  288. package/dist/tools/fs/write-file.js +39 -58
  289. package/dist/tools/fs/write-file.js.map +1 -1
  290. package/dist/tools/present/add.d.ts +5 -0
  291. package/dist/tools/present/add.d.ts.map +1 -0
  292. package/dist/tools/present/add.js +54 -0
  293. package/dist/tools/present/add.js.map +1 -0
  294. package/dist/tools/present/clear.d.ts +5 -0
  295. package/dist/tools/present/clear.d.ts.map +1 -0
  296. package/dist/tools/present/clear.js +23 -0
  297. package/dist/tools/present/clear.js.map +1 -0
  298. package/dist/tools/present/get-list.d.ts +5 -0
  299. package/dist/tools/present/get-list.d.ts.map +1 -0
  300. package/dist/tools/present/get-list.js +24 -0
  301. package/dist/tools/present/get-list.js.map +1 -0
  302. package/dist/tools/present/index.d.ts +8 -0
  303. package/dist/tools/present/index.d.ts.map +1 -0
  304. package/dist/tools/present/index.js +14 -0
  305. package/dist/tools/present/index.js.map +1 -0
  306. package/dist/tools/present/interaction.d.ts +17 -0
  307. package/dist/tools/present/interaction.d.ts.map +1 -0
  308. package/dist/tools/present/interaction.js +15 -0
  309. package/dist/tools/present/interaction.js.map +1 -0
  310. package/dist/tools/present/utils.d.ts +12 -0
  311. package/dist/tools/present/utils.d.ts.map +1 -0
  312. package/dist/tools/present/utils.js +40 -0
  313. package/dist/tools/present/utils.js.map +1 -0
  314. package/dist/tools/question-answer/index.d.ts +5 -0
  315. package/dist/tools/question-answer/index.d.ts.map +1 -0
  316. package/dist/tools/question-answer/index.js +7 -0
  317. package/dist/tools/question-answer/index.js.map +1 -0
  318. package/dist/tools/question-answer/interaction.d.ts +14 -0
  319. package/dist/tools/question-answer/interaction.d.ts.map +1 -0
  320. package/dist/tools/question-answer/interaction.js +13 -0
  321. package/dist/tools/question-answer/interaction.js.map +1 -0
  322. package/dist/tools/question-answer/question-answer.d.ts +5 -0
  323. package/dist/tools/question-answer/question-answer.d.ts.map +1 -0
  324. package/dist/tools/question-answer/question-answer.js +24 -0
  325. package/dist/tools/question-answer/question-answer.js.map +1 -0
  326. package/dist/tools/todo/check-task.d.ts +5 -0
  327. package/dist/tools/todo/check-task.d.ts.map +1 -0
  328. package/dist/tools/todo/check-task.js +49 -0
  329. package/dist/tools/todo/check-task.js.map +1 -0
  330. package/dist/tools/todo/create-list.d.ts +5 -0
  331. package/dist/tools/todo/create-list.d.ts.map +1 -0
  332. package/dist/tools/todo/create-list.js +36 -0
  333. package/dist/tools/todo/create-list.js.map +1 -0
  334. package/dist/tools/todo/create-task.d.ts +5 -0
  335. package/dist/tools/todo/create-task.d.ts.map +1 -0
  336. package/dist/tools/todo/create-task.js +63 -0
  337. package/dist/tools/todo/create-task.js.map +1 -0
  338. package/dist/tools/todo/get-list.d.ts +4 -0
  339. package/dist/tools/todo/get-list.d.ts.map +1 -0
  340. package/dist/tools/todo/get-list.js +38 -0
  341. package/dist/tools/todo/get-list.js.map +1 -0
  342. package/dist/tools/todo/get-lists.d.ts +4 -0
  343. package/dist/tools/todo/get-lists.d.ts.map +1 -0
  344. package/dist/tools/todo/get-lists.js +18 -0
  345. package/dist/tools/todo/get-lists.js.map +1 -0
  346. package/dist/tools/todo/index.d.ts +12 -0
  347. package/dist/tools/todo/index.d.ts.map +1 -0
  348. package/dist/tools/todo/index.js +25 -0
  349. package/dist/tools/todo/index.js.map +1 -0
  350. package/dist/tools/todo/interaction.d.ts +30 -0
  351. package/dist/tools/todo/interaction.d.ts.map +1 -0
  352. package/dist/tools/todo/interaction.js +13 -0
  353. package/dist/tools/todo/interaction.js.map +1 -0
  354. package/dist/tools/todo/remove-list.d.ts +5 -0
  355. package/dist/tools/todo/remove-list.d.ts.map +1 -0
  356. package/dist/tools/todo/remove-list.js +42 -0
  357. package/dist/tools/todo/remove-list.js.map +1 -0
  358. package/dist/tools/todo/remove-task.d.ts +5 -0
  359. package/dist/tools/todo/remove-task.d.ts.map +1 -0
  360. package/dist/tools/todo/remove-task.js +45 -0
  361. package/dist/tools/todo/remove-task.js.map +1 -0
  362. package/dist/tools/todo/storage.d.ts +22 -0
  363. package/dist/tools/todo/storage.d.ts.map +1 -0
  364. package/dist/tools/todo/storage.js +44 -0
  365. package/dist/tools/todo/storage.js.map +1 -0
  366. package/dist/tools/utils/delay.d.ts +10 -0
  367. package/dist/tools/utils/delay.d.ts.map +1 -0
  368. package/dist/tools/utils/delay.js +33 -0
  369. package/dist/tools/utils/delay.js.map +1 -0
  370. package/dist/tools/utils/get-current-time.d.ts +7 -2
  371. package/dist/tools/utils/get-current-time.d.ts.map +1 -1
  372. package/dist/tools/utils/get-current-time.js +12 -31
  373. package/dist/tools/utils/get-current-time.js.map +1 -1
  374. package/dist/tools/utils/index.d.ts +2 -0
  375. package/dist/tools/utils/index.d.ts.map +1 -1
  376. package/dist/tools/utils/index.js +7 -0
  377. package/dist/tools/utils/index.js.map +1 -1
  378. package/package.json +54 -56
  379. package/dist/templates/researcher.d.ts +0 -27
  380. package/dist/templates/researcher.d.ts.map +0 -1
  381. package/dist/templates/researcher.js +0 -70
  382. package/dist/templates/researcher.js.map +0 -1
  383. package/dist/tools/www/fetch.d.ts +0 -4
  384. package/dist/tools/www/fetch.d.ts.map +0 -1
  385. package/dist/tools/www/fetch.js +0 -147
  386. package/dist/tools/www/fetch.js.map +0 -1
  387. package/dist/tools/www/index.d.ts +0 -4
  388. package/dist/tools/www/index.d.ts.map +0 -1
  389. package/dist/tools/www/index.js +0 -4
  390. package/dist/tools/www/index.js.map +0 -1
  391. package/dist/tools/www/read-web-page.d.ts +0 -4
  392. package/dist/tools/www/read-web-page.d.ts.map +0 -1
  393. package/dist/tools/www/read-web-page.js +0 -330
  394. package/dist/tools/www/read-web-page.js.map +0 -1
  395. package/dist/tools/www/web-search.d.ts +0 -4
  396. package/dist/tools/www/web-search.d.ts.map +0 -1
  397. package/dist/tools/www/web-search.js +0 -82
  398. package/dist/tools/www/web-search.js.map +0 -1
@@ -0,0 +1,35 @@
1
+ import { type ChildProcessWithoutNullStreams } from "child_process";
2
+ export type BashProcessStatus = "running" | "exited" | "error" | "terminated";
3
+ /**
4
+ * Tracks one spawned shell process: its live status, combined stdout/stderr
5
+ * log ring buffer, and exit info. Kept in memory for the lifetime of the
6
+ * host process so long-running / endless processes (dev servers, watchers)
7
+ * can be inspected and terminated later instead of blocking a tool call.
8
+ */
9
+ declare class BashProcess {
10
+ #private;
11
+ id: string;
12
+ command: string;
13
+ cwd: string;
14
+ child: ChildProcessWithoutNullStreams;
15
+ status: BashProcessStatus;
16
+ exitCode: number | null;
17
+ signal: string | null;
18
+ startedAt: number;
19
+ endedAt: number | null;
20
+ constructor(id: string, command: string, cwd: string, child: ChildProcessWithoutNullStreams);
21
+ pushChunk(chunk: string): void;
22
+ getLastLines(count: number): string[];
23
+ getAllLines(): string[];
24
+ markFinished(exitCode: number | null, signal: string | null): void;
25
+ /** Resolves when the process exits, or after timeoutMs elapses (whichever first). */
26
+ waitFor(timeoutMs: number): Promise<void>;
27
+ }
28
+ export declare function spawnProcess(command: string, cwd?: string): BashProcess;
29
+ export declare function getProcess(id: string): BashProcess;
30
+ export declare function listProcesses(): BashProcess[];
31
+ export declare function writeToProcess(id: string, text: string, appendNewline?: boolean): void;
32
+ export declare function terminateProcess(id: string, signal?: NodeJS.Signals): void;
33
+ export default BashProcess;
34
+ export { BashProcess };
35
+ //# sourceMappingURL=process-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"process-manager.d.ts","sourceRoot":"","sources":["../../../src/tools/bash/process-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,KAAK,8BAA8B,EAAE,MAAM,eAAe,CAAC;AAG3E,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,GAAG,YAAY,CAAC;AAK9E;;;;;GAKG;AACH,cAAM,WAAW;;IACb,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,8BAA8B,CAAC;IACtC,MAAM,EAAE,iBAAiB,CAAa;IACtC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAQ;IAC/B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAQ;IAC7B,SAAS,EAAE,MAAM,CAAc;IAC/B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAQ;gBAIlB,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,8BAA8B;IAO3F,SAAS,CAAC,KAAK,EAAE,MAAM;IAyBvB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE;IAKrC,WAAW,IAAI,MAAM,EAAE;IAIvB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAU3D,qFAAqF;IACrF,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAc5C;AAUD,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,WAAW,CA4BvE;AAED,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,WAAW,CAIlD;AAED,wBAAgB,aAAa,IAAI,WAAW,EAAE,CAE7C;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,UAAO,GAAG,IAAI,CAMnF;AAED,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,GAAE,MAAM,CAAC,OAAmB,GAAG,IAAI,CAIrF;AAED,eAAe,WAAW,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,CAAC"}
@@ -0,0 +1,137 @@
1
+ import { spawn } from "child_process";
2
+ import os from "os";
3
+ const LOG_CAP = 20000; // max characters of combined output kept per process
4
+ const MAX_LINE_LOG = 5000; // hard cap on number of log lines retained
5
+ /**
6
+ * Tracks one spawned shell process: its live status, combined stdout/stderr
7
+ * log ring buffer, and exit info. Kept in memory for the lifetime of the
8
+ * host process so long-running / endless processes (dev servers, watchers)
9
+ * can be inspected and terminated later instead of blocking a tool call.
10
+ */
11
+ class BashProcess {
12
+ id;
13
+ command;
14
+ cwd;
15
+ child;
16
+ status = "running";
17
+ exitCode = null;
18
+ signal = null;
19
+ startedAt = Date.now();
20
+ endedAt = null;
21
+ #lines = [];
22
+ #waiters = [];
23
+ constructor(id, command, cwd, child) {
24
+ this.id = id;
25
+ this.command = command;
26
+ this.cwd = cwd;
27
+ this.child = child;
28
+ }
29
+ pushChunk(chunk) {
30
+ const parts = chunk.split(/\r\n|\r|\n/);
31
+ // merge the first part into the last existing line if the previous
32
+ // chunk didn't end on a newline boundary
33
+ if (this.#lines.length > 0 && !this.#endsWithNewlineFlag) {
34
+ this.#lines[this.#lines.length - 1] += parts.shift();
35
+ }
36
+ this.#lines.push(...parts);
37
+ this.#endsWithNewlineFlag = chunk.endsWith("\n") || chunk.endsWith("\r");
38
+ if (this.#lines.length > MAX_LINE_LOG) {
39
+ this.#lines.splice(0, this.#lines.length - MAX_LINE_LOG);
40
+ }
41
+ this.#capChars();
42
+ }
43
+ #endsWithNewlineFlag = true;
44
+ #capChars() {
45
+ let total = this.#lines.reduce((sum, l) => sum + l.length + 1, 0);
46
+ while (total > LOG_CAP && this.#lines.length > 1) {
47
+ total -= this.#lines[0].length + 1;
48
+ this.#lines.shift();
49
+ }
50
+ }
51
+ getLastLines(count) {
52
+ if (count <= 0)
53
+ return [];
54
+ return this.#lines.slice(Math.max(0, this.#lines.length - count));
55
+ }
56
+ getAllLines() {
57
+ return this.#lines;
58
+ }
59
+ markFinished(exitCode, signal) {
60
+ this.status = signal ? "terminated" : exitCode === 0 ? "exited" : "error";
61
+ this.exitCode = exitCode;
62
+ this.signal = signal;
63
+ this.endedAt = Date.now();
64
+ const waiters = this.#waiters;
65
+ this.#waiters = [];
66
+ waiters.forEach((w) => w());
67
+ }
68
+ /** Resolves when the process exits, or after timeoutMs elapses (whichever first). */
69
+ waitFor(timeoutMs) {
70
+ if (this.status !== "running")
71
+ return Promise.resolve();
72
+ return new Promise((res) => {
73
+ const timer = setTimeout(() => {
74
+ this.#waiters = this.#waiters.filter((w) => w !== onDone);
75
+ res();
76
+ }, timeoutMs);
77
+ const onDone = () => {
78
+ clearTimeout(timer);
79
+ res();
80
+ };
81
+ this.#waiters.push(onDone);
82
+ });
83
+ }
84
+ }
85
+ const processes = new Map();
86
+ let counter = 0;
87
+ function nextId() {
88
+ counter += 1;
89
+ return `p${counter}`;
90
+ }
91
+ export function spawnProcess(command, cwd) {
92
+ const id = nextId();
93
+ const resolvedCwd = cwd || process.cwd();
94
+ const shell = os.platform() === "win32" ? "cmd.exe" : "/bin/bash";
95
+ const shellArgs = os.platform() === "win32" ? ["/d", "/s", "/c", command] : ["-c", command];
96
+ const child = spawn(shell, shellArgs, {
97
+ cwd: resolvedCwd,
98
+ windowsVerbatimArguments: os.platform() === "win32",
99
+ });
100
+ const proc = new BashProcess(id, command, resolvedCwd, child);
101
+ child.stdout.on("data", (data) => proc.pushChunk(data.toString("utf-8")));
102
+ child.stderr.on("data", (data) => proc.pushChunk(data.toString("utf-8")));
103
+ child.on("error", (err) => {
104
+ proc.pushChunk(`[process error] ${err.message}`);
105
+ proc.markFinished(null, null);
106
+ });
107
+ child.on("close", (code, signal) => {
108
+ proc.markFinished(code, signal);
109
+ });
110
+ processes.set(id, proc);
111
+ return proc;
112
+ }
113
+ export function getProcess(id) {
114
+ const proc = processes.get(id);
115
+ if (!proc)
116
+ throw new Error(`no bash process found with id "${id}"`);
117
+ return proc;
118
+ }
119
+ export function listProcesses() {
120
+ return Array.from(processes.values());
121
+ }
122
+ export function writeToProcess(id, text, appendNewline = true) {
123
+ const proc = getProcess(id);
124
+ if (proc.status !== "running") {
125
+ throw new Error(`process "${id}" is not running (status: ${proc.status})`);
126
+ }
127
+ proc.child.stdin.write(appendNewline ? `${text}\n` : text);
128
+ }
129
+ export function terminateProcess(id, signal = "SIGTERM") {
130
+ const proc = getProcess(id);
131
+ if (proc.status !== "running")
132
+ return;
133
+ proc.child.kill(signal);
134
+ }
135
+ export default BashProcess;
136
+ export { BashProcess };
137
+ //# sourceMappingURL=process-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"process-manager.js","sourceRoot":"","sources":["../../../src/tools/bash/process-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { MCPTool } from "../../core/mcp.js";
2
+ import { BashInteraction } from "./interaction.js";
3
+ export declare const BashRunTool: () => MCPTool<BashInteraction>;
4
+ export default BashRunTool;
5
+ //# sourceMappingURL=run.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../../src/tools/bash/run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAY,MAAM,mBAAmB,CAAC;AAEtD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAGnD,eAAO,MAAM,WAAW,gCA8DtB,CAAC;AAEH,eAAe,WAAW,CAAC"}
@@ -0,0 +1,57 @@
1
+ import { MCPTool } from "../../core/mcp.js";
2
+ import { platform } from "os";
3
+ import { BashInteraction } from "./interaction.js";
4
+ import { spawnProcess } from "./process-manager.js";
5
+ export const BashRunTool = () => new MCPTool({
6
+ name: "bash-run",
7
+ description: "launch a shell command as a background process, returns its processId immediately. waits up to waitMs for it to finish; if it's still running after that (e.g. an endless process like `npm run dev`) it returns early with status \"running\" and the process keeps going in the background — use bash-wait or bash-logs to check on it later, and bash-terminate to stop it. if the process needs interactive input (e.g. a CLI prompt like \"please enter your project name:\"), use bash-write-input." + " your bash platform on os-type=" + platform(),
8
+ inputs: [
9
+ {
10
+ name: "command",
11
+ type: "string",
12
+ description: "shell command to run",
13
+ required: true,
14
+ },
15
+ {
16
+ name: "cwd",
17
+ type: "string",
18
+ description: "working directory to run the command in (defaults to process cwd)",
19
+ required: false,
20
+ },
21
+ {
22
+ name: "waitMs",
23
+ type: "number",
24
+ description: "max milliseconds to wait for the process to finish before returning early",
25
+ required: false,
26
+ default: 15000,
27
+ },
28
+ {
29
+ name: "tailLines",
30
+ type: "number",
31
+ description: "number of most recent output lines to include in the response",
32
+ required: false,
33
+ default: 20,
34
+ },
35
+ ],
36
+ customClass: new BashInteraction(),
37
+ execute: async (_envID, inputs, _mcp, customClass) => {
38
+ const { command, cwd, waitMs = 15000, tailLines = 20 } = inputs;
39
+ if (!command || typeof command !== "string") {
40
+ throw new Error("command must be a non-empty string");
41
+ }
42
+ const proc = spawnProcess(command, cwd);
43
+ customClass?.emitBashEvent({ type: "process-started", processId: proc.id, command });
44
+ await proc.waitFor(waitMs);
45
+ if (proc.status !== "running") {
46
+ customClass?.emitBashEvent({ type: "process-exited", processId: proc.id, exitCode: proc.exitCode });
47
+ }
48
+ return {
49
+ processId: proc.id,
50
+ status: proc.status,
51
+ exitCode: proc.exitCode,
52
+ logs: proc.getLastLines(tailLines).join("\n"),
53
+ };
54
+ },
55
+ });
56
+ export default BashRunTool;
57
+ //# sourceMappingURL=run.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../../src/tools/bash/run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAY,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;AAC9B,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,EAAE,CAAC,IAAI,OAAO,CAAkB;IAC1D,IAAI,EAAE,UAAU;IAChB,WAAW,EACP,2eAA2e,GAAG,iCAAiC,GAAG,QAAQ,EAAE;IAChiB,MAAM,EAAE;QACJ;YACI,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,sBAAsB;YACnC,QAAQ,EAAE,IAAI;SACjB;QACD;YACI,IAAI,EAAE,KAAK;YACX,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,mEAAmE;YAChF,QAAQ,EAAE,KAAK;SAClB;QACD;YACI,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,2EAA2E;YACxF,QAAQ,EAAE,KAAK;YACf,OAAO,EAAE,KAAK;SACjB;QACD;YACI,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,+DAA+D;YAC5E,QAAQ,EAAE,KAAK;YACf,OAAO,EAAE,EAAE;SACd;KACJ;IACD,WAAW,EAAE,IAAI,eAAe,EAAE;IAClC,OAAO,EAAE,KAAK,EACV,MAAc,EACd,MAA2B,EAC3B,IAAU,EACV,WAA6B,EACjB,EAAE;QACd,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,KAAK,EAAE,SAAS,GAAG,EAAE,EAAE,GAAG,MAAM,CAAC;QAEhE,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAC1C,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;QAC1D,CAAC;QAED,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAExC,WAAW,EAAE,aAAa,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;QAErF,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAE3B,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC5B,WAAW,EAAE,aAAa,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QACxG,CAAC;QAED,OAAO;YACH,SAAS,EAAE,IAAI,CAAC,EAAE;YAClB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;SAChD,CAAC;IACN,CAAC;CACJ,CAAC,CAAC;AAEH,eAAe,WAAW,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { MCPTool } from "../../core/mcp.js";
2
+ import { BashInteraction } from "./interaction.js";
3
+ export declare const BashTerminateTool: () => MCPTool<BashInteraction>;
4
+ export default BashTerminateTool;
5
+ //# sourceMappingURL=terminate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminate.d.ts","sourceRoot":"","sources":["../../../src/tools/bash/terminate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAY,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAGnD,eAAO,MAAM,iBAAiB,gCA2C5B,CAAC;AAEH,eAAe,iBAAiB,CAAC"}
@@ -0,0 +1,39 @@
1
+ import { MCPTool } from "../../core/mcp.js";
2
+ import { BashInteraction } from "./interaction.js";
3
+ import { terminateProcess, getProcess } from "./process-manager.js";
4
+ export const BashTerminateTool = () => new MCPTool({
5
+ name: "bash-terminate",
6
+ description: "terminate a running process (e.g. stop an endless `npm run dev` once it's no longer needed)",
7
+ inputs: [
8
+ {
9
+ name: "processId",
10
+ type: "string",
11
+ description: "id of the process to terminate",
12
+ required: true,
13
+ },
14
+ {
15
+ name: "force",
16
+ type: "boolean",
17
+ description: "use SIGKILL instead of SIGTERM for an immediate, non-graceful stop",
18
+ required: false,
19
+ default: false,
20
+ },
21
+ ],
22
+ customClass: new BashInteraction(),
23
+ execute: async (_envID, inputs, _mcp, customClass) => {
24
+ const { processId, force = false } = inputs;
25
+ if (!processId || typeof processId !== "string") {
26
+ throw new Error("processId must be a non-empty string");
27
+ }
28
+ terminateProcess(processId, force ? "SIGKILL" : "SIGTERM");
29
+ const proc = getProcess(processId);
30
+ await proc.waitFor(3000);
31
+ customClass?.emitBashEvent({ type: "terminated", processId });
32
+ return {
33
+ message: "success",
34
+ status: proc.status,
35
+ };
36
+ },
37
+ });
38
+ export default BashTerminateTool;
39
+ //# sourceMappingURL=terminate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminate.js","sourceRoot":"","sources":["../../../src/tools/bash/terminate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAY,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEpE,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,EAAE,CAAC,IAAI,OAAO,CAAkB;IAChE,IAAI,EAAE,gBAAgB;IACtB,WAAW,EAAE,6FAA6F;IAC1G,MAAM,EAAE;QACJ;YACI,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,gCAAgC;YAC7C,QAAQ,EAAE,IAAI;SACjB;QACD;YACI,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,SAAS;YACf,WAAW,EAAE,oEAAoE;YACjF,QAAQ,EAAE,KAAK;YACf,OAAO,EAAE,KAAK;SACjB;KACJ;IACD,WAAW,EAAE,IAAI,eAAe,EAAE;IAClC,OAAO,EAAE,KAAK,EACV,MAAc,EACd,MAA2B,EAC3B,IAAU,EACV,WAA6B,EACjB,EAAE;QACd,MAAM,EAAE,SAAS,EAAE,KAAK,GAAG,KAAK,EAAE,GAAG,MAAM,CAAC;QAE5C,IAAI,CAAC,SAAS,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;YAC9C,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAC5D,CAAC;QAED,gBAAgB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAE3D,MAAM,IAAI,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;QACnC,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAEzB,WAAW,EAAE,aAAa,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC,CAAC;QAE9D,OAAO;YACH,OAAO,EAAE,SAAS;YAClB,MAAM,EAAE,IAAI,CAAC,MAAM;SACtB,CAAC;IACN,CAAC;CACJ,CAAC,CAAC;AAEH,eAAe,iBAAiB,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { MCPTool } from "../../core/mcp.js";
2
+ import { BashInteraction } from "./interaction.js";
3
+ export declare const BashWaitTool: () => MCPTool<BashInteraction>;
4
+ export default BashWaitTool;
5
+ //# sourceMappingURL=wait.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wait.d.ts","sourceRoot":"","sources":["../../../src/tools/bash/wait.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAY,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAGnD,eAAO,MAAM,YAAY,gCAwDvB,CAAC;AAEH,eAAe,YAAY,CAAC"}
@@ -0,0 +1,50 @@
1
+ import { MCPTool } from "../../core/mcp.js";
2
+ import { BashInteraction } from "./interaction.js";
3
+ import { getProcess } from "./process-manager.js";
4
+ export const BashWaitTool = () => new MCPTool({
5
+ name: "bash-wait",
6
+ description: "wait up to waitMs for a previously started process to finish, then return its status and the last N lines of output (works the same as the initial wait in bash-run, useful for polling a long-running process again)",
7
+ inputs: [
8
+ {
9
+ name: "processId",
10
+ type: "string",
11
+ description: "id of the process to wait on",
12
+ required: true,
13
+ },
14
+ {
15
+ name: "waitMs",
16
+ type: "number",
17
+ description: "max milliseconds to wait for the process to finish",
18
+ required: false,
19
+ default: 15000,
20
+ },
21
+ {
22
+ name: "tailLines",
23
+ type: "number",
24
+ description: "number of most recent output lines to include in the response",
25
+ required: false,
26
+ default: 20,
27
+ },
28
+ ],
29
+ customClass: new BashInteraction(),
30
+ execute: async (_envID, inputs, _mcp, customClass) => {
31
+ const { processId, waitMs = 15000, tailLines = 20 } = inputs;
32
+ if (!processId || typeof processId !== "string") {
33
+ throw new Error("processId must be a non-empty string");
34
+ }
35
+ const proc = getProcess(processId);
36
+ customClass?.emitBashEvent({ type: "waiting", processId });
37
+ await proc.waitFor(waitMs);
38
+ if (proc.status !== "running") {
39
+ customClass?.emitBashEvent({ type: "process-exited", processId, exitCode: proc.exitCode });
40
+ }
41
+ return {
42
+ processId: proc.id,
43
+ status: proc.status,
44
+ exitCode: proc.exitCode,
45
+ logs: proc.getLastLines(tailLines).join("\n"),
46
+ };
47
+ },
48
+ });
49
+ export default BashWaitTool;
50
+ //# sourceMappingURL=wait.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wait.js","sourceRoot":"","sources":["../../../src/tools/bash/wait.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAY,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,MAAM,CAAC,MAAM,YAAY,GAAG,GAAG,EAAE,CAAC,IAAI,OAAO,CAAkB;IAC3D,IAAI,EAAE,WAAW;IACjB,WAAW,EACP,uNAAuN;IAC3N,MAAM,EAAE;QACJ;YACI,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,8BAA8B;YAC3C,QAAQ,EAAE,IAAI;SACjB;QACD;YACI,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,oDAAoD;YACjE,QAAQ,EAAE,KAAK;YACf,OAAO,EAAE,KAAK;SACjB;QACD;YACI,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,+DAA+D;YAC5E,QAAQ,EAAE,KAAK;YACf,OAAO,EAAE,EAAE;SACd;KACJ;IACD,WAAW,EAAE,IAAI,eAAe,EAAE;IAClC,OAAO,EAAE,KAAK,EACV,MAAc,EACd,MAA2B,EAC3B,IAAU,EACV,WAA6B,EACjB,EAAE;QACd,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,KAAK,EAAE,SAAS,GAAG,EAAE,EAAE,GAAG,MAAM,CAAC;QAE7D,IAAI,CAAC,SAAS,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;YAC9C,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAC5D,CAAC;QAED,MAAM,IAAI,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;QAEnC,WAAW,EAAE,aAAa,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;QAE3D,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAE3B,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC5B,WAAW,EAAE,aAAa,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC/F,CAAC;QAED,OAAO;YACH,SAAS,EAAE,IAAI,CAAC,EAAE;YAClB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;SAChD,CAAC;IACN,CAAC;CACJ,CAAC,CAAC;AAEH,eAAe,YAAY,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { MCPTool } from "../../core/mcp.js";
2
+ import { BashInteraction } from "./interaction.js";
3
+ export declare const BashWriteInputTool: () => MCPTool<BashInteraction>;
4
+ export default BashWriteInputTool;
5
+ //# sourceMappingURL=write-input.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"write-input.d.ts","sourceRoot":"","sources":["../../../src/tools/bash/write-input.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAY,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAGnD,eAAO,MAAM,kBAAkB,gCAoD7B,CAAC;AAEH,eAAe,kBAAkB,CAAC"}
@@ -0,0 +1,47 @@
1
+ import { MCPTool } from "../../core/mcp.js";
2
+ import { BashInteraction } from "./interaction.js";
3
+ import { writeToProcess, getProcess } from "./process-manager.js";
4
+ export const BashWriteInputTool = () => new MCPTool({
5
+ name: "bash-write-input",
6
+ description: "send text to a running process's stdin, e.g. to answer an interactive prompt like \"please enter your project name:\" or confirm a \"(y/n)\" question. a newline is appended by default so the process receives it as an ENTER keypress.",
7
+ inputs: [
8
+ {
9
+ name: "processId",
10
+ type: "string",
11
+ description: "id of the process to write to",
12
+ required: true,
13
+ },
14
+ {
15
+ name: "text",
16
+ type: "string",
17
+ description: "text to send to stdin (e.g. \"my-project\" or \"y\")",
18
+ required: true,
19
+ },
20
+ {
21
+ name: "appendNewline",
22
+ type: "boolean",
23
+ description: "append a newline after text, simulating pressing ENTER",
24
+ required: false,
25
+ default: true,
26
+ },
27
+ ],
28
+ customClass: new BashInteraction(),
29
+ execute: async (_envID, inputs, _mcp, customClass) => {
30
+ const { processId, text, appendNewline = true } = inputs;
31
+ if (!processId || typeof processId !== "string") {
32
+ throw new Error("processId must be a non-empty string");
33
+ }
34
+ if (typeof text !== "string") {
35
+ throw new Error("text must be a string");
36
+ }
37
+ writeToProcess(processId, text, appendNewline);
38
+ customClass?.emitBashEvent({ type: "input-sent", processId });
39
+ const proc = getProcess(processId);
40
+ return {
41
+ message: "success",
42
+ status: proc.status,
43
+ };
44
+ },
45
+ });
46
+ export default BashWriteInputTool;
47
+ //# sourceMappingURL=write-input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"write-input.js","sourceRoot":"","sources":["../../../src/tools/bash/write-input.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAY,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElE,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,EAAE,CAAC,IAAI,OAAO,CAAkB;IACjE,IAAI,EAAE,kBAAkB;IACxB,WAAW,EACP,0OAA0O;IAC9O,MAAM,EAAE;QACJ;YACI,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,+BAA+B;YAC5C,QAAQ,EAAE,IAAI;SACjB;QACD;YACI,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,sDAAsD;YACnE,QAAQ,EAAE,IAAI;SACjB;QACD;YACI,IAAI,EAAE,eAAe;YACrB,IAAI,EAAE,SAAS;YACf,WAAW,EAAE,wDAAwD;YACrE,QAAQ,EAAE,KAAK;YACf,OAAO,EAAE,IAAI;SAChB;KACJ;IACD,WAAW,EAAE,IAAI,eAAe,EAAE;IAClC,OAAO,EAAE,KAAK,EACV,MAAc,EACd,MAA2B,EAC3B,IAAU,EACV,WAA6B,EACjB,EAAE;QACd,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,aAAa,GAAG,IAAI,EAAE,GAAG,MAAM,CAAC;QAEzD,IAAI,CAAC,SAAS,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;YAC9C,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAC5D,CAAC;QACD,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAC7C,CAAC;QAED,cAAc,CAAC,SAAS,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;QAE/C,WAAW,EAAE,aAAa,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC,CAAC;QAE9D,MAAM,IAAI,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;QAEnC,OAAO;YACH,OAAO,EAAE,SAAS;YAClB,MAAM,EAAE,IAAI,CAAC,MAAM;SACtB,CAAC;IACN,CAAC;CACJ,CAAC,CAAC;AAEH,eAAe,kBAAkB,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { MCPTool } from "../../core/mcp.js";
2
+ import { BrowserInteraction } from "./interaction.js";
3
+ export declare const BrowserClickTool: () => MCPTool<BrowserInteraction>;
4
+ export default BrowserClickTool;
5
+ //# sourceMappingURL=click.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"click.d.ts","sourceRoot":"","sources":["../../../src/tools/browser/click.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAItD,eAAO,MAAM,gBAAgB,mCAiD3B,CAAC;AAEH,eAAe,gBAAgB,CAAC"}
@@ -0,0 +1,44 @@
1
+ import { MCPTool } from "../../core/mcp.js";
2
+ import { BrowserInteraction } from "./interaction.js";
3
+ import { getSession } from "./session-manager.js";
4
+ import { resolveRef } from "./read-page.js";
5
+ export const BrowserClickTool = () => new MCPTool({
6
+ name: "browser-click",
7
+ description: "click a clickable element on the page (a ref id previously returned by browser-read, marked [CLICKABLE])",
8
+ inputs: [
9
+ {
10
+ name: "sessionId",
11
+ type: "string",
12
+ description: "session to act on",
13
+ required: true,
14
+ },
15
+ {
16
+ name: "ref",
17
+ type: "string",
18
+ description: "ref id of the element to click, e.g. 0x4",
19
+ required: true,
20
+ },
21
+ ],
22
+ customClass: new BrowserInteraction(),
23
+ execute: async (_envID, inputs, _mcp, customClass) => {
24
+ const { sessionId, ref } = inputs;
25
+ if (!sessionId || typeof sessionId !== "string") {
26
+ throw new Error("sessionId must be a non-empty string");
27
+ }
28
+ if (!ref || typeof ref !== "string") {
29
+ throw new Error("ref must be a non-empty string");
30
+ }
31
+ customClass?.emitBrowserEvent({ type: "clicking", sessionId, ref });
32
+ const session = getSession(sessionId);
33
+ const element = await resolveRef(session.page, ref);
34
+ if (!element) {
35
+ throw new Error(`ref "${ref}" was not found on the page (call browser-read again to get fresh refs)`);
36
+ }
37
+ await element.click();
38
+ return {
39
+ message: "success",
40
+ };
41
+ },
42
+ });
43
+ export default BrowserClickTool;
44
+ //# sourceMappingURL=click.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"click.js","sourceRoot":"","sources":["../../../src/tools/browser/click.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE5C,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,EAAE,CAAC,IAAI,OAAO,CAAqB;IAClE,IAAI,EAAE,eAAe;IACrB,WAAW,EAAE,0GAA0G;IACvH,MAAM,EAAE;QACJ;YACI,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,mBAAmB;YAChC,QAAQ,EAAE,IAAI;SACjB;QACD;YACI,IAAI,EAAE,KAAK;YACX,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,0CAA0C;YACvD,QAAQ,EAAE,IAAI;SACjB;KACJ;IACD,WAAW,EAAE,IAAI,kBAAkB,EAAE;IACrC,OAAO,EAAE,KAAK,EACV,MAAc,EACd,MAA2B,EAC3B,IAAU,EACV,WAAgC,EACpB,EAAE;QACd,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC;QAElC,IAAI,CAAC,SAAS,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;YAC9C,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAC5D,CAAC;QAED,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;QACtD,CAAC;QAED,WAAW,EAAE,gBAAgB,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;QAEpE,MAAM,OAAO,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;QACtC,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAEpD,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,QAAQ,GAAG,yEAAyE,CAAC,CAAC;QAC1G,CAAC;QAED,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;QAEtB,OAAO;YACH,OAAO,EAAE,SAAS;SACrB,CAAC;IACN,CAAC;CACJ,CAAC,CAAC;AAEH,eAAe,gBAAgB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { MCPTool } from "../../core/mcp.js";
2
+ export declare const BrowserConsoleTool: () => MCPTool<undefined>;
3
+ export default BrowserConsoleTool;
4
+ //# sourceMappingURL=console.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"console.d.ts","sourceRoot":"","sources":["../../../src/tools/browser/console.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAG5C,eAAO,MAAM,kBAAkB,0BAuC7B,CAAC;AAEH,eAAe,kBAAkB,CAAC"}
@@ -0,0 +1,41 @@
1
+ import { MCPTool } from "../../core/mcp.js";
2
+ import { getSession } from "./session-manager.js";
3
+ export const BrowserConsoleTool = () => new MCPTool({
4
+ name: "browser-console",
5
+ description: "read console log messages captured from a browser session (each message capped at 1000 characters)",
6
+ inputs: [
7
+ {
8
+ name: "sessionId",
9
+ type: "string",
10
+ description: "session to read console logs from",
11
+ required: true,
12
+ },
13
+ {
14
+ name: "limit",
15
+ type: "number",
16
+ description: "max number of messages to return",
17
+ required: false,
18
+ default: 20,
19
+ },
20
+ {
21
+ name: "offset",
22
+ type: "number",
23
+ description: "offset into the log buffer",
24
+ required: false,
25
+ default: 0,
26
+ },
27
+ ],
28
+ execute: async (_envID, inputs) => {
29
+ const { sessionId, limit = 20, offset = 0 } = inputs;
30
+ if (!sessionId || typeof sessionId !== "string") {
31
+ throw new Error("sessionId must be a non-empty string");
32
+ }
33
+ const session = getSession(sessionId);
34
+ return {
35
+ messages: session.consoleLogs.slice(offset, offset + limit),
36
+ total: session.consoleLogs.length,
37
+ };
38
+ },
39
+ });
40
+ export default BrowserConsoleTool;
41
+ //# sourceMappingURL=console.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"console.js","sourceRoot":"","sources":["../../../src/tools/browser/console.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,EAAE,CAAC,IAAI,OAAO,CAAC;IAChD,IAAI,EAAE,iBAAiB;IACvB,WAAW,EAAE,oGAAoG;IACjH,MAAM,EAAE;QACJ;YACI,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,mCAAmC;YAChD,QAAQ,EAAE,IAAI;SACjB;QACD;YACI,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,kCAAkC;YAC/C,QAAQ,EAAE,KAAK;YACf,OAAO,EAAE,EAAE;SACd;QACD;YACI,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,4BAA4B;YACzC,QAAQ,EAAE,KAAK;YACf,OAAO,EAAE,CAAC;SACb;KACJ;IACD,OAAO,EAAE,KAAK,EAAE,MAAc,EAAE,MAA2B,EAAgB,EAAE;QACzE,MAAM,EAAE,SAAS,EAAE,KAAK,GAAG,EAAE,EAAE,MAAM,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC;QAErD,IAAI,CAAC,SAAS,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;YAC9C,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAC5D,CAAC;QAED,MAAM,OAAO,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;QAEtC,OAAO;YACH,QAAQ,EAAE,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC;YAC3D,KAAK,EAAE,OAAO,CAAC,WAAW,CAAC,MAAM;SACpC,CAAC;IACN,CAAC;CACJ,CAAC,CAAC;AAEH,eAAe,kBAAkB,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { MCPTool } from "../../core/mcp.js";
2
+ import { BrowserInteraction } from "./interaction.js";
3
+ export declare const BrowserCreateSessionTool: () => MCPTool<BrowserInteraction>;
4
+ export default BrowserCreateSessionTool;
5
+ //# sourceMappingURL=create-session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-session.d.ts","sourceRoot":"","sources":["../../../src/tools/browser/create-session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAA2B,MAAM,mBAAmB,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAGtD,eAAO,MAAM,wBAAwB,mCAkCnC,CAAC;AAEH,eAAe,wBAAwB,CAAC"}
@@ -0,0 +1,30 @@
1
+ import { MCPTool, generateRefId } from "../../core/mcp.js";
2
+ import { BrowserInteraction } from "./interaction.js";
3
+ import { createSession } from "./session-manager.js";
4
+ export const BrowserCreateSessionTool = () => new MCPTool({
5
+ name: "browser-create-session",
6
+ description: "open a new headless browser session at a given url, returns its sessionId",
7
+ inputs: [
8
+ {
9
+ name: "url",
10
+ type: "string",
11
+ description: "url to open the session at",
12
+ required: true,
13
+ },
14
+ ],
15
+ customClass: new BrowserInteraction(),
16
+ execute: async (_envID, inputs, mcp, customClass) => {
17
+ const { url } = inputs;
18
+ if (!url || typeof url !== "string") {
19
+ throw new Error("url must be a non-empty string");
20
+ }
21
+ const sessionId = await generateRefId(mcp);
22
+ customClass?.emitBrowserEvent({ type: "session-created", sessionId, url });
23
+ await createSession(url, sessionId);
24
+ return {
25
+ sessionId,
26
+ };
27
+ },
28
+ });
29
+ export default BrowserCreateSessionTool;
30
+ //# sourceMappingURL=create-session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-session.js","sourceRoot":"","sources":["../../../src/tools/browser/create-session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,aAAa,EAAY,MAAM,mBAAmB,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,MAAM,CAAC,MAAM,wBAAwB,GAAG,GAAG,EAAE,CAAC,IAAI,OAAO,CAAqB;IAC1E,IAAI,EAAE,wBAAwB;IAC9B,WAAW,EAAE,2EAA2E;IACxF,MAAM,EAAE;QACJ;YACI,IAAI,EAAE,KAAK;YACX,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,4BAA4B;YACzC,QAAQ,EAAE,IAAI;SACjB;KACJ;IACD,WAAW,EAAE,IAAI,kBAAkB,EAAE;IACrC,OAAO,EAAE,KAAK,EACV,MAAc,EACd,MAA2B,EAC3B,GAAS,EACT,WAAgC,EACpB,EAAE;QACd,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC;QAEvB,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;QACtD,CAAC;QAED,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC,GAAG,CAAC,CAAC;QAE3C,WAAW,EAAE,gBAAgB,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;QAE3E,MAAM,aAAa,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QAEpC,OAAO;YACH,SAAS;SACZ,CAAC;IACN,CAAC;CACJ,CAAC,CAAC;AAEH,eAAe,wBAAwB,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { Page } from "puppeteer-core";
2
+ /**
3
+ * Drop-in replacement for `page.evaluate(fn, ...args)` that is safe to call
4
+ * from a project run under tsx/ts-node/esbuild as well as a plain `tsc`
5
+ * build. Always use this (instead of page.evaluate directly) for any
6
+ * callback that declares nested named `const`/`let` functions.
7
+ */
8
+ export declare function evaluateSafe<T, A extends any[]>(page: Page, fn: (...args: A) => T | Promise<T>, ...args: A): Promise<T>;
9
+ export default evaluateSafe;
10
+ //# sourceMappingURL=evaluate-safe.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evaluate-safe.d.ts","sourceRoot":"","sources":["../../../src/tools/browser/evaluate-safe.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAuD3C;;;;;GAKG;AACH,wBAAsB,YAAY,CAAC,CAAC,EAAE,CAAC,SAAS,GAAG,EAAE,EACjD,IAAI,EAAE,IAAI,EACV,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,EAClC,GAAG,IAAI,EAAE,CAAC,GACX,OAAO,CAAC,CAAC,CAAC,CAaZ;AAED,eAAe,YAAY,CAAC"}