devharness 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (627) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +185 -0
  3. package/build/atomic-write.d.ts +28 -0
  4. package/build/atomic-write.d.ts.map +1 -0
  5. package/build/atomic-write.js +126 -0
  6. package/build/atomic-write.js.map +1 -0
  7. package/build/cdp-manager.d.ts +524 -0
  8. package/build/cdp-manager.d.ts.map +1 -0
  9. package/build/cdp-manager.js +1828 -0
  10. package/build/cdp-manager.js.map +1 -0
  11. package/build/cdp-manager.test.d.ts +6 -0
  12. package/build/cdp-manager.test.d.ts.map +1 -0
  13. package/build/cdp-manager.test.js +546 -0
  14. package/build/cdp-manager.test.js.map +1 -0
  15. package/build/chrome-launcher.d.ts +400 -0
  16. package/build/chrome-launcher.d.ts.map +1 -0
  17. package/build/chrome-launcher.js +1071 -0
  18. package/build/chrome-launcher.js.map +1 -0
  19. package/build/chrome-launcher.test.d.ts +11 -0
  20. package/build/chrome-launcher.test.d.ts.map +1 -0
  21. package/build/chrome-launcher.test.js +204 -0
  22. package/build/chrome-launcher.test.js.map +1 -0
  23. package/build/clickable-cache.d.ts +73 -0
  24. package/build/clickable-cache.d.ts.map +1 -0
  25. package/build/clickable-cache.js +90 -0
  26. package/build/clickable-cache.js.map +1 -0
  27. package/build/command-recorder.d.ts +401 -0
  28. package/build/command-recorder.d.ts.map +1 -0
  29. package/build/command-recorder.js +701 -0
  30. package/build/command-recorder.js.map +1 -0
  31. package/build/config.d.ts +390 -0
  32. package/build/config.d.ts.map +1 -0
  33. package/build/config.js +826 -0
  34. package/build/config.js.map +1 -0
  35. package/build/config.test.d.ts +2 -0
  36. package/build/config.test.d.ts.map +1 -0
  37. package/build/config.test.js +112 -0
  38. package/build/config.test.js.map +1 -0
  39. package/build/connection-manager.d.ts +159 -0
  40. package/build/connection-manager.d.ts.map +1 -0
  41. package/build/connection-manager.js +432 -0
  42. package/build/connection-manager.js.map +1 -0
  43. package/build/connection-manager.test.d.ts +11 -0
  44. package/build/connection-manager.test.d.ts.map +1 -0
  45. package/build/connection-manager.test.js +114 -0
  46. package/build/connection-manager.test.js.map +1 -0
  47. package/build/console-monitor.d.ts +150 -0
  48. package/build/console-monitor.d.ts.map +1 -0
  49. package/build/console-monitor.js +454 -0
  50. package/build/console-monitor.js.map +1 -0
  51. package/build/dashboard/bundle.js +1 -0
  52. package/build/dashboard/dashboard-client.d.ts +42 -0
  53. package/build/dashboard/dashboard-client.d.ts.map +1 -0
  54. package/build/dashboard/dashboard-client.js +184 -0
  55. package/build/dashboard/dashboard-client.js.map +1 -0
  56. package/build/dashboard/dashboard-hub.d.ts +50 -0
  57. package/build/dashboard/dashboard-hub.d.ts.map +1 -0
  58. package/build/dashboard/dashboard-hub.js +654 -0
  59. package/build/dashboard/dashboard-hub.js.map +1 -0
  60. package/build/dashboard/hub-lock.d.ts +16 -0
  61. package/build/dashboard/hub-lock.d.ts.map +1 -0
  62. package/build/dashboard/hub-lock.js +77 -0
  63. package/build/dashboard/hub-lock.js.map +1 -0
  64. package/build/dashboard/index.d.ts +25 -0
  65. package/build/dashboard/index.d.ts.map +1 -0
  66. package/build/dashboard/index.js +77 -0
  67. package/build/dashboard/index.js.map +1 -0
  68. package/build/dashboard/types.d.ts +83 -0
  69. package/build/dashboard/types.d.ts.map +1 -0
  70. package/build/dashboard/types.js +6 -0
  71. package/build/dashboard/types.js.map +1 -0
  72. package/build/debug-logger.d.ts +85 -0
  73. package/build/debug-logger.d.ts.map +1 -0
  74. package/build/debug-logger.js +195 -0
  75. package/build/debug-logger.js.map +1 -0
  76. package/build/debugger-aware-wrapper.d.ts +37 -0
  77. package/build/debugger-aware-wrapper.d.ts.map +1 -0
  78. package/build/debugger-aware-wrapper.js +128 -0
  79. package/build/debugger-aware-wrapper.js.map +1 -0
  80. package/build/dom-change-monitor.d.ts +92 -0
  81. package/build/dom-change-monitor.d.ts.map +1 -0
  82. package/build/dom-change-monitor.js +437 -0
  83. package/build/dom-change-monitor.js.map +1 -0
  84. package/build/element-collector.d.ts +16 -0
  85. package/build/element-collector.d.ts.map +1 -0
  86. package/build/element-collector.js +207 -0
  87. package/build/element-collector.js.map +1 -0
  88. package/build/error-helpers.d.ts +43 -0
  89. package/build/error-helpers.d.ts.map +1 -0
  90. package/build/error-helpers.js +143 -0
  91. package/build/error-helpers.js.map +1 -0
  92. package/build/formatters/console-formatter.d.ts +160 -0
  93. package/build/formatters/console-formatter.d.ts.map +1 -0
  94. package/build/formatters/console-formatter.js +338 -0
  95. package/build/formatters/console-formatter.js.map +1 -0
  96. package/build/helpers/parser-plugins.d.ts +44 -0
  97. package/build/helpers/parser-plugins.d.ts.map +1 -0
  98. package/build/helpers/parser-plugins.js +102 -0
  99. package/build/helpers/parser-plugins.js.map +1 -0
  100. package/build/helpers/paths.d.ts +79 -0
  101. package/build/helpers/paths.d.ts.map +1 -0
  102. package/build/helpers/paths.js +168 -0
  103. package/build/helpers/paths.js.map +1 -0
  104. package/build/helpers/process-liveness.d.ts +24 -0
  105. package/build/helpers/process-liveness.d.ts.map +1 -0
  106. package/build/helpers/process-liveness.js +36 -0
  107. package/build/helpers/process-liveness.js.map +1 -0
  108. package/build/helpers/process-liveness.test.d.ts +2 -0
  109. package/build/helpers/process-liveness.test.d.ts.map +1 -0
  110. package/build/helpers/process-liveness.test.js +40 -0
  111. package/build/helpers/process-liveness.test.js.map +1 -0
  112. package/build/helpers/sequence-tree.d.ts +27 -0
  113. package/build/helpers/sequence-tree.d.ts.map +1 -0
  114. package/build/helpers/sequence-tree.js +80 -0
  115. package/build/helpers/sequence-tree.js.map +1 -0
  116. package/build/helpers/sequence-tree.test.d.ts +2 -0
  117. package/build/helpers/sequence-tree.test.d.ts.map +1 -0
  118. package/build/helpers/sequence-tree.test.js +122 -0
  119. package/build/helpers/sequence-tree.test.js.map +1 -0
  120. package/build/index.d.ts +3 -0
  121. package/build/index.d.ts.map +1 -0
  122. package/build/index.js +2007 -0
  123. package/build/index.js.map +1 -0
  124. package/build/interaction-recorder.d.ts +214 -0
  125. package/build/interaction-recorder.d.ts.map +1 -0
  126. package/build/interaction-recorder.js +2007 -0
  127. package/build/interaction-recorder.js.map +1 -0
  128. package/build/issue-tracker.d.ts +107 -0
  129. package/build/issue-tracker.d.ts.map +1 -0
  130. package/build/issue-tracker.js +582 -0
  131. package/build/issue-tracker.js.map +1 -0
  132. package/build/issue-tracker.test.d.ts +2 -0
  133. package/build/issue-tracker.test.d.ts.map +1 -0
  134. package/build/issue-tracker.test.js +88 -0
  135. package/build/issue-tracker.test.js.map +1 -0
  136. package/build/launch-chrome-port.test.d.ts +14 -0
  137. package/build/launch-chrome-port.test.d.ts.map +1 -0
  138. package/build/launch-chrome-port.test.js +97 -0
  139. package/build/launch-chrome-port.test.js.map +1 -0
  140. package/build/log-processor/orchestrator.d.ts +32 -0
  141. package/build/log-processor/orchestrator.d.ts.map +1 -0
  142. package/build/log-processor/orchestrator.js +27 -0
  143. package/build/log-processor/orchestrator.js.map +1 -0
  144. package/build/logpoint-execution-tracker.d.ts +57 -0
  145. package/build/logpoint-execution-tracker.d.ts.map +1 -0
  146. package/build/logpoint-execution-tracker.js +112 -0
  147. package/build/logpoint-execution-tracker.js.map +1 -0
  148. package/build/mcp-supervisor.d.ts +3 -0
  149. package/build/mcp-supervisor.d.ts.map +1 -0
  150. package/build/mcp-supervisor.js +211 -0
  151. package/build/mcp-supervisor.js.map +1 -0
  152. package/build/messages.d.ts +165 -0
  153. package/build/messages.d.ts.map +1 -0
  154. package/build/messages.js +574 -0
  155. package/build/messages.js.map +1 -0
  156. package/build/network-monitor.d.ts +172 -0
  157. package/build/network-monitor.d.ts.map +1 -0
  158. package/build/network-monitor.js +350 -0
  159. package/build/network-monitor.js.map +1 -0
  160. package/build/overlays.d.ts +49 -0
  161. package/build/overlays.d.ts.map +1 -0
  162. package/build/overlays.js +409 -0
  163. package/build/overlays.js.map +1 -0
  164. package/build/persistent-profiles.test.d.ts +15 -0
  165. package/build/persistent-profiles.test.d.ts.map +1 -0
  166. package/build/persistent-profiles.test.js +470 -0
  167. package/build/persistent-profiles.test.js.map +1 -0
  168. package/build/port-reserver.d.ts +32 -0
  169. package/build/port-reserver.d.ts.map +1 -0
  170. package/build/port-reserver.js +118 -0
  171. package/build/port-reserver.js.map +1 -0
  172. package/build/puppeteer-manager.d.ts +47 -0
  173. package/build/puppeteer-manager.d.ts.map +1 -0
  174. package/build/puppeteer-manager.js +116 -0
  175. package/build/puppeteer-manager.js.map +1 -0
  176. package/build/recording-coverage.test.d.ts +12 -0
  177. package/build/recording-coverage.test.d.ts.map +1 -0
  178. package/build/recording-coverage.test.js +72 -0
  179. package/build/recording-coverage.test.js.map +1 -0
  180. package/build/reference-validator.d.ts +47 -0
  181. package/build/reference-validator.d.ts.map +1 -0
  182. package/build/reference-validator.js +86 -0
  183. package/build/reference-validator.js.map +1 -0
  184. package/build/reference-validator.test.d.ts +5 -0
  185. package/build/reference-validator.test.d.ts.map +1 -0
  186. package/build/reference-validator.test.js +243 -0
  187. package/build/reference-validator.test.js.map +1 -0
  188. package/build/replay-cursor.d.ts +27 -0
  189. package/build/replay-cursor.d.ts.map +1 -0
  190. package/build/replay-cursor.js +240 -0
  191. package/build/replay-cursor.js.map +1 -0
  192. package/build/runners/docker-compose-runner.d.ts +69 -0
  193. package/build/runners/docker-compose-runner.d.ts.map +1 -0
  194. package/build/runners/docker-compose-runner.js +438 -0
  195. package/build/runners/docker-compose-runner.js.map +1 -0
  196. package/build/runners/docker-runner.d.ts +65 -0
  197. package/build/runners/docker-runner.d.ts.map +1 -0
  198. package/build/runners/docker-runner.js +414 -0
  199. package/build/runners/docker-runner.js.map +1 -0
  200. package/build/runners/index.d.ts +19 -0
  201. package/build/runners/index.d.ts.map +1 -0
  202. package/build/runners/index.js +35 -0
  203. package/build/runners/index.js.map +1 -0
  204. package/build/runners/native-runner.d.ts +95 -0
  205. package/build/runners/native-runner.d.ts.map +1 -0
  206. package/build/runners/native-runner.js +370 -0
  207. package/build/runners/native-runner.js.map +1 -0
  208. package/build/runners/types.d.ts +147 -0
  209. package/build/runners/types.d.ts.map +1 -0
  210. package/build/runners/types.js +25 -0
  211. package/build/runners/types.js.map +1 -0
  212. package/build/self-restart.d.ts +12 -0
  213. package/build/self-restart.d.ts.map +1 -0
  214. package/build/self-restart.js +41 -0
  215. package/build/self-restart.js.map +1 -0
  216. package/build/self-restart.test.d.ts +2 -0
  217. package/build/self-restart.test.d.ts.map +1 -0
  218. package/build/self-restart.test.js +34 -0
  219. package/build/self-restart.test.js.map +1 -0
  220. package/build/server-claims.d.ts +161 -0
  221. package/build/server-claims.d.ts.map +1 -0
  222. package/build/server-claims.js +382 -0
  223. package/build/server-claims.js.map +1 -0
  224. package/build/server-claims.test.d.ts +2 -0
  225. package/build/server-claims.test.d.ts.map +1 -0
  226. package/build/server-claims.test.js +197 -0
  227. package/build/server-claims.test.js.map +1 -0
  228. package/build/server-manager.d.ts +438 -0
  229. package/build/server-manager.d.ts.map +1 -0
  230. package/build/server-manager.js +1674 -0
  231. package/build/server-manager.js.map +1 -0
  232. package/build/server-manager.test.d.ts +17 -0
  233. package/build/server-manager.test.d.ts.map +1 -0
  234. package/build/server-manager.test.js +122 -0
  235. package/build/server-manager.test.js.map +1 -0
  236. package/build/server-ownership.test.d.ts +2 -0
  237. package/build/server-ownership.test.d.ts.map +1 -0
  238. package/build/server-ownership.test.js +238 -0
  239. package/build/server-ownership.test.js.map +1 -0
  240. package/build/server-watcher.d.ts +21 -0
  241. package/build/server-watcher.d.ts.map +1 -0
  242. package/build/server-watcher.js +105 -0
  243. package/build/server-watcher.js.map +1 -0
  244. package/build/session-detector.d.ts +47 -0
  245. package/build/session-detector.d.ts.map +1 -0
  246. package/build/session-detector.js +229 -0
  247. package/build/session-detector.js.map +1 -0
  248. package/build/session-detector.test.d.ts +9 -0
  249. package/build/session-detector.test.d.ts.map +1 -0
  250. package/build/session-detector.test.js +45 -0
  251. package/build/session-detector.test.js.map +1 -0
  252. package/build/sourcemap-handler.d.ts +114 -0
  253. package/build/sourcemap-handler.d.ts.map +1 -0
  254. package/build/sourcemap-handler.js +479 -0
  255. package/build/sourcemap-handler.js.map +1 -0
  256. package/build/supervisor/child-manager.d.ts +43 -0
  257. package/build/supervisor/child-manager.d.ts.map +1 -0
  258. package/build/supervisor/child-manager.js +148 -0
  259. package/build/supervisor/child-manager.js.map +1 -0
  260. package/build/supervisor/child-manager.test.d.ts +2 -0
  261. package/build/supervisor/child-manager.test.d.ts.map +1 -0
  262. package/build/supervisor/child-manager.test.js +107 -0
  263. package/build/supervisor/child-manager.test.js.map +1 -0
  264. package/build/supervisor/client-watcher.d.ts +48 -0
  265. package/build/supervisor/client-watcher.d.ts.map +1 -0
  266. package/build/supervisor/client-watcher.js +186 -0
  267. package/build/supervisor/client-watcher.js.map +1 -0
  268. package/build/supervisor/client-watcher.test.d.ts +2 -0
  269. package/build/supervisor/client-watcher.test.d.ts.map +1 -0
  270. package/build/supervisor/client-watcher.test.js +121 -0
  271. package/build/supervisor/client-watcher.test.js.map +1 -0
  272. package/build/supervisor/idle-config.d.ts +30 -0
  273. package/build/supervisor/idle-config.d.ts.map +1 -0
  274. package/build/supervisor/idle-config.js +76 -0
  275. package/build/supervisor/idle-config.js.map +1 -0
  276. package/build/supervisor/idle-config.test.d.ts +2 -0
  277. package/build/supervisor/idle-config.test.d.ts.map +1 -0
  278. package/build/supervisor/idle-config.test.js +119 -0
  279. package/build/supervisor/idle-config.test.js.map +1 -0
  280. package/build/supervisor/ndjson-reader.d.ts +47 -0
  281. package/build/supervisor/ndjson-reader.d.ts.map +1 -0
  282. package/build/supervisor/ndjson-reader.js +75 -0
  283. package/build/supervisor/ndjson-reader.js.map +1 -0
  284. package/build/supervisor/ndjson-reader.test.d.ts +2 -0
  285. package/build/supervisor/ndjson-reader.test.d.ts.map +1 -0
  286. package/build/supervisor/ndjson-reader.test.js +92 -0
  287. package/build/supervisor/ndjson-reader.test.js.map +1 -0
  288. package/build/supervisor/pidfile.d.ts +11 -0
  289. package/build/supervisor/pidfile.d.ts.map +1 -0
  290. package/build/supervisor/pidfile.js +29 -0
  291. package/build/supervisor/pidfile.js.map +1 -0
  292. package/build/supervisor/pidfile.test.d.ts +8 -0
  293. package/build/supervisor/pidfile.test.d.ts.map +1 -0
  294. package/build/supervisor/pidfile.test.js +46 -0
  295. package/build/supervisor/pidfile.test.js.map +1 -0
  296. package/build/supervisor/restart-coordinator.d.ts +73 -0
  297. package/build/supervisor/restart-coordinator.d.ts.map +1 -0
  298. package/build/supervisor/restart-coordinator.js +300 -0
  299. package/build/supervisor/restart-coordinator.js.map +1 -0
  300. package/build/supervisor/restart-coordinator.test.d.ts +2 -0
  301. package/build/supervisor/restart-coordinator.test.d.ts.map +1 -0
  302. package/build/supervisor/restart-coordinator.test.js +434 -0
  303. package/build/supervisor/restart-coordinator.test.js.map +1 -0
  304. package/build/test-support/fake-execute-tool-call.d.ts +11 -0
  305. package/build/test-support/fake-execute-tool-call.d.ts.map +1 -0
  306. package/build/test-support/fake-execute-tool-call.js +19 -0
  307. package/build/test-support/fake-execute-tool-call.js.map +1 -0
  308. package/build/tool-error.d.ts +14 -0
  309. package/build/tool-error.d.ts.map +1 -0
  310. package/build/tool-error.js +18 -0
  311. package/build/tool-error.js.map +1 -0
  312. package/build/tool-response.d.ts +293 -0
  313. package/build/tool-response.d.ts.map +1 -0
  314. package/build/tool-response.js +365 -0
  315. package/build/tool-response.js.map +1 -0
  316. package/build/tools/assert-tools.d.ts +62 -0
  317. package/build/tools/assert-tools.d.ts.map +1 -0
  318. package/build/tools/assert-tools.js +330 -0
  319. package/build/tools/assert-tools.js.map +1 -0
  320. package/build/tools/breakpoint-await-abort.test.d.ts +2 -0
  321. package/build/tools/breakpoint-await-abort.test.d.ts.map +1 -0
  322. package/build/tools/breakpoint-await-abort.test.js +124 -0
  323. package/build/tools/breakpoint-await-abort.test.js.map +1 -0
  324. package/build/tools/breakpoint-tools.d.ts +99 -0
  325. package/build/tools/breakpoint-tools.d.ts.map +1 -0
  326. package/build/tools/breakpoint-tools.js +1197 -0
  327. package/build/tools/breakpoint-tools.js.map +1 -0
  328. package/build/tools/config-tools.d.ts +58 -0
  329. package/build/tools/config-tools.d.ts.map +1 -0
  330. package/build/tools/config-tools.js +180 -0
  331. package/build/tools/config-tools.js.map +1 -0
  332. package/build/tools/connection-routing.test.d.ts +12 -0
  333. package/build/tools/connection-routing.test.d.ts.map +1 -0
  334. package/build/tools/connection-routing.test.js +206 -0
  335. package/build/tools/connection-routing.test.js.map +1 -0
  336. package/build/tools/console-tools.d.ts +84 -0
  337. package/build/tools/console-tools.d.ts.map +1 -0
  338. package/build/tools/console-tools.js +241 -0
  339. package/build/tools/console-tools.js.map +1 -0
  340. package/build/tools/content-tools.d.ts +74 -0
  341. package/build/tools/content-tools.d.ts.map +1 -0
  342. package/build/tools/content-tools.js +582 -0
  343. package/build/tools/content-tools.js.map +1 -0
  344. package/build/tools/dashboard-tools.d.ts +38 -0
  345. package/build/tools/dashboard-tools.d.ts.map +1 -0
  346. package/build/tools/dashboard-tools.js +123 -0
  347. package/build/tools/dashboard-tools.js.map +1 -0
  348. package/build/tools/dom-tools.d.ts +41 -0
  349. package/build/tools/dom-tools.d.ts.map +1 -0
  350. package/build/tools/dom-tools.js +277 -0
  351. package/build/tools/dom-tools.js.map +1 -0
  352. package/build/tools/download-tools.d.ts +55 -0
  353. package/build/tools/download-tools.d.ts.map +1 -0
  354. package/build/tools/download-tools.js +280 -0
  355. package/build/tools/download-tools.js.map +1 -0
  356. package/build/tools/execution-tools.d.ts +40 -0
  357. package/build/tools/execution-tools.d.ts.map +1 -0
  358. package/build/tools/execution-tools.js +121 -0
  359. package/build/tools/execution-tools.js.map +1 -0
  360. package/build/tools/input-abort.test.d.ts +2 -0
  361. package/build/tools/input-abort.test.d.ts.map +1 -0
  362. package/build/tools/input-abort.test.js +227 -0
  363. package/build/tools/input-abort.test.js.map +1 -0
  364. package/build/tools/input-ambiguous-selector.test.d.ts +2 -0
  365. package/build/tools/input-ambiguous-selector.test.d.ts.map +1 -0
  366. package/build/tools/input-ambiguous-selector.test.js +34 -0
  367. package/build/tools/input-ambiguous-selector.test.js.map +1 -0
  368. package/build/tools/input-tools.d.ts +168 -0
  369. package/build/tools/input-tools.d.ts.map +1 -0
  370. package/build/tools/input-tools.js +1397 -0
  371. package/build/tools/input-tools.js.map +1 -0
  372. package/build/tools/inspection-tools.d.ts +112 -0
  373. package/build/tools/inspection-tools.d.ts.map +1 -0
  374. package/build/tools/inspection-tools.js +637 -0
  375. package/build/tools/inspection-tools.js.map +1 -0
  376. package/build/tools/interpolation.d.ts +30 -0
  377. package/build/tools/interpolation.d.ts.map +1 -0
  378. package/build/tools/interpolation.js +143 -0
  379. package/build/tools/interpolation.js.map +1 -0
  380. package/build/tools/issues-abort-hygiene.test.d.ts +2 -0
  381. package/build/tools/issues-abort-hygiene.test.d.ts.map +1 -0
  382. package/build/tools/issues-abort-hygiene.test.js +79 -0
  383. package/build/tools/issues-abort-hygiene.test.js.map +1 -0
  384. package/build/tools/issues-tools.d.ts +98 -0
  385. package/build/tools/issues-tools.d.ts.map +1 -0
  386. package/build/tools/issues-tools.js +821 -0
  387. package/build/tools/issues-tools.js.map +1 -0
  388. package/build/tools/issues-tools.test.d.ts +8 -0
  389. package/build/tools/issues-tools.test.d.ts.map +1 -0
  390. package/build/tools/issues-tools.test.js +184 -0
  391. package/build/tools/issues-tools.test.js.map +1 -0
  392. package/build/tools/modal-tools.d.ts +73 -0
  393. package/build/tools/modal-tools.d.ts.map +1 -0
  394. package/build/tools/modal-tools.js +161 -0
  395. package/build/tools/modal-tools.js.map +1 -0
  396. package/build/tools/network-tools.d.ts +72 -0
  397. package/build/tools/network-tools.d.ts.map +1 -0
  398. package/build/tools/network-tools.js +432 -0
  399. package/build/tools/network-tools.js.map +1 -0
  400. package/build/tools/page-tools.d.ts +78 -0
  401. package/build/tools/page-tools.d.ts.map +1 -0
  402. package/build/tools/page-tools.js +255 -0
  403. package/build/tools/page-tools.js.map +1 -0
  404. package/build/tools/plugin-tools.d.ts +16 -0
  405. package/build/tools/plugin-tools.d.ts.map +1 -0
  406. package/build/tools/plugin-tools.js +17 -0
  407. package/build/tools/plugin-tools.js.map +1 -0
  408. package/build/tools/replay-abort.test.d.ts +2 -0
  409. package/build/tools/replay-abort.test.d.ts.map +1 -0
  410. package/build/tools/replay-abort.test.js +259 -0
  411. package/build/tools/replay-abort.test.js.map +1 -0
  412. package/build/tools/replay-add-conditional.test.d.ts +2 -0
  413. package/build/tools/replay-add-conditional.test.d.ts.map +1 -0
  414. package/build/tools/replay-add-conditional.test.js +205 -0
  415. package/build/tools/replay-add-conditional.test.js.map +1 -0
  416. package/build/tools/replay-background-run.test.d.ts +2 -0
  417. package/build/tools/replay-background-run.test.d.ts.map +1 -0
  418. package/build/tools/replay-background-run.test.js +176 -0
  419. package/build/tools/replay-background-run.test.js.map +1 -0
  420. package/build/tools/replay-capture-variables.test.d.ts +2 -0
  421. package/build/tools/replay-capture-variables.test.d.ts.map +1 -0
  422. package/build/tools/replay-capture-variables.test.js +331 -0
  423. package/build/tools/replay-capture-variables.test.js.map +1 -0
  424. package/build/tools/replay-conditional-idb-and-launch.test.d.ts +11 -0
  425. package/build/tools/replay-conditional-idb-and-launch.test.d.ts.map +1 -0
  426. package/build/tools/replay-conditional-idb-and-launch.test.js +429 -0
  427. package/build/tools/replay-conditional-idb-and-launch.test.js.map +1 -0
  428. package/build/tools/replay-conditional-timeout.test.d.ts +14 -0
  429. package/build/tools/replay-conditional-timeout.test.d.ts.map +1 -0
  430. package/build/tools/replay-conditional-timeout.test.js +126 -0
  431. package/build/tools/replay-conditional-timeout.test.js.map +1 -0
  432. package/build/tools/replay-declare.test.d.ts +2 -0
  433. package/build/tools/replay-declare.test.d.ts.map +1 -0
  434. package/build/tools/replay-declare.test.js +106 -0
  435. package/build/tools/replay-declare.test.js.map +1 -0
  436. package/build/tools/replay-declared-browser-cleanup.test.d.ts +2 -0
  437. package/build/tools/replay-declared-browser-cleanup.test.d.ts.map +1 -0
  438. package/build/tools/replay-declared-browser-cleanup.test.js +103 -0
  439. package/build/tools/replay-declared-browser-cleanup.test.js.map +1 -0
  440. package/build/tools/replay-declared-profile.test.d.ts +2 -0
  441. package/build/tools/replay-declared-profile.test.d.ts.map +1 -0
  442. package/build/tools/replay-declared-profile.test.js +116 -0
  443. package/build/tools/replay-declared-profile.test.js.map +1 -0
  444. package/build/tools/replay-executor.d.ts +556 -0
  445. package/build/tools/replay-executor.d.ts.map +1 -0
  446. package/build/tools/replay-executor.js +2347 -0
  447. package/build/tools/replay-executor.js.map +1 -0
  448. package/build/tools/replay-folder-save.test.d.ts +2 -0
  449. package/build/tools/replay-folder-save.test.d.ts.map +1 -0
  450. package/build/tools/replay-folder-save.test.js +63 -0
  451. package/build/tools/replay-folder-save.test.js.map +1 -0
  452. package/build/tools/replay-formatters.d.ts +148 -0
  453. package/build/tools/replay-formatters.d.ts.map +1 -0
  454. package/build/tools/replay-formatters.js +856 -0
  455. package/build/tools/replay-formatters.js.map +1 -0
  456. package/build/tools/replay-kill-chrome-on-finish.test.d.ts +2 -0
  457. package/build/tools/replay-kill-chrome-on-finish.test.d.ts.map +1 -0
  458. package/build/tools/replay-kill-chrome-on-finish.test.js +175 -0
  459. package/build/tools/replay-kill-chrome-on-finish.test.js.map +1 -0
  460. package/build/tools/replay-multi-connection.test.d.ts +2 -0
  461. package/build/tools/replay-multi-connection.test.d.ts.map +1 -0
  462. package/build/tools/replay-multi-connection.test.js +547 -0
  463. package/build/tools/replay-multi-connection.test.js.map +1 -0
  464. package/build/tools/replay-output-and-record-options.test.d.ts +2 -0
  465. package/build/tools/replay-output-and-record-options.test.d.ts.map +1 -0
  466. package/build/tools/replay-output-and-record-options.test.js +240 -0
  467. package/build/tools/replay-output-and-record-options.test.js.map +1 -0
  468. package/build/tools/replay-production-error-shape.test.d.ts +7 -0
  469. package/build/tools/replay-production-error-shape.test.d.ts.map +1 -0
  470. package/build/tools/replay-production-error-shape.test.js +93 -0
  471. package/build/tools/replay-production-error-shape.test.js.map +1 -0
  472. package/build/tools/replay-rebase.test.d.ts +2 -0
  473. package/build/tools/replay-rebase.test.d.ts.map +1 -0
  474. package/build/tools/replay-rebase.test.js +58 -0
  475. package/build/tools/replay-rebase.test.js.map +1 -0
  476. package/build/tools/replay-retry-classification.test.d.ts +9 -0
  477. package/build/tools/replay-retry-classification.test.d.ts.map +1 -0
  478. package/build/tools/replay-retry-classification.test.js +57 -0
  479. package/build/tools/replay-retry-classification.test.js.map +1 -0
  480. package/build/tools/replay-run-registry.d.ts +55 -0
  481. package/build/tools/replay-run-registry.d.ts.map +1 -0
  482. package/build/tools/replay-run-registry.js +65 -0
  483. package/build/tools/replay-run-registry.js.map +1 -0
  484. package/build/tools/replay-sequence-reload.test.d.ts +2 -0
  485. package/build/tools/replay-sequence-reload.test.d.ts.map +1 -0
  486. package/build/tools/replay-sequence-reload.test.js +82 -0
  487. package/build/tools/replay-sequence-reload.test.js.map +1 -0
  488. package/build/tools/replay-socket-scope.test.d.ts +2 -0
  489. package/build/tools/replay-socket-scope.test.d.ts.map +1 -0
  490. package/build/tools/replay-socket-scope.test.js +75 -0
  491. package/build/tools/replay-socket-scope.test.js.map +1 -0
  492. package/build/tools/replay-step-connection.test.d.ts +2 -0
  493. package/build/tools/replay-step-connection.test.d.ts.map +1 -0
  494. package/build/tools/replay-step-connection.test.js +292 -0
  495. package/build/tools/replay-step-connection.test.js.map +1 -0
  496. package/build/tools/replay-step-timeout.test.d.ts +2 -0
  497. package/build/tools/replay-step-timeout.test.d.ts.map +1 -0
  498. package/build/tools/replay-step-timeout.test.js +204 -0
  499. package/build/tools/replay-step-timeout.test.js.map +1 -0
  500. package/build/tools/replay-tags.test.d.ts +2 -0
  501. package/build/tools/replay-tags.test.d.ts.map +1 -0
  502. package/build/tools/replay-tags.test.js +99 -0
  503. package/build/tools/replay-tags.test.js.map +1 -0
  504. package/build/tools/replay-teardown-and-foreach.test.d.ts +13 -0
  505. package/build/tools/replay-teardown-and-foreach.test.d.ts.map +1 -0
  506. package/build/tools/replay-teardown-and-foreach.test.js +318 -0
  507. package/build/tools/replay-teardown-and-foreach.test.js.map +1 -0
  508. package/build/tools/replay-tool-name-validation.test.d.ts +2 -0
  509. package/build/tools/replay-tool-name-validation.test.d.ts.map +1 -0
  510. package/build/tools/replay-tool-name-validation.test.js +280 -0
  511. package/build/tools/replay-tool-name-validation.test.js.map +1 -0
  512. package/build/tools/replay-tools.d.ts +288 -0
  513. package/build/tools/replay-tools.d.ts.map +1 -0
  514. package/build/tools/replay-tools.js +2994 -0
  515. package/build/tools/replay-tools.js.map +1 -0
  516. package/build/tools/request-abort.test.d.ts +2 -0
  517. package/build/tools/request-abort.test.d.ts.map +1 -0
  518. package/build/tools/request-abort.test.js +130 -0
  519. package/build/tools/request-abort.test.js.map +1 -0
  520. package/build/tools/request-tools.d.ts +56 -0
  521. package/build/tools/request-tools.d.ts.map +1 -0
  522. package/build/tools/request-tools.js +174 -0
  523. package/build/tools/request-tools.js.map +1 -0
  524. package/build/tools/screenshot-tools.d.ts +135 -0
  525. package/build/tools/screenshot-tools.d.ts.map +1 -0
  526. package/build/tools/screenshot-tools.js +636 -0
  527. package/build/tools/screenshot-tools.js.map +1 -0
  528. package/build/tools/server-tools.d.ts +88 -0
  529. package/build/tools/server-tools.d.ts.map +1 -0
  530. package/build/tools/server-tools.js +485 -0
  531. package/build/tools/server-tools.js.map +1 -0
  532. package/build/tools/source-tools.d.ts +46 -0
  533. package/build/tools/source-tools.d.ts.map +1 -0
  534. package/build/tools/source-tools.js +47 -0
  535. package/build/tools/source-tools.js.map +1 -0
  536. package/build/tools/storage-tools.d.ts +141 -0
  537. package/build/tools/storage-tools.d.ts.map +1 -0
  538. package/build/tools/storage-tools.js +894 -0
  539. package/build/tools/storage-tools.js.map +1 -0
  540. package/build/tools/storage-tools.test.d.ts +13 -0
  541. package/build/tools/storage-tools.test.d.ts.map +1 -0
  542. package/build/tools/storage-tools.test.js +707 -0
  543. package/build/tools/storage-tools.test.js.map +1 -0
  544. package/build/tools/tab-tools.d.ts +42 -0
  545. package/build/tools/tab-tools.d.ts.map +1 -0
  546. package/build/tools/tab-tools.js +296 -0
  547. package/build/tools/tab-tools.js.map +1 -0
  548. package/build/tools/wait-tools.d.ts +85 -0
  549. package/build/tools/wait-tools.d.ts.map +1 -0
  550. package/build/tools/wait-tools.js +236 -0
  551. package/build/tools/wait-tools.js.map +1 -0
  552. package/build/tools/wait-tools.test.d.ts +9 -0
  553. package/build/tools/wait-tools.test.d.ts.map +1 -0
  554. package/build/tools/wait-tools.test.js +193 -0
  555. package/build/tools/wait-tools.test.js.map +1 -0
  556. package/build/types.d.ts +133 -0
  557. package/build/types.d.ts.map +1 -0
  558. package/build/types.js +5 -0
  559. package/build/types.js.map +1 -0
  560. package/build/ui-verifier.d.ts +88 -0
  561. package/build/ui-verifier.d.ts.map +1 -0
  562. package/build/ui-verifier.js +540 -0
  563. package/build/ui-verifier.js.map +1 -0
  564. package/build/utils/abort.d.ts +68 -0
  565. package/build/utils/abort.d.ts.map +1 -0
  566. package/build/utils/abort.js +159 -0
  567. package/build/utils/abort.js.map +1 -0
  568. package/build/utils/abort.test.d.ts +2 -0
  569. package/build/utils/abort.test.d.ts.map +1 -0
  570. package/build/utils/abort.test.js +174 -0
  571. package/build/utils/abort.test.js.map +1 -0
  572. package/build/utils/modal-detection-core.d.ts +150 -0
  573. package/build/utils/modal-detection-core.d.ts.map +1 -0
  574. package/build/utils/modal-detection-core.js +332 -0
  575. package/build/utils/modal-detection-core.js.map +1 -0
  576. package/build/utils/modal-detection-core.test.d.ts +5 -0
  577. package/build/utils/modal-detection-core.test.d.ts.map +1 -0
  578. package/build/utils/modal-detection-core.test.js +492 -0
  579. package/build/utils/modal-detection-core.test.js.map +1 -0
  580. package/build/utils/modal-detector.d.ts +29 -0
  581. package/build/utils/modal-detector.d.ts.map +1 -0
  582. package/build/utils/modal-detector.js +281 -0
  583. package/build/utils/modal-detector.js.map +1 -0
  584. package/build/utils/modal-dismissal.d.ts +32 -0
  585. package/build/utils/modal-dismissal.d.ts.map +1 -0
  586. package/build/utils/modal-dismissal.js +190 -0
  587. package/build/utils/modal-dismissal.js.map +1 -0
  588. package/build/utils/port-check.d.ts +31 -0
  589. package/build/utils/port-check.d.ts.map +1 -0
  590. package/build/utils/port-check.js +87 -0
  591. package/build/utils/port-check.js.map +1 -0
  592. package/build/utils/port-check.test.d.ts +2 -0
  593. package/build/utils/port-check.test.d.ts.map +1 -0
  594. package/build/utils/port-check.test.js +66 -0
  595. package/build/utils/port-check.test.js.map +1 -0
  596. package/build/utils/selector-resolver.d.ts +66 -0
  597. package/build/utils/selector-resolver.d.ts.map +1 -0
  598. package/build/utils/selector-resolver.js +200 -0
  599. package/build/utils/selector-resolver.js.map +1 -0
  600. package/build/validation-helpers.d.ts +41 -0
  601. package/build/validation-helpers.d.ts.map +1 -0
  602. package/build/validation-helpers.js +236 -0
  603. package/build/validation-helpers.js.map +1 -0
  604. package/build/window-sizing.d.ts +26 -0
  605. package/build/window-sizing.d.ts.map +1 -0
  606. package/build/window-sizing.js +87 -0
  607. package/build/window-sizing.js.map +1 -0
  608. package/build/window-sizing.test.d.ts +8 -0
  609. package/build/window-sizing.test.d.ts.map +1 -0
  610. package/build/window-sizing.test.js +113 -0
  611. package/build/window-sizing.test.js.map +1 -0
  612. package/docs/README.md +74 -0
  613. package/docs/automation.md +562 -0
  614. package/docs/debugging.md +229 -0
  615. package/docs/installation.md +133 -0
  616. package/docs/instructions.md +227 -0
  617. package/docs/mcp-instructions.md +15 -0
  618. package/docs/message-system.md +327 -0
  619. package/docs/messages.md +3480 -0
  620. package/docs/parser-plugins.md +132 -0
  621. package/docs/replay.md +1411 -0
  622. package/docs/troubleshooting.md +272 -0
  623. package/docs/working_with_llm_notes.md +5 -0
  624. package/package.json +87 -0
  625. package/skills/devharness/SKILL.md +195 -0
  626. package/skills/devharness/references/sequences.md +613 -0
  627. package/skills/devharness/references/tool-categories.md +99 -0
@@ -0,0 +1,207 @@
1
+ /**
2
+ * Shared element collection logic for interactive elements
3
+ * Used by both page-tools.ts (navigation caching) and content-tools.ts (findInteractive)
4
+ */
5
+ /**
6
+ * Collect all interactive elements from a page
7
+ * Includes links, buttons, and form inputs with semantic context
8
+ */
9
+ export async function collectInteractiveElements(page) {
10
+ const result = await page.evaluate(() => {
11
+ // @ts-ignore - This code runs in browser context
12
+ const results = [];
13
+ // @ts-ignore - window is available in browser context
14
+ const viewportHeight = window.innerHeight;
15
+ // @ts-ignore - window is available in browser context
16
+ const viewportWidth = window.innerWidth;
17
+ // Helper to find associated label for an input
18
+ const getLabel = (el) => {
19
+ if (el.getAttribute('aria-label'))
20
+ return el.getAttribute('aria-label');
21
+ if (el.id) {
22
+ // @ts-ignore
23
+ const label = document.querySelector(`label[for="${el.id}"]`);
24
+ if (label)
25
+ return label.textContent?.trim() || '';
26
+ }
27
+ let parent = el.parentElement;
28
+ while (parent) {
29
+ if (parent.tagName.toLowerCase() === 'label') {
30
+ return parent.textContent?.trim() || '';
31
+ }
32
+ parent = parent.parentElement;
33
+ }
34
+ return '';
35
+ };
36
+ // Helper to generate a unique selector for an element
37
+ const getUniqueSelector = (el, tag) => {
38
+ // 1. ID is always unique
39
+ if (el.id)
40
+ return `#${el.id}`;
41
+ // 2. For inputs, use name attribute
42
+ if (el.name && (tag === 'input' || tag === 'textarea' || tag === 'select')) {
43
+ return `[name="${el.name}"]`;
44
+ }
45
+ // 3. aria-label is stable and descriptive
46
+ const ariaLabel = el.getAttribute('aria-label');
47
+ if (ariaLabel && ariaLabel.length <= 40) {
48
+ return `${tag}[aria-label="${ariaLabel}"]`;
49
+ }
50
+ // 4. Try href for links (prefer short/relative hrefs)
51
+ if (tag === 'a' && el.href) {
52
+ const href = el.getAttribute('href');
53
+ if (href && href !== '#' && !href.startsWith('javascript:') && href.length <= 60) {
54
+ return `a[href="${href}"]`;
55
+ }
56
+ }
57
+ // 5. Try text-based selector using :has-text() (Puppeteer extension)
58
+ const text = el.textContent?.trim();
59
+ if (text && text.length > 0 && text.length <= 30) {
60
+ const escapedText = text.replace(/"/g, '\\"');
61
+ return `${tag}:has-text("${escapedText}")`;
62
+ }
63
+ // 6. Fall back to class-based selector (prefer short, non-hash classes)
64
+ if (el.className && typeof el.className === 'string') {
65
+ const classes = el.className.split(' ').filter((c) => c.length > 0 && c.length <= 20 && !c.includes('__'));
66
+ if (classes.length > 0) {
67
+ return `${tag}.${classes.slice(0, 2).join('.')}`;
68
+ }
69
+ }
70
+ // 7. Last resort: just the tag
71
+ return tag;
72
+ };
73
+ // Helper to get semantic context (nav, main, footer, etc.)
74
+ const getSemanticContext = (el) => {
75
+ let parent = el.parentElement;
76
+ while (parent) {
77
+ const tag = parent.tagName.toLowerCase();
78
+ if (tag === 'nav')
79
+ return 'nav';
80
+ if (tag === 'main')
81
+ return 'main';
82
+ if (tag === 'footer')
83
+ return 'footer';
84
+ if (tag === 'header')
85
+ return 'header';
86
+ if (tag === 'aside')
87
+ return 'aside';
88
+ if (tag === 'form')
89
+ return 'form';
90
+ if (parent.getAttribute('role') === 'navigation')
91
+ return 'nav';
92
+ if (parent.getAttribute('role') === 'main')
93
+ return 'main';
94
+ if (parent.getAttribute('role') === 'contentinfo')
95
+ return 'footer';
96
+ if (parent.getAttribute('role') === 'banner')
97
+ return 'header';
98
+ parent = parent.parentElement;
99
+ }
100
+ return 'main';
101
+ };
102
+ // Find all links
103
+ // @ts-ignore
104
+ document.querySelectorAll('a[href]').forEach((el) => {
105
+ // Skip aria-hidden elements
106
+ if (el.getAttribute('aria-hidden') === 'true')
107
+ return;
108
+ // @ts-ignore
109
+ const style = window.getComputedStyle(el);
110
+ if (style.display !== 'none' && style.visibility !== 'hidden') {
111
+ const rect = el.getBoundingClientRect();
112
+ const inViewport = rect.top >= 0 && rect.left >= 0 &&
113
+ rect.bottom <= viewportHeight && rect.right <= viewportWidth;
114
+ const text = el.textContent?.trim() || el.getAttribute('aria-label') || el.getAttribute('title') || '';
115
+ results.push({
116
+ type: 'link',
117
+ text,
118
+ href: el.href,
119
+ selector: getUniqueSelector(el, 'a'),
120
+ inViewport,
121
+ context: getSemanticContext(el),
122
+ x: rect.x,
123
+ y: rect.y,
124
+ width: rect.width,
125
+ height: rect.height,
126
+ });
127
+ }
128
+ });
129
+ // Find all buttons
130
+ // @ts-ignore
131
+ document.querySelectorAll('button, input[type="button"], input[type="submit"]').forEach((el) => {
132
+ // Skip aria-hidden elements
133
+ if (el.getAttribute('aria-hidden') === 'true')
134
+ return;
135
+ // @ts-ignore
136
+ const style = window.getComputedStyle(el);
137
+ if (style.display !== 'none' && style.visibility !== 'hidden') {
138
+ const rect = el.getBoundingClientRect();
139
+ const inViewport = rect.top >= 0 && rect.left >= 0 &&
140
+ rect.bottom <= viewportHeight && rect.right <= viewportWidth;
141
+ const text = el.textContent?.trim() || el.value || el.getAttribute('aria-label') || el.getAttribute('title') || '';
142
+ results.push({
143
+ type: 'button',
144
+ text,
145
+ href: '',
146
+ selector: getUniqueSelector(el, 'button'),
147
+ inViewport,
148
+ context: getSemanticContext(el),
149
+ x: rect.x,
150
+ y: rect.y,
151
+ width: rect.width,
152
+ height: rect.height,
153
+ });
154
+ }
155
+ });
156
+ // Find all inputs
157
+ // @ts-ignore
158
+ document.querySelectorAll('input:not([type="button"]):not([type="submit"]), textarea, select').forEach((el) => {
159
+ // Skip aria-hidden elements
160
+ if (el.getAttribute('aria-hidden') === 'true')
161
+ return;
162
+ // @ts-ignore
163
+ const style = window.getComputedStyle(el);
164
+ if (style.display !== 'none' && style.visibility !== 'hidden') {
165
+ const rect = el.getBoundingClientRect();
166
+ const inViewport = rect.top >= 0 && rect.left >= 0 &&
167
+ rect.bottom <= viewportHeight && rect.right <= viewportWidth;
168
+ const tag = el.tagName.toLowerCase();
169
+ let type = 'other';
170
+ if (tag === 'textarea') {
171
+ type = 'textarea';
172
+ }
173
+ else if (tag === 'select') {
174
+ type = 'select';
175
+ }
176
+ else if (tag === 'input') {
177
+ const inputType = el.type?.toLowerCase() || 'text';
178
+ if (['text', 'email', 'password', 'number', 'tel', 'url', 'search', 'checkbox', 'radio', 'file', 'date'].includes(inputType)) {
179
+ type = inputType;
180
+ }
181
+ }
182
+ const label = getLabel(el);
183
+ results.push({
184
+ type,
185
+ text: label || el.placeholder || el.name || el.id || '',
186
+ href: '',
187
+ selector: getUniqueSelector(el, tag),
188
+ inViewport,
189
+ context: getSemanticContext(el),
190
+ x: rect.x,
191
+ y: rect.y,
192
+ width: rect.width,
193
+ height: rect.height,
194
+ label,
195
+ required: el.required || false,
196
+ });
197
+ }
198
+ });
199
+ return { results, viewportHeight, viewportWidth };
200
+ });
201
+ return {
202
+ elements: result.results,
203
+ viewportHeight: result.viewportHeight,
204
+ viewportWidth: result.viewportWidth,
205
+ };
206
+ }
207
+ //# sourceMappingURL=element-collector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"element-collector.js","sourceRoot":"","sources":["../src/element-collector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Error Helper Functions
3
+ * Provides structured error responses with helpful suggestions
4
+ */
5
+ import type { CDPManager } from './cdp-manager.js';
6
+ import type { PuppeteerManager } from './puppeteer-manager.js';
7
+ import type { ChromeLauncher } from './chrome-launcher.js';
8
+ /**
9
+ * Set the ChromeLauncher reference for process liveness checks
10
+ * Called once during initialization from index.ts
11
+ */
12
+ export declare function setChromeLauncher(launcher: ChromeLauncher): void;
13
+ /**
14
+ * Check if browser automation is available and return error if not
15
+ * Returns an MCP error response or null if browser automation is available
16
+ */
17
+ export declare function checkBrowserAutomation(cdpManager: CDPManager, puppeteerManager: PuppeteerManager, toolName: string, debugPort?: number, requirePageLoad?: boolean): {
18
+ content: Array<{
19
+ type: 'text';
20
+ text: string;
21
+ }>;
22
+ isError?: boolean;
23
+ } | null;
24
+ /**
25
+ * Error category for automatic error handling
26
+ */
27
+ export interface ErrorCategory {
28
+ category: 'connection' | 'execution' | 'validation' | 'unknown';
29
+ suggestion: string;
30
+ }
31
+ /**
32
+ * Enhance error messages with helpful context and suggestions
33
+ */
34
+ export declare function enhanceErrorMessage(error: any, context: string): string;
35
+ /**
36
+ * Categorize errors to help determine appropriate recovery actions
37
+ */
38
+ export declare function categorizeError(error: any): ErrorCategory;
39
+ /**
40
+ * Create a detailed error response object for MCP tools
41
+ */
42
+ export declare function createDetailedErrorResponse(error: any, context: string): object;
43
+ //# sourceMappingURL=error-helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-helpers.d.ts","sourceRoot":"","sources":["../src/error-helpers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAM3D;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI,CAEhE;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,UAAU,EACtB,gBAAgB,EAAE,gBAAgB,EAClC,QAAQ,EAAE,MAAM,EAChB,SAAS,CAAC,EAAE,MAAM,EAClB,eAAe,CAAC,EAAE,OAAO,GACxB;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,IAAI,CAmC9E;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,YAAY,GAAG,WAAW,GAAG,YAAY,GAAG,SAAS,CAAC;IAChE,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CA8CvE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,GAAG,GAAG,aAAa,CA+CzD;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAW/E"}
@@ -0,0 +1,143 @@
1
+ /**
2
+ * Error Helper Functions
3
+ * Provides structured error responses with helpful suggestions
4
+ */
5
+ import { createErrorResponse } from './messages.js';
6
+ // Module-level reference to ChromeLauncher (set via setChromeLauncher)
7
+ let chromeLauncherRef = null;
8
+ /**
9
+ * Set the ChromeLauncher reference for process liveness checks
10
+ * Called once during initialization from index.ts
11
+ */
12
+ export function setChromeLauncher(launcher) {
13
+ chromeLauncherRef = launcher;
14
+ }
15
+ /**
16
+ * Check if browser automation is available and return error if not
17
+ * Returns an MCP error response or null if browser automation is available
18
+ */
19
+ export function checkBrowserAutomation(cdpManager, puppeteerManager, toolName, debugPort, requirePageLoad) {
20
+ // First, verify Chrome process is actually running (handles external kills)
21
+ if (chromeLauncherRef && debugPort !== undefined) {
22
+ if (!chromeLauncherRef.isRunning(debugPort)) {
23
+ return createErrorResponse('CHROME_NOT_RUNNING', {
24
+ port: debugPort,
25
+ message: `Chrome is not running on port ${debugPort}. Use \`launchChrome\` to start a browser.`
26
+ });
27
+ }
28
+ }
29
+ if (!cdpManager.isConnected()) {
30
+ return createErrorResponse('DEBUGGER_NOT_CONNECTED');
31
+ }
32
+ const runtimeType = cdpManager.getRuntimeType();
33
+ if (runtimeType === 'node') {
34
+ return createErrorResponse('NODEJS_NOT_SUPPORTED', { feature: toolName });
35
+ }
36
+ if (!puppeteerManager.isConnected()) {
37
+ return createErrorResponse('PUPPETEER_NOT_CONNECTED');
38
+ }
39
+ // Check if a page has been loaded (optional)
40
+ if (requirePageLoad) {
41
+ const page = puppeteerManager.getPage();
42
+ const url = page?.url();
43
+ if (!url || url === 'about:blank' || url === 'chrome://newtab/' || url === 'chrome://new-tab-page/') {
44
+ return createErrorResponse('PAGE_NOT_LOADED', { toolName });
45
+ }
46
+ }
47
+ return null;
48
+ }
49
+ /**
50
+ * Enhance error messages with helpful context and suggestions
51
+ */
52
+ export function enhanceErrorMessage(error, context) {
53
+ const errorStr = String(error?.message || error);
54
+ // Detect common error patterns and provide helpful guidance
55
+ if (errorStr.includes('Breakpoint at specified location already exists')) {
56
+ return `${context}: A breakpoint already exists at this location. Remove it first with removeBreakpoint(), or use listBreakpoints() to see all active breakpoints.`;
57
+ }
58
+ if (errorStr.includes('No inspectable targets')) {
59
+ return `${context}: Chrome debugging port is not ready yet. This can happen if Chrome hasn't fully started. Wait 2-3 seconds and try again, or use launchChrome() with auto-connect which will wait automatically.`;
60
+ }
61
+ if (errorStr.includes('Cannot find context with specified id')) {
62
+ return `${context}: The execution context is no longer valid. This happens after page navigation or reload. Get a fresh callFrameId with getCallStack().`;
63
+ }
64
+ if (errorStr.includes('Execution context was destroyed')) {
65
+ return `${context}: The page was reloaded or navigated away. Breakpoints may need to be re-set. Check getDebuggerStatus() and reconnect if needed.`;
66
+ }
67
+ if (errorStr.includes('Script not found')) {
68
+ return `${context}: The script hasn't been loaded by the runtime yet. Make sure the page has loaded and the script has executed. Use navigateTo() or reloadPage() to trigger script loading.`;
69
+ }
70
+ if (errorStr.includes('Session closed') || errorStr.includes('WebSocket')) {
71
+ return `${context}: The debugging session was closed. Reconnect using connectDebugger() or check if Chrome crashed with getChromeStatus().`;
72
+ }
73
+ if (errorStr.includes('Not connected to debugger')) {
74
+ return `${context}: No active debugger connection. Use connectDebugger() or launchChrome() with autoConnect to establish a connection first.`;
75
+ }
76
+ if (errorStr.includes('No active page')) {
77
+ return `${context}: No Puppeteer page is available. This feature requires Chrome (not Node.js). Ensure you're connected to Chrome and not a Node.js runtime.`;
78
+ }
79
+ if (errorStr.includes('Protocol error') && errorStr.includes('Target closed')) {
80
+ return `${context}: The browser tab was closed. Navigate to a new page or reconnect to Chrome.`;
81
+ }
82
+ if (errorStr.includes('timeout') || errorStr.includes('timed out')) {
83
+ return `${context}: Operation timed out. The page may be unresponsive or taking too long to load. Try increasing timeout values or checking page status.`;
84
+ }
85
+ // Generic fallback with context
86
+ return `${context}: ${errorStr}`;
87
+ }
88
+ /**
89
+ * Categorize errors to help determine appropriate recovery actions
90
+ */
91
+ export function categorizeError(error) {
92
+ const errorStr = String(error?.message || error);
93
+ // Connection-related errors
94
+ if (errorStr.includes('No inspectable') ||
95
+ errorStr.includes('Session closed') ||
96
+ errorStr.includes('Not connected') ||
97
+ errorStr.includes('WebSocket') ||
98
+ errorStr.includes('Target closed')) {
99
+ return {
100
+ category: 'connection',
101
+ suggestion: 'Check connection status with getDebuggerStatus() or getChromeStatus() and reconnect if needed',
102
+ };
103
+ }
104
+ // Execution context errors (state changed)
105
+ if (errorStr.includes('context') ||
106
+ errorStr.includes('destroyed') ||
107
+ errorStr.includes('No active page')) {
108
+ return {
109
+ category: 'execution',
110
+ suggestion: 'The page state has changed. Refresh breakpoints and get new call frames with getCallStack()',
111
+ };
112
+ }
113
+ // Validation errors (bad input or state)
114
+ if (errorStr.includes('Script not found') ||
115
+ errorStr.includes('already exists') ||
116
+ errorStr.includes('Invalid') ||
117
+ errorStr.includes('timeout')) {
118
+ return {
119
+ category: 'validation',
120
+ suggestion: 'Validate your input parameters and check the current debugger state with getDebuggerStatus()',
121
+ };
122
+ }
123
+ // Unknown error
124
+ return {
125
+ category: 'unknown',
126
+ suggestion: 'Check the error message for details and verify your debugger connection',
127
+ };
128
+ }
129
+ /**
130
+ * Create a detailed error response object for MCP tools
131
+ */
132
+ export function createDetailedErrorResponse(error, context) {
133
+ const enhanced = enhanceErrorMessage(error, context);
134
+ const category = categorizeError(error);
135
+ return {
136
+ success: false,
137
+ error: enhanced,
138
+ errorCategory: category.category,
139
+ suggestion: category.suggestion,
140
+ originalError: String(error?.message || error),
141
+ };
142
+ }
143
+ //# sourceMappingURL=error-helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-helpers.js","sourceRoot":"","sources":["../src/error-helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,160 @@
1
+ /**
2
+ * Console Message Formatting
3
+ *
4
+ * Formats console messages for different output modes:
5
+ * - Preview: Compact CSV for list/recent/search (minimal tokens)
6
+ * - Summary: Smart truncation for detail view (budget-constrained)
7
+ * - Full: Complete message with all data
8
+ */
9
+ /** Token budget for smart summary mode */
10
+ export declare const DEFAULT_SUMMARY_TOKEN_BUDGET = 100;
11
+ /**
12
+ * Estimate token count for a value (~4 chars per token)
13
+ */
14
+ export declare function estimateTokens(value: any): number;
15
+ /** Compact preview for list/recent/search (CSV output) */
16
+ export interface ConsoleMessagePreview {
17
+ id: string;
18
+ type: string;
19
+ preview: string;
20
+ tokens: number;
21
+ truncated: boolean;
22
+ }
23
+ /** Smart summary for detail view with token budget */
24
+ export interface ConsoleMessageSummary {
25
+ id: string;
26
+ type: string;
27
+ text: string;
28
+ textTruncated?: {
29
+ shown: number;
30
+ total: number;
31
+ };
32
+ args?: any[];
33
+ argsSummary?: string;
34
+ location?: {
35
+ url: string;
36
+ lineNumber: number;
37
+ columnNumber: number;
38
+ };
39
+ stackTrace?: {
40
+ shown: number;
41
+ total: number;
42
+ frames: any[];
43
+ };
44
+ timestamp: number;
45
+ _tokens: {
46
+ full: number;
47
+ returned: number;
48
+ };
49
+ }
50
+ /** Input for preview/summary creation (matches StoredConsoleMessage) */
51
+ interface MessageInput {
52
+ id: string;
53
+ type: string;
54
+ text: string;
55
+ args?: any[];
56
+ location?: {
57
+ url: string;
58
+ lineNumber: number;
59
+ columnNumber: number;
60
+ };
61
+ stackTrace?: any[];
62
+ timestamp: number;
63
+ }
64
+ /**
65
+ * Create a compact preview of a console message for list views.
66
+ * Returns minimal data with token count for the full message.
67
+ */
68
+ export declare function createMessagePreview(message: MessageInput): ConsoleMessagePreview;
69
+ /**
70
+ * Format message previews as CSV and calculate stats
71
+ */
72
+ export declare function formatPreviewsWithStats(previews: ConsoleMessagePreview[]): {
73
+ csv: string;
74
+ truncatedCount: number;
75
+ totalTokens: number;
76
+ };
77
+ /**
78
+ * Build complete list response text
79
+ */
80
+ export declare function buildListResponseText(headerText: string, csv: string, truncatedCount: number, totalTokens: number): string;
81
+ /**
82
+ * Create a smart summary of a console message within a token budget.
83
+ * Prioritizes: text > args > stack trace
84
+ */
85
+ export declare function createMessageSummary(message: MessageInput, tokenBudget?: number): ConsoleMessageSummary;
86
+ /**
87
+ * Generate hints for how to extract more data from a truncated summary
88
+ */
89
+ export declare function generateSummaryHints(summary: ConsoleMessageSummary): string;
90
+ /**
91
+ * Build summary response text
92
+ */
93
+ export declare function buildSummaryResponseText(message: {
94
+ id: string;
95
+ type: string;
96
+ }, summary: ConsoleMessageSummary, jsonBlock: string): string;
97
+ /** Result of text extraction */
98
+ export interface TextExtractionResult {
99
+ text: string;
100
+ extraction?: {
101
+ offset: number;
102
+ limit?: number;
103
+ total: number;
104
+ hasMore: boolean;
105
+ };
106
+ }
107
+ /** Result of args extraction */
108
+ export type ArgsExtractionResult = {
109
+ args: any[];
110
+ extraction: {
111
+ index: number;
112
+ total: number;
113
+ };
114
+ } | {
115
+ error: string;
116
+ };
117
+ /**
118
+ * Extract a portion of text from a message
119
+ */
120
+ export declare function extractTextPortion(text: string, offset?: number, limit?: number): TextExtractionResult;
121
+ /**
122
+ * Extract a specific argument by index
123
+ */
124
+ export declare function extractArgByIndex(args: any[] | undefined, index: number): ArgsExtractionResult;
125
+ /**
126
+ * Format console message summary as TOON (one property per line for readability)
127
+ */
128
+ export declare function formatSummaryAsToon(summary: ConsoleMessageSummary): string;
129
+ /**
130
+ * Format full message detail as TOON (one property per line for readability)
131
+ */
132
+ export declare function formatMessageDetailAsToon(data: {
133
+ id: string;
134
+ type: string;
135
+ text: string;
136
+ args?: any[];
137
+ location?: {
138
+ url: string;
139
+ lineNumber: number;
140
+ columnNumber: number;
141
+ };
142
+ stackTrace?: any[];
143
+ timestamp: number;
144
+ _tokens: {
145
+ full: number;
146
+ returned: number;
147
+ };
148
+ _textExtraction?: {
149
+ offset: number;
150
+ limit?: number;
151
+ total: number;
152
+ hasMore: boolean;
153
+ };
154
+ _argsExtraction?: {
155
+ index: number;
156
+ total: number;
157
+ };
158
+ }): string;
159
+ export {};
160
+ //# sourceMappingURL=console-formatter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"console-formatter.d.ts","sourceRoot":"","sources":["../../src/formatters/console-formatter.ts"],"names":[],"mappings":"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"}