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.
- package/LICENSE +21 -0
- package/README.md +185 -0
- package/build/atomic-write.d.ts +28 -0
- package/build/atomic-write.d.ts.map +1 -0
- package/build/atomic-write.js +126 -0
- package/build/atomic-write.js.map +1 -0
- package/build/cdp-manager.d.ts +524 -0
- package/build/cdp-manager.d.ts.map +1 -0
- package/build/cdp-manager.js +1828 -0
- package/build/cdp-manager.js.map +1 -0
- package/build/cdp-manager.test.d.ts +6 -0
- package/build/cdp-manager.test.d.ts.map +1 -0
- package/build/cdp-manager.test.js +546 -0
- package/build/cdp-manager.test.js.map +1 -0
- package/build/chrome-launcher.d.ts +400 -0
- package/build/chrome-launcher.d.ts.map +1 -0
- package/build/chrome-launcher.js +1071 -0
- package/build/chrome-launcher.js.map +1 -0
- package/build/chrome-launcher.test.d.ts +11 -0
- package/build/chrome-launcher.test.d.ts.map +1 -0
- package/build/chrome-launcher.test.js +204 -0
- package/build/chrome-launcher.test.js.map +1 -0
- package/build/clickable-cache.d.ts +73 -0
- package/build/clickable-cache.d.ts.map +1 -0
- package/build/clickable-cache.js +90 -0
- package/build/clickable-cache.js.map +1 -0
- package/build/command-recorder.d.ts +401 -0
- package/build/command-recorder.d.ts.map +1 -0
- package/build/command-recorder.js +701 -0
- package/build/command-recorder.js.map +1 -0
- package/build/config.d.ts +390 -0
- package/build/config.d.ts.map +1 -0
- package/build/config.js +826 -0
- package/build/config.js.map +1 -0
- package/build/config.test.d.ts +2 -0
- package/build/config.test.d.ts.map +1 -0
- package/build/config.test.js +112 -0
- package/build/config.test.js.map +1 -0
- package/build/connection-manager.d.ts +159 -0
- package/build/connection-manager.d.ts.map +1 -0
- package/build/connection-manager.js +432 -0
- package/build/connection-manager.js.map +1 -0
- package/build/connection-manager.test.d.ts +11 -0
- package/build/connection-manager.test.d.ts.map +1 -0
- package/build/connection-manager.test.js +114 -0
- package/build/connection-manager.test.js.map +1 -0
- package/build/console-monitor.d.ts +150 -0
- package/build/console-monitor.d.ts.map +1 -0
- package/build/console-monitor.js +454 -0
- package/build/console-monitor.js.map +1 -0
- package/build/dashboard/bundle.js +1 -0
- package/build/dashboard/dashboard-client.d.ts +42 -0
- package/build/dashboard/dashboard-client.d.ts.map +1 -0
- package/build/dashboard/dashboard-client.js +184 -0
- package/build/dashboard/dashboard-client.js.map +1 -0
- package/build/dashboard/dashboard-hub.d.ts +50 -0
- package/build/dashboard/dashboard-hub.d.ts.map +1 -0
- package/build/dashboard/dashboard-hub.js +654 -0
- package/build/dashboard/dashboard-hub.js.map +1 -0
- package/build/dashboard/hub-lock.d.ts +16 -0
- package/build/dashboard/hub-lock.d.ts.map +1 -0
- package/build/dashboard/hub-lock.js +77 -0
- package/build/dashboard/hub-lock.js.map +1 -0
- package/build/dashboard/index.d.ts +25 -0
- package/build/dashboard/index.d.ts.map +1 -0
- package/build/dashboard/index.js +77 -0
- package/build/dashboard/index.js.map +1 -0
- package/build/dashboard/types.d.ts +83 -0
- package/build/dashboard/types.d.ts.map +1 -0
- package/build/dashboard/types.js +6 -0
- package/build/dashboard/types.js.map +1 -0
- package/build/debug-logger.d.ts +85 -0
- package/build/debug-logger.d.ts.map +1 -0
- package/build/debug-logger.js +195 -0
- package/build/debug-logger.js.map +1 -0
- package/build/debugger-aware-wrapper.d.ts +37 -0
- package/build/debugger-aware-wrapper.d.ts.map +1 -0
- package/build/debugger-aware-wrapper.js +128 -0
- package/build/debugger-aware-wrapper.js.map +1 -0
- package/build/dom-change-monitor.d.ts +92 -0
- package/build/dom-change-monitor.d.ts.map +1 -0
- package/build/dom-change-monitor.js +437 -0
- package/build/dom-change-monitor.js.map +1 -0
- package/build/element-collector.d.ts +16 -0
- package/build/element-collector.d.ts.map +1 -0
- package/build/element-collector.js +207 -0
- package/build/element-collector.js.map +1 -0
- package/build/error-helpers.d.ts +43 -0
- package/build/error-helpers.d.ts.map +1 -0
- package/build/error-helpers.js +143 -0
- package/build/error-helpers.js.map +1 -0
- package/build/formatters/console-formatter.d.ts +160 -0
- package/build/formatters/console-formatter.d.ts.map +1 -0
- package/build/formatters/console-formatter.js +338 -0
- package/build/formatters/console-formatter.js.map +1 -0
- package/build/helpers/parser-plugins.d.ts +44 -0
- package/build/helpers/parser-plugins.d.ts.map +1 -0
- package/build/helpers/parser-plugins.js +102 -0
- package/build/helpers/parser-plugins.js.map +1 -0
- package/build/helpers/paths.d.ts +79 -0
- package/build/helpers/paths.d.ts.map +1 -0
- package/build/helpers/paths.js +168 -0
- package/build/helpers/paths.js.map +1 -0
- package/build/helpers/process-liveness.d.ts +24 -0
- package/build/helpers/process-liveness.d.ts.map +1 -0
- package/build/helpers/process-liveness.js +36 -0
- package/build/helpers/process-liveness.js.map +1 -0
- package/build/helpers/process-liveness.test.d.ts +2 -0
- package/build/helpers/process-liveness.test.d.ts.map +1 -0
- package/build/helpers/process-liveness.test.js +40 -0
- package/build/helpers/process-liveness.test.js.map +1 -0
- package/build/helpers/sequence-tree.d.ts +27 -0
- package/build/helpers/sequence-tree.d.ts.map +1 -0
- package/build/helpers/sequence-tree.js +80 -0
- package/build/helpers/sequence-tree.js.map +1 -0
- package/build/helpers/sequence-tree.test.d.ts +2 -0
- package/build/helpers/sequence-tree.test.d.ts.map +1 -0
- package/build/helpers/sequence-tree.test.js +122 -0
- package/build/helpers/sequence-tree.test.js.map +1 -0
- package/build/index.d.ts +3 -0
- package/build/index.d.ts.map +1 -0
- package/build/index.js +2007 -0
- package/build/index.js.map +1 -0
- package/build/interaction-recorder.d.ts +214 -0
- package/build/interaction-recorder.d.ts.map +1 -0
- package/build/interaction-recorder.js +2007 -0
- package/build/interaction-recorder.js.map +1 -0
- package/build/issue-tracker.d.ts +107 -0
- package/build/issue-tracker.d.ts.map +1 -0
- package/build/issue-tracker.js +582 -0
- package/build/issue-tracker.js.map +1 -0
- package/build/issue-tracker.test.d.ts +2 -0
- package/build/issue-tracker.test.d.ts.map +1 -0
- package/build/issue-tracker.test.js +88 -0
- package/build/issue-tracker.test.js.map +1 -0
- package/build/launch-chrome-port.test.d.ts +14 -0
- package/build/launch-chrome-port.test.d.ts.map +1 -0
- package/build/launch-chrome-port.test.js +97 -0
- package/build/launch-chrome-port.test.js.map +1 -0
- package/build/log-processor/orchestrator.d.ts +32 -0
- package/build/log-processor/orchestrator.d.ts.map +1 -0
- package/build/log-processor/orchestrator.js +27 -0
- package/build/log-processor/orchestrator.js.map +1 -0
- package/build/logpoint-execution-tracker.d.ts +57 -0
- package/build/logpoint-execution-tracker.d.ts.map +1 -0
- package/build/logpoint-execution-tracker.js +112 -0
- package/build/logpoint-execution-tracker.js.map +1 -0
- package/build/mcp-supervisor.d.ts +3 -0
- package/build/mcp-supervisor.d.ts.map +1 -0
- package/build/mcp-supervisor.js +211 -0
- package/build/mcp-supervisor.js.map +1 -0
- package/build/messages.d.ts +165 -0
- package/build/messages.d.ts.map +1 -0
- package/build/messages.js +574 -0
- package/build/messages.js.map +1 -0
- package/build/network-monitor.d.ts +172 -0
- package/build/network-monitor.d.ts.map +1 -0
- package/build/network-monitor.js +350 -0
- package/build/network-monitor.js.map +1 -0
- package/build/overlays.d.ts +49 -0
- package/build/overlays.d.ts.map +1 -0
- package/build/overlays.js +409 -0
- package/build/overlays.js.map +1 -0
- package/build/persistent-profiles.test.d.ts +15 -0
- package/build/persistent-profiles.test.d.ts.map +1 -0
- package/build/persistent-profiles.test.js +470 -0
- package/build/persistent-profiles.test.js.map +1 -0
- package/build/port-reserver.d.ts +32 -0
- package/build/port-reserver.d.ts.map +1 -0
- package/build/port-reserver.js +118 -0
- package/build/port-reserver.js.map +1 -0
- package/build/puppeteer-manager.d.ts +47 -0
- package/build/puppeteer-manager.d.ts.map +1 -0
- package/build/puppeteer-manager.js +116 -0
- package/build/puppeteer-manager.js.map +1 -0
- package/build/recording-coverage.test.d.ts +12 -0
- package/build/recording-coverage.test.d.ts.map +1 -0
- package/build/recording-coverage.test.js +72 -0
- package/build/recording-coverage.test.js.map +1 -0
- package/build/reference-validator.d.ts +47 -0
- package/build/reference-validator.d.ts.map +1 -0
- package/build/reference-validator.js +86 -0
- package/build/reference-validator.js.map +1 -0
- package/build/reference-validator.test.d.ts +5 -0
- package/build/reference-validator.test.d.ts.map +1 -0
- package/build/reference-validator.test.js +243 -0
- package/build/reference-validator.test.js.map +1 -0
- package/build/replay-cursor.d.ts +27 -0
- package/build/replay-cursor.d.ts.map +1 -0
- package/build/replay-cursor.js +240 -0
- package/build/replay-cursor.js.map +1 -0
- package/build/runners/docker-compose-runner.d.ts +69 -0
- package/build/runners/docker-compose-runner.d.ts.map +1 -0
- package/build/runners/docker-compose-runner.js +438 -0
- package/build/runners/docker-compose-runner.js.map +1 -0
- package/build/runners/docker-runner.d.ts +65 -0
- package/build/runners/docker-runner.d.ts.map +1 -0
- package/build/runners/docker-runner.js +414 -0
- package/build/runners/docker-runner.js.map +1 -0
- package/build/runners/index.d.ts +19 -0
- package/build/runners/index.d.ts.map +1 -0
- package/build/runners/index.js +35 -0
- package/build/runners/index.js.map +1 -0
- package/build/runners/native-runner.d.ts +95 -0
- package/build/runners/native-runner.d.ts.map +1 -0
- package/build/runners/native-runner.js +370 -0
- package/build/runners/native-runner.js.map +1 -0
- package/build/runners/types.d.ts +147 -0
- package/build/runners/types.d.ts.map +1 -0
- package/build/runners/types.js +25 -0
- package/build/runners/types.js.map +1 -0
- package/build/self-restart.d.ts +12 -0
- package/build/self-restart.d.ts.map +1 -0
- package/build/self-restart.js +41 -0
- package/build/self-restart.js.map +1 -0
- package/build/self-restart.test.d.ts +2 -0
- package/build/self-restart.test.d.ts.map +1 -0
- package/build/self-restart.test.js +34 -0
- package/build/self-restart.test.js.map +1 -0
- package/build/server-claims.d.ts +161 -0
- package/build/server-claims.d.ts.map +1 -0
- package/build/server-claims.js +382 -0
- package/build/server-claims.js.map +1 -0
- package/build/server-claims.test.d.ts +2 -0
- package/build/server-claims.test.d.ts.map +1 -0
- package/build/server-claims.test.js +197 -0
- package/build/server-claims.test.js.map +1 -0
- package/build/server-manager.d.ts +438 -0
- package/build/server-manager.d.ts.map +1 -0
- package/build/server-manager.js +1674 -0
- package/build/server-manager.js.map +1 -0
- package/build/server-manager.test.d.ts +17 -0
- package/build/server-manager.test.d.ts.map +1 -0
- package/build/server-manager.test.js +122 -0
- package/build/server-manager.test.js.map +1 -0
- package/build/server-ownership.test.d.ts +2 -0
- package/build/server-ownership.test.d.ts.map +1 -0
- package/build/server-ownership.test.js +238 -0
- package/build/server-ownership.test.js.map +1 -0
- package/build/server-watcher.d.ts +21 -0
- package/build/server-watcher.d.ts.map +1 -0
- package/build/server-watcher.js +105 -0
- package/build/server-watcher.js.map +1 -0
- package/build/session-detector.d.ts +47 -0
- package/build/session-detector.d.ts.map +1 -0
- package/build/session-detector.js +229 -0
- package/build/session-detector.js.map +1 -0
- package/build/session-detector.test.d.ts +9 -0
- package/build/session-detector.test.d.ts.map +1 -0
- package/build/session-detector.test.js +45 -0
- package/build/session-detector.test.js.map +1 -0
- package/build/sourcemap-handler.d.ts +114 -0
- package/build/sourcemap-handler.d.ts.map +1 -0
- package/build/sourcemap-handler.js +479 -0
- package/build/sourcemap-handler.js.map +1 -0
- package/build/supervisor/child-manager.d.ts +43 -0
- package/build/supervisor/child-manager.d.ts.map +1 -0
- package/build/supervisor/child-manager.js +148 -0
- package/build/supervisor/child-manager.js.map +1 -0
- package/build/supervisor/child-manager.test.d.ts +2 -0
- package/build/supervisor/child-manager.test.d.ts.map +1 -0
- package/build/supervisor/child-manager.test.js +107 -0
- package/build/supervisor/child-manager.test.js.map +1 -0
- package/build/supervisor/client-watcher.d.ts +48 -0
- package/build/supervisor/client-watcher.d.ts.map +1 -0
- package/build/supervisor/client-watcher.js +186 -0
- package/build/supervisor/client-watcher.js.map +1 -0
- package/build/supervisor/client-watcher.test.d.ts +2 -0
- package/build/supervisor/client-watcher.test.d.ts.map +1 -0
- package/build/supervisor/client-watcher.test.js +121 -0
- package/build/supervisor/client-watcher.test.js.map +1 -0
- package/build/supervisor/idle-config.d.ts +30 -0
- package/build/supervisor/idle-config.d.ts.map +1 -0
- package/build/supervisor/idle-config.js +76 -0
- package/build/supervisor/idle-config.js.map +1 -0
- package/build/supervisor/idle-config.test.d.ts +2 -0
- package/build/supervisor/idle-config.test.d.ts.map +1 -0
- package/build/supervisor/idle-config.test.js +119 -0
- package/build/supervisor/idle-config.test.js.map +1 -0
- package/build/supervisor/ndjson-reader.d.ts +47 -0
- package/build/supervisor/ndjson-reader.d.ts.map +1 -0
- package/build/supervisor/ndjson-reader.js +75 -0
- package/build/supervisor/ndjson-reader.js.map +1 -0
- package/build/supervisor/ndjson-reader.test.d.ts +2 -0
- package/build/supervisor/ndjson-reader.test.d.ts.map +1 -0
- package/build/supervisor/ndjson-reader.test.js +92 -0
- package/build/supervisor/ndjson-reader.test.js.map +1 -0
- package/build/supervisor/pidfile.d.ts +11 -0
- package/build/supervisor/pidfile.d.ts.map +1 -0
- package/build/supervisor/pidfile.js +29 -0
- package/build/supervisor/pidfile.js.map +1 -0
- package/build/supervisor/pidfile.test.d.ts +8 -0
- package/build/supervisor/pidfile.test.d.ts.map +1 -0
- package/build/supervisor/pidfile.test.js +46 -0
- package/build/supervisor/pidfile.test.js.map +1 -0
- package/build/supervisor/restart-coordinator.d.ts +73 -0
- package/build/supervisor/restart-coordinator.d.ts.map +1 -0
- package/build/supervisor/restart-coordinator.js +300 -0
- package/build/supervisor/restart-coordinator.js.map +1 -0
- package/build/supervisor/restart-coordinator.test.d.ts +2 -0
- package/build/supervisor/restart-coordinator.test.d.ts.map +1 -0
- package/build/supervisor/restart-coordinator.test.js +434 -0
- package/build/supervisor/restart-coordinator.test.js.map +1 -0
- package/build/test-support/fake-execute-tool-call.d.ts +11 -0
- package/build/test-support/fake-execute-tool-call.d.ts.map +1 -0
- package/build/test-support/fake-execute-tool-call.js +19 -0
- package/build/test-support/fake-execute-tool-call.js.map +1 -0
- package/build/tool-error.d.ts +14 -0
- package/build/tool-error.d.ts.map +1 -0
- package/build/tool-error.js +18 -0
- package/build/tool-error.js.map +1 -0
- package/build/tool-response.d.ts +293 -0
- package/build/tool-response.d.ts.map +1 -0
- package/build/tool-response.js +365 -0
- package/build/tool-response.js.map +1 -0
- package/build/tools/assert-tools.d.ts +62 -0
- package/build/tools/assert-tools.d.ts.map +1 -0
- package/build/tools/assert-tools.js +330 -0
- package/build/tools/assert-tools.js.map +1 -0
- package/build/tools/breakpoint-await-abort.test.d.ts +2 -0
- package/build/tools/breakpoint-await-abort.test.d.ts.map +1 -0
- package/build/tools/breakpoint-await-abort.test.js +124 -0
- package/build/tools/breakpoint-await-abort.test.js.map +1 -0
- package/build/tools/breakpoint-tools.d.ts +99 -0
- package/build/tools/breakpoint-tools.d.ts.map +1 -0
- package/build/tools/breakpoint-tools.js +1197 -0
- package/build/tools/breakpoint-tools.js.map +1 -0
- package/build/tools/config-tools.d.ts +58 -0
- package/build/tools/config-tools.d.ts.map +1 -0
- package/build/tools/config-tools.js +180 -0
- package/build/tools/config-tools.js.map +1 -0
- package/build/tools/connection-routing.test.d.ts +12 -0
- package/build/tools/connection-routing.test.d.ts.map +1 -0
- package/build/tools/connection-routing.test.js +206 -0
- package/build/tools/connection-routing.test.js.map +1 -0
- package/build/tools/console-tools.d.ts +84 -0
- package/build/tools/console-tools.d.ts.map +1 -0
- package/build/tools/console-tools.js +241 -0
- package/build/tools/console-tools.js.map +1 -0
- package/build/tools/content-tools.d.ts +74 -0
- package/build/tools/content-tools.d.ts.map +1 -0
- package/build/tools/content-tools.js +582 -0
- package/build/tools/content-tools.js.map +1 -0
- package/build/tools/dashboard-tools.d.ts +38 -0
- package/build/tools/dashboard-tools.d.ts.map +1 -0
- package/build/tools/dashboard-tools.js +123 -0
- package/build/tools/dashboard-tools.js.map +1 -0
- package/build/tools/dom-tools.d.ts +41 -0
- package/build/tools/dom-tools.d.ts.map +1 -0
- package/build/tools/dom-tools.js +277 -0
- package/build/tools/dom-tools.js.map +1 -0
- package/build/tools/download-tools.d.ts +55 -0
- package/build/tools/download-tools.d.ts.map +1 -0
- package/build/tools/download-tools.js +280 -0
- package/build/tools/download-tools.js.map +1 -0
- package/build/tools/execution-tools.d.ts +40 -0
- package/build/tools/execution-tools.d.ts.map +1 -0
- package/build/tools/execution-tools.js +121 -0
- package/build/tools/execution-tools.js.map +1 -0
- package/build/tools/input-abort.test.d.ts +2 -0
- package/build/tools/input-abort.test.d.ts.map +1 -0
- package/build/tools/input-abort.test.js +227 -0
- package/build/tools/input-abort.test.js.map +1 -0
- package/build/tools/input-ambiguous-selector.test.d.ts +2 -0
- package/build/tools/input-ambiguous-selector.test.d.ts.map +1 -0
- package/build/tools/input-ambiguous-selector.test.js +34 -0
- package/build/tools/input-ambiguous-selector.test.js.map +1 -0
- package/build/tools/input-tools.d.ts +168 -0
- package/build/tools/input-tools.d.ts.map +1 -0
- package/build/tools/input-tools.js +1397 -0
- package/build/tools/input-tools.js.map +1 -0
- package/build/tools/inspection-tools.d.ts +112 -0
- package/build/tools/inspection-tools.d.ts.map +1 -0
- package/build/tools/inspection-tools.js +637 -0
- package/build/tools/inspection-tools.js.map +1 -0
- package/build/tools/interpolation.d.ts +30 -0
- package/build/tools/interpolation.d.ts.map +1 -0
- package/build/tools/interpolation.js +143 -0
- package/build/tools/interpolation.js.map +1 -0
- package/build/tools/issues-abort-hygiene.test.d.ts +2 -0
- package/build/tools/issues-abort-hygiene.test.d.ts.map +1 -0
- package/build/tools/issues-abort-hygiene.test.js +79 -0
- package/build/tools/issues-abort-hygiene.test.js.map +1 -0
- package/build/tools/issues-tools.d.ts +98 -0
- package/build/tools/issues-tools.d.ts.map +1 -0
- package/build/tools/issues-tools.js +821 -0
- package/build/tools/issues-tools.js.map +1 -0
- package/build/tools/issues-tools.test.d.ts +8 -0
- package/build/tools/issues-tools.test.d.ts.map +1 -0
- package/build/tools/issues-tools.test.js +184 -0
- package/build/tools/issues-tools.test.js.map +1 -0
- package/build/tools/modal-tools.d.ts +73 -0
- package/build/tools/modal-tools.d.ts.map +1 -0
- package/build/tools/modal-tools.js +161 -0
- package/build/tools/modal-tools.js.map +1 -0
- package/build/tools/network-tools.d.ts +72 -0
- package/build/tools/network-tools.d.ts.map +1 -0
- package/build/tools/network-tools.js +432 -0
- package/build/tools/network-tools.js.map +1 -0
- package/build/tools/page-tools.d.ts +78 -0
- package/build/tools/page-tools.d.ts.map +1 -0
- package/build/tools/page-tools.js +255 -0
- package/build/tools/page-tools.js.map +1 -0
- package/build/tools/plugin-tools.d.ts +16 -0
- package/build/tools/plugin-tools.d.ts.map +1 -0
- package/build/tools/plugin-tools.js +17 -0
- package/build/tools/plugin-tools.js.map +1 -0
- package/build/tools/replay-abort.test.d.ts +2 -0
- package/build/tools/replay-abort.test.d.ts.map +1 -0
- package/build/tools/replay-abort.test.js +259 -0
- package/build/tools/replay-abort.test.js.map +1 -0
- package/build/tools/replay-add-conditional.test.d.ts +2 -0
- package/build/tools/replay-add-conditional.test.d.ts.map +1 -0
- package/build/tools/replay-add-conditional.test.js +205 -0
- package/build/tools/replay-add-conditional.test.js.map +1 -0
- package/build/tools/replay-background-run.test.d.ts +2 -0
- package/build/tools/replay-background-run.test.d.ts.map +1 -0
- package/build/tools/replay-background-run.test.js +176 -0
- package/build/tools/replay-background-run.test.js.map +1 -0
- package/build/tools/replay-capture-variables.test.d.ts +2 -0
- package/build/tools/replay-capture-variables.test.d.ts.map +1 -0
- package/build/tools/replay-capture-variables.test.js +331 -0
- package/build/tools/replay-capture-variables.test.js.map +1 -0
- package/build/tools/replay-conditional-idb-and-launch.test.d.ts +11 -0
- package/build/tools/replay-conditional-idb-and-launch.test.d.ts.map +1 -0
- package/build/tools/replay-conditional-idb-and-launch.test.js +429 -0
- package/build/tools/replay-conditional-idb-and-launch.test.js.map +1 -0
- package/build/tools/replay-conditional-timeout.test.d.ts +14 -0
- package/build/tools/replay-conditional-timeout.test.d.ts.map +1 -0
- package/build/tools/replay-conditional-timeout.test.js +126 -0
- package/build/tools/replay-conditional-timeout.test.js.map +1 -0
- package/build/tools/replay-declare.test.d.ts +2 -0
- package/build/tools/replay-declare.test.d.ts.map +1 -0
- package/build/tools/replay-declare.test.js +106 -0
- package/build/tools/replay-declare.test.js.map +1 -0
- package/build/tools/replay-declared-browser-cleanup.test.d.ts +2 -0
- package/build/tools/replay-declared-browser-cleanup.test.d.ts.map +1 -0
- package/build/tools/replay-declared-browser-cleanup.test.js +103 -0
- package/build/tools/replay-declared-browser-cleanup.test.js.map +1 -0
- package/build/tools/replay-declared-profile.test.d.ts +2 -0
- package/build/tools/replay-declared-profile.test.d.ts.map +1 -0
- package/build/tools/replay-declared-profile.test.js +116 -0
- package/build/tools/replay-declared-profile.test.js.map +1 -0
- package/build/tools/replay-executor.d.ts +556 -0
- package/build/tools/replay-executor.d.ts.map +1 -0
- package/build/tools/replay-executor.js +2347 -0
- package/build/tools/replay-executor.js.map +1 -0
- package/build/tools/replay-folder-save.test.d.ts +2 -0
- package/build/tools/replay-folder-save.test.d.ts.map +1 -0
- package/build/tools/replay-folder-save.test.js +63 -0
- package/build/tools/replay-folder-save.test.js.map +1 -0
- package/build/tools/replay-formatters.d.ts +148 -0
- package/build/tools/replay-formatters.d.ts.map +1 -0
- package/build/tools/replay-formatters.js +856 -0
- package/build/tools/replay-formatters.js.map +1 -0
- package/build/tools/replay-kill-chrome-on-finish.test.d.ts +2 -0
- package/build/tools/replay-kill-chrome-on-finish.test.d.ts.map +1 -0
- package/build/tools/replay-kill-chrome-on-finish.test.js +175 -0
- package/build/tools/replay-kill-chrome-on-finish.test.js.map +1 -0
- package/build/tools/replay-multi-connection.test.d.ts +2 -0
- package/build/tools/replay-multi-connection.test.d.ts.map +1 -0
- package/build/tools/replay-multi-connection.test.js +547 -0
- package/build/tools/replay-multi-connection.test.js.map +1 -0
- package/build/tools/replay-output-and-record-options.test.d.ts +2 -0
- package/build/tools/replay-output-and-record-options.test.d.ts.map +1 -0
- package/build/tools/replay-output-and-record-options.test.js +240 -0
- package/build/tools/replay-output-and-record-options.test.js.map +1 -0
- package/build/tools/replay-production-error-shape.test.d.ts +7 -0
- package/build/tools/replay-production-error-shape.test.d.ts.map +1 -0
- package/build/tools/replay-production-error-shape.test.js +93 -0
- package/build/tools/replay-production-error-shape.test.js.map +1 -0
- package/build/tools/replay-rebase.test.d.ts +2 -0
- package/build/tools/replay-rebase.test.d.ts.map +1 -0
- package/build/tools/replay-rebase.test.js +58 -0
- package/build/tools/replay-rebase.test.js.map +1 -0
- package/build/tools/replay-retry-classification.test.d.ts +9 -0
- package/build/tools/replay-retry-classification.test.d.ts.map +1 -0
- package/build/tools/replay-retry-classification.test.js +57 -0
- package/build/tools/replay-retry-classification.test.js.map +1 -0
- package/build/tools/replay-run-registry.d.ts +55 -0
- package/build/tools/replay-run-registry.d.ts.map +1 -0
- package/build/tools/replay-run-registry.js +65 -0
- package/build/tools/replay-run-registry.js.map +1 -0
- package/build/tools/replay-sequence-reload.test.d.ts +2 -0
- package/build/tools/replay-sequence-reload.test.d.ts.map +1 -0
- package/build/tools/replay-sequence-reload.test.js +82 -0
- package/build/tools/replay-sequence-reload.test.js.map +1 -0
- package/build/tools/replay-socket-scope.test.d.ts +2 -0
- package/build/tools/replay-socket-scope.test.d.ts.map +1 -0
- package/build/tools/replay-socket-scope.test.js +75 -0
- package/build/tools/replay-socket-scope.test.js.map +1 -0
- package/build/tools/replay-step-connection.test.d.ts +2 -0
- package/build/tools/replay-step-connection.test.d.ts.map +1 -0
- package/build/tools/replay-step-connection.test.js +292 -0
- package/build/tools/replay-step-connection.test.js.map +1 -0
- package/build/tools/replay-step-timeout.test.d.ts +2 -0
- package/build/tools/replay-step-timeout.test.d.ts.map +1 -0
- package/build/tools/replay-step-timeout.test.js +204 -0
- package/build/tools/replay-step-timeout.test.js.map +1 -0
- package/build/tools/replay-tags.test.d.ts +2 -0
- package/build/tools/replay-tags.test.d.ts.map +1 -0
- package/build/tools/replay-tags.test.js +99 -0
- package/build/tools/replay-tags.test.js.map +1 -0
- package/build/tools/replay-teardown-and-foreach.test.d.ts +13 -0
- package/build/tools/replay-teardown-and-foreach.test.d.ts.map +1 -0
- package/build/tools/replay-teardown-and-foreach.test.js +318 -0
- package/build/tools/replay-teardown-and-foreach.test.js.map +1 -0
- package/build/tools/replay-tool-name-validation.test.d.ts +2 -0
- package/build/tools/replay-tool-name-validation.test.d.ts.map +1 -0
- package/build/tools/replay-tool-name-validation.test.js +280 -0
- package/build/tools/replay-tool-name-validation.test.js.map +1 -0
- package/build/tools/replay-tools.d.ts +288 -0
- package/build/tools/replay-tools.d.ts.map +1 -0
- package/build/tools/replay-tools.js +2994 -0
- package/build/tools/replay-tools.js.map +1 -0
- package/build/tools/request-abort.test.d.ts +2 -0
- package/build/tools/request-abort.test.d.ts.map +1 -0
- package/build/tools/request-abort.test.js +130 -0
- package/build/tools/request-abort.test.js.map +1 -0
- package/build/tools/request-tools.d.ts +56 -0
- package/build/tools/request-tools.d.ts.map +1 -0
- package/build/tools/request-tools.js +174 -0
- package/build/tools/request-tools.js.map +1 -0
- package/build/tools/screenshot-tools.d.ts +135 -0
- package/build/tools/screenshot-tools.d.ts.map +1 -0
- package/build/tools/screenshot-tools.js +636 -0
- package/build/tools/screenshot-tools.js.map +1 -0
- package/build/tools/server-tools.d.ts +88 -0
- package/build/tools/server-tools.d.ts.map +1 -0
- package/build/tools/server-tools.js +485 -0
- package/build/tools/server-tools.js.map +1 -0
- package/build/tools/source-tools.d.ts +46 -0
- package/build/tools/source-tools.d.ts.map +1 -0
- package/build/tools/source-tools.js +47 -0
- package/build/tools/source-tools.js.map +1 -0
- package/build/tools/storage-tools.d.ts +141 -0
- package/build/tools/storage-tools.d.ts.map +1 -0
- package/build/tools/storage-tools.js +894 -0
- package/build/tools/storage-tools.js.map +1 -0
- package/build/tools/storage-tools.test.d.ts +13 -0
- package/build/tools/storage-tools.test.d.ts.map +1 -0
- package/build/tools/storage-tools.test.js +707 -0
- package/build/tools/storage-tools.test.js.map +1 -0
- package/build/tools/tab-tools.d.ts +42 -0
- package/build/tools/tab-tools.d.ts.map +1 -0
- package/build/tools/tab-tools.js +296 -0
- package/build/tools/tab-tools.js.map +1 -0
- package/build/tools/wait-tools.d.ts +85 -0
- package/build/tools/wait-tools.d.ts.map +1 -0
- package/build/tools/wait-tools.js +236 -0
- package/build/tools/wait-tools.js.map +1 -0
- package/build/tools/wait-tools.test.d.ts +9 -0
- package/build/tools/wait-tools.test.d.ts.map +1 -0
- package/build/tools/wait-tools.test.js +193 -0
- package/build/tools/wait-tools.test.js.map +1 -0
- package/build/types.d.ts +133 -0
- package/build/types.d.ts.map +1 -0
- package/build/types.js +5 -0
- package/build/types.js.map +1 -0
- package/build/ui-verifier.d.ts +88 -0
- package/build/ui-verifier.d.ts.map +1 -0
- package/build/ui-verifier.js +540 -0
- package/build/ui-verifier.js.map +1 -0
- package/build/utils/abort.d.ts +68 -0
- package/build/utils/abort.d.ts.map +1 -0
- package/build/utils/abort.js +159 -0
- package/build/utils/abort.js.map +1 -0
- package/build/utils/abort.test.d.ts +2 -0
- package/build/utils/abort.test.d.ts.map +1 -0
- package/build/utils/abort.test.js +174 -0
- package/build/utils/abort.test.js.map +1 -0
- package/build/utils/modal-detection-core.d.ts +150 -0
- package/build/utils/modal-detection-core.d.ts.map +1 -0
- package/build/utils/modal-detection-core.js +332 -0
- package/build/utils/modal-detection-core.js.map +1 -0
- package/build/utils/modal-detection-core.test.d.ts +5 -0
- package/build/utils/modal-detection-core.test.d.ts.map +1 -0
- package/build/utils/modal-detection-core.test.js +492 -0
- package/build/utils/modal-detection-core.test.js.map +1 -0
- package/build/utils/modal-detector.d.ts +29 -0
- package/build/utils/modal-detector.d.ts.map +1 -0
- package/build/utils/modal-detector.js +281 -0
- package/build/utils/modal-detector.js.map +1 -0
- package/build/utils/modal-dismissal.d.ts +32 -0
- package/build/utils/modal-dismissal.d.ts.map +1 -0
- package/build/utils/modal-dismissal.js +190 -0
- package/build/utils/modal-dismissal.js.map +1 -0
- package/build/utils/port-check.d.ts +31 -0
- package/build/utils/port-check.d.ts.map +1 -0
- package/build/utils/port-check.js +87 -0
- package/build/utils/port-check.js.map +1 -0
- package/build/utils/port-check.test.d.ts +2 -0
- package/build/utils/port-check.test.d.ts.map +1 -0
- package/build/utils/port-check.test.js +66 -0
- package/build/utils/port-check.test.js.map +1 -0
- package/build/utils/selector-resolver.d.ts +66 -0
- package/build/utils/selector-resolver.d.ts.map +1 -0
- package/build/utils/selector-resolver.js +200 -0
- package/build/utils/selector-resolver.js.map +1 -0
- package/build/validation-helpers.d.ts +41 -0
- package/build/validation-helpers.d.ts.map +1 -0
- package/build/validation-helpers.js +236 -0
- package/build/validation-helpers.js.map +1 -0
- package/build/window-sizing.d.ts +26 -0
- package/build/window-sizing.d.ts.map +1 -0
- package/build/window-sizing.js +87 -0
- package/build/window-sizing.js.map +1 -0
- package/build/window-sizing.test.d.ts +8 -0
- package/build/window-sizing.test.d.ts.map +1 -0
- package/build/window-sizing.test.js +113 -0
- package/build/window-sizing.test.js.map +1 -0
- package/docs/README.md +74 -0
- package/docs/automation.md +562 -0
- package/docs/debugging.md +229 -0
- package/docs/installation.md +133 -0
- package/docs/instructions.md +227 -0
- package/docs/mcp-instructions.md +15 -0
- package/docs/message-system.md +327 -0
- package/docs/messages.md +3480 -0
- package/docs/parser-plugins.md +132 -0
- package/docs/replay.md +1411 -0
- package/docs/troubleshooting.md +272 -0
- package/docs/working_with_llm_notes.md +5 -0
- package/package.json +87 -0
- package/skills/devharness/SKILL.md +195 -0
- package/skills/devharness/references/sequences.md +613 -0
- 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":"AAAA;;;GAGG;AAUH;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAAC,IAAS;IACxD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;QACtC,iDAAiD;QACjD,MAAM,OAAO,GAAU,EAAE,CAAC;QAC1B,sDAAsD;QACtD,MAAM,cAAc,GAAG,MAAM,CAAC,WAAW,CAAC;QAC1C,sDAAsD;QACtD,MAAM,aAAa,GAAG,MAAM,CAAC,UAAU,CAAC;QAExC,+CAA+C;QAC/C,MAAM,QAAQ,GAAG,CAAC,EAAO,EAAU,EAAE;YACnC,IAAI,EAAE,CAAC,YAAY,CAAC,YAAY,CAAC;gBAAE,OAAO,EAAE,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;YACxE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;gBACV,aAAa;gBACb,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,cAAc,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;gBAC9D,IAAI,KAAK;oBAAE,OAAO,KAAK,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;YACpD,CAAC;YACD,IAAI,MAAM,GAAG,EAAE,CAAC,aAAa,CAAC;YAC9B,OAAO,MAAM,EAAE,CAAC;gBACd,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,OAAO,EAAE,CAAC;oBAC7C,OAAO,MAAM,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;gBAC1C,CAAC;gBACD,MAAM,GAAG,MAAM,CAAC,aAAa,CAAC;YAChC,CAAC;YACD,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC;QAEF,sDAAsD;QACtD,MAAM,iBAAiB,GAAG,CAAC,EAAO,EAAE,GAAW,EAAU,EAAE;YACzD,yBAAyB;YACzB,IAAI,EAAE,CAAC,EAAE;gBAAE,OAAO,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;YAE9B,oCAAoC;YACpC,IAAI,EAAE,CAAC,IAAI,IAAI,CAAC,GAAG,KAAK,OAAO,IAAI,GAAG,KAAK,UAAU,IAAI,GAAG,KAAK,QAAQ,CAAC,EAAE,CAAC;gBAC3E,OAAO,UAAU,EAAE,CAAC,IAAI,IAAI,CAAC;YAC/B,CAAC;YAED,0CAA0C;YAC1C,MAAM,SAAS,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;YAChD,IAAI,SAAS,IAAI,SAAS,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;gBACxC,OAAO,GAAG,GAAG,gBAAgB,SAAS,IAAI,CAAC;YAC7C,CAAC;YAED,sDAAsD;YACtD,IAAI,GAAG,KAAK,GAAG,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;gBAC3B,MAAM,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;gBACrC,IAAI,IAAI,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;oBACjF,OAAO,WAAW,IAAI,IAAI,CAAC;gBAC7B,CAAC;YACH,CAAC;YAED,qEAAqE;YACrE,MAAM,IAAI,GAAG,EAAE,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC;YACpC,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;gBACjD,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBAC9C,OAAO,GAAG,GAAG,cAAc,WAAW,IAAI,CAAC;YAC7C,CAAC;YAED,wEAAwE;YACxE,IAAI,EAAE,CAAC,SAAS,IAAI,OAAO,EAAE,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;gBACrD,MAAM,OAAO,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;gBACnH,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACvB,OAAO,GAAG,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBACnD,CAAC;YACH,CAAC;YAED,+BAA+B;YAC/B,OAAO,GAAG,CAAC;QACb,CAAC,CAAC;QAEF,2DAA2D;QAC3D,MAAM,kBAAkB,GAAG,CAAC,EAAO,EAAU,EAAE;YAC7C,IAAI,MAAM,GAAG,EAAE,CAAC,aAAa,CAAC;YAC9B,OAAO,MAAM,EAAE,CAAC;gBACd,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;gBACzC,IAAI,GAAG,KAAK,KAAK;oBAAE,OAAO,KAAK,CAAC;gBAChC,IAAI,GAAG,KAAK,MAAM;oBAAE,OAAO,MAAM,CAAC;gBAClC,IAAI,GAAG,KAAK,QAAQ;oBAAE,OAAO,QAAQ,CAAC;gBACtC,IAAI,GAAG,KAAK,QAAQ;oBAAE,OAAO,QAAQ,CAAC;gBACtC,IAAI,GAAG,KAAK,OAAO;oBAAE,OAAO,OAAO,CAAC;gBACpC,IAAI,GAAG,KAAK,MAAM;oBAAE,OAAO,MAAM,CAAC;gBAClC,IAAI,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,YAAY;oBAAE,OAAO,KAAK,CAAC;gBAC/D,IAAI,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,MAAM;oBAAE,OAAO,MAAM,CAAC;gBAC1D,IAAI,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,aAAa;oBAAE,OAAO,QAAQ,CAAC;gBACnE,IAAI,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,QAAQ;oBAAE,OAAO,QAAQ,CAAC;gBAC9D,MAAM,GAAG,MAAM,CAAC,aAAa,CAAC;YAChC,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC;QAEF,iBAAiB;QACjB,aAAa;QACb,QAAQ,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,EAAO,EAAE,EAAE;YACvD,4BAA4B;YAC5B,IAAI,EAAE,CAAC,YAAY,CAAC,aAAa,CAAC,KAAK,MAAM;gBAAE,OAAO;YACtD,aAAa;YACb,MAAM,KAAK,GAAG,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;YAC1C,IAAI,KAAK,CAAC,OAAO,KAAK,MAAM,IAAI,KAAK,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;gBAC9D,MAAM,IAAI,GAAG,EAAE,CAAC,qBAAqB,EAAE,CAAC;gBACxC,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC;oBACjC,IAAI,CAAC,MAAM,IAAI,cAAc,IAAI,IAAI,CAAC,KAAK,IAAI,aAAa,CAAC;gBAC9E,MAAM,IAAI,GAAG,EAAE,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;gBACvG,OAAO,CAAC,IAAI,CAAC;oBACX,IAAI,EAAE,MAAM;oBACZ,IAAI;oBACJ,IAAI,EAAE,EAAE,CAAC,IAAI;oBACb,QAAQ,EAAE,iBAAiB,CAAC,EAAE,EAAE,GAAG,CAAC;oBACpC,UAAU;oBACV,OAAO,EAAE,kBAAkB,CAAC,EAAE,CAAC;oBAC/B,CAAC,EAAE,IAAI,CAAC,CAAC;oBACT,CAAC,EAAE,IAAI,CAAC,CAAC;oBACT,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,MAAM,EAAE,IAAI,CAAC,MAAM;iBACpB,CAAC,CAAC;YACL,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,mBAAmB;QACnB,aAAa;QACb,QAAQ,CAAC,gBAAgB,CAAC,oDAAoD,CAAC,CAAC,OAAO,CAAC,CAAC,EAAO,EAAE,EAAE;YAClG,4BAA4B;YAC5B,IAAI,EAAE,CAAC,YAAY,CAAC,aAAa,CAAC,KAAK,MAAM;gBAAE,OAAO;YACtD,aAAa;YACb,MAAM,KAAK,GAAG,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;YAC1C,IAAI,KAAK,CAAC,OAAO,KAAK,MAAM,IAAI,KAAK,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;gBAC9D,MAAM,IAAI,GAAG,EAAE,CAAC,qBAAqB,EAAE,CAAC;gBACxC,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC;oBACjC,IAAI,CAAC,MAAM,IAAI,cAAc,IAAI,IAAI,CAAC,KAAK,IAAI,aAAa,CAAC;gBAC9E,MAAM,IAAI,GAAG,EAAE,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;gBACnH,OAAO,CAAC,IAAI,CAAC;oBACX,IAAI,EAAE,QAAQ;oBACd,IAAI;oBACJ,IAAI,EAAE,EAAE;oBACR,QAAQ,EAAE,iBAAiB,CAAC,EAAE,EAAE,QAAQ,CAAC;oBACzC,UAAU;oBACV,OAAO,EAAE,kBAAkB,CAAC,EAAE,CAAC;oBAC/B,CAAC,EAAE,IAAI,CAAC,CAAC;oBACT,CAAC,EAAE,IAAI,CAAC,CAAC;oBACT,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,MAAM,EAAE,IAAI,CAAC,MAAM;iBACpB,CAAC,CAAC;YACL,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,kBAAkB;QAClB,aAAa;QACb,QAAQ,CAAC,gBAAgB,CAAC,mEAAmE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAO,EAAE,EAAE;YACjH,4BAA4B;YAC5B,IAAI,EAAE,CAAC,YAAY,CAAC,aAAa,CAAC,KAAK,MAAM;gBAAE,OAAO;YACtD,aAAa;YACb,MAAM,KAAK,GAAG,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;YAC1C,IAAI,KAAK,CAAC,OAAO,KAAK,MAAM,IAAI,KAAK,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;gBAC9D,MAAM,IAAI,GAAG,EAAE,CAAC,qBAAqB,EAAE,CAAC;gBACxC,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC;oBACjC,IAAI,CAAC,MAAM,IAAI,cAAc,IAAI,IAAI,CAAC,KAAK,IAAI,aAAa,CAAC;gBAE9E,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;gBACrC,IAAI,IAAI,GAAG,OAAO,CAAC;gBACnB,IAAI,GAAG,KAAK,UAAU,EAAE,CAAC;oBACvB,IAAI,GAAG,UAAU,CAAC;gBACpB,CAAC;qBAAM,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;oBAC5B,IAAI,GAAG,QAAQ,CAAC;gBAClB,CAAC;qBAAM,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;oBAC3B,MAAM,SAAS,GAAG,EAAE,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,MAAM,CAAC;oBACnD,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;wBAC7H,IAAI,GAAG,SAAS,CAAC;oBACnB,CAAC;gBACH,CAAC;gBAED,MAAM,KAAK,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;gBAC3B,OAAO,CAAC,IAAI,CAAC;oBACX,IAAI;oBACJ,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,WAAW,IAAI,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE;oBACvD,IAAI,EAAE,EAAE;oBACR,QAAQ,EAAE,iBAAiB,CAAC,EAAE,EAAE,GAAG,CAAC;oBACpC,UAAU;oBACV,OAAO,EAAE,kBAAkB,CAAC,EAAE,CAAC;oBAC/B,CAAC,EAAE,IAAI,CAAC,CAAC;oBACT,CAAC,EAAE,IAAI,CAAC,CAAC;oBACT,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,MAAM,EAAE,IAAI,CAAC,MAAM;oBACnB,KAAK;oBACL,QAAQ,EAAE,EAAE,CAAC,QAAQ,IAAI,KAAK;iBAC/B,CAAC,CAAC;YACL,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,QAAQ,EAAE,MAAM,CAAC,OAA6B;QAC9C,cAAc,EAAE,MAAM,CAAC,cAAc;QACrC,aAAa,EAAE,MAAM,CAAC,aAAa;KACpC,CAAC;AACJ,CAAC"}
|
|
@@ -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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"}
|