@synkro-sh/cli 1.7.24 → 1.7.27

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
@@ -269,14 +269,10 @@ function installCCHooks(settingsPath, config) {
269
269
  ],
270
270
  [SYNKRO_MARKER]: true
271
271
  });
272
- settings.env = settings.env ?? {};
273
- const existingBaseUrl = settings.env.ANTHROPIC_BASE_URL;
274
- if (!existingBaseUrl || existingBaseUrl === USAGE_PROXY_URL) {
275
- settings.env.ANTHROPIC_BASE_URL = USAGE_PROXY_URL;
276
- } else {
277
- console.warn(` \u26A0 ANTHROPIC_BASE_URL already set to ${existingBaseUrl} \u2014 leaving it; live usage capture is off for this agent.`);
272
+ if (settings.env && settings.env.ANTHROPIC_BASE_URL === USAGE_PROXY_URL) {
273
+ delete settings.env.ANTHROPIC_BASE_URL;
274
+ if (Object.keys(settings.env).length === 0) delete settings.env;
278
275
  }
279
- if (Object.keys(settings.env).length === 0) delete settings.env;
280
276
  writeSettingsAtomic(settingsPath, settings);
281
277
  }
282
278
  function uninstallCCHooks(settingsPath) {
@@ -7146,6 +7142,15 @@ async function main() {
7146
7142
  const usage = aggregateUsage(transcriptPath, { modelFallback });
7147
7143
  emitUsageTick({ sessionId, usage, hookType: 'prompt_submit', gitRepo, modelFallback });
7148
7144
  }
7145
+ // Nudge the local container to refresh account-wide coding-agent usage OUT OF BAND.
7146
+ // The endpoint returns 202 immediately and does its own Anthropic ping, so this
7147
+ // never gates the prompt; a stopped container just fails the fetch fast (caught).
7148
+ try {
7149
+ const usagePort = process.env.SYNKRO_MCP_HOST_PORT || '18931';
7150
+ await fetch('http://127.0.0.1:' + usagePort + '/api/local/usage-poll', {
7151
+ method: 'POST', signal: AbortSignal.timeout(1200),
7152
+ }).catch(() => {});
7153
+ } catch {}
7149
7154
  outputEmpty();
7150
7155
  } catch {
7151
7156
  outputEmpty();
@@ -10563,13 +10568,14 @@ async function dockerInstall(opts = {}) {
10563
10568
  }
10564
10569
  mkdirSync8(CURSOR_CREDS_DIR, { recursive: true });
10565
10570
  if (needsKeychainBridge()) {
10566
- if (claudeWorkers > 0) {
10567
- const path = exportKeychainCreds();
10568
- if (!path) {
10571
+ const claudeCredsPath = exportKeychainCreds();
10572
+ if (!claudeCredsPath) {
10573
+ if (claudeWorkers > 0) {
10569
10574
  throw new DockerInstallError(
10570
10575
  "Claude Code keychain entry not found. Run `claude login` (or open Claude Code and sign in) before installing the container."
10571
10576
  );
10572
10577
  }
10578
+ console.warn(" \u26A0 Claude Code keychain entry not found \u2014 live usage telemetry stays off until you sign in to Claude Code (grading is unaffected).");
10573
10579
  }
10574
10580
  if (cursorWorkers > 0 && !cursorApiKeyConfigured()) {
10575
10581
  console.warn(" \u26A0 No Cursor API key found \u2014 Cursor grader workers will be idle.");
@@ -10623,8 +10629,6 @@ async function dockerInstall(opts = {}) {
10623
10629
  "-p",
10624
10630
  `127.0.0.1:${HOST_CWE_PORT}:8930`,
10625
10631
  "-p",
10626
- `127.0.0.1:${HOST_USAGE_PROXY_PORT}:8927`,
10627
- "-p",
10628
10632
  `127.0.0.1:${HOST_PGLITE_PORT}:5433`,
10629
10633
  "-v",
10630
10634
  `${PGDATA_PATH}:/data/pgdata`,
@@ -10875,7 +10879,7 @@ function checkPgdata() {
10875
10879
  if (!hasPgControl) return { healthy: false, details: "pg_control/global directory missing" };
10876
10880
  return { healthy: true, details: `${entries.length} entries, WAL present, no stale PID` };
10877
10881
  }
10878
- var SYNKRO_DIR2, MCP_JWT_PATH, PGDATA_PATH, CLAUDE_HOST_STATE_DIR, CLAUDE_HOST_STATE_FILE, HOST_MCP_PORT, HOST_GRADER_PORT, HOST_CWE_PORT, HOST_USAGE_PROXY_PORT, HOST_PGLITE_PORT, CONTAINER_NAME, DEFAULT_IMAGE, DockerInstallError, BACKUP_DIR;
10882
+ var SYNKRO_DIR2, MCP_JWT_PATH, PGDATA_PATH, CLAUDE_HOST_STATE_DIR, CLAUDE_HOST_STATE_FILE, HOST_MCP_PORT, HOST_GRADER_PORT, HOST_CWE_PORT, HOST_PGLITE_PORT, CONTAINER_NAME, DEFAULT_IMAGE, DockerInstallError, BACKUP_DIR;
10879
10883
  var init_dockerInstall = __esm({
10880
10884
  "cli/local-cc/dockerInstall.ts"() {
10881
10885
  "use strict";
@@ -10889,7 +10893,6 @@ var init_dockerInstall = __esm({
10889
10893
  HOST_MCP_PORT = parseInt(process.env.SYNKRO_HOST_MCP_PORT || "18931", 10);
10890
10894
  HOST_GRADER_PORT = parseInt(process.env.SYNKRO_HOST_GRADER_PORT || "18929", 10);
10891
10895
  HOST_CWE_PORT = parseInt(process.env.SYNKRO_HOST_CWE_PORT || "18930", 10);
10892
- HOST_USAGE_PROXY_PORT = parseInt(process.env.SYNKRO_HOST_USAGE_PROXY_PORT || "18927", 10);
10893
10896
  HOST_PGLITE_PORT = parseInt(process.env.SYNKRO_HOST_PGLITE_PORT || "15433", 10);
10894
10897
  CONTAINER_NAME = "synkro-server";
10895
10898
  DEFAULT_IMAGE = "ghcr.io/synkro-sh/synkro-server:latest";
@@ -11756,7 +11759,7 @@ function writeConfigEnv(opts) {
11756
11759
  `SYNKRO_CREDENTIALS_PATH=${shellQuoteSingle(credsPath)}`,
11757
11760
  `SYNKRO_TIER=${shellQuoteSingle(safeTier)}`,
11758
11761
  `SYNKRO_INFERENCE=${shellQuoteSingle(safeInference)}`,
11759
- `SYNKRO_VERSION=${shellQuoteSingle("1.7.24")}`
11762
+ `SYNKRO_VERSION=${shellQuoteSingle("1.7.27")}`
11760
11763
  ];
11761
11764
  if (safeSynkroBin) lines.push(`SYNKRO_CLI_BIN=${shellQuoteSingle(safeSynkroBin)}`);
11762
11765
  if (safeUserId) lines.push(`SYNKRO_USER_ID=${shellQuoteSingle(safeUserId)}`);
@@ -15962,7 +15965,7 @@ var args = process.argv.slice(2);
15962
15965
  var cmd = args[0] || "";
15963
15966
  var subArgs = args.slice(1);
15964
15967
  function printVersion() {
15965
- console.log("1.7.24");
15968
+ console.log("1.7.27");
15966
15969
  }
15967
15970
  function printHelp2() {
15968
15971
  console.log(`Synkro CLI \u2014 runtime safety for AI coding agents