litmus-cli 1.0.15 → 1.0.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -23,6 +23,7 @@ litmus init <token>
23
23
  - Initializes a git repo with an initial commit
24
24
  - Starts background file tracking
25
25
  - **Your timer begins when you run this command**
26
+ - Your work is automatically submitted when the time limit is reached — if auto-submit fails, run `litmus submit` manually within 5 minutes of the deadline
26
27
 
27
28
  Your token is provided on the Litmus candidate portal when you open your assessment.
28
29
 
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAeA,wBAAsB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAyK1D"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAgBA,wBAAsB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA+M1D"}
@@ -1,4 +1,4 @@
1
- import { createWriteStream, unlinkSync } from "fs";
1
+ import { createWriteStream, unlinkSync, existsSync, readFileSync, writeFileSync, appendFileSync, mkdirSync, copyFileSync } from "fs";
2
2
  import { pipeline } from "stream/promises";
3
3
  import { Readable } from "stream";
4
4
  import path from "path";
@@ -12,6 +12,7 @@ import { startTracker } from "../lib/tracker.js";
12
12
  import { detectProject } from "../utils/detect-project.js";
13
13
  import { fatal, success, info, warn, setErrorContext, reportSuccess, FALLBACK_URL } from "../utils/errors.js";
14
14
  import { execSync } from "child_process";
15
+ import { fileURLToPath } from "url";
15
16
  export async function runInit(token) {
16
17
  const apiBase = process.env.LITMUS_API_URL || FALLBACK_URL;
17
18
  setErrorContext({ token, apiBase });
@@ -33,7 +34,6 @@ export async function runInit(token) {
33
34
  }
34
35
  // Check for naming collision
35
36
  const targetDir = path.resolve(process.cwd(), metadata.folderName);
36
- const { existsSync } = await import("fs");
37
37
  if (existsSync(targetDir)) {
38
38
  fatal(`Folder "${metadata.folderName}" already exists in this directory.`, `Delete or rename it, then re-run litmus init with your token.`, { severity: "warning" });
39
39
  }
@@ -91,20 +91,35 @@ export async function runInit(token) {
91
91
  }
92
92
  catch { /* cleanup */ }
93
93
  }
94
- // Step 4: Initialize git repo with initial commit
95
- try {
96
- execSync("git --version", { stdio: "pipe" });
97
- try {
98
- execSync("git init", { cwd: targetDir, stdio: "pipe" });
99
- execSync("git add -A", { cwd: targetDir, stdio: "pipe" });
100
- execSync("git commit -m \"Assessment: initial state\"", { cwd: targetDir, stdio: "pipe" });
101
- }
102
- catch {
103
- warn("Git is installed but failed to initialize. Check your git config (user.name / user.email).");
94
+ // Step 4: Ensure .litmus/ and project dependency directories are gitignored.
95
+ // Detect project type early so we can add the right entries before git add -A.
96
+ const projectEarly = detectProject(targetDir);
97
+ const depIgnoreEntries = {
98
+ node: ["node_modules/"],
99
+ python: ["venv/", ".venv/", "__pycache__/", "*.pyc"],
100
+ java: ["target/", "build/", ".gradle/"],
101
+ dotnet: ["bin/", "obj/"],
102
+ rust: ["target/"],
103
+ ruby: [".bundle/", "vendor/bundle/"],
104
+ php: ["vendor/"],
105
+ go: [],
106
+ unknown: [],
107
+ };
108
+ const gitignorePath = path.join(targetDir, ".gitignore");
109
+ const entriesToEnsure = [".litmus/", ".claude/settings.local.json", ...(depIgnoreEntries[projectEarly.type] ?? [])];
110
+ if (existsSync(gitignorePath)) {
111
+ const content = readFileSync(gitignorePath, "utf8");
112
+ const lines = content.split(/\r?\n/).map(l => l.trim());
113
+ const missing = entriesToEnsure.filter(e => {
114
+ const bare = e.replace(/\/$/, ""); // "venv/" → "venv"
115
+ return !lines.includes(bare) && !lines.includes(bare + "/");
116
+ });
117
+ if (missing.length > 0) {
118
+ appendFileSync(gitignorePath, "\n" + missing.join("\n") + "\n");
104
119
  }
105
120
  }
106
- catch {
107
- // git not installed — non-critical, analysis degrades gracefully
121
+ else {
122
+ writeFileSync(gitignorePath, entriesToEnsure.join("\n") + "\n");
108
123
  }
109
124
  // Step 5: Write .litmus/config.json
110
125
  await writeConfig(targetDir, {
@@ -119,8 +134,17 @@ export async function runInit(token) {
119
134
  apiBase,
120
135
  backendUrl: metadata.backendUrl,
121
136
  });
122
- // Step 6: Detect project type and optionally install
123
- const project = detectProject(targetDir);
137
+ // Step 6: Set up AI prompt tracking
138
+ // Write transparency notices (committed in initial state — tamper-evident)
139
+ // and hook configs for Claude Code, Copilot CLI, and Codex CLI.
140
+ try {
141
+ setupAiTracking(targetDir);
142
+ }
143
+ catch {
144
+ // Non-critical — assessment works fine without AI tracking
145
+ }
146
+ // Step 7: Install dependencies (project type already detected in step 4)
147
+ const project = projectEarly;
124
148
  if (project.installCommand) {
125
149
  console.log();
126
150
  const installSpinner = ora(`Running ${chalk.cyan(project.installCommand)}... (this may take a minute)`).start();
@@ -135,7 +159,22 @@ export async function runInit(token) {
135
159
  installSpinner.warn(`Couldn't run "${project.installCommand}" automatically. Run it manually inside ${metadata.folderName}/.`);
136
160
  }
137
161
  }
138
- // Step 7: Start tracker in background
162
+ // Step 8: Initialize git repo with initial commit
163
+ try {
164
+ execSync("git --version", { stdio: "pipe" });
165
+ try {
166
+ execSync("git init", { cwd: targetDir, stdio: "pipe" });
167
+ execSync("git add -A", { cwd: targetDir, stdio: "pipe" });
168
+ execSync("git commit -m \"Assessment: initial state\"", { cwd: targetDir, stdio: "pipe" });
169
+ }
170
+ catch {
171
+ warn("Git is installed but failed to initialize. Check your git config (user.name / user.email).");
172
+ }
173
+ }
174
+ catch {
175
+ // git not installed — non-critical, analysis degrades gracefully
176
+ }
177
+ // Step 9: Start tracker in background
139
178
  try {
140
179
  startTracker(targetDir);
141
180
  }
@@ -165,4 +204,69 @@ export async function runInit(token) {
165
204
  console.log();
166
205
  }
167
206
  }
207
+ // ── AI prompt tracking setup ────────────────────────────────────
208
+ /**
209
+ * Set up AI prompt tracking for Claude Code, GitHub Copilot CLI, and OpenAI Codex CLI.
210
+ * Writes:
211
+ * - Hook configs for each tool to log prompts to .litmus/activity.jsonl
212
+ * - Copies hook-logger.cjs into .litmus/ for self-contained execution
213
+ *
214
+ * Never overwrites existing files — assessments may ship their own configs.
215
+ */
216
+ function setupAiTracking(targetDir) {
217
+ const litmusDir = path.join(targetDir, ".litmus");
218
+ mkdirSync(litmusDir, { recursive: true });
219
+ // Copy hook-logger.cjs into .litmus/ (gitignored, included in submission ZIP)
220
+ const __filename = fileURLToPath(import.meta.url);
221
+ const __dirname = path.dirname(__filename);
222
+ const hookLoggerSrc = path.join(__dirname, "..", "lib", "hook-logger.cjs");
223
+ const hookLoggerDest = path.join(litmusDir, "hook-logger.cjs");
224
+ if (existsSync(hookLoggerSrc)) {
225
+ copyFileSync(hookLoggerSrc, hookLoggerDest);
226
+ }
227
+ // Claude Code: .claude/settings.local.json — merge hooks into existing config
228
+ const claudeDir = path.join(targetDir, ".claude");
229
+ mkdirSync(claudeDir, { recursive: true });
230
+ const claudeSettingsPath = path.join(claudeDir, "settings.local.json");
231
+ const claudeHooks = {
232
+ UserPromptSubmit: [{
233
+ matcher: "",
234
+ hooks: [{
235
+ type: "command",
236
+ command: "node .litmus/hook-logger.cjs claude",
237
+ timeout: 5,
238
+ }],
239
+ }],
240
+ };
241
+ if (existsSync(claudeSettingsPath)) {
242
+ try {
243
+ const existing = JSON.parse(readFileSync(claudeSettingsPath, "utf8"));
244
+ existing.hooks = { ...existing.hooks, ...claudeHooks };
245
+ writeFileSync(claudeSettingsPath, JSON.stringify(existing, null, 2) + "\n");
246
+ }
247
+ catch {
248
+ // Malformed JSON — overwrite
249
+ writeFileSync(claudeSettingsPath, JSON.stringify({ hooks: claudeHooks }, null, 2) + "\n");
250
+ }
251
+ }
252
+ else {
253
+ writeFileSync(claudeSettingsPath, JSON.stringify({ hooks: claudeHooks }, null, 2) + "\n");
254
+ }
255
+ // GitHub Copilot CLI: .github/hooks/litmus.json (separate file — won't conflict)
256
+ const ghHooksDir = path.join(targetDir, ".github", "hooks");
257
+ mkdirSync(ghHooksDir, { recursive: true });
258
+ writeFileSync(path.join(ghHooksDir, "litmus.json"), JSON.stringify({
259
+ version: 1,
260
+ hooks: {
261
+ userPromptSubmitted: [{
262
+ type: "command",
263
+ bash: "node .litmus/hook-logger.cjs copilot",
264
+ powershell: "node .litmus/hook-logger.cjs copilot",
265
+ timeoutSec: 5,
266
+ }],
267
+ },
268
+ }, null, 2) + "\n");
269
+ // OpenAI Codex CLI: hooks are experimental with no stable project-level config format yet.
270
+ // When the format stabilizes, add .codex/config.toml here.
271
+ }
168
272
  //# 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":"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,4BAA4B,CAAA;AAC1D,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,eAAe,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAC7G,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,YAAY,CAAA;IAC1D,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,QAAQ,CAAC,cAAc,EAAE,CAAA;QAC7C,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,6BAA6B,EAAE,GAAG,CAAC,gBAAgB,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;IACnH,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,OAAO;QACP,UAAU,EAAE,QAAQ,CAAC,UAAU;KAChC,CAAC,CAAA;IAEF,oCAAoC;IACpC,2EAA2E;IAC3E,gEAAgE;IAChE,IAAI,CAAC;QACH,eAAe,CAAC,SAAS,CAAC,CAAA;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,2DAA2D;IAC7D,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,QAAQ,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,CAAA;QAClE,OAAO,CAAC,GAAG,EAAE,CAAA;IACf,CAAC;AACH,CAAC;AAED,mEAAmE;AAEnE;;;;;;;GAOG;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,8EAA8E;IAC9E,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;IAC1E,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAA;IAC9D,IAAI,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QAC9B,YAAY,CAAC,aAAa,EAAE,cAAc,CAAC,CAAA;IAC7C,CAAC;IAED,8EAA8E;IAC9E,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,WAAW,GAAG;QAClB,gBAAgB,EAAE,CAAC;gBACjB,OAAO,EAAE,EAAE;gBACX,KAAK,EAAE,CAAC;wBACN,IAAI,EAAE,SAAS;wBACf,OAAO,EAAE,qCAAqC;wBAC9C,OAAO,EAAE,CAAC;qBACX,CAAC;aACH,CAAC;KACH,CAAA;IACD,IAAI,UAAU,CAAC,kBAAkB,CAAC,EAAE,CAAC;QACnC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC,CAAA;YACrE,QAAQ,CAAC,KAAK,GAAG,EAAE,GAAG,QAAQ,CAAC,KAAK,EAAE,GAAG,WAAW,EAAE,CAAA;YACtD,aAAa,CAAC,kBAAkB,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAA;QAC7E,CAAC;QAAC,MAAM,CAAC;YACP,6BAA6B;YAC7B,aAAa,CAAC,kBAAkB,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAA;QAC3F,CAAC;IACH,CAAC;SAAM,CAAC;QACN,aAAa,CAAC,kBAAkB,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAA;IAC3F,CAAC;IAED,iFAAiF;IACjF,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,mBAAmB,EAAE,CAAC;oBACpB,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,2FAA2F;IAC3F,2DAA2D;AAC7D,CAAC"}
@@ -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,CA+JtE"}
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,CA0KtE"}
@@ -1,4 +1,4 @@
1
- import { unlinkSync, readFileSync } from "fs";
1
+ import { unlinkSync, readFileSync, existsSync } from "fs";
2
2
  import { rm } from "fs/promises";
3
3
  import path from "path";
4
4
  import chalk from "chalk";
@@ -22,8 +22,9 @@ export async function runSubmit(opts) {
22
22
  const now = new Date();
23
23
  const effectiveDeadline = getEffectiveDeadline(config);
24
24
  if (effectiveDeadline !== null) {
25
- // 10-second tolerance for auto-submit timer + process spawn overhead
26
- if (now.getTime() > effectiveDeadline + 10000) {
25
+ // 5-minute grace window: covers auto-submit process spawn overhead and
26
+ // gives candidates time to run `litmus submit` manually if auto-submit failed.
27
+ if (now.getTime() > effectiveDeadline + 5 * 60000) {
27
28
  fatal(`The submission deadline passed at ${new Date(effectiveDeadline).toLocaleString()}.`, `Contact founders@litmus.build if you believe this is a mistake.`, { severity: "warning" });
28
29
  }
29
30
  }
@@ -58,10 +59,19 @@ export async function runSubmit(opts) {
58
59
  // Step 5: Show what's being submitted
59
60
  const zipSizeMb = (zipBytes / (1024 * 1024)).toFixed(1);
60
61
  const folderName = path.basename(projectRoot);
62
+ const hasActivityLog = existsSync(path.join(projectRoot, ".litmus", "activity.jsonl"));
61
63
  console.log();
62
64
  console.log(chalk.bold(` Submitting: ${config.assessmentName}`));
63
65
  info(` Upload size: ${zipSizeMb} MB (${fileCount} files)`);
64
- info(` Tracking log included`);
66
+ if (hasActivityLog) {
67
+ info(` Tracking log included`);
68
+ }
69
+ else {
70
+ warn(`No activity tracking log found (.litmus/activity.jsonl missing).`);
71
+ console.log(chalk.dim(" The background tracker may not have run. Activity metrics won't be available to reviewers."));
72
+ console.log(chalk.dim(" You can still submit — your code and git history will be evaluated."));
73
+ console.log();
74
+ }
65
75
  if (config.deadline) {
66
76
  info(` Deadline: ${new Date(config.deadline).toLocaleString()}`);
67
77
  }
@@ -122,7 +132,9 @@ export async function runSubmit(opts) {
122
132
  || rawError.includes("timed out")
123
133
  || rawError.includes("too large")
124
134
  || rawError.includes("deadline")
125
- || rawError.includes("Upload timed out");
135
+ || rawError.includes("Upload timed out")
136
+ || rawError.includes("Video walkthrough required")
137
+ || rawError.includes("video walkthrough");
126
138
  const candidateMessage = isKnownError
127
139
  ? rawError
128
140
  : "Submission failed. Please try again or submit manually through the candidate portal.";
@@ -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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"}
@@ -0,0 +1,180 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Litmus AI prompt logger.
4
+ * Universal hook script invoked by Claude Code, GitHub Copilot CLI, and OpenAI Codex CLI.
5
+ *
6
+ * Usage:
7
+ * node hook-logger.cjs <tool>
8
+ *
9
+ * Each tool pipes JSON on stdin when a user submits a prompt:
10
+ * - Claude Code (UserPromptSubmit): stdin JSON with session_id, prompt content
11
+ * - Copilot CLI (userPromptSubmitted): { timestamp, cwd, prompt }
12
+ * - Codex CLI: experimental hooks support (format TBD)
13
+ *
14
+ * Normalizes to: { ts, type: "ai_prompt", tool, prompt, sessionId? }
15
+ * Appends to .litmus/activity.jsonl — the same file the watcher uses,
16
+ * so prompts flow through the existing analysis pipeline.
17
+ * Also uploads the event to the server (fire-and-forget) for real-time backup.
18
+ */
19
+
20
+ const fs = require("fs")
21
+ const path = require("path")
22
+ const https = require("https")
23
+ const http = require("http")
24
+
25
+ // Keep under the server's MAX_EVENT_SIZE (2048 bytes) after JSON serialization.
26
+ // ~1800 chars of prompt + ~150 bytes of wrapper fields + JSON escaping = safely under 2KB.
27
+ const MAX_PROMPT_LENGTH = 1800
28
+
29
+ const tool = process.argv[2] || "unknown"
30
+
31
+ // Find the .litmus directory — walk up from cwd
32
+ function findLitmusDir() {
33
+ let dir = process.cwd()
34
+ for (let i = 0; i < 10; i++) {
35
+ const candidate = path.join(dir, ".litmus")
36
+ if (fs.existsSync(candidate)) return candidate
37
+ const parent = path.dirname(dir)
38
+ if (parent === dir) break
39
+ dir = parent
40
+ }
41
+ return null
42
+ }
43
+
44
+ // Read config.json for server upload credentials
45
+ function readConfig(litmusDir) {
46
+ try {
47
+ const configPath = path.join(litmusDir, "config.json")
48
+ return JSON.parse(fs.readFileSync(configPath, "utf8"))
49
+ } catch {
50
+ return null
51
+ }
52
+ }
53
+
54
+ // Fire-and-forget upload to /cli/activity.
55
+ // Uses socket.unref() so Node exits immediately without waiting for the response —
56
+ // the OS TCP stack still flushes the outbound data after our process exits.
57
+ function uploadEvent(config, event) {
58
+ if (!config || !config.token || !config.backendUrl) return
59
+
60
+ const body = JSON.stringify({ events: [event] })
61
+ const url = new URL(
62
+ `${config.backendUrl}/cli/activity?token=${encodeURIComponent(config.token)}`
63
+ )
64
+ const reqFn = url.protocol === "https:" ? https.request : http.request
65
+
66
+ const req = reqFn(url, {
67
+ method: "POST",
68
+ headers: { "Content-Type": "application/json", "Content-Length": Buffer.byteLength(body) },
69
+ timeout: 5000,
70
+ })
71
+ req.on("error", () => {}) // Swallow — fire-and-forget
72
+ req.on("timeout", () => { req.destroy() })
73
+ req.on("socket", (socket) => { socket.unref() }) // Don't keep process alive for response
74
+ req.end(body)
75
+ }
76
+
77
+ function readStdin() {
78
+ return new Promise((resolve) => {
79
+ let resolved = false
80
+ const chunks = []
81
+ process.stdin.setEncoding("utf8")
82
+ process.stdin.on("data", (chunk) => chunks.push(chunk))
83
+ process.stdin.on("end", () => {
84
+ if (!resolved) { resolved = true; resolve(chunks.join("")) }
85
+ })
86
+ // Safety timeout — stdin should arrive immediately from hook runners.
87
+ // Keep this short to avoid blocking the AI tool.
88
+ setTimeout(() => {
89
+ if (!resolved) { resolved = true; resolve(chunks.join("")) }
90
+ }, 300)
91
+ })
92
+ }
93
+
94
+ function extractPrompt(input, toolName) {
95
+ try {
96
+ const data = JSON.parse(input)
97
+
98
+ switch (toolName) {
99
+ case "claude": {
100
+ // Claude Code UserPromptSubmit: prompt may be in message.content or content field
101
+ const prompt = data.user_message
102
+ || data.prompt
103
+ || (data.message && data.message.content)
104
+ || null
105
+ return {
106
+ prompt: typeof prompt === "string" ? prompt : JSON.stringify(prompt),
107
+ sessionId: data.session_id || null,
108
+ }
109
+ }
110
+ case "copilot": {
111
+ // Copilot CLI userPromptSubmitted: { timestamp, cwd, prompt }
112
+ return {
113
+ prompt: data.prompt || null,
114
+ sessionId: null,
115
+ }
116
+ }
117
+ case "codex": {
118
+ // Codex CLI: experimental, extract what we can
119
+ const prompt = data.prompt
120
+ || data.user_message
121
+ || (data.message && data.message.content)
122
+ || null
123
+ return {
124
+ prompt: typeof prompt === "string" ? prompt : JSON.stringify(prompt),
125
+ sessionId: data.thread_id || null,
126
+ }
127
+ }
128
+ default: {
129
+ // Best-effort: look for common field names
130
+ const prompt = data.prompt || data.user_message || data.content || null
131
+ return {
132
+ prompt: typeof prompt === "string" ? prompt : JSON.stringify(prompt),
133
+ sessionId: data.session_id || null,
134
+ }
135
+ }
136
+ }
137
+ } catch {
138
+ return { prompt: null, sessionId: null }
139
+ }
140
+ }
141
+
142
+ async function main() {
143
+ const litmusDir = findLitmusDir()
144
+ if (!litmusDir) return // Not in a Litmus assessment — silently exit
145
+
146
+ const raw = await readStdin()
147
+ if (!raw.trim()) return
148
+
149
+ const { prompt, sessionId } = extractPrompt(raw, tool)
150
+ if (!prompt) return
151
+
152
+ const truncated = prompt.length > MAX_PROMPT_LENGTH
153
+ ? prompt.slice(0, MAX_PROMPT_LENGTH) + "...[truncated]"
154
+ : prompt
155
+
156
+ const event = {
157
+ ts: new Date().toISOString(),
158
+ type: "ai_prompt",
159
+ tool,
160
+ prompt: truncated,
161
+ }
162
+ if (sessionId) event.sessionId = sessionId
163
+
164
+ // 1. Append to activity.jsonl (for submission ZIP)
165
+ const logPath = path.join(litmusDir, "activity.jsonl")
166
+ try {
167
+ fs.appendFileSync(logPath, JSON.stringify(event) + "\n")
168
+ } catch {
169
+ // Non-critical
170
+ }
171
+
172
+ // 2. Upload to server (fire-and-forget, for real-time backup)
173
+ const config = readConfig(litmusDir)
174
+ uploadEvent(config, event)
175
+
176
+ // No explicit process.exit() — the event loop drains naturally.
177
+ // The HTTP socket is unref'd so it won't keep the process alive.
178
+ }
179
+
180
+ main().catch(() => process.exit(0))
@@ -160,6 +160,32 @@ function emitFileEvent(type, relPath) {
160
160
  emit(event)
161
161
  }
162
162
 
163
+ // ── Burst-edit detection (AI-driven multi-file edits) ────────────
164
+ const BURST_WINDOW_MS = 2000 // 2 seconds
165
+ const BURST_MIN_FILES = 3 // 3+ distinct files = burst
166
+ const recentEdits = [] // [{ file, ts }]
167
+
168
+ function checkBurstEdit(filename) {
169
+ const now = Date.now()
170
+ recentEdits.push({ file: filename, ts: now })
171
+ // Prune edits outside the window
172
+ while (recentEdits.length > 0 && now - recentEdits[0].ts > BURST_WINDOW_MS) {
173
+ recentEdits.shift()
174
+ }
175
+ // Count distinct files in the window
176
+ const distinctFiles = new Set(recentEdits.map((e) => e.file))
177
+ if (distinctFiles.size >= BURST_MIN_FILES) {
178
+ const files = [...distinctFiles]
179
+ emit({
180
+ ts: new Date().toISOString(),
181
+ type: "burst_edit",
182
+ fileCount: files.length,
183
+ files: files.slice(0, 10), // Cap at 10 filenames
184
+ })
185
+ recentEdits.length = 0 // Reset to avoid duplicate bursts
186
+ }
187
+ }
188
+
163
189
  // ── File system watcher (debounced) ──────────────────────────────
164
190
  process.on("uncaughtException", (err) => {
165
191
  process.stderr.write(`[watcher] uncaughtException: ${err.stack || err}\n`)
@@ -171,6 +197,9 @@ try {
171
197
  if (!filename) return
172
198
  if (shouldIgnore(filename)) return
173
199
 
200
+ // Check for burst edits on raw events (before debounce — needs real timing)
201
+ checkBurstEdit(filename)
202
+
174
203
  // Debounce per file: collapse multiple events within 500ms into one
175
204
  if (debounceTimers.has(filename)) {
176
205
  clearTimeout(debounceTimers.get(filename))
@@ -187,8 +216,9 @@ try {
187
216
 
188
217
  process.stderr.write("[watcher] file watcher started\n")
189
218
  } catch (err) {
190
- process.stderr.write(`[watcher] failed to start file watcher: ${err.stack || err}\n`)
191
- process.exit(1)
219
+ // fs.watch with recursive: true is not supported on Linux < Node 22.
220
+ // Continue without file watching — heartbeats and git commit polling still work.
221
+ process.stderr.write(`[watcher] file watching unavailable: ${err.message} (heartbeat + git tracking still active)\n`)
192
222
  }
193
223
 
194
224
  // ── Heartbeats ───────────────────────────────────────────────────
@@ -290,6 +320,8 @@ const AI_TOOL_PATTERNS = {
290
320
  claude: /\bclaude\b/,
291
321
  aider: /\baider\b/,
292
322
  codeium: /\bcodeium\b/,
323
+ codex: /\bcodex\b/,
324
+ copilot: /\bcopilot\b/,
293
325
  }
294
326
 
295
327
  function detectEnvironment() {
@@ -1 +1 @@
1
- {"version":3,"file":"zip.d.ts","sourceRoot":"","sources":["../../src/lib/zip.ts"],"names":[],"mappings":"AAgCA,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,iBAAiB,EAAE,MAAM,CAAA;IACzB,QAAQ,EAAE,MAAM,CAAA;IAChB,6DAA6D;IAC7D,OAAO,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;CAC1C;AAED;;;;;;;GAOG;AACH,wBAAsB,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CA+ChF"}
1
+ {"version":3,"file":"zip.d.ts","sourceRoot":"","sources":["../../src/lib/zip.ts"],"names":[],"mappings":"AAqCA,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,iBAAiB,EAAE,MAAM,CAAA;IACzB,QAAQ,EAAE,MAAM,CAAA;IAChB,6DAA6D;IAC7D,OAAO,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;CAC1C;AAED;;;;;;;GAOG;AACH,wBAAsB,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAwDhF"}
package/dist/lib/zip.js CHANGED
@@ -3,10 +3,10 @@ import path from "path";
3
3
  import os from "os";
4
4
  import fg from "fast-glob";
5
5
  import { Zip } from "zip-lib";
6
- // Directories always excluded from submissions.
7
6
  // NOTE: .git is intentionally NOT excluded — git history is included so the
8
7
  // analysis backend can run parse_git_history() on the submission.
9
- const ALWAYS_EXCLUDE = [
8
+ // Directories always excluded (generates dir/** and **/dir/** patterns).
9
+ const EXCLUDE_DIRS = [
10
10
  "node_modules",
11
11
  "__pycache__",
12
12
  "venv",
@@ -18,6 +18,9 @@ const ALWAYS_EXCLUDE = [
18
18
  "dist",
19
19
  ".gradle",
20
20
  ".idea",
21
+ ];
22
+ // Files and glob patterns always excluded (generates entry and **/entry patterns).
23
+ const EXCLUDE_FILES = [
21
24
  ".DS_Store",
22
25
  "*.pyc",
23
26
  "*.class",
@@ -48,10 +51,24 @@ export async function createSubmissionZip(projectDir) {
48
51
  followSymbolicLinks: false,
49
52
  ignore: ignoredGlobs,
50
53
  });
51
- // Always include activity log if it exists
52
- const activityPath = ".litmus/activity.jsonl";
53
- if (existsSync(path.join(projectDir, activityPath)) && !files.includes(activityPath)) {
54
- files.push(activityPath);
54
+ // Always include .litmus diagnostic files if they exist (hidden from reviewer file browser).
55
+ // Cap watcher.err at 256KB — it can grow large on repeated polling errors.
56
+ const WATCHER_ERR_MAX = 256 * 1024;
57
+ for (const litmusFile of [".litmus/activity.jsonl", ".litmus/watcher.err"]) {
58
+ const abs = path.join(projectDir, litmusFile);
59
+ if (!existsSync(abs) || files.includes(litmusFile))
60
+ continue;
61
+ if (litmusFile === ".litmus/watcher.err") {
62
+ try {
63
+ const size = statSync(abs).size;
64
+ if (size > WATCHER_ERR_MAX)
65
+ continue; // skip oversized error log
66
+ }
67
+ catch {
68
+ continue;
69
+ }
70
+ }
71
+ files.push(litmusFile);
55
72
  }
56
73
  // Measure uncompressed sizes and track per-directory totals
57
74
  let uncompressedBytes = 0;
@@ -79,15 +96,15 @@ export async function createSubmissionZip(projectDir) {
79
96
  }
80
97
  function buildIgnoreGlobs(projectDir) {
81
98
  const patterns = [];
82
- // Always-excluded dirs/patterns
83
- for (const excluded of ALWAYS_EXCLUDE) {
84
- if (excluded.startsWith("*")) {
85
- patterns.push(excluded);
86
- }
87
- else {
88
- patterns.push(`${excluded}/**`);
89
- patterns.push(`**/${excluded}/**`);
90
- }
99
+ // Always-excluded directories
100
+ for (const dir of EXCLUDE_DIRS) {
101
+ patterns.push(`${dir}/**`);
102
+ patterns.push(`**/${dir}/**`);
103
+ }
104
+ // Always-excluded files and globs
105
+ for (const file of EXCLUDE_FILES) {
106
+ patterns.push(file);
107
+ patterns.push(`**/${file}`);
91
108
  }
92
109
  // Basic .gitignore support
93
110
  const gitignorePath = path.join(projectDir, ".gitignore");
@@ -1 +1 @@
1
- {"version":3,"file":"zip.js","sourceRoot":"","sources":["../../src/lib/zip.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"zip.js","sourceRoot":"","sources":["../../src/lib/zip.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ //# sourceMappingURL=staging.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"staging.d.ts","sourceRoot":"","sources":["../src/staging.ts"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ // Staging entrypoint — points the CLI at the elena preview branch
4
+ process.env.LITMUS_API_URL = "https://elena.litmus.build";
5
+ import("./index.js");
6
+ //# sourceMappingURL=staging.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"staging.js","sourceRoot":"","sources":["../src/staging.ts"],"names":[],"mappings":";;AACA,kEAAkE;AAClE,OAAO,CAAC,GAAG,CAAC,cAAc,GAAG,4BAA4B,CAAC;AAC1D,MAAM,CAAC,YAAY,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,16 +1,17 @@
1
1
  {
2
2
  "name": "litmus-cli",
3
- "version": "1.0.15",
3
+ "version": "1.0.18",
4
4
  "description": "CLI tool for Litmus engineering assessments",
5
5
  "license": "MIT",
6
6
  "author": "elenazhao",
7
7
  "type": "module",
8
8
  "main": "dist/index.js",
9
9
  "bin": {
10
- "litmus": "dist/index.js"
10
+ "litmus": "dist/index.js",
11
+ "litmus-staging": "dist/staging.js"
11
12
  },
12
13
  "scripts": {
13
- "build": "tsc && cp src/lib/watcher.cjs dist/lib/watcher.cjs",
14
+ "build": "tsc && cp src/lib/watcher.cjs dist/lib/watcher.cjs && cp src/lib/hook-logger.cjs dist/lib/hook-logger.cjs",
14
15
  "dev": "tsc --watch",
15
16
  "start": "node dist/index.js",
16
17
  "prepublishOnly": "npm run build"