@indigoai-us/hq-cloud 6.18.33 → 6.18.34

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 (38) hide show
  1. package/dist/bin/sync-runner-watch-loop.d.ts.map +1 -1
  2. package/dist/bin/sync-runner-watch-loop.js +31 -8
  3. package/dist/bin/sync-runner-watch-loop.js.map +1 -1
  4. package/dist/bin/sync-runner.d.ts.map +1 -1
  5. package/dist/bin/sync-runner.js +4 -2
  6. package/dist/bin/sync-runner.js.map +1 -1
  7. package/dist/bin/sync-runner.test.js +3 -1
  8. package/dist/bin/sync-runner.test.js.map +1 -1
  9. package/dist/cli/reindex-async.d.ts +9 -0
  10. package/dist/cli/reindex-async.d.ts.map +1 -0
  11. package/dist/cli/reindex-async.js +76 -0
  12. package/dist/cli/reindex-async.js.map +1 -0
  13. package/dist/cli/rescue-core.d.ts.map +1 -1
  14. package/dist/cli/rescue-core.js +1 -1
  15. package/dist/cli/rescue-core.js.map +1 -1
  16. package/dist/cli/rescue-rsync-preflight.test.js +1 -1
  17. package/dist/cli/rescue-rsync-preflight.test.js.map +1 -1
  18. package/dist/journal.d.ts +1 -0
  19. package/dist/journal.d.ts.map +1 -1
  20. package/dist/journal.js +1 -1
  21. package/dist/journal.js.map +1 -1
  22. package/dist/watcher-replan-sweep.test.js +21 -3
  23. package/dist/watcher-replan-sweep.test.js.map +1 -1
  24. package/dist/watcher.d.ts +2 -0
  25. package/dist/watcher.d.ts.map +1 -1
  26. package/dist/watcher.js +166 -50
  27. package/dist/watcher.js.map +1 -1
  28. package/dist/watcher.test.js +59 -5
  29. package/dist/watcher.test.js.map +1 -1
  30. package/dist/watcher.warmup-cancel.test.d.ts +2 -0
  31. package/dist/watcher.warmup-cancel.test.d.ts.map +1 -0
  32. package/dist/watcher.warmup-cancel.test.js +59 -0
  33. package/dist/watcher.warmup-cancel.test.js.map +1 -0
  34. package/dist/watcher.warmup-responsive.test.d.ts +2 -0
  35. package/dist/watcher.warmup-responsive.test.d.ts.map +1 -0
  36. package/dist/watcher.warmup-responsive.test.js +62 -0
  37. package/dist/watcher.warmup-responsive.test.js.map +1 -0
  38. package/package.json +1 -1
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=watcher.warmup-cancel.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"watcher.warmup-cancel.test.d.ts","sourceRoot":"","sources":["../src/watcher.warmup-cancel.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,59 @@
1
+ import { afterEach, describe, expect, it, vi } from "vitest";
2
+ import * as fs from "node:fs";
3
+ import * as os from "node:os";
4
+ import * as path from "node:path";
5
+ const delayedLstat = vi.hoisted(() => ({
6
+ target: "",
7
+ onStart: () => { },
8
+ release: () => { },
9
+ }));
10
+ vi.mock("fs", async (importOriginal) => {
11
+ const actual = await importOriginal();
12
+ const lstat = (async (candidate, ...args) => {
13
+ if (path.resolve(String(candidate)) === delayedLstat.target) {
14
+ delayedLstat.onStart();
15
+ await new Promise((resolve) => { delayedLstat.release = resolve; });
16
+ throw Object.assign(new Error("path disappeared during warm-up"), { code: "ENOENT" });
17
+ }
18
+ return actual.promises.lstat(candidate, ...args);
19
+ });
20
+ const patched = { ...actual, promises: { ...actual.promises, lstat } };
21
+ return { ...patched, default: patched };
22
+ });
23
+ import { TreeWatcher } from "./watcher.js";
24
+ describe("TreeWatcher warm-up cancellation", () => {
25
+ let root;
26
+ afterEach(() => {
27
+ if (root)
28
+ fs.rmSync(root, { recursive: true, force: true });
29
+ root = undefined;
30
+ delayedLstat.target = "";
31
+ delayedLstat.onStart = () => { };
32
+ delayedLstat.release = () => { };
33
+ });
34
+ it("flushes a queued missing-path capture when stop cancels an in-flight lstat", async () => {
35
+ root = fs.mkdtempSync(path.join(os.tmpdir(), "hq-warmup-cancel-"));
36
+ delayedLstat.target = path.join(root, "missing.md");
37
+ let markLstatStarted = () => { };
38
+ const lstatStarted = new Promise((resolve) => { markLstatStarted = resolve; });
39
+ delayedLstat.onStart = markLstatStarted;
40
+ let releaseLstat = () => { };
41
+ delayedLstat.release = releaseLstat;
42
+ const queueBatch = vi.fn(async (captures) => captures.map(() => []));
43
+ const watcher = new TreeWatcher({
44
+ hqRoot: root,
45
+ pathFilter: () => true,
46
+ queueLocalDeleteSnapshotsBatch: queueBatch,
47
+ });
48
+ const catchup = watcher.collectWarmupCatchupAsync(Date.now(), ["missing.md"]);
49
+ await lstatStarted;
50
+ watcher.stop();
51
+ releaseLstat = delayedLstat.release;
52
+ releaseLstat();
53
+ const result = await catchup;
54
+ await new Promise((resolve) => setImmediate(resolve));
55
+ expect(result.cancelled).toBe(true);
56
+ expect(queueBatch).toHaveBeenCalledOnce();
57
+ });
58
+ });
59
+ //# sourceMappingURL=watcher.warmup-cancel.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"watcher.warmup-cancel.test.js","sourceRoot":"","sources":["../src/watcher.warmup-cancel.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=watcher.warmup-responsive.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"watcher.warmup-responsive.test.d.ts","sourceRoot":"","sources":["../src/watcher.warmup-responsive.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,62 @@
1
+ import { afterEach, describe, expect, it, vi } from "vitest";
2
+ import * as fs from "node:fs";
3
+ import * as os from "node:os";
4
+ import * as path from "node:path";
5
+ import { performance } from "node:perf_hooks";
6
+ const slowRead = vi.hoisted(() => ({ root: "", delayMs: 65 }));
7
+ vi.mock("fs", async (importOriginal) => {
8
+ const actual = await importOriginal();
9
+ const readdirSync = ((dir, ...args) => {
10
+ if (path.resolve(String(dir)) === slowRead.root) {
11
+ const end = performance.now() + slowRead.delayMs;
12
+ while (performance.now() < end) { /* emulate one slow directory syscall */ }
13
+ }
14
+ return actual.readdirSync(dir, ...args);
15
+ });
16
+ const patched = {
17
+ ...actual,
18
+ readdirSync,
19
+ promises: actual.promises,
20
+ };
21
+ return { ...patched, default: patched };
22
+ });
23
+ import { TreeWatcher, createWatchPathFilter } from "./watcher.js";
24
+ describe("TreeWatcher warm-up responsiveness", () => {
25
+ let root;
26
+ afterEach(() => {
27
+ if (root)
28
+ fs.rmSync(root, { recursive: true, force: true });
29
+ root = undefined;
30
+ slowRead.root = "";
31
+ });
32
+ it("keeps a slow large-tree inventory below the 50ms event-loop bound", async () => {
33
+ root = fs.mkdtempSync(path.join(os.tmpdir(), "hq-warmup-responsive-"));
34
+ slowRead.root = path.resolve(root);
35
+ const allowed = path.join(root, "core", "knowledge", "public");
36
+ const excludedNodeModules = path.join(root, "core", "workers", "demo", "node_modules", "pkg");
37
+ const excludedTarget = path.join(root, "core", "packages", "demo", "target", "debug");
38
+ fs.mkdirSync(allowed, { recursive: true });
39
+ fs.mkdirSync(excludedNodeModules, { recursive: true });
40
+ fs.mkdirSync(excludedTarget, { recursive: true });
41
+ fs.writeFileSync(path.join(allowed, "kept.md"), "keep");
42
+ fs.writeFileSync(path.join(excludedNodeModules, "ignored.js"), "ignore");
43
+ fs.writeFileSync(path.join(excludedTarget, "ignored.o"), "ignore");
44
+ const watcher = new TreeWatcher({
45
+ hqRoot: root,
46
+ pathFilter: createWatchPathFilter(root, false),
47
+ });
48
+ const startedAt = performance.now();
49
+ const firstTick = new Promise((resolve) => {
50
+ setImmediate(() => resolve(performance.now() - startedAt));
51
+ });
52
+ const catchup = watcher.collectWarmupCatchupAsync(Date.now() + 1);
53
+ const firstTickMs = await firstTick;
54
+ const result = await catchup;
55
+ process.stdout.write(`warmup first event-loop tick: ${firstTickMs.toFixed(1)}ms (limit 50ms)\n`);
56
+ expect(firstTickMs).toBeLessThan(50);
57
+ expect([...result.batch.paths.values()]).not.toContain("core/workers/demo/node_modules/pkg/ignored.js");
58
+ expect([...result.batch.paths.values()]).not.toContain("core/packages/demo/target/debug/ignored.o");
59
+ watcher.dispose();
60
+ });
61
+ });
62
+ //# sourceMappingURL=watcher.warmup-responsive.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"watcher.warmup-responsive.test.js","sourceRoot":"","sources":["../src/watcher.warmup-responsive.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@indigoai-us/hq-cloud",
3
- "version": "6.18.33",
3
+ "version": "6.18.34",
4
4
  "description": "HQ by Indigo cloud sync engine — bidirectional S3 sync for mobile access",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",