@indigoai-us/hq-cloud 5.3.0 → 5.4.1
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.d.ts +45 -16
- package/dist/bin/sync-runner.d.ts.map +1 -1
- package/dist/bin/sync-runner.js +76 -13
- package/dist/bin/sync-runner.js.map +1 -1
- package/dist/bin/sync-runner.test.js +65 -11
- package/dist/bin/sync-runner.test.js.map +1 -1
- package/dist/cli/share.d.ts +6 -0
- package/dist/cli/share.d.ts.map +1 -1
- package/dist/cli/share.js +25 -2
- package/dist/cli/share.js.map +1 -1
- package/dist/cli/share.test.js +45 -0
- package/dist/cli/share.test.js.map +1 -1
- package/dist/cli/sync.d.ts +12 -1
- package/dist/cli/sync.d.ts.map +1 -1
- package/dist/cli/sync.js +27 -2
- package/dist/cli/sync.js.map +1 -1
- package/dist/cli/sync.test.js +34 -0
- package/dist/cli/sync.test.js.map +1 -1
- package/dist/ignore.d.ts.map +1 -1
- package/dist/ignore.js +6 -4
- package/dist/ignore.js.map +1 -1
- package/dist/ignore.test.js +15 -0
- package/dist/ignore.test.js.map +1 -1
- package/package.json +1 -1
- package/src/bin/sync-runner.test.ts +80 -17
- package/src/bin/sync-runner.ts +91 -17
- package/src/cli/share.test.ts +56 -0
- package/src/cli/share.ts +34 -2
- package/src/cli/sync.test.ts +44 -0
- package/src/cli/sync.ts +43 -4
- package/src/ignore.test.ts +16 -0
- package/src/ignore.ts +6 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.test.js","sourceRoot":"","sources":["../../src/cli/sync.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sync.test.js","sourceRoot":"","sources":["../../src/cli/sync.test.ts"],"names":[],"mappings":"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"}
|
package/dist/ignore.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ignore.d.ts","sourceRoot":"","sources":["../src/ignore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAQH,eAAO,MAAM,eAAe,
|
|
1
|
+
{"version":3,"file":"ignore.d.ts","sourceRoot":"","sources":["../src/ignore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAQH,eAAO,MAAM,eAAe,UAwD3B,CAAC;AAWF,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAiChF;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,EAChB,QAAQ,SAAmB,GAC1B,OAAO,CAOT"}
|
package/dist/ignore.js
CHANGED
|
@@ -59,11 +59,13 @@ export const DEFAULT_IGNORES = [
|
|
|
59
59
|
".cache/",
|
|
60
60
|
"tmp/",
|
|
61
61
|
".tmp/",
|
|
62
|
-
// HQ sync internal state (never round-trip these)
|
|
62
|
+
// HQ sync internal state (never round-trip these). The `.hq-*` wildcard
|
|
63
|
+
// covers `.hq-sync.pid`, `.hq-sync-journal.json`, `.hq-sync-state.json`,
|
|
64
|
+
// `.hq-embeddings-pending.json`, and any future internal-state file. The
|
|
65
|
+
// `.hqignore` / `.hqsyncignore` / `.hqinclude` config files don't match
|
|
66
|
+
// (no hyphen) and the `.hq/` directory is unaffected.
|
|
63
67
|
"*.pid",
|
|
64
|
-
".hq
|
|
65
|
-
".hq-sync-journal.json",
|
|
66
|
-
".hq-sync-state.json",
|
|
68
|
+
".hq-*",
|
|
67
69
|
"modules.lock",
|
|
68
70
|
// HQ repos directory (managed separately, not synced)
|
|
69
71
|
"repos/",
|
package/dist/ignore.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ignore.js","sourceRoot":"","sources":["../src/ignore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,4DAA4D;AAC5D,sDAAsD;AACtD,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,WAAW;IACX,OAAO;IACP,MAAM;IACN,WAAW;IACX,WAAW;IAEX,YAAY;IACZ,eAAe;IACf,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,cAAc;IACd,SAAS;IACT,gBAAgB;IAChB,QAAQ;IACR,WAAW;IAEX,eAAe;IACf,SAAS;IAET,SAAS;IACT,cAAc;IACd,OAAO;IACP,gBAAgB;IAChB,cAAc;IACd,cAAc;IACd,QAAQ;IACR,OAAO;IAEP,mBAAmB;IACnB,SAAS;IACT,MAAM;IACN,SAAS;IAET,wBAAwB;IACxB,SAAS;IACT,MAAM;IACN,OAAO;IAEP,
|
|
1
|
+
{"version":3,"file":"ignore.js","sourceRoot":"","sources":["../src/ignore.ts"],"names":[],"mappings":"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"}
|
package/dist/ignore.test.js
CHANGED
|
@@ -31,6 +31,21 @@ describe("createIgnoreFilter", () => {
|
|
|
31
31
|
expect(shouldSync(path.join(hqRoot, "companies/indigo/data/x.csv"))).toBe(false);
|
|
32
32
|
expect(shouldSync(path.join(hqRoot, "companies/indigo/notes.md"))).toBe(true);
|
|
33
33
|
});
|
|
34
|
+
it("permissive mode: .hq-* internal state is ignored, .hqignore family + .hq/ still sync", () => {
|
|
35
|
+
const shouldSync = createIgnoreFilter(hqRoot);
|
|
36
|
+
// Internal state files that must never round-trip through the bucket.
|
|
37
|
+
expect(shouldSync(path.join(hqRoot, ".hq-sync.pid"))).toBe(false);
|
|
38
|
+
expect(shouldSync(path.join(hqRoot, ".hq-sync-journal.json"))).toBe(false);
|
|
39
|
+
expect(shouldSync(path.join(hqRoot, ".hq-sync-state.json"))).toBe(false);
|
|
40
|
+
expect(shouldSync(path.join(hqRoot, ".hq-embeddings-pending.json"))).toBe(false);
|
|
41
|
+
expect(shouldSync(path.join(hqRoot, "companies/indigo/.hq-foo.json"))).toBe(false);
|
|
42
|
+
expect(shouldSync(path.join(hqRoot, ".hq-cache/blob.bin"))).toBe(false);
|
|
43
|
+
// Sync-config files and the .hq/ directory still sync.
|
|
44
|
+
expect(shouldSync(path.join(hqRoot, ".hqignore"))).toBe(true);
|
|
45
|
+
expect(shouldSync(path.join(hqRoot, ".hqsyncignore"))).toBe(true);
|
|
46
|
+
expect(shouldSync(path.join(hqRoot, ".hqinclude"))).toBe(true);
|
|
47
|
+
expect(shouldSync(path.join(hqRoot, "companies/indigo/.hq/config.json"))).toBe(true);
|
|
48
|
+
});
|
|
34
49
|
it("allowlist mode: presence of .hqinclude switches to opt-in", () => {
|
|
35
50
|
fs.writeFileSync(path.join(hqRoot, ".hqinclude"), "companies/*/knowledge/\ncompanies/*/projects/\n");
|
|
36
51
|
const shouldSync = createIgnoreFilter(hqRoot);
|
package/dist/ignore.test.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ignore.test.js","sourceRoot":"","sources":["../src/ignore.test.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACrE,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEjD,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,IAAI,MAAc,CAAC;IAEnB,UAAU,CAAC,GAAG,EAAE;QACd,MAAM,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,iBAAiB,CAAC,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2DAA2D,EAAE,GAAG,EAAE;QACnE,MAAM,UAAU,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAC9C,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,2BAA2B,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9E,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3E,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,qBAAqB,CAAC,CAAC;QACxE,MAAM,UAAU,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAC9C,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,6BAA6B,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjF,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,2BAA2B,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2DAA2D,EAAE,GAAG,EAAE;QACnE,EAAE,CAAC,aAAa,CACd,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,EAC/B,iDAAiD,CAClD,CAAC;QACF,MAAM,UAAU,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAC9C,0BAA0B;QAC1B,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,mCAAmC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtF,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,uCAAuC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1F,6DAA6D;QAC7D,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,iCAAiC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrF,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,uCAAuC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3F,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,oCAAoC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxF,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,gCAAgC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACtF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;QAChE,yEAAyE;QACzE,wEAAwE;QACxE,yDAAyD;QACzD,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,EAAE,yBAAyB,CAAC,CAAC;QAC7E,MAAM,UAAU,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAC9C,MAAM,CACJ,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,uCAAuC,CAAC,CAAC,CACvE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACb,MAAM,CACJ,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,0DAA0D,CAAC,CAAC,CAC1F,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACd,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,mCAAmC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACzF,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"ignore.test.js","sourceRoot":"","sources":["../src/ignore.test.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -61,6 +61,7 @@ function defaultSyncResult(overrides: Partial<SyncResult> = {}): SyncResult {
|
|
|
61
61
|
bytesDownloaded: 0,
|
|
62
62
|
filesSkipped: 0,
|
|
63
63
|
conflicts: 0,
|
|
64
|
+
conflictPaths: [],
|
|
64
65
|
aborted: false,
|
|
65
66
|
...overrides,
|
|
66
67
|
};
|
|
@@ -71,6 +72,7 @@ function defaultShareResult(overrides: Partial<ShareResult> = {}): ShareResult {
|
|
|
71
72
|
filesUploaded: 0,
|
|
72
73
|
bytesUploaded: 0,
|
|
73
74
|
filesSkipped: 0,
|
|
75
|
+
conflictPaths: [],
|
|
74
76
|
aborted: false,
|
|
75
77
|
...overrides,
|
|
76
78
|
};
|
|
@@ -206,18 +208,20 @@ describe("argv parsing", () => {
|
|
|
206
208
|
// ---------------------------------------------------------------------------
|
|
207
209
|
|
|
208
210
|
describe("auth", () => {
|
|
209
|
-
it("emits auth-error and returns 0 when token fetch fails", async () => {
|
|
211
|
+
it("emits auth-error on stderr and returns 0 when token fetch fails", async () => {
|
|
210
212
|
const deps = makeDeps({
|
|
211
213
|
getAccessToken: vi.fn().mockRejectedValue(new Error("no cached tokens")),
|
|
212
214
|
});
|
|
213
215
|
const code = await runRunner(["--companies"], deps);
|
|
214
216
|
expect(code).toBe(0);
|
|
215
|
-
|
|
217
|
+
// auth-error is an error-class event → stderr, not stdout
|
|
218
|
+
expect(deps.stderr.events()).toEqual([
|
|
216
219
|
{ type: "auth-error", message: "no cached tokens" },
|
|
217
220
|
]);
|
|
221
|
+
expect(deps.stdout.events()).toEqual([]);
|
|
218
222
|
});
|
|
219
223
|
|
|
220
|
-
it("emits auth-error when VaultAuthError thrown during discovery", async () => {
|
|
224
|
+
it("emits auth-error on stderr when VaultAuthError thrown during discovery", async () => {
|
|
221
225
|
const deps = makeDeps({
|
|
222
226
|
createVaultClient: () => ({
|
|
223
227
|
...makeVaultStub(),
|
|
@@ -227,12 +231,13 @@ describe("auth", () => {
|
|
|
227
231
|
});
|
|
228
232
|
const code = await runRunner(["--companies"], deps);
|
|
229
233
|
expect(code).toBe(0);
|
|
230
|
-
expect(deps.
|
|
234
|
+
expect(deps.stderr.events()).toEqual([
|
|
231
235
|
{ type: "auth-error", message: "token expired" },
|
|
232
236
|
]);
|
|
237
|
+
expect(deps.stdout.events()).toEqual([]);
|
|
233
238
|
});
|
|
234
239
|
|
|
235
|
-
it("emits error event and returns 1 on non-auth discovery failure", async () => {
|
|
240
|
+
it("emits error event on stderr and returns 1 on non-auth discovery failure", async () => {
|
|
236
241
|
const deps = makeDeps({
|
|
237
242
|
createVaultClient: () => ({
|
|
238
243
|
...makeVaultStub(),
|
|
@@ -241,13 +246,15 @@ describe("auth", () => {
|
|
|
241
246
|
});
|
|
242
247
|
const code = await runRunner(["--companies"], deps);
|
|
243
248
|
expect(code).toBe(1);
|
|
244
|
-
|
|
249
|
+
// error events go to stderr, not stdout
|
|
250
|
+
const events = deps.stderr.events();
|
|
245
251
|
expect(events).toHaveLength(1);
|
|
246
252
|
expect(events[0]).toMatchObject({
|
|
247
253
|
type: "error",
|
|
248
254
|
message: "network down",
|
|
249
255
|
path: "(discovery)",
|
|
250
256
|
});
|
|
257
|
+
expect(deps.stdout.events()).toEqual([]);
|
|
251
258
|
});
|
|
252
259
|
});
|
|
253
260
|
|
|
@@ -588,7 +595,8 @@ describe("per-company fanout", () => {
|
|
|
588
595
|
|
|
589
596
|
const code = await runRunner(["--companies"], deps);
|
|
590
597
|
expect(code).toBe(0);
|
|
591
|
-
|
|
598
|
+
// Per-file errors are routed to stderr (error-class events).
|
|
599
|
+
const errs = deps.stderr
|
|
592
600
|
.events()
|
|
593
601
|
.filter((e): e is Extract<RunnerEvent, { type: "error" }> =>
|
|
594
602
|
e.type === "error",
|
|
@@ -634,12 +642,61 @@ describe("per-company fanout", () => {
|
|
|
634
642
|
bytesDownloaded: result.bytesDownloaded,
|
|
635
643
|
filesSkipped: result.filesSkipped,
|
|
636
644
|
conflicts: result.conflicts,
|
|
645
|
+
conflictPaths: [],
|
|
637
646
|
aborted: result.aborted,
|
|
638
647
|
filesUploaded: 0,
|
|
639
648
|
bytesUploaded: 0,
|
|
640
649
|
});
|
|
641
650
|
});
|
|
642
651
|
|
|
652
|
+
it("surfaces conflictPaths from both push and pull in per-company complete and aggregated all-complete", async () => {
|
|
653
|
+
// Non-aborting conflict on each side so the runner runs both phases:
|
|
654
|
+
// when push aborts, pull is skipped (separate `pull is skipped when push
|
|
655
|
+
// aborts` test covers that branch). Here we want to verify path merging
|
|
656
|
+
// when both phases produced paths.
|
|
657
|
+
const pullResult = defaultSyncResult({
|
|
658
|
+
conflicts: 1,
|
|
659
|
+
conflictPaths: ["docs/handoff.md"],
|
|
660
|
+
aborted: false,
|
|
661
|
+
});
|
|
662
|
+
const pushResult = defaultShareResult({
|
|
663
|
+
conflictPaths: ["notes/scratch.md"],
|
|
664
|
+
aborted: false,
|
|
665
|
+
});
|
|
666
|
+
const deps = makeDeps({
|
|
667
|
+
createVaultClient: () =>
|
|
668
|
+
makeVaultStub({
|
|
669
|
+
memberships: [{ companyUid: "cmp_a" }],
|
|
670
|
+
entityGet: (uid: string) =>
|
|
671
|
+
Promise.resolve({ uid, slug: "acme" } as unknown as EntityInfo),
|
|
672
|
+
}),
|
|
673
|
+
sync: vi.fn().mockResolvedValue(pullResult),
|
|
674
|
+
share: vi.fn().mockResolvedValue(pushResult),
|
|
675
|
+
});
|
|
676
|
+
|
|
677
|
+
const code = await runRunner(
|
|
678
|
+
["--companies", "--direction", "both"],
|
|
679
|
+
deps,
|
|
680
|
+
);
|
|
681
|
+
expect(code).toBe(0);
|
|
682
|
+
|
|
683
|
+
const complete = deps.stdout
|
|
684
|
+
.events()
|
|
685
|
+
.find((e) => e.type === "complete") as Extract<RunnerEvent, { type: "complete" }>;
|
|
686
|
+
expect(complete.conflictPaths).toEqual([
|
|
687
|
+
"docs/handoff.md",
|
|
688
|
+
"notes/scratch.md",
|
|
689
|
+
]);
|
|
690
|
+
|
|
691
|
+
const allComplete = deps.stdout
|
|
692
|
+
.events()
|
|
693
|
+
.find((e) => e.type === "all-complete") as Extract<RunnerEvent, { type: "all-complete" }>;
|
|
694
|
+
expect(allComplete.conflictPaths).toEqual([
|
|
695
|
+
{ company: "acme", path: "docs/handoff.md", direction: "pull" },
|
|
696
|
+
{ company: "acme", path: "notes/scratch.md", direction: "push" },
|
|
697
|
+
]);
|
|
698
|
+
});
|
|
699
|
+
|
|
643
700
|
it("passes --on-conflict and --hq-root through to sync()", async () => {
|
|
644
701
|
const syncSpy = vi.fn().mockResolvedValue(defaultSyncResult());
|
|
645
702
|
const deps = makeDeps({
|
|
@@ -691,23 +748,27 @@ describe("per-company fanout", () => {
|
|
|
691
748
|
const code = await runRunner(["--companies"], deps);
|
|
692
749
|
expect(code).toBe(0); // whole fanout still returns 0
|
|
693
750
|
|
|
694
|
-
const events = deps.stdout.events();
|
|
695
751
|
// Error event for acme (company-level) with path sentinel "(company)"
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
752
|
+
// — error-class events route to stderr.
|
|
753
|
+
const companyErr = deps.stderr
|
|
754
|
+
.events()
|
|
755
|
+
.find(
|
|
756
|
+
(e): e is Extract<RunnerEvent, { type: "error" }> =>
|
|
757
|
+
e.type === "error" && e.company === "acme",
|
|
758
|
+
);
|
|
700
759
|
expect(companyErr).toMatchObject({
|
|
701
760
|
type: "error",
|
|
702
761
|
company: "acme",
|
|
703
762
|
path: "(company)",
|
|
704
763
|
message: "acme blew up",
|
|
705
764
|
});
|
|
706
|
-
// But beta still completed
|
|
707
|
-
const betaComplete =
|
|
708
|
-
(
|
|
709
|
-
|
|
710
|
-
|
|
765
|
+
// But beta still completed — non-error events stay on stdout.
|
|
766
|
+
const betaComplete = deps.stdout
|
|
767
|
+
.events()
|
|
768
|
+
.find(
|
|
769
|
+
(e): e is Extract<RunnerEvent, { type: "complete" }> =>
|
|
770
|
+
e.type === "complete" && e.company === "beta",
|
|
771
|
+
);
|
|
711
772
|
expect(betaComplete).toBeDefined();
|
|
712
773
|
expect(betaComplete?.filesDownloaded).toBe(1);
|
|
713
774
|
});
|
|
@@ -749,6 +810,7 @@ describe("all-complete aggregate", () => {
|
|
|
749
810
|
bytesDownloaded: 350,
|
|
750
811
|
filesUploaded: 0,
|
|
751
812
|
bytesUploaded: 0,
|
|
813
|
+
conflictPaths: [],
|
|
752
814
|
errors: [],
|
|
753
815
|
});
|
|
754
816
|
});
|
|
@@ -1019,6 +1081,7 @@ describe("--direction", () => {
|
|
|
1019
1081
|
bytesDownloaded: 350,
|
|
1020
1082
|
filesUploaded: 3,
|
|
1021
1083
|
bytesUploaded: 125,
|
|
1084
|
+
conflictPaths: [],
|
|
1022
1085
|
errors: [],
|
|
1023
1086
|
});
|
|
1024
1087
|
});
|
package/src/bin/sync-runner.ts
CHANGED
|
@@ -4,10 +4,10 @@
|
|
|
4
4
|
* (ADR-0001).
|
|
5
5
|
*
|
|
6
6
|
* The AppBar Sync menubar (Tauri + Rust) spawns this binary as a subprocess
|
|
7
|
-
* and reads ndjson events from stdout
|
|
8
|
-
* and versioned-by-shape, not
|
|
9
|
-
*
|
|
10
|
-
* `@indigoai-us/hq-cli`.
|
|
7
|
+
* and reads ndjson events from BOTH stdout and stderr (see "Channels"
|
|
8
|
+
* below). The protocol is intentionally narrow and versioned-by-shape, not
|
|
9
|
+
* by tooling — no chalk, no colors, no human prose. If you want to invoke
|
|
10
|
+
* sync as a human, use `hq sync` in `@indigoai-us/hq-cli`.
|
|
11
11
|
*
|
|
12
12
|
* Flags:
|
|
13
13
|
* --companies Fan out across every membership the caller has
|
|
@@ -18,14 +18,23 @@
|
|
|
18
18
|
* only output mode. Accepted for symmetry with the
|
|
19
19
|
* AppBar's argv in case someone passes it.
|
|
20
20
|
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
21
|
+
* Channels (one JSON object per line):
|
|
22
|
+
* stdout — protocol stream:
|
|
23
|
+
* setup-needed caller signed in but has no person entity yet
|
|
24
|
+
* fanout-plan list of companies we're about to sync
|
|
25
|
+
* progress per-file download
|
|
26
|
+
* complete per-company summary
|
|
27
|
+
* all-complete aggregate summary after fanout
|
|
28
|
+
* stderr — diagnostic stream:
|
|
29
|
+
* error per-file or per-company error
|
|
30
|
+
* auth-error no valid token available (interactive login disabled)
|
|
31
|
+
*
|
|
32
|
+
* Why the split: error-class events go to stderr so the menubar's Sentry
|
|
33
|
+
* breadcrumb pipeline picks them up automatically (see hq-sync
|
|
34
|
+
* src-tauri/src/commands/sync.rs `ProcessEvent::Stderr` handler). The
|
|
35
|
+
* single Sentry capture at runner-exit then ships one #hq-alerts issue
|
|
36
|
+
* with the full per-file → company → exit error trail attached, instead
|
|
37
|
+
* of requiring per-event capture calls in the menubar.
|
|
29
38
|
*
|
|
30
39
|
* Exit code:
|
|
31
40
|
* 0 — event stream describes the outcome (including setup-needed)
|
|
@@ -100,10 +109,14 @@ const DEFAULT_HQ_ROOT = path.join(os.homedir(), "hq");
|
|
|
100
109
|
// ---------------------------------------------------------------------------
|
|
101
110
|
|
|
102
111
|
/**
|
|
103
|
-
* Every event
|
|
104
|
-
*
|
|
105
|
-
*
|
|
106
|
-
*
|
|
112
|
+
* Every event the runner emits. Channel routing (stdout vs stderr) is
|
|
113
|
+
* decided inside `runRunner`'s `emit` helper based on the event's `type`
|
|
114
|
+
* — see the doc-block on the file header for the split.
|
|
115
|
+
*
|
|
116
|
+
* The `company` field is present on every event except `setup-needed` /
|
|
117
|
+
* `auth-error` / `fanout-plan` / `all-complete` (which describe the whole
|
|
118
|
+
* run) — consumers should treat its absence as "meta-event, not tied to a
|
|
119
|
+
* specific company".
|
|
107
120
|
*/
|
|
108
121
|
export type RunnerEvent =
|
|
109
122
|
| { type: "setup-needed" }
|
|
@@ -114,6 +127,7 @@ export type RunnerEvent =
|
|
|
114
127
|
}
|
|
115
128
|
| ({ type: "progress"; company: string } & Omit<Extract<SyncProgressEvent, { type: "progress" }>, "type">)
|
|
116
129
|
| ({ type: "error"; company?: string } & Omit<Extract<SyncProgressEvent, { type: "error" }>, "type">)
|
|
130
|
+
| ({ type: "conflict"; company: string } & Omit<Extract<SyncProgressEvent, { type: "conflict" }>, "type">)
|
|
117
131
|
| ({
|
|
118
132
|
type: "complete";
|
|
119
133
|
company: string;
|
|
@@ -135,6 +149,13 @@ export type RunnerEvent =
|
|
|
135
149
|
/** Always emitted; 0 when no push phase ran. */
|
|
136
150
|
filesUploaded: number;
|
|
137
151
|
bytesUploaded: number;
|
|
152
|
+
/**
|
|
153
|
+
* Conflict file paths aggregated across every company in the run.
|
|
154
|
+
* Always emitted; empty array when no conflicts were detected. Lets
|
|
155
|
+
* the menubar UI render a flat list without re-walking per-company
|
|
156
|
+
* `complete` events.
|
|
157
|
+
*/
|
|
158
|
+
conflictPaths: Array<{ company: string; path: string; direction: "pull" | "push" }>;
|
|
138
159
|
errors: Array<{ company: string; message: string }>;
|
|
139
160
|
};
|
|
140
161
|
|
|
@@ -347,8 +368,35 @@ export async function runRunner(
|
|
|
347
368
|
const stdout = deps.stdout ?? process.stdout;
|
|
348
369
|
const stderr = deps.stderr ?? process.stderr;
|
|
349
370
|
|
|
371
|
+
// ---- emit ---------------------------------------------------------------
|
|
372
|
+
// Error-class events go to stderr; everything else to stdout.
|
|
373
|
+
//
|
|
374
|
+
// Why split: the AppBar Sync menubar (Tauri + Rust) feeds runner stderr
|
|
375
|
+
// into Sentry as breadcrumbs and captures one Sentry event when the
|
|
376
|
+
// runner exits non-zero. Routing `error` / `auth-error` events through
|
|
377
|
+
// stderr makes them part of that breadcrumb trail automatically — the
|
|
378
|
+
// menubar doesn't need a per-event capture call, and operators get the
|
|
379
|
+
// full context (per-file errors → company error → exit) in a single
|
|
380
|
+
// Sentry issue alerted to #hq-alerts.
|
|
381
|
+
//
|
|
382
|
+
// Non-error events (progress, complete, fanout-plan, all-complete,
|
|
383
|
+
// setup-needed) stay on stdout. They're the protocol stream the menubar
|
|
384
|
+
// parses for UI updates; mixing them with error events on the same
|
|
385
|
+
// channel was the original design (single ndjson stream, simpler to
|
|
386
|
+
// tee), but error context belongs in the diagnostic channel.
|
|
387
|
+
//
|
|
388
|
+
// Backward compat: older menubar releases (pre-PR-#34) parse only
|
|
389
|
+
// stdout for ndjson; with this change they will NOT receive error
|
|
390
|
+
// events. The menubar's `HQ_CLOUD_VERSION` pin gates which runner
|
|
391
|
+
// they spawn, so old menubars stay on the previous runner version
|
|
392
|
+
// even after this one is published.
|
|
393
|
+
const ERROR_TYPES: ReadonlySet<RunnerEvent["type"]> = new Set([
|
|
394
|
+
"error",
|
|
395
|
+
"auth-error",
|
|
396
|
+
]);
|
|
350
397
|
const emit = (event: RunnerEvent): void => {
|
|
351
|
-
|
|
398
|
+
const stream = ERROR_TYPES.has(event.type) ? stderr : stdout;
|
|
399
|
+
stream.write(`${JSON.stringify(event)}\n`);
|
|
352
400
|
};
|
|
353
401
|
|
|
354
402
|
// ---- argv -------------------------------------------------------------
|
|
@@ -479,6 +527,7 @@ export async function runRunner(
|
|
|
479
527
|
let totalUploaded = 0;
|
|
480
528
|
let totalUploadedBytes = 0;
|
|
481
529
|
const errors: Array<{ company: string; message: string }> = [];
|
|
530
|
+
const allConflicts: Array<{ company: string; path: string; direction: "pull" | "push" }> = [];
|
|
482
531
|
|
|
483
532
|
for (const target of plan) {
|
|
484
533
|
const companyLabel = target.slug;
|
|
@@ -493,6 +542,14 @@ export async function runRunner(
|
|
|
493
542
|
bytes: event.bytes,
|
|
494
543
|
...(event.message ? { message: event.message } : {}),
|
|
495
544
|
});
|
|
545
|
+
} else if (event.type === "conflict") {
|
|
546
|
+
emit({
|
|
547
|
+
type: "conflict",
|
|
548
|
+
company: companyLabel,
|
|
549
|
+
path: event.path,
|
|
550
|
+
direction: event.direction,
|
|
551
|
+
resolution: event.resolution,
|
|
552
|
+
});
|
|
496
553
|
} else {
|
|
497
554
|
emit({
|
|
498
555
|
type: "error",
|
|
@@ -508,6 +565,7 @@ export async function runRunner(
|
|
|
508
565
|
filesUploaded: 0,
|
|
509
566
|
bytesUploaded: 0,
|
|
510
567
|
filesSkipped: 0,
|
|
568
|
+
conflictPaths: [],
|
|
511
569
|
aborted: false,
|
|
512
570
|
};
|
|
513
571
|
let pullResult: SyncResult = {
|
|
@@ -515,6 +573,7 @@ export async function runRunner(
|
|
|
515
573
|
bytesDownloaded: 0,
|
|
516
574
|
filesSkipped: 0,
|
|
517
575
|
conflicts: 0,
|
|
576
|
+
conflictPaths: [],
|
|
518
577
|
aborted: false,
|
|
519
578
|
};
|
|
520
579
|
|
|
@@ -549,6 +608,13 @@ export async function runRunner(
|
|
|
549
608
|
});
|
|
550
609
|
}
|
|
551
610
|
|
|
611
|
+
// Concat push + pull conflict paths into a single per-company list.
|
|
612
|
+
// Both arrays are always present (defaulted to []) so consumers can
|
|
613
|
+
// treat `conflictPaths` as authoritative without a falsy check.
|
|
614
|
+
const mergedConflictPaths = [
|
|
615
|
+
...pullResult.conflictPaths,
|
|
616
|
+
...pushResult.conflictPaths,
|
|
617
|
+
];
|
|
552
618
|
emit({
|
|
553
619
|
type: "complete",
|
|
554
620
|
company: companyLabel,
|
|
@@ -558,10 +624,17 @@ export async function runRunner(
|
|
|
558
624
|
bytesUploaded: pushResult.bytesUploaded,
|
|
559
625
|
filesSkipped: pullResult.filesSkipped + pushResult.filesSkipped,
|
|
560
626
|
conflicts: pullResult.conflicts,
|
|
627
|
+
conflictPaths: mergedConflictPaths,
|
|
561
628
|
// Either phase aborting marks the company aborted — the UI treats
|
|
562
629
|
// `aborted: true` as "sync didn't complete cleanly for this company".
|
|
563
630
|
aborted: pullResult.aborted || pushResult.aborted,
|
|
564
631
|
});
|
|
632
|
+
for (const p of pullResult.conflictPaths) {
|
|
633
|
+
allConflicts.push({ company: companyLabel, path: p, direction: "pull" });
|
|
634
|
+
}
|
|
635
|
+
for (const p of pushResult.conflictPaths) {
|
|
636
|
+
allConflicts.push({ company: companyLabel, path: p, direction: "push" });
|
|
637
|
+
}
|
|
565
638
|
totalDownloaded += pullResult.filesDownloaded;
|
|
566
639
|
totalDownloadedBytes += pullResult.bytesDownloaded;
|
|
567
640
|
totalUploaded += pushResult.filesUploaded;
|
|
@@ -586,6 +659,7 @@ export async function runRunner(
|
|
|
586
659
|
bytesDownloaded: totalDownloadedBytes,
|
|
587
660
|
filesUploaded: totalUploaded,
|
|
588
661
|
bytesUploaded: totalUploadedBytes,
|
|
662
|
+
conflictPaths: allConflicts,
|
|
589
663
|
errors,
|
|
590
664
|
});
|
|
591
665
|
return 0;
|
package/src/cli/share.test.ts
CHANGED
|
@@ -276,6 +276,62 @@ describe("share", () => {
|
|
|
276
276
|
expect(uploadFile).toHaveBeenCalledWith(expect.anything(), testFile, "changed.md");
|
|
277
277
|
});
|
|
278
278
|
|
|
279
|
+
it("populates conflictPaths and emits a conflict event when remote drifted from journal", async () => {
|
|
280
|
+
const companyRoot = path.join(tmpDir, "companies", "acme");
|
|
281
|
+
fs.mkdirSync(companyRoot, { recursive: true });
|
|
282
|
+
const testFile = path.join(companyRoot, "drifted.md");
|
|
283
|
+
fs.writeFileSync(testFile, "local edit");
|
|
284
|
+
|
|
285
|
+
// Journal has a stale hash → local diverged. headRemoteFile returning
|
|
286
|
+
// non-null tells share() the remote also exists; combined with the
|
|
287
|
+
// hash mismatch this trips the conflict branch.
|
|
288
|
+
vi.mocked(headRemoteFile).mockResolvedValueOnce({
|
|
289
|
+
lastModified: new Date(),
|
|
290
|
+
etag: '"remote-changed"',
|
|
291
|
+
size: 99,
|
|
292
|
+
});
|
|
293
|
+
|
|
294
|
+
const journalPath = path.join(stateDir, "sync-journal.acme.json");
|
|
295
|
+
fs.writeFileSync(
|
|
296
|
+
journalPath,
|
|
297
|
+
JSON.stringify({
|
|
298
|
+
version: "1",
|
|
299
|
+
lastSync: new Date().toISOString(),
|
|
300
|
+
files: {
|
|
301
|
+
"drifted.md": {
|
|
302
|
+
hash: "stale-hash",
|
|
303
|
+
size: 10,
|
|
304
|
+
syncedAt: new Date().toISOString(),
|
|
305
|
+
direction: "up",
|
|
306
|
+
},
|
|
307
|
+
},
|
|
308
|
+
}),
|
|
309
|
+
);
|
|
310
|
+
|
|
311
|
+
const events: unknown[] = [];
|
|
312
|
+
const result = await share({
|
|
313
|
+
paths: [testFile],
|
|
314
|
+
company: "acme",
|
|
315
|
+
vaultConfig: mockConfig,
|
|
316
|
+
hqRoot: tmpDir,
|
|
317
|
+
onConflict: "keep",
|
|
318
|
+
onEvent: (e) => events.push(e),
|
|
319
|
+
});
|
|
320
|
+
|
|
321
|
+
expect(result.conflictPaths).toEqual(["drifted.md"]);
|
|
322
|
+
const conflicts = events.filter(
|
|
323
|
+
(e): e is { type: "conflict"; path: string; direction: "push"; resolution: string } =>
|
|
324
|
+
typeof e === "object" && e !== null && (e as { type?: string }).type === "conflict",
|
|
325
|
+
);
|
|
326
|
+
expect(conflicts).toHaveLength(1);
|
|
327
|
+
expect(conflicts[0]).toMatchObject({
|
|
328
|
+
type: "conflict",
|
|
329
|
+
path: "drifted.md",
|
|
330
|
+
direction: "push",
|
|
331
|
+
resolution: "keep",
|
|
332
|
+
});
|
|
333
|
+
});
|
|
334
|
+
|
|
279
335
|
it("skipUnchanged=false (default) uploads even when hash matches", async () => {
|
|
280
336
|
const companyRoot = path.join(tmpDir, "companies", "acme");
|
|
281
337
|
fs.mkdirSync(companyRoot, { recursive: true });
|