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,197 @@
|
|
|
1
|
+
import { describe, it, expect, beforeEach, afterEach } from 'vitest';
|
|
2
|
+
import { mkdtempSync, rmSync, writeFileSync, readdirSync } from 'fs';
|
|
3
|
+
import { tmpdir } from 'os';
|
|
4
|
+
import { join } from 'path';
|
|
5
|
+
import { ServerClaimsStore } from './server-claims.js';
|
|
6
|
+
import { initializePaths } from './helpers/paths.js';
|
|
7
|
+
/**
|
|
8
|
+
* Claims are written next to servers.json, which getOutputPath() resolves from
|
|
9
|
+
* the working directory - so these run in a scratch cwd.
|
|
10
|
+
*/
|
|
11
|
+
let workDir;
|
|
12
|
+
let originalCwd;
|
|
13
|
+
let originalGlobalDir;
|
|
14
|
+
beforeEach(() => {
|
|
15
|
+
originalCwd = process.cwd();
|
|
16
|
+
workDir = mkdtempSync(join(tmpdir(), 'cdp-claims-test-'));
|
|
17
|
+
process.chdir(workDir);
|
|
18
|
+
// Point the global scope at the scratch dir too - without this the
|
|
19
|
+
// global-scope cases write claims into the developer's real ~/.cdp-tools.
|
|
20
|
+
originalGlobalDir = process.env.CDP_TOOLS_DIR;
|
|
21
|
+
process.env.CDP_TOOLS_DIR = join(workDir, 'global');
|
|
22
|
+
initializePaths();
|
|
23
|
+
});
|
|
24
|
+
afterEach(() => {
|
|
25
|
+
process.chdir(originalCwd);
|
|
26
|
+
if (originalGlobalDir === undefined)
|
|
27
|
+
delete process.env.CDP_TOOLS_DIR;
|
|
28
|
+
else
|
|
29
|
+
process.env.CDP_TOOLS_DIR = originalGlobalDir;
|
|
30
|
+
initializePaths();
|
|
31
|
+
rmSync(workDir, { recursive: true, force: true });
|
|
32
|
+
});
|
|
33
|
+
/** A store whose liveness and start times are entirely under the test's control. */
|
|
34
|
+
function makeStore(supervisorPid, live) {
|
|
35
|
+
return new ServerClaimsStore({
|
|
36
|
+
supervisorPid,
|
|
37
|
+
isAlive: (pid) => live.has(pid),
|
|
38
|
+
startTimeReader: (pid) => live.get(pid) ?? '',
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
describe('ServerClaimsStore', () => {
|
|
42
|
+
it('claims a server and sees its own claim as live', async () => {
|
|
43
|
+
const live = new Map([[100, 'Mon Jan 1 00:00:00 2026']]);
|
|
44
|
+
const store = makeStore(100, live);
|
|
45
|
+
await store.claim('web', '/proj', false);
|
|
46
|
+
const claims = store.readAll(false);
|
|
47
|
+
expect(claims).toHaveLength(1);
|
|
48
|
+
expect(claims[0].claim).toMatchObject({ serverId: 'web', supervisorPid: 100 });
|
|
49
|
+
expect(store.isClaimLive(claims[0].claim)).toBe(true);
|
|
50
|
+
});
|
|
51
|
+
it('does not report its own claim as foreign', async () => {
|
|
52
|
+
const live = new Map([[100, 'start-100']]);
|
|
53
|
+
const store = makeStore(100, live);
|
|
54
|
+
await store.claim('web', '/proj', false);
|
|
55
|
+
expect(store.hasForeignLiveClaim('web', false)).toBe(false);
|
|
56
|
+
});
|
|
57
|
+
it('sees another live session as a foreign claim', async () => {
|
|
58
|
+
const live = new Map([[100, 'start-100'], [200, 'start-200']]);
|
|
59
|
+
await makeStore(200, live).claim('web', '/proj', false);
|
|
60
|
+
expect(makeStore(100, live).hasForeignLiveClaim('web', false)).toBe(true);
|
|
61
|
+
});
|
|
62
|
+
it('ignores a foreign claim whose session has died', async () => {
|
|
63
|
+
const live = new Map([[100, 'start-100'], [200, 'start-200']]);
|
|
64
|
+
await makeStore(200, live).claim('web', '/proj', false);
|
|
65
|
+
live.delete(200); // that session's supervisor is gone
|
|
66
|
+
expect(makeStore(100, live).hasForeignLiveClaim('web', false)).toBe(false);
|
|
67
|
+
});
|
|
68
|
+
it('ignores a claim whose pid was reused by a different process', async () => {
|
|
69
|
+
const live = new Map([[100, 'start-100'], [200, 'start-200']]);
|
|
70
|
+
await makeStore(200, live).claim('web', '/proj', false);
|
|
71
|
+
// Same pid, different process: alive, but not the one that claimed.
|
|
72
|
+
live.set(200, 'start-200-RECYCLED');
|
|
73
|
+
expect(makeStore(100, live).hasForeignLiveClaim('web', false)).toBe(false);
|
|
74
|
+
});
|
|
75
|
+
it('keeps a claim when start times cannot be read at all', async () => {
|
|
76
|
+
// No start time available (a platform without ps): a claim that cannot be
|
|
77
|
+
// disproved must count as live, since the cost of being wrong is stopping
|
|
78
|
+
// a running server.
|
|
79
|
+
const live = new Map([[200, '']]);
|
|
80
|
+
await makeStore(200, live).claim('web', '/proj', false);
|
|
81
|
+
expect(makeStore(100, new Map([[100, ''], [200, '']])).hasForeignLiveClaim('web', false)).toBe(true);
|
|
82
|
+
});
|
|
83
|
+
it('releases only its own claim', async () => {
|
|
84
|
+
const live = new Map([[100, 'start-100'], [200, 'start-200']]);
|
|
85
|
+
const mine = makeStore(100, live);
|
|
86
|
+
await mine.claim('web', '/proj', false);
|
|
87
|
+
await makeStore(200, live).claim('web', '/proj', false);
|
|
88
|
+
mine.release('web', false);
|
|
89
|
+
const remaining = mine.readAll(false);
|
|
90
|
+
expect(remaining).toHaveLength(1);
|
|
91
|
+
expect(remaining[0].claim.supervisorPid).toBe(200);
|
|
92
|
+
});
|
|
93
|
+
it('releases every claim it holds across both scopes', async () => {
|
|
94
|
+
const live = new Map([[100, 'start-100'], [200, 'start-200']]);
|
|
95
|
+
const mine = makeStore(100, live);
|
|
96
|
+
await mine.claim('web', '/proj', false);
|
|
97
|
+
await mine.claim('api', '/proj', false);
|
|
98
|
+
await makeStore(200, live).claim('web', '/proj', false);
|
|
99
|
+
mine.releaseAllOwn();
|
|
100
|
+
const remaining = mine.readAll(false);
|
|
101
|
+
expect(remaining.map((entry) => entry.claim.supervisorPid)).toEqual([200]);
|
|
102
|
+
});
|
|
103
|
+
it('collects dead claims and reports servers nobody is coming back for', async () => {
|
|
104
|
+
const live = new Map([[100, 'start-100'], [200, 'start-200'], [300, 'start-300']]);
|
|
105
|
+
await makeStore(200, live).claim('abandoned', '/proj', false);
|
|
106
|
+
await makeStore(300, live).claim('shared', '/proj', false);
|
|
107
|
+
await makeStore(100, live).claim('shared', '/proj', false);
|
|
108
|
+
live.delete(200); // the only claimant of 'abandoned' is gone
|
|
109
|
+
live.delete(300); // one of two claimants of 'shared' is gone
|
|
110
|
+
const store = makeStore(100, live);
|
|
111
|
+
const { removed, unclaimedServerIds } = store.collectDeadClaims(false);
|
|
112
|
+
expect(removed).toBe(2);
|
|
113
|
+
expect(unclaimedServerIds).toEqual(['abandoned']);
|
|
114
|
+
// The dead claims are gone from disk; the live one survives.
|
|
115
|
+
expect(store.readAll(false).map((entry) => entry.claim.supervisorPid)).toEqual([100]);
|
|
116
|
+
});
|
|
117
|
+
it('survives a corrupt claim file without throwing', async () => {
|
|
118
|
+
const live = new Map([[100, 'start-100']]);
|
|
119
|
+
const store = makeStore(100, live);
|
|
120
|
+
await store.claim('web', '/proj', false);
|
|
121
|
+
const dir = join(workDir, '.cdp-tools', 'server-claims');
|
|
122
|
+
writeFileSync(join(dir, 'garbage.json'), '{ not json');
|
|
123
|
+
expect(() => store.readAll(false)).not.toThrow();
|
|
124
|
+
expect(store.readAll(false)).toHaveLength(1);
|
|
125
|
+
expect(store.hasForeignLiveClaim('web', false)).toBe(false);
|
|
126
|
+
});
|
|
127
|
+
it('reports no claims when the directory does not exist', () => {
|
|
128
|
+
const store = makeStore(100, new Map([[100, 'start-100']]));
|
|
129
|
+
expect(store.readAll(false)).toEqual([]);
|
|
130
|
+
expect(store.hasForeignLiveClaim('web', false)).toBe(false);
|
|
131
|
+
});
|
|
132
|
+
it('keeps a claim for a server id containing path separators', async () => {
|
|
133
|
+
const live = new Map([[100, 'start-100']]);
|
|
134
|
+
const store = makeStore(100, live);
|
|
135
|
+
await store.claim('team/web', '/proj', false);
|
|
136
|
+
// The id must not escape the claims directory.
|
|
137
|
+
const dir = join(workDir, '.cdp-tools', 'server-claims');
|
|
138
|
+
expect(readdirSync(dir)).toHaveLength(1);
|
|
139
|
+
expect(store.hasForeignLiveClaim('team/web', false)).toBe(false);
|
|
140
|
+
expect(store.readAll(false)[0].claim.serverId).toBe('team/web');
|
|
141
|
+
});
|
|
142
|
+
it('protects a server while another live session works in its directory', async () => {
|
|
143
|
+
// The ordering that claims alone cannot cover: the other window was open
|
|
144
|
+
// first, so it never claimed the server, but it is plainly still using the
|
|
145
|
+
// project.
|
|
146
|
+
const live = new Map([[100, 'start-100'], [200, 'start-200']]);
|
|
147
|
+
await makeStore(200, live).registerSession('/proj');
|
|
148
|
+
const store = makeStore(100, live);
|
|
149
|
+
expect(store.hasOtherLiveSessionIn('/proj')).toBe(true);
|
|
150
|
+
expect(store.mayStop('web', '/proj', false)).toBe(false);
|
|
151
|
+
// A different project is unaffected.
|
|
152
|
+
expect(store.mayStop('web', '/other', false)).toBe(true);
|
|
153
|
+
});
|
|
154
|
+
it('ignores presence of a session that has died', async () => {
|
|
155
|
+
const live = new Map([[100, 'start-100'], [200, 'start-200']]);
|
|
156
|
+
await makeStore(200, live).registerSession('/proj');
|
|
157
|
+
live.delete(200);
|
|
158
|
+
expect(makeStore(100, live).mayStop('web', '/proj', false)).toBe(true);
|
|
159
|
+
});
|
|
160
|
+
it('ignores presence of a session whose pid was recycled', async () => {
|
|
161
|
+
const live = new Map([[100, 'start-100'], [200, 'start-200']]);
|
|
162
|
+
await makeStore(200, live).registerSession('/proj');
|
|
163
|
+
live.set(200, 'start-200-RECYCLED');
|
|
164
|
+
expect(makeStore(100, live).mayStop('web', '/proj', false)).toBe(true);
|
|
165
|
+
});
|
|
166
|
+
it('does not count its own presence against itself', async () => {
|
|
167
|
+
const live = new Map([[100, 'start-100']]);
|
|
168
|
+
const store = makeStore(100, live);
|
|
169
|
+
await store.registerSession('/proj');
|
|
170
|
+
expect(store.hasOtherLiveSessionIn('/proj')).toBe(false);
|
|
171
|
+
expect(store.mayStop('web', '/proj', false)).toBe(true);
|
|
172
|
+
});
|
|
173
|
+
it('collects presence records of dead sessions', async () => {
|
|
174
|
+
const live = new Map([[100, 'start-100'], [200, 'start-200'], [300, 'start-300']]);
|
|
175
|
+
await makeStore(200, live).registerSession('/proj');
|
|
176
|
+
await makeStore(300, live).registerSession('/proj');
|
|
177
|
+
live.delete(300);
|
|
178
|
+
const store = makeStore(100, live);
|
|
179
|
+
expect(store.collectDeadSessions()).toBe(1);
|
|
180
|
+
expect(store.readSessions().map((entry) => entry.presence.supervisorPid)).toEqual([200]);
|
|
181
|
+
});
|
|
182
|
+
it('withdraws its own presence on request', async () => {
|
|
183
|
+
const live = new Map([[100, 'start-100']]);
|
|
184
|
+
const store = makeStore(100, live);
|
|
185
|
+
await store.registerSession('/proj');
|
|
186
|
+
store.unregisterSession();
|
|
187
|
+
expect(makeStore(200, new Map([[100, 'start-100'], [200, 'start-200']])).hasOtherLiveSessionIn('/proj')).toBe(false);
|
|
188
|
+
});
|
|
189
|
+
it('keeps local and global claims apart', async () => {
|
|
190
|
+
const live = new Map([[100, 'start-100'], [200, 'start-200']]);
|
|
191
|
+
await makeStore(200, live).claim('web', '/proj', true);
|
|
192
|
+
const store = makeStore(100, live);
|
|
193
|
+
expect(store.hasForeignLiveClaim('web', false)).toBe(false);
|
|
194
|
+
expect(store.hasForeignLiveClaim('web', true)).toBe(true);
|
|
195
|
+
});
|
|
196
|
+
});
|
|
197
|
+
//# sourceMappingURL=server-claims.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-claims.test.js","sourceRoot":"","sources":["../src/server-claims.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,438 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Server Manager
|
|
3
|
+
* Manages development servers (any language/framework) - start, stop, restart, and monitor
|
|
4
|
+
* Supports multiple runner types: native (spawn), docker, docker-compose
|
|
5
|
+
* Persists state to .cdp-tools/servers.json for recovery and auto-run
|
|
6
|
+
* Logs to .cdp-tools/logs/<server-id>/ for cross-MCP access (native runner only)
|
|
7
|
+
*/
|
|
8
|
+
import * as net from 'net';
|
|
9
|
+
import { type ServerClaimsStore } from './server-claims.js';
|
|
10
|
+
import { type RunnerType } from './runners/index.js';
|
|
11
|
+
/**
|
|
12
|
+
* Returns the matched auto-restart pattern name if `command` looks like it
|
|
13
|
+
* self-restarts on file changes, or null otherwise.
|
|
14
|
+
*/
|
|
15
|
+
export declare function detectAutoRestartCommand(command: string): string | null;
|
|
16
|
+
/**
|
|
17
|
+
* Extract the Node inspector port from a `--inspect`/`--inspect-brk` flag in
|
|
18
|
+
* a command string, if present. Falls back to Node's default port (9229)
|
|
19
|
+
* when the flag is given with no explicit port. Does not handle a separate
|
|
20
|
+
* `--inspect-port=` flag overriding a bare `--inspect`'s port - a rare
|
|
21
|
+
* combination not worth the extra complexity here.
|
|
22
|
+
*/
|
|
23
|
+
export declare function extractInspectorPort(command: string): number | null;
|
|
24
|
+
export interface ServerStatus {
|
|
25
|
+
id: string;
|
|
26
|
+
command: string;
|
|
27
|
+
cwd: string;
|
|
28
|
+
pid: number;
|
|
29
|
+
containerId?: string;
|
|
30
|
+
startedAt: Date;
|
|
31
|
+
uptime: string;
|
|
32
|
+
port?: number;
|
|
33
|
+
running: boolean;
|
|
34
|
+
autoRun: boolean;
|
|
35
|
+
runnerType: RunnerType;
|
|
36
|
+
global: boolean;
|
|
37
|
+
watch: boolean;
|
|
38
|
+
}
|
|
39
|
+
export interface StartServerOptions {
|
|
40
|
+
command: string;
|
|
41
|
+
cwd: string;
|
|
42
|
+
id: string;
|
|
43
|
+
autoRun?: boolean;
|
|
44
|
+
env?: Record<string, string>;
|
|
45
|
+
port?: number;
|
|
46
|
+
/** Runner type - auto-detected from command if not specified */
|
|
47
|
+
runner?: RunnerType;
|
|
48
|
+
/** If true, auto-add detected port to monitoredPorts with default level 'block' */
|
|
49
|
+
monitorPort?: boolean;
|
|
50
|
+
/** If true, store server state in global ~/.cdp-tools/ instead of project directory */
|
|
51
|
+
global?: boolean;
|
|
52
|
+
/** If true, watch this server's files and auto-restart it (pause-aware) on change instead of relying on --watch/nodemon */
|
|
53
|
+
watch?: boolean;
|
|
54
|
+
/** Paths to watch when `watch` is true (default: [cwd]) */
|
|
55
|
+
watchPaths?: string[];
|
|
56
|
+
}
|
|
57
|
+
export interface LogStats {
|
|
58
|
+
serverId: string;
|
|
59
|
+
newStdout: number;
|
|
60
|
+
newStderr: number;
|
|
61
|
+
}
|
|
62
|
+
/** A watch-triggered restart that's queued behind a paused breakpoint debugger. */
|
|
63
|
+
export interface PendingRestartInfo {
|
|
64
|
+
serverId: string;
|
|
65
|
+
queuedAt: Date;
|
|
66
|
+
}
|
|
67
|
+
export type MonitoringLevel = 'inform' | 'error' | 'block';
|
|
68
|
+
export interface PersistedMonitoredPort {
|
|
69
|
+
port: number;
|
|
70
|
+
level: MonitoringLevel;
|
|
71
|
+
description?: string;
|
|
72
|
+
interval?: number;
|
|
73
|
+
}
|
|
74
|
+
export interface MonitoredPort {
|
|
75
|
+
port: number;
|
|
76
|
+
level: MonitoringLevel;
|
|
77
|
+
description?: string;
|
|
78
|
+
interval?: number;
|
|
79
|
+
status: 'up' | 'down' | 'connecting';
|
|
80
|
+
socket: net.Socket | null;
|
|
81
|
+
failedAt?: Date;
|
|
82
|
+
acknowledged: boolean;
|
|
83
|
+
reconnectTimer?: ReturnType<typeof setTimeout>;
|
|
84
|
+
}
|
|
85
|
+
export interface MonitoredPortStatus {
|
|
86
|
+
port: number;
|
|
87
|
+
level: MonitoringLevel;
|
|
88
|
+
description?: string;
|
|
89
|
+
interval?: number;
|
|
90
|
+
status: 'up' | 'down' | 'connecting';
|
|
91
|
+
failedAt?: Date;
|
|
92
|
+
acknowledged: boolean;
|
|
93
|
+
}
|
|
94
|
+
export interface PortFailureInfo {
|
|
95
|
+
port: number;
|
|
96
|
+
level: MonitoringLevel;
|
|
97
|
+
description?: string;
|
|
98
|
+
failedAt: Date;
|
|
99
|
+
}
|
|
100
|
+
/** Function type for getting interval for a monitoring level */
|
|
101
|
+
export type GetIntervalForLevel = (level: MonitoringLevel) => number;
|
|
102
|
+
export type PendingStartupReason = 'timeout' | 'died';
|
|
103
|
+
export interface PendingStartup {
|
|
104
|
+
serverId: string;
|
|
105
|
+
startedAt: Date;
|
|
106
|
+
timeoutAt: Date;
|
|
107
|
+
acknowledged: boolean;
|
|
108
|
+
reason?: PendingStartupReason;
|
|
109
|
+
}
|
|
110
|
+
export interface PersistedPendingStartup {
|
|
111
|
+
serverId: string;
|
|
112
|
+
startedAt: string;
|
|
113
|
+
timeoutAt: string;
|
|
114
|
+
acknowledged: boolean;
|
|
115
|
+
reason?: PendingStartupReason;
|
|
116
|
+
}
|
|
117
|
+
export interface PendingStartupFailureInfo {
|
|
118
|
+
serverId: string;
|
|
119
|
+
startedAt: Date;
|
|
120
|
+
reason: PendingStartupReason;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Port Monitor - monitors ports using persistent TCP connections
|
|
124
|
+
*/
|
|
125
|
+
export declare class PortMonitor {
|
|
126
|
+
private ports;
|
|
127
|
+
private onFailureCallback?;
|
|
128
|
+
private getIntervalForLevel;
|
|
129
|
+
private pauseCount;
|
|
130
|
+
constructor(getIntervalForLevel?: GetIntervalForLevel);
|
|
131
|
+
onFailure(callback: (port: number, level: MonitoringLevel) => void): void;
|
|
132
|
+
startMonitoring(port: number, level: MonitoringLevel, description?: string, interval?: number): Promise<void>;
|
|
133
|
+
private connectToPort;
|
|
134
|
+
private scheduleReconnect;
|
|
135
|
+
stopMonitoring(port: number): Promise<boolean>;
|
|
136
|
+
acknowledgeFailure(port: number): Promise<boolean>;
|
|
137
|
+
getFailedPorts(): PortFailureInfo[];
|
|
138
|
+
getFailedPortsByLevel(level: MonitoringLevel): PortFailureInfo[];
|
|
139
|
+
hasBlockingFailures(): boolean;
|
|
140
|
+
isMonitoring(port: number): boolean;
|
|
141
|
+
getStatus(port?: number): MonitoredPortStatus[];
|
|
142
|
+
getPersistedState(): PersistedMonitoredPort[];
|
|
143
|
+
restoreFromState(ports: PersistedMonitoredPort[]): Promise<void>;
|
|
144
|
+
stopAll(): Promise<void>;
|
|
145
|
+
/**
|
|
146
|
+
* Pause all port monitoring (e.g., when paused at a breakpoint)
|
|
147
|
+
* Stops reconnection attempts but preserves port state
|
|
148
|
+
*/
|
|
149
|
+
pauseMonitoring(): void;
|
|
150
|
+
/**
|
|
151
|
+
* Resume all port monitoring (e.g., when resuming from a breakpoint)
|
|
152
|
+
* Restarts connection attempts for all monitored ports, once every
|
|
153
|
+
* outstanding pauseMonitoring() call has a matching resumeMonitoring().
|
|
154
|
+
*/
|
|
155
|
+
resumeMonitoring(): void;
|
|
156
|
+
}
|
|
157
|
+
export declare class ServerManager {
|
|
158
|
+
private servers;
|
|
159
|
+
private portMonitor;
|
|
160
|
+
private pendingStartups;
|
|
161
|
+
/** Mutex to serialize saveState calls - prevents concurrent file writes */
|
|
162
|
+
private saveMutex;
|
|
163
|
+
/** Injected from index.ts - decouples ServerManager from ConnectionManager directly */
|
|
164
|
+
private pauseChecker;
|
|
165
|
+
/** Watch-mode restart coordination, keyed by serverId - see WatchRestartState */
|
|
166
|
+
private watchState;
|
|
167
|
+
/** Ownership claims - who may stop a shared dev server (see server-claims.ts) */
|
|
168
|
+
private readonly claims;
|
|
169
|
+
constructor(claimsStore?: ServerClaimsStore);
|
|
170
|
+
/**
|
|
171
|
+
* Set the function used to check whether a CDP connection at a given
|
|
172
|
+
* inspector port is currently paused at a breakpoint. Mirrors the existing
|
|
173
|
+
* setChromeLauncher() injection pattern.
|
|
174
|
+
*/
|
|
175
|
+
setPauseChecker(fn: (inspectorPort: number) => boolean): void;
|
|
176
|
+
/**
|
|
177
|
+
* Get the port monitor instance (lazy-initialized)
|
|
178
|
+
* Must be called after configManager.load() for config values to be used
|
|
179
|
+
*/
|
|
180
|
+
getPortMonitor(): PortMonitor;
|
|
181
|
+
private getServersFilePath;
|
|
182
|
+
/**
|
|
183
|
+
* Initialize - load state and recover/start auto-run servers
|
|
184
|
+
* Loads from both local (project) and global (~/.cdp-tools/) storage
|
|
185
|
+
*/
|
|
186
|
+
initialize(): Promise<{
|
|
187
|
+
recovered: string[];
|
|
188
|
+
started: string[];
|
|
189
|
+
failed: string[];
|
|
190
|
+
monitoredPorts: number[];
|
|
191
|
+
collected: string[];
|
|
192
|
+
}>;
|
|
193
|
+
/**
|
|
194
|
+
* Resume port detection for a server after MCP restart
|
|
195
|
+
* @param serverId The server to resume detection for
|
|
196
|
+
* @param remainingMs Time remaining until timeout
|
|
197
|
+
*/
|
|
198
|
+
private resumePortDetection;
|
|
199
|
+
private loadState;
|
|
200
|
+
/**
|
|
201
|
+
* Save state to disk - serialized through mutex to prevent concurrent writes
|
|
202
|
+
*/
|
|
203
|
+
saveState(): Promise<void>;
|
|
204
|
+
/**
|
|
205
|
+
* Internal save implementation - uses atomic writes to prevent corruption
|
|
206
|
+
*/
|
|
207
|
+
private doSaveState;
|
|
208
|
+
private getRunnerCommand;
|
|
209
|
+
private getRunnerCwd;
|
|
210
|
+
/**
|
|
211
|
+
* Find the managed server whose command's --inspect/--inspect-brk port
|
|
212
|
+
* matches `port` - i.e. the server a CDP debugger connection at that port
|
|
213
|
+
* actually belongs to. This is deliberately NOT the server's own detected
|
|
214
|
+
* app/service port (e.g. an HTTP port parsed from "listening on port
|
|
215
|
+
* 3000") - a Node process's inspector port and its own app port are
|
|
216
|
+
* normally different numbers, so matching on the app port would almost
|
|
217
|
+
* never find anything real.
|
|
218
|
+
*/
|
|
219
|
+
getManagedServerByInspectorPort(port: number): Promise<{
|
|
220
|
+
id: string;
|
|
221
|
+
command: string;
|
|
222
|
+
} | null>;
|
|
223
|
+
/** Sync core of getManagedServerByInspectorPort() - reused by watch-restart lookups, which run in a sync pre-execution hot path (checkBreakpointPause) and can't await. */
|
|
224
|
+
private findManagedServerByInspectorPortSync;
|
|
225
|
+
private isPortInUse;
|
|
226
|
+
/**
|
|
227
|
+
* Find PIDs of processes listening on a port using lsof
|
|
228
|
+
*/
|
|
229
|
+
private findProcessesOnPort;
|
|
230
|
+
/**
|
|
231
|
+
* Get the working directory of a process by PID
|
|
232
|
+
*/
|
|
233
|
+
private getProcessCwd;
|
|
234
|
+
/**
|
|
235
|
+
* Kill orphan processes holding a port, but only if they're in the expected directory
|
|
236
|
+
* Returns: { killed: PIDs killed, foreign: PIDs that are from a different directory }
|
|
237
|
+
*/
|
|
238
|
+
private killOrphanProcessesOnPort;
|
|
239
|
+
private waitForPortRelease;
|
|
240
|
+
/**
|
|
241
|
+
* Start a server
|
|
242
|
+
*/
|
|
243
|
+
startServer(options: StartServerOptions): Promise<{
|
|
244
|
+
id: string;
|
|
245
|
+
pid: number;
|
|
246
|
+
runnerType: RunnerType;
|
|
247
|
+
containerId?: string;
|
|
248
|
+
autoRestartWarning?: string;
|
|
249
|
+
}>;
|
|
250
|
+
/**
|
|
251
|
+
* Background port detection with timeout management
|
|
252
|
+
* @param serverId The server to detect port for
|
|
253
|
+
* @param timeoutMs How long to wait before triggering blocking (default 30s)
|
|
254
|
+
*/
|
|
255
|
+
private detectPortInBackgroundWithTimeout;
|
|
256
|
+
/**
|
|
257
|
+
* @deprecated Use detectPortInBackgroundWithTimeout instead
|
|
258
|
+
*/
|
|
259
|
+
private detectPortInBackground;
|
|
260
|
+
/**
|
|
261
|
+
* Get pending startup failures that should trigger blocking
|
|
262
|
+
* Returns only startups that have timed out or died and are not acknowledged
|
|
263
|
+
*/
|
|
264
|
+
getPendingStartupFailures(): PendingStartupFailureInfo[];
|
|
265
|
+
/**
|
|
266
|
+
* Check if a server has a pending startup (regardless of state)
|
|
267
|
+
*/
|
|
268
|
+
hasPendingStartup(serverId: string): boolean;
|
|
269
|
+
/**
|
|
270
|
+
* Get pending startup status for a server
|
|
271
|
+
*/
|
|
272
|
+
getPendingStartup(serverId: string): PendingStartup | undefined;
|
|
273
|
+
/**
|
|
274
|
+
* Acknowledge a pending startup failure
|
|
275
|
+
* Clears the blocking state and starts background health monitoring
|
|
276
|
+
*/
|
|
277
|
+
acknowledgeStartup(serverId: string): Promise<boolean>;
|
|
278
|
+
/**
|
|
279
|
+
* Monitor server health after acknowledgment
|
|
280
|
+
* Checks every 5 seconds for:
|
|
281
|
+
* - Port detection (sets up port monitoring when found)
|
|
282
|
+
* - Server death (re-triggers blocking)
|
|
283
|
+
* Runs until port is found, server dies, or server is removed
|
|
284
|
+
*/
|
|
285
|
+
private monitorServerHealth;
|
|
286
|
+
/**
|
|
287
|
+
* Extend the startup timeout by another 30 seconds
|
|
288
|
+
* Resets the acknowledged flag and reason, resumes detection
|
|
289
|
+
*/
|
|
290
|
+
extendStartupTimeout(serverId: string): Promise<boolean>;
|
|
291
|
+
/**
|
|
292
|
+
* Remove pending startup entry (called when server is stopped or removed)
|
|
293
|
+
*/
|
|
294
|
+
private removePendingStartup;
|
|
295
|
+
/**
|
|
296
|
+
* Stop a server
|
|
297
|
+
*/
|
|
298
|
+
stopServer(serverId: string): Promise<void>;
|
|
299
|
+
/**
|
|
300
|
+
* Restart a server
|
|
301
|
+
* Reloads config from persisted state to pick up any manual edits (e.g., port changes)
|
|
302
|
+
*/
|
|
303
|
+
restartServer(serverId: string): Promise<{
|
|
304
|
+
id: string;
|
|
305
|
+
pid: number;
|
|
306
|
+
runnerType: RunnerType;
|
|
307
|
+
containerId?: string;
|
|
308
|
+
}>;
|
|
309
|
+
private getOrCreateWatchState;
|
|
310
|
+
private startWatcher;
|
|
311
|
+
private stopWatcher;
|
|
312
|
+
/**
|
|
313
|
+
* Single entry point for every watch-triggered restart (file-change,
|
|
314
|
+
* resume-triggered auto-fire, and its own re-entrant re-check once an
|
|
315
|
+
* in-flight restart finishes). Always re-checks pause state fresh rather
|
|
316
|
+
* than trusting a cached value - see issue #88.
|
|
317
|
+
*/
|
|
318
|
+
requestWatchRestart(serverId: string): Promise<void>;
|
|
319
|
+
/**
|
|
320
|
+
* Explicit, forced restart (bypasses the pause-check entirely - the caller
|
|
321
|
+
* has already decided to end any paused debug session). Shares the same
|
|
322
|
+
* in-flight guard as requestWatchRestart(): if a watch-triggered restart is
|
|
323
|
+
* already running, piggybacks on its result instead of racing it.
|
|
324
|
+
*/
|
|
325
|
+
forceRestart(serverId: string): Promise<{
|
|
326
|
+
id: string;
|
|
327
|
+
pid: number;
|
|
328
|
+
runnerType: RunnerType;
|
|
329
|
+
containerId?: string;
|
|
330
|
+
}>;
|
|
331
|
+
/** Shared restart guard used by both requestWatchRestart() and forceRestart(). */
|
|
332
|
+
private performGuardedRestart;
|
|
333
|
+
/** For checkBreakpointPause's lookup (via a paused connection's inspector port). */
|
|
334
|
+
getPendingRestartByInspectorPort(port: number): PendingRestartInfo | null;
|
|
335
|
+
/** Discard a queued watch-restart without performing it - keep debugging. */
|
|
336
|
+
cancelPendingRestart(serverId: string): boolean;
|
|
337
|
+
/**
|
|
338
|
+
* Re-check a port's pause state and let its queued watch-restart (if any)
|
|
339
|
+
* fire now that the debugger has resumed. Call this after any resume that
|
|
340
|
+
* un-pauses a connection - requestWatchRestart() only re-fires on the next
|
|
341
|
+
* file change otherwise, so without this hook a restart deferred by a
|
|
342
|
+
* pause would sit queued forever if no further edits happen.
|
|
343
|
+
*/
|
|
344
|
+
retryPendingRestartByInspectorPort(port: number): void;
|
|
345
|
+
/**
|
|
346
|
+
* Set autoRun flag
|
|
347
|
+
*/
|
|
348
|
+
setAutoRun(serverId: string, autoRun: boolean): Promise<void>;
|
|
349
|
+
/**
|
|
350
|
+
* Get status of servers
|
|
351
|
+
*/
|
|
352
|
+
getStatus(serverId?: string): Promise<ServerStatus[]>;
|
|
353
|
+
/**
|
|
354
|
+
* Get log stats (for native runner only)
|
|
355
|
+
*/
|
|
356
|
+
getLogStats(): LogStats[];
|
|
357
|
+
/**
|
|
358
|
+
* Get logs from a server
|
|
359
|
+
*/
|
|
360
|
+
getLogs(serverId: string, options?: {
|
|
361
|
+
type?: 'stdout' | 'stderr' | 'all';
|
|
362
|
+
lines?: number;
|
|
363
|
+
delta?: boolean;
|
|
364
|
+
}): Promise<string[]>;
|
|
365
|
+
/**
|
|
366
|
+
* Clear logs (native runner only)
|
|
367
|
+
*/
|
|
368
|
+
clearLogs(serverId: string): Promise<{
|
|
369
|
+
logDir: string;
|
|
370
|
+
stdoutPath: string;
|
|
371
|
+
stderrPath: string;
|
|
372
|
+
}>;
|
|
373
|
+
/**
|
|
374
|
+
* Get log access info (file paths for native, commands for docker)
|
|
375
|
+
*/
|
|
376
|
+
getLogAccess(serverId: string): {
|
|
377
|
+
type: 'file';
|
|
378
|
+
logDir: string;
|
|
379
|
+
stdoutPath: string;
|
|
380
|
+
stderrPath: string;
|
|
381
|
+
} | {
|
|
382
|
+
type: 'command';
|
|
383
|
+
command: string;
|
|
384
|
+
} | null;
|
|
385
|
+
/**
|
|
386
|
+
* Stop every server this session owns outright - one no live session other
|
|
387
|
+
* than this one claims. Used when the session is going away for good (an
|
|
388
|
+
* idle suspend, or a client that closed), which is the only time it is safe
|
|
389
|
+
* to take a dev server down.
|
|
390
|
+
*
|
|
391
|
+
* A server another window is still using is left alone, and so is one whose
|
|
392
|
+
* ownership cannot be established: over-stopping destroys running work,
|
|
393
|
+
* under-stopping leaves a process for the next `initialize()` to collect.
|
|
394
|
+
*/
|
|
395
|
+
stopOwnedServers(): Promise<{
|
|
396
|
+
stopped: string[];
|
|
397
|
+
keptForOthers: string[];
|
|
398
|
+
}>;
|
|
399
|
+
/**
|
|
400
|
+
* Server ids whose every claim was dead, per storage scope, with those dead
|
|
401
|
+
* claims deleted as a side effect.
|
|
402
|
+
*
|
|
403
|
+
* Must be read BEFORE this session claims anything during recovery -
|
|
404
|
+
* otherwise our own fresh claim makes an orphan look owned, and nothing is
|
|
405
|
+
* ever collected.
|
|
406
|
+
*
|
|
407
|
+
* A server with no claim file at all is absent from this: it predates
|
|
408
|
+
* claims, or was started outside cdp-tools, and neither is ours to kill.
|
|
409
|
+
*/
|
|
410
|
+
private findAbandonedServerIds;
|
|
411
|
+
/**
|
|
412
|
+
* Stop all servers
|
|
413
|
+
*/
|
|
414
|
+
stopAll(): Promise<string[]>;
|
|
415
|
+
/**
|
|
416
|
+
* Remove a server from config
|
|
417
|
+
*/
|
|
418
|
+
removeServer(serverId: string): Promise<void>;
|
|
419
|
+
/**
|
|
420
|
+
* Get running server IDs
|
|
421
|
+
*/
|
|
422
|
+
getRunningServerIds(): Promise<string[]>;
|
|
423
|
+
/**
|
|
424
|
+
* Cleanup - refresh status of all servers (no longer removes stopped servers)
|
|
425
|
+
* Stopped servers remain in config and can be manually restarted
|
|
426
|
+
*/
|
|
427
|
+
cleanup(): Promise<number>;
|
|
428
|
+
/**
|
|
429
|
+
* Add running servers that appeared in persisted state since this session
|
|
430
|
+
* loaded, claiming each one: seeing a server is enough to depend on it.
|
|
431
|
+
*/
|
|
432
|
+
private adoptNewlyPersistedServers;
|
|
433
|
+
/**
|
|
434
|
+
* Reload a server's config from persisted state (for picking up manual edits)
|
|
435
|
+
*/
|
|
436
|
+
private reloadServerConfig;
|
|
437
|
+
}
|
|
438
|
+
//# sourceMappingURL=server-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-manager.d.ts","sourceRoot":"","sources":["../src/server-manager.ts"],"names":[],"mappings":"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"}
|