refactor: group Parcel watcher process ownership (#33401)

This commit is contained in:
Neil
2026-10-24 22:14:52 -07:00
committed by GitHub
parent 9017194c0b
commit 95df4c74ed
107 changed files with 249 additions and 219 deletions
@@ -45,7 +45,9 @@ export const MAIN_BUILD_ENTRY_POINTS: Record<string, string> = {
),
// Why: forked with ELECTRON_RUN_AS_NODE so @parcel/watcher faults
// can't take down the main process (issue #7547).
'parcel-watcher-process-entry': resolve('src/main/ipc/parcel-watcher-process-entry.ts'),
'parcel-watcher-process-entry': resolve(
'src/main/ipc/filesystem/watcher-process/parcel-watcher-process-entry.ts'
),
// Why: `orca serve` runs it under ELECTRON_RUN_AS_NODE so the CLI never bundles orcad prep.
[ORCAD_LOCAL_SERVE_SELECTION_ENTRY]: resolve(
'src/main/orcad/orcad-local-serve-selection-entry.ts'
+1 -1
View File
@@ -12,7 +12,7 @@
"src/main/foreign-sqlite-readers/foreign-sqlite-reader-entry.ts",
"src/main/ports/port-scan-command-worker-entry.ts",
"src/main/worker-thread-child-process/worker-thread-child-process-entry.ts",
"src/main/ipc/parcel-watcher-process-entry.ts",
"src/main/ipc/filesystem/watcher-process/parcel-watcher-process-entry.ts",
"src/main/hang-watchdog/main-thread-hang-watchdog-entry.ts",
"src/main/agent-hooks/managed-agent-hook-controls.ts",
"src/main/claude-accounts/keychain.ts",
@@ -1,6 +1,6 @@
# Existing production source files importing child_process outside @orca/process-host.
# Migration debt: this list may only shrink; new callers use the package public API.
src/cli/handlers/account.ts
src/cli/handlers/core.ts
src/cli/handlers/interactive-login-interruption.ts
@@ -63,16 +63,16 @@ src/main/ipc/filesystem/watcher-process/parcel-watcher-child-launch.ts
src/main/ipc/filesystem/watcher-process/parcel-watcher-child-messaging.ts
src/main/ipc/filesystem/watcher-process/parcel-watcher-child-recovery.ts
src/main/ipc/filesystem/watcher-process/parcel-watcher-child-termination.ts
src/main/ipc/filesystem/watcher-process/parcel-watcher-host-subscriptions.ts
src/main/ipc/filesystem/watcher-process/parcel-watcher-pending-cancellation.ts
src/main/ipc/filesystem/watcher-process/parcel-watcher-process-supervisor.ts
src/main/ipc/filesystem/watcher-process/parcel-watcher-supervisor-disposal.ts
src/main/ipc/filesystem/watcher-process/parcel-watcher-supervisor-message.ts
src/main/ipc/filesystem/watcher-process/parcel-watcher-supervisor-subscribe.ts
src/main/ipc/local-network-connection-test.ts
src/main/ipc/macos-keyboard-input-source.ts
src/main/ipc/macos-keyboard-layout-snapshot.ts
src/main/ipc/notification-authorization-status.ts
src/main/ipc/parcel-watcher-host-subscriptions.ts
src/main/ipc/parcel-watcher-process-supervisor.ts
src/main/ipc/parcel-watcher-supervisor-disposal.ts
src/main/ipc/parcel-watcher-supervisor-message.ts
src/main/ipc/parcel-watcher-supervisor-subscribe.ts
src/main/ipc/preflight-command-exec.ts
src/main/ipc/repos/repo-clone-lifecycle.ts
src/main/ipc/worktree-apfs-clone.ts
+26 -26
View File
@@ -18520,14 +18520,14 @@
"oracle": "Fill the global watcher-child reservation, require native desktop, paired-runtime, and WSL setup to retain typed transient capacity and retry after one serialized release, then cancel pending desktop and paired-client watches and require no retry. Hold one live anchor while aborting 10,000 callers at the capacity, quarantine-assignment, runtime-root, relay-setup, and SSH-registration layers; require exactly one explicit waiter and one base-promise reaction to remain, then zero after settlement. Hold an old relay unsubscribe, queue one same-root setup leader and one anchor, then abort 10,000 joiners; require every cancellation to settle before teardown releases, exactly one anchor waiter, and only one later physical install. Advance the former paired-web callback deadline while capacity remains full, require cancellation ownership to stay live, publish the server token before ready, and require files.unwatch to abort setup before a later slot release can install a native root. Reject the first ready-watch unwatch with a physical-exit promise, resolve that exit later, and require a fresh physical unwatch attempt, registry release, and exactly one stream end. Fill one healthy shared child with multiple roots, map a standard SSH repository's base, Git common directory, and worktree roots to one relay supervisor, then inject IPC disconnect-before-exit, queued and active cancellation, operations during termination, kill-without-exit, repeated unkillable generations, initial and recovery timeouts, and shard failure. During local and SSH deletion, attempt a late terminal spawn whose worktree identity and cwd name different roots, enumerate a non-prefix remote PTY by authoritative worktree ownership, withhold daemon/relay exit callbacks, make attach positively prove a concurrent-shutdown PID dead, and make the provider unavailable; require every acquired admission to roll back on rejection, dead-PID proof to settle physical exit before reaping, timeout to retain ownership, and Git/filesystem deletion never to start. Require bounded watcher process count, physical-exit settlement, healthy-root recovery, stale-generation rejection, overflow plus later events, and fail-closed destructive cleanup. Verify relay build hashes and remote install probes require both relay.js and relay-watcher.js. Launch the built relay with a real PTY and Parcel watch, kill only the watcher child, and require the same relay PID and PTY to answer before a replacement child delivers overflow and a post-crash event.",
"commands": [
"pnpm exec vitest run --config config/vitest.config.ts src/main/runtime/rpc/methods/files-watch-cleanup.test.ts --reporter=dot",
"pnpm exec vitest run --config config/vitest.config.ts src/main/ipc/parcel-watcher-unsubscribe-timeout.test.ts --reporter=dot",
"pnpm exec vitest run --config config/vitest.config.ts src/main/ipc/filesystem-watcher.test.ts src/main/ipc/filesystem-watcher-native-capacity.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-child-registry.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-child-launch.test.ts src/main/ipc/parcel-watcher-process.test.ts src/main/ipc/parcel-watcher-supervisor-capacity-wait.test.ts src/main/ipc/parcel-watcher-supervisor-capacity.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-disconnect-termination.test.ts src/main/ipc/runtime-watcher-pending-assignment.test.ts src/main/ipc/runtime-watcher-process-pool.test.ts src/main/ipc/parcel-watcher-process-entry.test.ts src/main/ipc/parcel-watcher-event-delivery.test.ts src/main/ipc/filesystem-watcher-local-unsubscribe.test.ts src/main/ipc/filesystem-watcher-wsl.test.ts src/main/ipc/worktrees-delete-pty-teardown.test.ts src/main/ipc/worktrees-orphan-directory-cleanup.test.ts src/main/ipc/worktrees-remove-preflight.test.ts src/main/ipc/worktrees-remove-archive-hooks.test.ts src/main/ipc/watcher-removal-gate.test.ts src/main/runtime/file-watcher-host.test.ts src/main/runtime/orca-runtime-files-watch.test.ts src/main/runtime/worktree-teardown.test.ts src/main/runtime/orca-runtime.test.ts src/main/runtime/rpc/methods/files.test.ts src/main/runtime/rpc/methods/files-watch-cancellation.test.ts src/renderer/src/runtime/runtime-file-client.test.ts src/renderer/src/web/web-runtime-client.test.ts src/shared/cross-platform-path.test.ts src/shared/physical-exit-tracker.test.ts src/shared/promise-settlement-waiters.test.ts src/main/ipc/pty-spawn-cwd-fallback.test.ts src/main/ipc/pty-listener-teardown-and-orphans.test.ts src/main/providers/local-pty-provider-shutdown.test.ts src/main/providers/local-pty-provider-session-inventory.test.ts src/main/daemon/daemon-pty-adapter.test.ts src/main/daemon/pty-subprocess.test.ts src/main/daemon/session.test.ts src/main/daemon/terminal-host.test.ts src/main/daemon/terminal-host-session-reaping-leak.test.ts --reporter=dot",
"pnpm exec vitest run --config config/vitest.config.ts src/main/ipc/filesystem-watcher.test.ts src/main/ipc/filesystem-watcher-native-capacity.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-child-registry.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-child-launch.test.ts src/main/ipc/parcel-watcher-process.test.ts src/main/ipc/parcel-watcher-supervisor-capacity.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-disconnect-termination.test.ts src/main/ipc/runtime-watcher-process-pool.test.ts src/main/ipc/parcel-watcher-process-entry.test.ts src/main/ipc/parcel-watcher-event-delivery.test.ts src/main/ipc/filesystem-watcher-local-unsubscribe.test.ts src/main/ipc/filesystem-watcher-wsl.test.ts src/main/ipc/worktrees-delete-pty-teardown.test.ts src/main/ipc/worktrees-orphan-directory-cleanup.test.ts src/main/ipc/worktrees-remove-preflight.test.ts src/main/ipc/worktrees-remove-archive-hooks.test.ts src/main/ipc/watcher-removal-gate.test.ts src/main/runtime/file-watcher-host.test.ts src/main/runtime/orca-runtime-files-watch.test.ts src/main/runtime/worktree-teardown.test.ts src/main/runtime/orca-runtime.test.ts src/main/runtime/rpc/methods/files.test.ts src/main/runtime/rpc/methods/files-watch-cancellation.test.ts src/renderer/src/runtime/runtime-file-client.test.ts src/renderer/src/web/web-runtime-client.test.ts src/shared/cross-platform-path.test.ts src/shared/physical-exit-tracker.test.ts src/main/ipc/pty-spawn-cwd-fallback.test.ts src/main/ipc/pty-listener-teardown-and-orphans.test.ts src/main/providers/local-pty-provider-shutdown.test.ts src/main/providers/local-pty-provider-session-inventory.test.ts src/main/daemon/daemon-pty-adapter.test.ts src/main/daemon/pty-subprocess.test.ts src/main/daemon/session.test.ts src/main/daemon/terminal-host.test.ts src/main/daemon/terminal-host-session-reaping-leak.test.ts --reporter=dot",
"pnpm exec vitest run --config config/vitest.config.ts src/main/ipc/filesystem-watcher.test.ts src/main/ipc/parcel-watcher-process.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-disconnect-termination.test.ts src/main/ipc/runtime-watcher-process-pool.test.ts src/main/ipc/parcel-watcher-process-entry.test.ts src/main/ipc/parcel-watcher-event-delivery.test.ts src/main/ipc/filesystem-watcher-local-unsubscribe.test.ts src/main/ipc/filesystem-watcher-wsl.test.ts src/main/ipc/worktrees-delete-pty-teardown.test.ts src/main/ipc/worktrees-orphan-directory-cleanup.test.ts src/main/ipc/worktrees-remove-preflight.test.ts src/main/ipc/worktrees-remove-archive-hooks.test.ts src/main/ipc/watcher-removal-gate.test.ts src/main/runtime/file-watcher-host.test.ts src/main/runtime/orca-runtime-files-watch.test.ts src/main/runtime/worktree-teardown.test.ts src/main/runtime/orca-runtime.test.ts src/main/runtime/rpc/methods/files.test.ts src/renderer/src/runtime/runtime-file-client.test.ts src/renderer/src/web/web-runtime-client.test.ts src/shared/cross-platform-path.test.ts src/main/ipc/pty-spawn-cwd-fallback.test.ts src/main/ipc/pty-listener-teardown-and-orphans.test.ts src/main/providers/local-pty-provider-shutdown.test.ts src/main/providers/local-pty-provider-session-inventory.test.ts src/main/daemon/pty-subprocess.test.ts src/main/daemon/session.test.ts src/main/daemon/terminal-host.test.ts src/main/daemon/terminal-host-session-reaping-leak.test.ts --reporter=dot",
"pnpm exec vitest run --config config/vitest.config.ts src/main/ipc/parcel-watcher-process.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-disconnect-termination.test.ts src/main/ipc/runtime-watcher-process-pool.test.ts src/main/ipc/parcel-watcher-process-entry.test.ts src/main/ipc/parcel-watcher-event-delivery.test.ts src/main/ipc/filesystem-watcher-local-unsubscribe.test.ts src/main/ipc/filesystem-watcher-wsl.test.ts src/main/ipc/worktrees-delete-pty-teardown.test.ts src/main/ipc/worktrees-orphan-directory-cleanup.test.ts src/main/ipc/worktrees-remove-preflight.test.ts src/main/ipc/worktrees-remove-archive-hooks.test.ts src/main/ipc/watcher-removal-gate.test.ts src/main/runtime/file-watcher-host.test.ts src/main/runtime/orca-runtime-files-watch.test.ts src/main/runtime/worktree-teardown.test.ts src/main/runtime/orca-runtime.test.ts src/main/runtime/rpc/methods/files.test.ts src/renderer/src/runtime/runtime-file-client.test.ts src/renderer/src/web/web-runtime-client.test.ts src/shared/cross-platform-path.test.ts src/main/ipc/pty-spawn-cwd-fallback.test.ts src/main/ipc/pty-listener-teardown-and-orphans.test.ts src/main/providers/local-pty-provider-shutdown.test.ts src/main/providers/local-pty-provider-session-inventory.test.ts src/main/daemon/pty-subprocess.test.ts src/main/daemon/session.test.ts src/main/daemon/terminal-host.test.ts src/main/daemon/terminal-host-session-reaping-leak.test.ts",
"pnpm exec vitest run --config config/vitest.config.ts src/main/ipc/parcel-watcher-process.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-disconnect-termination.test.ts src/main/ipc/runtime-watcher-process-pool.test.ts src/main/ipc/parcel-watcher-process-entry.test.ts src/main/ipc/parcel-watcher-event-delivery.test.ts src/main/ipc/filesystem-watcher-local-unsubscribe.test.ts src/main/ipc/filesystem-watcher-wsl.test.ts src/main/ipc/worktrees-delete-pty-teardown.test.ts src/main/ipc/worktrees-orphan-directory-cleanup.test.ts src/main/ipc/worktrees-remove-preflight.test.ts src/main/ipc/worktrees-remove-archive-hooks.test.ts src/main/ipc/watcher-removal-gate.test.ts src/main/runtime/file-watcher-host.test.ts src/main/runtime/orca-runtime-files-watch.test.ts src/main/runtime/worktree-teardown.test.ts src/main/runtime/orca-runtime.test.ts src/main/runtime/rpc/methods/files.test.ts src/renderer/src/runtime/runtime-file-client.test.ts src/renderer/src/web/web-runtime-client.test.ts src/shared/cross-platform-path.test.ts src/main/ipc/pty-spawn-cwd-fallback.test.ts src/main/ipc/pty-listener-teardown-and-orphans.test.ts src/main/providers/local-pty-provider-shutdown.test.ts src/main/providers/local-pty-provider-session-inventory.test.ts src/main/daemon/session.test.ts src/main/daemon/terminal-host.test.ts src/main/daemon/terminal-host-session-reaping-leak.test.ts",
"pnpm exec vitest run --config config/vitest.config.ts src/main/ipc/parcel-watcher-process.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-disconnect-termination.test.ts src/main/ipc/runtime-watcher-process-pool.test.ts src/main/ipc/parcel-watcher-process-entry.test.ts src/main/ipc/parcel-watcher-event-delivery.test.ts src/main/ipc/filesystem-watcher-local-unsubscribe.test.ts src/main/ipc/filesystem-watcher-wsl.test.ts src/main/ipc/worktrees-delete-pty-teardown.test.ts src/main/ipc/worktrees-orphan-directory-cleanup.test.ts src/main/ipc/worktrees-remove-preflight.test.ts src/main/ipc/worktrees-remove-archive-hooks.test.ts src/main/ipc/watcher-removal-gate.test.ts src/main/runtime/file-watcher-host.test.ts src/main/runtime/orca-runtime-files-watch.test.ts src/main/runtime/worktree-teardown.test.ts src/main/runtime/orca-runtime.test.ts src/main/runtime/rpc/methods/files.test.ts src/renderer/src/runtime/runtime-file-client.test.ts src/renderer/src/web/web-runtime-client.test.ts src/shared/cross-platform-path.test.ts src/main/ipc/pty-spawn-cwd-fallback.test.ts src/main/ipc/pty-listener-teardown-and-orphans.test.ts src/main/daemon/terminal-host.test.ts src/main/daemon/terminal-host-session-reaping-leak.test.ts",
"pnpm exec vitest run --config config/vitest.config.ts src/main/ipc/parcel-watcher-process.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-disconnect-termination.test.ts src/main/ipc/runtime-watcher-process-pool.test.ts src/main/ipc/parcel-watcher-process-entry.test.ts src/main/ipc/parcel-watcher-event-delivery.test.ts src/main/ipc/filesystem-watcher-local-unsubscribe.test.ts src/main/ipc/filesystem-watcher-wsl.test.ts src/main/ipc/worktrees-delete-pty-teardown.test.ts src/main/ipc/worktrees-orphan-directory-cleanup.test.ts src/main/ipc/worktrees-remove-preflight.test.ts src/main/ipc/worktrees-remove-archive-hooks.test.ts src/main/ipc/watcher-removal-gate.test.ts src/main/runtime/file-watcher-host.test.ts src/main/runtime/orca-runtime-files-watch.test.ts src/main/runtime/worktree-teardown.test.ts src/main/runtime/orca-runtime.test.ts src/main/runtime/rpc/methods/files.test.ts src/renderer/src/runtime/runtime-file-client.test.ts src/renderer/src/web/web-runtime-client.test.ts src/shared/cross-platform-path.test.ts",
"pnpm exec vitest run --config config/vitest.config.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-unsubscribe-timeout.test.ts --reporter=dot",
"pnpm exec vitest run --config config/vitest.config.ts src/main/ipc/filesystem-watcher.test.ts src/main/ipc/filesystem-watcher-native-capacity.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-child-registry.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-child-launch.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-process.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-supervisor-capacity-wait.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-supervisor-capacity.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-disconnect-termination.test.ts src/main/ipc/runtime-watcher-pending-assignment.test.ts src/main/ipc/runtime-watcher-process-pool.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-process-entry.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-event-delivery.test.ts src/main/ipc/filesystem-watcher-local-unsubscribe.test.ts src/main/ipc/filesystem-watcher-wsl.test.ts src/main/ipc/worktrees-delete-pty-teardown.test.ts src/main/ipc/worktrees-orphan-directory-cleanup.test.ts src/main/ipc/worktrees-remove-preflight.test.ts src/main/ipc/worktrees-remove-archive-hooks.test.ts src/main/ipc/watcher-removal-gate.test.ts src/main/runtime/file-watcher-host.test.ts src/main/runtime/orca-runtime-files-watch.test.ts src/main/runtime/worktree-teardown.test.ts src/main/runtime/orca-runtime.test.ts src/main/runtime/rpc/methods/files.test.ts src/main/runtime/rpc/methods/files-watch-cancellation.test.ts src/renderer/src/runtime/runtime-file-client.test.ts src/renderer/src/web/web-runtime-client.test.ts src/shared/cross-platform-path.test.ts src/shared/physical-exit-tracker.test.ts src/shared/promise-settlement-waiters.test.ts src/main/ipc/pty-spawn-cwd-fallback.test.ts src/main/ipc/pty-listener-teardown-and-orphans.test.ts src/main/providers/local-pty-provider-shutdown.test.ts src/main/providers/local-pty-provider-session-inventory.test.ts src/main/daemon/daemon-pty-adapter.test.ts src/main/daemon/pty-subprocess.test.ts src/main/daemon/session.test.ts src/main/daemon/terminal-host.test.ts src/main/daemon/terminal-host-session-reaping-leak.test.ts --reporter=dot",
"pnpm exec vitest run --config config/vitest.config.ts src/main/ipc/filesystem-watcher.test.ts src/main/ipc/filesystem-watcher-native-capacity.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-child-registry.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-child-launch.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-process.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-supervisor-capacity.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-disconnect-termination.test.ts src/main/ipc/runtime-watcher-process-pool.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-process-entry.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-event-delivery.test.ts src/main/ipc/filesystem-watcher-local-unsubscribe.test.ts src/main/ipc/filesystem-watcher-wsl.test.ts src/main/ipc/worktrees-delete-pty-teardown.test.ts src/main/ipc/worktrees-orphan-directory-cleanup.test.ts src/main/ipc/worktrees-remove-preflight.test.ts src/main/ipc/worktrees-remove-archive-hooks.test.ts src/main/ipc/watcher-removal-gate.test.ts src/main/runtime/file-watcher-host.test.ts src/main/runtime/orca-runtime-files-watch.test.ts src/main/runtime/worktree-teardown.test.ts src/main/runtime/orca-runtime.test.ts src/main/runtime/rpc/methods/files.test.ts src/main/runtime/rpc/methods/files-watch-cancellation.test.ts src/renderer/src/runtime/runtime-file-client.test.ts src/renderer/src/web/web-runtime-client.test.ts src/shared/cross-platform-path.test.ts src/shared/physical-exit-tracker.test.ts src/main/ipc/pty-spawn-cwd-fallback.test.ts src/main/ipc/pty-listener-teardown-and-orphans.test.ts src/main/providers/local-pty-provider-shutdown.test.ts src/main/providers/local-pty-provider-session-inventory.test.ts src/main/daemon/daemon-pty-adapter.test.ts src/main/daemon/pty-subprocess.test.ts src/main/daemon/session.test.ts src/main/daemon/terminal-host.test.ts src/main/daemon/terminal-host-session-reaping-leak.test.ts --reporter=dot",
"pnpm exec vitest run --config config/vitest.config.ts src/main/ipc/filesystem-watcher.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-process.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-disconnect-termination.test.ts src/main/ipc/runtime-watcher-process-pool.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-process-entry.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-event-delivery.test.ts src/main/ipc/filesystem-watcher-local-unsubscribe.test.ts src/main/ipc/filesystem-watcher-wsl.test.ts src/main/ipc/worktrees-delete-pty-teardown.test.ts src/main/ipc/worktrees-orphan-directory-cleanup.test.ts src/main/ipc/worktrees-remove-preflight.test.ts src/main/ipc/worktrees-remove-archive-hooks.test.ts src/main/ipc/watcher-removal-gate.test.ts src/main/runtime/file-watcher-host.test.ts src/main/runtime/orca-runtime-files-watch.test.ts src/main/runtime/worktree-teardown.test.ts src/main/runtime/orca-runtime.test.ts src/main/runtime/rpc/methods/files.test.ts src/renderer/src/runtime/runtime-file-client.test.ts src/renderer/src/web/web-runtime-client.test.ts src/shared/cross-platform-path.test.ts src/main/ipc/pty-spawn-cwd-fallback.test.ts src/main/ipc/pty-listener-teardown-and-orphans.test.ts src/main/providers/local-pty-provider-shutdown.test.ts src/main/providers/local-pty-provider-session-inventory.test.ts src/main/daemon/pty-subprocess.test.ts src/main/daemon/session.test.ts src/main/daemon/terminal-host.test.ts src/main/daemon/terminal-host-session-reaping-leak.test.ts --reporter=dot",
"pnpm exec vitest run --config config/vitest.config.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-process.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-disconnect-termination.test.ts src/main/ipc/runtime-watcher-process-pool.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-process-entry.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-event-delivery.test.ts src/main/ipc/filesystem-watcher-local-unsubscribe.test.ts src/main/ipc/filesystem-watcher-wsl.test.ts src/main/ipc/worktrees-delete-pty-teardown.test.ts src/main/ipc/worktrees-orphan-directory-cleanup.test.ts src/main/ipc/worktrees-remove-preflight.test.ts src/main/ipc/worktrees-remove-archive-hooks.test.ts src/main/ipc/watcher-removal-gate.test.ts src/main/runtime/file-watcher-host.test.ts src/main/runtime/orca-runtime-files-watch.test.ts src/main/runtime/worktree-teardown.test.ts src/main/runtime/orca-runtime.test.ts src/main/runtime/rpc/methods/files.test.ts src/renderer/src/runtime/runtime-file-client.test.ts src/renderer/src/web/web-runtime-client.test.ts src/shared/cross-platform-path.test.ts src/main/ipc/pty-spawn-cwd-fallback.test.ts src/main/ipc/pty-listener-teardown-and-orphans.test.ts src/main/providers/local-pty-provider-shutdown.test.ts src/main/providers/local-pty-provider-session-inventory.test.ts src/main/daemon/pty-subprocess.test.ts src/main/daemon/session.test.ts src/main/daemon/terminal-host.test.ts src/main/daemon/terminal-host-session-reaping-leak.test.ts",
"pnpm exec vitest run --config config/vitest.config.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-process.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-disconnect-termination.test.ts src/main/ipc/runtime-watcher-process-pool.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-process-entry.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-event-delivery.test.ts src/main/ipc/filesystem-watcher-local-unsubscribe.test.ts src/main/ipc/filesystem-watcher-wsl.test.ts src/main/ipc/worktrees-delete-pty-teardown.test.ts src/main/ipc/worktrees-orphan-directory-cleanup.test.ts src/main/ipc/worktrees-remove-preflight.test.ts src/main/ipc/worktrees-remove-archive-hooks.test.ts src/main/ipc/watcher-removal-gate.test.ts src/main/runtime/file-watcher-host.test.ts src/main/runtime/orca-runtime-files-watch.test.ts src/main/runtime/worktree-teardown.test.ts src/main/runtime/orca-runtime.test.ts src/main/runtime/rpc/methods/files.test.ts src/renderer/src/runtime/runtime-file-client.test.ts src/renderer/src/web/web-runtime-client.test.ts src/shared/cross-platform-path.test.ts src/main/ipc/pty-spawn-cwd-fallback.test.ts src/main/ipc/pty-listener-teardown-and-orphans.test.ts src/main/providers/local-pty-provider-shutdown.test.ts src/main/providers/local-pty-provider-session-inventory.test.ts src/main/daemon/session.test.ts src/main/daemon/terminal-host.test.ts src/main/daemon/terminal-host-session-reaping-leak.test.ts",
"pnpm exec vitest run --config config/vitest.config.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-process.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-disconnect-termination.test.ts src/main/ipc/runtime-watcher-process-pool.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-process-entry.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-event-delivery.test.ts src/main/ipc/filesystem-watcher-local-unsubscribe.test.ts src/main/ipc/filesystem-watcher-wsl.test.ts src/main/ipc/worktrees-delete-pty-teardown.test.ts src/main/ipc/worktrees-orphan-directory-cleanup.test.ts src/main/ipc/worktrees-remove-preflight.test.ts src/main/ipc/worktrees-remove-archive-hooks.test.ts src/main/ipc/watcher-removal-gate.test.ts src/main/runtime/file-watcher-host.test.ts src/main/runtime/orca-runtime-files-watch.test.ts src/main/runtime/worktree-teardown.test.ts src/main/runtime/orca-runtime.test.ts src/main/runtime/rpc/methods/files.test.ts src/renderer/src/runtime/runtime-file-client.test.ts src/renderer/src/web/web-runtime-client.test.ts src/shared/cross-platform-path.test.ts src/main/ipc/pty-spawn-cwd-fallback.test.ts src/main/ipc/pty-listener-teardown-and-orphans.test.ts src/main/daemon/terminal-host.test.ts src/main/daemon/terminal-host-session-reaping-leak.test.ts",
"pnpm exec vitest run --config config/vitest.config.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-process.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-disconnect-termination.test.ts src/main/ipc/runtime-watcher-process-pool.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-process-entry.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-event-delivery.test.ts src/main/ipc/filesystem-watcher-local-unsubscribe.test.ts src/main/ipc/filesystem-watcher-wsl.test.ts src/main/ipc/worktrees-delete-pty-teardown.test.ts src/main/ipc/worktrees-orphan-directory-cleanup.test.ts src/main/ipc/worktrees-remove-preflight.test.ts src/main/ipc/worktrees-remove-archive-hooks.test.ts src/main/ipc/watcher-removal-gate.test.ts src/main/runtime/file-watcher-host.test.ts src/main/runtime/orca-runtime-files-watch.test.ts src/main/runtime/worktree-teardown.test.ts src/main/runtime/orca-runtime.test.ts src/main/runtime/rpc/methods/files.test.ts src/renderer/src/runtime/runtime-file-client.test.ts src/renderer/src/web/web-runtime-client.test.ts src/shared/cross-platform-path.test.ts",
"pnpm run build:electron-vite",
"node config/scripts/runtime-file-watcher-resource-probe.mjs",
"node config/scripts/runtime-file-watcher-fault-harness.mjs",
@@ -18541,15 +18541,15 @@
"src/main/ipc/filesystem-watcher-native-capacity.test.ts",
"src/main/ipc/filesystem/watcher-process/parcel-watcher-child-registry.test.ts",
"src/main/ipc/filesystem/watcher-process/parcel-watcher-child-launch.test.ts",
"src/main/ipc/parcel-watcher-process.test.ts",
"src/main/ipc/parcel-watcher-unsubscribe-timeout.test.ts",
"src/main/ipc/parcel-watcher-supervisor-capacity-wait.test.ts",
"src/main/ipc/parcel-watcher-supervisor-capacity.test.ts",
"src/main/ipc/filesystem/watcher-process/parcel-watcher-process.test.ts",
"src/main/ipc/filesystem/watcher-process/parcel-watcher-unsubscribe-timeout.test.ts",
"src/main/ipc/filesystem/watcher-process/parcel-watcher-supervisor-capacity-wait.test.ts",
"src/main/ipc/filesystem/watcher-process/parcel-watcher-supervisor-capacity.test.ts",
"src/main/ipc/filesystem/watcher-process/parcel-watcher-disconnect-termination.test.ts",
"src/main/ipc/runtime-watcher-pending-assignment.test.ts",
"src/main/ipc/runtime-watcher-process-pool.test.ts",
"src/main/ipc/parcel-watcher-process-entry.test.ts",
"src/main/ipc/parcel-watcher-event-delivery.test.ts",
"src/main/ipc/filesystem/watcher-process/parcel-watcher-process-entry.test.ts",
"src/main/ipc/filesystem/watcher-process/parcel-watcher-event-delivery.test.ts",
"src/main/ipc/filesystem-watcher-local-unsubscribe.test.ts",
"src/main/ipc/filesystem-watcher-wsl.test.ts",
"src/main/ipc/worktrees-delete-pty-teardown.test.ts",
@@ -18630,7 +18630,7 @@
]
},
{
"file": "src/main/ipc/parcel-watcher-process.test.ts",
"file": "src/main/ipc/filesystem/watcher-process/parcel-watcher-process.test.ts",
"assertions": [
"initial-subscribe crashes complete with an interruption refresh",
"watch errors before readiness reject setup and physically cancel the native crawl",
@@ -18647,20 +18647,20 @@
]
},
{
"file": "src/main/ipc/parcel-watcher-unsubscribe-timeout.test.ts",
"file": "src/main/ipc/filesystem/watcher-process/parcel-watcher-unsubscribe-timeout.test.ts",
"assertions": [
"a canary-independent native-unsubscribe deadline restarts the shard and restores healthy siblings after physical child exit",
"an unkillable child rejects the native unsubscribe with its retained physical-exit promise only at the bounded exit deadline"
]
},
{
"file": "src/main/ipc/parcel-watcher-supervisor-capacity-wait.test.ts",
"file": "src/main/ipc/filesystem/watcher-process/parcel-watcher-supervisor-capacity-wait.test.ts",
"assertions": [
"10,000 cancelled capacity callers leave exactly one live anchor and zero waiters after the released slot settles"
]
},
{
"file": "src/main/ipc/parcel-watcher-supervisor-capacity.test.ts",
"file": "src/main/ipc/filesystem/watcher-process/parcel-watcher-supervisor-capacity.test.ts",
"assertions": [
"one released physical slot launches one shared supervisor child for every waiting root, while partial/all cancellation and disposal remove the shared capacity barrier",
"a waiter recursively re-enters the event-driven barrier when crash recovery reclaims its announced slot"
@@ -18696,7 +18696,7 @@
]
},
{
"file": "src/main/ipc/parcel-watcher-process-entry.test.ts",
"file": "src/main/ipc/filesystem/watcher-process/parcel-watcher-process-entry.test.ts",
"assertions": [
"queued cancellation removes the request before Parcel starts its crawl",
"active cancellation requests one host restart and emits no stale subscribed acknowledgement",
@@ -18708,7 +18708,7 @@
]
},
{
"file": "src/main/ipc/parcel-watcher-event-delivery.test.ts",
"file": "src/main/ipc/filesystem/watcher-process/parcel-watcher-event-delivery.test.ts",
"assertions": [
"eight concurrent root batches never exceed eight active directory metadata stats within one child"
]
@@ -18934,7 +18934,7 @@
"runner": "local",
"platform": "macos",
"command": "pnpm exec vitest run --config config/vitest.config.ts src/main/ipc/filesystem-watcher.test.ts src/main/ipc/filesystem-watcher-native-capacity.test.ts src/main/ipc/parcel-watcher-child-registry.test.ts src/main/ipc/parcel-watcher-child-launch.test.ts src/main/ipc/parcel-watcher-process.test.ts src/main/ipc/parcel-watcher-supervisor-capacity-wait.test.ts src/main/ipc/parcel-watcher-supervisor-capacity.test.ts src/main/ipc/parcel-watcher-disconnect-termination.test.ts src/main/ipc/runtime-watcher-pending-assignment.test.ts src/main/ipc/runtime-watcher-process-pool.test.ts src/main/ipc/parcel-watcher-process-entry.test.ts src/main/ipc/parcel-watcher-event-delivery.test.ts src/main/ipc/filesystem-watcher-local-unsubscribe.test.ts src/main/ipc/filesystem-watcher-wsl.test.ts src/main/ipc/worktrees-delete-pty-teardown.test.ts src/main/ipc/worktrees-orphan-directory-cleanup.test.ts src/main/ipc/worktrees-remove-preflight.test.ts src/main/ipc/worktrees-remove-archive-hooks.test.ts src/main/ipc/watcher-removal-gate.test.ts src/main/runtime/file-watcher-host.test.ts src/main/runtime/orca-runtime-files-watch.test.ts src/main/runtime/worktree-teardown.test.ts src/main/runtime/orca-runtime.test.ts src/main/runtime/rpc/methods/files.test.ts src/main/runtime/rpc/methods/files-watch-cancellation.test.ts src/renderer/src/runtime/runtime-file-client.test.ts src/renderer/src/web/web-runtime-client.test.ts src/shared/cross-platform-path.test.ts src/shared/physical-exit-tracker.test.ts src/shared/promise-settlement-waiters.test.ts src/main/ipc/pty-spawn-cwd-fallback.test.ts src/main/ipc/pty-listener-teardown-and-orphans.test.ts src/main/providers/local-pty-provider-shutdown.test.ts src/main/providers/local-pty-provider-session-inventory.test.ts src/main/daemon/daemon-pty-adapter.test.ts src/main/daemon/pty-subprocess.test.ts src/main/daemon/session.test.ts src/main/daemon/terminal-host.test.ts src/main/daemon/terminal-host-session-reaping-leak.test.ts --reporter=dot",
"currentCommand": "pnpm exec vitest run --config config/vitest.config.ts src/main/ipc/filesystem-watcher.test.ts src/main/ipc/filesystem-watcher-native-capacity.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-child-registry.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-child-launch.test.ts src/main/ipc/parcel-watcher-process.test.ts src/main/ipc/parcel-watcher-supervisor-capacity-wait.test.ts src/main/ipc/parcel-watcher-supervisor-capacity.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-disconnect-termination.test.ts src/main/ipc/runtime-watcher-pending-assignment.test.ts src/main/ipc/runtime-watcher-process-pool.test.ts src/main/ipc/parcel-watcher-process-entry.test.ts src/main/ipc/parcel-watcher-event-delivery.test.ts src/main/ipc/filesystem-watcher-local-unsubscribe.test.ts src/main/ipc/filesystem-watcher-wsl.test.ts src/main/ipc/worktrees-delete-pty-teardown.test.ts src/main/ipc/worktrees-orphan-directory-cleanup.test.ts src/main/ipc/worktrees-remove-preflight.test.ts src/main/ipc/worktrees-remove-archive-hooks.test.ts src/main/ipc/watcher-removal-gate.test.ts src/main/runtime/file-watcher-host.test.ts src/main/runtime/orca-runtime-files-watch.test.ts src/main/runtime/worktree-teardown.test.ts src/main/runtime/orca-runtime.test.ts src/main/runtime/rpc/methods/files.test.ts src/main/runtime/rpc/methods/files-watch-cancellation.test.ts src/renderer/src/runtime/runtime-file-client.test.ts src/renderer/src/web/web-runtime-client.test.ts src/shared/cross-platform-path.test.ts src/shared/physical-exit-tracker.test.ts src/shared/promise-settlement-waiters.test.ts src/main/ipc/pty-spawn-cwd-fallback.test.ts src/main/ipc/pty-listener-teardown-and-orphans.test.ts src/main/providers/local-pty-provider-shutdown.test.ts src/main/providers/local-pty-provider-session-inventory.test.ts src/main/daemon/daemon-pty-adapter.test.ts src/main/daemon/pty-subprocess.test.ts src/main/daemon/session.test.ts src/main/daemon/terminal-host.test.ts src/main/daemon/terminal-host-session-reaping-leak.test.ts --reporter=dot",
"currentCommand": "pnpm exec vitest run --config config/vitest.config.ts src/main/ipc/filesystem-watcher.test.ts src/main/ipc/filesystem-watcher-native-capacity.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-child-registry.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-child-launch.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-process.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-supervisor-capacity-wait.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-supervisor-capacity.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-disconnect-termination.test.ts src/main/ipc/runtime-watcher-pending-assignment.test.ts src/main/ipc/runtime-watcher-process-pool.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-process-entry.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-event-delivery.test.ts src/main/ipc/filesystem-watcher-local-unsubscribe.test.ts src/main/ipc/filesystem-watcher-wsl.test.ts src/main/ipc/worktrees-delete-pty-teardown.test.ts src/main/ipc/worktrees-orphan-directory-cleanup.test.ts src/main/ipc/worktrees-remove-preflight.test.ts src/main/ipc/worktrees-remove-archive-hooks.test.ts src/main/ipc/watcher-removal-gate.test.ts src/main/runtime/file-watcher-host.test.ts src/main/runtime/orca-runtime-files-watch.test.ts src/main/runtime/worktree-teardown.test.ts src/main/runtime/orca-runtime.test.ts src/main/runtime/rpc/methods/files.test.ts src/main/runtime/rpc/methods/files-watch-cancellation.test.ts src/renderer/src/runtime/runtime-file-client.test.ts src/renderer/src/web/web-runtime-client.test.ts src/shared/cross-platform-path.test.ts src/shared/physical-exit-tracker.test.ts src/shared/promise-settlement-waiters.test.ts src/main/ipc/pty-spawn-cwd-fallback.test.ts src/main/ipc/pty-listener-teardown-and-orphans.test.ts src/main/providers/local-pty-provider-shutdown.test.ts src/main/providers/local-pty-provider-session-inventory.test.ts src/main/daemon/daemon-pty-adapter.test.ts src/main/daemon/pty-subprocess.test.ts src/main/daemon/session.test.ts src/main/daemon/terminal-host.test.ts src/main/daemon/terminal-host-session-reaping-leak.test.ts --reporter=dot",
"result": "passed",
"durationSeconds": 11.98,
"summary": "Thirty-nine watcher, cancellation, desktop/serve, paired-web, WSL, SSH/relay, removal, and PTY physical-exit files passed with 2,008 tests. Capacity, quarantine, runtime-root, relay, and SSH setup layers each prove that 10,000 aborted callers detach while one anchor remains and zero waiters remain after settlement."
@@ -18944,7 +18944,7 @@
"runner": "local",
"platform": "macos",
"command": "pnpm exec vitest run --config config/vitest.config.ts src/main/ipc/filesystem-watcher.test.ts src/main/ipc/filesystem-watcher-native-capacity.test.ts src/main/ipc/parcel-watcher-child-registry.test.ts src/main/ipc/parcel-watcher-child-launch.test.ts src/main/ipc/parcel-watcher-process.test.ts src/main/ipc/parcel-watcher-supervisor-capacity.test.ts src/main/ipc/parcel-watcher-disconnect-termination.test.ts src/main/ipc/runtime-watcher-process-pool.test.ts src/main/ipc/parcel-watcher-process-entry.test.ts src/main/ipc/parcel-watcher-event-delivery.test.ts src/main/ipc/filesystem-watcher-local-unsubscribe.test.ts src/main/ipc/filesystem-watcher-wsl.test.ts src/main/ipc/worktrees-delete-pty-teardown.test.ts src/main/ipc/worktrees-orphan-directory-cleanup.test.ts src/main/ipc/worktrees-remove-preflight.test.ts src/main/ipc/worktrees-remove-archive-hooks.test.ts src/main/ipc/watcher-removal-gate.test.ts src/main/runtime/file-watcher-host.test.ts src/main/runtime/orca-runtime-files-watch.test.ts src/main/runtime/worktree-teardown.test.ts src/main/runtime/orca-runtime.test.ts src/main/runtime/rpc/methods/files.test.ts src/main/runtime/rpc/methods/files-watch-cancellation.test.ts src/renderer/src/runtime/runtime-file-client.test.ts src/renderer/src/web/web-runtime-client.test.ts src/shared/cross-platform-path.test.ts src/shared/physical-exit-tracker.test.ts src/main/ipc/pty-spawn-cwd-fallback.test.ts src/main/ipc/pty-listener-teardown-and-orphans.test.ts src/main/providers/local-pty-provider-shutdown.test.ts src/main/providers/local-pty-provider-session-inventory.test.ts src/main/daemon/daemon-pty-adapter.test.ts src/main/daemon/pty-subprocess.test.ts src/main/daemon/session.test.ts src/main/daemon/terminal-host.test.ts src/main/daemon/terminal-host-session-reaping-leak.test.ts --reporter=dot",
"currentCommand": "pnpm exec vitest run --config config/vitest.config.ts src/main/ipc/filesystem-watcher.test.ts src/main/ipc/filesystem-watcher-native-capacity.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-child-registry.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-child-launch.test.ts src/main/ipc/parcel-watcher-process.test.ts src/main/ipc/parcel-watcher-supervisor-capacity.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-disconnect-termination.test.ts src/main/ipc/runtime-watcher-process-pool.test.ts src/main/ipc/parcel-watcher-process-entry.test.ts src/main/ipc/parcel-watcher-event-delivery.test.ts src/main/ipc/filesystem-watcher-local-unsubscribe.test.ts src/main/ipc/filesystem-watcher-wsl.test.ts src/main/ipc/worktrees-delete-pty-teardown.test.ts src/main/ipc/worktrees-orphan-directory-cleanup.test.ts src/main/ipc/worktrees-remove-preflight.test.ts src/main/ipc/worktrees-remove-archive-hooks.test.ts src/main/ipc/watcher-removal-gate.test.ts src/main/runtime/file-watcher-host.test.ts src/main/runtime/orca-runtime-files-watch.test.ts src/main/runtime/worktree-teardown.test.ts src/main/runtime/orca-runtime.test.ts src/main/runtime/rpc/methods/files.test.ts src/main/runtime/rpc/methods/files-watch-cancellation.test.ts src/renderer/src/runtime/runtime-file-client.test.ts src/renderer/src/web/web-runtime-client.test.ts src/shared/cross-platform-path.test.ts src/shared/physical-exit-tracker.test.ts src/main/ipc/pty-spawn-cwd-fallback.test.ts src/main/ipc/pty-listener-teardown-and-orphans.test.ts src/main/providers/local-pty-provider-shutdown.test.ts src/main/providers/local-pty-provider-session-inventory.test.ts src/main/daemon/daemon-pty-adapter.test.ts src/main/daemon/pty-subprocess.test.ts src/main/daemon/session.test.ts src/main/daemon/terminal-host.test.ts src/main/daemon/terminal-host-session-reaping-leak.test.ts --reporter=dot",
"currentCommand": "pnpm exec vitest run --config config/vitest.config.ts src/main/ipc/filesystem-watcher.test.ts src/main/ipc/filesystem-watcher-native-capacity.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-child-registry.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-child-launch.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-process.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-supervisor-capacity.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-disconnect-termination.test.ts src/main/ipc/runtime-watcher-process-pool.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-process-entry.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-event-delivery.test.ts src/main/ipc/filesystem-watcher-local-unsubscribe.test.ts src/main/ipc/filesystem-watcher-wsl.test.ts src/main/ipc/worktrees-delete-pty-teardown.test.ts src/main/ipc/worktrees-orphan-directory-cleanup.test.ts src/main/ipc/worktrees-remove-preflight.test.ts src/main/ipc/worktrees-remove-archive-hooks.test.ts src/main/ipc/watcher-removal-gate.test.ts src/main/runtime/file-watcher-host.test.ts src/main/runtime/orca-runtime-files-watch.test.ts src/main/runtime/worktree-teardown.test.ts src/main/runtime/orca-runtime.test.ts src/main/runtime/rpc/methods/files.test.ts src/main/runtime/rpc/methods/files-watch-cancellation.test.ts src/renderer/src/runtime/runtime-file-client.test.ts src/renderer/src/web/web-runtime-client.test.ts src/shared/cross-platform-path.test.ts src/shared/physical-exit-tracker.test.ts src/main/ipc/pty-spawn-cwd-fallback.test.ts src/main/ipc/pty-listener-teardown-and-orphans.test.ts src/main/providers/local-pty-provider-shutdown.test.ts src/main/providers/local-pty-provider-session-inventory.test.ts src/main/daemon/daemon-pty-adapter.test.ts src/main/daemon/pty-subprocess.test.ts src/main/daemon/session.test.ts src/main/daemon/terminal-host.test.ts src/main/daemon/terminal-host-session-reaping-leak.test.ts --reporter=dot",
"result": "passed",
"durationSeconds": 11.59,
"summary": "Thirty-four watcher, cancellation, desktop/serve, paired-web, WSL, removal, PTY physical-exit, provider, renderer, and path files passed with 1,999 tests; paired-web cancellation now owns a server token before ready and aborts pending setup without a late native install."
@@ -18963,7 +18963,7 @@
"runner": "local",
"platform": "macos",
"command": "pnpm exec vitest run --config config/vitest.config.ts src/main/ipc/filesystem-watcher.test.ts src/main/ipc/parcel-watcher-process.test.ts src/main/ipc/parcel-watcher-disconnect-termination.test.ts src/main/ipc/runtime-watcher-process-pool.test.ts src/main/ipc/parcel-watcher-process-entry.test.ts src/main/ipc/parcel-watcher-event-delivery.test.ts src/main/ipc/filesystem-watcher-local-unsubscribe.test.ts src/main/ipc/filesystem-watcher-wsl.test.ts src/main/ipc/worktrees-delete-pty-teardown.test.ts src/main/ipc/worktrees-orphan-directory-cleanup.test.ts src/main/ipc/worktrees-remove-preflight.test.ts src/main/ipc/worktrees-remove-archive-hooks.test.ts src/main/ipc/watcher-removal-gate.test.ts src/main/runtime/file-watcher-host.test.ts src/main/runtime/orca-runtime-files-watch.test.ts src/main/runtime/worktree-teardown.test.ts src/main/runtime/orca-runtime.test.ts src/main/runtime/rpc/methods/files.test.ts src/renderer/src/runtime/runtime-file-client.test.ts src/renderer/src/web/web-runtime-client.test.ts src/shared/cross-platform-path.test.ts src/main/ipc/pty-spawn-cwd-fallback.test.ts src/main/ipc/pty-listener-teardown-and-orphans.test.ts src/main/providers/local-pty-provider-shutdown.test.ts src/main/providers/local-pty-provider-session-inventory.test.ts src/main/daemon/pty-subprocess.test.ts src/main/daemon/session.test.ts src/main/daemon/terminal-host.test.ts src/main/daemon/terminal-host-session-reaping-leak.test.ts --reporter=dot",
"currentCommand": "pnpm exec vitest run --config config/vitest.config.ts src/main/ipc/filesystem-watcher.test.ts src/main/ipc/parcel-watcher-process.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-disconnect-termination.test.ts src/main/ipc/runtime-watcher-process-pool.test.ts src/main/ipc/parcel-watcher-process-entry.test.ts src/main/ipc/parcel-watcher-event-delivery.test.ts src/main/ipc/filesystem-watcher-local-unsubscribe.test.ts src/main/ipc/filesystem-watcher-wsl.test.ts src/main/ipc/worktrees-delete-pty-teardown.test.ts src/main/ipc/worktrees-orphan-directory-cleanup.test.ts src/main/ipc/worktrees-remove-preflight.test.ts src/main/ipc/worktrees-remove-archive-hooks.test.ts src/main/ipc/watcher-removal-gate.test.ts src/main/runtime/file-watcher-host.test.ts src/main/runtime/orca-runtime-files-watch.test.ts src/main/runtime/worktree-teardown.test.ts src/main/runtime/orca-runtime.test.ts src/main/runtime/rpc/methods/files.test.ts src/renderer/src/runtime/runtime-file-client.test.ts src/renderer/src/web/web-runtime-client.test.ts src/shared/cross-platform-path.test.ts src/main/ipc/pty-spawn-cwd-fallback.test.ts src/main/ipc/pty-listener-teardown-and-orphans.test.ts src/main/providers/local-pty-provider-shutdown.test.ts src/main/providers/local-pty-provider-session-inventory.test.ts src/main/daemon/pty-subprocess.test.ts src/main/daemon/session.test.ts src/main/daemon/terminal-host.test.ts src/main/daemon/terminal-host-session-reaping-leak.test.ts --reporter=dot",
"currentCommand": "pnpm exec vitest run --config config/vitest.config.ts src/main/ipc/filesystem-watcher.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-process.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-disconnect-termination.test.ts src/main/ipc/runtime-watcher-process-pool.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-process-entry.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-event-delivery.test.ts src/main/ipc/filesystem-watcher-local-unsubscribe.test.ts src/main/ipc/filesystem-watcher-wsl.test.ts src/main/ipc/worktrees-delete-pty-teardown.test.ts src/main/ipc/worktrees-orphan-directory-cleanup.test.ts src/main/ipc/worktrees-remove-preflight.test.ts src/main/ipc/worktrees-remove-archive-hooks.test.ts src/main/ipc/watcher-removal-gate.test.ts src/main/runtime/file-watcher-host.test.ts src/main/runtime/orca-runtime-files-watch.test.ts src/main/runtime/worktree-teardown.test.ts src/main/runtime/orca-runtime.test.ts src/main/runtime/rpc/methods/files.test.ts src/renderer/src/runtime/runtime-file-client.test.ts src/renderer/src/web/web-runtime-client.test.ts src/shared/cross-platform-path.test.ts src/main/ipc/pty-spawn-cwd-fallback.test.ts src/main/ipc/pty-listener-teardown-and-orphans.test.ts src/main/providers/local-pty-provider-shutdown.test.ts src/main/providers/local-pty-provider-session-inventory.test.ts src/main/daemon/pty-subprocess.test.ts src/main/daemon/session.test.ts src/main/daemon/terminal-host.test.ts src/main/daemon/terminal-host-session-reaping-leak.test.ts --reporter=dot",
"result": "passed",
"durationSeconds": 10.01,
"summary": "Twenty-seven watcher, WSL, desktop/serve removal, local/daemon/SSH PTY physical-exit, provider ownership, RPC, renderer, relay PTY admission, and cross-platform path files passed with 1,886 tests. The suite includes nested removal fencing, renderer/runtime cwd-only admission, legacy provider rows, rejected kill retries, transient WSL capacity, and synchronous-startup reservation cleanup."
@@ -19018,7 +19018,7 @@
"runner": "local",
"platform": "macos",
"command": "pnpm exec vitest run --config config/vitest.config.ts src/main/ipc/parcel-watcher-process.test.ts src/main/ipc/parcel-watcher-disconnect-termination.test.ts src/main/ipc/runtime-watcher-process-pool.test.ts src/main/ipc/parcel-watcher-process-entry.test.ts src/main/ipc/parcel-watcher-event-delivery.test.ts src/main/ipc/filesystem-watcher-local-unsubscribe.test.ts src/main/ipc/filesystem-watcher-wsl.test.ts src/main/ipc/worktrees-delete-pty-teardown.test.ts src/main/ipc/worktrees-orphan-directory-cleanup.test.ts src/main/ipc/worktrees-remove-preflight.test.ts src/main/ipc/worktrees-remove-archive-hooks.test.ts src/main/ipc/watcher-removal-gate.test.ts src/main/runtime/file-watcher-host.test.ts src/main/runtime/orca-runtime-files-watch.test.ts src/main/runtime/worktree-teardown.test.ts src/main/runtime/orca-runtime.test.ts src/main/runtime/rpc/methods/files.test.ts src/renderer/src/runtime/runtime-file-client.test.ts src/renderer/src/web/web-runtime-client.test.ts src/shared/cross-platform-path.test.ts src/main/ipc/pty-spawn-cwd-fallback.test.ts src/main/ipc/pty-listener-teardown-and-orphans.test.ts src/main/providers/local-pty-provider-shutdown.test.ts src/main/providers/local-pty-provider-session-inventory.test.ts src/main/daemon/session.test.ts src/main/daemon/terminal-host.test.ts src/main/daemon/terminal-host-session-reaping-leak.test.ts",
"currentCommand": "pnpm exec vitest run --config config/vitest.config.ts src/main/ipc/parcel-watcher-process.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-disconnect-termination.test.ts src/main/ipc/runtime-watcher-process-pool.test.ts src/main/ipc/parcel-watcher-process-entry.test.ts src/main/ipc/parcel-watcher-event-delivery.test.ts src/main/ipc/filesystem-watcher-local-unsubscribe.test.ts src/main/ipc/filesystem-watcher-wsl.test.ts src/main/ipc/worktrees-delete-pty-teardown.test.ts src/main/ipc/worktrees-orphan-directory-cleanup.test.ts src/main/ipc/worktrees-remove-preflight.test.ts src/main/ipc/worktrees-remove-archive-hooks.test.ts src/main/ipc/watcher-removal-gate.test.ts src/main/runtime/file-watcher-host.test.ts src/main/runtime/orca-runtime-files-watch.test.ts src/main/runtime/worktree-teardown.test.ts src/main/runtime/orca-runtime.test.ts src/main/runtime/rpc/methods/files.test.ts src/renderer/src/runtime/runtime-file-client.test.ts src/renderer/src/web/web-runtime-client.test.ts src/shared/cross-platform-path.test.ts src/main/ipc/pty-spawn-cwd-fallback.test.ts src/main/ipc/pty-listener-teardown-and-orphans.test.ts src/main/providers/local-pty-provider-shutdown.test.ts src/main/providers/local-pty-provider-session-inventory.test.ts src/main/daemon/session.test.ts src/main/daemon/terminal-host.test.ts src/main/daemon/terminal-host-session-reaping-leak.test.ts",
"currentCommand": "pnpm exec vitest run --config config/vitest.config.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-process.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-disconnect-termination.test.ts src/main/ipc/runtime-watcher-process-pool.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-process-entry.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-event-delivery.test.ts src/main/ipc/filesystem-watcher-local-unsubscribe.test.ts src/main/ipc/filesystem-watcher-wsl.test.ts src/main/ipc/worktrees-delete-pty-teardown.test.ts src/main/ipc/worktrees-orphan-directory-cleanup.test.ts src/main/ipc/worktrees-remove-preflight.test.ts src/main/ipc/worktrees-remove-archive-hooks.test.ts src/main/ipc/watcher-removal-gate.test.ts src/main/runtime/file-watcher-host.test.ts src/main/runtime/orca-runtime-files-watch.test.ts src/main/runtime/worktree-teardown.test.ts src/main/runtime/orca-runtime.test.ts src/main/runtime/rpc/methods/files.test.ts src/renderer/src/runtime/runtime-file-client.test.ts src/renderer/src/web/web-runtime-client.test.ts src/shared/cross-platform-path.test.ts src/main/ipc/pty-spawn-cwd-fallback.test.ts src/main/ipc/pty-listener-teardown-and-orphans.test.ts src/main/providers/local-pty-provider-shutdown.test.ts src/main/providers/local-pty-provider-session-inventory.test.ts src/main/daemon/session.test.ts src/main/daemon/terminal-host.test.ts src/main/daemon/terminal-host-session-reaping-leak.test.ts",
"result": "passed",
"durationSeconds": 9.12,
"summary": "Twenty-five watcher, WSL, desktop/serve removal, local/daemon/SSH PTY physical-exit, provider ownership, RPC, renderer, relay PTY admission, and cross-platform path files passed with 1,762 tests. The suite covers operations joining in-flight termination, kill failures retaining ownership, bounded timeouts, atomic relay spawn/revive caps, and PTY-removal admission."
@@ -19073,7 +19073,7 @@
"runner": "local",
"platform": "macos",
"command": "pnpm exec vitest run --config config/vitest.config.ts src/main/ipc/parcel-watcher-process.test.ts src/main/ipc/parcel-watcher-disconnect-termination.test.ts src/main/ipc/runtime-watcher-process-pool.test.ts src/main/ipc/parcel-watcher-process-entry.test.ts src/main/ipc/parcel-watcher-event-delivery.test.ts src/main/ipc/filesystem-watcher-local-unsubscribe.test.ts src/main/ipc/filesystem-watcher-wsl.test.ts src/main/ipc/worktrees-delete-pty-teardown.test.ts src/main/ipc/worktrees-orphan-directory-cleanup.test.ts src/main/ipc/worktrees-remove-preflight.test.ts src/main/ipc/worktrees-remove-archive-hooks.test.ts src/main/ipc/watcher-removal-gate.test.ts src/main/runtime/file-watcher-host.test.ts src/main/runtime/orca-runtime-files-watch.test.ts src/main/runtime/worktree-teardown.test.ts src/main/runtime/orca-runtime.test.ts src/main/runtime/rpc/methods/files.test.ts src/renderer/src/runtime/runtime-file-client.test.ts src/renderer/src/web/web-runtime-client.test.ts src/shared/cross-platform-path.test.ts src/main/ipc/pty-spawn-cwd-fallback.test.ts src/main/ipc/pty-listener-teardown-and-orphans.test.ts src/main/daemon/terminal-host.test.ts src/main/daemon/terminal-host-session-reaping-leak.test.ts",
"currentCommand": "pnpm exec vitest run --config config/vitest.config.ts src/main/ipc/parcel-watcher-process.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-disconnect-termination.test.ts src/main/ipc/runtime-watcher-process-pool.test.ts src/main/ipc/parcel-watcher-process-entry.test.ts src/main/ipc/parcel-watcher-event-delivery.test.ts src/main/ipc/filesystem-watcher-local-unsubscribe.test.ts src/main/ipc/filesystem-watcher-wsl.test.ts src/main/ipc/worktrees-delete-pty-teardown.test.ts src/main/ipc/worktrees-orphan-directory-cleanup.test.ts src/main/ipc/worktrees-remove-preflight.test.ts src/main/ipc/worktrees-remove-archive-hooks.test.ts src/main/ipc/watcher-removal-gate.test.ts src/main/runtime/file-watcher-host.test.ts src/main/runtime/orca-runtime-files-watch.test.ts src/main/runtime/worktree-teardown.test.ts src/main/runtime/orca-runtime.test.ts src/main/runtime/rpc/methods/files.test.ts src/renderer/src/runtime/runtime-file-client.test.ts src/renderer/src/web/web-runtime-client.test.ts src/shared/cross-platform-path.test.ts src/main/ipc/pty-spawn-cwd-fallback.test.ts src/main/ipc/pty-listener-teardown-and-orphans.test.ts src/main/daemon/terminal-host.test.ts src/main/daemon/terminal-host-session-reaping-leak.test.ts",
"currentCommand": "pnpm exec vitest run --config config/vitest.config.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-process.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-disconnect-termination.test.ts src/main/ipc/runtime-watcher-process-pool.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-process-entry.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-event-delivery.test.ts src/main/ipc/filesystem-watcher-local-unsubscribe.test.ts src/main/ipc/filesystem-watcher-wsl.test.ts src/main/ipc/worktrees-delete-pty-teardown.test.ts src/main/ipc/worktrees-orphan-directory-cleanup.test.ts src/main/ipc/worktrees-remove-preflight.test.ts src/main/ipc/worktrees-remove-archive-hooks.test.ts src/main/ipc/watcher-removal-gate.test.ts src/main/runtime/file-watcher-host.test.ts src/main/runtime/orca-runtime-files-watch.test.ts src/main/runtime/worktree-teardown.test.ts src/main/runtime/orca-runtime.test.ts src/main/runtime/rpc/methods/files.test.ts src/renderer/src/runtime/runtime-file-client.test.ts src/renderer/src/web/web-runtime-client.test.ts src/shared/cross-platform-path.test.ts src/main/ipc/pty-spawn-cwd-fallback.test.ts src/main/ipc/pty-listener-teardown-and-orphans.test.ts src/main/daemon/terminal-host.test.ts src/main/daemon/terminal-host-session-reaping-leak.test.ts",
"result": "passed",
"durationSeconds": 9.03,
"summary": "Twenty-three watcher, desktop/serve removal, terminal-spawn gate, daemon/SSH physical PTY exit, provider ownership, RPC, renderer, and cross-platform path files passed with 1,630 tests. The suite includes same-turn watcher replacement, authoritative SSH teardown before Git, bounded kill-without-exit failures that retain ownership, and local/SSH deletion fail-closed behavior."
@@ -19101,7 +19101,7 @@
"runner": "local",
"platform": "macos",
"command": "pnpm exec vitest run --config config/vitest.config.ts src/main/ipc/parcel-watcher-process.test.ts src/main/ipc/parcel-watcher-disconnect-termination.test.ts src/main/ipc/runtime-watcher-process-pool.test.ts src/main/ipc/parcel-watcher-process-entry.test.ts src/main/ipc/parcel-watcher-event-delivery.test.ts src/main/ipc/filesystem-watcher-local-unsubscribe.test.ts src/main/ipc/filesystem-watcher-wsl.test.ts src/main/ipc/worktrees-delete-pty-teardown.test.ts src/main/ipc/worktrees-orphan-directory-cleanup.test.ts src/main/ipc/worktrees-remove-preflight.test.ts src/main/ipc/worktrees-remove-archive-hooks.test.ts src/main/ipc/watcher-removal-gate.test.ts src/main/runtime/file-watcher-host.test.ts src/main/runtime/orca-runtime-files-watch.test.ts src/main/runtime/worktree-teardown.test.ts src/main/runtime/orca-runtime.test.ts src/main/runtime/rpc/methods/files.test.ts src/renderer/src/runtime/runtime-file-client.test.ts src/renderer/src/web/web-runtime-client.test.ts src/shared/cross-platform-path.test.ts",
"currentCommand": "pnpm exec vitest run --config config/vitest.config.ts src/main/ipc/parcel-watcher-process.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-disconnect-termination.test.ts src/main/ipc/runtime-watcher-process-pool.test.ts src/main/ipc/parcel-watcher-process-entry.test.ts src/main/ipc/parcel-watcher-event-delivery.test.ts src/main/ipc/filesystem-watcher-local-unsubscribe.test.ts src/main/ipc/filesystem-watcher-wsl.test.ts src/main/ipc/worktrees-delete-pty-teardown.test.ts src/main/ipc/worktrees-orphan-directory-cleanup.test.ts src/main/ipc/worktrees-remove-preflight.test.ts src/main/ipc/worktrees-remove-archive-hooks.test.ts src/main/ipc/watcher-removal-gate.test.ts src/main/runtime/file-watcher-host.test.ts src/main/runtime/orca-runtime-files-watch.test.ts src/main/runtime/worktree-teardown.test.ts src/main/runtime/orca-runtime.test.ts src/main/runtime/rpc/methods/files.test.ts src/renderer/src/runtime/runtime-file-client.test.ts src/renderer/src/web/web-runtime-client.test.ts src/shared/cross-platform-path.test.ts",
"currentCommand": "pnpm exec vitest run --config config/vitest.config.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-process.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-disconnect-termination.test.ts src/main/ipc/runtime-watcher-process-pool.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-process-entry.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-event-delivery.test.ts src/main/ipc/filesystem-watcher-local-unsubscribe.test.ts src/main/ipc/filesystem-watcher-wsl.test.ts src/main/ipc/worktrees-delete-pty-teardown.test.ts src/main/ipc/worktrees-orphan-directory-cleanup.test.ts src/main/ipc/worktrees-remove-preflight.test.ts src/main/ipc/worktrees-remove-archive-hooks.test.ts src/main/ipc/watcher-removal-gate.test.ts src/main/runtime/file-watcher-host.test.ts src/main/runtime/orca-runtime-files-watch.test.ts src/main/runtime/worktree-teardown.test.ts src/main/runtime/orca-runtime.test.ts src/main/runtime/rpc/methods/files.test.ts src/renderer/src/runtime/runtime-file-client.test.ts src/renderer/src/web/web-runtime-client.test.ts src/shared/cross-platform-path.test.ts",
"result": "passed",
"durationSeconds": 8.85,
"summary": "18 focused supervisor, disconnect termination, pool, child-entry, delivery, desktop/WSL cleanup and IPC removal, removal-gate, runtime-host/commands and physical PTY teardown, RPC, SSH ownership, renderer/paired-web clients, and cross-platform path files passed with 1,193 tests."
+15 -15
View File
@@ -2652,23 +2652,23 @@
"src/main/ipc/runtime-environments/orcad-ssh-provisioning-handlers.test.ts": 33,
"src/main/ipc/filesystem/watcher-process/parcel-watcher-child-launch.test.ts": 51,
"src/main/ipc/filesystem/watcher-process/parcel-watcher-child-registry.test.ts": 88,
"src/main/ipc/parcel-watcher-crash-fuse.test.ts": 37,
"src/main/ipc/filesystem/watcher-process/parcel-watcher-crash-fuse.test.ts": 37,
"src/main/ipc/filesystem/watcher-process/parcel-watcher-disconnect-termination.test.ts": 146,
"src/main/ipc/parcel-watcher-entry-path.test.ts": 41,
"src/main/ipc/parcel-watcher-event-cancellation.test.ts": 45,
"src/main/ipc/parcel-watcher-event-delivery.test.ts": 112,
"src/main/ipc/parcel-watcher-module-loader.test.ts": 32,
"src/main/ipc/parcel-watcher-native-error-retirement.test.ts": 100,
"src/main/ipc/filesystem/watcher-process/parcel-watcher-entry-path.test.ts": 41,
"src/main/ipc/filesystem/watcher-process/parcel-watcher-event-cancellation.test.ts": 45,
"src/main/ipc/filesystem/watcher-process/parcel-watcher-event-delivery.test.ts": 112,
"src/main/ipc/filesystem/watcher-process/parcel-watcher-module-loader.test.ts": 32,
"src/main/ipc/filesystem/watcher-process/parcel-watcher-native-error-retirement.test.ts": 100,
"src/main/ipc/filesystem/watcher-process/parcel-watcher-owned-children.test.ts": 50,
"src/main/ipc/parcel-watcher-process-dispose.test.ts": 36,
"src/main/ipc/parcel-watcher-process-entry.test.ts": 179,
"src/main/ipc/parcel-watcher-process.test.ts": 558,
"src/main/ipc/parcel-watcher-root-path-rewrite.test.ts": 109,
"src/main/ipc/parcel-watcher-shallow-subscription.test.ts": 113,
"src/main/ipc/parcel-watcher-supervisor-capacity-wait.test.ts": 177,
"src/main/ipc/parcel-watcher-supervisor-capacity.test.ts": 247,
"src/main/ipc/parcel-watcher-supervisor-disposal.test.ts": 91,
"src/main/ipc/parcel-watcher-unsubscribe-timeout.test.ts": 118,
"src/main/ipc/filesystem/watcher-process/parcel-watcher-process-dispose.test.ts": 36,
"src/main/ipc/filesystem/watcher-process/parcel-watcher-process-entry.test.ts": 179,
"src/main/ipc/filesystem/watcher-process/parcel-watcher-process.test.ts": 558,
"src/main/ipc/filesystem/watcher-process/parcel-watcher-root-path-rewrite.test.ts": 109,
"src/main/ipc/filesystem/watcher-process/parcel-watcher-shallow-subscription.test.ts": 113,
"src/main/ipc/filesystem/watcher-process/parcel-watcher-supervisor-capacity-wait.test.ts": 177,
"src/main/ipc/filesystem/watcher-process/parcel-watcher-supervisor-capacity.test.ts": 247,
"src/main/ipc/filesystem/watcher-process/parcel-watcher-supervisor-disposal.test.ts": 91,
"src/main/ipc/filesystem/watcher-process/parcel-watcher-unsubscribe-timeout.test.ts": 118,
"src/main/ipc/pet-bundle.test.ts": 52,
"src/main/ipc/pet.test.ts": 328,
"src/main/ipc/plugin-marketplaces.test.ts": 250,
+1 -1
View File
@@ -11,7 +11,7 @@ const { turnedOnDarkBuildDefines } = createRequire(import.meta.url)('../dark-bui
export const ORCAD_ENTRY_POINT = 'src/main/orcad/main.ts'
export const ORCAD_LAUNCHER_ENTRY_POINT = 'src/main/orcad/launcher.ts'
export const ORCAD_CHILD_ENTRY_POINTS = {
watcher: 'src/main/ipc/parcel-watcher-process-entry.ts',
watcher: 'src/main/ipc/filesystem/watcher-process/parcel-watcher-process-entry.ts',
daemon: 'src/main/daemon/daemon-entry.ts',
writer: 'src/main/persistence/profile-state/profile-state-writer-worker-entry.ts',
backup: 'src/main/persistence/profile-state/profile-state-backup-worker-entry.ts',
@@ -6,7 +6,9 @@ import { join, resolve } from 'node:path'
import { build } from 'esbuild'
const ENTRY_PATH = resolve('out/main/parcel-watcher-process-entry.js')
const SUPERVISOR_SOURCE = resolve('src/main/ipc/parcel-watcher-process-supervisor.ts')
const SUPERVISOR_SOURCE = resolve(
'src/main/ipc/filesystem/watcher-process/parcel-watcher-process-supervisor.ts'
)
const WAIT_TIMEOUT_MS = 15_000
const require = createRequire(import.meta.url)
@@ -9,7 +9,9 @@ import { build } from 'esbuild'
const ENTRY_PATH = resolve('out/main/parcel-watcher-process-entry.js')
const POOL_SOURCE = resolve('src/main/ipc/runtime-watcher-process-pool.ts')
const FAILURE_SOURCE = resolve('src/main/ipc/parcel-watcher-process-failure.ts')
const FAILURE_SOURCE = resolve(
'src/main/ipc/filesystem/watcher-process/parcel-watcher-process-failure.ts'
)
const REGISTRY_SOURCE = resolve(
'src/main/ipc/filesystem/watcher-process/parcel-watcher-child-registry.ts'
)
@@ -20,7 +20,9 @@ vi.mock('./filesystem-watcher-local-events', () => ({
createLocalWatcher: createLocal,
scheduleLocalBatchFlush: vi.fn()
}))
vi.mock('./parcel-watcher-process', () => ({ disposeWatcherProcess: vi.fn() }))
vi.mock('./filesystem/watcher-process/parcel-watcher-process', () => ({
disposeWatcherProcess: vi.fn()
}))
import { watcherLifecycleState as state } from './filesystem-watcher-lifecycle-state'
import { getLocalWatcherRoot } from './filesystem-watcher-paths'
import { registerFilesystemWatcherHandlers } from './filesystem-watcher-handlers'
@@ -9,7 +9,7 @@ const { handleMock, statMock, subscribeMock } = vi.hoisted(() => ({
vi.mock('electron', () => ({ ipcMain: { handle: handleMock } }))
vi.mock('node:fs/promises', () => ({ stat: statMock }))
vi.mock('./parcel-watcher-process', () => ({
vi.mock('./filesystem/watcher-process/parcel-watcher-process', () => ({
subscribeViaWatcherProcess: subscribeMock,
disposeWatcherProcess: vi.fn()
}))
@@ -1,5 +1,5 @@
import type { WebContents } from 'electron'
import { isWatcherProcessFailure } from './parcel-watcher-process-failure'
import { isWatcherProcessFailure } from './filesystem/watcher-process/parcel-watcher-process-failure'
import type { WatchedRoot } from './filesystem-watcher-wsl'
import {
type CancelledInstallWaiter,
@@ -12,7 +12,9 @@ const { statMock, subscribeMock } = vi.hoisted(() => ({
}))
vi.mock('fs/promises', () => ({ stat: statMock }))
vi.mock('./parcel-watcher-process', () => ({ subscribeViaWatcherProcess: subscribeMock }))
vi.mock('./filesystem/watcher-process/parcel-watcher-process', () => ({
subscribeViaWatcherProcess: subscribeMock
}))
import { createLocalWatcher } from './filesystem-watcher-local-events'
import { cancelLocalBatchFlush } from './filesystem-watcher-batch-control'
@@ -6,7 +6,7 @@ import { MAX_BATCHED_WATCHER_EVENTS, queueWatcherEvents } from './filesystem-wat
// Filter high-churn events at source; Explorer display filters only hide rows.
import { WATCHER_IGNORE_DIRS, buildParcelWatcherIgnoreOptions } from './filesystem-watcher-ignore'
import type { WatchedRoot } from './filesystem-watcher-wsl'
import { subscribeViaWatcherProcess } from './parcel-watcher-process'
import { subscribeViaWatcherProcess } from './filesystem/watcher-process/parcel-watcher-process'
import { normalizeWatcherEventPath } from './filesystem-watcher-paths'
import { watcherLifecycleState } from './filesystem-watcher-lifecycle-state'
import {
@@ -1,5 +1,5 @@
import { beforeEach, describe, expect, it, vi } from 'vitest'
import { WatcherProcessFailure } from './parcel-watcher-process-failure'
import { WatcherProcessFailure } from './filesystem/watcher-process/parcel-watcher-process-failure'
const { createLocalWatcherMock, statMock } = vi.hoisted(() => ({
createLocalWatcherMock: vi.fn(),
@@ -3,7 +3,7 @@ import { isWslPath } from '../wsl'
import { WATCHER_IGNORE_DIRS } from './filesystem-watcher-ignore'
import { createWslWatcher, type WatchedRoot } from './filesystem-watcher-wsl'
import { WatcherChildCapacityError } from './filesystem/watcher-process/parcel-watcher-child-registry'
import { isWatcherProcessFailure } from './parcel-watcher-process-failure'
import { isWatcherProcessFailure } from './filesystem/watcher-process/parcel-watcher-process-failure'
import type {
LocalWatcherInstallResult,
LocalWatcherInstallToken
@@ -1,6 +1,6 @@
import { createWatcherSender } from './filesystem-watcher-test-sender'
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
import type * as ParcelWatcherProcess from './parcel-watcher-process'
import type * as ParcelWatcherProcess from './filesystem/watcher-process/parcel-watcher-process'
const { handleMock } = vi.hoisted(() => ({
handleMock: vi.fn()
@@ -24,7 +24,7 @@ vi.mock('./filesystem-watcher-wsl', () => ({
createWslWatcher: vi.fn()
}))
vi.mock('./parcel-watcher-process', async (importOriginal) => {
vi.mock('./filesystem/watcher-process/parcel-watcher-process', async (importOriginal) => {
const actual = await importOriginal<typeof ParcelWatcherProcess>()
return {
...actual,
@@ -40,8 +40,8 @@ import {
import { registerFilesystemWatcherHandlers } from './filesystem-watcher-handlers'
import { stat } from 'node:fs/promises'
import { subscribe as subscribeParcelWatcher } from '@parcel/watcher'
import { subscribeViaWatcherProcess } from './parcel-watcher-process'
import { WatcherProcessFailure } from './parcel-watcher-process-failure'
import { subscribeViaWatcherProcess } from './filesystem/watcher-process/parcel-watcher-process'
import { WatcherProcessFailure } from './filesystem/watcher-process/parcel-watcher-process-failure'
type HandlerMap = Record<string, (_event: unknown, args: unknown) => unknown>
@@ -11,7 +11,7 @@ const { handleMock, statMock, subscribeViaWatcherProcessMock, disposeWatcherProc
vi.mock('electron', () => ({ ipcMain: { handle: handleMock } }))
vi.mock('node:fs/promises', () => ({ stat: statMock }))
vi.mock('./parcel-watcher-process', () => ({
vi.mock('./filesystem/watcher-process/parcel-watcher-process', () => ({
subscribeViaWatcherProcess: subscribeViaWatcherProcessMock,
disposeWatcherProcess: disposeWatcherProcessMock
}))
@@ -1,6 +1,6 @@
import { createWatcherSender } from './filesystem-watcher-test-sender'
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
import type * as ParcelWatcherProcess from './parcel-watcher-process'
import type * as ParcelWatcherProcess from './filesystem/watcher-process/parcel-watcher-process'
const { handleMock } = vi.hoisted(() => ({
handleMock: vi.fn()
@@ -24,7 +24,7 @@ vi.mock('./filesystem-watcher-wsl', () => ({
createWslWatcher: vi.fn()
}))
vi.mock('./parcel-watcher-process', async (importOriginal) => {
vi.mock('./filesystem/watcher-process/parcel-watcher-process', async (importOriginal) => {
const actual = await importOriginal<typeof ParcelWatcherProcess>()
return {
...actual,
@@ -41,10 +41,10 @@ import {
WATCHER_REMOVAL_DRAIN_BUDGET_MS,
WATCHER_REMOVAL_FINAL_DRAIN_RESERVE_MS
} from './watcher-removal-drain'
import { WatcherProcessFailure } from './parcel-watcher-process-failure'
import { WatcherProcessFailure } from './filesystem/watcher-process/parcel-watcher-process-failure'
import { stat } from 'node:fs/promises'
import { subscribe as subscribeParcelWatcher } from '@parcel/watcher'
import { subscribeViaWatcherProcess } from './parcel-watcher-process'
import { subscribeViaWatcherProcess } from './filesystem/watcher-process/parcel-watcher-process'
type HandlerMap = Record<string, (_event: unknown, args: unknown) => unknown>
@@ -9,7 +9,7 @@ const { handleMock, statMock, subscribeMock } = vi.hoisted(() => ({
vi.mock('electron', () => ({ ipcMain: { handle: handleMock } }))
vi.mock('node:fs/promises', () => ({ stat: statMock }))
vi.mock('./parcel-watcher-process', () => ({
vi.mock('./filesystem/watcher-process/parcel-watcher-process', () => ({
subscribeViaWatcherProcess: subscribeMock,
disposeWatcherProcess: vi.fn()
}))
+1 -1
View File
@@ -1,4 +1,4 @@
import { disposeWatcherProcess } from './parcel-watcher-process'
import { disposeWatcherProcess } from './filesystem/watcher-process/parcel-watcher-process'
import { watcherLifecycleState } from './filesystem-watcher-lifecycle-state'
import { trackDetachedLocalUnsubscribe } from './filesystem-watcher-listener-lifecycle'
import { cancelLocalBatchFlush } from './filesystem-watcher-batch-control'
@@ -3,15 +3,15 @@ import {
failAllWatcherSubscriptions,
type PendingWatcherUnsubscribe,
resolvePendingWatcherUnsubscribes
} from '../../parcel-watcher-host-subscriptions'
} from './parcel-watcher-host-subscriptions'
import type { WatcherCancellationTracker } from './parcel-watcher-cancellation-tracker'
import {
createWatcherChildTerminationFailure,
terminateWatcherChild
} from './parcel-watcher-child-termination'
import { resetPendingSubscribeAttempt } from './parcel-watcher-pending-subscribe'
import { WatcherProcessFailure } from '../../parcel-watcher-process-failure'
import type { WatcherProcessSubscriptionRecord } from '../../parcel-watcher-process-subscription'
import { WatcherProcessFailure } from './parcel-watcher-process-failure'
import type { WatcherProcessSubscriptionRecord } from './parcel-watcher-process-subscription'
export function restoreWatcherRecordsAfterCancellation(
records: Map<number, WatcherProcessSubscriptionRecord>,
@@ -13,7 +13,7 @@ const { forkMock, releaseReservationMock, signalPhysicalExitMock, writeFileSyncM
vi.mock('node:child_process', () => ({ fork: forkMock }))
vi.mock('node:fs', () => ({ writeFileSync: writeFileSyncMock }))
vi.mock('../../parcel-watcher-canary-directory', () => ({
vi.mock('./parcel-watcher-canary-directory', () => ({
createWatcherCanaryDirectory: vi.fn(() => null),
removeWatcherCanaryDirectory: vi.fn()
}))
@@ -3,10 +3,10 @@ import { writeFileSync } from 'node:fs'
import {
createWatcherCanaryDirectory,
removeWatcherCanaryDirectory
} from '../../parcel-watcher-canary-directory'
} from './parcel-watcher-canary-directory'
import { reserveWatcherChild, WatcherChildCapacityError } from './parcel-watcher-child-registry'
import { registerWatcherChildPhysicalExit } from './parcel-watcher-child-termination'
import type { WatcherToHostMessage } from '../../parcel-watcher-process-protocol'
import type { WatcherToHostMessage } from './parcel-watcher-process-protocol'
export type LaunchedWatcherChild = {
child: ChildProcess
@@ -1,5 +1,5 @@
import type { ChildProcess } from 'node:child_process'
import type { HostToWatcherMessage } from '../../parcel-watcher-process-protocol'
import type { HostToWatcherMessage } from './parcel-watcher-process-protocol'
export function sendToWatcherChild(proc: ChildProcess, message: HostToWatcherMessage): void {
try {
@@ -3,16 +3,16 @@ import {
failAllWatcherSubscriptions,
type PendingWatcherUnsubscribe,
resolvePendingWatcherUnsubscribes
} from '../../parcel-watcher-host-subscriptions'
} from './parcel-watcher-host-subscriptions'
import type { WatcherCancellationTracker } from './parcel-watcher-cancellation-tracker'
import {
createWatcherChildTerminationFailure,
terminateWatcherChild
} from './parcel-watcher-child-termination'
import { resetPendingSubscribeAttempt } from './parcel-watcher-pending-subscribe'
import type { WatcherProcessCrashFuse } from '../../parcel-watcher-crash-fuse'
import { WatcherProcessFailure } from '../../parcel-watcher-process-failure'
import type { WatcherProcessSubscriptionRecord } from '../../parcel-watcher-process-subscription'
import type { WatcherProcessCrashFuse } from './parcel-watcher-crash-fuse'
import { WatcherProcessFailure } from './parcel-watcher-process-failure'
import type { WatcherProcessSubscriptionRecord } from './parcel-watcher-process-subscription'
export function recoverWatcherRecordsAfterChildGone(
records: Map<number, WatcherProcessSubscriptionRecord>,
@@ -1,5 +1,5 @@
import type { ChildProcessHandle } from '@orca/process-host/process-spec'
import { removeWatcherCanaryDirectory } from '../../parcel-watcher-canary-directory'
import { removeWatcherCanaryDirectory } from './parcel-watcher-canary-directory'
export class WatcherChildSlot {
child: ChildProcessHandle | null = null
@@ -2,8 +2,8 @@ import type { ChildProcess } from 'node:child_process'
import {
type PendingWatcherUnsubscribe,
resolvePendingWatcherUnsubscribes
} from '../../parcel-watcher-host-subscriptions'
import { WatcherProcessFailure } from '../../parcel-watcher-process-failure'
} from './parcel-watcher-host-subscriptions'
import { WatcherProcessFailure } from './parcel-watcher-process-failure'
import { RUNTIME_FILE_WATCH_EXIT_DEADLINE_MS } from '../../../../shared/runtime-file-watch-limits'
export const WATCHER_PROCESS_HARD_KILL_DELAY_MS = 5_000
@@ -22,8 +22,8 @@ import {
disposeWatcherProcess,
resetWatcherProcessForTest,
subscribeViaWatcherProcess
} from '../../parcel-watcher-process'
import type { WatcherProcessSubscription } from '../../parcel-watcher-process-subscription'
} from './parcel-watcher-process'
import type { WatcherProcessSubscription } from './parcel-watcher-process-subscription'
type SentMessage = { op: string; id: number }
@@ -3,7 +3,7 @@ import {
getForkedChildEntryPath,
resolveForkedChildEntryPath,
resolveForkedChildEntryPathWithoutApp
} from '../forked-child-entry-path'
} from '../../../forked-child-entry-path'
const WATCHER_ENTRY_FILENAME = 'parcel-watcher-process-entry.js'
@@ -1,8 +1,8 @@
import { stat } from 'node:fs/promises'
import { PrioritySemaphore } from '../../shared/priority-semaphore'
import { mapWithConcurrency } from '../../shared/map-with-concurrency'
import { PrioritySemaphore } from '../../../../shared/priority-semaphore'
import { mapWithConcurrency } from '../../../../shared/map-with-concurrency'
import type { Event as ParcelWatcherEvent } from '@parcel/watcher'
import { MAX_BATCHED_WATCHER_EVENTS } from './filesystem-watcher-event-batch'
import { MAX_BATCHED_WATCHER_EVENTS } from '../../filesystem-watcher-event-batch'
import type {
WatcherProcessDeliveryOptions,
WatcherProcessEvent
@@ -2,14 +2,14 @@ import type { ChildProcess } from 'node:child_process'
import {
resetPendingSubscribeAttempt,
takePendingSubscribe
} from './filesystem/watcher-process/parcel-watcher-pending-subscribe'
} from './parcel-watcher-pending-subscribe'
import { isWatcherProcessFailure, WatcherProcessFailure } from './parcel-watcher-process-failure'
import type { HostToWatcherMessage, WatcherToHostMessage } from './parcel-watcher-process-protocol'
import type {
WatcherProcessSubscription,
WatcherProcessSubscriptionRecord
} from './parcel-watcher-process-subscription'
import { RUNTIME_FILE_WATCH_CANCEL_TIMEOUT_MS } from '../../shared/runtime-file-watch-limits'
import { RUNTIME_FILE_WATCH_CANCEL_TIMEOUT_MS } from '../../../../shared/runtime-file-watch-limits'
export type PendingWatcherUnsubscribe = (error?: Error) => void
@@ -1,6 +1,6 @@
import { resetPendingSubscribeAttempt } from './parcel-watcher-pending-subscribe'
import type { WatcherProcessFailure } from '../../parcel-watcher-process-failure'
import type { WatcherProcessSubscriptionRecord } from '../../parcel-watcher-process-subscription'
import type { WatcherProcessFailure } from './parcel-watcher-process-failure'
import type { WatcherProcessSubscriptionRecord } from './parcel-watcher-process-subscription'
export function cancelInterruptedWatcherSubscribe(args: {
record: WatcherProcessSubscriptionRecord
@@ -15,7 +15,7 @@ vi.mock('node:fs', () => ({
}))
import { WatcherProcessSupervisor } from './parcel-watcher-process-supervisor'
import { WATCHER_PROCESS_EXIT_DEADLINE_MS } from './filesystem/watcher-process/parcel-watcher-child-termination'
import { WATCHER_PROCESS_EXIT_DEADLINE_MS } from './parcel-watcher-child-termination'
describe('native watcher error retirement', () => {
let supervisor: WatcherProcessSupervisor
@@ -1,8 +1,8 @@
import type { ChildProcess } from 'node:child_process'
import type { WatcherCancellationTracker } from './parcel-watcher-cancellation-tracker'
import { takePendingSubscribe } from './parcel-watcher-pending-subscribe'
import type { WatcherProcessFailure } from '../../parcel-watcher-process-failure'
import type { WatcherProcessSubscriptionRecord } from '../../parcel-watcher-process-subscription'
import type { WatcherProcessFailure } from './parcel-watcher-process-failure'
import type { WatcherProcessSubscriptionRecord } from './parcel-watcher-process-subscription'
type CancelPendingWatcherSubscribeOptions = {
record: WatcherProcessSubscriptionRecord
@@ -1,8 +1,8 @@
import { WatcherProcessFailure } from '../../parcel-watcher-process-failure'
import { WatcherProcessFailure } from './parcel-watcher-process-failure'
import type {
PendingWatcherProcessSubscribe,
WatcherProcessSubscriptionRecord
} from '../../parcel-watcher-process-subscription'
} from './parcel-watcher-process-subscription'
export function installPendingSubscribeControls(
record: WatcherProcessSubscriptionRecord,
@@ -10,7 +10,7 @@ vi.mock('./parcel-watcher-process-supervisor', () => ({
disposeAndWait = supervisorDispose
}
}))
vi.mock('./runtime-watcher-process-pool', () => ({
vi.mock('../../runtime-watcher-process-pool', () => ({
RuntimeWatcherProcessPool: class {
disposeAndWait = poolDispose
}
@@ -19,7 +19,7 @@ vi.mock('node:fs', () => ({
writeFileSync: writeFileSyncMock
}))
vi.mock('node:fs/promises', () => ({ stat: statMock }))
vi.mock('./shallow-watch-delivery-probe', () => ({
vi.mock('../../shallow-watch-delivery-probe', () => ({
detectShallowWatchDelivery: detectShallowWatchDeliveryMock,
hasShallowWatchDelivered: () => false,
noteShallowWatchDelivered: vi.fn()
@@ -2,8 +2,8 @@
import type * as ParcelWatcher from '@parcel/watcher'
import { loadParcelWatcher } from './parcel-watcher-module-loader'
import { startShallowWatcher } from './parcel-watcher-shallow-subscription'
import { detectShallowWatchDelivery } from './shallow-watch-delivery-probe'
import { startWatcherDeliveryCanary } from './parcel-watcher-delivery-canary'
import { detectShallowWatchDelivery } from '../../shallow-watch-delivery-probe'
import { startWatcherDeliveryCanary } from '../../parcel-watcher-delivery-canary'
import {
createWatcherProcessEventDeliveryQueue,
type WatcherProcessEventDeliveryQueue
@@ -14,7 +14,7 @@ import type {
WatcherProcessSubscribeOptions,
WatcherToHostMessage
} from './parcel-watcher-process-protocol'
import { errorMessage } from '../../shared/error-message'
import { errorMessage } from '../../../../shared/error-message'
type WatcherSubscription = {
unsubscribe: () => Promise<void>
@@ -1,26 +1,26 @@
import type { ChildProcess } from 'node:child_process'
import { restartCancelledWatcherChild } from './filesystem/watcher-process/parcel-watcher-cancellation-restart'
import { WatcherCancellationTracker } from './filesystem/watcher-process/parcel-watcher-cancellation-tracker'
import { restartCancelledWatcherChild } from './parcel-watcher-cancellation-restart'
import { WatcherCancellationTracker } from './parcel-watcher-cancellation-tracker'
import { getWatcherProcessEntryPath, watcherProcessEntryExists } from './parcel-watcher-entry-path'
import { WatcherChildSlot } from './filesystem/watcher-process/parcel-watcher-child-slot'
import * as termination from './filesystem/watcher-process/parcel-watcher-child-termination'
import { launchWatcherChild } from './filesystem/watcher-process/parcel-watcher-child-launch'
import { sendToWatcherChild } from './filesystem/watcher-process/parcel-watcher-child-messaging'
import { WatcherChildSlot } from './parcel-watcher-child-slot'
import * as termination from './parcel-watcher-child-termination'
import { launchWatcherChild } from './parcel-watcher-child-launch'
import { sendToWatcherChild } from './parcel-watcher-child-messaging'
import {
recoverWatcherRecordsAfterChildGone,
terminateDisconnectedWatcherChild
} from './filesystem/watcher-process/parcel-watcher-child-recovery'
import { resetWatcherChildRegistryForTest } from './filesystem/watcher-process/parcel-watcher-child-registry'
} from './parcel-watcher-child-recovery'
import { resetWatcherChildRegistryForTest } from './parcel-watcher-child-registry'
import { WatcherSupervisorCapacityWait } from './parcel-watcher-supervisor-capacity-wait'
import { WatcherProcessCrashFuse } from './parcel-watcher-crash-fuse'
import { WatcherDeliveryHealthMonitor } from './parcel-watcher-delivery-health'
import { cancelInterruptedWatcherSubscribe } from './filesystem/watcher-process/parcel-watcher-interrupted-cancellation'
import { WatcherDeliveryHealthMonitor } from '../../parcel-watcher-delivery-health'
import { cancelInterruptedWatcherSubscribe } from './parcel-watcher-interrupted-cancellation'
import {
type PendingWatcherUnsubscribe,
reportWatcherTerminalError,
resolvePendingWatcherUnsubscribes
} from './parcel-watcher-host-subscriptions'
import { cancelPendingWatcherSubscribe } from './filesystem/watcher-process/parcel-watcher-pending-cancellation'
import { cancelPendingWatcherSubscribe } from './parcel-watcher-pending-cancellation'
import type { WatcherProcessFailure } from './parcel-watcher-process-failure'
import type {
WatcherProcessSubscribeOptions,
@@ -39,7 +39,7 @@ import {
} from './parcel-watcher-supervisor-subscribe'
import { disposeWatcherSupervisor } from './parcel-watcher-supervisor-disposal'
import { handleWatcherSupervisorMessage } from './parcel-watcher-supervisor-message'
import { WatcherOwnedChildren } from './filesystem/watcher-process/parcel-watcher-owned-children'
import { WatcherOwnedChildren } from './parcel-watcher-owned-children'
export class WatcherProcessSupervisor {
private nextSubscriptionId = 1
@@ -1,10 +1,10 @@
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
import { WATCHER_PROCESS_CANCEL_TIMEOUT_MS } from './filesystem/watcher-process/parcel-watcher-cancellation-tracker'
import { WATCHER_PROCESS_CANCEL_TIMEOUT_MS } from './parcel-watcher-cancellation-tracker'
import {
terminateWatcherChild,
WATCHER_PROCESS_EXIT_DEADLINE_MS,
WATCHER_PROCESS_HARD_KILL_DELAY_MS
} from './filesystem/watcher-process/parcel-watcher-child-termination'
} from './parcel-watcher-child-termination'
import {
acknowledgeWatcherSubscribe as ackSubscribe,
currentWatcherChild,
@@ -5,7 +5,7 @@ import type {
WatcherProcessHooks,
WatcherProcessSubscription
} from './parcel-watcher-process-subscription'
import { RuntimeWatcherProcessPool } from './runtime-watcher-process-pool'
import { RuntimeWatcherProcessPool } from '../../runtime-watcher-process-pool'
const sharedWatcherProcessSupervisor = new WatcherProcessSupervisor()
// Healthy roots share a child; quarantine adds isolation only after faults to limit RSS.
@@ -6,7 +6,7 @@ import {
createAliasedWatcherRoot,
removeAliasedWatcherRoot,
type AliasedWatcherRoot
} from './watcher-aliased-root-fixture'
} from '../../watcher-aliased-root-fixture'
import {
acknowledgeWatcherSubscribe,
currentWatcherChild,
@@ -2,9 +2,9 @@ import { statSync, watch, type FSWatcher } from 'node:fs'
import { stat } from 'node:fs/promises'
import { join } from 'node:path'
import type { Event as ParcelWatcherEvent } from '@parcel/watcher'
import { startShallowFileWatcher } from './parcel-watcher-shallow-file-subscription'
import { closeFileSystemWatcher } from './rebinding-file-watch'
import { watcherDirectoryIdentity } from './watcher-directory-identity'
import { startShallowFileWatcher } from '../../parcel-watcher-shallow-file-subscription'
import { closeFileSystemWatcher } from '../../rebinding-file-watch'
import { watcherDirectoryIdentity } from '../../watcher-directory-identity'
export type ShallowWatcherSubscription = {
unsubscribe: () => Promise<void>
@@ -3,7 +3,7 @@ import {
MAX_PHYSICAL_WATCHER_CHILDREN,
reserveWatcherChild,
resetWatcherChildRegistryForTest
} from './filesystem/watcher-process/parcel-watcher-child-registry'
} from './parcel-watcher-child-registry'
import { WatcherSupervisorCapacityWait } from './parcel-watcher-supervisor-capacity-wait'
describe('WatcherSupervisorCapacityWait', () => {
@@ -1,9 +1,9 @@
import {
onWatcherChildCapacityAvailable,
WatcherChildCapacityError
} from './filesystem/watcher-process/parcel-watcher-child-registry'
} from './parcel-watcher-child-registry'
import { watcherHostFailure, WatcherProcessFailure } from './parcel-watcher-process-failure'
import { PromiseSettlementWaiters } from '../../shared/promise-settlement-waiters'
import { PromiseSettlementWaiters } from '../../../../shared/promise-settlement-waiters'
type CapacityWaitState = {
waiters: PromiseSettlementWaiters<void>
@@ -1,9 +1,9 @@
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
import { WATCHER_PROCESS_EXIT_DEADLINE_MS } from './filesystem/watcher-process/parcel-watcher-child-termination'
import { WATCHER_PROCESS_EXIT_DEADLINE_MS } from './parcel-watcher-child-termination'
import {
MAX_PHYSICAL_WATCHER_CHILDREN,
resetWatcherChildRegistryForTest
} from './filesystem/watcher-process/parcel-watcher-child-registry'
} from './parcel-watcher-child-registry'
import {
acknowledgeWatcherSubscribe,
currentWatcherChild,
@@ -1,6 +1,6 @@
import { afterEach, beforeEach, expect, it, vi } from 'vitest'
import { acknowledgeWatcherSubscribe, FakeWatcherChild } from './parcel-watcher-process-test-child'
import { resetWatcherChildRegistryForTest } from './filesystem/watcher-process/parcel-watcher-child-registry'
import { resetWatcherChildRegistryForTest } from './parcel-watcher-child-registry'
const { forkMock } = vi.hoisted(() => ({ forkMock: vi.fn() }))
vi.mock('node:child_process', () => ({ fork: forkMock }))
@@ -1,6 +1,6 @@
import type { ChildProcess } from 'node:child_process'
import { removeWatcherCanaryDirectory } from './parcel-watcher-canary-directory'
import type { WatcherCancellationTracker } from './filesystem/watcher-process/parcel-watcher-cancellation-tracker'
import type { WatcherCancellationTracker } from './parcel-watcher-cancellation-tracker'
import {
type PendingWatcherUnsubscribe,
resolvePendingWatcherUnsubscribes
@@ -8,8 +8,8 @@ import {
import {
resetPendingSubscribeAttempt,
takePendingSubscribe
} from './filesystem/watcher-process/parcel-watcher-pending-subscribe'
import { signalWatcherChild } from './filesystem/watcher-process/parcel-watcher-child-termination'
} from './parcel-watcher-pending-subscribe'
import { signalWatcherChild } from './parcel-watcher-child-termination'
import { watcherHostFailure } from './parcel-watcher-process-failure'
import type { WatcherProcessSubscriptionRecord } from './parcel-watcher-process-subscription'
@@ -1,5 +1,5 @@
import type { ChildProcess } from 'node:child_process'
import type { WatcherCancellationTracker } from './filesystem/watcher-process/parcel-watcher-cancellation-tracker'
import type { WatcherCancellationTracker } from './parcel-watcher-cancellation-tracker'
import {
handleWatcherHostMessage,
type PendingWatcherUnsubscribe,
@@ -9,7 +9,7 @@ import {
import {
startInterruptedSubscribeTimeout,
startPendingSubscribeTimeout
} from './filesystem/watcher-process/parcel-watcher-pending-subscribe'
} from './parcel-watcher-pending-subscribe'
import { WatcherProcessFailure } from './parcel-watcher-process-failure'
import type { WatcherToHostMessage } from './parcel-watcher-process-protocol'
import type { WatcherProcessSubscriptionRecord } from './parcel-watcher-process-subscription'
@@ -1,15 +1,18 @@
import type { ChildProcess } from 'node:child_process'
import { existsSync } from 'node:fs'
import { sendToWatcherChild } from './filesystem/watcher-process/parcel-watcher-child-messaging'
import { sendToWatcherChild } from './parcel-watcher-child-messaging'
import { createHostWatcherSubscription } from './parcel-watcher-host-subscriptions'
import type { PendingWatcherUnsubscribe } from './parcel-watcher-host-subscriptions'
import { subscribeWithInProcessWatcher } from './parcel-watcher-in-process-fallback'
import {
installPendingSubscribeControls,
resetPendingSubscribeAttempt
} from './filesystem/watcher-process/parcel-watcher-pending-subscribe'
} from './parcel-watcher-pending-subscribe'
import { WatcherProcessFailure } from './parcel-watcher-process-failure'
import { rewriteWatcherEvents, resolveWatcherRootPaths } from './watcher-event-root-path-rewrite'
import {
rewriteWatcherEvents,
resolveWatcherRootPaths
} from '../../watcher-event-root-path-rewrite'
import type {
HostToWatcherMessage,
WatcherProcessSubscribeOptions
@@ -1,5 +1,5 @@
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
import { WATCHER_PROCESS_EXIT_DEADLINE_MS } from './filesystem/watcher-process/parcel-watcher-child-termination'
import { WATCHER_PROCESS_EXIT_DEADLINE_MS } from './parcel-watcher-child-termination'
import { WATCHER_PROCESS_UNSUBSCRIBE_TIMEOUT_MS } from './parcel-watcher-host-subscriptions'
import {
acknowledgeWatcherSubscribe as ackSubscribe,
@@ -1,10 +1,10 @@
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
import { CRASH_FUSE_COOLDOWN_INITIAL_MS } from './parcel-watcher-crash-fuse'
import { CRASH_FUSE_COOLDOWN_INITIAL_MS } from './filesystem/watcher-process/parcel-watcher-crash-fuse'
import {
acknowledgeWatcherSubscribe as ackSubscribe,
currentWatcherChild,
FakeWatcherChild as FakeChild
} from './parcel-watcher-process-test-child'
} from './filesystem/watcher-process/parcel-watcher-process-test-child'
const { forkMock, existsSyncMock } = vi.hoisted(() => ({
forkMock: vi.fn(),
@@ -18,7 +18,7 @@ vi.mock('node:fs', () => ({
rmSync: vi.fn()
}))
import { createWatcherProcessSupervisor } from './parcel-watcher-process'
import { createWatcherProcessSupervisor } from './filesystem/watcher-process/parcel-watcher-process'
const currentChild = (): FakeChild => currentWatcherChild(forkMock)
@@ -4,7 +4,7 @@ import { type FSWatcher, mkdtempSync, rmSync, watch, writeFileSync } from 'node:
import { tmpdir } from 'node:os'
import { join } from 'node:path'
import type * as ParcelWatcher from '@parcel/watcher'
import { loadParcelWatcher } from './parcel-watcher-module-loader'
import { loadParcelWatcher } from './filesystem/watcher-process/parcel-watcher-module-loader'
import { hasShallowWatchDelivered, noteShallowWatchDelivered } from './shallow-watch-delivery-probe'
import { errorMessage } from '../../shared/error-message'
@@ -3,7 +3,7 @@ import {
acknowledgeWatcherSubscribe as ackSubscribe,
currentWatcherChild,
FakeWatcherChild as FakeChild
} from './parcel-watcher-process-test-child'
} from './filesystem/watcher-process/parcel-watcher-process-test-child'
const { forkMock, existsSyncMock } = vi.hoisted(() => ({
forkMock: vi.fn(),
@@ -21,10 +21,10 @@ import {
CANARY_STALL_BACKOFF_INITIAL_MS,
CANARY_STALL_BACKOFF_MAX_MS
} from './parcel-watcher-delivery-canary'
import { WatcherProcessCrashFuse } from './parcel-watcher-crash-fuse'
import { WatcherProcessCrashFuse } from './filesystem/watcher-process/parcel-watcher-crash-fuse'
import { WatcherDeliveryHealthMonitor } from './parcel-watcher-delivery-health'
import type { WatcherProcessSubscriptionRecord } from './parcel-watcher-process-subscription'
import { createWatcherProcessSupervisor } from './parcel-watcher-process'
import type { WatcherProcessSubscriptionRecord } from './filesystem/watcher-process/parcel-watcher-process-subscription'
import { createWatcherProcessSupervisor } from './filesystem/watcher-process/parcel-watcher-process'
describe('watcher delivery stall reporting', () => {
beforeEach(() => {
@@ -1,10 +1,10 @@
import type { WatcherProcessCrashFuse } from './parcel-watcher-crash-fuse'
import type { WatcherProcessCrashFuse } from './filesystem/watcher-process/parcel-watcher-crash-fuse'
import {
CANARY_STALL_BACKOFF_INITIAL_MS,
CANARY_STALL_BACKOFF_MAX_MS,
type WatcherDeliveryHealth
} from './parcel-watcher-delivery-canary'
import type { WatcherProcessSubscriptionRecord } from './parcel-watcher-process-subscription'
import type { WatcherProcessSubscriptionRecord } from './filesystem/watcher-process/parcel-watcher-process-subscription'
/** Rescan roots during OS event stalls with backoff, then once on recovery; the child keeps its streams. */
export class WatcherDeliveryHealthMonitor {
@@ -7,7 +7,7 @@ import {
MISSING_FILE_SWEEP_INTERVAL_MS,
startShallowFileWatcher
} from './parcel-watcher-shallow-file-subscription'
import type { ShallowWatcherSubscription } from './parcel-watcher-shallow-subscription'
import type { ShallowWatcherSubscription } from './filesystem/watcher-process/parcel-watcher-shallow-subscription'
let commonDir: string
let subscription: ShallowWatcherSubscription | null
@@ -1,7 +1,7 @@
import { statSync } from 'node:fs'
import { join } from 'node:path'
import type { Event as ParcelWatcherEvent } from '@parcel/watcher'
import type { ShallowWatcherSubscription } from './parcel-watcher-shallow-subscription'
import type { ShallowWatcherSubscription } from './filesystem/watcher-process/parcel-watcher-shallow-subscription'
import { watchFileAcrossReplacement, type RebindingFileWatch } from './rebinding-file-watch'
// Rebind missed replacements; Git metadata polling provides the shorter staleness backstop.
@@ -1,5 +1,5 @@
import { WatcherProcessFailure } from './parcel-watcher-process-failure'
import type { WatcherProcessHooks } from './parcel-watcher-process-subscription'
import { WatcherProcessFailure } from './filesystem/watcher-process/parcel-watcher-process-failure'
import type { WatcherProcessHooks } from './filesystem/watcher-process/parcel-watcher-process-subscription'
import { PromiseSettlementWaiters } from '../../shared/promise-settlement-waiters'
const DEFAULT_QUARANTINE_WAIT_TIMEOUT_MS = 60_000
@@ -1,4 +1,4 @@
import { WatcherProcessFailure } from './parcel-watcher-process-failure'
import { WatcherProcessFailure } from './filesystem/watcher-process/parcel-watcher-process-failure'
export class RuntimeWatcherPoolLifecycle {
readonly isolatedRoots = new Set<string>()
@@ -1,7 +1,7 @@
import { expect, it, vi } from 'vitest'
import { RuntimeWatcherProcessPool } from './runtime-watcher-process-pool'
import type { WatcherProcessHooks } from './parcel-watcher-process-subscription'
import { WatcherProcessFailure } from './parcel-watcher-process-failure'
import type { WatcherProcessHooks } from './filesystem/watcher-process/parcel-watcher-process-subscription'
import { WatcherProcessFailure } from './filesystem/watcher-process/parcel-watcher-process-failure'
function supervisor() {
const pending = Promise.withResolvers<void>()
+1 -1
View File
@@ -1,4 +1,4 @@
import type { WatcherProcessSupervisor } from './parcel-watcher-process-supervisor'
import type { WatcherProcessSupervisor } from './filesystem/watcher-process/parcel-watcher-process-supervisor'
export type RuntimeWatcherPoolSupervisor = Pick<WatcherProcessSupervisor, 'dispose' | 'subscribe'> &
Partial<Pick<WatcherProcessSupervisor, 'disposeAndWait'>>
@@ -1,4 +1,4 @@
import type { WatcherProcessFailure } from './parcel-watcher-process-failure'
import type { WatcherProcessFailure } from './filesystem/watcher-process/parcel-watcher-process-failure'
/** Retain exact failed-child ownership until its native handles are gone. */
export class RuntimeWatcherPredecessorBarriers {
@@ -1,11 +1,11 @@
import { beforeEach, describe, expect, it, vi } from 'vitest'
import { WatcherProcessFailure } from './parcel-watcher-process-failure'
import type { WatcherProcessSubscribeOptions } from './parcel-watcher-process-protocol'
import { WatcherProcessFailure } from './filesystem/watcher-process/parcel-watcher-process-failure'
import type { WatcherProcessSubscribeOptions } from './filesystem/watcher-process/parcel-watcher-process-protocol'
import type {
WatcherProcessCallback,
WatcherProcessHooks,
WatcherProcessSubscription
} from './parcel-watcher-process-subscription'
} from './filesystem/watcher-process/parcel-watcher-process-subscription'
import { RuntimeWatcherProcessPool } from './runtime-watcher-process-pool'
type InstalledSubscription = {
+8 -8
View File
@@ -1,11 +1,11 @@
import { isWatcherProcessFailure, WatcherProcessFailure } from './parcel-watcher-process-failure'
import { WatcherProcessSupervisor } from './parcel-watcher-process-supervisor'
import type { WatcherProcessSubscribeOptions } from './parcel-watcher-process-protocol'
import * as failures from './filesystem/watcher-process/parcel-watcher-process-failure'
import { WatcherProcessSupervisor } from './filesystem/watcher-process/parcel-watcher-process-supervisor'
import type { WatcherProcessSubscribeOptions } from './filesystem/watcher-process/parcel-watcher-process-protocol'
import type {
WatcherProcessCallback,
WatcherProcessHooks,
WatcherProcessSubscription
} from './parcel-watcher-process-subscription'
} from './filesystem/watcher-process/parcel-watcher-process-subscription'
import { RuntimeWatcherPendingAssignment } from './runtime-watcher-pending-assignment'
import { RuntimeWatcherDisposalOwners } from './runtime-watcher-disposal-owners'
import { RuntimeWatcherPoolLifecycle } from './runtime-watcher-pool-lifecycle'
@@ -105,7 +105,7 @@ export class RuntimeWatcherProcessPool {
unsubscribePromise ??= subscription.unsubscribe().then(
() => releaseAssignment(),
(error: unknown) => {
if (isWatcherProcessFailure(error) && error.scope === 'supervisor') {
if (failures.isWatcherProcessFailure(error) && error.scope === 'supervisor') {
this.retireSlot(slot, error)
} else {
releaseAssignment()
@@ -121,7 +121,7 @@ export class RuntimeWatcherProcessPool {
/** Kill every pooled watcher child (production shutdown or test reset). */
dispose(): void {
this.lifecycle.dispose()
const disposedError = new WatcherProcessFailure(
const disposedError = new failures.WatcherProcessFailure(
'file watcher supervisor disposed',
'supervisor',
'supervisor_disposed'
@@ -163,7 +163,7 @@ export class RuntimeWatcherProcessPool {
): RuntimeWatcherPoolAssignment | Promise<RuntimeWatcherPoolAssignment> {
this.predecessorBarriers.throwIfRetained(dir)
if (this.lifecycle.failedQuarantineRoots.has(dir)) {
throw new WatcherProcessFailure(
throw new failures.WatcherProcessFailure(
'file watcher process failed again in quarantine',
'supervisor',
'supervisor_crash_fuse'
@@ -253,7 +253,7 @@ export class RuntimeWatcherProcessPool {
return slot
}
private retireSlot(slot: RuntimeWatcherPoolSlot, error: WatcherProcessFailure): void {
private retireSlot(slot: RuntimeWatcherPoolSlot, error: failures.WatcherProcessFailure): void {
if (slot.retired) {
return
}
@@ -1,4 +1,4 @@
import { WatcherProcessFailure } from './parcel-watcher-process-failure'
import { WatcherProcessFailure } from './filesystem/watcher-process/parcel-watcher-process-failure'
type QuarantineWaiter<T> = {
dir: string
@@ -1,7 +1,7 @@
import {
isWatcherProcessFailure,
type WatcherProcessFailure
} from './parcel-watcher-process-failure'
} from './filesystem/watcher-process/parcel-watcher-process-failure'
export function handleRuntimeWatcherSubscriptionFailure(
error: unknown,
@@ -1,7 +1,7 @@
import { stat } from 'node:fs/promises'
import { join } from 'node:path'
import { subscribeViaWatcherProcess } from './parcel-watcher-process'
import { isWatcherProcessFailure } from './parcel-watcher-process-failure'
import { subscribeViaWatcherProcess } from './filesystem/watcher-process/parcel-watcher-process'
import { isWatcherProcessFailure } from './filesystem/watcher-process/parcel-watcher-process-failure'
import type { WorktreeBaseWatchTarget } from './worktree-base-directory-event-filter'
import type {
WorktreeBasePollEvent,
@@ -1,5 +1,5 @@
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
import { WatcherProcessFailure } from './parcel-watcher-process-failure'
import { WatcherProcessFailure } from './filesystem/watcher-process/parcel-watcher-process-failure'
import { GIT_COMMON_NATIVE_UPGRADE_INTERVAL_MS } from './worktree-git-common-native-upgrade-poll'
const { pollingMock, statMock, subscribeMock } = vi.hoisted(() => ({
@@ -9,7 +9,9 @@ const { pollingMock, statMock, subscribeMock } = vi.hoisted(() => ({
}))
vi.mock('node:fs/promises', () => ({ stat: statMock }))
vi.mock('./parcel-watcher-process', () => ({ subscribeViaWatcherProcess: subscribeMock }))
vi.mock('./filesystem/watcher-process/parcel-watcher-process', () => ({
subscribeViaWatcherProcess: subscribeMock
}))
vi.mock('./worktree-git-common-polling', () => ({ startGitCommonPolling: pollingMock }))
import { startGitCommonNarrowWatch } from './worktree-git-common-narrow-watch'
@@ -1,4 +1,4 @@
import { CRASH_FUSE_COOLDOWN_INITIAL_MS } from './parcel-watcher-crash-fuse'
import { CRASH_FUSE_COOLDOWN_INITIAL_MS } from './filesystem/watcher-process/parcel-watcher-crash-fuse'
// Retry when the crash fuse half-opens so fallback polling does not remain permanent until restart.
export const GIT_COMMON_NATIVE_UPGRADE_INTERVAL_MS = CRASH_FUSE_COOLDOWN_INITIAL_MS
@@ -1,6 +1,6 @@
import { join } from 'node:path'
import { subscribeViaWatcherProcess } from './parcel-watcher-process'
import type { WatcherProcessSubscription } from './parcel-watcher-process-subscription'
import { subscribeViaWatcherProcess } from './filesystem/watcher-process/parcel-watcher-process'
import type { WatcherProcessSubscription } from './filesystem/watcher-process/parcel-watcher-process-subscription'
import type {
WorktreeBasePollEvent,
WorktreeBaseSubscription,
@@ -1,7 +1,7 @@
import { join, resolve } from 'node:path'
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
import { subscribeViaWatcherProcess } from './parcel-watcher-process'
import type { WatcherProcessCallback } from './parcel-watcher-process-subscription'
import { subscribeViaWatcherProcess } from './filesystem/watcher-process/parcel-watcher-process'
import type { WatcherProcessCallback } from './filesystem/watcher-process/parcel-watcher-process-subscription'
import { startGitCommonPolling } from './worktree-git-common-polling'
import { startGitCommonNarrowWatch } from './worktree-git-common-narrow-watch'
import { createGitCommonWatchReconciliation } from './worktree-git-common-watch-reconciliation'
@@ -11,7 +11,9 @@ import type {
} from './worktree-base-directory-poller'
vi.mock('node:fs/promises', () => ({ stat: vi.fn(async () => ({ isDirectory: () => true })) }))
vi.mock('./parcel-watcher-process', () => ({ subscribeViaWatcherProcess: vi.fn() }))
vi.mock('./filesystem/watcher-process/parcel-watcher-process', () => ({
subscribeViaWatcherProcess: vi.fn()
}))
vi.mock('./worktree-git-common-polling', () => ({ startGitCommonPolling: vi.fn() }))
const commonDirPath = resolve('repository', '.git')
@@ -5,12 +5,12 @@ import { performance as nodePerformance } from 'node:perf_hooks'
import { updateActiveGitStatusRefBinding } from './worktree-git-status-ref-watch'
import { tmpdir } from 'node:os'
import { join } from 'node:path'
import { subscribeViaWatcherProcess } from './parcel-watcher-process'
import { WatcherProcessFailure } from './parcel-watcher-process-failure'
import { subscribeViaWatcherProcess } from './filesystem/watcher-process/parcel-watcher-process'
import { WatcherProcessFailure } from './filesystem/watcher-process/parcel-watcher-process-failure'
import type {
WatcherProcessCallback,
WatcherProcessHooks
} from './parcel-watcher-process-subscription'
} from './filesystem/watcher-process/parcel-watcher-process-subscription'
import type { WorktreeBaseWatchTarget } from './worktree-base-directory-event-filter'
import type {
WorktreeBasePollEvent,
@@ -18,7 +18,7 @@ import type {
} from './worktree-base-directory-poller'
import { startGitCommonWatch } from './worktree-git-common-watch'
vi.mock('./parcel-watcher-process', () => ({
vi.mock('./filesystem/watcher-process/parcel-watcher-process', () => ({
subscribeViaWatcherProcess: vi.fn()
}))
const { statCalls } = vi.hoisted(() => ({ statCalls: [] as string[] }))
+1 -1
View File
@@ -1,6 +1,6 @@
import type { ChildProcessWithoutNullStreams } from 'node:child_process'
import { PhysicalExitTracker } from '../../shared/physical-exit-tracker'
import { WatcherProcessFailure } from './parcel-watcher-process-failure'
import { WatcherProcessFailure } from './filesystem/watcher-process/parcel-watcher-process-failure'
export const WSL_WATCHER_PHYSICAL_EXIT_TIMEOUT_MS = 8_000
+2 -1
View File
@@ -126,7 +126,8 @@ async function startOrcadRuntime(
const { AgentStatusObservedPaneIdentities, AgentStatusObservedPaneIdentityCapture } =
await import('../runtime/agent-status-observed-pane-identity')
const { disposeWatcherProcessAndWait } = await import('../ipc/parcel-watcher-process')
const { disposeWatcherProcessAndWait } =
await import('../ipc/filesystem/watcher-process/parcel-watcher-process')
let paneGridsForShutdown: { flushPaneGrids(): Promise<void> | null } | null = null
let profileStoreForShutdown:
@@ -3,7 +3,7 @@ import { tmpdir } from 'node:os'
import { join } from 'node:path'
import { afterEach, beforeEach, describe, expect, it } from 'vitest'
import { getAppEnvironment } from '../../shared/app-environment'
import { getWatcherProcessEntryPath } from '../ipc/parcel-watcher-entry-path'
import { getWatcherProcessEntryPath } from '../ipc/filesystem/watcher-process/parcel-watcher-entry-path'
import {
AI_VAULT_SERVICE_ENTRY_FILENAME,
getAiVaultServiceEntryPath
@@ -3,7 +3,7 @@ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
import type {
WatcherProcessCallback,
WatcherProcessHooks
} from '../ipc/parcel-watcher-process-subscription'
} from '../ipc/filesystem/watcher-process/parcel-watcher-process-subscription'
import { PtySpawnHealthTimeoutError } from '../daemon/pty-subprocess/spawn-preflight'
import { preflightOrcadNativeRuntime } from './orcad-runtime-native-preflight'
import { WindowsProcessTableTimeoutError } from '../windows/windows-process-table-timeout-error'
@@ -41,7 +41,7 @@ vi.mock('node:fs/promises', () => ({
writeFile: fixture.write,
rm: fixture.remove
}))
vi.mock('../ipc/parcel-watcher-process-supervisor', () => ({
vi.mock('../ipc/filesystem/watcher-process/parcel-watcher-process-supervisor', () => ({
WatcherProcessSupervisor: class {
subscribe = fixture.subscribe
dispose = fixture.dispose
@@ -6,8 +6,8 @@ import {
PTY_SPAWN_HEALTH_TIMEOUT_MS,
runPtySpawnHealthProbe
} from '../daemon/pty-subprocess/spawn-preflight'
import { WatcherProcessSupervisor } from '../ipc/parcel-watcher-process-supervisor'
import { resolveWatcherProcessEntryPath } from '../ipc/parcel-watcher-entry-path'
import { WatcherProcessSupervisor } from '../ipc/filesystem/watcher-process/parcel-watcher-process-supervisor'
import { resolveWatcherProcessEntryPath } from '../ipc/filesystem/watcher-process/parcel-watcher-entry-path'
import { resolveOrcadInstallRoot } from './orcad-app-paths'
import {
isWindowsProcessTableAvailable,
@@ -2,7 +2,7 @@ import { mkdtemp, mkdir, rm, symlink, truncate, writeFile } from 'node:fs/promis
import { tmpdir } from 'node:os'
import { join } from 'node:path'
import { afterEach, describe, expect, it, vi } from 'vitest'
import { disposeWatcherProcess } from '../ipc/parcel-watcher-process'
import { disposeWatcherProcess } from '../ipc/filesystem/watcher-process/parcel-watcher-process'
import { fingerprintPluginConsent } from '../../shared/plugins/plugin-consent-fingerprint'
import { pluginManifestSchema, type PluginManifest } from '../../shared/plugins/plugin-manifest'
import {
@@ -4,8 +4,8 @@ import { mkdir, rename, rm, stat, symlink } from 'node:fs/promises'
import type * as FsPromises from 'node:fs/promises'
import { join } from 'node:path'
import { afterEach, beforeEach, expect, it, vi } from 'vitest'
import { subscribeViaWatcherProcess } from '../ipc/parcel-watcher-process'
import type { WatcherProcessCallback } from '../ipc/parcel-watcher-process-subscription'
import { subscribeViaWatcherProcess } from '../ipc/filesystem/watcher-process/parcel-watcher-process'
import type { WatcherProcessCallback } from '../ipc/filesystem/watcher-process/parcel-watcher-process-subscription'
import {
createAliasedWatcherRoot,
removeAliasedWatcherRoot,
@@ -15,7 +15,9 @@ import { watcherDirectoryIdentity } from '../ipc/watcher-directory-identity'
import { PluginDevWatcher } from './plugin-dev-watcher'
import { PluginServiceHousekeeping } from './plugin-service-housekeeping'
vi.mock('../ipc/parcel-watcher-process', () => ({ subscribeViaWatcherProcess: vi.fn() }))
vi.mock('../ipc/filesystem/watcher-process/parcel-watcher-process', () => ({
subscribeViaWatcherProcess: vi.fn()
}))
vi.mock('node:fs', async () => {
const actual = await vi.importActual<typeof Fs>('node:fs')
return { ...actual, statSync: vi.fn(actual.statSync) }
+6 -4
View File
@@ -4,12 +4,12 @@ import type * as Fs from 'node:fs'
import { mkdir, realpath, rename, rm, stat, symlink, writeFile } from 'node:fs/promises'
import type * as FsPromises from 'node:fs/promises'
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
import { subscribeViaWatcherProcess } from '../ipc/parcel-watcher-process'
import { subscribeViaWatcherProcess } from '../ipc/filesystem/watcher-process/parcel-watcher-process'
import type {
WatcherProcessCallback,
WatcherProcessHooks
} from '../ipc/parcel-watcher-process-subscription'
import type { WatcherProcessSubscribeOptions } from '../ipc/parcel-watcher-process-protocol'
} from '../ipc/filesystem/watcher-process/parcel-watcher-process-subscription'
import type { WatcherProcessSubscribeOptions } from '../ipc/filesystem/watcher-process/parcel-watcher-process-protocol'
import {
createAliasedWatcherRoot as createNativeAliasedWatcherRoot,
removeAliasedWatcherRoot,
@@ -18,7 +18,9 @@ import {
import { PluginDevWatcher } from './plugin-dev-watcher'
import { PluginServiceHousekeeping } from './plugin-service-housekeeping'
vi.mock('../ipc/parcel-watcher-process', () => ({ subscribeViaWatcherProcess: vi.fn() }))
vi.mock('../ipc/filesystem/watcher-process/parcel-watcher-process', () => ({
subscribeViaWatcherProcess: vi.fn()
}))
vi.mock('node:fs', async () => {
const actual = await vi.importActual<typeof Fs>('node:fs')
return { ...actual, statSync: vi.fn(actual.statSync) }
+3 -3
View File
@@ -1,9 +1,9 @@
import { realpathSync, statSync, type BigIntStats } from 'node:fs'
import { realpath, stat } from 'node:fs/promises'
import { basename, dirname, resolve } from 'node:path'
import { subscribeViaWatcherProcess } from '../ipc/parcel-watcher-process'
import type { WatcherProcessSubscribeOptions } from '../ipc/parcel-watcher-process-protocol'
import type { WatcherProcessSubscription } from '../ipc/parcel-watcher-process-subscription'
import { subscribeViaWatcherProcess } from '../ipc/filesystem/watcher-process/parcel-watcher-process'
import type { WatcherProcessSubscribeOptions } from '../ipc/filesystem/watcher-process/parcel-watcher-process-protocol'
import type { WatcherProcessSubscription } from '../ipc/filesystem/watcher-process/parcel-watcher-process-subscription'
import { resolveWatcherRootPaths } from '../ipc/watcher-event-root-path-rewrite'
import { watcherDirectoryIdentity } from '../ipc/watcher-directory-identity'
+3 -3
View File
@@ -4,8 +4,8 @@ import type {
WatcherProcessCallback,
WatcherProcessHooks,
WatcherProcessSubscription
} from '../ipc/parcel-watcher-process-subscription'
import { WatcherProcessFailure } from '../ipc/parcel-watcher-process-failure'
} from '../ipc/filesystem/watcher-process/parcel-watcher-process-subscription'
import { WatcherProcessFailure } from '../ipc/filesystem/watcher-process/parcel-watcher-process-failure'
import {
WATCHER_IGNORE_DIRS,
buildParcelWatcherIgnoreOptions
@@ -21,7 +21,7 @@ const {
subscribeViaRuntimeWatcherProcessMock: vi.fn()
}))
vi.mock('../ipc/parcel-watcher-process', () => ({
vi.mock('../ipc/filesystem/watcher-process/parcel-watcher-process', () => ({
forgetRuntimeWatcherProcessRoot: forgetRuntimeWatcherProcessRootMock,
resetRuntimeWatcherProcessForTest: resetRuntimeWatcherProcessForTestMock,
subscribeViaRuntimeWatcherProcess: subscribeViaRuntimeWatcherProcessMock
+4 -4
View File
@@ -3,13 +3,13 @@ import {
forgetRuntimeWatcherProcessRoot,
resetRuntimeWatcherProcessForTest,
subscribeViaRuntimeWatcherProcess
} from '../ipc/parcel-watcher-process'
import type { WatcherProcessEvent } from '../ipc/parcel-watcher-process-protocol'
import type { WatcherProcessSubscription } from '../ipc/parcel-watcher-process-subscription'
} from '../ipc/filesystem/watcher-process/parcel-watcher-process'
import type { WatcherProcessEvent } from '../ipc/filesystem/watcher-process/parcel-watcher-process-protocol'
import type { WatcherProcessSubscription } from '../ipc/filesystem/watcher-process/parcel-watcher-process-subscription'
import {
isWatcherProcessFailure,
type WatcherProcessFailure
} from '../ipc/parcel-watcher-process-failure'
} from '../ipc/filesystem/watcher-process/parcel-watcher-process-failure'
import {
WATCHER_IGNORE_DIRS,
buildParcelWatcherIgnoreOptions
@@ -1,5 +1,5 @@
import { normalizeRuntimePathForComparison } from '../../../../shared/cross-platform-path'
import { isWatcherProcessFailure } from '../../../ipc/parcel-watcher-process-failure'
import { isWatcherProcessFailure } from '../../../ipc/filesystem/watcher-process/parcel-watcher-process-failure'
const pendingRuntimeFileWatcherUnsubscribes = new Set<Promise<void>>()
@@ -1,7 +1,7 @@
import type { FsChangeEvent } from '../../../../shared/filesystem-entry-types'
import { PhysicalExitTracker } from '../../../../shared/physical-exit-tracker'
import { watch as watchFs } from 'node:fs'
import { WatcherProcessFailure } from '../../../ipc/parcel-watcher-process-failure'
import { WatcherProcessFailure } from '../../../ipc/filesystem/watcher-process/parcel-watcher-process-failure'
import { watchBatchFlushDelayMs } from '../../../../shared/filesystem-watch-batch-window'
// Why: each emit is a whole-tree overflow refresh, so pace it slower than precise watcher batches.

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