litmus-cli 1.4.85-desktop.1 → 1.4.85

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.
@@ -51,7 +51,7 @@ export class ConnectionAttempt {
51
51
  this.steps.push({ stage, elapsedMs: this.elapsed() });
52
52
  }
53
53
  editor(route, version) {
54
- this.route = ["cursor", "vscode", "ssh", "browser", "codex", "claude"].includes(route) ? route : "unknown";
54
+ this.route = ["cursor", "vscode", "ssh", "browser"].includes(route) ? route : "unknown";
55
55
  this.version = version && /^\d+\.\d+\.\d+(?:[-+][\w.-]+)?$/.test(version) ? version : null;
56
56
  }
57
57
  finish(result) { this.result = result; }
@@ -1 +1 @@
1
- {"version":3,"file":"connection-attempt.js","sourceRoot":"","sources":["../../src/lib/connection-attempt.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"connection-attempt.js","sourceRoot":"","sources":["../../src/lib/connection-attempt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAA;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AASzC,yEAAyE;AACzE,MAAM,cAAc,GAAG,QAAU,CAAA;AAEjC,6FAA6F;AAC7F,MAAM,OAAO,iBAAiB;IAU5B,IAAI,CAAC,GAAW,EAAE,KAAc;QAC9B,MAAM,OAAO,GAA6B;YACxC,cAAc,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,YAAY,CAAC;YACnD,kBAAkB,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC;YAC3C,iBAAiB,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;YACpD,cAAc,EAAE,CAAC,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAC;YAClD,YAAY,EAAE,CAAC,MAAM,EAAE,gBAAgB,CAAC;YACxC,WAAW,EAAE,CAAC,YAAY,EAAE,aAAa,EAAE,eAAe,CAAC;YAC3D,YAAY,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAC;SACjE,CAAA;QACD,IAAI,CAAC,aAAa,EAAE,sBAAsB,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,OAAO,KAAK,KAAK,SAAS;YAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;QACvH,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,OAAM;QACrC,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC;YAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;QAC1D,IAAI,GAAG,KAAK,YAAY,IAAI,8CAA8C,CAAC,IAAI,CAAC,KAAK,CAAC;YAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;QAC/G,IAAI,GAAG,KAAK,cAAc,IAAI,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC;YAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;IACtF,CAAC;IACD;;;;;OAKG;IACK,OAAO,KAAa,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAA,CAAC,CAAC;IACxF,YAA6B,OAAO,WAAW;QAAlB,SAAI,GAAJ,IAAI,CAAc;QAhCtC,OAAE,GAAG,UAAU,EAAE,CAAA;QACT,YAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QAC7B,UAAK,GAAoD,EAAE,CAAA;QAC3D,YAAO,GAAoB,EAAE,CAAA;QAC7B,UAAK,GAAG,SAAS,CAAA;QACjB,YAAO,GAAkB,IAAI,CAAA;QAC7B,WAAM,GAAqB,YAAY,CAAA;QACvC,YAAO,GAAa,EAAE,CAAA;QACtB,UAAK,GAAqC,EAAE,CAAA;QAwBD,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAAC,IAAI,CAAC,UAAU,EAAE,CAAA;IAAC,CAAC;IACpG,KAAK,CAAC,KAAsB;QAC1B,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE;YAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA;IACnF,CAAC;IACD,MAAM,CAAC,KAAa,EAAE,OAAuB;QAC3C,IAAI,CAAC,KAAK,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAA;QACvF,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,iCAAiC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAA;IAC5F,CAAC;IACD,MAAM,CAAC,MAAwB,IAAU,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA,CAAC,CAAC;IAC/D,IAAI,OAAO,KAAuB,OAAO,IAAI,CAAC,MAAM,CAAA,CAAC,CAAC;IACtD,yDAAyD;IACzD,IAAI,YAAY,KAAwB,OAAO,IAAI,CAAC,OAAO,CAAA,CAAC,CAAC;IAC7D,IAAI,YAAY;QACd,OAAO,CAAC,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,eAAe,EAAE,oBAAoB,EAAE,eAAe,EAAE,eAAe,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAC3I,CAAC;IACD,QAAQ,CAAC,IAA+B;QACtC,iFAAiF;QACjF,8EAA8E;QAC9E,MAAM,QAAQ,GAAuB;YACnC,CAAC,uBAAuB,EAAE,0CAA0C,CAAC;YACrE,CAAC,kBAAkB,EAAE,2DAA2D,CAAC;YACjF,CAAC,oBAAoB,EAAE,qBAAqB,CAAC,EAAE,CAAC,SAAS,EAAE,wBAAwB,CAAC;YACpF,CAAC,YAAY,EAAE,mEAAmE,CAAC;YACnF,CAAC,YAAY,EAAE,wCAAwC,CAAC;YACxD,CAAC,kBAAkB,EAAE,8BAA8B,CAAC;YACpD,CAAC,eAAe,EAAE,+CAA+C,CAAC;YAClE,CAAC,iBAAiB,EAAE,oCAAoC,CAAC;YACzD,CAAC,WAAW,EAAE,0BAA0B,CAAC;SAC1C,CAAA;QACD,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,QAAQ;YAAE,IAAI,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACjI,CAAC;IACD,UAAU;QACR,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC;YAAE,OAAM;QACpC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,aAAa,EAAE,IAAI,CAAC,OAAO;YAChH,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAA;QAChH,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,8BAA8B,EAAE,IAAI,EAAE,oBAAoB,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC,CAAA;IACnI,CAAC;IACD,KAAK,CAAC,KAAK;QACT,IAAI,IAAI,CAAC,MAAM,KAAK,YAAY;YAAE,IAAI,CAAC,MAAM,GAAG,SAAS,CAAA;QACzD,IAAI,CAAC,UAAU,EAAE,CAAA;QACjB,MAAM,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACxC,CAAC;CACF"}
@@ -1502,13 +1502,13 @@ function pruneTurns() {
1502
1502
  }
1503
1503
 
1504
1504
  /** Mint + persist a turn id for this session's new prompt. */
1505
- function startTurn(sessionId) {
1505
+ function startTurn(sessionId, generationId) {
1506
1506
  if (!sessionId) return null
1507
1507
  const turnId = crypto.randomUUID()
1508
1508
  try {
1509
1509
  fs.mkdirSync(TURNS_DIR, { recursive: true })
1510
1510
  pruneTurns()
1511
- fs.writeFileSync(turnFile(sessionId), JSON.stringify({ turnId, ts: Date.now() }))
1511
+ fs.writeFileSync(turnFile(sessionId), JSON.stringify({ turnId, ts: Date.now(), ...(typeof generationId === "string" ? { generationId } : {}) }))
1512
1512
  } catch {
1513
1513
  // Unwritable — the event still gets its id, it just can't be paired with
1514
1514
  // the response. Better an unpaired pair than a dropped prompt.
@@ -1528,6 +1528,7 @@ function currentTurnRecord(sessionId) {
1528
1528
  try {
1529
1529
  const data = JSON.parse(fs.readFileSync(turnFile(sessionId), "utf8"))
1530
1530
  return {
1531
+ generationId: typeof data.generationId === "string" ? data.generationId : null,
1531
1532
  turnId: typeof data.turnId === "string" ? data.turnId : null,
1532
1533
  ts: typeof data.ts === "number" && Number.isFinite(data.ts) ? data.ts : null,
1533
1534
  }
@@ -1933,6 +1934,7 @@ function markHostedClaudeCompletion(window, cursor, parsed) {
1933
1934
  })
1934
1935
  if (!entryId || hostedCaptureWindow()?.litmusDir !== window.litmusDir) return
1935
1936
  const dir = path.join(window.litmusDir, "transcript-completions")
1937
+ if (fs.existsSync(dir + ".done")) return false
1936
1938
  fs.mkdirSync(dir, { recursive: true, mode: 0o700 })
1937
1939
  const key = crypto.createHash("sha256").update(JSON.stringify([cursor.sessionId])).digest("hex")
1938
1940
  const file = path.join(dir, `${key}.json`), temp = `${file}.${crypto.randomUUID()}.tmp`
@@ -2070,6 +2072,13 @@ async function main() {
2070
2072
  return
2071
2073
  }
2072
2074
 
2075
+ // Cursor's transcript omits results. Its post-tool hooks carry the actual
2076
+ // outcome; retain only under the same disclosed, active hosted capture lease.
2077
+ if (effectiveTool === "cursor" && ["postToolUse", "postToolUseFailure"].includes(parsed?.hook_event_name)) {
2078
+ recordCursorToolResult(parsed, hostedAtStart)
2079
+ return
2080
+ }
2081
+
2073
2082
  // ENG-2344: Cursor's own report that its agent edited a file. Nothing to
2074
2083
  // upload yet — it is ledgered against the session and rides the turn's reply.
2075
2084
  // Gated on the same assessment resolution a prompt gets, so an edit in a
@@ -2112,11 +2121,16 @@ async function main() {
2112
2121
  if (isSystemInjectedPrompt(content)) return
2113
2122
  }
2114
2123
  let toolTrace = null
2124
+ const cursorResultsDir = responseEvent && effectiveTool === "cursor" && !selftestNonce
2125
+ ? cursorResultScope({ session_id: sessionId }, hostedAtStart) : null
2115
2126
  if (responseEvent && !selftestNonce && typeof parsed?.transcript_path === "string"
2116
2127
  && (hostedWorkspaceHome || hostedAtStart?.disclosureVersion === "hosted_local_v2")) {
2117
2128
  try { toolTrace = parseToolEvidence(readTranscriptRaw(parsed.transcript_path), effectiveTool) }
2118
2129
  catch { toolTrace = { version: 1, records: [], complete: false, reason: "transcript_unavailable", dropped: 0 } }
2119
2130
  }
2131
+ if (responseEvent && effectiveTool === "cursor" && !selftestNonce && hostedAtStart?.disclosureVersion === "hosted_local_v2") {
2132
+ toolTrace = cursorHookToolTrace(toolTrace, readCursorToolResults(sessionId, hostedAtStart, cursorResultsDir))
2133
+ }
2120
2134
  if (!content && !toolTrace?.records?.length) return
2121
2135
  content = content || ""
2122
2136
 
@@ -2147,7 +2161,7 @@ async function main() {
2147
2161
  // Pair the two invocations: a prompt opens a turn, its response inherits the
2148
2162
  // same id. See the turn-pairing block above.
2149
2163
  const turnRecord = responseEvent && !selftestNonce ? currentTurnRecord(sessionId) : null
2150
- const turnId = selftestNonce ? null : responseEvent ? turnRecord.turnId : startTurn(sessionId)
2164
+ const turnId = selftestNonce ? null : responseEvent ? turnRecord.turnId : startTurn(sessionId, parsed?.generation_id)
2151
2165
 
2152
2166
  const event = selftestNonce
2153
2167
  ? {
@@ -2245,6 +2259,7 @@ async function main() {
2245
2259
  } catch {
2246
2260
  // Non-critical
2247
2261
  }
2262
+ if (logged && cursorResultsDir) finishCursorToolResults(cursorResultsDir)
2248
2263
  // ENG-2793: the next Stop starts after this reply only once a copy of it is
2249
2264
  // on disk. The drain and the upload report no outcome, so a reply whose append
2250
2265
  // failed is sent again by the next Stop, and the report folds the repeat.
@@ -2392,8 +2407,135 @@ function parseToolEvidence(raw, tool) {
2392
2407
 
2393
2408
 
2394
2409
 
2410
+ // Cursor post-tool payloads: https://cursor.com/docs/hooks#posttooluse .
2411
+ // Keyed by capture window + observed prompt turn, never just a workspace or
2412
+ // conversation. An old result cannot leak into a new attempt or follow-up.
2413
+ const CURSOR_RESULT_TTL_MS = 24 * 60 * 60 * 1000
2414
+ function cursorResultsRoot() { return path.join(TURNS_DIR, "cursor-tool-results") }
2415
+ function pruneCursorToolResults(now = Date.now()) {
2416
+ const root = cursorResultsRoot()
2417
+ try {
2418
+ for (const name of fs.readdirSync(root)) {
2419
+ if (!/^[a-f0-9]{64}(?:\.done)?$/.test(name)) continue
2420
+ const file = path.join(root, name)
2421
+ try { if (now - fs.lstatSync(file).mtimeMs > CURSOR_RESULT_TTL_MS) fs.rmSync(file, { recursive: true, force: true }) } catch {}
2422
+ }
2423
+ } catch {}
2424
+ }
2425
+ function finishCursorToolResults(dir) {
2426
+ // Seal before deleting payloads. Duplicate/late hooks cannot recreate a
2427
+ // consumed ledger, even though its original per-call dedupe files are gone.
2428
+ try {
2429
+ fs.mkdirSync(path.dirname(dir), { recursive: true, mode: 0o700 })
2430
+ fs.writeFileSync(dir + ".done", "", { mode: 0o600 })
2431
+ fs.rmSync(dir, { recursive: true, force: true })
2432
+ } catch {}
2433
+ pruneCursorToolResults()
2434
+ }
2435
+ function cursorResultScope(data, window) {
2436
+ if (!window || window.disclosureVersion !== "hosted_local_v2") return null
2437
+ const session = data?.session_id || data?.conversation_id
2438
+ const turn = currentTurnRecord(session)
2439
+ if (!turn.turnId || !Number.isFinite(turn.ts) || turn.ts < window.startedAt) return null
2440
+ const key = crypto.createHash("sha256").update(JSON.stringify([session, turn.turnId, window.startedAt, window.litmusDir])).digest("hex")
2441
+ return path.join(cursorResultsRoot(), key)
2442
+ }
2443
+ function recordCursorToolResult(data, window) {
2444
+ pruneCursorToolResults()
2445
+ const dir = cursorResultScope(data, window)
2446
+ const failed = data?.hook_event_name === "postToolUseFailure"
2447
+ const observed = currentTurnRecord(data?.session_id || data?.conversation_id)
2448
+ if (!observed.generationId || data?.generation_id !== observed.generationId) return false
2449
+ if (!dir || typeof data.tool_use_id !== "string" || !data.tool_use_id || data.tool_use_id.length > 128
2450
+ || typeof data.tool_name !== "string" || !data.tool_name || data.tool_name.length > 128
2451
+ || data.tool_input === undefined
2452
+ || (failed ? typeof data.error_message !== "string" : data.tool_output === undefined)) return false
2453
+ const id = data.tool_use_id
2454
+ const pair = [
2455
+ { kind: "call", id, name: data.tool_name, input: boundedText(data.tool_input, 40000) },
2456
+ { kind: "result", id, ...(failed ? { ok: false } : {}), output: boundedText(failed ? data.error_message : data.tool_output, 40000) },
2457
+ ]
2458
+ let tmp
2459
+ try {
2460
+ if (fs.existsSync(dir + ".done")) return false
2461
+ fs.mkdirSync(dir, { recursive: true, mode: 0o700 })
2462
+ if (fs.readdirSync(dir).filter(n => n.endsWith(".json")).length >= MAX_RECORDS / 2) return false
2463
+ const name = crypto.createHash("sha256").update(id).digest("hex") + ".json"
2464
+ tmp = path.join(dir, "." + crypto.randomUUID())
2465
+ fs.writeFileSync(tmp, JSON.stringify({ ts: Date.now(), pair }), { mode: 0o600, flag: "wx" })
2466
+ // Atomic, exclusive publication also deduplicates merged hook config sources.
2467
+ fs.linkSync(tmp, path.join(dir, name))
2468
+ if (fs.existsSync(dir + ".done")) {
2469
+ fs.rmSync(dir, { recursive: true, force: true })
2470
+ return false
2471
+ }
2472
+ return true
2473
+ } catch { return false }
2474
+ finally { if (tmp) try { fs.unlinkSync(tmp) } catch {} }
2475
+ }
2476
+ function readCursorToolResults(sessionId, window, dir = cursorResultScope({ session_id: sessionId }, window)) {
2477
+ pruneCursorToolResults()
2478
+ if (!dir) return []
2479
+ try {
2480
+ return fs.readdirSync(dir).filter(n => n.endsWith(".json")).slice(0, MAX_RECORDS / 2)
2481
+ .flatMap(n => { try { return [JSON.parse(fs.readFileSync(path.join(dir, n), "utf8"))] } catch { return [] } })
2482
+ .filter(r => Number.isFinite(r.ts) && Array.isArray(r.pair) && r.pair.length === 2)
2483
+ .sort((a,b) => a.ts - b.ts).flatMap(r => r.pair)
2484
+ } catch { return [] }
2485
+ }
2486
+ function canonicalToolInput(value) {
2487
+ if (Array.isArray(value)) return value.map(canonicalToolInput)
2488
+ if (value && typeof value === "object") return Object.fromEntries(Object.keys(value).sort().map(k => [k, canonicalToolInput(value[k])]))
2489
+ return value
2490
+ }
2491
+ function cursorHookToolTrace(transcript, hookRecords) {
2492
+ if (!hookRecords.length) return transcript
2493
+ // Match only identical, untruncated structured input. Remove one transcript
2494
+ // call per hook occurrence; repeated identical calls still remain distinct.
2495
+ const key = r => {
2496
+ if (!r?.input || r.input.bytes !== r.input.retainedBytes) return null
2497
+ try {
2498
+ const input = JSON.parse(r.input.text)
2499
+ // Cursor adds execution defaults in postToolUse and a prose description
2500
+ // in transcripts. Shell identity is the literal command, not those fields.
2501
+ if (r.name === "Shell" && typeof input.command === "string") return JSON.stringify([r.name, input.command])
2502
+ if (r.name === "Write" && typeof (input.path ?? input.file_path) === "string"
2503
+ && typeof (input.contents ?? input.content) === "string")
2504
+ return JSON.stringify([r.name, input.path ?? input.file_path, input.contents ?? input.content])
2505
+ return JSON.stringify([r.name, canonicalToolInput(input)])
2506
+ } catch { return null }
2507
+ }
2508
+ const available = new Map()
2509
+ const pairs = []
2510
+ for (let i = 0; i < hookRecords.length; i += 2) {
2511
+ const pair = hookRecords.slice(i, i + 2)
2512
+ pairs.push(pair)
2513
+ const k = key(pair[0])
2514
+ if (k) { const queue = available.get(k) || []; queue.push(pair); available.set(k, queue) }
2515
+ }
2516
+ const consumed = new Set(), records = []
2517
+ for (const r of transcript?.records || []) {
2518
+ const k = r.kind === "call" ? key(r) : null
2519
+ const pair = k && available.get(k)?.shift()
2520
+ if (pair) { records.push(...pair); consumed.add(pair) }
2521
+ else records.push(r)
2522
+ }
2523
+ for (const pair of pairs) if (!consumed.has(pair)) records.push(...pair)
2524
+ let dropped = transcript?.dropped || 0
2525
+ while (records.length > MAX_RECORDS || storageBytes(records) > MAX_BYTES) { records.pop(); dropped++ }
2526
+ // Hook delivery itself is not a proof of complete transcript coverage. Keep
2527
+ // an explicit partial boundary even when all observed calls have outcomes.
2528
+ const clipped = records.some(r => [r.input, r.output].some(v => v && v.bytes !== v.retainedBytes))
2529
+ return { version: 1, records, complete: false,
2530
+ reason: dropped ? "record_budget" : clipped ? "output_preview_limit" : "tool_results_missing", dropped }
2531
+ }
2532
+
2395
2533
  // Exported for unit tests only; every hook invocation runs this file directly.
2396
2534
  module.exports = {
2535
+ recordCursorToolResult,
2536
+ readCursorToolResults,
2537
+ cursorHookToolTrace,
2538
+ startTurn,
2397
2539
  parseToolEvidence,
2398
2540
  storageBytes,
2399
2541
  isCodexContextualText,
@@ -62,18 +62,6 @@ export interface SshPreflightDeps {
62
62
  }
63
63
  export declare const SSH_PREFLIGHT_TIMEOUT_MS = 45000;
64
64
  export declare function sshPreflight(alias: string, executable?: string, deps?: SshPreflightDeps): Promise<SshPreflight>;
65
- /**
66
- * Whether the candidate's own config gives this host a `RemoteCommand` (Greptile on
67
- * #2844). With one set — a `Host *` that attaches tmux is the usual reason — ssh refuses
68
- * `ssh <alias> true` outright ("Cannot execute command-line and remote command.") while
69
- * a plain `ssh <alias>` works, so the preflight would stop a working setup.
70
- *
71
- * Asked of `ssh -G` rather than answered by always passing `RemoteCommand=none`: that
72
- * option is unknown to OpenSSH before 7.6 (CentOS 7 ships 7.4), which rejects the whole
73
- * command line, and `IgnoreUnknown` on the command line would displace a candidate's own
74
- * `IgnoreUnknown UseKeychain`. A client whose config SETS RemoteCommand understands it.
75
- */
76
- export declare function configSetsRemoteCommand(alias: string, executable: string, spawn: typeof spawnSync): boolean;
77
65
  /**
78
66
  * The hint for a failed preflight: ssh's own words first, then the ways out. It carries
79
67
  * no token (a placeholder where one is needed), because `fatal` reports its hint.
@@ -1 +1 @@
1
- {"version":3,"file":"ssh-client.d.ts","sourceRoot":"","sources":["../../src/lib/ssh-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ssh-client.d.ts","sourceRoot":"","sources":["../../src/lib/ssh-client.ts"],"names":[],"mappings":"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"}
@@ -58,7 +58,7 @@ export async function sshPreflight(alias, executable = "ssh", deps = defaultPref
58
58
  * command line, and `IgnoreUnknown` on the command line would displace a candidate's own
59
59
  * `IgnoreUnknown UseKeychain`. A client whose config SETS RemoteCommand understands it.
60
60
  */
61
- export function configSetsRemoteCommand(alias, executable, spawn) {
61
+ function configSetsRemoteCommand(alias, executable, spawn) {
62
62
  const r = spawn(executable, ["-G", alias], { encoding: "utf8", windowsHide: true, timeout: 10000 });
63
63
  if (r.error || r.status !== 0)
64
64
  return false;
@@ -1 +1 @@
1
- {"version":3,"file":"ssh-client.js","sourceRoot":"","sources":["../../src/lib/ssh-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ssh-client.js","sourceRoot":"","sources":["../../src/lib/ssh-client.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "litmus-cli",
3
- "version": "1.4.85-desktop.1",
3
+ "version": "1.4.85",
4
4
  "description": "CLI tool for Litmus engineering assessments",
5
5
  "license": "MIT",
6
6
  "author": "elenazhao",
@@ -1,17 +0,0 @@
1
- /**
2
- * Native desktop sessions execute inside the hosted workspace over its SSH alias.
3
- * Connection contracts (verified 2026-10-21):
4
- * https://learn.chatgpt.com/docs/remote-connections#connect-to-an-ssh-host
5
- * https://code.claude.com/docs/en/desktop#open-an-ssh-session-from-a-link
6
- */
7
- export type DesktopApp = "codex" | "claude";
8
- export declare const DESKTOP_WORKSPACE_FOLDER = "/home/candidate/workspace";
9
- export declare function claudeDesktopUrl(alias: string): string;
10
- export declare function desktopAppInstructions(app: DesktopApp, alias: string): string[];
11
- /** Validate remote configuration without printing credentials or candidate content. */
12
- export declare function desktopAppConfigurationScript(app: DesktopApp): string;
13
- /** Exercise the baked recorder, since a valid hook command can still point to an
14
- * older image that records prose but drops desktop tool calls and results. */
15
- export declare function desktopAppCaptureScript(app: DesktopApp): string;
16
- export declare function desktopAppProbeCommand(app: DesktopApp): string;
17
- //# sourceMappingURL=desktop-app.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"desktop-app.d.ts","sourceRoot":"","sources":["../../src/lib/desktop-app.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,QAAQ,CAAA;AAC3C,eAAO,MAAM,wBAAwB,8BAA8B,CAAA;AAEnE,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAGtD;AAED,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAiB/E;AAED,uFAAuF;AACvF,wBAAgB,6BAA6B,CAAC,GAAG,EAAE,UAAU,GAAG,MAAM,CAgDrE;AAID;8EAC8E;AAC9E,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,UAAU,GAAG,MAAM,CAwB/D;AAED,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,UAAU,GAAG,MAAM,CAS9D"}
@@ -1,115 +0,0 @@
1
- export const DESKTOP_WORKSPACE_FOLDER = "/home/candidate/workspace";
2
- export function claudeDesktopUrl(alias) {
3
- if (!/^[a-zA-Z0-9][a-zA-Z0-9._-]*$/.test(alias))
4
- throw new Error("Invalid SSH host alias");
5
- return `claude://code/new?ssh_host=${encodeURIComponent(alias)}&ssh_folder=${encodeURIComponent(DESKTOP_WORKSPACE_FOLDER)}`;
6
- }
7
- export function desktopAppInstructions(app, alias) {
8
- if (app === "claude")
9
- return [
10
- "Open Claude Desktop (v2.110.0 or later), sign in, and confirm this SSH connection in the Code tab:",
11
- claudeDesktopUrl(alias),
12
- `SSH host: ${alias}`,
13
- `Project folder: ${DESKTOP_WORKSPACE_FOLDER}`,
14
- "Use the project folder directly rather than creating a worktree. Submit from your Litmus assessment page.",
15
- ];
16
- return [
17
- "If this workspace uses your own AI account, sign in to Codex on the workspace first:",
18
- ` ssh -t ${alias} codex login --device-auth`,
19
- "Open the printed link in your browser and enter the one-time code. Enable device code login in your ChatGPT security settings if needed.",
20
- "Open Codex App, then Settings > Connections > SSH.",
21
- `Add or enable SSH host: ${alias}`,
22
- `Choose project folder: ${DESKTOP_WORKSPACE_FOLDER}`,
23
- "Start a chat in that remote project. Submit from your Litmus assessment page.",
24
- ];
25
- }
26
- /** Validate remote configuration without printing credentials or candidate content. */
27
- export function desktopAppConfigurationScript(app) {
28
- const common = `import json,os,pathlib,tomllib,urllib.parse
29
- home=pathlib.Path.home()
30
- def require(ok):
31
- if not ok: raise ValueError("Desktop app configuration is incomplete")
32
- proxy=urllib.parse.urlparse(os.environ.get("HTTPS_PROXY",""))
33
- require(proxy.scheme in ("http","https") and bool(proxy.hostname))
34
- ca=pathlib.Path(os.environ.get("NODE_EXTRA_CA_CERTS","/nonexistent"))
35
- require(ca.is_file() and os.access(ca,os.R_OK))
36
- `;
37
- if (app === "claude")
38
- return common + `s=json.loads((home/".claude/settings.json").read_text())
39
- require(isinstance(s,dict) and s.get("disableAllHooks") is not True)
40
- h=s.get("hooks",{})
41
- command="node /opt/litmus/lib/hook-logger.cjs claude /home/candidate/workspace --hosted-workspace /home/candidate"
42
- for event in ("UserPromptSubmit","Stop"):
43
- entries=[e for g in h.get(event,[]) if g.get("matcher") is None for e in g.get("hooks",[]) if e.get("command")==command and e.get("type")=="command" and isinstance(e.get("timeout"),(int,float)) and e["timeout"]>=15 and not e.get("async",False)]
44
- require(len(entries)==1)
45
- env=s.get("env",{})
46
- require(isinstance(env,dict) and env.get("CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC")=="1")
47
- for key in ("HTTPS_PROXY","HTTP_PROXY","NODE_EXTRA_CA_CERTS"):
48
- require(key not in env or env[key]==os.environ.get(key))
49
- # Authentication may be supplied by Desktop sign-in. If workspace pre-auth is set,
50
- # both its route and credential must be present; never print either value.
51
- base=os.environ.get("ANTHROPIC_BASE_URL","")
52
- if base:
53
- require(urllib.parse.urlparse(base).scheme in ("http","https") and bool(urllib.parse.urlparse(base).hostname))
54
- require(bool(os.environ.get("ANTHROPIC_AUTH_TOKEN") or os.environ.get("ANTHROPIC_API_KEY")))
55
- print("ready")
56
- `;
57
- return common + `config=tomllib.loads((home/".codex/config.toml").read_text())
58
- require(config.get("check_for_update_on_startup") is False)
59
- require(config.get("sandbox_mode")=="danger-full-access")
60
- require(config.get("features",{}).get("hooks") is not False)
61
- daemon=json.loads((home/".codex/app-server-daemon/settings.json").read_text())
62
- require(daemon.get("updater",{}).get("autoUpdateEnabled") is False)
63
- provider=config.get("model_provider")
64
- if provider=="litmus":
65
- route=config.get("model_providers",{}).get("litmus",{})
66
- require(route.get("wire_api")=="responses")
67
- url=urllib.parse.urlparse(route.get("base_url",""))
68
- require(url.scheme in ("http","https") and bool(url.hostname))
69
- require(bool(os.environ.get(route.get("env_key",""))))
70
- require(route.get("http_headers",{}).get("X-Litmus-Client")=="codex")
71
- else:
72
- # Personal account sign-in is supported; an unknown provider is not our config.
73
- require(provider in (None,"openai"))
74
- print("ready")
75
- `;
76
- }
77
- function shellQuote(value) { return "'" + value.replace(/'/g, "'\\''") + "'"; }
78
- /** Exercise the baked recorder, since a valid hook command can still point to an
79
- * older image that records prose but drops desktop tool calls and results. */
80
- export function desktopAppCaptureScript(app) {
81
- const rows = app === "claude" ? [
82
- { type: "user", message: { content: "desktop capture capability check" } },
83
- { type: "assistant", message: { content: [{ type: "tool_use", id: "litmus-capability", name: "Bash", input: { command: "true" } }] } },
84
- { type: "user", message: { content: [{ type: "tool_result", tool_use_id: "litmus-capability", content: "ok" }] } },
85
- ] : [
86
- { type: "event_msg", payload: { type: "user_message", message: "desktop capture capability check" } },
87
- { type: "response_item", payload: { type: "function_call", call_id: "litmus-capability", name: "exec_command", arguments: "{}" } },
88
- { type: "response_item", payload: { type: "function_call_output", call_id: "litmus-capability", output: "ok" } },
89
- ];
90
- const transcript = rows.map(row => JSON.stringify(row)).join("\n");
91
- return `const assert = require('node:assert/strict');
92
- const { parseToolEvidence } = require('/opt/litmus/lib/hook-logger.cjs');
93
- assert.equal(typeof parseToolEvidence, 'function');
94
- const trace = parseToolEvidence(${JSON.stringify(transcript)}, ${JSON.stringify(app)});
95
- assert.equal(trace.version, 1);
96
- assert.equal(trace.complete, true);
97
- assert.equal(trace.records.length, 2);
98
- assert.equal(trace.records[0].kind, 'call');
99
- assert.equal(trace.records[0].id, 'litmus-capability');
100
- assert.equal(trace.records[0].input.text, ${JSON.stringify(app === "claude" ? '{"command":"true"}' : "{}")});
101
- assert.equal(trace.records[1].kind, 'result');
102
- assert.equal(trace.records[1].id, 'litmus-capability');
103
- assert.equal(trace.records[1].output.text, 'ok');`;
104
- }
105
- export function desktopAppProbeCommand(app) {
106
- const configuration = `python3 -c ${shellQuote(desktopAppConfigurationScript(app))}`;
107
- const capture = `node -e ${shellQuote(desktopAppCaptureScript(app))} >/dev/null 2>&1`;
108
- if (app === "codex") {
109
- // Reuse the image's exact hook/requirements/node verifier, including root ownership,
110
- // rather than maintaining another approximation of its shell command contract.
111
- return "bash -lc 'command -v codex >/dev/null && codex app-server --help >/dev/null 2>&1' && python3 /opt/litmus/lib/install_codex_hook.py verify --expect-root-owned --expect-node >/dev/null 2>&1 && test -r /opt/litmus/lib/hook-logger.cjs && " + capture + " && " + configuration;
112
- }
113
- return "command -v node >/dev/null && test -r /opt/litmus/lib/hook-logger.cjs && " + capture + " && " + configuration;
114
- }
115
- //# sourceMappingURL=desktop-app.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"desktop-app.js","sourceRoot":"","sources":["../../src/lib/desktop-app.ts"],"names":[],"mappings":"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"}