@synkro-sh/cli 1.6.64 → 1.6.66

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/dist/bootstrap.js CHANGED
@@ -10318,7 +10318,7 @@ function writeConfigEnv(opts) {
10318
10318
  `SYNKRO_CREDENTIALS_PATH=${shellQuoteSingle(credsPath)}`,
10319
10319
  `SYNKRO_TIER=${shellQuoteSingle(safeTier)}`,
10320
10320
  `SYNKRO_INFERENCE=${shellQuoteSingle(safeInference)}`,
10321
- `SYNKRO_VERSION=${shellQuoteSingle("1.6.64")}`
10321
+ `SYNKRO_VERSION=${shellQuoteSingle("1.6.66")}`
10322
10322
  ];
10323
10323
  if (safeSynkroBin) lines.push(`SYNKRO_CLI_BIN=${shellQuoteSingle(safeSynkroBin)}`);
10324
10324
  if (safeUserId) lines.push(`SYNKRO_USER_ID=${shellQuoteSingle(safeUserId)}`);
@@ -10398,6 +10398,33 @@ async function provisionCloudContainer(opts) {
10398
10398
  setupToken = "";
10399
10399
  }
10400
10400
  }
10401
+ async function printWorkerDebug(base, jwt2) {
10402
+ try {
10403
+ console.warn(" \u2500\u2500 container worker logs (the actual claude error) \u2500\u2500");
10404
+ const r = await fetch(`${base}/debug`, { headers: { Authorization: `Bearer ${jwt2}` }, signal: AbortSignal.timeout(9e4) });
10405
+ const d = await r.json().catch(() => null);
10406
+ if (!d || !Array.isArray(d.workers)) {
10407
+ console.warn(` (worker debug unavailable: HTTP ${r.status})
10408
+ `);
10409
+ return;
10410
+ }
10411
+ for (const w of d.workers) {
10412
+ console.warn(` [${w.worker}] log:`);
10413
+ for (const l of String(w.logTail || "").split("\n").filter((l2) => l2.trim()).slice(-10)) console.warn(" " + l.slice(0, 240));
10414
+ if (w.pane && !w.pane.startsWith("(no pane")) {
10415
+ console.warn(` [${w.worker}] claude screen:`);
10416
+ for (const l of String(w.pane).split("\n").filter((l2) => l2.trim()).slice(-14)) console.warn(" " + l.slice(0, 240));
10417
+ }
10418
+ }
10419
+ if (Array.isArray(d.sick_pool) && d.sick_pool.length) {
10420
+ console.warn(" sick workers:");
10421
+ for (const s of d.sick_pool) console.warn(` ${s.kind}: ${s.sickReason || "(no reason)"}`);
10422
+ }
10423
+ console.warn("");
10424
+ } catch {
10425
+ console.warn(" (could not fetch worker debug)\n");
10426
+ }
10427
+ }
10401
10428
  async function verifyCloudGrader(jwt2) {
10402
10429
  const base = (process.env.SYNKRO_CONTAINERS_URL || "https://containers.synkro.sh").replace(/\/$/, "");
10403
10430
  console.log(" Warming the cloud grader (booting container + checking workers)...");
@@ -10449,11 +10476,13 @@ async function verifyCloudGrader(jwt2) {
10449
10476
  console.warn(" \u2192 the worker returned an error; most often a bad/expired Claude setup-token.");
10450
10477
  }
10451
10478
  console.warn(" Re-run `synkro install` \u2192 cloud to re-authorize the hosted worker.\n");
10479
+ await printWorkerDebug(base, jwt2);
10452
10480
  return false;
10453
10481
  } catch (e) {
10454
10482
  const reason = e?.name === "TimeoutError" ? "the grade never returned within 120s (worker hung \u2014 usually claude auth)" : `the request failed (${e?.message || "network"})`;
10455
10483
  console.warn(` \u2717 smoke grade FAILED: ${reason}.`);
10456
10484
  console.warn(" The container is provisioned but a grade does not complete; re-run `synkro install` \u2192 cloud.\n");
10485
+ await printWorkerDebug(base, jwt2);
10457
10486
  return false;
10458
10487
  }
10459
10488
  }
@@ -13862,7 +13891,7 @@ var args = process.argv.slice(2);
13862
13891
  var cmd = args[0] || "";
13863
13892
  var subArgs = args.slice(1);
13864
13893
  function printVersion() {
13865
- console.log("1.6.64");
13894
+ console.log("1.6.66");
13866
13895
  }
13867
13896
  function printHelp2() {
13868
13897
  console.log(`Synkro CLI \u2014 runtime safety for AI coding agents