@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.
- package/.github/workflows/ci.yml +1 -0
- package/.github/workflows/publish.yml +20 -64
- package/dist/agent-codex-instructions.d.ts +84 -0
- package/dist/agent-codex-instructions.d.ts.map +1 -0
- package/dist/agent-codex-instructions.js +275 -0
- package/dist/agent-codex-instructions.js.map +1 -0
- package/dist/agent-codex-instructions.test.d.ts +2 -0
- package/dist/agent-codex-instructions.test.d.ts.map +1 -0
- package/dist/agent-codex-instructions.test.js +271 -0
- package/dist/agent-codex-instructions.test.js.map +1 -0
- package/dist/bin/sync-runner-planning.d.ts +11 -0
- package/dist/bin/sync-runner-planning.d.ts.map +1 -1
- package/dist/bin/sync-runner-planning.js +19 -2
- package/dist/bin/sync-runner-planning.js.map +1 -1
- package/dist/bin/sync-runner-telemetry.d.ts +1 -0
- package/dist/bin/sync-runner-telemetry.d.ts.map +1 -1
- package/dist/bin/sync-runner-telemetry.js +8 -1
- package/dist/bin/sync-runner-telemetry.js.map +1 -1
- package/dist/bin/sync-runner.d.ts +20 -1
- package/dist/bin/sync-runner.d.ts.map +1 -1
- package/dist/bin/sync-runner.js +154 -9
- package/dist/bin/sync-runner.js.map +1 -1
- package/dist/bin/sync-runner.test.js +328 -0
- package/dist/bin/sync-runner.test.js.map +1 -1
- package/dist/cli/share.js +13 -9
- package/dist/cli/share.js.map +1 -1
- package/dist/cli/sync.d.ts.map +1 -1
- package/dist/cli/sync.js +24 -12
- package/dist/cli/sync.js.map +1 -1
- package/dist/cli/sync.test.js +16 -0
- package/dist/cli/sync.test.js.map +1 -1
- package/dist/context.d.ts +8 -2
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +16 -6
- package/dist/context.js.map +1 -1
- package/dist/qmd-reindex.d.ts +7 -0
- package/dist/qmd-reindex.d.ts.map +1 -1
- package/dist/qmd-reindex.js +12 -1
- package/dist/qmd-reindex.js.map +1 -1
- package/dist/skill-telemetry.d.ts +15 -0
- package/dist/skill-telemetry.d.ts.map +1 -1
- package/dist/skill-telemetry.js +34 -3
- package/dist/skill-telemetry.js.map +1 -1
- package/dist/skill-telemetry.test.js +75 -1
- package/dist/skill-telemetry.test.js.map +1 -1
- package/dist/vault-client.d.ts +16 -0
- package/dist/vault-client.d.ts.map +1 -1
- package/dist/vault-client.js +21 -0
- package/dist/vault-client.js.map +1 -1
- package/package.json +3 -1
- package/src/agent-codex-instructions.test.ts +332 -0
- package/src/agent-codex-instructions.ts +309 -0
- package/src/bin/sync-runner-planning.ts +34 -2
- package/src/bin/sync-runner-telemetry.ts +8 -1
- package/src/bin/sync-runner.test.ts +413 -0
- package/src/bin/sync-runner.ts +184 -7
- package/src/cli/share.ts +15 -9
- package/src/cli/sync.test.ts +17 -0
- package/src/cli/sync.ts +33 -12
- package/src/context.ts +17 -6
- package/src/qmd-reindex.ts +18 -1
- package/src/skill-telemetry.test.ts +94 -0
- package/src/skill-telemetry.ts +51 -3
- 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":"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"}
|
|
@@ -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;
|
|
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
|
-
|
|
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":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"sync-runner-planning.js","sourceRoot":"","sources":["../../src/bin/sync-runner-planning.ts"],"names":[],"mappings":"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"}
|
|
@@ -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;
|
|
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(() =>
|
|
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,
|
|
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":";AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuDG;AAMH,OAAO,EAOL,KAAK,kBAAkB,EACvB,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,oBAAoB,EAEzB,KAAK,oBAAoB,EACzB,KAAK,aAAa,EACnB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,KAAK,SAAS,EACf,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,iCAAiC,EACjC,yBAAyB,EAC1B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,KAAK,EACV,WAAW,EACX,UAAU,EACV,iBAAiB,EAClB,MAAM,gBAAgB,CAAC;AAExB,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAGjE,OAAO,EAGL,KAAK,eAAe,EACpB,KAAK,sBAAsB,EAC5B,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"sync-runner.d.ts","sourceRoot":"","sources":["../../src/bin/sync-runner.ts"],"names":[],"mappings":"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"}
|