@indigoai-us/hq-cloud 6.18.32 → 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.
- package/dist/bin/sync-runner-delete-snapshot.bench.test.js +13 -3
- package/dist/bin/sync-runner-delete-snapshot.bench.test.js.map +1 -1
- package/dist/bin/sync-runner-watch-loop.d.ts +9 -1
- package/dist/bin/sync-runner-watch-loop.d.ts.map +1 -1
- package/dist/bin/sync-runner-watch-loop.js +139 -35
- package/dist/bin/sync-runner-watch-loop.js.map +1 -1
- package/dist/bin/sync-runner.d.ts.map +1 -1
- package/dist/bin/sync-runner.js +8 -4
- package/dist/bin/sync-runner.js.map +1 -1
- package/dist/bin/sync-runner.test.js +226 -36
- package/dist/bin/sync-runner.test.js.map +1 -1
- package/dist/cli/reindex-async.d.ts +9 -0
- package/dist/cli/reindex-async.d.ts.map +1 -0
- package/dist/cli/reindex-async.js +76 -0
- package/dist/cli/reindex-async.js.map +1 -0
- package/dist/cli/reindex.d.ts +4 -0
- package/dist/cli/reindex.d.ts.map +1 -1
- package/dist/cli/reindex.js +3 -3
- package/dist/cli/reindex.js.map +1 -1
- package/dist/cli/rescue-core.d.ts +2 -0
- package/dist/cli/rescue-core.d.ts.map +1 -1
- package/dist/cli/rescue-core.js +19 -11
- package/dist/cli/rescue-core.js.map +1 -1
- package/dist/cli/rescue-rsync-preflight.test.js +1 -1
- package/dist/cli/rescue-rsync-preflight.test.js.map +1 -1
- package/dist/cli/rescue-source-switch-floor.test.js +39 -2
- package/dist/cli/rescue-source-switch-floor.test.js.map +1 -1
- package/dist/cognito-auth.d.ts +5 -1
- package/dist/cognito-auth.d.ts.map +1 -1
- package/dist/cognito-auth.js +19 -8
- package/dist/cognito-auth.js.map +1 -1
- package/dist/http-keepalive.d.ts +7 -0
- package/dist/http-keepalive.d.ts.map +1 -0
- package/dist/http-keepalive.js +66 -0
- package/dist/http-keepalive.js.map +1 -0
- package/dist/journal.d.ts +1 -0
- package/dist/journal.d.ts.map +1 -1
- package/dist/journal.js +1 -1
- package/dist/journal.js.map +1 -1
- package/dist/machine-auth.test.js +87 -0
- package/dist/machine-auth.test.js.map +1 -1
- package/dist/object-io.d.ts +2 -1
- package/dist/object-io.d.ts.map +1 -1
- package/dist/object-io.js +37 -32
- package/dist/object-io.js.map +1 -1
- package/dist/object-io.test.js +8 -1
- package/dist/object-io.test.js.map +1 -1
- package/dist/s3.d.ts.map +1 -1
- package/dist/s3.js +2 -1
- package/dist/s3.js.map +1 -1
- package/dist/session-log-capture.d.ts +4 -0
- package/dist/session-log-capture.d.ts.map +1 -1
- package/dist/session-log-capture.js +56 -19
- package/dist/session-log-capture.js.map +1 -1
- package/dist/session-log-capture.test.js +79 -0
- package/dist/session-log-capture.test.js.map +1 -1
- package/dist/sync/multipart-uploader.d.ts +2 -0
- package/dist/sync/multipart-uploader.d.ts.map +1 -1
- package/dist/sync/multipart-uploader.js +31 -1
- package/dist/sync/multipart-uploader.js.map +1 -1
- package/dist/sync/multipart-uploader.test.js +17 -1
- package/dist/sync/multipart-uploader.test.js.map +1 -1
- package/dist/sync/realtime-network-integration.test.d.ts +2 -0
- package/dist/sync/realtime-network-integration.test.d.ts.map +1 -0
- package/dist/sync/realtime-network-integration.test.js +83 -0
- package/dist/sync/realtime-network-integration.test.js.map +1 -0
- package/dist/sync/realtime-telemetry.d.ts +20 -3
- package/dist/sync/realtime-telemetry.d.ts.map +1 -1
- package/dist/sync/realtime-telemetry.js +85 -7
- package/dist/sync/realtime-telemetry.js.map +1 -1
- package/dist/sync/realtime-telemetry.test.js +68 -6
- package/dist/sync/realtime-telemetry.test.js.map +1 -1
- package/dist/sync/sync-work.d.ts +1 -0
- package/dist/sync/sync-work.d.ts.map +1 -1
- package/dist/sync/sync-work.js.map +1 -1
- package/dist/vault-client.d.ts.map +1 -1
- package/dist/vault-client.js +8 -2
- package/dist/vault-client.js.map +1 -1
- package/dist/watcher-replan-sweep.test.js +21 -3
- package/dist/watcher-replan-sweep.test.js.map +1 -1
- package/dist/watcher.d.ts +2 -0
- package/dist/watcher.d.ts.map +1 -1
- package/dist/watcher.js +166 -50
- package/dist/watcher.js.map +1 -1
- package/dist/watcher.test.js +59 -5
- package/dist/watcher.test.js.map +1 -1
- package/dist/watcher.warmup-cancel.test.d.ts +2 -0
- package/dist/watcher.warmup-cancel.test.d.ts.map +1 -0
- package/dist/watcher.warmup-cancel.test.js +59 -0
- package/dist/watcher.warmup-cancel.test.js.map +1 -0
- package/dist/watcher.warmup-responsive.test.d.ts +2 -0
- package/dist/watcher.warmup-responsive.test.d.ts.map +1 -0
- package/dist/watcher.warmup-responsive.test.js +62 -0
- package/dist/watcher.warmup-responsive.test.js.map +1 -0
- package/package.json +1 -1
|
@@ -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 @@
|
|
|
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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"}
|