@indigoai-us/hq-cloud 6.14.49 → 6.15.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.
Files changed (126) hide show
  1. package/.github/workflows/unreleased-commits-nag.yml +256 -0
  2. package/dist/bin/sync-runner-watch-loop.d.ts +12 -0
  3. package/dist/bin/sync-runner-watch-loop.d.ts.map +1 -1
  4. package/dist/bin/sync-runner-watch-loop.js +153 -25
  5. package/dist/bin/sync-runner-watch-loop.js.map +1 -1
  6. package/dist/bin/sync-runner-watch-routes.d.ts +17 -0
  7. package/dist/bin/sync-runner-watch-routes.d.ts.map +1 -1
  8. package/dist/bin/sync-runner-watch-routes.js +11 -0
  9. package/dist/bin/sync-runner-watch-routes.js.map +1 -1
  10. package/dist/bin/sync-runner-watch-routes.test.d.ts +2 -0
  11. package/dist/bin/sync-runner-watch-routes.test.d.ts.map +1 -0
  12. package/dist/bin/sync-runner-watch-routes.test.js +51 -0
  13. package/dist/bin/sync-runner-watch-routes.test.js.map +1 -0
  14. package/dist/bin/sync-runner.d.ts +11 -12
  15. package/dist/bin/sync-runner.d.ts.map +1 -1
  16. package/dist/bin/sync-runner.js.map +1 -1
  17. package/dist/bin/sync-runner.test.js +173 -52
  18. package/dist/bin/sync-runner.test.js.map +1 -1
  19. package/dist/cli/reindex-knowledge.d.ts +7 -0
  20. package/dist/cli/reindex-knowledge.d.ts.map +1 -0
  21. package/dist/cli/reindex-knowledge.js +389 -0
  22. package/dist/cli/reindex-knowledge.js.map +1 -0
  23. package/dist/cli/reindex-knowledge.test.d.ts +12 -0
  24. package/dist/cli/reindex-knowledge.test.d.ts.map +1 -0
  25. package/dist/cli/reindex-knowledge.test.js +260 -0
  26. package/dist/cli/reindex-knowledge.test.js.map +1 -0
  27. package/dist/cli/reindex.d.ts.map +1 -1
  28. package/dist/cli/reindex.js +8 -0
  29. package/dist/cli/reindex.js.map +1 -1
  30. package/dist/cli/rescue-classify-ordering.test.js +8 -2
  31. package/dist/cli/rescue-classify-ordering.test.js.map +1 -1
  32. package/dist/cli/rescue-core.d.ts +85 -0
  33. package/dist/cli/rescue-core.d.ts.map +1 -1
  34. package/dist/cli/rescue-core.js +390 -1
  35. package/dist/cli/rescue-core.js.map +1 -1
  36. package/dist/cli/rescue-settings-reconcile.test.d.ts +2 -0
  37. package/dist/cli/rescue-settings-reconcile.test.d.ts.map +1 -0
  38. package/dist/cli/rescue-settings-reconcile.test.js +523 -0
  39. package/dist/cli/rescue-settings-reconcile.test.js.map +1 -0
  40. package/dist/index.d.ts +1 -1
  41. package/dist/index.d.ts.map +1 -1
  42. package/dist/index.js +1 -1
  43. package/dist/index.js.map +1 -1
  44. package/dist/journal.d.ts.map +1 -1
  45. package/dist/journal.js +81 -51
  46. package/dist/journal.js.map +1 -1
  47. package/dist/journal.test.js +11 -19
  48. package/dist/journal.test.js.map +1 -1
  49. package/dist/sync/event-sync.d.ts +8 -25
  50. package/dist/sync/event-sync.d.ts.map +1 -1
  51. package/dist/sync/event-sync.js +23 -48
  52. package/dist/sync/event-sync.js.map +1 -1
  53. package/dist/sync/event-sync.test.js +6 -32
  54. package/dist/sync/event-sync.test.js.map +1 -1
  55. package/dist/sync/feature-flags.d.ts +20 -117
  56. package/dist/sync/feature-flags.d.ts.map +1 -1
  57. package/dist/sync/feature-flags.js +24 -147
  58. package/dist/sync/feature-flags.js.map +1 -1
  59. package/dist/sync/feature-flags.test.js +15 -61
  60. package/dist/sync/feature-flags.test.js.map +1 -1
  61. package/dist/sync/index.d.ts +1 -1
  62. package/dist/sync/index.d.ts.map +1 -1
  63. package/dist/sync/index.js +1 -1
  64. package/dist/sync/index.js.map +1 -1
  65. package/dist/sync/lease-client.d.ts +67 -0
  66. package/dist/sync/lease-client.d.ts.map +1 -0
  67. package/dist/sync/lease-client.js +158 -0
  68. package/dist/sync/lease-client.js.map +1 -0
  69. package/dist/sync/lease-client.test.d.ts +2 -0
  70. package/dist/sync/lease-client.test.d.ts.map +1 -0
  71. package/dist/sync/lease-client.test.js +119 -0
  72. package/dist/sync/lease-client.test.js.map +1 -0
  73. package/dist/sync/push-receiver.d.ts +8 -19
  74. package/dist/sync/push-receiver.d.ts.map +1 -1
  75. package/dist/sync/push-receiver.js +6 -50
  76. package/dist/sync/push-receiver.js.map +1 -1
  77. package/dist/sync/push-receiver.test.js +6 -57
  78. package/dist/sync/push-receiver.test.js.map +1 -1
  79. package/dist/sync/realtime-rollout.d.ts +85 -0
  80. package/dist/sync/realtime-rollout.d.ts.map +1 -0
  81. package/dist/sync/realtime-rollout.js +206 -0
  82. package/dist/sync/realtime-rollout.js.map +1 -0
  83. package/dist/sync/realtime-rollout.test.d.ts +2 -0
  84. package/dist/sync/realtime-rollout.test.d.ts.map +1 -0
  85. package/dist/sync/realtime-rollout.test.js +71 -0
  86. package/dist/sync/realtime-rollout.test.js.map +1 -0
  87. package/dist/sync/state-store.d.ts +40 -0
  88. package/dist/sync/state-store.d.ts.map +1 -0
  89. package/dist/sync/state-store.js +680 -0
  90. package/dist/sync/state-store.js.map +1 -0
  91. package/dist/sync/state-store.test.d.ts +2 -0
  92. package/dist/sync/state-store.test.d.ts.map +1 -0
  93. package/dist/sync/state-store.test.js +159 -0
  94. package/dist/sync/state-store.test.js.map +1 -0
  95. package/dist/types.d.ts +12 -0
  96. package/dist/types.d.ts.map +1 -1
  97. package/package.json +1 -1
  98. package/src/bin/sync-runner-watch-loop.ts +176 -32
  99. package/src/bin/sync-runner-watch-routes.test.ts +71 -0
  100. package/src/bin/sync-runner-watch-routes.ts +27 -0
  101. package/src/bin/sync-runner.test.ts +188 -53
  102. package/src/bin/sync-runner.ts +11 -12
  103. package/src/cli/reindex-knowledge.test.ts +307 -0
  104. package/src/cli/reindex-knowledge.ts +450 -0
  105. package/src/cli/reindex.ts +9 -0
  106. package/src/cli/rescue-classify-ordering.test.ts +9 -3
  107. package/src/cli/rescue-core.ts +459 -1
  108. package/src/cli/rescue-settings-reconcile.test.ts +637 -0
  109. package/src/index.ts +2 -4
  110. package/src/journal.test.ts +19 -21
  111. package/src/journal.ts +87 -54
  112. package/src/sync/event-sync.test.ts +9 -44
  113. package/src/sync/event-sync.ts +26 -52
  114. package/src/sync/feature-flags.test.ts +22 -72
  115. package/src/sync/feature-flags.ts +32 -199
  116. package/src/sync/index.ts +2 -4
  117. package/src/sync/lease-client.test.ts +128 -0
  118. package/src/sync/lease-client.ts +207 -0
  119. package/src/sync/push-receiver.test.ts +6 -58
  120. package/src/sync/push-receiver.ts +9 -74
  121. package/src/sync/realtime-rollout.test.ts +86 -0
  122. package/src/sync/realtime-rollout.ts +262 -0
  123. package/src/sync/state-store.test.ts +194 -0
  124. package/src/sync/state-store.ts +727 -0
  125. package/src/types.ts +14 -0
  126. package/test/e2e/sync/transient-company-leg.test.ts +8 -4
@@ -0,0 +1,523 @@
1
+ /**
2
+ * Regression tests for the `.claude/settings.json` reconcile in rescue-core.ts.
3
+ *
4
+ * `.claude/settings.json` is a machine-local, *generated* file: setup.sh step 3b
5
+ * composes the machine's env.PATH into the release's PATH-less template. On an
6
+ * existing install it therefore always differs from every release blob, so the
7
+ * old rescue rescued it into personal/ and laid a PATH-less template on top —
8
+ * dropping the machine PATH and (per drift/history state) failing to wire in a
9
+ * newly-released hook registration even though the hook FILE synced in.
10
+ *
11
+ * The fix re-composes env.PATH onto the release baseline and relocates genuine
12
+ * user drift (vs the last-sync floor) into settings.local.json. These tests
13
+ * cover the pure drift/merge helpers and reproduce the real field case with a
14
+ * real (non-dry-run) overlay against a local fixture "release" repo.
15
+ */
16
+ import { describe, it, expect, beforeAll, afterAll } from "vitest";
17
+ import { execFileSync } from "child_process";
18
+ import * as fs from "fs";
19
+ import * as os from "os";
20
+ import * as path from "path";
21
+ import { runRescue, settingsDrift, deepMergeSettings, applyArrayRemovals, jsonDeepEqual, } from "./rescue-core.js";
22
+ // ── Unit: pure drift / merge helpers ────────────────────────────────────────
23
+ describe("settingsDrift", () => {
24
+ it("excludes env.PATH (machine-local) from drift", () => {
25
+ const ours = { env: { PATH: "/machine/bin:/usr/bin", MAX: "1" } };
26
+ const base = { env: { MAX: "1" } };
27
+ // Only PATH differs, and PATH is excluded -> no drift.
28
+ expect(settingsDrift(ours, base)).toBeUndefined();
29
+ });
30
+ it("captures an added scalar and a changed scalar", () => {
31
+ const ours = { model: "opus", newKey: "x" };
32
+ const base = { model: "sonnet" };
33
+ expect(settingsDrift(ours, base)).toEqual({ model: "opus", newKey: "x" });
34
+ });
35
+ it("captures only the extra array elements (union-friendly)", () => {
36
+ const ours = { permissions: { allow: ["Bash(git:*)", "Bash(mytool:*)"] } };
37
+ const base = { permissions: { allow: ["Bash(git:*)"] } };
38
+ expect(settingsDrift(ours, base)).toEqual({
39
+ permissions: { allow: ["Bash(mytool:*)"] },
40
+ });
41
+ });
42
+ it("returns undefined when ours equals base", () => {
43
+ const v = { a: 1, b: [1, 2], c: { d: "e" } };
44
+ expect(settingsDrift(v, structuredClone(v))).toBeUndefined();
45
+ });
46
+ it("treats a wholly-new subtree as drift but still honors env.PATH exclusion", () => {
47
+ const ours = { env: { PATH: "/machine/bin" } };
48
+ const base = {};
49
+ // env is new, but its only member is the excluded PATH -> no drift.
50
+ expect(settingsDrift(ours, base)).toBeUndefined();
51
+ const ours2 = { env: { PATH: "/machine/bin", HQ_FOO: "1" } };
52
+ expect(settingsDrift(ours2, {})).toEqual({ env: { HQ_FOO: "1" } });
53
+ });
54
+ });
55
+ describe("deepMergeSettings", () => {
56
+ it("unions arrays without duplicates and adds absent scalars", () => {
57
+ const target = { permissions: { allow: ["Bash(git:*)"] } };
58
+ const patch = { permissions: { allow: ["Bash(git:*)", "Bash(mytool:*)"] }, model: "opus" };
59
+ deepMergeSettings(target, patch);
60
+ expect(target.permissions.allow).toEqual(["Bash(git:*)", "Bash(mytool:*)"]);
61
+ expect(target.model).toBe("opus"); // absent -> added
62
+ });
63
+ it("does NOT overwrite a scalar already present in the target (Local wins)", () => {
64
+ // Project drift `model: opus` must not clobber the higher-precedence Local
65
+ // `model: sonnet` — the effective config must remain sonnet.
66
+ const target = { model: "sonnet" };
67
+ deepMergeSettings(target, { model: "opus" });
68
+ expect(target.model).toBe("sonnet");
69
+ });
70
+ it("preserves an existing NESTED Local scalar while adding a sibling", () => {
71
+ // Local env.HQ_FOO must survive; only the genuinely-new HQ_BAR is introduced.
72
+ const target = { env: { HQ_FOO: "1" } };
73
+ deepMergeSettings(target, { env: { HQ_FOO: "2", HQ_BAR: "3" } });
74
+ expect(target.env).toEqual({ HQ_FOO: "1", HQ_BAR: "3" });
75
+ });
76
+ it("preserves existing Local array elements and never drops a sibling key", () => {
77
+ // The existing allow entry and the untouched deny key must both survive; the
78
+ // drift permission is appended, not substituted.
79
+ const target = { permissions: { allow: ["Bash(git:*)"], deny: ["Read(~/.ssh/**)"] } };
80
+ deepMergeSettings(target, { permissions: { allow: ["Bash(mytool:*)"] } });
81
+ expect(target.permissions.allow).toEqual(["Bash(git:*)", "Bash(mytool:*)"]);
82
+ expect(target.permissions.deny).toEqual(["Read(~/.ssh/**)"]); // untouched sibling
83
+ });
84
+ it("keeps a Local value when the drift has the same key with a different type", () => {
85
+ // Local scalar must not be replaced by a Project array/object of the same key.
86
+ const target = { hooks: "local-wins" };
87
+ deepMergeSettings(target, {
88
+ hooks: { PreToolUse: [] },
89
+ });
90
+ expect(target.hooks).toBe("local-wins");
91
+ });
92
+ it("leaves keys unique to Local completely untouched", () => {
93
+ const target = { onlyLocal: { a: 1 }, model: "sonnet" };
94
+ deepMergeSettings(target, { permissions: { allow: ["X"] } });
95
+ expect(target.onlyLocal).toEqual({ a: 1 });
96
+ expect(target.model).toBe("sonnet");
97
+ });
98
+ it("is idempotent on re-merge (no duplicate array entries)", () => {
99
+ const target = { permissions: { allow: ["Bash(mytool:*)"] } };
100
+ deepMergeSettings(target, { permissions: { allow: ["Bash(mytool:*)"] } });
101
+ expect(target.permissions.allow).toEqual(["Bash(mytool:*)"]);
102
+ });
103
+ });
104
+ describe("applyArrayRemovals", () => {
105
+ it("removes an element the user deleted (present in base, absent in ours)", () => {
106
+ const theirs = { permissions: { allow: ["Bash(git:*)", "Bash(rm:*)"] } };
107
+ const ours = { permissions: { allow: ["Bash(git:*)"] } }; // user removed rm
108
+ const base = { permissions: { allow: ["Bash(git:*)", "Bash(rm:*)"] } };
109
+ applyArrayRemovals(theirs, ours, base);
110
+ expect(theirs.permissions.allow).toEqual(["Bash(git:*)"]);
111
+ });
112
+ it("leaves release-only additions intact (base lacked them)", () => {
113
+ const theirs = { permissions: { allow: ["Bash(git:*)", "Bash(new:*)"] } };
114
+ const ours = { permissions: { allow: ["Bash(git:*)"] } };
115
+ const base = { permissions: { allow: ["Bash(git:*)"] } }; // base never had new
116
+ applyArrayRemovals(theirs, ours, base);
117
+ // "Bash(new:*)" is a release addition, not a user removal — keep it.
118
+ expect(theirs.permissions.allow).toEqual(["Bash(git:*)", "Bash(new:*)"]);
119
+ });
120
+ });
121
+ describe("jsonDeepEqual", () => {
122
+ it("compares nested structures", () => {
123
+ expect(jsonDeepEqual({ a: [1, { b: 2 }] }, { a: [1, { b: 2 }] })).toBe(true);
124
+ expect(jsonDeepEqual({ a: [1] }, { a: [2] })).toBe(false);
125
+ });
126
+ });
127
+ // ── Integration: real overlay reproduces the field case ─────────────────────
128
+ function hasBin(bin, args = ["--version"]) {
129
+ try {
130
+ execFileSync(bin, args, { stdio: "ignore" });
131
+ return true;
132
+ }
133
+ catch {
134
+ return false;
135
+ }
136
+ }
137
+ const canRun = hasBin("git") && hasBin("rsync");
138
+ function runRescueCapture(argv, env) {
139
+ let stdout = "";
140
+ let stderr = "";
141
+ const origOut = process.stdout.write.bind(process.stdout);
142
+ const origErr = process.stderr.write.bind(process.stderr);
143
+ process.stdout.write = ((chunk) => {
144
+ stdout += String(chunk);
145
+ return true;
146
+ });
147
+ process.stderr.write = ((chunk) => {
148
+ stderr += String(chunk);
149
+ return true;
150
+ });
151
+ let status;
152
+ try {
153
+ status = runRescue(argv, { env }).status;
154
+ }
155
+ finally {
156
+ process.stdout.write = origOut;
157
+ process.stderr.write = origErr;
158
+ }
159
+ return { status, stdout, stderr };
160
+ }
161
+ // A faithful copy of core/scripts/compose-settings-path.sh: prepend managed
162
+ // toolchain bin dirs that exist on disk but are missing from the base PATH,
163
+ // else pass the base through unchanged.
164
+ const COMPOSER = `#!/usr/bin/env bash
165
+ set -euo pipefail
166
+ BASE="\${1:-$PATH}"
167
+ TOOLCHAIN="\${HQ_TOOLCHAIN_DIR:-$HOME/Library/Application Support/Indigo HQ/toolchain}"
168
+ path_contains() { case ":$1:" in *":$2:"*) return 0 ;; *) return 1 ;; esac; }
169
+ COMPOSED="$BASE"
170
+ for dir in "$TOOLCHAIN/git/bin" "$TOOLCHAIN/npm-global/bin" "$TOOLCHAIN/node/bin"; do
171
+ if [[ -d "$dir" ]] && ! path_contains "$COMPOSED" "$dir"; then
172
+ COMPOSED="$dir:$COMPOSED"
173
+ fi
174
+ done
175
+ printf '%s\\n' "$COMPOSED"
176
+ `;
177
+ describe.skipIf(!canRun)("rescue .claude/settings.json reconcile (real overlay)", () => {
178
+ let workDir;
179
+ let upstream;
180
+ let shimDir;
181
+ let floorSha;
182
+ let env;
183
+ const MACHINE_PATH = "/opt/machine/bin:/usr/bin:/bin";
184
+ const NEW_HOOK_CMD = 'bash "$CLAUDE_PROJECT_DIR/.claude/hooks/new-hook.sh"';
185
+ const git = (cwd, ...args) => execFileSync("git", args, {
186
+ cwd,
187
+ stdio: ["ignore", "pipe", "pipe"],
188
+ env: {
189
+ ...process.env,
190
+ GIT_AUTHOR_NAME: "t",
191
+ GIT_AUTHOR_EMAIL: "t@t",
192
+ GIT_COMMITTER_NAME: "t",
193
+ GIT_COMMITTER_EMAIL: "t@t",
194
+ },
195
+ })
196
+ .toString()
197
+ .trim();
198
+ // Release template as of the floor: PATH-less, with a baseline permission and
199
+ // a pre-existing hook, but WITHOUT the new-hook registration.
200
+ const floorSettings = {
201
+ model: "claude-opus-4-8",
202
+ permissions: { allow: ["Bash(git:*)"], deny: [] },
203
+ env: { MAX_THINKING_TOKENS: "31999" },
204
+ hooks: {
205
+ PreToolUse: [
206
+ { hooks: [{ type: "command", command: 'bash "$CLAUDE_PROJECT_DIR/.claude/hooks/old-hook.sh"' }] },
207
+ ],
208
+ },
209
+ };
210
+ // New release (HEAD): adds the new-hook FILE + its REGISTRATION. Still no PATH.
211
+ const headSettings = {
212
+ model: "claude-opus-4-8",
213
+ permissions: { allow: ["Bash(git:*)"], deny: [] },
214
+ env: { MAX_THINKING_TOKENS: "31999" },
215
+ hooks: {
216
+ PreToolUse: [
217
+ { hooks: [{ type: "command", command: 'bash "$CLAUDE_PROJECT_DIR/.claude/hooks/old-hook.sh"' }] },
218
+ { hooks: [{ type: "command", command: NEW_HOOK_CMD }] },
219
+ ],
220
+ },
221
+ };
222
+ beforeAll(() => {
223
+ workDir = fs.mkdtempSync(path.join(os.tmpdir(), "hq-rescue-settings-"));
224
+ // --- Fixture "release" repo: floor commit, then a HEAD commit that adds the
225
+ // new hook file + registration. ---
226
+ upstream = path.join(workDir, "upstream");
227
+ fs.mkdirSync(path.join(upstream, ".claude", "hooks"), { recursive: true });
228
+ fs.mkdirSync(path.join(upstream, "core", "scripts"), { recursive: true });
229
+ git(workDir, "init", "-b", "main", "upstream");
230
+ fs.writeFileSync(path.join(upstream, ".claude", "settings.json"), JSON.stringify(floorSettings, null, 2) + "\n");
231
+ fs.writeFileSync(path.join(upstream, ".claude", "hooks", "old-hook.sh"), "#!/usr/bin/env bash\n");
232
+ fs.writeFileSync(path.join(upstream, "core", "scripts", "compose-settings-path.sh"), COMPOSER, { mode: 0o755 });
233
+ fs.writeFileSync(path.join(upstream, "core", "keep.md"), "same\n");
234
+ git(upstream, "add", "-A");
235
+ git(upstream, "commit", "-m", "floor");
236
+ floorSha = git(upstream, "rev-parse", "HEAD");
237
+ // HEAD: new hook file + registration land in the release.
238
+ fs.writeFileSync(path.join(upstream, ".claude", "settings.json"), JSON.stringify(headSettings, null, 2) + "\n");
239
+ fs.writeFileSync(path.join(upstream, ".claude", "hooks", "new-hook.sh"), "#!/usr/bin/env bash\n# new\n");
240
+ git(upstream, "add", "-A");
241
+ git(upstream, "commit", "-m", "add new-hook");
242
+ // --- git shim: rewrite `git clone <github-url> dest` to the local fixture. ---
243
+ const realGit = execFileSync("bash", ["-c", "command -v git"]).toString().trim() || "/usr/bin/git";
244
+ shimDir = path.join(workDir, "shim");
245
+ fs.mkdirSync(shimDir, { recursive: true });
246
+ const shim = `#!/usr/bin/env bash
247
+ if [ "$1" = "clone" ]; then
248
+ args=()
249
+ for a in "$@"; do
250
+ case "$a" in
251
+ https://github.com/*) a=${JSON.stringify(upstream)} ;;
252
+ esac
253
+ args+=("$a")
254
+ done
255
+ exec ${JSON.stringify(realGit)} "\${args[@]}"
256
+ fi
257
+ exec ${JSON.stringify(realGit)} "$@"
258
+ `;
259
+ fs.writeFileSync(path.join(shimDir, "git"), shim, { mode: 0o755 });
260
+ env = { ...process.env, PATH: `${shimDir}:${process.env.PATH ?? ""}` };
261
+ }, 120_000);
262
+ afterAll(() => {
263
+ if (workDir)
264
+ fs.rmSync(workDir, { recursive: true, force: true });
265
+ });
266
+ let installSeq = 0;
267
+ /**
268
+ * Build a fresh fake install (an existing HQ root) with the given on-disk
269
+ * settings.json (`ours`) and settings.local.json (`local`). The hook FILE the
270
+ * earlier release added is present but unwired (mirrors the field box). A
271
+ * composer script is on the local tree (the overlay refreshes it anyway).
272
+ */
273
+ function makeInstall(ours, local) {
274
+ installSeq += 1;
275
+ const root = path.join(workDir, `hq-${installSeq}`);
276
+ fs.mkdirSync(path.join(root, ".claude", "hooks"), { recursive: true });
277
+ fs.mkdirSync(path.join(root, "core", "scripts"), { recursive: true });
278
+ fs.mkdirSync(path.join(root, "personal"), { recursive: true });
279
+ fs.mkdirSync(path.join(root, "companies"), { recursive: true });
280
+ fs.writeFileSync(path.join(root, ".claude", "settings.json"), JSON.stringify(ours, null, 2) + "\n");
281
+ fs.writeFileSync(path.join(root, ".claude", "hooks", "old-hook.sh"), "#!/usr/bin/env bash\n");
282
+ fs.writeFileSync(path.join(root, ".claude", "settings.local.json"), JSON.stringify(local, null, 2) + "\n");
283
+ fs.writeFileSync(path.join(root, "core", "scripts", "compose-settings-path.sh"), COMPOSER, { mode: 0o755 });
284
+ fs.writeFileSync(path.join(root, "core", "keep.md"), "same\n");
285
+ return root;
286
+ }
287
+ const rescueArgs = (root, floor) => {
288
+ const a = ["--hq-root", root, "--source", "test/repo", "--ref", "main", "--yes", "--no-backup"];
289
+ if (floor)
290
+ a.push("--floor-sha", floor);
291
+ else
292
+ a.push("--no-history-check");
293
+ return a;
294
+ };
295
+ const readSettings = (root) => JSON.parse(fs.readFileSync(path.join(root, ".claude", "settings.json"), "utf-8"));
296
+ const readLocal = (root) => JSON.parse(fs.readFileSync(path.join(root, ".claude", "settings.local.json"), "utf-8"));
297
+ const cmdsOf = (s) => s.hooks.PreToolUse.flatMap((g) => g.hooks.map((h) => h.command));
298
+ it("wires in the new hook registration, preserves machine PATH, and relocates drift", () => {
299
+ // ours = floor template + machine env.PATH + a user-drift permission, and
300
+ // (crucially) WITHOUT the new-hook registration.
301
+ const ours = structuredClone(floorSettings);
302
+ ours.env.PATH = MACHINE_PATH;
303
+ ours.permissions.allow.push("Bash(mytool:*)");
304
+ const root = makeInstall(ours, { env: { HQ_FOO: "1" } });
305
+ const r = runRescueCapture(rescueArgs(root, floorSha), env);
306
+ const out = `${r.stdout}\n${r.stderr}`;
307
+ expect(r.status, out).toBe(0);
308
+ expect(out).toContain(`Baseline: ${floorSha}`);
309
+ expect(out).toContain("Reconciled .claude/settings.json to release baseline");
310
+ const settings = readSettings(root);
311
+ const local = readLocal(root);
312
+ // (1) The newly-released hook registration is now present in settings.json,
313
+ // and the hook FILE landed too.
314
+ expect(cmdsOf(settings)).toContain(NEW_HOOK_CMD);
315
+ expect(fs.existsSync(path.join(root, ".claude", "hooks", "new-hook.sh"))).toBe(true);
316
+ // (3) Machine env.PATH is preserved/composed — never dropped, never the
317
+ // release's (the release ships none), never hardcoded.
318
+ expect(settings.env.PATH).toBe(MACHINE_PATH);
319
+ // (2) The user-drift permission moved OUT of settings.json (back to the
320
+ // shipped baseline) and INTO settings.local.json — not lost.
321
+ expect(settings.permissions.allow).toEqual(["Bash(git:*)"]);
322
+ expect(local.permissions?.allow).toContain("Bash(mytool:*)");
323
+ // The pre-existing local override survives.
324
+ expect(local.env?.HQ_FOO).toBe("1");
325
+ // Effective merged settings (Project ⊕ Local, union of permissions) still
326
+ // grant the user's tool.
327
+ const effectiveAllow = new Set([
328
+ ...settings.permissions.allow,
329
+ ...(local.permissions?.allow ?? []),
330
+ ]);
331
+ expect(effectiveAllow.has("Bash(mytool:*)")).toBe(true);
332
+ expect(effectiveAllow.has("Bash(git:*)")).toBe(true);
333
+ // No junk personal/ copy of settings.json is minted.
334
+ expect(fs.existsSync(path.join(root, "personal", ".claude", "settings.json"))).toBe(false);
335
+ }, 120_000);
336
+ it("appends relocated drift to an existing settings.local.json array without overwriting it", () => {
337
+ // The user's settings.local.json ALREADY customizes permissions.allow and an
338
+ // env var. Rescue relocates a NEW drift permission but must not overwrite the
339
+ // existing local entries — they must all survive.
340
+ const ours = structuredClone(floorSettings);
341
+ ours.env.PATH = MACHINE_PATH;
342
+ ours.permissions.allow.push("Bash(mytool:*)"); // drift to relocate
343
+ const root = makeInstall(ours, {
344
+ permissions: { allow: ["Bash(existing:*)"] },
345
+ env: { HQ_FOO: "1" },
346
+ });
347
+ const r = runRescueCapture(rescueArgs(root, floorSha), env);
348
+ expect(r.status, `${r.stdout}\n${r.stderr}`).toBe(0);
349
+ const local = readLocal(root);
350
+ // Existing local entry preserved; drift appended (order preserved, no dup).
351
+ expect(local.permissions?.allow).toEqual(["Bash(existing:*)", "Bash(mytool:*)"]);
352
+ // Existing local env override untouched.
353
+ expect(local.env?.HQ_FOO).toBe("1");
354
+ }, 120_000);
355
+ it("relocates a user-added permission even with no reachable floor (head_compare fallback)", () => {
356
+ // No --floor-sha, --no-history-check -> head_compare mode (base = release
357
+ // HEAD). A user-added permission absent from the release must still be
358
+ // preserved, the new hook registration must still wire in, and env.PATH must
359
+ // still be composed.
360
+ const ours = structuredClone(floorSettings);
361
+ ours.env.PATH = MACHINE_PATH;
362
+ ours.permissions.allow.push("Bash(mytool:*)");
363
+ const root = makeInstall(ours, {});
364
+ const r = runRescueCapture(rescueArgs(root), env);
365
+ const out = `${r.stdout}\n${r.stderr}`;
366
+ expect(r.status, out).toBe(0);
367
+ expect(out).toContain("HEAD compare");
368
+ expect(out).toContain("Reconciled .claude/settings.json to release baseline");
369
+ const settings = readSettings(root);
370
+ const local = readLocal(root);
371
+ expect(cmdsOf(settings)).toContain(NEW_HOOK_CMD); // release baseline wins
372
+ expect(settings.env.PATH).toBe(MACHINE_PATH); // machine PATH composed
373
+ // The user-added permission the release never had is relocated, not lost.
374
+ expect(settings.permissions.allow).toEqual(["Bash(git:*)"]);
375
+ expect(local.permissions?.allow).toContain("Bash(mytool:*)");
376
+ expect(fs.existsSync(path.join(root, "personal", ".claude", "settings.json"))).toBe(false);
377
+ }, 120_000);
378
+ it("composes env.PATH through the release composer (toolchain dirs prepended, not hardcoded)", () => {
379
+ // ours has a machine PATH but is MISSING the managed toolchain dirs. The
380
+ // reconcile must run them through compose-settings-path.sh so the toolchain
381
+ // is prepended — proving env.PATH is genuinely COMPOSED (deliverable 3),
382
+ // not merely copied and not hardcoded from any release blob.
383
+ const toolchain = path.join(workDir, `toolchain-${installSeq + 1}`);
384
+ for (const d of ["node/bin", "npm-global/bin", "git/bin"]) {
385
+ fs.mkdirSync(path.join(toolchain, d), { recursive: true });
386
+ }
387
+ const ours = structuredClone(floorSettings);
388
+ ours.env.PATH = MACHINE_PATH; // no toolchain dirs present
389
+ const root = makeInstall(ours, {});
390
+ const r = runRescueCapture(rescueArgs(root, floorSha), {
391
+ ...env,
392
+ HQ_TOOLCHAIN_DIR: toolchain,
393
+ });
394
+ const out = `${r.stdout}\n${r.stderr}`;
395
+ expect(r.status, out).toBe(0);
396
+ const composed = readSettings(root).env.PATH;
397
+ // installer ordering: node, npm-global, git prepended ahead of the base.
398
+ expect(composed).toBe(`${toolchain}/node/bin:${toolchain}/npm-global/bin:${toolchain}/git/bin:${MACHINE_PATH}`);
399
+ // The machine base is still present (never dropped).
400
+ expect(composed.endsWith(MACHINE_PATH)).toBe(true);
401
+ }, 120_000);
402
+ it("persists a user's array removal against the release baseline (thread 1)", () => {
403
+ // ours REMOVES the shipped "Bash(git:*)" permission. A union Local overlay
404
+ // cannot express a removal, so the reconcile must strip it from the Project
405
+ // baseline (theirs) instead — otherwise the release re-introduces it.
406
+ const ours = structuredClone(floorSettings);
407
+ ours.env.PATH = MACHINE_PATH;
408
+ ours.permissions.allow = []; // removed Bash(git:*)
409
+ const root = makeInstall(ours, {});
410
+ const r = runRescueCapture(rescueArgs(root, floorSha), env);
411
+ expect(r.status, `${r.stdout}\n${r.stderr}`).toBe(0);
412
+ const settings = readSettings(root);
413
+ // The deliberately-removed permission stays gone, and the new hook still lands.
414
+ expect(settings.permissions.allow).toEqual([]);
415
+ expect(cmdsOf(settings)).toContain(NEW_HOOK_CMD);
416
+ }, 120_000);
417
+ it("keeps the original settings.json when settings.local.json is unwritable (thread 3)", () => {
418
+ // ours has a drift permission to relocate; make settings.local.json a
419
+ // DIRECTORY so the relocation write fails. The reconcile must then preserve
420
+ // ours rather than overwrite it with the drift-less release baseline.
421
+ const ours = structuredClone(floorSettings);
422
+ ours.env.PATH = MACHINE_PATH;
423
+ ours.permissions.allow.push("Bash(mytool:*)");
424
+ const root = makeInstall(ours, {});
425
+ // Replace the local file with a directory (write will EISDIR). It is a
426
+ // carve-out, so the shuttle restores it as a directory across the overlay.
427
+ fs.rmSync(path.join(root, ".claude", "settings.local.json"));
428
+ fs.mkdirSync(path.join(root, ".claude", "settings.local.json"));
429
+ const r = runRescueCapture(rescueArgs(root, floorSha), env);
430
+ const out = `${r.stdout}\n${r.stderr}`;
431
+ expect(r.status, out).toBe(0);
432
+ expect(out).toContain("settings update not applied");
433
+ // ours is preserved verbatim — the drift permission is NOT lost.
434
+ const settings = readSettings(root);
435
+ expect(settings.permissions.allow).toContain("Bash(mytool:*)");
436
+ expect(settings.env.PATH).toBe(MACHINE_PATH);
437
+ }, 120_000);
438
+ it("backs up a malformed pre-rescue settings.json instead of destroying it (thread 5)", () => {
439
+ // Pre-rescue settings.json is invalid JSON. The overlay replaces it, so the
440
+ // reconcile must preserve the raw bytes under personal/ and still leave a
441
+ // working (composed) settings.json.
442
+ const root = makeInstall(structuredClone(floorSettings), {});
443
+ fs.writeFileSync(path.join(root, ".claude", "settings.json"), "{ this is : not json ");
444
+ const r = runRescueCapture(rescueArgs(root, floorSha), env);
445
+ const out = `${r.stdout}\n${r.stderr}`;
446
+ expect(r.status, out).toBe(0);
447
+ // Raw malformed content preserved under personal/.
448
+ const backup = path.join(root, "personal", ".claude", "settings.json");
449
+ expect(fs.existsSync(backup)).toBe(true);
450
+ expect(fs.readFileSync(backup, "utf-8")).toBe("{ this is : not json ");
451
+ // settings.json is valid again (release baseline + composed PATH + new hook).
452
+ const settings = readSettings(root);
453
+ expect(cmdsOf(settings)).toContain(NEW_HOOK_CMD);
454
+ expect(typeof settings.env.PATH).toBe("string");
455
+ }, 120_000);
456
+ it("honors an explicit --preserve-subpath of settings.json (thread 6)", () => {
457
+ // The caller asked to keep settings.json; the reconcile must not rewrite it,
458
+ // and the (preserved) old file — without the new registration — stays as-is.
459
+ const ours = structuredClone(floorSettings);
460
+ ours.env.PATH = MACHINE_PATH;
461
+ const root = makeInstall(ours, {});
462
+ const r = runRescueCapture([...rescueArgs(root, floorSha), "--preserve-subpath", ".claude/settings.json"], env);
463
+ const out = `${r.stdout}\n${r.stderr}`;
464
+ expect(r.status, out).toBe(0);
465
+ expect(out).toContain("explicitly preserved");
466
+ const settings = readSettings(root);
467
+ // Preserved verbatim: no reconcile, so the new registration did NOT land.
468
+ expect(cmdsOf(settings)).not.toContain(NEW_HOOK_CMD);
469
+ expect(settings.env.PATH).toBe(MACHINE_PATH);
470
+ }, 120_000);
471
+ it("restores the machine settings.json when a release drops the template (thread 4)", () => {
472
+ // A dedicated fixture whose HEAD DELETES .claude/settings.json (floor had
473
+ // it). Overwrite-safe deletes ours; the overlay lays nothing; the reconcile
474
+ // must restore ours so PATH + customizations survive under --no-backup.
475
+ const up2 = path.join(workDir, "upstream-drop");
476
+ fs.mkdirSync(path.join(up2, ".claude"), { recursive: true });
477
+ fs.mkdirSync(path.join(up2, "core", "scripts"), { recursive: true });
478
+ git(workDir, "init", "-b", "main", "upstream-drop");
479
+ fs.writeFileSync(path.join(up2, ".claude", "settings.json"), JSON.stringify(floorSettings, null, 2) + "\n");
480
+ fs.writeFileSync(path.join(up2, "core", "scripts", "compose-settings-path.sh"), COMPOSER, { mode: 0o755 });
481
+ fs.writeFileSync(path.join(up2, "core", "keep.md"), "same\n");
482
+ git(up2, "add", "-A");
483
+ git(up2, "commit", "-m", "floor with settings");
484
+ const floor2 = git(up2, "rev-parse", "HEAD");
485
+ // HEAD removes the template.
486
+ fs.rmSync(path.join(up2, ".claude", "settings.json"));
487
+ git(up2, "add", "-A");
488
+ git(up2, "commit", "-m", "drop settings.json");
489
+ // A shim that points clones at up2 instead of the shared upstream.
490
+ const realGit = execFileSync("bash", ["-c", "command -v git"]).toString().trim() || "/usr/bin/git";
491
+ const shim2 = path.join(workDir, "shim-drop");
492
+ fs.mkdirSync(shim2, { recursive: true });
493
+ fs.writeFileSync(path.join(shim2, "git"), `#!/usr/bin/env bash
494
+ if [ "$1" = "clone" ]; then
495
+ args=()
496
+ for a in "$@"; do
497
+ case "$a" in
498
+ https://github.com/*) a=${JSON.stringify(up2)} ;;
499
+ esac
500
+ args+=("$a")
501
+ done
502
+ exec ${JSON.stringify(realGit)} "\${args[@]}"
503
+ fi
504
+ exec ${JSON.stringify(realGit)} "$@"
505
+ `, { mode: 0o755 });
506
+ const ours = structuredClone(floorSettings);
507
+ ours.env.PATH = MACHINE_PATH;
508
+ ours.permissions.allow.push("Bash(mytool:*)");
509
+ const root = makeInstall(ours, {});
510
+ const r = runRescueCapture(rescueArgs(root, floor2), {
511
+ ...env,
512
+ PATH: `${shim2}:${process.env.PATH ?? ""}`,
513
+ });
514
+ const out = `${r.stdout}\n${r.stderr}`;
515
+ expect(r.status, out).toBe(0);
516
+ expect(out).toContain("Release no longer ships .claude/settings.json");
517
+ // ours restored — machine PATH and the user's customization survive.
518
+ const settings = readSettings(root);
519
+ expect(settings.env.PATH).toBe(MACHINE_PATH);
520
+ expect(settings.permissions.allow).toContain("Bash(mytool:*)");
521
+ }, 120_000);
522
+ });
523
+ //# sourceMappingURL=rescue-settings-reconcile.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rescue-settings-reconcile.test.js","sourceRoot":"","sources":["../../src/cli/rescue-settings-reconcile.test.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -69,7 +69,7 @@ export { listSignals } from "./signals/list.js";
69
69
  export { getSignal, SignalNotFoundError } from "./signals/get.js";
70
70
  export type { SignalSummary, SignalDocument, ListSignalsOptions, ListSignalsResult, GetSignalOptions, } from "./signals/types.js";
71
71
  export { _setSignalsS3Factory, _resetSignalsS3Factory, } from "./signals/internals.js";
72
- export { CONTENT_HASH_PATTERN, ISO8601_DATETIME_PATTERN, PushEventSchema, PushEventDecodeError, encodePushEvent, decodePushEvent, NoopPushTransport, HttpPushTransport, FEATURE_FLAG_TENANTS_ENV_VAR, FEATURE_FLAG_LEGACY_GLOBAL_ENV_VAR, EnvTenantListFlagProvider, StaticFlagProvider, defaultFlagProvider, } from "./sync/index.js";
72
+ export { CONTENT_HASH_PATTERN, ISO8601_DATETIME_PATTERN, PushEventSchema, PushEventDecodeError, encodePushEvent, decodePushEvent, NoopPushTransport, HttpPushTransport, EVENT_SYNC_LOCAL_DISABLE_ENV_VAR, isEventSyncLocallyDisabled, StaticFlagProvider, } from "./sync/index.js";
73
73
  export type { PushEvent, PushEventInput, PushEventDecodeIssue, PushTransport, HttpPushTransportOptions, AuthTokenSource, FetchLike, EventDrivenPushFlagProvider, FlagProviderWarnFn, EnvTenantListFlagProviderOptions, } from "./sync/index.js";
74
74
  export { PushEventEmitter } from "./watcher.js";
75
75
  export type { PushEventEmitterOptions, TreeChangeBatch, TreeChangeListener, } from "./watcher.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -93,7 +93,7 @@ export { getSignal, SignalNotFoundError } from "./signals/get.js";
93
93
  export { _setSignalsS3Factory, _resetSignalsS3Factory, } from "./signals/internals.js";
94
94
  // Event-driven sync — PushEvent wire contract + PushTransport shipping seam
95
95
  // (ported from hq-pro PR #112 per project event-driven-sync-menubar US-007).
96
- export { CONTENT_HASH_PATTERN, ISO8601_DATETIME_PATTERN, PushEventSchema, PushEventDecodeError, encodePushEvent, decodePushEvent, NoopPushTransport, HttpPushTransport, FEATURE_FLAG_TENANTS_ENV_VAR, FEATURE_FLAG_LEGACY_GLOBAL_ENV_VAR, EnvTenantListFlagProvider, StaticFlagProvider, defaultFlagProvider, } from "./sync/index.js";
96
+ export { CONTENT_HASH_PATTERN, ISO8601_DATETIME_PATTERN, PushEventSchema, PushEventDecodeError, encodePushEvent, decodePushEvent, NoopPushTransport, HttpPushTransport, EVENT_SYNC_LOCAL_DISABLE_ENV_VAR, isEventSyncLocallyDisabled, StaticFlagProvider, } from "./sync/index.js";
97
97
  // US-008 — watcher PushEvent emitter (bridges TreeWatcher → PushTransport,
98
98
  // flag-gated, failure-safe).
99
99
  export { PushEventEmitter } from "./watcher.js";