litmus-cli 1.3.9 → 1.3.11

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,10 +1,12 @@
1
- import { existsSync, readFileSync, writeFileSync, renameSync, mkdirSync, copyFileSync, openSync, closeSync, unlinkSync, statSync, } from "fs";
1
+ import { existsSync, readFileSync, writeFileSync, renameSync, mkdirSync, copyFileSync, openSync, closeSync, unlinkSync, statSync, constants as fsConstants, } from "fs";
2
2
  import path from "path";
3
3
  import os from "os";
4
4
  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|copilot)\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,300 @@ 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
+ }
427
+ // ── GitHub Copilot hook ───────────────────────────────────────────
428
+ // One repo-scope file, `<assessment>/.github/hooks/litmus.json`, covers every
429
+ // Copilot surface: the `copilot` CLI binary, the cloud agent, VS Code Copilot
430
+ // Chat, and JetBrains. Verified live on VS Code 1.131 / Copilot Chat 0.59.0 —
431
+ // five agent-mode prompts captured verbatim and correctly labelled.
432
+ //
433
+ // Two things make this the right scope, both verified in VS Code core
434
+ // (workbench.desktop.main.js):
435
+ // - `chat.useHooks` defaults TRUE and its discovery glob is
436
+ // `**/.github/hooks/*.json`, so repo scope works with no candidate setup.
437
+ // - `chat.useClaudeHooks` — which is what would make Copilot read
438
+ // `~/.claude/settings.json` — defaults FALSE. So we do NOT get Copilot
439
+ // capture for free from the Claude hook, and must not assume we do.
440
+ // Both additionally require workspace trust, and both are `restricted` +
441
+ // `disallowConfigurationDefault`, so neither can be flipped from a workspace
442
+ // settings file. Repo scope is the only route that needs nothing from the
443
+ // candidate.
444
+ //
445
+ // Deliberately repo scope ONLY — no `~/.copilot/hooks/`. A fourth write into
446
+ // the candidate's home directory is exactly the over-capture surface ENG-953
447
+ // and ENG-1297 are about, and this file lives inside the assessment where the
448
+ // candidate can see it.
449
+ //
450
+ // Entry shape is the portable one: PascalCase key (Copilot CLI maps it onto
451
+ // `userPromptSubmitted` internally; VS Code uses it natively), `command`
452
+ // rather than `bash`/`powershell`, and `timeout` rather than `timeoutSec` —
453
+ // both aliases since CLI 1.0.2 and the only spelling VS Code understands. No
454
+ // `version` key: optional for the CLI since 1.0.5 and not part of VS Code's
455
+ // format at all. No `_litmus` sentinel, for the same reason Cursor gets none —
456
+ // the config is schema-validated and an unknown key risks rejecting the whole
457
+ // file, taking the candidate's other hooks with it. The command string is the
458
+ // identifier.
459
+ const COPILOT_HOOK_EVENT = "UserPromptSubmit";
460
+ const COPILOT_HOOK_TIMEOUT_SECONDS = 10;
461
+ export function copilotHooksFile(assessmentDir) {
462
+ return path.join(assessmentDir, ".github", "hooks", "litmus.json");
463
+ }
464
+ /**
465
+ * Copy `file` aside for safekeeping without ever clobbering an earlier rescue.
466
+ *
467
+ * A candidate can leave the config unparseable more than once — hand-edit it,
468
+ * re-run init, break it again, re-run init. An unconditional copy to a fixed
469
+ * `.litmus-backup` path means the SECOND rescue overwrites the first, and the
470
+ * first is the one holding their original pre-Litmus config. So the later, less
471
+ * valuable copy destroys the earlier, more valuable one.
472
+ *
473
+ * `COPYFILE_EXCL` makes each attempt fail rather than overwrite, so this is
474
+ * race-safe against a concurrent init rather than merely existsSync-guarded.
475
+ * Returns the path actually written so the caller can name it accurately.
476
+ */
477
+ function backupAside(file) {
478
+ for (let i = 0; i < 100; i++) {
479
+ const dest = i === 0 ? `${file}.litmus-backup` : `${file}.litmus-backup-${i}`;
480
+ try {
481
+ copyFileSync(file, dest, fsConstants.COPYFILE_EXCL);
482
+ return dest;
483
+ }
484
+ catch (err) {
485
+ if (err.code !== "EEXIST")
486
+ throw err;
487
+ }
488
+ }
489
+ throw new Error(`${file}: no free .litmus-backup path after 100 attempts`);
490
+ }
491
+ function buildCopilotHookEntry(loggerAbsPath, assessmentDir) {
492
+ // The assessment path is passed EXPLICITLY, not left to be discovered.
493
+ //
494
+ // VS Code Copilot Chat's hook payload has no `cwd` and no workspace roots, so
495
+ // the logger would otherwise fall back to a cwd walk-up (wrong whenever the
496
+ // editor process starts outside the assessment) or the active-assessments
497
+ // registry. The registry is not dependable here: `litmus init` deliberately
498
+ // removes the entry in project-scope mode, which silently dropped every Chat
499
+ // prompt for candidates whose HOME could not take the user-scope Claude hook.
500
+ // A repo-scope hook lives inside the assessment and knows its own path, so
501
+ // there is no reason to make it guess.
502
+ return {
503
+ type: "command",
504
+ command: `node ${quoteForShell(loggerAbsPath)} copilot ${quoteForShell(assessmentDir)}`,
505
+ timeout: COPILOT_HOOK_TIMEOUT_SECONDS,
506
+ };
507
+ }
508
+ function isOurCopilotEntry(entry) {
509
+ if (!entry || typeof entry !== "object")
510
+ return false;
511
+ const cmd = entry.command;
512
+ return typeof cmd === "string" && OUR_COMMAND_PATTERN.test(cmd);
513
+ }
514
+ /**
515
+ * Install a `UserPromptSubmit` hook in `<assessment>/.github/hooks/litmus.json`.
516
+ * Idempotent.
517
+ *
518
+ * `loggerAbsPath` must be absolute. The shipped version used a RELATIVE path
519
+ * (`node .litmus/hook-logger.cjs copilot`), which only resolves when the hook
520
+ * runner's cwd happens to be the assessment root — and VS Code Copilot Chat
521
+ * sends no cwd at all.
522
+ *
523
+ * Merges rather than overwrites: the previous implementation was an
524
+ * unconditional writeFileSync, so a candidate whose repo already had a
525
+ * `.github/hooks/litmus.json` lost it with no backup. Preserves their other
526
+ * events and any foreign entries under our own event, and keeps a `.litmus-backup`
527
+ * copy when the existing file cannot be parsed.
528
+ *
529
+ * Throws on a non-array value for our event rather than clobbering a shape we
530
+ * don't understand, and on any filesystem failure, so the caller can treat
531
+ * Copilot tracking as best-effort the way it already does for Codex and Cursor.
532
+ */
533
+ export function installRepoScopeCopilotHook(assessmentDir, loggerAbsPath) {
534
+ if (!path.isAbsolute(loggerAbsPath)) {
535
+ throw new Error(`installRepoScopeCopilotHook needs an absolute logger path, got: ${loggerAbsPath}`);
536
+ }
537
+ const hooksFile = copilotHooksFile(assessmentDir);
538
+ mkdirSync(path.dirname(hooksFile), { recursive: true });
539
+ let backedUpMalformed = false;
540
+ let backupPath;
541
+ let data = {};
542
+ if (existsSync(hooksFile)) {
543
+ try {
544
+ data = JSON.parse(readFileSync(hooksFile, "utf8"));
545
+ }
546
+ catch {
547
+ // Unparseable — we cannot merge into it, so the only options are "preserve
548
+ // a copy and replace" or "leave it alone". Deliberately NOT best-effort:
549
+ // if the copy fails we let it throw rather than replacing a file we could
550
+ // not preserve. Swallowing it would destroy the candidate's config
551
+ // permanently AND leave `backedUpMalformed` false, so init would print no
552
+ // warning — a silent data loss. Throwing costs only Copilot capture for
553
+ // this assessment, since the caller treats this install as best-effort.
554
+ backupPath = backupAside(hooksFile);
555
+ backedUpMalformed = true;
556
+ data = {};
557
+ }
558
+ }
559
+ if (!data.hooks || typeof data.hooks !== "object" || Array.isArray(data.hooks)) {
560
+ data.hooks = {};
561
+ }
562
+ const hooks = data.hooks;
563
+ const existingEvent = hooks[COPILOT_HOOK_EVENT];
564
+ if (existingEvent !== undefined && !Array.isArray(existingEvent)) {
565
+ throw new Error(`${hooksFile} has a non-array ${COPILOT_HOOK_EVENT} value (${typeof existingEvent}); refusing to overwrite.`);
566
+ }
567
+ const existing = Array.isArray(existingEvent) ? existingEvent : [];
568
+ const others = existing.filter(e => !isOurCopilotEntry(e));
569
+ hooks[COPILOT_HOOK_EVENT] = [...others, buildCopilotHookEntry(loggerAbsPath, assessmentDir)];
570
+ atomicWriteFileSync(hooksFile, JSON.stringify(data, null, 2) + "\n");
571
+ return { backedUpMalformed, backupPath };
572
+ }
573
+ /**
574
+ * Remove our entry from the assessment's Copilot hooks file.
575
+ *
576
+ * Usually moot — `litmus submit` deletes the whole assessment folder — but the
577
+ * walkthrough-handoff exit path does not, and a candidate may have pointed init
578
+ * at a directory they keep.
579
+ */
580
+ export function uninstallRepoScopeCopilotHook(assessmentDir) {
581
+ const hooksFile = copilotHooksFile(assessmentDir);
582
+ if (!existsSync(hooksFile))
583
+ return;
584
+ let data;
585
+ try {
586
+ data = JSON.parse(readFileSync(hooksFile, "utf8"));
587
+ }
588
+ catch {
589
+ return;
590
+ }
591
+ const entries = data.hooks?.[COPILOT_HOOK_EVENT];
592
+ if (!Array.isArray(entries))
593
+ return;
594
+ const filtered = entries.filter(e => !isOurCopilotEntry(e));
595
+ if (filtered.length === entries.length)
596
+ return;
597
+ if (filtered.length === 0) {
598
+ delete data.hooks[COPILOT_HOOK_EVENT];
599
+ if (Object.keys(data.hooks).length === 0)
600
+ delete data.hooks;
601
+ }
602
+ else {
603
+ data.hooks[COPILOT_HOOK_EVENT] = filtered;
604
+ }
605
+ try {
606
+ atomicWriteFileSync(hooksFile, JSON.stringify(data, null, 2) + "\n");
607
+ }
608
+ catch { /* unwritable, give up silently */ }
609
+ }
272
610
  // ── Active-assessments registry ───────────────────────────────────
273
611
  // Tracks which assessment directories are currently active so the hook-logger
274
612
  // 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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"}