@synkro-sh/cli 1.7.66 → 1.7.70

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
@@ -132,7 +132,7 @@ function getIdentity() {
132
132
  if (cached2) return cached2;
133
133
  let cliVersion = "0.0.0";
134
134
  try {
135
- cliVersion = "1.7.66";
135
+ cliVersion = "1.7.70";
136
136
  } catch {
137
137
  }
138
138
  const creds = loadCredentialsIdentity();
@@ -795,7 +795,7 @@ var init_wire = __esm({
795
795
  BATCH_BYTES = 1024 * 1024;
796
796
  REQUEST_TIMEOUT_MS = 15e3;
797
797
  TELEMETRY_BODY_MAX = 4 * 1024 * 1024;
798
- UNRECOVERABLE_STATUSES = [400, 413, 422];
798
+ UNRECOVERABLE_STATUSES = [400, 409, 413, 422];
799
799
  }
800
800
  });
801
801
 
@@ -2755,6 +2755,7 @@ process.stdout.write('{}\\n');
2755
2755
  // cli/auth/stub.ts
2756
2756
  var stub_exports = {};
2757
2757
  __export(stub_exports, {
2758
+ authedFetch: () => authedFetch,
2758
2759
  authenticate: () => authenticate,
2759
2760
  clearCredentials: () => clearCredentials,
2760
2761
  ensureValidToken: () => ensureValidToken,
@@ -3049,8 +3050,10 @@ async function refreshToken() {
3049
3050
  }
3050
3051
  }
3051
3052
  async function ensureValidToken() {
3052
- if (!isAuthenticated()) return false;
3053
+ const creds = loadCredentials();
3054
+ if (!creds?.access_token && !creds?.refresh_token) return false;
3053
3055
  if (isTokenExpired()) {
3056
+ if (!creds.refresh_token) return false;
3054
3057
  if (!refreshPromise) {
3055
3058
  refreshPromise = refreshToken().finally(() => {
3056
3059
  refreshPromise = null;
@@ -3058,12 +3061,23 @@ async function ensureValidToken() {
3058
3061
  }
3059
3062
  const refreshed = await refreshPromise;
3060
3063
  if (!refreshed) {
3061
- clearCredentials();
3062
3064
  return false;
3063
3065
  }
3064
3066
  }
3065
3067
  return true;
3066
3068
  }
3069
+ async function authedFetch(url, init = {}) {
3070
+ const withToken = () => ({
3071
+ ...init,
3072
+ headers: { ...init.headers, Authorization: `Bearer ${getAccessToken() ?? ""}` }
3073
+ });
3074
+ await ensureValidToken();
3075
+ let res = await fetch(url, withToken());
3076
+ if (res.status === 401 && await refreshToken()) {
3077
+ res = await fetch(url, withToken());
3078
+ }
3079
+ return res;
3080
+ }
3067
3081
  function clearCredentials() {
3068
3082
  if (existsSync14(AUTH_FILE)) {
3069
3083
  unlinkSync4(AUTH_FILE);
@@ -6310,7 +6324,7 @@ async function promptDeployLocation(current = "local") {
6310
6324
  rl.question(
6311
6325
  `Where should Synkro run?
6312
6326
  local \u2014 a grading container on this machine (Docker)
6313
- cloud \u2014 a private container hosted by Synkro (Cloudflare)
6327
+ cloud \u2014 a private container hosted by Synkro
6314
6328
  Both use your own Claude key. Choose [${current}] / ${other}: `,
6315
6329
  (answer) => {
6316
6330
  rl.close();
@@ -6467,7 +6481,7 @@ function writeConfigEnv(opts) {
6467
6481
  `SYNKRO_CREDENTIALS_PATH=${shellQuoteSingle2(credsPath)}`,
6468
6482
  `SYNKRO_TIER=${shellQuoteSingle2(safeTier)}`,
6469
6483
  `SYNKRO_INFERENCE=${shellQuoteSingle2(safeInference)}`,
6470
- `SYNKRO_VERSION=${shellQuoteSingle2("1.7.66")}`
6484
+ `SYNKRO_VERSION=${shellQuoteSingle2("1.7.70")}`
6471
6485
  ];
6472
6486
  if (safeSynkroBin) lines.push(`SYNKRO_CLI_BIN=${shellQuoteSingle2(safeSynkroBin)}`);
6473
6487
  if (safeUserId) lines.push(`SYNKRO_USER_ID=${shellQuoteSingle2(safeUserId)}`);
@@ -7127,7 +7141,7 @@ async function installCommand(opts = {}) {
7127
7141
  await setTelemetryState({ enabled: true, remoteFlushEnabled: telemetryConsent });
7128
7142
  emit("install", {
7129
7143
  phase: "started",
7130
- cli_version_to: "1.7.66",
7144
+ cli_version_to: "1.7.70",
7131
7145
  agents_detected: agents.map((a) => a.kind),
7132
7146
  with_github: false,
7133
7147
  with_local_cc: false,
@@ -11016,7 +11030,7 @@ var subArgs = args.slice(1);
11016
11030
  var isDetachedChild = process.env.SYNKRO_TELEMETRY_DETACHED === "1";
11017
11031
  var FLUSH_SKIP = /* @__PURE__ */ new Set(["grade", "version", "--version", "-v", "help", "--help", "-h", ""]);
11018
11032
  function printVersion() {
11019
- console.log("1.7.66");
11033
+ console.log("1.7.70");
11020
11034
  }
11021
11035
  function printHelp2() {
11022
11036
  console.log(`Synkro CLI \u2014 runtime safety for AI coding agents