@indigoai-us/hq-cloud 6.14.1 → 6.14.2

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 (167) hide show
  1. package/dist/bin/sync-runner-company.d.ts +4 -0
  2. package/dist/bin/sync-runner-company.d.ts.map +1 -1
  3. package/dist/bin/sync-runner-company.js +50 -1
  4. package/dist/bin/sync-runner-company.js.map +1 -1
  5. package/dist/bin/sync-runner-watch-loop.d.ts +3 -2
  6. package/dist/bin/sync-runner-watch-loop.d.ts.map +1 -1
  7. package/dist/bin/sync-runner-watch-loop.js +21 -7
  8. package/dist/bin/sync-runner-watch-loop.js.map +1 -1
  9. package/dist/bin/sync-runner.d.ts +6 -2
  10. package/dist/bin/sync-runner.d.ts.map +1 -1
  11. package/dist/bin/sync-runner.js +162 -11
  12. package/dist/bin/sync-runner.js.map +1 -1
  13. package/dist/bin/sync-runner.test.js +155 -17
  14. package/dist/bin/sync-runner.test.js.map +1 -1
  15. package/dist/cli/accept.d.ts.map +1 -1
  16. package/dist/cli/accept.js +29 -0
  17. package/dist/cli/accept.js.map +1 -1
  18. package/dist/cli/invite.d.ts.map +1 -1
  19. package/dist/cli/invite.js +33 -0
  20. package/dist/cli/invite.js.map +1 -1
  21. package/dist/cli/promote.d.ts.map +1 -1
  22. package/dist/cli/promote.js +33 -0
  23. package/dist/cli/promote.js.map +1 -1
  24. package/dist/cli/reindex.d.ts +23 -11
  25. package/dist/cli/reindex.d.ts.map +1 -1
  26. package/dist/cli/reindex.js +39 -10
  27. package/dist/cli/reindex.js.map +1 -1
  28. package/dist/cli/reindex.test.js +40 -13
  29. package/dist/cli/reindex.test.js.map +1 -1
  30. package/dist/cli/share.js +47 -4
  31. package/dist/cli/share.js.map +1 -1
  32. package/dist/cli/share.test.js +123 -2
  33. package/dist/cli/share.test.js.map +1 -1
  34. package/dist/cli/sync-scope.test.js +84 -0
  35. package/dist/cli/sync-scope.test.js.map +1 -1
  36. package/dist/cli/sync.d.ts +44 -3
  37. package/dist/cli/sync.d.ts.map +1 -1
  38. package/dist/cli/sync.js +156 -7
  39. package/dist/cli/sync.js.map +1 -1
  40. package/dist/cli/sync.test.js +133 -0
  41. package/dist/cli/sync.test.js.map +1 -1
  42. package/dist/company-resolver.d.ts +21 -0
  43. package/dist/company-resolver.d.ts.map +1 -1
  44. package/dist/company-resolver.js +31 -6
  45. package/dist/company-resolver.js.map +1 -1
  46. package/dist/company-resolver.test.js +44 -1
  47. package/dist/company-resolver.test.js.map +1 -1
  48. package/dist/ignore.d.ts +10 -0
  49. package/dist/ignore.d.ts.map +1 -1
  50. package/dist/ignore.js +23 -2
  51. package/dist/ignore.js.map +1 -1
  52. package/dist/ignore.test.js +13 -1
  53. package/dist/ignore.test.js.map +1 -1
  54. package/dist/index.d.ts +4 -2
  55. package/dist/index.d.ts.map +1 -1
  56. package/dist/index.js +4 -1
  57. package/dist/index.js.map +1 -1
  58. package/dist/journal.d.ts +12 -0
  59. package/dist/journal.d.ts.map +1 -1
  60. package/dist/journal.js +12 -0
  61. package/dist/journal.js.map +1 -1
  62. package/dist/lib/exit-codes.d.ts +25 -0
  63. package/dist/lib/exit-codes.d.ts.map +1 -0
  64. package/dist/lib/exit-codes.js +25 -0
  65. package/dist/lib/exit-codes.js.map +1 -0
  66. package/dist/object-io.d.ts.map +1 -1
  67. package/dist/object-io.js +45 -14
  68. package/dist/object-io.js.map +1 -1
  69. package/dist/object-io.test.js +61 -1
  70. package/dist/object-io.test.js.map +1 -1
  71. package/dist/operation-lock.d.ts +36 -6
  72. package/dist/operation-lock.d.ts.map +1 -1
  73. package/dist/operation-lock.js +34 -11
  74. package/dist/operation-lock.js.map +1 -1
  75. package/dist/operation-lock.test.js +30 -0
  76. package/dist/operation-lock.test.js.map +1 -1
  77. package/dist/s3.d.ts +1 -0
  78. package/dist/s3.d.ts.map +1 -1
  79. package/dist/s3.js +75 -2
  80. package/dist/s3.js.map +1 -1
  81. package/dist/s3.test.js +56 -1
  82. package/dist/s3.test.js.map +1 -1
  83. package/dist/scope-shrink.d.ts +12 -0
  84. package/dist/scope-shrink.d.ts.map +1 -1
  85. package/dist/scope-shrink.js +12 -0
  86. package/dist/scope-shrink.js.map +1 -1
  87. package/dist/scope-shrink.test.js +31 -0
  88. package/dist/scope-shrink.test.js.map +1 -1
  89. package/dist/skill-telemetry.d.ts +41 -0
  90. package/dist/skill-telemetry.d.ts.map +1 -1
  91. package/dist/skill-telemetry.js +111 -7
  92. package/dist/skill-telemetry.js.map +1 -1
  93. package/dist/skill-telemetry.test.js +187 -5
  94. package/dist/skill-telemetry.test.js.map +1 -1
  95. package/dist/sync/event-sync.d.ts +3 -0
  96. package/dist/sync/event-sync.d.ts.map +1 -1
  97. package/dist/sync/event-sync.js +23 -0
  98. package/dist/sync/event-sync.js.map +1 -1
  99. package/dist/sync/pull-scope.d.ts +21 -0
  100. package/dist/sync/pull-scope.d.ts.map +1 -1
  101. package/dist/sync/pull-scope.js +46 -13
  102. package/dist/sync/pull-scope.js.map +1 -1
  103. package/dist/telemetry-events.d.ts +31 -0
  104. package/dist/telemetry-events.d.ts.map +1 -0
  105. package/dist/telemetry-events.js +140 -0
  106. package/dist/telemetry-events.js.map +1 -0
  107. package/dist/telemetry-events.test.d.ts +2 -0
  108. package/dist/telemetry-events.test.d.ts.map +1 -0
  109. package/dist/telemetry-events.test.js +73 -0
  110. package/dist/telemetry-events.test.js.map +1 -0
  111. package/dist/telemetry.js +1 -1
  112. package/dist/telemetry.js.map +1 -1
  113. package/dist/vault-client.d.ts +38 -5
  114. package/dist/vault-client.d.ts.map +1 -1
  115. package/dist/vault-client.js +69 -6
  116. package/dist/vault-client.js.map +1 -1
  117. package/dist/vault-client.test.js +31 -1
  118. package/dist/vault-client.test.js.map +1 -1
  119. package/dist/watcher.d.ts +7 -0
  120. package/dist/watcher.d.ts.map +1 -1
  121. package/dist/watcher.js +35 -1
  122. package/dist/watcher.js.map +1 -1
  123. package/dist/watcher.test.js +30 -0
  124. package/dist/watcher.test.js.map +1 -1
  125. package/package.json +1 -1
  126. package/pnpm-workspace.yaml +2 -0
  127. package/scripts/presign-transport-e2e.mjs +2 -2
  128. package/src/bin/sync-runner-company.ts +65 -1
  129. package/src/bin/sync-runner-watch-loop.ts +24 -8
  130. package/src/bin/sync-runner.test.ts +194 -16
  131. package/src/bin/sync-runner.ts +209 -11
  132. package/src/cli/accept.ts +27 -0
  133. package/src/cli/invite.ts +31 -0
  134. package/src/cli/promote.ts +31 -0
  135. package/src/cli/reindex.test.ts +44 -13
  136. package/src/cli/reindex.ts +74 -21
  137. package/src/cli/share.test.ts +139 -2
  138. package/src/cli/share.ts +48 -2
  139. package/src/cli/sync-scope.test.ts +90 -0
  140. package/src/cli/sync.test.ts +154 -0
  141. package/src/cli/sync.ts +224 -5
  142. package/src/company-resolver.test.ts +51 -0
  143. package/src/company-resolver.ts +40 -5
  144. package/src/ignore.test.ts +18 -1
  145. package/src/ignore.ts +24 -2
  146. package/src/index.ts +22 -1
  147. package/src/journal.ts +12 -0
  148. package/src/lib/exit-codes.ts +24 -0
  149. package/src/object-io.test.ts +66 -1
  150. package/src/object-io.ts +51 -14
  151. package/src/operation-lock.test.ts +33 -0
  152. package/src/operation-lock.ts +46 -11
  153. package/src/s3.test.ts +87 -0
  154. package/src/s3.ts +93 -2
  155. package/src/scope-shrink.test.ts +32 -0
  156. package/src/scope-shrink.ts +12 -0
  157. package/src/skill-telemetry.test.ts +247 -4
  158. package/src/skill-telemetry.ts +134 -6
  159. package/src/sync/event-sync.ts +37 -0
  160. package/src/sync/pull-scope.ts +62 -13
  161. package/src/telemetry-events.test.ts +88 -0
  162. package/src/telemetry-events.ts +205 -0
  163. package/src/telemetry.ts +1 -1
  164. package/src/vault-client.test.ts +39 -1
  165. package/src/vault-client.ts +115 -14
  166. package/src/watcher.test.ts +40 -0
  167. package/src/watcher.ts +51 -0
@@ -54,10 +54,11 @@
54
54
  * resolved server-side from the JWT (never the body), and all errors are
55
55
  * swallowed so telemetry never aborts or delays a sync.
56
56
  */
57
+ import { createHash } from "node:crypto";
57
58
  import { promises as fs } from "node:fs";
58
59
  import * as os from "node:os";
59
60
  import * as path from "node:path";
60
- import { buildRepoCompanyMap, resolveCompanyForCwd, } from "./company-resolver.js";
61
+ import { buildRepoCompanyMap, resolveCompanyForCwd, resolveCompanyForSkill, } from "./company-resolver.js";
61
62
  // Privacy switch — keep false (see file header). When false, raw argument text
62
63
  // never leaves the machine; only the `hasArgs` boolean is emitted.
63
64
  const INCLUDE_ARGS_PREVIEW = false;
@@ -258,6 +259,23 @@ export function extractCodexSkillEvents(row, ctx) {
258
259
  * boundaries are unambiguous and non-matching `skills/...` paths cannot
259
260
  * catastrophically backtrack. */
260
261
  const CODEX_SKILL_FILE = /(?:^|\/)skills\/(?:[^/\s'"]+\/)*?([^/\s'"]+)\/SKILL\.md\b/;
262
+ /** A company skill read via its REAL path `companies/<slug>/skills/<name>/
263
+ * SKILL.md`. Codex loads a skill by *reading* its file, and a company skill's
264
+ * real file lives under `companies/<slug>/skills/` — so, unlike the namespaced
265
+ * `.claude/skills/<slug>:<name>/` symlink (whose captured directory already
266
+ * carries the `<slug>:` prefix), this path names the owning company in a
267
+ * SEPARATE `<slug>` segment that {@link CODEX_SKILL_FILE} discards, leaving a
268
+ * bare `<name>` that no prefix-based attribution can place (the company view
269
+ * then misses the run). Group 1 = `<slug>`, group 2 = `<name>`: we rebuild the
270
+ * canonical `<slug>:<name>` invocation token from them so the event flows
271
+ * through the SAME attribution as every other runtime — the client
272
+ * `resolveCompanyForSkill` and the server rollup both key off that `<slug>:`
273
+ * prefix — and shares one `skill_uid` with the Claude/typed forms. The slug
274
+ * segment excludes `:` (a real company slug has none); skill discovery is one
275
+ * level deep, so `<name>` is a single segment. The leading boundary admits a
276
+ * RELATIVE `companies/…` path too (preceded by whitespace/quote/start, not just
277
+ * `/`), since Codex often reads it relative to the run cwd. */
278
+ const CODEX_COMPANY_SKILL_FILE = /(?:^|[\s/'"])companies\/([^/\s'":]+)\/skills\/([^/\s'"]+)\/SKILL\.md\b/;
261
279
  /** Pull the shell command string out of a Codex `exec_command_end` `command`,
262
280
  * which is `["/bin/zsh", "-lc", "<cmd>"]` (array) on the runtimes we see, but
263
281
  * tolerate a bare string too. */
@@ -412,7 +430,13 @@ export function extractCodexSkillToolEvents(row, ctx, seen) {
412
430
  return [];
413
431
  if (cls === "unknown" && !CODEX_READ_VERB.test(cmd))
414
432
  return [];
415
- const skill = m[1].trim();
433
+ // Prefer the canonical `<slug>:<name>` token when the read is of a company
434
+ // skill's real file (`companies/<slug>/skills/<name>/SKILL.md`) — the slug is
435
+ // in the path but dropped by CODEX_SKILL_FILE, so reconstruct it here to keep
436
+ // the run attributable. Otherwise keep the last-segment name (core/personal/
437
+ // namespaced skills already carry their prefix in the captured directory).
438
+ const co = CODEX_COMPANY_SKILL_FILE.exec(cmd);
439
+ const skill = co ? `${co[1]}:${co[2]}` : m[1].trim();
416
440
  if (!skill)
417
441
  return [];
418
442
  const sessionId = ctx.sessionId;
@@ -449,6 +473,53 @@ export function extractCodexSkillToolEvents(row, ctx, seen) {
449
473
  },
450
474
  ];
451
475
  }
476
+ /**
477
+ * Resolve a skill's content-version marker ("skillVersion", skills-first-class
478
+ * US-015) — the sha256 of its SKILL.md as `sha256:<hex>` (the canonical
479
+ * content-hash shape used across hq-cloud, e.g. `watcher.ts`). This is the
480
+ * version half of the analytics-v2 usage join key (`skill_uid` + `skillVersion`),
481
+ * so a captured run maps to the exact version that produced it.
482
+ *
483
+ * Resolution is best-effort against `<hqRoot>/.claude/skills/<skill>/SKILL.md` —
484
+ * the canonical single-source skills location, which holds an entry (a real dir
485
+ * or a symlink) for every skill by its FULL invocation name incl. namespace
486
+ * (`indigo:hello-world`, `personal:worktree`, `deploy`, …). A `.agents/skills/`
487
+ * fallback covers the Codex bridge layout. `readFile` follows symlinks, so a
488
+ * company/personal skill surfaced into `.claude/skills/` resolves transparently.
489
+ * Returns undefined when `hqRoot` is absent or the file can't be located/read,
490
+ * so the wire field is simply OMITTED — additive + backwards-compatible, exactly
491
+ * like the optional `companyUid` attribution.
492
+ *
493
+ * "At invocation time" is approximated by the SKILL.md's content AT CAPTURE TIME:
494
+ * the collector scans historical session logs during sync, so the file's current
495
+ * bytes are the closest available proxy for the version that ran. A skill edited
496
+ * between run and sync can differ — acceptable for a usage-rollup join key (the
497
+ * overwhelming majority of runs sync before any edit to the skill).
498
+ */
499
+ export async function computeSkillVersion(hqRoot, skill) {
500
+ if (!hqRoot || !skill)
501
+ return undefined;
502
+ // A skill token maps to exactly one directory name here; reject anything that
503
+ // could escape the skills dir (path traversal / separators). Namespaced names
504
+ // use `:` (not a separator) and pass.
505
+ if (skill.includes("/") || skill.includes("\\") || skill.includes("..")) {
506
+ return undefined;
507
+ }
508
+ const candidates = [
509
+ path.join(hqRoot, ".claude", "skills", skill, "SKILL.md"),
510
+ path.join(hqRoot, ".agents", "skills", skill, "SKILL.md"),
511
+ ];
512
+ for (const candidate of candidates) {
513
+ try {
514
+ const bytes = await fs.readFile(candidate);
515
+ return `sha256:${createHash("sha256").update(bytes).digest("hex")}`;
516
+ }
517
+ catch {
518
+ // Not at this candidate — try the next.
519
+ }
520
+ }
521
+ return undefined;
522
+ }
452
523
  /** Shape the event for the wire. Drops raw args unless explicitly enabled.
453
524
  *
454
525
  * `companyUid` (US-002): the caller resolves the event's `cwd` → owning company
@@ -456,7 +527,11 @@ export function extractCodexSkillToolEvents(row, ctx, seen) {
456
527
  * server's KEEP allowlist (`apps/hq-pro/src/vault-service/handlers/
457
528
  * skill-invocations.ts`). When undefined (cwd maps to no company repo) the
458
529
  * field is OMITTED — the server treats absence as unattributed/personal. The
459
- * reserved value `unattributed` is never produced. */
530
+ * reserved value `unattributed` is never produced.
531
+ *
532
+ * `skillVersion` (US-015): the caller stamps `ev.skillVersion` from
533
+ * `computeSkillVersion` before shaping; a `sha256:<hex>` marker (or omitted when
534
+ * unresolved). Also on the server KEEP allowlist; additive + backwards-compatible. */
460
535
  function toWireRow(ev, companyUid) {
461
536
  const row = {
462
537
  skill: ev.skill,
@@ -471,6 +546,8 @@ function toWireRow(ev, companyUid) {
471
546
  row.uuid = ev.uuid;
472
547
  if (ev.cwd !== undefined)
473
548
  row.cwd = ev.cwd;
549
+ if (ev.skillVersion !== undefined)
550
+ row.skillVersion = ev.skillVersion;
474
551
  if (companyUid !== undefined)
475
552
  row.companyUid = companyUid;
476
553
  // INCLUDE_ARGS_PREVIEW is intentionally a compile-time constant `false`;
@@ -635,7 +712,27 @@ export async function collectAndSendSkillTelemetry(opts) {
635
712
  // When `hqRoot` is omitted the map is empty → every event stays unattributed.
636
713
  const repoCompanyMap = opts.hqRoot
637
714
  ? await buildRepoCompanyMap(opts.hqRoot)
638
- : { entries: [] };
715
+ : { entries: [], bySlug: new Map() };
716
+ // skillVersion resolution (US-015): resolve each skill's SKILL.md content hash
717
+ // ONCE per run (skills repeat across a session) and stamp it onto every event.
718
+ // Injectable for tests; defaults to hashing under hqRoot. Errors degrade to
719
+ // undefined so a resolver failure never blocks telemetry (additive field).
720
+ const resolveSkillVersion = opts.resolveSkillVersion ??
721
+ ((skill) => computeSkillVersion(opts.hqRoot, skill));
722
+ const skillVersionCache = new Map();
723
+ const skillVersionFor = async (skill) => {
724
+ if (skillVersionCache.has(skill))
725
+ return skillVersionCache.get(skill);
726
+ let version;
727
+ try {
728
+ version = await resolveSkillVersion(skill);
729
+ }
730
+ catch {
731
+ version = undefined;
732
+ }
733
+ skillVersionCache.set(skill, version);
734
+ return version;
735
+ };
639
736
  // 1. Opt-in check — reuse the same gate as token telemetry.
640
737
  let enabled;
641
738
  let optInSource;
@@ -763,9 +860,16 @@ export async function collectAndSendSkillTelemetry(opts) {
763
860
  continue;
764
861
  }
765
862
  }
766
- // Resolve cwd owning company (cmp_* uid) from the per-run map.
767
- // Unresolved undefined companyUid omitted (unattributed/personal).
768
- const companyUid = resolveCompanyForCwd(ev.cwd, repoCompanyMap);
863
+ // Attribute the event to a company (cmp_* uid) from the per-run map.
864
+ // A company SKILL (`<slug>:<skill>`) belongs to ITS company regardless of
865
+ // the cwd it ran in, so skill-based resolution takes precedence; a core
866
+ // skill falls back to the cwd's owning company. Unresolved by both →
867
+ // undefined → companyUid omitted (unattributed/personal).
868
+ const companyUid = resolveCompanyForSkill(ev.skill, repoCompanyMap) ??
869
+ resolveCompanyForCwd(ev.cwd, repoCompanyMap);
870
+ // Stamp the skill's content-version marker (US-015). Unresolved → the
871
+ // field is omitted from the wire row (additive).
872
+ ev.skillVersion = await skillVersionFor(ev.skill);
769
873
  const wireRow = toWireRow(ev, companyUid);
770
874
  const wasOversized = jsonBytes(wireRow) > maxRowBytes;
771
875
  const bounded = boundRowForPost(wireRow, maxRowBytes);
@@ -1 +1 @@
1
- {"version":3,"file":"skill-telemetry.js","sourceRoot":"","sources":["../src/skill-telemetry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"skill-telemetry.js","sourceRoot":"","sources":["../src/skill-telemetry.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,8 @@ import { describe, it, expect, vi } from "vitest";
2
2
  import { promises as fs } from "node:fs";
3
3
  import * as os from "node:os";
4
4
  import * as path from "node:path";
5
- import { extractSkillEvents, extractCodexSkillEvents, extractCodexSkillToolEvents, codexRowTurnId, parseCodexSessionMeta, collectAndSendSkillTelemetry, readFileRegion, } from "./skill-telemetry.js";
5
+ import { createHash } from "node:crypto";
6
+ import { extractSkillEvents, extractCodexSkillEvents, extractCodexSkillToolEvents, codexRowTurnId, parseCodexSessionMeta, collectAndSendSkillTelemetry, computeSkillVersion, readFileRegion, } from "./skill-telemetry.js";
6
7
  describe("extractSkillEvents", () => {
7
8
  it("extracts a user-typed slash command with args", () => {
8
9
  const row = {
@@ -180,6 +181,31 @@ describe("extractCodexSkillToolEvents (Codex model-driven SKILL.md reads)", () =
180
181
  expect(ev.skill).toBe("indigo:hello-world");
181
182
  expect(ev.source).toBe("model");
182
183
  });
184
+ it("reconstructs <slug>:<name> when reading a company skill's real path", () => {
185
+ // Codex loads a company skill by reading companies/<slug>/skills/<name>/
186
+ // SKILL.md; the slug must be recovered so the run attributes to the company
187
+ // rather than being dropped to a bare, unattributed name.
188
+ const ev = extractCodexSkillToolEvents(execEnd("sed -n '1,240p' companies/indigo/skills/signals/SKILL.md"), ctx)[0];
189
+ expect(ev.skill).toBe("indigo:signals");
190
+ expect(ev.source).toBe("model");
191
+ // The dedup/idempotency uuid keys off the reconstructed token.
192
+ expect(ev.uuid).toBe("codex:skill:sess-x:turn-A:indigo:signals");
193
+ });
194
+ it("reconstructs the slug for any company and absolute path", () => {
195
+ expect(extractCodexSkillToolEvents(execEnd("cat /home/ec2-user/hq/companies/beta/skills/support/SKILL.md"), ctx)[0].skill).toBe("beta:support");
196
+ // Hyphenated slug + hyphenated skill name both survive.
197
+ expect(extractCodexSkillToolEvents(execEnd("rg -n x companies/indigo-auto/skills/call-prep-brief/SKILL.md"), ctx)[0].skill).toBe("indigo-auto:call-prep-brief");
198
+ });
199
+ it("leaves an already-namespaced symlink read untouched (no double prefix)", () => {
200
+ // Reading via the .claude/skills/<slug>:<name>/ symlink already carries the
201
+ // prefix in the captured directory — it must NOT get a second one.
202
+ expect(extractCodexSkillToolEvents(execEnd("cat .claude/skills/indigo:signals/SKILL.md"), ctx)[0].skill).toBe("indigo:signals");
203
+ });
204
+ it("does not fabricate a company prefix for a non-company skill", () => {
205
+ // A core skill read from its bare directory stays bare — the reconstruction
206
+ // only triggers on the companies/<slug>/skills/ shape.
207
+ expect(extractCodexSkillToolEvents(execEnd("cat .claude/skills/deploy/SKILL.md"), ctx)[0].skill).toBe("deploy");
208
+ });
183
209
  it("matches normal Codex skill paths without backtracking ambiguity", () => {
184
210
  expect(extractCodexSkillToolEvents(execEnd("cat /home/u/.claude/skills/hq/land/SKILL.md"), ctx)[0].skill).toBe("land");
185
211
  expect(extractCodexSkillToolEvents(execEnd("cat /home/u/.claude/skills/a/b/c/SKILL.md"), ctx)[0].skill).toBe("c");
@@ -784,10 +810,13 @@ describe("collectAndSendSkillTelemetry — companyUid attribution", () => {
784
810
  const inRepo = path.join(hqRoot, "repos/private/hq-cloud");
785
811
  const atRoot = hqRoot; // inside scope, but not inside any mapped repo
786
812
  await fs.writeFile(path.join(dir, "s.jsonl"), [
787
- // cwd inside the company repo → attributed.
813
+ // Core skill, cwd inside the company repo → attributed by cwd.
788
814
  row({ type: "user", sessionId: "s1", timestamp: "2026-06-10T10:00:00Z", cwd: inRepo, uuid: "u1", message: { role: "user", content: "<command-name>/deploy</command-name>" } }),
789
- // cwd at hqRoot (passes scope) but maps to no repo → unattributed.
815
+ // Company skill `indigo:hello-world` run at hqRoot (maps to no repo)
816
+ // attributed by SKILL NAMESPACE to the indigo company, regardless of cwd.
790
817
  row({ type: "assistant", sessionId: "s1", timestamp: "2026-06-10T10:01:00Z", cwd: atRoot, message: { role: "assistant", content: [{ type: "tool_use", id: "t1", name: "Skill", input: { skill: "indigo:hello-world" } }] } }),
818
+ // Core skill at hqRoot (no company repo, no namespace) → unattributed.
819
+ row({ type: "user", sessionId: "s1", timestamp: "2026-06-10T10:02:00Z", cwd: atRoot, uuid: "u3", message: { role: "user", content: "<command-name>/handoff</command-name>" } }),
791
820
  ].join("\n") + "\n", "utf-8");
792
821
  const captured = [];
793
822
  const result = await collectAndSendSkillTelemetry({
@@ -799,11 +828,15 @@ describe("collectAndSendSkillTelemetry — companyUid attribution", () => {
799
828
  codexSessionsRoot: path.join(tmp, "codex"),
800
829
  cursorPath: path.join(tmp, "cursor.json"),
801
830
  });
802
- expect(result.eventsSent).toBe(2);
831
+ expect(result.eventsSent).toBe(3);
803
832
  const events = captured.flatMap((b) => b.events);
804
833
  const bySkill = new Map(events.map((e) => [e.skill, e]));
834
+ // Core skill attributed by its cwd (inside the company repo).
805
835
  expect(bySkill.get("deploy").companyUid).toBe(COMPANY_UID);
806
- expect("companyUid" in bySkill.get("indigo:hello-world")).toBe(false);
836
+ // Company skill attributed by its namespace, even though cwd maps to no repo.
837
+ expect(bySkill.get("indigo:hello-world").companyUid).toBe(COMPANY_UID);
838
+ // Core skill at hqRoot with no owning repo → stays unattributed.
839
+ expect("companyUid" in bySkill.get("handoff")).toBe(false);
807
840
  // Never the reserved sentinel.
808
841
  for (const e of events)
809
842
  expect(e.companyUid).not.toBe("unattributed");
@@ -926,4 +959,153 @@ describe("readFileRegion — HQ-SYNC-WEB-15 (SIGABRT on >2GiB single read)", ()
926
959
  expect(got).toBe(30);
927
960
  });
928
961
  });
962
+ describe("computeSkillVersion (US-015)", () => {
963
+ function sha256(bytes) {
964
+ return `sha256:${createHash("sha256").update(bytes).digest("hex")}`;
965
+ }
966
+ it("hashes .claude/skills/<skill>/SKILL.md to a sha256:<hex> marker", async () => {
967
+ const tmp = await fs.mkdtemp(path.join(os.tmpdir(), "skill-ver-"));
968
+ const body = "---\nname: deploy\n---\nDeploy things.\n";
969
+ const dir = path.join(tmp, ".claude", "skills", "deploy");
970
+ await fs.mkdir(dir, { recursive: true });
971
+ await fs.writeFile(path.join(dir, "SKILL.md"), body, "utf-8");
972
+ expect(await computeSkillVersion(tmp, "deploy")).toBe(sha256(body));
973
+ await fs.rm(tmp, { recursive: true, force: true });
974
+ });
975
+ it("resolves a namespaced skill by its full invocation name (colon in dir name)", async () => {
976
+ const tmp = await fs.mkdtemp(path.join(os.tmpdir(), "skill-ver-"));
977
+ const body = "hello world skill\n";
978
+ const dir = path.join(tmp, ".claude", "skills", "indigo:hello-world");
979
+ await fs.mkdir(dir, { recursive: true });
980
+ await fs.writeFile(path.join(dir, "SKILL.md"), body, "utf-8");
981
+ expect(await computeSkillVersion(tmp, "indigo:hello-world")).toBe(sha256(body));
982
+ await fs.rm(tmp, { recursive: true, force: true });
983
+ });
984
+ it("falls back to .agents/skills/ (Codex bridge layout)", async () => {
985
+ const tmp = await fs.mkdtemp(path.join(os.tmpdir(), "skill-ver-"));
986
+ const body = "codex-bridged skill\n";
987
+ const dir = path.join(tmp, ".agents", "skills", "learn");
988
+ await fs.mkdir(dir, { recursive: true });
989
+ await fs.writeFile(path.join(dir, "SKILL.md"), body, "utf-8");
990
+ expect(await computeSkillVersion(tmp, "learn")).toBe(sha256(body));
991
+ await fs.rm(tmp, { recursive: true, force: true });
992
+ });
993
+ it("returns undefined for a missing hqRoot, a missing file, or a traversal attempt", async () => {
994
+ const tmp = await fs.mkdtemp(path.join(os.tmpdir(), "skill-ver-"));
995
+ expect(await computeSkillVersion(undefined, "deploy")).toBeUndefined();
996
+ expect(await computeSkillVersion(tmp, "does-not-exist")).toBeUndefined();
997
+ // Path-traversal / separator-bearing names never map to a SKILL.md here.
998
+ expect(await computeSkillVersion(tmp, "../../etc/passwd")).toBeUndefined();
999
+ expect(await computeSkillVersion(tmp, "a/b")).toBeUndefined();
1000
+ await fs.rm(tmp, { recursive: true, force: true });
1001
+ });
1002
+ });
1003
+ describe("collectAndSendSkillTelemetry — skillVersion emission (US-015)", () => {
1004
+ function stubClient(captured) {
1005
+ return {
1006
+ async getTelemetryOptIn() {
1007
+ return { enabled: true, updatedAt: null };
1008
+ },
1009
+ async postSkillInvocations(batch) {
1010
+ captured.push(batch);
1011
+ return { ok: true, written: batch.events.length, skipped: [] };
1012
+ },
1013
+ };
1014
+ }
1015
+ function row(obj) {
1016
+ return JSON.stringify(obj);
1017
+ }
1018
+ it("stamps the SKILL.md content hash onto the shipped event", async () => {
1019
+ const tmp = await fs.mkdtemp(path.join(os.tmpdir(), "skill-ver-emit-"));
1020
+ // hqRoot IS the session cwd, so the invocation passes the scope filter and
1021
+ // the resolver can find the skill under hqRoot/.claude/skills.
1022
+ const hqRoot = path.join(tmp, "hq");
1023
+ const skillBody = "---\nname: deploy\n---\nDeploy.\n";
1024
+ const skillDir = path.join(hqRoot, ".claude", "skills", "deploy");
1025
+ await fs.mkdir(skillDir, { recursive: true });
1026
+ await fs.writeFile(path.join(skillDir, "SKILL.md"), skillBody, "utf-8");
1027
+ const projects = path.join(tmp, "projects");
1028
+ const dir = path.join(projects, "-hq");
1029
+ await fs.mkdir(dir, { recursive: true });
1030
+ await fs.writeFile(path.join(dir, "s.jsonl"), row({
1031
+ type: "user",
1032
+ sessionId: "s1",
1033
+ timestamp: "2026-07-09T09:00:00Z",
1034
+ cwd: hqRoot,
1035
+ uuid: "u1",
1036
+ message: { role: "user", content: "<command-name>/deploy</command-name>" },
1037
+ }) + "\n", "utf-8");
1038
+ const captured = [];
1039
+ const result = await collectAndSendSkillTelemetry({
1040
+ client: stubClient(captured),
1041
+ machineId: "m",
1042
+ installerVersion: "t",
1043
+ hqRoot,
1044
+ claudeProjectsRoot: projects,
1045
+ codexSessionsRoot: path.join(tmp, "codex"),
1046
+ cursorPath: path.join(tmp, "cursor.json"),
1047
+ });
1048
+ expect(result.eventsSent).toBe(1);
1049
+ const ev = captured[0].events[0];
1050
+ expect(ev.skill).toBe("deploy");
1051
+ expect(ev.skillVersion).toBe(`sha256:${createHash("sha256").update(skillBody).digest("hex")}`);
1052
+ await fs.rm(tmp, { recursive: true, force: true });
1053
+ });
1054
+ it("emits the injected resolver's marker (wiring is decoupled from disk)", async () => {
1055
+ const tmp = await fs.mkdtemp(path.join(os.tmpdir(), "skill-ver-inj-"));
1056
+ const projects = path.join(tmp, "projects");
1057
+ const dir = path.join(projects, "-p");
1058
+ await fs.mkdir(dir, { recursive: true });
1059
+ await fs.writeFile(path.join(dir, "s.jsonl"), row({
1060
+ type: "assistant",
1061
+ sessionId: "s2",
1062
+ timestamp: "2026-07-09T10:00:00Z",
1063
+ cwd: "/x",
1064
+ message: {
1065
+ role: "assistant",
1066
+ content: [{ type: "tool_use", id: "t1", name: "Skill", input: { skill: "code-review" } }],
1067
+ },
1068
+ }) + "\n", "utf-8");
1069
+ const captured = [];
1070
+ const result = await collectAndSendSkillTelemetry({
1071
+ client: stubClient(captured),
1072
+ machineId: "m",
1073
+ installerVersion: "t",
1074
+ claudeProjectsRoot: projects,
1075
+ codexSessionsRoot: path.join(tmp, "codex"),
1076
+ cursorPath: path.join(tmp, "cursor.json"),
1077
+ resolveSkillVersion: (skill) => `sha256:stub-for-${skill}`,
1078
+ });
1079
+ expect(result.eventsSent).toBe(1);
1080
+ expect(captured[0].events[0].skillVersion).toBe("sha256:stub-for-code-review");
1081
+ await fs.rm(tmp, { recursive: true, force: true });
1082
+ });
1083
+ it("omits skillVersion when the SKILL.md can't be resolved (additive/back-compat)", async () => {
1084
+ const tmp = await fs.mkdtemp(path.join(os.tmpdir(), "skill-ver-none-"));
1085
+ const projects = path.join(tmp, "projects");
1086
+ const dir = path.join(projects, "-p");
1087
+ await fs.mkdir(dir, { recursive: true });
1088
+ await fs.writeFile(path.join(dir, "s.jsonl"), row({
1089
+ type: "user",
1090
+ sessionId: "s3",
1091
+ timestamp: "2026-07-09T11:00:00Z",
1092
+ cwd: "/x",
1093
+ uuid: "u3",
1094
+ message: { role: "user", content: "<command-name>/unknown-skill</command-name>" },
1095
+ }) + "\n", "utf-8");
1096
+ // No hqRoot → the default resolver can't locate any SKILL.md → field omitted.
1097
+ const captured = [];
1098
+ const result = await collectAndSendSkillTelemetry({
1099
+ client: stubClient(captured),
1100
+ machineId: "m",
1101
+ installerVersion: "t",
1102
+ claudeProjectsRoot: projects,
1103
+ codexSessionsRoot: path.join(tmp, "codex"),
1104
+ cursorPath: path.join(tmp, "cursor.json"),
1105
+ });
1106
+ expect(result.eventsSent).toBe(1);
1107
+ expect("skillVersion" in captured[0].events[0]).toBe(false);
1108
+ await fs.rm(tmp, { recursive: true, force: true });
1109
+ });
1110
+ });
929
1111
  //# sourceMappingURL=skill-telemetry.test.js.map