@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.
- package/.github/workflows/unreleased-commits-nag.yml +256 -0
- package/dist/bin/sync-runner-watch-loop.d.ts +12 -0
- package/dist/bin/sync-runner-watch-loop.d.ts.map +1 -1
- package/dist/bin/sync-runner-watch-loop.js +153 -25
- package/dist/bin/sync-runner-watch-loop.js.map +1 -1
- package/dist/bin/sync-runner-watch-routes.d.ts +17 -0
- package/dist/bin/sync-runner-watch-routes.d.ts.map +1 -1
- package/dist/bin/sync-runner-watch-routes.js +11 -0
- package/dist/bin/sync-runner-watch-routes.js.map +1 -1
- package/dist/bin/sync-runner-watch-routes.test.d.ts +2 -0
- package/dist/bin/sync-runner-watch-routes.test.d.ts.map +1 -0
- package/dist/bin/sync-runner-watch-routes.test.js +51 -0
- package/dist/bin/sync-runner-watch-routes.test.js.map +1 -0
- package/dist/bin/sync-runner.d.ts +11 -12
- package/dist/bin/sync-runner.d.ts.map +1 -1
- package/dist/bin/sync-runner.js.map +1 -1
- package/dist/bin/sync-runner.test.js +173 -52
- package/dist/bin/sync-runner.test.js.map +1 -1
- package/dist/cli/reindex-knowledge.d.ts +7 -0
- package/dist/cli/reindex-knowledge.d.ts.map +1 -0
- package/dist/cli/reindex-knowledge.js +389 -0
- package/dist/cli/reindex-knowledge.js.map +1 -0
- package/dist/cli/reindex-knowledge.test.d.ts +12 -0
- package/dist/cli/reindex-knowledge.test.d.ts.map +1 -0
- package/dist/cli/reindex-knowledge.test.js +260 -0
- package/dist/cli/reindex-knowledge.test.js.map +1 -0
- package/dist/cli/reindex.d.ts.map +1 -1
- package/dist/cli/reindex.js +8 -0
- package/dist/cli/reindex.js.map +1 -1
- package/dist/cli/rescue-classify-ordering.test.js +8 -2
- package/dist/cli/rescue-classify-ordering.test.js.map +1 -1
- package/dist/cli/rescue-core.d.ts +85 -0
- package/dist/cli/rescue-core.d.ts.map +1 -1
- package/dist/cli/rescue-core.js +390 -1
- package/dist/cli/rescue-core.js.map +1 -1
- package/dist/cli/rescue-settings-reconcile.test.d.ts +2 -0
- package/dist/cli/rescue-settings-reconcile.test.d.ts.map +1 -0
- package/dist/cli/rescue-settings-reconcile.test.js +523 -0
- package/dist/cli/rescue-settings-reconcile.test.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/journal.d.ts.map +1 -1
- package/dist/journal.js +81 -51
- package/dist/journal.js.map +1 -1
- package/dist/journal.test.js +11 -19
- package/dist/journal.test.js.map +1 -1
- package/dist/sync/event-sync.d.ts +8 -25
- package/dist/sync/event-sync.d.ts.map +1 -1
- package/dist/sync/event-sync.js +23 -48
- package/dist/sync/event-sync.js.map +1 -1
- package/dist/sync/event-sync.test.js +6 -32
- package/dist/sync/event-sync.test.js.map +1 -1
- package/dist/sync/feature-flags.d.ts +20 -117
- package/dist/sync/feature-flags.d.ts.map +1 -1
- package/dist/sync/feature-flags.js +24 -147
- package/dist/sync/feature-flags.js.map +1 -1
- package/dist/sync/feature-flags.test.js +15 -61
- package/dist/sync/feature-flags.test.js.map +1 -1
- package/dist/sync/index.d.ts +1 -1
- package/dist/sync/index.d.ts.map +1 -1
- package/dist/sync/index.js +1 -1
- package/dist/sync/index.js.map +1 -1
- package/dist/sync/lease-client.d.ts +67 -0
- package/dist/sync/lease-client.d.ts.map +1 -0
- package/dist/sync/lease-client.js +158 -0
- package/dist/sync/lease-client.js.map +1 -0
- package/dist/sync/lease-client.test.d.ts +2 -0
- package/dist/sync/lease-client.test.d.ts.map +1 -0
- package/dist/sync/lease-client.test.js +119 -0
- package/dist/sync/lease-client.test.js.map +1 -0
- package/dist/sync/push-receiver.d.ts +8 -19
- package/dist/sync/push-receiver.d.ts.map +1 -1
- package/dist/sync/push-receiver.js +6 -50
- package/dist/sync/push-receiver.js.map +1 -1
- package/dist/sync/push-receiver.test.js +6 -57
- package/dist/sync/push-receiver.test.js.map +1 -1
- package/dist/sync/realtime-rollout.d.ts +85 -0
- package/dist/sync/realtime-rollout.d.ts.map +1 -0
- package/dist/sync/realtime-rollout.js +206 -0
- package/dist/sync/realtime-rollout.js.map +1 -0
- package/dist/sync/realtime-rollout.test.d.ts +2 -0
- package/dist/sync/realtime-rollout.test.d.ts.map +1 -0
- package/dist/sync/realtime-rollout.test.js +71 -0
- package/dist/sync/realtime-rollout.test.js.map +1 -0
- package/dist/sync/state-store.d.ts +40 -0
- package/dist/sync/state-store.d.ts.map +1 -0
- package/dist/sync/state-store.js +680 -0
- package/dist/sync/state-store.js.map +1 -0
- package/dist/sync/state-store.test.d.ts +2 -0
- package/dist/sync/state-store.test.d.ts.map +1 -0
- package/dist/sync/state-store.test.js +159 -0
- package/dist/sync/state-store.test.js.map +1 -0
- package/dist/types.d.ts +12 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/bin/sync-runner-watch-loop.ts +176 -32
- package/src/bin/sync-runner-watch-routes.test.ts +71 -0
- package/src/bin/sync-runner-watch-routes.ts +27 -0
- package/src/bin/sync-runner.test.ts +188 -53
- package/src/bin/sync-runner.ts +11 -12
- package/src/cli/reindex-knowledge.test.ts +307 -0
- package/src/cli/reindex-knowledge.ts +450 -0
- package/src/cli/reindex.ts +9 -0
- package/src/cli/rescue-classify-ordering.test.ts +9 -3
- package/src/cli/rescue-core.ts +459 -1
- package/src/cli/rescue-settings-reconcile.test.ts +637 -0
- package/src/index.ts +2 -4
- package/src/journal.test.ts +19 -21
- package/src/journal.ts +87 -54
- package/src/sync/event-sync.test.ts +9 -44
- package/src/sync/event-sync.ts +26 -52
- package/src/sync/feature-flags.test.ts +22 -72
- package/src/sync/feature-flags.ts +32 -199
- package/src/sync/index.ts +2 -4
- package/src/sync/lease-client.test.ts +128 -0
- package/src/sync/lease-client.ts +207 -0
- package/src/sync/push-receiver.test.ts +6 -58
- package/src/sync/push-receiver.ts +9 -74
- package/src/sync/realtime-rollout.test.ts +86 -0
- package/src/sync/realtime-rollout.ts +262 -0
- package/src/sync/state-store.test.ts +194 -0
- package/src/sync/state-store.ts +727 -0
- package/src/types.ts +14 -0
- 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,
|
|
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";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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,
|
|
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";
|