@indigoai-us/hq-cloud 6.18.93 → 6.18.95

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 (89) hide show
  1. package/dist/bin/sync-runner.d.ts +20 -1
  2. package/dist/bin/sync-runner.d.ts.map +1 -1
  3. package/dist/bin/sync-runner.js +25 -0
  4. package/dist/bin/sync-runner.js.map +1 -1
  5. package/dist/cli/reindex.d.ts +24 -0
  6. package/dist/cli/reindex.d.ts.map +1 -1
  7. package/dist/cli/reindex.js +26 -1
  8. package/dist/cli/reindex.js.map +1 -1
  9. package/dist/cli/rescue-core.d.ts +18 -3
  10. package/dist/cli/rescue-core.d.ts.map +1 -1
  11. package/dist/cli/rescue-core.js +129 -22
  12. package/dist/cli/rescue-core.js.map +1 -1
  13. package/dist/cli/share.d.ts +28 -5
  14. package/dist/cli/share.d.ts.map +1 -1
  15. package/dist/cli/share.js +189 -22
  16. package/dist/cli/share.js.map +1 -1
  17. package/dist/cli/sync.d.ts +11 -1
  18. package/dist/cli/sync.d.ts.map +1 -1
  19. package/dist/cli/sync.js +77 -8
  20. package/dist/cli/sync.js.map +1 -1
  21. package/dist/cloud-placeholder.d.ts +23 -1
  22. package/dist/cloud-placeholder.d.ts.map +1 -1
  23. package/dist/cloud-placeholder.js +57 -0
  24. package/dist/cloud-placeholder.js.map +1 -1
  25. package/dist/hq-root-recovery.d.ts +37 -6
  26. package/dist/hq-root-recovery.d.ts.map +1 -1
  27. package/dist/hq-root-recovery.js +266 -22
  28. package/dist/hq-root-recovery.js.map +1 -1
  29. package/dist/journal.d.ts +11 -1
  30. package/dist/journal.d.ts.map +1 -1
  31. package/dist/journal.js +23 -2
  32. package/dist/journal.js.map +1 -1
  33. package/dist/lib/cloud-authoritative.d.ts +10 -0
  34. package/dist/lib/cloud-authoritative.d.ts.map +1 -1
  35. package/dist/lib/cloud-authoritative.js +23 -0
  36. package/dist/lib/cloud-authoritative.js.map +1 -1
  37. package/dist/manifest-reconcile.d.ts +14 -0
  38. package/dist/manifest-reconcile.d.ts.map +1 -1
  39. package/dist/manifest-reconcile.js +20 -2
  40. package/dist/manifest-reconcile.js.map +1 -1
  41. package/dist/outposts/client.d.ts +6 -1
  42. package/dist/outposts/client.d.ts.map +1 -1
  43. package/dist/outposts/client.js +13 -1
  44. package/dist/outposts/client.js.map +1 -1
  45. package/dist/outposts/command.d.ts +1 -1
  46. package/dist/outposts/command.d.ts.map +1 -1
  47. package/dist/outposts/command.js +58 -2
  48. package/dist/outposts/command.js.map +1 -1
  49. package/dist/outposts/company.d.ts +15 -1
  50. package/dist/outposts/company.d.ts.map +1 -1
  51. package/dist/outposts/company.js +36 -1
  52. package/dist/outposts/company.js.map +1 -1
  53. package/dist/s3.d.ts +22 -0
  54. package/dist/s3.d.ts.map +1 -1
  55. package/dist/s3.js +44 -0
  56. package/dist/s3.js.map +1 -1
  57. package/dist/session-log-capture.d.ts.map +1 -1
  58. package/dist/session-log-capture.js +5 -2
  59. package/dist/session-log-capture.js.map +1 -1
  60. package/dist/sync/area-ledger.d.ts.map +1 -1
  61. package/dist/sync/area-ledger.js +3 -3
  62. package/dist/sync/area-ledger.js.map +1 -1
  63. package/dist/sync/durable-apply.js +2 -2
  64. package/dist/sync/durable-apply.js.map +1 -1
  65. package/dist/sync/per-area-maintenance.js +2 -2
  66. package/dist/sync/per-area-maintenance.js.map +1 -1
  67. package/dist/sync/reconcile-cursor.js +2 -2
  68. package/dist/sync/reconcile-cursor.js.map +1 -1
  69. package/dist/sync/secret-path-policy.d.ts +37 -11
  70. package/dist/sync/secret-path-policy.d.ts.map +1 -1
  71. package/dist/sync/secret-path-policy.js +68 -34
  72. package/dist/sync/secret-path-policy.js.map +1 -1
  73. package/dist/sync/snapshot-client.js +2 -2
  74. package/dist/sync/snapshot-client.js.map +1 -1
  75. package/dist/sync/state-store.d.ts +19 -0
  76. package/dist/sync/state-store.d.ts.map +1 -1
  77. package/dist/sync/state-store.js +184 -4
  78. package/dist/sync/state-store.js.map +1 -1
  79. package/dist/sync/uploader-finalization.d.ts.map +1 -1
  80. package/dist/sync/uploader-finalization.js +2 -2
  81. package/dist/sync/uploader-finalization.js.map +1 -1
  82. package/dist/test-fixtures/unknown-journal-generation.d.ts +9 -0
  83. package/dist/test-fixtures/unknown-journal-generation.d.ts.map +1 -0
  84. package/dist/test-fixtures/unknown-journal-generation.js +37 -0
  85. package/dist/test-fixtures/unknown-journal-generation.js.map +1 -0
  86. package/dist/watcher.d.ts.map +1 -1
  87. package/dist/watcher.js +3 -3
  88. package/dist/watcher.js.map +1 -1
  89. package/package.json +1 -1
@@ -18,8 +18,12 @@ export declare const CLOUD_PLACEHOLDER_MAX_BYTES = 4096;
18
18
  * placeholder.
19
19
  * - "watcher-delete-guard": the watcher and push event emitter publish no
20
20
  * delete for a file replaced by its placeholder.
21
+ * - "library-original-guard": a synced placeholder that went missing while
22
+ * its original sits in its place (`hq library fetch`) is restored, never
23
+ * deleted from the vault; and an original beside (or in place of) a
24
+ * company-blob placeholder is never uploaded as a second copy.
21
25
  */
22
- export declare const CLOUD_PLACEHOLDER_SYNC_CAPABILITIES: readonly ["push-delete-guard", "pull-cloud-only", "watcher-delete-guard"];
26
+ export declare const CLOUD_PLACEHOLDER_SYNC_CAPABILITIES: readonly ["push-delete-guard", "pull-cloud-only", "watcher-delete-guard", "library-original-guard"];
23
27
  export interface CloudPlaceholder {
24
28
  /** HQ-root-relative (or vault-relative) POSIX path of the original file. */
25
29
  path: string;
@@ -101,6 +105,24 @@ export declare function isCloudOnlyLocally(localPath: string): boolean;
101
105
  * did not delete the file. Invalid placeholders are logged once.
102
106
  */
103
107
  export declare function hasCloudPlaceholderSibling(localPath: string): boolean;
108
+ /** Vault key prefix of content-addressed offload copies (`hq library add`). */
109
+ export declare const CLOUD_OFFLOAD_BLOB_KEY_PREFIX = ".hq-offload/blobs/";
110
+ /**
111
+ * True when `placeholderPath` names a `.hqcloud` file that is absent while
112
+ * the original it stands for is a regular file on disk. That is what
113
+ * `hq library fetch` / `hq storage fetch` leave behind: the user fetched the
114
+ * bytes, they did not delete the placeholder. Sync must not turn that absence
115
+ * into a remote delete of a synced (library) placeholder.
116
+ */
117
+ export declare function hasLocalOriginalForMissingPlaceholder(placeholderPath: string): boolean;
118
+ /**
119
+ * True when `localPath` sits beside a valid company placeholder whose bytes
120
+ * live in a content-addressed company blob (`key: .hq-offload/blobs/<sha>`,
121
+ * written by `hq library add`). Such a file is a local copy of a cloud-only
122
+ * library asset; uploading it would store a second full copy in the vault.
123
+ * Silent, like isSyncedCloudPlaceholderFile.
124
+ */
125
+ export declare function isBesideCompanyBlobPlaceholder(localPath: string): boolean;
104
126
  /**
105
127
  * True for a `.hqcloud` file that is a valid placeholder for its sibling.
106
128
  * Push uses this to keep placeholders out of vault uploads.
@@ -1 +1 @@
1
- {"version":3,"file":"cloud-placeholder.d.ts","sourceRoot":"","sources":["../src/cloud-placeholder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cloud-placeholder.d.ts","sourceRoot":"","sources":["../src/cloud-placeholder.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,12 @@
13
13
  * - pull never re-downloads `x` over any `x.hqcloud` sibling. When the
14
14
  * remote object changed it rewrites a valid placeholder's metadata, and
15
15
  * when a peer deleted it the placeholder is marked orphaned.
16
+ * - a synced (library) placeholder `x.hqcloud` that is missing while `x`
17
+ * is on disk was fetched, not deleted: push never deletes it from the
18
+ * vault and pull downloads it back beside `x`. A file `x` that the
19
+ * journal does not track, beside (or in place of) a company placeholder
20
+ * keyed `.hq-offload/blobs/<sha>`, is a local copy of a cloud-only
21
+ * library asset and is never uploaded.
16
22
  *
17
23
  * A placeholder only counts as cloud-only (pull skips the download) when it
18
24
  * parses as HQ-CLOUD-FILE v1 AND its `path` names the exact file it stands in
@@ -100,11 +106,16 @@ export const CLOUD_PLACEHOLDER_MAX_BYTES = 4096;
100
106
  * placeholder.
101
107
  * - "watcher-delete-guard": the watcher and push event emitter publish no
102
108
  * delete for a file replaced by its placeholder.
109
+ * - "library-original-guard": a synced placeholder that went missing while
110
+ * its original sits in its place (`hq library fetch`) is restored, never
111
+ * deleted from the vault; and an original beside (or in place of) a
112
+ * company-blob placeholder is never uploaded as a second copy.
103
113
  */
104
114
  export const CLOUD_PLACEHOLDER_SYNC_CAPABILITIES = [
105
115
  "push-delete-guard",
106
116
  "pull-cloud-only",
107
117
  "watcher-delete-guard",
118
+ "library-original-guard",
108
119
  ];
109
120
  export const CLOUD_ASSET_FENCE = "hq-asset";
110
121
  export const CLOUD_ASSET_MEDIA_KINDS = ["image", "video", "other"];
@@ -551,6 +562,52 @@ export function hasCloudPlaceholderSibling(localPath) {
551
562
  readCloudPlaceholder(placeholderPath, localPath);
552
563
  return true;
553
564
  }
565
+ /** Vault key prefix of content-addressed offload copies (`hq library add`). */
566
+ export const CLOUD_OFFLOAD_BLOB_KEY_PREFIX = ".hq-offload/blobs/";
567
+ function isRegularFile(p) {
568
+ try {
569
+ return fs.lstatSync(p).isFile();
570
+ }
571
+ catch {
572
+ return false;
573
+ }
574
+ }
575
+ /**
576
+ * True when `placeholderPath` names a `.hqcloud` file that is absent while
577
+ * the original it stands for is a regular file on disk. That is what
578
+ * `hq library fetch` / `hq storage fetch` leave behind: the user fetched the
579
+ * bytes, they did not delete the placeholder. Sync must not turn that absence
580
+ * into a remote delete of a synced (library) placeholder.
581
+ */
582
+ export function hasLocalOriginalForMissingPlaceholder(placeholderPath) {
583
+ if (!isCloudPlaceholderName(path.basename(placeholderPath)))
584
+ return false;
585
+ try {
586
+ fs.lstatSync(placeholderPath);
587
+ return false;
588
+ }
589
+ catch (err) {
590
+ const code = err?.code;
591
+ if (code !== "ENOENT")
592
+ return false;
593
+ }
594
+ return isRegularFile(placeholderPath.slice(0, -CLOUD_PLACEHOLDER_SUFFIX.length));
595
+ }
596
+ /**
597
+ * True when `localPath` sits beside a valid company placeholder whose bytes
598
+ * live in a content-addressed company blob (`key: .hq-offload/blobs/<sha>`,
599
+ * written by `hq library add`). Such a file is a local copy of a cloud-only
600
+ * library asset; uploading it would store a second full copy in the vault.
601
+ * Silent, like isSyncedCloudPlaceholderFile.
602
+ */
603
+ export function isBesideCompanyBlobPlaceholder(localPath) {
604
+ if (isCloudPlaceholderName(path.basename(localPath)))
605
+ return false;
606
+ const parsed = loadCloudPlaceholder(cloudPlaceholderPathFor(localPath), localPath, () => { });
607
+ return (parsed !== null &&
608
+ parsed.vault === "company" &&
609
+ parsed.key.startsWith(CLOUD_OFFLOAD_BLOB_KEY_PREFIX));
610
+ }
554
611
  /**
555
612
  * True for a `.hqcloud` file that is a valid placeholder for its sibling.
556
613
  * Push uses this to keep placeholders out of vault uploads.
@@ -1 +1 @@
1
- {"version":3,"file":"cloud-placeholder.js","sourceRoot":"","sources":["../src/cloud-placeholder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cloud-placeholder.js","sourceRoot":"","sources":["../src/cloud-placeholder.ts"],"names":[],"mappings":"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"}
@@ -17,7 +17,9 @@ export type GitSidecarAction = "restored" | "snapshotted" | "unchanged" | "absen
17
17
  /** A background snapshot was skipped because a recent attempt failed. */
18
18
  | "deferred"
19
19
  /** A background snapshot was skipped: the copy would not leave the free-space reserve. */
20
- | "insufficient-space";
20
+ | "insufficient-space"
21
+ /** Another process holds the snapshot lock for this sidecar. */
22
+ | "in-progress";
21
23
  export declare function gitSidecarDir(hqRoot: string, homeDir?: string): string;
22
24
  export declare function shouldCopyGitSidecarEntry(src: string): boolean;
23
25
  /**
@@ -39,6 +41,15 @@ export declare const GIT_SIDECAR_RETRY_AFTER_MS: number;
39
41
  * stops sync itself (ENOSPC on its own lock and state files).
40
42
  */
41
43
  export declare const GIT_SIDECAR_MIN_FREE_BYTES: number;
44
+ /**
45
+ * A legacy `${dest}.tmp` staging dir (from releases that shared one staging
46
+ * path) older than this is abandoned. A process on such a release may still be
47
+ * copying into a younger one, so it is left alone.
48
+ */
49
+ export declare const GIT_SIDECAR_STALE_STAGING_MS: number;
50
+ /** A snapshot lock older than this is taken over even if its pid is alive (pid reuse). */
51
+ export declare const GIT_SIDECAR_LOCK_STALE_MS: number;
52
+ export type GitSidecarCopyMethod = "clone" | "copy";
42
53
  export interface GitSidecarSnapshotOptions {
43
54
  homeDir?: string;
44
55
  /** Test seam; production uses Date.now. */
@@ -47,15 +58,35 @@ export interface GitSidecarSnapshotOptions {
47
58
  /** Test seam; production reads `fs.promises.statfs` for the destination volume. */
48
59
  freeBytes?: (dir: string) => Promise<number>;
49
60
  minFreeBytes?: number;
61
+ /** Test seam; production picks "clone" on APFS when `.git` and the sidecar share a volume. */
62
+ copyMethod?: (gitDir: string, sidecarParent: string) => Promise<GitSidecarCopyMethod>;
63
+ /** Test seam; production clones with `/bin/cp -c` or copies with `fs.promises.cp`. */
64
+ copyTree?: (gitDir: string, staging: string, method: GitSidecarCopyMethod) => Promise<void>;
50
65
  }
66
+ /**
67
+ * A clone shares data blocks with the source, so a 9 GB `.git` costs almost
68
+ * no space to snapshot. Node's `COPYFILE_FICLONE` does not clone on APFS and
69
+ * `COPYFILE_FICLONE_FORCE` fails with ENOSYS there, so macOS uses
70
+ * `/bin/cp -c`, which clones only within one APFS volume.
71
+ */
72
+ export declare function gitSidecarCopyMethod(gitDir: string, sidecarParent: string): Promise<GitSidecarCopyMethod>;
73
+ /** `cp -R` has no filter: drop lock files, FIFOs, sockets and devices after the clone. */
74
+ export declare function pruneUncopyableEntries(root: string): Promise<void>;
75
+ export declare function gitSidecarLockPath(dest: string): string;
76
+ /**
77
+ * The failure backoff is also written next to the sidecar, so each new
78
+ * `hq sync` process honors it instead of starting another multi-gigabyte copy.
79
+ */
80
+ export declare function gitSidecarStatePath(dest: string): string;
51
81
  /**
52
82
  * Snapshot `.git` without blocking the caller's event loop. The HQ `.git` can
53
83
  * be many gigabytes, and the watch runner calls this at startup and on every
54
- * pass, so the copy runs on libuv's threadpool through `fs.promises.cp`.
55
- * Concurrent calls for one sidecar share a single copy, and after a failed
56
- * copy the next attempt waits `retryAfterMs` instead of recopying every pass.
57
- * The copy is skipped when it would leave less than `minFreeBytes` free on
58
- * the destination volume.
84
+ * pass, so the copy runs off the event loop, as a copy-on-write clone where
85
+ * the volume supports one. Concurrent calls for one sidecar share a single
86
+ * copy: in this process through one promise, across processes through a lock
87
+ * file. After a failed or skipped copy, every process waits `retryAfterMs`
88
+ * before the next attempt. The copy is skipped when it would leave less than
89
+ * `minFreeBytes` free on the destination volume.
59
90
  * The returned promise never rejects.
60
91
  */
61
92
  export declare function snapshotHqGitInBackground(hqRoot: string, opts?: GitSidecarSnapshotOptions): Promise<GitSidecarAction>;
@@ -1 +1 @@
1
- {"version":3,"file":"hq-root-recovery.d.ts","sourceRoot":"","sources":["../src/hq-root-recovery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AAQzB,MAAM,MAAM,gBAAgB,GACxB,UAAU,GACV,aAAa,GACb,WAAW,GACX,QAAQ;AACV,0DAA0D;GACxD,QAAQ;AACV,yEAAyE;GACvE,UAAU;AACZ,0FAA0F;GACxF,oBAAoB,CAAC;AAEzB,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,MAAqB,GAAG,MAAM,CAEpF;AAMD,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAE9D;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,GAAG,OAAO,CAElE;AAoCD,wBAAgB,aAAa,CAC3B,MAAM,EAAE,MAAM,EACd,IAAI,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAO,GAC9B,gBAAgB,CA4BlB;AAED,wEAAwE;AACxE,eAAO,MAAM,0BAA0B,QAAc,CAAC;AAEtD;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,QAAgB,CAAC;AAExD,MAAM,WAAW,yBAAyB;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,2CAA2C;IAC3C,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mFAAmF;IACnF,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7C,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AA8FD;;;;;;;;;GASG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,MAAM,EACd,IAAI,GAAE,yBAA8B,GACnC,OAAO,CAAC,gBAAgB,CAAC,CAuB3B;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,MAAM,EACd,IAAI,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAO,GAC9B,gBAAgB,CAkBlB;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAmB5D;AAED,MAAM,WAAW,oBAAoB;IACnC,aAAa,EAAE,MAAM,CAAC;IACtB,gFAAgF;IAChF,GAAG,EAAE,gBAAgB,GAAG,WAAW,CAAC;IACpC,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;CACtC;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,MAAM,EACd,IAAI,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAO,GAC9B,oBAAoB,CAStB"}
1
+ {"version":3,"file":"hq-root-recovery.d.ts","sourceRoot":"","sources":["../src/hq-root-recovery.ts"],"names":[],"mappings":"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"}
@@ -10,10 +10,14 @@
10
10
  * which survived the 2026-09-18 wipe that removed `core/`, `personal/`, and
11
11
  * `.git` while leaving the sync daemon running.
12
12
  */
13
+ import { execFile } from "child_process";
14
+ import { randomBytes } from "crypto";
13
15
  import * as fs from "fs";
14
16
  import * as os from "os";
15
17
  import * as path from "path";
18
+ import { promisify } from "util";
16
19
  import { canonicalRootHash } from "./backup-prune.js";
20
+ const execFileAsync = promisify(execFile);
17
21
  const HQ_LAYOUT_DIRS = ["repos", "repos/public", "repos/private"];
18
22
  export function gitSidecarDir(hqRoot, homeDir = os.homedir()) {
19
23
  return path.join(homeDir, ".hq", "hq-root-git", canonicalRootHash(path.resolve(hqRoot)));
@@ -70,6 +74,14 @@ function isGitDirectory(gitDir) {
70
74
  return false;
71
75
  }
72
76
  }
77
+ /**
78
+ * Every copy stages in its own directory. A shared `${dest}.tmp` let a second
79
+ * process (`hq sync` next to the watcher) delete the first one's half-written
80
+ * copy, which then failed with ENOENT on chmod.
81
+ */
82
+ function uniqueSiblingPath(dest, kind) {
83
+ return `${dest}.${kind}-${process.pid}-${randomBytes(4).toString("hex")}`;
84
+ }
73
85
  export function snapshotHqGit(hqRoot, opts = {}) {
74
86
  const gitDir = path.join(hqRoot, ".git");
75
87
  if (!isGitDirectory(gitDir))
@@ -79,9 +91,8 @@ export function snapshotHqGit(hqRoot, opts = {}) {
79
91
  if (currentHead !== null && currentHead === readHead(dest) && fs.existsSync(dest)) {
80
92
  return "unchanged";
81
93
  }
82
- const staging = `${dest}.tmp`;
94
+ const staging = uniqueSiblingPath(dest, "tmp");
83
95
  try {
84
- fs.rmSync(staging, { recursive: true, force: true });
85
96
  fs.mkdirSync(path.dirname(dest), { recursive: true });
86
97
  fs.cpSync(gitDir, staging, {
87
98
  recursive: true,
@@ -110,10 +121,72 @@ export const GIT_SIDECAR_RETRY_AFTER_MS = 30 * 60_000;
110
121
  * stops sync itself (ENOSPC on its own lock and state files).
111
122
  */
112
123
  export const GIT_SIDECAR_MIN_FREE_BYTES = 2 * 1024 ** 3;
124
+ /**
125
+ * A legacy `${dest}.tmp` staging dir (from releases that shared one staging
126
+ * path) older than this is abandoned. A process on such a release may still be
127
+ * copying into a younger one, so it is left alone.
128
+ */
129
+ export const GIT_SIDECAR_STALE_STAGING_MS = 60 * 60_000;
130
+ /** A snapshot lock older than this is taken over even if its pid is alive (pid reuse). */
131
+ export const GIT_SIDECAR_LOCK_STALE_MS = 6 * 60 * 60_000;
132
+ /** `statfs` `f_type` for APFS on macOS. */
133
+ const APFS_STATFS_TYPE = 26;
113
134
  async function defaultFreeBytes(dir) {
114
135
  const stats = await fs.promises.statfs(dir);
115
136
  return Number(stats.bavail) * Number(stats.bsize);
116
137
  }
138
+ /**
139
+ * A clone shares data blocks with the source, so a 9 GB `.git` costs almost
140
+ * no space to snapshot. Node's `COPYFILE_FICLONE` does not clone on APFS and
141
+ * `COPYFILE_FICLONE_FORCE` fails with ENOSYS there, so macOS uses
142
+ * `/bin/cp -c`, which clones only within one APFS volume.
143
+ */
144
+ export async function gitSidecarCopyMethod(gitDir, sidecarParent) {
145
+ if (process.platform !== "darwin")
146
+ return "copy";
147
+ try {
148
+ const [src, dst] = await Promise.all([fs.promises.stat(gitDir), fs.promises.stat(sidecarParent)]);
149
+ if (src.dev !== dst.dev)
150
+ return "copy";
151
+ const volume = await fs.promises.statfs(sidecarParent);
152
+ return Number(volume.type) === APFS_STATFS_TYPE ? "clone" : "copy";
153
+ }
154
+ catch {
155
+ return "copy";
156
+ }
157
+ }
158
+ async function defaultCopyTree(gitDir, staging, method) {
159
+ if (method === "clone") {
160
+ await execFileAsync("/bin/cp", ["-c", "-R", gitDir, staging]);
161
+ await pruneUncopyableEntries(staging);
162
+ return;
163
+ }
164
+ // FICLONE reflinks on Linux filesystems that support it (btrfs, xfs) and
165
+ // falls back to a plain copy elsewhere.
166
+ await fs.promises.cp(gitDir, staging, {
167
+ recursive: true,
168
+ filter: gitSidecarCopyFilter,
169
+ mode: fs.constants.COPYFILE_FICLONE,
170
+ });
171
+ }
172
+ /** `cp -R` has no filter: drop lock files, FIFOs, sockets and devices after the clone. */
173
+ export async function pruneUncopyableEntries(root) {
174
+ const pending = [root];
175
+ while (pending.length > 0) {
176
+ const current = pending.pop();
177
+ const entries = await fs.promises.readdir(current, { withFileTypes: true });
178
+ for (const entry of entries) {
179
+ const full = path.join(current, entry.name);
180
+ const kept = entry.isFile() || entry.isDirectory() || entry.isSymbolicLink();
181
+ if (!kept || isGitLockName(entry.name)) {
182
+ await fs.promises.rm(full, { recursive: true, force: true });
183
+ }
184
+ else if (entry.isDirectory()) {
185
+ pending.push(full);
186
+ }
187
+ }
188
+ }
189
+ }
117
190
  /** Bytes the filtered copy of `dir` would write (regular files only). */
118
191
  async function copyableSizeBytes(dir) {
119
192
  let total = 0;
@@ -156,7 +229,161 @@ async function readHeadAsync(gitDir) {
156
229
  return null;
157
230
  }
158
231
  }
159
- async function snapshotHqGitAsync(hqRoot, dest, opts) {
232
+ function isPidAlive(pid) {
233
+ if (!Number.isInteger(pid) || pid <= 0)
234
+ return false;
235
+ try {
236
+ process.kill(pid, 0);
237
+ return true;
238
+ }
239
+ catch (err) {
240
+ return err.code === "EPERM";
241
+ }
242
+ }
243
+ export function gitSidecarLockPath(dest) {
244
+ return `${dest}.snapshot.lock`;
245
+ }
246
+ /**
247
+ * The failure backoff is also written next to the sidecar, so each new
248
+ * `hq sync` process honors it instead of starting another multi-gigabyte copy.
249
+ */
250
+ export function gitSidecarStatePath(dest) {
251
+ return `${dest}.snapshot-state.json`;
252
+ }
253
+ async function readPersistedFailedAt(dest) {
254
+ try {
255
+ const parsed = JSON.parse(await fs.promises.readFile(gitSidecarStatePath(dest), "utf8"));
256
+ return typeof parsed.failedAt === "number" ? parsed.failedAt : undefined;
257
+ }
258
+ catch {
259
+ return undefined;
260
+ }
261
+ }
262
+ async function writePersistedState(dest, state) {
263
+ const file = gitSidecarStatePath(dest);
264
+ try {
265
+ if (state === null) {
266
+ await fs.promises.rm(file, { force: true });
267
+ return;
268
+ }
269
+ const tmpFile = uniqueSiblingPath(file, "tmp");
270
+ await fs.promises.writeFile(tmpFile, `${JSON.stringify(state)}\n`);
271
+ await fs.promises.rename(tmpFile, file);
272
+ }
273
+ catch {
274
+ /* the in-memory backoff still applies to this process */
275
+ }
276
+ }
277
+ /**
278
+ * One snapshot per sidecar across processes. Returns a release function, or
279
+ * null when a live process holds the lock. Two processes that take over the
280
+ * same stale lock at once can each copy; unique staging keeps that safe.
281
+ */
282
+ async function acquireSnapshotLock(dest, nowMs) {
283
+ const lockPath = gitSidecarLockPath(dest);
284
+ for (let attempt = 0; attempt < 2; attempt += 1) {
285
+ try {
286
+ const handle = await fs.promises.open(lockPath, "wx");
287
+ try {
288
+ await handle.writeFile(`${process.pid}\n`);
289
+ }
290
+ finally {
291
+ await handle.close();
292
+ }
293
+ return async () => {
294
+ try {
295
+ const holder = Number((await fs.promises.readFile(lockPath, "utf8")).trim());
296
+ if (holder === process.pid)
297
+ await fs.promises.rm(lockPath, { force: true });
298
+ }
299
+ catch {
300
+ /* already gone */
301
+ }
302
+ };
303
+ }
304
+ catch (err) {
305
+ if (err.code !== "EEXIST")
306
+ throw err;
307
+ }
308
+ let holder;
309
+ let mtimeMs;
310
+ try {
311
+ holder = Number((await fs.promises.readFile(lockPath, "utf8")).trim());
312
+ mtimeMs = (await fs.promises.stat(lockPath)).mtimeMs;
313
+ }
314
+ catch {
315
+ continue; // released between open and read
316
+ }
317
+ if (isPidAlive(holder) && nowMs - mtimeMs < GIT_SIDECAR_LOCK_STALE_MS)
318
+ return null;
319
+ await fs.promises.rm(lockPath, { force: true });
320
+ }
321
+ return null;
322
+ }
323
+ /**
324
+ * Remove staging and swap directories that killed or crashed snapshots left
325
+ * next to the sidecar. One abandoned full copy of a large `.git` can be what
326
+ * filled the disk. Runs with the snapshot lock held, so no copy by this
327
+ * release is live; a legacy shared `.tmp` is removed only once it is old.
328
+ */
329
+ async function sweepStaleStaging(dest, nowMs) {
330
+ const parent = path.dirname(dest);
331
+ const base = path.basename(dest);
332
+ let names;
333
+ try {
334
+ names = await fs.promises.readdir(parent);
335
+ }
336
+ catch {
337
+ return;
338
+ }
339
+ for (const name of names) {
340
+ if (!name.startsWith(`${base}.`))
341
+ continue;
342
+ const suffix = name.slice(base.length + 1);
343
+ const full = path.join(parent, name);
344
+ let stale = /^(?:tmp|old)-\d+-[0-9a-f]+$/.test(suffix);
345
+ if (suffix === "tmp") {
346
+ try {
347
+ stale = nowMs - (await fs.promises.lstat(full)).mtimeMs >= GIT_SIDECAR_STALE_STAGING_MS;
348
+ }
349
+ catch {
350
+ stale = false;
351
+ }
352
+ }
353
+ if (!stale)
354
+ continue;
355
+ try {
356
+ await fs.promises.rm(full, { recursive: true, force: true });
357
+ }
358
+ catch (err) {
359
+ console.warn(`hq-root-recovery: could not remove stale sidecar staging ${full}:`, err);
360
+ }
361
+ }
362
+ }
363
+ /** Replace `dest` with `staging`; on failure the previous sidecar is put back. */
364
+ async function swapIntoPlace(staging, dest) {
365
+ const previous = uniqueSiblingPath(dest, "old");
366
+ let moved = false;
367
+ try {
368
+ await fs.promises.rename(dest, previous);
369
+ moved = true;
370
+ }
371
+ catch (err) {
372
+ if (err.code !== "ENOENT")
373
+ throw err;
374
+ }
375
+ try {
376
+ await fs.promises.rename(staging, dest);
377
+ }
378
+ catch (err) {
379
+ if (moved)
380
+ await fs.promises.rename(previous, dest).catch(() => undefined);
381
+ throw err;
382
+ }
383
+ if (moved)
384
+ await fs.promises.rm(previous, { recursive: true, force: true });
385
+ }
386
+ async function snapshotHqGitAsync(hqRoot, dest, opts, nowMs) {
160
387
  const gitDir = path.join(hqRoot, ".git");
161
388
  try {
162
389
  if (!(await fs.promises.lstat(gitDir)).isDirectory())
@@ -169,11 +396,22 @@ async function snapshotHqGitAsync(hqRoot, dest, opts) {
169
396
  if (currentHead !== null && currentHead === (await readHeadAsync(dest))) {
170
397
  return "unchanged";
171
398
  }
172
- const staging = `${dest}.tmp`;
399
+ const persistedFailedAt = await readPersistedFailedAt(dest);
400
+ if (persistedFailedAt !== undefined &&
401
+ nowMs - persistedFailedAt < (opts.retryAfterMs ?? GIT_SIDECAR_RETRY_AFTER_MS)) {
402
+ return "deferred";
403
+ }
404
+ let release = null;
405
+ const staging = uniqueSiblingPath(dest, "tmp");
173
406
  try {
174
- await fs.promises.rm(staging, { recursive: true, force: true });
175
407
  await fs.promises.mkdir(path.dirname(dest), { recursive: true });
176
- const needed = await copyableSizeBytes(gitDir);
408
+ release = await acquireSnapshotLock(dest, nowMs);
409
+ if (release === null)
410
+ return "in-progress";
411
+ await sweepStaleStaging(dest, nowMs);
412
+ const method = await (opts.copyMethod ?? gitSidecarCopyMethod)(gitDir, path.dirname(dest));
413
+ // A clone writes metadata only; a copy writes every byte.
414
+ const needed = method === "clone" ? 0 : await copyableSizeBytes(gitDir);
177
415
  const free = await (opts.freeBytes ?? defaultFreeBytes)(path.dirname(dest));
178
416
  const reserve = opts.minFreeBytes ?? GIT_SIDECAR_MIN_FREE_BYTES;
179
417
  if (free - needed < reserve) {
@@ -181,12 +419,8 @@ async function snapshotHqGitAsync(hqRoot, dest, opts) {
181
419
  `${Math.max(0, free - needed)} of the ${reserve}-byte free-space reserve`);
182
420
  return "insufficient-space";
183
421
  }
184
- await fs.promises.cp(gitDir, staging, {
185
- recursive: true,
186
- filter: gitSidecarCopyFilter,
187
- });
188
- await fs.promises.rm(dest, { recursive: true, force: true });
189
- await fs.promises.rename(staging, dest);
422
+ await (opts.copyTree ?? defaultCopyTree)(gitDir, staging, method);
423
+ await swapIntoPlace(staging, dest);
190
424
  return "snapshotted";
191
425
  }
192
426
  catch (err) {
@@ -199,15 +433,20 @@ async function snapshotHqGitAsync(hqRoot, dest, opts) {
199
433
  console.warn("hq-root-recovery: git sidecar snapshot failed:", err);
200
434
  return "failed";
201
435
  }
436
+ finally {
437
+ if (release !== null)
438
+ await release();
439
+ }
202
440
  }
203
441
  /**
204
442
  * Snapshot `.git` without blocking the caller's event loop. The HQ `.git` can
205
443
  * be many gigabytes, and the watch runner calls this at startup and on every
206
- * pass, so the copy runs on libuv's threadpool through `fs.promises.cp`.
207
- * Concurrent calls for one sidecar share a single copy, and after a failed
208
- * copy the next attempt waits `retryAfterMs` instead of recopying every pass.
209
- * The copy is skipped when it would leave less than `minFreeBytes` free on
210
- * the destination volume.
444
+ * pass, so the copy runs off the event loop, as a copy-on-write clone where
445
+ * the volume supports one. Concurrent calls for one sidecar share a single
446
+ * copy: in this process through one promise, across processes through a lock
447
+ * file. After a failed or skipped copy, every process waits `retryAfterMs`
448
+ * before the next attempt. The copy is skipped when it would leave less than
449
+ * `minFreeBytes` free on the destination volume.
211
450
  * The returned promise never rejects.
212
451
  */
213
452
  export function snapshotHqGitInBackground(hqRoot, opts = {}) {
@@ -221,12 +460,17 @@ export function snapshotHqGitInBackground(hqRoot, opts = {}) {
221
460
  now() - failedAt < (opts.retryAfterMs ?? GIT_SIDECAR_RETRY_AFTER_MS)) {
222
461
  return Promise.resolve("deferred");
223
462
  }
224
- const task = snapshotHqGitAsync(hqRoot, dest, opts)
225
- .then((action) => {
226
- if (action === "failed" || action === "insufficient-space")
227
- failedSnapshotAt.set(dest, now());
228
- else
463
+ const task = snapshotHqGitAsync(hqRoot, dest, opts, now())
464
+ .then(async (action) => {
465
+ if (action === "failed" || action === "insufficient-space") {
466
+ const at = now();
467
+ failedSnapshotAt.set(dest, at);
468
+ await writePersistedState(dest, { failedAt: at, action });
469
+ }
470
+ else if (action === "snapshotted" || action === "unchanged") {
229
471
  failedSnapshotAt.delete(dest);
472
+ await writePersistedState(dest, null);
473
+ }
230
474
  return action;
231
475
  })
232
476
  .finally(() => {