refactor: group WSL and Orcad migration owners (#41148)

This commit is contained in:
Neil
2026-11-11 04:44:42 -08:00
committed by GitHub
parent 8a60eb6ef4
commit f6b86ecf62
360 changed files with 1851 additions and 4395 deletions
-13
View File
@@ -35,7 +35,6 @@ on:
- '!**/*.test.ts'
- '!**/*.test.tsx'
- 'src/main/wsl/orcad/wsl-orcad-real-distro-lane.test.ts'
- 'src/main/persistence/moving-wsl-projects/wsl-move-real-pause.test.ts'
- 'src/main/wsl/orcad/wsl-orcad-real-distro-idle-release-lane.test.ts'
- '.github/workflows/wsl-orcad-e2e.yml'
- 'config/ci/wsl-lifecycle/**'
@@ -343,18 +342,6 @@ jobs:
run: |
node node_modules/vitest/vitest.mjs run --config config/vitest.config.ts src/main/wsl/orcad/wsl-orcad-real-distro-lane.test.ts --reporter=verbose 2>&1 | Tee-Object (Join-Path $env:ORCA_WSL_ORCAD_LANE_RECEIPTS 'survive.log')
if ($global:LASTEXITCODE -ne 0) { throw "survive phase failed: $global:LASTEXITCODE" }
# The WSL move's pause on real distro shells: Sleep ends them, the daemon proves the exit,
# the journal keeps each pane's folder, and a new shell opens there.
- name: 'WSL move: pause real distro terminals'
if: ${{ !cancelled() && steps.import.outcome == 'success' }}
timeout-minutes: 10
env:
ORCA_WSL_MOVE_REAL_PAUSE_DISTRO: ${{ env.PLAIN_DISTRO }}
run: |
New-Item -ItemType Directory -Force $env:ORCA_WSL_ORCAD_LANE_RECEIPTS | Out-Null
node node_modules/vitest/vitest.mjs run --config config/vitest.config.ts src/main/persistence/moving-wsl-projects/wsl-move-real-pause.test.ts --reporter=verbose 2>&1 | Tee-Object (Join-Path $env:ORCA_WSL_ORCAD_LANE_RECEIPTS 'wsl-move-real-pause.log')
if ($global:LASTEXITCODE -ne 0) { throw "WSL move real pause failed: $global:LASTEXITCODE" }
wsl.exe --terminate $env:PLAIN_DISTRO
# R40: with no terminal left, orcad idle-exits and the holder lets the distro stop on its own.
- name: 'Phase 3: idle orcad releases the distro'
timeout-minutes: 30
+12 -12
View File
@@ -30,18 +30,18 @@
2 src/main/persistence/loading-store/profile-writing/state-serialization-secret-handling.ts
4 src/main/persistence/loading-store/workspace-sessions/workspace-session-snapshot-publication.ts
4 src/main/persistence/loading-store/workspace-sessions/workspace-session-terminal-binding-replay.ts
2 src/main/persistence/migrating-orcad-catalog/orcad-destination-client-state.ts
1 src/main/persistence/migrating-orcad-catalog/orcad-destination-workspace-session.ts
3 src/main/persistence/migrating-orcad-catalog/orcad-dormant-state-records.ts
1 src/main/persistence/migrating-orcad-catalog/orcad-migration-source-retention.ts
2 src/main/persistence/migrating-orcad-catalog/orcad-source-client-subtraction.ts
1 src/main/persistence/migrating-orcad-catalog/orcad-source-dormant-state.ts
1 src/main/persistence/migrating-orcad-catalog/orcad-source-scrollback-state.ts
1 src/main/persistence/migrating-orcad-catalog/orcad-source-workspace-session-eligibility.ts
3 src/main/persistence/migrating-orcad-catalog/orcad-source-workspace-session-layout.ts
4 src/main/persistence/migrating-orcad-catalog/orcad-source-workspace-session-subtraction.ts
1 src/main/persistence/migrating-orcad-catalog/orcad-source-workspace-session.ts
2 src/main/persistence/moving-wsl-projects/wsl-move-main-rewrite-stores.ts
2 src/main/persistence/migrating-orcad-catalog/destination/orcad-destination-client-state.ts
1 src/main/persistence/migrating-orcad-catalog/destination/orcad-destination-workspace-session.ts
3 src/main/persistence/migrating-orcad-catalog/destination/orcad-dormant-state-records.ts
1 src/main/persistence/migrating-orcad-catalog/retained-source/orcad-migration-source-retention.ts
2 src/main/persistence/migrating-orcad-catalog/source/clients/orcad-source-client-subtraction.ts
1 src/main/persistence/migrating-orcad-catalog/source/dormancy/orcad-source-dormant-state.ts
1 src/main/persistence/migrating-orcad-catalog/source/scrollback/orcad-source-scrollback-state.ts
1 src/main/persistence/migrating-orcad-catalog/source/sessions/orcad-source-workspace-session-eligibility.ts
3 src/main/persistence/migrating-orcad-catalog/source/sessions/orcad-source-workspace-session-layout.ts
4 src/main/persistence/migrating-orcad-catalog/source/sessions/orcad-source-workspace-session-subtraction.ts
1 src/main/persistence/migrating-orcad-catalog/source/sessions/orcad-source-workspace-session.ts
2 src/main/persistence/moving-wsl-projects/desktop-state/wsl-move-main-rewrite-stores.ts
1 src/main/persistence/restoring-sessions/folder-workspace-operations.ts
1 src/main/persistence/restoring-sessions/invalid-workspace-layout-purge.ts
5 src/main/persistence/restoring-sessions/session-owner-fields.ts
+12 -12
View File
@@ -375,18 +375,18 @@
1 src/main/orcad/serve-profile-ssh-targets.ts
6 src/main/persistence/atomic-snapshot-writer.ts
5 src/main/persistence/loading-store/user-data-path.ts
9 src/main/persistence/migrating-orcad-catalog/migration-journal-directory.ts
4 src/main/persistence/migrating-orcad-catalog/orcad-migration-blob-installers.ts
3 src/main/persistence/migrating-orcad-catalog/orcad-migration-blob-staging.ts
17 src/main/persistence/migrating-orcad-catalog/orcad-migration-staged-file.ts
1 src/main/persistence/migrating-orcad-catalog/orcad-scrollback-snapshot-transfer.ts
11 src/main/persistence/migrating-orcad-catalog/orcad-shell-history-installer.ts
7 src/main/persistence/migrating-orcad-catalog/orcad-terminal-history-installer.ts
1 src/main/persistence/migrating-orcad-catalog/orcad-terminal-restore-hint-store.ts
1 src/main/persistence/moving-wsl-projects/wsl-move-orchestration-history-rewrite.ts
1 src/main/persistence/moving-wsl-projects/wsl-move-orchestrator-store.ts
6 src/main/persistence/moving-wsl-projects/wsl-move-slept-scrollback.ts
2 src/main/persistence/moving-wsl-projects/wsl-move-slept-spool-sweep.ts
9 src/main/persistence/migrating-orcad-catalog/cutover-journals/migration-journal-directory.ts
4 src/main/persistence/migrating-orcad-catalog/blob-transfer/orcad-migration-blob-installers.ts
3 src/main/persistence/migrating-orcad-catalog/blob-transfer/orcad-migration-blob-staging.ts
17 src/main/persistence/migrating-orcad-catalog/blob-transfer/orcad-migration-staged-file.ts
1 src/main/persistence/migrating-orcad-catalog/terminal-history/orcad-scrollback-snapshot-transfer.ts
11 src/main/persistence/migrating-orcad-catalog/terminal-history/orcad-shell-history-installer.ts
7 src/main/persistence/migrating-orcad-catalog/terminal-history/orcad-terminal-history-installer.ts
1 src/main/persistence/migrating-orcad-catalog/terminal-history/orcad-terminal-restore-hint-store.ts
1 src/main/persistence/moving-wsl-projects/desktop-state/wsl-move-orchestration-history-rewrite.ts
1 src/main/persistence/moving-wsl-projects/orchestration/wsl-move-orchestrator-store.ts
6 src/main/persistence/moving-wsl-projects/terminal-state/wsl-move-slept-scrollback.ts
2 src/main/persistence/moving-wsl-projects/terminal-state/wsl-move-slept-spool-sweep.ts
5 src/main/persistence/preferences/active-view-preference.ts
4 src/main/persistence/profile-state/legacy-json/profile-state-authority-exports.ts
2 src/main/persistence/profile-state/legacy-json/profile-state-export-path.ts
+1 -1
View File
@@ -26,7 +26,7 @@
2 src/main/orca-profiles/project-transfer/profile-project-transfer-payload.ts
1 src/main/orca-profiles/project-transfer/profile-project-worktree-identity.ts
1 src/main/persistence/leasing-ssh-ptys/ssh-target-reassignment.ts
1 src/main/persistence/migrating-orcad-catalog/orcad-source-ownership.ts
1 src/main/persistence/migrating-orcad-catalog/source/catalog/orcad-source-ownership.ts
2 src/main/persistence/restoring-sessions/folder-scope-migration.ts
1 src/main/persistence/restoring-sessions/tab-terminal-pane-binding-repair.ts
1 src/main/persistence/tracking-repos/local-worktree-metadata-scan-expectation.ts
@@ -2619,7 +2619,6 @@
"src/main/orca-profiles/project-transfer/profile-project-transfer-migration.test.ts": 1642,
"src/main/orca-profiles/project-transfer/profile-project-transfer.test.ts": 1456,
"src/main/orca-profiles/profile-telemetry-consent-seed.test.ts": 536,
"src/main/persistence/migrating-orcad-catalog/orcad-migration-export-holds.test.ts": 231,
"src/main/orcad/electron-serve-provider-selection.test.ts": 554,
"src/main/orcad/electron-sidecar-tab-registry.test.ts": 105,
"src/main/orcad/external-chromium-browser-session.test.ts": 152,
@@ -2660,9 +2659,8 @@
"src/main/orcad/orcad-startup-qualification.test.ts": 102,
"src/main/orcad/orcad-stop-request-shutdown.integration.test.ts": 293,
"src/main/orcad/orcad-windows-conpty-breakaway.integration.test.ts": 79,
"src/main/persistence/migrating-orcad-catalog/persistence-local-only-worktree-meta.test.ts": 1948,
"src/main/persistence/preferences/persistence-onboarding-language-cohort.test.ts": 1760,
"src/main/persistence/migrating-orcad-catalog/persistence-orcad-migration-wsl-generation-reuse.test.ts": 1658,
"src/main/persistence/migrating-orcad-catalog/catalog-commit/persistence-orcad-migration-wsl-generation-reuse.test.ts": 1658,
"src/main/persistence/applying-settings/persistence-automation-extra-agent-args.test.ts": 2268,
"src/main/persistence/applying-settings/persistence-automation-mode-precondition.test.ts": 1595,
"src/main/persistence/applying-settings/persistence-automations.test.ts": 2573,
@@ -2697,54 +2695,45 @@
"src/main/persistence/loading-store/workspace-sessions/workspace-session-partitions.test.ts": 545,
"src/main/persistence/loading-store/workspace-sessions/workspace-session-terminal-binding-replay.test.ts": 95,
"src/main/persistence/loading-store/worktree-metadata/worktree-meta-write-normalization.test.ts": 127,
"src/main/persistence/migrating-orcad-catalog/migration-journal-directory.test.ts": 91,
"src/main/persistence/migrating-orcad-catalog/orcad-destination-workspace-session.test.ts": 296,
"src/main/persistence/migrating-orcad-catalog/orcad-migration-blob-staging.test.ts": 466,
"src/main/persistence/migrating-orcad-catalog/orcad-scrollback-snapshot-transfer.test.ts": 375,
"src/main/persistence/migrating-orcad-catalog/orcad-source-client-state.test.ts": 518,
"src/main/persistence/migrating-orcad-catalog/orcad-source-export.test.ts": 1898,
"src/main/persistence/migrating-orcad-catalog/orcad-source-ownership.test.ts": 380,
"src/main/persistence/migrating-orcad-catalog/orcad-source-partial-partition.test.ts": 808,
"src/main/persistence/migrating-orcad-catalog/orcad-source-scrollback-state.test.ts": 303,
"src/main/persistence/migrating-orcad-catalog/orcad-source-workspace-session-ambiguity.test.ts": 275,
"src/main/persistence/migrating-orcad-catalog/persistence-orcad-migration-blobs.test.ts": 1840,
"src/main/persistence/migrating-orcad-catalog/persistence-orcad-migration-catalog.test.ts": 2232,
"src/main/persistence/migrating-orcad-catalog/persistence-orcad-migration-received-blob-durability.test.ts": 1796,
"src/main/persistence/migrating-orcad-catalog/persistence-orcad-migration-shell-history-install-safety.test.ts": 1886,
"src/main/persistence/migrating-orcad-catalog/persistence-orcad-migration-shell-history-login-shell.test.ts": 2041,
"src/main/persistence/migrating-orcad-catalog/persistence-orcad-migration-shell-history.test.ts": 2085,
"src/main/persistence/migrating-orcad-catalog/persistence-orcad-migration-terminal-restore-hints.test.ts": 2098,
"src/main/persistence/moving-wsl-projects/wsl-move-cutover-journal.test.ts": 795,
"src/main/persistence/moving-wsl-projects/wsl-move-delta-plan.test.ts": 774,
"src/main/persistence/moving-wsl-projects/wsl-move-driver-commit-reproof.test.ts": 1159,
"src/main/persistence/moving-wsl-projects/wsl-move-driver-fault-injection.test.ts": 7608,
"src/main/persistence/moving-wsl-projects/wsl-move-driver-preview-settle.test.ts": 1031,
"src/main/persistence/moving-wsl-projects/wsl-move-exit-proof.test.ts": 92,
"src/main/persistence/moving-wsl-projects/wsl-move-gate-facts.test.ts": 145,
"src/main/persistence/moving-wsl-projects/wsl-move-gate-stub-agent-hooks.test.ts": 743,
"src/main/persistence/moving-wsl-projects/wsl-move-guest-foreground.test.ts": 260,
"src/main/persistence/moving-wsl-projects/wsl-move-guest-process-table-cost.test.ts": 323,
"src/main/persistence/moving-wsl-projects/wsl-move-manifest-export.test.ts": 863,
"src/main/persistence/migrating-orcad-catalog/cutover-journals/migration-journal-directory.test.ts": 91,
"src/main/persistence/migrating-orcad-catalog/destination/orcad-destination-workspace-session.test.ts": 296,
"src/main/persistence/migrating-orcad-catalog/blob-transfer/orcad-migration-blob-staging.test.ts": 466,
"src/main/persistence/migrating-orcad-catalog/terminal-history/orcad-scrollback-snapshot-transfer.test.ts": 375,
"src/main/persistence/migrating-orcad-catalog/source/clients/orcad-source-client-state.test.ts": 518,
"src/main/persistence/migrating-orcad-catalog/source/catalog/orcad-source-export.test.ts": 1898,
"src/main/persistence/migrating-orcad-catalog/source/catalog/orcad-source-ownership.test.ts": 380,
"src/main/persistence/migrating-orcad-catalog/source/catalog/orcad-source-partial-partition.test.ts": 808,
"src/main/persistence/migrating-orcad-catalog/source/scrollback/orcad-source-scrollback-state.test.ts": 303,
"src/main/persistence/migrating-orcad-catalog/source/sessions/orcad-source-workspace-session-ambiguity.test.ts": 275,
"src/main/persistence/migrating-orcad-catalog/blob-transfer/persistence-orcad-migration-blobs.test.ts": 1840,
"src/main/persistence/migrating-orcad-catalog/catalog-commit/persistence-orcad-migration-catalog.test.ts": 2232,
"src/main/persistence/migrating-orcad-catalog/blob-transfer/persistence-orcad-migration-received-blob-durability.test.ts": 1796,
"src/main/persistence/migrating-orcad-catalog/terminal-history/persistence-orcad-migration-shell-history-install-safety.test.ts": 1886,
"src/main/persistence/migrating-orcad-catalog/terminal-history/persistence-orcad-migration-shell-history-login-shell.test.ts": 2041,
"src/main/persistence/migrating-orcad-catalog/terminal-history/persistence-orcad-migration-shell-history.test.ts": 2085,
"src/main/persistence/migrating-orcad-catalog/terminal-history/persistence-orcad-migration-terminal-restore-hints.test.ts": 2098,
"src/main/persistence/moving-wsl-projects/cutover-recovery/wsl-move-cutover-journal.test.ts": 795,
"src/main/persistence/moving-wsl-projects/manifest-scope/wsl-move-delta-plan.test.ts": 774,
"src/main/persistence/moving-wsl-projects/quiescence/wsl-move-exit-proof.test.ts": 92,
"src/main/persistence/moving-wsl-projects/quiescence/wsl-move-gate-facts.test.ts": 145,
"src/main/persistence/moving-wsl-projects/quiescence/wsl-move-guest-foreground.test.ts": 260,
"src/main/persistence/moving-wsl-projects/manifest-scope/wsl-move-manifest-export.test.ts": 863,
"src/main/persistence/moving-wsl-projects/wsl-move-orchestration-history-rewrite.test.ts": 1245,
"src/main/persistence/moving-wsl-projects/wsl-move-orchestrator-stage1.test.ts": 338,
"src/main/persistence/moving-wsl-projects/wsl-move-orchestrator-user-choices.test.ts": 638,
"src/main/persistence/moving-wsl-projects/orchestration/wsl-move-orchestrator-stage1.test.ts": 338,
"src/main/persistence/moving-wsl-projects/orchestration/wsl-move-orchestrator-user-choices.test.ts": 638,
"src/main/persistence/moving-wsl-projects/wsl-move-orchestrator.test.ts": 567,
"src/main/persistence/moving-wsl-projects/wsl-move-quiesce.test.ts": 413,
"src/main/persistence/moving-wsl-projects/wsl-move-real-pause.test.ts": 1939,
"src/main/persistence/moving-wsl-projects/wsl-move-reset.test.ts": 891,
"src/main/persistence/moving-wsl-projects/wsl-move-retention.test.ts": 2285,
"src/main/persistence/moving-wsl-projects/wsl-move-rewrite-ledger.test.ts": 641,
"src/main/persistence/moving-wsl-projects/wsl-move-scope-guard.test.ts": 639,
"src/main/persistence/moving-wsl-projects/wsl-move-scope.test.ts": 104,
"src/main/persistence/moving-wsl-projects/wsl-move-seeded-view-state.test.ts": 398,
"src/main/persistence/moving-wsl-projects/wsl-move-session-freeze.test.ts": 2013,
"src/main/persistence/moving-wsl-projects/wsl-move-session-rewrite.test.ts": 411,
"src/main/persistence/moving-wsl-projects/wsl-move-shell-history-blobs.test.ts": 194,
"src/main/persistence/moving-wsl-projects/wsl-move-slept-scrollback.test.ts": 466,
"src/main/persistence/moving-wsl-projects/wsl-move-terminal-gate.test.ts": 137,
"src/main/persistence/moving-wsl-projects/wsl-move-two-desktops.test.ts": 2512,
"src/main/persistence/moving-wsl-projects/wsl-move-ui-routing-rewrite.test.ts": 465,
"src/main/persistence/moving-wsl-projects/wsl-move-undo-host-automations.test.ts": 691,
"src/main/persistence/moving-wsl-projects/quiescence/wsl-move-quiesce.test.ts": 413,
"src/main/persistence/moving-wsl-projects/cutover-recovery/wsl-move-reset.test.ts": 891,
"src/main/persistence/moving-wsl-projects/cutover-recovery/wsl-move-rewrite-ledger.test.ts": 641,
"src/main/persistence/moving-wsl-projects/quiescence/wsl-move-scope-guard.test.ts": 639,
"src/main/persistence/moving-wsl-projects/manifest-scope/wsl-move-scope.test.ts": 104,
"src/main/persistence/moving-wsl-projects/desktop-state/wsl-move-seeded-view-state.test.ts": 398,
"src/main/persistence/moving-wsl-projects/terminal-state/wsl-move-session-freeze.test.ts": 2013,
"src/main/persistence/moving-wsl-projects/terminal-state/wsl-move-session-rewrite.test.ts": 411,
"src/main/persistence/moving-wsl-projects/terminal-state/wsl-move-shell-history-blobs.test.ts": 194,
"src/main/persistence/moving-wsl-projects/terminal-state/wsl-move-slept-scrollback.test.ts": 466,
"src/main/persistence/moving-wsl-projects/quiescence/wsl-move-terminal-gate.test.ts": 137,
"src/main/persistence/moving-wsl-projects/desktop-state/wsl-move-ui-routing-rewrite.test.ts": 465,
"src/main/persistence/persistence-async-write-syscalls.test.ts": 3419,
"src/main/persistence/persistence-cohort-and-identity-migration.test.ts": 2224,
"src/main/persistence/persistence-flush-and-save-scheduling.test.ts": 3361,
@@ -4046,18 +4035,18 @@
"src/main/managed-server/migration/catalog/orcad-migration-catalog-client-source-kind.test.ts": 400,
"src/main/managed-server/migration/catalog/orcad-migration-catalog-client.test.ts": 400,
"src/main/managed-server/migration/cutover/orcad-migration-cutover-coordinator.test.ts": 2408,
"src/main/persistence/migrating-orcad-catalog/orcad-migration-cutover-journal.test.ts": 369,
"src/main/persistence/migrating-orcad-catalog/cutover-journals/orcad-migration-cutover-journal.test.ts": 369,
"src/main/managed-server/migration/cutover/orcad-migration-delta-move.test.ts": 3812,
"src/main/managed-server/migration/cutover/orcad-migration-delta-snapshot.test.ts": 2611,
"src/main/managed-server/migration/linking/orcad-migration-repository-link.test.ts": 4281,
"src/main/managed-server/migration/transfers/orcad-migration-snapshot-coordinator.test.ts": 309,
"src/main/ssh/migration-source/orcad-migration-source-fence.test.ts": 2000,
"src/main/persistence/migrating-orcad-catalog/orcad-migration-source-retention.test.ts": 2297,
"src/main/persistence/migrating-orcad-catalog/retained-source/orcad-migration-source-retention.test.ts": 2297,
"src/main/managed-server/migration/cutover/orcad-migration-stuck-host-profiles.test.ts": 2402,
"src/main/ssh/migration-source/orcad-migration-terminal-gate.test.ts": 63,
"src/main/managed-server/install/orcad-remote-deploy.test.ts": 537,
"src/main/managed-server/activation/orcad-retained-fence-takeover.test.ts": 210,
"src/main/persistence/migrating-orcad-catalog/orcad-retained-source-changes.test.ts": 2185,
"src/main/persistence/migrating-orcad-catalog/retained-source/orcad-retained-source-changes.test.ts": 2185,
"src/main/managed-server/lifecycle/orcad-runtime-maintenance.test.ts": 916,
"src/main/managed-server/host-state/orcad-snapshot-room.test.ts": 402,
"src/main/managed-server/lifecycle/orcad-stdio-bridge.test.ts": 627,
@@ -4373,7 +4362,7 @@
"src/main/workspaces/removal/retirement/worktree-retirement-discovery-wsl.test.ts": 355,
"src/main/workspaces/creation/worktree-root-preparation.test.ts": 180,
"src/main/workspaces/removal/worktree-trash.test.ts": 126,
"src/main/persistence/moving-wsl-projects/wsl-approved-root-race.wsl.test.ts": 102,
"src/main/persistence/moving-wsl-projects/quiescence/wsl-approved-root-race.wsl.test.ts": 102,
"src/main/wsl/discovery/wsl-background-distro-gate.test.ts": 674,
"src/main/wsl/discovery/wsl-console-running-distros.test.ts": 57,
"src/main/wsl/discovery/wsl-distro-list-output.test.ts": 43,
@@ -4381,7 +4370,7 @@
"src/main/wsl/execution/wsl-interop-spawn-directory.test.ts": 52,
"src/main/wsl/discovery/wsl-last-seen-running-age.test.ts": 84,
"src/main/wsl/execution/wsl-managed-cli-path-restore.test.ts": 68,
"src/main/persistence/moving-wsl-projects/wsl-move-incidental-writes.test.ts": 1170,
"src/main/persistence/moving-wsl-projects/quiescence/wsl-move-incidental-writes.test.ts": 1170,
"src/main/wsl/discovery/wsl-running-distro-stop.test.ts": 42,
"src/main/wsl/discovery/wsl-running-distros.test.ts": 201,
"src/main/wsl/filesystem/wsl-running-path-filter.test.ts": 57,
@@ -35,7 +35,7 @@ const MANAGED_SSH_HARNESS =
// An enabled SSH automation moves with its host and is re-enabled on the server (#29083).
const ENABLED_AUTOMATION_MOVE =
/^src\/(?:main\/(?:persistence\/(?:migrating-orcad-catalog\/orcad-(?:source-automation-state|source-dormant-state|source-dependency-census|destination-automation-state)|scheduling-automations\/automation-schedule-operations)|automations\/(?:run-target-resolution|automation-dispatch-request|orcad-fenced-automation)|ssh\/orcad-migration-(?:moved-automations|source-retention))|shared\/orcad-migration\/orcad-migration-(?:dormant-automation-validation|source-cutover))\.ts$/
/^src\/(?:main\/(?:persistence\/(?:migrating-orcad-catalog\/(?:source\/(?:automations\/orcad-source-automation-state|dormancy\/orcad-source-dormant-state|sessions\/orcad-source-dependency-census)|destination\/orcad-destination-automation-state)|scheduling-automations\/automation-schedule-operations)|automations\/(?:run-target-resolution|automation-dispatch-request|orcad-fenced-automation)|persistence\/migrating-orcad-catalog\/retained-source\/orcad-migration-(?:moved-automations|source-retention))|shared\/orcad-migration\/orcad-migration-(?:dormant-automation-validation|source-cutover))\.ts$/
export const PR_E2E_SOURCE_ROUTES = [
...PR_BROWSER_E2E_SOURCE_ROUTES,
@@ -174,7 +174,7 @@ export const PR_E2E_SOURCE_ROUTES = [
MANAGED_SSH_HARNESS.test(file) ||
ENABLED_AUTOMATION_MOVE.test(file) ||
(isProductSource(file) &&
/^src\/(?:main\/(?:ipc\/ssh\/(?:ssh-connect-flow|ssh-host-server-)|ssh\/(?:ssh-session-start-failure|ssh-host-server-|connection\/ssh-connection-manager|orcad-migration-refusal-reason|targets\/ssh-target-orcad-preflight)|managed-server\/lifecycle\/orcad-runtime-conversion|persistence\/migrating-orcad-catalog\/orcad-source-(?:automation-state|leave-behind-view))|renderer\/src\/(?:ssh\/(?:ssh-host-server-status-copy|ssh-connect-failure-toast)|components\/settings\/(?:SshTargetServerStatus|SshHostMoveAnywayAction|SshTargetCard)))/.test(
/^src\/(?:main\/(?:ipc\/ssh\/(?:ssh-connect-flow|ssh-host-server-)|ssh\/(?:ssh-session-start-failure|ssh-host-server-|connection\/ssh-connection-manager|orcad-migration-refusal-reason|targets\/ssh-target-orcad-preflight)|managed-server\/lifecycle\/orcad-runtime-conversion|persistence\/migrating-orcad-catalog\/source\/(?:automations\/orcad-source-automation-state|catalog\/orcad-source-leave-behind-view))|renderer\/src\/(?:ssh\/(?:ssh-host-server-status-copy|ssh-connect-failure-toast)|components\/settings\/(?:SshTargetServerStatus|SshHostMoveAnywayAction|SshTargetCard)))/.test(
file
))
},
@@ -352,7 +352,7 @@ export const PR_E2E_SOURCE_ROUTES = [
matches: (file) =>
MANAGED_SSH_HARNESS.test(file) ||
(isProductSource(file) &&
/^src\/main\/(?:persistence\/migrating-orcad-catalog\/orcad-source-(?:draft-rename|workspace-session|session-copy-resolution|export)|ssh\/orcad-migration-source-retention|ipc\/ssh\/ssh)\.ts$/.test(
/^src\/main\/(?:persistence\/migrating-orcad-catalog\/source\/(?:worktrees\/orcad-source-draft-rename|sessions\/orcad-source-(?:workspace-session|session-copy-resolution)|catalog\/orcad-source-export)|persistence\/migrating-orcad-catalog\/retained-source\/orcad-migration-source-retention|ipc\/ssh\/ssh)\.ts$/.test(
file
))
},
@@ -22,7 +22,7 @@ export const PR_WSL_E2E_SOURCE_ROUTES = [
id: 'wsl-move.fence',
specs: ['tests/e2e/wsl-move-fence.spec.ts'],
matches: (file) =>
/^src\/(?:main\/(?:persistence\/moving-wsl-projects\/wsl-move-(?:scope-guard|fence|reset|startup|startup-rewrite|cutover-journal)|ipc\/pty\/host-env\/spawn-cwd|wsl\/host-lifecycle\/wsl-host-gate(?:-startup)?)|shared\/wsl-move\/wsl-move-cutover)\.ts$/.test(
/^src\/(?:main\/(?:persistence\/moving-wsl-projects\/(?:quiescence\/wsl-move-(?:scope-guard|fence)|cutover-recovery\/wsl-move-(?:reset|cutover-journal)|startup\/wsl-move-(?:startup|startup-rewrite))|ipc\/pty\/host-env\/spawn-cwd|wsl\/host-lifecycle\/wsl-host-gate(?:-startup)?)|shared\/wsl-move\/wsl-move-cutover)\.ts$/.test(
file
)
},
@@ -30,7 +30,7 @@ import type { CommitMessageAgentEnvironmentResolvers } from '../../text-generati
import type { AgentGenerationFailureOutput } from '../../text-generation/agent-failure-output'
import { resolveGenerationTarget } from './first-work-generation-target'
import { runFolderWorkspaceTitleAutoRename } from './first-work-workspace-title-rename'
import { isWslMoveRepoBlocked } from '../../persistence/moving-wsl-projects/wsl-move-background-backoff'
import { isWslMoveRepoBlocked } from '../../persistence/moving-wsl-projects/orchestration/wsl-move-background-backoff'
import {
clearFirstWorkGenerationFailures,
isFirstWorkGenerationBackingOff,
@@ -6,7 +6,7 @@ import type { FirstWorkBranchRenameDeps } from './first-work-branch-rename'
import { rememberBranchRenameFailureOutput } from './branch-rename-failure-output'
import { renameWorktreeFolderOnFirstWork } from './first-work-folder-rename'
import { moveWorktree } from '../../git/worktrees/movement/worktree-move'
import { isWslMoveFolderWorkspaceBlocked } from '../../persistence/moving-wsl-projects/wsl-move-background-backoff'
import { isWslMoveFolderWorkspaceBlocked } from '../../persistence/moving-wsl-projects/orchestration/wsl-move-background-backoff'
import type { Store } from '../../persistence/loading-store/store'
import type { RuntimeStore } from '../../runtime/construction/runtime-store-contract'
import type { OrcaRuntimeService } from '../../runtime/orca-runtime'
@@ -12,11 +12,11 @@ import { seedWslMoveCutover } from '../persistence/__fixtures__/wsl-mover/wsl-mo
import {
loadWslMoveFence,
resetWslMoveFenceForTests
} from '../persistence/moving-wsl-projects/wsl-move-scope-guard'
import { runWslMoveDesktopRewritePass } from '../persistence/moving-wsl-projects/wsl-move-desktop-rewrite'
import { resetWslMoveDesktopRewriteStoresForTests } from '../persistence/moving-wsl-projects/wsl-move-desktop-rewrite-stores'
import { registerWslMoveMainRewriteStores } from '../persistence/moving-wsl-projects/wsl-move-main-rewrite-stores'
import { registerWslMoveOrchestrationHistoryStore } from '../persistence/moving-wsl-projects/wsl-move-orchestration-history-rewrite'
} from '../persistence/moving-wsl-projects/quiescence/wsl-move-scope-guard'
import { runWslMoveDesktopRewritePass } from '../persistence/moving-wsl-projects/desktop-state/wsl-move-desktop-rewrite'
import { resetWslMoveDesktopRewriteStoresForTests } from '../persistence/moving-wsl-projects/desktop-state/wsl-move-desktop-rewrite-stores'
import { registerWslMoveMainRewriteStores } from '../persistence/moving-wsl-projects/desktop-state/wsl-move-main-rewrite-stores'
import { registerWslMoveOrchestrationHistoryStore } from '../persistence/moving-wsl-projects/desktop-state/wsl-move-orchestration-history-rewrite'
import { orchestrationDbFile } from '../runtime/orchestration/db/orchestration-db-file'
import { WSL_HOSTS_INTERNAL_GATE_ENV } from '../../shared/wsl-host-internal-gate'
import { OrchestrationDb } from '../runtime/orchestration/db/orchestration-db'
@@ -8,7 +8,7 @@ import { seedWslMoveCutover } from '../persistence/__fixtures__/wsl-mover/wsl-mo
import {
loadWslMoveFence,
resetWslMoveFenceForTests
} from '../persistence/moving-wsl-projects/wsl-move-scope-guard'
} from '../persistence/moving-wsl-projects/quiescence/wsl-move-scope-guard'
import {
NO_DISPATCH_HOST,
WSL_MOVE_IN_PROGRESS,
+1 -1
View File
@@ -3,7 +3,7 @@ import type { Store } from '../persistence/loading-store/store'
import type { Automation } from '../../shared/automations/automation-definition'
import { resolveAutomationRunTarget, type AutomationRunTargetResult } from './run-target-resolution'
import type { AutomationRunWriter } from './automation-run-writer'
import { wslMoveRepoBackoff } from '../persistence/moving-wsl-projects/wsl-move-background-backoff'
import { wslMoveRepoBackoff } from '../persistence/moving-wsl-projects/orchestration/wsl-move-background-backoff'
import { isOrcadFencedAutomation } from './orcad-fenced-automation'
import { blockedWslDistroForPath } from '../wsl/filesystem/wsl-unc-access-gate'
import { getLocalProjectWorktreeGitOptions } from '../workspaces/execution-host/project-runtime-git-options'
@@ -4,7 +4,7 @@ import type { SshTarget } from '../../shared/ssh-types'
import type { Store } from '../persistence/loading-store/store'
import { isManagedOrcadSshTarget } from '../ssh/targets/ssh-target-runtime-ownership'
import { moveProjectToManagedHostFirst } from '../../shared/managed-orcad-ssh-owner'
import { listOrcadMigrationCutoverChainForTarget } from '../persistence/migrating-orcad-catalog/orcad-migration-cutover-journal'
import { listOrcadMigrationCutoverChainForTarget } from '../persistence/migrating-orcad-catalog/cutover-journals/orcad-migration-cutover-journal'
export const ORCAD_FENCED_AUTOMATION = "This automation now runs on its SSH host's Orca server."
@@ -10,7 +10,7 @@ import {
import { broadcastWhenWslDistroRunning } from '../preflight-wsl-refusal-retry'
import { resolveRepoForExecutionHost } from '../worktrees/repo-host-ownership'
import type { WorktreeIpcContext } from '../worktrees/worktree-ipc-context'
import { assertWslMoveRepoWritable } from '../../persistence/moving-wsl-projects/wsl-move-scope-guard'
import { assertWslMoveRepoWritable } from '../../persistence/moving-wsl-projects/quiescence/wsl-move-scope-guard'
/** Route private command overrides to the owning host without changing shared hook settings. */
export function registerWorktreeHookFileHandlers(context: WorktreeIpcContext): void {
@@ -8,7 +8,7 @@ import {
WslMoveProjectFencedError,
loadWslMoveFence,
resetWslMoveFenceForTests
} from '../../../persistence/moving-wsl-projects/wsl-move-scope-guard'
} from '../../../persistence/moving-wsl-projects/quiescence/wsl-move-scope-guard'
import { assertWorkspaceAcceptsNewPty } from './spawn-cwd'
const { listLiveDaemonPtyIds } = vi.hoisted(() => ({
+1 -1
View File
@@ -23,7 +23,7 @@ import {
wslMoveHostDistro,
wslMoveProjectRefForWorkspace,
WslMoveProjectFencedError
} from '../../../persistence/moving-wsl-projects/wsl-move-scope-guard'
} from '../../../persistence/moving-wsl-projects/quiescence/wsl-move-scope-guard'
import { listLiveDaemonPtyIds } from '../../../daemon/providers/lifecycle/daemon-provider-state'
import { wslDistroHoldMessage } from '../../../../shared/wsl-distro-stopped-hold'
import {
@@ -2,7 +2,7 @@ import { splitWorktreeIdForFilesystem } from '../../../../shared/worktree/id'
import { triggerTerminalSpawnPushTargetMaterialization } from '../../../runtime/terminal/launch/runtime-terminal-spawn-push-target-materialization'
import type { PtySpawnIpcArgs, PtySpawnIpcDeps } from './spawn-types'
import { getRepoExecutionHostId, LOCAL_EXECUTION_HOST_ID } from '../../../../shared/execution-host'
import { isWslMoveWorktreeBlocked } from '../../../persistence/moving-wsl-projects/wsl-move-background-backoff'
import { isWslMoveWorktreeBlocked } from '../../../persistence/moving-wsl-projects/orchestration/wsl-move-background-backoff'
// GUI terminals can run Git before Orca sync; request deferred push-target setup on spawn and reattach (#17828).
export function triggerPtySpawnPushTargetMaterialization(
+2 -2
View File
@@ -9,8 +9,8 @@ import { applyCommandToSession } from '../persistence/terminal-topology/terminal
import type { PersistedUIState } from '../../shared/persisted-ui-state-types'
import type { WorkspaceSessionState } from '../../shared/workspace-session/workspace-session-state-types'
import type { Store } from '../persistence/loading-store/store'
import { isFrozenOrcadSourceSessionPartition } from '../persistence/migrating-orcad-catalog/orcad-source-visibility'
import { isWslMoveWindowWriteHeld } from '../persistence/moving-wsl-projects/wsl-move-window-write-hold'
import { isFrozenOrcadSourceSessionPartition } from '../persistence/migrating-orcad-catalog/source/catalog/orcad-source-visibility'
import { isWslMoveWindowWriteHeld } from '../persistence/moving-wsl-projects/quiescence/wsl-move-window-write-hold'
import { windowViewSaveForMain, type ReconnectFactsFor } from '../persistence/window-save-view'
import { reportWindowSaveDrift } from '../persistence/window-save-divergence'
import { ORCA_LAYOUT_OWNER_IS_MAIN } from '../../shared/layout-owner-switch'
@@ -60,7 +60,7 @@ import {
WslMoveProjectFencedError,
loadWslMoveFence,
resetWslMoveFenceForTests
} from '../persistence/moving-wsl-projects/wsl-move-scope-guard'
} from '../persistence/moving-wsl-projects/quiescence/wsl-move-scope-guard'
const { handleMock, mockStore } = reposMocks
@@ -16,12 +16,12 @@ import {
FolderWorkspaceUpdateArgs,
parseProjectGroupIpcArgs
} from './repo-ipc-arg-schemas'
import { visibleFolderWorkspaces } from '../../persistence/migrating-orcad-catalog/orcad-source-visibility'
import { visibleFolderWorkspaces } from '../../persistence/migrating-orcad-catalog/source/catalog/orcad-source-visibility'
import { createFolderWorkspaceWithPluginHooks } from '../../plugins/hooks/workspace-create-plugin-hook'
import {
isLocalWslMoveRow,
shouldDropWslMoveProjectUpdate
} from '../../persistence/moving-wsl-projects/wsl-move-scope-guard'
} from '../../persistence/moving-wsl-projects/quiescence/wsl-move-scope-guard'
export function registerFolderWorkspaceHandlers(
mainWindow: BrowserWindow,
+3 -4
View File
@@ -1,5 +1,4 @@
import type { BrowserWindow } from 'electron'
import { ipcMain } from 'electron'
import { type BrowserWindow, ipcMain } from 'electron'
import type { Store } from '../../persistence/loading-store/store'
import type { Repo } from '../../../shared/repo-types'
import type { RepoHostTarget } from '../../../shared/repo-host-identity'
@@ -18,9 +17,9 @@ import {
import {
assertWslMoveProjectWritable,
assertWslMoveRepoWritable
} from '../../persistence/moving-wsl-projects/wsl-move-scope-guard'
} from '../../persistence/moving-wsl-projects/quiescence/wsl-move-scope-guard'
import { activeNestedRepoScans, runNestedRepoScanForIpc } from './nested-repo-scan-ipc'
import { visibleProjectGroups } from '../../persistence/migrating-orcad-catalog/orcad-source-visibility'
import { visibleProjectGroups } from '../../persistence/migrating-orcad-catalog/source/catalog/orcad-source-visibility'
export function registerProjectGroupHandlers(mainWindow: BrowserWindow, store: Store): void {
ipcMain.handle('projectGroups:list', () => visibleProjectGroups(store))
@@ -1,5 +1,4 @@
import type { BrowserWindow } from 'electron'
import { ipcMain } from 'electron'
import { type BrowserWindow, ipcMain } from 'electron'
import type { Store } from '../../persistence/loading-store/store'
import type { Repo } from '../../../shared/repo-types'
import type {
@@ -37,7 +36,7 @@ import { getSshTargetRegistryStore } from '../../ssh/targets/ssh-target-registry
import {
assertWslMoveHostSetupIdWritable,
assertWslMoveHostSetupWritable
} from '../../persistence/moving-wsl-projects/wsl-move-scope-guard'
} from '../../persistence/moving-wsl-projects/quiescence/wsl-move-scope-guard'
function buildProjectHostSetupResult(store: Store, repo: Repo): ProjectHostSetupResult {
const setup = getProjectHostSetupForRepo(store.getProjectHostSetups(), repo)
@@ -12,7 +12,7 @@ import {
WslMoveProjectFencedError,
loadWslMoveFence,
resetWslMoveFenceForTests
} from '../../persistence/moving-wsl-projects/wsl-move-scope-guard'
} from '../../persistence/moving-wsl-projects/quiescence/wsl-move-scope-guard'
import { RuntimeProjectHostSetupController } from '../../runtime/repositories/runtime-project-host-setup-controller'
import { RuntimeRepositoryIssueCommand } from '../../runtime/repositories/runtime-repository-issue-command'
import { RuntimeRepositorySettingsController } from '../../runtime/repositories/runtime-repository-settings-controller'
+3 -3
View File
@@ -16,13 +16,13 @@ import { ProjectUpdateIpcArgs, parseProjectGroupIpcArgs } from './repo-ipc-arg-s
import {
visibleProjectHostSetups,
visibleRepos
} from '../../persistence/migrating-orcad-catalog/orcad-source-visibility'
} from '../../persistence/migrating-orcad-catalog/source/catalog/orcad-source-visibility'
import {
assertWslMoveProjectWritable,
assertWslMoveReposWritable,
isWslMoveSourceHost
} from '../../persistence/moving-wsl-projects/wsl-move-scope-guard'
import { listWslMovedProjects } from '../../persistence/moving-wsl-projects/wsl-moved-projects'
} from '../../persistence/moving-wsl-projects/quiescence/wsl-move-scope-guard'
import { listWslMovedProjects } from '../../persistence/moving-wsl-projects/desktop-state/wsl-moved-projects'
import { listHostRepoCatalogSnapshots } from '../../host-repo-catalog-snapshot/host-repo-catalog-snapshot-recorder'
import { listEnvironments } from '../../../shared/remote-runtime/host-store/runtime-environment-store'
import { getRuntimeEnvironmentRegistryRoot } from '../runtime-environments/runtime-environment-registry-root'
@@ -12,7 +12,7 @@ import {
WslMoveProjectFencedError,
loadWslMoveFence,
resetWslMoveFenceForTests
} from '../../persistence/moving-wsl-projects/wsl-move-scope-guard'
} from '../../persistence/moving-wsl-projects/quiescence/wsl-move-scope-guard'
import { RuntimeRepositorySettingsController } from '../../runtime/repositories/runtime-repository-settings-controller'
import { registerFolderWorkspaceHandlers } from './folder-workspace-handlers'
import { runtimeRepoSelectorText } from '../../runtime/workspaces/catalog/runtime-repo-selector'
+13 -7
View File
@@ -1,15 +1,21 @@
import type { BrowserWindow } from 'electron'
import { ipcMain } from 'electron'
import { type BrowserWindow, ipcMain } from 'electron'
import type { Store } from '../../persistence/loading-store/store'
import type { Repo } from '../../../shared/repo-types'
import type { RepoHostTarget } from '../../../shared/repo-host-identity'
import { isFolderRepo } from '../../../shared/repo-kind'
import type { ExecutionHostId } from '../../../shared/execution-host'
import { getRepoExecutionHostId, normalizeExecutionHostId } from '../../../shared/execution-host'
import {
type ExecutionHostId,
getRepoExecutionHostId,
normalizeExecutionHostId
} from '../../../shared/execution-host'
import { normalizeRepoBadgeColor } from '../../../shared/repo-badge-color'
import { sanitizeRepoIcon } from '../../../shared/repo-icon'
import { normalizeGhAccountBinding } from '../../../shared/github/account-binding'
import type { GhAccountBinding } from '../../../shared/github/account-binding'
import {
normalizeGhAccountBinding,
type GhAccountBinding
} from '../../../shared/github/account-binding'
import { normalizeRepoSourceControlAiOverrides } from '../../../shared/source-control/ai/settings/source-control-ai-repo-settings'
import {
normalizeCustomWorktreeVisibilitySources,
@@ -23,7 +29,7 @@ import { notifyReposChanged } from './repos-changed-notification'
import {
assertWslMoveProjectWritable,
isWslMoveSourceHost
} from '../../persistence/moving-wsl-projects/wsl-move-scope-guard'
} from '../../persistence/moving-wsl-projects/quiescence/wsl-move-scope-guard'
export function registerRepoUpdateHandler(mainWindow: BrowserWindow, store: Store): void {
ipcMain.handle(
+2 -3
View File
@@ -1,5 +1,4 @@
import type { BrowserWindow } from 'electron'
import { ipcMain } from 'electron'
import { type BrowserWindow, ipcMain } from 'electron'
import { randomUUID } from 'node:crypto'
import type { Store } from '../../persistence/loading-store/store'
import type { SparsePreset } from '../../../shared/worktree/create-types'
@@ -11,7 +10,7 @@ import {
SparsePresetValidationError,
type SparsePresetFailure
} from '../../../shared/worktree/sparse-preset-failure'
import { assertWslMoveProjectWritable } from '../../persistence/moving-wsl-projects/wsl-move-scope-guard'
import { assertWslMoveProjectWritable } from '../../persistence/moving-wsl-projects/quiescence/wsl-move-scope-guard'
export function registerSparsePresetHandlers(mainWindow: BrowserWindow, store: Store): void {
ipcMain.handle('sparsePresets:list', (_event, args: { repoId: string }) => {
@@ -17,7 +17,7 @@ import {
orcadMigrationDestinationFor,
orcadServerAutomationEnablerFor
} from '../../managed-server/lifecycle/orcad-runtime-conversion-wiring'
import { enableMovedOrcadAutomationsForTarget } from '../../persistence/migrating-orcad-catalog/orcad-migration-moved-automations'
import { enableMovedOrcadAutomationsForTarget } from '../../persistence/migrating-orcad-catalog/retained-source/orcad-migration-moved-automations'
import { requiredString } from './orcad-runtime-lifecycle-handlers'
import { publishResolvedChangedHostStatus } from './runtime-environment-managed-tunnel'
import { runTargetLifecycle } from '../ssh/ssh-target-lifecycle-queue'
@@ -54,7 +54,7 @@ import { assertWslHostReachable, isGatedOffWslHost } from '../../wsl/host-lifecy
import {
isHostSpawnFencedForWslMoveUndo,
wslMoveUndoSpawnFencedResponse
} from '../../persistence/moving-wsl-projects/wsl-move-undo-spawn-fence'
} from '../../persistence/moving-wsl-projects/cutover-recovery/wsl-move-undo-spawn-fence'
export { isRuntimeEnvironmentManuallyDisconnected }
+3 -3
View File
@@ -2,9 +2,9 @@ import { ipcMain } from 'electron'
import type { Store } from '../persistence/loading-store/store'
import type { OrcaRuntimeService } from '../runtime/orca-runtime'
import { parseTerminalSurfaceCloseTarget } from '../../shared/workspace-layout/terminal-surface-close-target'
import { isFrozenOrcadSourceSessionPartition } from '../persistence/migrating-orcad-catalog/orcad-source-visibility'
import { isWslMoveWindowWriteHeld } from '../persistence/moving-wsl-projects/wsl-move-window-write-hold'
import { visibleSessionHostIds } from '../persistence/migrating-orcad-catalog/orcad-retained-source-session'
import { isFrozenOrcadSourceSessionPartition } from '../persistence/migrating-orcad-catalog/source/catalog/orcad-source-visibility'
import { isWslMoveWindowWriteHeld } from '../persistence/moving-wsl-projects/quiescence/wsl-move-window-write-hold'
import { visibleSessionHostIds } from '../persistence/migrating-orcad-catalog/retained-source/orcad-retained-source-session'
import { markAgentLaunchesClosedByUser } from '../agent-launch/agent-launch-pane-attachment'
import { windowViewPatchForMain, windowViewSaveForMain } from '../persistence/window-save-view'
import { reportWindowSaveDrift } from '../persistence/window-save-divergence'
@@ -4,10 +4,10 @@ import {
managedOrcadServerName
} from '../../../shared/managed-orcad-ssh-owner'
import { listEnvironments } from '../../../shared/remote-runtime/host-store/runtime-environment-store'
import { findOrcadMigrationSourceCutoverForTarget } from '../../persistence/migrating-orcad-catalog/orcad-migration-cutover-journal'
import { findOrcadMigrationSourceCutoverForTarget } from '../../persistence/migrating-orcad-catalog/cutover-journals/orcad-migration-cutover-journal'
import { abandonOrcadConversion } from '../../managed-server/migration/cutover/orcad-conversion-abandon'
import { retainOrcadMigrationSource } from '../../persistence/migrating-orcad-catalog/orcad-migration-source-retention'
import { enableMovedOrcadAutomationsForTarget } from '../../persistence/migrating-orcad-catalog/orcad-migration-moved-automations'
import { retainOrcadMigrationSource } from '../../persistence/migrating-orcad-catalog/retained-source/orcad-migration-source-retention'
import { enableMovedOrcadAutomationsForTarget } from '../../persistence/migrating-orcad-catalog/retained-source/orcad-migration-moved-automations'
import { hasOrcadTemplate } from '../../orcad/orcad-artifact-materializer'
import { isOrcadHostUnavailableFixableOnHost } from '../../orcad/orcad-host-unavailable'
import { managedServerUpdateDeps } from '../../ssh/host-server/managed-server-update-deps'
+3 -3
View File
@@ -65,9 +65,9 @@ import { resetSshShutdownDrain } from './ssh-shutdown-drain'
import { registerSshTargetCrudHandlers } from './ssh-target-crud-handlers'
import { targetLifecycleInFlight } from './ssh-target-lifecycle-queue'
import { disposeOrcadManagedTunnels } from '../../managed-server/lifecycle/orcad-managed-tunnel'
import { retainUnretainedOrcadMigrationSources } from '../../persistence/migrating-orcad-catalog/orcad-migration-source-retention'
import { reconcileManagedOrcadSshTargets } from '../../persistence/migrating-orcad-catalog/orcad-retained-source'
import { installOrcadMigrationScrollbackRetention } from '../../persistence/migrating-orcad-catalog/orcad-migration-scrollback-retention-wiring'
import { retainUnretainedOrcadMigrationSources } from '../../persistence/migrating-orcad-catalog/retained-source/orcad-migration-source-retention'
import { reconcileManagedOrcadSshTargets } from '../../persistence/migrating-orcad-catalog/retained-source/orcad-retained-source'
import { installOrcadMigrationScrollbackRetention } from '../../persistence/migrating-orcad-catalog/terminal-history/orcad-migration-scrollback-retention-wiring'
import { getAppEnvironment } from '../../../shared/app-environment'
import { registerLegacyRelayBridgeIpc } from '../../ssh/legacy-relay/bridge/legacy-relay-bridge-ipc'
import {
+1 -1
View File
@@ -9,7 +9,7 @@ import { BrowserWindow, ipcMain, webContents, type WebContents } from 'electron'
import type { Store } from '../persistence/loading-store/store'
import type { PersistedUIState } from '../../shared/persisted-ui-state-types'
import { isFeatureInteractionId } from '../../shared/feature-interactions'
import { isWslMoveWindowWriteHeld } from '../persistence/moving-wsl-projects/wsl-move-window-write-hold'
import { isWslMoveWindowWriteHeld } from '../persistence/moving-wsl-projects/quiescence/wsl-move-window-write-hold'
import { isTrustedMainRendererSender } from './main-renderer-sender-trust'
let trustedUIRendererWebContentsId: number | null = null
+1 -1
View File
@@ -182,7 +182,7 @@ import {
openWorktreeCreatePathClaim,
type WorktreeCreatePathClaim
} from '../workspaces/creation/worktree-create-in-flight'
import { isWslMoveWorktreeBlocked } from '../persistence/moving-wsl-projects/wsl-move-background-backoff'
import { isWslMoveWorktreeBlocked } from '../persistence/moving-wsl-projects/orchestration/wsl-move-background-backoff'
import {
hostWorktreeTarget,
type HostWorktreeTarget
@@ -12,8 +12,8 @@ import {
addWorktreeCreatePhaseAttributes,
withWorktreeSpan
} from '../../../observability/instrumentation'
import { workspaceSourceSchema } from '../../../../shared/telemetry-events'
import type { WorkspaceSource } from '../../../../shared/telemetry-events'
import { workspaceSourceSchema, type WorkspaceSource } from '../../../../shared/telemetry-events'
import { isFolderRepo } from '../../../../shared/repo-kind'
import { createLocalWorktree, notifyWorktreesChanged } from '../../worktree-remote'
import { SshHostNotServedError } from '../../../providers/ssh-host-not-served-error'
@@ -29,7 +29,7 @@ import { getRepoExecutionHostId } from '../../../../shared/execution-host'
import { workspaceLifecycleKey } from '../../../runtime/workspaces/lifecycle/workspace-lifecycle-commands'
import type { WorktreeIpcContext } from '../worktree-ipc-context'
import { beginWorkspaceCreateTelemetry } from '../../../workspaces/creation/workspace-create-telemetry'
import { assertWslMoveRepoWritable } from '../../../persistence/moving-wsl-projects/wsl-move-scope-guard'
import { assertWslMoveRepoWritable } from '../../../persistence/moving-wsl-projects/quiescence/wsl-move-scope-guard'
import { applyWorkspaceCreatePluginHook } from '../../../plugins/hooks/workspace-create-plugin-hook'
import { withProjectWorktreeCreate } from '../../../workspaces/creation/worktree-create-in-flight'
@@ -16,7 +16,7 @@ import { pruneWorkspaceSpaceAnalysisSnapshots } from '../../../workspaces/space-
import { isLocalWorktreeScanGenerationCurrent } from '../../../workspaces/catalog/local-worktree-scan-generation'
import { localWorktreePathsExistOrAreUnverifiable } from '../../../workspaces/catalog/local-worktree-path-presence'
import { worktreeRetentionPathComparisonKey } from '../../../workspaces/catalog/worktree-retention-path-comparison'
import { isWslMoveRepoBlocked } from '../../../persistence/moving-wsl-projects/wsl-move-background-backoff'
import { isWslMoveRepoBlocked } from '../../../persistence/moving-wsl-projects/orchestration/wsl-move-background-backoff'
type AuthoritativeLocalMetadataPruneStore = Pick<
Store,
@@ -4,7 +4,7 @@ import type { Worktree, DetectedWorktree } from '../../../../shared/worktree/typ
import type { WorktreeMeta } from '../../../../shared/worktree/meta-types'
import type { Store } from '../../../persistence/loading-store/store'
import { mergeWorktreeMetaForWrite } from '../../../persistence/loading-store/worktree-metadata/worktree-meta-write-normalization'
import { isWslMoveRepoBlocked } from '../../../persistence/moving-wsl-projects/wsl-move-background-backoff'
import { isWslMoveRepoBlocked } from '../../../persistence/moving-wsl-projects/orchestration/wsl-move-background-backoff'
import { getRepoExecutionHostId } from '../../../../shared/execution-host'
import {
hostWorktreeTargetForRepo,
@@ -22,7 +22,7 @@ import {
isWslMoveWorkspaceBlocked,
shouldDropWslMoveProjectUpdate,
wslMoveProjectRefForWorkspace
} from '../../../persistence/moving-wsl-projects/wsl-move-scope-guard'
} from '../../../persistence/moving-wsl-projects/quiescence/wsl-move-scope-guard'
export function registerWorktreeMetadataHandlers(context: WorktreeIpcContext): void {
const { mainWindow, store, runtime } = context
@@ -5,8 +5,12 @@ import type {
} from '../../../../shared/worktree/create-types'
import { parseWorktreeId } from '../../worktree-logic'
import { resolveWorktreeRemovalRepoOwner } from '../../../workspaces/removal/worktree-removal-repo-owner'
import { getRepoExecutionHostId, parseExecutionHostId } from '../../../../shared/execution-host'
import type { ExecutionHostId } from '../../../../shared/execution-host'
import {
getRepoExecutionHostId,
parseExecutionHostId,
type ExecutionHostId
} from '../../../../shared/execution-host'
import type { Repo } from '../../../../shared/repo-types'
import { isFolderRepo } from '../../../../shared/repo-kind'
import { getLocalPtyProvider } from '../../pty/provider/registry'
@@ -39,7 +43,7 @@ import {
assertWslMoveProjectWritable,
assertWslMoveRepoWritable,
isWslMoveSourceHost
} from '../../../persistence/moving-wsl-projects/wsl-move-scope-guard'
} from '../../../persistence/moving-wsl-projects/quiescence/wsl-move-scope-guard'
import { teardownStops } from '../../../runtime/workspaces/removal/owned-session-teardown-policy'
export function registerWorktreeForgetHandlers(context: WorktreeIpcContext): void {
@@ -23,7 +23,7 @@ import {
waitForPendingWorktreeRemoval
} from '../../../workspaces/removal/worktree-background-removal'
import { runSerializedWorktreeRemovalAcceptance } from '../../../workspaces/removal/worktree-removal-acceptance-queue'
import { assertWslMoveRepoWritable } from '../../../persistence/moving-wsl-projects/wsl-move-scope-guard'
import { assertWslMoveRepoWritable } from '../../../persistence/moving-wsl-projects/quiescence/wsl-move-scope-guard'
import {
deleteLostContact,
observeTerminals,
@@ -15,7 +15,7 @@ import { readProfileProjectTransferState } from '../../orca-profiles/project-tra
import { getOrcaProfileListState } from '../../orca-profiles/profile-index-store'
import { getProfileUserDataPath } from '../../orca-profiles/profile-storage-paths'
import type { Store } from '../../persistence/loading-store/store'
import { pauseWslMoveScope } from '../../persistence/moving-wsl-projects/wsl-move-driver-pause'
import { pauseWslMoveScope } from '../../persistence/moving-wsl-projects/execution/wsl-move-driver-pause'
import type { OrcaRuntimeService } from '../../runtime/orca-runtime'
import { quitProcess } from '../../startup/process-quit-request'
import { startWslDriveUncConversion } from '../../wsl/filesystem/wsl-drive-unc-conversion-run'
@@ -1,4 +1,4 @@
import type * as WslMoveDriverPreviewModule from '../../persistence/moving-wsl-projects/wsl-move-driver-preview'
import type * as WslMoveDriverPreviewModule from '../../persistence/moving-wsl-projects/execution/wsl-move-driver-preview'
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
import { WSL_HOSTS_INTERNAL_GATE_ENV } from '../../../shared/wsl-host-internal-gate'
@@ -16,17 +16,19 @@ const driver = vi.hoisted(() => ({
moveProjectsToWslHost: vi.fn(async () => ({ outcome: 'moved' })),
cancelWslMove: vi.fn(() => true)
}))
vi.mock('../../persistence/moving-wsl-projects/wsl-move-driver', () => driver)
vi.mock('../../persistence/moving-wsl-projects/wsl-move-driver', () => ({
moveProjectsToWslHost: driver.moveProjectsToWslHost
}))
vi.mock(
'../../persistence/moving-wsl-projects/wsl-move-driver-preview',
'../../persistence/moving-wsl-projects/execution/wsl-move-driver-preview',
async (importOriginal) => ({
...(await importOriginal<typeof WslMoveDriverPreviewModule>()),
previewWslMove: driver.previewWslMove
})
)
const running = vi.hoisted(() => ({ any: false }))
vi.mock('../../persistence/moving-wsl-projects/wsl-move-running-moves', () => ({
vi.mock('../../persistence/moving-wsl-projects/orchestration/wsl-move-running-moves', () => ({
isAnyWslMoveRunning: () => running.any,
cancelWslMove: driver.cancelWslMove
}))
+13 -13
View File
@@ -22,42 +22,42 @@ import {
import { HistoryReader } from '../../daemon/history/restoration/history-reader'
import { orcadMigrationDestinationFor } from '../../managed-server/lifecycle/orcad-runtime-conversion-wiring'
import type { Store } from '../../persistence/loading-store/store'
import { exportWslMoveManifest } from '../../persistence/moving-wsl-projects/wsl-move-manifest-export'
import { ensureWslMoveDestinationBrowserLogins } from '../../persistence/moving-wsl-projects/wsl-move-browser-cookie-copy'
import { exportWslMoveManifest } from '../../persistence/moving-wsl-projects/manifest-scope/wsl-move-manifest-export'
import { ensureWslMoveDestinationBrowserLogins } from '../../persistence/moving-wsl-projects/desktop-state/wsl-move-browser-cookie-copy'
import { activeBrowserRoutePartitionOrcaProfileId } from '../../browser/routing/partitions/browser-route-partition-binding-runtime'
import { wslHostBrowserRouteStorage } from '../../browser/routing/local-host-partitions/wsl-host-browser-route-partition'
import { runGatedWslMoveDesktopRewritePass } from '../../persistence/moving-wsl-projects/wsl-move-desktop-rewrite'
import { runGatedWslMoveDesktopRewritePass } from '../../persistence/moving-wsl-projects/desktop-state/wsl-move-desktop-rewrite'
import type {
WslMoveDriverDeps,
WslMoveHost
} from '../../persistence/moving-wsl-projects/wsl-move-driver-ports'
import { proveWslMoveTerminalsExited } from '../../persistence/moving-wsl-projects/wsl-move-exit-proof'
} from '../../persistence/moving-wsl-projects/execution/wsl-move-driver-ports'
import { proveWslMoveTerminalsExited } from '../../persistence/moving-wsl-projects/quiescence/wsl-move-exit-proof'
import {
collectWslMoveGateInputs,
listWslMovePanes,
type WslMoveGateFactSources
} from '../../persistence/moving-wsl-projects/wsl-move-gate-facts'
} from '../../persistence/moving-wsl-projects/quiescence/wsl-move-gate-facts'
import {
classifyWslGuestPaneForeground,
readWslGuestPaneShellCwd
} from '../../persistence/moving-wsl-projects/wsl-move-guest-foreground'
} from '../../persistence/moving-wsl-projects/quiescence/wsl-move-guest-foreground'
import {
listWslMoveSleptSessionPanes,
readWslMoveSleptScrollbackFromHistory,
withSleptSessionPanes,
wslMoveTabTitle,
wslMoveSleptSpoolRoot
} from '../../persistence/moving-wsl-projects/wsl-move-slept-scrollback'
import { scheduleWslMoveRewriteRetry } from '../../persistence/moving-wsl-projects/wsl-move-rewrite-retry'
} from '../../persistence/moving-wsl-projects/terminal-state/wsl-move-slept-scrollback'
import { scheduleWslMoveRewriteRetry } from '../../persistence/moving-wsl-projects/cutover-recovery/wsl-move-rewrite-retry'
import {
captureWslMoveRestoreHints,
type WslMoveRestoreHintPane
} from '../../persistence/moving-wsl-projects/wsl-move-restore-hints'
} from '../../persistence/moving-wsl-projects/terminal-state/wsl-move-restore-hints'
import {
isWslMoveProjectFenced,
wslMoveProjectRefForWorkspace
} from '../../persistence/moving-wsl-projects/wsl-move-scope-guard'
import { buildWslMoveShellHistoryBlobs } from '../../persistence/moving-wsl-projects/wsl-move-shell-history-blobs'
} from '../../persistence/moving-wsl-projects/quiescence/wsl-move-scope-guard'
import { buildWslMoveShellHistoryBlobs } from '../../persistence/moving-wsl-projects/terminal-state/wsl-move-shell-history-blobs'
import { inspectPtyProviderProcessForRenderer } from '../../providers/pty-process-inspection'
import type { OrcaRuntimeService } from '../../runtime/orca-runtime'
import { getTrustedUIRendererWebContents, getTrustedUIRendererWindow } from '../ui'
@@ -72,7 +72,7 @@ import {
import {
setWslMoveReloadLanding,
setWslMoveReloadableWindow
} from '../../persistence/moving-wsl-projects/wsl-move-window-write-hold'
} from '../../persistence/moving-wsl-projects/quiescence/wsl-move-window-write-hold'
import { commitRemoteOrcadMigrationCatalog } from '../../managed-server/migration/catalog/orcad-migration-catalog-client'
import { listRemoteOrcadRepositories } from '../../managed-server/migration/linking/orcad-server-repositories'
import { stageRemoteOrcadMigrationBlobChunk } from '../../managed-server/migration/transfers/orcad-migration-chunk-client'
@@ -5,12 +5,12 @@ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
import { WSL_HOSTS_INTERNAL_GATE_ENV } from '../../../shared/wsl-host-internal-gate'
import { wslMoveCutoverFixture as cutover } from '../../persistence/__fixtures__/wsl-mover/wsl-move-cutover-fixture'
import { seedWslMoveCutover } from '../../persistence/__fixtures__/wsl-mover/wsl-move-journal-seeding'
import { listWslMoveCutovers } from '../../persistence/moving-wsl-projects/wsl-move-cutover-journal'
import { listWslMoveCutovers } from '../../persistence/moving-wsl-projects/cutover-recovery/wsl-move-cutover-journal'
import {
loadWslMoveFence,
resetWslMoveFenceForTests
} from '../../persistence/moving-wsl-projects/wsl-move-scope-guard'
import { setWslMoveReloadableWindow } from '../../persistence/moving-wsl-projects/wsl-move-window-write-hold'
} from '../../persistence/moving-wsl-projects/quiescence/wsl-move-scope-guard'
import { setWslMoveReloadableWindow } from '../../persistence/moving-wsl-projects/quiescence/wsl-move-window-write-hold'
type Handler = (event: unknown, request?: unknown) => unknown
+5 -5
View File
@@ -19,15 +19,15 @@ import type { WslMoveUseLocallyResult } from '../../../shared/wsl-move/wsl-moved
import {
listPendingWslMoveRendererRewrites,
recordWslMoveRendererStoreRewritten
} from '../../persistence/moving-wsl-projects/wsl-move-desktop-rewrite'
} from '../../persistence/moving-wsl-projects/desktop-state/wsl-move-desktop-rewrite'
import {
cancelWslMove,
isAnyWslMoveRunning
} from '../../persistence/moving-wsl-projects/wsl-move-running-moves'
} from '../../persistence/moving-wsl-projects/orchestration/wsl-move-running-moves'
import { moveProjectsToWslHost } from '../../persistence/moving-wsl-projects/wsl-move-driver'
import { previewWslMove } from '../../persistence/moving-wsl-projects/wsl-move-driver-preview'
import type { WslMoveDriverDeps } from '../../persistence/moving-wsl-projects/wsl-move-driver-ports'
import { listUnfinishedWslMoves } from '../../persistence/moving-wsl-projects/wsl-move-host-automations-rewrite'
import { previewWslMove } from '../../persistence/moving-wsl-projects/execution/wsl-move-driver-preview'
import type { WslMoveDriverDeps } from '../../persistence/moving-wsl-projects/execution/wsl-move-driver-ports'
import { listUnfinishedWslMoves } from '../../persistence/moving-wsl-projects/desktop-state/wsl-move-host-automations-rewrite'
import { runTrackedWslMove } from '../../telemetry/wsl-move-telemetry'
import { runTrackedWslMoveUndo } from '../../telemetry/wsl-move-undo-telemetry'
@@ -14,23 +14,23 @@ import {
type WslMoveOrchestratorUserAction
} from '../../../shared/wsl-move/wsl-move-orchestrator-types'
import type { Store } from '../../persistence/loading-store/store'
import { listWslMoveCutoverChain } from '../../persistence/moving-wsl-projects/wsl-move-cutover-journal'
import { listWslMoveCutoverChain } from '../../persistence/moving-wsl-projects/cutover-recovery/wsl-move-cutover-journal'
import { moveProjectsToWslHost } from '../../persistence/moving-wsl-projects/wsl-move-driver'
import { previewWslMove } from '../../persistence/moving-wsl-projects/wsl-move-driver-preview'
import { wslMovedDistroVerdict } from '../../persistence/moving-wsl-projects/wsl-move-moved-distro-check'
import { previewWslMove } from '../../persistence/moving-wsl-projects/execution/wsl-move-driver-preview'
import { wslMovedDistroVerdict } from '../../persistence/moving-wsl-projects/quiescence/wsl-move-moved-distro-check'
import { WslMoveOrchestrator } from '../../persistence/moving-wsl-projects/wsl-move-orchestrator'
import type {
WslMoveFinishedMove,
WslMoveHostReadiness
} from '../../persistence/moving-wsl-projects/wsl-move-orchestrator-ports'
import { prepareWslMoveHost } from '../../persistence/moving-wsl-projects/wsl-move-host-readiness'
} from '../../persistence/moving-wsl-projects/orchestration/wsl-move-orchestrator-ports'
import { prepareWslMoveHost } from '../../persistence/moving-wsl-projects/quiescence/wsl-move-host-readiness'
import { readConfirmedRunningWslDistros } from '../../wsl/discovery/wsl-background-distro-gate'
import { defaultWslOrcadEnvironmentId } from '../../wsl/orcad/wsl-orcad-deploy'
import {
readWslMoveOrchestratorRecords,
writeWslMoveOrchestratorRecords
} from '../../persistence/moving-wsl-projects/wsl-move-orchestrator-store'
import type { WslMoveDriverDeps } from '../../persistence/moving-wsl-projects/wsl-move-driver-ports'
} from '../../persistence/moving-wsl-projects/orchestration/wsl-move-orchestrator-store'
import type { WslMoveDriverDeps } from '../../persistence/moving-wsl-projects/execution/wsl-move-driver-ports'
import {
trackWslMoveOrchestrator,
wslMoveOrchestratorEventProps
@@ -49,7 +49,7 @@ import { onWslHostUserAction } from '../../wsl/host-lifecycle/wsl-host-user-acti
import { getTrustedUIRendererWebContents, getTrustedUIRendererWindow } from '../ui'
import { onWslMoveReleasedByUser, releaseWslMoveChainHere } from './wsl-move-release-here'
import { createWslMoveUndoPorts } from './wsl-move-undo-wiring'
import { isDistroInUse } from '../../persistence/moving-wsl-projects/wsl-move-distro-in-use'
import { isDistroInUse } from '../../persistence/moving-wsl-projects/quiescence/wsl-move-distro-in-use'
import { answerWslMoveSleptPanes, requestSleptPanes } from './wsl-move-orchestrator-slept-panes'
import { wslHostRemovalPending } from './wsl-move-host-connect'
import { wslMoveAutoMovesBridgeProjects } from '../../../shared/wsl-move/wsl-move-rollout-stage'
@@ -6,17 +6,17 @@ import type { WslMoveCutover } from '../../../shared/wsl-move/wsl-move-cutover'
import { WSL_HOSTS_INTERNAL_GATE_ENV } from '../../../shared/wsl-host-internal-gate'
import { wslMoveCutoverFixture as cutover } from '../../persistence/__fixtures__/wsl-mover/wsl-move-cutover-fixture'
import { seedWslMoveCutover } from '../../persistence/__fixtures__/wsl-mover/wsl-move-journal-seeding'
import { listWslMoveCutovers } from '../../persistence/moving-wsl-projects/wsl-move-cutover-journal'
import { listWslMoveCutovers } from '../../persistence/moving-wsl-projects/cutover-recovery/wsl-move-cutover-journal'
import {
isWslMoveProjectBlocked,
loadWslMoveFence,
resetWslMoveFenceForTests
} from '../../persistence/moving-wsl-projects/wsl-move-scope-guard'
import { setWslMoveReloadableWindow } from '../../persistence/moving-wsl-projects/wsl-move-window-write-hold'
} from '../../persistence/moving-wsl-projects/quiescence/wsl-move-scope-guard'
import { setWslMoveReloadableWindow } from '../../persistence/moving-wsl-projects/quiescence/wsl-move-window-write-hold'
import {
registerWslMoveDesktopRewriteStore,
resetWslMoveDesktopRewriteStoresForTests
} from '../../persistence/moving-wsl-projects/wsl-move-desktop-rewrite-stores'
} from '../../persistence/moving-wsl-projects/desktop-state/wsl-move-desktop-rewrite-stores'
type Handler = (event: unknown, request?: unknown) => unknown
@@ -14,15 +14,15 @@ import {
wslMoveRigRetentionStore,
type WslMoveRig
} from '../../persistence/__fixtures__/wsl-mover/wsl-move-kill-rig'
import { resetWslMoveDesktopRewriteStoresForTests } from '../../persistence/moving-wsl-projects/wsl-move-desktop-rewrite-stores'
import { resetWslMoveDesktopRewriteStoresForTests } from '../../persistence/moving-wsl-projects/desktop-state/wsl-move-desktop-rewrite-stores'
import { moveProjectsToWslHost } from '../../persistence/moving-wsl-projects/wsl-move-driver'
import { previewWslMove } from '../../persistence/moving-wsl-projects/wsl-move-driver-preview'
import { runWslMoveRetentionPass } from '../../persistence/moving-wsl-projects/wsl-move-retention'
import { previewWslMove } from '../../persistence/moving-wsl-projects/execution/wsl-move-driver-preview'
import { runWslMoveRetentionPass } from '../../persistence/moving-wsl-projects/cutover-recovery/wsl-move-retention'
import {
claimWslMoveRun,
releaseWslMoveRun,
type RunningWslMove
} from '../../persistence/moving-wsl-projects/wsl-move-running-moves'
} from '../../persistence/moving-wsl-projects/orchestration/wsl-move-running-moves'
import { releaseWslMovedProjectHere } from './wsl-move-release-here'
vi.mock('electron', () => ({
+8 -8
View File
@@ -9,26 +9,26 @@ import {
type WslMoveCutover
} from '../../../shared/wsl-move/wsl-move-cutover'
import type { WslMoveUseLocallyResult } from '../../../shared/wsl-move/wsl-moved-project'
import { listWslMoveCutoverChain } from '../../persistence/moving-wsl-projects/wsl-move-cutover-journal'
import type { WslMoveProjectRef } from '../../persistence/moving-wsl-projects/wsl-move-scope-guard'
import { fenceHostSpawnsForWslMoveUndo } from '../../persistence/moving-wsl-projects/wsl-move-undo-spawn-fence'
import { listWslMoveCutoverChain } from '../../persistence/moving-wsl-projects/cutover-recovery/wsl-move-cutover-journal'
import type { WslMoveProjectRef } from '../../persistence/moving-wsl-projects/quiescence/wsl-move-scope-guard'
import { fenceHostSpawnsForWslMoveUndo } from '../../persistence/moving-wsl-projects/cutover-recovery/wsl-move-undo-spawn-fence'
import {
findWslMovedProjectMove,
releaseWslMove,
wslMoveReleaseRefusal,
wslMoveWorkspacesInScope
} from '../../persistence/moving-wsl-projects/wsl-move-use-locally'
} from '../../persistence/moving-wsl-projects/cutover-recovery/wsl-move-use-locally'
import {
holdWslMoveWindowWrites,
reloadWslMoveWindowWithWritesHeld
} from '../../persistence/moving-wsl-projects/wsl-move-window-write-hold'
} from '../../persistence/moving-wsl-projects/quiescence/wsl-move-window-write-hold'
import type { WslMoveUndoPorts } from './wsl-move-undo-wiring'
import {
wslMoveHostCopiesSlept,
wslMoveHostCopyOutcome
} from '../../persistence/moving-wsl-projects/wsl-move-host-copy-stop'
import { beginWslMoveUndoRun } from '../../persistence/moving-wsl-projects/wsl-move-running-moves'
import { runWslMoveHostAutomationsExclusive } from '../../persistence/moving-wsl-projects/wsl-move-undo-host-automations'
} from '../../persistence/moving-wsl-projects/quiescence/wsl-move-host-copy-stop'
import { beginWslMoveUndoRun } from '../../persistence/moving-wsl-projects/orchestration/wsl-move-running-moves'
import { runWslMoveHostAutomationsExclusive } from '../../persistence/moving-wsl-projects/cutover-recovery/wsl-move-undo-host-automations'
import { listEnvironments } from '../../../shared/remote-runtime/host-store/runtime-environment-store'
import { wasWslHostKeptForPeers } from '../../wsl/host-lifecycle/wsl-host-kept-for-peers'
@@ -1,7 +1,7 @@
/** The app window as the WSL move's write hold reloads it (wsl-move-window-write-hold.ts). */
import type { WebContents } from 'electron'
import type { Store } from '../../persistence/loading-store/store'
import type { WslMoveReloadableWindow } from '../../persistence/moving-wsl-projects/wsl-move-window-write-hold'
import type { WslMoveReloadableWindow } from '../../persistence/moving-wsl-projects/quiescence/wsl-move-window-write-hold'
/**
* Settings cannot restore its page, so a reload from it would open General (and keep reopening
@@ -8,17 +8,17 @@ import { seedWslMoveCutover } from '../../persistence/__fixtures__/wsl-mover/wsl
import {
loadWslMoveFence,
resetWslMoveFenceForTests
} from '../../persistence/moving-wsl-projects/wsl-move-scope-guard'
import { setWslMoveReloadableWindow } from '../../persistence/moving-wsl-projects/wsl-move-window-write-hold'
} from '../../persistence/moving-wsl-projects/quiescence/wsl-move-scope-guard'
import { setWslMoveReloadableWindow } from '../../persistence/moving-wsl-projects/quiescence/wsl-move-window-write-hold'
import {
registerWslMoveDesktopRewriteStore,
resetWslMoveDesktopRewriteStoresForTests
} from '../../persistence/moving-wsl-projects/wsl-move-desktop-rewrite-stores'
} from '../../persistence/moving-wsl-projects/desktop-state/wsl-move-desktop-rewrite-stores'
import {
isHostSpawnFencedForWslMoveUndo,
resetWslMoveUndoSpawnFencesForTests
} from '../../persistence/moving-wsl-projects/wsl-move-undo-spawn-fence'
import type { WslMoveHostCopyStop } from '../../persistence/moving-wsl-projects/wsl-move-host-copy-stop'
} from '../../persistence/moving-wsl-projects/cutover-recovery/wsl-move-undo-spawn-fence'
import type { WslMoveHostCopyStop } from '../../persistence/moving-wsl-projects/quiescence/wsl-move-host-copy-stop'
type Handler = (event: unknown, request?: unknown) => unknown
+7 -7
View File
@@ -6,17 +6,17 @@ import { z } from 'zod'
import { LOCAL_EXECUTION_HOST_ID } from '../../../shared/execution-host'
import type { WslMoveCutover } from '../../../shared/wsl-move/wsl-move-cutover'
import type { Store } from '../../persistence/loading-store/store'
import { wslMoveDesktopRewriteContext } from '../../persistence/moving-wsl-projects/wsl-move-desktop-rewrite'
import { wslMoveDesktopRewriteContext } from '../../persistence/moving-wsl-projects/desktop-state/wsl-move-desktop-rewrite'
import {
probeWslMoveHostCopies,
stopWslMoveHostCopies,
type WslMoveHostCopyOutcome,
type WslMoveHostCopyPort,
type WslMoveHostCopyStop
} from '../../persistence/moving-wsl-projects/wsl-move-host-copy-stop'
import { wslMoveRewriteScope } from '../../persistence/moving-wsl-projects/wsl-move-rewrite-scope'
import { wslMoveReleasedSessionFocusPatch } from '../../persistence/moving-wsl-projects/wsl-move-session-rewrite'
import { applyWslMoveSessionFocus } from '../../persistence/moving-wsl-projects/wsl-move-main-rewrite-stores'
} from '../../persistence/moving-wsl-projects/quiescence/wsl-move-host-copy-stop'
import { wslMoveRewriteScope } from '../../persistence/moving-wsl-projects/desktop-state/wsl-move-rewrite-scope'
import { wslMoveReleasedSessionFocusPatch } from '../../persistence/moving-wsl-projects/terminal-state/wsl-move-session-rewrite'
import { applyWslMoveSessionFocus } from '../../persistence/moving-wsl-projects/desktop-state/wsl-move-main-rewrite-stores'
import { listEnvironments } from '../../../shared/remote-runtime/host-store/runtime-environment-store'
import { callRuntimeEnvironment } from '../runtime-environments/runtime-environment-transport-routing'
import { wasWslHostKeptForPeers } from '../../wsl/host-lifecycle/wsl-host-kept-for-peers'
@@ -24,8 +24,8 @@ import {
stopWslMoveHostAutomations,
wslMoveMovedAutomationIds,
type WslMoveHostAutomationStop
} from '../../persistence/moving-wsl-projects/wsl-move-undo-host-automations'
import { scheduleWslMoveRewriteRetry } from '../../persistence/moving-wsl-projects/wsl-move-rewrite-retry'
} from '../../persistence/moving-wsl-projects/cutover-recovery/wsl-move-undo-host-automations'
import { scheduleWslMoveRewriteRetry } from '../../persistence/moving-wsl-projects/cutover-recovery/wsl-move-rewrite-retry'
import { connectWslMoveHostService, wslHostRemovalPending } from './wsl-move-host-connect'
import { getWslHostService } from '../../wsl/host-lifecycle/wsl-host-service-instance'
import {
@@ -6,7 +6,7 @@ import {
getOrcadSshDeployment,
type KnownRuntimeEnvironment
} from '../../../shared/remote-runtime/host-catalog/runtime-environments'
import { listOrcadMigrationSourceCutovers } from '../../persistence/migrating-orcad-catalog/orcad-migration-cutover-journal'
import { listOrcadMigrationSourceCutovers } from '../../persistence/migrating-orcad-catalog/cutover-journals/orcad-migration-cutover-journal'
type OrcadManagedPendingMigration = {
migrationId: string
@@ -1,5 +1,8 @@
import { redactRuntimeEnvironment } from '../../../shared/remote-runtime/host-catalog/runtime-environments'
import type { KnownRuntimeEnvironment } from '../../../shared/remote-runtime/host-catalog/runtime-environments'
import {
redactRuntimeEnvironment,
type KnownRuntimeEnvironment
} from '../../../shared/remote-runtime/host-catalog/runtime-environments'
import type { OrcadManagedRollbackResult } from '../../../shared/orcad-managed-runtime'
import { probeActiveOrcadReadiness } from '../activation/orcad-active-readiness'
import { CURRENT_ORCAD_DAEMON_PROTOCOL } from '../activation/orcad-daemon-protocol-crossing'
@@ -14,10 +17,14 @@ import { rollbackOrcad } from '../install/orcad-remote-rollback'
import { collectManagedTerminalCensus } from './orcad-terminal-census-client'
import { updateTerminalCounts } from '../activation/orcad-fenced-stop'
import { findIncompleteManagedOrcadMigration } from './orcad-managed-migration-status'
import { latestOrcadMigrationInto } from '../../persistence/migrating-orcad-catalog/orcad-migration-rollback-mark'
import { latestOrcadMigrationInto } from '../../persistence/migrating-orcad-catalog/cutover-journals/orcad-migration-rollback-mark'
import { refreshMaintainedOrcadPairing } from './orcad-maintenance-pairing-refresh'
import type { LifecycleArgs } from './orcad-managed-lifecycle'
import { withManagedOrcadLifecycle, followLaunchedServerPort } from './orcad-managed-lifecycle'
import {
type LifecycleArgs,
withManagedOrcadLifecycle,
followLaunchedServerPort
} from './orcad-managed-lifecycle'
export function rollbackManagedOrcadEnvironment(
userDataPath: string,
@@ -11,7 +11,10 @@ import {
readRemoteOrcadMigrationCatalogState,
stageRemoteOrcadMigrationCatalog
} from '../migration/catalog/orcad-migration-catalog-client'
import { listRemoteOrcadRepositories } from '../migration/linking/orcad-server-repositories'
import {
listRemoteOrcadRepositories,
type OrcadServerRepository
} from '../migration/linking/orcad-server-repositories'
import {
stageRemoteOrcadMigrationBlobChunk,
stageRemoteOrcadMigrationSnapshotChunk
@@ -21,11 +24,11 @@ import { abortRemoteOrcadMigrationCatalogByReference } from '../migration/catalo
import {
enableRemoteOrcadAutomation,
type EnableServerAutomation
} from '../../persistence/migrating-orcad-catalog/orcad-migration-moved-automations'
} from '../../persistence/migrating-orcad-catalog/retained-source/orcad-migration-moved-automations'
import { censusHostRelayTerminalsFor } from '../../ssh/legacy-relay/endpoints/ssh-host-relay-census-for-target'
import { isBridgeableLease } from '../../ssh/legacy-relay/bridge/legacy-relay-bridge-leases'
import type { OrcadManagedConversionArgs } from './orcad-runtime-conversion'
import type { OrcadServerRepository } from '../migration/linking/orcad-server-repositories'
import {
listRemoteOrcadFolderCatalog,
type OrcadServerFolderCatalog
@@ -21,7 +21,7 @@ import {
import {
findOrcadMigrationSourceCutoverForTarget,
removeOrcadMigrationJournalsForDestination
} from '../../persistence/migrating-orcad-catalog/orcad-migration-cutover-journal'
} from '../../persistence/migrating-orcad-catalog/cutover-journals/orcad-migration-cutover-journal'
import type { SshTarget } from '../../../shared/ssh-types'
import type { CensusHostRelayTerminals } from '../../ssh/migration-source/orcad-migration-terminal-gate'
import { createManagedOrcadEnvironment } from './orcad-runtime-deployment'
@@ -32,11 +32,11 @@ import {
} from '../../ssh/targets/ssh-target-orcad-preflight'
import { ORCAD_MIGRATION_LEAVE_BEHIND_TERMINALS_REASON } from '../../ssh/migration-source/orcad-migration-source-fence'
import type { OrcadMigrationPaneLeasePredicate } from '../../ssh/migration-source/orcad-migration-bridged-panes'
import { retainOrcadMigrationSource } from '../../persistence/migrating-orcad-catalog/orcad-migration-source-retention'
import { retainOrcadMigrationSource } from '../../persistence/migrating-orcad-catalog/retained-source/orcad-migration-source-retention'
import {
enableMovedOrcadAutomations,
type EnableServerAutomation
} from '../../persistence/migrating-orcad-catalog/orcad-migration-moved-automations'
} from '../../persistence/migrating-orcad-catalog/retained-source/orcad-migration-moved-automations'
import {
linkedOrcadMigrationCutoverPort,
linkedOrcadMigrationProjects,
@@ -24,7 +24,7 @@ import {
} from './orcad-managed-runtime-context'
import { closeOrcadManagedTunnel, ensureOrcadManagedTunnel } from './orcad-managed-tunnel'
import { clearManagedOrcadUpdateDeferral } from './orcad-managed-update-deferrals'
import { removeOrcadMigrationJournalsForDestination } from '../../persistence/migrating-orcad-catalog/orcad-migration-cutover-journal'
import { removeOrcadMigrationJournalsForDestination } from '../../persistence/migrating-orcad-catalog/cutover-journals/orcad-migration-cutover-journal'
import { decommissionRemoteOrcad } from '../install/orcad-remote-decommission'
import { withManagedOrcadLifecycle } from './orcad-managed-lifecycle'
import { collectManagedTerminalCensus } from './orcad-terminal-census-client'
@@ -5,7 +5,7 @@ import { listEnvironments } from '../../../shared/remote-runtime/host-store/runt
import {
listOrcadMigrationSourceCutovers,
writeOrcadMigrationSourceCutover
} from '../../persistence/migrating-orcad-catalog/orcad-migration-cutover-journal'
} from '../../persistence/migrating-orcad-catalog/cutover-journals/orcad-migration-cutover-journal'
import { orcadMigrationCutoverFixture } from '../migration/cutover/testing/orcad-migration-cutover-fixture'
import { createManagedLifecycleHarness } from './orcad-managed-lifecycle-test-fixture'
import { isManagedOrcadSshTarget } from '../../ssh/targets/ssh-target-runtime-ownership'
@@ -11,7 +11,7 @@ import { encodePairingOffer } from '../../../shared/remote-runtime/pairing/pairi
import { PAIRING_OFFER_VERSION } from '../../../shared/remote-runtime/pairing/mobile-relay-pairing-offer'
import { orcadMigrationCutoverFixture } from '../migration/cutover/testing/orcad-migration-cutover-fixture'
import { writeOrcadMigrationSourceCutover } from '../../persistence/migrating-orcad-catalog/orcad-migration-cutover-journal'
import { writeOrcadMigrationSourceCutover } from '../../persistence/migrating-orcad-catalog/cutover-journals/orcad-migration-cutover-journal'
import {
createManagedLifecycleHarness,
MANAGED_LOCAL_PORT,
@@ -9,7 +9,7 @@ import {
type OrcadMigrationCutoverContext,
type OrcadMigrationDestinationCatalog
} from './orcad-migration-cutover-coordinator'
import { findOrcadMigrationSourceCutoverForTarget } from '../../../persistence/migrating-orcad-catalog/orcad-migration-cutover-journal'
import { findOrcadMigrationSourceCutoverForTarget } from '../../../persistence/migrating-orcad-catalog/cutover-journals/orcad-migration-cutover-journal'
import {
releaseOrcadMigrationFence,
releaseUndeployedMigrationFence
@@ -20,9 +20,9 @@ import { ORCAD_MIGRATION_DESTINATION_UNSUPPORTED } from '../catalog/orcad-migrat
import {
listOrcadMigrationSourceCutovers,
writeOrcadMigrationSourceCutover
} from '../../../persistence/migrating-orcad-catalog/orcad-migration-cutover-journal'
} from '../../../persistence/migrating-orcad-catalog/cutover-journals/orcad-migration-cutover-journal'
import { assertOrcadMigrationRequestFits } from '../catalog/orcad-migration-request-budget'
import { createOrcadMigrationManifest } from '../../../persistence/migrating-orcad-catalog/orcad-migration-manifest-export'
import { createOrcadMigrationManifest } from '../../../persistence/migrating-orcad-catalog/source/catalog/orcad-migration-manifest-export'
import { MAX_ORCAD_MIGRATION_MANIFEST_BYTES } from '../../../../shared/orcad-migration/orcad-migration-manifest-validation'
import { fenceOrcadMigrationSource } from '../../../ssh/migration-source/orcad-migration-source-fence'
import { SshTargetOrcadClaims } from '../../../ssh/targets/ssh-target-orcad-claims'
@@ -24,7 +24,7 @@ import { orcadMigrationRequestFits } from '../catalog/orcad-migration-request-bu
import {
listOrcadMigrationSourceCutovers,
writeOrcadMigrationSourceCutover
} from '../../../persistence/migrating-orcad-catalog/orcad-migration-cutover-journal'
} from '../../../persistence/migrating-orcad-catalog/cutover-journals/orcad-migration-cutover-journal'
import type { OrcadMigrationSourceCutoverPort } from './orcad-migration-source'
import {
transferOrcadMigrationSnapshots,
@@ -34,7 +34,7 @@ import {
exportedOrcadMigrationBlobSource,
transferOrcadMigrationBlobs
} from '../transfers/orcad-migration-blob-coordinator'
import type { OrcadMigrationExportedBlob } from '../../../persistence/migrating-orcad-catalog/orcad-migration-manifest-export'
import type { OrcadMigrationExportedBlob } from '../../../persistence/migrating-orcad-catalog/source/catalog/orcad-migration-manifest-export'
import type { OrcadMigrationPreflightStore } from '../../../ssh/targets/ssh-target-orcad-preflight'
import { sshRelayMigrationCutoverPort } from '../../../ssh/migration-source/orcad-migration-ssh-relay-source'
import type { SshTargetOrcadClaims } from '../../../ssh/targets/ssh-target-orcad-claims'
@@ -26,19 +26,19 @@ import {
listOrcadMigrationCutoverChainForTarget,
listOrcadMigrationSourceCutovers,
writeOrcadMigrationSourceCutover
} from '../../../persistence/migrating-orcad-catalog/orcad-migration-cutover-journal'
} from '../../../persistence/migrating-orcad-catalog/cutover-journals/orcad-migration-cutover-journal'
import { fakeOrcadMigrationDestination } from './testing/orcad-migration-destination-fake'
import { keepOrcadServerVersion, runOrcadDeltaMove } from './orcad-migration-delta-move'
import { orcadSourceStoreWithout, planOrcadDeltaMove } from './orcad-migration-delta-plan'
import {
createOrcadMigrationManifest,
orcadMigrationCatalogIds
} from '../../../persistence/migrating-orcad-catalog/orcad-migration-manifest-export'
} from '../../../persistence/migrating-orcad-catalog/source/catalog/orcad-migration-manifest-export'
import { MAX_ORCAD_MIGRATION_MANIFEST_BYTES } from '../../../../shared/orcad-migration/orcad-migration-manifest-validation'
import { retainOrcadMigrationSource } from '../../../persistence/migrating-orcad-catalog/orcad-migration-source-retention'
import { reconcileManagedOrcadSshTargets } from '../../../persistence/migrating-orcad-catalog/orcad-retained-source'
import { visibleRepos } from '../../../persistence/migrating-orcad-catalog/orcad-source-visibility'
import { retainOrcadMigrationSource } from '../../../persistence/migrating-orcad-catalog/retained-source/orcad-migration-source-retention'
import { reconcileManagedOrcadSshTargets } from '../../../persistence/migrating-orcad-catalog/retained-source/orcad-retained-source'
import { visibleRepos } from '../../../persistence/migrating-orcad-catalog/source/catalog/orcad-source-visibility'
import { SshConnectionStore } from '../../../ssh/targets/ssh-connection-store'
import { resolveHostServerOnConnect } from '../../../ssh/host-server/ssh-host-server-on-connect'
import { hostServerDepsStub } from '../../../ssh/host-server/testing/ssh-host-server-on-connect-test-deps'
@@ -19,7 +19,7 @@ import {
listOrcadMigrationCutoverChainForTarget,
removeOrcadMigrationSourceCutover,
writeOrcadMigrationSourceCutover
} from '../../../persistence/migrating-orcad-catalog/orcad-migration-cutover-journal'
} from '../../../persistence/migrating-orcad-catalog/cutover-journals/orcad-migration-cutover-journal'
import {
committedOrcadMigrationChain,
orcadDeltaSourceStore,
@@ -28,7 +28,7 @@ import {
type OrcadDeltaMovePlan
} from './orcad-migration-delta-plan'
import { assertOrcadMigrationRequestFits } from '../catalog/orcad-migration-request-budget'
import { retainOrcadMigrationSource } from '../../../persistence/migrating-orcad-catalog/orcad-migration-source-retention'
import { retainOrcadMigrationSource } from '../../../persistence/migrating-orcad-catalog/retained-source/orcad-migration-source-retention'
import {
assessOrcadMigrationTerminals,
type OrcadMigrationTerminalVerdict,
@@ -40,8 +40,8 @@ import {
orcadCatalogFingerprint,
unmovedOrcadSourceRows,
withKeptOrcadSourceRows
} from '../../../persistence/migrating-orcad-catalog/orcad-retained-source'
import { collectOrcadMigrationSourceCatalog } from '../../../persistence/migrating-orcad-catalog/orcad-source-catalog'
} from '../../../persistence/migrating-orcad-catalog/retained-source/orcad-retained-source'
import { collectOrcadMigrationSourceCatalog } from '../../../persistence/migrating-orcad-catalog/source/catalog/orcad-source-catalog'
import type { SshTargetOrcadClaims } from '../../../ssh/targets/ssh-target-orcad-claims'
import { orcadMigrationRefusalReason } from './orcad-migration-refusal-reason'
import { errorMessage } from '../../../../shared/error-message'
@@ -7,17 +7,20 @@ import type {
OrcadMigrationCatalogPayload,
OrcadMigrationManifest
} from '../../../../shared/orcad-migration/orcad-migration-manifest'
import { isRetainedOrcadMigrationSourceCutover } from '../../../../shared/orcad-migration/orcad-migration-source-cutover'
import type { OrcadMigrationSourceCutover } from '../../../../shared/orcad-migration/orcad-migration-source-cutover'
import {
isRetainedOrcadMigrationSourceCutover,
type OrcadMigrationSourceCutover
} from '../../../../shared/orcad-migration/orcad-migration-source-cutover'
import type { SshTarget } from '../../../../shared/ssh-types'
import type { Store } from '../../../persistence/loading-store/store'
import { collectOrcadMigrationSourceCatalog } from '../../../persistence/migrating-orcad-catalog/orcad-source-catalog'
import { listOrcadMigrationCutoverChainForTarget } from '../../../persistence/migrating-orcad-catalog/orcad-migration-cutover-journal'
import { collectOrcadMigrationSourceCatalog } from '../../../persistence/migrating-orcad-catalog/source/catalog/orcad-source-catalog'
import { listOrcadMigrationCutoverChainForTarget } from '../../../persistence/migrating-orcad-catalog/cutover-journals/orcad-migration-cutover-journal'
import {
createOrcadMigrationManifest,
orcadMigrationCatalogIds,
type OrcadMigrationCatalogIds
} from '../../../persistence/migrating-orcad-catalog/orcad-migration-manifest-export'
} from '../../../persistence/migrating-orcad-catalog/source/catalog/orcad-migration-manifest-export'
import type { OrcadMigrationSnapshotSource } from '../transfers/orcad-migration-snapshot-coordinator'
import { collectUntransferredDependentBlockers } from '../../../ssh/targets/ssh-target-orcad-dependents'
import type { OrcadMigrationPreflightStore } from '../../../ssh/targets/ssh-target-orcad-preflight'
@@ -18,10 +18,10 @@ import {
createSqliteTestStore
} from '../../../persistence/persistence-test-harness'
import { Store } from '../../../persistence/loading-store/store'
import { listOrcadMigrationSourceCutovers } from '../../../persistence/migrating-orcad-catalog/orcad-migration-cutover-journal'
import { listOrcadMigrationSourceCutovers } from '../../../persistence/migrating-orcad-catalog/cutover-journals/orcad-migration-cutover-journal'
import { fakeOrcadMigrationDestination } from './testing/orcad-migration-destination-fake'
import { runOrcadDeltaMove } from './orcad-migration-delta-move'
import { reconcileManagedOrcadSshTargets } from '../../../persistence/migrating-orcad-catalog/orcad-retained-source'
import { reconcileManagedOrcadSshTargets } from '../../../persistence/migrating-orcad-catalog/retained-source/orcad-retained-source'
import { SshConnectionStore } from '../../../ssh/targets/ssh-connection-store'
import { runTargetLifecycle } from '../../../ipc/ssh/ssh-target-lifecycle-queue'
@@ -8,7 +8,7 @@ import type { OrcadMigrationSourceCutover } from '../../../../shared/orcad-migra
import type {
OrcadMigrationExportedBlob,
OrcadMigrationManifestExportOptions
} from '../../../persistence/migrating-orcad-catalog/orcad-migration-manifest-export'
} from '../../../persistence/migrating-orcad-catalog/source/catalog/orcad-migration-manifest-export'
import type {
OrcadMigrationFenceResult,
OrcadMigrationFenceState
@@ -23,7 +23,7 @@ import {
} from '../../../ssh/migration-source/orcad-migration-terminal-gate'
import { SshTargetOrcadClaims } from '../../../ssh/targets/ssh-target-orcad-claims'
import { getManagedOrcadFenceEnvironmentId } from '../../../../shared/managed-orcad-ssh-owner'
import { listOrcadMigrationSourceCutovers } from '../../../persistence/migrating-orcad-catalog/orcad-migration-cutover-journal'
import { listOrcadMigrationSourceCutovers } from '../../../persistence/migrating-orcad-catalog/cutover-journals/orcad-migration-cutover-journal'
import {
leaveBehindClearsOrcadMigrationBlockers,
onlyLeavableOrcadMigrationBlockers
@@ -14,7 +14,7 @@ import {
} from '../../../persistence/persistence-test-harness'
import { Store } from '../../../persistence/loading-store/store'
import { stageOrcadMigrationDestination } from './orcad-migration-cutover-coordinator'
import { listOrcadMigrationSourceCutovers } from '../../../persistence/migrating-orcad-catalog/orcad-migration-cutover-journal'
import { listOrcadMigrationSourceCutovers } from '../../../persistence/migrating-orcad-catalog/cutover-journals/orcad-migration-cutover-journal'
import { fakeOrcadMigrationDestination } from './testing/orcad-migration-destination-fake'
import { fenceOrcadMigrationSource } from '../../../ssh/migration-source/orcad-migration-source-fence'
import { releaseUnreachableOrcadSetup } from './orcad-unreachable-setup-release'
@@ -1,7 +1,7 @@
/** Release conversion setups stranded before staging by refused SSH forwarding. Stop any activated slot, unregister, then use undeployed-fence release; source rows remain intact for retry. */
import { listEnvironments } from '../../../../shared/remote-runtime/host-store/runtime-environment-store'
import { removeManagedOrcadEnvironment } from '../../../../shared/remote-runtime/host-store/runtime-environment-managed-orcad-store'
import { findOrcadMigrationSourceCutoverForTarget } from '../../../persistence/migrating-orcad-catalog/orcad-migration-cutover-journal'
import { findOrcadMigrationSourceCutoverForTarget } from '../../../persistence/migrating-orcad-catalog/cutover-journals/orcad-migration-cutover-journal'
import { releaseUndeployedMigrationFence } from '../../../ssh/migration-source/orcad-migration-source-fence'
import { closeOrcadManagedTunnel } from '../../lifecycle/orcad-managed-tunnel'
import type { SshTargetOrcadClaims } from '../../../ssh/targets/ssh-target-orcad-claims'
@@ -22,7 +22,7 @@ import {
import { Store } from '../../../persistence/loading-store/store'
import type { OrcadMigrationDestinationCatalog } from '../cutover/orcad-migration-cutover-coordinator'
import { storeBackedOrcadMigrationDestination } from '../cutover/testing/orcad-migration-destination-fake'
import { removeOrcadMigrationJournalsForDestination } from '../../../persistence/migrating-orcad-catalog/orcad-migration-cutover-journal'
import { removeOrcadMigrationJournalsForDestination } from '../../../persistence/migrating-orcad-catalog/cutover-journals/orcad-migration-cutover-journal'
import { SshConnectionStore } from '../../../ssh/targets/ssh-connection-store'
@@ -8,17 +8,26 @@ import type { SshManagedServerLinkedProject } from '../../../../shared/ssh-types
import { parseWorkspaceKey } from '../../../../shared/workspace-scope'
import { splitWorktreeId } from '../../../../shared/worktree/id'
import type { Store } from '../../../persistence/loading-store/store'
import { abortOrcadMigrationCutover } from '../cutover/orcad-migration-cutover-coordinator'
import type { OrcadMigrationDestinationCatalog } from '../cutover/orcad-migration-cutover-coordinator'
import { writeOrcadMigrationSourceCutover } from '../../../persistence/migrating-orcad-catalog/orcad-migration-cutover-journal'
import { orcadSourceStoreWithout } from '../cutover/orcad-migration-delta-plan'
import type { OrcadDeltaSourceStore } from '../cutover/orcad-migration-delta-plan'
import { createOrcadMigrationManifest } from '../../../persistence/migrating-orcad-catalog/orcad-migration-manifest-export'
import {
abortOrcadMigrationCutover,
type OrcadMigrationDestinationCatalog
} from '../cutover/orcad-migration-cutover-coordinator'
import { writeOrcadMigrationSourceCutover } from '../../../persistence/migrating-orcad-catalog/cutover-journals/orcad-migration-cutover-journal'
import {
orcadSourceStoreWithout,
type OrcadDeltaSourceStore
} from '../cutover/orcad-migration-delta-plan'
import { createOrcadMigrationManifest } from '../../../persistence/migrating-orcad-catalog/source/catalog/orcad-migration-manifest-export'
import type { OrcadMigrationSourceCutoverPort } from '../cutover/orcad-migration-source'
import { sshRelayMigrationCutoverPort } from '../../../ssh/migration-source/orcad-migration-ssh-relay-source'
import { orcadCatalogFingerprint } from '../../../persistence/migrating-orcad-catalog/orcad-retained-source'
import { folderWorkspacesHeldByServer } from './orcad-server-folder-workspaces'
import type { OrcadServerFolderCatalog } from './orcad-server-folder-workspaces'
import { orcadCatalogFingerprint } from '../../../persistence/migrating-orcad-catalog/retained-source/orcad-retained-source'
import {
folderWorkspacesHeldByServer,
type OrcadServerFolderCatalog
} from './orcad-server-folder-workspaces'
import { projectGroupsHeldByServer, serverHeldProjectGroups } from './orcad-server-project-groups'
import type { SshTargetOrcadClaims } from '../../../ssh/targets/ssh-target-orcad-claims'
@@ -17,7 +17,7 @@ import { ORCAD_MIGRATION_BLOB_CHANNEL_RUNTIME_CAPABILITY } from '../../../../sha
import {
inspectOrcadMigrationBlobUploads,
stageOrcadMigrationBlobChunk
} from '../../../persistence/migrating-orcad-catalog/orcad-migration-blob-staging'
} from '../../../persistence/migrating-orcad-catalog/blob-transfer/orcad-migration-blob-staging'
import {
transferOrcadMigrationBlobs,
type OrcadMigrationBlobDestination
@@ -3,11 +3,12 @@
* blob staging and commit can fail at named points (the fault-injection pattern of #29826), and
* terminals that pause on request. The journal is the real one, in a temp directory.
*/
import type {
OrcadMigrationBlobDescriptor,
OrcadMigrationBlobUploadState
import {
type OrcadMigrationBlobDescriptor,
type OrcadMigrationBlobUploadState,
ORCAD_MIGRATION_BLOB_KIND_CONTRACTS
} from '../../../../shared/orcad-migration/orcad-migration-blob-transfer'
import { ORCAD_MIGRATION_BLOB_KIND_CONTRACTS } from '../../../../shared/orcad-migration/orcad-migration-blob-transfer'
import type {
OrcadMigrationCatalogState,
OrcadMigrationManifest
@@ -20,19 +21,22 @@ import { getDefaultPersistedState } from '../../../../shared/constants'
import { terminalTab } from './wsl-mover-profile-rows'
import type { Repo } from '../../../../shared/repo-types'
import type { WslMoveProgressEvent } from '../../../../shared/wsl-move/wsl-move-driver-types'
import { collectOrcadMigrationSourceDormantState } from '../../migrating-orcad-catalog/orcad-source-dormant-state'
import { exportWslMoveManifest } from '../../moving-wsl-projects/wsl-move-manifest-export'
import { runWslMoveDesktopRewritePass } from '../../moving-wsl-projects/wsl-move-desktop-rewrite'
import { collectOrcadMigrationSourceDormantState } from '../../migrating-orcad-catalog/source/dormancy/orcad-source-dormant-state'
import {
exportWslMoveManifest,
type WslMoveManifestExport
} from '../../moving-wsl-projects/manifest-scope/wsl-move-manifest-export'
import { runWslMoveDesktopRewritePass } from '../../moving-wsl-projects/desktop-state/wsl-move-desktop-rewrite'
import {
readWslMoveSleptScrollbackFromHistory,
wslMoveSleptSpoolRoot
} from '../../moving-wsl-projects/wsl-move-slept-scrollback'
} from '../../moving-wsl-projects/terminal-state/wsl-move-slept-scrollback'
import type {
WslMoveDriverDeps,
WslMoveHost,
WslMoveManifestExport
} from '../../moving-wsl-projects/wsl-move-driver-ports'
import type { WslMoveGateInputs } from '../../moving-wsl-projects/wsl-move-terminal-gate'
WslMoveHost
} from '../../moving-wsl-projects/execution/wsl-move-driver-ports'
import type { WslMoveGateInputs } from '../../moving-wsl-projects/quiescence/wsl-move-terminal-gate'
export class WslMoveWorldCrash extends Error {}
@@ -6,8 +6,8 @@ import {
import {
listWslMoveCutovers,
writeWslMoveCutover
} from '../../moving-wsl-projects/wsl-move-cutover-journal'
import { setWslMoveDesktopRewriteRegistryCompleteForTests } from '../../moving-wsl-projects/wsl-move-desktop-rewrite-stores'
} from '../../moving-wsl-projects/cutover-recovery/wsl-move-cutover-journal'
import { setWslMoveDesktopRewriteRegistryCompleteForTests } from '../../moving-wsl-projects/desktop-state/wsl-move-desktop-rewrite-stores'
export function seedWslMoveCutover(userDataPath: string, cutover: WslMoveCutover): void {
const existing = listWslMoveCutovers(userDataPath).find(
@@ -12,23 +12,23 @@ import type { Store } from '../../loading-store/store'
import {
listWslMoveCutoverChain,
listWslMoveCutovers
} from '../../moving-wsl-projects/wsl-move-cutover-journal'
import { runWslMoveDesktopRewritePass } from '../../moving-wsl-projects/wsl-move-desktop-rewrite'
} from '../../moving-wsl-projects/cutover-recovery/wsl-move-cutover-journal'
import { runWslMoveDesktopRewritePass } from '../../moving-wsl-projects/desktop-state/wsl-move-desktop-rewrite'
import {
registerWslMoveDesktopRewriteStore,
resetWslMoveDesktopRewriteStoresForTests,
setWslMoveDesktopRewriteRegistryCompleteForTests
} from '../../moving-wsl-projects/wsl-move-desktop-rewrite-stores'
import { resolveWslMoveFence } from '../../moving-wsl-projects/wsl-move-fence'
} from '../../moving-wsl-projects/desktop-state/wsl-move-desktop-rewrite-stores'
import { resolveWslMoveFence } from '../../moving-wsl-projects/quiescence/wsl-move-fence'
import {
listWslMoveOwedHostAborts,
settleWslMoveOwedHostAborts
} from '../../moving-wsl-projects/wsl-move-owed-host-aborts'
} from '../../moving-wsl-projects/cutover-recovery/wsl-move-owed-host-aborts'
import {
recoverInterruptedWslMoves,
resetWslMoveToZero
} from '../../moving-wsl-projects/wsl-move-reset'
import { runWslMoveRetentionPass } from '../../moving-wsl-projects/wsl-move-retention'
} from '../../moving-wsl-projects/cutover-recovery/wsl-move-reset'
import { runWslMoveRetentionPass } from '../../moving-wsl-projects/cutover-recovery/wsl-move-retention'
import { createWslMoveWorld, type WslMoveWorld } from './wsl-move-driver-world'
import {
createWslMoveKillSwitch,
@@ -3,7 +3,7 @@
* schema defaults the host's load fills in, ids it derives, and representation changes the move
* makes on purpose. Each known gap is a real loss, named here so a fix has to remove it.
*/
import { isRecord } from '../../moving-wsl-projects/wsl-move-canonical-form'
import { isRecord } from '../../moving-wsl-projects/manifest-scope/wsl-move-canonical-form'
/** Session fields the real pipeline does not carry yet, with why; each still differs today. */
export const WSL_MOVE_ROUND_TRIP_KNOWN_GAPS: Readonly<Record<string, string>> = {
@@ -14,7 +14,7 @@ import {
ORCAD_MIGRATION_LOCAL_WSL_SOURCE_RUNTIME_CAPABILITY
} from '../../../../shared/orcad-runtime-capabilities'
import type { Store } from '../../loading-store/store'
import type { WslMoveHost } from '../../moving-wsl-projects/wsl-move-driver-ports'
import type { WslMoveHost } from '../../moving-wsl-projects/execution/wsl-move-driver-ports'
export class WslMoveKilled extends Error {}
@@ -4,7 +4,7 @@ import type { FolderWorkspace } from '../../../../shared/folder-workspaces/folde
import type { ProjectGroup } from '../../../../shared/project-group-types'
import type { WorkspaceLineage } from '../../../../shared/worktree/lineage-types'
import { folderWorkspaceKey, worktreeWorkspaceKey } from '../../../../shared/workspace-scope'
import type { WslMoveProjectionInput } from '../../moving-wsl-projects/wsl-move-state-projection'
import type { WslMoveProjectionInput } from '../../moving-wsl-projects/manifest-scope/wsl-move-state-projection'
import {
project,
repo,
@@ -1,5 +1,5 @@
import type { WorkspaceSessionState } from '../../../../shared/workspace-session/workspace-session-state-types'
import type { WslMoveProjectionInput } from '../../moving-wsl-projects/wsl-move-state-projection'
import type { WslMoveProjectionInput } from '../../moving-wsl-projects/manifest-scope/wsl-move-state-projection'
import {
project,
repo,
@@ -2,7 +2,7 @@
import type {
WslMoveProjectionInput,
WslMoveProjectionScope
} from '../../moving-wsl-projects/wsl-move-state-projection'
} from '../../moving-wsl-projects/manifest-scope/wsl-move-state-projection'
import { foldersAndAutomationsWslMoverProfile } from './wsl-mover-folders-profile'
import { heavyWslMoverProfile } from './wsl-mover-heavy-profile'
import {
@@ -32,12 +32,12 @@ import {
removeWorkspaceLineageForRemovedFolder
} from '../workspace-lineage/metadata-lineage-operations'
import { bumpLocalWorktreeScanGeneration } from '../../../workspaces/catalog/local-worktree-scan-generation'
import { dropOrcadTerminalRestoreHintsForWorktrees } from '../../migrating-orcad-catalog/orcad-terminal-restore-hint-store'
import { dropOrcadTerminalRestoreHintsForWorktrees } from '../../migrating-orcad-catalog/terminal-history/orcad-terminal-restore-hint-store'
import { folderWorkspaceKey } from '../../../../shared/workspace-scope'
import {
applyWslMoveRetainedMarks,
type WslMoveRetainedMark
} from '../../moving-wsl-projects/wsl-move-retained-marks'
} from '../../moving-wsl-projects/cutover-recovery/wsl-move-retained-marks'
type ProjectCollectionOperationsRuntime = Pick<
StoreRuntimeState,
@@ -31,8 +31,8 @@ import type { StoreRuntimeState } from '../store-runtime-state'
import { type WriteSchedulingOperations, scheduleSave } from '../profile-writing/write-scheduling'
import { pruneDeregisteredRepoUiResidue } from './repo-lifecycle-ui-residue'
import { isWslMoveProjectSessionFrozen } from '../../moving-wsl-projects/wsl-move-scope-guard'
import { dropOrcadTerminalRestoreHintsForWorktrees } from '../../migrating-orcad-catalog/orcad-terminal-restore-hint-store'
import { isWslMoveProjectSessionFrozen } from '../../moving-wsl-projects/quiescence/wsl-move-scope-guard'
import { dropOrcadTerminalRestoreHintsForWorktrees } from '../../migrating-orcad-catalog/terminal-history/orcad-terminal-restore-hint-store'
import { getRepoIdFromWorktreeId } from '../../../../shared/worktree/id'
import { applyNewWindowsDriveProjectDefault } from '../../../wsl/filesystem/wsl-drive-project-new-default'
@@ -28,9 +28,9 @@ import { LayoutCommandPersistence } from '../terminal-topology/layout-command-pe
import { SshProfileOperations } from './ssh-state/ssh-profile-operations'
import { RetiredWorktreeNamePersistence } from './project-catalog/retired-worktree-name-persistence'
import { SshLeaseRecoveryOperations } from './ssh-state/ssh-lease-recovery-operations'
import { OrcadSourceExportPersistence } from '../migrating-orcad-catalog/orcad-source-export'
import { OrcadSourceExportPersistence } from '../migrating-orcad-catalog/source/catalog/orcad-source-export'
import { OrcadCatalogImportPersistence } from '../migrating-orcad-catalog/orcad-catalog-import'
import { OrcadMigrationBlobInstallPersistence } from '../migrating-orcad-catalog/orcad-migration-blob-install-persistence'
import { OrcadMigrationBlobInstallPersistence } from '../migrating-orcad-catalog/blob-transfer/orcad-migration-blob-install-persistence'
export type StoreDomainOperations = WriteSchedulingOperations &
PrimaryStateWriteOperations &
@@ -33,8 +33,8 @@ import type {
} from '../scheduling-automations/automation-owner-projection'
import type { ProfileStatePersistenceAuthority } from './profile-writing/profile-state-authority'
import type { AutomationRun } from '../../../shared/automations/history/automation-run'
import { resolveNewPaneShellPath } from '../migrating-orcad-catalog/orcad-shell-history-installer'
import { OrcadTerminalRestoreHintStore } from '../migrating-orcad-catalog/orcad-terminal-restore-hint-store'
import { resolveNewPaneShellPath } from '../migrating-orcad-catalog/terminal-history/orcad-shell-history-installer'
import { OrcadTerminalRestoreHintStore } from '../migrating-orcad-catalog/terminal-history/orcad-terminal-restore-hint-store'
export type DurableProfileStateMutation<T> = {
value: T
@@ -23,7 +23,7 @@ import { preserveRuntimeAuthoredWorkspaceSessionFields } from '../../runtime-aut
import { dropClosedTerminalTabs } from '../../closed-terminal-tab-write-fence'
import { findWorktreeIdForTab } from '../../restoring-sessions/pane-identity-migration'
import { invalidateLocalWorktreeMetadataPruneInputs } from '../../../workspaces/catalog/local-worktree-metadata-prune-gate'
import { isWslMoveWorkspaceSessionFrozen } from '../../moving-wsl-projects/wsl-move-scope-guard'
import { isWslMoveWorkspaceSessionFrozen } from '../../moving-wsl-projects/quiescence/wsl-move-scope-guard'
import {
removeWorkspaceSessionOwner,
workspaceSessionPartitionIdsForHost
@@ -23,7 +23,7 @@ import {
withRequiredWorkspaceSessionMaps
} from './session-host-partitions'
import { dropClosedTerminalTabs } from '../../closed-terminal-tab-write-fence'
import { keepWslMoveFrozenSessionsForStore } from '../../moving-wsl-projects/wsl-move-session-freeze'
import { keepWslMoveFrozenSessionsForStore } from '../../moving-wsl-projects/terminal-state/wsl-move-session-freeze'
import { type WriteSchedulingOperations, scheduleSave } from '../profile-writing/write-scheduling'
import { orderTerminalRowsByTabGroups } from '../../../../shared/workspace-layout/terminal-row-order'
@@ -13,7 +13,7 @@ import {
} from '../../../pty/scrollback/terminal-scrollback-snapshot-async-migration'
import { preserveRuntimeAuthoredWorkspaceSessionFields } from '../../runtime-authored-workspace-session-fields'
import { dropClosedTerminalTabs } from '../../closed-terminal-tab-write-fence'
import { keepWslMoveFrozenSessionsForStore } from '../../moving-wsl-projects/wsl-move-session-freeze'
import { keepWslMoveFrozenSessionsForStore } from '../../moving-wsl-projects/terminal-state/wsl-move-session-freeze'
import { registerPersistedPaneKeyAlias } from '../../restoring-sessions/pane-alias-normalization'
import {
normalizeWorkspaceSessionPaneIdentities,
@@ -1,14 +1,14 @@
import { ORCAD_MIGRATION_BLOB_KIND_CONTRACTS } from '../../../shared/orcad-migration/orcad-migration-blob-transfer'
import type { OrcadMigrationManifest } from '../../../shared/orcad-migration/orcad-migration-manifest'
import type { PersistedState } from '../../../shared/persisted-state-types'
import { parsePaneKey } from '../../../shared/workspace-layout/stable-pane-id'
import { getDaemonHistoryDir } from '../../daemon/launch/daemon-launch-paths'
import { getHistoryRoot } from '../../pty/history/terminal-history-paths'
import type { StoreRuntimeState } from '../loading-store/store-runtime-state'
import { ORCAD_MIGRATION_BLOB_KIND_CONTRACTS } from '../../../../shared/orcad-migration/orcad-migration-blob-transfer'
import type { OrcadMigrationManifest } from '../../../../shared/orcad-migration/orcad-migration-manifest'
import type { PersistedState } from '../../../../shared/persisted-state-types'
import { parsePaneKey } from '../../../../shared/workspace-layout/stable-pane-id'
import { getDaemonHistoryDir } from '../../../daemon/launch/daemon-launch-paths'
import { getHistoryRoot } from '../../../pty/history/terminal-history-paths'
import type { StoreRuntimeState } from '../../loading-store/store-runtime-state'
import {
findOrcadMigrationImportReceipt,
isOrcadMigrationCommitDurable
} from './orcad-catalog-receipt-ledger'
} from '../catalog-commit/orcad-catalog-receipt-ledger'
import { installOrcadMigrationReceivedBlobs } from './orcad-migration-blob-installers'
import { listOrcadMigrationReceivedBlobNames } from './orcad-migration-blob-staging'
import type { OrcadMigrationRequestIdentity } from './orcad-migration-staged-file'
@@ -1,15 +1,15 @@
// Validate blob contents before commit; install only advertised kinds after durable commit.
import { servesWslMovedPaneHistory } from '../../orcad/orcad-migration-wsl-destination'
import { servesWslMovedPaneHistory } from '../../../orcad/orcad-migration-wsl-destination'
import { readFileSync, rmSync } from 'node:fs'
import { dirname } from 'node:path'
import type { OrcadMigrationBlobKind } from '../../../shared/orcad-migration/orcad-migration-blob-transfer'
import type { OrcadMigrationManifest } from '../../../shared/orcad-migration/orcad-migration-manifest'
import type { OrcadMigrationBlobKind } from '../../../../shared/orcad-migration/orcad-migration-blob-transfer'
import type { OrcadMigrationManifest } from '../../../../shared/orcad-migration/orcad-migration-manifest'
import {
ORCAD_MIGRATION_TERMINAL_RESTORE_HINTS_KEY,
parseOrcadMigrationTerminalRestoreHintsText,
type OrcadMigrationTerminalRestoreHint
} from '../../../shared/orcad-migration/orcad-migration-terminal-restore-hints'
import { syncDirectoryDurablySync } from '../../filesystem/durable-file-write'
} from '../../../../shared/orcad-migration/orcad-migration-terminal-restore-hints'
import { syncDirectoryDurablySync } from '../../../filesystem/durable-file-write'
import {
getOrcadMigrationReceivedBlobPath,
stagedOrcadMigrationBlobFiles
@@ -21,15 +21,15 @@ import {
import {
assertOrcadMigrationShellHistoryValid,
installOrcadMigrationShellHistory
} from './orcad-shell-history-installer'
} from '../terminal-history/orcad-shell-history-installer'
import {
assertOrcadMigrationTerminalHistoryValid,
installOrcadMigrationTerminalHistory
} from './orcad-terminal-history-installer'
} from '../terminal-history/orcad-terminal-history-installer'
import type {
OrcadTerminalRestoreHintPlacement,
OrcadTerminalRestoreHintStore
} from './orcad-terminal-restore-hint-store'
} from '../terminal-history/orcad-terminal-restore-hint-store'
type OrcadMigrationStagedBlobFile = {
key: string
@@ -3,9 +3,9 @@ import { existsSync, mkdtempSync, readFileSync, rmSync, writeFileSync, mkdirSync
import { tmpdir } from 'node:os'
import { dirname, join } from 'node:path'
import { afterEach, beforeEach, describe, expect, it } from 'vitest'
import type { OrcadMigrationBlobDescriptor } from '../../../shared/orcad-migration/orcad-migration-blob-transfer'
import { ORCAD_MIGRATION_MANIFEST_VERSION } from '../../../shared/orcad-migration/orcad-migration-manifest-validation'
import type { OrcadMigrationManifest } from '../../../shared/orcad-migration/orcad-migration-manifest'
import type { OrcadMigrationBlobDescriptor } from '../../../../shared/orcad-migration/orcad-migration-blob-transfer'
import { ORCAD_MIGRATION_MANIFEST_VERSION } from '../../../../shared/orcad-migration/orcad-migration-manifest-validation'
import type { OrcadMigrationManifest } from '../../../../shared/orcad-migration/orcad-migration-manifest'
import {
assertOrcadMigrationBlobsReady,
commitOrcadMigrationBlobs,
@@ -13,9 +13,9 @@ import {
type OrcadMigrationBlobDescriptor,
type OrcadMigrationBlobKind,
type OrcadMigrationBlobUploadState
} from '../../../shared/orcad-migration/orcad-migration-blob-transfer'
import type { OrcadMigrationManifest } from '../../../shared/orcad-migration/orcad-migration-manifest'
import { syncDirectoryDurablySync } from '../../filesystem/durable-file-write'
} from '../../../../shared/orcad-migration/orcad-migration-blob-transfer'
import type { OrcadMigrationManifest } from '../../../../shared/orcad-migration/orcad-migration-manifest'
import { syncDirectoryDurablySync } from '../../../filesystem/durable-file-write'
import {
appendOrcadMigrationStagedChunk,
ensureOrcadMigrationDirectory,
@@ -15,8 +15,8 @@ import {
writeSync
} from 'node:fs'
import { join } from 'node:path'
import type { OrcadMigrationManifest } from '../../../shared/orcad-migration/orcad-migration-manifest'
import { syncDirectoryDurablySync } from '../../filesystem/durable-file-write'
import type { OrcadMigrationManifest } from '../../../../shared/orcad-migration/orcad-migration-manifest'
import { syncDirectoryDurablySync } from '../../../filesystem/durable-file-write'
export const ORCAD_MIGRATION_STAGING_DIRECTORY = '.orcad-migration-staging'
@@ -3,10 +3,10 @@ import { createHash } from 'node:crypto'
import { mkdtempSync, readFileSync, rmSync } from 'node:fs'
import { tmpdir } from 'node:os'
import { join } from 'node:path'
import type { OrcadMigrationBlobDescriptor } from '../../../shared/orcad-migration/orcad-migration-blob-transfer'
import type { OrcadMigrationBlobDescriptor } from '../../../../shared/orcad-migration/orcad-migration-blob-transfer'
import { getOrcadMigrationReceivedBlobPath } from './orcad-migration-blob-staging'
import { manifest } from './persistence-orcad-migration-catalog-fixture'
import { createStore, testState } from '../persistence-test-harness'
import { manifest } from '../catalog-commit/persistence-orcad-migration-catalog-fixture'
import { createStore, testState } from '../../persistence-test-harness'
vi.mock('electron', () => ({
app: { getPath: () => testState.dir },
@@ -17,7 +17,7 @@ vi.mock('electron', () => ({
}
}))
vi.mock('../../telemetry/client', () => ({ track: vi.fn() }))
vi.mock('../../../telemetry/client', () => ({ track: vi.fn() }))
// Use a blob kind without an installer to isolate channel behavior.
const bytes = Buffer.from('session record one\nsession record two\n')
@@ -6,20 +6,20 @@ import { join } from 'node:path'
import {
ORCAD_MIGRATION_BLOB_CHUNK_BYTES,
type OrcadMigrationBlobDescriptor
} from '../../../shared/orcad-migration/orcad-migration-blob-transfer'
import type { OrcadMigrationManifest } from '../../../shared/orcad-migration/orcad-migration-manifest'
} from '../../../../shared/orcad-migration/orcad-migration-blob-transfer'
import type { OrcadMigrationManifest } from '../../../../shared/orcad-migration/orcad-migration-manifest'
import { getOrcadMigrationReceivedBlobPath } from './orcad-migration-blob-staging'
import {
commitStagedOrcadMigrationCatalogDurably,
getOrcadMigrationCatalogState
} from '../../runtime/hosts/migration/orcad-migration-catalog-import'
} from '../../../runtime/hosts/migration/orcad-migration-catalog-import'
import {
DORMANT_LEAF_ID,
DORMANT_WORKTREE_ID,
dormantState,
manifest
} from './persistence-orcad-migration-catalog-fixture'
import { createStore, readDataFile, testState, writeDataFile } from '../persistence-test-harness'
} from '../catalog-commit/persistence-orcad-migration-catalog-fixture'
import { createStore, readDataFile, testState, writeDataFile } from '../../persistence-test-harness'
vi.mock('electron', () => ({
app: { getPath: () => testState.dir },
@@ -30,7 +30,7 @@ vi.mock('electron', () => ({
}
}))
vi.mock('../../telemetry/client', () => ({ track: vi.fn() }))
vi.mock('../../../telemetry/client', () => ({ track: vi.fn() }))
type Store = ReturnType<typeof createStore>
@@ -2,20 +2,20 @@ import { describe, it, expect, vi } from 'vitest'
import {
createWorkerMaintenanceFixture,
maintenanceBarrier
} from '../loading-store/profile-writing/profile-state-maintenance-fixture'
import { ProfileStateWriterError } from '../profile-state/writer/profile-state-writer-errors'
import { hostWorktreeTarget } from '../../../shared/worktree/host-qualified-identity'
} from '../../loading-store/profile-writing/profile-state-maintenance-fixture'
import { ProfileStateWriterError } from '../../profile-state/writer/profile-state-writer-errors'
import { hostWorktreeTarget } from '../../../../shared/worktree/host-qualified-identity'
import {
DORMANT_AUTOMATION_RUN,
dormantState,
manifest
} from './persistence-orcad-migration-catalog-fixture'
vi.mock('../../telemetry/client', () => ({ track: vi.fn() }))
vi.mock('../../telemetry/cohort-classifier', () => ({
vi.mock('../../../telemetry/client', () => ({ track: vi.fn() }))
vi.mock('../../../telemetry/cohort-classifier', () => ({
getCohortAtEmit: () => ({ nth_repo_added: 1 })
}))
vi.mock('../../ssh/config/ssh-config-parser', () => ({
vi.mock('../../../ssh/config/ssh-config-parser', () => ({
loadUserSshConfig: () => ({ hosts: [] }),
sshConfigHostsToTargets: () => []
}))
@@ -1,5 +1,5 @@
import { WORKTREE_METADATA_DOMAINS } from '../profile-save-domains'
import { WORKSPACE_SESSION_DOMAINS } from '../workspace-session-domains'
import { WORKTREE_METADATA_DOMAINS } from '../../profile-save-domains'
import { WORKSPACE_SESSION_DOMAINS } from '../../workspace-session-domains'
/** An imported catalog adds repos, workspaces and their dormant state, and records its receipts. */
export const ORCAD_CATALOG_COMMIT_DOMAINS = [
@@ -1,16 +1,16 @@
// Commit receipts remain authoritative indefinitely; abandoned stages expire.
import { MAX_ORCAD_MIGRATION_IMPORT_RECEIPTS } from '../../../shared/orcad-migration/orcad-migration-manifest-validation'
import { MAX_ORCAD_MIGRATION_IMPORT_RECEIPTS } from '../../../../shared/orcad-migration/orcad-migration-manifest-validation'
import type {
OrcadMigrationImportReceipt,
OrcadMigrationManifest
} from '../../../shared/orcad-migration/orcad-migration-manifest'
import { MAX_ORCAD_MIGRATION_EVICTED_RECEIPTS } from '../../../shared/orcad-migration/orcad-migration-evicted-receipts'
import type { PersistedState } from '../../../shared/persisted-state-types'
import type { StoreRuntimeState } from '../loading-store/store-runtime-state'
} from '../../../../shared/orcad-migration/orcad-migration-manifest'
import { MAX_ORCAD_MIGRATION_EVICTED_RECEIPTS } from '../../../../shared/orcad-migration/orcad-migration-evicted-receipts'
import type { PersistedState } from '../../../../shared/persisted-state-types'
import type { StoreRuntimeState } from '../../loading-store/store-runtime-state'
import {
orcadMigrationStagingKey,
type OrcadMigrationRequestIdentity
} from './orcad-migration-staged-file'
} from '../blob-transfer/orcad-migration-staged-file'
// Allow a week for clients that went offline mid-move.
export const ORCAD_MIGRATION_STAGE_TTL_MS = 7 * 24 * 60 * 60 * 1000
@@ -1,29 +1,29 @@
import type { FolderWorkspace } from '../../../shared/folder-workspaces/folder-workspace-types'
import type { FolderWorkspace } from '../../../../shared/folder-workspaces/folder-workspace-types'
import {
serializeOrcadMigrationValue,
type OrcadMigrationImportReceipt,
type OrcadMigrationManifest
} from '../../../shared/orcad-migration/orcad-migration-manifest'
import type { ProjectGroup } from '../../../shared/project-group-types'
import type { Repo } from '../../../shared/repo-types'
import { normalizeRuntimePathForComparison } from '../../../shared/cross-platform-path'
import { isRepoOnCatalogHost } from '../../../shared/execution-host'
} from '../../../../shared/orcad-migration/orcad-migration-manifest'
import type { ProjectGroup } from '../../../../shared/project-group-types'
import type { Repo } from '../../../../shared/repo-types'
import { normalizeRuntimePathForComparison } from '../../../../shared/cross-platform-path'
import { isRepoOnCatalogHost } from '../../../../shared/execution-host'
import { assertOrcadMigrationStagedCatalogClaims } from './orcad-staged-catalog-claims'
import {
toOrcadDestinationFolderWorkspace,
toOrcadDestinationProjectGroup,
toOrcadDestinationRepository
} from './orcad-destination-catalog-projection'
} from '../destination/orcad-destination-catalog-projection'
import {
syncProjectHostSetupCompatibilityState,
type RepoLifecycleOperations
} from '../loading-store/project-catalog/repo-lifecycle-operations'
import type { StoreRuntimeState } from '../loading-store/store-runtime-state'
} from '../../loading-store/project-catalog/repo-lifecycle-operations'
import type { StoreRuntimeState } from '../../loading-store/store-runtime-state'
import {
applyPreparedOrcadMigrationDormantState,
prepareOrcadMigrationDormantState,
type PreparedOrcadMigrationDormantState
} from './orcad-dormant-state-records'
} from '../destination/orcad-dormant-state-records'
import { sameOrcadRepositoryConfiguration, selectNewRows } from './orcad-catalog-row-identity'
export type PreparedOrcadMigrationCatalog = {
@@ -3,8 +3,8 @@ import type {
OrcadMigrationCatalogReference,
OrcadMigrationCatalogReferenceAbortResult,
OrcadMigrationManifest
} from '../../../shared/orcad-migration/orcad-migration-manifest'
import type { StoreRuntimeState } from '../loading-store/store-runtime-state'
} from '../../../../shared/orcad-migration/orcad-migration-manifest'
import type { StoreRuntimeState } from '../../loading-store/store-runtime-state'
export function stagedManifests(state: StoreRuntimeState['state']): OrcadMigrationManifest[] {
return (state.orcadMigrationStagedCatalogs ?? []).map((entry) => entry.manifest)

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