@indigoai-us/hq-cloud 6.18.15 → 6.18.16-alpha.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.
- package/dist/bin/sync-runner-watch-loop.d.ts +1 -1
- package/dist/bin/sync-runner-watch-loop.d.ts.map +1 -1
- package/dist/bin/sync-runner-watch-loop.js +25 -10
- package/dist/bin/sync-runner-watch-loop.js.map +1 -1
- package/dist/bin/sync-runner-watch-loop.test.js +199 -2
- package/dist/bin/sync-runner-watch-loop.test.js.map +1 -1
- package/dist/bin/sync-runner.d.ts +12 -1
- package/dist/bin/sync-runner.d.ts.map +1 -1
- package/dist/bin/sync-runner.js +32 -14
- package/dist/bin/sync-runner.js.map +1 -1
- package/dist/bin/sync-runner.test.js +4 -4
- package/dist/bin/sync-runner.test.js.map +1 -1
- package/dist/cli/case-alias.d.ts +37 -0
- package/dist/cli/case-alias.d.ts.map +1 -0
- package/dist/cli/case-alias.js +140 -0
- package/dist/cli/case-alias.js.map +1 -0
- package/dist/cli/case-alias.test.d.ts +2 -0
- package/dist/cli/case-alias.test.d.ts.map +1 -0
- package/dist/cli/case-alias.test.js +96 -0
- package/dist/cli/case-alias.test.js.map +1 -0
- package/dist/cli/sync.d.ts +17 -1
- package/dist/cli/sync.d.ts.map +1 -1
- package/dist/cli/sync.js +56 -4
- package/dist/cli/sync.js.map +1 -1
- package/dist/cli/sync.test.js +144 -0
- package/dist/cli/sync.test.js.map +1 -1
- package/dist/qmd-reindex.d.ts +30 -10
- package/dist/qmd-reindex.d.ts.map +1 -1
- package/dist/qmd-reindex.js +148 -41
- package/dist/qmd-reindex.js.map +1 -1
- package/dist/qmd-reindex.test.js +191 -78
- package/dist/qmd-reindex.test.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Folded spelling as a case-insensitive, normalization-insensitive volume sees
|
|
3
|
+
* it. `toLowerCase()` alone is not Unicode case folding: final sigma `ς`
|
|
4
|
+
* stays `ς` while `Σ` lowers to `σ`, yet APFS and NTFS treat all three as one
|
|
5
|
+
* name. Mapping each code point through its single-code-point upper case
|
|
6
|
+
* first (simple case folding) closes those gaps. Expanding upper cases such
|
|
7
|
+
* as `ß` -> `SS` are left alone: filesystems use simple, not full, folding.
|
|
8
|
+
*/
|
|
9
|
+
export declare function foldVaultKey(key: string): string;
|
|
10
|
+
export interface CaseAliasTracker {
|
|
11
|
+
/** Record a key the remote LIST holds (a live object). */
|
|
12
|
+
observeRemote(remoteKey: string): void;
|
|
13
|
+
/**
|
|
14
|
+
* Stop observing and return the aliased keys. Drops the candidate map and
|
|
15
|
+
* the membership callback so they are not retained through the transfer
|
|
16
|
+
* phase; the plan keeps only this (normally tiny) set.
|
|
17
|
+
*/
|
|
18
|
+
finish(): ReadonlySet<string>;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* @param candidateKeys keys the executors may delete (journal rows, tombstoned keys)
|
|
22
|
+
* @param hasCandidate exact-membership test over the same keys, used for a
|
|
23
|
+
* remote key's folded spelling so all-lower-case
|
|
24
|
+
* candidates need no map entry
|
|
25
|
+
*/
|
|
26
|
+
export declare function createCaseAliasTracker(candidateKeys: Iterable<string>, hasCandidate: (key: string) => boolean): CaseAliasTracker;
|
|
27
|
+
/**
|
|
28
|
+
* Whether lookups inside `dir` fold case. Takes an existing child whose name
|
|
29
|
+
* has letters and checks that its case-flipped spelling, looked up in the same
|
|
30
|
+
* directory, resolves to the same inode. Probing inside `dir` (not `dir` in
|
|
31
|
+
* its parent) measures the filesystem that stores the synced files even when
|
|
32
|
+
* `dir` is itself a mount point. An empty directory, a directory with no
|
|
33
|
+
* letter-bearing names, or any error reads as "does not fold", which keeps
|
|
34
|
+
* today's delete behaviour; with no children there is nothing to delete.
|
|
35
|
+
*/
|
|
36
|
+
export declare function directoryFoldsCase(dir: string): boolean;
|
|
37
|
+
//# sourceMappingURL=case-alias.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"case-alias.d.ts","sourceRoot":"","sources":["../../src/cli/case-alias.ts"],"names":[],"mappings":"AAoBA;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAWhD;AAWD,MAAM,WAAW,gBAAgB;IAC/B,0DAA0D;IAC1D,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC;;;;OAIG;IACH,MAAM,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC;CAC/B;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,aAAa,EAAE,QAAQ,CAAC,MAAM,CAAC,EAC/B,YAAY,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,GACrC,gBAAgB,CAiClB;AAWD;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAmBvD"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Case-only rename aliasing on case-folding volumes (feedback_c8ed69d1).
|
|
3
|
+
*
|
|
4
|
+
* S3 keys are case-sensitive; APFS, HFS+ and NTFS defaults are not. After a
|
|
5
|
+
* teammate renames `TikTok-Shop/` to `tiktok-shop/`, a Mac that still has the
|
|
6
|
+
* folder spelled `TikTok-Shop/` holds ONE file that is the local copy of both
|
|
7
|
+
* the dead key `TikTok-Shop/plan.md` and the live key `tiktok-shop/plan.md`.
|
|
8
|
+
* Deleting the dead key's local path removes the live key's only copy, and the
|
|
9
|
+
* push leg then deletes the live key from the vault (Solace, 2026-09-27: 255
|
|
10
|
+
* live keys).
|
|
11
|
+
*
|
|
12
|
+
* The tracker answers one question for the pull executors: is this key's
|
|
13
|
+
* local path shared with a key the remote LIST still holds? It retains only
|
|
14
|
+
* the candidate keys whose folded spelling differs from the key itself, plus a
|
|
15
|
+
* membership callback for all-lower-case candidates, so it adds no second
|
|
16
|
+
* whole-vault copy of the journal.
|
|
17
|
+
*/
|
|
18
|
+
import * as fs from "fs";
|
|
19
|
+
import * as path from "path";
|
|
20
|
+
/**
|
|
21
|
+
* Folded spelling as a case-insensitive, normalization-insensitive volume sees
|
|
22
|
+
* it. `toLowerCase()` alone is not Unicode case folding: final sigma `ς`
|
|
23
|
+
* stays `ς` while `Σ` lowers to `σ`, yet APFS and NTFS treat all three as one
|
|
24
|
+
* name. Mapping each code point through its single-code-point upper case
|
|
25
|
+
* first (simple case folding) closes those gaps. Expanding upper cases such
|
|
26
|
+
* as `ß` -> `SS` are left alone: filesystems use simple, not full, folding.
|
|
27
|
+
*/
|
|
28
|
+
export function foldVaultKey(key) {
|
|
29
|
+
// Fast path: most keys are lower-case ASCII and fold to themselves. The
|
|
30
|
+
// tracker folds every listed key on a full pull, so this avoids allocating
|
|
31
|
+
// a copy per key.
|
|
32
|
+
let hasUpper = false;
|
|
33
|
+
for (let i = 0; i < key.length; i++) {
|
|
34
|
+
const code = key.charCodeAt(i);
|
|
35
|
+
if (code > 127)
|
|
36
|
+
return foldUnicode(key);
|
|
37
|
+
if (code >= 65 && code <= 90)
|
|
38
|
+
hasUpper = true;
|
|
39
|
+
}
|
|
40
|
+
return hasUpper ? key.toLowerCase() : key;
|
|
41
|
+
}
|
|
42
|
+
function foldUnicode(key) {
|
|
43
|
+
let out = "";
|
|
44
|
+
for (const ch of key.normalize("NFC")) {
|
|
45
|
+
const upper = ch.toUpperCase();
|
|
46
|
+
out += (upper.length === ch.length ? upper : ch).toLowerCase();
|
|
47
|
+
}
|
|
48
|
+
return out;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* @param candidateKeys keys the executors may delete (journal rows, tombstoned keys)
|
|
52
|
+
* @param hasCandidate exact-membership test over the same keys, used for a
|
|
53
|
+
* remote key's folded spelling so all-lower-case
|
|
54
|
+
* candidates need no map entry
|
|
55
|
+
*/
|
|
56
|
+
export function createCaseAliasTracker(candidateKeys, hasCandidate) {
|
|
57
|
+
// Only keys whose folded spelling differs from the key get an entry, so a
|
|
58
|
+
// mostly lower-case journal adds few strings. String keys (rather than a
|
|
59
|
+
// numeric hash) let each lookup reuse V8's cached string hash.
|
|
60
|
+
let foldedCandidates = new Map();
|
|
61
|
+
let isCandidate = hasCandidate;
|
|
62
|
+
for (const key of candidateKeys) {
|
|
63
|
+
const folded = foldVaultKey(key);
|
|
64
|
+
if (folded === key)
|
|
65
|
+
continue;
|
|
66
|
+
const existing = foldedCandidates.get(folded);
|
|
67
|
+
if (existing === undefined)
|
|
68
|
+
foldedCandidates.set(folded, key);
|
|
69
|
+
else if (typeof existing === "string")
|
|
70
|
+
foldedCandidates.set(folded, [existing, key]);
|
|
71
|
+
else
|
|
72
|
+
existing.push(key);
|
|
73
|
+
}
|
|
74
|
+
const aliased = new Set();
|
|
75
|
+
return {
|
|
76
|
+
observeRemote(remoteKey) {
|
|
77
|
+
if (foldedCandidates === null || isCandidate === null)
|
|
78
|
+
return;
|
|
79
|
+
const folded = foldVaultKey(remoteKey);
|
|
80
|
+
const hit = foldedCandidates.get(folded);
|
|
81
|
+
if (typeof hit === "string") {
|
|
82
|
+
if (hit !== remoteKey)
|
|
83
|
+
aliased.add(hit);
|
|
84
|
+
}
|
|
85
|
+
else if (hit !== undefined) {
|
|
86
|
+
for (const candidate of hit)
|
|
87
|
+
if (candidate !== remoteKey)
|
|
88
|
+
aliased.add(candidate);
|
|
89
|
+
}
|
|
90
|
+
if (folded !== remoteKey && isCandidate(folded))
|
|
91
|
+
aliased.add(folded);
|
|
92
|
+
},
|
|
93
|
+
finish() {
|
|
94
|
+
foldedCandidates = null;
|
|
95
|
+
isCandidate = null;
|
|
96
|
+
return aliased;
|
|
97
|
+
},
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
function swapCase(value) {
|
|
101
|
+
let out = "";
|
|
102
|
+
for (const ch of value) {
|
|
103
|
+
const upper = ch.toUpperCase();
|
|
104
|
+
out += ch === upper ? ch.toLowerCase() : upper;
|
|
105
|
+
}
|
|
106
|
+
return out;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Whether lookups inside `dir` fold case. Takes an existing child whose name
|
|
110
|
+
* has letters and checks that its case-flipped spelling, looked up in the same
|
|
111
|
+
* directory, resolves to the same inode. Probing inside `dir` (not `dir` in
|
|
112
|
+
* its parent) measures the filesystem that stores the synced files even when
|
|
113
|
+
* `dir` is itself a mount point. An empty directory, a directory with no
|
|
114
|
+
* letter-bearing names, or any error reads as "does not fold", which keeps
|
|
115
|
+
* today's delete behaviour; with no children there is nothing to delete.
|
|
116
|
+
*/
|
|
117
|
+
export function directoryFoldsCase(dir) {
|
|
118
|
+
let names;
|
|
119
|
+
try {
|
|
120
|
+
names = fs.readdirSync(dir);
|
|
121
|
+
}
|
|
122
|
+
catch {
|
|
123
|
+
return false;
|
|
124
|
+
}
|
|
125
|
+
for (const name of names) {
|
|
126
|
+
const flipped = swapCase(name);
|
|
127
|
+
if (flipped === name)
|
|
128
|
+
continue;
|
|
129
|
+
try {
|
|
130
|
+
const actual = fs.lstatSync(path.join(dir, name));
|
|
131
|
+
const other = fs.lstatSync(path.join(dir, flipped));
|
|
132
|
+
return actual.ino === other.ino && actual.dev === other.dev;
|
|
133
|
+
}
|
|
134
|
+
catch {
|
|
135
|
+
return false;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
return false;
|
|
139
|
+
}
|
|
140
|
+
//# sourceMappingURL=case-alias.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"case-alias.js","sourceRoot":"","sources":["../../src/cli/case-alias.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"case-alias.test.d.ts","sourceRoot":"","sources":["../../src/cli/case-alias.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
|
2
|
+
import * as fs from "fs";
|
|
3
|
+
import * as os from "os";
|
|
4
|
+
import * as path from "path";
|
|
5
|
+
import { createCaseAliasTracker, directoryFoldsCase, foldVaultKey } from "./case-alias.js";
|
|
6
|
+
describe("case alias tracker (feedback_c8ed69d1)", () => {
|
|
7
|
+
it("flags a mixed-case journal key when its lower-case twin is listed", () => {
|
|
8
|
+
const tracker = createCaseAliasTracker(["TikTok-Shop/plan.md", "docs/a.md"], () => false);
|
|
9
|
+
tracker.observeRemote("tiktok-shop/plan.md");
|
|
10
|
+
const aliased = tracker.finish();
|
|
11
|
+
expect(aliased.has("TikTok-Shop/plan.md")).toBe(true);
|
|
12
|
+
expect(aliased.has("docs/a.md")).toBe(false);
|
|
13
|
+
});
|
|
14
|
+
it("flags a lower-case journal key when a mixed-case twin is listed", () => {
|
|
15
|
+
const journal = new Set(["tiktok-shop/plan.md"]);
|
|
16
|
+
const tracker = createCaseAliasTracker(journal, (key) => journal.has(key));
|
|
17
|
+
tracker.observeRemote("TikTok-Shop/plan.md");
|
|
18
|
+
expect(tracker.finish().has("tiktok-shop/plan.md")).toBe(true);
|
|
19
|
+
});
|
|
20
|
+
it("flags keys that differ only in both-sides mixed case", () => {
|
|
21
|
+
const tracker = createCaseAliasTracker(["Readme/X.md"], () => false);
|
|
22
|
+
tracker.observeRemote("README/x.md");
|
|
23
|
+
expect(tracker.finish().has("Readme/X.md")).toBe(true);
|
|
24
|
+
});
|
|
25
|
+
it("never flags a key because the same key is listed", () => {
|
|
26
|
+
const journal = new Set(["TikTok-Shop/plan.md", "docs/a.md"]);
|
|
27
|
+
const tracker = createCaseAliasTracker(journal, (key) => journal.has(key));
|
|
28
|
+
tracker.observeRemote("TikTok-Shop/plan.md");
|
|
29
|
+
tracker.observeRemote("docs/a.md");
|
|
30
|
+
const aliased = tracker.finish();
|
|
31
|
+
expect(aliased.has("TikTok-Shop/plan.md")).toBe(false);
|
|
32
|
+
expect(aliased.has("docs/a.md")).toBe(false);
|
|
33
|
+
});
|
|
34
|
+
it("folds Unicode normalization as well as case", () => {
|
|
35
|
+
const nfd = "Café/menu.md".normalize("NFD");
|
|
36
|
+
const tracker = createCaseAliasTracker([nfd], () => false);
|
|
37
|
+
tracker.observeRemote("café/menu.md".normalize("NFC"));
|
|
38
|
+
expect(tracker.finish().has(nfd)).toBe(true);
|
|
39
|
+
expect(foldVaultKey(nfd)).toBe(foldVaultKey("CAFÉ/MENU.md"));
|
|
40
|
+
});
|
|
41
|
+
it("uses simple case folding, so final sigma matches sigma and capital sigma", () => {
|
|
42
|
+
// `toLowerCase()` leaves `ς` as `ς` but lowers `Σ` to `σ`; case-insensitive
|
|
43
|
+
// APFS and NTFS treat all three as the same name.
|
|
44
|
+
expect(foldVaultKey("ΟΔΟΣ/a.md")).toBe(foldVaultKey("οδος/a.md"));
|
|
45
|
+
expect(foldVaultKey("οδος/a.md")).toBe(foldVaultKey("οδοσ/a.md"));
|
|
46
|
+
const journal = new Set(["οδος/a.md"]);
|
|
47
|
+
const tracker = createCaseAliasTracker(journal, (key) => journal.has(key));
|
|
48
|
+
tracker.observeRemote("ΟΔΟΣ/a.md");
|
|
49
|
+
expect(tracker.finish().has("οδος/a.md")).toBe(true);
|
|
50
|
+
});
|
|
51
|
+
it("does not use full case folding expansions", () => {
|
|
52
|
+
// Filesystems fold simply: `ß` and `ss` are different names.
|
|
53
|
+
expect(foldVaultKey("Straße.md")).not.toBe(foldVaultKey("strasse.md"));
|
|
54
|
+
});
|
|
55
|
+
it("stops observing and releases its candidates once finished", () => {
|
|
56
|
+
const tracker = createCaseAliasTracker(["TikTok-Shop/plan.md"], () => false);
|
|
57
|
+
const aliased = tracker.finish();
|
|
58
|
+
tracker.observeRemote("tiktok-shop/plan.md");
|
|
59
|
+
expect(aliased.size).toBe(0);
|
|
60
|
+
});
|
|
61
|
+
it("flags only the exact folded twin among many capitalised candidates", () => {
|
|
62
|
+
const candidates = Array.from({ length: 50_000 }, (_, i) => `Area/File-${i}.md`);
|
|
63
|
+
const tracker = createCaseAliasTracker(candidates, () => false);
|
|
64
|
+
tracker.observeRemote("area/other.md");
|
|
65
|
+
tracker.observeRemote("area/file-49999.md");
|
|
66
|
+
const aliased = tracker.finish();
|
|
67
|
+
expect([...aliased]).toEqual(["Area/File-49999.md"]);
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
describe("directoryFoldsCase", () => {
|
|
71
|
+
it("measures lookups inside the directory against the real filesystem", () => {
|
|
72
|
+
const dir = fs.mkdtempSync(path.join(os.tmpdir(), "hq-case-probe-"));
|
|
73
|
+
try {
|
|
74
|
+
fs.writeFileSync(path.join(dir, "Probe.md"), "x");
|
|
75
|
+
// Ground truth from the filesystem itself, not from the platform name.
|
|
76
|
+
const folds = fs.existsSync(path.join(dir, "pROBE.MD"));
|
|
77
|
+
expect(directoryFoldsCase(dir)).toBe(folds);
|
|
78
|
+
}
|
|
79
|
+
finally {
|
|
80
|
+
fs.rmSync(dir, { recursive: true, force: true });
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
it("reads as not folding when the directory has nothing to compare", () => {
|
|
84
|
+
const dir = fs.mkdtempSync(path.join(os.tmpdir(), "hq-case-probe-"));
|
|
85
|
+
try {
|
|
86
|
+
expect(directoryFoldsCase(dir)).toBe(false);
|
|
87
|
+
fs.writeFileSync(path.join(dir, "123"), "x");
|
|
88
|
+
expect(directoryFoldsCase(dir)).toBe(false);
|
|
89
|
+
expect(directoryFoldsCase(path.join(dir, "missing"))).toBe(false);
|
|
90
|
+
}
|
|
91
|
+
finally {
|
|
92
|
+
fs.rmSync(dir, { recursive: true, force: true });
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
});
|
|
96
|
+
//# sourceMappingURL=case-alias.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"case-alias.test.js","sourceRoot":"","sources":["../../src/cli/case-alias.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE3F,QAAQ,CAAC,wCAAwC,EAAE,GAAG,EAAE;IACtD,EAAE,CAAC,mEAAmE,EAAE,GAAG,EAAE;QAC3E,MAAM,OAAO,GAAG,sBAAsB,CAAC,CAAC,qBAAqB,EAAE,WAAW,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;QAC1F,OAAO,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC;QAC7C,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;QACjC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtD,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iEAAiE,EAAE,GAAG,EAAE;QACzE,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC;QACjD,MAAM,OAAO,GAAG,sBAAsB,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QAC3E,OAAO,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC;QAC7C,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC9D,MAAM,OAAO,GAAG,sBAAsB,CAAC,CAAC,aAAa,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;QACrE,OAAO,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;QACrC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC,qBAAqB,EAAE,WAAW,CAAC,CAAC,CAAC;QAC9D,MAAM,OAAO,GAAG,sBAAsB,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QAC3E,OAAO,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC;QAC7C,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;QACnC,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;QACjC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvD,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,MAAM,GAAG,GAAG,cAAc,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC5C,MAAM,OAAO,GAAG,sBAAsB,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;QAC3D,OAAO,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;QACvD,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7C,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0EAA0E,EAAE,GAAG,EAAE;QAClF,4EAA4E;QAC5E,kDAAkD;QAClD,MAAM,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC;QAClE,MAAM,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC;QAClE,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;QACvC,MAAM,OAAO,GAAG,sBAAsB,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QAC3E,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;QACnC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,6DAA6D;QAC7D,MAAM,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2DAA2D,EAAE,GAAG,EAAE;QACnE,MAAM,OAAO,GAAG,sBAAsB,CAAC,CAAC,qBAAqB,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;QAC7E,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;QACjC,OAAO,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC;QAC7C,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oEAAoE,EAAE,GAAG,EAAE;QAC5E,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACjF,MAAM,OAAO,GAAG,sBAAsB,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;QAChE,OAAO,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;QACvC,OAAO,CAAC,aAAa,CAAC,oBAAoB,CAAC,CAAC;QAC5C,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;QACjC,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,EAAE,CAAC,mEAAmE,EAAE,GAAG,EAAE;QAC3E,MAAM,GAAG,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,gBAAgB,CAAC,CAAC,CAAC;QACrE,IAAI,CAAC;YACH,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,EAAE,GAAG,CAAC,CAAC;YAClD,uEAAuE;YACvE,MAAM,KAAK,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC;YACxD,MAAM,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9C,CAAC;gBAAS,CAAC;YACT,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACnD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE;QACxE,MAAM,GAAG,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,gBAAgB,CAAC,CAAC,CAAC;QACrE,IAAI,CAAC;YACH,MAAM,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC5C,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC;YAC7C,MAAM,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC5C,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpE,CAAC;gBAAS,CAAC;YACT,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACnD,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
package/dist/cli/sync.d.ts
CHANGED
|
@@ -669,6 +669,12 @@ export interface SyncOptions {
|
|
|
669
669
|
* the correct company or personal scope itself.
|
|
670
670
|
*/
|
|
671
671
|
fileTombstones?: ReadonlyMap<string, CompanyTombstone>;
|
|
672
|
+
/**
|
|
673
|
+
* Whether the company root's volume folds case. Probed once per pull when
|
|
674
|
+
* absent. Tests on case-sensitive filesystems force `true` to exercise the
|
|
675
|
+
* case-only rename guard (feedback_c8ed69d1).
|
|
676
|
+
*/
|
|
677
|
+
caseFoldingVolume?: boolean;
|
|
672
678
|
/**
|
|
673
679
|
* Effective sync mode for this leg (US-005 wiring). Defaults to `"all"`
|
|
674
680
|
* when absent, preserving the legacy full-bucket pull. The runner resolves
|
|
@@ -1100,6 +1106,11 @@ interface PullPlan {
|
|
|
1100
1106
|
key: string;
|
|
1101
1107
|
localPath: string;
|
|
1102
1108
|
localSnapshot: LocalSnapshot;
|
|
1109
|
+
/**
|
|
1110
|
+
* The key's local path belongs to a live key that differs only in case
|
|
1111
|
+
* (feedback_c8ed69d1). Drop the journal row; never touch the disk.
|
|
1112
|
+
*/
|
|
1113
|
+
journalOnly?: true;
|
|
1103
1114
|
}>;
|
|
1104
1115
|
/**
|
|
1105
1116
|
* Count of `tombstone-delete` items — remote keys present in the LIST but
|
|
@@ -1118,6 +1129,11 @@ interface PullPlan {
|
|
|
1118
1129
|
path: string;
|
|
1119
1130
|
errorCode: string;
|
|
1120
1131
|
}>;
|
|
1132
|
+
/**
|
|
1133
|
+
* Keys whose local path belongs to a live key that differs only in case;
|
|
1134
|
+
* null on case-sensitive volumes (feedback_c8ed69d1).
|
|
1135
|
+
*/
|
|
1136
|
+
caseAliasedKeys?: ReadonlySet<string> | null;
|
|
1121
1137
|
}
|
|
1122
1138
|
/**
|
|
1123
1139
|
* win32 only: true when an existing local symlink's TARGET exists but the
|
|
@@ -1128,6 +1144,6 @@ interface PullPlan {
|
|
|
1128
1144
|
* false off win32.
|
|
1129
1145
|
*/
|
|
1130
1146
|
export declare function win32SymlinkFlavorBroken(localPath: string, win32?: boolean): boolean;
|
|
1131
|
-
declare function computePullPlan(remoteFiles: RemoteFileSource, journal: SyncJournal, companyRoot: string, shouldSync: (filePath: string, isDir?: boolean) => boolean, personalMode: boolean, teamSyncedSlugs: ReadonlySet<string> | null, prefixSet: readonly ScopePrefixInput[], fileTombstones?: ReadonlyMap<string, CompanyTombstone>, excludePrefixes?: readonly ScopePrefixInput[], propagateDeletePolicy?: "currency-gated" | "owned-only" | "all", onHeartbeat?: () => void, journalRowCount?: number, cooperativeCheckpoint?: () => Promise<void | boolean>, onCooperativeHandoff?: () => void, deleteDenominatorKeys?: ReadonlySet<string>, pullContentHashes?: Readonly<Record<string, string>>, ctx?: EntityContext): Promise<PullPlan>;
|
|
1147
|
+
declare function computePullPlan(remoteFiles: RemoteFileSource, journal: SyncJournal, companyRoot: string, shouldSync: (filePath: string, isDir?: boolean) => boolean, personalMode: boolean, teamSyncedSlugs: ReadonlySet<string> | null, prefixSet: readonly ScopePrefixInput[], fileTombstones?: ReadonlyMap<string, CompanyTombstone>, excludePrefixes?: readonly ScopePrefixInput[], propagateDeletePolicy?: "currency-gated" | "owned-only" | "all", onHeartbeat?: () => void, journalRowCount?: number, cooperativeCheckpoint?: () => Promise<void | boolean>, onCooperativeHandoff?: () => void, deleteDenominatorKeys?: ReadonlySet<string>, pullContentHashes?: Readonly<Record<string, string>>, ctx?: EntityContext, caseFoldingVolume?: boolean): Promise<PullPlan>;
|
|
1132
1148
|
export {};
|
|
1133
1149
|
//# sourceMappingURL=sync.d.ts.map
|
package/dist/cli/sync.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/cli/sync.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/cli/sync.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAA4C,KAAK,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAKjH,OAAO,KAAK,EACV,aAAa,EACb,kBAAkB,EAClB,WAAW,EACZ,MAAM,aAAa,CAAC;AACrB,OAAO,EAA+B,KAAK,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAUhF,OAAO,EAEL,KAAK,eAAe,EACrB,MAAM,wBAAwB,CAAC;AA4BhC,OAAO,KAAK,EAAuB,UAAU,EAAE,MAAM,UAAU,CAAC;AAyChE,OAAO,EAML,KAAK,gBAAgB,EACtB,MAAM,uBAAuB,CAAC;AAM/B,OAAO,EAOL,KAAK,iBAAiB,EAEtB,KAAK,gBAAgB,EACtB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAW5F,OAAO,EAEL,KAAK,gBAAgB,EACtB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,cAAc,EACd,KAAK,cAAc,EACpB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,kBAAkB,EAClB,KAAK,mBAAmB,EACzB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAA4B,KAAK,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AAGtG,iFAAiF;AACjF,eAAO,MAAM,2BAA2B,+CAAgD,CAAC;AAEzF;;;;GAIG;AACH,eAAO,MAAM,kCAAkC,kBAAkB,CAAC;AAElE,yFAAyF;AACzF,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAI3E;AAED,MAAM,WAAW,uBAAuB;IACtC,MAAM,CAAC,KAAK,EAAE;QAAE,aAAa,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,QAAQ,GAAG,QAAQ,CAAC;QAAC,KAAK,CAAC,EAAE,UAAU,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,aAAa,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,cAAc,CAAA;KAAE,CAAC,CAAC;CACnJ;AA+CD;;;;GAIG;AACH,wBAAsB,wBAAwB,CAC5C,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,uBAAuB,GAC9B,OAAO,CAAC,MAAM,CAAC,CAWjB;AAED,gFAAgF;AAChF,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,qBAAqB,CAAC,OAAO,cAAc,CAAC,CAAC,CAAC,CAAC,GAAG,cAAc,CAEjH;AAED;;;GAGG;AACH,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,kBAAkB,EAC1B,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,aAAa,GAAG,eAAe,GAAG,QAAQ,CAAC,EACjE,YAAY,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,OAAO,CAAC,mBAAmB,CAAC,GACjE,OAAO,CAAC,IAAI,CAAC,CAEf;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,iBAAiB,GACzB;IACE,IAAI,EAAE,MAAM,CAAC;IACb,oEAAoE;IACpE,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,iEAAiE;IACjE,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,0EAA0E;IAC1E,WAAW,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,eAAe,EAAE,MAAM,CAAC;IACxB;;;;;;;OAOG;IACH,aAAa,EAAE,MAAM,CAAC;CACvB,GACD;IACE,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sEAAsE;IACtE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;;;;;OAQG;IACH,SAAS,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;IAC1B;;;;;;;OAOG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB,GACD;IACE,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB;;;;;;;OAOG;IACH,UAAU,CAAC,EAAE,IAAI,CAAC;CACnB,GACD;IACE,4EAA4E;IAC5E,IAAI,EAAE,YAAY,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB,GACD;IACE,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3B,UAAU,EAAE,kBAAkB,CAAC;IAC/B,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,gBAAgB,CAAC;CAC7B,GACD;IACE;;;;;;OAMG;IACH,IAAI,EAAE,2BAA2B,CAAC;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,sBAAsB,GAAG,0BAA0B,CAAC;CAC/D,GACD;IACE;;;;;OAKG;IACH,IAAI,EAAE,mCAAmC,CAAC;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB,GACD;IACE;;;;;;;;;;;;;;;;OAgBG;IACH,IAAI,EAAE,YAAY,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;CAC5B,GACD;IACE,IAAI,EAAE,WAAW,CAAC;IAClB,KAAK,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC,CAAC;CACvE,GACD;IACE;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,IAAI,EAAE,2BAA2B,CAAC;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EACF,YAAY,GACZ,gBAAgB,GAChB,gBAAgB,GAChB,iBAAiB,GACjB,uBAAuB,GACvB,gBAAgB,GAChB,mBAAmB,GACnB,iBAAiB,CAAC;CACvB,GACD;IACE;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,IAAI,EAAE,+BAA+B,CAAC;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB,GACD;IACE;;;;;;;;;;;;;;;OAeG;IACH,IAAI,EAAE,8BAA8B,CAAC;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B,GACD;IACE;;;;;;;;;;;;;;;;;;;OAmBG;IACH,IAAI,EAAE,+BAA+B,CAAC;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC,GACD;IACE;;;;;;;OAOG;IACH,IAAI,EAAE,sCAAsC,CAAC;IAC7C,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB,GACD;IACE;;;;;;;;;;;;;;;;OAgBG;IACH,IAAI,EAAE,gBAAgB,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB,GACD;IACE;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,IAAI,EAAE,2BAA2B,CAAC;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,QAAQ,EAAE,QAAQ,CAAC;CACpB,GACD;IACE;;;;;;;;;OASG;IACH,IAAI,EAAE,iBAAiB,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB,GACD;IACE;;;;;;;;;;;OAWG;IACH,IAAI,EAAE,6BAA6B,CAAC;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB,GACD;IACE;;;;;;;;;;;;OAYG;IACH,IAAI,EAAE,iBAAiB,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf,GACD;IACE;;;;;;;;;;;;;;OAcG;IACH,IAAI,EAAE,yBAAyB,CAAC;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,6EAA6E;IAC7E,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GACD;IACE;;;;;;;;;;;;;;OAcG;IACH,IAAI,EAAE,wBAAwB,CAAC;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,kEAAkE;IAClE,YAAY,EAAE,MAAM,CAAC;CACtB,GACD;IACE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA0CG;IACH,IAAI,EAAE,aAAa,CAAC;IACpB,MAAM,EACF,kBAAkB,GAClB,iBAAiB,GACjB,gBAAgB,GAChB,qBAAqB,GACrB,2BAA2B,GAC3B,4BAA4B,GAC5B,6BAA6B,GAC7B,2BAA2B,CAAC;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,4EAA4E;IAC5E,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GACD;IACE;;;;;;;;;;;;;;;;OAgBG;IACH,IAAI,EAAE,wBAAwB,CAAC;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,qEAAqE;IACrE,MAAM,EAAE,MAAM,CAAC;IACf,0EAA0E;IAC1E,MAAM,EAAE,MAAM,CAAC;CAChB,GACD;IACE;;;;;;;;;;;;;;;;;OAiBG;IACH,IAAI,EAAE,qBAAqB,CAAC;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,mEAAmE;IACnE,MAAM,EAAE,MAAM,CAAC;CAChB,GACD;IACE;;;;;;;;;;;;;OAaG;IACH,IAAI,EAAE,sBAAsB,CAAC;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB,GACD;IACE;;;;;OAKG;IACH,IAAI,EAAE,2BAA2B,CAAC;IAClC,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEN,MAAM,WAAW,WAAW;IAC1B,mEAAmE;IACnE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wCAAwC;IACxC,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,2BAA2B;IAC3B,WAAW,EAAE,kBAAkB,CAAC;IAChC,wBAAwB;IACxB,MAAM,EAAE,MAAM,CAAC;IACf;;;;;OAKG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC7C;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,8DAA8D;IAC9D,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC;;;OAGG;IACH,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;IACtD;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB;;;;;;;OAOG;IACH,qBAAqB,CAAC,EAAE,CAAC,MAAM,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,CAAC,GAAG;QACxD,yFAAyF;QACzF,qBAAqB,CAAC,EAAE,MAAM,OAAO,CAAC;QACtC,gFAAgF;QAChF,WAAW,CAAC,EAAE,MAAM,OAAO,CAAC;QAC5B,mFAAmF;QACnF,uBAAuB,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC;YAC/D,KAAK,EAAE,CAAC,CAAC;YACT,WAAW,EAAE,OAAO,CAAC;YACrB,QAAQ,EAAE,MAAM,IAAI,CAAC;SACtB,CAAC,CAAC;KACJ,CAAC;IACF;;;;;OAKG;IACH,qBAAqB,CAAC,EAAE,gBAAgB,GAAG,YAAY,GAAG,KAAK,CAAC;IAChE;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;;;;;;OAQG;IACH,eAAe,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACtC;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;OAKG;IACH,cAAc,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IACvD;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB;;;;;;;;;;;;OAYG;IACH,SAAS,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC/B;;;;;;;;;;;;;;;OAeG;IACH,eAAe,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACrC;;;;;;;;;;;;;;;;;;OAkBG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACrD;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B;;;;;;OAMG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;;;;;;;;;;;;;;;OAiBG;IACH,iBAAiB,CAAC,EAAE,OAAO,GAAG,cAAc,CAAC;IAC7C;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,eAAe,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;IACzC;;;;;;;OAOG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;OAGG;IACH,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC;;;;OAIG;IACH,cAAc,CAAC,EAAE,wBAAwB,CAAC;CAC3C;AAED,MAAM,WAAW,UAAU;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB;;;;OAIG;IACH,QAAQ,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACjD,4CAA4C;IAC5C,aAAa,EAAE,MAAM,CAAC;IACtB;;;;;;;OAOG;IACH,qBAAqB,EAAE,MAAM,CAAC;IAC9B;;;;;;;;;OASG;IACH,eAAe,EAAE,MAAM,CAAC;IACxB;;;;;;;OAOG;IACH,eAAe,EAAE,MAAM,CAAC;IACxB;;;OAGG;IACH,mBAAmB,EAAE,MAAM,CAAC;IAC5B;;;;;OAKG;IACH,mBAAmB,EAAE,MAAM,CAAC;IAC5B;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB;;;OAGG;IACH,cAAc,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACxD;AA+JD;;;;;;GAMG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAM5C;AAwDD,2EAA2E;AAC3E,wBAAgB,iCAAiC,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAK1E;AAOD;;;GAGG;AACH,eAAO,MAAM,2CAA2C,MAAM,CAAC;AAS/D;;;;GAIG;AACH,eAAO,MAAM,mCAAmC,OAAO,CAAC;AACxD;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,QAAS,CAAC;AAIhD,wBAAgB,mCAAmC,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAEhF;AAsDD,iBAAS,0BAA0B,IAAI,IAAI,CAK1C;AAED,iBAAS,2BAA2B,IAAI,IAAI,CAK3C;AAED,iBAAS,4BAA4B,IAAI;IACvC,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1B,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC3B,CAKA;AAED;;;GAGG;AACH,eAAO,MAAM,QAAQ;;;;4BAIG,MAAM,GAAG,MAAM,GAAG,UAAU,GAAG,IAAI;;CAE1D,CAAC;AAYF;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,sBAAsB,CAC1C,WAAW,EAAE,kBAAkB,EAC/B,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC,EACrE,eAAe,CAAC,EAAE,eAAe,GAAG,IAAI,GACvC,OAAO,CAAC,IAAI,CAAC,CA6Ef;AAoCD;;GAEG;AACH,wBAAsB,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAOpE;AAyRD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,KAAK,gBAAgB,GAAG,UAAU,EAAE,GAAG,kBAAkB,CAAC;AAujE1D;;;;;GAKG;AACH,KAAK,aAAa,GACd;IAAE,IAAI,EAAE,QAAQ,GAAG,WAAW,GAAG,OAAO,CAAA;CAAE,GAC1C;IAAE,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAE/C;;;;;GAKG;AACH,KAAK,gBAAgB,GAAG,kBAAkB,GAAG,WAAW,CAAC;AAEzD,KAAK,YAAY,GACb;IACE,MAAM,EAAE,UAAU,CAAC;IACnB,UAAU,EAAE,UAAU,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,OAAO,CAAC;IACf,aAAa,EAAE,aAAa,CAAC;CAC9B,GACD;IAAE,MAAM,EAAE,cAAc,CAAC;IAAC,UAAU,EAAE,UAAU,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAIrE;IAAE,MAAM,EAAE,2BAA2B,CAAC;IAAC,UAAU,EAAE,UAAU,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAClF;IAAE,MAAM,EAAE,oBAAoB,CAAC;IAAC,UAAU,EAAE,UAAU,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAC3E;IAAE,MAAM,EAAE,gBAAgB,CAAC;IAAC,UAAU,EAAE,UAAU,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GACvE;IACE,MAAM,EAAE,oBAAoB,CAAC;IAC7B,UAAU,EAAE,UAAU,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB,GACD;IAAE,MAAM,EAAE,iBAAiB,CAAC;IAAC,UAAU,EAAE,UAAU,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAKxE;IAAE,MAAM,EAAE,sBAAsB,CAAC;IAAC,UAAU,EAAE,UAAU,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAS7E;IAAE,MAAM,EAAE,2BAA2B,CAAC;IAAC,UAAU,EAAE,UAAU,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GASlF;IAAE,MAAM,EAAE,mCAAmC,CAAC;IAAC,UAAU,EAAE,UAAU,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAI1F;IAAE,MAAM,EAAE,sBAAsB,CAAC;IAAC,UAAU,EAAE,UAAU,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAc7E;IACE,MAAM,EAAE,mBAAmB,CAAC;IAC5B,UAAU,EAAE,UAAU,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,gBAAgB,CAAC;CAC1B,GACD;IAGE,MAAM,EAAE,wBAAwB,CAAC;IACjC,UAAU,EAAE,UAAU,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;CACtB,GAQD;IACE,MAAM,EAAE,kBAAkB,CAAC;IAC3B,UAAU,EAAE,UAAU,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,aAAa,CAAC;CAC9B,GACD;IACE,MAAM,EAAE,UAAU,CAAC;IACnB,UAAU,EAAE,UAAU,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAOlB,UAAU,EAAE,IAAI,CAAC;IASjB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,aAAa,CAAC;CAC9B,CAAC;AAEN,UAAU,QAAQ;IAChB,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,4EAA4E;IAC5E,sBAAsB,EAAE,MAAM,CAAC;IAC/B,gFAAgF;IAChF,yBAAyB,EAAE,MAAM,CAAC;IAClC,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,6EAA6E;IAC7E,QAAQ,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACjD,aAAa,EAAE,MAAM,CAAC;IACtB,+DAA+D;IAC/D,qBAAqB,EAAE,MAAM,CAAC;IAC9B,6EAA6E;IAC7E,eAAe,EAAE,MAAM,CAAC;IACxB;;;;;OAKG;IACH,UAAU,EAAE,KAAK,CAAC;QAChB,GAAG,EAAE,MAAM,CAAC;QACZ,SAAS,EAAE,MAAM,CAAC;QAClB,aAAa,EAAE,aAAa,CAAC;QAC7B;;;WAGG;QACH,WAAW,CAAC,EAAE,IAAI,CAAC;KACpB,CAAC,CAAC;IACH;;;;OAIG;IACH,sBAAsB,EAAE,MAAM,CAAC;IAC/B;;;;;;OAMG;IACH,iBAAiB,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC9D;;;OAGG;IACH,eAAe,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;CAC9C;AAuBD;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,MAAM,EACjB,KAAK,GAAE,OAAsC,GAC5C,OAAO,CAoBT;AAED,iBAAe,eAAe,CAC5B,WAAW,EAAE,gBAAgB,EAC7B,OAAO,EAAE,WAAW,EACpB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,KAAK,OAAO,EAC1D,YAAY,EAAE,OAAO,EACrB,eAAe,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,IAAI,EAI3C,SAAS,EAAE,SAAS,gBAAgB,EAAE,EAOtC,cAAc,GAAE,WAAW,CAAC,MAAM,EAAE,gBAAgB,CAAa,EAOjE,eAAe,GAAE,SAAS,gBAAgB,EAAO,EAGjD,qBAAqB,GAAE,gBAAgB,GAAG,YAAY,GAAG,KAAoB,EAC7E,WAAW,CAAC,EAAE,MAAM,IAAI,EACxB,eAAe,GAAE,MAAkC,EACnD,qBAAqB,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,EACrD,oBAAoB,CAAC,EAAE,MAAM,IAAI,EACjC,qBAAqB,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,EAC3C,iBAAiB,GAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAM,EACxD,GAAG,CAAC,EAAE,aAAa,EACnB,iBAAiB,UAAQ,GACxB,OAAO,CAAC,QAAQ,CAAC,CAslCnB"}
|
package/dist/cli/sync.js
CHANGED
|
@@ -43,6 +43,7 @@ import { withOperationLock } from "../operation-lock.js";
|
|
|
43
43
|
import { fetchFileTombstones, } from "./tombstones.js";
|
|
44
44
|
import { MutationClient, } from "../sync/mutation-client.js";
|
|
45
45
|
import { checkpointReconcileApply } from "../sync/reconcile-cursor.js";
|
|
46
|
+
import { createCaseAliasTracker, directoryFoldsCase } from "./case-alias.js";
|
|
46
47
|
/** The desktop sidecar invokes exactly `hq-cloud sync mutation --stdin-json`. */
|
|
47
48
|
export const SYNC_MUTATION_STDIN_COMMAND = ["sync", "mutation", "--stdin-json"];
|
|
48
49
|
/**
|
|
@@ -742,7 +743,7 @@ async function listRemoteFilesForScope(ctx, syncMode, listedPrefixSet, isTargete
|
|
|
742
743
|
async function planPull(run) {
|
|
743
744
|
cooperativePhaseForTest = "plan";
|
|
744
745
|
try {
|
|
745
|
-
return await computePullPlan(run.remoteFiles, run.journal, run.companyRoot, run.shouldSync, run.options.personalMode === true, run.options.teamSyncedSlugs ?? null, run.listedPrefixSet, run.fileTombstones, run.currentExcludeSet, run.options.propagateDeletePolicy ?? "owned-only", run.options.onHeartbeat, run.journalRowCount, run.options.cooperativeCheckpoint, () => overlayPullJournalDelta(run), run.deleteDenominatorKeys, run.options.pullContentHashes, run.ctx);
|
|
746
|
+
return await computePullPlan(run.remoteFiles, run.journal, run.companyRoot, run.shouldSync, run.options.personalMode === true, run.options.teamSyncedSlugs ?? null, run.listedPrefixSet, run.fileTombstones, run.currentExcludeSet, run.options.propagateDeletePolicy ?? "owned-only", run.options.onHeartbeat, run.journalRowCount, run.options.cooperativeCheckpoint, () => overlayPullJournalDelta(run), run.deleteDenominatorKeys, run.options.pullContentHashes, run.ctx, run.options.caseFoldingVolume ?? directoryFoldsCase(run.companyRoot));
|
|
746
747
|
}
|
|
747
748
|
finally {
|
|
748
749
|
if (isStreamingRemoteFileSource(run.remoteFiles))
|
|
@@ -1010,7 +1011,7 @@ async function executeConflictExecutor(run, plan, scopeRun, counters) {
|
|
|
1010
1011
|
continue;
|
|
1011
1012
|
}
|
|
1012
1013
|
if (item.action === "tombstone-delete") {
|
|
1013
|
-
executeFileTombstoneDelete(run, item, counters);
|
|
1014
|
+
executeFileTombstoneDelete(run, item, counters, plan.caseAliasedKeys ?? null);
|
|
1014
1015
|
continue;
|
|
1015
1016
|
}
|
|
1016
1017
|
if (item.action === "download") {
|
|
@@ -1024,9 +1025,13 @@ async function executeConflictExecutor(run, plan, scopeRun, counters) {
|
|
|
1024
1025
|
}
|
|
1025
1026
|
return { downloadItems, abortResult: null };
|
|
1026
1027
|
}
|
|
1027
|
-
function executeFileTombstoneDelete(run, item, counters) {
|
|
1028
|
+
function executeFileTombstoneDelete(run, item, counters, caseAliasedKeys) {
|
|
1028
1029
|
const tombstoneKey = item.remoteFile.key;
|
|
1029
1030
|
const tombstonePath = item.localPath;
|
|
1031
|
+
if (caseAliasedKeys?.has(toPosixKey(tombstoneKey))) {
|
|
1032
|
+
retireCaseAliasJournalRow(run, tombstoneKey);
|
|
1033
|
+
return;
|
|
1034
|
+
}
|
|
1030
1035
|
if (!isDownloadWritePathStillContained(run.companyRoot, tombstoneKey, tombstonePath)) {
|
|
1031
1036
|
run.emit({
|
|
1032
1037
|
type: "error",
|
|
@@ -2063,9 +2068,28 @@ async function verifyPlannedJournalTombstones(run, plan) {
|
|
|
2063
2068
|
}
|
|
2064
2069
|
plan.tombstones = verified;
|
|
2065
2070
|
}
|
|
2071
|
+
/**
|
|
2072
|
+
* A deleted key whose local path is the live file of a key that differs only
|
|
2073
|
+
* in case (feedback_c8ed69d1). Unlinking it would delete the live key's only
|
|
2074
|
+
* copy, so only the stale journal row goes. Emitted as a diagnostic, not a
|
|
2075
|
+
* progress event: the runner counts progress events as transfers.
|
|
2076
|
+
*/
|
|
2077
|
+
function retireCaseAliasJournalRow(run, key) {
|
|
2078
|
+
removeEntry(run.journal, key);
|
|
2079
|
+
run.emit({
|
|
2080
|
+
type: "error",
|
|
2081
|
+
diagnostic: true,
|
|
2082
|
+
path: key,
|
|
2083
|
+
message: "case-only rename: kept the local file (it belongs to a live key spelled differently); dropped the stale journal row",
|
|
2084
|
+
});
|
|
2085
|
+
}
|
|
2066
2086
|
function executeJournalTombstoneDeletes(run, plan, counters) {
|
|
2067
2087
|
for (const tombstone of plan.tombstones) {
|
|
2068
2088
|
const { key, localPath, localSnapshot } = tombstone;
|
|
2089
|
+
if (tombstone.journalOnly || plan.caseAliasedKeys?.has(toPosixKey(key))) {
|
|
2090
|
+
retireCaseAliasJournalRow(run, key);
|
|
2091
|
+
continue;
|
|
2092
|
+
}
|
|
2069
2093
|
if (!isDownloadWritePathStillContained(run.companyRoot, key, localPath)) {
|
|
2070
2094
|
run.emit({
|
|
2071
2095
|
type: "error",
|
|
@@ -2472,7 +2496,7 @@ fileTombstones = new Map(),
|
|
|
2472
2496
|
excludePrefixes = [],
|
|
2473
2497
|
// The runner resolves this once and shares it with the push leg. Direct
|
|
2474
2498
|
// callers preserve the pre-policy, watcher-intent-only behavior.
|
|
2475
|
-
propagateDeletePolicy = "owned-only", onHeartbeat, journalRowCount = journalRows(journal).size, cooperativeCheckpoint, onCooperativeHandoff, deleteDenominatorKeys, pullContentHashes = {}, ctx) {
|
|
2499
|
+
propagateDeletePolicy = "owned-only", onHeartbeat, journalRowCount = journalRows(journal).size, cooperativeCheckpoint, onCooperativeHandoff, deleteDenominatorKeys, pullContentHashes = {}, ctx, caseFoldingVolume = false) {
|
|
2476
2500
|
const prefixMatcher = compileScopeMatcher(prefixSet);
|
|
2477
2501
|
const excludeMatcher = compileScopeMatcher(excludePrefixes);
|
|
2478
2502
|
const items = [];
|
|
@@ -2537,6 +2561,19 @@ propagateDeletePolicy = "owned-only", onHeartbeat, journalRowCount = journalRows
|
|
|
2537
2561
|
unseenJournalKeys.add(journaledKey);
|
|
2538
2562
|
}
|
|
2539
2563
|
}
|
|
2564
|
+
// Case-only rename guard (feedback_c8ed69d1). On a case-folding volume a
|
|
2565
|
+
// journal or tombstoned key can share its local file with a live key that
|
|
2566
|
+
// differs only in case; the executors must not unlink that file.
|
|
2567
|
+
const caseAlias = caseFoldingVolume
|
|
2568
|
+
? createCaseAliasTracker((function* () {
|
|
2569
|
+
for (const key of unseenJournalKeys)
|
|
2570
|
+
yield toPosixKey(key);
|
|
2571
|
+
for (const key of fileTombstones.keys()) {
|
|
2572
|
+
if (prefixMatcher.coversPath(key))
|
|
2573
|
+
yield key;
|
|
2574
|
+
}
|
|
2575
|
+
})(), (key) => unseenJournalKeys.has(key) || fileTombstones.has(key))
|
|
2576
|
+
: null;
|
|
2540
2577
|
for (const journaledKey of journalRows(journal).keys()) {
|
|
2541
2578
|
onHeartbeat?.();
|
|
2542
2579
|
const posixJournaledKey = toPosixKey(journaledKey);
|
|
@@ -2833,6 +2870,12 @@ propagateDeletePolicy = "owned-only", onHeartbeat, journalRowCount = journalRows
|
|
|
2833
2870
|
!isRemoteRecreateAfterTombstone(remoteFile, {
|
|
2834
2871
|
deletedAt: journalEntry.removedAt,
|
|
2835
2872
|
});
|
|
2873
|
+
// Only a key that passed validation, policy, scope and ignore filtering
|
|
2874
|
+
// and is not itself a deleted object can own a local file, so only such a
|
|
2875
|
+
// key may protect a case-only twin from deletion (feedback_c8ed69d1).
|
|
2876
|
+
if (!tombstoneSuppresses && !localTombstoneSuppresses) {
|
|
2877
|
+
caseAlias?.observeRemote(remoteFile.key);
|
|
2878
|
+
}
|
|
2836
2879
|
// lstat (not existsSync/statSync) handles three cases the legacy
|
|
2837
2880
|
// checks got wrong for symlinks:
|
|
2838
2881
|
// 1. A valid symlink at localPath: existsSync returns true and the
|
|
@@ -3343,6 +3386,7 @@ propagateDeletePolicy = "owned-only", onHeartbeat, journalRowCount = journalRows
|
|
|
3343
3386
|
// gating the download branch applies. The executor will apply each
|
|
3344
3387
|
// as a local delete + journal removal. Symmetric to the push side's
|
|
3345
3388
|
// `propagateDeletes` plan in share.ts.
|
|
3389
|
+
const caseAliasedKeys = caseAlias?.finish() ?? null;
|
|
3346
3390
|
const tombstones = [];
|
|
3347
3391
|
for (const key of unseenJournalKeys) {
|
|
3348
3392
|
// Compare membership in POSIX space. A pre-5.47.2 Windows journal key can
|
|
@@ -3388,6 +3432,13 @@ propagateDeletePolicy = "owned-only", onHeartbeat, journalRowCount = journalRows
|
|
|
3388
3432
|
const localPath = resolveContainedVaultPath(companyRoot, key);
|
|
3389
3433
|
if (localPath === null)
|
|
3390
3434
|
continue;
|
|
3435
|
+
// A live key that differs only in case owns this local file on a
|
|
3436
|
+
// case-folding volume. The dead spelling has no file of its own: retire
|
|
3437
|
+
// its journal row and never touch the disk.
|
|
3438
|
+
if (caseAliasedKeys?.has(posixKey)) {
|
|
3439
|
+
tombstones.push({ key, localPath, localSnapshot: { kind: "absent" }, journalOnly: true });
|
|
3440
|
+
continue;
|
|
3441
|
+
}
|
|
3391
3442
|
// PersonalMode key gating — mirror the download branch. Local (non-cloud)
|
|
3392
3443
|
// company keys are tombstone-eligible (a peer's delete should propagate),
|
|
3393
3444
|
// but team-synced orphans are left alone (the team-bucket pull owns those
|
|
@@ -3483,6 +3534,7 @@ propagateDeletePolicy = "owned-only", onHeartbeat, journalRowCount = journalRows
|
|
|
3483
3534
|
filesToTombstoneDelete,
|
|
3484
3535
|
tombstones,
|
|
3485
3536
|
invalidRemoteKeys,
|
|
3537
|
+
caseAliasedKeys,
|
|
3486
3538
|
};
|
|
3487
3539
|
}
|
|
3488
3540
|
/**
|