@duheso/zerocli 0.8.8 → 0.9.0

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 (3) hide show
  1. package/bin/zero +22 -12
  2. package/dist/cli.mjs +116 -83
  3. package/package.json +1 -1
package/bin/zero CHANGED
@@ -89,15 +89,25 @@ if (!existsSync(distPath)) {
89
89
  process.exit(1);
90
90
  }
91
91
 
92
- const child = spawn(process.execPath, [distPath, ...process.argv.slice(2)], {
93
- stdio: 'inherit',
94
- env,
95
- });
96
-
97
- child.on('exit', (code, signal) => {
98
- if (signal) {
99
- process.kill(process.pid, signal);
100
- } else {
101
- process.exit(code ?? 0);
102
- }
103
- });
92
+ // Special exit code used by the auto-updater to signal a restart after update
93
+ const EXIT_CODE_RESTART = 75;
94
+
95
+ function launch() {
96
+ const child = spawn(process.execPath, [distPath, ...process.argv.slice(2)], {
97
+ stdio: 'inherit',
98
+ env,
99
+ });
100
+
101
+ child.on('exit', (code, signal) => {
102
+ if (signal) {
103
+ process.kill(process.pid, signal);
104
+ } else if (code === EXIT_CODE_RESTART) {
105
+ // Auto-updater requested a restart — re-spawn with the updated binary
106
+ setTimeout(launch, 500);
107
+ } else {
108
+ process.exit(code ?? 0);
109
+ }
110
+ });
111
+ }
112
+
113
+ launch();
package/dist/cli.mjs CHANGED
@@ -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.8.8"}${RESET}`);
119194
+ out.push(` ${DIM}${rgb(...DIMCOL)}zero ${RESET}${rgb(...ACCENT)}v${"0.9.0"}${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.8.8"}.${fingerprint}`;
147385
+ const version2 = `${"0.9.0"}.${fingerprint}`;
147386
147386
  const entrypoint = process.env.CLAUDE_CODE_ENTRYPOINT ?? "unknown";
147387
147387
  const cch = "";
147388
147388
  const workload = getWorkload();
@@ -190386,7 +190386,7 @@ var init_imageValidation = __esm(() => {
190386
190386
 
190387
190387
  // src/utils/userAgent.ts
190388
190388
  function getZeroCodeUserAgent() {
190389
- return `claude-code/${"0.8.8"}`;
190389
+ return `claude-code/${"0.9.0"}`;
190390
190390
  }
190391
190391
 
190392
190392
  // src/utils/http.ts
@@ -190395,7 +190395,7 @@ function getUserAgent() {
190395
190395
  const clientApp = process.env.CLAUDE_AGENT_SDK_CLIENT_APP ? `, client-app/${process.env.CLAUDE_AGENT_SDK_CLIENT_APP}` : "";
190396
190396
  const workload = getWorkload();
190397
190397
  const workloadSuffix = workload ? `, workload/${workload}` : "";
190398
- return `claude-cli/${"0.8.8"} (${process.env.USER_TYPE}, ${process.env.CLAUDE_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
190398
+ return `claude-cli/${"0.9.0"} (${process.env.USER_TYPE}, ${process.env.CLAUDE_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
190399
190399
  }
190400
190400
  function getMCPUserAgent() {
190401
190401
  const parts = [];
@@ -190409,7 +190409,7 @@ function getMCPUserAgent() {
190409
190409
  parts.push(`client-app/${process.env.CLAUDE_AGENT_SDK_CLIENT_APP}`);
190410
190410
  }
190411
190411
  const suffix = parts.length > 0 ? ` (${parts.join(", ")})` : "";
190412
- return `claude-code/${"0.8.8"}${suffix}`;
190412
+ return `claude-code/${"0.9.0"}${suffix}`;
190413
190413
  }
190414
190414
  function getWebFetchUserAgent() {
190415
190415
  const supportUrl = getAPIProvider() === "firstParty" ? "https://support.anthropic.com/" : "https://github.com/Duheso/ZeroCLI";
@@ -244838,7 +244838,7 @@ function getTelemetryAttributes() {
244838
244838
  attributes["session.id"] = sessionId;
244839
244839
  }
244840
244840
  if (shouldIncludeAttribute("OTEL_METRICS_INCLUDE_VERSION")) {
244841
- attributes["app.version"] = "0.8.8";
244841
+ attributes["app.version"] = "0.9.0";
244842
244842
  }
244843
244843
  const oauthAccount = getOauthAccountInfo();
244844
244844
  if (oauthAccount) {
@@ -257077,7 +257077,7 @@ function computeFingerprint(messageText, version2) {
257077
257077
  }
257078
257078
  function computeFingerprintFromMessages(messages) {
257079
257079
  const firstMessageText = extractFirstMessageText(messages);
257080
- return computeFingerprint(firstMessageText, "0.8.8");
257080
+ return computeFingerprint(firstMessageText, "0.9.0");
257081
257081
  }
257082
257082
  var FINGERPRINT_SALT = "59cf53e54c78";
257083
257083
  var init_fingerprint = () => {};
@@ -257119,7 +257119,7 @@ async function sideQuery(opts) {
257119
257119
  betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
257120
257120
  }
257121
257121
  const messageText = extractFirstUserMessageText(messages);
257122
- const fingerprint = computeFingerprint(messageText, "0.8.8");
257122
+ const fingerprint = computeFingerprint(messageText, "0.9.0");
257123
257123
  const attributionHeader = getAttributionHeader(fingerprint);
257124
257124
  const systemBlocks = [
257125
257125
  attributionHeader ? { type: "text", text: attributionHeader } : null,
@@ -266021,7 +266021,7 @@ var init_user = __esm(() => {
266021
266021
  deviceId,
266022
266022
  sessionId: getSessionId(),
266023
266023
  email: getEmail(),
266024
- appVersion: "0.8.8",
266024
+ appVersion: "0.9.0",
266025
266025
  platform: getHostPlatformForAnalytics(),
266026
266026
  organizationUuid,
266027
266027
  accountUuid,
@@ -266415,7 +266415,7 @@ async function initializeBetaTracing(resource) {
266415
266415
  });
266416
266416
  logs.setGlobalLoggerProvider(loggerProvider);
266417
266417
  setLoggerProvider(loggerProvider);
266418
- const eventLogger = logs.getLogger("com.anthropic.claude_code.events", "0.8.8");
266418
+ const eventLogger = logs.getLogger("com.anthropic.claude_code.events", "0.9.0");
266419
266419
  setEventLogger(eventLogger);
266420
266420
  process.on("beforeExit", async () => {
266421
266421
  await loggerProvider?.forceFlush();
@@ -266455,7 +266455,7 @@ async function initializeTelemetry() {
266455
266455
  const platform3 = getPlatform();
266456
266456
  const baseAttributes = {
266457
266457
  [ATTR_SERVICE_NAME3]: "claude-code",
266458
- [ATTR_SERVICE_VERSION3]: "0.8.8"
266458
+ [ATTR_SERVICE_VERSION3]: "0.9.0"
266459
266459
  };
266460
266460
  if (platform3 === "wsl") {
266461
266461
  const wslVersion = getWslVersion();
@@ -266500,7 +266500,7 @@ async function initializeTelemetry() {
266500
266500
  } catch {}
266501
266501
  };
266502
266502
  registerCleanup(shutdownTelemetry2);
266503
- return meterProvider2.getMeter("com.anthropic.claude_code", "0.8.8");
266503
+ return meterProvider2.getMeter("com.anthropic.claude_code", "0.9.0");
266504
266504
  }
266505
266505
  const meterProvider = new MeterProvider3({
266506
266506
  resource,
@@ -266520,7 +266520,7 @@ async function initializeTelemetry() {
266520
266520
  });
266521
266521
  logs.setGlobalLoggerProvider(loggerProvider);
266522
266522
  setLoggerProvider(loggerProvider);
266523
- const eventLogger = logs.getLogger("com.anthropic.claude_code.events", "0.8.8");
266523
+ const eventLogger = logs.getLogger("com.anthropic.claude_code.events", "0.9.0");
266524
266524
  setEventLogger(eventLogger);
266525
266525
  logForDebugging("[3P telemetry] Event logger set successfully");
266526
266526
  process.on("beforeExit", async () => {
@@ -266582,7 +266582,7 @@ Current timeout: ${timeoutMs}ms
266582
266582
  }
266583
266583
  };
266584
266584
  registerCleanup(shutdownTelemetry);
266585
- return meterProvider.getMeter("com.anthropic.claude_code", "0.8.8");
266585
+ return meterProvider.getMeter("com.anthropic.claude_code", "0.9.0");
266586
266586
  }
266587
266587
  async function flushTelemetry() {
266588
266588
  const meterProvider = getMeterProvider();
@@ -267394,9 +267394,9 @@ async function assertMinVersion() {
267394
267394
  }
267395
267395
  try {
267396
267396
  const versionConfig = await getDynamicConfig_BLOCKS_ON_INIT("tengu_version_config", { minVersion: "0.0.0" });
267397
- if (versionConfig.minVersion && lt("0.8.8", versionConfig.minVersion)) {
267397
+ if (versionConfig.minVersion && lt("0.9.0", versionConfig.minVersion)) {
267398
267398
  console.error(`
267399
- It looks like your version of ZeroCLI (${"0.8.8"}) needs an update.
267399
+ It looks like your version of ZeroCLI (${"0.9.0"}) needs an update.
267400
267400
  A newer version (${versionConfig.minVersion} or higher) is required to continue.
267401
267401
 
267402
267402
  To update, please run:
@@ -267612,7 +267612,7 @@ async function installGlobalPackage(specificVersion) {
267612
267612
  logError2(new AutoUpdaterError("Another process is currently installing an update"));
267613
267613
  logEvent("tengu_auto_updater_lock_contention", {
267614
267614
  pid: process.pid,
267615
- currentVersion: "0.8.8"
267615
+ currentVersion: "0.9.0"
267616
267616
  });
267617
267617
  return "in_progress";
267618
267618
  }
@@ -267621,7 +267621,7 @@ async function installGlobalPackage(specificVersion) {
267621
267621
  if (!env2.isRunningWithBun() && env2.isNpmFromWindowsPath()) {
267622
267622
  logError2(new Error("Windows NPM detected in WSL environment"));
267623
267623
  logEvent("tengu_auto_updater_windows_npm_in_wsl", {
267624
- currentVersion: "0.8.8"
267624
+ currentVersion: "0.9.0"
267625
267625
  });
267626
267626
  console.error(`
267627
267627
  Error: Windows NPM detected in WSL
@@ -267648,6 +267648,20 @@ To fix this issue:
267648
267648
  logError2(error42);
267649
267649
  return "install_failed";
267650
267650
  }
267651
+ try {
267652
+ const globalRoot = await execFileNoThrowWithCwd(packageManager, ["root", "-g"], { cwd: homedir19() });
267653
+ if (globalRoot.code === 0) {
267654
+ const binPath = join57(globalRoot.stdout.trim(), "@duheso", "zerocli", "bin", "zero");
267655
+ await access2(binPath, fsConstants2.R_OK);
267656
+ }
267657
+ } catch {
267658
+ logError2(new AutoUpdaterError("Post-install verification failed: bin/zero not found. Retrying install..."));
267659
+ const retryResult = await execFileNoThrowWithCwd(packageManager, ["install", "-g", packageSpec], { cwd: homedir19() });
267660
+ if (retryResult.code !== 0) {
267661
+ logError2(new AutoUpdaterError(`Retry install also failed: ${retryResult.stdout} ${retryResult.stderr}`));
267662
+ return "install_failed";
267663
+ }
267664
+ }
267651
267665
  saveGlobalConfig((current) => ({
267652
267666
  ...current,
267653
267667
  installMethod: "global"
@@ -268161,7 +268175,7 @@ async function getDoctorDiagnostic() {
268161
268175
  const installationType = await getCurrentInstallationType();
268162
268176
  let version2;
268163
268177
  try {
268164
- version2 = "0.8.8";
268178
+ version2 = "0.9.0";
268165
268179
  } catch {
268166
268180
  version2 = "unknown";
268167
268181
  }
@@ -269650,7 +269664,7 @@ function getInstallationEnv() {
269650
269664
  return;
269651
269665
  }
269652
269666
  function getZeroCodeVersion() {
269653
- return "0.8.8";
269667
+ return "0.9.0";
269654
269668
  }
269655
269669
  async function getInstalledVSCodeExtensionVersion(command) {
269656
269670
  const { stdout } = await execFileNoThrow(command, ["--list-extensions", "--show-versions"], {
@@ -271017,8 +271031,8 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
271017
271031
  const maxVersion = await getMaxVersion();
271018
271032
  if (maxVersion && gt(version2, maxVersion)) {
271019
271033
  logForDebugging(`Native installer: maxVersion ${maxVersion} is set, capping update from ${version2} to ${maxVersion}`);
271020
- if (gte("0.8.8", maxVersion)) {
271021
- logForDebugging(`Native installer: current version ${"0.8.8"} is already at or above maxVersion ${maxVersion}, skipping update`);
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`);
271022
271036
  logEvent("tengu_native_update_skipped_max_version", {
271023
271037
  latency_ms: Date.now() - startTime2,
271024
271038
  max_version: maxVersion,
@@ -271029,7 +271043,7 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
271029
271043
  version2 = maxVersion;
271030
271044
  }
271031
271045
  }
271032
- if (!forceReinstall && version2 === "0.8.8" && await versionIsAvailable(version2) && await isPossibleZeroBinary(executablePath)) {
271046
+ if (!forceReinstall && version2 === "0.9.0" && await versionIsAvailable(version2) && await isPossibleZeroBinary(executablePath)) {
271033
271047
  logForDebugging(`Found ${version2} at ${executablePath}, skipping install`);
271034
271048
  logEvent("tengu_native_update_complete", {
271035
271049
  latency_ms: Date.now() - startTime2,
@@ -376236,7 +376250,7 @@ function getAnthropicEnvMetadata() {
376236
376250
  function getBuildAgeMinutes() {
376237
376251
  if (false)
376238
376252
  ;
376239
- const buildTime = new Date("2026-05-05T20:37:08.667Z").getTime();
376253
+ const buildTime = new Date("2026-05-05T23:59:13.797Z").getTime();
376240
376254
  if (isNaN(buildTime))
376241
376255
  return;
376242
376256
  return Math.floor((Date.now() - buildTime) / 60000);
@@ -403670,7 +403684,7 @@ async function setupSdkMcpClients(sdkMcpConfigs, sendMcpMessage) {
403670
403684
  const client2 = new Client({
403671
403685
  name: "claude-code",
403672
403686
  title: "ZeroCLI",
403673
- version: "0.8.8",
403687
+ version: "0.9.0",
403674
403688
  description: "Anthropic's agentic coding tool",
403675
403689
  websiteUrl: PRODUCT_URL
403676
403690
  }, {
@@ -404022,7 +404036,7 @@ var init_client7 = __esm(() => {
404022
404036
  const client2 = new Client({
404023
404037
  name: "claude-code",
404024
404038
  title: "ZeroCLI",
404025
- version: "0.8.8",
404039
+ version: "0.9.0",
404026
404040
  description: "Anthropic's agentic coding tool",
404027
404041
  websiteUrl: PRODUCT_URL
404028
404042
  }, {
@@ -414685,7 +414699,7 @@ function Feedback({
414685
414699
  platform: env2.platform,
414686
414700
  gitRepo: envInfo.isGit,
414687
414701
  terminal: env2.terminal,
414688
- version: "0.8.8",
414702
+ version: "0.9.0",
414689
414703
  transcript: normalizeMessagesForAPI(messages),
414690
414704
  errors: sanitizedErrors,
414691
414705
  lastApiRequest: getLastAPIRequest(),
@@ -414878,7 +414892,7 @@ function Feedback({
414878
414892
  ", ",
414879
414893
  env2.terminal,
414880
414894
  ", v",
414881
- "0.8.8"
414895
+ "0.9.0"
414882
414896
  ]
414883
414897
  })
414884
414898
  ]
@@ -414986,7 +415000,7 @@ ${sanitizedDescription}
414986
415000
  ` + `**Environment Info**
414987
415001
  ` + `- Platform: ${env2.platform}
414988
415002
  ` + `- Terminal: ${env2.terminal}
414989
- ` + `- Version: ${"0.8.8"}
415003
+ ` + `- Version: ${"0.9.0"}
414990
415004
  ` + feedbackIdLine + `
414991
415005
  **Errors**
414992
415006
  \`\`\`json
@@ -418139,7 +418153,7 @@ function buildPrimarySection() {
418139
418153
  });
418140
418154
  return [{
418141
418155
  label: "Version",
418142
- value: "0.8.8"
418156
+ value: "0.9.0"
418143
418157
  }, {
418144
418158
  label: "Session name",
418145
418159
  value: nameValue
@@ -422909,7 +422923,7 @@ function Config({
422909
422923
  }
422910
422924
  })
422911
422925
  }) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_runtime181.jsx(ChannelDowngradeDialog, {
422912
- currentVersion: "0.8.8",
422926
+ currentVersion: "0.9.0",
422913
422927
  onChoice: (choice) => {
422914
422928
  setShowSubmenu(null);
422915
422929
  setTabsHidden(false);
@@ -422921,7 +422935,7 @@ function Config({
422921
422935
  autoUpdatesChannel: "stable"
422922
422936
  };
422923
422937
  if (choice === "stay") {
422924
- newSettings.minimumVersion = "0.8.8";
422938
+ newSettings.minimumVersion = "0.9.0";
422925
422939
  }
422926
422940
  updateSettingsForSource("userSettings", newSettings);
422927
422941
  setSettingsData((prev_27) => ({
@@ -429862,7 +429876,7 @@ function UpdateScreen({ onDone }) {
429862
429876
  setState({ type: "dev-build" });
429863
429877
  return;
429864
429878
  }
429865
- const currentVersion = "0.8.8";
429879
+ const currentVersion = "0.9.0";
429866
429880
  const channel2 = getInitialSettings()?.autoUpdatesChannel ?? "latest";
429867
429881
  const latestVersion = await getLatestVersion(channel2);
429868
429882
  if (!latestVersion) {
@@ -431973,7 +431987,7 @@ function HelpV2(t0) {
431973
431987
  let t6;
431974
431988
  if ($2[31] !== tabs) {
431975
431989
  t6 = /* @__PURE__ */ jsx_runtime211.jsx(Tabs, {
431976
- title: `ZeroCLI v${"0.8.8"}`,
431990
+ title: `ZeroCLI v${"0.9.0"}`,
431977
431991
  color: "professionalBlue",
431978
431992
  defaultTab: "general",
431979
431993
  children: tabs
@@ -456817,7 +456831,7 @@ function getAllReleaseNotes(changelogContent = getStoredChangelogFromMemory()) {
456817
456831
  return [];
456818
456832
  }
456819
456833
  }
456820
- async function checkForReleaseNotes(lastSeenVersion, currentVersion = "0.8.8") {
456834
+ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "0.9.0") {
456821
456835
  if (process.env.USER_TYPE === "ant") {
456822
456836
  const changelog = MACRO.VERSION_CHANGELOG;
456823
456837
  if (changelog) {
@@ -485855,7 +485869,7 @@ async function captureMemoryDiagnostics(trigger, dumpNumber = 0) {
485855
485869
  smapsRollup,
485856
485870
  platform: process.platform,
485857
485871
  nodeVersion: process.version,
485858
- ccVersion: "0.8.8"
485872
+ ccVersion: "0.9.0"
485859
485873
  };
485860
485874
  }
485861
485875
  async function performHeapDump(trigger = "manual", dumpNumber = 0) {
@@ -486442,7 +486456,7 @@ var init_bridge_kick = __esm(() => {
486442
486456
  var call60 = async () => {
486443
486457
  return {
486444
486458
  type: "text",
486445
- value: `${"0.8.8"} (built ${"2026-05-05T20:37:08.667Z"})`
486459
+ value: `${"0.9.0"} (built ${"2026-05-05T23:59:13.797Z"})`
486446
486460
  };
486447
486461
  }, version2, version_default;
486448
486462
  var init_version = __esm(() => {
@@ -496599,7 +496613,7 @@ function generateHtmlReport(data, insights) {
496599
496613
  function buildExportData(data, insights, facets) {
496600
496614
  let version3;
496601
496615
  try {
496602
- version3 = "0.8.8";
496616
+ version3 = "0.9.0";
496603
496617
  } catch {
496604
496618
  version3 = "unknown";
496605
496619
  }
@@ -500795,7 +500809,7 @@ var init_sessionStorage = __esm(() => {
500795
500809
  init_slowOperations();
500796
500810
  init_uuid();
500797
500811
  try {
500798
- VERSION7 = "0.8.8";
500812
+ VERSION7 = "0.9.0";
500799
500813
  } catch {
500800
500814
  VERSION7 = "unknown";
500801
500815
  }
@@ -502116,7 +502130,7 @@ var init_filesystem = __esm(() => {
502116
502130
  });
502117
502131
  getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
502118
502132
  const nonce = randomBytes17(16).toString("hex");
502119
- return join137(getZeroTempDir(), "bundled-skills", "0.8.8", nonce);
502133
+ return join137(getZeroTempDir(), "bundled-skills", "0.9.0", nonce);
502120
502134
  });
502121
502135
  getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
502122
502136
  });
@@ -513136,7 +513150,7 @@ function buildSystemInitMessage(inputs) {
513136
513150
  slash_commands: inputs.commands.filter((c6) => c6.userInvocable !== false).map((c6) => c6.name),
513137
513151
  apiKeySource: getAnthropicApiKeyWithSource().source,
513138
513152
  betas: getSdkBetas(),
513139
- claude_code_version: "0.8.8",
513153
+ claude_code_version: "0.9.0",
513140
513154
  output_style: outputStyle2,
513141
513155
  agents: inputs.agents.map((agent2) => agent2.agentType),
513142
513156
  skills: inputs.skills.filter((s) => s.userInvocable !== false).map((skill) => skill.name),
@@ -528451,7 +528465,7 @@ var init_useVoiceEnabled = __esm(() => {
528451
528465
  function getSemverPart(version3) {
528452
528466
  return `${import_semver12.major(version3, { loose: true })}.${import_semver12.minor(version3, { loose: true })}.${import_semver12.patch(version3, { loose: true })}`;
528453
528467
  }
528454
- function useUpdateNotification(updatedVersion, initialVersion = "0.8.8") {
528468
+ function useUpdateNotification(updatedVersion, initialVersion = "0.9.0") {
528455
528469
  const [lastNotifiedSemver, setLastNotifiedSemver] = import_react226.useState(() => getSemverPart(initialVersion));
528456
528470
  if (!updatedVersion) {
528457
528471
  return null;
@@ -528469,6 +528483,9 @@ var init_useUpdateNotification = __esm(() => {
528469
528483
  import_semver12 = __toESM(require_semver2(), 1);
528470
528484
  });
528471
528485
 
528486
+ // src/utils/restartCodes.ts
528487
+ var EXIT_CODE_RESTART = 75;
528488
+
528472
528489
  // src/components/AutoUpdater.tsx
528473
528490
  function AutoUpdater({
528474
528491
  isUpdating,
@@ -528491,7 +528508,7 @@ function AutoUpdater({
528491
528508
  return;
528492
528509
  }
528493
528510
  if (false) {}
528494
- const currentVersion = "0.8.8";
528511
+ const currentVersion = "0.9.0";
528495
528512
  const channel2 = getInitialSettings()?.autoUpdatesChannel ?? "latest";
528496
528513
  let latestVersion = await getLatestVersion(channel2);
528497
528514
  const isDisabled = isAutoUpdaterDisabled();
@@ -528573,6 +528590,11 @@ function AutoUpdater({
528573
528590
  version: latestVersion,
528574
528591
  status: installStatus
528575
528592
  });
528593
+ if (installStatus === "success") {
528594
+ setTimeout(() => {
528595
+ process.exit(EXIT_CODE_RESTART);
528596
+ }, 2000);
528597
+ }
528576
528598
  }
528577
528599
  }, [onAutoUpdaterResult]);
528578
528600
  import_react227.useEffect(() => {
@@ -528609,10 +528631,14 @@ function AutoUpdater({
528609
528631
  children: "Auto-updating…"
528610
528632
  })
528611
528633
  })
528612
- }) : autoUpdaterResult?.status === "success" && showSuccessMessage && updateSemver && /* @__PURE__ */ jsx_runtime403.jsx(ThemedText, {
528634
+ }) : autoUpdaterResult?.status === "success" && showSuccessMessage && updateSemver && /* @__PURE__ */ jsx_runtime403.jsxs(ThemedText, {
528613
528635
  color: "success",
528614
528636
  wrap: "truncate",
528615
- children: "✓ Update installed · Restart to apply"
528637
+ children: [
528638
+ "✓ Updated to ",
528639
+ autoUpdaterResult.version,
528640
+ " · Restarting…"
528641
+ ]
528616
528642
  }),
528617
528643
  (autoUpdaterResult?.status === "install_failed" || autoUpdaterResult?.status === "no_permissions") && /* @__PURE__ */ jsx_runtime403.jsxs(ThemedText, {
528618
528644
  color: "error",
@@ -528703,12 +528729,12 @@ function NativeAutoUpdater({
528703
528729
  logEvent("tengu_native_auto_updater_start", {});
528704
528730
  try {
528705
528731
  const maxVersion = await getMaxVersion();
528706
- if (maxVersion && gt("0.8.8", maxVersion)) {
528732
+ if (maxVersion && gt("0.9.0", maxVersion)) {
528707
528733
  const msg = await getMaxVersionMessage();
528708
528734
  setMaxVersionIssue(msg ?? "affects your version");
528709
528735
  }
528710
528736
  const result = await installLatest(channel2);
528711
- const currentVersion = "0.8.8";
528737
+ const currentVersion = "0.9.0";
528712
528738
  const latencyMs = Date.now() - startTime2;
528713
528739
  if (result.lockFailed) {
528714
528740
  logEvent("tengu_native_auto_updater_lock_contention", {
@@ -528728,6 +528754,9 @@ function NativeAutoUpdater({
528728
528754
  version: result.latestVersion,
528729
528755
  status: "success"
528730
528756
  });
528757
+ setTimeout(() => {
528758
+ process.exit(EXIT_CODE_RESTART);
528759
+ }, 2000);
528731
528760
  } else {
528732
528761
  logEvent("tengu_native_auto_updater_up_to_date", {
528733
528762
  latency_ms: latencyMs
@@ -528788,10 +528817,14 @@ function NativeAutoUpdater({
528788
528817
  wrap: "truncate",
528789
528818
  children: "Checking for updates"
528790
528819
  })
528791
- }) : autoUpdaterResult?.status === "success" && showSuccessMessage && updateSemver && /* @__PURE__ */ jsx_runtime404.jsx(ThemedText, {
528820
+ }) : autoUpdaterResult?.status === "success" && showSuccessMessage && updateSemver && /* @__PURE__ */ jsx_runtime404.jsxs(ThemedText, {
528792
528821
  color: "success",
528793
528822
  wrap: "truncate",
528794
- children: "✓ Update installed · Restart to update"
528823
+ children: [
528824
+ "✓ Updated to ",
528825
+ autoUpdaterResult.version,
528826
+ " · Restarting…"
528827
+ ]
528795
528828
  }),
528796
528829
  autoUpdaterResult?.status === "install_failed" && /* @__PURE__ */ jsx_runtime404.jsxs(ThemedText, {
528797
528830
  color: "error",
@@ -528843,17 +528876,17 @@ function PackageManagerAutoUpdater(t0) {
528843
528876
  const maxVersion = await getMaxVersion();
528844
528877
  if (maxVersion && latest && gt(latest, maxVersion)) {
528845
528878
  logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
528846
- if (gte("0.8.8", maxVersion)) {
528847
- logForDebugging(`PackageManagerAutoUpdater: current version ${"0.8.8"} is already at or above maxVersion ${maxVersion}, skipping update`);
528879
+ if (gte("0.9.0", maxVersion)) {
528880
+ logForDebugging(`PackageManagerAutoUpdater: current version ${"0.9.0"} is already at or above maxVersion ${maxVersion}, skipping update`);
528848
528881
  setUpdateAvailable(false);
528849
528882
  return;
528850
528883
  }
528851
528884
  latest = maxVersion;
528852
528885
  }
528853
- const hasUpdate = latest && !gte("0.8.8", latest) && !shouldSkipVersion(latest);
528886
+ const hasUpdate = latest && !gte("0.9.0", latest) && !shouldSkipVersion(latest);
528854
528887
  setUpdateAvailable(!!hasUpdate);
528855
528888
  if (hasUpdate) {
528856
- logForDebugging(`PackageManagerAutoUpdater: Update available ${"0.8.8"} -> ${latest}`);
528889
+ logForDebugging(`PackageManagerAutoUpdater: Update available ${"0.9.0"} -> ${latest}`);
528857
528890
  }
528858
528891
  };
528859
528892
  $2[0] = t1;
@@ -528887,7 +528920,7 @@ function PackageManagerAutoUpdater(t0) {
528887
528920
  wrap: "truncate",
528888
528921
  children: [
528889
528922
  "currentVersion: ",
528890
- "0.8.8"
528923
+ "0.9.0"
528891
528924
  ]
528892
528925
  });
528893
528926
  $2[3] = verbose;
@@ -537918,7 +537951,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
537918
537951
  project_dir: getOriginalCwd(),
537919
537952
  added_dirs: addedDirs
537920
537953
  },
537921
- version: "0.8.8",
537954
+ version: "0.9.0",
537922
537955
  output_style: {
537923
537956
  name: outputStyleName
537924
537957
  },
@@ -562454,7 +562487,7 @@ function WelcomeV2() {
562454
562487
  dimColor: true,
562455
562488
  children: [
562456
562489
  "v",
562457
- "0.8.8",
562490
+ "0.9.0",
562458
562491
  " "
562459
562492
  ]
562460
562493
  })
@@ -562688,7 +562721,7 @@ function WelcomeV2() {
562688
562721
  dimColor: true,
562689
562722
  children: [
562690
562723
  "v",
562691
- "0.8.8",
562724
+ "0.9.0",
562692
562725
  " "
562693
562726
  ]
562694
562727
  })
@@ -562935,7 +562968,7 @@ function AppleTerminalWelcomeV2(t0) {
562935
562968
  dimColor: true,
562936
562969
  children: [
562937
562970
  "v",
562938
- "0.8.8",
562971
+ "0.9.0",
562939
562972
  " "
562940
562973
  ]
562941
562974
  });
@@ -563208,7 +563241,7 @@ function AppleTerminalWelcomeV2(t0) {
563208
563241
  dimColor: true,
563209
563242
  children: [
563210
563243
  "v",
563211
- "0.8.8",
563244
+ "0.9.0",
563212
563245
  " "
563213
563246
  ]
563214
563247
  });
@@ -564720,7 +564753,7 @@ function completeOnboarding() {
564720
564753
  saveGlobalConfig((current) => ({
564721
564754
  ...current,
564722
564755
  hasCompletedOnboarding: true,
564723
- lastOnboardingVersion: "0.8.8"
564756
+ lastOnboardingVersion: "0.9.0"
564724
564757
  }));
564725
564758
  }
564726
564759
  function showDialog(root2, renderer) {
@@ -568971,7 +569004,7 @@ function appendToLog(path24, message) {
568971
569004
  cwd: getFsImplementation().cwd(),
568972
569005
  userType: process.env.USER_TYPE,
568973
569006
  sessionId: getSessionId(),
568974
- version: "0.8.8"
569007
+ version: "0.9.0"
568975
569008
  };
568976
569009
  getLogWriter(path24).write(messageWithTimestamp);
568977
569010
  }
@@ -569577,7 +569610,7 @@ async function startMCPServer(cwd2, debug, verbose) {
569577
569610
  setCwd(cwd2);
569578
569611
  const server = new Server({
569579
569612
  name: "claude/tengu",
569580
- version: "0.8.8"
569613
+ version: "0.9.0"
569581
569614
  }, {
569582
569615
  capabilities: {
569583
569616
  tools: {}
@@ -574216,8 +574249,8 @@ async function getEnvLessBridgeConfig() {
574216
574249
  }
574217
574250
  async function checkEnvLessBridgeMinVersion() {
574218
574251
  const cfg = await getEnvLessBridgeConfig();
574219
- if (cfg.min_version && lt("0.8.8", cfg.min_version)) {
574220
- return `Your version of ZeroCLI (${"0.8.8"}) is too old for Remote Control.
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.
574221
574254
  Version ${cfg.min_version} or higher is required. Run \`zero update\` to update.`;
574222
574255
  }
574223
574256
  return null;
@@ -574692,7 +574725,7 @@ async function initBridgeCore(params) {
574692
574725
  const rawApi = createBridgeApiClient({
574693
574726
  baseUrl,
574694
574727
  getAccessToken,
574695
- runnerVersion: "0.8.8",
574728
+ runnerVersion: "0.9.0",
574696
574729
  onDebug: logForDebugging,
574697
574730
  onAuth401,
574698
574731
  getTrustedDeviceToken
@@ -580980,7 +581013,7 @@ __export(exports_update2, {
580980
581013
  });
580981
581014
  async function update2() {
580982
581015
  logEvent("tengu_update_check", {});
580983
- writeToStdout(`Current version: ${"0.8.8"}
581016
+ writeToStdout(`Current version: ${"0.9.0"}
580984
581017
  `);
580985
581018
  const channel2 = getInitialSettings()?.autoUpdatesChannel ?? "latest";
580986
581019
  writeToStdout(`Checking for updates to ${channel2} version...
@@ -581055,8 +581088,8 @@ async function update2() {
581055
581088
  writeToStdout(`Zero is managed by Homebrew.
581056
581089
  `);
581057
581090
  const latest = await getLatestVersion(channel2);
581058
- if (latest && !gte("0.8.8", latest)) {
581059
- writeToStdout(`Update available: ${"0.8.8"} → ${latest}
581091
+ if (latest && !gte("0.9.0", latest)) {
581092
+ writeToStdout(`Update available: ${"0.9.0"} → ${latest}
581060
581093
  `);
581061
581094
  writeToStdout(`
581062
581095
  `);
@@ -581072,8 +581105,8 @@ async function update2() {
581072
581105
  writeToStdout(`Zero is managed by winget.
581073
581106
  `);
581074
581107
  const latest = await getLatestVersion(channel2);
581075
- if (latest && !gte("0.8.8", latest)) {
581076
- writeToStdout(`Update available: ${"0.8.8"} → ${latest}
581108
+ if (latest && !gte("0.9.0", latest)) {
581109
+ writeToStdout(`Update available: ${"0.9.0"} → ${latest}
581077
581110
  `);
581078
581111
  writeToStdout(`
581079
581112
  `);
@@ -581089,8 +581122,8 @@ async function update2() {
581089
581122
  writeToStdout(`Zero is managed by apk.
581090
581123
  `);
581091
581124
  const latest = await getLatestVersion(channel2);
581092
- if (latest && !gte("0.8.8", latest)) {
581093
- writeToStdout(`Update available: ${"0.8.8"} → ${latest}
581125
+ if (latest && !gte("0.9.0", latest)) {
581126
+ writeToStdout(`Update available: ${"0.9.0"} → ${latest}
581094
581127
  `);
581095
581128
  writeToStdout(`
581096
581129
  `);
@@ -581155,11 +581188,11 @@ async function update2() {
581155
581188
  `);
581156
581189
  await gracefulShutdown(1);
581157
581190
  }
581158
- if (result.latestVersion === "0.8.8") {
581159
- writeToStdout(source_default.green(`Zero CLI is up to date (${"0.8.8"})`) + `
581191
+ if (result.latestVersion === "0.9.0") {
581192
+ writeToStdout(source_default.green(`Zero CLI is up to date (${"0.9.0"})`) + `
581160
581193
  `);
581161
581194
  } else {
581162
- writeToStdout(source_default.green(`Successfully updated from ${"0.8.8"} to version ${result.latestVersion}`) + `
581195
+ writeToStdout(source_default.green(`Successfully updated from ${"0.9.0"} to version ${result.latestVersion}`) + `
581163
581196
  `);
581164
581197
  await regenerateCompletionCache();
581165
581198
  }
@@ -581219,12 +581252,12 @@ async function update2() {
581219
581252
  `);
581220
581253
  await gracefulShutdown(1);
581221
581254
  }
581222
- if (latestVersion === "0.8.8") {
581223
- writeToStdout(source_default.green(`Zero CLI is up to date (${"0.8.8"})`) + `
581255
+ if (latestVersion === "0.9.0") {
581256
+ writeToStdout(source_default.green(`Zero CLI is up to date (${"0.9.0"})`) + `
581224
581257
  `);
581225
581258
  await gracefulShutdown(0);
581226
581259
  }
581227
- writeToStdout(`New version available: ${latestVersion} (current: ${"0.8.8"})
581260
+ writeToStdout(`New version available: ${latestVersion} (current: ${"0.9.0"})
581228
581261
  `);
581229
581262
  writeToStdout(`Installing update...
581230
581263
  `);
@@ -581269,7 +581302,7 @@ async function update2() {
581269
581302
  logForDebugging(`update: Installation status: ${status2}`);
581270
581303
  switch (status2) {
581271
581304
  case "success":
581272
- writeToStdout(source_default.green(`Successfully updated from ${"0.8.8"} to version ${latestVersion}`) + `
581305
+ writeToStdout(source_default.green(`Successfully updated from ${"0.9.0"} to version ${latestVersion}`) + `
581273
581306
  `);
581274
581307
  await regenerateCompletionCache();
581275
581308
  break;
@@ -582570,7 +582603,7 @@ ${customInstructions}` : customInstructions;
582570
582603
  }
582571
582604
  }
582572
582605
  logForDiagnosticsNoPII("info", "started", {
582573
- version: "0.8.8",
582606
+ version: "0.9.0",
582574
582607
  is_native_binary: isInBundledMode()
582575
582608
  });
582576
582609
  registerCleanup(async () => {
@@ -583453,7 +583486,7 @@ Usage: claude --remote "your task description"`, () => gracefulShutdown(1));
583453
583486
  pendingHookMessages
583454
583487
  }, renderAndRun);
583455
583488
  }
583456
- }).version("0.8.8", "-v, --version", "Output the version number");
583489
+ }).version("0.9.0", "-v, --version", "Output the version number");
583457
583490
  program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
583458
583491
  program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
583459
583492
  if (canUserConfigureAdvisor()) {
@@ -584119,7 +584152,7 @@ if (false) {}
584119
584152
  async function main2() {
584120
584153
  const args = process.argv.slice(2);
584121
584154
  if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
584122
- console.log(`${"0.8.8"} (ZeroCLI)`);
584155
+ console.log(`${"0.9.0"} (ZeroCLI)`);
584123
584156
  return;
584124
584157
  }
584125
584158
  if (args.includes("--provider")) {
@@ -584261,4 +584294,4 @@ async function main2() {
584261
584294
  }
584262
584295
  main2();
584263
584296
 
584264
- //# debugId=C16F975E25D0A9F864756E2164756E21
584297
+ //# debugId=810C32E04BCACE0164756E2164756E21
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@duheso/zerocli",
3
- "version": "0.8.8",
3
+ "version": "0.9.0",
4
4
  "description": "Zero Cli to any LLM — OpenAI, Gemini, DeepSeek, Ollama, and 200+ models",
5
5
  "type": "module",
6
6
  "bin": {