@duheso/zerocli 0.9.6 → 0.9.8

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 +320 -164
  2. package/package.json +1 -1
package/dist/cli.mjs CHANGED
@@ -119192,7 +119192,7 @@ function buildProviderInfoLines() {
119192
119192
  const sLen = ` ● ${sL} ${sReady}`.length;
119193
119193
  out.push(boxRow(sRow, W2, sLen));
119194
119194
  out.push(`${rgb(...BORDER)}╚${"═".repeat(W2 - 2)}╝${RESET}`);
119195
- out.push(` ${DIM}${rgb(...DIMCOL)}zero ${RESET}${rgb(...ACCENT)}v${"0.9.6"}${RESET}`);
119195
+ out.push(` ${DIM}${rgb(...DIMCOL)}zero ${RESET}${rgb(...ACCENT)}v${"0.9.8"}${RESET}`);
119196
119196
  return out;
119197
119197
  }
119198
119198
  function printStartupScreen() {}
@@ -147383,7 +147383,7 @@ function getAttributionHeader(fingerprint) {
147383
147383
  if (!isAttributionHeaderEnabled()) {
147384
147384
  return "";
147385
147385
  }
147386
- const version2 = `${"0.9.6"}.${fingerprint}`;
147386
+ const version2 = `${"0.9.8"}.${fingerprint}`;
147387
147387
  const entrypoint = process.env.CLAUDE_CODE_ENTRYPOINT ?? "unknown";
147388
147388
  const cch = "";
147389
147389
  const workload = getWorkload();
@@ -190393,7 +190393,7 @@ var init_imageValidation = __esm(() => {
190393
190393
 
190394
190394
  // src/utils/userAgent.ts
190395
190395
  function getZeroCodeUserAgent() {
190396
- return `claude-code/${"0.9.6"}`;
190396
+ return `claude-code/${"0.9.8"}`;
190397
190397
  }
190398
190398
 
190399
190399
  // src/utils/http.ts
@@ -190402,7 +190402,7 @@ function getUserAgent() {
190402
190402
  const clientApp = process.env.CLAUDE_AGENT_SDK_CLIENT_APP ? `, client-app/${process.env.CLAUDE_AGENT_SDK_CLIENT_APP}` : "";
190403
190403
  const workload = getWorkload();
190404
190404
  const workloadSuffix = workload ? `, workload/${workload}` : "";
190405
- return `claude-cli/${"0.9.6"} (${process.env.USER_TYPE}, ${process.env.CLAUDE_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
190405
+ return `claude-cli/${"0.9.8"} (${process.env.USER_TYPE}, ${process.env.CLAUDE_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
190406
190406
  }
190407
190407
  function getMCPUserAgent() {
190408
190408
  const parts = [];
@@ -190416,7 +190416,7 @@ function getMCPUserAgent() {
190416
190416
  parts.push(`client-app/${process.env.CLAUDE_AGENT_SDK_CLIENT_APP}`);
190417
190417
  }
190418
190418
  const suffix = parts.length > 0 ? ` (${parts.join(", ")})` : "";
190419
- return `claude-code/${"0.9.6"}${suffix}`;
190419
+ return `claude-code/${"0.9.8"}${suffix}`;
190420
190420
  }
190421
190421
  function getWebFetchUserAgent() {
190422
190422
  const supportUrl = getAPIProvider() === "firstParty" ? "https://support.anthropic.com/" : "https://github.com/Duheso/ZeroCLI";
@@ -192892,8 +192892,9 @@ async function* openaiStreamToAnthropic(response, model, signal) {
192892
192892
  return;
192893
192893
  const decoder = new TextDecoder;
192894
192894
  let buffer = "";
192895
- const STREAM_IDLE_TIMEOUT_MS = 120000;
192895
+ const STREAM_IDLE_TIMEOUT_MS = parseInt(process.env.OPENAI_STREAM_IDLE_TIMEOUT_MS ?? "300000", 10) || 300000;
192896
192896
  let lastDataTime = Date.now();
192897
+ let lastStallWarningTime = 0;
192897
192898
  async function readWithTimeout() {
192898
192899
  return new Promise((resolve19, reject) => {
192899
192900
  const timeoutId = setTimeout(() => {
@@ -192904,23 +192905,33 @@ async function* openaiStreamToAnthropic(response, model, signal) {
192904
192905
  ` + `[ZERO-DEBUG] ENCERRAMENTO DETECTADO: STREAM IDLE TIMEOUT
192905
192906
  ` + `========================================================================
192906
192907
  ` + `CAUSA: O stream SSE ficou ${elapsed}s sem receber dados do modelo (vLLM/OpenAI).
192907
- ` + `LIMITE ATUAL: ${STREAM_IDLE_TIMEOUT_MS / 1000}s (HARDCODED em openaiShim.ts:916).
192908
+ ` + `LIMITE ATUAL: ${STREAM_IDLE_TIMEOUT_MS / 1000}s (configuravel via OPENAI_STREAM_IDLE_TIMEOUT_MS).
192908
192909
  ` + `EFEITO: Zero encerrou o processamento porque assumiu que a conexao caiu.
192909
- ` + `CORRECAO: Aumentar STREAM_IDLE_TIMEOUT_MS em src/services/api/openaiShim.ts
192910
- ` + ` ou tornar configuravel via env var OPENAI_STREAM_IDLE_TIMEOUT_MS.
192910
+ ` + `CORRECAO: Aumentar o timeout via env var OPENAI_STREAM_IDLE_TIMEOUT_MS (em ms).
192911
192911
  ` + ` Modelos locais (vLLM) podem demorar mais que 120s entre chunks.
192912
192912
  ` + `========================================================================`, { level: "error" });
192913
192913
  reject(new Error(msg));
192914
192914
  }, STREAM_IDLE_TIMEOUT_MS);
192915
+ const STALL_WARNING_INTERVAL_MS = 30000;
192916
+ const stallWarningId = setInterval(() => {
192917
+ const idleSeconds = Math.round((Date.now() - lastDataTime) / 1000);
192918
+ const now2 = Date.now();
192919
+ if (idleSeconds >= 30 && now2 - lastStallWarningTime >= STALL_WARNING_INTERVAL_MS) {
192920
+ lastStallWarningTime = now2;
192921
+ logForDebugging(`[ZERO-DEBUG] STALL WARNING: Stream sem dados há ${idleSeconds}s. ` + `Timeout em ${Math.round((STREAM_IDLE_TIMEOUT_MS - (now2 - lastDataTime)) / 1000)}s. ` + `Modelo ainda pode estar processando (vLLM/local models são lentos).`, { level: "warn" });
192922
+ }
192923
+ }, STALL_WARNING_INTERVAL_MS);
192915
192924
  let abortCleanup;
192916
192925
  if (signal) {
192917
192926
  abortCleanup = () => {
192918
192927
  clearTimeout(timeoutId);
192928
+ clearInterval(stallWarningId);
192919
192929
  };
192920
192930
  signal.addEventListener("abort", abortCleanup, { once: true });
192921
192931
  }
192922
192932
  reader.read().then((result) => {
192923
192933
  clearTimeout(timeoutId);
192934
+ clearInterval(stallWarningId);
192924
192935
  if (signal && abortCleanup)
192925
192936
  signal.removeEventListener("abort", abortCleanup);
192926
192937
  if (result.value)
@@ -192928,6 +192939,7 @@ async function* openaiStreamToAnthropic(response, model, signal) {
192928
192939
  resolve19(result);
192929
192940
  }, (err2) => {
192930
192941
  clearTimeout(timeoutId);
192942
+ clearInterval(stallWarningId);
192931
192943
  if (signal && abortCleanup)
192932
192944
  signal.removeEventListener("abort", abortCleanup);
192933
192945
  reject(err2);
@@ -244890,7 +244902,7 @@ function getTelemetryAttributes() {
244890
244902
  attributes["session.id"] = sessionId;
244891
244903
  }
244892
244904
  if (shouldIncludeAttribute("OTEL_METRICS_INCLUDE_VERSION")) {
244893
- attributes["app.version"] = "0.9.6";
244905
+ attributes["app.version"] = "0.9.8";
244894
244906
  }
244895
244907
  const oauthAccount = getOauthAccountInfo();
244896
244908
  if (oauthAccount) {
@@ -257129,7 +257141,7 @@ function computeFingerprint(messageText, version2) {
257129
257141
  }
257130
257142
  function computeFingerprintFromMessages(messages) {
257131
257143
  const firstMessageText = extractFirstMessageText(messages);
257132
- return computeFingerprint(firstMessageText, "0.9.6");
257144
+ return computeFingerprint(firstMessageText, "0.9.8");
257133
257145
  }
257134
257146
  var FINGERPRINT_SALT = "59cf53e54c78";
257135
257147
  var init_fingerprint = () => {};
@@ -257171,7 +257183,7 @@ async function sideQuery(opts) {
257171
257183
  betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
257172
257184
  }
257173
257185
  const messageText = extractFirstUserMessageText(messages);
257174
- const fingerprint = computeFingerprint(messageText, "0.9.6");
257186
+ const fingerprint = computeFingerprint(messageText, "0.9.8");
257175
257187
  const attributionHeader = getAttributionHeader(fingerprint);
257176
257188
  const systemBlocks = [
257177
257189
  attributionHeader ? { type: "text", text: attributionHeader } : null,
@@ -266073,7 +266085,7 @@ var init_user = __esm(() => {
266073
266085
  deviceId,
266074
266086
  sessionId: getSessionId(),
266075
266087
  email: getEmail(),
266076
- appVersion: "0.9.6",
266088
+ appVersion: "0.9.8",
266077
266089
  platform: getHostPlatformForAnalytics(),
266078
266090
  organizationUuid,
266079
266091
  accountUuid,
@@ -266467,7 +266479,7 @@ async function initializeBetaTracing(resource) {
266467
266479
  });
266468
266480
  logs.setGlobalLoggerProvider(loggerProvider);
266469
266481
  setLoggerProvider(loggerProvider);
266470
- const eventLogger = logs.getLogger("com.anthropic.claude_code.events", "0.9.6");
266482
+ const eventLogger = logs.getLogger("com.anthropic.claude_code.events", "0.9.8");
266471
266483
  setEventLogger(eventLogger);
266472
266484
  process.on("beforeExit", async () => {
266473
266485
  await loggerProvider?.forceFlush();
@@ -266507,7 +266519,7 @@ async function initializeTelemetry() {
266507
266519
  const platform3 = getPlatform();
266508
266520
  const baseAttributes = {
266509
266521
  [ATTR_SERVICE_NAME3]: "claude-code",
266510
- [ATTR_SERVICE_VERSION3]: "0.9.6"
266522
+ [ATTR_SERVICE_VERSION3]: "0.9.8"
266511
266523
  };
266512
266524
  if (platform3 === "wsl") {
266513
266525
  const wslVersion = getWslVersion();
@@ -266552,7 +266564,7 @@ async function initializeTelemetry() {
266552
266564
  } catch {}
266553
266565
  };
266554
266566
  registerCleanup(shutdownTelemetry2);
266555
- return meterProvider2.getMeter("com.anthropic.claude_code", "0.9.6");
266567
+ return meterProvider2.getMeter("com.anthropic.claude_code", "0.9.8");
266556
266568
  }
266557
266569
  const meterProvider = new MeterProvider3({
266558
266570
  resource,
@@ -266572,7 +266584,7 @@ async function initializeTelemetry() {
266572
266584
  });
266573
266585
  logs.setGlobalLoggerProvider(loggerProvider);
266574
266586
  setLoggerProvider(loggerProvider);
266575
- const eventLogger = logs.getLogger("com.anthropic.claude_code.events", "0.9.6");
266587
+ const eventLogger = logs.getLogger("com.anthropic.claude_code.events", "0.9.8");
266576
266588
  setEventLogger(eventLogger);
266577
266589
  logForDebugging("[3P telemetry] Event logger set successfully");
266578
266590
  process.on("beforeExit", async () => {
@@ -266634,7 +266646,7 @@ Current timeout: ${timeoutMs}ms
266634
266646
  }
266635
266647
  };
266636
266648
  registerCleanup(shutdownTelemetry);
266637
- return meterProvider.getMeter("com.anthropic.claude_code", "0.9.6");
266649
+ return meterProvider.getMeter("com.anthropic.claude_code", "0.9.8");
266638
266650
  }
266639
266651
  async function flushTelemetry() {
266640
266652
  const meterProvider = getMeterProvider();
@@ -267446,9 +267458,9 @@ async function assertMinVersion() {
267446
267458
  }
267447
267459
  try {
267448
267460
  const versionConfig = await getDynamicConfig_BLOCKS_ON_INIT("tengu_version_config", { minVersion: "0.0.0" });
267449
- if (versionConfig.minVersion && lt("0.9.6", versionConfig.minVersion)) {
267461
+ if (versionConfig.minVersion && lt("0.9.8", versionConfig.minVersion)) {
267450
267462
  console.error(`
267451
- It looks like your version of ZeroCLI (${"0.9.6"}) needs an update.
267463
+ It looks like your version of ZeroCLI (${"0.9.8"}) needs an update.
267452
267464
  A newer version (${versionConfig.minVersion} or higher) is required to continue.
267453
267465
 
267454
267466
  To update, please run:
@@ -267664,7 +267676,7 @@ async function installGlobalPackage(specificVersion) {
267664
267676
  logError2(new AutoUpdaterError("Another process is currently installing an update"));
267665
267677
  logEvent("tengu_auto_updater_lock_contention", {
267666
267678
  pid: process.pid,
267667
- currentVersion: "0.9.6"
267679
+ currentVersion: "0.9.8"
267668
267680
  });
267669
267681
  return "in_progress";
267670
267682
  }
@@ -267673,7 +267685,7 @@ async function installGlobalPackage(specificVersion) {
267673
267685
  if (!env2.isRunningWithBun() && env2.isNpmFromWindowsPath()) {
267674
267686
  logError2(new Error("Windows NPM detected in WSL environment"));
267675
267687
  logEvent("tengu_auto_updater_windows_npm_in_wsl", {
267676
- currentVersion: "0.9.6"
267688
+ currentVersion: "0.9.8"
267677
267689
  });
267678
267690
  console.error(`
267679
267691
  Error: Windows NPM detected in WSL
@@ -268227,7 +268239,7 @@ async function getDoctorDiagnostic() {
268227
268239
  const installationType = await getCurrentInstallationType();
268228
268240
  let version2;
268229
268241
  try {
268230
- version2 = "0.9.6";
268242
+ version2 = "0.9.8";
268231
268243
  } catch {
268232
268244
  version2 = "unknown";
268233
268245
  }
@@ -269721,7 +269733,7 @@ function getInstallationEnv() {
269721
269733
  return;
269722
269734
  }
269723
269735
  function getZeroCodeVersion() {
269724
- return "0.9.6";
269736
+ return "0.9.8";
269725
269737
  }
269726
269738
  async function getInstalledVSCodeExtensionVersion(command) {
269727
269739
  const { stdout } = await execFileNoThrow(command, ["--list-extensions", "--show-versions"], {
@@ -271088,8 +271100,8 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
271088
271100
  const maxVersion = await getMaxVersion();
271089
271101
  if (maxVersion && gt(version2, maxVersion)) {
271090
271102
  logForDebugging(`Native installer: maxVersion ${maxVersion} is set, capping update from ${version2} to ${maxVersion}`);
271091
- if (gte("0.9.6", maxVersion)) {
271092
- logForDebugging(`Native installer: current version ${"0.9.6"} is already at or above maxVersion ${maxVersion}, skipping update`);
271103
+ if (gte("0.9.8", maxVersion)) {
271104
+ logForDebugging(`Native installer: current version ${"0.9.8"} is already at or above maxVersion ${maxVersion}, skipping update`);
271093
271105
  logEvent("tengu_native_update_skipped_max_version", {
271094
271106
  latency_ms: Date.now() - startTime2,
271095
271107
  max_version: maxVersion,
@@ -271100,7 +271112,7 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
271100
271112
  version2 = maxVersion;
271101
271113
  }
271102
271114
  }
271103
- if (!forceReinstall && version2 === "0.9.6" && await versionIsAvailable(version2) && await isPossibleZeroBinary(executablePath)) {
271115
+ if (!forceReinstall && version2 === "0.9.8" && await versionIsAvailable(version2) && await isPossibleZeroBinary(executablePath)) {
271104
271116
  logForDebugging(`Found ${version2} at ${executablePath}, skipping install`);
271105
271117
  logEvent("tengu_native_update_complete", {
271106
271118
  latency_ms: Date.now() - startTime2,
@@ -372694,8 +372706,77 @@ function getSchemaValidationToolUseResult(tool, input, fallbackMessage) {
372694
372706
  const override = getSchemaValidationErrorOverride(tool, input);
372695
372707
  return `InputValidationError: ${override ?? fallbackMessage ?? ""}`;
372696
372708
  }
372709
+ function tryRepairToolInput(tool, input) {
372710
+ const shape = tool.inputSchema.shape;
372711
+ if (!shape)
372712
+ return input;
372713
+ const expectedKeys = new Set(Object.keys(shape));
372714
+ const inputKeys = Object.keys(input);
372715
+ const unrecognizedKeys = inputKeys.filter((k) => !expectedKeys.has(k));
372716
+ if (unrecognizedKeys.length === 0)
372717
+ return input;
372718
+ const missingKeys = [...expectedKeys].filter((k) => !(k in input) || input[k] === undefined);
372719
+ if (missingKeys.length === 0)
372720
+ return input;
372721
+ const repaired = { ...input };
372722
+ let anyRepaired = false;
372723
+ for (const badKey of unrecognizedKeys) {
372724
+ let bestMatch = null;
372725
+ let bestScore = Infinity;
372726
+ for (const expectedKey of missingKeys) {
372727
+ if (badKey === `${expectedKey}_${expectedKey}` || badKey === `${expectedKey}_${expectedKey.split("_").pop()}` || badKey.startsWith(expectedKey + "_") && badKey.replace(expectedKey + "_", "") === expectedKey.split("_").pop()) {
372728
+ bestMatch = expectedKey;
372729
+ bestScore = 0;
372730
+ break;
372731
+ }
372732
+ if (badKey.startsWith(expectedKey) && badKey.length > expectedKey.length) {
372733
+ const suffix = badKey.slice(expectedKey.length + 1);
372734
+ if (expectedKey.endsWith(suffix) || expectedKey.includes(suffix)) {
372735
+ bestMatch = expectedKey;
372736
+ bestScore = 0;
372737
+ break;
372738
+ }
372739
+ }
372740
+ const dist = levenshteinDistance(badKey, expectedKey);
372741
+ if (dist <= 3 && dist < bestScore) {
372742
+ bestMatch = expectedKey;
372743
+ bestScore = dist;
372744
+ }
372745
+ if ((badKey.includes(expectedKey) || expectedKey.includes(badKey)) && bestScore > 1) {
372746
+ bestMatch = expectedKey;
372747
+ bestScore = 1;
372748
+ }
372749
+ }
372750
+ if (bestMatch) {
372751
+ repaired[bestMatch] = repaired[badKey];
372752
+ delete repaired[badKey];
372753
+ anyRepaired = true;
372754
+ const idx = missingKeys.indexOf(bestMatch);
372755
+ if (idx >= 0)
372756
+ missingKeys.splice(idx, 1);
372757
+ logForDebugging(`[ZERO-DEBUG] Tool param auto-repair: "${badKey}" → "${bestMatch}" (tool: ${tool.name})`);
372758
+ }
372759
+ }
372760
+ return anyRepaired ? repaired : input;
372761
+ }
372762
+ function levenshteinDistance(a2, b) {
372763
+ const m = a2.length;
372764
+ const n2 = b.length;
372765
+ const dp = Array.from({ length: m + 1 }, () => Array(n2 + 1).fill(0));
372766
+ for (let i3 = 0;i3 <= m; i3++)
372767
+ dp[i3][0] = i3;
372768
+ for (let j = 0;j <= n2; j++)
372769
+ dp[0][j] = j;
372770
+ for (let i3 = 1;i3 <= m; i3++) {
372771
+ for (let j = 1;j <= n2; j++) {
372772
+ dp[i3][j] = a2[i3 - 1] === b[j - 1] ? dp[i3 - 1][j - 1] : 1 + Math.min(dp[i3 - 1][j], dp[i3][j - 1], dp[i3 - 1][j - 1]);
372773
+ }
372774
+ }
372775
+ return dp[m][n2];
372776
+ }
372697
372777
  async function checkPermissionsAndCallTool(tool, toolUseID, input, toolUseContext, canUseTool, assistantMessage, messageId, requestId, mcpServerType, mcpServerBaseUrl, onToolProgress) {
372698
- const parsedInput = tool.inputSchema.safeParse(input);
372778
+ const repairedInput = tryRepairToolInput(tool, input);
372779
+ const parsedInput = tool.inputSchema.safeParse(repairedInput);
372699
372780
  if (!parsedInput.success) {
372700
372781
  const fallbackErrorContent = formatZodValidationError(tool.name, parsedInput.error);
372701
372782
  let errorContent = getSchemaValidationErrorOverride(tool, input) ?? fallbackErrorContent;
@@ -375901,8 +375982,9 @@ async function* queryLoop(params, consumedCommandUuids) {
375901
375982
  continue;
375902
375983
  }
375903
375984
  if (maxOutputTokensRecoveryCount < MAX_OUTPUT_TOKENS_RECOVERY_LIMIT) {
375985
+ logForDebugging(`[ZERO-DEBUG] MAX_TOKENS recovery attempt ${maxOutputTokensRecoveryCount + 1}/${MAX_OUTPUT_TOKENS_RECOVERY_LIMIT}. Enviando nudge para o modelo continuar de onde parou.`);
375904
375986
  const recoveryMessage = createUserMessage({
375905
- content: `Output token limit hit. Resume directly — no apology, no recap of what you were doing. ` + `Pick up mid-thought if that is where the cut happened. Break remaining work into smaller pieces.`,
375987
+ content: `Output token limit hit. Resume directly — no apology, no recap of what you were doing. ` + `Pick up mid-thought if that is where the cut happened. Break remaining work into smaller pieces. Use tool calls (one at a time) rather than generating large blocks of text or code inline.`,
375906
375988
  isMeta: true
375907
375989
  });
375908
375990
  const next2 = {
@@ -376343,7 +376425,7 @@ function getAnthropicEnvMetadata() {
376343
376425
  function getBuildAgeMinutes() {
376344
376426
  if (false)
376345
376427
  ;
376346
- const buildTime = new Date("2026-05-13T13:07:10.047Z").getTime();
376428
+ const buildTime = new Date("2026-05-18T18:56:23.679Z").getTime();
376347
376429
  if (isNaN(buildTime))
376348
376430
  return;
376349
376431
  return Math.floor((Date.now() - buildTime) / 60000);
@@ -380295,6 +380377,29 @@ async function countMessagesTokensWithAPI(messages, tools) {
380295
380377
  containsThinking
380296
380378
  });
380297
380379
  }
380380
+ const provider = getAPIProvider();
380381
+ const openAICompatProviders = new Set([
380382
+ "openai",
380383
+ "github",
380384
+ "codex",
380385
+ "nvidia-nim",
380386
+ "minimax",
380387
+ "mistral",
380388
+ "gemini"
380389
+ ]);
380390
+ if (openAICompatProviders.has(provider)) {
380391
+ logForDebugging(`[ZERO-DEBUG] countTokens: provider="${provider}" não suporta countTokens API. Usando estimativa local.`);
380392
+ let total = 0;
380393
+ const bytesPerToken = getBytesPerTokenForModel(model);
380394
+ for (const msg of messages) {
380395
+ const content = typeof msg.content === "string" ? msg.content : Array.isArray(msg.content) ? msg.content.map((b) => typeof b === "string" ? b : JSON.stringify(b)).join("") : "";
380396
+ total += roughTokenCountEstimation(content, bytesPerToken);
380397
+ }
380398
+ if (tools.length > 0) {
380399
+ total += roughTokenCountEstimation(JSON.stringify(tools), bytesPerToken);
380400
+ }
380401
+ return total;
380402
+ }
380298
380403
  const anthropic = await getAnthropicClient({
380299
380404
  maxRetries: 1,
380300
380405
  model,
@@ -380336,6 +380441,18 @@ function bytesPerTokenForFileType(fileExtension2) {
380336
380441
  return 4;
380337
380442
  }
380338
380443
  }
380444
+ function getTokenizerConfig(model) {
380445
+ const lower = model.toLowerCase();
380446
+ for (const config2 of MODEL_TOKENIZER_CONFIGS) {
380447
+ if (lower.includes(config2.modelFamily)) {
380448
+ return config2;
380449
+ }
380450
+ }
380451
+ return { modelFamily: "unknown", bytesPerToken: 4, supportsJson: true, supportsCode: true };
380452
+ }
380453
+ function getBytesPerTokenForModel(model) {
380454
+ return getTokenizerConfig(model).bytesPerToken;
380455
+ }
380339
380456
  function roughTokenCountEstimationForFileType(content, fileExtension2) {
380340
380457
  return roughTokenCountEstimation(content, bytesPerTokenForFileType(fileExtension2));
380341
380458
  }
@@ -380476,11 +380593,12 @@ async function countTokensWithBedrock({
380476
380593
  return null;
380477
380594
  }
380478
380595
  }
380479
- var TOKEN_COUNT_THINKING_BUDGET = 1024, TOKEN_COUNT_MAX_TOKENS = 2048;
380596
+ var TOKEN_COUNT_THINKING_BUDGET = 1024, TOKEN_COUNT_MAX_TOKENS = 2048, MODEL_TOKENIZER_CONFIGS;
380480
380597
  var init_tokenEstimation = __esm(() => {
380481
380598
  init_providers();
380482
380599
  init_betas();
380483
380600
  init_betas2();
380601
+ init_debug();
380484
380602
  init_envUtils();
380485
380603
  init_log3();
380486
380604
  init_messages3();
@@ -380491,6 +380609,17 @@ var init_tokenEstimation = __esm(() => {
380491
380609
  init_claude();
380492
380610
  init_client6();
380493
380611
  init_vcr();
380612
+ MODEL_TOKENIZER_CONFIGS = [
380613
+ { modelFamily: "claude", bytesPerToken: 3.5, supportsJson: true, supportsCode: true },
380614
+ { modelFamily: "gpt-4", bytesPerToken: 4, supportsJson: true, supportsCode: true },
380615
+ { modelFamily: "gpt-3.5", bytesPerToken: 4, supportsJson: true, supportsCode: true },
380616
+ { modelFamily: "gemini", bytesPerToken: 3.5, supportsJson: true, supportsCode: true },
380617
+ { modelFamily: "llama", bytesPerToken: 3.8, supportsJson: true, supportsCode: true },
380618
+ { modelFamily: "deepseek", bytesPerToken: 3.5, supportsJson: true, supportsCode: true },
380619
+ { modelFamily: "minimax", bytesPerToken: 3.2, supportsJson: true, supportsCode: true },
380620
+ { modelFamily: "qwen", bytesPerToken: 3.5, supportsJson: true, supportsCode: true },
380621
+ { modelFamily: "mistral", bytesPerToken: 3.5, supportsJson: true, supportsCode: true }
380622
+ ];
380494
380623
  });
380495
380624
 
380496
380625
  // src/utils/pdf.ts
@@ -403779,7 +403908,7 @@ async function setupSdkMcpClients(sdkMcpConfigs, sendMcpMessage) {
403779
403908
  const client2 = new Client({
403780
403909
  name: "claude-code",
403781
403910
  title: "ZeroCLI",
403782
- version: "0.9.6",
403911
+ version: "0.9.8",
403783
403912
  description: "Anthropic's agentic coding tool",
403784
403913
  websiteUrl: PRODUCT_URL
403785
403914
  }, {
@@ -404131,7 +404260,7 @@ var init_client7 = __esm(() => {
404131
404260
  const client2 = new Client({
404132
404261
  name: "claude-code",
404133
404262
  title: "ZeroCLI",
404134
- version: "0.9.6",
404263
+ version: "0.9.8",
404135
404264
  description: "Anthropic's agentic coding tool",
404136
404265
  websiteUrl: PRODUCT_URL
404137
404266
  }, {
@@ -414866,7 +414995,7 @@ function Feedback({
414866
414995
  platform: env2.platform,
414867
414996
  gitRepo: envInfo.isGit,
414868
414997
  terminal: env2.terminal,
414869
- version: "0.9.6",
414998
+ version: "0.9.8",
414870
414999
  transcript: normalizeMessagesForAPI(messages),
414871
415000
  errors: sanitizedErrors,
414872
415001
  lastApiRequest: getLastAPIRequest(),
@@ -415059,7 +415188,7 @@ function Feedback({
415059
415188
  ", ",
415060
415189
  env2.terminal,
415061
415190
  ", v",
415062
- "0.9.6"
415191
+ "0.9.8"
415063
415192
  ]
415064
415193
  })
415065
415194
  ]
@@ -415167,7 +415296,7 @@ ${sanitizedDescription}
415167
415296
  ` + `**Environment Info**
415168
415297
  ` + `- Platform: ${env2.platform}
415169
415298
  ` + `- Terminal: ${env2.terminal}
415170
- ` + `- Version: ${"0.9.6"}
415299
+ ` + `- Version: ${"0.9.8"}
415171
415300
  ` + feedbackIdLine + `
415172
415301
  **Errors**
415173
415302
  \`\`\`json
@@ -418320,7 +418449,7 @@ function buildPrimarySection() {
418320
418449
  });
418321
418450
  return [{
418322
418451
  label: "Version",
418323
- value: "0.9.6"
418452
+ value: "0.9.8"
418324
418453
  }, {
418325
418454
  label: "Session name",
418326
418455
  value: nameValue
@@ -423090,7 +423219,7 @@ function Config({
423090
423219
  }
423091
423220
  })
423092
423221
  }) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_runtime181.jsx(ChannelDowngradeDialog, {
423093
- currentVersion: "0.9.6",
423222
+ currentVersion: "0.9.8",
423094
423223
  onChoice: (choice) => {
423095
423224
  setShowSubmenu(null);
423096
423225
  setTabsHidden(false);
@@ -423102,7 +423231,7 @@ function Config({
423102
423231
  autoUpdatesChannel: "stable"
423103
423232
  };
423104
423233
  if (choice === "stay") {
423105
- newSettings.minimumVersion = "0.9.6";
423234
+ newSettings.minimumVersion = "0.9.8";
423106
423235
  }
423107
423236
  updateSettingsForSource("userSettings", newSettings);
423108
423237
  setSettingsData((prev_27) => ({
@@ -430043,7 +430172,7 @@ function UpdateScreen({ onDone }) {
430043
430172
  setState({ type: "dev-build" });
430044
430173
  return;
430045
430174
  }
430046
- const currentVersion = "0.9.6";
430175
+ const currentVersion = "0.9.8";
430047
430176
  const channel2 = getInitialSettings()?.autoUpdatesChannel ?? "latest";
430048
430177
  const latestVersion = await getLatestVersion(channel2);
430049
430178
  if (!latestVersion) {
@@ -432154,7 +432283,7 @@ function HelpV2(t0) {
432154
432283
  let t6;
432155
432284
  if ($2[31] !== tabs) {
432156
432285
  t6 = /* @__PURE__ */ jsx_runtime211.jsx(Tabs, {
432157
- title: `ZeroCLI v${"0.9.6"}`,
432286
+ title: `ZeroCLI v${"0.9.8"}`,
432158
432287
  color: "professionalBlue",
432159
432288
  defaultTab: "general",
432160
432289
  children: tabs
@@ -456998,7 +457127,7 @@ function getAllReleaseNotes(changelogContent = getStoredChangelogFromMemory()) {
456998
457127
  return [];
456999
457128
  }
457000
457129
  }
457001
- async function checkForReleaseNotes(lastSeenVersion, currentVersion = "0.9.6") {
457130
+ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "0.9.8") {
457002
457131
  if (process.env.USER_TYPE === "ant") {
457003
457132
  const changelog = MACRO.VERSION_CHANGELOG;
457004
457133
  if (changelog) {
@@ -486036,7 +486165,7 @@ async function captureMemoryDiagnostics(trigger, dumpNumber = 0) {
486036
486165
  smapsRollup,
486037
486166
  platform: process.platform,
486038
486167
  nodeVersion: process.version,
486039
- ccVersion: "0.9.6"
486168
+ ccVersion: "0.9.8"
486040
486169
  };
486041
486170
  }
486042
486171
  async function performHeapDump(trigger = "manual", dumpNumber = 0) {
@@ -486623,7 +486752,7 @@ var init_bridge_kick = __esm(() => {
486623
486752
  var call60 = async () => {
486624
486753
  return {
486625
486754
  type: "text",
486626
- value: `${"0.9.6"} (built ${"2026-05-13T13:07:10.047Z"})`
486755
+ value: `${"0.9.8"} (built ${"2026-05-18T18:56:23.679Z"})`
486627
486756
  };
486628
486757
  }, version2, version_default;
486629
486758
  var init_version = __esm(() => {
@@ -496780,7 +496909,7 @@ function generateHtmlReport(data, insights) {
496780
496909
  function buildExportData(data, insights, facets) {
496781
496910
  let version3;
496782
496911
  try {
496783
- version3 = "0.9.6";
496912
+ version3 = "0.9.8";
496784
496913
  } catch {
496785
496914
  version3 = "unknown";
496786
496915
  }
@@ -500976,7 +501105,7 @@ var init_sessionStorage = __esm(() => {
500976
501105
  init_slowOperations();
500977
501106
  init_uuid();
500978
501107
  try {
500979
- VERSION7 = "0.9.6";
501108
+ VERSION7 = "0.9.8";
500980
501109
  } catch {
500981
501110
  VERSION7 = "unknown";
500982
501111
  }
@@ -502297,7 +502426,7 @@ var init_filesystem = __esm(() => {
502297
502426
  });
502298
502427
  getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
502299
502428
  const nonce = randomBytes17(16).toString("hex");
502300
- return join137(getZeroTempDir(), "bundled-skills", "0.9.6", nonce);
502429
+ return join137(getZeroTempDir(), "bundled-skills", "0.9.8", nonce);
502301
502430
  });
502302
502431
  getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
502303
502432
  });
@@ -513317,7 +513446,7 @@ function buildSystemInitMessage(inputs) {
513317
513446
  slash_commands: inputs.commands.filter((c6) => c6.userInvocable !== false).map((c6) => c6.name),
513318
513447
  apiKeySource: getAnthropicApiKeyWithSource().source,
513319
513448
  betas: getSdkBetas(),
513320
- claude_code_version: "0.9.6",
513449
+ claude_code_version: "0.9.8",
513321
513450
  output_style: outputStyle2,
513322
513451
  agents: inputs.agents.map((agent2) => agent2.agentType),
513323
513452
  skills: inputs.skills.filter((s) => s.userInvocable !== false).map((skill) => skill.name),
@@ -528632,7 +528761,7 @@ var init_useVoiceEnabled = __esm(() => {
528632
528761
  function getSemverPart(version3) {
528633
528762
  return `${import_semver12.major(version3, { loose: true })}.${import_semver12.minor(version3, { loose: true })}.${import_semver12.patch(version3, { loose: true })}`;
528634
528763
  }
528635
- function useUpdateNotification(updatedVersion, initialVersion = "0.9.6") {
528764
+ function useUpdateNotification(updatedVersion, initialVersion = "0.9.8") {
528636
528765
  const [lastNotifiedSemver, setLastNotifiedSemver] = import_react226.useState(() => getSemverPart(initialVersion));
528637
528766
  if (!updatedVersion) {
528638
528767
  return null;
@@ -528675,7 +528804,7 @@ function AutoUpdater({
528675
528804
  return;
528676
528805
  }
528677
528806
  if (false) {}
528678
- const currentVersion = "0.9.6";
528807
+ const currentVersion = "0.9.8";
528679
528808
  const channel2 = getInitialSettings()?.autoUpdatesChannel ?? "latest";
528680
528809
  let latestVersion = await getLatestVersion(channel2);
528681
528810
  const isDisabled = isAutoUpdaterDisabled();
@@ -528896,12 +529025,12 @@ function NativeAutoUpdater({
528896
529025
  logEvent("tengu_native_auto_updater_start", {});
528897
529026
  try {
528898
529027
  const maxVersion = await getMaxVersion();
528899
- if (maxVersion && gt("0.9.6", maxVersion)) {
529028
+ if (maxVersion && gt("0.9.8", maxVersion)) {
528900
529029
  const msg = await getMaxVersionMessage();
528901
529030
  setMaxVersionIssue(msg ?? "affects your version");
528902
529031
  }
528903
529032
  const result = await installLatest(channel2);
528904
- const currentVersion = "0.9.6";
529033
+ const currentVersion = "0.9.8";
528905
529034
  const latencyMs = Date.now() - startTime2;
528906
529035
  if (result.lockFailed) {
528907
529036
  logEvent("tengu_native_auto_updater_lock_contention", {
@@ -529043,17 +529172,17 @@ function PackageManagerAutoUpdater(t0) {
529043
529172
  const maxVersion = await getMaxVersion();
529044
529173
  if (maxVersion && latest && gt(latest, maxVersion)) {
529045
529174
  logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
529046
- if (gte("0.9.6", maxVersion)) {
529047
- logForDebugging(`PackageManagerAutoUpdater: current version ${"0.9.6"} is already at or above maxVersion ${maxVersion}, skipping update`);
529175
+ if (gte("0.9.8", maxVersion)) {
529176
+ logForDebugging(`PackageManagerAutoUpdater: current version ${"0.9.8"} is already at or above maxVersion ${maxVersion}, skipping update`);
529048
529177
  setUpdateAvailable(false);
529049
529178
  return;
529050
529179
  }
529051
529180
  latest = maxVersion;
529052
529181
  }
529053
- const hasUpdate = latest && !gte("0.9.6", latest) && !shouldSkipVersion(latest);
529182
+ const hasUpdate = latest && !gte("0.9.8", latest) && !shouldSkipVersion(latest);
529054
529183
  setUpdateAvailable(!!hasUpdate);
529055
529184
  if (hasUpdate) {
529056
- logForDebugging(`PackageManagerAutoUpdater: Update available ${"0.9.6"} -> ${latest}`);
529185
+ logForDebugging(`PackageManagerAutoUpdater: Update available ${"0.9.8"} -> ${latest}`);
529057
529186
  }
529058
529187
  };
529059
529188
  $2[0] = t1;
@@ -529087,7 +529216,7 @@ function PackageManagerAutoUpdater(t0) {
529087
529216
  wrap: "truncate",
529088
529217
  children: [
529089
529218
  "currentVersion: ",
529090
- "0.9.6"
529219
+ "0.9.8"
529091
529220
  ]
529092
529221
  });
529093
529222
  $2[3] = verbose;
@@ -529256,7 +529385,33 @@ function IdeStatusIndicator({
529256
529385
  }) {
529257
529386
  const { status: ideStatus } = useIdeConnectionStatus(mcpClients);
529258
529387
  const shouldShowIdeSelection = ideStatus === "connected" && (ideSelection?.filePath || ideSelection?.text && ideSelection.lineCount > 0);
529259
- const tokenSuffix = tokenUsage !== undefined && mainLoopModel ? ` · ${mainLoopModel} · ${formatTokenInfo(tokenUsage, mainLoopModel)}` : "";
529388
+ const [displayedTokenUsage, setDisplayedTokenUsage] = React136.useState(tokenUsage);
529389
+ const lastTokenUpdateRef = React136.useRef(0);
529390
+ const throttleTimerRef = React136.useRef(undefined);
529391
+ React136.useEffect(() => {
529392
+ if (throttleTimerRef.current)
529393
+ clearTimeout(throttleTimerRef.current);
529394
+ if (tokenUsage === undefined || displayedTokenUsage === undefined) {
529395
+ lastTokenUpdateRef.current = Date.now();
529396
+ setDisplayedTokenUsage(tokenUsage);
529397
+ return;
529398
+ }
529399
+ const elapsed = Date.now() - lastTokenUpdateRef.current;
529400
+ if (elapsed >= TOKEN_THROTTLE_MS) {
529401
+ lastTokenUpdateRef.current = Date.now();
529402
+ setDisplayedTokenUsage(tokenUsage);
529403
+ } else {
529404
+ throttleTimerRef.current = setTimeout(() => {
529405
+ lastTokenUpdateRef.current = Date.now();
529406
+ setDisplayedTokenUsage(tokenUsage);
529407
+ }, TOKEN_THROTTLE_MS - elapsed);
529408
+ }
529409
+ return () => {
529410
+ if (throttleTimerRef.current)
529411
+ clearTimeout(throttleTimerRef.current);
529412
+ };
529413
+ }, [tokenUsage]);
529414
+ const tokenSuffix = displayedTokenUsage !== undefined && mainLoopModel ? ` · ${mainLoopModel} · ${formatTokenInfo(displayedTokenUsage, mainLoopModel)}` : "";
529260
529415
  if (!shouldShowIdeSelection || !ideSelection) {
529261
529416
  if (!tokenSuffix)
529262
529417
  return null;
@@ -529266,7 +529421,7 @@ function IdeStatusIndicator({
529266
529421
  children: [
529267
529422
  mainLoopModel,
529268
529423
  " · ",
529269
- tokenUsage !== undefined && mainLoopModel ? formatTokenInfo(tokenUsage, mainLoopModel) : ""
529424
+ displayedTokenUsage !== undefined && mainLoopModel ? formatTokenInfo(displayedTokenUsage, mainLoopModel) : ""
529270
529425
  ]
529271
529426
  }, "token-indicator");
529272
529427
  }
@@ -529301,13 +529456,14 @@ function IdeStatusIndicator({
529301
529456
  }, "selection-indicator");
529302
529457
  }
529303
529458
  }
529304
- var jsx_runtime407;
529459
+ var React136, jsx_runtime407, TOKEN_THROTTLE_MS = 800;
529305
529460
  var init_IdeStatusIndicator = __esm(() => {
529306
529461
  init_useIdeConnectionStatus();
529307
529462
  init_ink2();
529308
529463
  init_i18n();
529309
529464
  init_context();
529310
529465
  init_format2();
529466
+ React136 = __toESM(require_react(), 1);
529311
529467
  jsx_runtime407 = __toESM(require_jsx_runtime(), 1);
529312
529468
  });
529313
529469
 
@@ -534374,10 +534530,10 @@ function CoordinatorTaskPanel() {
534374
534530
  const setAppState = useSetAppState();
534375
534531
  const visibleTasks = getVisibleAgentTasks(tasks2);
534376
534532
  const hasTasks = Object.values(tasks2).some(isPanelAgentTask);
534377
- const tasksRef = React138.useRef(tasks2);
534533
+ const tasksRef = React139.useRef(tasks2);
534378
534534
  tasksRef.current = tasks2;
534379
- const [, setTick] = React138.useState(0);
534380
- React138.useEffect(() => {
534535
+ const [, setTick] = React139.useState(0);
534536
+ React139.useEffect(() => {
534381
534537
  if (!hasTasks)
534382
534538
  return;
534383
534539
  const interval = setInterval((tasksRef_0, setAppState_0, setTick_0) => {
@@ -534391,7 +534547,7 @@ function CoordinatorTaskPanel() {
534391
534547
  }, 1000, tasksRef, setAppState, setTick);
534392
534548
  return () => clearInterval(interval);
534393
534549
  }, [hasTasks, setAppState]);
534394
- const nameByAgentId = React138.useMemo(() => {
534550
+ const nameByAgentId = React139.useMemo(() => {
534395
534551
  const inv = new Map;
534396
534552
  for (const [n3, id] of agentNameRegistry)
534397
534553
  inv.set(id, n3);
@@ -534435,7 +534591,7 @@ function MainLine(t0) {
534435
534591
  isViewed,
534436
534592
  onClick
534437
534593
  } = t0;
534438
- const [hover, setHover] = React138.useState(false);
534594
+ const [hover, setHover] = React139.useState(false);
534439
534595
  const prefix = isSelected || hover ? figures_default.pointer + " " : " ";
534440
534596
  const bullet2 = isViewed ? BLACK_CIRCLE : figures_default.circle;
534441
534597
  let t1;
@@ -534497,7 +534653,7 @@ function AgentLine(t0) {
534497
534653
  const {
534498
534654
  columns
534499
534655
  } = useTerminalSize();
534500
- const [hover, setHover] = React138.useState(false);
534656
+ const [hover, setHover] = React139.useState(false);
534501
534657
  const isRunning = !isTerminalStatus(task.status);
534502
534658
  const pausedMs = task.totalPausedMs ?? 0;
534503
534659
  const elapsedMs = Math.max(0, isRunning ? Date.now() - task.startTime - pausedMs : (task.endTime ?? task.startTime) - task.startTime - pausedMs);
@@ -534652,7 +534808,7 @@ function AgentLine(t0) {
534652
534808
  }
534653
534809
  return t11;
534654
534810
  }
534655
- var import_react_compiler_runtime306, React138, jsx_runtime416;
534811
+ var import_react_compiler_runtime306, React139, jsx_runtime416;
534656
534812
  var init_CoordinatorAgentStatus = __esm(() => {
534657
534813
  init_figures();
534658
534814
  init_figures2();
@@ -534666,7 +534822,7 @@ var init_CoordinatorAgentStatus = __esm(() => {
534666
534822
  init_framework();
534667
534823
  init_taskStatusUtils();
534668
534824
  import_react_compiler_runtime306 = __toESM(require_dist3(), 1);
534669
- React138 = __toESM(require_react(), 1);
534825
+ React139 = __toESM(require_react(), 1);
534670
534826
  jsx_runtime416 = __toESM(require_jsx_runtime(), 1);
534671
534827
  });
534672
534828
 
@@ -538116,7 +538272,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
538116
538272
  project_dir: getOriginalCwd(),
538117
538273
  added_dirs: addedDirs
538118
538274
  },
538119
- version: "0.9.6",
538275
+ version: "0.9.8",
538120
538276
  output_style: {
538121
538277
  name: outputStyleName
538122
538278
  },
@@ -538546,7 +538702,7 @@ function BackgroundTaskStatus(t0) {
538546
538702
  if ($2[25] !== selectedIdx || $2[26] !== setAppState || $2[27] !== viewedIdx || $2[28] !== visiblePills) {
538547
538703
  t13 = visiblePills.map((pill_1, i_1) => {
538548
538704
  const needsSeparator = i_1 > 0;
538549
- return /* @__PURE__ */ jsx_runtime426.jsxs(React141.Fragment, {
538705
+ return /* @__PURE__ */ jsx_runtime426.jsxs(React142.Fragment, {
538550
538706
  children: [
538551
538707
  needsSeparator && /* @__PURE__ */ jsx_runtime426.jsx(ThemedText, {
538552
538708
  children: " "
@@ -538916,7 +539072,7 @@ function getAgentThemeColor(colorName) {
538916
539072
  }
538917
539073
  return;
538918
539074
  }
538919
- var import_react_compiler_runtime313, React141, import_react251, jsx_runtime426;
539075
+ var import_react_compiler_runtime313, React142, import_react251, jsx_runtime426;
538920
539076
  var init_BackgroundTaskStatus = __esm(() => {
538921
539077
  init_figures();
538922
539078
  init_useTerminalSize();
@@ -538930,7 +539086,7 @@ var init_BackgroundTaskStatus = __esm(() => {
538930
539086
  init_KeyboardShortcutHint();
538931
539087
  init_taskStatusUtils();
538932
539088
  import_react_compiler_runtime313 = __toESM(require_dist3(), 1);
538933
- React141 = __toESM(require_react(), 1);
539089
+ React142 = __toESM(require_react(), 1);
538934
539090
  import_react251 = __toESM(require_react(), 1);
538935
539091
  jsx_runtime426 = __toESM(require_jsx_runtime(), 1);
538936
539092
  });
@@ -540073,7 +540229,7 @@ function PromptInputQueuedCommandsImpl() {
540073
540229
  ]
540074
540230
  });
540075
540231
  }
540076
- var React142, import_react255, jsx_runtime433, EMPTY_SET2, MAX_VISIBLE_NOTIFICATIONS = 3, PromptInputQueuedCommands;
540232
+ var React143, import_react255, jsx_runtime433, EMPTY_SET2, MAX_VISIBLE_NOTIFICATIONS = 3, PromptInputQueuedCommands;
540077
540233
  var init_PromptInputQueuedCommands = __esm(() => {
540078
540234
  init_ink2();
540079
540235
  init_AppState();
@@ -540084,11 +540240,11 @@ var init_PromptInputQueuedCommands = __esm(() => {
540084
540240
  init_messages3();
540085
540241
  init_slowOperations();
540086
540242
  init_Message();
540087
- React142 = __toESM(require_react(), 1);
540243
+ React143 = __toESM(require_react(), 1);
540088
540244
  import_react255 = __toESM(require_react(), 1);
540089
540245
  jsx_runtime433 = __toESM(require_jsx_runtime(), 1);
540090
540246
  EMPTY_SET2 = new Set;
540091
- PromptInputQueuedCommands = React142.memo(PromptInputQueuedCommandsImpl);
540247
+ PromptInputQueuedCommands = React143.memo(PromptInputQueuedCommandsImpl);
540092
540248
  });
540093
540249
 
540094
540250
  // src/components/PromptInput/PromptInputStashNotice.tsx
@@ -540427,8 +540583,8 @@ function useSwarmBanner() {
540427
540583
  const agent2 = useAppState((s) => s.agent);
540428
540584
  useAppState((s) => s.viewingAgentTaskId);
540429
540585
  const store = useAppStateStore();
540430
- const [insideTmux, setInsideTmux] = React143.useState(null);
540431
- React143.useEffect(() => {
540586
+ const [insideTmux, setInsideTmux] = React144.useState(null);
540587
+ React144.useEffect(() => {
540432
540588
  isInsideTmux().then(setInsideTmux);
540433
540589
  }, []);
540434
540590
  const state2 = store.getState();
@@ -540495,7 +540651,7 @@ function useSwarmBanner() {
540495
540651
  function toThemeColor(colorName, fallback = "cyan_FOR_SUBAGENTS_ONLY") {
540496
540652
  return colorName && AGENT_COLORS.includes(colorName) ? AGENT_COLOR_TO_THEME_COLOR[colorName] : fallback;
540497
540653
  }
540498
- var React143;
540654
+ var React144;
540499
540655
  var init_useSwarmBanner = __esm(() => {
540500
540656
  init_AppState();
540501
540657
  init_selectors();
@@ -540505,7 +540661,7 @@ var init_useSwarmBanner = __esm(() => {
540505
540661
  init_registry();
540506
540662
  init_teammate();
540507
540663
  init_teammateContext();
540508
- React143 = __toESM(require_react(), 1);
540664
+ React144 = __toESM(require_react(), 1);
540509
540665
  });
540510
540666
 
540511
540667
  // src/components/PromptInput/PromptInput.tsx
@@ -540561,9 +540717,9 @@ function PromptInput({
540561
540717
  show: false
540562
540718
  });
540563
540719
  const [cursorOffset, setCursorOffset] = import_react259.useState(input.length);
540564
- const lastInternalInputRef = React144.useRef(input);
540565
- const lastPropInputRef = React144.useRef(input);
540566
- React144.useLayoutEffect(() => {
540720
+ const lastInternalInputRef = React145.useRef(input);
540721
+ const lastPropInputRef = React145.useRef(input);
540722
+ React145.useLayoutEffect(() => {
540567
540723
  if (input === lastPropInputRef.current) {
540568
540724
  return;
540569
540725
  }
@@ -540574,7 +540730,7 @@ function PromptInput({
540574
540730
  lastInternalInputRef.current = input;
540575
540731
  setCursorOffset((prev) => prev === input.length ? prev : input.length);
540576
540732
  }, [input]);
540577
- const trackAndSetInput = React144.useCallback((value) => {
540733
+ const trackAndSetInput = React145.useCallback((value) => {
540578
540734
  lastInternalInputRef.current = value;
540579
540735
  onInputChange(value);
540580
540736
  }, [onInputChange]);
@@ -542394,7 +542550,7 @@ function buildBorderText(showFastIcon, showFastIconHint, fastModeCooldown) {
542394
542550
  offset: 0
542395
542551
  };
542396
542552
  }
542397
- var React144, import_react259, jsx_runtime435, PROMPT_FOOTER_LINES = 5, MIN_INPUT_VIEWPORT_LINES = 3, PromptInput_default;
542553
+ var React145, import_react259, jsx_runtime435, PROMPT_FOOTER_LINES = 5, MIN_INPUT_VIEWPORT_LINES = 3, PromptInput_default;
542398
542554
  var init_PromptInput = __esm(() => {
542399
542555
  init_source2();
542400
542556
  init_notifications();
@@ -542491,10 +542647,10 @@ var init_PromptInput = __esm(() => {
542491
542647
  init_useShowFastIconHint();
542492
542648
  init_useSwarmBanner();
542493
542649
  init_utils12();
542494
- React144 = __toESM(require_react(), 1);
542650
+ React145 = __toESM(require_react(), 1);
542495
542651
  import_react259 = __toESM(require_react(), 1);
542496
542652
  jsx_runtime435 = __toESM(require_jsx_runtime(), 1);
542497
- PromptInput_default = React144.memo(PromptInput);
542653
+ PromptInput_default = React145.memo(PromptInput);
542498
542654
  });
542499
542655
 
542500
542656
  // src/utils/controlMessageCompat.ts
@@ -553774,7 +553930,7 @@ function useLspInitializationNotification() {
553774
553930
  addNotification
553775
553931
  } = useNotifications();
553776
553932
  const setAppState = useSetAppState();
553777
- const [shouldPoll, setShouldPoll] = React149.useState(_temp204);
553933
+ const [shouldPoll, setShouldPoll] = React150.useState(_temp204);
553778
553934
  let t0;
553779
553935
  if ($2[0] === Symbol.for("react.memo_cache_sentinel")) {
553780
553936
  t0 = new Set;
@@ -553782,7 +553938,7 @@ function useLspInitializationNotification() {
553782
553938
  } else {
553783
553939
  t0 = $2[0];
553784
553940
  }
553785
- const notifiedErrorsRef = React149.useRef(t0);
553941
+ const notifiedErrorsRef = React150.useRef(t0);
553786
553942
  let t1;
553787
553943
  if ($2[1] !== addNotification || $2[2] !== setAppState) {
553788
553944
  t1 = (source, errorMessage4) => {
@@ -553893,7 +554049,7 @@ function useLspInitializationNotification() {
553893
554049
  t3 = $2[8];
553894
554050
  t4 = $2[9];
553895
554051
  }
553896
- React149.useEffect(t3, t4);
554052
+ React150.useEffect(t3, t4);
553897
554053
  }
553898
554054
  function _temp287(e2) {
553899
554055
  if (e2.type === "generic-error") {
@@ -553904,7 +554060,7 @@ function _temp287(e2) {
553904
554060
  function _temp204() {
553905
554061
  return isEnvTruthy("true");
553906
554062
  }
553907
- var import_react_compiler_runtime337, React149, jsx_runtime453, LSP_POLL_INTERVAL_MS = 5000;
554063
+ var import_react_compiler_runtime337, React150, jsx_runtime453, LSP_POLL_INTERVAL_MS = 5000;
553908
554064
  var init_useLspInitializationNotification = __esm(() => {
553909
554065
  init_dist();
553910
554066
  init_state();
@@ -553915,7 +554071,7 @@ var init_useLspInitializationNotification = __esm(() => {
553915
554071
  init_debug();
553916
554072
  init_envUtils();
553917
554073
  import_react_compiler_runtime337 = __toESM(require_dist3(), 1);
553918
- React149 = __toESM(require_react(), 1);
554074
+ React150 = __toESM(require_react(), 1);
553919
554075
  jsx_runtime453 = __toESM(require_jsx_runtime(), 1);
553920
554076
  });
553921
554077
 
@@ -554128,8 +554284,8 @@ var init_lspRecommendation = __esm(() => {
554128
554284
  // src/hooks/usePluginRecommendationBase.tsx
554129
554285
  function usePluginRecommendationBase() {
554130
554286
  const $2 = import_react_compiler_runtime338.c(6);
554131
- const [recommendation, setRecommendation] = React150.useState(null);
554132
- const isCheckingRef = React150.useRef(false);
554287
+ const [recommendation, setRecommendation] = React151.useState(null);
554288
+ const isCheckingRef = React151.useRef(false);
554133
554289
  let t0;
554134
554290
  if ($2[0] !== recommendation) {
554135
554291
  t0 = (resolve45) => {
@@ -554217,7 +554373,7 @@ async function installPluginAndNotify(pluginId, pluginName, keyPrefix, addNotifi
554217
554373
  });
554218
554374
  }
554219
554375
  }
554220
- var import_react_compiler_runtime338, React150, jsx_runtime454;
554376
+ var import_react_compiler_runtime338, React151, jsx_runtime454;
554221
554377
  var init_usePluginRecommendationBase = __esm(() => {
554222
554378
  init_figures();
554223
554379
  init_state();
@@ -554225,7 +554381,7 @@ var init_usePluginRecommendationBase = __esm(() => {
554225
554381
  init_log3();
554226
554382
  init_marketplaceManager();
554227
554383
  import_react_compiler_runtime338 = __toESM(require_dist3(), 1);
554228
- React150 = __toESM(require_react(), 1);
554384
+ React151 = __toESM(require_react(), 1);
554229
554385
  jsx_runtime454 = __toESM(require_jsx_runtime(), 1);
554230
554386
  });
554231
554387
 
@@ -554244,7 +554400,7 @@ function useLspPluginRecommendation() {
554244
554400
  } else {
554245
554401
  t0 = $2[0];
554246
554402
  }
554247
- const checkedFilesRef = React151.useRef(t0);
554403
+ const checkedFilesRef = React152.useRef(t0);
554248
554404
  const {
554249
554405
  recommendation,
554250
554406
  clearRecommendation,
@@ -554297,7 +554453,7 @@ function useLspPluginRecommendation() {
554297
554453
  t1 = $2[3];
554298
554454
  t2 = $2[4];
554299
554455
  }
554300
- React151.useEffect(t1, t2);
554456
+ React152.useEffect(t1, t2);
554301
554457
  let t3;
554302
554458
  if ($2[5] !== addNotification || $2[6] !== clearRecommendation || $2[7] !== recommendation) {
554303
554459
  t3 = (response) => {
@@ -554380,7 +554536,7 @@ function _temp288(current) {
554380
554536
  function _temp205(s) {
554381
554537
  return s.fileHistory.trackedFiles;
554382
554538
  }
554383
- var import_react_compiler_runtime339, React151, TIMEOUT_THRESHOLD_MS = 28000;
554539
+ var import_react_compiler_runtime339, React152, TIMEOUT_THRESHOLD_MS = 28000;
554384
554540
  var init_useLspPluginRecommendation = __esm(() => {
554385
554541
  init_state();
554386
554542
  init_notifications();
@@ -554393,7 +554549,7 @@ var init_useLspPluginRecommendation = __esm(() => {
554393
554549
  init_settings2();
554394
554550
  init_usePluginRecommendationBase();
554395
554551
  import_react_compiler_runtime339 = __toESM(require_dist3(), 1);
554396
- React151 = __toESM(require_react(), 1);
554552
+ React152 = __toESM(require_react(), 1);
554397
554553
  });
554398
554554
 
554399
554555
  // src/components/LspRecommendation/LspRecommendationMenu.tsx
@@ -554403,9 +554559,9 @@ function LspRecommendationMenu({
554403
554559
  fileExtension: fileExtension3,
554404
554560
  onResponse
554405
554561
  }) {
554406
- const onResponseRef = React152.useRef(onResponse);
554562
+ const onResponseRef = React153.useRef(onResponse);
554407
554563
  onResponseRef.current = onResponse;
554408
- React152.useEffect(() => {
554564
+ React153.useEffect(() => {
554409
554565
  const timeoutId = setTimeout((ref) => ref.current("no"), AUTO_DISMISS_MS2, onResponseRef);
554410
554566
  return () => clearTimeout(timeoutId);
554411
554567
  }, []);
@@ -554520,19 +554676,19 @@ function LspRecommendationMenu({
554520
554676
  })
554521
554677
  });
554522
554678
  }
554523
- var React152, jsx_runtime455, AUTO_DISMISS_MS2 = 30000;
554679
+ var React153, jsx_runtime455, AUTO_DISMISS_MS2 = 30000;
554524
554680
  var init_LspRecommendationMenu = __esm(() => {
554525
554681
  init_ink2();
554526
554682
  init_select();
554527
554683
  init_PermissionDialog();
554528
- React152 = __toESM(require_react(), 1);
554684
+ React153 = __toESM(require_react(), 1);
554529
554685
  jsx_runtime455 = __toESM(require_jsx_runtime(), 1);
554530
554686
  });
554531
554687
 
554532
554688
  // src/hooks/useZeroCodeHintRecommendation.tsx
554533
554689
  function useZeroCodeHintRecommendation() {
554534
554690
  const $2 = import_react_compiler_runtime340.c(11);
554535
- const pendingHint2 = React153.useSyncExternalStore(subscribeToPendingHint, getPendingHintSnapshot);
554691
+ const pendingHint2 = React154.useSyncExternalStore(subscribeToPendingHint, getPendingHintSnapshot);
554536
554692
  const {
554537
554693
  addNotification
554538
554694
  } = useNotifications();
@@ -554569,7 +554725,7 @@ function useZeroCodeHintRecommendation() {
554569
554725
  t0 = $2[2];
554570
554726
  t1 = $2[3];
554571
554727
  }
554572
- React153.useEffect(t0, t1);
554728
+ React154.useEffect(t0, t1);
554573
554729
  let t2;
554574
554730
  if ($2[4] !== addNotification || $2[5] !== clearRecommendation || $2[6] !== recommendation) {
554575
554731
  t2 = (response) => {
@@ -554634,7 +554790,7 @@ function useZeroCodeHintRecommendation() {
554634
554790
  }
554635
554791
  return t3;
554636
554792
  }
554637
- var import_react_compiler_runtime340, React153;
554793
+ var import_react_compiler_runtime340, React154;
554638
554794
  var init_useZeroCodeHintRecommendation = __esm(() => {
554639
554795
  init_notifications();
554640
554796
  init_claudeCodeHints();
@@ -554643,7 +554799,7 @@ var init_useZeroCodeHintRecommendation = __esm(() => {
554643
554799
  init_pluginInstallationHelpers();
554644
554800
  init_usePluginRecommendationBase();
554645
554801
  import_react_compiler_runtime340 = __toESM(require_dist3(), 1);
554646
- React153 = __toESM(require_react(), 1);
554802
+ React154 = __toESM(require_react(), 1);
554647
554803
  });
554648
554804
 
554649
554805
  // src/components/ZeroCodeHint/PluginHintMenu.tsx
@@ -554654,9 +554810,9 @@ function PluginHintMenu({
554654
554810
  sourceCommand,
554655
554811
  onResponse
554656
554812
  }) {
554657
- const onResponseRef = React154.useRef(onResponse);
554813
+ const onResponseRef = React155.useRef(onResponse);
554658
554814
  onResponseRef.current = onResponse;
554659
- React154.useEffect(() => {
554815
+ React155.useEffect(() => {
554660
554816
  const timeoutId = setTimeout((ref) => ref.current("no"), AUTO_DISMISS_MS3, onResponseRef);
554661
554817
  return () => clearTimeout(timeoutId);
554662
554818
  }, []);
@@ -554762,12 +554918,12 @@ function PluginHintMenu({
554762
554918
  })
554763
554919
  });
554764
554920
  }
554765
- var React154, jsx_runtime456, AUTO_DISMISS_MS3 = 30000;
554921
+ var React155, jsx_runtime456, AUTO_DISMISS_MS3 = 30000;
554766
554922
  var init_PluginHintMenu = __esm(() => {
554767
554923
  init_ink2();
554768
554924
  init_select();
554769
554925
  init_PermissionDialog();
554770
- React154 = __toESM(require_react(), 1);
554926
+ React155 = __toESM(require_react(), 1);
554771
554927
  jsx_runtime456 = __toESM(require_jsx_runtime(), 1);
554772
554928
  });
554773
554929
 
@@ -557813,8 +557969,8 @@ function TranscriptSearchBar({
557813
557969
  onExit: () => onClose(query2),
557814
557970
  onCancel
557815
557971
  });
557816
- const [indexStatus, setIndexStatus] = React159.useState("building");
557817
- React159.useEffect(() => {
557972
+ const [indexStatus, setIndexStatus] = React160.useState("building");
557973
+ React160.useEffect(() => {
557818
557974
  let alive = true;
557819
557975
  const warm = jumpRef.current?.warmSearchIndex;
557820
557976
  if (!warm) {
@@ -558026,7 +558182,7 @@ function REPL({
558026
558182
  const mainLoopModel = useMainLoopModel();
558027
558183
  const [localCommands, setLocalCommands] = import_react318.useState(initialCommands);
558028
558184
  useSkillsChange(isRemoteSession ? undefined : getProjectRoot(), setLocalCommands);
558029
- const proactiveActive = React159.useSyncExternalStore(proactiveModule5?.subscribeToProactiveChanges ?? PROACTIVE_NO_OP_SUBSCRIBE, proactiveModule5?.isProactiveActive ?? PROACTIVE_FALSE);
558185
+ const proactiveActive = React160.useSyncExternalStore(proactiveModule5?.subscribeToProactiveChanges ?? PROACTIVE_NO_OP_SUBSCRIBE, proactiveModule5?.isProactiveActive ?? PROACTIVE_FALSE);
558030
558186
  const isBriefOnly = useAppState((s) => s.isBriefOnly);
558031
558187
  const localTools = import_react318.useMemo(() => getTools(toolPermissionContext), [toolPermissionContext, proactiveActive, isBriefOnly]);
558032
558188
  useKickOffCheckAndDisableBypassPermissionsIfNeeded();
@@ -558151,36 +558307,36 @@ function REPL({
558151
558307
  const scrollRef = import_react318.useRef(null);
558152
558308
  const modalScrollRef = import_react318.useRef(null);
558153
558309
  const lastUserScrollTsRef = import_react318.useRef(0);
558154
- const queryGuard = React159.useRef(new QueryGuard).current;
558155
- const isQueryActive = React159.useSyncExternalStore(queryGuard.subscribe, queryGuard.getSnapshot);
558156
- const [isExternalLoading, setIsExternalLoadingRaw] = React159.useState(remoteSessionConfig?.hasInitialPrompt ?? false);
558310
+ const queryGuard = React160.useRef(new QueryGuard).current;
558311
+ const isQueryActive = React160.useSyncExternalStore(queryGuard.subscribe, queryGuard.getSnapshot);
558312
+ const [isExternalLoading, setIsExternalLoadingRaw] = React160.useState(remoteSessionConfig?.hasInitialPrompt ?? false);
558157
558313
  const isLoading = isQueryActive || isExternalLoading;
558158
- const [userInputOnProcessing, setUserInputOnProcessingRaw] = React159.useState(undefined);
558159
- const userInputBaselineRef = React159.useRef(0);
558160
- const userMessagePendingRef = React159.useRef(false);
558161
- const loadingStartTimeRef = React159.useRef(0);
558162
- const totalPausedMsRef = React159.useRef(0);
558163
- const pauseStartTimeRef = React159.useRef(null);
558164
- const resetTimingRefs = React159.useCallback(() => {
558314
+ const [userInputOnProcessing, setUserInputOnProcessingRaw] = React160.useState(undefined);
558315
+ const userInputBaselineRef = React160.useRef(0);
558316
+ const userMessagePendingRef = React160.useRef(false);
558317
+ const loadingStartTimeRef = React160.useRef(0);
558318
+ const totalPausedMsRef = React160.useRef(0);
558319
+ const pauseStartTimeRef = React160.useRef(null);
558320
+ const resetTimingRefs = React160.useCallback(() => {
558165
558321
  loadingStartTimeRef.current = Date.now();
558166
558322
  totalPausedMsRef.current = 0;
558167
558323
  pauseStartTimeRef.current = null;
558168
558324
  }, []);
558169
- const wasQueryActiveRef = React159.useRef(false);
558325
+ const wasQueryActiveRef = React160.useRef(false);
558170
558326
  if (isQueryActive && !wasQueryActiveRef.current) {
558171
558327
  resetTimingRefs();
558172
558328
  }
558173
558329
  wasQueryActiveRef.current = isQueryActive;
558174
- const setIsExternalLoading = React159.useCallback((value) => {
558330
+ const setIsExternalLoading = React160.useCallback((value) => {
558175
558331
  setIsExternalLoadingRaw(value);
558176
558332
  if (value)
558177
558333
  resetTimingRefs();
558178
558334
  }, [resetTimingRefs]);
558179
- const swarmStartTimeRef = React159.useRef(null);
558180
- const swarmBudgetInfoRef = React159.useRef(undefined);
558181
- const focusedInputDialogRef = React159.useRef(undefined);
558335
+ const swarmStartTimeRef = React160.useRef(null);
558336
+ const swarmBudgetInfoRef = React160.useRef(undefined);
558337
+ const focusedInputDialogRef = React160.useRef(undefined);
558182
558338
  const PROMPT_SUPPRESSION_MS = 1500;
558183
- const [isPromptInputActive, setIsPromptInputActive] = React159.useState(false);
558339
+ const [isPromptInputActive, setIsPromptInputActive] = React160.useState(false);
558184
558340
  const [autoUpdaterResult, setAutoUpdaterResult] = import_react318.useState(null);
558185
558341
  import_react318.useEffect(() => {
558186
558342
  if (autoUpdaterResult?.notifications) {
@@ -558419,7 +558575,7 @@ function REPL({
558419
558575
  const activeRemote = sshRemote.isRemoteMode ? sshRemote : directConnect.isRemoteMode ? directConnect : remoteSession;
558420
558576
  const [pastedContents, setPastedContents] = import_react318.useState({});
558421
558577
  const [submitCount, setSubmitCount] = import_react318.useState(0);
558422
- const startupChecksStartedRef = React159.useRef(false);
558578
+ const startupChecksStartedRef = React160.useRef(false);
558423
558579
  const hasHadFirstSubmission = (submitCount ?? 0) > 0;
558424
558580
  import_react318.useEffect(() => {
558425
558581
  if (isRemoteSession)
@@ -558488,7 +558644,7 @@ function REPL({
558488
558644
  const terminalFocusRef = import_react318.useRef(isTerminalFocused);
558489
558645
  terminalFocusRef.current = isTerminalFocused;
558490
558646
  const [theme2] = useTheme();
558491
- const tipPickedThisTurnRef = React159.useRef(false);
558647
+ const tipPickedThisTurnRef = React160.useRef(false);
558492
558648
  const pickNewSpinnerTip = import_react318.useCallback(() => {
558493
558649
  if (tipPickedThisTurnRef.current)
558494
558650
  return;
@@ -560338,8 +560494,8 @@ Note: ctrl + z now suspends ZeroCLI, ctrl + _ undoes input.
560338
560494
  setPositions
560339
560495
  } = useSearchHighlight();
560340
560496
  const transcriptCols = useTerminalSize().columns;
560341
- const prevColsRef = React159.useRef(transcriptCols);
560342
- React159.useEffect(() => {
560497
+ const prevColsRef = React160.useRef(transcriptCols);
560498
+ React160.useEffect(() => {
560343
560499
  if (prevColsRef.current !== transcriptCols) {
560344
560500
  prevColsRef.current = transcriptCols;
560345
560501
  if (searchQuery || searchOpen) {
@@ -561151,7 +561307,7 @@ Note: ctrl + z now suspends ZeroCLI, ctrl + _ undoes input.
561151
561307
  }
561152
561308
  return mainReturn;
561153
561309
  }
561154
- var import_react_compiler_runtime351, React159, import_react318, jsx_runtime466, useFrustrationDetection = () => ({
561310
+ var import_react_compiler_runtime351, React160, import_react318, jsx_runtime466, useFrustrationDetection = () => ({
561155
561311
  state: "closed",
561156
561312
  handleTranscriptSelect: () => {}
561157
561313
  }), useAntOrgWarningNotification = () => {}, getCoordinatorUserContext2, proactiveModule5 = null, PROACTIVE_NO_OP_SUBSCRIBE = (_cb) => () => {}, PROACTIVE_FALSE = () => false, SUGGEST_BG_PR_NOOP = (_p, _n) => false, useScheduledTasks2, EMPTY_MCP_CLIENTS2, HISTORY_STUB, RECENT_SCROLL_REPIN_WINDOW_MS = 3000, TITLE_ANIMATION_FRAMES, TITLE_STATIC_PREFIX = "⚡", TITLE_ANIMATION_INTERVAL_MS = 960;
@@ -561359,7 +561515,7 @@ var init_REPL = __esm(() => {
561359
561515
  init_osc();
561360
561516
  init_attachments2();
561361
561517
  import_react_compiler_runtime351 = __toESM(require_dist3(), 1);
561362
- React159 = __toESM(require_react(), 1);
561518
+ React160 = __toESM(require_react(), 1);
561363
561519
  import_react318 = __toESM(require_react(), 1);
561364
561520
  jsx_runtime466 = __toESM(require_jsx_runtime(), 1);
561365
561521
  getCoordinatorUserContext2 = (init_coordinatorMode(), __toCommonJS(exports_coordinatorMode)).getCoordinatorUserContext;
@@ -562619,7 +562775,7 @@ function WelcomeV2() {
562619
562775
  dimColor: true,
562620
562776
  children: [
562621
562777
  "v",
562622
- "0.9.6",
562778
+ "0.9.8",
562623
562779
  " "
562624
562780
  ]
562625
562781
  })
@@ -562853,7 +563009,7 @@ function WelcomeV2() {
562853
563009
  dimColor: true,
562854
563010
  children: [
562855
563011
  "v",
562856
- "0.9.6",
563012
+ "0.9.8",
562857
563013
  " "
562858
563014
  ]
562859
563015
  })
@@ -563100,7 +563256,7 @@ function AppleTerminalWelcomeV2(t0) {
563100
563256
  dimColor: true,
563101
563257
  children: [
563102
563258
  "v",
563103
- "0.9.6",
563259
+ "0.9.8",
563104
563260
  " "
563105
563261
  ]
563106
563262
  });
@@ -563373,7 +563529,7 @@ function AppleTerminalWelcomeV2(t0) {
563373
563529
  dimColor: true,
563374
563530
  children: [
563375
563531
  "v",
563376
- "0.9.6",
563532
+ "0.9.8",
563377
563533
  " "
563378
563534
  ]
563379
563535
  });
@@ -564885,7 +565041,7 @@ function completeOnboarding() {
564885
565041
  saveGlobalConfig((current) => ({
564886
565042
  ...current,
564887
565043
  hasCompletedOnboarding: true,
564888
- lastOnboardingVersion: "0.9.6"
565044
+ lastOnboardingVersion: "0.9.8"
564889
565045
  }));
564890
565046
  }
564891
565047
  function showDialog(root2, renderer) {
@@ -569136,7 +569292,7 @@ function appendToLog(path24, message) {
569136
569292
  cwd: getFsImplementation().cwd(),
569137
569293
  userType: process.env.USER_TYPE,
569138
569294
  sessionId: getSessionId(),
569139
- version: "0.9.6"
569295
+ version: "0.9.8"
569140
569296
  };
569141
569297
  getLogWriter(path24).write(messageWithTimestamp);
569142
569298
  }
@@ -569742,7 +569898,7 @@ async function startMCPServer(cwd2, debug, verbose) {
569742
569898
  setCwd(cwd2);
569743
569899
  const server = new Server({
569744
569900
  name: "claude/tengu",
569745
- version: "0.9.6"
569901
+ version: "0.9.8"
569746
569902
  }, {
569747
569903
  capabilities: {
569748
569904
  tools: {}
@@ -574381,8 +574537,8 @@ async function getEnvLessBridgeConfig() {
574381
574537
  }
574382
574538
  async function checkEnvLessBridgeMinVersion() {
574383
574539
  const cfg = await getEnvLessBridgeConfig();
574384
- if (cfg.min_version && lt("0.9.6", cfg.min_version)) {
574385
- return `Your version of ZeroCLI (${"0.9.6"}) is too old for Remote Control.
574540
+ if (cfg.min_version && lt("0.9.8", cfg.min_version)) {
574541
+ return `Your version of ZeroCLI (${"0.9.8"}) is too old for Remote Control.
574386
574542
  Version ${cfg.min_version} or higher is required. Run \`zero update\` to update.`;
574387
574543
  }
574388
574544
  return null;
@@ -574857,7 +575013,7 @@ async function initBridgeCore(params) {
574857
575013
  const rawApi = createBridgeApiClient({
574858
575014
  baseUrl,
574859
575015
  getAccessToken,
574860
- runnerVersion: "0.9.6",
575016
+ runnerVersion: "0.9.8",
574861
575017
  onDebug: logForDebugging,
574862
575018
  onAuth401,
574863
575019
  getTrustedDeviceToken
@@ -581145,7 +581301,7 @@ __export(exports_update2, {
581145
581301
  });
581146
581302
  async function update2() {
581147
581303
  logEvent("tengu_update_check", {});
581148
- writeToStdout(`Current version: ${"0.9.6"}
581304
+ writeToStdout(`Current version: ${"0.9.8"}
581149
581305
  `);
581150
581306
  const channel2 = getInitialSettings()?.autoUpdatesChannel ?? "latest";
581151
581307
  writeToStdout(`Checking for updates to ${channel2} version...
@@ -581220,8 +581376,8 @@ async function update2() {
581220
581376
  writeToStdout(`Zero is managed by Homebrew.
581221
581377
  `);
581222
581378
  const latest = await getLatestVersion(channel2);
581223
- if (latest && !gte("0.9.6", latest)) {
581224
- writeToStdout(`Update available: ${"0.9.6"} → ${latest}
581379
+ if (latest && !gte("0.9.8", latest)) {
581380
+ writeToStdout(`Update available: ${"0.9.8"} → ${latest}
581225
581381
  `);
581226
581382
  writeToStdout(`
581227
581383
  `);
@@ -581237,8 +581393,8 @@ async function update2() {
581237
581393
  writeToStdout(`Zero is managed by winget.
581238
581394
  `);
581239
581395
  const latest = await getLatestVersion(channel2);
581240
- if (latest && !gte("0.9.6", latest)) {
581241
- writeToStdout(`Update available: ${"0.9.6"} → ${latest}
581396
+ if (latest && !gte("0.9.8", latest)) {
581397
+ writeToStdout(`Update available: ${"0.9.8"} → ${latest}
581242
581398
  `);
581243
581399
  writeToStdout(`
581244
581400
  `);
@@ -581254,8 +581410,8 @@ async function update2() {
581254
581410
  writeToStdout(`Zero is managed by apk.
581255
581411
  `);
581256
581412
  const latest = await getLatestVersion(channel2);
581257
- if (latest && !gte("0.9.6", latest)) {
581258
- writeToStdout(`Update available: ${"0.9.6"} → ${latest}
581413
+ if (latest && !gte("0.9.8", latest)) {
581414
+ writeToStdout(`Update available: ${"0.9.8"} → ${latest}
581259
581415
  `);
581260
581416
  writeToStdout(`
581261
581417
  `);
@@ -581320,11 +581476,11 @@ async function update2() {
581320
581476
  `);
581321
581477
  await gracefulShutdown(1);
581322
581478
  }
581323
- if (result.latestVersion === "0.9.6") {
581324
- writeToStdout(source_default.green(`Zero CLI is up to date (${"0.9.6"})`) + `
581479
+ if (result.latestVersion === "0.9.8") {
581480
+ writeToStdout(source_default.green(`Zero CLI is up to date (${"0.9.8"})`) + `
581325
581481
  `);
581326
581482
  } else {
581327
- writeToStdout(source_default.green(`Successfully updated from ${"0.9.6"} to version ${result.latestVersion}`) + `
581483
+ writeToStdout(source_default.green(`Successfully updated from ${"0.9.8"} to version ${result.latestVersion}`) + `
581328
581484
  `);
581329
581485
  await regenerateCompletionCache();
581330
581486
  }
@@ -581384,12 +581540,12 @@ async function update2() {
581384
581540
  `);
581385
581541
  await gracefulShutdown(1);
581386
581542
  }
581387
- if (latestVersion === "0.9.6") {
581388
- writeToStdout(source_default.green(`Zero CLI is up to date (${"0.9.6"})`) + `
581543
+ if (latestVersion === "0.9.8") {
581544
+ writeToStdout(source_default.green(`Zero CLI is up to date (${"0.9.8"})`) + `
581389
581545
  `);
581390
581546
  await gracefulShutdown(0);
581391
581547
  }
581392
- writeToStdout(`New version available: ${latestVersion} (current: ${"0.9.6"})
581548
+ writeToStdout(`New version available: ${latestVersion} (current: ${"0.9.8"})
581393
581549
  `);
581394
581550
  writeToStdout(`Installing update...
581395
581551
  `);
@@ -581434,7 +581590,7 @@ async function update2() {
581434
581590
  logForDebugging(`update: Installation status: ${status2}`);
581435
581591
  switch (status2) {
581436
581592
  case "success":
581437
- writeToStdout(source_default.green(`Successfully updated from ${"0.9.6"} to version ${latestVersion}`) + `
581593
+ writeToStdout(source_default.green(`Successfully updated from ${"0.9.8"} to version ${latestVersion}`) + `
581438
581594
  `);
581439
581595
  await regenerateCompletionCache();
581440
581596
  break;
@@ -582735,7 +582891,7 @@ ${customInstructions}` : customInstructions;
582735
582891
  }
582736
582892
  }
582737
582893
  logForDiagnosticsNoPII("info", "started", {
582738
- version: "0.9.6",
582894
+ version: "0.9.8",
582739
582895
  is_native_binary: isInBundledMode()
582740
582896
  });
582741
582897
  registerCleanup(async () => {
@@ -583618,7 +583774,7 @@ Usage: claude --remote "your task description"`, () => gracefulShutdown(1));
583618
583774
  pendingHookMessages
583619
583775
  }, renderAndRun);
583620
583776
  }
583621
- }).version("0.9.6", "-v, --version", "Output the version number");
583777
+ }).version("0.9.8", "-v, --version", "Output the version number");
583622
583778
  program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
583623
583779
  program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
583624
583780
  if (canUserConfigureAdvisor()) {
@@ -584284,7 +584440,7 @@ if (false) {}
584284
584440
  async function main2() {
584285
584441
  const args = process.argv.slice(2);
584286
584442
  if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
584287
- console.log(`${"0.9.6"} (ZeroCLI)`);
584443
+ console.log(`${"0.9.8"} (ZeroCLI)`);
584288
584444
  return;
584289
584445
  }
584290
584446
  if (args.includes("--provider")) {
@@ -584426,4 +584582,4 @@ async function main2() {
584426
584582
  }
584427
584583
  main2();
584428
584584
 
584429
- //# debugId=E7574CB9448447CE64756E2164756E21
584585
+ //# debugId=72DEA435624F630C64756E2164756E21