@duheso/zerocli 0.9.1 → 0.9.3

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 (2) hide show
  1. package/dist/cli.mjs +177 -194
  2. package/package.json +1 -1
package/dist/cli.mjs CHANGED
@@ -114190,15 +114190,16 @@ function getPublicModelDisplayName(model) {
114190
114190
  "gpt-5.1-codex-mini": "GPT-5.1 Codex mini",
114191
114191
  "gpt-4o": "GPT-4o",
114192
114192
  "gpt-4.1": "GPT-4.1",
114193
- "claude-opus-4.6": "Zero Opus 4.6",
114194
- "claude-opus-4.5": "Zero Opus 4.5",
114195
- "claude-sonnet-4.6": "Zero Sonnet 4.6",
114196
- "claude-sonnet-4.5": "Zero Sonnet 4.5",
114197
- "claude-haiku-4.5": "Zero Haiku 4.5",
114193
+ "claude-opus-4.6": "Claude Opus 4.6",
114194
+ "claude-opus-4.5": "Claude Opus 4.5",
114195
+ "claude-sonnet-4.6": "Claude Sonnet 4.6",
114196
+ "claude-sonnet-4.5": "Claude Sonnet 4.5",
114197
+ "claude-haiku-4.5": "Claude Haiku 4.5",
114198
114198
  "gemini-3.1-pro-preview": "Gemini 3.1 Pro Preview",
114199
114199
  "gemini-3-flash-preview": "Gemini 3 Flash",
114200
114200
  "gemini-2.5-pro": "Gemini 2.5 Pro",
114201
- "grok-code-fast-1": "Grok Code Fast 1"
114201
+ "grok-code-fast-1": "Grok Code Fast 1",
114202
+ "qwen3.6-27b": "Qwen 3.6 27B"
114202
114203
  };
114203
114204
  if (copilotModelNames[model]) {
114204
114205
  return copilotModelNames[model];
@@ -114276,9 +114277,9 @@ function renderModelName(model) {
114276
114277
  function getPublicModelName(model) {
114277
114278
  const publicName = getPublicModelDisplayName(model);
114278
114279
  if (publicName) {
114279
- return `Zero ${publicName}`;
114280
+ return `ZeroCLI - ${publicName}`;
114280
114281
  }
114281
- return `Zero (${model})`;
114282
+ return `ZeroCLI - ${model}`;
114282
114283
  }
114283
114284
  function parseUserSpecifiedModel(modelInput) {
114284
114285
  const modelInputTrimmed = normalizeModelSetting(modelInput);
@@ -119191,7 +119192,7 @@ function buildProviderInfoLines() {
119191
119192
  const sLen = ` ● ${sL} ${sReady}`.length;
119192
119193
  out.push(boxRow(sRow, W2, sLen));
119193
119194
  out.push(`${rgb(...BORDER)}╚${"═".repeat(W2 - 2)}╝${RESET}`);
119194
- out.push(` ${DIM}${rgb(...DIMCOL)}zero ${RESET}${rgb(...ACCENT)}v${"0.9.1"}${RESET}`);
119195
+ out.push(` ${DIM}${rgb(...DIMCOL)}zero ${RESET}${rgb(...ACCENT)}v${"0.9.3"}${RESET}`);
119195
119196
  return out;
119196
119197
  }
119197
119198
  function printStartupScreen() {}
@@ -147382,7 +147383,7 @@ function getAttributionHeader(fingerprint) {
147382
147383
  if (!isAttributionHeaderEnabled()) {
147383
147384
  return "";
147384
147385
  }
147385
- const version2 = `${"0.9.1"}.${fingerprint}`;
147386
+ const version2 = `${"0.9.3"}.${fingerprint}`;
147386
147387
  const entrypoint = process.env.CLAUDE_CODE_ENTRYPOINT ?? "unknown";
147387
147388
  const cch = "";
147388
147389
  const workload = getWorkload();
@@ -188920,7 +188921,10 @@ function tokenCountFromLastAPIResponse(messages) {
188920
188921
  const message = messages[i3];
188921
188922
  const usage = message ? getTokenUsage(message) : undefined;
188922
188923
  if (usage) {
188923
- return getTokenCountFromUsage(usage);
188924
+ const count3 = getTokenCountFromUsage(usage);
188925
+ if (count3 > 0) {
188926
+ return count3;
188927
+ }
188924
188928
  }
188925
188929
  i3--;
188926
188930
  }
@@ -188987,21 +188991,24 @@ function tokenCountWithEstimation(messages) {
188987
188991
  const message = messages[i3];
188988
188992
  const usage = message ? getTokenUsage(message) : undefined;
188989
188993
  if (message && usage) {
188990
- const responseId = getAssistantMessageId(message);
188991
- if (responseId) {
188992
- let j = i3 - 1;
188993
- while (j >= 0) {
188994
- const prior = messages[j];
188995
- const priorId = prior ? getAssistantMessageId(prior) : undefined;
188996
- if (priorId === responseId) {
188997
- i3 = j;
188998
- } else if (priorId !== undefined) {
188999
- break;
188994
+ const usageCount = getTokenCountFromUsage(usage);
188995
+ if (usageCount > 0) {
188996
+ const responseId = getAssistantMessageId(message);
188997
+ if (responseId) {
188998
+ let j = i3 - 1;
188999
+ while (j >= 0) {
189000
+ const prior = messages[j];
189001
+ const priorId = prior ? getAssistantMessageId(prior) : undefined;
189002
+ if (priorId === responseId) {
189003
+ i3 = j;
189004
+ } else if (priorId !== undefined) {
189005
+ break;
189006
+ }
189007
+ j--;
189000
189008
  }
189001
- j--;
189002
189009
  }
189010
+ return usageCount + roughTokenCountEstimationForMessages(messages.slice(i3 + 1));
189003
189011
  }
189004
- return getTokenCountFromUsage(usage) + roughTokenCountEstimationForMessages(messages.slice(i3 + 1));
189005
189012
  }
189006
189013
  i3--;
189007
189014
  }
@@ -190386,7 +190393,7 @@ var init_imageValidation = __esm(() => {
190386
190393
 
190387
190394
  // src/utils/userAgent.ts
190388
190395
  function getZeroCodeUserAgent() {
190389
- return `claude-code/${"0.9.1"}`;
190396
+ return `claude-code/${"0.9.3"}`;
190390
190397
  }
190391
190398
 
190392
190399
  // src/utils/http.ts
@@ -190395,7 +190402,7 @@ function getUserAgent() {
190395
190402
  const clientApp = process.env.CLAUDE_AGENT_SDK_CLIENT_APP ? `, client-app/${process.env.CLAUDE_AGENT_SDK_CLIENT_APP}` : "";
190396
190403
  const workload = getWorkload();
190397
190404
  const workloadSuffix = workload ? `, workload/${workload}` : "";
190398
- return `claude-cli/${"0.9.1"} (${process.env.USER_TYPE}, ${process.env.CLAUDE_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
190405
+ return `claude-cli/${"0.9.3"} (${process.env.USER_TYPE}, ${process.env.CLAUDE_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
190399
190406
  }
190400
190407
  function getMCPUserAgent() {
190401
190408
  const parts = [];
@@ -190409,7 +190416,7 @@ function getMCPUserAgent() {
190409
190416
  parts.push(`client-app/${process.env.CLAUDE_AGENT_SDK_CLIENT_APP}`);
190410
190417
  }
190411
190418
  const suffix = parts.length > 0 ? ` (${parts.join(", ")})` : "";
190412
- return `claude-code/${"0.9.1"}${suffix}`;
190419
+ return `claude-code/${"0.9.3"}${suffix}`;
190413
190420
  }
190414
190421
  function getWebFetchUserAgent() {
190415
190422
  const supportUrl = getAPIProvider() === "firstParty" ? "https://support.anthropic.com/" : "https://github.com/Duheso/ZeroCLI";
@@ -193306,7 +193313,7 @@ class OpenAIShimMessages {
193306
193313
  } else if (maxCompletionTokensValue !== undefined) {
193307
193314
  body.max_completion_tokens = maxCompletionTokensValue;
193308
193315
  }
193309
- if (params.stream && !isLocalProviderUrl(request.baseUrl)) {
193316
+ if (params.stream) {
193310
193317
  body.stream_options = { include_usage: true };
193311
193318
  }
193312
193319
  const isGithub = isGithubModelsMode();
@@ -202209,7 +202216,7 @@ Run /share and post the JSON file to ${MACRO.FEEDBACK_CHANNEL}.`;
202209
202216
  }
202210
202217
  if (isZeroAISubscriber() && error42 instanceof APIError && error42.status === 400 && error42.message.toLowerCase().includes("invalid model name") && (isNonCustomOpusModel(model) || model === "opus")) {
202211
202218
  return createAssistantAPIErrorMessage({
202212
- content: "Zero Opus is not available with the Zero Pro plan. If you have updated your subscription plan recently, run /logout and /login for the plan to take effect.",
202219
+ content: "Claude Opus is not available with the Zero Pro plan. If you have updated your subscription plan recently, run /logout and /login for the plan to take effect.",
202213
202220
  error: "invalid_request"
202214
202221
  });
202215
202222
  }
@@ -202513,9 +202520,13 @@ async function* withRetry(getClient, operation, options2) {
202513
202520
  }
202514
202521
  if (client2 === null || lastError instanceof APIError && lastError.status === 401 || isOAuthTokenRevokedError(lastError) || isBedrockAuthError(lastError) || isVertexAuthError(lastError) || isStaleConnection) {
202515
202522
  if (lastError instanceof APIError && lastError.status === 401 || isOAuthTokenRevokedError(lastError)) {
202516
- const failedAccessToken = getZeroAIOAuthTokens()?.accessToken;
202517
- if (failedAccessToken) {
202518
- await handleOAuth401Error(failedAccessToken);
202523
+ if (isEnvTruthy(process.env.CLAUDE_CODE_USE_GITHUB)) {
202524
+ await refreshGithubModelsTokenIfNeeded();
202525
+ } else {
202526
+ const failedAccessToken = getZeroAIOAuthTokens()?.accessToken;
202527
+ if (failedAccessToken) {
202528
+ await handleOAuth401Error(failedAccessToken);
202529
+ }
202519
202530
  }
202520
202531
  }
202521
202532
  client2 = await getClient();
@@ -202873,6 +202884,7 @@ var init_withRetry = __esm(() => {
202873
202884
  init_auth();
202874
202885
  init_envUtils();
202875
202886
  init_errors();
202887
+ init_githubModelsCredentials();
202876
202888
  init_fastMode();
202877
202889
  init_model();
202878
202890
  init_proxy();
@@ -244838,7 +244850,7 @@ function getTelemetryAttributes() {
244838
244850
  attributes["session.id"] = sessionId;
244839
244851
  }
244840
244852
  if (shouldIncludeAttribute("OTEL_METRICS_INCLUDE_VERSION")) {
244841
- attributes["app.version"] = "0.9.1";
244853
+ attributes["app.version"] = "0.9.3";
244842
244854
  }
244843
244855
  const oauthAccount = getOauthAccountInfo();
244844
244856
  if (oauthAccount) {
@@ -257077,7 +257089,7 @@ function computeFingerprint(messageText, version2) {
257077
257089
  }
257078
257090
  function computeFingerprintFromMessages(messages) {
257079
257091
  const firstMessageText = extractFirstMessageText(messages);
257080
- return computeFingerprint(firstMessageText, "0.9.1");
257092
+ return computeFingerprint(firstMessageText, "0.9.3");
257081
257093
  }
257082
257094
  var FINGERPRINT_SALT = "59cf53e54c78";
257083
257095
  var init_fingerprint = () => {};
@@ -257119,7 +257131,7 @@ async function sideQuery(opts) {
257119
257131
  betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
257120
257132
  }
257121
257133
  const messageText = extractFirstUserMessageText(messages);
257122
- const fingerprint = computeFingerprint(messageText, "0.9.1");
257134
+ const fingerprint = computeFingerprint(messageText, "0.9.3");
257123
257135
  const attributionHeader = getAttributionHeader(fingerprint);
257124
257136
  const systemBlocks = [
257125
257137
  attributionHeader ? { type: "text", text: attributionHeader } : null,
@@ -266021,7 +266033,7 @@ var init_user = __esm(() => {
266021
266033
  deviceId,
266022
266034
  sessionId: getSessionId(),
266023
266035
  email: getEmail(),
266024
- appVersion: "0.9.1",
266036
+ appVersion: "0.9.3",
266025
266037
  platform: getHostPlatformForAnalytics(),
266026
266038
  organizationUuid,
266027
266039
  accountUuid,
@@ -266415,7 +266427,7 @@ async function initializeBetaTracing(resource) {
266415
266427
  });
266416
266428
  logs.setGlobalLoggerProvider(loggerProvider);
266417
266429
  setLoggerProvider(loggerProvider);
266418
- const eventLogger = logs.getLogger("com.anthropic.claude_code.events", "0.9.1");
266430
+ const eventLogger = logs.getLogger("com.anthropic.claude_code.events", "0.9.3");
266419
266431
  setEventLogger(eventLogger);
266420
266432
  process.on("beforeExit", async () => {
266421
266433
  await loggerProvider?.forceFlush();
@@ -266455,7 +266467,7 @@ async function initializeTelemetry() {
266455
266467
  const platform3 = getPlatform();
266456
266468
  const baseAttributes = {
266457
266469
  [ATTR_SERVICE_NAME3]: "claude-code",
266458
- [ATTR_SERVICE_VERSION3]: "0.9.1"
266470
+ [ATTR_SERVICE_VERSION3]: "0.9.3"
266459
266471
  };
266460
266472
  if (platform3 === "wsl") {
266461
266473
  const wslVersion = getWslVersion();
@@ -266500,7 +266512,7 @@ async function initializeTelemetry() {
266500
266512
  } catch {}
266501
266513
  };
266502
266514
  registerCleanup(shutdownTelemetry2);
266503
- return meterProvider2.getMeter("com.anthropic.claude_code", "0.9.1");
266515
+ return meterProvider2.getMeter("com.anthropic.claude_code", "0.9.3");
266504
266516
  }
266505
266517
  const meterProvider = new MeterProvider3({
266506
266518
  resource,
@@ -266520,7 +266532,7 @@ async function initializeTelemetry() {
266520
266532
  });
266521
266533
  logs.setGlobalLoggerProvider(loggerProvider);
266522
266534
  setLoggerProvider(loggerProvider);
266523
- const eventLogger = logs.getLogger("com.anthropic.claude_code.events", "0.9.1");
266535
+ const eventLogger = logs.getLogger("com.anthropic.claude_code.events", "0.9.3");
266524
266536
  setEventLogger(eventLogger);
266525
266537
  logForDebugging("[3P telemetry] Event logger set successfully");
266526
266538
  process.on("beforeExit", async () => {
@@ -266582,7 +266594,7 @@ Current timeout: ${timeoutMs}ms
266582
266594
  }
266583
266595
  };
266584
266596
  registerCleanup(shutdownTelemetry);
266585
- return meterProvider.getMeter("com.anthropic.claude_code", "0.9.1");
266597
+ return meterProvider.getMeter("com.anthropic.claude_code", "0.9.3");
266586
266598
  }
266587
266599
  async function flushTelemetry() {
266588
266600
  const meterProvider = getMeterProvider();
@@ -267394,9 +267406,9 @@ async function assertMinVersion() {
267394
267406
  }
267395
267407
  try {
267396
267408
  const versionConfig = await getDynamicConfig_BLOCKS_ON_INIT("tengu_version_config", { minVersion: "0.0.0" });
267397
- if (versionConfig.minVersion && lt("0.9.1", versionConfig.minVersion)) {
267409
+ if (versionConfig.minVersion && lt("0.9.3", versionConfig.minVersion)) {
267398
267410
  console.error(`
267399
- It looks like your version of ZeroCLI (${"0.9.1"}) needs an update.
267411
+ It looks like your version of ZeroCLI (${"0.9.3"}) needs an update.
267400
267412
  A newer version (${versionConfig.minVersion} or higher) is required to continue.
267401
267413
 
267402
267414
  To update, please run:
@@ -267612,7 +267624,7 @@ async function installGlobalPackage(specificVersion) {
267612
267624
  logError2(new AutoUpdaterError("Another process is currently installing an update"));
267613
267625
  logEvent("tengu_auto_updater_lock_contention", {
267614
267626
  pid: process.pid,
267615
- currentVersion: "0.9.1"
267627
+ currentVersion: "0.9.3"
267616
267628
  });
267617
267629
  return "in_progress";
267618
267630
  }
@@ -267621,7 +267633,7 @@ async function installGlobalPackage(specificVersion) {
267621
267633
  if (!env2.isRunningWithBun() && env2.isNpmFromWindowsPath()) {
267622
267634
  logError2(new Error("Windows NPM detected in WSL environment"));
267623
267635
  logEvent("tengu_auto_updater_windows_npm_in_wsl", {
267624
- currentVersion: "0.9.1"
267636
+ currentVersion: "0.9.3"
267625
267637
  });
267626
267638
  console.error(`
267627
267639
  Error: Windows NPM detected in WSL
@@ -268175,7 +268187,7 @@ async function getDoctorDiagnostic() {
268175
268187
  const installationType = await getCurrentInstallationType();
268176
268188
  let version2;
268177
268189
  try {
268178
- version2 = "0.9.1";
268190
+ version2 = "0.9.3";
268179
268191
  } catch {
268180
268192
  version2 = "unknown";
268181
268193
  }
@@ -269444,6 +269456,11 @@ async function cleanupStaleIdeLockfiles() {
269444
269456
  shouldDelete = true;
269445
269457
  }
269446
269458
  }
269459
+ } else {
269460
+ const isResponding = await checkIdeConnection(host, lockfileInfo.port);
269461
+ if (!isResponding) {
269462
+ shouldDelete = true;
269463
+ }
269447
269464
  }
269448
269465
  } else {
269449
269466
  const isResponding = await checkIdeConnection(host, lockfileInfo.port);
@@ -269641,7 +269658,7 @@ async function installIDEExtension(ideType) {
269641
269658
  let version2 = await getInstalledVSCodeExtensionVersion(command);
269642
269659
  if (!version2 || lt(version2, getZeroCodeVersion())) {
269643
269660
  await sleep2(500);
269644
- const result = await execFileNoThrowWithCwd(command, ["--force", "--install-extension", "anthropic.claude-code"], {
269661
+ const result = await execFileNoThrowWithCwd(command, ["--force", "--install-extension", "devnull-bootloader.zero-vscode"], {
269645
269662
  env: getInstallationEnv()
269646
269663
  });
269647
269664
  if (result.code !== 0) {
@@ -269664,7 +269681,7 @@ function getInstallationEnv() {
269664
269681
  return;
269665
269682
  }
269666
269683
  function getZeroCodeVersion() {
269667
- return "0.9.1";
269684
+ return "0.9.3";
269668
269685
  }
269669
269686
  async function getInstalledVSCodeExtensionVersion(command) {
269670
269687
  const { stdout } = await execFileNoThrow(command, ["--list-extensions", "--show-versions"], {
@@ -269674,7 +269691,7 @@ async function getInstalledVSCodeExtensionVersion(command) {
269674
269691
  `) || [];
269675
269692
  for (const line of lines) {
269676
269693
  const [extensionId, version2] = line.split("@");
269677
- if (extensionId === "anthropic.claude-code" && version2) {
269694
+ if (extensionId === "devnull-bootloader.zero-vscode" && version2) {
269678
269695
  return version2;
269679
269696
  }
269680
269697
  }
@@ -270139,7 +270156,7 @@ var init_ide = __esm(() => {
270139
270156
  logForDebugging("Unable to get Windows USERPROFILE via PowerShell - IDE detection may be incomplete");
270140
270157
  return;
270141
270158
  });
270142
- EXTENSION_ID = process.env.USER_TYPE === "ant" ? "anthropic.claude-code-internal" : "anthropic.claude-code";
270159
+ EXTENSION_ID = process.env.USER_TYPE === "ant" ? "anthropic.claude-code-internal" : "devnull-bootloader.zero-vscode";
270143
270160
  EDITOR_DISPLAY_NAMES = {
270144
270161
  code: "VS Code",
270145
270162
  cursor: "Cursor",
@@ -271031,8 +271048,8 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
271031
271048
  const maxVersion = await getMaxVersion();
271032
271049
  if (maxVersion && gt(version2, maxVersion)) {
271033
271050
  logForDebugging(`Native installer: maxVersion ${maxVersion} is set, capping update from ${version2} to ${maxVersion}`);
271034
- if (gte("0.9.1", maxVersion)) {
271035
- logForDebugging(`Native installer: current version ${"0.9.1"} is already at or above maxVersion ${maxVersion}, skipping update`);
271051
+ if (gte("0.9.3", maxVersion)) {
271052
+ logForDebugging(`Native installer: current version ${"0.9.3"} is already at or above maxVersion ${maxVersion}, skipping update`);
271036
271053
  logEvent("tengu_native_update_skipped_max_version", {
271037
271054
  latency_ms: Date.now() - startTime2,
271038
271055
  max_version: maxVersion,
@@ -271043,7 +271060,7 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
271043
271060
  version2 = maxVersion;
271044
271061
  }
271045
271062
  }
271046
- if (!forceReinstall && version2 === "0.9.1" && await versionIsAvailable(version2) && await isPossibleZeroBinary(executablePath)) {
271063
+ if (!forceReinstall && version2 === "0.9.3" && await versionIsAvailable(version2) && await isPossibleZeroBinary(executablePath)) {
271047
271064
  logForDebugging(`Found ${version2} at ${executablePath}, skipping install`);
271048
271065
  logEvent("tengu_native_update_complete", {
271049
271066
  latency_ms: Date.now() - startTime2,
@@ -368837,7 +368854,7 @@ function getAttributionTexts() {
368837
368854
  }
368838
368855
  const model = getMainLoopModel();
368839
368856
  const isKnownPublicModel = getPublicModelDisplayName(model) !== null;
368840
- const modelName = isInternalModelRepoCached() || isKnownPublicModel ? getPublicModelName(model) : "Zero Opus 4.6";
368857
+ const modelName = isInternalModelRepoCached() || isKnownPublicModel ? getPublicModelName(model) : "ZeroCLI";
368841
368858
  const defaultAttribution = "\uD83E\uDD16 Generated with [Zero CLI](https://github.com/Duheso/ZeroCLI)";
368842
368859
  const coAuthorDomain = getAPIProvider() === "firstParty" ? "anthropic.com" : "zerocli.dev";
368843
368860
  const defaultCommit = isEnvTruthy(process.env.ZERO_DISABLE_CO_AUTHORED_BY) ? "" : `Co-Authored-By: ${modelName} <noreply@${coAuthorDomain}>`;
@@ -376250,7 +376267,7 @@ function getAnthropicEnvMetadata() {
376250
376267
  function getBuildAgeMinutes() {
376251
376268
  if (false)
376252
376269
  ;
376253
- const buildTime = new Date("2026-05-06T02:05:28.033Z").getTime();
376270
+ const buildTime = new Date("2026-05-08T22:03:32.862Z").getTime();
376254
376271
  if (isNaN(buildTime))
376255
376272
  return;
376256
376273
  return Math.floor((Date.now() - buildTime) / 60000);
@@ -378731,7 +378748,9 @@ var init_sessionMemoryCompact = __esm(() => {
378731
378748
 
378732
378749
  // src/services/compact/autoCompact.ts
378733
378750
  function getEffectiveContextWindowSize(model) {
378734
- const reservedTokensForSummary = Math.min(getMaxOutputTokensForModel(model), MAX_OUTPUT_TOKENS_FOR_SUMMARY);
378751
+ const modelMaxOutput = getMaxOutputTokensForModel(model);
378752
+ const isOpenAIProvider = isEnvTruthy(process.env.CLAUDE_CODE_USE_OPENAI) || isEnvTruthy(process.env.CLAUDE_CODE_USE_GEMINI) || isEnvTruthy(process.env.CLAUDE_CODE_USE_GITHUB) || isEnvTruthy(process.env.CLAUDE_CODE_USE_MISTRAL);
378753
+ const reservedForOutput = isOpenAIProvider ? modelMaxOutput : Math.min(modelMaxOutput, MAX_OUTPUT_TOKENS_FOR_SUMMARY);
378735
378754
  let contextWindow = getContextWindowForModel(model, getSdkBetas());
378736
378755
  const autoCompactWindow = process.env.CLAUDE_CODE_AUTO_COMPACT_WINDOW;
378737
378756
  if (autoCompactWindow) {
@@ -378741,8 +378760,8 @@ function getEffectiveContextWindowSize(model) {
378741
378760
  }
378742
378761
  }
378743
378762
  const autocompactBuffer = 13000;
378744
- const effectiveContext = contextWindow - reservedTokensForSummary;
378745
- return Math.max(effectiveContext, reservedTokensForSummary + autocompactBuffer);
378763
+ const effectiveContext = contextWindow - reservedForOutput;
378764
+ return Math.max(effectiveContext, reservedForOutput + autocompactBuffer);
378746
378765
  }
378747
378766
  function getAutoCompactThreshold(model) {
378748
378767
  const effectiveContextWindow = getEffectiveContextWindowSize(model);
@@ -379405,7 +379424,7 @@ async function analyzeContextUsage(messages, model, getToolPermissionContext, to
379405
379424
  const totalIncludingReserved = actualUsage;
379406
379425
  const apiUsage = getCurrentUsage(originalMessages ?? messages);
379407
379426
  const totalFromAPI = apiUsage ? apiUsage.input_tokens + apiUsage.cache_creation_input_tokens + apiUsage.cache_read_input_tokens : null;
379408
- const finalTotalTokens = totalFromAPI ?? totalIncludingReserved;
379427
+ const finalTotalTokens = totalFromAPI ? totalFromAPI : totalIncludingReserved;
379409
379428
  const isNarrowScreen = terminalWidth && terminalWidth < 80;
379410
379429
  const GRID_WIDTH = contextWindow >= 1e6 ? isNarrowScreen ? 5 : 20 : isNarrowScreen ? 5 : 10;
379411
379430
  const GRID_HEIGHT = contextWindow >= 1e6 ? 10 : isNarrowScreen ? 5 : 10;
@@ -379713,7 +379732,7 @@ async function isToolSearchEnabled(model, tools, getToolPermissionContext, agent
379713
379732
  });
379714
379733
  }
379715
379734
  if (!modelSupportsToolReference(model)) {
379716
- logForDebugging(`Tool search disabled for model '${model}': model does not support tool_reference blocks. ` + `This feature is only available on Zero Sonnet 4+, Opus 4+, and newer models.`);
379735
+ logForDebugging(`Tool search disabled for model '${model}': model does not support tool_reference blocks. ` + `This feature is only available on Claude Sonnet 4+, Opus 4+, and newer models.`);
379717
379736
  logModeDecision(false, "standard", "model_unsupported");
379718
379737
  return false;
379719
379738
  }
@@ -403684,7 +403703,7 @@ async function setupSdkMcpClients(sdkMcpConfigs, sendMcpMessage) {
403684
403703
  const client2 = new Client({
403685
403704
  name: "claude-code",
403686
403705
  title: "ZeroCLI",
403687
- version: "0.9.1",
403706
+ version: "0.9.3",
403688
403707
  description: "Anthropic's agentic coding tool",
403689
403708
  websiteUrl: PRODUCT_URL
403690
403709
  }, {
@@ -404036,7 +404055,7 @@ var init_client7 = __esm(() => {
404036
404055
  const client2 = new Client({
404037
404056
  name: "claude-code",
404038
404057
  title: "ZeroCLI",
404039
- version: "0.9.1",
404058
+ version: "0.9.3",
404040
404059
  description: "Anthropic's agentic coding tool",
404041
404060
  websiteUrl: PRODUCT_URL
404042
404061
  }, {
@@ -414699,7 +414718,7 @@ function Feedback({
414699
414718
  platform: env2.platform,
414700
414719
  gitRepo: envInfo.isGit,
414701
414720
  terminal: env2.terminal,
414702
- version: "0.9.1",
414721
+ version: "0.9.3",
414703
414722
  transcript: normalizeMessagesForAPI(messages),
414704
414723
  errors: sanitizedErrors,
414705
414724
  lastApiRequest: getLastAPIRequest(),
@@ -414892,7 +414911,7 @@ function Feedback({
414892
414911
  ", ",
414893
414912
  env2.terminal,
414894
414913
  ", v",
414895
- "0.9.1"
414914
+ "0.9.3"
414896
414915
  ]
414897
414916
  })
414898
414917
  ]
@@ -415000,7 +415019,7 @@ ${sanitizedDescription}
415000
415019
  ` + `**Environment Info**
415001
415020
  ` + `- Platform: ${env2.platform}
415002
415021
  ` + `- Terminal: ${env2.terminal}
415003
- ` + `- Version: ${"0.9.1"}
415022
+ ` + `- Version: ${"0.9.3"}
415004
415023
  ` + feedbackIdLine + `
415005
415024
  **Errors**
415006
415025
  \`\`\`json
@@ -418153,7 +418172,7 @@ function buildPrimarySection() {
418153
418172
  });
418154
418173
  return [{
418155
418174
  label: "Version",
418156
- value: "0.9.1"
418175
+ value: "0.9.3"
418157
418176
  }, {
418158
418177
  label: "Session name",
418159
418178
  value: nameValue
@@ -419133,7 +419152,7 @@ var init_copilotModels = __esm(() => {
419133
419152
  },
419134
419153
  "claude-opus-4.6": {
419135
419154
  id: "claude-opus-4.6",
419136
- name: "Zero Opus 4.6",
419155
+ name: "Claude Opus 4.6",
419137
419156
  family: "claude-opus",
419138
419157
  attachment: true,
419139
419158
  reasoning: true,
@@ -419149,7 +419168,7 @@ var init_copilotModels = __esm(() => {
419149
419168
  },
419150
419169
  "claude-opus-4.5": {
419151
419170
  id: "claude-opus-4.5",
419152
- name: "Zero Opus 4.5",
419171
+ name: "Claude Opus 4.5",
419153
419172
  family: "claude-opus",
419154
419173
  attachment: true,
419155
419174
  reasoning: true,
@@ -419165,7 +419184,7 @@ var init_copilotModels = __esm(() => {
419165
419184
  },
419166
419185
  "claude-sonnet-4.6": {
419167
419186
  id: "claude-sonnet-4.6",
419168
- name: "Zero Sonnet 4.6",
419187
+ name: "Claude Sonnet 4.6",
419169
419188
  family: "claude-sonnet",
419170
419189
  attachment: true,
419171
419190
  reasoning: true,
@@ -419181,7 +419200,7 @@ var init_copilotModels = __esm(() => {
419181
419200
  },
419182
419201
  "claude-sonnet-4.5": {
419183
419202
  id: "claude-sonnet-4.5",
419184
- name: "Zero Sonnet 4.5",
419203
+ name: "Claude Sonnet 4.5",
419185
419204
  family: "claude-sonnet",
419186
419205
  attachment: true,
419187
419206
  reasoning: true,
@@ -419197,7 +419216,7 @@ var init_copilotModels = __esm(() => {
419197
419216
  },
419198
419217
  "claude-haiku-4.5": {
419199
419218
  id: "claude-haiku-4.5",
419200
- name: "Zero Haiku 4.5",
419219
+ name: "Claude Haiku 4.5",
419201
419220
  family: "claude-haiku",
419202
419221
  attachment: true,
419203
419222
  reasoning: true,
@@ -422923,7 +422942,7 @@ function Config({
422923
422942
  }
422924
422943
  })
422925
422944
  }) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_runtime181.jsx(ChannelDowngradeDialog, {
422926
- currentVersion: "0.9.1",
422945
+ currentVersion: "0.9.3",
422927
422946
  onChoice: (choice) => {
422928
422947
  setShowSubmenu(null);
422929
422948
  setTabsHidden(false);
@@ -422935,7 +422954,7 @@ function Config({
422935
422954
  autoUpdatesChannel: "stable"
422936
422955
  };
422937
422956
  if (choice === "stay") {
422938
- newSettings.minimumVersion = "0.9.1";
422957
+ newSettings.minimumVersion = "0.9.3";
422939
422958
  }
422940
422959
  updateSettingsForSource("userSettings", newSettings);
422941
422960
  setSettingsData((prev_27) => ({
@@ -429876,7 +429895,7 @@ function UpdateScreen({ onDone }) {
429876
429895
  setState({ type: "dev-build" });
429877
429896
  return;
429878
429897
  }
429879
- const currentVersion = "0.9.1";
429898
+ const currentVersion = "0.9.3";
429880
429899
  const channel2 = getInitialSettings()?.autoUpdatesChannel ?? "latest";
429881
429900
  const latestVersion = await getLatestVersion(channel2);
429882
429901
  if (!latestVersion) {
@@ -430132,7 +430151,7 @@ function OnboardGithub(props) {
430132
430151
  onChangeAPIKey
430133
430152
  });
430134
430153
  if (!activated.ok) {
430135
- setErrorMsg(`Token saved, but settings were not updated: ${activated.detail ?? "unknown error"}. ` + `Add env CLAUDE_CODE_USE_GITHUB=1 and OPENAI_MODEL to ~/.claude/settings.json manually.`);
430154
+ setErrorMsg(`Token saved, but settings were not updated: ${activated.detail ?? "unknown error"}. ` + `Add env CLAUDE_CODE_USE_GITHUB=1 and OPENAI_MODEL to your user settings.json manually.`);
430136
430155
  setStep("error");
430137
430156
  return;
430138
430157
  }
@@ -430143,7 +430162,7 @@ function OnboardGithub(props) {
430143
430162
  process.env.OPENAI_MODEL = model.trim() || DEFAULT_MODEL;
430144
430163
  hydrateGithubModelsTokenFromSecureStorage();
430145
430164
  onChangeAPIKey();
430146
- onDone("GitHub Copilot onboard complete. Copilot token and OAuth token stored in secure storage (Windows/Linux: ~/.claude/.credentials.json, macOS: Keychain fallback to ~/.claude/.credentials.json); user settings updated. Restart if the model does not switch.", { display: "user" });
430165
+ onDone("GitHub Copilot onboard complete. Copilot token and OAuth token stored in secure storage (Windows/Linux: ~/.zerocli/.credentials.json, macOS: Keychain fallback to ~/.zerocli/.credentials.json); user settings updated. Restart if the model does not switch.", { display: "user" });
430147
430166
  }, [onChangeAPIKey, onDone]);
430148
430167
  const runDeviceFlow = import_react121.useCallback(async () => {
430149
430168
  setStep("device-busy");
@@ -431987,7 +432006,7 @@ function HelpV2(t0) {
431987
432006
  let t6;
431988
432007
  if ($2[31] !== tabs) {
431989
432008
  t6 = /* @__PURE__ */ jsx_runtime211.jsx(Tabs, {
431990
- title: `ZeroCLI v${"0.9.1"}`,
432009
+ title: `ZeroCLI v${"0.9.3"}`,
431991
432010
  color: "professionalBlue",
431992
432011
  defaultTab: "general",
431993
432012
  children: tabs
@@ -456831,7 +456850,7 @@ function getAllReleaseNotes(changelogContent = getStoredChangelogFromMemory()) {
456831
456850
  return [];
456832
456851
  }
456833
456852
  }
456834
- async function checkForReleaseNotes(lastSeenVersion, currentVersion = "0.9.1") {
456853
+ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "0.9.3") {
456835
456854
  if (process.env.USER_TYPE === "ant") {
456836
456855
  const changelog = MACRO.VERSION_CHANGELOG;
456837
456856
  if (changelog) {
@@ -485869,7 +485888,7 @@ async function captureMemoryDiagnostics(trigger, dumpNumber = 0) {
485869
485888
  smapsRollup,
485870
485889
  platform: process.platform,
485871
485890
  nodeVersion: process.version,
485872
- ccVersion: "0.9.1"
485891
+ ccVersion: "0.9.3"
485873
485892
  };
485874
485893
  }
485875
485894
  async function performHeapDump(trigger = "manual", dumpNumber = 0) {
@@ -486456,7 +486475,7 @@ var init_bridge_kick = __esm(() => {
486456
486475
  var call60 = async () => {
486457
486476
  return {
486458
486477
  type: "text",
486459
- value: `${"0.9.1"} (built ${"2026-05-06T02:05:28.033Z"})`
486478
+ value: `${"0.9.3"} (built ${"2026-05-08T22:03:32.862Z"})`
486460
486479
  };
486461
486480
  }, version2, version_default;
486462
486481
  var init_version = __esm(() => {
@@ -496613,7 +496632,7 @@ function generateHtmlReport(data, insights) {
496613
496632
  function buildExportData(data, insights, facets) {
496614
496633
  let version3;
496615
496634
  try {
496616
- version3 = "0.9.1";
496635
+ version3 = "0.9.3";
496617
496636
  } catch {
496618
496637
  version3 = "unknown";
496619
496638
  }
@@ -500809,7 +500828,7 @@ var init_sessionStorage = __esm(() => {
500809
500828
  init_slowOperations();
500810
500829
  init_uuid();
500811
500830
  try {
500812
- VERSION7 = "0.9.1";
500831
+ VERSION7 = "0.9.3";
500813
500832
  } catch {
500814
500833
  VERSION7 = "unknown";
500815
500834
  }
@@ -502130,7 +502149,7 @@ var init_filesystem = __esm(() => {
502130
502149
  });
502131
502150
  getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
502132
502151
  const nonce = randomBytes17(16).toString("hex");
502133
- return join137(getZeroTempDir(), "bundled-skills", "0.9.1", nonce);
502152
+ return join137(getZeroTempDir(), "bundled-skills", "0.9.3", nonce);
502134
502153
  });
502135
502154
  getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
502136
502155
  });
@@ -508871,7 +508890,7 @@ function getFunctionResultClearingSection(model) {
508871
508890
 
508872
508891
  Old tool results will be automatically cleared from context to free up space. The ${config3.keepRecent} most recent results are always kept.`;
508873
508892
  }
508874
- var getCachedMCConfigForFRC, DISCOVER_SKILLS_TOOL_NAME = null, CLAUDE_CODE_DOCS_MAP_URL2 = "https://code.claude.com/docs/en/claude_code_docs_map.md", SYSTEM_PROMPT_DYNAMIC_BOUNDARY = "__SYSTEM_PROMPT_DYNAMIC_BOUNDARY__", FRONTIER_MODEL_NAME = "Zero Opus 4.6", CLAUDE_4_5_OR_4_6_MODEL_IDS, DEFAULT_AGENT_PROMPT = `You are an agent for Zero CLI, an open-source coding agent and CLI. Given the user's message, you should use the tools available to complete the task. Complete the task fully—don't gold-plate, but don't leave it half-done. When you complete the task, respond with a concise report covering what was done and any key findings — the caller will relay this to the user, so it only needs the essentials.`, SUMMARIZE_TOOL_RESULTS_SECTION = `When working with tool results, write down any important information you might need later in your response, as the original tool result may be cleared later.`;
508893
+ var getCachedMCConfigForFRC, DISCOVER_SKILLS_TOOL_NAME = null, CLAUDE_CODE_DOCS_MAP_URL2 = "https://code.claude.com/docs/en/claude_code_docs_map.md", SYSTEM_PROMPT_DYNAMIC_BOUNDARY = "__SYSTEM_PROMPT_DYNAMIC_BOUNDARY__", FRONTIER_MODEL_NAME = "Claude Opus 4.6", CLAUDE_4_5_OR_4_6_MODEL_IDS, DEFAULT_AGENT_PROMPT = `You are an agent for Zero CLI, an open-source coding agent and CLI. Given the user's message, you should use the tools available to complete the task. Complete the task fully—don't gold-plate, but don't leave it half-done. When you complete the task, respond with a concise report covering what was done and any key findings — the caller will relay this to the user, so it only needs the essentials.`, SUMMARIZE_TOOL_RESULTS_SECTION = `When working with tool results, write down any important information you might need later in your response, as the original tool result may be cleared later.`;
508875
508894
  var init_prompts4 = __esm(() => {
508876
508895
  init_env();
508877
508896
  init_git();
@@ -513150,7 +513169,7 @@ function buildSystemInitMessage(inputs) {
513150
513169
  slash_commands: inputs.commands.filter((c6) => c6.userInvocable !== false).map((c6) => c6.name),
513151
513170
  apiKeySource: getAnthropicApiKeyWithSource().source,
513152
513171
  betas: getSdkBetas(),
513153
- claude_code_version: "0.9.1",
513172
+ claude_code_version: "0.9.3",
513154
513173
  output_style: outputStyle2,
513155
513174
  agents: inputs.agents.map((agent2) => agent2.agentType),
513156
513175
  skills: inputs.skills.filter((s) => s.userInvocable !== false).map((skill) => skill.name),
@@ -528465,7 +528484,7 @@ var init_useVoiceEnabled = __esm(() => {
528465
528484
  function getSemverPart(version3) {
528466
528485
  return `${import_semver12.major(version3, { loose: true })}.${import_semver12.minor(version3, { loose: true })}.${import_semver12.patch(version3, { loose: true })}`;
528467
528486
  }
528468
- function useUpdateNotification(updatedVersion, initialVersion = "0.9.1") {
528487
+ function useUpdateNotification(updatedVersion, initialVersion = "0.9.3") {
528469
528488
  const [lastNotifiedSemver, setLastNotifiedSemver] = import_react226.useState(() => getSemverPart(initialVersion));
528470
528489
  if (!updatedVersion) {
528471
528490
  return null;
@@ -528508,7 +528527,7 @@ function AutoUpdater({
528508
528527
  return;
528509
528528
  }
528510
528529
  if (false) {}
528511
- const currentVersion = "0.9.1";
528530
+ const currentVersion = "0.9.3";
528512
528531
  const channel2 = getInitialSettings()?.autoUpdatesChannel ?? "latest";
528513
528532
  let latestVersion = await getLatestVersion(channel2);
528514
528533
  const isDisabled = isAutoUpdaterDisabled();
@@ -528729,12 +528748,12 @@ function NativeAutoUpdater({
528729
528748
  logEvent("tengu_native_auto_updater_start", {});
528730
528749
  try {
528731
528750
  const maxVersion = await getMaxVersion();
528732
- if (maxVersion && gt("0.9.1", maxVersion)) {
528751
+ if (maxVersion && gt("0.9.3", maxVersion)) {
528733
528752
  const msg = await getMaxVersionMessage();
528734
528753
  setMaxVersionIssue(msg ?? "affects your version");
528735
528754
  }
528736
528755
  const result = await installLatest(channel2);
528737
- const currentVersion = "0.9.1";
528756
+ const currentVersion = "0.9.3";
528738
528757
  const latencyMs = Date.now() - startTime2;
528739
528758
  if (result.lockFailed) {
528740
528759
  logEvent("tengu_native_auto_updater_lock_contention", {
@@ -528876,17 +528895,17 @@ function PackageManagerAutoUpdater(t0) {
528876
528895
  const maxVersion = await getMaxVersion();
528877
528896
  if (maxVersion && latest && gt(latest, maxVersion)) {
528878
528897
  logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
528879
- if (gte("0.9.1", maxVersion)) {
528880
- logForDebugging(`PackageManagerAutoUpdater: current version ${"0.9.1"} is already at or above maxVersion ${maxVersion}, skipping update`);
528898
+ if (gte("0.9.3", maxVersion)) {
528899
+ logForDebugging(`PackageManagerAutoUpdater: current version ${"0.9.3"} is already at or above maxVersion ${maxVersion}, skipping update`);
528881
528900
  setUpdateAvailable(false);
528882
528901
  return;
528883
528902
  }
528884
528903
  latest = maxVersion;
528885
528904
  }
528886
- const hasUpdate = latest && !gte("0.9.1", latest) && !shouldSkipVersion(latest);
528905
+ const hasUpdate = latest && !gte("0.9.3", latest) && !shouldSkipVersion(latest);
528887
528906
  setUpdateAvailable(!!hasUpdate);
528888
528907
  if (hasUpdate) {
528889
- logForDebugging(`PackageManagerAutoUpdater: Update available ${"0.9.1"} -> ${latest}`);
528908
+ logForDebugging(`PackageManagerAutoUpdater: Update available ${"0.9.3"} -> ${latest}`);
528890
528909
  }
528891
528910
  };
528892
528911
  $2[0] = t1;
@@ -528920,7 +528939,7 @@ function PackageManagerAutoUpdater(t0) {
528920
528939
  wrap: "truncate",
528921
528940
  children: [
528922
528941
  "currentVersion: ",
528923
- "0.9.1"
528942
+ "0.9.3"
528924
528943
  ]
528925
528944
  });
528926
528945
  $2[3] = verbose;
@@ -529417,8 +529436,7 @@ function Notifications(t0) {
529417
529436
  let t3;
529418
529437
  if ($2[0] !== messages) {
529419
529438
  const messagesForTokenCount = getMessagesAfterCompactBoundary(messages);
529420
- const apiTokens = tokenCountFromLastAPIResponse(messagesForTokenCount);
529421
- t3 = apiTokens > 0 ? apiTokens : roughTokenCountEstimationForMessages(messagesForTokenCount);
529439
+ t3 = tokenCountWithEstimation(messagesForTokenCount);
529422
529440
  $2[0] = messages;
529423
529441
  $2[1] = t3;
529424
529442
  } else {
@@ -529731,7 +529749,6 @@ var init_Notifications = __esm(() => {
529731
529749
  init_ide();
529732
529750
  init_messages3();
529733
529751
  init_tokens();
529734
- init_tokenEstimation();
529735
529752
  init_AutoUpdaterWrapper();
529736
529753
  init_ConfigurableShortcutHint();
529737
529754
  init_IdeStatusIndicator();
@@ -537951,7 +537968,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
537951
537968
  project_dir: getOriginalCwd(),
537952
537969
  added_dirs: addedDirs
537953
537970
  },
537954
- version: "0.9.1",
537971
+ version: "0.9.3",
537955
537972
  output_style: {
537956
537973
  name: outputStyleName
537957
537974
  },
@@ -551941,7 +551958,7 @@ var init_tipRegistry = __esm(() => {
551941
551958
  },
551942
551959
  {
551943
551960
  id: "opusplan-mode-reminder",
551944
- content: async () => `Your default model setting is Opus Plan Mode. Press ${getShortcutDisplay("chat:cycleMode", "Chat", "shift+tab")} twice to activate Plan Mode and plan with Zero Opus.`,
551961
+ content: async () => `Your default model setting is Opus Plan Mode. Press ${getShortcutDisplay("chat:cycleMode", "Chat", "shift+tab")} twice to activate Plan Mode and plan with Claude Opus.`,
551945
551962
  cooldownSessions: 2,
551946
551963
  async isRelevant() {
551947
551964
  const config3 = getGlobalConfig();
@@ -555506,30 +555523,10 @@ var init_useDeprecationWarningNotification = __esm(() => {
555506
555523
  });
555507
555524
 
555508
555525
  // src/hooks/notifs/useNpmDeprecationNotification.tsx
555509
- function useNpmDeprecationNotification() {
555510
- useStartupNotification(_temp209);
555511
- }
555512
- async function _temp209() {
555513
- if (isInBundledMode() || isEnvTruthy(process.env.DISABLE_INSTALLATION_CHECKS)) {
555514
- return null;
555515
- }
555516
- const installationType = await getCurrentInstallationType();
555517
- if (installationType === "development") {
555518
- return null;
555519
- }
555520
- return {
555521
- timeoutMs: 15000,
555522
- key: "npm-deprecation-warning",
555523
- text: NPM_DEPRECATION_MESSAGE,
555524
- color: "warning",
555525
- priority: "high"
555526
- };
555527
- }
555528
- var NPM_DEPRECATION_MESSAGE = "ZeroCLI has switched from npm to native installer. Run `zero install` for more options.";
555526
+ function useNpmDeprecationNotification() {}
555529
555527
  var init_useNpmDeprecationNotification = __esm(() => {
555530
555528
  init_doctorDiagnostic();
555531
555529
  init_envUtils();
555532
- init_useStartupNotification();
555533
555530
  });
555534
555531
 
555535
555532
  // src/hooks/notifs/useIDEStatusIndicator.tsx
@@ -555594,29 +555591,15 @@ function useIDEStatusIndicator(t0) {
555594
555591
  import_react308.useEffect(t2, t3);
555595
555592
  let t4;
555596
555593
  let t5;
555597
- if ($2[8] !== addNotification || $2[9] !== ideName || $2[10] !== ideStatus || $2[11] !== removeNotification || $2[12] !== showIDEInstallError || $2[13] !== showJetBrainsInfo) {
555594
+ if ($2[8] !== removeNotification) {
555598
555595
  t4 = () => {
555599
555596
  if (getIsRemoteMode()) {
555600
555597
  return;
555601
555598
  }
555602
- if (showIDEInstallError || showJetBrainsInfo || ideStatus !== "disconnected" || !ideName) {
555603
- removeNotification("ide-status-disconnected");
555604
- return;
555605
- }
555606
- addNotification({
555607
- key: "ide-status-disconnected",
555608
- text: `${ideName} disconnected`,
555609
- color: "error",
555610
- priority: "medium"
555611
- });
555599
+ removeNotification("ide-status-disconnected");
555612
555600
  };
555613
- t5 = [addNotification, removeNotification, ideStatus, ideName, showIDEInstallError, showJetBrainsInfo];
555614
- $2[8] = addNotification;
555615
- $2[9] = ideName;
555616
- $2[10] = ideStatus;
555617
- $2[11] = removeNotification;
555618
- $2[12] = showIDEInstallError;
555619
- $2[13] = showJetBrainsInfo;
555601
+ t5 = [removeNotification];
555602
+ $2[8] = removeNotification;
555620
555603
  $2[14] = t4;
555621
555604
  $2[15] = t5;
555622
555605
  } else {
@@ -555687,7 +555670,7 @@ function _temp290(hasShownHintRef_0, addNotification_0) {
555687
555670
  const ideName_0 = infos[0]?.name;
555688
555671
  if (ideName_0 && !hasShownHintRef_0.current) {
555689
555672
  hasShownHintRef_0.current = true;
555690
- saveGlobalConfig(_temp224);
555673
+ saveGlobalConfig(_temp209);
555691
555674
  addNotification_0({
555692
555675
  key: "ide-status-hint",
555693
555676
  jsx: /* @__PURE__ */ jsx_runtime461.jsxs(ThemedText, {
@@ -555705,7 +555688,7 @@ function _temp290(hasShownHintRef_0, addNotification_0) {
555705
555688
  }
555706
555689
  });
555707
555690
  }
555708
- function _temp224(current) {
555691
+ function _temp209(current) {
555709
555692
  return {
555710
555693
  ...current,
555711
555694
  ideHintShownCount: (current.ideHintShownCount ?? 0) + 1
@@ -555726,9 +555709,9 @@ var init_useIDEStatusIndicator = __esm(() => {
555726
555709
 
555727
555710
  // src/hooks/notifs/useModelMigrationNotifications.tsx
555728
555711
  function useModelMigrationNotifications() {
555729
- useStartupNotification(_temp234);
555712
+ useStartupNotification(_temp224);
555730
555713
  }
555731
- function _temp234() {
555714
+ function _temp224() {
555732
555715
  const config3 = getGlobalConfig();
555733
555716
  const notifs = [];
555734
555717
  for (const migration of MIGRATIONS) {
@@ -555786,7 +555769,7 @@ async function _temp291() {
555786
555769
  if (subscriptionType === null) {
555787
555770
  return null;
555788
555771
  }
555789
- saveGlobalConfig(_temp244);
555772
+ saveGlobalConfig(_temp234);
555790
555773
  logEvent("tengu_switch_to_subscription_notice_shown", {});
555791
555774
  return {
555792
555775
  key: "switch-to-subscription",
@@ -555809,7 +555792,7 @@ async function _temp291() {
555809
555792
  priority: "low"
555810
555793
  };
555811
555794
  }
555812
- function _temp244(current) {
555795
+ function _temp234(current) {
555813
555796
  return {
555814
555797
  ...current,
555815
555798
  subscriptionNoticeCount: (current.subscriptionNoticeCount ?? 0) + 1
@@ -555910,7 +555893,7 @@ function useFastModeNotification() {
555910
555893
  const {
555911
555894
  addNotification
555912
555895
  } = useNotifications();
555913
- const isFastMode = useAppState(_temp254);
555896
+ const isFastMode = useAppState(_temp244);
555914
555897
  const setAppState = useSetAppState();
555915
555898
  let t0;
555916
555899
  let t1;
@@ -556044,7 +556027,7 @@ function _temp292(prev) {
556044
556027
  fastMode: false
556045
556028
  };
556046
556029
  }
556047
- function _temp254(s) {
556030
+ function _temp244(s) {
556048
556031
  return s.fastMode;
556049
556032
  }
556050
556033
  function getCooldownMessage(reason, resetIn) {
@@ -557804,9 +557787,9 @@ function AnimatedTerminalTitle(t0) {
557804
557787
  return null;
557805
557788
  }
557806
557789
  function _temp293(setFrame_0) {
557807
- return setFrame_0(_temp294);
557790
+ return setFrame_0(_temp254);
557808
557791
  }
557809
- function _temp294(f) {
557792
+ function _temp254(f) {
557810
557793
  return (f + 1) % TITLE_ANIMATION_FRAMES.length;
557811
557794
  }
557812
557795
  function REPL({
@@ -561750,7 +561733,7 @@ function MCPServerMultiselectDialog(t0) {
561750
561733
  }
561751
561734
  let t5;
561752
561735
  if ($2[7] !== serverNames) {
561753
- t5 = serverNames.map(_temp296);
561736
+ t5 = serverNames.map(_temp294);
561754
561737
  $2[7] = serverNames;
561755
561738
  $2[8] = t5;
561756
561739
  } else {
@@ -561839,7 +561822,7 @@ function MCPServerMultiselectDialog(t0) {
561839
561822
  }
561840
561823
  return t9;
561841
561824
  }
561842
- function _temp296(server_0) {
561825
+ function _temp294(server_0) {
561843
561826
  return {
561844
561827
  label: server_0,
561845
561828
  value: server_0
@@ -562487,7 +562470,7 @@ function WelcomeV2() {
562487
562470
  dimColor: true,
562488
562471
  children: [
562489
562472
  "v",
562490
- "0.9.1",
562473
+ "0.9.3",
562491
562474
  " "
562492
562475
  ]
562493
562476
  })
@@ -562721,7 +562704,7 @@ function WelcomeV2() {
562721
562704
  dimColor: true,
562722
562705
  children: [
562723
562706
  "v",
562724
- "0.9.1",
562707
+ "0.9.3",
562725
562708
  " "
562726
562709
  ]
562727
562710
  })
@@ -562968,7 +562951,7 @@ function AppleTerminalWelcomeV2(t0) {
562968
562951
  dimColor: true,
562969
562952
  children: [
562970
562953
  "v",
562971
- "0.9.1",
562954
+ "0.9.3",
562972
562955
  " "
562973
562956
  ]
562974
562957
  });
@@ -563241,7 +563224,7 @@ function AppleTerminalWelcomeV2(t0) {
563241
563224
  dimColor: true,
563242
563225
  children: [
563243
563226
  "v",
563244
- "0.9.1",
563227
+ "0.9.3",
563245
563228
  " "
563246
563229
  ]
563247
563230
  });
@@ -564420,9 +564403,9 @@ function _temp359(tool_0) {
564420
564403
  return tool_0 === BASH_TOOL_NAME || tool_0.startsWith(BASH_TOOL_NAME + "(");
564421
564404
  }
564422
564405
  function _temp295(command9) {
564423
- return command9.type === "prompt" && command9.loadedFrom === "commands_DEPRECATED" && (command9.source === "projectSettings" || command9.source === "localSettings") && command9.allowedTools?.some(_temp297);
564406
+ return command9.type === "prompt" && command9.loadedFrom === "commands_DEPRECATED" && (command9.source === "projectSettings" || command9.source === "localSettings") && command9.allowedTools?.some(_temp296);
564424
564407
  }
564425
- function _temp297(tool) {
564408
+ function _temp296(tool) {
564426
564409
  return tool === BASH_TOOL_NAME || tool.startsWith(BASH_TOOL_NAME + "(");
564427
564410
  }
564428
564411
  var import_react_compiler_runtime361, import_react324, jsx_runtime478;
@@ -564461,7 +564444,7 @@ function BypassPermissionsModeDialog(t0) {
564461
564444
  } else {
564462
564445
  t1 = $2[0];
564463
564446
  }
564464
- import_react325.default.useEffect(_temp299, t1);
564447
+ import_react325.default.useEffect(_temp298, t1);
564465
564448
  let t2;
564466
564449
  if ($2[1] !== onAccept) {
564467
564450
  t2 = function onChange2(value) {
@@ -564486,7 +564469,7 @@ function BypassPermissionsModeDialog(t0) {
564486
564469
  t2 = $2[2];
564487
564470
  }
564488
564471
  const onChange = t2;
564489
- const handleEscape = _temp298;
564472
+ const handleEscape = _temp297;
564490
564473
  let t3;
564491
564474
  if ($2[3] === Symbol.for("react.memo_cache_sentinel")) {
564492
564475
  t3 = /* @__PURE__ */ jsx_runtime479.jsxs(ThemedBox_default, {
@@ -564546,10 +564529,10 @@ function BypassPermissionsModeDialog(t0) {
564546
564529
  }
564547
564530
  return t5;
564548
564531
  }
564549
- function _temp298() {
564532
+ function _temp297() {
564550
564533
  gracefulShutdownSync(0);
564551
564534
  }
564552
- function _temp299() {
564535
+ function _temp298() {
564553
564536
  logEvent("tengu_bypass_permissions_mode_dialog_shown", {});
564554
564537
  }
564555
564538
  var import_react_compiler_runtime362, import_react325, jsx_runtime479;
@@ -564581,7 +564564,7 @@ function ZeroInChromeOnboarding(t0) {
564581
564564
  t1 = () => {
564582
564565
  logEvent("tengu_claude_in_chrome_onboarding_shown", {});
564583
564566
  isChromeExtensionInstalled().then(setIsExtensionInstalled);
564584
- saveGlobalConfig(_temp301);
564567
+ saveGlobalConfig(_temp300);
564585
564568
  };
564586
564569
  t2 = [];
564587
564570
  $2[0] = t1;
@@ -564730,7 +564713,7 @@ function ZeroInChromeOnboarding(t0) {
564730
564713
  }
564731
564714
  return t11;
564732
564715
  }
564733
- function _temp301(current) {
564716
+ function _temp300(current) {
564734
564717
  return {
564735
564718
  ...current,
564736
564719
  hasCompletedZeroInChromeOnboarding: true
@@ -564753,7 +564736,7 @@ function completeOnboarding() {
564753
564736
  saveGlobalConfig((current) => ({
564754
564737
  ...current,
564755
564738
  hasCompletedOnboarding: true,
564756
- lastOnboardingVersion: "0.9.1"
564739
+ lastOnboardingVersion: "0.9.3"
564757
564740
  }));
564758
564741
  }
564759
564742
  function showDialog(root2, renderer) {
@@ -565816,7 +565799,7 @@ function TeleportRepoMismatchDialog(t0) {
565816
565799
  } else {
565817
565800
  t32 = $2[7];
565818
565801
  }
565819
- t2 = [...availablePaths.map(_temp302), t32];
565802
+ t2 = [...availablePaths.map(_temp301), t32];
565820
565803
  $2[5] = availablePaths;
565821
565804
  $2[6] = t2;
565822
565805
  } else {
@@ -565902,7 +565885,7 @@ function TeleportRepoMismatchDialog(t0) {
565902
565885
  }
565903
565886
  return t4;
565904
565887
  }
565905
- function _temp302(path24) {
565888
+ function _temp301(path24) {
565906
565889
  return {
565907
565890
  label: /* @__PURE__ */ jsx_runtime485.jsxs(ThemedText, {
565908
565891
  children: [
@@ -566252,7 +566235,7 @@ function NoConversationsMessage() {
566252
566235
  } else {
566253
566236
  t0 = $2[0];
566254
566237
  }
566255
- useKeybinding("app:interrupt", _temp303, t0);
566238
+ useKeybinding("app:interrupt", _temp302, t0);
566256
566239
  let t1;
566257
566240
  if ($2[1] === Symbol.for("react.memo_cache_sentinel")) {
566258
566241
  t1 = /* @__PURE__ */ jsx_runtime486.jsxs(ThemedBox_default, {
@@ -566273,7 +566256,7 @@ function NoConversationsMessage() {
566273
566256
  }
566274
566257
  return t1;
566275
566258
  }
566276
- function _temp303() {
566259
+ function _temp302() {
566277
566260
  process.exit(1);
566278
566261
  }
566279
566262
  function CrossProjectMessage(t0) {
@@ -566355,10 +566338,10 @@ function CrossProjectMessage(t0) {
566355
566338
  return t6;
566356
566339
  }
566357
566340
  function _temp360() {
566358
- const timeout2 = setTimeout(_temp2100, 100);
566341
+ const timeout2 = setTimeout(_temp299, 100);
566359
566342
  return () => clearTimeout(timeout2);
566360
566343
  }
566361
- function _temp2100() {
566344
+ function _temp299() {
566362
566345
  process.exit(0);
566363
566346
  }
566364
566347
  var import_react_compiler_runtime368, import_react331, jsx_runtime486;
@@ -569004,7 +568987,7 @@ function appendToLog(path24, message) {
569004
568987
  cwd: getFsImplementation().cwd(),
569005
568988
  userType: process.env.USER_TYPE,
569006
568989
  sessionId: getSessionId(),
569007
- version: "0.9.1"
568990
+ version: "0.9.3"
569008
568991
  };
569009
568992
  getLogWriter(path24).write(messageWithTimestamp);
569010
568993
  }
@@ -569610,7 +569593,7 @@ async function startMCPServer(cwd2, debug, verbose) {
569610
569593
  setCwd(cwd2);
569611
569594
  const server = new Server({
569612
569595
  name: "claude/tengu",
569613
- version: "0.9.1"
569596
+ version: "0.9.3"
569614
569597
  }, {
569615
569598
  capabilities: {
569616
569599
  tools: {}
@@ -574249,8 +574232,8 @@ async function getEnvLessBridgeConfig() {
574249
574232
  }
574250
574233
  async function checkEnvLessBridgeMinVersion() {
574251
574234
  const cfg = await getEnvLessBridgeConfig();
574252
- if (cfg.min_version && lt("0.9.1", cfg.min_version)) {
574253
- return `Your version of ZeroCLI (${"0.9.1"}) is too old for Remote Control.
574235
+ if (cfg.min_version && lt("0.9.3", cfg.min_version)) {
574236
+ return `Your version of ZeroCLI (${"0.9.3"}) is too old for Remote Control.
574254
574237
  Version ${cfg.min_version} or higher is required. Run \`zero update\` to update.`;
574255
574238
  }
574256
574239
  return null;
@@ -574725,7 +574708,7 @@ async function initBridgeCore(params) {
574725
574708
  const rawApi = createBridgeApiClient({
574726
574709
  baseUrl,
574727
574710
  getAccessToken,
574728
- runnerVersion: "0.9.1",
574711
+ runnerVersion: "0.9.3",
574729
574712
  onDebug: logForDebugging,
574730
574713
  onAuth401,
574731
574714
  getTrustedDeviceToken
@@ -580387,7 +580370,7 @@ function SetupNotes(t0) {
580387
580370
  }
580388
580371
  let t2;
580389
580372
  if ($2[1] !== messages) {
580390
- t2 = messages.map(_temp304);
580373
+ t2 = messages.map(_temp303);
580391
580374
  $2[1] = messages;
580392
580375
  $2[2] = t2;
580393
580376
  } else {
@@ -580411,7 +580394,7 @@ function SetupNotes(t0) {
580411
580394
  }
580412
580395
  return t3;
580413
580396
  }
580414
- function _temp304(message, index) {
580397
+ function _temp303(message, index) {
580415
580398
  return /* @__PURE__ */ jsx_runtime491.jsx(ThemedBox_default, {
580416
580399
  marginLeft: 2,
580417
580400
  children: /* @__PURE__ */ jsx_runtime491.jsxs(ThemedText, {
@@ -581013,7 +580996,7 @@ __export(exports_update2, {
581013
580996
  });
581014
580997
  async function update2() {
581015
580998
  logEvent("tengu_update_check", {});
581016
- writeToStdout(`Current version: ${"0.9.1"}
580999
+ writeToStdout(`Current version: ${"0.9.3"}
581017
581000
  `);
581018
581001
  const channel2 = getInitialSettings()?.autoUpdatesChannel ?? "latest";
581019
581002
  writeToStdout(`Checking for updates to ${channel2} version...
@@ -581088,8 +581071,8 @@ async function update2() {
581088
581071
  writeToStdout(`Zero is managed by Homebrew.
581089
581072
  `);
581090
581073
  const latest = await getLatestVersion(channel2);
581091
- if (latest && !gte("0.9.1", latest)) {
581092
- writeToStdout(`Update available: ${"0.9.1"} → ${latest}
581074
+ if (latest && !gte("0.9.3", latest)) {
581075
+ writeToStdout(`Update available: ${"0.9.3"} → ${latest}
581093
581076
  `);
581094
581077
  writeToStdout(`
581095
581078
  `);
@@ -581105,8 +581088,8 @@ async function update2() {
581105
581088
  writeToStdout(`Zero is managed by winget.
581106
581089
  `);
581107
581090
  const latest = await getLatestVersion(channel2);
581108
- if (latest && !gte("0.9.1", latest)) {
581109
- writeToStdout(`Update available: ${"0.9.1"} → ${latest}
581091
+ if (latest && !gte("0.9.3", latest)) {
581092
+ writeToStdout(`Update available: ${"0.9.3"} → ${latest}
581110
581093
  `);
581111
581094
  writeToStdout(`
581112
581095
  `);
@@ -581122,8 +581105,8 @@ async function update2() {
581122
581105
  writeToStdout(`Zero is managed by apk.
581123
581106
  `);
581124
581107
  const latest = await getLatestVersion(channel2);
581125
- if (latest && !gte("0.9.1", latest)) {
581126
- writeToStdout(`Update available: ${"0.9.1"} → ${latest}
581108
+ if (latest && !gte("0.9.3", latest)) {
581109
+ writeToStdout(`Update available: ${"0.9.3"} → ${latest}
581127
581110
  `);
581128
581111
  writeToStdout(`
581129
581112
  `);
@@ -581188,11 +581171,11 @@ async function update2() {
581188
581171
  `);
581189
581172
  await gracefulShutdown(1);
581190
581173
  }
581191
- if (result.latestVersion === "0.9.1") {
581192
- writeToStdout(source_default.green(`Zero CLI is up to date (${"0.9.1"})`) + `
581174
+ if (result.latestVersion === "0.9.3") {
581175
+ writeToStdout(source_default.green(`Zero CLI is up to date (${"0.9.3"})`) + `
581193
581176
  `);
581194
581177
  } else {
581195
- writeToStdout(source_default.green(`Successfully updated from ${"0.9.1"} to version ${result.latestVersion}`) + `
581178
+ writeToStdout(source_default.green(`Successfully updated from ${"0.9.3"} to version ${result.latestVersion}`) + `
581196
581179
  `);
581197
581180
  await regenerateCompletionCache();
581198
581181
  }
@@ -581252,12 +581235,12 @@ async function update2() {
581252
581235
  `);
581253
581236
  await gracefulShutdown(1);
581254
581237
  }
581255
- if (latestVersion === "0.9.1") {
581256
- writeToStdout(source_default.green(`Zero CLI is up to date (${"0.9.1"})`) + `
581238
+ if (latestVersion === "0.9.3") {
581239
+ writeToStdout(source_default.green(`Zero CLI is up to date (${"0.9.3"})`) + `
581257
581240
  `);
581258
581241
  await gracefulShutdown(0);
581259
581242
  }
581260
- writeToStdout(`New version available: ${latestVersion} (current: ${"0.9.1"})
581243
+ writeToStdout(`New version available: ${latestVersion} (current: ${"0.9.3"})
581261
581244
  `);
581262
581245
  writeToStdout(`Installing update...
581263
581246
  `);
@@ -581302,7 +581285,7 @@ async function update2() {
581302
581285
  logForDebugging(`update: Installation status: ${status2}`);
581303
581286
  switch (status2) {
581304
581287
  case "success":
581305
- writeToStdout(source_default.green(`Successfully updated from ${"0.9.1"} to version ${latestVersion}`) + `
581288
+ writeToStdout(source_default.green(`Successfully updated from ${"0.9.3"} to version ${latestVersion}`) + `
581306
581289
  `);
581307
581290
  await regenerateCompletionCache();
581308
581291
  break;
@@ -581377,7 +581360,7 @@ __export(exports_rollback, {
581377
581360
  rollback: () => rollback,
581378
581361
  default: () => rollback_default
581379
581362
  });
581380
- var rollback = () => null, rollback_default;
581363
+ var rollback = (_target, _options) => Promise.resolve(), rollback_default;
581381
581364
  var init_rollback = __esm(() => {
581382
581365
  rollback_default = {};
581383
581366
  });
@@ -582603,7 +582586,7 @@ ${customInstructions}` : customInstructions;
582603
582586
  }
582604
582587
  }
582605
582588
  logForDiagnosticsNoPII("info", "started", {
582606
- version: "0.9.1",
582589
+ version: "0.9.3",
582607
582590
  is_native_binary: isInBundledMode()
582608
582591
  });
582609
582592
  registerCleanup(async () => {
@@ -583486,7 +583469,7 @@ Usage: claude --remote "your task description"`, () => gracefulShutdown(1));
583486
583469
  pendingHookMessages
583487
583470
  }, renderAndRun);
583488
583471
  }
583489
- }).version("0.9.1", "-v, --version", "Output the version number");
583472
+ }).version("0.9.3", "-v, --version", "Output the version number");
583490
583473
  program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
583491
583474
  program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
583492
583475
  if (canUserConfigureAdvisor()) {
@@ -584152,7 +584135,7 @@ if (false) {}
584152
584135
  async function main2() {
584153
584136
  const args = process.argv.slice(2);
584154
584137
  if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
584155
- console.log(`${"0.9.1"} (ZeroCLI)`);
584138
+ console.log(`${"0.9.3"} (ZeroCLI)`);
584156
584139
  return;
584157
584140
  }
584158
584141
  if (args.includes("--provider")) {
@@ -584294,4 +584277,4 @@ async function main2() {
584294
584277
  }
584295
584278
  main2();
584296
584279
 
584297
- //# debugId=947B42EBDD888E1C64756E2164756E21
584280
+ //# debugId=48C4FC63FCACF98F64756E2164756E21
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@duheso/zerocli",
3
- "version": "0.9.1",
3
+ "version": "0.9.3",
4
4
  "description": "Zero Cli to any LLM — OpenAI, Gemini, DeepSeek, Ollama, and 200+ models",
5
5
  "type": "module",
6
6
  "bin": {