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 @@
|
|
|
1
|
+
{"version":3,"file":"pidfile.test.js","sourceRoot":"","sources":["../../src/supervisor/pidfile.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
export type SupervisorPhase = 'ready' | 'restarting' | 'idle-gave-up' | 'suspending' | 'suspended';
|
|
2
|
+
export interface RestartCoordinatorDeps {
|
|
3
|
+
writeToChild: (line: string) => void;
|
|
4
|
+
writeToHost: (line: string) => void;
|
|
5
|
+
killChild: () => Promise<void>;
|
|
6
|
+
/**
|
|
7
|
+
* Ask the child to release everything it holds and exit - a deeper teardown
|
|
8
|
+
* than killChild(), which leaves managed dev servers running.
|
|
9
|
+
*/
|
|
10
|
+
suspendChild?: () => Promise<void>;
|
|
11
|
+
spawnChild: () => void;
|
|
12
|
+
logStderr: (message: string) => void;
|
|
13
|
+
}
|
|
14
|
+
export interface RestartCoordinatorOptions {
|
|
15
|
+
maxCrashAttempts?: number;
|
|
16
|
+
crashBackoffBaseMs?: number;
|
|
17
|
+
crashBackoffCapMs?: number;
|
|
18
|
+
stabilityThresholdMs?: number;
|
|
19
|
+
}
|
|
20
|
+
export declare class RestartCoordinator {
|
|
21
|
+
private readonly deps;
|
|
22
|
+
private phase;
|
|
23
|
+
private hasSeenFirstInit;
|
|
24
|
+
private initRequestLine;
|
|
25
|
+
private initRequestId;
|
|
26
|
+
private initializedLine;
|
|
27
|
+
private awaitingReplayResponseId;
|
|
28
|
+
private initAnswered;
|
|
29
|
+
private inFlight;
|
|
30
|
+
private abandonedIds;
|
|
31
|
+
/** Host lines that arrived while the suspending child was still exiting. */
|
|
32
|
+
private suspendQueue;
|
|
33
|
+
private expectingExit;
|
|
34
|
+
private crashAttempt;
|
|
35
|
+
private crashBackoffTimer;
|
|
36
|
+
private stabilityTimer;
|
|
37
|
+
private readonly maxCrashAttempts;
|
|
38
|
+
private readonly crashBackoffBaseMs;
|
|
39
|
+
private readonly crashBackoffCapMs;
|
|
40
|
+
private readonly stabilityThresholdMs;
|
|
41
|
+
constructor(deps: RestartCoordinatorDeps, options?: RestartCoordinatorOptions);
|
|
42
|
+
getPhase(): SupervisorPhase;
|
|
43
|
+
/** A raw NDJSON line arrived from the host, headed for the child. */
|
|
44
|
+
handleHostLine(line: string): void;
|
|
45
|
+
/** A raw NDJSON line arrived from the (current) child, headed for the host. */
|
|
46
|
+
handleChildLine(line: string): void;
|
|
47
|
+
/** The current child's stdout stream closed - no more late responses possible from it. */
|
|
48
|
+
onChildStdoutClosed(): void;
|
|
49
|
+
/**
|
|
50
|
+
* Call before deliberately killing the child as part of supervisor shutdown
|
|
51
|
+
* (not a restart - no respawn follows). Without this, the child's resulting
|
|
52
|
+
* 'exit' event would be indistinguishable from a real crash.
|
|
53
|
+
*/
|
|
54
|
+
prepareForShutdown(): void;
|
|
55
|
+
/** The current child process exited (fires for both deliberate kills and crashes). */
|
|
56
|
+
onChildExit(): void;
|
|
57
|
+
/** Explicit restart trigger (SIGUSR2, wired to a postbuild hook or sent manually). */
|
|
58
|
+
requestRestart(reason: string): void;
|
|
59
|
+
/**
|
|
60
|
+
* Idle timeout reached: drop the child and everything it holds, and stay
|
|
61
|
+
* resident on the host's stdio so the connection itself survives. The next
|
|
62
|
+
* host line respawns via handleHostLine().
|
|
63
|
+
*
|
|
64
|
+
* Only ever suspends from a settled 'ready' state - suspending mid-restart
|
|
65
|
+
* or while the crash backoff is deciding what to do would race with it.
|
|
66
|
+
*/
|
|
67
|
+
suspend(reason: string): void;
|
|
68
|
+
private spawnAndReplay;
|
|
69
|
+
private synthesizeErrorsForAllInFlight;
|
|
70
|
+
private sendSynthesizedError;
|
|
71
|
+
private clearStabilityTimer;
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=restart-coordinator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"restart-coordinator.d.ts","sourceRoot":"","sources":["../../src/supervisor/restart-coordinator.ts"],"names":[],"mappings":"AAuBA,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,YAAY,GAAG,cAAc,GAAG,YAAY,GAAG,WAAW,CAAC;AAEnG,MAAM,WAAW,sBAAsB;IACrC,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,SAAS,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACtC;AAED,MAAM,WAAW,yBAAyB;IACxC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAID,qBAAa,kBAAkB;IA8BjB,OAAO,CAAC,QAAQ,CAAC,IAAI;IA7BjC,OAAO,CAAC,KAAK,CAA4B;IAEzC,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,aAAa,CAAgC;IACrD,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,wBAAwB,CAAgC;IAMhE,OAAO,CAAC,YAAY,CAAS;IAE7B,OAAO,CAAC,QAAQ,CAAkD;IAClE,OAAO,CAAC,YAAY,CAA8B;IAClD,4EAA4E;IAC5E,OAAO,CAAC,YAAY,CAAgB;IAEpC,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,iBAAiB,CAA8C;IACvE,OAAO,CAAC,cAAc,CAA8C;IAEpE,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAS;IAC5C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAS;gBAEjB,IAAI,EAAE,sBAAsB,EAAE,OAAO,GAAE,yBAA8B;IAOlG,QAAQ,IAAI,eAAe;IAI3B,qEAAqE;IACrE,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAqElC,+EAA+E;IAC/E,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAqBnC,0FAA0F;IAC1F,mBAAmB,IAAI,IAAI;IAI3B;;;;OAIG;IACH,kBAAkB,IAAI,IAAI;IAS1B,sFAAsF;IACtF,WAAW,IAAI,IAAI;IA0BnB,sFAAsF;IACtF,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAkCpC;;;;;;;OAOG;IACH,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAiC7B,OAAO,CAAC,cAAc;IA+BtB,OAAO,CAAC,8BAA8B;IAQtC,OAAO,CAAC,oBAAoB;IAa5B,OAAO,CAAC,mBAAmB;CAM5B"}
|
|
@@ -0,0 +1,300 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The protocol-level restart state machine. Deliberately built against
|
|
3
|
+
* injected functions rather than real streams/processes so it's unit
|
|
4
|
+
* testable with plain spies (see restart-coordinator.test.ts).
|
|
5
|
+
*
|
|
6
|
+
* Responsibilities:
|
|
7
|
+
* - Proxy host<->child JSON-RPC lines verbatim in steady state.
|
|
8
|
+
* - Capture the first `initialize` request + `notifications/initialized`
|
|
9
|
+
* notification so they can be replayed to a freshly spawned child (a
|
|
10
|
+
* second `initialize` on a fresh process is harmless/idempotent per the
|
|
11
|
+
* MCP SDK - it has no "already initialized" guard - but the *response* to
|
|
12
|
+
* a replayed initialize must be swallowed, since the host already
|
|
13
|
+
* consumed its original response and isn't expecting a second one).
|
|
14
|
+
* - Synthesize an error response for any request left dangling by a dying
|
|
15
|
+
* child (deliberate restart or crash), so the host never hangs waiting
|
|
16
|
+
* for an answer that will never arrive.
|
|
17
|
+
* - Back off and eventually give up on repeated unplanned crashes.
|
|
18
|
+
* - Suspend an idle session: let the child (and everything it holds - Chrome,
|
|
19
|
+
* dev servers, monitor buffers) go, while this supervisor stays resident on
|
|
20
|
+
* the host's stdio, and bring a fresh child back on the next host line.
|
|
21
|
+
*/
|
|
22
|
+
import { classifyLine, serializeMessage } from './ndjson-reader.js';
|
|
23
|
+
const CONNECTION_CLOSED_ERROR_CODE = -32000; // matches the SDK's own ErrorCode.ConnectionClosed
|
|
24
|
+
export class RestartCoordinator {
|
|
25
|
+
deps;
|
|
26
|
+
phase = 'ready';
|
|
27
|
+
hasSeenFirstInit = false;
|
|
28
|
+
initRequestLine = null;
|
|
29
|
+
initRequestId = null;
|
|
30
|
+
initializedLine = null;
|
|
31
|
+
awaitingReplayResponseId = null;
|
|
32
|
+
// True once the host has received a real answer to its original `initialize`.
|
|
33
|
+
// Only then do we swallow a *replayed* init's response on a later restart -
|
|
34
|
+
// if a restart happens before the host ever got its first answer, the new
|
|
35
|
+
// child's response must flow through normally instead, or the host would
|
|
36
|
+
// hang forever waiting for a response we ate.
|
|
37
|
+
initAnswered = false;
|
|
38
|
+
inFlight = new Map();
|
|
39
|
+
abandonedIds = new Set();
|
|
40
|
+
/** Host lines that arrived while the suspending child was still exiting. */
|
|
41
|
+
suspendQueue = [];
|
|
42
|
+
expectingExit = false;
|
|
43
|
+
crashAttempt = 0;
|
|
44
|
+
crashBackoffTimer = null;
|
|
45
|
+
stabilityTimer = null;
|
|
46
|
+
maxCrashAttempts;
|
|
47
|
+
crashBackoffBaseMs;
|
|
48
|
+
crashBackoffCapMs;
|
|
49
|
+
stabilityThresholdMs;
|
|
50
|
+
constructor(deps, options = {}) {
|
|
51
|
+
this.deps = deps;
|
|
52
|
+
this.maxCrashAttempts = options.maxCrashAttempts ?? 10;
|
|
53
|
+
this.crashBackoffBaseMs = options.crashBackoffBaseMs ?? 500;
|
|
54
|
+
this.crashBackoffCapMs = options.crashBackoffCapMs ?? 30000;
|
|
55
|
+
this.stabilityThresholdMs = options.stabilityThresholdMs ?? 10000;
|
|
56
|
+
}
|
|
57
|
+
getPhase() {
|
|
58
|
+
return this.phase;
|
|
59
|
+
}
|
|
60
|
+
/** A raw NDJSON line arrived from the host, headed for the child. */
|
|
61
|
+
handleHostLine(line) {
|
|
62
|
+
const parsed = classifyLine(line);
|
|
63
|
+
// A line that lands while the old child is still going down waits for it:
|
|
64
|
+
// spawning a replacement now would leave two children alive at once, and
|
|
65
|
+
// erroring the request would punish the user for the timing of their own
|
|
66
|
+
// first call back.
|
|
67
|
+
if (this.phase === 'suspending') {
|
|
68
|
+
this.suspendQueue.push(line);
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
// Any traffic at all means the session is alive again - bring the child
|
|
72
|
+
// back before handling the line, so this very request is the one that
|
|
73
|
+
// resumes us rather than the one that gets an error.
|
|
74
|
+
if (this.phase === 'suspended') {
|
|
75
|
+
this.deps.logStderr('Host activity after suspend; respawning child');
|
|
76
|
+
this.spawnAndReplay();
|
|
77
|
+
}
|
|
78
|
+
if (this.phase !== 'ready') {
|
|
79
|
+
if (parsed.kind === 'request') {
|
|
80
|
+
this.sendSynthesizedError(parsed.id);
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
this.deps.logStderr(`Dropping host ${parsed.kind} received while phase=${this.phase}`);
|
|
84
|
+
}
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
let isCapturedInitRequest = false;
|
|
88
|
+
if (!this.hasSeenFirstInit && parsed.kind === 'request' && parsed.method === 'initialize') {
|
|
89
|
+
this.hasSeenFirstInit = true;
|
|
90
|
+
this.initRequestLine = line;
|
|
91
|
+
this.initRequestId = parsed.id;
|
|
92
|
+
isCapturedInitRequest = true;
|
|
93
|
+
}
|
|
94
|
+
else if (this.initRequestLine &&
|
|
95
|
+
!this.initializedLine &&
|
|
96
|
+
parsed.kind === 'notification' &&
|
|
97
|
+
parsed.method === 'notifications/initialized') {
|
|
98
|
+
this.initializedLine = line;
|
|
99
|
+
}
|
|
100
|
+
// A cancelled request never gets a response - MCP forbids answering one -
|
|
101
|
+
// so its id would sit in `inFlight` forever, and since suspend refuses to
|
|
102
|
+
// run with anything in flight, one Esc during a long tool call would
|
|
103
|
+
// silently disable idle suspend for the rest of the session.
|
|
104
|
+
if (parsed.kind === 'notification' && parsed.method === 'notifications/cancelled') {
|
|
105
|
+
const cancelledId = parsed.raw?.params?.requestId;
|
|
106
|
+
if (cancelledId !== undefined && this.inFlight.delete(cancelledId)) {
|
|
107
|
+
// Should a late response arrive anyway, swallow it: the host has moved on.
|
|
108
|
+
this.abandonedIds.add(cancelledId);
|
|
109
|
+
this.deps.logStderr(`Host cancelled request ${cancelledId}; no longer awaiting a response`);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
// The captured init request's lifecycle is managed separately (via
|
|
113
|
+
// initAnswered/awaitingReplayResponseId below), not the generic in-flight
|
|
114
|
+
// map - otherwise a restart before its real answer arrives would
|
|
115
|
+
// synthesize a premature error for it in addition to the eventual real
|
|
116
|
+
// (or replayed) response, double-delivering to the host.
|
|
117
|
+
if (parsed.kind === 'request' && !isCapturedInitRequest) {
|
|
118
|
+
this.inFlight.set(parsed.id, { method: parsed.method });
|
|
119
|
+
}
|
|
120
|
+
this.deps.writeToChild(line);
|
|
121
|
+
}
|
|
122
|
+
/** A raw NDJSON line arrived from the (current) child, headed for the host. */
|
|
123
|
+
handleChildLine(line) {
|
|
124
|
+
const parsed = classifyLine(line);
|
|
125
|
+
if (parsed.kind === 'response') {
|
|
126
|
+
if (this.awaitingReplayResponseId !== null && parsed.id === this.awaitingReplayResponseId) {
|
|
127
|
+
this.awaitingReplayResponseId = null;
|
|
128
|
+
return; // swallow - host already has the original initialize response
|
|
129
|
+
}
|
|
130
|
+
if (this.abandonedIds.has(parsed.id)) {
|
|
131
|
+
this.abandonedIds.delete(parsed.id);
|
|
132
|
+
return; // late response for an id we already answered synthetically
|
|
133
|
+
}
|
|
134
|
+
this.inFlight.delete(parsed.id);
|
|
135
|
+
if (this.initRequestId !== null && parsed.id === this.initRequestId) {
|
|
136
|
+
this.initAnswered = true;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
this.deps.writeToHost(line);
|
|
140
|
+
}
|
|
141
|
+
/** The current child's stdout stream closed - no more late responses possible from it. */
|
|
142
|
+
onChildStdoutClosed() {
|
|
143
|
+
this.abandonedIds.clear();
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Call before deliberately killing the child as part of supervisor shutdown
|
|
147
|
+
* (not a restart - no respawn follows). Without this, the child's resulting
|
|
148
|
+
* 'exit' event would be indistinguishable from a real crash.
|
|
149
|
+
*/
|
|
150
|
+
prepareForShutdown() {
|
|
151
|
+
this.expectingExit = true;
|
|
152
|
+
if (this.crashBackoffTimer) {
|
|
153
|
+
clearTimeout(this.crashBackoffTimer);
|
|
154
|
+
this.crashBackoffTimer = null;
|
|
155
|
+
}
|
|
156
|
+
this.clearStabilityTimer();
|
|
157
|
+
}
|
|
158
|
+
/** The current child process exited (fires for both deliberate kills and crashes). */
|
|
159
|
+
onChildExit() {
|
|
160
|
+
if (this.expectingExit) {
|
|
161
|
+
// requestRestart()'s own flow (awaiting killChild()) drives what happens next.
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
164
|
+
this.clearStabilityTimer();
|
|
165
|
+
this.synthesizeErrorsForAllInFlight();
|
|
166
|
+
this.crashAttempt++;
|
|
167
|
+
if (this.crashAttempt > this.maxCrashAttempts) {
|
|
168
|
+
this.phase = 'idle-gave-up';
|
|
169
|
+
this.deps.logStderr(`Giving up after ${this.crashAttempt - 1} consecutive crashes; waiting for an explicit restart trigger.`);
|
|
170
|
+
return;
|
|
171
|
+
}
|
|
172
|
+
const delay = Math.min(this.crashBackoffBaseMs * Math.pow(2, this.crashAttempt - 1), this.crashBackoffCapMs);
|
|
173
|
+
this.phase = 'restarting';
|
|
174
|
+
this.deps.logStderr(`Child crashed (attempt ${this.crashAttempt}/${this.maxCrashAttempts}), respawning in ${delay}ms`);
|
|
175
|
+
this.crashBackoffTimer = setTimeout(() => {
|
|
176
|
+
this.crashBackoffTimer = null;
|
|
177
|
+
this.spawnAndReplay();
|
|
178
|
+
}, delay);
|
|
179
|
+
}
|
|
180
|
+
/** Explicit restart trigger (SIGUSR2, wired to a postbuild hook or sent manually). */
|
|
181
|
+
requestRestart(reason) {
|
|
182
|
+
if (this.phase === 'restarting') {
|
|
183
|
+
this.deps.logStderr(`Restart already in progress, ignoring additional trigger (${reason})`);
|
|
184
|
+
return;
|
|
185
|
+
}
|
|
186
|
+
if (this.phase === 'suspending' || this.phase === 'suspended') {
|
|
187
|
+
// Nothing is running to restart, and the next host line will spawn a
|
|
188
|
+
// child from whatever is on disk by then - which for a rebuild trigger
|
|
189
|
+
// is exactly the new build.
|
|
190
|
+
this.deps.logStderr(`Suspended, so ignoring restart trigger (${reason}); next request spawns a fresh child`);
|
|
191
|
+
return;
|
|
192
|
+
}
|
|
193
|
+
if (this.phase === 'idle-gave-up') {
|
|
194
|
+
this.crashAttempt = 0;
|
|
195
|
+
}
|
|
196
|
+
if (this.crashBackoffTimer) {
|
|
197
|
+
clearTimeout(this.crashBackoffTimer);
|
|
198
|
+
this.crashBackoffTimer = null;
|
|
199
|
+
}
|
|
200
|
+
this.clearStabilityTimer();
|
|
201
|
+
this.phase = 'restarting';
|
|
202
|
+
this.synthesizeErrorsForAllInFlight();
|
|
203
|
+
this.expectingExit = true;
|
|
204
|
+
this.deps
|
|
205
|
+
.killChild()
|
|
206
|
+
.catch((err) => this.deps.logStderr(`killChild() failed (continuing anyway): ${err}`))
|
|
207
|
+
.then(() => {
|
|
208
|
+
this.expectingExit = false;
|
|
209
|
+
this.spawnAndReplay();
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Idle timeout reached: drop the child and everything it holds, and stay
|
|
214
|
+
* resident on the host's stdio so the connection itself survives. The next
|
|
215
|
+
* host line respawns via handleHostLine().
|
|
216
|
+
*
|
|
217
|
+
* Only ever suspends from a settled 'ready' state - suspending mid-restart
|
|
218
|
+
* or while the crash backoff is deciding what to do would race with it.
|
|
219
|
+
*/
|
|
220
|
+
suspend(reason) {
|
|
221
|
+
if (this.phase !== 'ready') {
|
|
222
|
+
this.deps.logStderr(`Not suspending while phase=${this.phase}`);
|
|
223
|
+
return;
|
|
224
|
+
}
|
|
225
|
+
if (this.inFlight.size > 0) {
|
|
226
|
+
this.deps.logStderr(`Not suspending with ${this.inFlight.size} request(s) in flight`);
|
|
227
|
+
return;
|
|
228
|
+
}
|
|
229
|
+
this.deps.logStderr(`Suspending idle child (${reason})`);
|
|
230
|
+
this.clearStabilityTimer();
|
|
231
|
+
this.phase = 'suspending';
|
|
232
|
+
this.expectingExit = true;
|
|
233
|
+
const teardown = this.deps.suspendChild ?? this.deps.killChild;
|
|
234
|
+
teardown()
|
|
235
|
+
.catch((err) => this.deps.logStderr(`suspendChild() failed (continuing anyway): ${err}`))
|
|
236
|
+
.then(() => {
|
|
237
|
+
// No child is running now, so nothing is left to report an exit we
|
|
238
|
+
// would have to distinguish from a crash.
|
|
239
|
+
this.expectingExit = false;
|
|
240
|
+
this.crashAttempt = 0;
|
|
241
|
+
this.phase = 'suspended';
|
|
242
|
+
const queued = this.suspendQueue;
|
|
243
|
+
this.suspendQueue = [];
|
|
244
|
+
for (const queuedLine of queued) {
|
|
245
|
+
this.handleHostLine(queuedLine);
|
|
246
|
+
}
|
|
247
|
+
});
|
|
248
|
+
}
|
|
249
|
+
spawnAndReplay() {
|
|
250
|
+
this.deps.spawnChild();
|
|
251
|
+
if (this.initRequestLine && this.initRequestId !== null) {
|
|
252
|
+
// Only swallow the replayed init's response if the host already has a
|
|
253
|
+
// real answer from before - otherwise it's still waiting for its very
|
|
254
|
+
// first one, so let this response flow through normally instead.
|
|
255
|
+
if (this.initAnswered) {
|
|
256
|
+
this.awaitingReplayResponseId = this.initRequestId;
|
|
257
|
+
}
|
|
258
|
+
this.deps.writeToChild(this.initRequestLine);
|
|
259
|
+
if (this.initializedLine) {
|
|
260
|
+
this.deps.writeToChild(this.initializedLine);
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
this.phase = 'ready';
|
|
264
|
+
this.stabilityTimer = setTimeout(() => {
|
|
265
|
+
this.crashAttempt = 0;
|
|
266
|
+
}, this.stabilityThresholdMs);
|
|
267
|
+
// Best-effort: the host may have cached tool schemas from the original
|
|
268
|
+
// initialize; if a rebuild changed one, this nudges a compliant host to
|
|
269
|
+
// re-fetch. Only relevant once a real handshake has actually happened
|
|
270
|
+
// (never fires for the very first startup spawn, which doesn't go
|
|
271
|
+
// through this method at all).
|
|
272
|
+
if (this.initRequestLine) {
|
|
273
|
+
this.deps.writeToHost(serializeMessage({ jsonrpc: '2.0', method: 'notifications/tools/list_changed' }));
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
synthesizeErrorsForAllInFlight() {
|
|
277
|
+
for (const id of this.inFlight.keys()) {
|
|
278
|
+
this.abandonedIds.add(id);
|
|
279
|
+
this.sendSynthesizedError(id);
|
|
280
|
+
}
|
|
281
|
+
this.inFlight.clear();
|
|
282
|
+
}
|
|
283
|
+
sendSynthesizedError(id) {
|
|
284
|
+
this.deps.writeToHost(serializeMessage({
|
|
285
|
+
jsonrpc: '2.0',
|
|
286
|
+
id,
|
|
287
|
+
error: {
|
|
288
|
+
code: CONNECTION_CLOSED_ERROR_CODE,
|
|
289
|
+
message: 'MCP server is restarting; this request will not receive a response from the previous process. Please retry.',
|
|
290
|
+
},
|
|
291
|
+
}));
|
|
292
|
+
}
|
|
293
|
+
clearStabilityTimer() {
|
|
294
|
+
if (this.stabilityTimer) {
|
|
295
|
+
clearTimeout(this.stabilityTimer);
|
|
296
|
+
this.stabilityTimer = null;
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
//# sourceMappingURL=restart-coordinator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"restart-coordinator.js","sourceRoot":"","sources":["../../src/supervisor/restart-coordinator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"restart-coordinator.test.d.ts","sourceRoot":"","sources":["../../src/supervisor/restart-coordinator.test.ts"],"names":[],"mappings":""}
|