refactor(browser): group routing and client-host owners (#37872)

This commit is contained in:
Neil
2026-11-03 12:28:16 -08:00
committed by GitHub
parent b32f6b0380
commit ec3a707868
596 changed files with 1576 additions and 1504 deletions
+7 -7
View File
@@ -1109,16 +1109,16 @@ jobs:
run: >-
xvfb-run --auto-servernum pnpm exec vitest run --config config/vitest.config.ts
--no-file-parallelism
src/main/browser/browser-client-page-renderer-lifecycle.electron.test.ts
src/main/browser/browser-route-webrtc-egress.electron.test.ts
src/main/browser/client-pages/renderer/browser-client-page-renderer-lifecycle.electron.test.ts
src/main/browser/network/egress/browser-route-webrtc-egress.electron.test.ts
src/main/persistence/profile-state/profile-state-writer-stall.electron.test.ts
src/main/browser/cookies/browser-google-cookie-clear.electron.test.ts
src/main/browser/popup-origin-chrome.electron.test.ts
src/main/browser/guest-lifecycle/popups/popup-origin-chrome.electron.test.ts
src/main/browser/browser-link-materialization.electron.test.ts
src/main/browser/browser-popup-compatibility.electron.test.ts
src/main/browser/browser-popup-adapter-compatibility.electron.test.ts
src/main/browser/browser-popup-native-compatibility.electron.test.ts
src/main/browser/browser-popup-background-compatibility.electron.test.ts
src/main/browser/guest-lifecycle/popups/browser-popup-compatibility.electron.test.ts
src/main/browser/guest-lifecycle/popups/browser-popup-adapter-compatibility.electron.test.ts
src/main/browser/guest-lifecycle/popups/browser-popup-native-compatibility.electron.test.ts
src/main/browser/guest-lifecycle/popups/browser-popup-background-compatibility.electron.test.ts
src/main/browser/extensions/browser-extension-api.electron.test.ts
src/main/browser/extensions/browser-extension-persistence.electron.test.ts
src/main/browser/extensions/browser-extension-lifecycle.electron.test.ts
+13 -13
View File
@@ -63,7 +63,7 @@
1 test-no-polling-loop:config/scripts/happy-dom-mutation-observer-retention.test.ts
1 test-no-polling-loop:config/scripts/mobile-web-app/mobile-web-app-frame-budget-sweep.test.ts
1 test-no-polling-loop:mobile/src/transport/rpc-client-live-recovery.test.ts
1 test-no-polling-loop:src/main/browser/cdp-ws-proxy.test.ts
1 test-no-polling-loop:src/main/browser/cdp/transport/cdp-ws-proxy.test.ts
1 test-no-polling-loop:src/main/browser/cookies/browser-cookie-import-concurrency.test.ts
1 test-no-polling-loop:src/main/claude/claude-stop-ack-race.test.ts
1 test-no-polling-loop:src/main/claude/claude-stream-json-connection.test.ts
@@ -229,18 +229,18 @@
2 test-no-real-time-wait:src/main/ai-vault/scanners/opencode/sqlite/session-scanner-opencode-sqlite-scan-scope.test.ts
1 test-no-real-time-wait:src/main/antigravity/windows-hook-json-post.test.ts
1 test-no-real-time-wait:src/main/antigravity/windows-hook-payload-delivery.test.ts
2 test-no-real-time-wait:src/main/browser/browser-popup-compatibility.electron.test.ts
1 test-no-real-time-wait:src/main/browser/browser-popup-native-compatibility.electron.test.ts
2 test-no-real-time-wait:src/main/browser/guest-lifecycle/popups/browser-popup-compatibility.electron.test.ts
1 test-no-real-time-wait:src/main/browser/guest-lifecycle/popups/browser-popup-native-compatibility.electron.test.ts
1 test-no-real-time-wait:src/main/browser/browser-session-ua-cloudflare-live.electron.test.ts
1 test-no-real-time-wait:src/main/browser/browser-session-ua-wire-identity-cross-context.electron.test.ts
1 test-no-real-time-wait:src/main/browser/browser-session-ua-wire-identity.electron.test.ts
10 test-no-real-time-wait:src/main/browser/cdp-ws-proxy-focus-replay.test.ts
12 test-no-real-time-wait:src/main/browser/cdp-ws-proxy.test.ts
10 test-no-real-time-wait:src/main/browser/cdp/transport/cdp-ws-proxy-focus-replay.test.ts
12 test-no-real-time-wait:src/main/browser/cdp/transport/cdp-ws-proxy.test.ts
4 test-no-real-time-wait:src/main/browser/cookies/browser-cookie-import-concurrency.test.ts
1 test-no-real-time-wait:src/main/browser/execution-route-socket-duplex.test.ts
1 test-no-real-time-wait:src/main/browser/guest-focused-frame-route.test.ts
1 test-no-real-time-wait:src/main/browser/paired-runtime-browser-network-route.test.ts
1 test-no-real-time-wait:src/main/browser/remote-browser-socks-server.test.ts
1 test-no-real-time-wait:src/main/browser/network/tunnels/execution-route-socket-duplex.test.ts
1 test-no-real-time-wait:src/main/browser/cdp/input/guest-focused-frame-route.test.ts
1 test-no-real-time-wait:src/main/browser/network/execution-routes/paired-runtime-browser-network-route.test.ts
1 test-no-real-time-wait:src/main/browser/network/tunnels/remote-browser-socks-server.test.ts
1 test-no-real-time-wait:src/main/claude-accounts/claude-login-session.test.ts
2 test-no-real-time-wait:src/main/claude-accounts/claude-profile-router.test.ts
3 test-no-real-time-wait:src/main/claude-accounts/claude-profile-wsl-router.test.ts
@@ -742,9 +742,9 @@
1 test-no-wall-clock:src/main/ai-vault/scanners/opencode/reader-transport/session-scanner-opencode-sqlite-process.test.ts
2 test-no-wall-clock:src/main/antigravity/posix-hook-invocation.test.ts
2 test-no-wall-clock:src/main/browser/browser-session-registry.test.ts
2 test-no-wall-clock:src/main/browser/cdp-ws-proxy.test.ts
2 test-no-wall-clock:src/main/browser/cdp/transport/cdp-ws-proxy.test.ts
2 test-no-wall-clock:src/main/browser/cookies/browser-cookie-import-partition-reland.electron.test.ts
2 test-no-wall-clock:src/main/browser/wsl-browser-network-execution-route.test.ts
2 test-no-wall-clock:src/main/browser/network/execution-routes/wsl-browser-network-execution-route.test.ts
1 test-no-wall-clock:src/main/claude-accounts/claude-account-folder.test.ts
1 test-no-wall-clock:src/main/claude-usage/persisted-source-authority.test.ts
1 test-no-wall-clock:src/main/claude/claude-background-wake-retention.test.ts
@@ -1133,9 +1133,9 @@
2 test-timeout-needs-reason:src/main/antigravity/windows-hook-json-post.test.ts
3 test-timeout-needs-reason:src/main/antigravity/windows-hook-payload-delivery.test.ts
1 test-timeout-needs-reason:src/main/browser/agent-browser/agent-browser-bridge-raw-process.test.ts
1 test-timeout-needs-reason:src/main/browser/browser-client-page-renderer-lifecycle.electron.test.ts
1 test-timeout-needs-reason:src/main/browser/client-pages/renderer/browser-client-page-renderer-lifecycle.electron.test.ts
1 test-timeout-needs-reason:src/main/browser/browser-find-frame-traversal.electron.test.ts
1 test-timeout-needs-reason:src/main/browser/browser-route-webrtc-egress.electron.test.ts
1 test-timeout-needs-reason:src/main/browser/network/egress/browser-route-webrtc-egress.electron.test.ts
1 test-timeout-needs-reason:src/main/browser/browser-session-ua-cloudflare-live.electron.test.ts
2 test-timeout-needs-reason:src/main/browser/browser-session-ua-wire-identity-cross-context.electron.test.ts
5 test-timeout-needs-reason:src/main/browser/browser-session-ua-wire-identity.electron.test.ts
+2 -2
View File
@@ -7,8 +7,8 @@
# Prune after removing launches: pnpm check:main-sync-spawn-ratchet --prune
1 src/main/agent-hooks/installer-utils.ts
2 src/main/browser/cookies/sources/browser-cookie-key.ts
1 src/main/browser/browser-route-egress-electron-launch.ts
1 src/main/browser/browser-route-partition-binding-store.ts
1 src/main/browser/network/egress/browser-route-egress-electron-launch.ts
1 src/main/browser/routing/partitions/browser-route-partition-binding-store.ts
1 src/main/claude-accounts/runtime-auth-service.ts
3 src/main/codex-accounts/fs-utils.ts
2 src/main/codex-accounts/legacy-wsl-runtime-auth-drain-recovery-script-harness.ts
@@ -17,7 +17,7 @@ src/main/browser/agent-browser/agent-browser-bridge-execution.ts
src/main/browser/agent-browser/agent-browser-bridge-raw-process.ts
src/main/browser/agent-browser/agent-browser-bridge-state.ts
src/main/browser/agent-browser/agent-browser-bridge-types.ts
src/main/browser/browser-route-egress-electron-launch.ts
src/main/browser/network/egress/browser-route-egress-electron-launch.ts
src/main/codex-accounts/legacy-wsl-runtime-auth-drain-recovery-script-harness.ts
src/main/codex-accounts/legacy-wsl-runtime-auth-drain-script-harness.ts
src/main/codex-accounts/service.ts
+134 -123
View File
@@ -6633,37 +6633,37 @@
"invariant": "A client-hosted browser network route exists only for an exact live server-owned browser-host lease, authority epoch, host generation, paired identity, execution-host revision or SSH provider authority, and server-owned route generation. A client page is usable only when its runtime ID, authority epoch, host identity and generation, logical page ID, page-host generation, current placement, and still-live lease all match atomically; a retired, retirement-pending, or server-placed page cannot be claimed as live client placement. Live logical placements and their identities are bounded, an occupied logical page cannot change placement until exact two-phase retirement completes, cancellation restores the same authority, and the runtime-wide page generation stays monotonic without tombstones. Server-issued page commands and results remain bounded, FIFO per page, immutable after admission, authenticated to the exact paired lease, attach connection, and live placement, and replayable only when byte-equivalent. Negotiated transient result-transport loss retains exact authority and replays unsettled commands through the preserved client dedupe cache; terminal authority loss makes outstanding outcomes unknown and makes only the exact host generation's placements non-cancellable retirement-pending until exact cleanup or reconciliation proof. Desktop composition installs exact command authority before delivery, keeps result settlements below nested-request capacity, suspends every tunnel without closing guests on negotiated loss, gates handlers through route recovery, and synchronously suspends routes and revokes exact retained navigation grants before asynchronous transport or handler cleanup on terminal loss. Navigation-revocation failure remains observable without preventing guest destruction and route cleanup. One environment pairing revision owns at most one composed desktop host and one reference-counted route per canonical execution-host key; pairing replacement and shutdown close control transport before pages and force-close routes even when guest cleanup remains ambiguous. Non-native descriptors require explicit capability negotiation and an exact runtime-minted lease-bound execution-host grant. Host selection never chooses arbitrarily, stale cleanup or settlement cannot remove a replacement, destination names remain unresolved until the execution host, credit returns only after writes settle, and route loss never falls back to desktop DNS or sockets. A main-owned local listener remains stable across upstream transport loss, rejects CONNECT while offline, accepts only a strictly newer tunnel generation, ignores superseded callbacks, and never reuses a stream ID within one generation. Pending opens, admitted open rate, nested control requests, per-route application bytes, aggregate browser-host/process bytes, claims, and socket sources remain bounded with exact release on settlement and retirement. Queued transport drain yields after a bounded quantum. The local SOCKS endpoint accepts only loopback CONNECT and rejects unsupported commands.",
"oracle": "Attach two browser hosts and require unqualified selection to fail ambiguous while exact selection succeeds. Reject a second identity on one connection and a fifth identity for one paired device, release one exact lease, then admit its replacement without starving another device. Admit four hosts from one authenticated device and a host from a second, reject the first device's fifth host, and release only the first device's exact counters while the second remains live. Fill asks and hosts to their shared ceiling, retain a quarter of the total budget for ordinary waits, close both sockets, and prove every global, class, and device counter releases. Reject one initial host attach with the unchanged runtime_busy response, then require bounded client-specific jitter to attach when capacity returns; repeated rejection and explicit close must release every timer and subscription. Replace one same-device connection, require the old subscription and route to fence, then prove late old cleanup leaves the new generation live. Mint an exact execution-host grant, reject a different key, prove late old grant cleanup leaves its replacement, and invalidate every grant with lease replacement. Reject client-to-client, client-to-server, server-to-server, and server-to-client placement overwrite until exact retirement. Begin retirement once idempotently, reject client use and every replacement while pending, cancel the exact token to restore the same placement, and reject delayed cancellation or completion after a newer retirement begins. On explicit release, replacement, legacy disconnect, and reconnect-grace expiry, require only the exact host generation's client placements to become non-cancellable retirement-pending before lease settlement; preserve negotiated grace, other hosts, server placements, replacements, and capacity until exact completion. Complete only the exact pending token, retain capacity until completion, and require a reused client page ID to receive a higher global generation without retaining a tombstone. Require a client page through the exact runtime, epoch, host, and page tuple; reject every mismatch, released or replaced leases, retirement-pending pages, retired pages, server placements, invalid identities, and the 257th live placement. Admit 1024 opens in one monotonic 10-second window and reject the 1025th until the window expires. Fill 8 MiB across destination-to-client queues and separately across unsettled client-to-destination writes, release one exact retired stream, admit one replacement, and require the next byte claim to close the route without stale-callback or reentrant-close underflow. Across multiple routes, charge application copies, encrypted queue entries, and dynamic native socket bytes to one 32 MiB browser-host and 128 MiB process ceiling; reject zero-byte claim/socket-source floods, fence released leases, synchronously release JavaScript queue claims while retaining native claims through exact socket close, and yield a parked queue after four frames without reordering. Route nested responses by exact ID under reordering, reject unknown and duplicate IDs, cap pending requests and queued bytes, and tear down every concurrent waiter once on timeout or close. Drive one real paired attach, command, and result through one exact connection ID; reject missing send support and malformed or wrong-runtime acknowledgements while preserving old non-v1 attaches. Drop an authenticated transport, require the same listener to reject CONNECT before and during reconnect, attach the exact existing native v1 payload and capability pair to a strictly newer generation, ignore late old callbacks, and roll an exhausted stream-ID ledger only by replacing the generation. Require SSH descriptors to add an execution-host capability and exact grant, reject missing grants and stale provider authority before resolver or binary registration, pass exact domains to ssh2 and system-SSH SOCKS without local resolution, sanitize connector diagnostics, and close every stream and standalone route process once on timeout, synchronous failure, or rotation. Drive the accepted lease through real paired E2EE native SOCKS-to-HTTP and ephemeral Docker ssh2 remote-only DNS journeys, then exercise exact frame, credit, half-close, stale-stream, remote-DNS, unsupported-command, offline, and teardown assertions.",
"commands": [
"pnpm exec vitest run --config config/vitest.config.ts src/main/browser/browser-route-webcontents-registry.test.ts src/main/browser/browser-client-page-unavailability.test.ts src/main/browser/paired-runtime-browser-client-host-reconnect.test.ts src/main/browser/paired-runtime-browser-client-host-composition.test.ts src/main/runtime/runtime-browser-client-page-recovery.test.ts src/main/runtime/rpc/methods/session-tab-browser-placement-mutations.test.ts src/main/runtime/rpc/methods/session-tab-browser-placement-projection.test.ts",
"pnpm exec vitest run --config config/vitest.config.ts src/main/browser/routing/guest-authority/browser-route-webcontents-registry.test.ts src/main/browser/client-pages/lifecycle/browser-client-page-unavailability.test.ts src/main/browser/client-hosts/lifecycle/paired-runtime-browser-client-host-reconnect.test.ts src/main/browser/client-hosts/lifecycle/paired-runtime-browser-client-host-composition.test.ts src/main/runtime/runtime-browser-client-page-recovery.test.ts src/main/runtime/rpc/methods/session-tab-browser-placement-mutations.test.ts src/main/runtime/rpc/methods/session-tab-browser-placement-projection.test.ts",
"pnpm exec vitest run --config config/vitest.config.ts src/main/runtime/browser-host/browser-host-page-retirement.test.ts src/main/runtime/browser-host/browser-host-page-placement-replacement.test.ts src/main/runtime/browser-host/browser-host-page-placement.test.ts src/main/runtime/browser-host/browser-host-lease-registry.test.ts",
"pnpm exec vitest run --config config/vitest.config.ts src/main/runtime/browser-host/browser-host-lease-placement-retirement.test.ts src/main/runtime/browser-host/browser-host-page-retirement.test.ts src/main/runtime/browser-host/browser-host-page-placement-replacement.test.ts src/main/runtime/browser-host/browser-host-page-placement.test.ts src/main/runtime/browser-host/browser-host-lease-registry.test.ts",
"pnpm exec vitest run --config config/vitest.config.ts src/main/runtime/browser-host/browser-host-page-reconciliation-plan.test.ts src/main/runtime/browser-host/browser-host-page-reconciliation-executor.test.ts",
"pnpm exec vitest run --config config/vitest.config.ts src/main/runtime/browser-host/browser-host-page-reconciliation-orchestration.test.ts src/main/runtime/browser-host/browser-host-command-ledger.test.ts src/main/runtime/browser-host/browser-host-page-placement.test.ts src/main/runtime/browser-host/browser-host-lease-registry.test.ts",
"pnpm exec vitest run --config config/vitest.config.ts src/shared/browser-client-host-reconciliation-protocol.test.ts src/main/browser/paired-runtime-browser-host-reconciliation-negotiation.test.ts src/main/runtime/rpc/methods/browser-client-host-reconciliation.test.ts src/main/runtime/browser-host/browser-host-lease-registry.test.ts src/main/browser/paired-runtime-browser-client-host.test.ts",
"pnpm exec vitest run --config config/vitest.config.ts src/shared/browser-client-host-protocol.test.ts src/main/browser/browser-client-page-command-executor.test.ts src/main/browser/browser-client-page-command-integration.test.ts src/main/browser/browser-client-page-inventory.test.ts src/main/browser/paired-runtime-browser-client-host-composition.test.ts src/main/browser/paired-runtime-browser-client-host.test.ts src/main/browser/paired-runtime-browser-host-lease.test.ts src/main/runtime/browser-host/browser-host-lease-registry.test.ts src/main/runtime/rpc/methods/browser-client-host.test.ts src/main/runtime/browser-host/browser-host-page-reconciliation-plan.test.ts",
"pnpm exec vitest run --config config/vitest.config.ts src/main/browser/browser-client-host-reconciliation-command-order.test.ts src/main/browser/browser-client-page-reconciliation-adapters.test.ts src/main/browser/browser-route-prepared-page-rekey.test.ts",
"pnpm exec vitest run --config config/vitest.config.ts src/shared/browser-network-tunnel-protocol.test.ts src/main/browser/browser-network-tunnel-session.test.ts src/main/browser/remote-browser-socks-server.test.ts",
"pnpm exec vitest run --config config/vitest.config.ts src/main/browser/browser-network-tunnel-client.test.ts src/main/browser/paired-runtime-browser-network-route.test.ts src/main/runtime/runtime-binary-message-router.test.ts src/main/runtime/rpc/methods/browser-network-tunnel.test.ts src/main/runtime/browser-network-tunnel-paired-runtime.integration.test.ts",
"pnpm exec vitest run --config config/vitest.config.ts src/main/browser/browser-network-tunnel-outbound-memory-budget.test.ts src/main/browser/browser-network-tunnel-client-memory-budget.test.ts src/main/browser/browser-network-tunnel-session-aggregate-memory.test.ts src/shared/ws-outbound-backpressure-queue.test.ts src/shared/remote-runtime/remote-runtime-client.test.ts",
"pnpm exec vitest run --config config/vitest.config.ts src/shared/browser-client-host-protocol.test.ts src/shared/ws-outbound-backpressure-queue.test.ts src/shared/remote-runtime/remote-runtime-client.test.ts src/main/runtime/browser-host/browser-host-lease-registry.test.ts src/main/runtime/runtime-rpc-browser-host-admission.test.ts src/main/runtime/rpc/methods/browser-client-host.test.ts src/main/runtime/rpc/methods/browser-network-tunnel.test.ts src/main/browser/paired-runtime-browser-host-lease.test.ts src/main/browser/paired-runtime-browser-network-route.test.ts src/main/runtime/browser-network-tunnel-paired-runtime.integration.test.ts src/main/browser/browser-network-tunnel-client.test.ts src/main/browser/browser-network-tunnel-client-memory-budget.test.ts src/main/browser/browser-network-tunnel-session.test.ts src/main/browser/browser-network-tunnel-session-aggregate-memory.test.ts src/main/browser/browser-network-tunnel-outbound-memory-budget.test.ts src/main/browser/remote-browser-socks-server.test.ts",
"pnpm exec vitest run --config config/vitest.config.ts src/shared/browser-client-host-protocol.test.ts src/main/runtime/browser-host/browser-host-lease-registry.test.ts src/main/runtime/runtime-rpc-browser-host-admission.test.ts src/main/runtime/rpc/methods/browser-client-host.test.ts src/main/runtime/rpc/methods/browser-network-tunnel.test.ts src/main/browser/paired-runtime-browser-host-lease.test.ts src/main/browser/paired-runtime-browser-network-route.test.ts src/main/runtime/browser-network-tunnel-paired-runtime.integration.test.ts src/main/browser/browser-network-tunnel-client.test.ts src/main/browser/browser-network-tunnel-session.test.ts src/main/browser/remote-browser-socks-server.test.ts",
"pnpm exec vitest run --config config/vitest.config.ts src/shared/browser-client-host-reconciliation-protocol.test.ts src/main/browser/client-hosts/lifecycle/paired-runtime-browser-host-reconciliation-negotiation.test.ts src/main/runtime/rpc/methods/browser-client-host-reconciliation.test.ts src/main/runtime/browser-host/browser-host-lease-registry.test.ts src/main/browser/client-hosts/lifecycle/paired-runtime-browser-client-host.test.ts",
"pnpm exec vitest run --config config/vitest.config.ts src/shared/browser-client-host-protocol.test.ts src/main/browser/client-pages/execution/browser-client-page-command-executor.test.ts src/main/browser/client-pages/execution/browser-client-page-command-integration.test.ts src/main/browser/client-pages/lifecycle/browser-client-page-inventory.test.ts src/main/browser/client-hosts/lifecycle/paired-runtime-browser-client-host-composition.test.ts src/main/browser/client-hosts/lifecycle/paired-runtime-browser-client-host.test.ts src/main/browser/client-hosts/leases/paired-runtime-browser-host-lease.test.ts src/main/runtime/browser-host/browser-host-lease-registry.test.ts src/main/runtime/rpc/methods/browser-client-host.test.ts src/main/runtime/browser-host/browser-host-page-reconciliation-plan.test.ts",
"pnpm exec vitest run --config config/vitest.config.ts src/main/browser/client-hosts/lifecycle/browser-client-host-reconciliation-command-order.test.ts src/main/browser/client-pages/lifecycle/browser-client-page-reconciliation-adapters.test.ts src/main/browser/routing/sessions/browser-route-prepared-page-rekey.test.ts",
"pnpm exec vitest run --config config/vitest.config.ts src/shared/browser-network-tunnel-protocol.test.ts src/main/browser/network/tunnels/browser-network-tunnel-session.test.ts src/main/browser/network/tunnels/remote-browser-socks-server.test.ts",
"pnpm exec vitest run --config config/vitest.config.ts src/main/browser/network/tunnels/browser-network-tunnel-client.test.ts src/main/browser/network/execution-routes/paired-runtime-browser-network-route.test.ts src/main/runtime/runtime-binary-message-router.test.ts src/main/runtime/rpc/methods/browser-network-tunnel.test.ts src/main/runtime/browser-network-tunnel-paired-runtime.integration.test.ts",
"pnpm exec vitest run --config config/vitest.config.ts src/main/browser/network/tunnels/browser-network-tunnel-outbound-memory-budget.test.ts src/main/browser/network/tunnels/browser-network-tunnel-client-memory-budget.test.ts src/main/browser/network/tunnels/browser-network-tunnel-session-aggregate-memory.test.ts src/shared/ws-outbound-backpressure-queue.test.ts src/shared/remote-runtime/remote-runtime-client.test.ts",
"pnpm exec vitest run --config config/vitest.config.ts src/shared/browser-client-host-protocol.test.ts src/shared/ws-outbound-backpressure-queue.test.ts src/shared/remote-runtime/remote-runtime-client.test.ts src/main/runtime/browser-host/browser-host-lease-registry.test.ts src/main/runtime/runtime-rpc-browser-host-admission.test.ts src/main/runtime/rpc/methods/browser-client-host.test.ts src/main/runtime/rpc/methods/browser-network-tunnel.test.ts src/main/browser/client-hosts/leases/paired-runtime-browser-host-lease.test.ts src/main/browser/network/execution-routes/paired-runtime-browser-network-route.test.ts src/main/runtime/browser-network-tunnel-paired-runtime.integration.test.ts src/main/browser/network/tunnels/browser-network-tunnel-client.test.ts src/main/browser/network/tunnels/browser-network-tunnel-client-memory-budget.test.ts src/main/browser/network/tunnels/browser-network-tunnel-session.test.ts src/main/browser/network/tunnels/browser-network-tunnel-session-aggregate-memory.test.ts src/main/browser/network/tunnels/browser-network-tunnel-outbound-memory-budget.test.ts src/main/browser/network/tunnels/remote-browser-socks-server.test.ts",
"pnpm exec vitest run --config config/vitest.config.ts src/shared/browser-client-host-protocol.test.ts src/main/runtime/browser-host/browser-host-lease-registry.test.ts src/main/runtime/runtime-rpc-browser-host-admission.test.ts src/main/runtime/rpc/methods/browser-client-host.test.ts src/main/runtime/rpc/methods/browser-network-tunnel.test.ts src/main/browser/client-hosts/leases/paired-runtime-browser-host-lease.test.ts src/main/browser/network/execution-routes/paired-runtime-browser-network-route.test.ts src/main/runtime/browser-network-tunnel-paired-runtime.integration.test.ts src/main/browser/network/tunnels/browser-network-tunnel-client.test.ts src/main/browser/network/tunnels/browser-network-tunnel-session.test.ts src/main/browser/network/tunnels/remote-browser-socks-server.test.ts",
"pnpm exec vitest run --config config/vitest.config.ts src/shared/remote-runtime/remote-runtime-client.test.ts",
"pnpm exec vitest run --config config/vitest.config.ts src/shared/remote-runtime/requests/remote-runtime-subscription-request.test.ts",
"pnpm exec vitest run --config config/vitest.config.ts src/main/browser/browser-client-host-command-dispatcher.test.ts",
"pnpm exec vitest run --config config/vitest.config.ts src/main/browser/paired-runtime-browser-client-host.test.ts src/main/browser/paired-runtime-browser-host-lease.test.ts src/main/browser/browser-client-host-command-dispatcher.test.ts",
"pnpm exec vitest run --config config/vitest.config.ts src/main/browser/paired-runtime-browser-client-host.test.ts src/main/browser/paired-runtime-browser-client-host-reconnect.test.ts src/main/browser/paired-runtime-browser-host-lease.test.ts src/main/browser/paired-runtime-browser-host-lease-reconnect.test.ts src/main/browser/browser-client-host-command-dispatcher.test.ts",
"pnpm exec vitest run --config config/vitest.config.ts src/main/runtime/runtime-rpc-browser-host-admission.test.ts src/main/browser/paired-runtime-browser-host-lease-reconnect.test.ts",
"pnpm exec vitest run --config config/vitest.config.ts src/shared/browser-client-host-protocol.test.ts src/main/browser/browser-client-network-route-registry.test.ts src/main/browser/paired-runtime-browser-client-host-composition.test.ts src/main/browser/paired-runtime-browser-client-host.test.ts src/main/browser/paired-runtime-browser-client-host-reconnect.test.ts src/main/browser/paired-runtime-browser-host-lease.test.ts src/main/browser/paired-runtime-browser-host-lease-reconnect.test.ts src/main/browser/paired-runtime-browser-network-route.test.ts src/main/runtime/browser-host/browser-host-command-ledger.test.ts src/main/runtime/browser-host/browser-host-command-ledger-capacity.test.ts src/main/runtime/browser-host/browser-host-lease-registry.test.ts src/main/runtime/rpc/methods/browser-client-host.test.ts",
"pnpm exec vitest run --config config/vitest.config.ts src/shared/browser-client-host-protocol.test.ts src/main/browser/browser-client-network-route-registry.test.ts src/main/browser/paired-runtime-browser-client-host-composition.test.ts src/main/browser/paired-runtime-browser-client-host.test.ts src/main/browser/paired-runtime-browser-client-host-reconnect.test.ts src/main/browser/paired-runtime-browser-host-lease.test.ts src/main/browser/paired-runtime-browser-host-lease-reconnect.test.ts src/main/browser/paired-runtime-browser-network-route.test.ts src/main/runtime/browser-host/browser-host-command-ledger.test.ts src/main/runtime/browser-host/browser-host-command-ledger-capacity.test.ts src/main/runtime/browser-host/browser-host-lease-registry.test.ts src/main/runtime/runtime-rpc-browser-host-admission.test.ts src/main/runtime/rpc/methods/browser-client-host.test.ts",
"pnpm exec vitest run --config config/vitest.config.ts src/shared/browser-client-host-protocol.test.ts src/main/browser/browser-client-network-route-registry.test.ts src/main/browser/paired-runtime-browser-client-host-composition.test.ts src/main/browser/paired-runtime-browser-client-host.test.ts src/main/browser/paired-runtime-browser-client-host-reconnect.test.ts src/main/browser/paired-runtime-browser-host-lease.test.ts src/main/browser/paired-runtime-browser-host-lease-reconnect.test.ts src/main/browser/paired-runtime-browser-network-route.test.ts src/main/runtime/browser-host/browser-host-command-ledger.test.ts src/main/runtime/browser-host/browser-host-command-ledger-capacity.test.ts src/main/runtime/browser-host/browser-host-lease-placement-retirement.test.ts src/main/runtime/browser-host/browser-host-lease-registry.test.ts src/main/runtime/runtime-rpc-browser-host-admission.test.ts src/main/runtime/rpc/methods/browser-client-host.test.ts",
"pnpm exec vitest run --config config/vitest.config.ts src/main/browser/browser-client-network-route-registry.test.ts src/main/browser/paired-runtime-browser-client-host-composition.test.ts src/main/browser/paired-runtime-browser-client-host-registry.test.ts src/main/browser/paired-runtime-browser-client-host-runtime.test.ts src/main/browser/browser-client-page-command-executor.test.ts src/main/browser/browser-session-startup.test.ts src/main/ipc/runtime-environments/runtime-environments-subscription-teardown.test.ts",
"pnpm exec vitest run --config config/vitest.config.ts src/main/browser/client-hosts/commands/browser-client-host-command-dispatcher.test.ts",
"pnpm exec vitest run --config config/vitest.config.ts src/main/browser/client-hosts/lifecycle/paired-runtime-browser-client-host.test.ts src/main/browser/client-hosts/leases/paired-runtime-browser-host-lease.test.ts src/main/browser/client-hosts/commands/browser-client-host-command-dispatcher.test.ts",
"pnpm exec vitest run --config config/vitest.config.ts src/main/browser/client-hosts/lifecycle/paired-runtime-browser-client-host.test.ts src/main/browser/client-hosts/lifecycle/paired-runtime-browser-client-host-reconnect.test.ts src/main/browser/client-hosts/leases/paired-runtime-browser-host-lease.test.ts src/main/browser/client-hosts/leases/paired-runtime-browser-host-lease-reconnect.test.ts src/main/browser/client-hosts/commands/browser-client-host-command-dispatcher.test.ts",
"pnpm exec vitest run --config config/vitest.config.ts src/main/runtime/runtime-rpc-browser-host-admission.test.ts src/main/browser/client-hosts/leases/paired-runtime-browser-host-lease-reconnect.test.ts",
"pnpm exec vitest run --config config/vitest.config.ts src/shared/browser-client-host-protocol.test.ts src/main/browser/network/client-routes/browser-client-network-route-registry.test.ts src/main/browser/client-hosts/lifecycle/paired-runtime-browser-client-host-composition.test.ts src/main/browser/client-hosts/lifecycle/paired-runtime-browser-client-host.test.ts src/main/browser/client-hosts/lifecycle/paired-runtime-browser-client-host-reconnect.test.ts src/main/browser/client-hosts/leases/paired-runtime-browser-host-lease.test.ts src/main/browser/client-hosts/leases/paired-runtime-browser-host-lease-reconnect.test.ts src/main/browser/network/execution-routes/paired-runtime-browser-network-route.test.ts src/main/runtime/browser-host/browser-host-command-ledger.test.ts src/main/runtime/browser-host/browser-host-command-ledger-capacity.test.ts src/main/runtime/browser-host/browser-host-lease-registry.test.ts src/main/runtime/rpc/methods/browser-client-host.test.ts",
"pnpm exec vitest run --config config/vitest.config.ts src/shared/browser-client-host-protocol.test.ts src/main/browser/network/client-routes/browser-client-network-route-registry.test.ts src/main/browser/client-hosts/lifecycle/paired-runtime-browser-client-host-composition.test.ts src/main/browser/client-hosts/lifecycle/paired-runtime-browser-client-host.test.ts src/main/browser/client-hosts/lifecycle/paired-runtime-browser-client-host-reconnect.test.ts src/main/browser/client-hosts/leases/paired-runtime-browser-host-lease.test.ts src/main/browser/client-hosts/leases/paired-runtime-browser-host-lease-reconnect.test.ts src/main/browser/network/execution-routes/paired-runtime-browser-network-route.test.ts src/main/runtime/browser-host/browser-host-command-ledger.test.ts src/main/runtime/browser-host/browser-host-command-ledger-capacity.test.ts src/main/runtime/browser-host/browser-host-lease-registry.test.ts src/main/runtime/runtime-rpc-browser-host-admission.test.ts src/main/runtime/rpc/methods/browser-client-host.test.ts",
"pnpm exec vitest run --config config/vitest.config.ts src/shared/browser-client-host-protocol.test.ts src/main/browser/network/client-routes/browser-client-network-route-registry.test.ts src/main/browser/client-hosts/lifecycle/paired-runtime-browser-client-host-composition.test.ts src/main/browser/client-hosts/lifecycle/paired-runtime-browser-client-host.test.ts src/main/browser/client-hosts/lifecycle/paired-runtime-browser-client-host-reconnect.test.ts src/main/browser/client-hosts/leases/paired-runtime-browser-host-lease.test.ts src/main/browser/client-hosts/leases/paired-runtime-browser-host-lease-reconnect.test.ts src/main/browser/network/execution-routes/paired-runtime-browser-network-route.test.ts src/main/runtime/browser-host/browser-host-command-ledger.test.ts src/main/runtime/browser-host/browser-host-command-ledger-capacity.test.ts src/main/runtime/browser-host/browser-host-lease-placement-retirement.test.ts src/main/runtime/browser-host/browser-host-lease-registry.test.ts src/main/runtime/runtime-rpc-browser-host-admission.test.ts src/main/runtime/rpc/methods/browser-client-host.test.ts",
"pnpm exec vitest run --config config/vitest.config.ts src/main/browser/network/client-routes/browser-client-network-route-registry.test.ts src/main/browser/client-hosts/lifecycle/paired-runtime-browser-client-host-composition.test.ts src/main/browser/client-hosts/lifecycle/paired-runtime-browser-client-host-registry.test.ts src/main/browser/client-hosts/lifecycle/paired-runtime-browser-client-host-runtime.test.ts src/main/browser/client-pages/execution/browser-client-page-command-executor.test.ts src/main/browser/browser-session-startup.test.ts src/main/ipc/runtime-environments/runtime-environments-subscription-teardown.test.ts",
"pnpm exec vitest run --config config/vitest.config.ts src/main/runtime/browser-host/browser-host-command-ledger.test.ts src/main/runtime/browser-host/browser-host-command-ledger-capacity.test.ts src/main/runtime/browser-host/browser-host-lease-registry.test.ts src/main/runtime/rpc/methods/browser-client-host.test.ts",
"pnpm exec vitest run --config config/vitest.config.ts src/main/runtime/browser-host/browser-host-lease-registry.test.ts src/main/browser/browser-network-deferred-socket.test.ts src/main/browser/browser-network-execution-route.test.ts src/main/browser/paired-runtime-browser-network-route.test.ts src/main/runtime/rpc/methods/browser-network-tunnel.test.ts src/main/browser/ssh-browser-network-execution-route.test.ts src/main/browser/system-ssh-socks-client-socket.test.ts src/main/ssh/system-transport/system-ssh-dynamic-forward-process.test.ts src/shared/browser-client-host-protocol.test.ts src/main/ssh/system-transport/system-ssh-forward-process.test.ts src/main/ssh/system-transport/system-ssh-operations.test.ts src/main/ssh/port-forwarding/ssh-port-forward.test.ts",
"pnpm exec vitest run --config config/vitest.config.ts src/main/runtime/browser-host/browser-host-lease-registry.test.ts src/main/browser/network/execution-routes/browser-network-deferred-socket.test.ts src/main/browser/network/execution-routes/browser-network-execution-route.test.ts src/main/browser/network/execution-routes/paired-runtime-browser-network-route.test.ts src/main/runtime/rpc/methods/browser-network-tunnel.test.ts src/main/browser/network/execution-routes/ssh-browser-network-execution-route.test.ts src/main/browser/network/tunnels/system-ssh-socks-client-socket.test.ts src/main/ssh/system-transport/system-ssh-dynamic-forward-process.test.ts src/shared/browser-client-host-protocol.test.ts src/main/ssh/system-transport/system-ssh-forward-process.test.ts src/main/ssh/system-transport/system-ssh-operations.test.ts src/main/ssh/port-forwarding/ssh-port-forward.test.ts",
"ORCA_RUN_DOCKER_SSH_BROWSER_E2E=1 pnpm exec vitest run --config config/vitest.config.ts tests/e2e/ssh-browser-network-execution-route.docker.unit.test.ts",
"ORCA_RUN_DOCKER_SSH_BROWSER_E2E=1 node_modules/.bin/vitest run --config config/vitest.config.ts tests/e2e/ssh-browser-network-execution-route.docker.unit.test.ts"
],
"testFiles": [
"src/main/browser/browser-route-webcontents-registry.test.ts",
"src/main/browser/browser-client-page-unavailability.test.ts",
"src/main/browser/routing/guest-authority/browser-route-webcontents-registry.test.ts",
"src/main/browser/client-pages/lifecycle/browser-client-page-unavailability.test.ts",
"src/main/runtime/runtime-browser-client-page-recovery.test.ts",
"src/main/runtime/rpc/methods/session-tab-browser-placement-mutations.test.ts",
"src/main/runtime/rpc/methods/session-tab-browser-placement-projection.test.ts",
@@ -6683,37 +6683,37 @@
"src/main/runtime/runtime-rpc-browser-host-admission.test.ts",
"src/main/runtime/rpc/methods/browser-client-host.test.ts",
"src/main/runtime/rpc/methods/browser-client-host-reconciliation.test.ts",
"src/main/browser/paired-runtime-browser-host-lease.test.ts",
"src/main/browser/paired-runtime-browser-host-lease-reconnect.test.ts",
"src/main/browser/paired-runtime-browser-host-reconciliation-negotiation.test.ts",
"src/main/browser/paired-runtime-browser-client-host.test.ts",
"src/main/browser/paired-runtime-browser-client-host-reconnect.test.ts",
"src/main/browser/browser-client-network-route-registry.test.ts",
"src/main/browser/paired-runtime-browser-client-host-composition.test.ts",
"src/main/browser/paired-runtime-browser-client-host-registry.test.ts",
"src/main/browser/paired-runtime-browser-client-host-runtime.test.ts",
"src/main/browser/browser-client-host-reconciliation-command-order.test.ts",
"src/main/browser/browser-client-page-command-executor.test.ts",
"src/main/browser/browser-client-page-command-integration.test.ts",
"src/main/browser/browser-client-page-reconciliation-adapters.test.ts",
"src/main/browser/browser-client-page-inventory.test.ts",
"src/main/browser/browser-route-prepared-page-rekey.test.ts",
"src/main/browser/client-hosts/leases/paired-runtime-browser-host-lease.test.ts",
"src/main/browser/client-hosts/leases/paired-runtime-browser-host-lease-reconnect.test.ts",
"src/main/browser/client-hosts/lifecycle/paired-runtime-browser-host-reconciliation-negotiation.test.ts",
"src/main/browser/client-hosts/lifecycle/paired-runtime-browser-client-host.test.ts",
"src/main/browser/client-hosts/lifecycle/paired-runtime-browser-client-host-reconnect.test.ts",
"src/main/browser/network/client-routes/browser-client-network-route-registry.test.ts",
"src/main/browser/client-hosts/lifecycle/paired-runtime-browser-client-host-composition.test.ts",
"src/main/browser/client-hosts/lifecycle/paired-runtime-browser-client-host-registry.test.ts",
"src/main/browser/client-hosts/lifecycle/paired-runtime-browser-client-host-runtime.test.ts",
"src/main/browser/client-hosts/lifecycle/browser-client-host-reconciliation-command-order.test.ts",
"src/main/browser/client-pages/execution/browser-client-page-command-executor.test.ts",
"src/main/browser/client-pages/execution/browser-client-page-command-integration.test.ts",
"src/main/browser/client-pages/lifecycle/browser-client-page-reconciliation-adapters.test.ts",
"src/main/browser/client-pages/lifecycle/browser-client-page-inventory.test.ts",
"src/main/browser/routing/sessions/browser-route-prepared-page-rekey.test.ts",
"src/main/browser/browser-session-startup.test.ts",
"src/main/ipc/runtime-environments/runtime-environments-subscription-teardown.test.ts",
"src/main/browser/browser-client-host-command-dispatcher.test.ts",
"src/main/browser/browser-network-tunnel-session.test.ts",
"src/main/browser/browser-network-tunnel-session-aggregate-memory.test.ts",
"src/main/browser/browser-network-tunnel-client.test.ts",
"src/main/browser/browser-network-tunnel-client-memory-budget.test.ts",
"src/main/browser/browser-network-tunnel-outbound-memory-budget.test.ts",
"src/main/browser/browser-network-deferred-socket.test.ts",
"src/main/browser/browser-network-execution-route.test.ts",
"src/main/browser/paired-runtime-browser-network-route.test.ts",
"src/main/browser/ssh-browser-network-execution-route.test.ts",
"src/main/browser/system-ssh-socks-client-socket.test.ts",
"src/main/browser/client-hosts/commands/browser-client-host-command-dispatcher.test.ts",
"src/main/browser/network/tunnels/browser-network-tunnel-session.test.ts",
"src/main/browser/network/tunnels/browser-network-tunnel-session-aggregate-memory.test.ts",
"src/main/browser/network/tunnels/browser-network-tunnel-client.test.ts",
"src/main/browser/network/tunnels/browser-network-tunnel-client-memory-budget.test.ts",
"src/main/browser/network/tunnels/browser-network-tunnel-outbound-memory-budget.test.ts",
"src/main/browser/network/execution-routes/browser-network-deferred-socket.test.ts",
"src/main/browser/network/execution-routes/browser-network-execution-route.test.ts",
"src/main/browser/network/execution-routes/paired-runtime-browser-network-route.test.ts",
"src/main/browser/network/execution-routes/ssh-browser-network-execution-route.test.ts",
"src/main/browser/network/tunnels/system-ssh-socks-client-socket.test.ts",
"src/main/ssh/system-transport/system-ssh-dynamic-forward-process.test.ts",
"src/main/ssh/port-forwarding/ssh-port-forward.test.ts",
"src/main/browser/remote-browser-socks-server.test.ts",
"src/main/browser/network/tunnels/remote-browser-socks-server.test.ts",
"src/main/runtime/runtime-binary-message-router.test.ts",
"src/main/runtime/rpc/methods/browser-network-tunnel.test.ts",
"src/main/runtime/browser-network-tunnel-paired-runtime.integration.test.ts",
@@ -6827,7 +6827,7 @@
]
},
{
"file": "src/main/browser/paired-runtime-browser-host-lease.test.ts",
"file": "src/main/browser/client-hosts/leases/paired-runtime-browser-host-lease.test.ts",
"assertions": [
"a client requests commands only with a delivery handler and accepts them only after an exact v1 echo",
"an old host that omits the echo cannot deliver a command",
@@ -6840,7 +6840,7 @@
]
},
{
"file": "src/main/browser/paired-runtime-browser-host-lease-reconnect.test.ts",
"file": "src/main/browser/client-hosts/leases/paired-runtime-browser-host-lease-reconnect.test.ts",
"assertions": [
"initial runtime_busy admission retries on bounded deterministic jitter and attaches when capacity returns",
"initial admission expiry and explicit close release every timer and subscription",
@@ -6855,7 +6855,7 @@
]
},
{
"file": "src/main/browser/paired-runtime-browser-host-reconciliation-negotiation.test.ts",
"file": "src/main/browser/client-hosts/lifecycle/paired-runtime-browser-host-reconciliation-negotiation.test.ts",
"assertions": [
"the optional reconciliation request is retained only after exact ready echo",
"an older host can omit the echo without enabling reconciliation",
@@ -6864,7 +6864,7 @@
]
},
{
"file": "src/main/browser/paired-runtime-browser-client-host.test.ts",
"file": "src/main/browser/client-hosts/lifecycle/paired-runtime-browser-client-host.test.ts",
"assertions": [
"reconciliation is advertised only when the composed host explicitly enables it beside complete inventory",
"exact dispatcher authority exists before the first same-socket command can arrive",
@@ -6877,13 +6877,13 @@
]
},
{
"file": "src/main/browser/paired-runtime-browser-client-host-reconnect.test.ts",
"file": "src/main/browser/client-hosts/lifecycle/paired-runtime-browser-client-host-reconnect.test.ts",
"assertions": [
"an acknowledged mutation replay uses the preserved dispatcher result without rerunning its handler"
]
},
{
"file": "src/main/browser/paired-runtime-browser-client-host-composition.test.ts",
"file": "src/main/browser/client-hosts/lifecycle/paired-runtime-browser-client-host-composition.test.ts",
"assertions": [
"exact route authority activates before the first page command",
"each initial or reconnect attach samples a fresh exact executor inventory while the compatibility gate binds to the latest published snapshot",
@@ -6902,7 +6902,7 @@
]
},
{
"file": "src/main/browser/browser-client-host-reconciliation-command-order.test.ts",
"file": "src/main/browser/client-hosts/lifecycle/browser-client-host-reconciliation-command-order.test.ts",
"assertions": [
"reclaim, restore, and close are valid first commands only after exact reconciliation negotiation",
"reclaim and restore failure cancels later navigation without running it",
@@ -6911,7 +6911,7 @@
]
},
{
"file": "src/main/browser/browser-client-page-command-executor.test.ts",
"file": "src/main/browser/client-pages/execution/browser-client-page-command-executor.test.ts",
"assertions": [
"in-flight create, ambiguous cleanup, and stale renderer authority snapshot as outcome unknown",
"a destroyed exact guest snapshots as outcome unknown before executor retirement",
@@ -6929,7 +6929,7 @@
]
},
{
"file": "src/main/browser/browser-client-page-reconciliation-adapters.test.ts",
"file": "src/main/browser/client-pages/lifecycle/browser-client-page-reconciliation-adapters.test.ts",
"assertions": [
"reclaim moves one exact retained guest to a new authority without remounting",
"DOM-preserving reclaim is rejected when the runtime authority changes",
@@ -6939,27 +6939,27 @@
]
},
{
"file": "src/main/browser/browser-route-prepared-page-rekey.test.ts",
"file": "src/main/browser/routing/sessions/browser-route-prepared-page-rekey.test.ts",
"assertions": [
"prepared authority rekeys without changing its opaque capability token",
"stale, occupied, cross-page, and cross-renderer targets fail without mutation"
]
},
{
"file": "src/main/browser/browser-client-page-command-integration.test.ts",
"file": "src/main/browser/client-pages/execution/browser-client-page-command-integration.test.ts",
"assertions": [
"spontaneous exact guest destruction revokes active inventory before explicit page retirement"
]
},
{
"file": "src/main/browser/browser-client-page-inventory.test.ts",
"file": "src/main/browser/client-pages/lifecycle/browser-client-page-inventory.test.ts",
"assertions": [
"optional URLs compact by deterministic codepoint order without dropping required page identity",
"an unencodable complete snapshot declines inventory negotiation instead of dropping a page"
]
},
{
"file": "src/main/browser/paired-runtime-browser-client-host-registry.test.ts",
"file": "src/main/browser/client-hosts/lifecycle/paired-runtime-browser-client-host-registry.test.ts",
"assertions": [
"one environment pairing revision shares one host composition",
"a same-pairing runtime change preserves that composition and delegates exact authority replacement",
@@ -6972,7 +6972,7 @@
]
},
{
"file": "src/main/browser/browser-client-network-route-registry.test.ts",
"file": "src/main/browser/network/client-routes/browser-client-network-route-registry.test.ts",
"assertions": [
"canonical execution-host keys share one route until the final page release",
"native routes must name the exact authority runtime",
@@ -6987,11 +6987,11 @@
]
},
{
"file": "src/main/browser/paired-runtime-browser-client-host-runtime.test.ts",
"file": "src/main/browser/client-hosts/lifecycle/paired-runtime-browser-client-host-runtime.test.ts",
"assertions": ["pairing resolution failures preserve the asynchronous start contract"]
},
{
"file": "src/main/browser/browser-client-host-command-dispatcher.test.ts",
"file": "src/main/browser/client-hosts/commands/browser-client-host-command-dispatcher.test.ts",
"assertions": [
"commands execute FIFO per page while only exact payload-matched duplicates replay without rerunning side effects",
"authority, sequence, generation, and create dependencies fence stale or ambiguous commands",
@@ -7056,7 +7056,7 @@
]
},
{
"file": "src/main/browser/browser-network-tunnel-session.test.ts",
"file": "src/main/browser/network/tunnels/browser-network-tunnel-session.test.ts",
"assertions": [
"destination writes replenish client credit only after settlement",
"stale generations and reused stream IDs cannot replace the current destination",
@@ -7067,14 +7067,14 @@
]
},
{
"file": "src/main/browser/browser-network-tunnel-session-aggregate-memory.test.ts",
"file": "src/main/browser/network/tunnels/browser-network-tunnel-session-aggregate-memory.test.ts",
"assertions": [
"multiple execution-host routes share browser-host application-byte admission in both traffic directions",
"route close releases aggregate claims exactly before stale destination-write callbacks"
]
},
{
"file": "src/main/browser/browser-network-tunnel-client.test.ts",
"file": "src/main/browser/network/tunnels/browser-network-tunnel-client.test.ts",
"assertions": [
"source writes never exceed granted credit or the bounded data-frame size",
"destination credit tracks only browser-facing socket writes that settle after readable consumption",
@@ -7086,7 +7086,7 @@
]
},
{
"file": "src/main/browser/browser-network-tunnel-client-memory-budget.test.ts",
"file": "src/main/browser/network/tunnels/browser-network-tunnel-client-memory-budget.test.ts",
"assertions": [
"multiple client routes on one browser host share source-write application admission",
"destination copies remain charged through browser-facing socket settlement",
@@ -7094,7 +7094,7 @@
]
},
{
"file": "src/main/browser/browser-network-tunnel-outbound-memory-budget.test.ts",
"file": "src/main/browser/network/tunnels/browser-network-tunnel-outbound-memory-budget.test.ts",
"assertions": [
"application, encrypted-queue, and native socket bytes share one host ceiling",
"distinct hosts share one process ceiling with exact release",
@@ -7110,7 +7110,7 @@
]
},
{
"file": "src/main/browser/remote-browser-socks-server.test.ts",
"file": "src/main/browser/network/tunnels/remote-browser-socks-server.test.ts",
"assertions": [
"domain CONNECT preserves the final execution-host DNS target",
"unsupported commands and unavailable routes open no fallback destination"
@@ -7133,7 +7133,7 @@
]
},
{
"file": "src/main/browser/paired-runtime-browser-network-route.test.ts",
"file": "src/main/browser/network/execution-routes/paired-runtime-browser-network-route.test.ts",
"assertions": [
"route teardown closes a subscription that resolves after startup cancellation",
"close after subscription acquisition settles the pending readiness wait",
@@ -7150,21 +7150,21 @@
]
},
{
"file": "src/main/browser/browser-network-deferred-socket.test.ts",
"file": "src/main/browser/network/execution-routes/browser-network-deferred-socket.test.ts",
"assertions": [
"destroy before source attachment emits one close and destroys a late source",
"source close after destroy cannot emit duplicate wrapper close"
]
},
{
"file": "src/main/browser/browser-network-execution-route.test.ts",
"file": "src/main/browser/network/execution-routes/browser-network-execution-route.test.ts",
"assertions": [
"execution-host route keys cannot collide on delimiter-containing identities",
"native routing accepts only the exact runtime revision without retaining an invalidation callback"
]
},
{
"file": "src/main/browser/ssh-browser-network-execution-route.test.ts",
"file": "src/main/browser/network/execution-routes/ssh-browser-network-execution-route.test.ts",
"assertions": [
"missing and stale SSH provider authority is rejected before destination open",
"ssh2 forwardOut receives the exact domain and port without desktop resolution",
@@ -7175,7 +7175,7 @@
]
},
{
"file": "src/main/browser/system-ssh-socks-client-socket.test.ts",
"file": "src/main/browser/network/tunnels/system-ssh-socks-client-socket.test.ts",
"assertions": [
"the internal SOCKS5 client encodes the exact destination as a domain request"
]
@@ -7244,7 +7244,7 @@
"runner": "local",
"platform": "macos",
"command": "pnpm exec vitest run --config config/vitest.config.ts src/shared/browser-client-host-protocol.test.ts src/main/browser/browser-client-host-attach-request.test.ts src/main/browser/browser-client-network-route-registry.test.ts src/main/browser/paired-runtime-browser-client-host-composition.test.ts src/main/browser/paired-runtime-browser-client-host.test.ts src/main/browser/paired-runtime-browser-client-host-reconnect.test.ts src/main/browser/paired-runtime-browser-host-lease.test.ts src/main/browser/paired-runtime-browser-host-lease-reconnect.test.ts src/main/browser/browser-host-lease-reconnect-delay.test.ts src/main/browser/paired-runtime-browser-network-route.test.ts src/main/runtime/browser-host/browser-host-command-ledger.test.ts src/main/runtime/browser-host/browser-host-command-ledger-capacity.test.ts src/main/runtime/browser-host/browser-host-lease-placement-retirement.test.ts src/main/runtime/browser-host/browser-host-lease-registry.test.ts src/main/runtime/runtime-rpc-browser-host-admission.test.ts src/main/runtime/rpc/methods/browser-client-host.test.ts",
"currentCommand": "pnpm exec vitest run --config config/vitest.config.ts src/shared/browser-client-host-protocol.test.ts src/main/browser/browser-client-network-route-registry.test.ts src/main/browser/paired-runtime-browser-client-host-composition.test.ts src/main/browser/paired-runtime-browser-client-host.test.ts src/main/browser/paired-runtime-browser-client-host-reconnect.test.ts src/main/browser/paired-runtime-browser-host-lease.test.ts src/main/browser/paired-runtime-browser-host-lease-reconnect.test.ts src/main/browser/paired-runtime-browser-network-route.test.ts src/main/runtime/browser-host/browser-host-command-ledger.test.ts src/main/runtime/browser-host/browser-host-command-ledger-capacity.test.ts src/main/runtime/browser-host/browser-host-lease-placement-retirement.test.ts src/main/runtime/browser-host/browser-host-lease-registry.test.ts src/main/runtime/runtime-rpc-browser-host-admission.test.ts src/main/runtime/rpc/methods/browser-client-host.test.ts",
"currentCommand": "pnpm exec vitest run --config config/vitest.config.ts src/shared/browser-client-host-protocol.test.ts src/main/browser/network/client-routes/browser-client-network-route-registry.test.ts src/main/browser/client-hosts/lifecycle/paired-runtime-browser-client-host-composition.test.ts src/main/browser/client-hosts/lifecycle/paired-runtime-browser-client-host.test.ts src/main/browser/client-hosts/lifecycle/paired-runtime-browser-client-host-reconnect.test.ts src/main/browser/client-hosts/leases/paired-runtime-browser-host-lease.test.ts src/main/browser/client-hosts/leases/paired-runtime-browser-host-lease-reconnect.test.ts src/main/browser/network/execution-routes/paired-runtime-browser-network-route.test.ts src/main/runtime/browser-host/browser-host-command-ledger.test.ts src/main/runtime/browser-host/browser-host-command-ledger-capacity.test.ts src/main/runtime/browser-host/browser-host-lease-placement-retirement.test.ts src/main/runtime/browser-host/browser-host-lease-registry.test.ts src/main/runtime/runtime-rpc-browser-host-admission.test.ts src/main/runtime/rpc/methods/browser-client-host.test.ts",
"result": "passed",
"durationSeconds": 3.61,
"summary": "On the #14753 tip, sixteen files passed 167 exact terminal navigation/route fencing, retained reconnect grace, placement retirement, attach, command, result, route recovery, admission, and mixed-version protocol assertions. The new composition oracle was 1 failed / 10 passed before implementation because terminal host loss started asynchronous close without first suspending routes or revoking navigation."
@@ -7263,6 +7263,7 @@
"runner": "local",
"platform": "macos",
"command": "pnpm exec vitest run --config config/vitest.config.ts src/main/runtime/runtime-rpc-browser-host-admission.test.ts src/main/browser/paired-runtime-browser-host-lease-reconnect.test.ts",
"currentCommand": "pnpm exec vitest run --config config/vitest.config.ts src/main/runtime/runtime-rpc-browser-host-admission.test.ts src/main/browser/client-hosts/leases/paired-runtime-browser-host-lease-reconnect.test.ts",
"result": "passed",
"durationSeconds": 7.89,
"summary": "On origin/main@5b7f44278a, two files passed 16 authenticated per-device/global browser-host admission, shared wait reservation, exact socket-counter release, bounded initial runtime_busy retry, explicit-close cleanup, and reconnect-grace authority-preservation tests."
@@ -7272,7 +7273,7 @@
"runner": "local",
"platform": "macos",
"command": "pnpm exec vitest run --config config/vitest.config.ts src/shared/browser-client-host-protocol.test.ts src/main/browser/browser-client-host-attach-request.test.ts src/main/browser/browser-client-network-route-registry.test.ts src/main/browser/paired-runtime-browser-client-host-composition.test.ts src/main/browser/paired-runtime-browser-client-host.test.ts src/main/browser/paired-runtime-browser-client-host-reconnect.test.ts src/main/browser/paired-runtime-browser-host-lease.test.ts src/main/browser/paired-runtime-browser-host-lease-reconnect.test.ts src/main/browser/browser-host-lease-reconnect-delay.test.ts src/main/browser/paired-runtime-browser-network-route.test.ts src/main/runtime/browser-host/browser-host-command-ledger.test.ts src/main/runtime/browser-host/browser-host-command-ledger-capacity.test.ts src/main/runtime/browser-host/browser-host-lease-registry.test.ts src/main/runtime/runtime-rpc-browser-host-admission.test.ts src/main/runtime/rpc/methods/browser-client-host.test.ts",
"currentCommand": "pnpm exec vitest run --config config/vitest.config.ts src/shared/browser-client-host-protocol.test.ts src/main/browser/browser-client-network-route-registry.test.ts src/main/browser/paired-runtime-browser-client-host-composition.test.ts src/main/browser/paired-runtime-browser-client-host.test.ts src/main/browser/paired-runtime-browser-client-host-reconnect.test.ts src/main/browser/paired-runtime-browser-host-lease.test.ts src/main/browser/paired-runtime-browser-host-lease-reconnect.test.ts src/main/browser/paired-runtime-browser-network-route.test.ts src/main/runtime/browser-host/browser-host-command-ledger.test.ts src/main/runtime/browser-host/browser-host-command-ledger-capacity.test.ts src/main/runtime/browser-host/browser-host-lease-registry.test.ts src/main/runtime/runtime-rpc-browser-host-admission.test.ts src/main/runtime/rpc/methods/browser-client-host.test.ts",
"currentCommand": "pnpm exec vitest run --config config/vitest.config.ts src/shared/browser-client-host-protocol.test.ts src/main/browser/network/client-routes/browser-client-network-route-registry.test.ts src/main/browser/client-hosts/lifecycle/paired-runtime-browser-client-host-composition.test.ts src/main/browser/client-hosts/lifecycle/paired-runtime-browser-client-host.test.ts src/main/browser/client-hosts/lifecycle/paired-runtime-browser-client-host-reconnect.test.ts src/main/browser/client-hosts/leases/paired-runtime-browser-host-lease.test.ts src/main/browser/client-hosts/leases/paired-runtime-browser-host-lease-reconnect.test.ts src/main/browser/network/execution-routes/paired-runtime-browser-network-route.test.ts src/main/runtime/browser-host/browser-host-command-ledger.test.ts src/main/runtime/browser-host/browser-host-command-ledger-capacity.test.ts src/main/runtime/browser-host/browser-host-lease-registry.test.ts src/main/runtime/runtime-rpc-browser-host-admission.test.ts src/main/runtime/rpc/methods/browser-client-host.test.ts",
"result": "passed",
"durationSeconds": 7.18,
"summary": "On origin/main@5b7f44278a, fifteen files passed 159 mixed-version attach, exact authority, bounded admission and recovery, reconnect, route suspension, page-command replay, result-ledger, and authenticated lease tests."
@@ -7282,7 +7283,7 @@
"runner": "local",
"platform": "macos",
"command": "pnpm exec vitest run --config config/vitest.config.ts src/shared/browser-client-host-protocol.test.ts src/main/browser/browser-client-host-attach-request.test.ts src/main/browser/browser-client-network-route-registry.test.ts src/main/browser/paired-runtime-browser-client-host-composition.test.ts src/main/browser/paired-runtime-browser-client-host.test.ts src/main/browser/paired-runtime-browser-client-host-reconnect.test.ts src/main/browser/paired-runtime-browser-host-lease.test.ts src/main/browser/paired-runtime-browser-host-lease-reconnect.test.ts src/main/browser/browser-host-lease-reconnect-delay.test.ts src/main/browser/paired-runtime-browser-network-route.test.ts src/main/runtime/browser-host/browser-host-command-ledger.test.ts src/main/runtime/browser-host/browser-host-command-ledger-capacity.test.ts src/main/runtime/browser-host/browser-host-lease-registry.test.ts src/main/runtime/rpc/methods/browser-client-host.test.ts",
"currentCommand": "pnpm exec vitest run --config config/vitest.config.ts src/shared/browser-client-host-protocol.test.ts src/main/browser/browser-client-network-route-registry.test.ts src/main/browser/paired-runtime-browser-client-host-composition.test.ts src/main/browser/paired-runtime-browser-client-host.test.ts src/main/browser/paired-runtime-browser-client-host-reconnect.test.ts src/main/browser/paired-runtime-browser-host-lease.test.ts src/main/browser/paired-runtime-browser-host-lease-reconnect.test.ts src/main/browser/paired-runtime-browser-network-route.test.ts src/main/runtime/browser-host/browser-host-command-ledger.test.ts src/main/runtime/browser-host/browser-host-command-ledger-capacity.test.ts src/main/runtime/browser-host/browser-host-lease-registry.test.ts src/main/runtime/rpc/methods/browser-client-host.test.ts",
"currentCommand": "pnpm exec vitest run --config config/vitest.config.ts src/shared/browser-client-host-protocol.test.ts src/main/browser/network/client-routes/browser-client-network-route-registry.test.ts src/main/browser/client-hosts/lifecycle/paired-runtime-browser-client-host-composition.test.ts src/main/browser/client-hosts/lifecycle/paired-runtime-browser-client-host.test.ts src/main/browser/client-hosts/lifecycle/paired-runtime-browser-client-host-reconnect.test.ts src/main/browser/client-hosts/leases/paired-runtime-browser-host-lease.test.ts src/main/browser/client-hosts/leases/paired-runtime-browser-host-lease-reconnect.test.ts src/main/browser/network/execution-routes/paired-runtime-browser-network-route.test.ts src/main/runtime/browser-host/browser-host-command-ledger.test.ts src/main/runtime/browser-host/browser-host-command-ledger-capacity.test.ts src/main/runtime/browser-host/browser-host-lease-registry.test.ts src/main/runtime/rpc/methods/browser-client-host.test.ts",
"result": "passed",
"durationSeconds": 2.23,
"summary": "Fourteen files passed 150 negotiated same-client reconnect, legacy skew, active takeover, exact authority, immediate route suspension, independently bounded route retry, stable fail-closed SOCKS, ready-before-replay, completed-mutation dedupe, partial-replay delivery recovery, repeated-loss, stale-callback, explicit-revocation, grace cleanup, and deterministic jittered-backoff tests."
@@ -7292,7 +7293,7 @@
"runner": "local",
"platform": "macos",
"command": "pnpm exec vitest run --config config/vitest.config.ts src/shared/browser-client-host-protocol.test.ts src/main/browser/browser-client-host-attach-request.test.ts src/main/browser/browser-client-page-command-executor.test.ts src/main/browser/browser-client-page-command-integration.test.ts src/main/browser/browser-client-page-inventory.test.ts src/main/browser/paired-runtime-browser-client-host-composition.test.ts src/main/browser/paired-runtime-browser-client-host.test.ts src/main/browser/paired-runtime-browser-host-lease.test.ts src/main/runtime/browser-host/browser-host-lease-registry.test.ts src/main/runtime/rpc/methods/browser-client-host.test.ts src/main/runtime/browser-host/browser-host-page-reconciliation-plan.test.ts",
"currentCommand": "pnpm exec vitest run --config config/vitest.config.ts src/shared/browser-client-host-protocol.test.ts src/main/browser/browser-client-page-command-executor.test.ts src/main/browser/browser-client-page-command-integration.test.ts src/main/browser/browser-client-page-inventory.test.ts src/main/browser/paired-runtime-browser-client-host-composition.test.ts src/main/browser/paired-runtime-browser-client-host.test.ts src/main/browser/paired-runtime-browser-host-lease.test.ts src/main/runtime/browser-host/browser-host-lease-registry.test.ts src/main/runtime/rpc/methods/browser-client-host.test.ts src/main/runtime/browser-host/browser-host-page-reconciliation-plan.test.ts",
"currentCommand": "pnpm exec vitest run --config config/vitest.config.ts src/shared/browser-client-host-protocol.test.ts src/main/browser/client-pages/execution/browser-client-page-command-executor.test.ts src/main/browser/client-pages/execution/browser-client-page-command-integration.test.ts src/main/browser/client-pages/lifecycle/browser-client-page-inventory.test.ts src/main/browser/client-hosts/lifecycle/paired-runtime-browser-client-host-composition.test.ts src/main/browser/client-hosts/lifecycle/paired-runtime-browser-client-host.test.ts src/main/browser/client-hosts/leases/paired-runtime-browser-host-lease.test.ts src/main/runtime/browser-host/browser-host-lease-registry.test.ts src/main/runtime/rpc/methods/browser-client-host.test.ts src/main/runtime/browser-host/browser-host-page-reconciliation-plan.test.ts",
"result": "passed",
"durationSeconds": 7.3,
"summary": "Eleven files passed 145 exact inventory negotiation, 256-page and 768 KiB atomic bounds, worst-case JSON-escaped inventory identities, deterministic optional-URL compaction, legacy-command preservation when inventory is unencodable, legacy strip, immutable authenticated lease snapshot, strict v1/duplicate/foreign-client rejection, paired-device-bound previous-runtime restart admission, missing and unsolicited echo, create-to-active deduplication, renderer/guest-stale outcome-unknown classification, normalized URL bounds, composition sampling, RPC retention, and reconciliation tests."
@@ -7302,6 +7303,7 @@
"runner": "local",
"platform": "macos",
"command": "pnpm exec vitest run --config config/vitest.config.ts src/main/browser/paired-runtime-browser-client-host.test.ts src/main/browser/paired-runtime-browser-host-lease.test.ts src/main/browser/browser-client-host-command-dispatcher.test.ts",
"currentCommand": "pnpm exec vitest run --config config/vitest.config.ts src/main/browser/client-hosts/lifecycle/paired-runtime-browser-client-host.test.ts src/main/browser/client-hosts/leases/paired-runtime-browser-host-lease.test.ts src/main/browser/client-hosts/commands/browser-client-host-command-dispatcher.test.ts",
"result": "passed",
"durationSeconds": 0.8,
"summary": "Fifty tests passed synchronous authority activation, hard 16/256 result bounds, exact transport-close-before-handler-abort ordering, cleanup rejection with guaranteed abort, same-socket result settlement, exact page retirement and forgetting, and late non-cooperative retirement settlement. The broader runtime/browser/shared run passed 9,711 tests with 24 existing skips."
@@ -7320,6 +7322,7 @@
"runner": "local",
"platform": "macos",
"command": "pnpm exec vitest run --config config/vitest.config.ts src/main/browser/browser-client-host-command-dispatcher.test.ts",
"currentCommand": "pnpm exec vitest run --config config/vitest.config.ts src/main/browser/client-hosts/commands/browser-client-host-command-dispatcher.test.ts",
"result": "passed",
"durationSeconds": 0.2,
"summary": "Sixteen tests passed immutable lease/command/result snapshots, exact-authority FIFO dispatch, payload-matched duplicate replay, transactional bounded admission, create dependency failure, stale and forgotten-generation fencing, scheduler replacement, retired-cache release, per-page and global cached-result expiry, pre-abort shared retirement publication, deduplicated/reentrant joining, cancellation, and bounded close."
@@ -7338,7 +7341,7 @@
"runner": "local",
"platform": "macos",
"command": "pnpm exec vitest run --config config/vitest.config.ts src/shared/browser-client-host-protocol.test.ts src/shared/ws-outbound-backpressure-queue.test.ts src/shared/remote-runtime-client.test.ts src/main/runtime/browser-host/browser-host-lease-registry.test.ts src/main/runtime/runtime-rpc-browser-host-admission.test.ts src/main/runtime/rpc/methods/browser-client-host.test.ts src/main/runtime/rpc/methods/browser-network-tunnel.test.ts src/main/browser/paired-runtime-browser-host-lease.test.ts src/main/browser/paired-runtime-browser-network-route.test.ts src/main/runtime/browser-network-tunnel-paired-runtime.integration.test.ts src/main/browser/browser-network-tunnel-client.test.ts src/main/browser/browser-network-tunnel-client-memory-budget.test.ts src/main/browser/browser-network-tunnel-session.test.ts src/main/browser/browser-network-tunnel-session-aggregate-memory.test.ts src/main/browser/browser-network-tunnel-outbound-memory-budget.test.ts src/main/browser/remote-browser-socks-server.test.ts",
"currentCommand": "pnpm exec vitest run --config config/vitest.config.ts src/shared/browser-client-host-protocol.test.ts src/shared/ws-outbound-backpressure-queue.test.ts src/shared/remote-runtime/remote-runtime-client.test.ts src/main/runtime/browser-host/browser-host-lease-registry.test.ts src/main/runtime/runtime-rpc-browser-host-admission.test.ts src/main/runtime/rpc/methods/browser-client-host.test.ts src/main/runtime/rpc/methods/browser-network-tunnel.test.ts src/main/browser/paired-runtime-browser-host-lease.test.ts src/main/browser/paired-runtime-browser-network-route.test.ts src/main/runtime/browser-network-tunnel-paired-runtime.integration.test.ts src/main/browser/browser-network-tunnel-client.test.ts src/main/browser/browser-network-tunnel-client-memory-budget.test.ts src/main/browser/browser-network-tunnel-session.test.ts src/main/browser/browser-network-tunnel-session-aggregate-memory.test.ts src/main/browser/browser-network-tunnel-outbound-memory-budget.test.ts src/main/browser/remote-browser-socks-server.test.ts",
"currentCommand": "pnpm exec vitest run --config config/vitest.config.ts src/shared/browser-client-host-protocol.test.ts src/shared/ws-outbound-backpressure-queue.test.ts src/shared/remote-runtime/remote-runtime-client.test.ts src/main/runtime/browser-host/browser-host-lease-registry.test.ts src/main/runtime/runtime-rpc-browser-host-admission.test.ts src/main/runtime/rpc/methods/browser-client-host.test.ts src/main/runtime/rpc/methods/browser-network-tunnel.test.ts src/main/browser/client-hosts/leases/paired-runtime-browser-host-lease.test.ts src/main/browser/network/execution-routes/paired-runtime-browser-network-route.test.ts src/main/runtime/browser-network-tunnel-paired-runtime.integration.test.ts src/main/browser/network/tunnels/browser-network-tunnel-client.test.ts src/main/browser/network/tunnels/browser-network-tunnel-client-memory-budget.test.ts src/main/browser/network/tunnels/browser-network-tunnel-session.test.ts src/main/browser/network/tunnels/browser-network-tunnel-session-aggregate-memory.test.ts src/main/browser/network/tunnels/browser-network-tunnel-outbound-memory-budget.test.ts src/main/browser/network/tunnels/remote-browser-socks-server.test.ts",
"result": "passed",
"durationSeconds": 3.9,
"summary": "Sixteen files passed 154 bounded page-command negotiation, legacy ready/revoked compatibility, exact authority, unnegotiated and stale-command delivery, lease, tunnel, memory, flow-control, SOCKS, and paired E2EE tests."
@@ -7366,7 +7369,7 @@
"runner": "local",
"platform": "macos",
"command": "pnpm exec vitest run --config config/vitest.config.ts src/shared/browser-client-host-protocol.test.ts src/shared/ws-outbound-backpressure-queue.test.ts src/shared/remote-runtime-client.test.ts src/main/runtime/browser-host/browser-host-lease-registry.test.ts src/main/runtime/runtime-rpc-browser-host-admission.test.ts src/main/runtime/rpc/methods/browser-client-host.test.ts src/main/runtime/rpc/methods/browser-network-tunnel.test.ts src/main/browser/paired-runtime-browser-host-lease.test.ts src/main/browser/paired-runtime-browser-network-route.test.ts src/main/runtime/browser-network-tunnel-paired-runtime.integration.test.ts src/main/browser/browser-network-tunnel-client.test.ts src/main/browser/browser-network-tunnel-client-memory-budget.test.ts src/main/browser/browser-network-tunnel-session.test.ts src/main/browser/browser-network-tunnel-session-aggregate-memory.test.ts src/main/browser/browser-network-tunnel-outbound-memory-budget.test.ts src/main/browser/remote-browser-socks-server.test.ts",
"currentCommand": "pnpm exec vitest run --config config/vitest.config.ts src/shared/browser-client-host-protocol.test.ts src/shared/ws-outbound-backpressure-queue.test.ts src/shared/remote-runtime/remote-runtime-client.test.ts src/main/runtime/browser-host/browser-host-lease-registry.test.ts src/main/runtime/runtime-rpc-browser-host-admission.test.ts src/main/runtime/rpc/methods/browser-client-host.test.ts src/main/runtime/rpc/methods/browser-network-tunnel.test.ts src/main/browser/paired-runtime-browser-host-lease.test.ts src/main/browser/paired-runtime-browser-network-route.test.ts src/main/runtime/browser-network-tunnel-paired-runtime.integration.test.ts src/main/browser/browser-network-tunnel-client.test.ts src/main/browser/browser-network-tunnel-client-memory-budget.test.ts src/main/browser/browser-network-tunnel-session.test.ts src/main/browser/browser-network-tunnel-session-aggregate-memory.test.ts src/main/browser/browser-network-tunnel-outbound-memory-budget.test.ts src/main/browser/remote-browser-socks-server.test.ts",
"currentCommand": "pnpm exec vitest run --config config/vitest.config.ts src/shared/browser-client-host-protocol.test.ts src/shared/ws-outbound-backpressure-queue.test.ts src/shared/remote-runtime/remote-runtime-client.test.ts src/main/runtime/browser-host/browser-host-lease-registry.test.ts src/main/runtime/runtime-rpc-browser-host-admission.test.ts src/main/runtime/rpc/methods/browser-client-host.test.ts src/main/runtime/rpc/methods/browser-network-tunnel.test.ts src/main/browser/client-hosts/leases/paired-runtime-browser-host-lease.test.ts src/main/browser/network/execution-routes/paired-runtime-browser-network-route.test.ts src/main/runtime/browser-network-tunnel-paired-runtime.integration.test.ts src/main/browser/network/tunnels/browser-network-tunnel-client.test.ts src/main/browser/network/tunnels/browser-network-tunnel-client-memory-budget.test.ts src/main/browser/network/tunnels/browser-network-tunnel-session.test.ts src/main/browser/network/tunnels/browser-network-tunnel-session-aggregate-memory.test.ts src/main/browser/network/tunnels/browser-network-tunnel-outbound-memory-budget.test.ts src/main/browser/network/tunnels/remote-browser-socks-server.test.ts",
"result": "passed",
"durationSeconds": 7.7,
"summary": "Sixteen files passed 131 route, lease, aggregate application/encrypted/native memory, exact release, bounded-drain, stable-listener and protocol-failure reconnect, v1 reattach compatibility, generation/stream-ID fencing, SOCKS, and real paired E2EE tests; the full runtime-RPC suite separately passed 1,349 tests with one skip."
@@ -7376,6 +7379,7 @@
"runner": "local",
"platform": "macos",
"command": "pnpm exec vitest run --config config/vitest.config.ts src/shared/browser-client-host-protocol.test.ts src/main/runtime/browser-host/browser-host-lease-registry.test.ts src/main/runtime/runtime-rpc-browser-host-admission.test.ts src/main/runtime/rpc/methods/browser-client-host.test.ts src/main/runtime/rpc/methods/browser-network-tunnel.test.ts src/main/browser/paired-runtime-browser-host-lease.test.ts src/main/browser/paired-runtime-browser-network-route.test.ts src/main/runtime/browser-network-tunnel-paired-runtime.integration.test.ts src/main/browser/browser-network-tunnel-client.test.ts src/main/browser/browser-network-tunnel-session.test.ts src/main/browser/remote-browser-socks-server.test.ts",
"currentCommand": "pnpm exec vitest run --config config/vitest.config.ts src/shared/browser-client-host-protocol.test.ts src/main/runtime/browser-host/browser-host-lease-registry.test.ts src/main/runtime/runtime-rpc-browser-host-admission.test.ts src/main/runtime/rpc/methods/browser-client-host.test.ts src/main/runtime/rpc/methods/browser-network-tunnel.test.ts src/main/browser/client-hosts/leases/paired-runtime-browser-host-lease.test.ts src/main/browser/network/execution-routes/paired-runtime-browser-network-route.test.ts src/main/runtime/browser-network-tunnel-paired-runtime.integration.test.ts src/main/browser/network/tunnels/browser-network-tunnel-client.test.ts src/main/browser/network/tunnels/browser-network-tunnel-session.test.ts src/main/browser/network/tunnels/remote-browser-socks-server.test.ts",
"result": "passed",
"durationSeconds": 6.9,
"summary": "Eleven files passed 73 admission, lease, route-generation, bidirectional retained-byte/chunk, pending-open/rate, exact-release, SOCKS, and real paired E2EE tests; the full runtime-RPC suite separately passed 1,347 tests with one skip."
@@ -7385,6 +7389,7 @@
"runner": "local",
"platform": "macos",
"command": "pnpm exec vitest run --config config/vitest.config.ts src/shared/browser-client-host-protocol.test.ts src/main/runtime/browser-host/browser-host-lease-registry.test.ts src/main/runtime/runtime-rpc-browser-host-admission.test.ts src/main/runtime/rpc/methods/browser-client-host.test.ts src/main/runtime/rpc/methods/browser-network-tunnel.test.ts src/main/browser/paired-runtime-browser-host-lease.test.ts src/main/browser/paired-runtime-browser-network-route.test.ts src/main/runtime/browser-network-tunnel-paired-runtime.integration.test.ts src/main/browser/browser-network-tunnel-client.test.ts src/main/browser/browser-network-tunnel-session.test.ts src/main/browser/remote-browser-socks-server.test.ts",
"currentCommand": "pnpm exec vitest run --config config/vitest.config.ts src/shared/browser-client-host-protocol.test.ts src/main/runtime/browser-host/browser-host-lease-registry.test.ts src/main/runtime/runtime-rpc-browser-host-admission.test.ts src/main/runtime/rpc/methods/browser-client-host.test.ts src/main/runtime/rpc/methods/browser-network-tunnel.test.ts src/main/browser/client-hosts/leases/paired-runtime-browser-host-lease.test.ts src/main/browser/network/execution-routes/paired-runtime-browser-network-route.test.ts src/main/runtime/browser-network-tunnel-paired-runtime.integration.test.ts src/main/browser/network/tunnels/browser-network-tunnel-client.test.ts src/main/browser/network/tunnels/browser-network-tunnel-session.test.ts src/main/browser/network/tunnels/remote-browser-socks-server.test.ts",
"result": "passed",
"durationSeconds": 3.4,
"summary": "Eleven files passed 67 lease, reserved long-poll and host admission, token-safe placement retirement, authority, capability, route-generation, adversarial-revocation, lifecycle, flow-control, SOCKS, and real paired E2EE tests."
@@ -7394,6 +7399,7 @@
"runner": "local",
"platform": "macos",
"command": "pnpm exec vitest run --config config/vitest.config.ts src/main/browser/browser-network-tunnel-client.test.ts src/main/browser/paired-runtime-browser-network-route.test.ts src/main/runtime/runtime-binary-message-router.test.ts src/main/runtime/rpc/methods/browser-network-tunnel.test.ts src/main/runtime/browser-network-tunnel-paired-runtime.integration.test.ts",
"currentCommand": "pnpm exec vitest run --config config/vitest.config.ts src/main/browser/network/tunnels/browser-network-tunnel-client.test.ts src/main/browser/network/execution-routes/paired-runtime-browser-network-route.test.ts src/main/runtime/runtime-binary-message-router.test.ts src/main/runtime/rpc/methods/browser-network-tunnel.test.ts src/main/runtime/browser-network-tunnel-paired-runtime.integration.test.ts",
"result": "passed",
"durationSeconds": 4.7,
"summary": "Five files passed 19 source-flow, settled-consumption, chunk-bound, ordered-close, readiness-deadline, cleanup-failure, binary-routing, attach-authorization, and real paired-runtime E2EE SOCKS-to-HTTP tests."
@@ -7482,22 +7488,22 @@
"invariant": "A client-hosted partition is derived only in main from stable Orca-profile, browser-profile, authority-connection, and execution-host identities. Raw identities and individually linkable component hashes never enter its path-safe partition name. Durable binding metadata must match and precede Chromium partition data before reuse. One live partition never changes execution host or proxy endpoint. Fixed SOCKS5 setup starts immediately after Session creation, before policy installation can yield or a persisted worker is awakened; no partition enters the webview allowlist until browser policy is installed, inherited connections are closed, and resolveProxy returns exactly that one listener. Initial route-partition attachment is blank-only. Its exact WebContents is quarantined before applying non-proxied WebRTC denial and remains navigation- and popup-denied if policy application or cleanup fails. Distinct live partitions, retained logical page generations, durable bindings, and binding-file reads remain bounded. No UDP transport a route-partition page can reach — WebRTC, WebTransport, or forced QUIC — emits a datagram to the desktop, the Direct Sockets constructors stay absent from every guest so no page can kill its renderer, and the process never enables a DoH host-resolver mode.",
"oracle": "Derive two delimiter-adversarial identities and require distinct full-digest path-safe partitions with no raw IDs or component hashes. Persist one binding, reload it, and reject replacement, malformed or oversized state, Chromium data without matching metadata, and the 513th binding. Prepare one partition and require setProxy with <-loopback> to be invoked immediately after getSession and before policy setup, then closeAllConnections and exact SOCKS5 resolveProxy while isAllowedPartition remains false; only then may it become live. Reject DIRECT, endpoint retargeting, and capacity overflow. Require quarantine before disable_non_proxied_udp and admission; under real Electron require the unprotected control to emit STUN and the protected guest to emit zero direct UDP packets.",
"commands": [
"pnpm exec vitest run --config config/vitest.config.ts src/main/browser/browser-route-identity.test.ts src/main/browser/browser-route-partition-binding-store.test.ts src/main/browser/browser-route-session-registry.test.ts src/main/browser/browser-session-registry.test.ts src/main/browser/browser-session-startup.test.ts src/main/window/createMainWindow.test.ts",
"pnpm exec vitest run --config config/vitest.config.ts src/main/browser/browser-route-webcontents-registry.test.ts src/main/browser/browser-route-webrtc-egress.electron.test.ts"
"pnpm exec vitest run --config config/vitest.config.ts src/main/browser/routing/partitions/browser-route-identity.test.ts src/main/browser/routing/partitions/browser-route-partition-binding-store.test.ts src/main/browser/routing/sessions/browser-route-session-registry.test.ts src/main/browser/browser-session-registry.test.ts src/main/browser/browser-session-startup.test.ts src/main/window/createMainWindow.test.ts",
"pnpm exec vitest run --config config/vitest.config.ts src/main/browser/routing/guest-authority/browser-route-webcontents-registry.test.ts src/main/browser/network/egress/browser-route-webrtc-egress.electron.test.ts"
],
"testFiles": [
"src/main/browser/browser-route-identity.test.ts",
"src/main/browser/browser-route-partition-binding-store.test.ts",
"src/main/browser/browser-route-session-registry.test.ts",
"src/main/browser/browser-route-webrtc-egress.electron.test.ts",
"src/main/browser/browser-route-webcontents-registry.test.ts",
"src/main/browser/routing/partitions/browser-route-identity.test.ts",
"src/main/browser/routing/partitions/browser-route-partition-binding-store.test.ts",
"src/main/browser/routing/sessions/browser-route-session-registry.test.ts",
"src/main/browser/network/egress/browser-route-webrtc-egress.electron.test.ts",
"src/main/browser/routing/guest-authority/browser-route-webcontents-registry.test.ts",
"src/main/browser/browser-session-registry.test.ts",
"src/main/browser/browser-session-startup.test.ts",
"src/main/window/createMainWindow.test.ts"
],
"assertionRefs": [
{
"file": "src/main/browser/browser-route-identity.test.ts",
"file": "src/main/browser/routing/partitions/browser-route-identity.test.ts",
"assertions": [
"aggregate partition and durable binding fingerprints are stable and opaque",
"delimiter-containing identities remain structurally distinct",
@@ -7506,7 +7512,7 @@
]
},
{
"file": "src/main/browser/browser-route-partition-binding-store.test.ts",
"file": "src/main/browser/routing/partitions/browser-route-partition-binding-store.test.ts",
"assertions": [
"opaque bindings survive restart",
"replacement and malformed metadata fail closed",
@@ -7515,7 +7521,7 @@
]
},
{
"file": "src/main/browser/browser-route-session-registry.test.ts",
"file": "src/main/browser/routing/sessions/browser-route-session-registry.test.ts",
"assertions": [
"policy, proxy, connection closure, and verification finish before allowlisting",
"DIRECT and endpoint retargeting are rejected",
@@ -7527,14 +7533,14 @@
]
},
{
"file": "src/main/browser/browser-route-webrtc-egress.electron.test.ts",
"file": "src/main/browser/network/egress/browser-route-webrtc-egress.electron.test.ts",
"assertions": [
"the unprotected SOCKS-partition control emits direct STUN packets",
"disable_non_proxied_udp leaves the exact guest with zero direct UDP packets"
]
},
{
"file": "src/main/browser/browser-route-webcontents-registry.test.ts",
"file": "src/main/browser/routing/guest-authority/browser-route-webcontents-registry.test.ts",
"assertions": [
"route guests apply non-proxied WebRTC denial before admission",
"policy failure remains quarantined through delayed or failed guest close"
@@ -7554,6 +7560,7 @@
"runner": "local",
"platform": "macos",
"command": "pnpm exec vitest run --config config/vitest.config.ts src/main/browser/browser-route-webcontents-registry.test.ts src/main/browser/browser-route-webrtc-egress.electron.test.ts",
"currentCommand": "pnpm exec vitest run --config config/vitest.config.ts src/main/browser/routing/guest-authority/browser-route-webcontents-registry.test.ts src/main/browser/network/egress/browser-route-webrtc-egress.electron.test.ts",
"result": "passed",
"durationSeconds": 8,
"summary": "Two files passed 24 assertions; the real Electron control emitted direct STUN, while the exact per-guest policy emitted zero desktop UDP packets and policy failure remained quarantined through delayed or failed close."
@@ -7563,6 +7570,7 @@
"runner": "local",
"platform": "macos",
"command": "pnpm exec vitest run --config config/vitest.config.ts src/main/browser/browser-route-identity.test.ts src/main/browser/browser-route-partition-binding-store.test.ts src/main/browser/browser-route-session-registry.test.ts src/main/browser/browser-session-registry.test.ts src/main/browser/browser-session-startup.test.ts src/main/window/createMainWindow.test.ts",
"currentCommand": "pnpm exec vitest run --config config/vitest.config.ts src/main/browser/routing/partitions/browser-route-identity.test.ts src/main/browser/routing/partitions/browser-route-partition-binding-store.test.ts src/main/browser/routing/sessions/browser-route-session-registry.test.ts src/main/browser/browser-session-registry.test.ts src/main/browser/browser-session-startup.test.ts src/main/window/createMainWindow.test.ts",
"result": "passed",
"durationSeconds": 0.5,
"summary": "Six files passed 150 opaque identity, durable collision binding, bounded partition/page, proxy-before-allowlist, policy reuse, profile startup, and blank-only attach tests."
@@ -7578,7 +7586,7 @@
},
"redGreenEvidence": {
"status": "partial",
"evidence": "The TCP A/B control first reached all six target paths directly, while the fixed SOCKS arm routed the same HTTP, HTTPS, WebSocket, redirect, subresource, and download traffic plus remote DNS with zero direct target connections. The two-launch worker control reached desktop localhost before setProxy; immediate setProxy routed the same wake and later fetch through SOCKS. The WebRTC control emitted four direct STUN packets until disable_non_proxied_udp reduced the capture to zero. Non-WebRTC UDP and network-service restart remain explicit residuals. Historical receipts before removing the source-only tests, preserved verbatim with their originally executed commands (the narrowed commands were not rerun here): [{\"date\":\"2026-08-20\",\"runner\":\"local\",\"platform\":\"macos\",\"command\":\"pnpm exec vitest run --config config/vitest.config.ts src/main/browser/browser-route-h3-egress.electron.test.ts src/main/browser/browser-route-dns-prefetch.electron.test.ts src/main/startup/secure-dns-census.test.ts\",\"result\":\"passed\",\"durationSeconds\":21,\"summary\":\"The direct control emitted 5 WebTransport and 6 forced-QUIC datagrams while the SOCKS route partition emitted zero of each. With Direct Sockets explicitly enabled the control exposed TCPSocket/UDPSocket/TCPServerSocket and constructing one killed the guest renderer; the shipped disable-features list left all three undefined and the renderer alive. The dns-prefetch tripwire recorded HOST_RESOLVER_SYSTEM_TASK for the prefetched host with zero events for an unreferenced control host, documenting the accepted local-resolution residual.\",\"notes\":\"The dns-prefetch expectation intentionally asserts the leak. Flip it to an empty event list when the upstream Electron PrefetchDNS fix lands.\"}] Archived provider-experiment receipts after removing the standalone TCP and persisted-worker suites, preserved verbatim with their originally executed commands (remaining and narrowed commands were not rerun here): [\n {\n \"date\": \"2026-08-17\",\n \"runner\": \"local\",\n \"platform\": \"macos\",\n \"command\": \"pnpm exec vitest run --config config/vitest.config.ts src/main/browser/browser-route-tcp-egress.electron.test.ts\",\n \"result\": \"passed\",\n \"durationSeconds\": 1,\n \"summary\": \"The real Electron direct control reached all six TCP request surfaces; the fixed SOCKS session carried HTTP, HTTPS, WebSocket, redirects, subresources, downloads, and remote DNS with zero direct target connections.\"\n },\n {\n \"date\": \"2026-08-16\",\n \"runner\": \"local\",\n \"platform\": \"macos\",\n \"command\": \"pnpm exec vitest run --config config/vitest.config.ts src/main/browser/browser-route-session-registry.test.ts src/main/browser/browser-route-persisted-worker-egress.electron.test.ts src/main/browser/browser-route-webrtc-egress.electron.test.ts\",\n \"result\": \"passed\",\n \"durationSeconds\": 10,\n \"summary\": \"Three files passed 28 tests. The two-launch worker control reached desktop localhost before proxy setup; immediate setProxy invocation routed the same wake and a later worker fetch through SOCKS with path-attributed direct counts remaining zero. Both resolved and rejected proxy setup keep failed-policy retries joined through connection cleanup. The protected WebRTC guest emitted zero direct UDP packets.\"\n }\n ]"
"evidence": "The TCP A/B control first reached all six target paths directly, while the fixed SOCKS arm routed the same HTTP, HTTPS, WebSocket, redirect, subresource, and download traffic plus remote DNS with zero direct target connections. The two-launch worker control reached desktop localhost before setProxy; immediate setProxy routed the same wake and later fetch through SOCKS. The WebRTC control emitted four direct STUN packets until disable_non_proxied_udp reduced the capture to zero. Non-WebRTC UDP and network-service restart remain explicit residuals. Historical receipts before removing the source-only tests, preserved verbatim with their originally executed commands (the narrowed commands were not rerun here): [{\"date\":\"2026-08-20\",\"runner\":\"local\",\"platform\":\"macos\",\"command\":\"pnpm exec vitest run --config config/vitest.config.ts src/main/browser/browser-route-h3-egress.electron.test.ts src/main/browser/browser-route-dns-prefetch.electron.test.ts src/main/startup/secure-dns-census.test.ts\",\"result\":\"passed\",\"durationSeconds\":21,\"summary\":\"The direct control emitted 5 WebTransport and 6 forced-QUIC datagrams while the SOCKS route partition emitted zero of each. With Direct Sockets explicitly enabled the control exposed TCPSocket/UDPSocket/TCPServerSocket and constructing one killed the guest renderer; the shipped disable-features list left all three undefined and the renderer alive. The dns-prefetch tripwire recorded HOST_RESOLVER_SYSTEM_TASK for the prefetched host with zero events for an unreferenced control host, documenting the accepted local-resolution residual.\",\"notes\":\"The dns-prefetch expectation intentionally asserts the leak. Flip it to an empty event list when the upstream Electron PrefetchDNS fix lands.\"}] Archived provider-experiment receipts after removing the standalone TCP and persisted-worker suites, preserved verbatim with their originally executed commands (remaining and narrowed commands were not rerun here): [\n {\n \"date\": \"2026-08-17\",\n \"runner\": \"local\",\n \"platform\": \"macos\",\n \"command\": \"pnpm exec vitest run --config config/vitest.config.ts src/main/browser/browser-route-tcp-egress.electron.test.ts\",\n \"result\": \"passed\",\n \"durationSeconds\": 1,\n \"summary\": \"The real Electron direct control reached all six TCP request surfaces; the fixed SOCKS session carried HTTP, HTTPS, WebSocket, redirects, subresources, downloads, and remote DNS with zero direct target connections.\"\n },\n {\n \"date\": \"2026-08-16\",\n \"runner\": \"local\",\n \"platform\": \"macos\",\n \"command\": \"pnpm exec vitest run --config config/vitest.config.ts src/main/browser/routing/sessions/browser-route-session-registry.test.ts src/main/browser/browser-route-persisted-worker-egress.electron.test.ts src/main/browser/network/egress/browser-route-webrtc-egress.electron.test.ts\",\n \"result\": \"passed\",\n \"durationSeconds\": 10,\n \"summary\": \"Three files passed 28 tests. The two-launch worker control reached desktop localhost before proxy setup; immediate setProxy invocation routed the same wake and a later worker fetch through SOCKS with path-attributed direct counts remaining zero. Both resolved and rejected proxy setup keep failed-policy retries joined through connection cleanup. The protected WebRTC guest emitted zero direct UDP packets.\"\n }\n ]"
},
"performanceBudget": {
"required": true,
@@ -7632,20 +7640,20 @@
"invariant": "A prepared route page binds its opaque authority to one exact main-observed renderer WebContents while that page generation is active or retiring. Before requesting a blank guest, the production command executor must retain the exact execution-host route, verify its key, and prepare the route/profile partition for one still-current renderer generation. Main sends the approved opaque partition and exact page generation, but no target URL, through one bounded request admitted against the exact current renderer object and document generation; only a schema-valid reply from that same object, request, operation, and page generation can settle it. Preload accepts requests only in the top frame, binds outcomes to the admitted request, fails overflow and unavailable subscribers within a bounded interval, and fences callbacks replaced by a newer document subscriber. Renderer retains each blank webview under one non-React document host keyed by the exact partition, page ID, and generation, never reparents it, and holds an attached or process-lost generation until exact destruction. Renderer replacement, WebContents-ID reuse, abort, timeout, malformed reply, disposal, and process loss fence pending work without admitting a late reply. Renderer-document replacement retires before commit, while blocked external navigation is ignored and failed or cancelled provisional navigation restores only the exact surviving frame. A WebContents whose Electron Session has belonged to a prepared route partition is quarantined synchronously after generic guest policy installation, including when page authority disappears between will-attach and did-attach. It must be a live blank webview owned by the exact renderer WebContents. Nonblank navigation remains denied until main matches the exact partition, browser page, page-host generation, guest WebContents, renderer WebContents, and opaque live page authority, then issues a separate grant. Every later navigation rechecks the same opaque guest incarnation and page authority, so reusing a logical tuple or WebContents ID cannot revive a stale guest. Releasing that authority, losing or destroying the guest process, or losing its owning renderer before, during, or after registration synchronously fences pending authority admission, ends exact logical authority, revokes navigation, and closes any attached guest through the same retirement barrier. Failed, aborted, or retired creation attempts revoke the exact guest and renderer mount before releasing the Session and route, attempt every safe cleanup, and never clear or admit a replacement generation after uncertain cleanup. Session and route release require exact guest destruction proof; an ambiguous mount outcome retains them. If close is delayed or fails, the partition stays outside attachment admission and route policies remain installed until the exact destroyed acknowledgement. Route popups remain denied throughout. Active and retiring page maps and pending renderer requests are bounded, stale callbacks cannot retire or clear replacements, and non-route browser guests retain existing behavior.",
"oracle": "Prepare a page for one renderer and require authority lookup and registration by a sibling renderer to fail; reject owner replacement while the generation is active or retiring, then lose the owning renderer before guest registration and require only its prepared pages to retire. Pause partition setup, lose the owner, and require its waiter to fail without authority; add a live sibling waiter to the same pending setup and require only that waiter to admit; exceed the configured waiter cap and require immediate refusal. Make policy cleanup throw in the first of two owned partitions and require the sweep to retire both without restoring admission. Through the production executor, retain one exact route, prepare its partition, mount blank on one current renderer, register and grant the exact guest in order, then load only its normalized HTTP(S) URL. Queue renderer requests before subscription, replace one subscriber, overflow both request and page budgets, race attachment with retirement, delay guest identity until DOM readiness, lose the guest renderer, and require exact bounded settlement without reparenting or cross-partition collision. Under real Electron, require the main bridge to accept only the actual main-frame reply, match the positive renderer WebContents ID to did-attach-webview, destroy it on retirement, and reject and remove a denied unprepared guest. Reject a mismatched route, stale renderer or page generation, and file URL without touching Chromium. Abort or fail registration after mount and require exact guest, renderer, Session, and route cleanup in that order; make renderer cleanup reject but require destruction before later release, and keep the generation fenced from replacement. Make guest retirement fail or mount outcome ambiguous and require every safe cleanup while Session and route remain retained. Destroy a guest spontaneously before command cleanup, reuse its WebContents identity, and require the old opaque claim not to retire the replacement while the replacement claim still can. Attach a blank route guest and require nonblank navigation plus every popup to be denied. Reject a wrong renderer, wrong page generation, nonblank initial document, wrong WebContents type, destroyed guest, and excess attachment; delay or fail its close and require navigation and popups to remain denied. Register the exact prepared tuple and prove navigation remains denied until a second grant; then allow repeated HTTP(S) navigation while continuing to deny file navigation and popups. Release logical page authority with delayed guest close; require immediate navigation revocation, one exact close, no partition admission, no policy cleanup, and same-tuple preparation refusal until destroyed acknowledgement. Make destroyed inspection throw and require retirement plus navigation to remain fail-closed until the explicit destroyed event. Acknowledge destruction, require one policy cleanup, reprepare the tuple, replay stale acknowledgement, and prove the replacement remains admitted. Make retirement startup throw and require policy plus capacity to remain fail-closed. Retire two pages sharing one partition and require cleanup only after both exact acknowledgements. Emit guest render-process-gone and destroyed, and emit owning-renderer process loss through the main-window boundary; require exact logical retirement, close, and grant revocation while unrelated renderer guests and prepared pages survive. Reject retirement for the wrong opaque authority. Reprepare after ordinary release, require a new opaque authority, deny the stale guest, and admit an exact replacement. Destroy a registered guest under real destroyed state, verify best-effort listener release, replay stale cleanup, and prove its replacement remains grantable. Mutate caller input after registration and prove main-owned authority is unchanged. Attach a normal browser Session and require no route-registry mutation.",
"commands": [
"pnpm exec vitest run --config config/vitest.config.ts src/main/browser/browser-client-page-command-executor.test.ts src/main/browser/browser-client-page-command-integration.test.ts src/main/browser/browser-client-page-renderer-bridge.test.ts src/main/browser/browser-client-page-renderer-lifecycle.electron.test.ts src/main/browser/browser-client-page-renderer-runtime.test.ts src/main/browser/browser-route-session-registry.test.ts src/main/browser/browser-route-webcontents-registry.test.ts src/preload/browser-client-page-renderer-requests.test.ts src/renderer/src/components/browser-pane/browser-client-page-retained-registry.test.ts src/renderer/src/components/browser-pane/browser-client-page-renderer-installation.test.ts src/main/window/createMainWindow.test.ts src/main/window/renderer-document-navigation.test.ts",
"pnpm exec vitest run --config config/vitest.config.ts src/main/browser/browser-client-page-command-executor.test.ts src/main/browser/browser-client-page-command-integration.test.ts src/main/browser/browser-client-page-renderer-bridge.test.ts src/main/browser/browser-client-page-renderer-runtime.test.ts src/main/browser/browser-route-session-registry.test.ts src/main/browser/browser-route-webcontents-registry.test.ts src/main/window/createMainWindow.test.ts src/main/window/renderer-document-navigation.test.ts",
"pnpm exec vitest run --config config/vitest.config.ts src/main/browser/browser-client-page-reconciliation-adapters.test.ts src/main/browser/browser-route-prepared-page-rekey.test.ts"
"pnpm exec vitest run --config config/vitest.config.ts src/main/browser/client-pages/execution/browser-client-page-command-executor.test.ts src/main/browser/client-pages/execution/browser-client-page-command-integration.test.ts src/main/browser/client-pages/renderer/browser-client-page-renderer-bridge.test.ts src/main/browser/client-pages/renderer/browser-client-page-renderer-lifecycle.electron.test.ts src/main/browser/client-pages/renderer/browser-client-page-renderer-runtime.test.ts src/main/browser/routing/sessions/browser-route-session-registry.test.ts src/main/browser/routing/guest-authority/browser-route-webcontents-registry.test.ts src/preload/browser-client-page-renderer-requests.test.ts src/renderer/src/components/browser-pane/browser-client-page-retained-registry.test.ts src/renderer/src/components/browser-pane/browser-client-page-renderer-installation.test.ts src/main/window/createMainWindow.test.ts src/main/window/renderer-document-navigation.test.ts",
"pnpm exec vitest run --config config/vitest.config.ts src/main/browser/client-pages/execution/browser-client-page-command-executor.test.ts src/main/browser/client-pages/execution/browser-client-page-command-integration.test.ts src/main/browser/client-pages/renderer/browser-client-page-renderer-bridge.test.ts src/main/browser/client-pages/renderer/browser-client-page-renderer-runtime.test.ts src/main/browser/routing/sessions/browser-route-session-registry.test.ts src/main/browser/routing/guest-authority/browser-route-webcontents-registry.test.ts src/main/window/createMainWindow.test.ts src/main/window/renderer-document-navigation.test.ts",
"pnpm exec vitest run --config config/vitest.config.ts src/main/browser/client-pages/lifecycle/browser-client-page-reconciliation-adapters.test.ts src/main/browser/routing/sessions/browser-route-prepared-page-rekey.test.ts"
],
"testFiles": [
"src/main/browser/browser-client-page-command-executor.test.ts",
"src/main/browser/browser-client-page-command-integration.test.ts",
"src/main/browser/browser-client-page-reconciliation-adapters.test.ts",
"src/main/browser/browser-client-page-renderer-bridge.test.ts",
"src/main/browser/browser-client-page-renderer-lifecycle.electron.test.ts",
"src/main/browser/browser-client-page-renderer-runtime.test.ts",
"src/main/browser/browser-route-session-registry.test.ts",
"src/main/browser/browser-route-prepared-page-rekey.test.ts",
"src/main/browser/browser-route-webcontents-registry.test.ts",
"src/main/browser/client-pages/execution/browser-client-page-command-executor.test.ts",
"src/main/browser/client-pages/execution/browser-client-page-command-integration.test.ts",
"src/main/browser/client-pages/lifecycle/browser-client-page-reconciliation-adapters.test.ts",
"src/main/browser/client-pages/renderer/browser-client-page-renderer-bridge.test.ts",
"src/main/browser/client-pages/renderer/browser-client-page-renderer-lifecycle.electron.test.ts",
"src/main/browser/client-pages/renderer/browser-client-page-renderer-runtime.test.ts",
"src/main/browser/routing/sessions/browser-route-session-registry.test.ts",
"src/main/browser/routing/sessions/browser-route-prepared-page-rekey.test.ts",
"src/main/browser/routing/guest-authority/browser-route-webcontents-registry.test.ts",
"src/preload/browser-client-page-renderer-requests.test.ts",
"src/renderer/src/components/browser-pane/browser-client-page-retained-registry.test.ts",
"src/renderer/src/components/browser-pane/browser-client-page-renderer-installation.test.ts",
@@ -7654,7 +7662,7 @@
],
"assertionRefs": [
{
"file": "src/main/browser/browser-client-page-command-executor.test.ts",
"file": "src/main/browser/client-pages/execution/browser-client-page-command-executor.test.ts",
"assertions": [
"exact execution route and trusted renderer precede blank guest registration and grant",
"navigation targets only the retained opaque guest incarnation and exact generation and rejects local files",
@@ -7664,20 +7672,20 @@
]
},
{
"file": "src/main/browser/browser-client-page-command-integration.test.ts",
"file": "src/main/browser/client-pages/execution/browser-client-page-command-integration.test.ts",
"assertions": [
"a fresh new-authority dispatcher reclaims an old-authority executor page while real route Session and WebContents registries preserve exact cleanup"
]
},
{
"file": "src/main/browser/browser-client-page-reconciliation-adapters.test.ts",
"file": "src/main/browser/client-pages/lifecycle/browser-client-page-reconciliation-adapters.test.ts",
"assertions": [
"exact reclaim preserves the guest while rekeying renderer, Session, lifecycle claim, and navigation authority",
"rekey uncertainty retires both possible renderer identities and failed restore navigation destroys the affected guest before releasing retained resources"
]
},
{
"file": "src/main/browser/browser-client-page-renderer-bridge.test.ts",
"file": "src/main/browser/client-pages/renderer/browser-client-page-renderer-bridge.test.ts",
"assertions": [
"mount requests carry only the main-approved partition and exact page generation to the exact current main-frame document",
"sender spoofing, subframe replies, stale document frames, malformed replies, renderer replacement, WebContents-ID reuse, abort, and late replies fail closed",
@@ -7686,14 +7694,14 @@
]
},
{
"file": "src/main/browser/browser-client-page-renderer-runtime.test.ts",
"file": "src/main/browser/client-pages/renderer/browser-client-page-renderer-runtime.test.ts",
"assertions": [
"one app-lifetime reply listener binds the exact current Electron renderer to the bridge",
"mount settlement and renderer retirement use the production IPC channel wiring"
]
},
{
"file": "src/main/browser/browser-client-page-renderer-lifecycle.electron.test.ts",
"file": "src/main/browser/client-pages/renderer/browser-client-page-renderer-lifecycle.electron.test.ts",
"assertions": [
"real Electron binds replies to the current main frame and matches the renderer guest ID to did-attach-webview",
"a document-owned blank webview survives attachment and is destroyed without reparenting on retirement",
@@ -7716,7 +7724,7 @@
]
},
{
"file": "src/main/browser/browser-route-session-registry.test.ts",
"file": "src/main/browser/routing/sessions/browser-route-session-registry.test.ts",
"assertions": [
"a prepared Electron Session remains recognizable for late-attachment quarantine",
"prepared authority is bound to one renderer and owner loss retires unregistered pages",
@@ -7725,14 +7733,14 @@
]
},
{
"file": "src/main/browser/browser-route-prepared-page-rekey.test.ts",
"file": "src/main/browser/routing/sessions/browser-route-prepared-page-rekey.test.ts",
"assertions": [
"prepared authority moves only across an exact same-page same-renderer generation change",
"rekey preserves the opaque authority and leaves stale or conflicting input unchanged"
]
},
{
"file": "src/main/browser/browser-route-webcontents-registry.test.ts",
"file": "src/main/browser/routing/guest-authority/browser-route-webcontents-registry.test.ts",
"assertions": [
"route guests remain blank and popup-denied before exact registration and grant",
"guest, renderer, partition, and logical page generation must all match",
@@ -7770,6 +7778,7 @@
"runner": "local",
"platform": "macos",
"command": "pnpm exec vitest run --config config/vitest.config.ts src/main/browser/browser-client-page-command-executor.test.ts src/main/browser/browser-client-page-command-integration.test.ts src/main/browser/browser-client-page-renderer-bridge.test.ts src/main/browser/browser-client-page-renderer-lifecycle.electron.test.ts src/main/browser/browser-client-page-renderer-runtime.test.ts src/main/browser/browser-route-session-registry.test.ts src/main/browser/browser-route-webcontents-registry.test.ts src/preload/browser-client-page-renderer-requests.test.ts src/renderer/src/components/browser-pane/browser-client-page-retained-registry.test.ts src/renderer/src/components/browser-pane/browser-client-page-renderer-installation.test.ts src/main/window/createMainWindow.test.ts src/main/window/renderer-document-navigation.test.ts",
"currentCommand": "pnpm exec vitest run --config config/vitest.config.ts src/main/browser/client-pages/execution/browser-client-page-command-executor.test.ts src/main/browser/client-pages/execution/browser-client-page-command-integration.test.ts src/main/browser/client-pages/renderer/browser-client-page-renderer-bridge.test.ts src/main/browser/client-pages/renderer/browser-client-page-renderer-lifecycle.electron.test.ts src/main/browser/client-pages/renderer/browser-client-page-renderer-runtime.test.ts src/main/browser/routing/sessions/browser-route-session-registry.test.ts src/main/browser/routing/guest-authority/browser-route-webcontents-registry.test.ts src/preload/browser-client-page-renderer-requests.test.ts src/renderer/src/components/browser-pane/browser-client-page-retained-registry.test.ts src/renderer/src/components/browser-pane/browser-client-page-renderer-installation.test.ts src/main/window/createMainWindow.test.ts src/main/window/renderer-document-navigation.test.ts",
"result": "passed",
"durationSeconds": 1.22,
"summary": "On the candidate atop #14753, twelve files passed 132 exact opaque-claim navigation revocation, in-flight create fencing, revocation-error cleanup, retained guest destruction separation, route Session, renderer bridge/registry, Electron lifecycle, and main-window document assertions."
@@ -7779,6 +7788,7 @@
"runner": "local",
"platform": "macos",
"command": "pnpm exec vitest run --config config/vitest.config.ts src/main/browser/browser-client-page-command-executor.test.ts src/main/browser/browser-client-page-command-integration.test.ts src/main/browser/browser-client-page-renderer-bridge.test.ts src/main/browser/browser-client-page-renderer-runtime.test.ts src/main/browser/browser-route-session-registry.test.ts src/main/browser/browser-route-webcontents-registry.test.ts src/main/window/createMainWindow.test.ts src/main/window/renderer-document-navigation.test.ts",
"currentCommand": "pnpm exec vitest run --config config/vitest.config.ts src/main/browser/client-pages/execution/browser-client-page-command-executor.test.ts src/main/browser/client-pages/execution/browser-client-page-command-integration.test.ts src/main/browser/client-pages/renderer/browser-client-page-renderer-bridge.test.ts src/main/browser/client-pages/renderer/browser-client-page-renderer-runtime.test.ts src/main/browser/routing/sessions/browser-route-session-registry.test.ts src/main/browser/routing/guest-authority/browser-route-webcontents-registry.test.ts src/main/window/createMainWindow.test.ts src/main/window/renderer-document-navigation.test.ts",
"result": "passed",
"durationSeconds": 0.8,
"summary": "Eight files and 174 tests passed deterministic route retention, trusted-renderer create ordering, exact renderer WebContents and main-frame-document fencing, subframe and stale-frame rejection, wrong-page and wrong-operation rejection, timeout/send/collision settlement, renderer-document replacement retirement, blocked external and same-document preservation, failed provisional restoration, stale same-URL failure rejection during a live replacement, concurrent failure plus blocked replacement convergence, production IPC wiring, composed real Session/WebContents registry lifecycle, abort and cleanup fencing, Session-index and prepared-owner fencing, bounded pending waiters, late/rejected route-WebContents quarantine, opaque-authority and process-loss fencing, fail-closed shared-partition release barriers, exact registration and navigation, popup denial, and main-window ordering tests."
@@ -7788,6 +7798,7 @@
"runner": "local",
"platform": "macos",
"command": "pnpm exec vitest run --config config/vitest.config.ts src/main/browser/browser-client-page-command-executor.test.ts src/main/browser/browser-client-page-command-integration.test.ts src/main/browser/browser-client-page-renderer-bridge.test.ts src/main/browser/browser-client-page-renderer-lifecycle.electron.test.ts src/main/browser/browser-client-page-renderer-runtime.test.ts src/main/browser/browser-route-session-registry.test.ts src/main/browser/browser-route-webcontents-registry.test.ts src/preload/browser-client-page-renderer-requests.test.ts src/renderer/src/components/browser-pane/browser-client-page-retained-registry.test.ts src/renderer/src/components/browser-pane/browser-client-page-renderer-installation.test.ts src/main/window/createMainWindow.test.ts src/main/window/renderer-document-navigation.test.ts",
"currentCommand": "pnpm exec vitest run --config config/vitest.config.ts src/main/browser/client-pages/execution/browser-client-page-command-executor.test.ts src/main/browser/client-pages/execution/browser-client-page-command-integration.test.ts src/main/browser/client-pages/renderer/browser-client-page-renderer-bridge.test.ts src/main/browser/client-pages/renderer/browser-client-page-renderer-lifecycle.electron.test.ts src/main/browser/client-pages/renderer/browser-client-page-renderer-runtime.test.ts src/main/browser/routing/sessions/browser-route-session-registry.test.ts src/main/browser/routing/guest-authority/browser-route-webcontents-registry.test.ts src/preload/browser-client-page-renderer-requests.test.ts src/renderer/src/components/browser-pane/browser-client-page-retained-registry.test.ts src/renderer/src/components/browser-pane/browser-client-page-renderer-installation.test.ts src/main/window/createMainWindow.test.ts src/main/window/renderer-document-navigation.test.ts",
"result": "passed",
"durationSeconds": 2.7,
"summary": "Twelve files and 199 tests passed the existing main authority gate plus top-frame preload queueing, bounded outcomes, exact retained renderer tuples, delayed guest-ID readiness, idempotent retirement, resource budgets, process-loss fencing, and real Electron main-frame reply, blank attachment, denial, and destruction lifecycle."
@@ -7857,8 +7868,8 @@
"pnpm exec vitest run --config config/vitest.config.ts src/main/runtime/orca-runtime-browser-client-hosted.test.ts src/main/runtime/runtime-browser-client-page-creation.test.ts src/main/runtime/browser-host/browser-host-page-reconciliation-orchestration.test.ts src/main/runtime/browser-host/browser-host-command-ledger.test.ts",
"pnpm exec vitest run --config config/vitest.config.ts src/shared/browser-client-host-protocol.test.ts src/shared/remote-runtime/remote-runtime-client.test.ts src/main/runtime/browser-host/browser-host-capability-selection.test.ts src/main/ipc/runtime-environments/runtime-environment-browser-client-host-handler.test.ts",
"SKIP_BUILD=1 ORCA_CROSS_VERSION_PACKAGED_EXECUTABLE=/Applications/Orca.app/Contents/MacOS/Orca pnpm exec playwright test tests/e2e/packaged-mixed-version-browser-placement.spec.ts --config tests/playwright.config.ts --project electron-headless --workers=1",
"pnpm exec vitest run --config config/vitest.config.ts src/main/runtime/browser-network-tunnel-paired-runtime.integration.test.ts src/main/browser/paired-runtime-browser-network-route.test.ts src/main/browser/browser-network-execution-route.test.ts src/main/browser/wsl-browser-network-execution-route.test.ts src/main/browser/wsl-browser-network-relay-launch.test.ts src/main/runtime/runtime-browser-network-execution-host.test.ts",
"pnpm exec vitest run --config config/vitest.config.ts src/main/browser/browser-screencast-lifecycle.test.ts src/main/browser/browser-screencast-stream.test.ts src/main/runtime/orca-runtime-browser-screencast-fanout.test.ts",
"pnpm exec vitest run --config config/vitest.config.ts src/main/runtime/browser-network-tunnel-paired-runtime.integration.test.ts src/main/browser/network/execution-routes/paired-runtime-browser-network-route.test.ts src/main/browser/network/execution-routes/browser-network-execution-route.test.ts src/main/browser/network/execution-routes/wsl-browser-network-execution-route.test.ts src/main/browser/network/execution-routes/wsl-browser-network-relay-launch.test.ts src/main/runtime/runtime-browser-network-execution-host.test.ts",
"pnpm exec vitest run --config config/vitest.config.ts src/main/browser/cdp/screencast/browser-screencast-lifecycle.test.ts src/main/browser/cdp/screencast/browser-screencast-stream.test.ts src/main/runtime/orca-runtime-browser-screencast-fanout.test.ts",
"ORCA_RUN_DOCKER_SSH_BROWSER_E2E=1 pnpm exec vitest run --config config/vitest.config.ts tests/e2e/ssh-browser-network-execution-route.docker.unit.test.ts",
"Manual iOS 26.5 simulator: pair current mobile code to packaged Orca 1.4.184; create Browser; navigate to https://example.com; require one visible Example Domain tab on the server-hosted surface",
"ORCA_RUN_DOCKER_SSH_BROWSER_E2E=1 node_modules/.bin/vitest run --config config/vitest.config.ts tests/e2e/ssh-browser-network-execution-route.docker.unit.test.ts"
@@ -7875,13 +7886,13 @@
"src/main/ipc/runtime-environments/runtime-environment-browser-client-host-handler.test.ts",
"tests/e2e/packaged-mixed-version-browser-placement.spec.ts",
"src/main/runtime/browser-network-tunnel-paired-runtime.integration.test.ts",
"src/main/browser/paired-runtime-browser-network-route.test.ts",
"src/main/browser/browser-network-execution-route.test.ts",
"src/main/browser/wsl-browser-network-execution-route.test.ts",
"src/main/browser/wsl-browser-network-relay-launch.test.ts",
"src/main/browser/network/execution-routes/paired-runtime-browser-network-route.test.ts",
"src/main/browser/network/execution-routes/browser-network-execution-route.test.ts",
"src/main/browser/network/execution-routes/wsl-browser-network-execution-route.test.ts",
"src/main/browser/network/execution-routes/wsl-browser-network-relay-launch.test.ts",
"src/main/runtime/runtime-browser-network-execution-host.test.ts",
"src/main/browser/browser-screencast-lifecycle.test.ts",
"src/main/browser/browser-screencast-stream.test.ts",
"src/main/browser/cdp/screencast/browser-screencast-lifecycle.test.ts",
"src/main/browser/cdp/screencast/browser-screencast-stream.test.ts",
"src/main/runtime/orca-runtime-browser-screencast-fanout.test.ts",
"tests/e2e/ssh-browser-network-execution-route.docker.unit.test.ts"
],
@@ -7972,7 +7983,7 @@
"result": "passed",
"durationSeconds": 1.2,
"summary": "22 screencast lifecycle, stream, and shared-fanout tests passed; the suite confirms one physical CDP stream fans out independently to multiple viewers, preserves viewport ownership, and cleans up without cross-viewer eviction.",
"currentCommand": "pnpm exec vitest run --config config/vitest.config.ts src/main/browser/browser-screencast-lifecycle.test.ts src/main/browser/browser-screencast-stream.test.ts src/main/runtime/orca-runtime-browser-screencast-fanout.test.ts"
"currentCommand": "pnpm exec vitest run --config config/vitest.config.ts src/main/browser/cdp/screencast/browser-screencast-lifecycle.test.ts src/main/browser/cdp/screencast/browser-screencast-stream.test.ts src/main/runtime/orca-runtime-browser-screencast-fanout.test.ts"
},
{
"date": "2026-09-06",
@@ -57,6 +57,14 @@ const stubs = new Map([
const registryByVersion = {}
try {
for (const [version, source] of Object.entries(sources)) {
const versionStubs = new Map(
[...stubs].map(([specifier, body]) => [
version === 'after' && specifier === './browser-session-route-policies'
? './routing/sessions/browser-session-route-policies'
: specifier,
body
])
)
const output = join(scratch, `${version}.cjs`)
await build({
stdin: { contents: source, sourcefile: target, resolveDir: dirname(target), loader: 'ts' },
@@ -69,7 +77,7 @@ try {
name: 'isolate-startup-metadata',
setup(builder) {
builder.onResolve({ filter: /.*/ }, (args) => {
if (args.importer === target && stubs.has(args.path)) {
if (args.importer === target && versionStubs.has(args.path)) {
return { path: args.path, namespace: 'startup-stub' }
}
if (
@@ -83,7 +91,7 @@ try {
contents:
args.path === 'fs-probe'
? `import * as fs from 'node:fs'; export const {mkdirSync,renameSync,writeFileSync}=fs; export function readFileSync(...args){const result=fs.readFileSync(...args);globalThis.__metaBench.reads++;globalThis.__metaBench.bytes+=Buffer.byteLength(result);return result}`
: stubs.get(args.path),
: versionStubs.get(args.path),
loader: 'js'
}))
}
+1 -1
View File
@@ -72,7 +72,7 @@ it('retains allocations when selection evidence is incomplete', () => {
it('preserves the requested specs across source-routed and mixed selections', () => {
for (const files of [
['src/main/browser/ssh-browser-network-execution-route.ts'],
['src/main/browser/network/execution-routes/ssh-browser-network-execution-route.ts'],
['src/shared/terminal-unicode-provider.ts'],
[NODE_NETWORK_E2E_SPEC, 'tests/e2e/future-unclassified.spec.ts']
]) {
+133 -133
View File
@@ -1268,59 +1268,59 @@
"src/main/browser/agent-browser/agent-browser-bridge-tab-routing.test.ts": 441,
"src/main/browser/agent-browser/agent-browser-bridge-text-input.test.ts": 575,
"src/main/browser/agent-browser/agent-browser-orphan-sweep.test.ts": 59,
"src/main/browser/agent-input-focus-guard.test.ts": 54,
"src/main/browser/agent-input-injection.test.ts": 299,
"src/main/browser/browser-agent-activity.test.ts": 128,
"src/main/browser/cdp/input/agent-input-focus-guard.test.ts": 54,
"src/main/browser/cdp/input/agent-input-injection.test.ts": 299,
"src/main/browser/guest-lifecycle/browser-agent-activity.test.ts": 128,
"src/main/browser/browser-certificate-trust-controller.test.ts": 496,
"src/main/browser/browser-client-download-relay.test.ts": 124,
"src/main/browser/browser-client-download-routing.test.ts": 124,
"src/main/browser/browser-client-file-channel-negotiation.test.ts": 116,
"src/main/browser/browser-client-file-channel-reconnect.test.ts": 556,
"src/main/browser/browser-client-host-authority-replacement.test.ts": 47,
"src/main/browser/browser-client-host-command-dispatcher.test.ts": 156,
"src/main/browser/browser-client-host-command-retention.test.ts": 799,
"src/main/browser/browser-client-host-id.test.ts": 82,
"src/main/browser/browser-client-host-placement-preparation.test.ts": 161,
"src/main/browser/browser-client-host-reconciliation-command-order.test.ts": 169,
"src/main/browser/browser-client-network-route-registry.test.ts": 286,
"src/main/browser/browser-client-page-automation-runtime.test.ts": 53,
"src/main/browser/browser-client-page-command-executor-fencing.test.ts": 319,
"src/main/browser/browser-client-page-command-executor.test.ts": 320,
"src/main/browser/browser-client-page-command-integration.test.ts": 315,
"src/main/browser/browser-client-page-creation-cancellation.test.ts": 334,
"src/main/browser/browser-client-page-execution-host-supersession.test.ts": 322,
"src/main/browser/browser-client-page-inventory.test.ts": 186,
"src/main/browser/browser-client-page-metadata-transport.test.ts": 100,
"src/main/browser/browser-client-page-profile-binding.test.ts": 530,
"src/main/browser/browser-client-page-profile-switch.test.ts": 312,
"src/main/browser/browser-client-page-reconciliation-adapters.test.ts": 252,
"src/main/browser/browser-client-page-renderer-bridge.test.ts": 163,
"src/main/browser/browser-client-page-renderer-runtime.test.ts": 107,
"src/main/browser/browser-client-page-unavailability.test.ts": 258,
"src/main/browser/browser-client-page-upload-routing.test.ts": 303,
"src/main/browser/browser-client-route-cookie-import-partition-parity.test.ts": 374,
"src/main/browser/browser-client-route-cookie-import.test.ts": 101,
"src/main/browser/browser-client-upload-buffer-retention.test.ts": 736,
"src/main/browser/browser-client-upload-command.test.ts": 115,
"src/main/browser/browser-client-upload-staging.test.ts": 140,
"src/main/browser/browser-client-upload-transfer.test.ts": 93,
"src/main/browser/browser-command-cache-byte-retention.test.ts": 499,
"src/main/browser/browser-download-destination.test.ts": 66,
"src/main/browser/browser-element-functions.test.ts": 228,
"src/main/browser/browser-external-app-launch.test.ts": 96,
"src/main/browser/client-hosts/file-transfers/browser-client-download-relay.test.ts": 124,
"src/main/browser/client-hosts/file-transfers/browser-client-download-routing.test.ts": 124,
"src/main/browser/client-hosts/file-transfers/browser-client-file-channel-negotiation.test.ts": 116,
"src/main/browser/client-hosts/file-transfers/browser-client-file-channel-reconnect.test.ts": 556,
"src/main/browser/client-hosts/lifecycle/browser-client-host-authority-replacement.test.ts": 47,
"src/main/browser/client-hosts/commands/browser-client-host-command-dispatcher.test.ts": 156,
"src/main/browser/client-hosts/commands/browser-client-host-command-retention.test.ts": 799,
"src/main/browser/client-hosts/lifecycle/browser-client-host-id.test.ts": 82,
"src/main/browser/client-hosts/lifecycle/browser-client-host-placement-preparation.test.ts": 161,
"src/main/browser/client-hosts/lifecycle/browser-client-host-reconciliation-command-order.test.ts": 169,
"src/main/browser/network/client-routes/browser-client-network-route-registry.test.ts": 286,
"src/main/browser/client-pages/execution/browser-client-page-automation-runtime.test.ts": 53,
"src/main/browser/client-pages/execution/browser-client-page-command-executor-fencing.test.ts": 319,
"src/main/browser/client-pages/execution/browser-client-page-command-executor.test.ts": 320,
"src/main/browser/client-pages/execution/browser-client-page-command-integration.test.ts": 315,
"src/main/browser/client-pages/lifecycle/browser-client-page-creation-cancellation.test.ts": 334,
"src/main/browser/client-pages/lifecycle/browser-client-page-execution-host-supersession.test.ts": 322,
"src/main/browser/client-pages/lifecycle/browser-client-page-inventory.test.ts": 186,
"src/main/browser/client-pages/renderer/browser-client-page-metadata-transport.test.ts": 100,
"src/main/browser/client-pages/lifecycle/browser-client-page-profile-binding.test.ts": 530,
"src/main/browser/client-pages/lifecycle/browser-client-page-profile-switch.test.ts": 312,
"src/main/browser/client-pages/lifecycle/browser-client-page-reconciliation-adapters.test.ts": 252,
"src/main/browser/client-pages/renderer/browser-client-page-renderer-bridge.test.ts": 163,
"src/main/browser/client-pages/renderer/browser-client-page-renderer-runtime.test.ts": 107,
"src/main/browser/client-pages/lifecycle/browser-client-page-unavailability.test.ts": 258,
"src/main/browser/client-pages/lifecycle/browser-client-page-upload-routing.test.ts": 303,
"src/main/browser/cookies/client-route/browser-client-route-cookie-import-partition-parity.test.ts": 374,
"src/main/browser/cookies/client-route/browser-client-route-cookie-import.test.ts": 101,
"src/main/browser/client-hosts/file-transfers/browser-client-upload-buffer-retention.test.ts": 736,
"src/main/browser/client-hosts/file-transfers/browser-client-upload-command.test.ts": 115,
"src/main/browser/client-hosts/file-transfers/browser-client-upload-staging.test.ts": 140,
"src/main/browser/client-hosts/file-transfers/browser-client-upload-transfer.test.ts": 93,
"src/main/browser/client-hosts/commands/browser-command-cache-byte-retention.test.ts": 499,
"src/main/browser/downloads/browser-download-destination.test.ts": 66,
"src/main/browser/cdp/input/browser-element-functions.test.ts": 228,
"src/main/browser/guest-lifecycle/prompts/browser-external-app-launch.test.ts": 96,
"src/main/browser/browser-find-frame-traversal.electron.test.ts": 1807,
"src/main/browser/browser-google-cookie-clear-target.test.ts": 6235,
"src/main/browser/cookies/browser-google-cookie-clear-target.test.ts": 6235,
"src/main/browser/browser-grab-payload.test.ts": 55,
"src/main/browser/browser-guest-devtools-dock.test.ts": 57,
"src/main/browser/browser-guest-shortcut-forwarding.test.ts": 320,
"src/main/browser/browser-guest-shortcut-plugin-frame.test.ts": 280,
"src/main/browser/browser-guest-shortcut-precedence.test.ts": 411,
"src/main/browser/browser-guest-target-url.test.ts": 50,
"src/main/browser/browser-guest-wheel-zoom-scroll.test.ts": 45,
"src/main/browser/browser-host-client-identity.test.ts": 97,
"src/main/browser/browser-http-auth-prompt.test.ts": 74,
"src/main/browser/guest-lifecycle/browser-guest-devtools-dock.test.ts": 57,
"src/main/browser/guest-lifecycle/input/browser-guest-shortcut-forwarding.test.ts": 320,
"src/main/browser/guest-lifecycle/input/browser-guest-shortcut-plugin-frame.test.ts": 280,
"src/main/browser/guest-lifecycle/input/browser-guest-shortcut-precedence.test.ts": 411,
"src/main/browser/guest-lifecycle/input/browser-guest-target-url.test.ts": 50,
"src/main/browser/guest-lifecycle/input/browser-guest-wheel-zoom-scroll.test.ts": 45,
"src/main/browser/client-hosts/leases/browser-host-client-identity.test.ts": 97,
"src/main/browser/guest-lifecycle/prompts/browser-http-auth-prompt.test.ts": 74,
"src/main/browser/browser-identity-mode-store.test.ts": 95,
"src/main/browser/browser-javascript-dialogs.test.ts": 54,
"src/main/browser/guest-lifecycle/prompts/browser-javascript-dialogs.test.ts": 54,
"src/main/browser/browser-manager-annotation-bridge.test.ts": 603,
"src/main/browser/browser-manager-auth-user-agent.test.ts": 555,
"src/main/browser/browser-manager-client-hosted-downloads.test.ts": 670,
@@ -1347,42 +1347,42 @@
"src/main/browser/browser-manager-viewport-ownership.test.ts": 550,
"src/main/browser/browser-manager-viewport-partial-failure.test.ts": 547,
"src/main/browser/browser-manager-worker-request-user-agent.test.ts": 498,
"src/main/browser/browser-network-deferred-socket.test.ts": 101,
"src/main/browser/browser-network-execution-route.test.ts": 272,
"src/main/browser/browser-network-tunnel-client-memory-budget.test.ts": 116,
"src/main/browser/browser-network-tunnel-client.test.ts": 127,
"src/main/browser/browser-network-tunnel-conformance.test.ts": 136,
"src/main/browser/browser-network-tunnel-outbound-memory-budget.test.ts": 66,
"src/main/browser/browser-network-tunnel-proxy-dial-error.test.ts": 264,
"src/main/browser/browser-network-tunnel-proxy.test.ts": 312,
"src/main/browser/browser-network-tunnel-session-aggregate-memory.test.ts": 76,
"src/main/browser/browser-network-tunnel-session-stream-scoped-failure.test.ts": 74,
"src/main/browser/browser-network-tunnel-session.test.ts": 157,
"src/main/browser/browser-page-initiated-tab-budget.test.ts": 43,
"src/main/browser/browser-page-input-credit.test.ts": 50,
"src/main/browser/browser-page-prompts.test.ts": 74,
"src/main/browser/browser-partition-cookie-copy.test.ts": 159,
"src/main/browser/browser-popup-native-window.test.ts": 109,
"src/main/browser/network/execution-routes/browser-network-deferred-socket.test.ts": 101,
"src/main/browser/network/execution-routes/browser-network-execution-route.test.ts": 272,
"src/main/browser/network/tunnels/browser-network-tunnel-client-memory-budget.test.ts": 116,
"src/main/browser/network/tunnels/browser-network-tunnel-client.test.ts": 127,
"src/main/browser/network/tunnels/browser-network-tunnel-conformance.test.ts": 136,
"src/main/browser/network/tunnels/browser-network-tunnel-outbound-memory-budget.test.ts": 66,
"src/main/browser/network/tunnels/browser-network-tunnel-proxy-dial-error.test.ts": 264,
"src/main/browser/network/tunnels/browser-network-tunnel-proxy.test.ts": 312,
"src/main/browser/network/tunnels/browser-network-tunnel-session-aggregate-memory.test.ts": 76,
"src/main/browser/network/tunnels/browser-network-tunnel-session-stream-scoped-failure.test.ts": 74,
"src/main/browser/network/tunnels/browser-network-tunnel-session.test.ts": 157,
"src/main/browser/guest-lifecycle/popups/browser-page-initiated-tab-budget.test.ts": 43,
"src/main/browser/routing/input-ownership/browser-page-input-credit.test.ts": 50,
"src/main/browser/guest-lifecycle/prompts/browser-page-prompts.test.ts": 74,
"src/main/browser/cookies/browser-partition-cookie-copy.test.ts": 159,
"src/main/browser/guest-lifecycle/popups/browser-popup-native-window.test.ts": 109,
"src/main/browser/browser-process-user-agent.test.ts": 45,
"src/main/browser/browser-route-guest-popups.test.ts": 306,
"src/main/browser/browser-route-identity.test.ts": 47,
"src/main/browser/browser-route-partition-binding-capacity.test.ts": 81,
"src/main/browser/browser-route-partition-binding-store.test.ts": 133,
"src/main/browser/browser-route-partition-migration.test.ts": 157,
"src/main/browser/browser-route-partition-pending-deletes.test.ts": 64,
"src/main/browser/browser-route-partition-stability.test.ts": 305,
"src/main/browser/browser-route-partition-storage-dependencies.test.ts": 287,
"src/main/browser/browser-route-partition-storage-lifecycle.test.ts": 96,
"src/main/browser/browser-route-partition-storage-retirement.test.ts": 139,
"src/main/browser/browser-route-partition-storage-runtime.test.ts": 76,
"src/main/browser/browser-route-prepared-page-rekey.test.ts": 42,
"src/main/browser/browser-route-session-registry.test.ts": 161,
"src/main/browser/browser-route-webcontents-registry.test.ts": 311,
"src/main/browser/browser-screencast-first-frame-timeout.test.ts": 160,
"src/main/browser/browser-screencast-guest-view-limit.test.ts": 684,
"src/main/browser/browser-screencast-lifecycle.test.ts": 162,
"src/main/browser/browser-screencast-live-frame-allocation.test.ts": 111,
"src/main/browser/browser-screencast-stream.test.ts": 223,
"src/main/browser/routing/guest-authority/browser-route-guest-popups.test.ts": 306,
"src/main/browser/routing/partitions/browser-route-identity.test.ts": 47,
"src/main/browser/routing/partitions/browser-route-partition-binding-capacity.test.ts": 81,
"src/main/browser/routing/partitions/browser-route-partition-binding-store.test.ts": 133,
"src/main/browser/routing/partitions/browser-route-partition-migration.test.ts": 157,
"src/main/browser/routing/partitions/browser-route-partition-pending-deletes.test.ts": 64,
"src/main/browser/routing/partitions/browser-route-partition-stability.test.ts": 305,
"src/main/browser/routing/partitions/browser-route-partition-storage-dependencies.test.ts": 287,
"src/main/browser/routing/partitions/browser-route-partition-storage-lifecycle.test.ts": 96,
"src/main/browser/routing/partitions/browser-route-partition-storage-retirement.test.ts": 139,
"src/main/browser/routing/partitions/browser-route-partition-storage-runtime.test.ts": 76,
"src/main/browser/routing/sessions/browser-route-prepared-page-rekey.test.ts": 42,
"src/main/browser/routing/sessions/browser-route-session-registry.test.ts": 161,
"src/main/browser/routing/guest-authority/browser-route-webcontents-registry.test.ts": 311,
"src/main/browser/cdp/screencast/browser-screencast-first-frame-timeout.test.ts": 160,
"src/main/browser/cdp/screencast/browser-screencast-guest-view-limit.test.ts": 684,
"src/main/browser/cdp/screencast/browser-screencast-lifecycle.test.ts": 162,
"src/main/browser/cdp/screencast/browser-screencast-live-frame-allocation.test.ts": 111,
"src/main/browser/cdp/screencast/browser-screencast-stream.test.ts": 223,
"src/main/browser/browser-session-cookie-staging.scoped.test.ts": 3741,
"src/main/browser/browser-session-cookie-staging.test.ts": 308,
"src/main/browser/browser-session-meta-store.test.ts": 43,
@@ -1401,24 +1401,24 @@
"src/main/browser/browser-session-user-agent-migration-inspection.test.ts": 229,
"src/main/browser/browser-site-display-controller.test.ts": 95,
"src/main/browser/browser-site-permission-prompt.test.ts": 338,
"src/main/browser/browser-text-insertion.test.ts": 51,
"src/main/browser/cdp/input/browser-text-insertion.test.ts": 51,
"src/main/browser/browser-webauthn-account-picker.test.ts": 78,
"src/main/browser/browser-webauthn-profile-delete.test.ts": 358,
"src/main/browser/cdp-bridge-integration.test.ts": 28361,
"src/main/browser/cdp-client-response-writer.test.ts": 279,
"src/main/browser/cdp-keyboard-us-layout.test.ts": 84,
"src/main/browser/cdp-print-to-pdf.test.ts": 68,
"src/main/browser/cdp-screenshot.test.ts": 415,
"src/main/browser/cdp-ws-proxy-first-paint.test.ts": 366,
"src/main/browser/cdp-ws-proxy-focus-replay.test.ts": 489,
"src/main/browser/cdp-ws-proxy-host-admission.test.ts": 576,
"src/main/browser/cdp-ws-proxy-input-focus.test.ts": 360,
"src/main/browser/cdp-ws-proxy-malformed-messages.test.ts": 305,
"src/main/browser/cdp-ws-proxy-origin.test.ts": 262,
"src/main/browser/cdp-ws-proxy-startup-lifetime.test.ts": 326,
"src/main/browser/cdp-ws-proxy.test.ts": 2756,
"src/main/browser/cdp/commands/cdp-bridge-integration.test.ts": 28361,
"src/main/browser/cdp/transport/cdp-client-response-writer.test.ts": 279,
"src/main/browser/cdp/input/cdp-keyboard-us-layout.test.ts": 84,
"src/main/browser/cdp/commands/cdp-print-to-pdf.test.ts": 68,
"src/main/browser/cdp/commands/cdp-screenshot.test.ts": 415,
"src/main/browser/cdp/transport/cdp-ws-proxy-first-paint.test.ts": 366,
"src/main/browser/cdp/transport/cdp-ws-proxy-focus-replay.test.ts": 489,
"src/main/browser/cdp/transport/cdp-ws-proxy-host-admission.test.ts": 576,
"src/main/browser/cdp/transport/cdp-ws-proxy-input-focus.test.ts": 360,
"src/main/browser/cdp/transport/cdp-ws-proxy-malformed-messages.test.ts": 305,
"src/main/browser/cdp/transport/cdp-ws-proxy-origin.test.ts": 262,
"src/main/browser/cdp/transport/cdp-ws-proxy-startup-lifetime.test.ts": 326,
"src/main/browser/cdp/transport/cdp-ws-proxy.test.ts": 2756,
"src/main/browser/chromium-cookie-snapshot.test.ts": 457,
"src/main/browser/client-route-cookie-import-source-store.test.ts": 147,
"src/main/browser/cookies/client-route/client-route-cookie-import-source-store.test.ts": 147,
"src/main/browser/cookies/browser-cookie-clear-preserve.test.ts": 133,
"src/main/browser/cookies/browser-cookie-clear-store-lifecycle.test.ts": 183,
"src/main/browser/cookies/browser-cookie-clear-store.test.ts": 93,
@@ -1457,8 +1457,8 @@
"src/main/browser/doc-preview-protocol.test.ts": 86,
"src/main/browser/doc-preview-response-allocation.test.ts": 181,
"src/main/browser/doc-preview-terminal-file-reader.test.ts": 101,
"src/main/browser/electron-debugger-lease.test.ts": 44,
"src/main/browser/execution-route-socket-duplex.test.ts": 87,
"src/main/browser/cdp/debugger/electron-debugger-lease.test.ts": 44,
"src/main/browser/network/tunnels/execution-route-socket-duplex.test.ts": 87,
"src/main/browser/extensions/api/declarative-net-request.test.ts": 678,
"src/main/browser/extensions/api/downloads.test.ts": 577,
"src/main/browser/extensions/api/management.test.ts": 213,
@@ -1523,39 +1523,39 @@
"src/main/browser/extensions/declarative-net-request/url-pattern.test.ts": 84,
"src/main/browser/grab-guest-overlay-follow.test.ts": 332,
"src/main/browser/grab-guest-script.test.ts": 107,
"src/main/browser/guest-cdp-command.test.ts": 105,
"src/main/browser/guest-direct-key-input.test.ts": 183,
"src/main/browser/guest-focused-frame-route.test.ts": 78,
"src/main/browser/local-ssh-browser-partition-identity.test.ts": 479,
"src/main/browser/local-ssh-browser-partitions.probe-cache.test.ts": 110,
"src/main/browser/local-ssh-browser-profile-retirement.test.ts": 287,
"src/main/browser/local-ssh-browser-route-target.test.ts": 65,
"src/main/browser/local-ssh-browser-route.test.ts": 92,
"src/main/browser/cdp/debugger/guest-cdp-command.test.ts": 105,
"src/main/browser/cdp/input/guest-direct-key-input.test.ts": 183,
"src/main/browser/cdp/input/guest-focused-frame-route.test.ts": 78,
"src/main/browser/routing/local-host-partitions/local-ssh-browser-partition-identity.test.ts": 479,
"src/main/browser/routing/local-host-partitions/local-ssh-browser-partitions.probe-cache.test.ts": 110,
"src/main/browser/routing/local-host-partitions/local-ssh-browser-profile-retirement.test.ts": 287,
"src/main/browser/routing/local-host-partitions/local-ssh-browser-route-target.test.ts": 65,
"src/main/browser/routing/local-host-partitions/local-ssh-browser-route.test.ts": 92,
"src/main/browser/offscreen-browser-backend-lifecycle.test.ts": 341,
"src/main/browser/paired-runtime-browser-client-host-composition.test.ts": 165,
"src/main/browser/paired-runtime-browser-client-host-identity-wiring.test.ts": 1368,
"src/main/browser/paired-runtime-browser-client-host-reconnect.test.ts": 568,
"src/main/browser/paired-runtime-browser-client-host-registry.test.ts": 53,
"src/main/browser/paired-runtime-browser-client-host-route-identity.test.ts": 1404,
"src/main/browser/paired-runtime-browser-client-host-runtime.test.ts": 657,
"src/main/browser/paired-runtime-browser-client-host.test.ts": 370,
"src/main/browser/paired-runtime-browser-host-command-admission.test.ts": 213,
"src/main/browser/paired-runtime-browser-host-lease-reconnect.test.ts": 945,
"src/main/browser/paired-runtime-browser-host-lease.test.ts": 973,
"src/main/browser/paired-runtime-browser-host-reconciliation-negotiation.test.ts": 269,
"src/main/browser/paired-runtime-browser-network-route.test.ts": 1150,
"src/main/browser/popup-identity-electron-probe.test.ts": 144,
"src/main/browser/popup-origin-bar-window.test.ts": 118,
"src/main/browser/remote-browser-socks-buffering.test.ts": 384,
"src/main/browser/remote-browser-socks-server.test.ts": 309,
"src/main/browser/snapshot-engine-iframe-sessions.test.ts": 90,
"src/main/browser/snapshot-engine.test.ts": 48,
"src/main/browser/ssh-browser-network-execution-route.test.ts": 643,
"src/main/browser/system-ssh-socks-client-socket.test.ts": 53,
"src/main/browser/wsl-browser-network-execution-route.test.ts": 678,
"src/main/browser/wsl-browser-network-relay-launch.test.ts": 146,
"src/main/browser/wsl-host-browser-jar-identity.test.ts": 806,
"src/main/browser/wsl-host-browser-route-partition.test.ts": 753,
"src/main/browser/client-hosts/lifecycle/paired-runtime-browser-client-host-composition.test.ts": 165,
"src/main/browser/client-hosts/lifecycle/paired-runtime-browser-client-host-identity-wiring.test.ts": 1368,
"src/main/browser/client-hosts/lifecycle/paired-runtime-browser-client-host-reconnect.test.ts": 568,
"src/main/browser/client-hosts/lifecycle/paired-runtime-browser-client-host-registry.test.ts": 53,
"src/main/browser/client-hosts/lifecycle/paired-runtime-browser-client-host-route-identity.test.ts": 1404,
"src/main/browser/client-hosts/lifecycle/paired-runtime-browser-client-host-runtime.test.ts": 657,
"src/main/browser/client-hosts/lifecycle/paired-runtime-browser-client-host.test.ts": 370,
"src/main/browser/client-hosts/lifecycle/paired-runtime-browser-host-command-admission.test.ts": 213,
"src/main/browser/client-hosts/leases/paired-runtime-browser-host-lease-reconnect.test.ts": 945,
"src/main/browser/client-hosts/leases/paired-runtime-browser-host-lease.test.ts": 973,
"src/main/browser/client-hosts/lifecycle/paired-runtime-browser-host-reconciliation-negotiation.test.ts": 269,
"src/main/browser/network/execution-routes/paired-runtime-browser-network-route.test.ts": 1150,
"src/main/browser/guest-lifecycle/popups/popup-identity-electron-probe.test.ts": 144,
"src/main/browser/guest-lifecycle/popups/popup-origin-bar-window.test.ts": 118,
"src/main/browser/network/tunnels/remote-browser-socks-buffering.test.ts": 384,
"src/main/browser/network/tunnels/remote-browser-socks-server.test.ts": 309,
"src/main/browser/cdp/snapshots/snapshot-engine-iframe-sessions.test.ts": 90,
"src/main/browser/cdp/snapshots/snapshot-engine.test.ts": 48,
"src/main/browser/network/execution-routes/ssh-browser-network-execution-route.test.ts": 643,
"src/main/browser/network/tunnels/system-ssh-socks-client-socket.test.ts": 53,
"src/main/browser/network/execution-routes/wsl-browser-network-execution-route.test.ts": 678,
"src/main/browser/network/execution-routes/wsl-browser-network-relay-launch.test.ts": 146,
"src/main/browser/routing/local-host-partitions/wsl-host-browser-jar-identity.test.ts": 806,
"src/main/browser/routing/local-host-partitions/wsl-host-browser-route-partition.test.ts": 753,
"src/main/claude-accounts/claude-account-folder.test.ts": 153,
"src/main/claude-accounts/claude-account-service.test.ts": 1207,
"src/main/claude-accounts/claude-command-process-windows-only.test.ts": 90,
+7 -7
View File
@@ -48,15 +48,15 @@ export const UNIT_EXCLUDE = [
'tests/e2e/relay-region-correction.unit.test.ts',
'src/main/browser/cookies/browser-google-cookie-clear.electron.test.ts',
// Electron probes with in-process deadlines; the package job runs them serially.
'src/main/browser/popup-origin-chrome.electron.test.ts',
'src/main/browser/guest-lifecycle/popups/popup-origin-chrome.electron.test.ts',
'src/main/browser/browser-link-materialization.electron.test.ts',
'src/main/browser/browser-client-page-renderer-lifecycle.electron.test.ts',
'src/main/browser/browser-route-webrtc-egress.electron.test.ts',
'src/main/browser/client-pages/renderer/browser-client-page-renderer-lifecycle.electron.test.ts',
'src/main/browser/network/egress/browser-route-webrtc-egress.electron.test.ts',
'src/main/persistence/profile-state/profile-state-writer-stall.electron.test.ts',
'src/main/browser/browser-popup-compatibility.electron.test.ts',
'src/main/browser/browser-popup-adapter-compatibility.electron.test.ts',
'src/main/browser/browser-popup-native-compatibility.electron.test.ts',
'src/main/browser/browser-popup-background-compatibility.electron.test.ts',
'src/main/browser/guest-lifecycle/popups/browser-popup-compatibility.electron.test.ts',
'src/main/browser/guest-lifecycle/popups/browser-popup-adapter-compatibility.electron.test.ts',
'src/main/browser/guest-lifecycle/popups/browser-popup-native-compatibility.electron.test.ts',
'src/main/browser/guest-lifecycle/popups/browser-popup-background-compatibility.electron.test.ts',
'src/main/browser/extensions/browser-extension-api.electron.test.ts',
'src/main/browser/extensions/browser-extension-persistence.electron.test.ts',
'src/main/browser/extensions/browser-extension-lifecycle.electron.test.ts',
+2 -2
View File
@@ -31,8 +31,8 @@ describe('restart-survival E2E routing', () => {
'src/main/runtime/browser-host/browser-host-client-page-adoption.ts',
'src/main/runtime/browser-host/browser-host-page-reconciliation-orchestration.ts',
'src/main/runtime/rpc/methods/browser-client-host.ts',
'src/main/browser/browser-client-host-authority-replacement-wait.ts',
'src/main/browser/paired-runtime-browser-client-host-composition.ts',
'src/main/browser/client-hosts/lifecycle/browser-client-host-authority-replacement-wait.ts',
'src/main/browser/client-hosts/lifecycle/paired-runtime-browser-client-host-composition.ts',
'src/renderer/src/runtime/web-session-tabs-sync/snapshot-api.ts',
'src/renderer/src/runtime/host-session-snapshot-authority.ts',
'src/renderer/src/runtime/restored-client-hosted-browser-host-attach.ts',
+2 -2
View File
@@ -234,7 +234,7 @@ export const PR_E2E_SOURCE_ROUTES = [
specs: ['tests/e2e/ssh-orcad-browser-routing.spec.ts'],
matches: (file) =>
isProductSource(file) &&
/^src\/(?:main\/browser\/local-ssh-browser|main\/ipc\/browser\.ts$|renderer\/src\/(?:lib\/(?:ssh-workspace-browser-route-eligibility|worktree-host-connection-phase)|components\/browser-pane\/use-ssh-workspace-browser-route|store\/repos\/converted-ssh-browser-pages|store\/slices\/browser\/browser-tab-actions|hooks\/ipc-events\/ssh-managed-server-state-effects))/.test(
/^src\/(?:main\/browser\/routing\/local-host-partitions\/local-ssh-browser|main\/ipc\/browser\.ts$|renderer\/src\/(?:lib\/(?:ssh-workspace-browser-route-eligibility|worktree-host-connection-phase)|components\/browser-pane\/use-ssh-workspace-browser-route|store\/repos\/converted-ssh-browser-pages|store\/slices\/browser\/browser-tab-actions|hooks\/ipc-events\/ssh-managed-server-state-effects))/.test(
file
)
},
@@ -395,7 +395,7 @@ export const PR_E2E_SOURCE_ROUTES = [
file === 'tests/e2e/ssh-browser-network-execution-route.docker.unit.test.ts' ||
/^tests\/e2e\/helpers\/docker-ssh-host-(?:image|target)\.ts$/.test(file) ||
(isProductSource(file) &&
/^src\/main\/(?:browser\/(?:ssh-browser-network-execution-route|browser-network-deferred-socket|browser-network-execution-route|system-ssh-socks-client-socket)|ssh\/system-transport\/system-ssh-dynamic-forward-process)\.ts$/.test(
/^src\/main\/(?:browser\/network\/(?:execution-routes\/(?:ssh-browser-network-execution-route|browser-network-deferred-socket|browser-network-execution-route)|tunnels\/system-ssh-socks-client-socket)|ssh\/system-transport\/system-ssh-dynamic-forward-process)\.ts$/.test(
file
))
},
+9 -9
View File
@@ -4,15 +4,15 @@ import { pathToFileURL } from 'node:url'
export const LINUX_PACKAGE_TESTS = [
'src/main/browser/cookies/browser-google-cookie-clear.electron.test.ts',
'config/scripts/packaged-repository-input-exclusion.test.mjs',
'src/main/browser/popup-origin-chrome.electron.test.ts',
'src/main/browser/guest-lifecycle/popups/popup-origin-chrome.electron.test.ts',
'src/main/browser/browser-link-materialization.electron.test.ts',
'src/main/browser/browser-client-page-renderer-lifecycle.electron.test.ts',
'src/main/browser/browser-route-webrtc-egress.electron.test.ts',
'src/main/browser/client-pages/renderer/browser-client-page-renderer-lifecycle.electron.test.ts',
'src/main/browser/network/egress/browser-route-webrtc-egress.electron.test.ts',
'src/main/persistence/profile-state/profile-state-writer-stall.electron.test.ts',
'src/main/browser/browser-popup-compatibility.electron.test.ts',
'src/main/browser/browser-popup-adapter-compatibility.electron.test.ts',
'src/main/browser/browser-popup-native-compatibility.electron.test.ts',
'src/main/browser/browser-popup-background-compatibility.electron.test.ts',
'src/main/browser/guest-lifecycle/popups/browser-popup-compatibility.electron.test.ts',
'src/main/browser/guest-lifecycle/popups/browser-popup-adapter-compatibility.electron.test.ts',
'src/main/browser/guest-lifecycle/popups/browser-popup-native-compatibility.electron.test.ts',
'src/main/browser/guest-lifecycle/popups/browser-popup-background-compatibility.electron.test.ts',
'src/main/browser/extensions/browser-extension-api.electron.test.ts',
'src/main/browser/extensions/browser-extension-persistence.electron.test.ts',
'src/main/browser/extensions/browser-extension-lifecycle.electron.test.ts',
@@ -47,8 +47,8 @@ export const WINDOWS_BOUNDARY_TESTS = [
'config/scripts/windows-process-tree-gyp-rebuild.test.mjs',
'config/scripts/package-electron-runtime-contract.test.mjs',
'config/scripts/electron-builder-runtime-resources.test.mjs',
'src/main/browser/browser-client-page-renderer-lifecycle.electron.test.ts',
'src/main/browser/browser-route-webrtc-egress.electron.test.ts',
'src/main/browser/client-pages/renderer/browser-client-page-renderer-lifecycle.electron.test.ts',
'src/main/browser/network/egress/browser-route-webrtc-egress.electron.test.ts',
'src/main/persistence/profile-state/profile-state-writer-stall.electron.test.ts',
'src/main/providers/windows-conpty-wide-char-duplication.node-pty.test.ts',
'src/main/providers/pty-repaint-wide-char-buffer.node-pty.test.ts',
@@ -127,7 +127,7 @@ const SPECIFIC_PLUGIN_ROUTES = [
'src\\/main\\/ipc\\/(?:plugins|plugin-frame-entry-ipc)\\.ts$',
'src\\/main\\/startup\\/main-process-plugins',
'config\\/build-plugins\\/main-build-entry-points',
'src\\/main\\/browser\\/browser-guest-shortcut-(?:forwarding|dispatch)',
'src\\/main\\/browser\\/guest-lifecycle\\/input\\/browser-guest-shortcut-(?:forwarding|dispatch)',
'src\\/renderer\\/src\\/components\\/right-sidebar\\/(?:plugin-frame-|use-plugin-frame-|PluginPanel\\.tsx$|plugin-panel-design-token-css|use-plugin-panel-theme-revision)',
'src\\/renderer\\/src\\/components\\/editor\\/(?:PluginCustomEditorFrame\\.tsx$|plugin-custom-editor-host)'
].join('|'),
@@ -66,7 +66,7 @@ describe('unit support routing', () => {
'src/renderer/src/components/native-chat/NativeChatStructuredSession.next-test-harness.tsx',
'src/renderer/src/components/native-chat/NativeChatStructuredSession.tsx',
'src/main/providers/windows-conpty-wide-char-duplication.node-pty.test.ts',
'src/main/browser/browser-route-webrtc-egress.electron.test.ts'
'src/main/browser/network/egress/browser-route-webrtc-egress.electron.test.ts'
]) {
const result = classifyPrJobs([unitHarness, file])
expect(result.should_run, file).toBe(true)
+6 -5
View File
@@ -144,16 +144,17 @@ const NODE_RUNTIME_INCLUDE = [
'src/main/foreign-sqlite-readers/**/*.test.ts',
'src/main/browser/*cookie*.test.ts',
'src/main/browser/cookies/*cookie*.test.ts',
'src/main/browser/cookies/client-route/*cookie*.test.ts',
'src/main/browser/cookies/sources/browser-cookie-decryption.test.ts',
'src/main/browser/cookies/sources/browser-cookie-import-undecryptable.test.ts',
'src/main/browser/cookies/sources/browser-cookie-source-partition.test.ts',
// Playwright's CDP transport needs Node's WebSocket implementation.
'src/main/browser/browser-popup-adapter-compatibility.electron.test.ts',
'src/main/browser/popup-origin-chrome.electron.test.ts',
'src/main/browser/guest-lifecycle/popups/browser-popup-adapter-compatibility.electron.test.ts',
'src/main/browser/guest-lifecycle/popups/popup-origin-chrome.electron.test.ts',
'src/main/browser/browser-link-materialization.electron.test.ts',
'src/main/browser/browser-popup-compatibility.electron.test.ts',
'src/main/browser/browser-popup-native-compatibility.electron.test.ts',
'src/main/browser/browser-popup-background-compatibility.electron.test.ts',
'src/main/browser/guest-lifecycle/popups/browser-popup-compatibility.electron.test.ts',
'src/main/browser/guest-lifecycle/popups/browser-popup-native-compatibility.electron.test.ts',
'src/main/browser/guest-lifecycle/popups/browser-popup-background-compatibility.electron.test.ts',
'src/main/ai-vault/scanners/devin/session-scanner-devin-db.test.ts',
'src/shared/workspace-session-salvage.test.ts',
'src/main/git/repo-detection.test.ts',
@@ -2,10 +2,10 @@ import { EventEmitter } from 'node:events'
import { describe, expect, it, vi } from 'vitest'
import type { WebContents } from 'electron'
import { runWithActionEffects, type ActionEffectsHost } from './agent-browser-action-effects'
import type { BrowserPageEvent } from '../browser-page-events'
import type { BrowserPageEvent } from '../guest-lifecycle/browser-page-events'
import { readBrowserActionEffects } from '../../../shared/browser-action-effects'
vi.mock('../remote-cli-page-admission', () => ({
vi.mock('../routing/input-ownership/remote-cli-page-admission', () => ({
readRemoteCliAdmittedPage: (_id: number, read: () => Promise<unknown>) => read()
}))
@@ -3,8 +3,8 @@ import type { WebContents } from 'electron'
import type { BrowserActionEffects } from '../../../shared/runtime-browser-contracts'
import { isRecord } from '../../../shared/agent-status-child-work-value-guards'
import { withTimeout } from '../../../shared/promise-timeout-fallback'
import type { BrowserPageEvent } from '../browser-page-events'
import { readRemoteCliAdmittedPage } from '../remote-cli-page-admission'
import type { BrowserPageEvent } from '../guest-lifecycle/browser-page-events'
import { readRemoteCliAdmittedPage } from '../routing/input-ownership/remote-cli-page-admission'
import { readPageChange } from './agent-browser-snapshot-delta'
import { isLoadingMainFrame } from './agent-browser-bridge-process'
@@ -1,7 +1,7 @@
import { BrowserError } from '../browser-error'
import { AgentBrowserBridgeShutdown } from './agent-browser-bridge-shutdown'
import type { ResolvedBrowserCommandTarget } from './agent-browser-bridge-types'
import { assertRemoteCliPageAccess } from '../remote-cli-page-admission'
import { assertRemoteCliPageAccess } from '../routing/input-ownership/remote-cli-page-admission'
import type { ActionEffectsHost } from './agent-browser-action-effects'
const EFFECTS_SNAPSHOT_TIMEOUT_MS = 5_000
@@ -6,14 +6,18 @@ import type {
BrowserEvalResult
} from '../../../shared/runtime-browser-contracts'
import { BrowserError } from '../browser-error'
import { captureFullPageScreenshot, SCREENSHOT_TIMEOUT_MS, withTimeout } from '../cdp-screenshot'
import {
captureFullPageScreenshot,
SCREENSHOT_TIMEOUT_MS,
withTimeout
} from '../cdp/commands/cdp-screenshot'
import {
agentBrowserScreenshotArgs,
readAgentBrowserScreenshot
} from './agent-browser-screenshot-arguments'
import { readRasterImageDimensions } from '../../../shared/raster-image-dimensions'
import { acquireElectronDebugger } from '../electron-debugger-lease'
import { sendGuestCdpCommand } from '../guest-cdp-command'
import { acquireElectronDebugger } from '../cdp/debugger/electron-debugger-lease'
import { sendGuestCdpCommand } from '../cdp/debugger/guest-cdp-command'
import { AgentBrowserBridgeUtilityCommands } from './agent-browser-bridge-page-commands'
import { ORCA_TAB_SESSION_PREFIX } from './agent-browser-orphan-sweep'
import { captureRemoteCliBrowserWorkBound } from '../../runtime/desktop-browser-bridge/remote-cli-browser-scope'
@@ -40,7 +40,7 @@ const { CdpWsProxyMock } = vi.hoisted(() => {
return { CdpWsProxyMock: Object.assign(MockClass, { instances }) }
})
vi.mock('../cdp-ws-proxy', () => ({
vi.mock('../cdp/transport/cdp-ws-proxy', () => ({
CdpWsProxy: CdpWsProxyMock
}))
vi.mock('../browser-error', () => ({
@@ -53,7 +53,7 @@ vi.mock('../browser-error', () => ({
}
}))
vi.mock('../cdp-bridge', async () => {
vi.mock('../cdp/commands/cdp-bridge', async () => {
const { BrowserError } = await vi.importMock<typeof BrowserErrorTypes>('../browser-error')
return { BrowserError }
})
@@ -53,7 +53,7 @@ const { CdpWsProxyMock } = vi.hoisted(() => {
return { CdpWsProxyMock: Object.assign(MockClass, { instances }) }
})
vi.mock('../cdp-ws-proxy', () => ({
vi.mock('../cdp/transport/cdp-ws-proxy', () => ({
CdpWsProxy: CdpWsProxyMock
}))
vi.mock('../browser-error', () => ({
@@ -66,7 +66,7 @@ vi.mock('../browser-error', () => ({
}
}))
vi.mock('../cdp-bridge', async () => {
vi.mock('../cdp/commands/cdp-bridge', async () => {
const { BrowserError } = await vi.importMock<typeof BrowserErrorTypes>('../browser-error')
return { BrowserError }
})
@@ -9,14 +9,14 @@ import { assertClipboardTextWriteWithinLimitWithYield } from '../../../shared/cl
import { normalizeBrowserNavigationUrl } from '../../../shared/browser-url'
import { BrowserError } from '../browser-error'
import { ORCA_TAB_SESSION_PREFIX } from './agent-browser-orphan-sweep'
import { FILL_ELEMENT_FUNCTION } from '../browser-element-functions'
import { FILL_ELEMENT_FUNCTION } from '../cdp/input/browser-element-functions'
import { EMBEDDED_NAVIGATION_TIMEOUT_MS } from './agent-browser-bridge-types'
import {
isAbortedNavigationError,
waitForAbortedNavigationReplacement
} from './agent-browser-bridge-process'
import { AgentBrowserBridgeQueue } from './agent-browser-bridge-queue'
import { assertRemoteCliPageAccess } from '../remote-cli-page-admission'
import { assertRemoteCliPageAccess } from '../routing/input-ownership/remote-cli-page-admission'
import { agentBrowserSnapshotArgs } from './agent-browser-snapshot-arguments'
export abstract class AgentBrowserBridgeCoreCommands extends AgentBrowserBridgeQueue {
@@ -1,9 +1,9 @@
import type { WebContents } from 'electron'
import { BrowserError } from '../browser-error'
import type { CapturedElement } from '../cdp-element-capture'
import { assertExpectedPageUrlForStep } from '../browser-expected-page-url'
import { sendGuestCdpCommand } from '../guest-cdp-command'
import { readRecord, readString } from '../guest-frame-input-sessions'
import type { CapturedElement } from '../cdp/commands/cdp-element-capture'
import { assertExpectedPageUrlForStep } from '../cdp/input/browser-expected-page-url'
import { sendGuestCdpCommand } from '../cdp/debugger/guest-cdp-command'
import { readRecord, readString } from '../cdp/input/guest-frame-input-sessions'
import { AgentBrowserBridgeExecution } from './agent-browser-bridge-execution'
export type CapturedTarget = { wc: WebContents; captured: CapturedElement }
@@ -13,7 +13,7 @@ import {
} from './agent-browser-batch-command'
import { AgentBrowserBridgeTabs } from './agent-browser-bridge-tabs'
import { assertRemoteCliBrowserAccess } from '../../runtime/desktop-browser-bridge/remote-cli-browser-scope'
import { assertExpectedPageUrlForStep } from '../browser-expected-page-url'
import { assertExpectedPageUrlForStep } from '../cdp/input/browser-expected-page-url'
import { ORCA_TAB_SESSION_PREFIX } from './agent-browser-orphan-sweep'
import { canSkipAgentBrowserSessionReset } from './agent-browser-session-reset'
import {
@@ -35,11 +35,11 @@ const { CdpWsProxyMock } = vi.hoisted(() => {
})
return { CdpWsProxyMock: Object.assign(MockClass, { instances }) }
})
vi.mock('../cdp-ws-proxy', () => ({ CdpWsProxy: CdpWsProxyMock }))
vi.mock('../cdp/transport/cdp-ws-proxy', () => ({ CdpWsProxy: CdpWsProxyMock }))
import { isRecord } from '../../../shared/agent-status-child-work-value-guards'
import { runInRemoteCliBrowserScope } from '../../runtime/desktop-browser-bridge/remote-cli-browser-scope'
import { runWithRequestedPageUrl } from '../browser-expected-page-url'
import { runWithRequestedPageUrl } from '../cdp/input/browser-expected-page-url'
import { AgentBrowserBridge } from './agent-browser-bridge'
import {
answerAgentBrowserCommands,
@@ -36,7 +36,7 @@ const { CdpWsProxyMock } = vi.hoisted(() => {
})
return { CdpWsProxyMock: Object.assign(MockClass, { instances }) }
})
vi.mock('../cdp-ws-proxy', () => ({ CdpWsProxy: CdpWsProxyMock }))
vi.mock('../cdp/transport/cdp-ws-proxy', () => ({ CdpWsProxy: CdpWsProxyMock }))
import { AgentBrowserBridge } from './agent-browser-bridge'
import {
@@ -46,7 +46,7 @@ import {
import {
assertRemoteCliPageAccess,
runUnderRemoteCliPageAdmission
} from '../remote-cli-page-admission'
} from '../routing/input-ownership/remote-cli-page-admission'
import {
answerAgentBrowserCommands,
createFakeAgentBrowserChild,
@@ -6,7 +6,7 @@ import { assertClipboardTextWriteWithinLimitWithYield } from '../../../shared/cl
import { iterateBrowserTextInsertionChunks } from '../../../shared/browser-text-insertion-chunks'
import { AGENT_BROWSER_TEXT_ARGUMENT_MAX_BYTES } from './agent-browser-bridge-types'
import { AgentBrowserBridgeCoreCommands } from './agent-browser-bridge-core-commands'
import { SELECT_OPTION_TARGET_FUNCTION } from '../browser-element-functions'
import { SELECT_OPTION_TARGET_FUNCTION } from '../cdp/input/browser-element-functions'
export abstract class AgentBrowserBridgeInputCommands extends AgentBrowserBridgeCoreCommands {
async select(
@@ -15,18 +15,18 @@ import {
FILE_UPLOAD_TARGET_FUNCTION,
FILL_ELEMENT_FUNCTION,
SELECT_ALL_ELEMENT_FUNCTION
} from '../browser-element-functions'
import { assertUploadFilesExist } from '../browser-upload-files'
} from '../cdp/input/browser-element-functions'
import { assertUploadFilesExist } from '../cdp/input/browser-upload-files'
import type { WebContents } from 'electron'
import type { CapturedElement } from '../cdp-element-capture'
import { interceptFileChooser, type OpenedFileChooser } from '../guest-file-chooser'
import { readRecord, readString } from '../guest-frame-input-sessions'
import type { CapturedElement } from '../cdp/commands/cdp-element-capture'
import { interceptFileChooser, type OpenedFileChooser } from '../cdp/input/guest-file-chooser'
import { readRecord, readString } from '../cdp/input/guest-frame-input-sessions'
import {
agentBrowserWaitArguments,
type AgentBrowserWaitOptions
} from './agent-browser-wait-arguments'
import { parseCdpKeyEvent } from '../cdp-keyboard-us-layout'
import { readRemoteCliAdmittedPage } from '../remote-cli-page-admission'
import { parseCdpKeyEvent } from '../cdp/input/cdp-keyboard-us-layout'
import { readRemoteCliAdmittedPage } from '../routing/input-ownership/remote-cli-page-admission'
import { AgentBrowserBridgeKeyCommands } from './agent-browser-bridge-key-commands'
export abstract class AgentBrowserBridgeInteractionCommands extends AgentBrowserBridgeKeyCommands {
@@ -33,10 +33,10 @@ const { CdpWsProxyMock } = vi.hoisted(() => {
})
return { CdpWsProxyMock: Object.assign(MockClass, { instances }) }
})
vi.mock('../cdp-ws-proxy', () => ({ CdpWsProxy: CdpWsProxyMock }))
vi.mock('../cdp/transport/cdp-ws-proxy', () => ({ CdpWsProxy: CdpWsProxyMock }))
import { AgentBrowserBridge } from './agent-browser-bridge'
import { installBrowserJavaScriptDialogs } from '../browser-javascript-dialogs'
import { installBrowserJavaScriptDialogs } from '../guest-lifecycle/prompts/browser-javascript-dialogs'
import { runInRemoteCliBrowserScope } from '../../runtime/desktop-browser-bridge/remote-cli-browser-scope'
import {
createFakeAgentBrowserChild,
@@ -4,21 +4,21 @@ import type {
} from '../../../shared/runtime-browser-contracts'
import { assertClipboardTextWriteWithinLimitWithYield } from '../../../shared/clipboard-text'
import { BrowserError } from '../browser-error'
import { acquireElectronDebugger } from '../electron-debugger-lease'
import { acquireElectronDebugger } from '../cdp/debugger/electron-debugger-lease'
import {
parseCdpKeyEvent,
imeFallbackKeyEvent,
typedInputSteps,
type TypedInputStep
} from '../cdp-keyboard-us-layout'
} from '../cdp/input/cdp-keyboard-us-layout'
import type { ResolvedBrowserCommandTarget } from './agent-browser-bridge-types'
import {
dispatchPageKeyEvents,
routePageTextInsertion,
type GuestCdpSender
} from '../guest-direct-key-input'
import { assertExpectedPageUrlForStep } from '../browser-expected-page-url'
import { sendGuestCdpCommand } from '../guest-cdp-command'
} from '../cdp/input/guest-direct-key-input'
import { assertExpectedPageUrlForStep } from '../cdp/input/browser-expected-page-url'
import { sendGuestCdpCommand } from '../cdp/debugger/guest-cdp-command'
import { AgentBrowserBridgeCaptureCommands } from './agent-browser-bridge-capture-commands'
// Bounds the events a typed run holds and how long it keeps the main loop busy.
@@ -42,7 +42,7 @@ const { CdpWsProxyMock } = vi.hoisted(() => {
return { CdpWsProxyMock: Object.assign(MockClass, { instances }) }
})
vi.mock('../cdp-ws-proxy', () => ({
vi.mock('../cdp/transport/cdp-ws-proxy', () => ({
CdpWsProxy: CdpWsProxyMock
}))
@@ -1,4 +1,4 @@
import { CdpWsProxy } from '../cdp-ws-proxy'
import { CdpWsProxy } from '../cdp/transport/cdp-ws-proxy'
import { BrowserError } from '../browser-error'
import { ORCA_TAB_SESSION_PREFIX } from './agent-browser-orphan-sweep'
import { AgentBrowserBridgeRawProcess } from './agent-browser-bridge-raw-process'
@@ -1,15 +1,15 @@
import type { BrowserMouseModifier } from './agent-browser-bridge-types'
import type { BrowserMouseModifier } from '../cdp/input/cdp-pointer-targets'
import { BrowserError } from '../browser-error'
import {
normalizeCdpMouseButton,
cdpPointerButtonMask,
cdpMouseModifierMask,
resolveMobileTouchClickPoint
} from './agent-browser-bridge-mouse'
import { acquireElectronDebugger } from '../electron-debugger-lease'
import { assertExpectedPageUrlForStep } from '../browser-expected-page-url'
import { sendGuestCdpCommand } from '../guest-cdp-command'
import { touchEmulationParams } from '../guest-touch-emulation'
} from '../cdp/input/cdp-pointer-targets'
import { acquireElectronDebugger } from '../cdp/debugger/electron-debugger-lease'
import { assertExpectedPageUrlForStep } from '../cdp/input/browser-expected-page-url'
import { sendGuestCdpCommand } from '../cdp/debugger/guest-cdp-command'
import { touchEmulationParams } from '../cdp/input/guest-touch-emulation'
import { assertRemoteCliBrowserAccess } from '../../runtime/desktop-browser-bridge/remote-cli-browser-scope'
import { AgentBrowserBridgePointerCommands } from './agent-browser-bridge-pointer-commands'
import { agentBrowserSetMediaArguments } from './agent-browser-set-media-arguments'
@@ -40,7 +40,7 @@ const { CdpWsProxyMock } = vi.hoisted(() => {
return { CdpWsProxyMock: Object.assign(MockClass, { instances }) }
})
vi.mock('../cdp-ws-proxy', () => ({
vi.mock('../cdp/transport/cdp-ws-proxy', () => ({
CdpWsProxy: CdpWsProxyMock
}))
vi.mock('../browser-error', () => ({
@@ -53,7 +53,7 @@ vi.mock('../browser-error', () => ({
}
}))
vi.mock('../cdp-bridge', async () => {
vi.mock('../cdp/commands/cdp-bridge', async () => {
const { BrowserError } = await vi.importMock<typeof BrowserErrorTypes>('../browser-error')
return { BrowserError }
})
@@ -40,7 +40,7 @@ const { CdpWsProxyMock } = vi.hoisted(() => {
return { CdpWsProxyMock: Object.assign(MockClass, { instances }) }
})
vi.mock('../cdp-ws-proxy', () => ({
vi.mock('../cdp/transport/cdp-ws-proxy', () => ({
CdpWsProxy: CdpWsProxyMock
}))
vi.mock('../browser-error', () => ({
@@ -53,7 +53,7 @@ vi.mock('../browser-error', () => ({
}
}))
vi.mock('../cdp-bridge', async () => {
vi.mock('../cdp/commands/cdp-bridge', async () => {
const { BrowserError } = await vi.importMock<typeof BrowserErrorTypes>('../browser-error')
return { BrowserError }
})
@@ -16,9 +16,9 @@ import { AgentBrowserBridgeMouseCommands } from './agent-browser-bridge-mouse-co
import {
answerBrowserJavaScriptDialog,
getBrowserJavaScriptDialog
} from '../browser-javascript-dialogs'
} from '../guest-lifecycle/prompts/browser-javascript-dialogs'
import { captureRemoteCliBrowserRevocation } from '../../runtime/desktop-browser-bridge/remote-cli-browser-scope'
import { ExpectedPageUrlGuard, getRequestedPageUrl } from '../browser-expected-page-url'
import { ExpectedPageUrlGuard, getRequestedPageUrl } from '../cdp/input/browser-expected-page-url'
/** Keep JSON results stable across CLI payload versions. */
export type BrowserDialogAnswer = { accepted: boolean; browserPageId?: string; checkedUrl?: string }
@@ -1,6 +1,6 @@
import type { ResolvedBrowserCommandTarget } from './agent-browser-bridge-types'
import { BrowserError } from '../browser-error'
import { normalizeCdpPointerButton } from './agent-browser-bridge-mouse'
import { normalizeCdpPointerButton } from '../cdp/input/cdp-pointer-targets'
import {
assertFinitePointerValues,
cdpPointerStateFor,
@@ -8,14 +8,14 @@ import {
releaseCdpPointerButton,
resolveCdpPointerReleaseButton,
type CdpPointerState
} from '../cdp-pointer-input'
import { acquireElectronDebugger } from '../electron-debugger-lease'
import { assertExpectedPageUrlForStep } from '../browser-expected-page-url'
import { sendGuestCdpCommand } from '../guest-cdp-command'
} from '../cdp/input/cdp-pointer-input'
import { acquireElectronDebugger } from '../cdp/debugger/electron-debugger-lease'
import { assertExpectedPageUrlForStep } from '../cdp/input/browser-expected-page-url'
import { sendGuestCdpCommand } from '../cdp/debugger/guest-cdp-command'
import { AgentBrowserBridgeInputCommands } from './agent-browser-bridge-input-commands'
import { isEmbeddedGuest } from '../guest-direct-key-input'
import { enablePageFocusEmulation } from '../agent-input-focus-guard'
import { waitForGuestFirstPaint } from '../guest-first-paint'
import { isEmbeddedGuest } from '../cdp/input/guest-direct-key-input'
import { enablePageFocusEmulation } from '../cdp/input/agent-input-focus-guard'
import { waitForGuestFirstPaint } from '../cdp/debugger/guest-first-paint'
type CdpPointerEventParams = {
type: 'mouseMoved' | 'mousePressed' | 'mouseReleased' | 'mouseWheel'
@@ -44,7 +44,7 @@ const { CdpWsProxyMock } = vi.hoisted(() => {
return { CdpWsProxyMock: Object.assign(MockClass, { instances }) }
})
vi.mock('../cdp-ws-proxy', () => ({
vi.mock('../cdp/transport/cdp-ws-proxy', () => ({
CdpWsProxy: CdpWsProxyMock
}))
vi.mock('../browser-error', () => ({
@@ -57,7 +57,7 @@ vi.mock('../browser-error', () => ({
}
}))
vi.mock('../cdp-bridge', async () => {
vi.mock('../cdp/commands/cdp-bridge', async () => {
const { BrowserError } = await vi.importMock<typeof BrowserErrorTypes>('../browser-error')
return { BrowserError }
})
@@ -6,12 +6,12 @@ import type {
EnqueueTargetedCommandOptions,
ResolvedBrowserCommandTarget
} from './agent-browser-bridge-types'
import { runWithRemoteCliPageAdmission } from '../remote-cli-page-admission'
import { runWithRemoteCliPageAdmission } from '../routing/input-ownership/remote-cli-page-admission'
import { runWithActionEffects } from './agent-browser-action-effects'
import { getRequestedPageUrl, runExpectingPageUrl } from '../browser-expected-page-url'
import { getRequestedPageUrl, runExpectingPageUrl } from '../cdp/input/browser-expected-page-url'
import { AGENT_BROWSER_CLEANUP_TIMEOUT_MS } from './agent-browser-bridge-types'
import { releaseHeldPageInput } from '../guest-direct-key-input'
import { onBrowserJavaScriptDialogOpened } from '../browser-javascript-dialogs'
import { releaseHeldPageInput } from '../cdp/input/guest-direct-key-input'
import { onBrowserJavaScriptDialogOpened } from '../guest-lifecycle/prompts/browser-javascript-dialogs'
import {
assertNoJavaScriptDialog,
dialogAnswerHint,
@@ -48,7 +48,7 @@ const { CdpWsProxyMock } = vi.hoisted(() => {
return { CdpWsProxyMock: Object.assign(MockClass, { instances }) }
})
vi.mock('../cdp-ws-proxy', () => ({
vi.mock('../cdp/transport/cdp-ws-proxy', () => ({
CdpWsProxy: CdpWsProxyMock
}))
vi.mock('../browser-error', () => ({
@@ -61,7 +61,7 @@ vi.mock('../browser-error', () => ({
}
}))
vi.mock('../cdp-bridge', async () => {
vi.mock('../cdp/commands/cdp-bridge', async () => {
const { BrowserError } = await vi.importMock<typeof BrowserErrorTypes>('../browser-error')
return { BrowserError }
})
@@ -15,14 +15,14 @@ import type {
import { BrowserError } from '../browser-error'
import { parseShellArgs, stripAgentBrowserTargetArgs } from './agent-browser-bridge-process'
import { AgentBrowserBridgeInteractionCommands } from './agent-browser-bridge-interaction-commands'
import { sendGuestCdpCommand } from '../guest-cdp-command'
import { sendGuestCdpCommand } from '../cdp/debugger/guest-cdp-command'
import {
toBrowserConsoleResult,
toBrowserNetworkLogResult,
type AgentBrowserConsoleOutput,
type AgentBrowserNetworkOutput
} from './agent-browser-log-entries'
import { touchEmulationParams } from '../guest-touch-emulation'
import { touchEmulationParams } from '../cdp/input/guest-touch-emulation'
export abstract class AgentBrowserBridgeStateCommands extends AgentBrowserBridgeInteractionCommands {
async cookieGet(
@@ -40,7 +40,7 @@ const { CdpWsProxyMock } = vi.hoisted(() => {
return { CdpWsProxyMock: Object.assign(MockClass, { instances }) }
})
vi.mock('../cdp-ws-proxy', () => ({
vi.mock('../cdp/transport/cdp-ws-proxy', () => ({
CdpWsProxy: CdpWsProxyMock
}))
vi.mock('../browser-error', () => ({
@@ -53,7 +53,7 @@ vi.mock('../browser-error', () => ({
}
}))
vi.mock('../cdp-bridge', async () => {
vi.mock('../cdp/commands/cdp-bridge', async () => {
const { BrowserError } = await vi.importMock<typeof BrowserErrorTypes>('../browser-error')
return { BrowserError }
})
@@ -49,7 +49,7 @@ const { CdpWsProxyMock } = vi.hoisted(() => {
return { CdpWsProxyMock: Object.assign(MockClass, { instances }) }
})
vi.mock('../cdp-ws-proxy', () => ({
vi.mock('../cdp/transport/cdp-ws-proxy', () => ({
CdpWsProxy: CdpWsProxyMock
}))
vi.mock('../browser-error', () => ({
@@ -62,7 +62,7 @@ vi.mock('../browser-error', () => ({
}
}))
vi.mock('../cdp-bridge', async () => {
vi.mock('../cdp/commands/cdp-bridge', async () => {
const { BrowserError } = await vi.importMock<typeof BrowserErrorTypes>('../browser-error')
return { BrowserError }
})
@@ -89,7 +89,7 @@ import {
FILE_INPUT_FRAME_URL_FUNCTION,
FILE_UPLOAD_TARGET_FUNCTION,
FILL_ELEMENT_FUNCTION
} from '../browser-element-functions'
} from '../cdp/input/browser-element-functions'
overrideBridgeWebContentsLookup(AgentBrowserBridge.prototype, webContentsFromIdMock)
@@ -1,5 +1,5 @@
import type { ChildProcess } from 'node:child_process'
import type { CdpWsProxy } from '../cdp-ws-proxy'
import type { CdpWsProxy } from '../cdp/transport/cdp-ws-proxy'
import type { BrowserError } from '../browser-error'
// Exceed agent-browser's internal navigation (30s) and default wait (25s) timeouts.
@@ -51,8 +51,6 @@ export type AgentBrowserCleanupOptions = {
keepQueuedCommands?: boolean
}
export type BrowserMouseModifier = 'cmd' | 'ctrl' | 'alt' | 'shift'
export type AgentBrowserExecOptions = {
envOverrides?: NodeJS.ProcessEnv
timeoutMs?: number
@@ -1,5 +1,5 @@
import { BrowserError } from '../browser-error'
import { getBrowserJavaScriptDialog } from '../browser-javascript-dialogs'
import { getBrowserJavaScriptDialog } from '../guest-lifecycle/prompts/browser-javascript-dialogs'
import type { BrowserJavaScriptDialog } from '../../../shared/browser-javascript-dialog'
const DIALOG_MESSAGE_QUOTE_MAX_CHARS = 500
@@ -7,7 +7,7 @@ import {
buildPopupIdentityProbe,
createPopupIdentityProbeRoot,
launchPopupIdentityProbe
} from './popup-identity-electron-probe'
} from './guest-lifecycle/popups/popup-identity-electron-probe'
const root = createPopupIdentityProbeRoot()
let probe: Awaited<ReturnType<typeof launchPopupIdentityProbe>>
@@ -25,7 +25,7 @@ vi.mock('electron', () => ({
webContents: { fromId: browserMocks.webContentsFromIdMock }
}))
vi.mock('./popup-origin-bar-window', () => ({
vi.mock('./guest-lifecycle/popups/popup-origin-bar-window', () => ({
openPopupWithOriginBar: browserMocks.openPopupWithOriginBarMock
}))
@@ -37,7 +37,7 @@ vi.mock('electron', () => ({
}
}))
vi.mock('./popup-origin-bar-window', () => ({
vi.mock('./guest-lifecycle/popups/popup-origin-bar-window', () => ({
openPopupWithOriginBar: browserMocks.openPopupWithOriginBarMock
}))
+6 -6
View File
@@ -1,9 +1,9 @@
import { resolveRendererWebContents } from './browser-guest-renderer-target'
import { setupGuestContextMenu } from './browser-guest-context-menu'
import { setupGrabShortcutForwarding } from './browser-guest-grab-shortcuts'
import { setupGuestMouseWheelZoomForwarding } from './browser-guest-wheel-zoom'
import { setupGuestShortcutForwarding } from './browser-guest-shortcut-forwarding'
import { setupGuestTargetUrlForwarding } from './browser-guest-target-url'
import { resolveRendererWebContents } from './guest-lifecycle/browser-guest-renderer-target'
import { setupGuestContextMenu } from './guest-lifecycle/input/browser-guest-context-menu'
import { setupGrabShortcutForwarding } from './guest-lifecycle/input/browser-guest-grab-shortcuts'
import { setupGuestMouseWheelZoomForwarding } from './guest-lifecycle/input/browser-guest-wheel-zoom'
import { setupGuestShortcutForwarding } from './guest-lifecycle/input/browser-guest-shortcut-forwarding'
import { setupGuestTargetUrlForwarding } from './guest-lifecycle/input/browser-guest-target-url'
import { BrowserManagerGrab } from './browser-manager-grab'
export abstract class BrowserManagerBindings extends BrowserManagerGrab {
@@ -25,7 +25,7 @@ vi.mock('electron', () => ({
webContents: { fromId: browserMocks.webContentsFromIdMock }
}))
vi.mock('./popup-origin-bar-window', () => ({
vi.mock('./guest-lifecycle/popups/popup-origin-bar-window', () => ({
openPopupWithOriginBar: browserMocks.openPopupWithOriginBarMock
}))
@@ -37,19 +37,19 @@ import {
BrowserClientDownloadRelay,
type BrowserClientDownloadRoute,
type BrowserClientDownloadRouteOutcome
} from './browser-client-download-relay'
import { BrowserClientFileChannelTransport } from './browser-client-file-channel-transport'
} from './client-hosts/file-transfers/browser-client-download-relay'
import { BrowserClientFileChannelTransport } from './client-hosts/file-transfers/browser-client-file-channel-transport'
import type { BrowserClientHostedPageInventory } from '../../shared/browser-client-host-protocol'
import {
registerBrowserClientDownloadRouter,
resetBrowserClientDownloadRouting,
setBrowserClientRouteWebContentsProbe
} from './browser-client-download-routing'
import { createBrowserClientPageGuestBinding } from './browser-client-page-guest-binding'
} from './client-hosts/file-transfers/browser-client-download-routing'
import { createBrowserClientPageGuestBinding } from './client-pages/lifecycle/browser-client-page-guest-binding'
import {
registerBrowserRouteGuestPopup,
resetBrowserRouteGuestPopupOwnership
} from './browser-route-guest-popup-ownership'
} from './routing/guest-authority/browser-route-guest-popup-ownership'
import {
createDownloadItem,
getDownloadItemEventHandler,
@@ -10,7 +10,9 @@ vi.mock('electron', () => ({
screen: { getCursorScreenPoint: () => ({ x: 0, y: 0 }) },
webContents: { fromId: (id: number) => mocks.contents.get(id) ?? null }
}))
vi.mock('./popup-origin-bar-window', () => ({ openPopupWithOriginBar: vi.fn() }))
vi.mock('./guest-lifecycle/popups/popup-origin-bar-window', () => ({
openPopupWithOriginBar: vi.fn()
}))
import {
DestroyedGuestTestContents,
@@ -10,7 +10,9 @@ vi.mock('electron', () => ({
screen: { getCursorScreenPoint: () => ({ x: 0, y: 0 }) },
webContents: { fromId: (id: number) => mocks.guests.get(id) ?? null }
}))
vi.mock('./popup-origin-bar-window', () => ({ openPopupWithOriginBar: vi.fn() }))
vi.mock('./guest-lifecycle/popups/popup-origin-bar-window', () => ({
openPopupWithOriginBar: vi.fn()
}))
import {
DestroyedGuestTestContents,
@@ -45,7 +45,9 @@ vi.mock('electron', () => {
webContents: { fromId: (id: number) => native.byId.get(id) }
}
})
vi.mock('./popup-origin-bar-window', () => ({ openPopupWithOriginBar: vi.fn() }))
vi.mock('./guest-lifecycle/popups/popup-origin-bar-window', () => ({
openPopupWithOriginBar: vi.fn()
}))
import { BrowserManager } from './browser-manager'
@@ -1,8 +1,8 @@
import { randomUUID } from 'node:crypto'
import path from 'node:path'
import { BrowserError } from './browser-error'
import { browserDownloadDestinationReservations } from './browser-download-destination'
import { routeBrowserClientDownload } from './browser-client-download-routing'
import { browserDownloadDestinationReservations } from './downloads/browser-download-destination'
import { routeBrowserClientDownload } from './client-hosts/file-transfers/browser-client-download-routing'
import {
safeOrigin,
type ActiveDownload,
@@ -1,4 +1,4 @@
import { browserDownloadDestinationReservations } from './browser-download-destination'
import { browserDownloadDestinationReservations } from './downloads/browser-download-destination'
import type {
BrowserDownloadFinishedEvent,
BrowserDownloadProgressEvent,
@@ -36,12 +36,12 @@ vi.mock('electron', () => ({
}
}))
vi.mock('./popup-origin-bar-window', () => ({
vi.mock('./guest-lifecycle/popups/popup-origin-bar-window', () => ({
openPopupWithOriginBar: browserMocks.openPopupWithOriginBarMock
}))
import { browserManager } from './browser-manager'
import { browserDownloadDestinationReservations } from './browser-download-destination'
import { browserDownloadDestinationReservations } from './downloads/browser-download-destination'
import {
createDownloadItem,
getDownloadItemEventHandler,
@@ -49,7 +49,7 @@ vi.mock('electron', () => ({
}
}))
vi.mock('./popup-origin-bar-window', () => ({
vi.mock('./guest-lifecycle/popups/popup-origin-bar-window', () => ({
openPopupWithOriginBar: browserMocks.openPopupWithOriginBarMock
}))
@@ -8,8 +8,8 @@ import {
BrowserManagerGuestPopupPolicy,
isLocalFileLinkFromLocalPage
} from './browser-manager-guest-popup-policy'
import { allowPageUnload } from './browser-guest-unload-policy'
import { initiatingFrameUrl } from './browser-external-app-launch'
import { allowPageUnload } from './guest-lifecycle/browser-guest-unload-policy'
import { initiatingFrameUrl } from './guest-lifecycle/prompts/browser-external-app-launch'
import { isSameExtensionNavigation } from '../../shared/browser-extension-url'
export abstract class BrowserManagerGuestNavigationPolicy extends BrowserManagerGuestPopupPolicy {
@@ -24,7 +24,7 @@ vi.mock('electron', () => ({
screen: { getCursorScreenPoint: browserMocks.screenGetCursorScreenPointMock },
webContents: { fromId: browserMocks.webContentsFromIdMock }
}))
vi.mock('./popup-origin-bar-window', () => ({
vi.mock('./guest-lifecycle/popups/popup-origin-bar-window', () => ({
openPopupWithOriginBar: browserMocks.openPopupWithOriginBarMock
}))
@@ -4,9 +4,9 @@ import {
type PopupOwnerContext
} from './browser-manager-types'
import { BrowserManagerGuestCleanup } from './browser-manager-guest-cleanup'
import { allowPageUnload } from './browser-guest-unload-policy'
import { allowPageUnload } from './guest-lifecycle/browser-guest-unload-policy'
import { installDocPreviewGuestPolicy } from './doc-preview-guest-policy'
import { installGuestDevToolsCloseShortcut } from './browser-guest-devtools-close-shortcut'
import { installGuestDevToolsCloseShortcut } from './guest-lifecycle/browser-guest-devtools-close-shortcut'
export abstract class BrowserManagerGuestPolicy extends BrowserManagerGuestCleanup {
attachGuestPolicies(
@@ -1,21 +1,24 @@
import { shell } from 'electron'
import { normalizeExternalBrowserUrl, redactKagiSessionToken } from '../../shared/browser-url'
import { trackBrowserGuestInputGesture } from './browser-guest-input-gesture'
import { trackBrowserGuestInputGesture } from './guest-lifecycle/input/browser-guest-input-gesture'
import {
isNewBrowserTabPopupIntent,
isBrowserTabPopupRequest,
normalizeBrowserPopupUrl
} from './browser-popup-new-tab-intent'
} from './guest-lifecycle/popups/browser-popup-new-tab-intent'
import { SAFE_POPUP_WINDOW_OPTIONS, safeOrigin } from './browser-manager-types'
import { openPopupWithOriginBar, type PopupChildWindowOptions } from './popup-origin-bar-window'
import {
openPopupWithOriginBar,
type PopupChildWindowOptions
} from './guest-lifecycle/popups/popup-origin-bar-window'
import { BrowserManagerNavigation } from './browser-manager-navigation'
import {
allowNativeBrowserPopup,
discardBrowserPopupContents,
isNativeBrowserPopupRequest
} from './browser-popup-native-window'
import { isBrowserRouteGuestPopup } from './browser-route-guest-popup-ownership'
import { requestBrowserExternalAppLaunch } from './browser-external-app-launch'
} from './guest-lifecycle/popups/browser-popup-native-window'
import { isBrowserRouteGuestPopup } from './routing/guest-authority/browser-route-guest-popup-ownership'
import { requestBrowserExternalAppLaunch } from './guest-lifecycle/prompts/browser-external-app-launch'
export abstract class BrowserManagerGuestPopupPolicy extends BrowserManagerNavigation {
protected installGuestPopupPolicy(guest: Electron.WebContents): () => void {
@@ -35,7 +35,7 @@ vi.mock('electron', () => ({
}
}))
vi.mock('./popup-origin-bar-window', () => ({
vi.mock('./guest-lifecycle/popups/popup-origin-bar-window', () => ({
openPopupWithOriginBar: browserMocks.openPopupWithOriginBarMock
}))
@@ -9,7 +9,9 @@ vi.mock('electron', () => ({
screen: { getCursorScreenPoint: () => ({ x: 0, y: 0 }) },
webContents: { fromId: () => null }
}))
vi.mock('./popup-origin-bar-window', () => ({ openPopupWithOriginBar: vi.fn() }))
vi.mock('./guest-lifecycle/popups/popup-origin-bar-window', () => ({
openPopupWithOriginBar: vi.fn()
}))
import { BrowserManager } from './browser-manager'
import { DestroyedGuestTestContents } from './browser-manager-destroyed-guest-test-fixture'
@@ -35,7 +35,7 @@ vi.mock('electron', () => ({
}
}))
vi.mock('./popup-origin-bar-window', () => ({
vi.mock('./guest-lifecycle/popups/popup-origin-bar-window', () => ({
openPopupWithOriginBar: browserMocks.openPopupWithOriginBarMock
}))
@@ -35,7 +35,7 @@ vi.mock('electron', () => ({
}
}))
vi.mock('./popup-origin-bar-window', () => ({
vi.mock('./guest-lifecycle/popups/popup-origin-bar-window', () => ({
openPopupWithOriginBar: browserMocks.openPopupWithOriginBarMock
}))
@@ -1,4 +1,7 @@
import { openPopupWithOriginBar, type PopupChildWindowOptions } from './popup-origin-bar-window'
import {
openPopupWithOriginBar,
type PopupChildWindowOptions
} from './guest-lifecycle/popups/popup-origin-bar-window'
import { getBrowserProcessUserAgentIdentity } from './browser-process-user-agent'
import type { BrowserSessionRequestUserAgentResolver } from './browser-session-ua'
import { isGoogleAuthUrl } from './browser-google-auth-ua'
@@ -37,13 +37,13 @@ vi.mock('electron', () => ({
}
}))
vi.mock('./popup-origin-bar-window', () => ({
vi.mock('./guest-lifecycle/popups/popup-origin-bar-window', () => ({
openPopupWithOriginBar: browserMocks.openPopupWithOriginBarMock
}))
import { browserManager } from './browser-manager'
import { respondToBrowserPagePrompt } from './browser-page-prompts'
import { handleBrowserGuestLogin } from './browser-http-auth-prompt'
import { respondToBrowserPagePrompt } from './guest-lifecycle/prompts/browser-page-prompts'
import { handleBrowserGuestLogin } from './guest-lifecycle/prompts/browser-http-auth-prompt'
import {
rendererWebContentsId,
resetBrowserManagerMocks,
@@ -25,7 +25,7 @@ vi.mock('electron', () => ({
webContents: { fromId: browserMocks.webContentsFromIdMock }
}))
vi.mock('./popup-origin-bar-window', () => ({
vi.mock('./guest-lifecycle/popups/popup-origin-bar-window', () => ({
openPopupWithOriginBar: browserMocks.openPopupWithOriginBarMock
}))
@@ -30,7 +30,7 @@ vi.mock('electron', () => ({
webContents: { fromId: browserMocks.webContentsFromIdMock }
}))
vi.mock('./popup-origin-bar-window', () => ({
vi.mock('./guest-lifecycle/popups/popup-origin-bar-window', () => ({
openPopupWithOriginBar: browserMocks.openPopupWithOriginBarMock
}))
@@ -37,7 +37,7 @@ vi.mock('electron', () => ({
}
}))
vi.mock('./popup-origin-bar-window', () => ({
vi.mock('./guest-lifecycle/popups/popup-origin-bar-window', () => ({
openPopupWithOriginBar: browserMocks.openPopupWithOriginBarMock
}))
@@ -45,7 +45,7 @@ import { browserManager } from './browser-manager'
import {
MAX_PAGE_INITIATED_TABS_PER_WINDOW,
PAGE_INITIATED_TAB_WINDOW_MS
} from './browser-page-initiated-tab-budget'
} from './guest-lifecycle/popups/browser-page-initiated-tab-budget'
import {
rendererWebContentsId,
resetBrowserManagerMocks,
+5 -2
View File
@@ -10,8 +10,11 @@ import { BrowserManagerRegistration } from './browser-manager-registration'
import {
isBrowserRouteGuestPopup,
listBrowserRouteGuestPopups
} from './browser-route-guest-popup-ownership'
import { browserPopupPageId, browserPopupPageWebContentsId } from './browser-popup-page-id'
} from './routing/guest-authority/browser-route-guest-popup-ownership'
import {
browserPopupPageId,
browserPopupPageWebContentsId
} from './guest-lifecycle/popups/browser-popup-page-id'
export abstract class BrowserManagerQueries extends BrowserManagerRegistration {
getGuestWebContentsId(browserTabId: string): number | null {
@@ -1,12 +1,12 @@
import { webContents } from 'electron'
import { browserDownloadDestinationReservations } from './browser-download-destination'
import { browserDownloadDestinationReservations } from './downloads/browser-download-destination'
import { isWorkspaceDocPageId } from './doc-preview-guest-policy'
import type { BrowserGuestRegistration } from './browser-manager-types'
import { BrowserManagerGuestPolicy } from './browser-manager-guest-policy'
import {
cancelBrowserPagePrompts,
showBrowserPagePromptsAwaitingRegistration
} from './browser-page-prompts'
} from './guest-lifecycle/prompts/browser-page-prompts'
export abstract class BrowserManagerRegistration extends BrowserManagerGuestPolicy {
registerGuest(
+4 -4
View File
@@ -4,11 +4,11 @@ import type { BrowserSiteDisplayController } from './browser-site-display-contro
import {
createPageInitiatedTabBudget,
type PageInitiatedTabBudget
} from './browser-page-initiated-tab-budget'
} from './guest-lifecycle/popups/browser-page-initiated-tab-budget'
import type { KeybindingOverrides } from '../../shared/keybindings'
import type { BrowserLoadError } from '../../shared/browser-workspace-types'
import { resolveBrowserRouteGuestPopupOpener } from './browser-route-guest-popup-ownership'
import type { BrowserPagePromptTarget } from './browser-page-prompts'
import { resolveBrowserRouteGuestPopupOpener } from './routing/guest-authority/browser-route-guest-popup-ownership'
import type { BrowserPagePromptTarget } from './guest-lifecycle/prompts/browser-page-prompts'
import type {
ActiveDownload,
CdpUserAgentOverrideState,
@@ -25,7 +25,7 @@ import type {
} from '../../shared/browser-guest-events'
import type { BrowserGrabCancelReason } from '../../shared/browser-grab-types'
import { BrowserManagerViewportScrollState } from './browser-manager-viewport-scroll-state'
import { BrowserGuestDevToolsDock } from './browser-guest-devtools-dock'
import { BrowserGuestDevToolsDock } from './guest-lifecycle/browser-guest-devtools-dock'
/** A link a headless serve page asked to open as an Orca tab beside it. */
export type OffscreenBrowserTabOpenRequest = {
@@ -26,7 +26,7 @@ vi.mock('electron', () => ({
screen: { getCursorScreenPoint: mocks.screenGetCursorScreenPointMock },
webContents: { fromId: mocks.webContentsFromIdMock }
}))
vi.mock('./popup-origin-bar-window', () => ({
vi.mock('./guest-lifecycle/popups/popup-origin-bar-window', () => ({
openPopupWithOriginBar: mocks.openPopupWithOriginBarMock
}))
vi.mock('./browser-process-user-agent', () => ({
+2 -2
View File
@@ -13,8 +13,8 @@ import type {
BrowserGrabResult,
BrowserGrabScreenshot
} from '../../shared/browser-grab-types'
import type { BrowserClientDownloadRoute } from './browser-client-download-relay'
import type { PageInitiatedTabBudget } from './browser-page-initiated-tab-budget'
import type { BrowserClientDownloadRoute } from './client-hosts/file-transfers/browser-client-download-relay'
import type { PageInitiatedTabBudget } from './guest-lifecycle/popups/browser-page-initiated-tab-budget'
import type {
BrowserCertificateFailure,
BrowserLoadError,
@@ -38,7 +38,7 @@ vi.mock('electron', () => ({
}
}))
vi.mock('./popup-origin-bar-window', () => ({
vi.mock('./guest-lifecycle/popups/popup-origin-bar-window', () => ({
openPopupWithOriginBar: browserMocks.openPopupWithOriginBarMock
}))
@@ -26,7 +26,7 @@ vi.mock('electron', () => ({
screen: { getCursorScreenPoint: mocks.screenGetCursorScreenPointMock },
webContents: { fromId: mocks.webContentsFromIdMock }
}))
vi.mock('./popup-origin-bar-window', () => ({
vi.mock('./guest-lifecycle/popups/popup-origin-bar-window', () => ({
openPopupWithOriginBar: mocks.openPopupWithOriginBarMock
}))
@@ -24,7 +24,7 @@ vi.mock('electron', () => ({
screen: { getCursorScreenPoint: mocks.screenGetCursorScreenPointMock },
webContents: { fromId: mocks.webContentsFromIdMock }
}))
vi.mock('./popup-origin-bar-window', () => ({
vi.mock('./guest-lifecycle/popups/popup-origin-bar-window', () => ({
openPopupWithOriginBar: mocks.openPopupWithOriginBarMock
}))
+2 -2
View File
@@ -6,8 +6,8 @@ import {
} from '../../shared/browser-annotation-viewport-bridge'
import type { BrowserViewportOverride } from '../../shared/browser-workspace-types'
import { BrowserManagerDownloadLifecycle } from './browser-manager-download-lifecycle'
import { sendGuestCdpCommand } from './guest-cdp-command'
import { touchEmulationParams } from './guest-touch-emulation'
import { sendGuestCdpCommand } from './cdp/debugger/guest-cdp-command'
import { touchEmulationParams } from './cdp/input/guest-touch-emulation'
import type { BrowserDevToolsDockBounds } from '../../shared/browser-devtools-dock'
export abstract class BrowserManagerViewport extends BrowserManagerDownloadLifecycle {
@@ -1,15 +1,18 @@
import { webContents } from 'electron'
import { rendererPublicationThrottle } from '../window/renderer-publication-throttle'
import { BrowserManagerState } from './browser-manager-state'
import { focusGuardUnavailableError, guardPaneFocusForAgentInput } from './agent-input-focus-guard'
import {
focusGuardUnavailableError,
guardPaneFocusForAgentInput
} from './cdp/input/agent-input-focus-guard'
import {
BrowserAgentActivity,
type AgentCommandLease,
type AgentPointerInput
} from './browser-agent-activity'
import { BrowserPageEvents, type BrowserPageEvent } from './browser-page-events'
import { BrowserPageInputCredit } from './browser-page-input-credit'
import { browserPopupPageId } from './browser-popup-page-id'
} from './guest-lifecycle/browser-agent-activity'
import { BrowserPageEvents, type BrowserPageEvent } from './guest-lifecycle/browser-page-events'
import { BrowserPageInputCredit } from './routing/input-ownership/browser-page-input-credit'
import { browserPopupPageId } from './guest-lifecycle/popups/browser-popup-page-id'
import type { RpcCallerIdentity } from '../runtime/rpc/rpc-caller-identity'
export abstract class BrowserManagerVisibility extends BrowserManagerState {
@@ -28,7 +28,7 @@ vi.mock('electron', () => ({
webContents: { fromId: browserMocks.webContentsFromIdMock }
}))
vi.mock('./popup-origin-bar-window', () => ({
vi.mock('./guest-lifecycle/popups/popup-origin-bar-window', () => ({
openPopupWithOriginBar: browserMocks.openPopupWithOriginBarMock
}))
@@ -346,7 +346,8 @@ describe('partition permission policy', () => {
const install = await loadInstaller()
const store = await import('./browser-site-permission-store')
store.configureBrowserSitePermissionStore(mkdtempSync(join(tmpdir(), 'orca-site-permissions-')))
const { respondToBrowserPagePrompt } = await import('./browser-page-prompts')
const { respondToBrowserPagePrompt } =
await import('./guest-lifecycle/prompts/browser-page-prompts')
const send = vi.fn()
// oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: prompts only read id, isDestroyed, send and subscribe to the window's lifecycle events.
const renderer = {
@@ -452,7 +453,7 @@ describe('partition permission policy', () => {
it('gives browsing pages File System Access but keeps it from pages another machine can script', async () => {
const install = await loadInstaller()
const { installBrowserRoutePartitionPolicies } =
await import('./browser-session-route-policies')
await import('./routing/sessions/browser-session-route-policies')
const routed = `persist:orca-browser-v1-${'a'.repeat(64)}`
install(profileFor('persist:browsing-5'))
void installBrowserRoutePartitionPolicies(profileFor('persist:browsing-5'), routed)
+1 -1
View File
@@ -8,7 +8,7 @@ import type { NetworkProxySettings } from '../../shared/network-proxy'
import {
readNetworkProxySettings,
setNetworkProxySettingsSource
} from './browser-network-proxy-settings-source'
} from './network/execution-routes/browser-network-proxy-settings-source'
let proxyPolicyGeneration = 0
// Stop stale readiness loops before a removed partition's queued proxy release.
+1 -1
View File
@@ -30,7 +30,7 @@ import {
import {
clearBrowserRoutePartitionPolicies,
installBrowserRoutePartitionPolicies
} from './browser-session-route-policies'
} from './routing/sessions/browser-session-route-policies'
import {
retireDeletedBrowserSessionProfile,
retireFailedBrowserSessionProfile
@@ -22,13 +22,13 @@ function installRegistryMock(): {
initializeBrowserSessionsFromPersistedState: initializeBrowserSessionsFromPersistedStateMock
}
}))
vi.doMock('./browser-route-session-runtime', () => ({
vi.doMock('./routing/sessions/browser-route-session-runtime', () => ({
configureRouteSessionsForOrcaProfile: configureRouteSessionsForOrcaProfileMock
}))
vi.doMock('./browser-route-partition-storage-runtime', () => ({
vi.doMock('./routing/partitions/browser-route-partition-storage-runtime', () => ({
collectOrphanedBrowserRoutePartitionStorage: collectOrphanedBrowserRoutePartitionStorageMock
}))
vi.doMock('./paired-runtime-browser-client-host-runtime', () => ({
vi.doMock('./client-hosts/lifecycle/paired-runtime-browser-client-host-runtime', () => ({
configurePairedRuntimeBrowserClientHostsForOrcaProfile:
configurePairedRuntimeBrowserClientHostsForOrcaProfileMock
}))
+3 -3
View File
@@ -1,11 +1,11 @@
import { browserSessionRegistry } from './browser-session-registry'
import type { BrowserSessionRegistryProfileOptions } from './browser-session-registry'
import { collectOrphanedBrowserRoutePartitionStorage } from './browser-route-partition-storage-runtime'
import { configureRouteSessionsForOrcaProfile } from './browser-route-session-runtime'
import { collectOrphanedBrowserRoutePartitionStorage } from './routing/partitions/browser-route-partition-storage-runtime'
import { configureRouteSessionsForOrcaProfile } from './routing/sessions/browser-route-session-runtime'
import { configureBrowserSitePermissionStore } from './browser-site-permission-store'
import { configureBrowserSiteDisplayStore } from './browser-site-display-store'
import { configureBrowserExtensionProfileDataDirectory } from './extensions/browser-extension-profile-data-directory'
import { configurePairedRuntimeBrowserClientHostsForOrcaProfile } from './paired-runtime-browser-client-host-runtime'
import { configurePairedRuntimeBrowserClientHostsForOrcaProfile } from './client-hosts/lifecycle/paired-runtime-browser-client-host-runtime'
let initialized = false
@@ -1,4 +1,7 @@
import { acquireElectronDebugger, type ElectronDebuggerLease } from './electron-debugger-lease'
import {
acquireElectronDebugger,
type ElectronDebuggerLease
} from './cdp/debugger/electron-debugger-lease'
import { getBrowserSiteDisplay, updateBrowserSiteDisplay } from './browser-site-display-store'
import {
browserSiteDisplayKey,
@@ -16,7 +16,10 @@ vi.mock('./browser-manager', () => ({
import type { BrowserPagePromptRequest } from '../../shared/browser-page-prompt'
import type { BrowserSitePermission } from '../../shared/browser-site-permission'
import { BROWSER_PAGE_PROMPT_TIMEOUT_MS, respondToBrowserPagePrompt } from './browser-page-prompts'
import {
BROWSER_PAGE_PROMPT_TIMEOUT_MS,
respondToBrowserPagePrompt
} from './guest-lifecycle/prompts/browser-page-prompts'
import {
decideBrowserSitePermissions,
isBrowserSitePermissionAllowed,
@@ -7,7 +7,10 @@ import {
} from '../../shared/browser-site-permission'
import { isEligibleLocalCertificateHost } from '../../shared/browser-url'
import { browserManager } from './browser-manager'
import { browserPagePromptOrigin, openBrowserPagePrompt } from './browser-page-prompts'
import {
browserPagePromptOrigin,
openBrowserPagePrompt
} from './guest-lifecycle/prompts/browser-page-prompts'
import {
getBrowserSitePermissionDecision,
setBrowserSitePermissionDecisions
@@ -15,8 +15,8 @@ import type {
BrowserNetworkEntry,
BrowserNetworkLogResult,
BrowserViewportResult
} from '../../shared/runtime-types'
import type { CdpCommandSender, SnapshotResult } from './snapshot-engine'
} from '../../../../shared/runtime-browser-contracts'
import type { CdpCommandSender, SnapshotResult } from '../snapshots/snapshot-engine'
export type CdpTabState = {
navigationId: string | null
@@ -1,7 +1,10 @@
import type { WebContents } from 'electron'
import type { BrowserScreenshotResult, BrowserScrollResult } from '../../shared/runtime-types'
import type {
BrowserScreenshotResult,
BrowserScrollResult
} from '../../../../shared/runtime-browser-contracts'
import type { CdpTabState } from './cdp-auxiliary-commands'
import type { CdpCommandSender, RefEntry } from './snapshot-engine'
import type { CdpCommandSender, RefEntry } from '../snapshots/snapshot-engine'
import type { CdpBridgeState, CdpQueuedCommand } from './cdp-bridge-state'
import type { CdpDebuggerLifecycle } from './cdp-debugger-lifecycle'
import type { CdpNavigationOperations } from './cdp-navigation-operations'
@@ -1,15 +1,15 @@
import type { WebContents } from 'electron'
import { CdpAuxiliaryCommands, type CdpTabState } from './cdp-auxiliary-commands'
import type { CdpCommandSender } from './snapshot-engine'
import type { CdpCommandSender } from '../snapshots/snapshot-engine'
import type { CdpBridgeState } from './cdp-bridge-state'
import { CdpDebuggerLifecycle } from './cdp-debugger-lifecycle'
import { CdpElementStateCommands } from './cdp-element-state-commands'
import { CdpNavigationOperations } from './cdp-navigation-operations'
import { CdpPageCommands } from './cdp-page-commands'
import { CdpPointerCommands } from './cdp-pointer-commands'
import { CdpPointerCommands } from '../input/cdp-pointer-commands'
import { CdpRefResolution } from './cdp-ref-resolution'
import { CdpTabCommands } from './cdp-tab-commands'
import { CdpTextInputCommands } from './cdp-text-input-commands'
import { CdpTextInputCommands } from '../input/cdp-text-input-commands'
export class CdpBridgeCommandSet {
readonly auxiliary: CdpAuxiliaryCommands
@@ -1,9 +1,9 @@
import type * as WorktreeScanCacheModule from '../git/worktrees/catalog/worktree-scan-cache'
import type * as WorktreeListingModule from '../git/worktrees/catalog/worktree-listing'
import '../runtime/desktop-browser-bridge/desktop-browser-bridge-allowlist.spec'
import type * as WorktreeScanCacheModule from '../../../git/worktrees/catalog/worktree-scan-cache'
import type * as WorktreeListingModule from '../../../git/worktrees/catalog/worktree-listing'
import '../../../runtime/desktop-browser-bridge/desktop-browser-bridge-allowlist.spec'
import { mkdtempSync } from 'node:fs'
import { RuntimeBrowserCommands } from '../runtime/browser/browser-commands'
import { setRuntimeBrowserCommandsFactory } from '../runtime/runtime-browser-commands-factory'
import { RuntimeBrowserCommands } from '../../../runtime/browser/browser-commands'
import { setRuntimeBrowserCommandsFactory } from '../../../runtime/runtime-browser-commands-factory'
import { tmpdir } from 'node:os'
import { join } from 'node:path'
import { createConnection } from 'node:net'
@@ -13,7 +13,7 @@ const { webContentsFromIdMock } = vi.hoisted(() => ({
webContentsFromIdMock: vi.fn()
}))
vi.mock('../git/worktrees/catalog/worktree-scan-cache', async (importOriginal) => {
vi.mock('../../../git/worktrees/catalog/worktree-scan-cache', async (importOriginal) => {
const facade = getWorktreeListingMocks()
return {
...(await importOriginal<typeof WorktreeScanCacheModule>()),
@@ -21,7 +21,7 @@ vi.mock('../git/worktrees/catalog/worktree-scan-cache', async (importOriginal) =
}
})
vi.mock('../git/worktrees/catalog/worktree-listing', async (importOriginal) => {
vi.mock('../../../git/worktrees/catalog/worktree-listing', async (importOriginal) => {
const facade = getWorktreeListingMocks()
return {
...(await importOriginal<typeof WorktreeListingModule>()),
@@ -45,12 +45,12 @@ const { getWorktreeListingMocks } = vi.hoisted(() => {
return { getWorktreeListingMocks: () => (listings ??= createWorktreeListingMocks()) }
})
import { BrowserManager } from './browser-manager'
import { BrowserManager } from '../../browser-manager'
import { CdpBridge } from './cdp-bridge'
import { BROWSER_TEXT_INSERT_CHUNK_BYTES } from '../../shared/browser-text-insertion-chunks'
import { OrcaRuntimeService } from '../runtime/orca-runtime'
import { OrcaRuntimeRpcServer } from '../runtime/runtime-rpc'
import { readRuntimeMetadata } from '../runtime/runtime-metadata'
import { BROWSER_TEXT_INSERT_CHUNK_BYTES } from '../../../../shared/browser-text-insertion-chunks'
import { OrcaRuntimeService } from '../../../runtime/orca-runtime'
import { OrcaRuntimeRpcServer } from '../../../runtime/runtime-rpc'
import { readRuntimeMetadata } from '../../../runtime/runtime-metadata'
type AXNode = {
nodeId: string
@@ -1,5 +1,5 @@
import { webContents } from 'electron'
import { BrowserError } from './browser-error'
import { BrowserError } from '../../browser-error'
import type { CdpTabState } from './cdp-auxiliary-commands'
export type CdpQueuedCommand = {
@@ -32,14 +32,13 @@ import type {
BrowserUploadResult,
BrowserViewportResult,
BrowserWaitResult
} from '../../shared/runtime-types'
import type { BrowserManager } from './browser-manager'
} from '../../../../shared/runtime-browser-contracts'
import type { BrowserManager } from '../../browser-manager'
import type { CdpAuxiliaryCommands, CdpTabState } from './cdp-auxiliary-commands'
import { CdpBridgeCommandSet } from './cdp-bridge-command-set'
import { CdpBridgeState, type CdpQueuedCommand } from './cdp-bridge-state'
// Preserve existing imports; runtime code uses browser-error without loading Chromium.
export { BrowserError } from './browser-error'
export class CdpBridge {
private activeWebContentsId: number | null = null
@@ -1,10 +1,13 @@
import { WebSocket } from 'ws'
import type { WebContents } from 'electron'
import { acquireElectronDebugger, type ElectronDebuggerLease } from './electron-debugger-lease'
import type { CdpClientResponseWriter } from './cdp-client-response-writer'
import {
acquireElectronDebugger,
type ElectronDebuggerLease
} from '../debugger/electron-debugger-lease'
import type { CdpClientResponseWriter } from '../transport/cdp-client-response-writer'
import type { CdpSyntheticSessionRegistry } from './cdp-synthetic-session-registry'
import { sendGuestCdpCommand } from './guest-cdp-command'
import { isOrcaFrameSessionTraffic } from './guest-focused-frame-route'
import { sendGuestCdpCommand } from '../debugger/guest-cdp-command'
import { isOrcaFrameSessionTraffic } from '../input/guest-frame-input-sessions'
export class CdpDebuggerChannel {
private nativeDebugger: WebContents['debugger'] | null = null
@@ -1,5 +1,5 @@
import type { WebContents } from 'electron'
import type { BrowserNetworkEntry } from '../../shared/runtime-types'
import type { BrowserNetworkEntry } from '../../../../shared/runtime-browser-contracts'
import type { CdpTabState } from './cdp-auxiliary-commands'
const CAPTURE_LOG_LIMIT = 1000
@@ -1,10 +1,10 @@
import type { WebContents } from 'electron'
import { BrowserError } from './browser-error'
import { BrowserError } from '../../browser-error'
import type { CdpTabState } from './cdp-auxiliary-commands'
import type { CdpCommandSender } from './snapshot-engine'
import type { CdpCommandSender } from '../snapshots/snapshot-engine'
import type { CdpBridgeState } from './cdp-bridge-state'
import { createCdpDebuggerMessageListener } from './cdp-debugger-events'
import { sendGuestCdpCommand } from './guest-cdp-command'
import { sendGuestCdpCommand } from '../debugger/guest-cdp-command'
export class CdpDebuggerLifecycle {
constructor(private readonly bridgeState: CdpBridgeState) {}
@@ -1,8 +1,8 @@
import type { WebSocket } from 'ws'
import type { WebContents } from 'electron'
import type { CdpClientResponseWriter } from './cdp-client-response-writer'
import type { CdpClientResponseWriter } from '../transport/cdp-client-response-writer'
import type { CdpDebuggerChannel } from './cdp-debugger-channel'
import type { TextInsertionRoute } from './guest-direct-key-input'
import type { TextInsertionRoute } from '../input/guest-direct-key-input'
/** Replay DOM.focus before insertion because native focusing can blur the target. */
export class CdpDomFocusReplay {

Some files were not shown because too many files have changed in this diff Show More