@intentic/machine 1.345.0 → 1.347.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (113) hide show
  1. package/README.md +100 -135
  2. package/dist/device/commands.d.ts +6 -1
  3. package/dist/device/commands.d.ts.map +1 -1
  4. package/dist/device/commands.js +19 -7
  5. package/dist/device/commands.js.map +1 -1
  6. package/dist/device/grant.d.ts +2 -1
  7. package/dist/device/grant.d.ts.map +1 -1
  8. package/dist/device/router.d.ts +2 -1
  9. package/dist/device/router.d.ts.map +1 -1
  10. package/dist/device/sandbox-rounds/keeper.js +1 -1
  11. package/dist/device/sandbox-rounds/keeper.js.map +1 -1
  12. package/dist/device/tools/agent.d.ts.map +1 -1
  13. package/dist/device/tools/agent.js +7 -7
  14. package/dist/device/tools/agent.js.map +1 -1
  15. package/dist/device/tools/ic-binary.d.ts +1 -0
  16. package/dist/device/tools/ic-binary.d.ts.map +1 -1
  17. package/dist/device/tools/ic-binary.js +29 -1
  18. package/dist/device/tools/ic-binary.js.map +1 -1
  19. package/dist/device/tools/os/settings.js +3 -3
  20. package/dist/device/tools/os/settings.js.map +1 -1
  21. package/dist/device/tools/sandboxes.d.ts +1 -0
  22. package/dist/device/tools/sandboxes.d.ts.map +1 -1
  23. package/dist/device/tools/sandboxes.js +7 -2
  24. package/dist/device/tools/sandboxes.js.map +1 -1
  25. package/dist/install.d.ts +9 -1
  26. package/dist/install.d.ts.map +1 -1
  27. package/dist/install.js +28 -4
  28. package/dist/install.js.map +1 -1
  29. package/dist/resident/resident.d.ts.map +1 -1
  30. package/dist/resident/resident.js +1 -2
  31. package/dist/resident/resident.js.map +1 -1
  32. package/dist/status.d.ts.map +1 -1
  33. package/dist/status.js +1 -8
  34. package/dist/status.js.map +1 -1
  35. package/dist/sync/commands.d.ts +1 -9
  36. package/dist/sync/commands.d.ts.map +1 -1
  37. package/dist/sync/commands.js +48 -89
  38. package/dist/sync/commands.js.map +1 -1
  39. package/dist/sync/config.d.ts +21 -25
  40. package/dist/sync/config.d.ts.map +1 -1
  41. package/dist/sync/config.js +76 -35
  42. package/dist/sync/config.js.map +1 -1
  43. package/dist/sync/endpoint.d.ts +1 -1
  44. package/dist/sync/endpoint.d.ts.map +1 -1
  45. package/dist/sync/endpoint.js +2 -3
  46. package/dist/sync/endpoint.js.map +1 -1
  47. package/dist/sync/folders.d.ts.map +1 -1
  48. package/dist/sync/folders.js.map +1 -1
  49. package/dist/sync/gone-watch.d.ts +0 -1
  50. package/dist/sync/gone-watch.d.ts.map +1 -1
  51. package/dist/sync/gone-watch.js +16 -53
  52. package/dist/sync/gone-watch.js.map +1 -1
  53. package/dist/sync/holds.d.ts +30 -0
  54. package/dist/sync/holds.d.ts.map +1 -0
  55. package/dist/sync/holds.js +117 -0
  56. package/dist/sync/holds.js.map +1 -0
  57. package/dist/sync/low-disk.d.ts +2 -9
  58. package/dist/sync/low-disk.d.ts.map +1 -1
  59. package/dist/sync/low-disk.js +10 -38
  60. package/dist/sync/low-disk.js.map +1 -1
  61. package/dist/sync/mirror.d.ts +1 -4
  62. package/dist/sync/mirror.d.ts.map +1 -1
  63. package/dist/sync/mirror.js +57 -161
  64. package/dist/sync/mirror.js.map +1 -1
  65. package/dist/sync/mutagen-env.d.ts +1 -3
  66. package/dist/sync/mutagen-env.d.ts.map +1 -1
  67. package/dist/sync/mutagen-env.js +2 -12
  68. package/dist/sync/mutagen-env.js.map +1 -1
  69. package/dist/sync/mutagen-move.d.ts +3 -1
  70. package/dist/sync/mutagen-move.d.ts.map +1 -1
  71. package/dist/sync/mutagen-move.js +30 -22
  72. package/dist/sync/mutagen-move.js.map +1 -1
  73. package/dist/sync/mutagen.d.ts +4 -9
  74. package/dist/sync/mutagen.d.ts.map +1 -1
  75. package/dist/sync/mutagen.js +11 -71
  76. package/dist/sync/mutagen.js.map +1 -1
  77. package/dist/sync/project/project-commands.d.ts +0 -3
  78. package/dist/sync/project/project-commands.d.ts.map +1 -1
  79. package/dist/sync/project/project-commands.js +3 -2
  80. package/dist/sync/project/project-commands.js.map +1 -1
  81. package/dist/sync/project/project-delivery.d.ts.map +1 -1
  82. package/dist/sync/project/project-delivery.js +3 -3
  83. package/dist/sync/project/project-delivery.js.map +1 -1
  84. package/dist/sync/project/project-transfer.d.ts +4 -0
  85. package/dist/sync/project/project-transfer.d.ts.map +1 -1
  86. package/dist/sync/project/project-transfer.js +9 -2
  87. package/dist/sync/project/project-transfer.js.map +1 -1
  88. package/dist/sync/report.d.ts.map +1 -1
  89. package/dist/sync/report.js +16 -10
  90. package/dist/sync/report.js.map +1 -1
  91. package/dist/sync/retire.d.ts.map +1 -1
  92. package/dist/sync/retire.js +1 -2
  93. package/dist/sync/retire.js.map +1 -1
  94. package/dist/sync/tunnel.d.ts +4 -3
  95. package/dist/sync/tunnel.d.ts.map +1 -1
  96. package/dist/sync/tunnel.js +107 -42
  97. package/dist/sync/tunnel.js.map +1 -1
  98. package/dist/sync/uninstall.d.ts.map +1 -1
  99. package/dist/sync/uninstall.js +1 -1
  100. package/dist/sync/uninstall.js.map +1 -1
  101. package/dist/sync/wake.d.ts +3 -0
  102. package/dist/sync/wake.d.ts.map +1 -0
  103. package/dist/sync/wake.js +43 -0
  104. package/dist/sync/wake.js.map +1 -0
  105. package/package.json +9 -9
  106. package/dist/sync/attach-commands.d.ts +0 -39
  107. package/dist/sync/attach-commands.d.ts.map +0 -1
  108. package/dist/sync/attach-commands.js +0 -164
  109. package/dist/sync/attach-commands.js.map +0 -1
  110. package/dist/sync/swap-pause.d.ts +0 -10
  111. package/dist/sync/swap-pause.d.ts.map +0 -1
  112. package/dist/sync/swap-pause.js +0 -29
  113. package/dist/sync/swap-pause.js.map +0 -1
@@ -1,10 +1,9 @@
1
1
  import net from "node:net";
2
- import { sleep } from "@intentic/base/async";
3
2
  import { errorMessage } from "@intentic/base/errors";
4
3
  import { plural } from "@intentic/base/format";
5
4
  import { writeFileAtomic } from "@intentic/base/fs";
6
5
  import { PortsListSchema } from "@intentic/sandbox-contract/schemas/ports";
7
- import { isAttachedPairing, mirrorHeartbeatPath, pairingKey, pairingTransport, readState, removeSandboxPairings, setFileSyncAutoPaused, setFileSyncSwapPaused, setSandboxGone, setUnreachableSince, updateState, } from "./config.js";
6
+ import { mirrorHeartbeatPath, pairingKey, pairingTransport, readState, removeSandboxPairings, retireLegacyPairings, setSandboxGone, setSwapSince, setUnreachableSince, updateState, } from "./config.js";
8
7
  import { pairingEndpoint } from "./endpoint.js";
9
8
  import { runProcess, runProcessSync } from "./exec.js";
10
9
  import { candidateBases, createDaemonBases, dialedPairings } from "../daemon-base.js";
@@ -14,14 +13,15 @@ import { retireSandbox } from "./retire.js";
14
13
  import { readSwaps } from "../device/sandbox-rounds/ic-swaps.js";
15
14
  import { publishedPortsReader } from "./docker-ports.js";
16
15
  import { realBridgeExec, runGitBridge } from "./git-bridge.js";
16
+ import { holdSessions, holdsSync, recordOf, RELEASE_FORWARDS_MS, shouldReleaseForwards, swapBegan, swapStep, syncHeld, syncHolds, UNREACHABLE_HOLD_MS } from "./holds.js";
17
17
  import { guardDisks } from "./low-disk.js";
18
- import { ensureSyncSession, existingSyncSessions, forwardedPorts, forwardSessionName, healDerivedConflicts, MUTAGEN_CALL_TIMEOUT_MS, mutagenForwardArgs, ourForwardSessions, pauseRunningSync, relabelBudget, retireOrphanSessions, resumeAutoPausedSync, resumeSwapPausedSync, runMutagenAsync, sayDaemonEventsTo, sessionLabels, startMutagenDaemon, syncMode, syncSessionNames, } from "./mutagen.js";
18
+ import { ensureSyncSession, existingSyncSessions, forwardedPorts, forwardSessionName, healDerivedConflicts, MUTAGEN_CALL_TIMEOUT_MS, mutagenForwardArgs, ourForwardSessions, relabelBudget, retireOrphanSessions, runMutagenAsync, sayDaemonEventsTo, sessionLabels, startMutagenDaemon, syncMode, syncSessionNames, } from "./mutagen.js";
19
19
  import { ensureMutagen } from "./binary/mutagen-binary.js";
20
20
  import { moveOffSharedMutagen } from "./mutagen-move.js";
21
21
  import { quieted } from "./repeats.js";
22
+ import { sleepUnlessWoken } from "./wake.js";
22
23
  import { deviceReport, scopedReport } from "./report.js";
23
24
  import { pairingSshConfig, writeManagedSshConfig } from "./ssh.js";
24
- import { holdsSync, recordOf, RELEASE_FORWARDS_MS, shouldReleaseForwards, swapPauseStep } from "./swap-pause.js";
25
25
  import { createTunnelPool, tunnelTargets } from "./tunnel.js";
26
26
  const POLL_MS = 5000;
27
27
  const PORTS_TIMEOUT_MS = 10_000;
@@ -29,8 +29,6 @@ const REPO_LIST_EVERY_TICKS = 12;
29
29
  const REPORT_EVERY_TICKS = 3;
30
30
  const REPORT_TIMEOUT_MS = 10_000;
31
31
  const REVOKED_POLLS = 3;
32
- const UNREACHABLE_PAUSE_MS = 60 * 60_000;
33
- export const shouldAutoPauseFileSync = (unreachableForMs) => unreachableForMs >= UNREACHABLE_PAUSE_MS;
34
32
  export const pollBackoffMs = (unreachableForMs) => unreachableForMs < 60_000 ? 0 : unreachableForMs < 10 * 60_000 ? 30_000 : 5 * 60_000;
35
33
  export const pollDue = (held, now) => held === undefined || now - held.lastTried >= pollBackoffMs(now - held.since);
36
34
  export class SyncAuthError extends Error {
@@ -226,9 +224,6 @@ const servePairing = async (context, pairing, base) => {
226
224
  const { mutagen, claimedBy, holding, holders, say: log } = context;
227
225
  const baseline = pairing.mirroredPorts ?? [];
228
226
  const ports = pairing.syncToken === undefined ? [] : await fetchWorkspacePorts(base, pairing.syncToken);
229
- if (isAttachedPairing(pairing)) {
230
- return [];
231
- }
232
227
  if (pairing.mirrorOff === true) {
233
228
  await retireSwitchedOff(mutagen, pairing, log);
234
229
  return [];
@@ -287,7 +282,6 @@ const dropRevokedPairing = async (mutagen, sandboxId, log) => {
287
282
  await removeSandboxPairings(sandboxId);
288
283
  retireOrphanSessions(mutagen, (await readState()).pairings, log);
289
284
  };
290
- const keyOfSandbox = (key, sandboxId) => key === sandboxId || key.startsWith(`${sandboxId}~`);
291
285
  const guard = async (log, what, step) => {
292
286
  try {
293
287
  await step();
@@ -309,15 +303,14 @@ const absorbRejectedPoll = async (mutagen, pairing, rejectedPolls, repos, sessio
309
303
  log(`${pairing.sandboxId} rejected the sync token ${REVOKED_POLLS} polls in a row: this machine's enrollment was revoked.`);
310
304
  rejectedPolls.delete(pairing.sandboxId);
311
305
  repos.delete(pairing.sandboxId);
312
- for (const key of [...sessionsPending].filter((held) => keyOfSandbox(held, pairing.sandboxId))) {
313
- sessionsPending.delete(key);
314
- }
306
+ sessionsPending.delete(pairingKey(pairing));
315
307
  await dropRevokedPairing(mutagen, pairing.sandboxId, log);
316
308
  return true;
317
309
  };
318
310
  const absorbUnreachablePoll = async (mutagen, pairing, unreachable, log) => {
319
311
  const now = Date.now();
320
- const since = unreachable.get(pairing.sandboxId)?.since ?? pairing.unreachableSince ?? now;
312
+ const before = unreachable.get(pairing.sandboxId);
313
+ const since = before?.since ?? pairing.unreachableSince ?? now;
321
314
  unreachable.set(pairing.sandboxId, { since, lastTried: now });
322
315
  if (pairing.unreachableSince === undefined) {
323
316
  await setUnreachableSince(pairing.sandboxId, since);
@@ -327,15 +320,11 @@ const absorbUnreachablePoll = async (mutagen, pairing, unreachable, log) => {
327
320
  await retirePairingMirror(mutagen, pairing.sandboxId);
328
321
  log(` ${pairing.sandboxId}: unreachable for ${RELEASE_FORWARDS_MS / 60_000} minutes; took its ${plural(mirrored, "port")} off localhost. They come back when it answers again.`);
329
322
  }
330
- return await pauseIfLongUnreachable(mutagen, pairing, now - since, log);
331
- };
332
- const pauseIfLongUnreachable = async (mutagen, pairing, unreachableForMs, log) => {
333
- if (pairing.fileSyncAutoPaused === true || !shouldAutoPauseFileSync(unreachableForMs) || !pauseRunningSync(mutagen, pairing)) {
334
- return false;
323
+ const holds = now - since >= UNREACHABLE_HOLD_MS;
324
+ if (holds && (before === undefined || before.lastTried - since < UNREACHABLE_HOLD_MS)) {
325
+ log(` ${pairing.sandboxId}: unreachable for an hour; its file sync holds still to stop permanent reconnect and scanning load, and carries on when it answers.`);
335
326
  }
336
- await setFileSyncAutoPaused(pairingKey(pairing), true);
337
- log(` ${pairingKey(pairing)}: unreachable for one hour; paused its Mutagen sessions to stop permanent reconnect/scanning load. They resume automatically when it returns.`);
338
- return true;
327
+ return holds;
339
328
  };
340
329
  const startBridge = (tracking, pairing, tick, say) => {
341
330
  const id = pairing.sandboxId;
@@ -393,7 +382,7 @@ export const markPrepared = (prepared, pairing) => void prepared.add(setupOf(pai
393
382
  const prepareSession = async (mutagen, pairing, pending, relabels, say) => {
394
383
  let converged = false;
395
384
  await guard(say, `${pairingKey(pairing)}: preparing its file sync`, async () => {
396
- converged = await ensureSyncSession(mutagen, pairing, say, relabels);
385
+ converged = await ensureSyncSession(mutagen, pairing, say, syncHeld(pairing, Date.now()), relabels);
397
386
  });
398
387
  if (converged) {
399
388
  pending.delete(pairingKey(pairing));
@@ -404,62 +393,15 @@ const prepareSession = async (mutagen, pairing, pending, relabels, say) => {
404
393
  return converged;
405
394
  };
406
395
  const dormant = (mutagen, pairing) => pairing.goneSince !== undefined ||
407
- pairing.fileSyncPausedFor !== undefined ||
408
- (pairing.fileSyncAutoPaused === true && (existingSyncSessions(mutagen, syncSessionNames(pairing)) ?? [undefined]).length > 0);
409
- export const readyToPrepare = async (setups, firstCopyAhead, announce) => {
410
- const told = new Map();
411
- const ready = [];
412
- for (const pairing of setups) {
413
- if (isAttachedPairing(pairing) && pairing.mode === "sync" && pairing.localDir !== undefined && firstCopyAhead(pairing)) {
414
- const said = told.get(pairing.sandboxId) ?? (await announce(pairing));
415
- told.set(pairing.sandboxId, said);
416
- if (!said) {
417
- continue;
418
- }
419
- }
420
- ready.push(pairing);
421
- }
422
- return ready;
423
- };
424
- const announcer = (mutagen, bases, unsupported, unreachable, gone, say) => async (pairing) => {
425
- if (pairing.goneSince !== undefined) {
426
- return false;
427
- }
428
- if (pairing.syncToken === undefined || unsupported.has(pairing.sandboxId)) {
429
- return true;
430
- }
431
- if (!pollDue(unreachable.get(pairing.sandboxId), Date.now())) {
432
- return false;
433
- }
434
- try {
435
- const response = await sendReport(await bases.resolve(pairing), pairing, await deviceReport(mutagen));
436
- if (response.status === 404) {
437
- unsupported.add(pairing.sandboxId);
438
- say(` ${pairing.sandboxId}: this sandbox is running a daemon without machine reports, its Devices view will stay empty.`);
439
- return true;
440
- }
441
- if (answeredGone(response)) {
442
- await gone(pairing);
443
- return false;
444
- }
445
- if (!response.ok) {
446
- say(` ${pairingKey(pairing)}: ${pairing.sandboxId} did not take the report naming this folder (${response.status}); its first copy waits for it.`);
447
- }
448
- return response.ok;
449
- }
450
- catch (error) {
451
- say(` ${pairingKey(pairing)}: ${pairing.sandboxId} could not be told of this folder (${errorMessage(error)}); its first copy waits until it can.`);
452
- return false;
453
- }
454
- };
455
- const prepareSessions = async (mutagen, pairings, prepared, pending, announce, passes, say) => {
456
- const firstCopyAhead = (pairing) => (existingSyncSessions(mutagen, syncSessionNames(pairing)) ?? []).length === 0;
396
+ pairing.containerAway !== undefined ||
397
+ (syncHolds(pairing, Date.now()).includes("unreachable") && (existingSyncSessions(mutagen, syncSessionNames(pairing)) ?? [undefined]).length > 0);
398
+ const prepareSessions = async (mutagen, pairings, prepared, pending, passes, say) => {
457
399
  const unprepared = unpreparedSetups(pairings, prepared);
458
400
  const docker = unprepared.filter((pairing) => pairingTransport(pairing) === "docker");
459
401
  if (docker.length > 0) {
460
402
  await guard(say, "asking after the containers docker pairings reach", async () => await checkContainers(passes.fate, docker, answeringOf(passes.tracking)));
461
403
  }
462
- for (const pairing of await readyToPrepare(unprepared, firstCopyAhead, announce)) {
404
+ for (const pairing of unprepared) {
463
405
  markPrepared(prepared, pairing);
464
406
  if (dormant(mutagen, pairing)) {
465
407
  pending.add(pairingKey(pairing));
@@ -479,29 +421,23 @@ const retryPendingSessions = async (mutagen, pairings, sessionsPending, tick, re
479
421
  }
480
422
  }
481
423
  };
482
- export const holdSyncDuringSwaps = async (mutagen, pairings, unreachable, say, read = readSwaps) => {
424
+ export const holdSyncDuringSwaps = async (pairings, unreachable, say, read = readSwaps, record = setSwapSince) => {
483
425
  const records = await read();
484
426
  const now = Date.now();
485
427
  const held = new Set();
486
428
  for (const pairing of pairings) {
487
- const record = recordOf(pairing, records);
488
- const holds = holdsSync(record, now, !unreachable.has(pairing.sandboxId));
429
+ const swap = recordOf(pairing, records);
430
+ const holds = holdsSync(swap, pairing.swapSince, now, !unreachable.has(pairing.sandboxId));
489
431
  if (holds) {
490
432
  held.add(pairing.sandboxId);
491
433
  }
492
- const step = swapPauseStep(pairing, holds);
493
- if (step === "pause" && pauseRunningSync(mutagen, pairing)) {
494
- await setFileSyncSwapPaused(pairingKey(pairing), true);
495
- say(` ${pairingKey(pairing)}: its sandbox is being swapped on this machine; file sync is paused until the new version has held.`);
496
- }
497
- else if (step === "resume") {
498
- if (await resumeSwapPausedSync(mutagen, pairing)) {
499
- await setFileSyncSwapPaused(pairingKey(pairing), false);
500
- say(` ${pairingKey(pairing)}: its sandbox's swap is settled; file sync resumed.`);
501
- }
502
- else if (pairing.fileSyncLowDisk === undefined) {
503
- say(` ${pairingKey(pairing)}: its sandbox's swap is settled, but Mutagen did not take the resume of its file sync; trying again.`);
504
- }
434
+ const began = swapBegan(swap, pairing.swapSince, now);
435
+ const step = swapStep(pairing, holds, began);
436
+ if (step !== undefined) {
437
+ await record(pairingKey(pairing), step === "began" ? began : undefined);
438
+ say(step === "began"
439
+ ? ` ${pairingKey(pairing)}: its sandbox is being swapped on this machine; file sync holds still until the new version has held.`
440
+ : ` ${pairingKey(pairing)}: its sandbox's swap is settled; file sync carries on.`);
505
441
  }
506
442
  }
507
443
  return held;
@@ -511,7 +447,7 @@ const runPairingPass = async (context, pairing, base) => {
511
447
  const { rejectedPolls, unreachable } = tracking;
512
448
  const swapping = swapHeld.has(pairing.sandboxId);
513
449
  const short = context.diskHeld.has(pairingKey(pairing));
514
- let pausedThisPass = false;
450
+ let heldThisPass = false;
515
451
  try {
516
452
  const mirrored = await servePairing(context, pairing, base);
517
453
  rejectedPolls.delete(pairing.sandboxId);
@@ -522,18 +458,12 @@ const runPairingPass = async (context, pairing, base) => {
522
458
  if (context.pairings.some((held) => held.sandboxId === pairing.sandboxId && held.unreachableSince !== undefined)) {
523
459
  await setUnreachableSince(pairing.sandboxId, undefined);
524
460
  }
525
- if (!swapping && !short && (await resumeAutoPausedSync(mutagen, pairing))) {
526
- await setFileSyncAutoPaused(pairingKey(pairing), false);
527
- say(` ${pairingKey(pairing)}: reachable again; resumed its automatically paused file sync`);
461
+ for (const port of mirrored) {
462
+ claimedBy.set(port.port, pairing.sandboxId);
528
463
  }
529
- if (!isAttachedPairing(pairing)) {
530
- for (const port of mirrored) {
531
- claimedBy.set(port.port, pairing.sandboxId);
532
- }
533
- handOver(holding, pairing.sandboxId, mirrored);
534
- if (tick % STRANDED_SWEEP_EVERY_TICKS === 0) {
535
- sweepStrandedForwards(mutagen, pairing.sandboxId, mirrored, say);
536
- }
464
+ handOver(holding, pairing.sandboxId, mirrored);
465
+ if (tick % STRANDED_SWEEP_EVERY_TICKS === 0) {
466
+ sweepStrandedForwards(mutagen, pairing.sandboxId, mirrored, say);
537
467
  }
538
468
  }
539
469
  catch (error) {
@@ -542,49 +472,16 @@ const runPairingPass = async (context, pairing, base) => {
542
472
  if (outcome.drop) {
543
473
  return;
544
474
  }
545
- pausedThisPass = outcome.paused;
475
+ heldThisPass = outcome.paused;
546
476
  say(` ${pairingKey(pairing)}: reconcile skipped: ${errorMessage(error)}`);
547
477
  }
548
- if (pairing.fileSyncAutoPaused === true || pairing.fileSyncPausedFor !== undefined || pausedThisPass || swapping || short) {
478
+ if (syncHeld({ ...pairing, unreachableSince: undefined }, Date.now()) || heldThisPass || swapping || short) {
549
479
  stopBridge(tracking, pairing.sandboxId);
550
480
  return;
551
481
  }
552
482
  await healPairing(mutagen, pairing, tick, say);
553
483
  startBridge(tracking, pairing, tick, say);
554
484
  };
555
- export const pollingPairings = (pairings) => {
556
- const polling = new Set();
557
- for (const sandboxId of new Set(pairings.map((pairing) => pairing.sandboxId))) {
558
- const own = pairings.filter((pairing) => pairing.sandboxId === sandboxId);
559
- const poller = own.find((pairing) => !isAttachedPairing(pairing)) ?? own[0];
560
- if (poller !== undefined) {
561
- polling.add(pairingKey(poller));
562
- }
563
- }
564
- return polling;
565
- };
566
- const followSandbox = async (context, pairing) => {
567
- const { mutagen, tick, tracking, swapHeld, say } = context;
568
- if (pairing.goneSince !== undefined || pairing.fileSyncPausedFor !== undefined) {
569
- return;
570
- }
571
- const down = tracking.unreachable.get(pairing.sandboxId)?.since ?? pairing.unreachableSince;
572
- const swapping = swapHeld.has(pairing.sandboxId);
573
- const short = context.diskHeld.has(pairingKey(pairing));
574
- if (down === undefined) {
575
- if (!swapping && !short && (await resumeAutoPausedSync(mutagen, pairing))) {
576
- await setFileSyncAutoPaused(pairingKey(pairing), false);
577
- say(` ${pairingKey(pairing)}: reachable again; resumed its automatically paused file sync`);
578
- }
579
- }
580
- else if (await pauseIfLongUnreachable(mutagen, pairing, Date.now() - down, say)) {
581
- return;
582
- }
583
- if (pairing.fileSyncAutoPaused === true || swapping || short) {
584
- return;
585
- }
586
- await healPairing(mutagen, pairing, tick, say);
587
- };
588
485
  const passGone = async (context, pairing) => {
589
486
  const now = Date.now();
590
487
  const step = goneStep(pairing, now);
@@ -605,15 +502,12 @@ const passGone = async (context, pairing) => {
605
502
  tracking.unreachable.delete(pairing.sandboxId);
606
503
  tracking.rejectedPolls.delete(pairing.sandboxId);
607
504
  tracking.repos.delete(pairing.sandboxId);
608
- for (const key of [...tracking.sessionsPending].filter((held) => keyOfSandbox(held, pairing.sandboxId))) {
609
- tracking.sessionsPending.delete(key);
610
- }
505
+ tracking.sessionsPending.delete(pairingKey(pairing));
611
506
  }
612
507
  return "skip";
613
508
  };
614
- const runPasses = async (context, dialed, pairings, live) => {
615
- const polling = pollingPairings(pairings);
616
- for (const { pairing, base } of dialed.filter((held) => polling.has(pairingKey(held.pairing)))) {
509
+ const runPasses = async (context, dialed, live) => {
510
+ for (const { pairing, base } of dialed) {
617
511
  if (!live()) {
618
512
  return;
619
513
  }
@@ -627,12 +521,6 @@ const runPasses = async (context, dialed, pairings, live) => {
627
521
  await runPairingPass(context, pairing, base);
628
522
  context.progress(`${pairingKey(pairing)}'s pass`);
629
523
  }
630
- for (const { pairing } of dialed.filter((held) => !polling.has(pairingKey(held.pairing)))) {
631
- if (!live()) {
632
- return;
633
- }
634
- await guard(context.say, `${pairingKey(pairing)}: following its sandbox`, async () => await followSandbox(context, pairing));
635
- }
636
524
  };
637
525
  const ORPHAN_SWEEP_EVERY_TICKS = 12;
638
526
  const CONTAINER_CHECK_EVERY_TICKS = 12;
@@ -700,7 +588,7 @@ const watchLoop = async (log, generation) => {
700
588
  if ((await watchTick(watch, tick)) === "stop") {
701
589
  return;
702
590
  }
703
- await sleep(POLL_MS, { signal: generation.signal });
591
+ await sleepUnlessWoken(POLL_MS, generation.signal);
704
592
  }
705
593
  };
706
594
  const startWatch = async (log, generation) => {
@@ -708,8 +596,15 @@ const startWatch = async (log, generation) => {
708
596
  const say = quieted(log);
709
597
  sayDaemonEventsTo(say);
710
598
  await guard(say, "moving off Mutagen's shared data directory", async () => await moveOffSharedMutagen(mutagen, say));
599
+ let retired = 0;
600
+ await guard(say, "retiring the pairings of this computer's old sandbox for folders", async () => {
601
+ retired = (await retireLegacyPairings(log)).length;
602
+ });
711
603
  const initial = await readState();
712
604
  if (initial.pairings.length === 0) {
605
+ if (retired > 0 && startMutagenDaemon(mutagen)) {
606
+ await guard(say, "retiring orphaned sessions", () => retireOrphanSessions(mutagen, [], say));
607
+ }
713
608
  log("no sandboxes are paired: nothing to mirror. Enable it from a sandbox's Desktop sync card.");
714
609
  return undefined;
715
610
  }
@@ -718,9 +613,9 @@ const startWatch = async (log, generation) => {
718
613
  }
719
614
  const sshConfig = pairingSshConfig(initial.pairings);
720
615
  await guard(say, "refreshing the ssh configuration", async () => await writeManagedSshConfig(sshConfig));
721
- const tunnels = createTunnelPool(say, generation.signal);
722
- generation.stopTransports = tunnels.stopAll;
723
616
  const bases = createDaemonBases(say);
617
+ const tunnels = createTunnelPool(say, generation.signal, (sandboxId) => bases.failed(sandboxId));
618
+ generation.stopTransports = tunnels.stopAll;
724
619
  await guard(say, "opening the sync transports", async () => await tunnels.reconcile(tunnelTargets(await dialedPairings(initial.pairings, bases))));
725
620
  const tracking = {
726
621
  rejectedPolls: new Map(),
@@ -731,7 +626,7 @@ const startWatch = async (log, generation) => {
731
626
  };
732
627
  generation.signal.addEventListener("abort", () => stopBridges(tracking), { once: true });
733
628
  const reportUnsupported = new Set();
734
- const fate = { mutagen, releaseForwards: async (sandboxId) => await retirePairingMirror(mutagen, sandboxId), say };
629
+ const fate = { releaseForwards: async (sandboxId) => await retirePairingMirror(mutagen, sandboxId), say };
735
630
  const gone = async (pairing) => await sandboxSaidGone(fate, pairing.sandboxId, "edge");
736
631
  const watch = {
737
632
  log,
@@ -750,11 +645,10 @@ const startWatch = async (log, generation) => {
750
645
  reportUnsupported,
751
646
  fate,
752
647
  gone,
753
- announce: announcer(mutagen, bases, reportUnsupported, tracking.unreachable, gone, say),
754
648
  holders: { dockerPorts: publishedPortsReader(say), freeSince: new Map() },
755
649
  sshConfig,
756
650
  };
757
- await prepareSessions(mutagen, initial.pairings, watch.sessionsPrepared, tracking.sessionsPending, watch.announce, { fate, relabels: relabelBudget(1), tracking }, say);
651
+ await prepareSessions(mutagen, initial.pairings, watch.sessionsPrepared, tracking.sessionsPending, { fate, relabels: relabelBudget(1), tracking }, say);
758
652
  await guard(say, "retiring orphaned sessions", () => retireOrphanSessions(mutagen, initial.pairings, say));
759
653
  log(`sync started; polling ${plural(initial.pairings.length, "paired sandbox")} every ${POLL_MS / 1000}s`);
760
654
  return watch;
@@ -784,7 +678,7 @@ const watchTick = async (watch, tick) => {
784
678
  await guard(say, "reconciling the sync transports", async () => await watch.tunnels.reconcile(tunnelTargets(dialed)));
785
679
  progress("the sync transports");
786
680
  const relabels = relabelBudget(1);
787
- await prepareSessions(mutagen, state.pairings, watch.sessionsPrepared, tracking.sessionsPending, watch.announce, { fate, relabels, tracking }, say);
681
+ await prepareSessions(mutagen, state.pairings, watch.sessionsPrepared, tracking.sessionsPending, { fate, relabels, tracking }, say);
788
682
  await retryPendingSessions(mutagen, state.pairings, tracking.sessionsPending, tick, relabels, say);
789
683
  progress("preparing file sync");
790
684
  if (!watch.live()) {
@@ -792,11 +686,11 @@ const watchTick = async (watch, tick) => {
792
686
  }
793
687
  let swapHeld = new Set();
794
688
  await guard(say, "holding file sync still during swaps", async () => {
795
- swapHeld = await holdSyncDuringSwaps(mutagen, state.pairings, tracking.unreachable, say);
689
+ swapHeld = await holdSyncDuringSwaps(state.pairings, tracking.unreachable, say);
796
690
  });
797
691
  let diskHeld = new Set();
798
692
  await guard(say, "measuring the drives synced folders are on", async () => {
799
- diskHeld = await guardDisks(mutagen, state.pairings, tick, say);
693
+ diskHeld = await guardDisks(state.pairings, say);
800
694
  });
801
695
  stopBridges(tracking, state.pairings);
802
696
  const context = {
@@ -815,10 +709,12 @@ const watchTick = async (watch, tick) => {
815
709
  pairings: state.pairings,
816
710
  say,
817
711
  };
818
- await runPasses(context, dialed, state.pairings, watch.live);
712
+ await runPasses(context, dialed, watch.live);
819
713
  if (!watch.live()) {
820
714
  return "stop";
821
715
  }
716
+ await guard(say, "holding file sync still where something holds it", async () => void (await holdSessions(mutagen, (await readState()).pairings, say)));
717
+ progress("holding file sync");
822
718
  if (tick % REPORT_EVERY_TICKS === 0) {
823
719
  await guard(say, "posting this machine's reports", async () => await postReports(dialed, mutagen, watch.reportUnsupported, watch.gone, say));
824
720
  }
@@ -836,7 +732,7 @@ const teardownForwards = async (mutagen, sandboxId) => {
836
732
  await runProcess(mutagen, ["forward", "terminate", ...names], { timeoutMs: MUTAGEN_CALL_TIMEOUT_MS });
837
733
  }
838
734
  await updateState((state) => ({
839
- pairings: state.pairings.map((held) => (sandboxId === undefined || held.sandboxId === sandboxId) && !isAttachedPairing(held)
735
+ pairings: state.pairings.map((held) => sandboxId === undefined || held.sandboxId === sandboxId
840
736
  ? { ...held, mirroredPorts: [], skippedPorts: [] }
841
737
  : held),
842
738
  }));
@@ -848,7 +744,7 @@ export const retireMirroredPort = async (mutagen, sandboxId, port) => {
848
744
  let wasMirrored = false;
849
745
  await updateState((state) => ({
850
746
  pairings: state.pairings.map((held) => {
851
- if (held.sandboxId !== sandboxId || isAttachedPairing(held)) {
747
+ if (held.sandboxId !== sandboxId) {
852
748
  return held;
853
749
  }
854
750
  const mirrored = held.mirroredPorts ?? [];
@@ -1 +1 @@
1
- {"version":3,"file":"mirror.js","sourceRoot":"","sources":["../../src/sync/mirror.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mirror.js","sourceRoot":"","sources":["../../src/sync/mirror.ts"],"names":[],"mappings":"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"}