litmus-cli 1.4.22 → 1.4.25

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 (55) hide show
  1. package/README.md +30 -0
  2. package/dist/commands/connect.d.ts +231 -2
  3. package/dist/commands/connect.d.ts.map +1 -1
  4. package/dist/commands/connect.js +311 -12
  5. package/dist/commands/connect.js.map +1 -1
  6. package/dist/commands/doctor.d.ts.map +1 -1
  7. package/dist/commands/doctor.js +16 -1
  8. package/dist/commands/doctor.js.map +1 -1
  9. package/dist/commands/pause.d.ts +36 -0
  10. package/dist/commands/pause.d.ts.map +1 -0
  11. package/dist/commands/pause.js +110 -0
  12. package/dist/commands/pause.js.map +1 -0
  13. package/dist/commands/push.d.ts +7 -1
  14. package/dist/commands/push.d.ts.map +1 -1
  15. package/dist/commands/push.js +40 -1
  16. package/dist/commands/push.js.map +1 -1
  17. package/dist/commands/setup-check.d.ts +19 -0
  18. package/dist/commands/setup-check.d.ts.map +1 -0
  19. package/dist/commands/setup-check.js +48 -0
  20. package/dist/commands/setup-check.js.map +1 -0
  21. package/dist/commands/status.d.ts.map +1 -1
  22. package/dist/commands/status.js +6 -1
  23. package/dist/commands/status.js.map +1 -1
  24. package/dist/commands/submit.d.ts.map +1 -1
  25. package/dist/commands/submit.js +18 -0
  26. package/dist/commands/submit.js.map +1 -1
  27. package/dist/index.js +38 -1
  28. package/dist/index.js.map +1 -1
  29. package/dist/lib/api.d.ts +27 -0
  30. package/dist/lib/api.d.ts.map +1 -1
  31. package/dist/lib/api.js +45 -0
  32. package/dist/lib/api.js.map +1 -1
  33. package/dist/lib/environment-checks.d.ts +123 -0
  34. package/dist/lib/environment-checks.d.ts.map +1 -0
  35. package/dist/lib/environment-checks.js +324 -0
  36. package/dist/lib/environment-checks.js.map +1 -0
  37. package/dist/lib/git-bundle.d.ts +19 -0
  38. package/dist/lib/git-bundle.d.ts.map +1 -0
  39. package/dist/lib/git-bundle.js +71 -0
  40. package/dist/lib/git-bundle.js.map +1 -0
  41. package/dist/lib/session-end.d.ts +111 -0
  42. package/dist/lib/session-end.d.ts.map +1 -0
  43. package/dist/lib/session-end.js +126 -0
  44. package/dist/lib/session-end.js.map +1 -0
  45. package/dist/lib/submit-route.d.ts +68 -0
  46. package/dist/lib/submit-route.d.ts.map +1 -0
  47. package/dist/lib/submit-route.js +73 -0
  48. package/dist/lib/submit-route.js.map +1 -0
  49. package/dist/lib/watcher.js +23 -2
  50. package/dist/lib/watcher.js.map +1 -1
  51. package/dist/lib/workspace-token.d.ts +69 -0
  52. package/dist/lib/workspace-token.d.ts.map +1 -0
  53. package/dist/lib/workspace-token.js +93 -0
  54. package/dist/lib/workspace-token.js.map +1 -0
  55. package/package.json +1 -1
@@ -2,19 +2,21 @@ import os from "os";
2
2
  import path from "path";
3
3
  import readline from "readline";
4
4
  import { existsSync, mkdirSync, readFileSync, writeFileSync } from "fs";
5
- import { execFileSync, spawn } from "child_process";
5
+ import { execFileSync, spawn, spawnSync } from "child_process";
6
6
  import chalk from "chalk";
7
7
  import ora from "ora";
8
8
  import { fetchInitMetadata, startWorkspace, getConnection, fetchEditorChatConfig, ServerError, hintForError } from "../lib/api.js";
9
9
  import { applyEditorChatConfig } from "../lib/chat-model-config.js";
10
10
  import { resolveApiBase } from "../lib/api-base.js";
11
11
  import { fatal, success, info, warn, setErrorContext } from "../lib/errors.js";
12
+ import { editorEndingForewarning } from "../lib/session-end.js";
12
13
  /**
13
14
  * `litmus connect <token>` — the CLI connector for the v2 codespace, modeled on
14
15
  * `gh codespace ssh/code`. It removes the manual "paste your public key + copy
15
16
  * an ssh -J string + edit ~/.ssh/config" dance:
16
17
  *
17
- * 1. authenticate with the assessment token (also flips pending -> in_progress)
18
+ * 1. authenticate with the assessment token (learns the backend URL; the
19
+ * candidate stays `pending` until step 3 answers with a workspace, ENG-2082)
18
20
  * 2. ensure a local SSH key dedicated to Litmus (generate if absent)
19
21
  * 3. POST /workspace/start with THIS machine's public key (registers it +
20
22
  * provisions the container)
@@ -249,13 +251,17 @@ function writeSshConfig(alias, block, controlBlock) {
249
251
  }
250
252
  const NATIVE_EDITORS = {
251
253
  vscode: {
254
+ ide: "vscode",
252
255
  bin: "code",
256
+ banner: /^Visual Studio Code\b/,
253
257
  label: "VS Code",
254
258
  remoteSshExt: "ms-vscode-remote.remote-ssh",
255
259
  shellCommand: "Shell Command: Install 'code' command",
256
260
  },
257
261
  cursor: {
262
+ ide: "cursor",
258
263
  bin: "cursor",
264
+ banner: /^Cursor\b/,
259
265
  label: "Cursor",
260
266
  remoteSshExt: "anysphere.remote-ssh",
261
267
  shellCommand: "Shell Command: Install 'cursor' command",
@@ -270,6 +276,119 @@ function hasEditorCli(ed) {
270
276
  return false;
271
277
  }
272
278
  }
279
+ /**
280
+ * Map `--help` output to an editor we know, or null.
281
+ *
282
+ * FIRST NON-EMPTY LINE ONLY. The body of `--help` names both editors — Cursor's own
283
+ * usage example is `ps aux | grep code | cursor -` — so anything that scans the whole
284
+ * output identifies whichever pattern it happens to try first, on either editor.
285
+ */
286
+ export function identifyEditorBanner(helpOutput) {
287
+ const first = helpOutput
288
+ .split(/\r?\n/)
289
+ .map((l) => l.trim())
290
+ .find((l) => l.length > 0);
291
+ if (!first)
292
+ return null;
293
+ for (const ed of Object.values(NATIVE_EDITORS)) {
294
+ if (ed.banner.test(first))
295
+ return ed.ide;
296
+ }
297
+ return null;
298
+ }
299
+ /**
300
+ * `--help` opens no window, writes the banner to stdout and exits 0 on both editors
301
+ * (measured). Three details are load-bearing.
302
+ *
303
+ * `shell` ON WINDOWS, matching `detect-project.ts`'s `isOnPath` and for the reason its
304
+ * docstring gives: VS Code's Windows install puts `code.cmd` on PATH, and CreateProcess
305
+ * resolves `.exe` only, so a shim-less `execFile`/`spawn` cannot run it at all. Without
306
+ * this the probe answers `unverified` on every Windows machine — which is safe (see
307
+ * `EditorIdentity`) but would mean the wrong-editor guarantee simply does not exist
308
+ * there, which is the whole ticket. The argv here is two literals we own, so putting it
309
+ * through cmd.exe quotes nothing and interpolates nothing.
310
+ *
311
+ * `spawnSync` rather than `execFileSync` so a non-zero exit is a STATUS rather than a
312
+ * throw: a `--help` that exits 1 having printed its banner is still an identification.
313
+ *
314
+ * stdout only — a chatty wrapper's stderr must not become an identity — and a timeout,
315
+ * so a hung binary cannot wedge connect.
316
+ */
317
+ function runEditorHelp(bin) {
318
+ try {
319
+ const probed = spawnSync(bin, ["--help"], {
320
+ encoding: "utf8",
321
+ shell: process.platform === "win32",
322
+ timeout: 10000,
323
+ });
324
+ if (probed.error)
325
+ return null;
326
+ return probed.stdout ?? null;
327
+ }
328
+ catch {
329
+ // spawnSync throws (rather than returning a status) on some ENOENT paths.
330
+ return null;
331
+ }
332
+ }
333
+ export function identifyEditorCli(ed, run = runEditorHelp) {
334
+ const out = run(ed.bin);
335
+ if (out === null)
336
+ return { kind: "unverified" };
337
+ const actual = identifyEditorBanner(out);
338
+ if (actual === null)
339
+ return { kind: "unverified" };
340
+ return actual === ed.ide ? { kind: "match" } : { kind: "mismatch", actual };
341
+ }
342
+ /**
343
+ * ENG-2152 — the refusal, when the command the candidate's PATH answers with is the
344
+ * other editor.
345
+ *
346
+ * Two routes, and the one that WORKS RIGHT NOW comes first: on a machine where `code` is
347
+ * Cursor, Cursor is almost certainly the daily driver and VS Code may not be installed at
348
+ * all, so leading with "fix your PATH" leads with the thing that may be impossible.
349
+ * That ordering is the same one `announceCursorFullQuit` documents — what a candidate can
350
+ * act on immediately is what they read first.
351
+ *
352
+ * The offered command carries the token already inlined, for the reason `CursorReentry`
353
+ * gives: a `litmus connect <token>` a candidate has to repair themselves is worse than no
354
+ * command at all.
355
+ *
356
+ * When the editor that answered is Cursor, the quit requirement rides along. It is the
357
+ * headline only, not the whole ENG-1728 notice, because the command being offered prints
358
+ * that notice in full at selection time before anything opens — this is a FORWARD
359
+ * reference to output the candidate is about to see, not ENG-2145's back-reference to
360
+ * output that has scrolled away. Restating the whole block here would also have to
361
+ * restate its "this command is still running and will open Cursor for you", which on
362
+ * this path is false.
363
+ */
364
+ export function editorMismatchLines(chosen, actual, reentry = CURSOR_REENTRY_FALLBACK) {
365
+ const lines = [
366
+ "",
367
+ chalk.yellow.bold(` ⚠ The \`${chosen.bin}\` command on your PATH is ${actual.label}, not ${chosen.label}.`),
368
+ "",
369
+ ` You asked for ${chosen.label}, so nothing has been opened and no extension has been`,
370
+ ` installed. Working in ${actual.label} while you believe you are in ${chosen.label} would`,
371
+ " leave your AI work unrecorded, so this stops here instead.",
372
+ "",
373
+ " Your workspace is up and waiting — nothing has been lost.",
374
+ "",
375
+ ` To carry on in ${actual.label} — which is what \`${chosen.bin}\` actually is — run:`,
376
+ "",
377
+ ` ${chalk.cyan(`${reentry.command} --ide ${actual.ide}`)}`,
378
+ ];
379
+ if (actual.ide === "cursor") {
380
+ lines.push("");
381
+ lines.push(chalk.yellow(" ⚠ Quit Cursor completely before you run that, or your work is not recorded."));
382
+ lines.push(" That command explains why, in full, before anything opens.");
383
+ }
384
+ lines.push("");
385
+ lines.push(` To carry on in ${chosen.label} instead, put its own \`${chosen.bin}\` command first on`);
386
+ lines.push(` your PATH: in ${chosen.label}, run "${chosen.shellCommand}" from the`);
387
+ lines.push(" Command Palette, then open a NEW terminal and check that");
388
+ lines.push(` \`${chosen.bin} --help\` names ${chosen.label}. Then run litmus connect again.`);
389
+ lines.push("");
390
+ return lines;
391
+ }
273
392
  /**
274
393
  * Ensure the Remote-SSH extension is installed in the user's editor before we
275
394
  * open the remote window (the `gh codespace code` model). Best-effort: a
@@ -311,12 +430,17 @@ function launchEditor(ed, alias) {
311
430
  * selection path rather than by reading a string constant. A warning that is never
312
431
  * reached is precisely the bug this ticket is fixing, so a test that cannot see whether
313
432
  * it was printed is not a test of it.
433
+ *
434
+ * `reentry` is the way back in, and it is threaded from `runConnect` rather than
435
+ * rebuilt here because only the caller holds the token and the resolved base. When it
436
+ * is absent (a test, a scripted call) the notice degrades to the placeholder form
437
+ * rather than dropping the route — see `cursorReentryLines`.
314
438
  */
315
- export async function resolveIde(flag, log = console.log) {
439
+ export async function resolveIde(flag, log = console.log, reentry) {
316
440
  const norm = (flag ?? "").trim().toLowerCase();
317
441
  if (norm === "vscode" || norm === "cursor" || norm === "browser" || norm === "ssh") {
318
442
  if (norm === "cursor")
319
- announceCursorFullQuit(log);
443
+ announceCursorFullQuit(log, reentry);
320
444
  return { ide: norm, chosen: true };
321
445
  }
322
446
  if (norm)
@@ -328,9 +452,82 @@ export async function resolveIde(flag, log = console.log) {
328
452
  // At SELECTION time — not after the ~1-2 minute boot wait, and not trailing the
329
453
  // "opening Cursor" line where it scrolls past. See `announceCursorFullQuit`.
330
454
  if (ide === "cursor")
331
- announceCursorFullQuit(log);
455
+ announceCursorFullQuit(log, reentry);
332
456
  return { ide, chosen: answered.trim() !== "" };
333
457
  }
458
+ /**
459
+ * The candidate's own assessment page.
460
+ *
461
+ * **The slug is the ASSESSMENT ID, never the token**, and getting that wrong fails in
462
+ * the most misleading way available. `app/candidate/[slug]/layout.tsx` tolerates a
463
+ * token-shaped slug as a fallback, so the shell renders and the URL looks right — but
464
+ * `page.tsx` then fetches `/api/candidates/<email>/assessments/<slug>`, whose store
465
+ * lookup (`getAssessmentForCandidate`) matches on `assessment.id` alone. A token 404s
466
+ * there, and the candidate gets "Assessment Not Found. If you were invited under a
467
+ * different email, sign out and try that address" — a page telling them the problem is
468
+ * their account, at the moment they were promised a way back into their workspace.
469
+ * `/auth-redirect` resolves the token through `/api/assessments/by-token` and pushes
470
+ * exactly this shape, which is why it is the one to reproduce.
471
+ *
472
+ * ONE helper because this module prints the page twice for two different reasons (the
473
+ * disclosure refusal and ENG-2145's re-entry route) and both were the broken spelling.
474
+ * `connect-cursor-option.test.ts` asserts over the module's source that no `/candidate/`
475
+ * URL is built any other way — the mistake is invisible to a behavioural test, since
476
+ * both spellings are well-formed URLs that render a page.
477
+ */
478
+ export function candidatePageUrl(apiBase, assessmentId) {
479
+ return `${apiBase}/candidate/${assessmentId}`;
480
+ }
481
+ /** The placeholder form, for a call that does not know the token (tests, scripted runs). */
482
+ const CURSOR_REENTRY_FALLBACK = { command: "litmus connect <token>", pageUrl: null };
483
+ /**
484
+ * ENG-2145 — how to get back in, said in the same breath as "quit".
485
+ *
486
+ * Elena, 2026-09-04, after two people who know the product could not work it out:
487
+ * "it prompts you to quit cursor and come back in but it's not quite intuitive how
488
+ * we're going to get back in."
489
+ *
490
+ * The notice used to offer exactly one route — "let this command reopen it" — and that
491
+ * is the one route the instruction above it destroys. A candidate told to quit Cursor is
492
+ * very likely reading the instruction IN CURSOR'S OWN INTEGRATED TERMINAL, because that
493
+ * is where they have a shell; `Cmd+Q` then takes `litmus connect` with it. What is left
494
+ * on screen is a quit editor, no running command, and nothing anywhere naming the way
495
+ * back. On the clock, that reads as the workspace being gone.
496
+ *
497
+ * So the route is stated as an instruction rather than as a promise about a process that
498
+ * may no longer exist, and the terminal it must be run from is named: a candidate who
499
+ * has just been told to quit an application cannot be told to use that application's
500
+ * terminal. The assessment page comes second and is the one that survives closing the
501
+ * tab AND losing the terminal, which is the state Elena was actually in.
502
+ *
503
+ * Both routes reopen the SAME workspace — `litmus connect` re-registers this machine's
504
+ * key and wakes a parked container through the ENG-2005 machinery, and the portal's own
505
+ * card does the same — so the reassurance is a fact about the platform, not a hope.
506
+ */
507
+ export function cursorReentryLines(reentry = CURSOR_REENTRY_FALLBACK) {
508
+ const lines = [
509
+ " To come back in after quitting, open a terminal that is NOT inside Cursor",
510
+ " (Terminal or iTerm on macOS; PowerShell or Windows Terminal on Windows) and run:",
511
+ "",
512
+ ` ${chalk.cyan(reentry.command)}`,
513
+ "",
514
+ " That reopens this same workspace, with your work exactly as you left it.",
515
+ ];
516
+ // Deliberately NOT "use the button there". The portal's one-click reopen is the
517
+ // browser-IDE link, and `browser_ide_url` is null wherever `WORKSPACE_IDE_DOMAIN`
518
+ // is unset — those candidates get the same command in a copy field instead. Naming
519
+ // a control a candidate then cannot find costs them the trust they need in the rest
520
+ // of this notice, which is the same line `workspace-guidance.ts` draws over the tool
521
+ // list. What is true on every deployment is that the page states the route.
522
+ if (reentry.pageUrl) {
523
+ lines.push(" Or open your assessment page, which shows the way back in:");
524
+ lines.push(` ${chalk.cyan(reentry.pageUrl)}`);
525
+ }
526
+ else {
527
+ lines.push(" Your assessment page shows the way back in too.");
528
+ }
529
+ return lines;
530
+ }
334
531
  /**
335
532
  * ENG-1950 — the one thing a Cursor candidate has to be told, and the only place we can
336
533
  * reliably tell them.
@@ -348,15 +545,28 @@ export async function resolveIde(flag, log = console.log) {
348
545
  *
349
546
  * So the copy is written for a candidate, not for us: what to do, and what it costs if
350
547
  * they don't. No "hooks", no "capture lane". The mechanism is our problem.
548
+ *
549
+ * ENG-2145 adds the second half of that sentence: what to do is now "quit, THEN run
550
+ * this", because an instruction to quit with no stated way back is what sent two people
551
+ * who know the product looking for their workspace. The order is deliberate — the cost
552
+ * of skipping the quit still comes last, so the thing a candidate acts on immediately is
553
+ * the thing they read first, and `cursorReentryLines` sits between them rather than
554
+ * after the whole notice where it would scroll.
351
555
  */
352
- export function announceCursorFullQuit(log = console.log) {
556
+ export function announceCursorFullQuit(log = console.log, reentry = CURSOR_REENTRY_FALLBACK) {
353
557
  log("");
354
558
  log(chalk.yellow.bold(" ⚠ Quit Cursor completely first — otherwise your work is not recorded."));
355
559
  log("");
356
- log(" If Cursor is open right now, quit the whole app and let this command reopen it:");
560
+ log(" If Cursor is open right now, quit the whole app:");
357
561
  log(` macOS: ${chalk.bold("Cmd+Q")}`);
358
562
  log(` Windows/Linux: ${chalk.bold("File → Exit")}, or close every Cursor window`);
359
563
  log("");
564
+ for (const line of cursorReentryLines(reentry))
565
+ log(line);
566
+ log("");
567
+ log(" (If you are running this from a terminal outside Cursor, it is still running");
568
+ log(" and will open Cursor for you once your workspace is ready.)");
569
+ log("");
360
570
  log(" Reloading the window or reconnecting is NOT enough — Cursor only picks up your");
361
571
  log(" workspace's recording setup when the app itself starts. If it stays open,");
362
572
  log(" everything will look normal and none of your work will be recorded.");
@@ -423,6 +633,31 @@ export function chatConfigAction(ide, state) {
423
633
  return "write";
424
634
  return "none";
425
635
  }
636
+ /**
637
+ * ENG-2152 — the same question, once the editor CLI's identity is known.
638
+ *
639
+ * A mismatch is refused before anything opens, so a refused connect drives NO editor and
640
+ * may not WRITE: the entry would leave a live `lwt_` bearer token in an editor we then
641
+ * declined to drive, from an attempt that failed.
642
+ *
643
+ * The obvious spelling — keep `chatConfigAction` and pass it "the editor that actually
644
+ * answered" — reads more obviously correct than it is, and is wrong in the direction
645
+ * nobody pictures. Greptile caught it on #2134. Choose VS Code on a machine where `code`
646
+ * is Cursor and it suppresses the write, correctly. Choose CURSOR on a machine where
647
+ * `cursor` is VS Code and it ENABLES a write that the unpatched code suppressed: the very
648
+ * check added to stop the wrong editor being driven would be what plants the credential.
649
+ * So the typed choice stays the input and the mismatch only ever REMOVES an action.
650
+ *
651
+ * `remove` survives a mismatch and must: yesterday's dead token is in that file however
652
+ * today's connect ends, and `writeChatModelConfig` refuses to create a file that was
653
+ * never there, so on a machine that never ran the VS Code path it touches nothing.
654
+ */
655
+ export function chatConfigActionForIdentity(ide, state, identity) {
656
+ const action = chatConfigAction(ide, state);
657
+ if (identity.kind === "mismatch" && action === "write")
658
+ return "none";
659
+ return action;
660
+ }
426
661
  /**
427
662
  * ENG-1667 item 3: the browser IDE is the default, not native VS Code.
428
663
  *
@@ -516,7 +751,9 @@ export function browserFallback(hasUrl, ideWasChosen) {
516
751
  export async function runConnect(token, ideOpt) {
517
752
  const apiBase = resolveApiBase(process.env.LITMUS_API_URL);
518
753
  setErrorContext({ token, apiBase });
519
- // 1. Authenticate + learn the backend URL (also flips pending -> in_progress).
754
+ // 1. Authenticate + learn the backend URL. This does NOT mark the candidate
755
+ // started: /workspace/start below flips pending -> in_progress once a
756
+ // workspace exists, so a refused start leaves them pending (ENG-2082).
520
757
  const spinner = ora("Connecting to Litmus...").start();
521
758
  let meta;
522
759
  try {
@@ -535,7 +772,15 @@ export async function runConnect(token, ideOpt) {
535
772
  const backendUrl = meta.backendUrl;
536
773
  // Pick the editor up front (flag or interactive prompt) so the choice is made
537
774
  // before the boot wait, not after.
538
- const { ide: chosenIde, chosen: ideWasChosen } = await resolveIde(ideOpt);
775
+ //
776
+ // ENG-2145 — the Cursor notice is told the way back in. Both routes are known here
777
+ // and nowhere inside `resolveIde`: the token is a credential the caller holds, and
778
+ // `apiBase` is the frontend base the disclosure branch below already points at.
779
+ const reentry = {
780
+ command: `litmus connect ${token}`,
781
+ pageUrl: candidatePageUrl(apiBase, meta.assessmentId),
782
+ };
783
+ const { ide: chosenIde, chosen: ideWasChosen } = await resolveIde(ideOpt, console.log, reentry);
539
784
  let ide = chosenIde;
540
785
  // 2. Ensure a local SSH key (private key never leaves this machine).
541
786
  try {
@@ -557,7 +802,7 @@ export async function runConnect(token, ideOpt) {
557
802
  // Consent lives on the portal page (full text + identity check), so direct
558
803
  // the candidate there rather than dead-ending on a raw 403.
559
804
  if (code === "disclosure_not_accepted") {
560
- fatal("You need to accept the workspace monitoring disclosure first.", `Open your assessment page, review + accept the disclosure, then re-run \`litmus connect\`:\n ${apiBase}/candidate/${token}`, { severity: "warning" });
805
+ fatal("You need to accept the workspace monitoring disclosure first.", `Open your assessment page, review + accept the disclosure, then re-run \`litmus connect\`:\n ${candidatePageUrl(apiBase, meta.assessmentId)}`, { severity: "warning" });
561
806
  return;
562
807
  }
563
808
  if (code === "assessment_closed") {
@@ -651,6 +896,11 @@ export async function runConnect(token, ideOpt) {
651
896
  // reassigned `ide` for the compiler, so pin the descriptor explicitly rather than
652
897
  // indexing with a widened key.
653
898
  const editor = ide === "cursor" ? NATIVE_EDITORS.cursor : NATIVE_EDITORS.vscode;
899
+ // ENG-2152 — resolve WHAT THAT COMMAND ACTUALLY IS before anything acts on the choice.
900
+ // `bin` is a name on PATH, and on a machine where Cursor is the default editor `code`
901
+ // can be Cursor's own CLI. The verdict is taken here, above the Copilot Chat step,
902
+ // because that step is the first thing that acts on the candidate's answer.
903
+ const identity = identifyEditorCli(editor);
654
904
  // 5b. Point this machine's Copilot Chat at the Litmus gateway (ENG-1475).
655
905
  //
656
906
  // ONLY ON THE NATIVE VS CODE PATH, and that is the whole reason it is here rather
@@ -696,8 +946,13 @@ export async function runConnect(token, ideOpt) {
696
946
  // Cursor is still given no laptop-side equivalent of the WRITE: its AI is captured
697
947
  // in-container, which is exactly what the full-quit notice at selection time
698
948
  // protects.
949
+ //
950
+ // ENG-2152 — a MISMATCH refuses below and opens nothing, so it may not WRITE. See
951
+ // `chatConfigActionForIdentity`, which is where that belongs: keying the write on
952
+ // "the editor that actually answered" instead reads correct and is wrong in the
953
+ // other direction, which is how Greptile found it on #2134.
699
954
  const chat = await fetchEditorChatConfig(backendUrl, token);
700
- const chatAction = chatConfigAction(ide, chat.state);
955
+ const chatAction = chatConfigActionForIdentity(ide, chat.state, identity);
701
956
  if (chat.state === "configured" && chatAction === "write") {
702
957
  const outcome = applyEditorChatConfig(chat);
703
958
  if (outcome.status === "written") {
@@ -724,6 +979,33 @@ export async function runConnect(token, ideOpt) {
724
979
  // first — or print how to connect if its CLI is absent. ONE body for both editors:
725
980
  // every difference between them lives in `NATIVE_EDITORS`, so a later change to this
726
981
  // flow cannot land on one editor and quietly miss the other.
982
+ // ENG-2152 — dispatch on the identity, not on the name, and do it FIRST.
983
+ //
984
+ // Above the extension install and the launch, because installing
985
+ // `ms-vscode-remote.remote-ssh` into Cursor is the failure `NATIVE_EDITORS` exists to
986
+ // prevent — and Cursor 3.18.25 answers it "already installed" (exit 0), so the install
987
+ // reports success and the candidate is told we readied VS Code's Remote-SSH for them.
988
+ //
989
+ // Above the ABSENCE check too, and that ordering is what makes this hold on Windows.
990
+ // The probe can READ a `code.cmd` (it goes through a shell there), but `hasEditorCli`
991
+ // and `launchEditor` still cannot DRIVE one, so a Windows candidate has always landed
992
+ // on the manual-instructions branch below — a pre-existing gap this ticket does not
993
+ // widen and deliberately does not paper over: giving those two a shell without proving
994
+ // the spawn works would turn clear instructions into a silent nothing. Checking the
995
+ // mismatch first means a Windows candidate whose `code` is Cursor is told so, rather
996
+ // than told their editor is not installed.
997
+ if (identity.kind === "mismatch") {
998
+ for (const line of editorMismatchLines(editor, NATIVE_EDITORS[identity.actual], reentry)) {
999
+ console.log(line);
1000
+ }
1001
+ return;
1002
+ }
1003
+ if (identity.kind === "unverified") {
1004
+ // Proceeding as asked — see `EditorIdentity`. Said out loud because it is the one line
1005
+ // that tells us, when a candidate reports opening the wrong editor, that the probe
1006
+ // could not read this machine rather than that it read it wrong.
1007
+ console.log(chalk.dim(` (Couldn't confirm that \`${editor.bin}\` is ${editor.label}; opening it as you asked.)`));
1008
+ }
727
1009
  if (!hasEditorCli(editor)) {
728
1010
  console.log();
729
1011
  warn(`${editor.label} \`${editor.bin}\` command not found on PATH.`);
@@ -734,8 +1016,16 @@ export async function runConnect(token, ideOpt) {
734
1016
  // The full-quit requirement outlives this degraded path — arguably it matters MORE
735
1017
  // here, since a candidate typing the command by hand is doing it from a shell that
736
1018
  // may well be inside the Cursor they still have to quit.
1019
+ //
1020
+ // ENG-2145: and so does the way back. This used to point at "the note above", which
1021
+ // is a back-reference to a notice printed BEFORE a boot wait that can run to two
1022
+ // minutes and fills the screen — and, worse, one whose own route back was a promise
1023
+ // about this very command, which by then has returned. So the route is restated
1024
+ // here in full rather than referred to.
737
1025
  if (ide === "cursor") {
738
- console.log(chalk.yellow(" Quit Cursor completely before you run that see the note above."));
1026
+ console.log(chalk.yellow(" Quit Cursor completely before you run that, or your work is not recorded."));
1027
+ for (const line of cursorReentryLines(reentry))
1028
+ console.log(line);
739
1029
  }
740
1030
  return;
741
1031
  }
@@ -755,5 +1045,14 @@ export async function runConnect(token, ideOpt) {
755
1045
  else {
756
1046
  console.log(chalk.dim(" If a new window doesn't appear, run litmus connect again."));
757
1047
  }
1048
+ // ENG-2154. The window we have just opened outlives the session, and what it
1049
+ // does when the session ends looks like a failure. This is the only moment
1050
+ // anything of ours is on the candidate's own machine — `connect` returns here
1051
+ // and the submit that ends the session happens in the container or on the
1052
+ // assessment page — so it is also the only warning that reaches a candidate
1053
+ // who ends their session somewhere we do not run. See lib/session-end.ts,
1054
+ // which also carries why we do not simply close the window.
1055
+ for (const line of editorEndingForewarning(editor.label))
1056
+ console.log(line);
758
1057
  }
759
1058
  //# sourceMappingURL=connect.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"connect.js","sourceRoot":"","sources":["../../src/commands/connect.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"connect.js","sourceRoot":"","sources":["../../src/commands/connect.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AAavD,OAAO,EACL,eAAe,EACf,4BAA4B,EAC5B,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,oBAAoB,EACpB,eAAe,EACf,KAAK,YAAY,EACjB,KAAK,UAAU,GAChB,MAAM,yBAAyB,CAAA;AAiBhC;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAIH,KAAK,WAAW,GAAG,IAAI,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAA;AAEnD,UAAU,WAAW;IACnB,8EAA8E;IAC9E,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,WAAW,CAAA;IACnB,kCAAkC;IAClC,MAAM,EAAE,MAAM,CAAA;IACd,gFAAgF;IAChF,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB;;;;;;;OAOG;IACH,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB;AAwMD;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,KAAK,CAAC;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,GACvD,OAAO,GAAG,SAAS,GAAG,MAAM,CAI9B;AAED;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CACtC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,WAAW,EAAE,EACtB,YAAY,CAAC,EAAE,MAAM,GACpB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAiCzB;AAID,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,wEAAwE;IACxE,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,0CAA0C;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,6EAA6E;IAC7E,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,4FAA4F;IAC5F,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,wBAAsB,SAAS,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CA6pBlE"}
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AAavD,OAAO,EACL,eAAe,EACf,4BAA4B,EAC5B,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,oBAAoB,EACpB,eAAe,EACf,KAAK,YAAY,EACjB,KAAK,UAAU,GAChB,MAAM,yBAAyB,CAAA;AAmBhC;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAIH,KAAK,WAAW,GAAG,IAAI,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAA;AAEnD,UAAU,WAAW;IACnB,8EAA8E;IAC9E,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,WAAW,CAAA;IACnB,kCAAkC;IAClC,MAAM,EAAE,MAAM,CAAA;IACd,gFAAgF;IAChF,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB;;;;;;;OAOG;IACH,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB;AAwMD;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,KAAK,CAAC;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,GACvD,OAAO,GAAG,SAAS,GAAG,MAAM,CAI9B;AAED;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CACtC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,WAAW,EAAE,EACtB,YAAY,CAAC,EAAE,MAAM,GACpB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAiCzB;AAID,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,wEAAwE;IACxE,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,0CAA0C;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,6EAA6E;IAC7E,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,4FAA4F;IAC5F,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,wBAAsB,SAAS,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CA2qBlE"}
@@ -24,6 +24,8 @@ import { collectBackfillSessions, planUploadBatches, defaultClaudeProjectsDir, }
24
24
  import { pruneShadows, readShadowTrackerFile, shadowTrackerFileMtime, shadowLogPath } from "../lib/shadow.js";
25
25
  import { collectToolBackfillSources } from "../lib/backfill-tools.js";
26
26
  import { CLI_VERSION } from "../lib/version.js";
27
+ import { submitCommandFor } from "../lib/submit-route.js";
28
+ import { checkNodeVersion, checkCliVersion, checkGit } from "../lib/environment-checks.js";
27
29
  // Doctor prints in the same grammar as `litmus status` and `litmus submit`:
28
30
  // plain 4-space "Key: value" lines where the STATE lives in the wording and
29
31
  // color, not in a status gutter. ok/fixed render plain (the words say what
@@ -312,6 +314,16 @@ export async function runDoctor(opts) {
312
314
  console.log(chalk.bold(` ${config.assessmentName}`));
313
315
  console.log();
314
316
  logToTrackerLog(projectRoot, `run started (cli ${CLI_VERSION})${configRebuilt ? " — config rebuilt" : ""}`);
317
+ // 0. Environment (shared with `litmus setup-check`, ENG-2300) -------------
318
+ // The cheap machine-level checks a candidate can act on themselves: Node
319
+ // floor, CLI behind npm, git on PATH. Quiet when fine — doctor's job is the
320
+ // assessment, and these lines only earn their place by naming a fix. The
321
+ // server probe and the watcher smoke are NOT run here: doctor makes an
322
+ // authenticated round-trip and inspects the real tracker below, which are
323
+ // stronger versions of both.
324
+ for (const env of [checkNodeVersion(), await checkCliVersion(), checkGit()]) {
325
+ record({ ...env, quiet: env.status === "ok" });
326
+ }
315
327
  if (configRebuilt) {
316
328
  record({
317
329
  name: "assessment",
@@ -343,7 +355,10 @@ export async function runDoctor(opts) {
343
355
  record({
344
356
  name: "deadline",
345
357
  status: "fail",
346
- detail: `Time remaining: PASSED (cutoff was ${cutoff}). If you have not submitted, run "litmus submit" now and contact support@litmushiring.com.`,
358
+ // ENG-2130: the command is derived, because doctor also runs inside a
359
+ // Codespaces v2 workspace, where `litmus submit` is the other flow's
360
+ // command and refuses. See lib/submit-route.ts.
361
+ detail: `Time remaining: PASSED (cutoff was ${cutoff}). If you have not submitted, run "${submitCommandFor(import.meta.url)}" now and contact support@litmushiring.com.`,
347
362
  });
348
363
  }
349
364
  else {