@indigoai-us/hq-cloud 6.14.3 → 6.14.5
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-company.d.ts +1 -0
- package/dist/bin/sync-runner-company.d.ts.map +1 -1
- package/dist/bin/sync-runner-company.js +44 -19
- package/dist/bin/sync-runner-company.js.map +1 -1
- package/dist/bin/sync-runner.d.ts.map +1 -1
- package/dist/bin/sync-runner.js +25 -36
- package/dist/bin/sync-runner.js.map +1 -1
- package/dist/bin/sync-runner.test.js +128 -4
- package/dist/bin/sync-runner.test.js.map +1 -1
- package/dist/cli/reindex.d.ts.map +1 -1
- package/dist/cli/reindex.js +209 -29
- package/dist/cli/reindex.js.map +1 -1
- package/dist/cli/reindex.test.js +116 -37
- package/dist/cli/reindex.test.js.map +1 -1
- package/dist/cli/rescue-clone-diagnostics.test.d.ts +2 -0
- package/dist/cli/rescue-clone-diagnostics.test.d.ts.map +1 -0
- package/dist/cli/rescue-clone-diagnostics.test.js +101 -0
- package/dist/cli/rescue-clone-diagnostics.test.js.map +1 -0
- package/dist/cli/rescue-core.d.ts.map +1 -1
- package/dist/cli/rescue-core.js +28 -6
- package/dist/cli/rescue-core.js.map +1 -1
- package/dist/cli/share.js +11 -22
- package/dist/cli/share.js.map +1 -1
- package/dist/cli/share.test.js +40 -0
- package/dist/cli/share.test.js.map +1 -1
- package/dist/cli/sync.d.ts.map +1 -1
- package/dist/cli/sync.js +16 -14
- package/dist/cli/sync.js.map +1 -1
- package/dist/cli/sync.test.js +73 -0
- package/dist/cli/sync.test.js.map +1 -1
- package/dist/watcher.d.ts +1 -1
- package/dist/watcher.d.ts.map +1 -1
- package/dist/watcher.js +5 -6
- package/dist/watcher.js.map +1 -1
- package/dist/watcher.test.js +54 -0
- package/dist/watcher.test.js.map +1 -1
- package/package.json +1 -1
- package/src/bin/sync-runner-company.ts +50 -22
- package/src/bin/sync-runner.test.ts +147 -4
- package/src/bin/sync-runner.ts +49 -54
- package/src/cli/reindex.test.ts +130 -37
- package/src/cli/reindex.ts +198 -28
- package/src/cli/rescue-clone-diagnostics.test.ts +120 -0
- package/src/cli/rescue-core.ts +32 -8
- package/src/cli/share.test.ts +47 -0
- package/src/cli/share.ts +16 -26
- package/src/cli/sync.test.ts +90 -0
- package/src/cli/sync.ts +16 -14
- package/src/watcher.test.ts +59 -0
- package/src/watcher.ts +6 -8
package/dist/cli/share.test.js
CHANGED
|
@@ -571,6 +571,46 @@ describe("share", () => {
|
|
|
571
571
|
expect(result.conflictPaths).toEqual(["v7b-abort.txt"]);
|
|
572
572
|
expect(result.filesUploaded).toBe(0);
|
|
573
573
|
});
|
|
574
|
+
it("fresh-install SSE-KMS etag: byte-identical remote is reconciled without a conflict", async () => {
|
|
575
|
+
const companyRoot = path.join(tmpDir, "companies", "acme");
|
|
576
|
+
fs.mkdirSync(companyRoot, { recursive: true });
|
|
577
|
+
const testFile = path.join(companyRoot, "kms-scaffold.md");
|
|
578
|
+
const scaffoldBytes = "identical-content-encrypted-with-sse-kms";
|
|
579
|
+
fs.writeFileSync(testFile, scaffoldBytes);
|
|
580
|
+
// A 32-hex SSE-KMS ETag is not the MD5 of the plaintext object.
|
|
581
|
+
vi.mocked(headRemoteFile).mockResolvedValueOnce({
|
|
582
|
+
lastModified: new Date(),
|
|
583
|
+
etag: '"288bfa91684ae21f9ae27c061254d412"',
|
|
584
|
+
size: scaffoldBytes.length,
|
|
585
|
+
});
|
|
586
|
+
vi.mocked(downloadFile).mockImplementationOnce(async (_ctx, _key, dest) => {
|
|
587
|
+
fs.writeFileSync(dest, scaffoldBytes);
|
|
588
|
+
return undefined;
|
|
589
|
+
});
|
|
590
|
+
const events = [];
|
|
591
|
+
const result = await share({
|
|
592
|
+
paths: [testFile],
|
|
593
|
+
company: "acme",
|
|
594
|
+
vaultConfig: mockConfig,
|
|
595
|
+
hqRoot: tmpDir,
|
|
596
|
+
onConflict: "keep",
|
|
597
|
+
onEvent: (e) => events.push(e),
|
|
598
|
+
});
|
|
599
|
+
expect(result.conflictPaths).toEqual([]);
|
|
600
|
+
expect(result.filesUploaded).toBe(0);
|
|
601
|
+
expect(uploadFile).not.toHaveBeenCalled();
|
|
602
|
+
expect(events).toContainEqual({
|
|
603
|
+
type: "reconciled",
|
|
604
|
+
path: "kms-scaffold.md",
|
|
605
|
+
direction: "push",
|
|
606
|
+
});
|
|
607
|
+
expect(fs.readdirSync(companyRoot).filter((name) => name.includes(".conflict-"))).toEqual([]);
|
|
608
|
+
const journal = JSON.parse(fs.readFileSync(path.join(stateDir, "sync-journal.acme.json"), "utf-8"));
|
|
609
|
+
expect(journal.files["kms-scaffold.md"]).toMatchObject({
|
|
610
|
+
direction: "up",
|
|
611
|
+
remoteEtag: "288bfa91684ae21f9ae27c061254d412",
|
|
612
|
+
});
|
|
613
|
+
});
|
|
574
614
|
it("fresh-install multipart collision: byte-identical remote is NOT a conflict (reconciled, no mirror)", async () => {
|
|
575
615
|
// Root cause of "HQ installs with conflicts": on a first push the
|
|
576
616
|
// journal is empty, so the fresh-collision branch decides conflict-vs-
|