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,150 @@
1
+ /**
2
+ * Console Monitor
3
+ * Tracks console messages from the browser or Node.js debugger
4
+ */
5
+ import { Page } from 'puppeteer-core';
6
+ import type { CDPConsoleMessage } from './types.js';
7
+ export interface StoredConsoleMessage {
8
+ id: string;
9
+ type: string;
10
+ text: string;
11
+ args: any[];
12
+ location?: {
13
+ url: string;
14
+ lineNumber: number;
15
+ columnNumber: number;
16
+ };
17
+ stackTrace?: any;
18
+ timestamp: number;
19
+ }
20
+ /**
21
+ * Function type for expanding CDP RemoteObject values
22
+ * Used to get full object details via Runtime.getProperties
23
+ * @param objectId - The CDP object ID to expand
24
+ * @param maxDepth - Maximum depth for nested object expansion
25
+ */
26
+ export type ValueExpander = (objectId: string, maxDepth: number) => Promise<any>;
27
+ export interface ConsoleLogStats {
28
+ totalMessages: number;
29
+ newMessages: number;
30
+ newErrors: number;
31
+ newWarnings: number;
32
+ }
33
+ export declare class ConsoleMonitor {
34
+ private messages;
35
+ private messageIdCounter;
36
+ private maxMessages;
37
+ private isMonitoring;
38
+ private messageCallbacks;
39
+ private valueExpander;
40
+ private consoleObjectDepth;
41
+ private lastSeenCount;
42
+ private lastActivityTime;
43
+ /**
44
+ * Set a function to expand object values using Runtime.getProperties
45
+ * This enables full object inspection for Node.js console messages
46
+ */
47
+ setValueExpander(expander: ValueExpander | null): void;
48
+ /**
49
+ * Set the maximum depth for expanding objects in console messages
50
+ * @param depth - Maximum nesting depth (default: 2)
51
+ */
52
+ setConsoleObjectDepth(depth: number): void;
53
+ /**
54
+ * Get the current console object depth setting
55
+ */
56
+ getConsoleObjectDepth(): number;
57
+ /**
58
+ * Start monitoring console messages on a page
59
+ */
60
+ startMonitoring(page: Page): void;
61
+ /**
62
+ * Stop monitoring
63
+ */
64
+ stopMonitoring(page: Page): void;
65
+ /**
66
+ * Add a page error (uncaught exception)
67
+ */
68
+ private addPageError;
69
+ /**
70
+ * Add a console message from CDP Runtime.consoleAPICalled event
71
+ * This is used for Node.js debugging where Puppeteer's page.on('console') isn't available
72
+ */
73
+ addCDPConsoleMessage(cdpMessage: CDPConsoleMessage): Promise<void>;
74
+ /**
75
+ * Enable monitoring without a Puppeteer page (for Node.js/CDP-only connections)
76
+ * Call this for Node.js debugging connections that will receive messages via addCDPConsoleMessage
77
+ */
78
+ enableWithoutPage(): void;
79
+ /**
80
+ * Serialize a JSHandle to a JSON-safe value with cycle detection
81
+ */
82
+ private serializeJSHandle;
83
+ /**
84
+ * Helper to serialize nested values
85
+ */
86
+ private serializeValue;
87
+ /**
88
+ * Add a console message
89
+ */
90
+ private addMessage;
91
+ /**
92
+ * Get all messages
93
+ */
94
+ getMessages(filter?: {
95
+ type?: string;
96
+ limit?: number;
97
+ offset?: number;
98
+ }): StoredConsoleMessage[];
99
+ /**
100
+ * Get a message by ID
101
+ */
102
+ getMessage(id: string): StoredConsoleMessage | undefined;
103
+ /**
104
+ * Clear all messages
105
+ */
106
+ clear(): void;
107
+ /**
108
+ * Get message count
109
+ */
110
+ getCount(type?: string): number;
111
+ /**
112
+ * Get log stats with delta tracking (new messages since last check)
113
+ * This updates the cursor so subsequent calls show only newer messages
114
+ */
115
+ getLogStats(): ConsoleLogStats;
116
+ /**
117
+ * Peek at log stats without updating the cursor
118
+ */
119
+ peekLogStats(): ConsoleLogStats;
120
+ /**
121
+ * Get the most recent N messages
122
+ */
123
+ getRecentMessages(count?: number, type?: string): StoredConsoleMessage[];
124
+ /**
125
+ * Get all messages without pagination
126
+ */
127
+ getAllMessages(type?: string): StoredConsoleMessage[];
128
+ /**
129
+ * Check if monitoring
130
+ */
131
+ isActive(): boolean;
132
+ /**
133
+ * Register a callback to be invoked when a console message is added
134
+ */
135
+ onMessage(callback: (message: StoredConsoleMessage) => void): void;
136
+ /**
137
+ * Remove a callback
138
+ */
139
+ removeMessageCallback(callback: (message: StoredConsoleMessage) => void): void;
140
+ /**
141
+ * Get the timestamp of the last console activity
142
+ */
143
+ getLastActivityTime(): number;
144
+ /**
145
+ * Check if there has been console activity within the specified duration
146
+ * @param withinMs - Duration in milliseconds to check for activity
147
+ */
148
+ hasRecentActivity(withinMs: number): boolean;
149
+ }
150
+ //# sourceMappingURL=console-monitor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"console-monitor.d.ts","sourceRoot":"","sources":["../src/console-monitor.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,IAAI,EAA4B,MAAM,gBAAgB,CAAC;AAChE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,QAAQ,CAAC,EAAE;QACT,GAAG,EAAE,MAAM,CAAC;QACZ,UAAU,EAAE,MAAM,CAAC;QACnB,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,UAAU,CAAC,EAAE,GAAG,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;GAKG;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;AAEjF,MAAM,WAAW,eAAe;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAA8B;IAC9C,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,gBAAgB,CAAsD;IAC9E,OAAO,CAAC,aAAa,CAA8B;IACnD,OAAO,CAAC,kBAAkB,CAAa;IACvC,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,gBAAgB,CAAsB;IAE9C;;;OAGG;IACH,gBAAgB,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI,GAAG,IAAI;IAItD;;;OAGG;IACH,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAI1C;;OAEG;IACH,qBAAqB,IAAI,MAAM;IAI/B;;OAEG;IACH,eAAe,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAkBjC;;OAEG;IACH,cAAc,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAMhC;;OAEG;IACH,OAAO,CAAC,YAAY;IA+BpB;;;OAGG;IACG,oBAAoB,CAAC,UAAU,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IA6FxE;;;OAGG;IACH,iBAAiB,IAAI,IAAI;IAIzB;;OAEG;YACW,iBAAiB;IAuE/B;;OAEG;YACW,cAAc;IAwC5B;;OAEG;YACW,UAAU;IA6CxB;;OAEG;IACH,WAAW,CAAC,MAAM,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,oBAAoB,EAAE;IAehG;;OAEG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,oBAAoB,GAAG,SAAS;IAIxD;;OAEG;IACH,KAAK,IAAI,IAAI;IAMb;;OAEG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM;IAO/B;;;OAGG;IACH,WAAW,IAAI,eAAe;IAiB9B;;OAEG;IACH,YAAY,IAAI,eAAe;IAY/B;;OAEG;IACH,iBAAiB,CAAC,KAAK,GAAE,MAAW,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,oBAAoB,EAAE;IAU5E;;OAEG;IACH,cAAc,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,oBAAoB,EAAE;IAOrD;;OAEG;IACH,QAAQ,IAAI,OAAO;IAInB;;OAEG;IACH,SAAS,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,oBAAoB,KAAK,IAAI,GAAG,IAAI;IAIlE;;OAEG;IACH,qBAAqB,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,oBAAoB,KAAK,IAAI,GAAG,IAAI;IAO9E;;OAEG;IACH,mBAAmB,IAAI,MAAM;IAI7B;;;OAGG;IACH,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;CAG7C"}
@@ -0,0 +1,454 @@
1
+ /**
2
+ * Console Monitor
3
+ * Tracks console messages from the browser or Node.js debugger
4
+ */
5
+ export class ConsoleMonitor {
6
+ messages = [];
7
+ messageIdCounter = 0;
8
+ maxMessages = 1000; // Keep last 1000 messages
9
+ isMonitoring = false;
10
+ messageCallbacks = [];
11
+ valueExpander = null;
12
+ consoleObjectDepth = 2; // Default depth for console object expansion
13
+ lastSeenCount = 0; // Cursor for tracking new messages since last check
14
+ lastActivityTime = Date.now();
15
+ /**
16
+ * Set a function to expand object values using Runtime.getProperties
17
+ * This enables full object inspection for Node.js console messages
18
+ */
19
+ setValueExpander(expander) {
20
+ this.valueExpander = expander;
21
+ }
22
+ /**
23
+ * Set the maximum depth for expanding objects in console messages
24
+ * @param depth - Maximum nesting depth (default: 2)
25
+ */
26
+ setConsoleObjectDepth(depth) {
27
+ this.consoleObjectDepth = Math.max(1, Math.min(depth, 10)); // Clamp between 1-10
28
+ }
29
+ /**
30
+ * Get the current console object depth setting
31
+ */
32
+ getConsoleObjectDepth() {
33
+ return this.consoleObjectDepth;
34
+ }
35
+ /**
36
+ * Start monitoring console messages on a page
37
+ */
38
+ startMonitoring(page) {
39
+ // Remove any existing listeners first to avoid duplicates
40
+ page.removeAllListeners('console');
41
+ page.removeAllListeners('pageerror');
42
+ // Attach console listener
43
+ page.on('console', (msg) => {
44
+ this.addMessage(msg);
45
+ });
46
+ // Attach uncaught exception listener
47
+ page.on('pageerror', (error) => {
48
+ this.addPageError(error);
49
+ });
50
+ this.isMonitoring = true;
51
+ }
52
+ /**
53
+ * Stop monitoring
54
+ */
55
+ stopMonitoring(page) {
56
+ page.removeAllListeners('console');
57
+ page.removeAllListeners('pageerror');
58
+ this.isMonitoring = false;
59
+ }
60
+ /**
61
+ * Add a page error (uncaught exception)
62
+ */
63
+ addPageError(error) {
64
+ const id = `console-${this.messageIdCounter++}`;
65
+ const storedMessage = {
66
+ id,
67
+ type: 'error',
68
+ text: `Uncaught ${error.message}`,
69
+ args: [],
70
+ stackTrace: error.stack ? error.stack.split('\n').map(line => ({ description: line })) : undefined,
71
+ timestamp: Date.now(),
72
+ };
73
+ this.messages.push(storedMessage);
74
+ this.lastActivityTime = Date.now();
75
+ // Keep only last N messages
76
+ if (this.messages.length > this.maxMessages) {
77
+ this.messages.shift();
78
+ }
79
+ // Notify callbacks
80
+ for (const callback of this.messageCallbacks) {
81
+ try {
82
+ callback(storedMessage);
83
+ }
84
+ catch (error) {
85
+ // Silently ignore callback errors to prevent disruption
86
+ console.error('[ConsoleMonitor] Error in message callback:', error);
87
+ }
88
+ }
89
+ }
90
+ /**
91
+ * Add a console message from CDP Runtime.consoleAPICalled event
92
+ * This is used for Node.js debugging where Puppeteer's page.on('console') isn't available
93
+ */
94
+ async addCDPConsoleMessage(cdpMessage) {
95
+ const id = `console-${this.messageIdCounter++}`;
96
+ // Convert CDP args to serialized format
97
+ const args = await Promise.all(cdpMessage.args.map(async (arg) => {
98
+ // Primitives have direct value
99
+ if (arg.value !== undefined) {
100
+ return arg.value;
101
+ }
102
+ // Unserializable values (Infinity, NaN, -0, bigint)
103
+ if (arg.unserializableValue) {
104
+ return arg.unserializableValue;
105
+ }
106
+ // If we have a value expander and an objectId, expand the object fully
107
+ if (this.valueExpander && arg.objectId) {
108
+ try {
109
+ return await this.valueExpander(arg.objectId, this.consoleObjectDepth);
110
+ }
111
+ catch {
112
+ // Fall through to preview/description if expansion fails
113
+ }
114
+ }
115
+ // Try to use preview for objects (if available)
116
+ if (arg.preview?.properties) {
117
+ const props = {};
118
+ for (const prop of arg.preview.properties) {
119
+ props[prop.name] = prop.value;
120
+ }
121
+ // Mark if there are more properties not shown
122
+ if (arg.preview.overflow) {
123
+ props['...'] = '(more properties)';
124
+ }
125
+ return props;
126
+ }
127
+ // Fall back to description (e.g., "Object", "Array(3)", "Map(2)")
128
+ if (arg.description) {
129
+ return arg.description;
130
+ }
131
+ return `[${arg.type}]`;
132
+ }));
133
+ // Build text from args (similar to how console.log joins arguments)
134
+ const text = args.map(arg => {
135
+ if (typeof arg === 'string')
136
+ return arg;
137
+ try {
138
+ return JSON.stringify(arg);
139
+ }
140
+ catch {
141
+ return String(arg);
142
+ }
143
+ }).join(' ');
144
+ // Extract location from stack trace if available
145
+ const location = cdpMessage.stackTrace?.callFrames[0]
146
+ ? {
147
+ url: cdpMessage.stackTrace.callFrames[0].url,
148
+ lineNumber: cdpMessage.stackTrace.callFrames[0].lineNumber,
149
+ columnNumber: cdpMessage.stackTrace.callFrames[0].columnNumber,
150
+ }
151
+ : undefined;
152
+ const storedMessage = {
153
+ id,
154
+ type: cdpMessage.type,
155
+ text,
156
+ args,
157
+ location,
158
+ stackTrace: cdpMessage.stackTrace,
159
+ timestamp: cdpMessage.timestamp,
160
+ };
161
+ this.messages.push(storedMessage);
162
+ this.lastActivityTime = Date.now();
163
+ // Keep only last N messages
164
+ if (this.messages.length > this.maxMessages) {
165
+ this.messages.shift();
166
+ }
167
+ // Notify callbacks
168
+ for (const callback of this.messageCallbacks) {
169
+ try {
170
+ callback(storedMessage);
171
+ }
172
+ catch (error) {
173
+ // Silently ignore callback errors to prevent disruption
174
+ console.error('[ConsoleMonitor] Error in message callback:', error);
175
+ }
176
+ }
177
+ }
178
+ /**
179
+ * Enable monitoring without a Puppeteer page (for Node.js/CDP-only connections)
180
+ * Call this for Node.js debugging connections that will receive messages via addCDPConsoleMessage
181
+ */
182
+ enableWithoutPage() {
183
+ this.isMonitoring = true;
184
+ }
185
+ /**
186
+ * Serialize a JSHandle to a JSON-safe value with cycle detection
187
+ */
188
+ async serializeJSHandle(handle, maxDepth = 3, seen = new WeakSet()) {
189
+ if (maxDepth <= 0) {
190
+ return '[Max depth reached]';
191
+ }
192
+ try {
193
+ // Try to get JSON value first
194
+ const jsonValue = await handle.jsonValue();
195
+ // Handle primitives
196
+ if (jsonValue === null || typeof jsonValue !== 'object') {
197
+ return jsonValue;
198
+ }
199
+ // Check for cycles
200
+ if (seen.has(jsonValue)) {
201
+ return '[Circular]';
202
+ }
203
+ seen.add(jsonValue);
204
+ // Handle arrays
205
+ if (Array.isArray(jsonValue)) {
206
+ return await Promise.all(jsonValue.slice(0, 100).map(async (item) => {
207
+ if (item && typeof item === 'object') {
208
+ return await this.serializeValue(item, maxDepth - 1, seen);
209
+ }
210
+ return item;
211
+ }));
212
+ }
213
+ // Handle objects
214
+ const result = {};
215
+ const keys = Object.keys(jsonValue).slice(0, 50); // Limit to 50 properties
216
+ for (const key of keys) {
217
+ const value = jsonValue[key];
218
+ if (value && typeof value === 'object') {
219
+ result[key] = await this.serializeValue(value, maxDepth - 1, seen);
220
+ }
221
+ else {
222
+ result[key] = value;
223
+ }
224
+ }
225
+ return result;
226
+ }
227
+ catch (error) {
228
+ // If serialization fails, try to get a description
229
+ try {
230
+ const properties = await handle.getProperties();
231
+ if (properties.size === 0) {
232
+ return handle.toString();
233
+ }
234
+ const result = {};
235
+ let count = 0;
236
+ for (const [key, valueHandle] of properties) {
237
+ if (count++ >= 10)
238
+ break; // Limit properties for complex objects
239
+ if (key.startsWith('Symbol('))
240
+ continue; // Skip symbols
241
+ try {
242
+ result[key] = await valueHandle.jsonValue();
243
+ }
244
+ catch {
245
+ result[key] = valueHandle.toString();
246
+ }
247
+ }
248
+ return result;
249
+ }
250
+ catch {
251
+ return handle.toString();
252
+ }
253
+ }
254
+ }
255
+ /**
256
+ * Helper to serialize nested values
257
+ */
258
+ async serializeValue(value, maxDepth, seen) {
259
+ if (maxDepth <= 0) {
260
+ return '[Max depth reached]';
261
+ }
262
+ if (value === null || value === undefined) {
263
+ return value;
264
+ }
265
+ if (typeof value !== 'object') {
266
+ return value;
267
+ }
268
+ if (seen.has(value)) {
269
+ return '[Circular]';
270
+ }
271
+ seen.add(value);
272
+ if (Array.isArray(value)) {
273
+ return value.slice(0, 100).map(item => {
274
+ if (item && typeof item === 'object') {
275
+ return this.serializeValue(item, maxDepth - 1, seen);
276
+ }
277
+ return item;
278
+ });
279
+ }
280
+ const result = {};
281
+ const keys = Object.keys(value).slice(0, 50);
282
+ for (const key of keys) {
283
+ const val = value[key];
284
+ if (val && typeof val === 'object') {
285
+ result[key] = await this.serializeValue(val, maxDepth - 1, seen);
286
+ }
287
+ else {
288
+ result[key] = val;
289
+ }
290
+ }
291
+ return result;
292
+ }
293
+ /**
294
+ * Add a console message
295
+ */
296
+ async addMessage(msg) {
297
+ const id = `console-${this.messageIdCounter++}`;
298
+ // Get message arguments with deep serialization
299
+ const args = await Promise.all(msg.args().map(async (arg) => {
300
+ return await this.serializeJSHandle(arg);
301
+ }));
302
+ const location = msg.location();
303
+ const storedMessage = {
304
+ id,
305
+ type: msg.type(),
306
+ text: msg.text(),
307
+ args,
308
+ location: location ? {
309
+ url: location.url || '',
310
+ lineNumber: location.lineNumber || 0,
311
+ columnNumber: location.columnNumber || 0,
312
+ } : undefined,
313
+ stackTrace: msg.stackTrace(),
314
+ timestamp: Date.now(),
315
+ };
316
+ this.messages.push(storedMessage);
317
+ this.lastActivityTime = Date.now();
318
+ // Keep only last N messages
319
+ if (this.messages.length > this.maxMessages) {
320
+ this.messages.shift();
321
+ }
322
+ // Notify callbacks
323
+ for (const callback of this.messageCallbacks) {
324
+ try {
325
+ callback(storedMessage);
326
+ }
327
+ catch (error) {
328
+ // Silently ignore callback errors to prevent disruption
329
+ console.error('[ConsoleMonitor] Error in message callback:', error);
330
+ }
331
+ }
332
+ }
333
+ /**
334
+ * Get all messages
335
+ */
336
+ getMessages(filter) {
337
+ let filtered = this.messages;
338
+ // Filter by type
339
+ if (filter?.type) {
340
+ filtered = filtered.filter(msg => msg.type === filter.type);
341
+ }
342
+ // Apply offset and limit
343
+ const offset = filter?.offset || 0;
344
+ const limit = filter?.limit || filtered.length;
345
+ return filtered.slice(offset, offset + limit);
346
+ }
347
+ /**
348
+ * Get a message by ID
349
+ */
350
+ getMessage(id) {
351
+ return this.messages.find(msg => msg.id === id);
352
+ }
353
+ /**
354
+ * Clear all messages
355
+ */
356
+ clear() {
357
+ this.messages = [];
358
+ this.lastSeenCount = 0; // Reset cursor when messages are cleared
359
+ // Don't reset messageIdCounter - prevents ID collisions after clear
360
+ }
361
+ /**
362
+ * Get message count
363
+ */
364
+ getCount(type) {
365
+ if (type) {
366
+ return this.messages.filter(msg => msg.type === type).length;
367
+ }
368
+ return this.messages.length;
369
+ }
370
+ /**
371
+ * Get log stats with delta tracking (new messages since last check)
372
+ * This updates the cursor so subsequent calls show only newer messages
373
+ */
374
+ getLogStats() {
375
+ const totalMessages = this.messages.length;
376
+ const newMessages = this.messages.slice(this.lastSeenCount);
377
+ const stats = {
378
+ totalMessages,
379
+ newMessages: newMessages.length,
380
+ newErrors: newMessages.filter(m => m.type === 'error').length,
381
+ newWarnings: newMessages.filter(m => m.type === 'warn' || m.type === 'warning').length,
382
+ };
383
+ // Update cursor to current position
384
+ this.lastSeenCount = totalMessages;
385
+ return stats;
386
+ }
387
+ /**
388
+ * Peek at log stats without updating the cursor
389
+ */
390
+ peekLogStats() {
391
+ const totalMessages = this.messages.length;
392
+ const newMessages = this.messages.slice(this.lastSeenCount);
393
+ return {
394
+ totalMessages,
395
+ newMessages: newMessages.length,
396
+ newErrors: newMessages.filter(m => m.type === 'error').length,
397
+ newWarnings: newMessages.filter(m => m.type === 'warn' || m.type === 'warning').length,
398
+ };
399
+ }
400
+ /**
401
+ * Get the most recent N messages
402
+ */
403
+ getRecentMessages(count = 50, type) {
404
+ let filtered = this.messages;
405
+ if (type) {
406
+ filtered = filtered.filter(msg => msg.type === type);
407
+ }
408
+ return filtered.slice(-count); // Last N messages
409
+ }
410
+ /**
411
+ * Get all messages without pagination
412
+ */
413
+ getAllMessages(type) {
414
+ if (type) {
415
+ return this.messages.filter(msg => msg.type === type);
416
+ }
417
+ return [...this.messages];
418
+ }
419
+ /**
420
+ * Check if monitoring
421
+ */
422
+ isActive() {
423
+ return this.isMonitoring;
424
+ }
425
+ /**
426
+ * Register a callback to be invoked when a console message is added
427
+ */
428
+ onMessage(callback) {
429
+ this.messageCallbacks.push(callback);
430
+ }
431
+ /**
432
+ * Remove a callback
433
+ */
434
+ removeMessageCallback(callback) {
435
+ const index = this.messageCallbacks.indexOf(callback);
436
+ if (index !== -1) {
437
+ this.messageCallbacks.splice(index, 1);
438
+ }
439
+ }
440
+ /**
441
+ * Get the timestamp of the last console activity
442
+ */
443
+ getLastActivityTime() {
444
+ return this.lastActivityTime;
445
+ }
446
+ /**
447
+ * Check if there has been console activity within the specified duration
448
+ * @param withinMs - Duration in milliseconds to check for activity
449
+ */
450
+ hasRecentActivity(withinMs) {
451
+ return Date.now() - this.lastActivityTime < withinMs;
452
+ }
453
+ }
454
+ //# sourceMappingURL=console-monitor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"console-monitor.js","sourceRoot":"","sources":["../src/console-monitor.ts"],"names":[],"mappings":"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"}