@duheso/zerocli 0.9.0 → 0.9.2

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