litmus-cli 1.3.9 → 1.3.10

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.
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAmBA,wBAAsB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAoP1D"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAmBA,wBAAsB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA6P1D"}
@@ -13,7 +13,7 @@ import { detectProject } from "../lib/detect-project.js";
13
13
  import { fatal, success, info, warn, setErrorContext, reportSuccess, FALLBACK_URL } from "../lib/errors.js";
14
14
  import { resolveApiBaseFromToken } from "../lib/env-hosts.js";
15
15
  import { formatDeadlinePT } from "../lib/format-time.js";
16
- import { installUserScopeClaudeHook, installUserScopeCodexHook, addActiveAssessment } from "../lib/ai-tracking.js";
16
+ import { installUserScopeClaudeHook, installUserScopeCodexHook, installUserScopeCursorHook, addActiveAssessment, removeActiveAssessment } from "../lib/ai-tracking.js";
17
17
  import { execSync } from "child_process";
18
18
  import { fileURLToPath } from "url";
19
19
  export async function runInit(token) {
@@ -165,12 +165,21 @@ export async function runInit(token) {
165
165
  // Surface it so the candidate isn't surprised.
166
166
  console.log(chalk.dim(" If you use Codex, accept its one-time trust prompt on first prompt to enable capture."));
167
167
  }
168
+ if (result.cursorConfigReplaced) {
169
+ // Their ~/.cursor/hooks.json couldn't be parsed, so it could not be merged
170
+ // into and was replaced. We keep a copy, but replacing someone's editor
171
+ // config must never be silent — they may have had hooks of their own.
172
+ console.log();
173
+ console.log(chalk.yellow("Your ~/.cursor/hooks.json could not be parsed and was replaced."));
174
+ console.log(chalk.dim(" A copy was saved as ~/.cursor/hooks.json.litmus-backup — if you had"));
175
+ console.log(chalk.dim(" your own Cursor hooks, restore them from there."));
176
+ }
168
177
  }
169
178
  catch (err) {
170
179
  const message = err instanceof Error ? err.message : String(err);
171
180
  console.log();
172
181
  console.log(chalk.yellow("AI prompt tracking setup failed:"), message);
173
- console.log(chalk.dim(" Assessment will still work, but Claude Code / Copilot CLI prompts won't be captured."));
182
+ console.log(chalk.dim(" Assessment will still work, but Claude Code / Copilot CLI / Cursor prompts won't be captured."));
174
183
  try {
175
184
  const litmusDir = path.join(targetDir, ".litmus");
176
185
  mkdirSync(litmusDir, { recursive: true });
@@ -270,6 +279,23 @@ function setupAiTracking(targetDir) {
270
279
  if (existsSync(hookLoggerSrc)) {
271
280
  copyFileSync(hookLoggerSrc, path.join(litmusDir, "hook-logger.cjs"));
272
281
  }
282
+ // Claim a registry slot BEFORE installing any hooks, not after.
283
+ //
284
+ // `litmus submit` uninstalls the user-scope hooks when the registry goes empty
285
+ // (removeActiveAssessment gates it). If a concurrent submit for a DIFFERENT
286
+ // assessment lands between our installs and our registration, it sees an empty
287
+ // registry and uninstalls the hooks we just wrote — the new assessment is left
288
+ // silently uncaptured. Registering first keeps the registry non-empty across
289
+ // that whole window, so a concurrent submit leaves our hooks alone.
290
+ //
291
+ // The reverse ordering risk is benign: a registry entry with no hooks yet just
292
+ // means nothing fires until the installs below finish.
293
+ let registered = false;
294
+ try {
295
+ addActiveAssessment(targetDir);
296
+ registered = true;
297
+ }
298
+ catch { /* registry write failed — installs still proceed, cwd-only capture */ }
273
299
  // Claude Code: prefer user-scope.
274
300
  let mode = "user";
275
301
  try {
@@ -293,6 +319,23 @@ function setupAiTracking(targetDir) {
293
319
  catch {
294
320
  // Couldn't write ~/.codex/hooks.json — skip silently.
295
321
  }
322
+ // Cursor: install user-scope hook at ~/.cursor/hooks.json (`beforeSubmitPrompt`).
323
+ // Cursor's native agent runs model traffic on the candidate's own machine, so
324
+ // this hook is the ONLY way we ever see a native-Cursor prompt. Without it a
325
+ // Cursor candidate produces zero ai_prompt events, which drops the grader's
326
+ // Process dimension from their score entirely. Failure here is non-fatal:
327
+ // candidates not using Cursor are unaffected.
328
+ let cursorConfigReplaced = false;
329
+ try {
330
+ // hookLoggerSrc is passed so the install can guarantee the logger exists at
331
+ // USER_SCOPE_LOGGER before writing a hook that points at it. That copy
332
+ // normally happens inside installUserScopeClaudeHook above, which may have
333
+ // failed (and then we'd be pointing Cursor at a file that was never created).
334
+ cursorConfigReplaced = installUserScopeCursorHook(hookLoggerSrc).backedUpMalformed;
335
+ }
336
+ catch {
337
+ // Couldn't write ~/.cursor/hooks.json, or the logger is missing — skip.
338
+ }
296
339
  // GitHub Copilot CLI: .github/hooks/litmus.json (separate file — won't conflict).
297
340
  // ENG-771 Bug 2: event name is `userPromptSubmit`, not `userPromptSubmitted`.
298
341
  // The previous typo meant the Copilot CLI never recognized the hook.
@@ -315,13 +358,17 @@ function setupAiTracking(targetDir) {
315
358
  // mode — the project-scope fallback writes a relative-path command that
316
359
  // can't consult the registry. Skipping in project-scope mode prevents a
317
360
  // dead entry that could mis-route a concurrent assessment's prompts.
318
- if (mode === "user") {
361
+ // Project scope deliberately stays OUT of the registry: its hook references a
362
+ // relative logger path and so can't use the registry fallback anyway, and a dead
363
+ // entry could mis-route a concurrent assessment's prompts. We claimed the slot
364
+ // above to close the uninstall race, so release it now that we know the mode.
365
+ if (mode === "project" && registered) {
319
366
  try {
320
- addActiveAssessment(targetDir);
367
+ removeActiveAssessment(targetDir);
321
368
  }
322
- catch { /* registry write failed, fall back to cwd-only capture */ }
369
+ catch { /* best effort a stale entry is preferable to failing init */ }
323
370
  }
324
- return { mode, codexInstalled };
371
+ return { mode, codexInstalled, cursorConfigReplaced };
325
372
  }
326
373
  /**
327
374
  * Project-scope fallback for Claude Code: writes .claude/settings.local.json
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,IAAI,CAAA;AACpI,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAA;AACjC,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,EAAE,MAAM,IAAI,CAAA;AACnB,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,GAAG,MAAM,KAAK,CAAA;AACrB,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3E,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AACxD,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,eAAe,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAC3G,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAA;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,0BAA0B,EAAE,yBAAyB,EAAE,0BAA0B,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAA;AACtK,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAA;AAEnC,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,KAAa;IACzC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,uBAAuB,CAAC,KAAK,CAAC,IAAI,YAAY,CAAA;IAC5F,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAA;IAEnC,yBAAyB;IACzB,MAAM,OAAO,GAAG,GAAG,CAAC,yBAAyB,CAAC,CAAC,KAAK,EAAE,CAAA;IACtD,IAAI,QAAuD,CAAA;IAE3D,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,iBAAiB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;QAClD,eAAe,CAAC,EAAE,cAAc,EAAE,QAAQ,CAAC,cAAc,EAAE,cAAc,EAAE,QAAQ,CAAC,cAAc,EAAE,CAAC,CAAA;QACrG,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;IAC9B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAA;QACjC,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QAC5D,MAAM,MAAM,GAAG,GAAG,YAAY,WAAW,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;QACvF,yFAAyF;QACzF,MAAM,QAAQ,GAAG,GAAG,YAAY,WAAW,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC,CAAC,SAAkB,CAAC,CAAC,CAAC,OAAgB,CAAA;QAC7H,KAAK,CAAC,GAAG,EAAE,kEAAkE,EAAE,EAAE,cAAc,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAA;IACtH,CAAC;IAED,6BAA6B;IAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAA;IAClE,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC1B,KAAK,CACH,WAAW,QAAQ,CAAC,UAAU,qCAAqC,EACnE,+DAA+D,EAC/D,EAAE,QAAQ,EAAE,SAAS,EAAE,CACxB,CAAA;IACH,CAAC;IAED,8BAA8B;IAC9B,OAAO,CAAC,GAAG,EAAE,CAAA;IACb,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,QAAQ,CAAC,cAAc,EAAE,CAAC,CAAC,CAAA;IACvD,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACtB,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;QAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CACxB,CAAC,EACD,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CACjE,CAAA;QACD,MAAM,WAAW,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAA;QAC9C,IAAI,SAAS,GAAG,EAAE,EAAE,CAAC;YACnB,IAAI,CAAC,eAAe,SAAS,WAAW,WAAW,GAAG,CAAC,CAAA;QACzD,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,aAAa,WAAW,EAAE,CAAC,CAAA;QAClC,CAAC;IACH,CAAC;IACD,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;QACvB,IAAI,CAAC,eAAe,QAAQ,CAAC,SAAS,UAAU,CAAC,CAAA;IACnD,CAAC;IACD,OAAO,CAAC,GAAG,EAAE,CAAA;IAEb,sCAAsC;IACtC,MAAM,eAAe,GAAG,GAAG,CAAC,2BAA2B,CAAC,CAAC,KAAK,EAAE,CAAA;IAChE,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,UAAU,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;IAEjE,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;QACrD,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAA;QAC/C,CAAC;QACD,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CACjC,WAAW,CAAC,IAA8C,CAC3D,CAAA;QACD,MAAM,QAAQ,CAAC,UAAU,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAA;QACrD,eAAe,CAAC,OAAO,CAAC,YAAY,CAAC,CAAA;IACvC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,eAAe,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;QACvC,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QAC5D,MAAM,MAAM,GAAG,GAAG,YAAY,WAAW,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;QACvF,MAAM,QAAQ,GAAG,GAAG,YAAY,WAAW,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC,CAAC,SAAkB,CAAC,CAAC,CAAC,OAAgB,CAAA;QAC7H,KAAK,CAAC,GAAG,EAAE,yCAAyC,YAAY,GAAG,EAAE,EAAE,cAAc,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAA;IAC5G,CAAC;IAED,qDAAqD;IACrD,MAAM,cAAc,GAAG,GAAG,CAAC,cAAc,QAAQ,CAAC,UAAU,MAAM,CAAC,CAAC,KAAK,EAAE,CAAA;IAE3E,IAAI,CAAC;QACH,MAAM,UAAU,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;QACnC,cAAc,CAAC,OAAO,CAAC,WAAW,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;IACvE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,cAAc,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAA;QACxC,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QAC5D,KAAK,CAAC,GAAG,EAAE,yCAAyC,YAAY,GAAG,CAAC,CAAA;IACtE,CAAC;YAAS,CAAC;QACT,IAAI,CAAC;YAAC,UAAU,CAAC,MAAM,CAAC,CAAA;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,aAAa,CAAC,CAAC;IACpD,CAAC;IAED,6EAA6E;IAC7E,+EAA+E;IAC/E,MAAM,YAAY,GAAG,aAAa,CAAC,SAAS,CAAC,CAAA;IAC7C,MAAM,gBAAgB,GAA6B;QACjD,IAAI,EAAK,CAAC,eAAe,CAAC;QAC1B,MAAM,EAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,OAAO,CAAC;QACrD,IAAI,EAAK,CAAC,SAAS,EAAE,QAAQ,EAAE,UAAU,CAAC;QAC1C,MAAM,EAAG,CAAC,MAAM,EAAE,MAAM,CAAC;QACzB,IAAI,EAAK,CAAC,SAAS,CAAC;QACpB,IAAI,EAAK,CAAC,UAAU,EAAE,gBAAgB,CAAC;QACvC,GAAG,EAAM,CAAC,SAAS,CAAC;QACpB,EAAE,EAAO,EAAE;QACX,OAAO,EAAE,EAAE;KACZ,CAAA;IACD,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAA;IACxD,MAAM,eAAe,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,gBAAgB,EAAE,GAAG,CAAC,gBAAgB,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;IAClH,IAAI,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QAC9B,MAAM,OAAO,GAAG,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAA;QACnD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;QACvD,MAAM,OAAO,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;YACzC,MAAM,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA,CAAC,mBAAmB;YACrD,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,GAAG,GAAG,CAAC,CAAA;QAC7D,CAAC,CAAC,CAAA;QACF,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,cAAc,CAAC,aAAa,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAA;QACjE,CAAC;IACH,CAAC;SAAM,CAAC;QACN,aAAa,CAAC,aAAa,EAAE,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAA;IACjE,CAAC;IAED,oCAAoC;IACpC,MAAM,WAAW,CAAC,SAAS,EAAE;QAC3B,YAAY,EAAE,QAAQ,CAAC,YAAY;QACnC,cAAc,EAAE,QAAQ,CAAC,cAAc;QACvC,cAAc,EAAE,QAAQ,CAAC,cAAc;QACvC,aAAa,EAAE,QAAQ,CAAC,aAAa;QACrC,KAAK;QACL,SAAS,EAAE,QAAQ,CAAC,SAAS;QAC7B,QAAQ,EAAE,QAAQ,CAAC,QAAQ;QAC3B,SAAS,EAAE,QAAQ,CAAC,SAAS;QAC7B,wBAAwB,EAAE,QAAQ,CAAC,wBAAwB;QAC3D,OAAO;QACP,UAAU,EAAE,QAAQ,CAAC,UAAU;KAChC,CAAC,CAAA;IAEF,oCAAoC;IACpC,2EAA2E;IAC3E,gEAAgE;IAChE,EAAE;IACF,uEAAuE;IACvE,uEAAuE;IACvE,kEAAkE;IAClE,mEAAmE;IACnE,gBAAgB;IAChB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,eAAe,CAAC,SAAS,CAAC,CAAA;QACzC,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC9B,qEAAqE;YACrE,sEAAsE;YACtE,uEAAuE;YACvE,sEAAsE;YACtE,gEAAgE;YAChE,4DAA4D;YAC5D,OAAO,CAAC,GAAG,EAAE,CAAA;YACb,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,4EAA4E,CAAC,CAAC,CAAA;YACvG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,oFAAoF,CAAC,CAAC,CAAA;QAC9G,CAAC;QACD,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;YAC1B,wEAAwE;YACxE,+CAA+C;YAC/C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,yFAAyF,CAAC,CAAC,CAAA;QACnH,CAAC;QACD,IAAI,MAAM,CAAC,oBAAoB,EAAE,CAAC;YAChC,2EAA2E;YAC3E,wEAAwE;YACxE,sEAAsE;YACtE,OAAO,CAAC,GAAG,EAAE,CAAA;YACb,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,iEAAiE,CAAC,CAAC,CAAA;YAC5F,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,uEAAuE,CAAC,CAAC,CAAA;YAC/F,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC,CAAA;QAC7E,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QAChE,OAAO,CAAC,GAAG,EAAE,CAAA;QACb,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,kCAAkC,CAAC,EAAE,OAAO,CAAC,CAAA;QACtE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,iGAAiG,CAAC,CAAC,CAAA;QACzH,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;YACjD,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;YACzC,aAAa,CACX,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,mBAAmB,CAAC,EACzC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CACtG,CAAA;QACH,CAAC;QAAC,MAAM,CAAC;YACP,kEAAkE;YAClE,kDAAkD;QACpD,CAAC;IACH,CAAC;IAED,yEAAyE;IACzE,MAAM,OAAO,GAAG,YAAY,CAAA;IAC5B,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,EAAE,CAAA;QACb,MAAM,cAAc,GAAG,GAAG,CACxB,WAAW,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,8BAA8B,CAC5E,CAAC,KAAK,EAAE,CAAA;QACT,IAAI,CAAC;YACH,QAAQ,CAAC,OAAO,CAAC,cAAc,EAAE;gBAC/B,GAAG,EAAE,SAAS;gBACd,KAAK,EAAE,MAAM;aACd,CAAC,CAAA;YACF,cAAc,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAA;QAClD,CAAC;QAAC,MAAM,CAAC;YACP,cAAc,CAAC,IAAI,CACjB,iBAAiB,OAAO,CAAC,cAAc,2CAA2C,QAAQ,CAAC,UAAU,IAAI,CAC1G,CAAA;QACH,CAAC;IACH,CAAC;IAED,kDAAkD;IAClD,IAAI,CAAC;QACH,QAAQ,CAAC,eAAe,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAA;QAC5C,IAAI,CAAC;YACH,QAAQ,CAAC,UAAU,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAA;YACvD,QAAQ,CAAC,YAAY,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAA;YACzD,QAAQ,CACN,6CAA6C,EAC7C,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,CAClC,CAAA;QACH,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,CAAC,4FAA4F,CAAC,CAAA;QACpG,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,iEAAiE;IACnE,CAAC;IAED,sCAAsC;IACtC,IAAI,CAAC;QACH,YAAY,CAAC,SAAS,CAAC,CAAA;IACzB,CAAC;IAAC,MAAM,CAAC;QACP,eAAe;IACjB,CAAC;IAED,0BAA0B;IAC1B,aAAa,CAAC,MAAM,EAAE,eAAe,QAAQ,CAAC,cAAc,eAAe,CAAC,CAAA;IAC5E,OAAO,CAAC,GAAG,EAAE,CAAA;IACb,OAAO,CAAC,kBAAkB,CAAC,CAAA;IAC3B,OAAO,CAAC,GAAG,EAAE,CAAA;IACb,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAA;IACxC,OAAO,CAAC,GAAG,EAAE,CAAA;IACb,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,CAAA;IAC7D,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,GAAG,CAAC,kCAAkC,CAAC,EAAE,CAAC,CAAA;IACnE,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;IACvF,OAAO,CAAC,GAAG,EAAE,CAAA;IACb,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC,CAAA;IAC/D,OAAO,CAAC,GAAG,EAAE,CAAA;IACb,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC,CAAA;IACzE,OAAO,CAAC,GAAG,EAAE,CAAA;IACb,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAA;IACjD,OAAO,CAAC,GAAG,EAAE,CAAA;IACb,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACtB,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;QAC5C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,gBAAgB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAA;QACnE,OAAO,CAAC,GAAG,EAAE,CAAA;IACf,CAAC;AACH,CAAC;AAED,mEAAmE;AAEnE;;;;;;;;;;;;;;;GAeG;AACH,SAAS,eAAe,CAAC,SAAiB;IACxC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;IACjD,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAEzC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACjD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;IAC1C,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,iBAAiB,CAAC,CAAA;IAE1E,2EAA2E;IAC3E,wEAAwE;IACxE,IAAI,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QAC9B,YAAY,CAAC,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC,CAAA;IACtE,CAAC;IAED,gEAAgE;IAChE,EAAE;IACF,+EAA+E;IAC/E,4EAA4E;IAC5E,+EAA+E;IAC/E,+EAA+E;IAC/E,6EAA6E;IAC7E,oEAAoE;IACpE,EAAE;IACF,+EAA+E;IAC/E,uDAAuD;IACvD,IAAI,UAAU,GAAG,KAAK,CAAA;IACtB,IAAI,CAAC;QACH,mBAAmB,CAAC,SAAS,CAAC,CAAA;QAC9B,UAAU,GAAG,IAAI,CAAA;IACnB,CAAC;IAAC,MAAM,CAAC,CAAC,sEAAsE,CAAC,CAAC;IAElF,kCAAkC;IAClC,IAAI,IAAI,GAAuB,MAAM,CAAA;IACrC,IAAI,CAAC;QACH,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAA;QACzF,0BAA0B,CAAC,aAAa,CAAC,CAAA;IAC3C,CAAC;IAAC,MAAM,CAAC;QACP,IAAI,GAAG,SAAS,CAAA;QAChB,2BAA2B,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;IACnD,CAAC;IAED,kFAAkF;IAClF,wFAAwF;IACxF,mFAAmF;IACnF,yFAAyF;IACzF,IAAI,cAAc,GAAG,KAAK,CAAA;IAC1B,IAAI,CAAC;QACH,yBAAyB,EAAE,CAAA;QAC3B,cAAc,GAAG,IAAI,CAAA;IACvB,CAAC;IAAC,MAAM,CAAC;QACP,sDAAsD;IACxD,CAAC;IAED,kFAAkF;IAClF,8EAA8E;IAC9E,6EAA6E;IAC7E,4EAA4E;IAC5E,0EAA0E;IAC1E,8CAA8C;IAC9C,IAAI,oBAAoB,GAAG,KAAK,CAAA;IAChC,IAAI,CAAC;QACH,4EAA4E;QAC5E,uEAAuE;QACvE,2EAA2E;QAC3E,8EAA8E;QAC9E,oBAAoB,GAAG,0BAA0B,CAAC,aAAa,CAAC,CAAC,iBAAiB,CAAA;IACpF,CAAC;IAAC,MAAM,CAAC;QACP,wEAAwE;IAC1E,CAAC;IAED,kFAAkF;IAClF,8EAA8E;IAC9E,qEAAqE;IACrE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,CAAA;IAC3D,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAC1C,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC;QACjE,OAAO,EAAE,CAAC;QACV,KAAK,EAAE;YACL,gBAAgB,EAAE,CAAC;oBACjB,IAAI,EAAE,SAAS;oBACf,IAAI,EAAE,sCAAsC;oBAC5C,UAAU,EAAE,sCAAsC;oBAClD,UAAU,EAAE,CAAC;iBACd,CAAC;SACH;KACF,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAA;IAEnB,uEAAuE;IACvE,uEAAuE;IACvE,4EAA4E;IAC5E,wEAAwE;IACxE,wEAAwE;IACxE,qEAAqE;IACrE,8EAA8E;IAC9E,iFAAiF;IACjF,+EAA+E;IAC/E,8EAA8E;IAC9E,IAAI,IAAI,KAAK,SAAS,IAAI,UAAU,EAAE,CAAC;QACrC,IAAI,CAAC;YACH,sBAAsB,CAAC,SAAS,CAAC,CAAA;QACnC,CAAC;QAAC,MAAM,CAAC,CAAC,+DAA+D,CAAC,CAAC;IAC7E,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,oBAAoB,EAAE,CAAA;AACvD,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,SAAS,2BAA2B,CAAC,SAAiB,EAAE,SAAiB;IACvE,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;IACjD,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IACzC,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,qBAAqB,CAAC,CAAA;IACtE,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAA;IAC7D,MAAM,QAAQ,GAAG;QACf,OAAO,EAAE,EAAE;QACX,OAAO,EAAE,CAAC;QACV,KAAK,EAAE,CAAC;gBACN,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,QAAQ,aAAa,SAAS;gBACvC,OAAO,EAAE,CAAC;aACX,CAAC;KACH,CAAA;IACD,MAAM,MAAM,GAAG,CAAC,CAAU,EAAW,EAAE;QACrC,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAA;QAC7C,MAAM,GAAG,GAAG,CAA4B,CAAA;QACxC,IAAI,GAAG,CAAC,OAAO;YAAE,OAAO,IAAI,CAAA;QAC5B,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAA;QACvB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAA;QACvC,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAU,EAAE,EAAE;YAC/B,MAAM,GAAG,GAAI,CAA2B,EAAE,OAAO,CAAA;YACjD,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,+CAA+C,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAC7F,CAAC,CAAC,CAAA;IACJ,CAAC,CAAA;IACD,IAAI,IAAI,GAA6F,EAAE,CAAA;IACvG,IAAI,UAAU,CAAC,kBAAkB,CAAC,EAAE,CAAC;QACnC,IAAI,CAAC;YACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC,CAAA;QAC7D,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,CAAC;gBAAC,YAAY,CAAC,kBAAkB,EAAE,kBAAkB,GAAG,gBAAgB,CAAC,CAAA;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,CAAC;YAC3G,IAAI,GAAG,EAAE,CAAA;QACX,CAAC;IACH,CAAC;IACD,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,KAAV,IAAI,CAAC,KAAK,GAAK,EAAE,EAAC,CAAA;IACjC,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAA;IACpF,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;IAC/C,KAAK,CAAC,gBAAgB,GAAG,CAAC,GAAG,MAAM,EAAE,QAAQ,CAAC,CAAA;IAC9C,aAAa,CAAC,kBAAkB,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAA;AACzE,CAAC"}
@@ -10,7 +10,7 @@ import { submitZip, ServerError } from "../lib/api.js";
10
10
  import { createSubmissionZip } from "../lib/zip.js";
11
11
  import { fatal, success, warn, info, setErrorContext, reportSuccess } from "../lib/errors.js";
12
12
  import { formatDeadlinePT } from "../lib/format-time.js";
13
- import { uninstallUserScopeClaudeHook, uninstallUserScopeCodexHook, removeActiveAssessment } from "../lib/ai-tracking.js";
13
+ import { uninstallUserScopeClaudeHook, uninstallUserScopeCodexHook, uninstallUserScopeCursorHook, removeActiveAssessment } from "../lib/ai-tracking.js";
14
14
  export async function runSubmit(opts) {
15
15
  // Step 1: Read config
16
16
  const config = await readConfig();
@@ -367,6 +367,7 @@ function releaseAiTrackingForAssessment(projectRoot) {
367
367
  if (registryEmpty) {
368
368
  uninstallUserScopeClaudeHook();
369
369
  uninstallUserScopeCodexHook();
370
+ uninstallUserScopeCursorHook();
370
371
  }
371
372
  }
372
373
  //# sourceMappingURL=submit.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"submit.js","sourceRoot":"","sources":["../../src/commands/submit.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"submit.js","sourceRoot":"","sources":["../../src/commands/submit.ts"],"names":[],"mappings":"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"}
@@ -33,6 +33,35 @@ export declare function uninstallUserScopeClaudeHook(): void;
33
33
  */
34
34
  export declare function installUserScopeCodexHook(): void;
35
35
  export declare function uninstallUserScopeCodexHook(): void;
36
+ /**
37
+ * Install a `beforeSubmitPrompt` hook in `~/.cursor/hooks.json` pointing at the
38
+ * absolute logger path. Idempotent.
39
+ *
40
+ * Pass `hookLoggerSrc` and this will make sure the logger actually exists at
41
+ * `USER_SCOPE_LOGGER` before writing a hook that references it. That copy
42
+ * normally happens in `installUserScopeClaudeHook` — its very first action — so
43
+ * if THAT throws (unwritable HOME) and init falls back to project scope, the
44
+ * Cursor hook would otherwise point at a file that was never created.
45
+ *
46
+ * A dead reference is no longer catastrophic (the logger's `ourCursorHookIsInstalled`
47
+ * resolves the path and refuses to stand down for a hook that cannot run, so the
48
+ * Claude invocation still captures). This just avoids writing one in the first
49
+ * place. Deliberately does NOT throw when the logger is absent and no source is
50
+ * given: Cursor capture failing is worth far less than `litmus init` failing, and
51
+ * the read-side check already prevents the both-paths-lost case.
52
+ *
53
+ * Returns `backedUpMalformed` so the caller can tell the candidate when we had to
54
+ * replace an unparseable config — that write is unavoidable (you cannot merge into
55
+ * JSON you cannot parse) but it must not be silent.
56
+ *
57
+ * Throws on a non-array `beforeSubmitPrompt` (rather than clobbering a config
58
+ * shape we don't understand) and on any filesystem failure, so the caller can
59
+ * treat Cursor tracking as best-effort the way it already does for Codex.
60
+ */
61
+ export declare function installUserScopeCursorHook(hookLoggerSrc?: string): {
62
+ backedUpMalformed: boolean;
63
+ };
64
+ export declare function uninstallUserScopeCursorHook(): void;
36
65
  export declare function addActiveAssessment(assessmentPath: string): void;
37
66
  /**
38
67
  * Remove an assessment from the registry. Returns `true` only when we
@@ -1 +1 @@
1
- {"version":3,"file":"ai-tracking.d.ts","sourceRoot":"","sources":["../../src/lib/ai-tracking.ts"],"names":[],"mappings":"AAcA,eAAO,MAAM,iBAAiB,QAA2C,CAAA;AA6FzE;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,0BAA0B,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAkCtE;AAED;;;;;GAKG;AACH,wBAAgB,4BAA4B,IAAI,IAAI,CAyBnD;AASD;;;;;;GAMG;AACH,wBAAgB,yBAAyB,IAAI,IAAI,CAwBhD;AAED,wBAAgB,2BAA2B,IAAI,IAAI,CAuBlD;AAyBD,wBAAgB,mBAAmB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAShE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,sBAAsB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAqBtE"}
1
+ {"version":3,"file":"ai-tracking.d.ts","sourceRoot":"","sources":["../../src/lib/ai-tracking.ts"],"names":[],"mappings":"AAgBA,eAAO,MAAM,iBAAiB,QAA2C,CAAA;AAyIzE;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,0BAA0B,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAkCtE;AAED;;;;;GAKG;AACH,wBAAgB,4BAA4B,IAAI,IAAI,CAyBnD;AASD;;;;;;GAMG;AACH,wBAAgB,yBAAyB,IAAI,IAAI,CAwBhD;AAED,wBAAgB,2BAA2B,IAAI,IAAI,CAuBlD;AAgBD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,0BAA0B,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG;IAAE,iBAAiB,EAAE,OAAO,CAAA;CAAE,CA4CjG;AAED,wBAAgB,4BAA4B,IAAI,IAAI,CAuBnD;AAyBD,wBAAgB,mBAAmB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAShE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,sBAAsB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAqBtE"}
@@ -5,6 +5,8 @@ const CLAUDE_DIR = path.join(os.homedir(), ".claude");
5
5
  const CLAUDE_SETTINGS = path.join(CLAUDE_DIR, "settings.json");
6
6
  const CODEX_DIR = path.join(os.homedir(), ".codex");
7
7
  const CODEX_HOOKS = path.join(CODEX_DIR, "hooks.json");
8
+ const CURSOR_DIR = path.join(os.homedir(), ".cursor");
9
+ const CURSOR_HOOKS = path.join(CURSOR_DIR, "hooks.json");
8
10
  const LITMUS_DIR = path.join(os.homedir(), ".litmus");
9
11
  const ACTIVE_ASSESSMENTS = path.join(LITMUS_DIR, "active-assessments.json");
10
12
  const REGISTRY_LOCK = path.join(LITMUS_DIR, "registry.lock");
@@ -12,16 +14,36 @@ export const USER_SCOPE_LOGGER = path.join(LITMUS_DIR, "hook-logger.cjs");
12
14
  // Two identifiers in case one drifts. Primary: a sentinel field on the hook
13
15
  // entry itself. Fallback: the command-string pattern (catches v1.3.6 entries
14
16
  // that pre-date the sentinel). Identifying by either means cleanup is robust
15
- // to format changes by Anthropic/OpenAI and to candidate hand-edits.
16
- const OUR_COMMAND_PATTERN = /[/\\]\.litmus[/\\]hook-logger\.cjs\s+(claude|codex)\b/;
17
+ // to format changes by Anthropic/OpenAI/Anysphere and to candidate hand-edits.
18
+ // The optional quote is required because the logger path is shell-quoted (see
19
+ // quoteForShell): without it this pattern stops matching our OWN entries, and
20
+ // repeat-install idempotency and uninstall both silently stop working.
21
+ // hook-logger.cjs carries the same pattern for its Cursor dedupe check — keep
22
+ // the two in step.
23
+ const OUR_COMMAND_PATTERN = /[/\\]\.litmus[/\\]hook-logger\.cjs["']?\s+(claude|codex|cursor)\b/;
17
24
  const SENTINEL_FIELD = "_litmus";
25
+ /**
26
+ * Shell-quote a path for a hook `command` string.
27
+ *
28
+ * Hook runners hand the command to a shell, so an unquoted path breaks for any
29
+ * candidate whose home directory contains a space (`/Users/Jane Smith/...`) —
30
+ * the shell splits it and node is handed a path that doesn't exist. The logger
31
+ * always lives under the home directory, so this is exactly where it bites.
32
+ * Single quotes are the safest POSIX form; the Windows runners go through
33
+ * cmd/PowerShell, where double quotes are what's understood.
34
+ */
35
+ function quoteForShell(p) {
36
+ if (process.platform === "win32")
37
+ return `"${p}"`;
38
+ return `'${p.replace(/'/g, `'\\''`)}'`;
39
+ }
18
40
  function buildHookEntry(loggerAbsPath, tool) {
19
41
  return {
20
42
  matcher: "",
21
43
  [SENTINEL_FIELD]: 1,
22
44
  hooks: [{
23
45
  type: "command",
24
- command: `node ${loggerAbsPath} ${tool}`,
46
+ command: `node ${quoteForShell(loggerAbsPath)} ${tool}`,
25
47
  timeout: tool === "claude" ? 5 : 30,
26
48
  }],
27
49
  };
@@ -42,6 +64,28 @@ function isOurEntry(entry) {
42
64
  return typeof cmd === "string" && OUR_COMMAND_PATTERN.test(cmd);
43
65
  });
44
66
  }
67
+ // Cursor's hooks.json entry is FLAT — `{command, type?, timeout?}` — not the
68
+ // nested `{matcher, hooks:[{command}]}` shape Claude Code and Codex use, so it
69
+ // needs its own builder and its own identifier. Deliberately NO `_litmus`
70
+ // sentinel: Cursor publishes a JSON schema for this file
71
+ // (unpkg.com/cursor-hooks/schema/hooks.schema.json) and may validate it, so an
72
+ // unrecognized key risks invalidating the whole config and taking the
73
+ // candidate's *other* hooks down with it. The command string is a sufficient
74
+ // identifier — it already backs `isOurEntry` as its fallback.
75
+ const CURSOR_HOOK_TIMEOUT_SECONDS = 10;
76
+ function buildCursorHookEntry(loggerAbsPath) {
77
+ return {
78
+ command: `node ${quoteForShell(loggerAbsPath)} cursor`,
79
+ type: "command",
80
+ timeout: CURSOR_HOOK_TIMEOUT_SECONDS,
81
+ };
82
+ }
83
+ function isOurCursorEntry(entry) {
84
+ if (!entry || typeof entry !== "object")
85
+ return false;
86
+ const cmd = entry.command;
87
+ return typeof cmd === "string" && OUR_COMMAND_PATTERN.test(cmd);
88
+ }
45
89
  // Atomic write: write to a sibling .tmp file then rename. POSIX rename is
46
90
  // atomic, so a crash mid-write leaves either the old file or the new file —
47
91
  // never a truncated mix. Avoids leaving the candidate's ~/.claude/settings.json
@@ -269,6 +313,117 @@ export function uninstallUserScopeCodexHook() {
269
313
  }
270
314
  catch { /* unwritable, give up silently */ }
271
315
  }
316
+ // ── Cursor hook ───────────────────────────────────────────────────
317
+ // Cursor's native agent runs its model traffic on the candidate's machine, so
318
+ // nothing in our stack sees it — but Cursor ships a first-party hooks API and
319
+ // `~/.cursor/hooks.json` is its user-scope config (cursor.com/docs/agent/hooks).
320
+ // The `beforeSubmitPrompt` event delivers the raw prompt on stdin, which is the
321
+ // only way to capture a native-Cursor candidate's prompts at all.
322
+ //
323
+ // Why this matters beyond "more data": with zero `ai_prompt` events the grader's
324
+ // Process dimension fails its evidence gate and is dropped from the score
325
+ // entirely, so a Cursor candidate is silently graded on a partial rubric.
326
+ //
327
+ // Cursor merges every config source it finds (enterprise / team / project /
328
+ // user) and runs all matching hooks, so ours coexists with the candidate's own.
329
+ /**
330
+ * Install a `beforeSubmitPrompt` hook in `~/.cursor/hooks.json` pointing at the
331
+ * absolute logger path. Idempotent.
332
+ *
333
+ * Pass `hookLoggerSrc` and this will make sure the logger actually exists at
334
+ * `USER_SCOPE_LOGGER` before writing a hook that references it. That copy
335
+ * normally happens in `installUserScopeClaudeHook` — its very first action — so
336
+ * if THAT throws (unwritable HOME) and init falls back to project scope, the
337
+ * Cursor hook would otherwise point at a file that was never created.
338
+ *
339
+ * A dead reference is no longer catastrophic (the logger's `ourCursorHookIsInstalled`
340
+ * resolves the path and refuses to stand down for a hook that cannot run, so the
341
+ * Claude invocation still captures). This just avoids writing one in the first
342
+ * place. Deliberately does NOT throw when the logger is absent and no source is
343
+ * given: Cursor capture failing is worth far less than `litmus init` failing, and
344
+ * the read-side check already prevents the both-paths-lost case.
345
+ *
346
+ * Returns `backedUpMalformed` so the caller can tell the candidate when we had to
347
+ * replace an unparseable config — that write is unavoidable (you cannot merge into
348
+ * JSON you cannot parse) but it must not be silent.
349
+ *
350
+ * Throws on a non-array `beforeSubmitPrompt` (rather than clobbering a config
351
+ * shape we don't understand) and on any filesystem failure, so the caller can
352
+ * treat Cursor tracking as best-effort the way it already does for Codex.
353
+ */
354
+ export function installUserScopeCursorHook(hookLoggerSrc) {
355
+ // Best effort: create the logger if we were given a source and it's absent.
356
+ if (!existsSync(USER_SCOPE_LOGGER) && hookLoggerSrc && existsSync(hookLoggerSrc)) {
357
+ try {
358
+ mkdirSync(LITMUS_DIR, { recursive: true });
359
+ atomicCopyFileSync(hookLoggerSrc, USER_SCOPE_LOGGER);
360
+ }
361
+ catch { /* the read-side check handles a missing logger */ }
362
+ }
363
+ mkdirSync(CURSOR_DIR, { recursive: true });
364
+ let backedUpMalformed = false;
365
+ let data = {};
366
+ if (existsSync(CURSOR_HOOKS)) {
367
+ try {
368
+ data = JSON.parse(readFileSync(CURSOR_HOOKS, "utf8"));
369
+ }
370
+ catch {
371
+ // Unparseable — possibly a genuinely broken file, possibly one caught
372
+ // mid-write. Either way their hooks can't be preserved, so keep a copy and
373
+ // report it upward rather than replacing their config silently.
374
+ try {
375
+ copyFileSync(CURSOR_HOOKS, CURSOR_HOOKS + ".litmus-backup");
376
+ backedUpMalformed = true;
377
+ }
378
+ catch { /* best effort — if even the backup fails, still don't fail init */ }
379
+ data = {};
380
+ }
381
+ }
382
+ // `version` is required by Cursor's schema. Preserve whatever the candidate
383
+ // already had — a future schema rev is theirs to own, not ours to downgrade.
384
+ if (data.version === undefined)
385
+ data.version = 1;
386
+ const hooks = (data.hooks ?? (data.hooks = {}));
387
+ const beforeSubmitPrompt = hooks.beforeSubmitPrompt;
388
+ if (beforeSubmitPrompt !== undefined && !Array.isArray(beforeSubmitPrompt)) {
389
+ throw new Error(`~/.cursor/hooks.json has a non-array beforeSubmitPrompt value (${typeof beforeSubmitPrompt}); ` +
390
+ `refusing to overwrite.`);
391
+ }
392
+ const existing = Array.isArray(beforeSubmitPrompt) ? beforeSubmitPrompt : [];
393
+ const others = existing.filter(e => !isOurCursorEntry(e));
394
+ hooks.beforeSubmitPrompt = [...others, buildCursorHookEntry(USER_SCOPE_LOGGER)];
395
+ atomicWriteFileSync(CURSOR_HOOKS, JSON.stringify(data, null, 2) + "\n");
396
+ return { backedUpMalformed };
397
+ }
398
+ export function uninstallUserScopeCursorHook() {
399
+ if (!existsSync(CURSOR_HOOKS))
400
+ return;
401
+ let data;
402
+ try {
403
+ data = JSON.parse(readFileSync(CURSOR_HOOKS, "utf8"));
404
+ }
405
+ catch {
406
+ return;
407
+ }
408
+ const entries = data.hooks?.beforeSubmitPrompt;
409
+ if (!Array.isArray(entries))
410
+ return;
411
+ const filtered = entries.filter(e => !isOurCursorEntry(e));
412
+ if (filtered.length === entries.length)
413
+ return;
414
+ if (filtered.length === 0) {
415
+ delete data.hooks.beforeSubmitPrompt;
416
+ if (Object.keys(data.hooks).length === 0)
417
+ delete data.hooks;
418
+ }
419
+ else {
420
+ data.hooks.beforeSubmitPrompt = filtered;
421
+ }
422
+ try {
423
+ atomicWriteFileSync(CURSOR_HOOKS, JSON.stringify(data, null, 2) + "\n");
424
+ }
425
+ catch { /* unwritable, give up silently */ }
426
+ }
272
427
  // ── Active-assessments registry ───────────────────────────────────
273
428
  // Tracks which assessment directories are currently active so the hook-logger
274
429
  // can capture even when Claude Code / Codex / Copilot CLI fire from a cwd
@@ -1 +1 @@
1
- {"version":3,"file":"ai-tracking.js","sourceRoot":"","sources":["../../src/lib/ai-tracking.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ai-tracking.js","sourceRoot":"","sources":["../../src/lib/ai-tracking.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
  /**
3
3
  * Litmus AI prompt logger.
4
- * Universal hook script invoked by Claude Code, GitHub Copilot CLI, and OpenAI Codex CLI.
4
+ * Universal hook script invoked by Claude Code, GitHub Copilot CLI, OpenAI Codex
5
+ * CLI, and Cursor.
5
6
  *
6
7
  * Usage:
7
8
  * node hook-logger.cjs <tool>
@@ -10,11 +11,18 @@
10
11
  * - Claude Code (UserPromptSubmit): stdin JSON with session_id, prompt content
11
12
  * - Copilot CLI (userPromptSubmitted): { timestamp, cwd, prompt }
12
13
  * - Codex CLI: experimental hooks support (format TBD)
14
+ * - Cursor (beforeSubmitPrompt): { conversation_id, generation_id, prompt, ... }
15
+ *
16
+ * Cursor is the only one that expects something back on stdout — see
17
+ * `emitCursorVerdictIfNeeded`. For every other tool stdout MUST stay empty:
18
+ * Claude Code injects it into the candidate's prompt as context.
13
19
  *
14
20
  * Normalizes to: { ts, type: "ai_prompt", tool, prompt, sessionId? }
15
21
  * Appends to .litmus/activity.jsonl — the same file the watcher uses,
16
22
  * so prompts flow through the existing analysis pipeline.
17
- * Also uploads the event to the server (fire-and-forget) for real-time backup.
23
+ * Also uploads the event to /cli/activity so it reaches candidate_activity_logs.
24
+ * That upload is AWAITED (bounded) — see uploadEvent for why an unawaited one
25
+ * silently stopped working.
18
26
  */
19
27
 
20
28
  const fs = require("fs")
@@ -49,15 +57,9 @@ function isAssessmentLitmusDir(litmusDir) {
49
57
  }
50
58
  }
51
59
 
52
- // Find the .litmus directory — walk up from cwd, then fall back to the
53
- // active-assessments registry that `litmus init` writes to ~/.litmus/.
54
- // The cwd walk-up handles the common case (candidate opens VS Code at the
55
- // assessment dir). The registry fallback handles the case where Claude Code,
56
- // Codex, or Copilot CLI fires from a cwd outside the assessment dir — e.g.
57
- // VS Code workspace opened at a parent dir, or the candidate ran `claude`
58
- // from their home dir.
59
- function findLitmusDir() {
60
- let dir = process.cwd()
60
+ // Walk up from `startDir` looking for an assessment .litmus dir.
61
+ function walkUpForLitmusDir(startDir) {
62
+ let dir = startDir
61
63
  for (let i = 0; i < 10; i++) {
62
64
  const candidate = path.join(dir, ".litmus")
63
65
  if (isAssessmentLitmusDir(candidate)) return candidate
@@ -65,6 +67,27 @@ function findLitmusDir() {
65
67
  if (parent === dir) break
66
68
  dir = parent
67
69
  }
70
+ return null
71
+ }
72
+
73
+ // Find the .litmus directory — walk up from any workspace roots the tool told
74
+ // us about, then from cwd, then fall back to the active-assessments registry
75
+ // that `litmus init` writes to ~/.litmus/.
76
+ //
77
+ // `hintDirs` matters because not every tool runs the hook from the workspace.
78
+ // Verified against a real Cursor 3.13.25 session: Cursor invokes the hook with
79
+ // cwd = ~/.cursor and passes the actual workspace in `workspace_roots`. Without
80
+ // the hint the cwd walk-up can never match, and we'd silently fall through to
81
+ // the registry — which returns the FIRST active assessment, misattributing
82
+ // prompts whenever a candidate has more than one on the go.
83
+ function findLitmusDir(hintDirs = []) {
84
+ for (const hint of hintDirs) {
85
+ if (typeof hint !== "string" || !hint) continue
86
+ const found = walkUpForLitmusDir(hint)
87
+ if (found) return found
88
+ }
89
+ const fromCwd = walkUpForLitmusDir(process.cwd())
90
+ if (fromCwd) return fromCwd
68
91
  try {
69
92
  const home = os.homedir()
70
93
  if (!home) return null
@@ -90,43 +113,99 @@ function readConfig(litmusDir) {
90
113
  }
91
114
  }
92
115
 
93
- // Fire-and-forget upload to /cli/activity.
94
- // Uses socket.unref() so Node exits immediately without waiting for the response
95
- // the OS TCP stack still flushes the outbound data after our process exits.
116
+ // Upload budget. The measured round trip to the backend is ~240ms (dns 15ms,
117
+ // tcp 39ms, TLS 154ms, complete 242ms against Railway), so 2s is generous while
118
+ // staying far inside every hook runner's allowance: Claude Code gives its
119
+ // UserPromptSubmit hook 5s, Cursor 10s, Codex 30s. Exceeding it is not worth
120
+ // delaying a candidate's prompt over — activity.jsonl already has the event and
121
+ // the submission zip carries it to the grader.
122
+ const UPLOAD_TIMEOUT_MS = 2000
123
+
124
+ /**
125
+ * POST the event to /cli/activity and WAIT for it to complete.
126
+ *
127
+ * This used to be fire-and-forget: it called `socket.unref()` so Node wouldn't
128
+ * hold the process open for the response. That only ever worked by accident —
129
+ * `readStdin`'s timeout timer was never cleared, which kept the event loop alive
130
+ * ~5s, comfortably longer than the upload. Clearing that timer (correctly, it was
131
+ * spending the entire hook budget doing nothing) dropped the process lifetime to
132
+ * ~26ms, which is BEFORE tcp connect at 39ms, let alone TLS at 154ms. Every
133
+ * hook-captured prompt silently stopped reaching candidate_activity_logs.
134
+ *
135
+ * That was invisible because grading still worked: the grader merges the in-zip
136
+ * activity.jsonl as well as the DB rows. But anything reading the DB alone went
137
+ * blank — including the report's own AI-prompts drawer, which queries
138
+ * candidateActivityLog and renders nothing when empty. Confirmed in the caroline
139
+ * DB: zero ai_prompt rows for a submission whose zip had three, while the
140
+ * long-lived watcher's uploads (heartbeat, env_detected) all landed.
141
+ *
142
+ * So we await it now, bounded. Resolves rather than rejects on every failure
143
+ * path: a telemetry upload must never fail a candidate's prompt. Both timers are
144
+ * cleared on settle — the bug above is exactly what an uncleared timer costs.
145
+ */
96
146
  function uploadEvent(config, event) {
97
- if (!config || !config.token || !config.backendUrl) return
147
+ if (!config || !config.token || !config.backendUrl) return Promise.resolve()
148
+
149
+ let url
150
+ try {
151
+ url = new URL(`${config.backendUrl}/cli/activity`)
152
+ } catch {
153
+ return Promise.resolve() // malformed backendUrl — nothing to do
154
+ }
98
155
 
99
156
  const body = JSON.stringify({ events: [event] })
100
- const url = new URL(`${config.backendUrl}/cli/activity`)
101
157
  const reqFn = url.protocol === "https:" ? https.request : http.request
102
158
 
103
- const req = reqFn(url, {
104
- method: "POST",
105
- headers: {
106
- "Content-Type": "application/json",
107
- "Content-Length": Buffer.byteLength(body),
108
- "Authorization": `Bearer ${config.token}`,
109
- },
110
- timeout: 5000,
159
+ return new Promise((resolve) => {
160
+ let settled = false
161
+ let guard = null
162
+ const done = () => {
163
+ if (settled) return
164
+ settled = true
165
+ if (guard) clearTimeout(guard)
166
+ resolve()
167
+ }
168
+
169
+ const req = reqFn(url, {
170
+ method: "POST",
171
+ headers: {
172
+ "Content-Type": "application/json",
173
+ "Content-Length": Buffer.byteLength(body),
174
+ "Authorization": `Bearer ${config.token}`,
175
+ },
176
+ timeout: UPLOAD_TIMEOUT_MS,
177
+ })
178
+ // Drain the response so the socket can close and the event loop empty.
179
+ req.on("response", (res) => { res.resume(); res.on("end", done); res.on("error", done) })
180
+ req.on("error", done) // network down, DNS, refused, destroyed
181
+ req.on("timeout", () => { req.destroy(); done() })
182
+ // Backstop in case none of the above fires (a socket wedged before connect).
183
+ guard = setTimeout(() => { try { req.destroy() } catch { /* already gone */ } done() }, UPLOAD_TIMEOUT_MS)
184
+ req.end(body)
111
185
  })
112
- req.on("error", () => {}) // Swallow — fire-and-forget
113
- req.on("timeout", () => { req.destroy() })
114
- req.on("socket", (socket) => { socket.unref() }) // Don't keep process alive for response
115
- req.end(body)
116
186
  }
117
187
 
118
188
  function readStdin() {
119
189
  return new Promise((resolve) => {
120
190
  let resolved = false
191
+ let timer = null
121
192
  const chunks = []
193
+ // clearTimeout is load-bearing, not tidiness. A pending timer keeps the
194
+ // Node event loop alive after main() has finished, so without this the
195
+ // process lingers for the FULL STDIN_TIMEOUT_MS on every single
196
+ // invocation even though stdin closed in milliseconds. That silently ate
197
+ // the entire 5s budget Claude Code allows its UserPromptSubmit hook.
198
+ const done = () => {
199
+ if (resolved) return
200
+ resolved = true
201
+ if (timer) clearTimeout(timer)
202
+ resolve(chunks.join(""))
203
+ }
122
204
  process.stdin.setEncoding("utf8")
123
205
  process.stdin.on("data", (chunk) => chunks.push(chunk))
124
- process.stdin.on("end", () => {
125
- if (!resolved) { resolved = true; resolve(chunks.join("")) }
126
- })
127
- setTimeout(() => {
128
- if (!resolved) { resolved = true; resolve(chunks.join("")) }
129
- }, STDIN_TIMEOUT_MS)
206
+ process.stdin.on("end", done)
207
+ process.stdin.on("error", done) // closed/absent stdin must not hang either
208
+ timer = setTimeout(done, STDIN_TIMEOUT_MS)
130
209
  })
131
210
  }
132
211
 
@@ -161,6 +240,25 @@ function extractPrompt(input, toolName) {
161
240
  sessionId: data.session_id || null,
162
241
  }
163
242
  }
243
+ case "cursor": {
244
+ // Cursor beforeSubmitPrompt. Payload captured verbatim from a real
245
+ // Cursor 3.13.25 agent session:
246
+ // { conversation_id, generation_id, model, model_id, model_params,
247
+ // composer_mode, prompt, attachments, session_id, hook_event_name,
248
+ // cursor_version, workspace_roots, user_email, transcript_path }
249
+ // session_id and conversation_id carry the same value; prefer session_id
250
+ // to match every other tool here. `workspace_roots` is load-bearing —
251
+ // Cursor runs the hook with cwd = ~/.cursor, so it is the only reliable
252
+ // pointer back to the assessment directory.
253
+ // Deliberately NOT captured: user_email (PII we have no use for) and
254
+ // transcript_path (points at Cursor's own on-disk agent transcript).
255
+ const prompt = data.prompt || null
256
+ return {
257
+ prompt: typeof prompt === "string" ? prompt : JSON.stringify(prompt),
258
+ sessionId: data.session_id || data.conversation_id || null,
259
+ workspaceRoots: Array.isArray(data.workspace_roots) ? data.workspace_roots : [],
260
+ }
261
+ }
164
262
  default: {
165
263
  // Best-effort: look for common field names
166
264
  const prompt = data.prompt || data.user_message || data.content || null
@@ -171,25 +269,151 @@ function extractPrompt(input, toolName) {
171
269
  }
172
270
  }
173
271
  } catch {
174
- return { prompt: null, sessionId: null }
272
+ return { prompt: null, sessionId: null, workspaceRoots: [] }
273
+ }
274
+ }
275
+
276
+ // Cursor requires a JSON verdict on stdout; non-JSON output trips a parse error
277
+ // in its hook runtime and the integration silently breaks. We are pure
278
+ // observation and never block a prompt, so the verdict is a constant.
279
+ //
280
+ // Emitted FIRST, before any capture work, so a slow filesystem, a missing
281
+ // assessment, or an outright crash can never delay or swallow it — the
282
+ // candidate's agent proceeds regardless of whether we captured anything.
283
+ //
284
+ // Gated on the RAW argv tool, never on `effectiveTool`: Claude Code injects
285
+ // hook stdout into the candidate's prompt as added context, and `effectiveTool`
286
+ // relabels claude -> cursor when Claude Code is driven from inside Cursor.
287
+ // Keying off the relabel would leak `{"continue":true}` into those prompts.
288
+ function emitCursorVerdictIfNeeded() {
289
+ if (tool !== "cursor") return
290
+ try {
291
+ process.stdout.write(JSON.stringify({ continue: true }))
292
+ } catch {
293
+ // Closed/broken stdout — Cursor treats absent output as "proceed" anyway.
294
+ }
295
+ }
296
+
297
+ // Cursor merges EVERY config source it finds and runs all matching hooks, and it
298
+ // translates Claude Code's `UserPromptSubmit` onto its own `beforeSubmitPrompt`.
299
+ // Since `litmus init` installs into both ~/.cursor/hooks.json and
300
+ // ~/.claude/settings.json, one Cursor prompt fires us TWICE. Confirmed in
301
+ // Cursor's own hooks log:
302
+ //
303
+ // Found 2 hook(s) to execute for step: beforeSubmitPrompt
304
+ // Executing hook 1/2 from user config (~/.cursor/hooks.json)
305
+ // Executing hook 2/2 from claude-user config (~/.claude/settings.json)
306
+ //
307
+ // Both invocations got the identical Cursor payload, so a single prompt produced
308
+ // two activity rows with the same text and timestamp, differing only in `tool`
309
+ // (`cursor` and `claude`). That double-counts prompts and misattributes half of
310
+ // them to Claude Code, which was never involved.
311
+ //
312
+ // Dedupe by identity rather than by inspecting the log: the two hooks run
313
+ // concurrently (observed writing at the same millisecond), so any
314
+ // read-then-write check would race. Instead the claude-registered invocation
315
+ // stands down when the payload is visibly Cursor's — `cursor_version` is present
316
+ // on every beforeSubmitPrompt payload and never on a Claude Code one — leaving
317
+ // the dedicated cursor hook as the single writer.
318
+ //
319
+ // Gated on our cursor hook actually being installed. If that install failed
320
+ // (unwritable ~/.cursor, refused config shape) nothing else would capture the
321
+ // prompt, and dropping it would be worse than a duplicate.
322
+ function isCursorPayload(data) {
323
+ if (!data || typeof data !== "object") return false
324
+ return typeof data.cursor_version === "string"
325
+ || data.hook_event_name === "beforeSubmitPrompt"
326
+ }
327
+
328
+ // Dedupe by CLAIMING the prompt, not by predicting whether the sibling hook will
329
+ // succeed. An earlier version inspected ~/.cursor/hooks.json and stood down if a
330
+ // Cursor hook looked installed, but that is guesswork about another process, and
331
+ // the failure is asymmetric: guess wrong and the prompt is lost entirely, where
332
+ // the worst case in the other direction is a duplicate row. A hook can be
333
+ // configured and still not run (logger missing, truncated, unreadable, or broken
334
+ // in a way no amount of statting reveals), so there is no check that makes the
335
+ // prediction sound.
336
+ //
337
+ // Instead, both invocations race to create a marker for this specific prompt.
338
+ // `openSync(..., "wx")` is O_CREAT|O_EXCL, so exactly one wins — no read-then-write
339
+ // window, which matters because the two hooks run concurrently (observed writing
340
+ // in the same millisecond). The winner writes the event; the loser exits. If the
341
+ // Cursor hook never runs at all, the Claude invocation simply wins uncontested.
342
+ //
343
+ // Keyed on `generation_id`, which is per prompt submission. NOT conversation_id,
344
+ // which is stable for a whole thread and would collapse every prompt in a
345
+ // conversation into one. If it is absent we do not dedupe at all — a duplicate is
346
+ // the acceptable failure, a dropped prompt is not.
347
+ const CLAIM_DIR = path.join(os.homedir() || os.tmpdir(), ".litmus", "claims")
348
+ const CLAIM_TTL_MS = 60 * 60 * 1000
349
+
350
+ // Keep the markers from accumulating in the candidate's HOME forever. Cheap: this
351
+ // directory only ever holds an hour of prompts.
352
+ function pruneClaims() {
353
+ try {
354
+ const cutoff = Date.now() - CLAIM_TTL_MS
355
+ for (const name of fs.readdirSync(CLAIM_DIR)) {
356
+ const p = path.join(CLAIM_DIR, name)
357
+ try {
358
+ if (fs.statSync(p).mtimeMs < cutoff) fs.unlinkSync(p)
359
+ } catch { /* raced with another invocation — fine */ }
360
+ }
361
+ } catch { /* no dir yet, or unreadable */ }
362
+ }
363
+
364
+ /** True when THIS invocation should write the event. */
365
+ function claimPrompt(generationId) {
366
+ if (typeof generationId !== "string" || !generationId) return true // can't dedupe → capture
367
+ const safe = generationId.replace(/[^A-Za-z0-9._-]/g, "_").slice(0, 128)
368
+ try {
369
+ fs.mkdirSync(CLAIM_DIR, { recursive: true })
370
+ pruneClaims()
371
+ fs.closeSync(fs.openSync(path.join(CLAIM_DIR, safe), "wx"))
372
+ return true
373
+ } catch (e) {
374
+ if (e && e.code === "EEXIST") return false // sibling already has it
375
+ return true // unwritable claim dir → fail toward capture
175
376
  }
176
377
  }
177
378
 
178
379
  async function main() {
179
- const litmusDir = findLitmusDir()
180
- if (!litmusDir) return // Not in a Litmus assessment — silently exit
380
+ emitCursorVerdictIfNeeded()
181
381
 
382
+ // stdin is read BEFORE resolving the assessment dir: the payload is what
383
+ // tells us where the workspace actually is (see findLitmusDir's hintDirs).
182
384
  const raw = await readStdin()
183
385
  if (!raw.trim()) return
184
386
 
185
- // Detect Cursor firing Claude Code hooks Cursor sets CURSOR_TRACE_ID
186
- const effectiveTool = (tool === "claude" && process.env.CURSOR_TRACE_ID)
387
+ // Detect Cursor firing Claude Code hooks. CURSOR_TRACE_ID is checked for the
388
+ // real Claude-Code-inside-Cursor case (a Claude-shaped payload from Cursor's
389
+ // integrated terminal), but it is NOT set when Cursor's own hooks service
390
+ // spawns us — verified against a real session, where the compat-path event
391
+ // stayed labelled `claude`. The payload shape is the reliable signal.
392
+ let parsed = null
393
+ try { parsed = JSON.parse(raw) } catch { /* extractPrompt reports the failure */ }
394
+ const cursorShaped = isCursorPayload(parsed)
395
+
396
+ // The relabel is what makes the claim below label-safe: whichever invocation
397
+ // wins the race, a Cursor-shaped payload is recorded as tool="cursor", so the
398
+ // event never blames Claude Code for a prompt it had no part in.
399
+ const effectiveTool = (tool === "claude" && (cursorShaped || process.env.CURSOR_TRACE_ID))
187
400
  ? "cursor"
188
401
  : tool
189
402
 
190
- const { prompt, sessionId } = extractPrompt(raw, effectiveTool)
403
+ const { prompt, sessionId, workspaceRoots } = extractPrompt(raw, effectiveTool)
191
404
  if (!prompt) return
192
405
 
406
+ const litmusDir = findLitmusDir(workspaceRoots || [])
407
+ if (!litmusDir) return // Not in a Litmus assessment — silently exit
408
+
409
+ // Claim as LATE as possible — only once we know we have a prompt and somewhere
410
+ // to put it. Claiming earlier would let an invocation that then bails (no
411
+ // prompt, no assessment in scope) consume the claim and silence the sibling
412
+ // that would have written successfully.
413
+ if (cursorShaped && !claimPrompt(parsed && parsed.generation_id)) {
414
+ return // the sibling hook is writing this same prompt
415
+ }
416
+
193
417
  const truncated = prompt.length > MAX_PROMPT_LENGTH
194
418
  ? prompt.slice(0, MAX_PROMPT_LENGTH) + "...[truncated]"
195
419
  : prompt
@@ -210,12 +434,14 @@ async function main() {
210
434
  // Non-critical
211
435
  }
212
436
 
213
- // 2. Upload to server (fire-and-forget, for real-time backup)
437
+ // 2. Upload to the server so the event reaches candidate_activity_logs. Awaited
438
+ // (bounded by UPLOAD_TIMEOUT_MS) because the process now exits far too fast for
439
+ // an unawaited request to survive — see uploadEvent.
214
440
  const config = readConfig(litmusDir)
215
- uploadEvent(config, event)
441
+ await uploadEvent(config, event)
216
442
 
217
- // No explicit process.exit() — the event loop drains naturally.
218
- // The HTTP socket is unref'd so it won't keep the process alive.
443
+ // No explicit process.exit() — the event loop drains naturally once the upload
444
+ // has settled and its timers are cleared.
219
445
  }
220
446
 
221
447
  main().catch(() => process.exit(0))
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "litmus-cli",
3
- "version": "1.3.9",
3
+ "version": "1.3.10",
4
4
  "description": "CLI tool for Litmus engineering assessments",
5
5
  "license": "MIT",
6
6
  "author": "elenazhao",