litmus-cli 1.3.6 → 1.3.8

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 (39) hide show
  1. package/README.md +21 -0
  2. package/dist/commands/init.d.ts.map +1 -1
  3. package/dist/commands/init.js +140 -43
  4. package/dist/commands/init.js.map +1 -1
  5. package/dist/commands/status.d.ts.map +1 -1
  6. package/dist/commands/status.js +97 -17
  7. package/dist/commands/status.js.map +1 -1
  8. package/dist/commands/submit.d.ts.map +1 -1
  9. package/dist/commands/submit.js +31 -5
  10. package/dist/commands/submit.js.map +1 -1
  11. package/dist/lib/ai-tracking.d.ts +50 -0
  12. package/dist/lib/ai-tracking.d.ts.map +1 -0
  13. package/dist/lib/ai-tracking.js +345 -0
  14. package/dist/lib/ai-tracking.js.map +1 -0
  15. package/dist/lib/api.d.ts.map +1 -1
  16. package/dist/lib/api.js +157 -31
  17. package/dist/lib/api.js.map +1 -1
  18. package/dist/lib/config.d.ts.map +1 -1
  19. package/dist/lib/config.js +14 -5
  20. package/dist/lib/config.js.map +1 -1
  21. package/dist/lib/errors.js +4 -4
  22. package/dist/lib/errors.js.map +1 -1
  23. package/dist/lib/extract.d.ts.map +1 -1
  24. package/dist/lib/extract.js +22 -3
  25. package/dist/lib/extract.js.map +1 -1
  26. package/dist/lib/format-time.d.ts +28 -0
  27. package/dist/lib/format-time.d.ts.map +1 -0
  28. package/dist/lib/format-time.js +68 -0
  29. package/dist/lib/format-time.js.map +1 -0
  30. package/dist/lib/hook-logger.cjs +50 -16
  31. package/dist/lib/tracker.d.ts.map +1 -1
  32. package/dist/lib/tracker.js +47 -16
  33. package/dist/lib/tracker.js.map +1 -1
  34. package/dist/lib/watcher.js +39 -31
  35. package/dist/lib/watcher.js.map +1 -1
  36. package/dist/lib/zip.d.ts.map +1 -1
  37. package/dist/lib/zip.js +35 -8
  38. package/dist/lib/zip.js.map +1 -1
  39. package/package.json +2 -2
package/README.md CHANGED
@@ -60,6 +60,27 @@ Use `litmus submit --yes` to skip the confirmation prompt.
60
60
 
61
61
  Your git commit history and file activity are included in the submission and used as part of the evaluation. Frequent, meaningful commits are recommended.
62
62
 
63
+ ## What gets sent to Litmus during your session
64
+
65
+ While you're working, the background tracker sends activity data to Litmus
66
+ in addition to the submission ZIP you upload at the end:
67
+
68
+ - File-change events, git commits, and AI-tool usage detected on your machine
69
+ (process list, network endpoints) — every few seconds while you work.
70
+ - Captured AI prompts from Claude Code, Codex CLI, and Copilot CLI when those
71
+ tools fire `UserPromptSubmit` hooks. Copilot Chat (VS Code side panel) is
72
+ not hookable and is not captured.
73
+ - A periodic codebase snapshot (every five minutes) so the optional
74
+ live-interview agent has up-to-date context. Snapshots are capped at 2 MB
75
+ total and skip binaries, dotfiles (including `.env`), lockfiles,
76
+ `node_modules`/build directories, and obvious credential filenames
77
+ (`secrets.*`, `credentials.*`, `*.pem`, `*.key`, `id_rsa`, etc.). If you
78
+ have sensitive material in a non-standard filename, move it out of the
79
+ assessment directory before working.
80
+
81
+ You can confirm what's installed and what's being captured at any point with
82
+ `litmus status`.
83
+
63
84
  ## Requirements
64
85
 
65
86
  - Node.js 18+
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAiBA,wBAAsB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAmO1D"}
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,CAmP1D"}
@@ -12,6 +12,8 @@ import { startTracker } from "../lib/tracker.js";
12
12
  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
+ import { formatDeadlinePT } from "../lib/format-time.js";
16
+ import { installUserScopeClaudeHook, installUserScopeCodexHook, addActiveAssessment } from "../lib/ai-tracking.js";
15
17
  import { execSync } from "child_process";
16
18
  import { fileURLToPath } from "url";
17
19
  export async function runInit(token) {
@@ -44,7 +46,7 @@ export async function runInit(token) {
44
46
  if (metadata.deadline) {
45
47
  const deadline = new Date(metadata.deadline);
46
48
  const hoursLeft = Math.max(0, Math.floor((deadline.getTime() - Date.now()) / (1000 * 60 * 60)));
47
- const deadlineStr = deadline.toLocaleString();
49
+ const deadlineStr = formatDeadlinePT(deadline);
48
50
  if (hoursLeft < 24) {
49
51
  warn(`Deadline in ${hoursLeft} hours (${deadlineStr})`);
50
52
  }
@@ -145,13 +147,29 @@ export async function runInit(token) {
145
147
  // tracking setup failed" to the reviewer instead of just reporting
146
148
  // zero prompts.
147
149
  try {
148
- setupAiTracking(targetDir);
150
+ const result = setupAiTracking(targetDir);
151
+ if (result.mode === "project") {
152
+ // User-scope install failed (sandboxed HOME, permissions, etc.). The
153
+ // project-scope file still fires on its own — per current Claude Code
154
+ // docs there's no approval gate at either scope — but capture is gated
155
+ // on the candidate's Claude Code cwd being inside the assessment dir,
156
+ // since the project-scope hook can't use the active-assessments
157
+ // registry fallback (it references a relative logger path).
158
+ console.log();
159
+ console.log(chalk.yellow("AI prompt tracking installed at project scope (user-scope install failed)."));
160
+ console.log(chalk.dim(" Capture only works when Claude Code is run from inside the assessment directory."));
161
+ }
162
+ if (result.codexInstalled) {
163
+ // Codex enforces a one-time trust prompt the first time the hook fires.
164
+ // Surface it so the candidate isn't surprised.
165
+ console.log(chalk.dim(" If you use Codex, accept its one-time trust prompt on first prompt to enable capture."));
166
+ }
149
167
  }
150
168
  catch (err) {
151
169
  const message = err instanceof Error ? err.message : String(err);
152
170
  console.log();
153
- console.log(chalk.yellow("AI prompt tracking setup failed:"), message);
154
- console.log(chalk.dim(" Assessment will still work, but Claude Code / Copilot CLI prompts won't be captured."));
171
+ console.log(chalk.yellow("AI prompt tracking setup failed:"), message);
172
+ console.log(chalk.dim(" Assessment will still work, but Claude Code / Copilot CLI prompts won't be captured."));
155
173
  try {
156
174
  const litmusDir = path.join(targetDir, ".litmus");
157
175
  mkdirSync(litmusDir, { recursive: true });
@@ -219,65 +237,70 @@ export async function runInit(token) {
219
237
  console.log();
220
238
  if (metadata.deadline) {
221
239
  const deadline = new Date(metadata.deadline);
222
- console.log(chalk.dim(` Deadline: ${deadline.toLocaleString()}`));
240
+ console.log(chalk.dim(` Deadline: ${formatDeadlinePT(deadline)}`));
223
241
  console.log();
224
242
  }
225
243
  }
226
244
  // ── AI prompt tracking setup ────────────────────────────────────
227
245
  /**
228
- * Set up AI prompt tracking for Claude Code, GitHub Copilot CLI, and OpenAI Codex CLI.
229
- * Writes:
230
- * - Hook configs for each tool to log prompts to .litmus/activity.jsonl
231
- * - Copies hook-logger.cjs into .litmus/ for self-contained execution
246
+ * Set up AI prompt tracking for Claude Code, OpenAI Codex CLI, and GitHub
247
+ * Copilot CLI.
248
+ *
249
+ * Claude Code (ENG-771): prefer a user-scope hook in ~/.claude/settings.json so
250
+ * the logger reference is an absolute path. With an absolute logger path, the
251
+ * hook can use the active-assessments registry as a fallback when the
252
+ * candidate's Claude Code cwd is outside the assessment dir (the actual
253
+ * silent-capture bug). If user-scope install fails (sandboxed HOME, etc.) we
254
+ * fall back to a project-scope `.claude/settings.local.json` with a relative
255
+ * logger path — fires fine but only captures when Claude Code's cwd happens to
256
+ * be inside the assessment.
232
257
  *
233
- * Never overwrites existing files assessments may ship their own configs.
258
+ * Returns the install mode + Codex install status so the caller can surface the
259
+ * right follow-up message.
234
260
  */
235
261
  function setupAiTracking(targetDir) {
236
262
  const litmusDir = path.join(targetDir, ".litmus");
237
263
  mkdirSync(litmusDir, { recursive: true });
238
- // Copy hook-logger.cjs into .litmus/ (gitignored, included in submission ZIP)
239
264
  const __filename = fileURLToPath(import.meta.url);
240
265
  const __dirname = path.dirname(__filename);
241
266
  const hookLoggerSrc = path.join(__dirname, "..", "lib", "hook-logger.cjs");
242
- const hookLoggerDest = path.join(litmusDir, "hook-logger.cjs");
267
+ // Always keep a local copy of the logger inside .litmus/. It's part of the
268
+ // submission ZIP and is the path the project-scope fallback references.
243
269
  if (existsSync(hookLoggerSrc)) {
244
- copyFileSync(hookLoggerSrc, hookLoggerDest);
270
+ copyFileSync(hookLoggerSrc, path.join(litmusDir, "hook-logger.cjs"));
245
271
  }
246
- // Claude Code: .claude/settings.local.json — merge hooks into existing config
247
- const claudeDir = path.join(targetDir, ".claude");
248
- mkdirSync(claudeDir, { recursive: true });
249
- const claudeSettingsPath = path.join(claudeDir, "settings.local.json");
250
- const claudeHooks = {
251
- UserPromptSubmit: [{
252
- matcher: "",
253
- hooks: [{
254
- type: "command",
255
- command: "node .litmus/hook-logger.cjs claude",
256
- timeout: 5,
257
- }],
258
- }],
259
- };
260
- if (existsSync(claudeSettingsPath)) {
261
- try {
262
- const existing = JSON.parse(readFileSync(claudeSettingsPath, "utf8"));
263
- existing.hooks = { ...existing.hooks, ...claudeHooks };
264
- writeFileSync(claudeSettingsPath, JSON.stringify(existing, null, 2) + "\n");
265
- }
266
- catch {
267
- // Malformed JSON — overwrite
268
- writeFileSync(claudeSettingsPath, JSON.stringify({ hooks: claudeHooks }, null, 2) + "\n");
269
- }
272
+ // Claude Code: prefer user-scope.
273
+ let mode = "user";
274
+ try {
275
+ if (!existsSync(hookLoggerSrc))
276
+ throw new Error("hook-logger.cjs missing from CLI build");
277
+ installUserScopeClaudeHook(hookLoggerSrc);
270
278
  }
271
- else {
272
- writeFileSync(claudeSettingsPath, JSON.stringify({ hooks: claudeHooks }, null, 2) + "\n");
279
+ catch {
280
+ mode = "project";
281
+ writeProjectScopeClaudeHook(targetDir, litmusDir);
273
282
  }
274
- // GitHub Copilot CLI: .github/hooks/litmus.json (separate file — won't conflict)
283
+ // Codex CLI: install user-scope hook at ~/.codex/hooks.json. Per the openai/codex
284
+ // hooks reference, this is the canonical location and event name is `UserPromptSubmit`.
285
+ // Codex enforces a one-time trust prompt on first use — out of our hands, surfaced
286
+ // by Codex itself. Failure here is non-fatal: candidates not using Codex are unaffected.
287
+ let codexInstalled = false;
288
+ try {
289
+ installUserScopeCodexHook();
290
+ codexInstalled = true;
291
+ }
292
+ catch {
293
+ // Couldn't write ~/.codex/hooks.json — skip silently.
294
+ }
295
+ // GitHub Copilot CLI: .github/hooks/litmus.json (separate file — won't conflict).
296
+ // ENG-771 Bug 2: event name is `userPromptSubmit`, not `userPromptSubmitted`.
297
+ // The previous typo meant the Copilot CLI never recognized the hook.
275
298
  const ghHooksDir = path.join(targetDir, ".github", "hooks");
276
299
  mkdirSync(ghHooksDir, { recursive: true });
277
300
  writeFileSync(path.join(ghHooksDir, "litmus.json"), JSON.stringify({
278
301
  version: 1,
279
302
  hooks: {
280
- userPromptSubmitted: [{
303
+ userPromptSubmit: [{
281
304
  type: "command",
282
305
  bash: "node .litmus/hook-logger.cjs copilot",
283
306
  powershell: "node .litmus/hook-logger.cjs copilot",
@@ -285,7 +308,81 @@ function setupAiTracking(targetDir) {
285
308
  }],
286
309
  },
287
310
  }, null, 2) + "\n");
288
- // OpenAI Codex CLI: hooks are experimental with no stable project-level config format yet.
289
- // When the format stabilizes, add .codex/config.toml here.
311
+ // Register this assessment in ~/.litmus/active-assessments.json so the
312
+ // hook-logger can fall back to it when cwd walk-up fails (e.g. VS Code
313
+ // workspace opened above the assessment dir). Only meaningful in user-scope
314
+ // mode — the project-scope fallback writes a relative-path command that
315
+ // can't consult the registry. Skipping in project-scope mode prevents a
316
+ // dead entry that could mis-route a concurrent assessment's prompts.
317
+ if (mode === "user") {
318
+ try {
319
+ addActiveAssessment(targetDir);
320
+ }
321
+ catch { /* registry write failed, fall back to cwd-only capture */ }
322
+ }
323
+ return { mode, codexInstalled };
324
+ }
325
+ /**
326
+ * Project-scope fallback for Claude Code: writes .claude/settings.local.json
327
+ * referencing the absolute path to the in-assessment .litmus/hook-logger.cjs.
328
+ * Only used when the user-scope install in installUserScopeClaudeHook fails.
329
+ *
330
+ * The command uses the absolute logger path (resolved at init time) rather
331
+ * than a relative `node .litmus/hook-logger.cjs` so it works regardless of
332
+ * Claude Code's cwd inside the assessment. Capture still only fires when
333
+ * Claude Code's project root sees `.claude/settings.local.json`, but the
334
+ * relative-path failure mode (Claude Code's cwd in a subdir, `Cannot find
335
+ * module`) is gone.
336
+ *
337
+ * Preserves any pre-existing UserPromptSubmit entries the candidate had,
338
+ * the same way the user-scope install path does, instead of shallow-merging
339
+ * and clobbering them.
340
+ */
341
+ function writeProjectScopeClaudeHook(targetDir, litmusDir) {
342
+ const claudeDir = path.join(targetDir, ".claude");
343
+ mkdirSync(claudeDir, { recursive: true });
344
+ const claudeSettingsPath = path.join(claudeDir, "settings.local.json");
345
+ const loggerAbsPath = path.join(litmusDir, "hook-logger.cjs");
346
+ const ourEntry = {
347
+ matcher: "",
348
+ _litmus: 1,
349
+ hooks: [{
350
+ type: "command",
351
+ command: `node ${loggerAbsPath} claude`,
352
+ timeout: 5,
353
+ }],
354
+ };
355
+ const isOurs = (e) => {
356
+ if (!e || typeof e !== "object")
357
+ return false;
358
+ const obj = e;
359
+ if (obj._litmus)
360
+ return true;
361
+ const hooks = obj.hooks;
362
+ if (!Array.isArray(hooks))
363
+ return false;
364
+ return hooks.some((h) => {
365
+ const cmd = h?.command;
366
+ return typeof cmd === "string" && /[/\\]\.litmus[/\\]hook-logger\.cjs\s+claude\b/.test(cmd);
367
+ });
368
+ };
369
+ let data = {};
370
+ if (existsSync(claudeSettingsPath)) {
371
+ try {
372
+ data = JSON.parse(readFileSync(claudeSettingsPath, "utf8"));
373
+ }
374
+ catch {
375
+ try {
376
+ copyFileSync(claudeSettingsPath, claudeSettingsPath + ".litmus-backup");
377
+ }
378
+ catch { /* best effort */ }
379
+ data = {};
380
+ }
381
+ }
382
+ const hooks = (data.hooks ?? (data.hooks = {}));
383
+ const existing = Array.isArray(hooks.UserPromptSubmit) ? hooks.UserPromptSubmit : [];
384
+ const others = existing.filter(e => !isOurs(e));
385
+ hooks.UserPromptSubmit = [...others, ourEntry];
386
+ writeFileSync(claudeSettingsPath, JSON.stringify(data, null, 2) + "\n");
290
387
  }
291
388
  //# sourceMappingURL=init.js.map
@@ -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":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAOA,wBAAsB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAoH/C"}
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AASA,wBAAsB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CA0I/C"}
@@ -1,8 +1,10 @@
1
1
  import { existsSync, readFileSync, statSync, readdirSync } from "fs";
2
2
  import path from "path";
3
+ import os from "os";
3
4
  import chalk from "chalk";
4
5
  import { readConfig, findProjectRoot, getEffectiveDeadline } from "../lib/config.js";
5
6
  import { fatal, info, warn, setErrorContext } from "../lib/errors.js";
7
+ import { formatDeadlinePT, formatLocalDateTime } from "../lib/format-time.js";
6
8
  import { execSync } from "child_process";
7
9
  export async function runStatus() {
8
10
  const config = await readConfig();
@@ -25,31 +27,30 @@ export async function runStatus() {
25
27
  const elapsed = Date.now() - startedAt.getTime();
26
28
  const elapsedHours = Math.floor(elapsed / (1000 * 60 * 60));
27
29
  const elapsedMins = Math.floor((elapsed % (1000 * 60 * 60)) / (1000 * 60));
28
- info(` Started: ${startedAt.toLocaleString()} (${elapsedHours}h ${elapsedMins}m ago)`);
29
- // Deadline / time remaining
30
- if (config.deadline) {
31
- const deadline = new Date(config.deadline);
32
- const remaining = deadline.getTime() - Date.now();
30
+ info(` Started: ${formatLocalDateTime(startedAt)} (${elapsedHours}h ${elapsedMins}m ago)`);
31
+ // Time remaining: surface the effective deadline (the binding cutoff)
32
+ // first, so a candidate with a short time-limit on a long-window assessment
33
+ // doesn't read the wider window's number and assume they're safe. Show
34
+ // individual deadlines as context underneath.
35
+ const effectiveCutoff = getEffectiveDeadline(config);
36
+ if (effectiveCutoff !== null) {
37
+ const remaining = effectiveCutoff - Date.now();
38
+ const cutoffDate = new Date(effectiveCutoff);
33
39
  if (remaining <= 0) {
34
- console.log(chalk.red(` Deadline: PASSED (${deadline.toLocaleString()})`));
40
+ console.log(chalk.red(` Time remaining: PASSED (${formatDeadlinePT(cutoffDate)})`));
35
41
  }
36
42
  else {
37
43
  const remHours = Math.floor(remaining / (1000 * 60 * 60));
38
44
  const remMins = Math.floor((remaining % (1000 * 60 * 60)) / (1000 * 60));
39
- info(` Deadline: ${deadline.toLocaleString()} (${remHours}h ${remMins}m remaining)`);
45
+ info(` Time remaining: ${remHours}h ${remMins}m (cutoff ${formatDeadlinePT(cutoffDate)})`);
40
46
  }
41
47
  }
48
+ if (config.deadline) {
49
+ const deadline = new Date(config.deadline);
50
+ console.log(chalk.dim(` Deadline: ${formatDeadlinePT(deadline)}`));
51
+ }
42
52
  if (config.timeLimit) {
43
- const timeLimitMs = config.timeLimit * 60 * 1000;
44
- const used = Date.now() - startedAt.getTime();
45
- const remaining = timeLimitMs - used;
46
- if (remaining <= 0) {
47
- console.log(chalk.red(` Time limit: EXCEEDED (${config.timeLimit} minutes)`));
48
- }
49
- else {
50
- const remMins = Math.floor(remaining / (1000 * 60));
51
- info(` Time limit: ${config.timeLimit} min (${remMins} min remaining)`);
52
- }
53
+ console.log(chalk.dim(` Time limit: ${config.timeLimit} min from start`));
53
54
  }
54
55
  console.log();
55
56
  // Git stats
@@ -85,11 +86,37 @@ export async function runStatus() {
85
86
  info(` Tracker: ${trackerRunning ? "running" : "not running"}`);
86
87
  // Activity log stats
87
88
  const activityPath = path.join(projectRoot, ".litmus", "activity.jsonl");
89
+ let aiPromptCount = 0;
88
90
  if (existsSync(activityPath)) {
89
91
  try {
90
92
  const content = readFileSync(activityPath, "utf8");
91
93
  const lines = content.split("\n").filter(l => l.trim());
92
94
  info(` Activity events: ${lines.length}`);
95
+ for (const line of lines) {
96
+ try {
97
+ const event = JSON.parse(line);
98
+ if (event.type === "ai_prompt")
99
+ aiPromptCount++;
100
+ }
101
+ catch { /* ignore malformed lines */ }
102
+ }
103
+ }
104
+ catch { /* ignore */ }
105
+ }
106
+ // AI prompt tracking status — the natural debug surface for "why isn't my
107
+ // Claude usage being captured?". Reports: whether the user-scope hook is
108
+ // installed in ~/.claude/settings.json, whether this assessment is in the
109
+ // ~/.litmus/active-assessments.json registry, and the count of ai_prompt
110
+ // events written by the hook so far.
111
+ const aiTrackingMode = detectAiTrackingMode(projectRoot);
112
+ const registryStatus = detectActiveAssessmentStatus(projectRoot);
113
+ info(` AI prompt tracking: ${aiTrackingMode} (${registryStatus})`);
114
+ info(` AI prompts captured: ${aiPromptCount}`);
115
+ const setupFailedPath = path.join(projectRoot, ".litmus", "setup_failed.json");
116
+ if (existsSync(setupFailedPath)) {
117
+ try {
118
+ const marker = JSON.parse(readFileSync(setupFailedPath, "utf8"));
119
+ warn(` AI tracking setup failed at init: ${marker.error ?? "unknown"}`);
93
120
  }
94
121
  catch { /* ignore */ }
95
122
  }
@@ -108,6 +135,59 @@ export async function runStatus() {
108
135
  console.log(` ${chalk.cyan("litmus submit")}`);
109
136
  console.log();
110
137
  }
138
+ function detectAiTrackingMode(projectRoot) {
139
+ // User-scope: ~/.claude/settings.json has an entry pointing at our absolute
140
+ // logger path. Project-scope fallback: .claude/settings.local.json inside
141
+ // the assessment dir has the same shape with a relative or absolute path.
142
+ const userSettings = path.join(os.homedir(), ".claude", "settings.json");
143
+ const projectSettings = path.join(projectRoot, ".claude", "settings.local.json");
144
+ const PATTERN = /[/\\]\.litmus[/\\]hook-logger\.cjs\s+(claude|codex)\b/;
145
+ const fileHasOurHook = (file) => {
146
+ if (!existsSync(file))
147
+ return false;
148
+ try {
149
+ const data = JSON.parse(readFileSync(file, "utf8"));
150
+ const entries = data?.hooks?.UserPromptSubmit;
151
+ if (!Array.isArray(entries))
152
+ return false;
153
+ return entries.some((e) => {
154
+ if (!e || typeof e !== "object")
155
+ return false;
156
+ const obj = e;
157
+ if (obj._litmus)
158
+ return true;
159
+ const hooks = obj.hooks;
160
+ if (!Array.isArray(hooks))
161
+ return false;
162
+ return hooks.some((h) => {
163
+ const cmd = h?.command;
164
+ return typeof cmd === "string" && PATTERN.test(cmd);
165
+ });
166
+ });
167
+ }
168
+ catch {
169
+ return false;
170
+ }
171
+ };
172
+ if (fileHasOurHook(userSettings))
173
+ return "user-scope";
174
+ if (fileHasOurHook(projectSettings))
175
+ return "project-scope";
176
+ return "not installed";
177
+ }
178
+ function detectActiveAssessmentStatus(projectRoot) {
179
+ const registry = path.join(os.homedir(), ".litmus", "active-assessments.json");
180
+ if (!existsSync(registry))
181
+ return "not in active-assessments registry";
182
+ try {
183
+ const list = JSON.parse(readFileSync(registry, "utf8"));
184
+ if (Array.isArray(list) && list.includes(projectRoot)) {
185
+ return "registered for cwd-fallback capture";
186
+ }
187
+ }
188
+ catch { /* ignore malformed registry */ }
189
+ return "not in active-assessments registry";
190
+ }
111
191
  function estimateSubmissionSize(projectRoot) {
112
192
  let fileCount = 0;
113
193
  let totalBytes = 0;
@@ -1 +1 @@
1
- {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"submit.d.ts","sourceRoot":"","sources":["../../src/commands/submit.ts"],"names":[],"mappings":"AAYA,wBAAsB,SAAS,CAAC,IAAI,EAAE;IAAE,GAAG,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAiRtE"}
1
+ {"version":3,"file":"submit.d.ts","sourceRoot":"","sources":["../../src/commands/submit.ts"],"names":[],"mappings":"AAcA,wBAAsB,SAAS,CAAC,IAAI,EAAE;IAAE,GAAG,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA4RtE"}
@@ -9,6 +9,8 @@ import { readConfig, findProjectRoot, getEffectiveDeadline } from "../lib/config
9
9
  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
+ import { formatDeadlinePT } from "../lib/format-time.js";
13
+ import { uninstallUserScopeClaudeHook, uninstallUserScopeCodexHook, removeActiveAssessment } from "../lib/ai-tracking.js";
12
14
  export async function runSubmit(opts) {
13
15
  // Step 1: Read config
14
16
  const config = await readConfig();
@@ -25,7 +27,7 @@ export async function runSubmit(opts) {
25
27
  // 5-minute grace window: covers auto-submit process spawn overhead and
26
28
  // gives candidates time to run `litmus submit` manually if auto-submit failed.
27
29
  if (now.getTime() > effectiveDeadline + 5 * 60000) {
28
- fatal(`The submission deadline passed at ${new Date(effectiveDeadline).toLocaleString()}.`, `Contact founders@litmushiring.com if you believe this is a mistake.`, { severity: "warning" });
30
+ fatal(`The submission deadline passed at ${formatDeadlinePT(new Date(effectiveDeadline))}.`, `Contact support@litmushiring.com if you believe this is a mistake.`, { severity: "warning" });
29
31
  }
30
32
  }
31
33
  // Step 3: Find the project root (where .litmus/config.json lives)
@@ -40,7 +42,7 @@ export async function runSubmit(opts) {
40
42
  catch (err) {
41
43
  zipSpinner.fail("Failed to create submission archive");
42
44
  const msg = err instanceof Error ? err.message : String(err);
43
- fatal(msg, `Contact founders@litmushiring.com for additional assistance.`);
45
+ fatal(msg, `Contact support@litmushiring.com for additional assistance.`);
44
46
  }
45
47
  const { zipPath, fileCount, uncompressedBytes, zipBytes, topDirs } = zipResult;
46
48
  // Size guard: warn if ZIP is unexpectedly large
@@ -81,7 +83,7 @@ export async function runSubmit(opts) {
81
83
  // still blocked client-side past the time-limit; this just makes the
82
84
  // displayed bounds match status / init.
83
85
  if (config.deadline) {
84
- info(` Deadline: ${new Date(config.deadline).toLocaleString()}`);
86
+ info(` Deadline: ${formatDeadlinePT(new Date(config.deadline))}`);
85
87
  }
86
88
  if (config.timeLimit && config.startedAt) {
87
89
  const timeLimitDeadlineMs = new Date(config.startedAt).getTime() + config.timeLimit * 60 * 1000;
@@ -184,8 +186,14 @@ export async function runSubmit(opts) {
184
186
  // terminal-side tracker has nothing left to observe. Signal it so it
185
187
  // doesn't keep heartbeating until the candidate manually kills the
186
188
  // session. Folder stays per ENG-719: the auto-submit cron may not have
187
- // run yet, so we don't assume the upload is durably saved.
189
+ // run yet, so we don't assume the upload is durably saved. The
190
+ // active-assessments registry entry and user-scope hooks ARE cleaned
191
+ // up regardless — leaving them would (a) leak a stale entry pointing
192
+ // at a folder the candidate may later delete themselves, and (b) keep
193
+ // the user-scope Claude/Codex hook firing on any cwd inside the folder
194
+ // for the rest of the candidate's machine's lifetime.
188
195
  stopTracker(projectRoot, config.token);
196
+ releaseAiTrackingForAssessment(projectRoot);
189
197
  reportSuccess("submit_walkthrough_handoff", rawError);
190
198
  return;
191
199
  }
@@ -238,6 +246,11 @@ export async function runSubmit(opts) {
238
246
  // active so any work in the meantime is still observed).
239
247
  if (isTerminalCode) {
240
248
  stopTracker(projectRoot, config.token);
249
+ // Assessment is over — release the AI-tracking registry entry and
250
+ // gate-uninstall the user-scope hooks. Folder stays so the candidate
251
+ // can recover their code locally, but the hooks shouldn't keep firing
252
+ // against a frozen assessment dir indefinitely.
253
+ releaseAiTrackingForAssessment(projectRoot);
241
254
  }
242
255
  // Include server response details and ZIP diagnostics in the error report
243
256
  const zipDiag = `ZIP: ${zipSizeMb} MB (${fileCount} files, ${(uncompressedBytes / (1024 * 1024)).toFixed(1)} MB uncompressed)\nTop dirs: ${topDirs.slice(0, 5).map(d => `${d.dir} (${(d.bytes / (1024 * 1024)).toFixed(1)} MB)`).join(", ")}`;
@@ -282,7 +295,7 @@ function stopTracker(projectRoot, token) {
282
295
  // Write a sentinel file (.litmus/shutdown) as the primary cross-platform
283
296
  // mechanism — the watcher polls for it and flushes gracefully.
284
297
  // On Unix, SIGTERM is also sent as an accelerator (instant delivery vs 1s poll).
285
- // NOTE: The watcher polls for this file in watcher.cjs (search "sentinelPoll").
298
+ // NOTE: The watcher polls for this file in watcher.ts (search "sentinelPoll").
286
299
  const pidFile = path.join(projectRoot, ".litmus", "tracker.pid");
287
300
  const shutdownFile = path.join(projectRoot, ".litmus", "shutdown");
288
301
  try {
@@ -342,5 +355,18 @@ async function deleteAssessmentFolder(projectRoot, token, folderName) {
342
355
  catch {
343
356
  warn(`Could not delete assessment folder. You can manually remove: ${projectRoot}`);
344
357
  }
358
+ releaseAiTrackingForAssessment(projectRoot);
359
+ }
360
+ // ENG-771: remove this assessment from the active-assessments registry and,
361
+ // when no other Litmus assessments remain, uninstall the user-scope hooks.
362
+ // Called from every submit exit path that retires an assessment — successful
363
+ // upload + folder delete, "Already submitted" no-op, walkthrough handoff,
364
+ // terminal server-side errors (Time limit exceeded etc). Idempotent.
365
+ function releaseAiTrackingForAssessment(projectRoot) {
366
+ const registryEmpty = removeActiveAssessment(projectRoot);
367
+ if (registryEmpty) {
368
+ uninstallUserScopeClaudeHook();
369
+ uninstallUserScopeCodexHook();
370
+ }
345
371
  }
346
372
  //# sourceMappingURL=submit.js.map