@indigoai-us/hq-cloud 6.11.14 → 6.11.16

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 (64) hide show
  1. package/.github/workflows/ci.yml +1 -0
  2. package/.github/workflows/publish.yml +20 -64
  3. package/dist/agent-codex-instructions.d.ts +84 -0
  4. package/dist/agent-codex-instructions.d.ts.map +1 -0
  5. package/dist/agent-codex-instructions.js +275 -0
  6. package/dist/agent-codex-instructions.js.map +1 -0
  7. package/dist/agent-codex-instructions.test.d.ts +2 -0
  8. package/dist/agent-codex-instructions.test.d.ts.map +1 -0
  9. package/dist/agent-codex-instructions.test.js +271 -0
  10. package/dist/agent-codex-instructions.test.js.map +1 -0
  11. package/dist/bin/sync-runner-planning.d.ts +11 -0
  12. package/dist/bin/sync-runner-planning.d.ts.map +1 -1
  13. package/dist/bin/sync-runner-planning.js +19 -2
  14. package/dist/bin/sync-runner-planning.js.map +1 -1
  15. package/dist/bin/sync-runner-telemetry.d.ts +1 -0
  16. package/dist/bin/sync-runner-telemetry.d.ts.map +1 -1
  17. package/dist/bin/sync-runner-telemetry.js +8 -1
  18. package/dist/bin/sync-runner-telemetry.js.map +1 -1
  19. package/dist/bin/sync-runner.d.ts +20 -1
  20. package/dist/bin/sync-runner.d.ts.map +1 -1
  21. package/dist/bin/sync-runner.js +154 -9
  22. package/dist/bin/sync-runner.js.map +1 -1
  23. package/dist/bin/sync-runner.test.js +328 -0
  24. package/dist/bin/sync-runner.test.js.map +1 -1
  25. package/dist/cli/share.js +13 -9
  26. package/dist/cli/share.js.map +1 -1
  27. package/dist/cli/sync.d.ts.map +1 -1
  28. package/dist/cli/sync.js +24 -12
  29. package/dist/cli/sync.js.map +1 -1
  30. package/dist/cli/sync.test.js +16 -0
  31. package/dist/cli/sync.test.js.map +1 -1
  32. package/dist/context.d.ts +8 -2
  33. package/dist/context.d.ts.map +1 -1
  34. package/dist/context.js +16 -6
  35. package/dist/context.js.map +1 -1
  36. package/dist/qmd-reindex.d.ts +7 -0
  37. package/dist/qmd-reindex.d.ts.map +1 -1
  38. package/dist/qmd-reindex.js +12 -1
  39. package/dist/qmd-reindex.js.map +1 -1
  40. package/dist/skill-telemetry.d.ts +15 -0
  41. package/dist/skill-telemetry.d.ts.map +1 -1
  42. package/dist/skill-telemetry.js +34 -3
  43. package/dist/skill-telemetry.js.map +1 -1
  44. package/dist/skill-telemetry.test.js +75 -1
  45. package/dist/skill-telemetry.test.js.map +1 -1
  46. package/dist/vault-client.d.ts +16 -0
  47. package/dist/vault-client.d.ts.map +1 -1
  48. package/dist/vault-client.js +21 -0
  49. package/dist/vault-client.js.map +1 -1
  50. package/package.json +3 -1
  51. package/src/agent-codex-instructions.test.ts +332 -0
  52. package/src/agent-codex-instructions.ts +309 -0
  53. package/src/bin/sync-runner-planning.ts +34 -2
  54. package/src/bin/sync-runner-telemetry.ts +8 -1
  55. package/src/bin/sync-runner.test.ts +413 -0
  56. package/src/bin/sync-runner.ts +184 -7
  57. package/src/cli/share.ts +15 -9
  58. package/src/cli/sync.test.ts +17 -0
  59. package/src/cli/sync.ts +33 -12
  60. package/src/context.ts +17 -6
  61. package/src/qmd-reindex.ts +18 -1
  62. package/src/skill-telemetry.test.ts +94 -0
  63. package/src/skill-telemetry.ts +51 -3
  64. package/src/vault-client.ts +24 -0
@@ -0,0 +1,271 @@
1
+ import { describe, it, expect, beforeEach, afterEach, vi } from "vitest";
2
+ import * as fs from "fs";
3
+ import * as os from "os";
4
+ import * as path from "path";
5
+ import { composeCodexAgentsMd, orderCapabilityFiles, gatherCodexAgentSections, materializeCodexAgents, codexHomeDir, CODEX_AGENTS_MARKER, AGENT_CONTRACT_FILE, AGENTS_PROFILE_REL, AGENT_CAPABILITIES_REL, } from "./agent-codex-instructions.js";
6
+ describe("composeCodexAgentsMd (pure)", () => {
7
+ it("returns empty string for no sections", () => {
8
+ expect(composeCodexAgentsMd([])).toBe("");
9
+ });
10
+ it("returns empty string when every section is whitespace-only", () => {
11
+ const sections = [
12
+ { name: "a", content: " \n\t " },
13
+ { name: "b", content: "" },
14
+ ];
15
+ expect(composeCodexAgentsMd(sections)).toBe("");
16
+ });
17
+ it("emits the generated marker header then the joined body", () => {
18
+ const out = composeCodexAgentsMd([
19
+ { name: "profile", content: "I am the agent." },
20
+ { name: "contract", content: "Build your own tools." },
21
+ ]);
22
+ expect(out.startsWith(CODEX_AGENTS_MARKER)).toBe(true);
23
+ expect(out).toContain("I am the agent.");
24
+ expect(out).toContain("Build your own tools.");
25
+ // body sections separated by a blank line, trailing newline
26
+ expect(out).toContain("I am the agent.\n\nBuild your own tools.");
27
+ expect(out.endsWith("\n")).toBe(true);
28
+ });
29
+ it("trims sections and drops the empty ones", () => {
30
+ const out = composeCodexAgentsMd([
31
+ { name: "a", content: "\n\n kept \n\n" },
32
+ { name: "b", content: " " },
33
+ { name: "c", content: "also" },
34
+ ]);
35
+ expect(out).toContain("kept\n\nalso");
36
+ expect(out).not.toMatch(/ {2}kept/);
37
+ });
38
+ it("is deterministic / carries no timestamp (idempotent bytes)", () => {
39
+ const sections = [{ name: "x", content: "stable" }];
40
+ expect(composeCodexAgentsMd(sections)).toBe(composeCodexAgentsMd(sections));
41
+ });
42
+ });
43
+ describe("orderCapabilityFiles (pure)", () => {
44
+ it("orders the contract first, then the rest alphabetically", () => {
45
+ expect(orderCapabilityFiles(["slack.md", "zeta.md", AGENT_CONTRACT_FILE, "alpha.md"])).toEqual([AGENT_CONTRACT_FILE, "alpha.md", "slack.md", "zeta.md"]);
46
+ });
47
+ it("drops non-markdown entries", () => {
48
+ expect(orderCapabilityFiles([AGENT_CONTRACT_FILE, "_seed-allowlist.yaml", "notes.txt", "x.md"])).toEqual([AGENT_CONTRACT_FILE, "x.md"]);
49
+ });
50
+ it("handles a missing contract gracefully", () => {
51
+ expect(orderCapabilityFiles(["b.md", "a.md"])).toEqual(["a.md", "b.md"]);
52
+ });
53
+ });
54
+ describe("gatherCodexAgentSections + materializeCodexAgents (IO)", () => {
55
+ let hqRoot;
56
+ let codexHome;
57
+ const capDir = () => path.join(hqRoot, AGENT_CAPABILITIES_REL);
58
+ beforeEach(() => {
59
+ const base = fs.mkdtempSync(path.join(os.tmpdir(), "hq-codex-test-"));
60
+ hqRoot = path.join(base, "hq");
61
+ codexHome = path.join(base, ".codex");
62
+ fs.mkdirSync(capDir(), { recursive: true });
63
+ });
64
+ afterEach(() => {
65
+ try {
66
+ fs.rmSync(path.dirname(hqRoot), { recursive: true, force: true });
67
+ }
68
+ catch {
69
+ /* best-effort cleanup */
70
+ }
71
+ });
72
+ const seedProfile = (s) => fs.writeFileSync(path.join(hqRoot, AGENTS_PROFILE_REL), s);
73
+ const seedCap = (name, s) => fs.writeFileSync(path.join(capDir(), name), s);
74
+ it("gathers profile + contract + others in the right order", () => {
75
+ fs.mkdirSync(path.join(hqRoot, "personal"), { recursive: true });
76
+ seedProfile("PROFILE briefing");
77
+ seedCap("slack.md", "SLACK doc");
78
+ seedCap(AGENT_CONTRACT_FILE, "CONTRACT body");
79
+ const sections = gatherCodexAgentSections(hqRoot);
80
+ expect(sections.map((s) => s.name)).toEqual([
81
+ AGENTS_PROFILE_REL,
82
+ `${AGENT_CAPABILITIES_REL}/${AGENT_CONTRACT_FILE}`,
83
+ `${AGENT_CAPABILITIES_REL}/slack.md`,
84
+ ]);
85
+ });
86
+ it("writes ~/.codex/AGENTS.md with contract ahead of other capabilities", () => {
87
+ seedCap(AGENT_CONTRACT_FILE, "CONTRACT body");
88
+ seedCap("slack.md", "SLACK doc");
89
+ const res = materializeCodexAgents({ hqRoot, codexHome });
90
+ expect(res.written).toBe(true);
91
+ expect(res.sectionCount).toBe(2);
92
+ const written = fs.readFileSync(path.join(codexHome, "AGENTS.md"), "utf8");
93
+ expect(written.startsWith(CODEX_AGENTS_MARKER)).toBe(true);
94
+ expect(written.indexOf("CONTRACT body")).toBeLessThan(written.indexOf("SLACK doc"));
95
+ });
96
+ it("SKIPS (no write, no delete) when the overlay is empty — never destructive", () => {
97
+ // Pre-existing materialized file from a prior good sync.
98
+ fs.mkdirSync(codexHome, { recursive: true });
99
+ const existing = `${CODEX_AGENTS_MARKER} prior -->\n\nPRIOR CONTENT\n`;
100
+ fs.writeFileSync(path.join(codexHome, "AGENTS.md"), existing);
101
+ // Overlay is empty (transient unsynced tree).
102
+ const res = materializeCodexAgents({ hqRoot, codexHome });
103
+ expect(res.written).toBe(false);
104
+ expect(res.skippedReason).toBe("empty-overlay");
105
+ // The previously-materialized file is left intact.
106
+ expect(fs.readFileSync(path.join(codexHome, "AGENTS.md"), "utf8")).toBe(existing);
107
+ });
108
+ it("creates the codex home dir if missing", () => {
109
+ seedCap(AGENT_CONTRACT_FILE, "CONTRACT body");
110
+ expect(fs.existsSync(codexHome)).toBe(false);
111
+ const res = materializeCodexAgents({ hqRoot, codexHome });
112
+ expect(res.written).toBe(true);
113
+ expect(fs.existsSync(path.join(codexHome, "AGENTS.md"))).toBe(true);
114
+ });
115
+ it("is idempotent — two runs produce byte-identical output", () => {
116
+ seedCap(AGENT_CONTRACT_FILE, "CONTRACT body");
117
+ seedCap("slack.md", "SLACK doc");
118
+ materializeCodexAgents({ hqRoot, codexHome });
119
+ const first = fs.readFileSync(path.join(codexHome, "AGENTS.md"), "utf8");
120
+ materializeCodexAgents({ hqRoot, codexHome });
121
+ const second = fs.readFileSync(path.join(codexHome, "AGENTS.md"), "utf8");
122
+ expect(second).toBe(first);
123
+ });
124
+ it("never throws on an unreadable hq-root (returns error result)", () => {
125
+ const res = materializeCodexAgents({
126
+ hqRoot: path.join(hqRoot, "does-not-exist"),
127
+ codexHome,
128
+ });
129
+ expect(res.written).toBe(false);
130
+ // No capability dir → empty overlay → skip (not a hard error).
131
+ expect(res.skippedReason).toBe("empty-overlay");
132
+ });
133
+ });
134
+ describe("materializeCodexAgents — hardening (security + failure modes)", () => {
135
+ let base;
136
+ let hqRoot;
137
+ let codexHome;
138
+ const capDir = () => path.join(hqRoot, AGENT_CAPABILITIES_REL);
139
+ beforeEach(() => {
140
+ base = fs.mkdtempSync(path.join(os.tmpdir(), "hq-codex-harden-"));
141
+ hqRoot = path.join(base, "hq");
142
+ codexHome = path.join(base, ".codex");
143
+ fs.mkdirSync(capDir(), { recursive: true });
144
+ });
145
+ afterEach(() => {
146
+ vi.restoreAllMocks();
147
+ try {
148
+ fs.rmSync(base, { recursive: true, force: true });
149
+ }
150
+ catch {
151
+ /* best-effort */
152
+ }
153
+ });
154
+ it("does NOT follow a symlinked capability file (no out-of-tree exfiltration)", () => {
155
+ // A secret outside the overlay; a symlink inside capDir pointing at it.
156
+ const secret = path.join(base, "secret.txt");
157
+ fs.writeFileSync(secret, "TOP-SECRET-CREDENTIAL");
158
+ fs.writeFileSync(path.join(capDir(), AGENT_CONTRACT_FILE), "CONTRACT body");
159
+ fs.symlinkSync(secret, path.join(capDir(), "escape.md"));
160
+ const sections = gatherCodexAgentSections(hqRoot);
161
+ // The symlink is skipped; only the real contract file is gathered.
162
+ expect(sections.map((s) => s.name)).toEqual([
163
+ `${AGENT_CAPABILITIES_REL}/${AGENT_CONTRACT_FILE}`,
164
+ ]);
165
+ const res = materializeCodexAgents({ hqRoot, codexHome });
166
+ const written = fs.readFileSync(path.join(codexHome, "AGENTS.md"), "utf8");
167
+ expect(written).not.toContain("TOP-SECRET-CREDENTIAL");
168
+ expect(res.sectionCount).toBe(1);
169
+ });
170
+ it("skips a symlinked capability DIR (no descent through a symlinked capDir)", () => {
171
+ // Replace capDir with a symlink to an external dir containing a real .md.
172
+ const external = path.join(base, "external-caps");
173
+ fs.mkdirSync(external, { recursive: true });
174
+ fs.writeFileSync(path.join(external, AGENT_CONTRACT_FILE), "EXTERNAL body");
175
+ fs.rmSync(capDir(), { recursive: true, force: true });
176
+ fs.symlinkSync(external, capDir());
177
+ const sections = gatherCodexAgentSections(hqRoot);
178
+ expect(sections).toEqual([]);
179
+ });
180
+ it("refuses to clobber a SYMLINK target (preserves it; distinct skip reason)", () => {
181
+ fs.writeFileSync(path.join(capDir(), AGENT_CONTRACT_FILE), "CONTRACT body");
182
+ fs.mkdirSync(codexHome, { recursive: true });
183
+ const realTarget = path.join(base, "managed-agents.md");
184
+ fs.writeFileSync(realTarget, "MANAGED BY DOTFILES");
185
+ fs.symlinkSync(realTarget, path.join(codexHome, "AGENTS.md"));
186
+ const res = materializeCodexAgents({ hqRoot, codexHome });
187
+ expect(res.written).toBe(false);
188
+ expect(res.skippedReason).toBe("target-not-regular-file");
189
+ // The symlink is intact and still points at the managed file.
190
+ expect(fs.lstatSync(path.join(codexHome, "AGENTS.md")).isSymbolicLink()).toBe(true);
191
+ expect(fs.readFileSync(realTarget, "utf8")).toBe("MANAGED BY DOTFILES");
192
+ });
193
+ it("refuses when the target is a DIRECTORY (no EISDIR crash, distinct reason)", () => {
194
+ fs.writeFileSync(path.join(capDir(), AGENT_CONTRACT_FILE), "CONTRACT body");
195
+ fs.mkdirSync(path.join(codexHome, "AGENTS.md"), { recursive: true });
196
+ const res = materializeCodexAgents({ hqRoot, codexHome });
197
+ expect(res.written).toBe(false);
198
+ expect(res.skippedReason).toBe("target-not-regular-file");
199
+ expect(fs.statSync(path.join(codexHome, "AGENTS.md")).isDirectory()).toBe(true);
200
+ });
201
+ it("returns an error result and leaves no .hq-tmp orphan when the write fails", () => {
202
+ // Root ignores mode bits, so this deterministic perms-based failure only
203
+ // holds for a non-root user (agent boxes + CI run non-root).
204
+ if (typeof process.getuid === "function" && process.getuid() === 0)
205
+ return;
206
+ fs.writeFileSync(path.join(capDir(), AGENT_CONTRACT_FILE), "CONTRACT body");
207
+ // Read-only codex home → the temp write inside it fails (EACCES). The
208
+ // write+rename block's catch must unlink any temp before rethrowing, so no
209
+ // `*.hq-tmp` is left behind.
210
+ fs.mkdirSync(codexHome, { recursive: true });
211
+ fs.chmodSync(codexHome, 0o500);
212
+ try {
213
+ const res = materializeCodexAgents({ hqRoot, codexHome });
214
+ expect(res.written).toBe(false);
215
+ expect(res.skippedReason).toBe("error");
216
+ const leftovers = fs
217
+ .readdirSync(codexHome)
218
+ .filter((f) => f.endsWith(".hq-tmp"));
219
+ expect(leftovers).toEqual([]);
220
+ }
221
+ finally {
222
+ fs.chmodSync(codexHome, 0o700); // restore so afterEach cleanup works
223
+ }
224
+ });
225
+ it("writes the file with owner-only perms (0o600)", () => {
226
+ fs.writeFileSync(path.join(capDir(), AGENT_CONTRACT_FILE), "CONTRACT body");
227
+ materializeCodexAgents({ hqRoot, codexHome });
228
+ const mode = fs.statSync(path.join(codexHome, "AGENTS.md")).mode & 0o777;
229
+ expect(mode).toBe(0o600);
230
+ });
231
+ it("emits a distinct event when the overlay is empty but a prior file exists", () => {
232
+ fs.mkdirSync(codexHome, { recursive: true });
233
+ fs.writeFileSync(path.join(codexHome, "AGENTS.md"), "PRIOR\n");
234
+ const events = [];
235
+ const res = materializeCodexAgents({
236
+ hqRoot, // capDir empty, no profile → empty overlay
237
+ codexHome,
238
+ log: (e) => events.push(e.event),
239
+ });
240
+ expect(res.skippedReason).toBe("empty-overlay");
241
+ expect(events).toContain("runner.agent_codex_instructions.skipped_empty_target_exists");
242
+ // Prior file left intact.
243
+ expect(fs.readFileSync(path.join(codexHome, "AGENTS.md"), "utf8")).toBe("PRIOR\n");
244
+ });
245
+ });
246
+ describe("codexHomeDir (CODEX_HOME validation)", () => {
247
+ const orig = process.env.CODEX_HOME;
248
+ afterEach(() => {
249
+ if (orig === undefined)
250
+ delete process.env.CODEX_HOME;
251
+ else
252
+ process.env.CODEX_HOME = orig;
253
+ });
254
+ it("defaults to ~/.codex when CODEX_HOME is unset", () => {
255
+ delete process.env.CODEX_HOME;
256
+ expect(codexHomeDir()).toBe(path.join(os.homedir(), ".codex"));
257
+ });
258
+ it("honors an absolute CODEX_HOME with no traversal", () => {
259
+ process.env.CODEX_HOME = "/var/lib/agent-codex";
260
+ expect(codexHomeDir()).toBe("/var/lib/agent-codex");
261
+ });
262
+ it("rejects a relative CODEX_HOME (falls back to ~/.codex)", () => {
263
+ process.env.CODEX_HOME = "relative/codex";
264
+ expect(codexHomeDir()).toBe(path.join(os.homedir(), ".codex"));
265
+ });
266
+ it("rejects a traversing CODEX_HOME (falls back to ~/.codex)", () => {
267
+ process.env.CODEX_HOME = "/tmp/../../etc";
268
+ expect(codexHomeDir()).toBe(path.join(os.homedir(), ".codex"));
269
+ });
270
+ });
271
+ //# sourceMappingURL=agent-codex-instructions.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-codex-instructions.test.js","sourceRoot":"","sources":["../src/agent-codex-instructions.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AACzE,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,wBAAwB,EACxB,sBAAsB,EACtB,YAAY,EACZ,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,sBAAsB,GAEvB,MAAM,+BAA+B,CAAC;AAEvC,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;IAC3C,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;QACpE,MAAM,QAAQ,GAAmB;YAC/B,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE;YAClC,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE;SAC3B,CAAC;QACF,MAAM,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;QAChE,MAAM,GAAG,GAAG,oBAAoB,CAAC;YAC/B,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,iBAAiB,EAAE;YAC/C,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,uBAAuB,EAAE;SACvD,CAAC,CAAC;QACH,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvD,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;QACzC,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAC;QAC/C,4DAA4D;QAC5D,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,0CAA0C,CAAC,CAAC;QAClE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,GAAG,GAAG,oBAAoB,CAAC;YAC/B,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,kBAAkB,EAAE;YAC1C,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE;YAC7B,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE;SAC/B,CAAC,CAAC;QACH,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;QACtC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;QACpE,MAAM,QAAQ,GAAG,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;QACpD,MAAM,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC9E,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;IAC3C,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;QACjE,MAAM,CACJ,oBAAoB,CAAC,CAAC,UAAU,EAAE,SAAS,EAAE,mBAAmB,EAAE,UAAU,CAAC,CAAC,CAC/E,CAAC,OAAO,CAAC,CAAC,mBAAmB,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACpC,MAAM,CACJ,oBAAoB,CAAC,CAAC,mBAAmB,EAAE,sBAAsB,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC,CACzF,CAAC,OAAO,CAAC,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,MAAM,CAAC,oBAAoB,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC3E,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,wDAAwD,EAAE,GAAG,EAAE;IACtE,IAAI,MAAc,CAAC;IACnB,IAAI,SAAiB,CAAC;IACtB,MAAM,MAAM,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;IAE/D,UAAU,CAAC,GAAG,EAAE;QACd,MAAM,IAAI,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,gBAAgB,CAAC,CAAC,CAAC;QACtE,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC/B,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACtC,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC;YACH,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACpE,CAAC;QAAC,MAAM,CAAC;YACP,yBAAyB;QAC3B,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,WAAW,GAAG,CAAC,CAAS,EAAE,EAAE,CAChC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7D,MAAM,OAAO,GAAG,CAAC,IAAY,EAAE,CAAS,EAAE,EAAE,CAC1C,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IAEjD,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;QAChE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACjE,WAAW,CAAC,kBAAkB,CAAC,CAAC;QAChC,OAAO,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;QACjC,OAAO,CAAC,mBAAmB,EAAE,eAAe,CAAC,CAAC;QAE9C,MAAM,QAAQ,GAAG,wBAAwB,CAAC,MAAM,CAAC,CAAC;QAClD,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;YAC1C,kBAAkB;YAClB,GAAG,sBAAsB,IAAI,mBAAmB,EAAE;YAClD,GAAG,sBAAsB,WAAW;SACrC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qEAAqE,EAAE,GAAG,EAAE;QAC7E,OAAO,CAAC,mBAAmB,EAAE,eAAe,CAAC,CAAC;QAC9C,OAAO,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;QAEjC,MAAM,GAAG,GAAG,sBAAsB,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;QAC1D,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAEjC,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,EAAE,MAAM,CAAC,CAAC;QAC3E,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3D,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,YAAY,CACnD,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAC7B,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2EAA2E,EAAE,GAAG,EAAE;QACnF,yDAAyD;QACzD,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7C,MAAM,QAAQ,GAAG,GAAG,mBAAmB,+BAA+B,CAAC;QACvE,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,CAAC;QAE9D,8CAA8C;QAC9C,MAAM,GAAG,GAAG,sBAAsB,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;QAC1D,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAChD,mDAAmD;QACnD,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CACrE,QAAQ,CACT,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,OAAO,CAAC,mBAAmB,EAAE,eAAe,CAAC,CAAC;QAC9C,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7C,MAAM,GAAG,GAAG,sBAAsB,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;QAC1D,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;QAChE,OAAO,CAAC,mBAAmB,EAAE,eAAe,CAAC,CAAC;QAC9C,OAAO,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;QACjC,sBAAsB,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;QAC9C,MAAM,KAAK,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,EAAE,MAAM,CAAC,CAAC;QACzE,sBAAsB,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;QAC9C,MAAM,MAAM,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,EAAE,MAAM,CAAC,CAAC;QAC1E,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8DAA8D,EAAE,GAAG,EAAE;QACtE,MAAM,GAAG,GAAG,sBAAsB,CAAC;YACjC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,gBAAgB,CAAC;YAC3C,SAAS;SACV,CAAC,CAAC;QACH,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC,+DAA+D;QAC/D,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,+DAA+D,EAAE,GAAG,EAAE;IAC7E,IAAI,IAAY,CAAC;IACjB,IAAI,MAAc,CAAC;IACnB,IAAI,SAAiB,CAAC;IACtB,MAAM,MAAM,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;IAE/D,UAAU,CAAC,GAAG,EAAE;QACd,IAAI,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,kBAAkB,CAAC,CAAC,CAAC;QAClE,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC/B,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACtC,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IACH,SAAS,CAAC,GAAG,EAAE;QACb,EAAE,CAAC,eAAe,EAAE,CAAC;QACrB,IAAI,CAAC;YACH,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACpD,CAAC;QAAC,MAAM,CAAC;YACP,iBAAiB;QACnB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2EAA2E,EAAE,GAAG,EAAE;QACnF,wEAAwE;QACxE,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;QAC7C,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;QAClD,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,mBAAmB,CAAC,EAAE,eAAe,CAAC,CAAC;QAC5E,EAAE,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,WAAW,CAAC,CAAC,CAAC;QAEzD,MAAM,QAAQ,GAAG,wBAAwB,CAAC,MAAM,CAAC,CAAC;QAClD,mEAAmE;QACnE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;YAC1C,GAAG,sBAAsB,IAAI,mBAAmB,EAAE;SACnD,CAAC,CAAC;QAEH,MAAM,GAAG,GAAG,sBAAsB,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;QAC1D,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,EAAE,MAAM,CAAC,CAAC;QAC3E,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAC;QACvD,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0EAA0E,EAAE,GAAG,EAAE;QAClF,0EAA0E;QAC1E,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;QAClD,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5C,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,mBAAmB,CAAC,EAAE,eAAe,CAAC,CAAC;QAC5E,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACtD,EAAE,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;QAEnC,MAAM,QAAQ,GAAG,wBAAwB,CAAC,MAAM,CAAC,CAAC;QAClD,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0EAA0E,EAAE,GAAG,EAAE;QAClF,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,mBAAmB,CAAC,EAAE,eAAe,CAAC,CAAC;QAC5E,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;QACxD,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,qBAAqB,CAAC,CAAC;QACpD,EAAE,CAAC,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC;QAE9D,MAAM,GAAG,GAAG,sBAAsB,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;QAC1D,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QAC1D,8DAA8D;QAC9D,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,IAAI,CAC3E,IAAI,CACL,CAAC;QACF,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IAC1E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2EAA2E,EAAE,GAAG,EAAE;QACnF,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,mBAAmB,CAAC,EAAE,eAAe,CAAC,CAAC;QAC5E,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAErE,MAAM,GAAG,GAAG,sBAAsB,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;QAC1D,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QAC1D,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2EAA2E,EAAE,GAAG,EAAE;QACnF,yEAAyE;QACzE,6DAA6D;QAC7D,IAAI,OAAO,OAAO,CAAC,MAAM,KAAK,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC;YAAE,OAAO;QAC3E,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,mBAAmB,CAAC,EAAE,eAAe,CAAC,CAAC;QAC5E,sEAAsE;QACtE,2EAA2E;QAC3E,6BAA6B;QAC7B,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7C,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC/B,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,sBAAsB,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;YAC1D,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAChC,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACxC,MAAM,SAAS,GAAG,EAAE;iBACjB,WAAW,CAAC,SAAS,CAAC;iBACtB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;YACxC,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAChC,CAAC;gBAAS,CAAC;YACT,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,qCAAqC;QACvE,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACvD,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,mBAAmB,CAAC,EAAE,eAAe,CAAC,CAAC;QAC5E,sBAAsB,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;QAC9C,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC;QACzE,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0EAA0E,EAAE,GAAG,EAAE;QAClF,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7C,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,EAAE,SAAS,CAAC,CAAC;QAC/D,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,MAAM,GAAG,GAAG,sBAAsB,CAAC;YACjC,MAAM,EAAE,2CAA2C;YACnD,SAAS;YACT,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;SACjC,CAAC,CAAC;QACH,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAChD,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CACtB,6DAA6D,CAC9D,CAAC;QACF,0BAA0B;QAC1B,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CACrE,SAAS,CACV,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,sCAAsC,EAAE,GAAG,EAAE;IACpD,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;IACpC,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,IAAI,KAAK,SAAS;YAAE,OAAO,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;;YACjD,OAAO,CAAC,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACvD,OAAO,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;QAC9B,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,OAAO,CAAC,GAAG,CAAC,UAAU,GAAG,sBAAsB,CAAC;QAChD,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;QAChE,OAAO,CAAC,GAAG,CAAC,UAAU,GAAG,gBAAgB,CAAC;QAC1C,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0DAA0D,EAAE,GAAG,EAAE;QAClE,OAAO,CAAC,GAAG,CAAC,UAAU,GAAG,gBAAgB,CAAC;QAC1C,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -6,6 +6,16 @@ interface IdentityClaims {
6
6
  name?: string;
7
7
  given_name?: string;
8
8
  family_name?: string;
9
+ /**
10
+ * Entity-bound machine-identity claims (US-013, unblocks US-004). A headless
11
+ * agent box authenticates with machine creds; its idToken carries the agent's
12
+ * own entity binding here. The `--personal` target resolver reads these to
13
+ * resolve the agent AS itself: when `custom:entityType === "agent"`, the
14
+ * personal slot resolves to the agent's OWN entity (`custom:entityUid`,
15
+ * `agt_*`) instead of the person-only canonical pick.
16
+ */
17
+ "custom:entityType"?: string;
18
+ "custom:entityUid"?: string;
9
19
  }
10
20
  export interface RunnerTarget {
11
21
  uid: string;
@@ -41,6 +51,7 @@ export declare function buildFanoutPlan(options: {
41
51
  personal: boolean;
42
52
  skipPersonal: boolean;
43
53
  client: VaultClientSurface;
54
+ claims: IdentityClaims | null;
44
55
  resolveSkipPersonal: (flag: boolean) => boolean;
45
56
  }): Promise<{
46
57
  status: "setup-needed";
@@ -1 +1 @@
1
- {"version":3,"file":"sync-runner-planning.d.ts","sourceRoot":"","sources":["../../src/bin/sync-runner-planning.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAG9C,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAExE,UAAU,cAAc;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,oBAAoB,GAC5B;IAAE,MAAM,EAAE,cAAc,CAAA;CAAE,GAC1B;IAAE,MAAM,EAAE,aAAa,CAAC;IAAC,WAAW,EAAE,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,EAAE,CAAA;CAAE,CAAC;AAE7E,wBAAsB,wBAAwB,CAAC,OAAO,EAAE;IACtD,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,kBAAkB,CAAC;IAC3B,MAAM,EAAE,cAAc,GAAG,IAAI,CAAC;IAC9B,MAAM,EAAE;QAAE,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,GAAG,IAAI,CAAA;KAAE,CAAC;IACrD,aAAa,EAAE,CACb,MAAM,EAAE,kBAAkB,EAC1B,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE;QAAE,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,GAAG,IAAI,CAAA;KAAE,KACjD,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,eAAe,EAAE,CACf,MAAM,EAAE,kBAAkB,KACvB,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,EAAE,CAAC,CAAC;CAChD,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAyBhC;AAED,wBAAsB,eAAe,CAAC,OAAO,EAAE;IAC7C,WAAW,EAAE,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,EAAE,CAAC;IAC9C,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,YAAY,EAAE,OAAO,CAAC;IACtB,MAAM,EAAE,kBAAkB,CAAC;IAC3B,mBAAmB,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC;CACjD,GAAG,OAAO,CACP;IAAE,MAAM,EAAE,cAAc,CAAA;CAAE,GAC1B;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,YAAY,EAAE,CAAA;CAAE,CAC3C,CAmCA;AAED,wBAAgB,cAAc,CAC5B,IAAI,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,EAClC,IAAI,EAAE,YAAY,EAAE,GACnB,IAAI,CAEN"}
1
+ {"version":3,"file":"sync-runner-planning.d.ts","sourceRoot":"","sources":["../../src/bin/sync-runner-planning.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAM9C,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAExE,UAAU,cAAc;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;;;OAOG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,oBAAoB,GAC5B;IAAE,MAAM,EAAE,cAAc,CAAA;CAAE,GAC1B;IAAE,MAAM,EAAE,aAAa,CAAC;IAAC,WAAW,EAAE,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,EAAE,CAAA;CAAE,CAAC;AAE7E,wBAAsB,wBAAwB,CAAC,OAAO,EAAE;IACtD,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,kBAAkB,CAAC;IAC3B,MAAM,EAAE,cAAc,GAAG,IAAI,CAAC;IAC9B,MAAM,EAAE;QAAE,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,GAAG,IAAI,CAAA;KAAE,CAAC;IACrD,aAAa,EAAE,CACb,MAAM,EAAE,kBAAkB,EAC1B,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE;QAAE,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,GAAG,IAAI,CAAA;KAAE,KACjD,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,eAAe,EAAE,CACf,MAAM,EAAE,kBAAkB,KACvB,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,EAAE,CAAC,CAAC;CAChD,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAyBhC;AAED,wBAAsB,eAAe,CAAC,OAAO,EAAE;IAC7C,WAAW,EAAE,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,EAAE,CAAC;IAC9C,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,YAAY,EAAE,OAAO,CAAC;IACtB,MAAM,EAAE,kBAAkB,CAAC;IAC3B,MAAM,EAAE,cAAc,GAAG,IAAI,CAAC;IAC9B,mBAAmB,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC;CACjD,GAAG,OAAO,CACP;IAAE,MAAM,EAAE,cAAc,CAAA;CAAE,GAC1B;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,YAAY,EAAE,CAAA;CAAE,CAC3C,CAqDA;AAED,wBAAgB,cAAc,CAC5B,IAAI,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,EAClC,IAAI,EAAE,YAAY,EAAE,GACnB,IAAI,CAEN"}
@@ -1,4 +1,4 @@
1
- import { pickCanonicalPersonEntity } from "../vault-client.js";
1
+ import { pickCanonicalPersonEntity, pickAgentSelfEntity, } from "../vault-client.js";
2
2
  import { PERSONAL_VAULT_JOURNAL_SLUG } from "../journal.js";
3
3
  export async function resolveMembershipsForRun(options) {
4
4
  if (options.personal) {
@@ -36,8 +36,25 @@ export async function buildFanoutPlan(options) {
36
36
  }
37
37
  if ((options.companies || options.personal) &&
38
38
  !options.resolveSkipPersonal(options.skipPersonal)) {
39
+ // Self-entity listing. For a person identity this returns the caller's
40
+ // person entit(ies); for an agent machine identity (idToken
41
+ // `custom:entityType=agent`) the server scopes it to the agent's OWN
42
+ // entity (type: "agent"). `listByType("person")` is the same orphan-safe
43
+ // self-listing call in both cases — the server resolves the caller from
44
+ // the JWT, so an agent box gets back its own agt_ entity here.
39
45
  const persons = await options.client.entity.listByType("person");
40
- const pick = pickCanonicalPersonEntity(persons);
46
+ // Agent-aware target selection (US-013, unblocks US-004): when the runner
47
+ // is an agent machine identity, the person-only canonical pick drops the
48
+ // agent's own `type: "agent"` entity — so resolve the agent's OWN entity
49
+ // by its claimed self-uid instead. Falls back to the person-only pick for
50
+ // a person identity (or an agent whose self-entity didn't list), so the
51
+ // prs_* `--personal` path is unchanged.
52
+ const isAgentIdentity = options.claims?.["custom:entityType"] === "agent";
53
+ const agentSelfUid = options.claims?.["custom:entityUid"] ?? "";
54
+ const pick = isAgentIdentity
55
+ ? (pickAgentSelfEntity(persons, agentSelfUid) ??
56
+ pickCanonicalPersonEntity(persons))
57
+ : pickCanonicalPersonEntity(persons);
41
58
  if (pick?.bucketName) {
42
59
  plan.push({
43
60
  slug: "personal",
@@ -1 +1 @@
1
- {"version":3,"file":"sync-runner-planning.js","sourceRoot":"","sources":["../../src/bin/sync-runner-planning.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sync-runner-planning.js","sourceRoot":"","sources":["../../src/bin/sync-runner-planning.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  export declare function emitTelemetry(options: {
2
2
  collectTelemetry?: () => Promise<void>;
3
3
  defaultCollectTelemetry: () => Promise<void>;
4
+ onError?: (err: unknown) => void;
4
5
  }): Promise<void>;
5
6
  //# sourceMappingURL=sync-runner-telemetry.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sync-runner-telemetry.d.ts","sourceRoot":"","sources":["../../src/bin/sync-runner-telemetry.ts"],"names":[],"mappings":"AAAA,wBAAsB,aAAa,CAAC,OAAO,EAAE;IAC3C,gBAAgB,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,uBAAuB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9C,GAAG,OAAO,CAAC,IAAI,CAAC,CAIhB"}
1
+ {"version":3,"file":"sync-runner-telemetry.d.ts","sourceRoot":"","sources":["../../src/bin/sync-runner-telemetry.ts"],"names":[],"mappings":"AAAA,wBAAsB,aAAa,CAAC,OAAO,EAAE;IAC3C,gBAAgB,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,uBAAuB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7C,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAC;CAClC,GAAG,OAAO,CAAC,IAAI,CAAC,CAUhB"}
@@ -1,5 +1,12 @@
1
1
  export async function emitTelemetry(options) {
2
2
  const telemetryFn = options.collectTelemetry ?? options.defaultCollectTelemetry;
3
- await telemetryFn().catch(() => undefined);
3
+ await telemetryFn().catch((err) => {
4
+ try {
5
+ options.onError?.(err);
6
+ }
7
+ catch {
8
+ /* diagnostics must never affect sync */
9
+ }
10
+ });
4
11
  }
5
12
  //# sourceMappingURL=sync-runner-telemetry.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sync-runner-telemetry.js","sourceRoot":"","sources":["../../src/bin/sync-runner-telemetry.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,OAGnC;IACC,MAAM,WAAW,GACf,OAAO,CAAC,gBAAgB,IAAI,OAAO,CAAC,uBAAuB,CAAC;IAC9D,MAAM,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;AAC7C,CAAC"}
1
+ {"version":3,"file":"sync-runner-telemetry.js","sourceRoot":"","sources":["../../src/bin/sync-runner-telemetry.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,OAInC;IACC,MAAM,WAAW,GACf,OAAO,CAAC,gBAAgB,IAAI,OAAO,CAAC,uBAAuB,CAAC;IAC9D,MAAM,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QAChC,IAAI,CAAC;YACH,OAAO,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC;QAAC,MAAM,CAAC;YACP,wCAAwC;QAC1C,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -311,6 +311,14 @@ export interface VaultClientSurface {
311
311
  getMembershipSyncConfig?: (membershipId: string) => Promise<MembershipSyncConfig>;
312
312
  listMyExplicitGrants?: (companyUid: string) => Promise<ExplicitGrant[]>;
313
313
  }
314
+ interface RunnerDiagnostic {
315
+ component: string;
316
+ event: string;
317
+ message: string;
318
+ err?: unknown;
319
+ context?: Record<string, unknown>;
320
+ }
321
+ type RunnerDiagnosticReporter = (diagnostic: RunnerDiagnostic) => void;
314
322
  export { resolvePullScope, readPinnedPrefixes };
315
323
  export type { PullScope };
316
324
  /** Minimal shape of the claims we read off the Cognito idToken. */
@@ -320,6 +328,17 @@ interface IdTokenClaims {
320
328
  name?: string;
321
329
  given_name?: string;
322
330
  family_name?: string;
331
+ /**
332
+ * Entity-bound machine-identity claims. A headless agent box authenticates
333
+ * with machine creds (username `machine-agt_*`); its idToken carries the
334
+ * agent's own entity binding here. The vault authorizer reads these to
335
+ * resolve the caller AS the agent. The runner reads them to drive
336
+ * agent-aware `--personal` target resolution: when `custom:entityType ===
337
+ * "agent"`, the personal slot resolves to the agent's OWN entity
338
+ * (`custom:entityUid`, `agt_*`) instead of the person-only canonical pick.
339
+ */
340
+ "custom:entityType"?: string;
341
+ "custom:entityUid"?: string;
323
342
  }
324
343
  export interface RunnerDeps {
325
344
  /** Where to write ndjson events. Defaults to `process.stdout`. */
@@ -361,7 +380,7 @@ export interface RunnerDeps {
361
380
  */
362
381
  collectTelemetry?: () => Promise<void>;
363
382
  }
364
- export declare function defaultCollectTelemetry(client: VaultClientSurface, clientIsStub: boolean, hqRoot: string): Promise<void>;
383
+ export declare function defaultCollectTelemetry(client: VaultClientSurface, clientIsStub: boolean, hqRoot: string, reportDiagnostic?: RunnerDiagnosticReporter): Promise<void>;
365
384
  export declare function runRunner(argv: string[], deps?: RunnerDeps): Promise<number>;
366
385
  /**
367
386
  * Auto-sync (Beta) watch loop. Re-runs the one-shot runner every
@@ -1 +1 @@
1
- {"version":3,"file":"sync-runner.d.ts","sourceRoot":"","sources":["../../src/bin/sync-runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sync-runner.d.ts","sourceRoot":"","sources":["../../src/bin/sync-runner.ts"],"names":[],"mappings":"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"}