@iflow-mcp/shaun0927-openchrome 1.7.13

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 (525) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +387 -0
  3. package/assets/chart-tokens.svg +42 -0
  4. package/assets/demo.svg +278 -0
  5. package/assets/mascot.png +0 -0
  6. package/dist/cdp/client.d.ts +265 -0
  7. package/dist/cdp/client.d.ts.map +1 -0
  8. package/dist/cdp/client.js +1419 -0
  9. package/dist/cdp/client.js.map +1 -0
  10. package/dist/cdp/connection-pool.d.ts +117 -0
  11. package/dist/cdp/connection-pool.d.ts.map +1 -0
  12. package/dist/cdp/connection-pool.js +421 -0
  13. package/dist/cdp/connection-pool.js.map +1 -0
  14. package/dist/cdp/screenshot-scheduler.d.ts +55 -0
  15. package/dist/cdp/screenshot-scheduler.d.ts.map +1 -0
  16. package/dist/cdp/screenshot-scheduler.js +121 -0
  17. package/dist/cdp/screenshot-scheduler.js.map +1 -0
  18. package/dist/chrome/launcher.d.ts +113 -0
  19. package/dist/chrome/launcher.d.ts.map +1 -0
  20. package/dist/chrome/launcher.js +850 -0
  21. package/dist/chrome/launcher.js.map +1 -0
  22. package/dist/chrome/pool.d.ts +43 -0
  23. package/dist/chrome/pool.d.ts.map +1 -0
  24. package/dist/chrome/pool.js +219 -0
  25. package/dist/chrome/pool.js.map +1 -0
  26. package/dist/chrome/profile-manager.d.ts +156 -0
  27. package/dist/chrome/profile-manager.d.ts.map +1 -0
  28. package/dist/chrome/profile-manager.js +558 -0
  29. package/dist/chrome/profile-manager.js.map +1 -0
  30. package/dist/cli/claude-session.d.ts +11 -0
  31. package/dist/cli/claude-session.js +349 -0
  32. package/dist/cli/claude-session.js.map +1 -0
  33. package/dist/cli/index.d.ts +14 -0
  34. package/dist/cli/index.js +1013 -0
  35. package/dist/cli/index.js.map +1 -0
  36. package/dist/cli/install.d.ts +16 -0
  37. package/dist/cli/install.js +185 -0
  38. package/dist/cli/install.js.map +1 -0
  39. package/dist/cli/uninstall.d.ts +7 -0
  40. package/dist/cli/uninstall.js +126 -0
  41. package/dist/cli/uninstall.js.map +1 -0
  42. package/dist/cli/update-check.d.ts +10 -0
  43. package/dist/cli/update-check.js +187 -0
  44. package/dist/cli/update-check.js.map +1 -0
  45. package/dist/compression/snapshot-store.d.ts +54 -0
  46. package/dist/compression/snapshot-store.d.ts.map +1 -0
  47. package/dist/compression/snapshot-store.js +183 -0
  48. package/dist/compression/snapshot-store.js.map +1 -0
  49. package/dist/config/defaults.d.ts +102 -0
  50. package/dist/config/defaults.d.ts.map +1 -0
  51. package/dist/config/defaults.js +102 -0
  52. package/dist/config/defaults.js.map +1 -0
  53. package/dist/config/global.d.ts +81 -0
  54. package/dist/config/global.d.ts.map +1 -0
  55. package/dist/config/global.js +30 -0
  56. package/dist/config/global.js.map +1 -0
  57. package/dist/config/index.d.ts +16 -0
  58. package/dist/config/index.d.ts.map +1 -0
  59. package/dist/config/index.js +21 -0
  60. package/dist/config/index.js.map +1 -0
  61. package/dist/config/tool-tiers.d.ts +14 -0
  62. package/dist/config/tool-tiers.d.ts.map +1 -0
  63. package/dist/config/tool-tiers.js +69 -0
  64. package/dist/config/tool-tiers.js.map +1 -0
  65. package/dist/dashboard/activity-tracker.d.ts +95 -0
  66. package/dist/dashboard/activity-tracker.d.ts.map +1 -0
  67. package/dist/dashboard/activity-tracker.js +275 -0
  68. package/dist/dashboard/activity-tracker.js.map +1 -0
  69. package/dist/dashboard/ansi.d.ts +117 -0
  70. package/dist/dashboard/ansi.d.ts.map +1 -0
  71. package/dist/dashboard/ansi.js +199 -0
  72. package/dist/dashboard/ansi.js.map +1 -0
  73. package/dist/dashboard/index.d.ts +110 -0
  74. package/dist/dashboard/index.d.ts.map +1 -0
  75. package/dist/dashboard/index.js +413 -0
  76. package/dist/dashboard/index.js.map +1 -0
  77. package/dist/dashboard/keyboard-handler.d.ts +43 -0
  78. package/dist/dashboard/keyboard-handler.d.ts.map +1 -0
  79. package/dist/dashboard/keyboard-handler.js +230 -0
  80. package/dist/dashboard/keyboard-handler.js.map +1 -0
  81. package/dist/dashboard/operation-controller.d.ts +76 -0
  82. package/dist/dashboard/operation-controller.d.ts.map +1 -0
  83. package/dist/dashboard/operation-controller.js +167 -0
  84. package/dist/dashboard/operation-controller.js.map +1 -0
  85. package/dist/dashboard/renderer.d.ts +76 -0
  86. package/dist/dashboard/renderer.d.ts.map +1 -0
  87. package/dist/dashboard/renderer.js +193 -0
  88. package/dist/dashboard/renderer.js.map +1 -0
  89. package/dist/dashboard/types.d.ts +74 -0
  90. package/dist/dashboard/types.d.ts.map +1 -0
  91. package/dist/dashboard/types.js +12 -0
  92. package/dist/dashboard/types.js.map +1 -0
  93. package/dist/dashboard/views/main-view.d.ts +23 -0
  94. package/dist/dashboard/views/main-view.d.ts.map +1 -0
  95. package/dist/dashboard/views/main-view.js +143 -0
  96. package/dist/dashboard/views/main-view.js.map +1 -0
  97. package/dist/dashboard/views/sessions-view.d.ts +22 -0
  98. package/dist/dashboard/views/sessions-view.d.ts.map +1 -0
  99. package/dist/dashboard/views/sessions-view.js +104 -0
  100. package/dist/dashboard/views/sessions-view.js.map +1 -0
  101. package/dist/dashboard/views/tabs-view.d.ts +21 -0
  102. package/dist/dashboard/views/tabs-view.d.ts.map +1 -0
  103. package/dist/dashboard/views/tabs-view.js +92 -0
  104. package/dist/dashboard/views/tabs-view.js.map +1 -0
  105. package/dist/dom/dom-serializer.d.ts +37 -0
  106. package/dist/dom/dom-serializer.d.ts.map +1 -0
  107. package/dist/dom/dom-serializer.js +429 -0
  108. package/dist/dom/dom-serializer.js.map +1 -0
  109. package/dist/dom/index.d.ts +2 -0
  110. package/dist/dom/index.d.ts.map +1 -0
  111. package/dist/dom/index.js +6 -0
  112. package/dist/dom/index.js.map +1 -0
  113. package/dist/errors/timeout.d.ts +20 -0
  114. package/dist/errors/timeout.d.ts.map +1 -0
  115. package/dist/errors/timeout.js +41 -0
  116. package/dist/errors/timeout.js.map +1 -0
  117. package/dist/hints/hint-engine.d.ts +117 -0
  118. package/dist/hints/hint-engine.d.ts.map +1 -0
  119. package/dist/hints/hint-engine.js +347 -0
  120. package/dist/hints/hint-engine.js.map +1 -0
  121. package/dist/hints/index.d.ts +8 -0
  122. package/dist/hints/index.d.ts.map +1 -0
  123. package/dist/hints/index.js +11 -0
  124. package/dist/hints/index.js.map +1 -0
  125. package/dist/hints/pattern-learner.d.ts +76 -0
  126. package/dist/hints/pattern-learner.d.ts.map +1 -0
  127. package/dist/hints/pattern-learner.js +254 -0
  128. package/dist/hints/pattern-learner.js.map +1 -0
  129. package/dist/hints/progress-tracker.d.ts +44 -0
  130. package/dist/hints/progress-tracker.d.ts.map +1 -0
  131. package/dist/hints/progress-tracker.js +118 -0
  132. package/dist/hints/progress-tracker.js.map +1 -0
  133. package/dist/hints/rules/blocking-page.d.ts +8 -0
  134. package/dist/hints/rules/blocking-page.d.ts.map +1 -0
  135. package/dist/hints/rules/blocking-page.js +58 -0
  136. package/dist/hints/rules/blocking-page.js.map +1 -0
  137. package/dist/hints/rules/composite-suggestions.d.ts +6 -0
  138. package/dist/hints/rules/composite-suggestions.d.ts.map +1 -0
  139. package/dist/hints/rules/composite-suggestions.js +138 -0
  140. package/dist/hints/rules/composite-suggestions.js.map +1 -0
  141. package/dist/hints/rules/error-recovery.d.ts +7 -0
  142. package/dist/hints/rules/error-recovery.d.ts.map +1 -0
  143. package/dist/hints/rules/error-recovery.js +59 -0
  144. package/dist/hints/rules/error-recovery.js.map +1 -0
  145. package/dist/hints/rules/learned-rules.d.ts +13 -0
  146. package/dist/hints/rules/learned-rules.d.ts.map +1 -0
  147. package/dist/hints/rules/learned-rules.js +27 -0
  148. package/dist/hints/rules/learned-rules.js.map +1 -0
  149. package/dist/hints/rules/pagination-detection.d.ts +7 -0
  150. package/dist/hints/rules/pagination-detection.d.ts.map +1 -0
  151. package/dist/hints/rules/pagination-detection.js +220 -0
  152. package/dist/hints/rules/pagination-detection.js.map +1 -0
  153. package/dist/hints/rules/repetition-detection.d.ts +7 -0
  154. package/dist/hints/rules/repetition-detection.d.ts.map +1 -0
  155. package/dist/hints/rules/repetition-detection.js +271 -0
  156. package/dist/hints/rules/repetition-detection.js.map +1 -0
  157. package/dist/hints/rules/sequence-detection.d.ts +6 -0
  158. package/dist/hints/rules/sequence-detection.d.ts.map +1 -0
  159. package/dist/hints/rules/sequence-detection.js +99 -0
  160. package/dist/hints/rules/sequence-detection.js.map +1 -0
  161. package/dist/hints/rules/setup-hints.d.ts +6 -0
  162. package/dist/hints/rules/setup-hints.d.ts.map +1 -0
  163. package/dist/hints/rules/setup-hints.js +24 -0
  164. package/dist/hints/rules/setup-hints.js.map +1 -0
  165. package/dist/hints/rules/success-hints.d.ts +6 -0
  166. package/dist/hints/rules/success-hints.d.ts.map +1 -0
  167. package/dist/hints/rules/success-hints.js +74 -0
  168. package/dist/hints/rules/success-hints.js.map +1 -0
  169. package/dist/index.d.ts +10 -0
  170. package/dist/index.d.ts.map +1 -0
  171. package/dist/index.js +357 -0
  172. package/dist/index.js.map +1 -0
  173. package/dist/lightpanda/launcher.d.ts +58 -0
  174. package/dist/lightpanda/launcher.d.ts.map +1 -0
  175. package/dist/lightpanda/launcher.js +210 -0
  176. package/dist/lightpanda/launcher.js.map +1 -0
  177. package/dist/mcp-server.d.ts +154 -0
  178. package/dist/mcp-server.d.ts.map +1 -0
  179. package/dist/mcp-server.js +962 -0
  180. package/dist/mcp-server.js.map +1 -0
  181. package/dist/memory/domain-memory.d.ts +68 -0
  182. package/dist/memory/domain-memory.d.ts.map +1 -0
  183. package/dist/memory/domain-memory.js +224 -0
  184. package/dist/memory/domain-memory.js.map +1 -0
  185. package/dist/orchestration/plan-executor.d.ts +19 -0
  186. package/dist/orchestration/plan-executor.d.ts.map +1 -0
  187. package/dist/orchestration/plan-executor.js +276 -0
  188. package/dist/orchestration/plan-executor.js.map +1 -0
  189. package/dist/orchestration/plan-registry.d.ts +55 -0
  190. package/dist/orchestration/plan-registry.d.ts.map +1 -0
  191. package/dist/orchestration/plan-registry.js +256 -0
  192. package/dist/orchestration/plan-registry.js.map +1 -0
  193. package/dist/orchestration/state-manager.d.ts +127 -0
  194. package/dist/orchestration/state-manager.d.ts.map +1 -0
  195. package/dist/orchestration/state-manager.js +438 -0
  196. package/dist/orchestration/state-manager.js.map +1 -0
  197. package/dist/orchestration/workflow-engine.d.ts +162 -0
  198. package/dist/orchestration/workflow-engine.d.ts.map +1 -0
  199. package/dist/orchestration/workflow-engine.js +748 -0
  200. package/dist/orchestration/workflow-engine.js.map +1 -0
  201. package/dist/resources/usage-guide.d.ts +13 -0
  202. package/dist/resources/usage-guide.d.ts.map +1 -0
  203. package/dist/resources/usage-guide.js +123 -0
  204. package/dist/resources/usage-guide.js.map +1 -0
  205. package/dist/router/browser-router.d.ts +47 -0
  206. package/dist/router/browser-router.d.ts.map +1 -0
  207. package/dist/router/browser-router.js +157 -0
  208. package/dist/router/browser-router.js.map +1 -0
  209. package/dist/router/cookie-sync.d.ts +48 -0
  210. package/dist/router/cookie-sync.d.ts.map +1 -0
  211. package/dist/router/cookie-sync.js +106 -0
  212. package/dist/router/cookie-sync.js.map +1 -0
  213. package/dist/router/index.d.ts +5 -0
  214. package/dist/router/index.d.ts.map +1 -0
  215. package/dist/router/index.js +10 -0
  216. package/dist/router/index.js.map +1 -0
  217. package/dist/router/tool-routing-registry.d.ts +21 -0
  218. package/dist/router/tool-routing-registry.d.ts.map +1 -0
  219. package/dist/router/tool-routing-registry.js +89 -0
  220. package/dist/router/tool-routing-registry.js.map +1 -0
  221. package/dist/security/audit-logger.d.ts +2 -0
  222. package/dist/security/audit-logger.d.ts.map +1 -0
  223. package/dist/security/audit-logger.js +109 -0
  224. package/dist/security/audit-logger.js.map +1 -0
  225. package/dist/security/domain-guard.d.ts +11 -0
  226. package/dist/security/domain-guard.d.ts.map +1 -0
  227. package/dist/security/domain-guard.js +98 -0
  228. package/dist/security/domain-guard.js.map +1 -0
  229. package/dist/session-manager.d.ts +325 -0
  230. package/dist/session-manager.d.ts.map +1 -0
  231. package/dist/session-manager.js +1402 -0
  232. package/dist/session-manager.js.map +1 -0
  233. package/dist/storage-state/index.d.ts +2 -0
  234. package/dist/storage-state/index.d.ts.map +1 -0
  235. package/dist/storage-state/index.js +6 -0
  236. package/dist/storage-state/index.js.map +1 -0
  237. package/dist/storage-state/storage-state-manager.d.ts +52 -0
  238. package/dist/storage-state/storage-state-manager.d.ts.map +1 -0
  239. package/dist/storage-state/storage-state-manager.js +135 -0
  240. package/dist/storage-state/storage-state-manager.js.map +1 -0
  241. package/dist/tools/batch-execute.d.ts +11 -0
  242. package/dist/tools/batch-execute.d.ts.map +1 -0
  243. package/dist/tools/batch-execute.js +218 -0
  244. package/dist/tools/batch-execute.js.map +1 -0
  245. package/dist/tools/batch-paginate.d.ts +10 -0
  246. package/dist/tools/batch-paginate.d.ts.map +1 -0
  247. package/dist/tools/batch-paginate.js +436 -0
  248. package/dist/tools/batch-paginate.js.map +1 -0
  249. package/dist/tools/click-element.d.ts +8 -0
  250. package/dist/tools/click-element.d.ts.map +1 -0
  251. package/dist/tools/click-element.js +281 -0
  252. package/dist/tools/click-element.js.map +1 -0
  253. package/dist/tools/computer.d.ts +6 -0
  254. package/dist/tools/computer.d.ts.map +1 -0
  255. package/dist/tools/computer.js +832 -0
  256. package/dist/tools/computer.js.map +1 -0
  257. package/dist/tools/console-capture.d.ts +6 -0
  258. package/dist/tools/console-capture.d.ts.map +1 -0
  259. package/dist/tools/console-capture.js +380 -0
  260. package/dist/tools/console-capture.js.map +1 -0
  261. package/dist/tools/cookies.d.ts +6 -0
  262. package/dist/tools/cookies.d.ts.map +1 -0
  263. package/dist/tools/cookies.js +366 -0
  264. package/dist/tools/cookies.js.map +1 -0
  265. package/dist/tools/drag-drop.d.ts +6 -0
  266. package/dist/tools/drag-drop.d.ts.map +1 -0
  267. package/dist/tools/drag-drop.js +263 -0
  268. package/dist/tools/drag-drop.js.map +1 -0
  269. package/dist/tools/emulate-device.d.ts +6 -0
  270. package/dist/tools/emulate-device.d.ts.map +1 -0
  271. package/dist/tools/emulate-device.js +219 -0
  272. package/dist/tools/emulate-device.js.map +1 -0
  273. package/dist/tools/file-upload.d.ts +6 -0
  274. package/dist/tools/file-upload.d.ts.map +1 -0
  275. package/dist/tools/file-upload.js +224 -0
  276. package/dist/tools/file-upload.js.map +1 -0
  277. package/dist/tools/fill-form.d.ts +8 -0
  278. package/dist/tools/fill-form.d.ts.map +1 -0
  279. package/dist/tools/fill-form.js +311 -0
  280. package/dist/tools/fill-form.js.map +1 -0
  281. package/dist/tools/find.d.ts +6 -0
  282. package/dist/tools/find.d.ts.map +1 -0
  283. package/dist/tools/find.js +163 -0
  284. package/dist/tools/find.js.map +1 -0
  285. package/dist/tools/form-input.d.ts +6 -0
  286. package/dist/tools/form-input.d.ts.map +1 -0
  287. package/dist/tools/form-input.js +219 -0
  288. package/dist/tools/form-input.js.map +1 -0
  289. package/dist/tools/geolocation.d.ts +6 -0
  290. package/dist/tools/geolocation.d.ts.map +1 -0
  291. package/dist/tools/geolocation.js +170 -0
  292. package/dist/tools/geolocation.js.map +1 -0
  293. package/dist/tools/http-auth.d.ts +6 -0
  294. package/dist/tools/http-auth.d.ts.map +1 -0
  295. package/dist/tools/http-auth.js +132 -0
  296. package/dist/tools/http-auth.js.map +1 -0
  297. package/dist/tools/index.d.ts +6 -0
  298. package/dist/tools/index.d.ts.map +1 -0
  299. package/dist/tools/index.js +107 -0
  300. package/dist/tools/index.js.map +1 -0
  301. package/dist/tools/inspect.d.ts +12 -0
  302. package/dist/tools/inspect.d.ts.map +1 -0
  303. package/dist/tools/inspect.js +483 -0
  304. package/dist/tools/inspect.js.map +1 -0
  305. package/dist/tools/interact.d.ts +9 -0
  306. package/dist/tools/interact.d.ts.map +1 -0
  307. package/dist/tools/interact.js +366 -0
  308. package/dist/tools/interact.js.map +1 -0
  309. package/dist/tools/javascript.d.ts +7 -0
  310. package/dist/tools/javascript.d.ts.map +1 -0
  311. package/dist/tools/javascript.js +214 -0
  312. package/dist/tools/javascript.js.map +1 -0
  313. package/dist/tools/lightweight-scroll.d.ts +11 -0
  314. package/dist/tools/lightweight-scroll.d.ts.map +1 -0
  315. package/dist/tools/lightweight-scroll.js +314 -0
  316. package/dist/tools/lightweight-scroll.js.map +1 -0
  317. package/dist/tools/list-profiles.d.ts +10 -0
  318. package/dist/tools/list-profiles.d.ts.map +1 -0
  319. package/dist/tools/list-profiles.js +79 -0
  320. package/dist/tools/list-profiles.js.map +1 -0
  321. package/dist/tools/memory.d.ts +13 -0
  322. package/dist/tools/memory.d.ts.map +1 -0
  323. package/dist/tools/memory.js +159 -0
  324. package/dist/tools/memory.js.map +1 -0
  325. package/dist/tools/navigate.d.ts +6 -0
  326. package/dist/tools/navigate.d.ts.map +1 -0
  327. package/dist/tools/navigate.js +422 -0
  328. package/dist/tools/navigate.js.map +1 -0
  329. package/dist/tools/network.d.ts +6 -0
  330. package/dist/tools/network.d.ts.map +1 -0
  331. package/dist/tools/network.js +229 -0
  332. package/dist/tools/network.js.map +1 -0
  333. package/dist/tools/orchestration.d.ts +6 -0
  334. package/dist/tools/orchestration.d.ts.map +1 -0
  335. package/dist/tools/orchestration.js +735 -0
  336. package/dist/tools/orchestration.js.map +1 -0
  337. package/dist/tools/page-content.d.ts +6 -0
  338. package/dist/tools/page-content.d.ts.map +1 -0
  339. package/dist/tools/page-content.js +129 -0
  340. package/dist/tools/page-content.js.map +1 -0
  341. package/dist/tools/page-pdf.d.ts +6 -0
  342. package/dist/tools/page-pdf.d.ts.map +1 -0
  343. package/dist/tools/page-pdf.js +268 -0
  344. package/dist/tools/page-pdf.js.map +1 -0
  345. package/dist/tools/page-reload.d.ts +6 -0
  346. package/dist/tools/page-reload.d.ts.map +1 -0
  347. package/dist/tools/page-reload.js +91 -0
  348. package/dist/tools/page-reload.js.map +1 -0
  349. package/dist/tools/performance-metrics.d.ts +6 -0
  350. package/dist/tools/performance-metrics.d.ts.map +1 -0
  351. package/dist/tools/performance-metrics.js +154 -0
  352. package/dist/tools/performance-metrics.js.map +1 -0
  353. package/dist/tools/profile-status.d.ts +10 -0
  354. package/dist/tools/profile-status.d.ts.map +1 -0
  355. package/dist/tools/profile-status.js +108 -0
  356. package/dist/tools/profile-status.js.map +1 -0
  357. package/dist/tools/query-dom.d.ts +8 -0
  358. package/dist/tools/query-dom.d.ts.map +1 -0
  359. package/dist/tools/query-dom.js +647 -0
  360. package/dist/tools/query-dom.js.map +1 -0
  361. package/dist/tools/read-page.d.ts +6 -0
  362. package/dist/tools/read-page.d.ts.map +1 -0
  363. package/dist/tools/read-page.js +544 -0
  364. package/dist/tools/read-page.js.map +1 -0
  365. package/dist/tools/request-intercept.d.ts +6 -0
  366. package/dist/tools/request-intercept.d.ts.map +1 -0
  367. package/dist/tools/request-intercept.js +537 -0
  368. package/dist/tools/request-intercept.js.map +1 -0
  369. package/dist/tools/shutdown.d.ts +12 -0
  370. package/dist/tools/shutdown.d.ts.map +1 -0
  371. package/dist/tools/shutdown.js +124 -0
  372. package/dist/tools/shutdown.js.map +1 -0
  373. package/dist/tools/storage.d.ts +6 -0
  374. package/dist/tools/storage.d.ts.map +1 -0
  375. package/dist/tools/storage.js +262 -0
  376. package/dist/tools/storage.js.map +1 -0
  377. package/dist/tools/tabs-close.d.ts +6 -0
  378. package/dist/tools/tabs-close.d.ts.map +1 -0
  379. package/dist/tools/tabs-close.js +124 -0
  380. package/dist/tools/tabs-close.js.map +1 -0
  381. package/dist/tools/tabs-context.d.ts +6 -0
  382. package/dist/tools/tabs-context.d.ts.map +1 -0
  383. package/dist/tools/tabs-context.js +117 -0
  384. package/dist/tools/tabs-context.js.map +1 -0
  385. package/dist/tools/tabs-create.d.ts +6 -0
  386. package/dist/tools/tabs-create.d.ts.map +1 -0
  387. package/dist/tools/tabs-create.js +90 -0
  388. package/dist/tools/tabs-create.js.map +1 -0
  389. package/dist/tools/user-agent.d.ts +6 -0
  390. package/dist/tools/user-agent.d.ts.map +1 -0
  391. package/dist/tools/user-agent.js +126 -0
  392. package/dist/tools/user-agent.js.map +1 -0
  393. package/dist/tools/wait-and-click.d.ts +8 -0
  394. package/dist/tools/wait-and-click.d.ts.map +1 -0
  395. package/dist/tools/wait-and-click.js +165 -0
  396. package/dist/tools/wait-and-click.js.map +1 -0
  397. package/dist/tools/wait-for.d.ts +6 -0
  398. package/dist/tools/wait-for.d.ts.map +1 -0
  399. package/dist/tools/wait-for.js +290 -0
  400. package/dist/tools/wait-for.js.map +1 -0
  401. package/dist/tools/worker.d.ts +8 -0
  402. package/dist/tools/worker.d.ts.map +1 -0
  403. package/dist/tools/worker.js +160 -0
  404. package/dist/tools/worker.js.map +1 -0
  405. package/dist/types/browser-backend.d.ts +30 -0
  406. package/dist/types/browser-backend.d.ts.map +1 -0
  407. package/dist/types/browser-backend.js +9 -0
  408. package/dist/types/browser-backend.js.map +1 -0
  409. package/dist/types/index.d.ts +3 -0
  410. package/dist/types/index.d.ts.map +1 -0
  411. package/dist/types/index.js +19 -0
  412. package/dist/types/index.js.map +1 -0
  413. package/dist/types/mcp.d.ts +63 -0
  414. package/dist/types/mcp.d.ts.map +1 -0
  415. package/dist/types/mcp.js +14 -0
  416. package/dist/types/mcp.js.map +1 -0
  417. package/dist/types/plan-cache.d.ts +121 -0
  418. package/dist/types/plan-cache.d.ts.map +1 -0
  419. package/dist/types/plan-cache.js +9 -0
  420. package/dist/types/plan-cache.js.map +1 -0
  421. package/dist/types/session.d.ts +65 -0
  422. package/dist/types/session.d.ts.map +1 -0
  423. package/dist/types/session.js +6 -0
  424. package/dist/types/session.js.map +1 -0
  425. package/dist/types/tool-manifest.d.ts +52 -0
  426. package/dist/types/tool-manifest.d.ts.map +1 -0
  427. package/dist/types/tool-manifest.js +37 -0
  428. package/dist/types/tool-manifest.js.map +1 -0
  429. package/dist/utils/adaptive-screenshot.d.ts +57 -0
  430. package/dist/utils/adaptive-screenshot.d.ts.map +1 -0
  431. package/dist/utils/adaptive-screenshot.js +126 -0
  432. package/dist/utils/adaptive-screenshot.js.map +1 -0
  433. package/dist/utils/atomic-file.d.ts +50 -0
  434. package/dist/utils/atomic-file.d.ts.map +1 -0
  435. package/dist/utils/atomic-file.js +217 -0
  436. package/dist/utils/atomic-file.js.map +1 -0
  437. package/dist/utils/dom-delta.d.ts +36 -0
  438. package/dist/utils/dom-delta.d.ts.map +1 -0
  439. package/dist/utils/dom-delta.js +314 -0
  440. package/dist/utils/dom-delta.js.map +1 -0
  441. package/dist/utils/element-discovery.d.ts +115 -0
  442. package/dist/utils/element-discovery.d.ts.map +1 -0
  443. package/dist/utils/element-discovery.js +519 -0
  444. package/dist/utils/element-discovery.js.map +1 -0
  445. package/dist/utils/element-finder.d.ts +49 -0
  446. package/dist/utils/element-finder.d.ts.map +1 -0
  447. package/dist/utils/element-finder.js +130 -0
  448. package/dist/utils/element-finder.js.map +1 -0
  449. package/dist/utils/format-age.d.ts +5 -0
  450. package/dist/utils/format-age.d.ts.map +1 -0
  451. package/dist/utils/format-age.js +15 -0
  452. package/dist/utils/format-age.js.map +1 -0
  453. package/dist/utils/format-error.d.ts +5 -0
  454. package/dist/utils/format-error.d.ts.map +1 -0
  455. package/dist/utils/format-error.js +10 -0
  456. package/dist/utils/format-error.js.map +1 -0
  457. package/dist/utils/index.d.ts +7 -0
  458. package/dist/utils/index.d.ts.map +1 -0
  459. package/dist/utils/index.js +23 -0
  460. package/dist/utils/index.js.map +1 -0
  461. package/dist/utils/json-validator.d.ts +40 -0
  462. package/dist/utils/json-validator.d.ts.map +1 -0
  463. package/dist/utils/json-validator.js +295 -0
  464. package/dist/utils/json-validator.js.map +1 -0
  465. package/dist/utils/page-diagnostics.d.ts +23 -0
  466. package/dist/utils/page-diagnostics.d.ts.map +1 -0
  467. package/dist/utils/page-diagnostics.js +95 -0
  468. package/dist/utils/page-diagnostics.js.map +1 -0
  469. package/dist/utils/pagination-detector.d.ts +22 -0
  470. package/dist/utils/pagination-detector.d.ts.map +1 -0
  471. package/dist/utils/pagination-detector.js +292 -0
  472. package/dist/utils/pagination-detector.js.map +1 -0
  473. package/dist/utils/pid-manager.d.ts +6 -0
  474. package/dist/utils/pid-manager.d.ts.map +1 -0
  475. package/dist/utils/pid-manager.js +135 -0
  476. package/dist/utils/pid-manager.js.map +1 -0
  477. package/dist/utils/puppeteer-helpers.d.ts +8 -0
  478. package/dist/utils/puppeteer-helpers.d.ts.map +1 -0
  479. package/dist/utils/puppeteer-helpers.js +12 -0
  480. package/dist/utils/puppeteer-helpers.js.map +1 -0
  481. package/dist/utils/ref-id-manager.d.ts +72 -0
  482. package/dist/utils/ref-id-manager.d.ts.map +1 -0
  483. package/dist/utils/ref-id-manager.js +325 -0
  484. package/dist/utils/ref-id-manager.js.map +1 -0
  485. package/dist/utils/request-queue.d.ts +37 -0
  486. package/dist/utils/request-queue.d.ts.map +1 -0
  487. package/dist/utils/request-queue.js +114 -0
  488. package/dist/utils/request-queue.js.map +1 -0
  489. package/dist/utils/retry-with-fallback.d.ts +18 -0
  490. package/dist/utils/retry-with-fallback.d.ts.map +1 -0
  491. package/dist/utils/retry-with-fallback.js +39 -0
  492. package/dist/utils/retry-with-fallback.js.map +1 -0
  493. package/dist/utils/safe-title.d.ts +10 -0
  494. package/dist/utils/safe-title.d.ts.map +1 -0
  495. package/dist/utils/safe-title.js +24 -0
  496. package/dist/utils/safe-title.js.map +1 -0
  497. package/dist/utils/schema-validator.d.ts +12 -0
  498. package/dist/utils/schema-validator.d.ts.map +1 -0
  499. package/dist/utils/schema-validator.js +70 -0
  500. package/dist/utils/schema-validator.js.map +1 -0
  501. package/dist/utils/shadow-dom.d.ts +114 -0
  502. package/dist/utils/shadow-dom.d.ts.map +1 -0
  503. package/dist/utils/shadow-dom.js +385 -0
  504. package/dist/utils/shadow-dom.js.map +1 -0
  505. package/dist/utils/smart-goto.d.ts +39 -0
  506. package/dist/utils/smart-goto.d.ts.map +1 -0
  507. package/dist/utils/smart-goto.js +134 -0
  508. package/dist/utils/smart-goto.js.map +1 -0
  509. package/dist/utils/url-utils.d.ts +5 -0
  510. package/dist/utils/url-utils.d.ts.map +1 -0
  511. package/dist/utils/url-utils.js +15 -0
  512. package/dist/utils/url-utils.js.map +1 -0
  513. package/dist/utils/visual-summary.d.ts +17 -0
  514. package/dist/utils/visual-summary.d.ts.map +1 -0
  515. package/dist/utils/visual-summary.js +215 -0
  516. package/dist/utils/visual-summary.js.map +1 -0
  517. package/dist/utils/with-timeout.d.ts +5 -0
  518. package/dist/utils/with-timeout.d.ts.map +1 -0
  519. package/dist/utils/with-timeout.js +15 -0
  520. package/dist/utils/with-timeout.js.map +1 -0
  521. package/dist/version.d.ts +5 -0
  522. package/dist/version.d.ts.map +1 -0
  523. package/dist/version.js +22 -0
  524. package/dist/version.js.map +1 -0
  525. package/package.json +1 -0
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Smart Goto - Wraps page.goto() with fast auth redirect detection.
3
+ *
4
+ * Instead of waiting 30s for a timeout on auth-redirected pages (e.g. Google Search Console),
5
+ * detects redirects to known auth domains via `framenavigated` events within milliseconds
6
+ * and returns useful information in ~2 seconds.
7
+ */
8
+ import { Page, HTTPResponse } from 'puppeteer-core';
9
+ export interface DomStabilityResult {
10
+ stable: boolean;
11
+ elementCount: number;
12
+ iterations: number;
13
+ }
14
+ /**
15
+ * Wait for DOM element count to stabilize after initial page load.
16
+ * SPA frameworks (React, Vue, Angular) render content asynchronously after
17
+ * domcontentloaded — this heuristic detects when rendering is complete by
18
+ * monitoring element count changes.
19
+ *
20
+ * Zero-cost on static pages (first check passes immediately).
21
+ * Bounded to maxWaitMs (default 1500ms) total.
22
+ */
23
+ export declare function waitForDomStability(page: Page, options?: {
24
+ intervalMs?: number;
25
+ maxIterations?: number;
26
+ threshold?: number;
27
+ }): Promise<DomStabilityResult>;
28
+ export interface SmartGotoResult {
29
+ response: HTTPResponse | null;
30
+ authRedirect?: {
31
+ from: string;
32
+ to: string;
33
+ host: string;
34
+ };
35
+ }
36
+ export declare function smartGoto(page: Page, url: string, options?: {
37
+ timeout?: number;
38
+ }): Promise<SmartGotoResult>;
39
+ //# sourceMappingURL=smart-goto.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"smart-goto.d.ts","sourceRoot":"","sources":["../../src/utils/smart-goto.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,IAAI,EAAS,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG3D,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,OAAO,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;GAQG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,IAAI,EACV,OAAO,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAC5E,OAAO,CAAC,kBAAkB,CAAC,CAmC7B;AAwBD,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,YAAY,GAAG,IAAI,CAAC;IAC9B,YAAY,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3D;AAED,wBAAsB,SAAS,CAC7B,IAAI,EAAE,IAAI,EACV,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAC7B,OAAO,CAAC,eAAe,CAAC,CAoD1B"}
@@ -0,0 +1,134 @@
1
+ "use strict";
2
+ /**
3
+ * Smart Goto - Wraps page.goto() with fast auth redirect detection.
4
+ *
5
+ * Instead of waiting 30s for a timeout on auth-redirected pages (e.g. Google Search Console),
6
+ * detects redirects to known auth domains via `framenavigated` events within milliseconds
7
+ * and returns useful information in ~2 seconds.
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.waitForDomStability = waitForDomStability;
11
+ exports.smartGoto = smartGoto;
12
+ const defaults_1 = require("../config/defaults");
13
+ /**
14
+ * Wait for DOM element count to stabilize after initial page load.
15
+ * SPA frameworks (React, Vue, Angular) render content asynchronously after
16
+ * domcontentloaded — this heuristic detects when rendering is complete by
17
+ * monitoring element count changes.
18
+ *
19
+ * Zero-cost on static pages (first check passes immediately).
20
+ * Bounded to maxWaitMs (default 1500ms) total.
21
+ */
22
+ async function waitForDomStability(page, options) {
23
+ const intervalMs = options?.intervalMs ?? 500;
24
+ const maxIterations = options?.maxIterations ?? 3;
25
+ const threshold = options?.threshold ?? 0.2;
26
+ let previousCount = 0;
27
+ let iterations = 0;
28
+ try {
29
+ previousCount = await page.evaluate(() => document.querySelectorAll('*').length);
30
+ }
31
+ catch {
32
+ return { stable: true, elementCount: 0, iterations: 0 };
33
+ }
34
+ for (let i = 0; i < maxIterations; i++) {
35
+ await new Promise((resolve) => setTimeout(resolve, intervalMs));
36
+ iterations++;
37
+ let currentCount = previousCount;
38
+ try {
39
+ currentCount = await page.evaluate(() => document.querySelectorAll('*').length);
40
+ }
41
+ catch {
42
+ // Page navigated away or was closed — treat as stable
43
+ return { stable: true, elementCount: previousCount, iterations };
44
+ }
45
+ const delta = Math.abs(currentCount - previousCount) / Math.max(previousCount, 1);
46
+ if (delta <= threshold) {
47
+ return { stable: true, elementCount: currentCount, iterations };
48
+ }
49
+ previousCount = currentCount;
50
+ }
51
+ return { stable: false, elementCount: previousCount, iterations };
52
+ }
53
+ const AUTH_DOMAINS = [
54
+ 'accounts.google.com',
55
+ 'login.microsoftonline.com',
56
+ 'auth0.com',
57
+ 'okta.com',
58
+ 'login.salesforce.com',
59
+ 'appleid.apple.com',
60
+ 'github.com/login',
61
+ // Supabase
62
+ 'supabase.co/auth',
63
+ 'supabase.com/auth',
64
+ // Firebase
65
+ 'firebaseapp.com/__/auth',
66
+ 'identitytoolkit.googleapis.com',
67
+ // Other OAuth providers
68
+ 'cognito-idp.',
69
+ 'login.yahoo.com',
70
+ 'nid.naver.com',
71
+ 'kauth.kakao.com',
72
+ 'access.line.me',
73
+ ];
74
+ async function smartGoto(page, url, options) {
75
+ const timeout = options?.timeout ?? defaults_1.DEFAULT_NAVIGATION_TIMEOUT_MS;
76
+ let authRedirect = undefined;
77
+ let resolveRedirect = null;
78
+ const redirectDetected = new Promise((resolve) => {
79
+ resolveRedirect = resolve;
80
+ });
81
+ const onFrameNavigated = (frame) => {
82
+ if (frame !== page.mainFrame())
83
+ return;
84
+ const currentUrl = frame.url();
85
+ if (isAuthRedirect(currentUrl, url)) {
86
+ authRedirect = {
87
+ from: url,
88
+ to: currentUrl,
89
+ host: new URL(currentUrl).hostname,
90
+ };
91
+ resolveRedirect?.();
92
+ }
93
+ };
94
+ page.on('framenavigated', onFrameNavigated);
95
+ try {
96
+ const response = await Promise.race([
97
+ page.goto(url, { waitUntil: 'domcontentloaded', timeout }),
98
+ // When auth redirect detected, wait 1.5s for DOMContentLoaded chance, then return
99
+ redirectDetected.then(() => new Promise((resolve) => setTimeout(() => resolve(null), 1500))),
100
+ ]);
101
+ // Only wait for DOM stability if no auth redirect was detected
102
+ if (!authRedirect) {
103
+ const stability = await waitForDomStability(page);
104
+ // Log if DOM was still changing (useful for debugging SPA issues)
105
+ if (!stability.stable) {
106
+ console.error(`[smartGoto] DOM not stable after ${stability.iterations} checks (${stability.elementCount} elements)`);
107
+ }
108
+ }
109
+ return { response, authRedirect };
110
+ }
111
+ catch (err) {
112
+ // If we already detected an auth redirect, return it instead of throwing
113
+ if (authRedirect)
114
+ return { response: null, authRedirect };
115
+ throw err;
116
+ }
117
+ finally {
118
+ page.off('framenavigated', onFrameNavigated);
119
+ }
120
+ }
121
+ function isAuthRedirect(currentUrl, originalUrl) {
122
+ try {
123
+ const current = new URL(currentUrl);
124
+ const original = new URL(originalUrl);
125
+ if (current.hostname === original.hostname)
126
+ return false;
127
+ return (AUTH_DOMAINS.some((d) => current.hostname.includes(d)) ||
128
+ /\/(login|signin|sign-in|auth|sso|oauth)/i.test(current.pathname));
129
+ }
130
+ catch {
131
+ return false;
132
+ }
133
+ }
134
+ //# sourceMappingURL=smart-goto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"smart-goto.js","sourceRoot":"","sources":["../../src/utils/smart-goto.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Extract the hostname from a URL string. Returns empty string on failure.
3
+ */
4
+ export declare function extractHostname(url: string): string;
5
+ //# sourceMappingURL=url-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"url-utils.d.ts","sourceRoot":"","sources":["../../src/utils/url-utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAMnD"}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.extractHostname = extractHostname;
4
+ /**
5
+ * Extract the hostname from a URL string. Returns empty string on failure.
6
+ */
7
+ function extractHostname(url) {
8
+ try {
9
+ return new URL(url).hostname;
10
+ }
11
+ catch {
12
+ return '';
13
+ }
14
+ }
15
+ //# sourceMappingURL=url-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"url-utils.js","sourceRoot":"","sources":["../../src/utils/url-utils.ts"],"names":[],"mappings":";;AAGA,0CAMC;AATD;;GAEG;AACH,SAAgB,eAAe,CAAC,GAAW;IACzC,IAAI,CAAC;QACH,OAAO,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Visual Summary - Generates a lightweight text description of visible page state
3
+ *
4
+ * After click/navigate actions, extracts enough context (~100-150 tokens) for
5
+ * LLMs to understand the current page state without requiring follow-up screenshots.
6
+ */
7
+ import type { Page } from 'puppeteer-core';
8
+ /**
9
+ * Generate a lightweight text description of the visible page state.
10
+ *
11
+ * Extracts URL, title, scroll position, active elements, visible panel content,
12
+ * headings, and form state — formatted for LLM consumption (~100-200 tokens).
13
+ *
14
+ * Returns an empty string on any error (non-blocking, fail-safe).
15
+ */
16
+ export declare function generateVisualSummary(page: Page): Promise<string>;
17
+ //# sourceMappingURL=visual-summary.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"visual-summary.d.ts","sourceRoot":"","sources":["../../src/utils/visual-summary.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AA+M3C;;;;;;;GAOG;AACH,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAavE"}
@@ -0,0 +1,215 @@
1
+ "use strict";
2
+ /**
3
+ * Visual Summary - Generates a lightweight text description of visible page state
4
+ *
5
+ * After click/navigate actions, extracts enough context (~100-150 tokens) for
6
+ * LLMs to understand the current page state without requiring follow-up screenshots.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.generateVisualSummary = generateVisualSummary;
10
+ // Script injected into the page to extract visible state in one evaluate call
11
+ const EXTRACT_STATE_SCRIPT = `(() => {
12
+ try {
13
+ // Deep querySelectorAll that pierces open shadow roots
14
+ function deepQSA(root, sel) {
15
+ var results = [];
16
+ try { var m = root.querySelectorAll(sel); for (var i = 0; i < m.length; i++) results.push(m[i]); } catch(e) {}
17
+ var all = root.querySelectorAll('*');
18
+ for (var j = 0; j < all.length; j++) {
19
+ if (all[j].shadowRoot) {
20
+ var sr = deepQSA(all[j].shadowRoot, sel);
21
+ for (var k = 0; k < sr.length; k++) results.push(sr[k]);
22
+ }
23
+ }
24
+ return results;
25
+ }
26
+
27
+ const url = location.href;
28
+ const title = document.title;
29
+
30
+ // Scroll position
31
+ const scrollX = Math.round(window.scrollX);
32
+ const scrollY = Math.round(window.scrollY);
33
+ const scrollHeight = document.documentElement.scrollHeight || document.body.scrollHeight || 0;
34
+ const clientHeight = document.documentElement.clientHeight || window.innerHeight || 0;
35
+
36
+ // Active/focused element (follows shadow root chain)
37
+ let activeEl = null;
38
+ try {
39
+ let el = document.activeElement;
40
+ while (el && el.shadowRoot && el.shadowRoot.activeElement) {
41
+ el = el.shadowRoot.activeElement;
42
+ }
43
+ if (el && el !== document.body && el !== document.documentElement) {
44
+ const tag = el.tagName.toLowerCase();
45
+ const label =
46
+ el.getAttribute('aria-label') ||
47
+ el.getAttribute('title') ||
48
+ el.getAttribute('name') ||
49
+ (el.textContent || '').trim().slice(0, 40);
50
+ const ariaSelected = el.getAttribute('aria-selected');
51
+ const ariaCurrent = el.getAttribute('aria-current');
52
+ const isActive = el.classList.contains('active');
53
+ activeEl = { tag, label, ariaSelected, ariaCurrent, isActive };
54
+ }
55
+ } catch (e) {}
56
+
57
+ // Visible scrollable panels (role=tabpanel, [class*=panel], [class*=content], main, article)
58
+ const panelSelectors = [
59
+ '[role="tabpanel"]',
60
+ 'main',
61
+ 'article',
62
+ '[class*="panel"]',
63
+ '[class*="content"]',
64
+ ];
65
+ const panels = [];
66
+ const seenPanels = new Set();
67
+ for (const sel of panelSelectors) {
68
+ if (panels.length >= 3) break;
69
+ let found;
70
+ try { found = deepQSA(document, sel); } catch (e) { continue; }
71
+ for (const el of found) {
72
+ if (panels.length >= 3) break;
73
+ if (seenPanels.has(el)) continue;
74
+ const rect = el.getBoundingClientRect();
75
+ if (rect.width === 0 || rect.height === 0) continue;
76
+ if (rect.bottom < 0 || rect.top > window.innerHeight) continue;
77
+ const text = (el.textContent || '').trim().replace(/\\s+/g, ' ').slice(0, 100);
78
+ if (!text) continue;
79
+ seenPanels.add(el);
80
+ panels.push(text);
81
+ }
82
+ }
83
+
84
+ // Active tab/button states (aria-selected, aria-current, .active)
85
+ const activeStates = [];
86
+ try {
87
+ const candidates = deepQSA(document,
88
+ '[aria-selected="true"], [aria-current], .active, [class*="tab--active"], [class*="tab-active"]'
89
+ );
90
+ for (const el of candidates) {
91
+ if (activeStates.length >= 5) break;
92
+ const rect = el.getBoundingClientRect();
93
+ if (rect.width === 0 || rect.height === 0) continue;
94
+ const tag = el.tagName.toLowerCase();
95
+ const text = (el.textContent || '').trim().slice(0, 40);
96
+ const ariaSelected = el.getAttribute('aria-selected');
97
+ const ariaCurrent = el.getAttribute('aria-current');
98
+ const qualifier = ariaSelected === 'true' ? 'aria-selected' : ariaCurrent ? 'aria-current' : 'active';
99
+ if (text) activeStates.push({ tag, text, qualifier });
100
+ }
101
+ } catch (e) {}
102
+
103
+ // Visible form state (inputs, selects, checkboxes)
104
+ const formState = [];
105
+ try {
106
+ const inputs = deepQSA(document, 'input:not([type="hidden"]), select, textarea');
107
+ for (const el of inputs) {
108
+ if (formState.length >= 5) break;
109
+ const rect = el.getBoundingClientRect();
110
+ if (rect.width === 0 || rect.height === 0) continue;
111
+ if (rect.bottom < 0 || rect.top > window.innerHeight) continue;
112
+ const tag = el.tagName.toLowerCase();
113
+ const type = el.getAttribute('type') || tag;
114
+ const name = el.getAttribute('name') || el.getAttribute('aria-label') || el.getAttribute('placeholder') || '';
115
+ if (type === 'checkbox' || type === 'radio') {
116
+ formState.push({ type, name, checked: el.checked });
117
+ } else if (tag === 'select') {
118
+ const opt = el.options[el.selectedIndex];
119
+ const val = opt ? (opt.text || opt.value).slice(0, 30) : '';
120
+ if (val) formState.push({ type: 'select', name, value: val });
121
+ } else {
122
+ const val = (el.value || '').slice(0, 40);
123
+ if (val) formState.push({ type, name, value: val });
124
+ }
125
+ }
126
+ } catch (e) {}
127
+
128
+ // Visible headings for section context
129
+ const headings = [];
130
+ try {
131
+ const hEls = deepQSA(document, 'h1, h2, h3, h4');
132
+ for (const el of hEls) {
133
+ if (headings.length >= 4) break;
134
+ const rect = el.getBoundingClientRect();
135
+ if (rect.width === 0 || rect.height === 0) continue;
136
+ if (rect.bottom < 0 || rect.top > window.innerHeight) continue;
137
+ const tag = el.tagName.toLowerCase();
138
+ const text = (el.textContent || '').trim().slice(0, 50);
139
+ if (text) headings.push({ tag, text });
140
+ }
141
+ } catch (e) {}
142
+
143
+ return { url, title, scrollX, scrollY, scrollHeight, clientHeight, panels, activeStates, formState, headings, activeEl };
144
+ } catch (e) {
145
+ return null;
146
+ }
147
+ })()`;
148
+ /**
149
+ * Format extracted page state into a compact multi-line string.
150
+ */
151
+ function formatPageState(state) {
152
+ const lines = [];
153
+ // Line 1: URL, title, scroll position
154
+ const scrollPct = state.scrollHeight > 0
155
+ ? Math.round((state.scrollY / (state.scrollHeight - state.clientHeight || state.scrollHeight)) * 100)
156
+ : 0;
157
+ const titleShort = state.title.slice(0, 60);
158
+ lines.push(`[Page State] url: ${state.url} | title: "${titleShort}" | scroll: ${state.scrollY}/${state.scrollHeight} (${scrollPct}%)`);
159
+ // Active focused element (deduplicated with activeStates)
160
+ if (state.activeEl) {
161
+ const { tag, label, ariaSelected, ariaCurrent, isActive } = state.activeEl;
162
+ const qualifier = ariaSelected === 'true' ? ' (aria-selected)' : ariaCurrent ? ' (aria-current)' : isActive ? ' (active)' : '';
163
+ if (label)
164
+ lines.push(`[Active] ${tag} "${label}"${qualifier}`);
165
+ }
166
+ // Active tab/button states
167
+ if (state.activeStates.length > 0) {
168
+ const parts = state.activeStates.map(s => `${s.tag} "${s.text}" (${s.qualifier})`);
169
+ lines.push(`[Selected] ${parts.join(' | ')}`);
170
+ }
171
+ // Visible panels
172
+ if (state.panels.length > 0) {
173
+ const parts = state.panels.map((p, i) => `Panel ${i + 1}: "${p}"`);
174
+ lines.push(`[Visible] ${parts.join(' | ')}`);
175
+ }
176
+ // Headings
177
+ if (state.headings.length > 0) {
178
+ const parts = state.headings.map(h => `${h.tag}: "${h.text}"`);
179
+ lines.push(`[Headings] ${parts.join(' | ')}`);
180
+ }
181
+ // Form state
182
+ if (state.formState.length > 0) {
183
+ const parts = state.formState.map(f => {
184
+ if (f.type === 'checkbox' || f.type === 'radio') {
185
+ return `${f.name || f.type}=${f.checked ? 'checked' : 'unchecked'}`;
186
+ }
187
+ return `${f.name || f.type}="${f.value}"`;
188
+ });
189
+ lines.push(`[Form] ${parts.join(' | ')}`);
190
+ }
191
+ return lines.join('\n');
192
+ }
193
+ /**
194
+ * Generate a lightweight text description of the visible page state.
195
+ *
196
+ * Extracts URL, title, scroll position, active elements, visible panel content,
197
+ * headings, and form state — formatted for LLM consumption (~100-200 tokens).
198
+ *
199
+ * Returns an empty string on any error (non-blocking, fail-safe).
200
+ */
201
+ async function generateVisualSummary(page) {
202
+ try {
203
+ const state = await Promise.race([
204
+ page.evaluate(EXTRACT_STATE_SCRIPT),
205
+ new Promise((resolve) => setTimeout(() => resolve(null), 3000)),
206
+ ]);
207
+ if (!state)
208
+ return '';
209
+ return formatPageState(state);
210
+ }
211
+ catch {
212
+ return '';
213
+ }
214
+ }
215
+ //# sourceMappingURL=visual-summary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"visual-summary.js","sourceRoot":"","sources":["../../src/utils/visual-summary.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Race a promise against a timeout. Rejects with an OpenChromeTimeoutError if the timeout fires first.
3
+ */
4
+ export declare function withTimeout<T>(promise: Promise<T>, ms: number, label?: string): Promise<T>;
5
+ //# sourceMappingURL=with-timeout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"with-timeout.d.ts","sourceRoot":"","sources":["../../src/utils/with-timeout.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,SAAc,GAAG,OAAO,CAAC,CAAC,CAAC,CAM/F"}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.withTimeout = withTimeout;
4
+ const timeout_1 = require("../errors/timeout");
5
+ /**
6
+ * Race a promise against a timeout. Rejects with an OpenChromeTimeoutError if the timeout fires first.
7
+ */
8
+ function withTimeout(promise, ms, label = 'Operation') {
9
+ let timer;
10
+ const timeout = new Promise((_, reject) => {
11
+ timer = setTimeout(() => reject(new timeout_1.OpenChromeTimeoutError(label, ms)), ms);
12
+ });
13
+ return Promise.race([promise, timeout]).finally(() => clearTimeout(timer));
14
+ }
15
+ //# sourceMappingURL=with-timeout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"with-timeout.js","sourceRoot":"","sources":["../../src/utils/with-timeout.ts"],"names":[],"mappings":";;AAKA,kCAMC;AAXD,+CAA2D;AAE3D;;GAEG;AACH,SAAgB,WAAW,CAAI,OAAmB,EAAE,EAAU,EAAE,KAAK,GAAG,WAAW;IACjF,IAAI,KAAoC,CAAC;IACzC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;QAC/C,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,gCAAsB,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC9E,CAAC,CAAC,CAAC;IACH,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;AAC7E,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Version utility - reads version from package.json to avoid hardcoded strings
3
+ */
4
+ export declare function getVersion(): string;
5
+ //# sourceMappingURL=version.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH,wBAAgB,UAAU,IAAI,MAAM,CAUnC"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ /**
3
+ * Version utility - reads version from package.json to avoid hardcoded strings
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getVersion = getVersion;
7
+ const fs_1 = require("fs");
8
+ const path_1 = require("path");
9
+ let _version = null;
10
+ function getVersion() {
11
+ if (!_version) {
12
+ try {
13
+ const pkg = JSON.parse((0, fs_1.readFileSync)((0, path_1.join)(__dirname, '..', 'package.json'), 'utf8'));
14
+ _version = pkg.version;
15
+ }
16
+ catch {
17
+ _version = 'unknown';
18
+ }
19
+ }
20
+ return _version;
21
+ }
22
+ //# sourceMappingURL=version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAOH,gCAUC;AAfD,2BAAkC;AAClC,+BAA4B;AAE5B,IAAI,QAAQ,GAAkB,IAAI,CAAC;AAEnC,SAAgB,UAAU;IACxB,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAA,iBAAY,EAAC,IAAA,WAAI,EAAC,SAAS,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;YACpF,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC;QACzB,CAAC;QAAC,MAAM,CAAC;YACP,QAAQ,GAAG,SAAS,CAAC;QACvB,CAAC;IACH,CAAC;IACD,OAAO,QAAS,CAAC;AACnB,CAAC"}
package/package.json ADDED
@@ -0,0 +1 @@
1
+ {"name": "@iflow-mcp/shaun0927-openchrome", "version": "1.7.13", "description": "Open-source browser automation MCP server. Control your real Chrome from any AI agent.", "main": "dist/index.js", "bin": {"iflow-mcp-shaun0927-openchrome": "./dist/cli/index.js"}, "scripts": {"build": "tsc -p tsconfig.cli.json && tsc -p tsconfig.json", "build:cli": "tsc -p tsconfig.cli.json", "build:src": "tsc -p tsconfig.json", "dev": "tsc -p tsconfig.cli.json --watch", "start": "node dist/cli/index.js serve", "check": "node dist/cli/index.js check", "benchmark": "ts-node tests/benchmark/run.ts", "benchmark:ci": "ts-node tests/benchmark/run.ts --ci", "test": "jest", "test:coverage": "jest --coverage", "lint": "eslint src --ext .ts", "clean": "rimraf dist", "prepare": "npm run build"}, "keywords": ["openchrome", "mcp", "mcp-server", "browser-automation", "parallel-sessions", "cdp", "chrome", "chrome-devtools-protocol", "ai-agent", "puppeteer"], "author": "shaun0927", "license": "MIT", "repository": {"type": "git", "url": "git+https://github.com/shaun0927/openchrome.git"}, "bugs": {"url": "https://github.com/shaun0927/openchrome/issues"}, "homepage": "https://github.com/shaun0927/openchrome#readme", "devDependencies": {"@types/chrome": "^0.1.36", "@types/jest": "^29.5.0", "@types/node": "^20.0.0", "@types/proper-lockfile": "^4.1.4", "@types/uuid": "^9.0.8", "@types/write-file-atomic": "^4.0.3", "@typescript-eslint/eslint-plugin": "^7.0.0", "@typescript-eslint/parser": "^7.0.0", "eslint": "^8.57.0", "jest": "^29.7.0", "rimraf": "^5.0.0", "ts-jest": "^29.1.0", "ts-node": "^10.9.2", "typescript": "^5.4.0"}, "dependencies": {"commander": "^12.0.0", "proper-lockfile": "^4.1.2", "puppeteer-core": "^23.11.1", "uuid": "^9.0.0", "write-file-atomic": "^5.0.1"}, "engines": {"node": ">=18.0.0"}, "files": ["dist", "assets", "README.md", "LICENSE"]}