@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,49 @@
1
+ /**
2
+ * Element Finder - Shared element search and scoring utilities
3
+ *
4
+ * Used by click-element, interact, and find tools to locate elements
5
+ * by natural language query with consistent scoring logic.
6
+ */
7
+ /**
8
+ * Represents a found element with its properties and match score.
9
+ */
10
+ export interface FoundElement {
11
+ backendDOMNodeId: number;
12
+ role: string;
13
+ name: string;
14
+ tagName: string;
15
+ type?: string;
16
+ placeholder?: string;
17
+ ariaLabel?: string;
18
+ textContent?: string;
19
+ rect: {
20
+ x: number;
21
+ y: number;
22
+ width: number;
23
+ height: number;
24
+ };
25
+ score: number;
26
+ }
27
+ /**
28
+ * Tokenize a query string into meaningful search tokens.
29
+ * Filters out stop words and single-character tokens.
30
+ */
31
+ export declare function tokenizeQuery(query: string): string[];
32
+ /**
33
+ * Score an element based on how well it matches the query.
34
+ *
35
+ * Scoring priorities:
36
+ * - Exact name/text match: +100
37
+ * - Exact aria-label match: +90
38
+ * - Contains full query: +50/+45
39
+ * - Token matches: +15 per token
40
+ * - Role match bonus: +30
41
+ * - Interactive element bonus: +20
42
+ * - Size bonuses/penalties: +10/-20
43
+ */
44
+ export declare function scoreElement(element: FoundElement, queryLower: string, queryTokens: string[]): number;
45
+ /**
46
+ * CSS selectors for interactive elements, used by in-page search.
47
+ */
48
+ export declare const INTERACTIVE_SELECTORS: string[];
49
+ //# sourceMappingURL=element-finder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"element-finder.d.ts","sourceRoot":"","sources":["../../src/utils/element-finder.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,gBAAgB,EAAE,MAAM,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9D,KAAK,EAAE,MAAM,CAAC;CACf;AASD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAMrD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,YAAY,EACrB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EAAE,GACpB,MAAM,CAuER;AAED;;GAEG;AACH,eAAO,MAAM,qBAAqB,UAyBjC,CAAC"}
@@ -0,0 +1,130 @@
1
+ "use strict";
2
+ /**
3
+ * Element Finder - Shared element search and scoring utilities
4
+ *
5
+ * Used by click-element, interact, and find tools to locate elements
6
+ * by natural language query with consistent scoring logic.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.INTERACTIVE_SELECTORS = void 0;
10
+ exports.tokenizeQuery = tokenizeQuery;
11
+ exports.scoreElement = scoreElement;
12
+ /**
13
+ * Stop words filtered out when tokenizing queries.
14
+ */
15
+ const STOP_WORDS = new Set([
16
+ 'the', 'a', 'an', 'to', 'for', 'of', 'in', 'on', 'at', 'and', 'or',
17
+ ]);
18
+ /**
19
+ * Tokenize a query string into meaningful search tokens.
20
+ * Filters out stop words and single-character tokens.
21
+ */
22
+ function tokenizeQuery(query) {
23
+ return query
24
+ .toLowerCase()
25
+ .split(/\s+/)
26
+ .filter(t => t.length > 1)
27
+ .filter(t => !STOP_WORDS.has(t));
28
+ }
29
+ /**
30
+ * Score an element based on how well it matches the query.
31
+ *
32
+ * Scoring priorities:
33
+ * - Exact name/text match: +100
34
+ * - Exact aria-label match: +90
35
+ * - Contains full query: +50/+45
36
+ * - Token matches: +15 per token
37
+ * - Role match bonus: +30
38
+ * - Interactive element bonus: +20
39
+ * - Size bonuses/penalties: +10/-20
40
+ */
41
+ function scoreElement(element, queryLower, queryTokens) {
42
+ let score = 0;
43
+ const nameLower = element.name.toLowerCase();
44
+ const textLower = element.textContent?.toLowerCase() || '';
45
+ const ariaLower = element.ariaLabel?.toLowerCase() || '';
46
+ const placeholderLower = element.placeholder?.toLowerCase() || '';
47
+ // Exact match bonus (highest priority)
48
+ if (nameLower === queryLower || textLower === queryLower) {
49
+ score += 100;
50
+ }
51
+ // Aria label exact match
52
+ if (ariaLower === queryLower) {
53
+ score += 90;
54
+ }
55
+ // Contains full query
56
+ if (nameLower.includes(queryLower) || textLower.includes(queryLower)) {
57
+ score += 50;
58
+ }
59
+ if (ariaLower.includes(queryLower)) {
60
+ score += 45;
61
+ }
62
+ // Token matching (partial match for multi-word queries)
63
+ const combinedText = `${nameLower} ${textLower} ${ariaLower} ${placeholderLower}`;
64
+ const matchedTokens = queryTokens.filter(token => combinedText.includes(token));
65
+ score += matchedTokens.length * 15;
66
+ // Role matching bonus - if query mentions role
67
+ const roleMatches = [
68
+ ['button', () => element.role === 'button' || element.tagName === 'button'],
69
+ ['link', () => element.role === 'link' || element.tagName === 'a'],
70
+ ['radio', () => element.role === 'radio' || element.type === 'radio'],
71
+ ['checkbox', () => element.role === 'checkbox' || element.type === 'checkbox'],
72
+ ['input', () => element.tagName === 'input' || element.tagName === 'textarea'],
73
+ ['switch', () => element.role === 'switch'],
74
+ ['toggle', () => element.role === 'switch'],
75
+ ['dropdown', () => element.role === 'combobox' || element.role === 'listbox'],
76
+ ['select', () => element.role === 'combobox' || element.role === 'listbox'],
77
+ ['slider', () => element.role === 'slider'],
78
+ ];
79
+ for (const [keyword, matcher] of roleMatches) {
80
+ if (queryLower.includes(keyword) && matcher()) {
81
+ score += 30;
82
+ }
83
+ }
84
+ // Interactive element bonus
85
+ if ([
86
+ 'button', 'link', 'checkbox', 'radio', 'menuitem', 'tab',
87
+ 'option', 'switch', 'combobox', 'listbox', 'slider', 'treeitem',
88
+ ].includes(element.role)) {
89
+ score += 20;
90
+ }
91
+ // Visible size bonus (larger elements are usually more important)
92
+ if (element.rect.width > 50 && element.rect.height > 20) {
93
+ score += 10;
94
+ }
95
+ // Penalty for very small elements (likely icons or hidden)
96
+ if (element.rect.width < 10 || element.rect.height < 10) {
97
+ score -= 20;
98
+ }
99
+ return score;
100
+ }
101
+ /**
102
+ * CSS selectors for interactive elements, used by in-page search.
103
+ */
104
+ exports.INTERACTIVE_SELECTORS = [
105
+ 'button',
106
+ '[role="button"]',
107
+ 'a',
108
+ '[role="link"]',
109
+ 'input[type="submit"]',
110
+ 'input[type="button"]',
111
+ 'input[type="radio"]',
112
+ 'input[type="checkbox"]',
113
+ '[role="radio"]',
114
+ '[role="checkbox"]',
115
+ '[role="menuitem"]',
116
+ '[role="tab"]',
117
+ '[role="option"]',
118
+ '[onclick]',
119
+ '[tabindex]',
120
+ '[contenteditable="true"]',
121
+ '[role="combobox"]',
122
+ '[role="listbox"]',
123
+ '[role="switch"]',
124
+ '[role="slider"]',
125
+ '[role="treeitem"]',
126
+ '[role="dialog"] [aria-label]',
127
+ '[role="alertdialog"] [aria-label]',
128
+ '[data-testid]',
129
+ ];
130
+ //# sourceMappingURL=element-finder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"element-finder.js","sourceRoot":"","sources":["../../src/utils/element-finder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Format a timestamp age as a human-readable string (e.g., "30s ago", "2m ago", "1h ago").
3
+ */
4
+ export declare function formatAge(timestamp: number): string;
5
+ //# sourceMappingURL=format-age.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format-age.d.ts","sourceRoot":"","sources":["../../src/utils/format-age.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAKnD"}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.formatAge = formatAge;
4
+ /**
5
+ * Format a timestamp age as a human-readable string (e.g., "30s ago", "2m ago", "1h ago").
6
+ */
7
+ function formatAge(timestamp) {
8
+ const ageMs = Date.now() - timestamp;
9
+ if (ageMs < 60000)
10
+ return `${Math.round(ageMs / 1000)}s ago`;
11
+ if (ageMs < 3600000)
12
+ return `${Math.round(ageMs / 60000)}m ago`;
13
+ return `${Math.round(ageMs / 3600000)}h ago`;
14
+ }
15
+ //# sourceMappingURL=format-age.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format-age.js","sourceRoot":"","sources":["../../src/utils/format-age.ts"],"names":[],"mappings":";;AAGA,8BAKC;AARD;;GAEG;AACH,SAAgB,SAAS,CAAC,SAAiB;IACzC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;IACrC,IAAI,KAAK,GAAG,KAAK;QAAE,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC;IAC7D,IAAI,KAAK,GAAG,OAAO;QAAE,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC;IAChE,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC;AAC/C,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Safely extract an error message from an unknown thrown value.
3
+ */
4
+ export declare function formatError(error: unknown): string;
5
+ //# sourceMappingURL=format-error.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format-error.d.ts","sourceRoot":"","sources":["../../src/utils/format-error.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAElD"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.formatError = formatError;
4
+ /**
5
+ * Safely extract an error message from an unknown thrown value.
6
+ */
7
+ function formatError(error) {
8
+ return error instanceof Error ? error.message : String(error);
9
+ }
10
+ //# sourceMappingURL=format-error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format-error.js","sourceRoot":"","sources":["../../src/utils/format-error.ts"],"names":[],"mappings":";;AAGA,kCAEC;AALD;;GAEG;AACH,SAAgB,WAAW,CAAC,KAAc;IACxC,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAChE,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Utility exports
3
+ */
4
+ export * from './atomic-file';
5
+ export * from './json-validator';
6
+ export * from './pid-manager';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC"}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ /**
3
+ * Utility exports
4
+ */
5
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
+ desc = { enumerable: true, get: function() { return m[k]; } };
10
+ }
11
+ Object.defineProperty(o, k2, desc);
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
17
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
18
+ };
19
+ Object.defineProperty(exports, "__esModule", { value: true });
20
+ __exportStar(require("./atomic-file"), exports);
21
+ __exportStar(require("./json-validator"), exports);
22
+ __exportStar(require("./pid-manager"), exports);
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;AAEH,gDAA8B;AAC9B,mDAAiC;AACjC,gDAA8B"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * JSON validation and corruption detection utilities
3
+ * Detects and attempts to recover from common JSON corruption patterns
4
+ */
5
+ export interface ValidationResult {
6
+ valid: boolean;
7
+ error?: string;
8
+ corrupted?: boolean;
9
+ corruptionType?: 'concatenated' | 'truncated' | 'invalid' | 'empty';
10
+ }
11
+ export interface RecoveryResult {
12
+ success: boolean;
13
+ data?: unknown;
14
+ method?: string;
15
+ error?: string;
16
+ }
17
+ /**
18
+ * Check if a string is valid JSON
19
+ */
20
+ export declare function isValidJson(content: string): boolean;
21
+ /**
22
+ * Detect corruption in JSON content
23
+ * Identifies common corruption patterns from race conditions
24
+ */
25
+ export declare function detectCorruption(content: string): ValidationResult;
26
+ /**
27
+ * Extract valid JSON from corrupted content
28
+ * Attempts various recovery strategies
29
+ */
30
+ export declare function extractValidJson(content: string): RecoveryResult;
31
+ /**
32
+ * Merge two JSON objects, preferring values from the second
33
+ * Useful for recovering from partial writes
34
+ */
35
+ export declare function mergeJsonObjects(obj1: Record<string, unknown>, obj2: Record<string, unknown>): Record<string, unknown>;
36
+ /**
37
+ * Validate .claude.json specific structure
38
+ */
39
+ export declare function validateClaudeConfig(content: unknown): ValidationResult;
40
+ //# sourceMappingURL=json-validator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-validator.d.ts","sourceRoot":"","sources":["../../src/utils/json-validator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE,cAAc,GAAG,WAAW,GAAG,SAAS,GAAG,OAAO,CAAC;CACrE;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAOpD;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,gBAAgB,CA0DlE;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,CA4DhE;AA8HD;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAuBzB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,gBAAgB,CA2BvE"}
@@ -0,0 +1,295 @@
1
+ "use strict";
2
+ /**
3
+ * JSON validation and corruption detection utilities
4
+ * Detects and attempts to recover from common JSON corruption patterns
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.isValidJson = isValidJson;
8
+ exports.detectCorruption = detectCorruption;
9
+ exports.extractValidJson = extractValidJson;
10
+ exports.mergeJsonObjects = mergeJsonObjects;
11
+ exports.validateClaudeConfig = validateClaudeConfig;
12
+ /**
13
+ * Check if a string is valid JSON
14
+ */
15
+ function isValidJson(content) {
16
+ try {
17
+ JSON.parse(content);
18
+ return true;
19
+ }
20
+ catch {
21
+ return false;
22
+ }
23
+ }
24
+ /**
25
+ * Detect corruption in JSON content
26
+ * Identifies common corruption patterns from race conditions
27
+ */
28
+ function detectCorruption(content) {
29
+ if (!content || content.trim() === '') {
30
+ return {
31
+ valid: false,
32
+ corrupted: true,
33
+ corruptionType: 'empty',
34
+ error: 'Empty content',
35
+ };
36
+ }
37
+ // Check for concatenated JSON objects (common race condition pattern)
38
+ // Pattern: }{ indicates two JSON objects were written together
39
+ if (content.includes('}{')) {
40
+ return {
41
+ valid: false,
42
+ corrupted: true,
43
+ corruptionType: 'concatenated',
44
+ error: 'Detected concatenated JSON objects (race condition corruption)',
45
+ };
46
+ }
47
+ // Check for multiple JSON arrays concatenated
48
+ if (content.includes('][')) {
49
+ return {
50
+ valid: false,
51
+ corrupted: true,
52
+ corruptionType: 'concatenated',
53
+ error: 'Detected concatenated JSON arrays',
54
+ };
55
+ }
56
+ // Try to parse
57
+ try {
58
+ JSON.parse(content);
59
+ return { valid: true };
60
+ }
61
+ catch (error) {
62
+ const errorMessage = error.message;
63
+ // Detect truncated JSON
64
+ if (errorMessage.includes('Unexpected end of JSON') ||
65
+ errorMessage.includes('Unexpected end of input')) {
66
+ return {
67
+ valid: false,
68
+ corrupted: true,
69
+ corruptionType: 'truncated',
70
+ error: 'JSON appears to be truncated',
71
+ };
72
+ }
73
+ return {
74
+ valid: false,
75
+ corrupted: true,
76
+ corruptionType: 'invalid',
77
+ error: `Invalid JSON: ${errorMessage}`,
78
+ };
79
+ }
80
+ }
81
+ /**
82
+ * Extract valid JSON from corrupted content
83
+ * Attempts various recovery strategies
84
+ */
85
+ function extractValidJson(content) {
86
+ // Strategy 1: Content is already valid
87
+ if (isValidJson(content)) {
88
+ return {
89
+ success: true,
90
+ data: JSON.parse(content),
91
+ method: 'content_already_valid',
92
+ };
93
+ }
94
+ const trimmed = content.trim();
95
+ // Strategy 2: Handle concatenated JSON objects
96
+ // Take the first complete JSON object
97
+ if (trimmed.includes('}{')) {
98
+ const firstObjectEnd = findMatchingBrace(trimmed, 0);
99
+ if (firstObjectEnd !== -1) {
100
+ const firstObject = trimmed.substring(0, firstObjectEnd + 1);
101
+ if (isValidJson(firstObject)) {
102
+ return {
103
+ success: true,
104
+ data: JSON.parse(firstObject),
105
+ method: 'extract_first_object',
106
+ };
107
+ }
108
+ }
109
+ // Alternative: try to take the second object (might be more recent)
110
+ const secondStart = trimmed.indexOf('}{') + 1;
111
+ const secondObject = trimmed.substring(secondStart);
112
+ if (isValidJson(secondObject)) {
113
+ return {
114
+ success: true,
115
+ data: JSON.parse(secondObject),
116
+ method: 'extract_second_object',
117
+ };
118
+ }
119
+ }
120
+ // Strategy 3: Handle truncated JSON
121
+ // Try to complete the JSON by adding missing brackets
122
+ const result = attemptTruncatedRecovery(trimmed);
123
+ if (result.success) {
124
+ return result;
125
+ }
126
+ // Strategy 4: Look for the largest valid JSON substring
127
+ const largestValid = findLargestValidJson(trimmed);
128
+ if (largestValid) {
129
+ return {
130
+ success: true,
131
+ data: JSON.parse(largestValid),
132
+ method: 'largest_valid_substring',
133
+ };
134
+ }
135
+ return {
136
+ success: false,
137
+ error: 'Could not recover valid JSON from content',
138
+ };
139
+ }
140
+ /**
141
+ * Find the index of the matching closing brace for an opening brace
142
+ */
143
+ function findMatchingBrace(content, startIndex) {
144
+ let depth = 0;
145
+ let inString = false;
146
+ let escapeNext = false;
147
+ for (let i = startIndex; i < content.length; i++) {
148
+ const char = content[i];
149
+ if (escapeNext) {
150
+ escapeNext = false;
151
+ continue;
152
+ }
153
+ if (char === '\\' && inString) {
154
+ escapeNext = true;
155
+ continue;
156
+ }
157
+ if (char === '"') {
158
+ inString = !inString;
159
+ continue;
160
+ }
161
+ if (inString)
162
+ continue;
163
+ if (char === '{') {
164
+ depth++;
165
+ }
166
+ else if (char === '}') {
167
+ depth--;
168
+ if (depth === 0) {
169
+ return i;
170
+ }
171
+ }
172
+ }
173
+ return -1;
174
+ }
175
+ /**
176
+ * Attempt to recover truncated JSON
177
+ */
178
+ function attemptTruncatedRecovery(content) {
179
+ // Count open brackets and braces
180
+ let openBraces = 0;
181
+ let openBrackets = 0;
182
+ let inString = false;
183
+ let escapeNext = false;
184
+ for (const char of content) {
185
+ if (escapeNext) {
186
+ escapeNext = false;
187
+ continue;
188
+ }
189
+ if (char === '\\' && inString) {
190
+ escapeNext = true;
191
+ continue;
192
+ }
193
+ if (char === '"') {
194
+ inString = !inString;
195
+ continue;
196
+ }
197
+ if (inString)
198
+ continue;
199
+ switch (char) {
200
+ case '{':
201
+ openBraces++;
202
+ break;
203
+ case '}':
204
+ openBraces--;
205
+ break;
206
+ case '[':
207
+ openBrackets++;
208
+ break;
209
+ case ']':
210
+ openBrackets--;
211
+ break;
212
+ }
213
+ }
214
+ // If we're inside a string, try to close it
215
+ if (inString) {
216
+ content += '"';
217
+ }
218
+ // Try to complete with missing brackets/braces
219
+ const closing = ']'.repeat(Math.max(0, openBrackets)) +
220
+ '}'.repeat(Math.max(0, openBraces));
221
+ if (closing) {
222
+ const completed = content + closing;
223
+ if (isValidJson(completed)) {
224
+ return {
225
+ success: true,
226
+ data: JSON.parse(completed),
227
+ method: 'complete_truncated',
228
+ };
229
+ }
230
+ }
231
+ return { success: false, error: 'Truncated recovery failed' };
232
+ }
233
+ /**
234
+ * Find the largest valid JSON substring
235
+ */
236
+ function findLargestValidJson(content) {
237
+ // Start from the beginning, try to find complete JSON objects
238
+ for (let end = content.length; end > 1; end--) {
239
+ const substring = content.substring(0, end);
240
+ if (isValidJson(substring)) {
241
+ return substring;
242
+ }
243
+ }
244
+ return null;
245
+ }
246
+ /**
247
+ * Merge two JSON objects, preferring values from the second
248
+ * Useful for recovering from partial writes
249
+ */
250
+ function mergeJsonObjects(obj1, obj2) {
251
+ const result = { ...obj1 };
252
+ for (const [key, value] of Object.entries(obj2)) {
253
+ if (value !== null &&
254
+ typeof value === 'object' &&
255
+ !Array.isArray(value) &&
256
+ result[key] &&
257
+ typeof result[key] === 'object' &&
258
+ !Array.isArray(result[key])) {
259
+ // Recursively merge objects
260
+ result[key] = mergeJsonObjects(result[key], value);
261
+ }
262
+ else if (value !== undefined) {
263
+ result[key] = value;
264
+ }
265
+ }
266
+ return result;
267
+ }
268
+ /**
269
+ * Validate .claude.json specific structure
270
+ */
271
+ function validateClaudeConfig(content) {
272
+ if (typeof content !== 'object' || content === null) {
273
+ return {
274
+ valid: false,
275
+ error: 'Config must be an object',
276
+ };
277
+ }
278
+ const config = content;
279
+ // Check for expected top-level keys (optional validation)
280
+ const expectedKeys = [
281
+ 'numStartups',
282
+ 'tipsHistory',
283
+ 'userID',
284
+ 'firstStartTime',
285
+ ];
286
+ const hasExpectedKeys = expectedKeys.some((key) => key in config);
287
+ if (!hasExpectedKeys && Object.keys(config).length > 0) {
288
+ return {
289
+ valid: false,
290
+ error: 'Config missing expected Claude configuration keys',
291
+ };
292
+ }
293
+ return { valid: true };
294
+ }
295
+ //# sourceMappingURL=json-validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-validator.js","sourceRoot":"","sources":["../../src/utils/json-validator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import type { Page } from 'puppeteer-core';
2
+ export interface PageDiagnostics {
3
+ url: string;
4
+ readyState: string;
5
+ totalElements: number;
6
+ framework: string | null;
7
+ title: string;
8
+ }
9
+ export interface BlockingInfo {
10
+ type: 'captcha' | 'bot-check' | 'access-denied' | 'js-required';
11
+ detail: string;
12
+ }
13
+ /**
14
+ * Get basic page diagnostics for failure reporting.
15
+ * Lightweight - single evaluate call.
16
+ */
17
+ export declare function getPageDiagnostics(page: Page): Promise<PageDiagnostics>;
18
+ /**
19
+ * Detect if the page is showing a blocking verification/captcha/access-denied page.
20
+ * Returns null if page appears normal.
21
+ */
22
+ export declare function detectBlockingPage(page: Page): Promise<BlockingInfo | null>;
23
+ //# sourceMappingURL=page-diagnostics.d.ts.map